From 1fb60a37d31eacbac62ddafde51b829522925694 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 3 Apr 2023 09:31:50 +0200 Subject: Adding upstream version 11.4.5. Signed-off-by: Daniel Baumann --- README.md | 2 +- docs/search.js | 2 +- docs/sqlglot.html | 79 +- docs/sqlglot/dataframe.html | 14 +- docs/sqlglot/dataframe/sql.html | 44 +- docs/sqlglot/dialects.html | 52 +- docs/sqlglot/dialects/bigquery.html | 1300 +- docs/sqlglot/dialects/clickhouse.html | 825 +- docs/sqlglot/dialects/databricks.html | 9 +- docs/sqlglot/dialects/dialect.html | 180 +- docs/sqlglot/dialects/drill.html | 662 +- docs/sqlglot/dialects/duckdb.html | 822 +- docs/sqlglot/dialects/hive.html | 1558 +- docs/sqlglot/dialects/mysql.html | 2435 +-- docs/sqlglot/dialects/oracle.html | 855 +- docs/sqlglot/dialects/postgres.html | 1273 +- docs/sqlglot/dialects/presto.html | 9 +- docs/sqlglot/dialects/redshift.html | 9 +- docs/sqlglot/dialects/snowflake.html | 1800 +- docs/sqlglot/dialects/spark.html | 9 +- docs/sqlglot/dialects/sqlite.html | 489 +- docs/sqlglot/dialects/starrocks.html | 9 +- docs/sqlglot/dialects/tableau.html | 9 +- docs/sqlglot/dialects/teradata.html | 250 +- docs/sqlglot/dialects/trino.html | 9 +- docs/sqlglot/dialects/tsql.html | 1098 +- docs/sqlglot/diff.html | 58 +- docs/sqlglot/errors.html | 6 +- docs/sqlglot/executor.html | 28 +- docs/sqlglot/executor/context.html | 6 +- docs/sqlglot/executor/env.html | 6 +- docs/sqlglot/executor/python.html | 1736 +- docs/sqlglot/executor/table.html | 6 +- docs/sqlglot/expressions.html | 21190 ++++++++++--------- docs/sqlglot/generator.html | 10676 +++++----- docs/sqlglot/helper.html | 944 +- docs/sqlglot/lineage.html | 8 +- docs/sqlglot/optimizer.html | 48 +- docs/sqlglot/optimizer/annotate_types.html | 1226 +- docs/sqlglot/optimizer/canonicalize.html | 8 +- docs/sqlglot/optimizer/eliminate_ctes.html | 6 +- docs/sqlglot/optimizer/eliminate_joins.html | 545 +- docs/sqlglot/optimizer/eliminate_subqueries.html | 533 +- docs/sqlglot/optimizer/expand_laterals.html | 6 +- .../optimizer/expand_multi_table_selects.html | 6 +- docs/sqlglot/optimizer/isolate_table_selects.html | 6 +- docs/sqlglot/optimizer/lower_identities.html | 263 +- docs/sqlglot/optimizer/merge_subqueries.html | 891 +- docs/sqlglot/optimizer/normalize.html | 475 +- docs/sqlglot/optimizer/optimize_joins.html | 295 +- docs/sqlglot/optimizer/optimizer.html | 232 +- docs/sqlglot/optimizer/pushdown_predicates.html | 6 +- docs/sqlglot/optimizer/pushdown_projections.html | 6 +- docs/sqlglot/optimizer/qualify_columns.html | 1338 +- docs/sqlglot/optimizer/qualify_tables.html | 6 +- docs/sqlglot/optimizer/scope.html | 12 +- docs/sqlglot/optimizer/simplify.html | 1562 +- docs/sqlglot/optimizer/unnest_subqueries.html | 6 +- docs/sqlglot/parser.html | 15934 +++++++------- docs/sqlglot/planner.html | 12 +- docs/sqlglot/schema.html | 16 +- docs/sqlglot/serde.html | 6 +- docs/sqlglot/time.html | 6 +- docs/sqlglot/tokens.html | 3512 +-- docs/sqlglot/transforms.html | 6 +- docs/sqlglot/trie.html | 6 +- sqlglot.svg | 21 + sqlglot/__init__.py | 2 +- sqlglot/dialects/bigquery.py | 20 +- sqlglot/dialects/clickhouse.py | 2 + sqlglot/dialects/databricks.py | 2 + sqlglot/dialects/dialect.py | 5 + sqlglot/dialects/drill.py | 5 +- sqlglot/dialects/duckdb.py | 3 + sqlglot/dialects/hive.py | 26 +- sqlglot/dialects/mysql.py | 16 +- sqlglot/dialects/oracle.py | 51 +- sqlglot/dialects/postgres.py | 2 + sqlglot/dialects/snowflake.py | 11 +- sqlglot/dialects/sqlite.py | 5 +- sqlglot/dialects/teradata.py | 3 +- sqlglot/dialects/tsql.py | 11 +- sqlglot/diff.py | 24 +- sqlglot/executor/__init__.py | 2 +- sqlglot/executor/python.py | 42 +- sqlglot/expressions.py | 163 +- sqlglot/generator.py | 80 +- sqlglot/helper.py | 11 +- sqlglot/optimizer/annotate_types.py | 12 +- sqlglot/optimizer/canonicalize.py | 2 +- sqlglot/optimizer/eliminate_joins.py | 5 +- sqlglot/optimizer/eliminate_subqueries.py | 2 - sqlglot/optimizer/lower_identities.py | 8 +- sqlglot/optimizer/merge_subqueries.py | 5 +- sqlglot/optimizer/normalize.py | 104 +- sqlglot/optimizer/optimize_joins.py | 2 - sqlglot/optimizer/optimizer.py | 4 +- sqlglot/optimizer/qualify_columns.py | 88 +- sqlglot/optimizer/scope.py | 2 +- sqlglot/optimizer/simplify.py | 166 +- sqlglot/parser.py | 109 +- sqlglot/planner.py | 2 +- sqlglot/schema.py | 4 +- sqlglot/tokens.py | 15 +- tests/dialects/test_bigquery.py | 11 + tests/dialects/test_dialect.py | 58 + tests/dialects/test_duckdb.py | 1 + tests/dialects/test_hive.py | 24 + tests/dialects/test_mysql.py | 5 + tests/dialects/test_oracle.py | 18 + tests/dialects/test_postgres.py | 5 +- tests/dialects/test_presto.py | 6 + tests/dialects/test_snowflake.py | 2 + tests/dialects/test_spark.py | 1 + tests/dialects/test_sqlite.py | 5 + tests/dialects/test_tsql.py | 19 +- tests/fixtures/identity.sql | 28 +- tests/fixtures/optimizer/canonicalize.sql | 3 + tests/fixtures/optimizer/optimizer.sql | 40 + tests/fixtures/optimizer/qualify_columns.sql | 30 + tests/fixtures/optimizer/simplify.sql | 16 +- tests/fixtures/optimizer/tpc-ds/tpc-ds.sql | 12613 +++++++++++ tests/fixtures/optimizer/tpc-h/tpc-h.sql | 36 +- tests/helpers.py | 472 + tests/test_diff.py | 13 + tests/test_executor.py | 10 + tests/test_expressions.py | 28 +- tests/test_optimizer.py | 97 +- tests/test_parser.py | 5 +- tests/test_transpile.py | 8 +- tests/tpch.py | 37 + 131 files changed, 52997 insertions(+), 37072 deletions(-) create mode 100644 sqlglot.svg create mode 100644 tests/fixtures/optimizer/tpc-ds/tpc-ds.sql create mode 100644 tests/tpch.py diff --git a/README.md b/README.md index 08c7f36..21fb257 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# SQLGlot +![SQLGlot logo](sqlglot.svg) SQLGlot is a no-dependency SQL parser, transpiler, optimizer, and engine. It can be used to format SQL or translate between [19 different dialects](https://github.com/tobymao/sqlglot/blob/main/sqlglot/dialects/__init__.py) like [DuckDB](https://duckdb.org/), [Presto](https://prestodb.io/), [Spark](https://spark.apache.org/), [Snowflake](https://www.snowflake.com/en/), and [BigQuery](https://cloud.google.com/bigquery/). It aims to read a wide variety of SQL inputs and output syntactically correct SQL in the targeted dialects. diff --git a/docs/search.js b/docs/search.js index 1f8a382..d9608c9 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();oSQLGlot\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='140431323699648'>], List[<MagicMock id='140431323699648'>], Tuple]],\tschema: Optional[<MagicMock id='140431322449088'>] = 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='140431327125104'>,\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='140431327032656'>] = 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='140431322372736'>,\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='140431322278992'>], <MagicMock id='140431322278992'>, 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='140431322875456'>],\t*cols: <MagicMock id='140431322936800'>) -> 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='140431324936560'>, 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='140431323066816'>, 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='140431322777728'>, 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='140431321452064'>],\tfunc_name: str,\t*args: Optional[<MagicMock id='140431321074320'>]) -> 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='140431321272944'>],\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='140431321368896'>,\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='140431321378976'>,\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='140431321579680'>, Iterable[<MagicMock id='140431321579680'>]]):", "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='140431321667120'>,\tupperBound: <MagicMock id='140431321705216'>) -> 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='140431321762928'>) -> 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='140431322000032'>, List[<MagicMock id='140431322000032'>]]) -> 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='140431322080464'>, List[<MagicMock id='140431322080464'>]]) -> 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='140431321854976'>, List[<MagicMock id='140431321854976'>]]) -> 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='140431320185440'>, List[<MagicMock id='140431320185440'>]]) -> 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.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):", "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.query_modifiers": {"fullname": "sqlglot.dialects.oracle.Oracle.Generator.query_modifiers", "modulename": "sqlglot.dialects.oracle", "qualname": "Oracle.Generator.query_modifiers", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Expression, *sqls: str) -> str:", "funcdef": "def"}, "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.ilikeany_sql": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Generator.ilikeany_sql", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Generator.ilikeany_sql", "kind": "function", "doc": "

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

\n", "signature": "(self, expression: sqlglot.expressions.LikeAny) -> str:", "funcdef": "def"}, "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.fetch_sql": {"fullname": "sqlglot.dialects.sqlite.SQLite.Generator.fetch_sql", "modulename": "sqlglot.dialects.sqlite", "qualname": "SQLite.Generator.fetch_sql", "kind": "function", "doc": "

\n", "signature": "(self, expression: sqlglot.expressions.Fetch) -> 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.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.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 (type): 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 (type): 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 (type): 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.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.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.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.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.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.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.Hex": {"fullname": "sqlglot.expressions.Hex", "modulename": "sqlglot.expressions", "qualname": "Hex", "kind": "class", "doc": "

\n", "bases": "Func"}, "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.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.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.Matches": {"fullname": "sqlglot.expressions.Matches", "modulename": "sqlglot.expressions", "qualname": "Matches", "kind": "class", "doc": "

Oracle/Snowflake decode.\nhttps://docs.oracle.com/cd/B19306_01/server.102/b14200/functions040.htm\nPattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

\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
  • schema: schema 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,\tschema: 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 ? = ?"), "a", "b", tbl="foo"\n... ).sql()\n'SELECT * FROM foo WHERE a = 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\n

Returns\n the SQL string.

\n", "signature": "(self, expression: Optional[sqlglot.expressions.Expression]) -> 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.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.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.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.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.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: Optional[sqlglot.expressions.Expression],\tfunc: Callable[[Optional[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 0x7fb8b87be8c0>, <function qualify_columns at 0x7fb8b87bd7e0>, <function expand_laterals at 0x7fb8b87afeb0>),\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.

\n\n
Example:
\n\n
\n
\n
>>> import sqlglot\n>>> expression = sqlglot.parse_one("(x AND y) OR z")\n>>> normalize(expression).sql()\n'(x OR z) AND (y OR z)'\n
\n
\n
\n\n
Arguments:
\n\n
    \n
  • expression (sqlglot.Expression): expression to normalize
  • \n
  • dnf (bool): rewrite in disjunctive normal form instead
  • \n
  • max_distance (int): the maximal estimated distance from cnf to attempt conversion
  • \n
\n\n
Returns:
\n\n
\n

sqlglot.Expression: normalized expression

\n
\n", "signature": "(expression, dnf=False, max_distance=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):", "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 0x7fb8b87bc1f0>, <function qualify_tables at 0x7fb8b87be8c0>, <function isolate_table_selects at 0x7fb8b87bc160>, <function qualify_columns at 0x7fb8b87bd7e0>, <function expand_laterals at 0x7fb8b87afeb0>, <function pushdown_projections at 0x7fb8b87be290>, <function validate_qualify_columns at 0x7fb8b87bd870>, <function normalize at 0x7fb8b87adea0>, <function unnest_subqueries at 0x7fb8b87be9e0>, <function expand_multi_table_selects at 0x7fb8b87bc0d0>, <function pushdown_predicates at 0x7fb8b87bd2d0>, <function optimize_joins at 0x7fb8b87bd000>, <function eliminate_subqueries at 0x7fb8b87afac0>, <function merge_subqueries at 0x7fb8b87bc4c0>, <function eliminate_joins at 0x7fb8b87adcf0>, <function eliminate_ctes at 0x7fb8b87adbd0>, <function annotate_types at 0x7fb8b87465f0>, <function canonicalize at 0x7fb8b87ad6c0>),\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):", "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):", "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):", "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):", "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):", "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.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):", "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": "(schema: Any) -> 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.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 other expressions.\nThis 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": 5685}, "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.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": 16, "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.query_modifiers": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 46, "bases": 0, "doc": 3}, "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.ilikeany_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "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.fetch_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.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.find": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 53, "bases": 0, "doc": 65}, "sqlglot.expressions.Expression.find_all": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 53, "bases": 0, "doc": 63}, "sqlglot.expressions.Expression.find_ancestor": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 43, "bases": 0, "doc": 45}, "sqlglot.expressions.Expression.parent_select": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 8}, "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.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.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.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.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.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.Hex": {"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.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.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.Matches": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 22}, "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": 162, "bases": 0, "doc": 59}, "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": 216}, "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": 40, "bases": 0, "doc": 28}, "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.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.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.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.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.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": 77, "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": 32, "bases": 0, "doc": 177}, "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": 22, "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": 669, "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": 11, "bases": 0, "doc": 3}, "sqlglot.optimizer.simplify.remove_compliments": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 19}, "sqlglot.optimizer.simplify.uniq_sort": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 23}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"qualname": 3, "fullname": 6, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 58}, "sqlglot.optimizer.simplify.simplify_literals": {"qualname": 2, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "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.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": 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": 29, "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.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": 1733, "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}}}}}}}, "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.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 9, "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.schema.AbstractMappingSchema.table_parts": {"tf": 1}}, "df": 1}}, "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}}, "df": 1}, "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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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.fetch_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.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.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.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.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.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_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": 254, "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.fetch_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": 11}}}, "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, "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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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}}, "df": 14}}}}}}}, "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.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": 8, "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.query_modifiers": {"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": 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.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.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": 6}}}}}, "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.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": 16, "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.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}}}}}}}, "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.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}}, "df": 7}}, "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.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": 48, "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}, "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, "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}}}}, "t": {"docs": {"sqlglot.expressions.Dot": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DOT": {"tf": 1}}, "df": 3}, "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.tokens.TokenType.IS": {"tf": 1}}, "df": 22, "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.dialects.snowflake.Snowflake.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.expressions.ILikeAny": {"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}}, "df": 1, "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}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dialects.sqlite.SQLite.Generator.fetch_sql": {"tf": 1}, "sqlglot.expressions.Fetch": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1}}, "df": 4}}}}, "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}}}}}}}}}}}}}}}}, "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.tokens.TokenType.FALSE": {"tf": 1}}, "df": 2}}}, "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}}}}}}, "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.expressions.Greatest": {"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.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.query_modifiers": {"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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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": {"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.fetch_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.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.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.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.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.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_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": 282}}, "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}}}}}}}}}}}}}}, "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}}}}}}}}}}}}}}}}}, "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.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.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": 43, "s": {"docs": {"sqlglot.expressions.Expression.expressions": {"tf": 1}, "sqlglot.generator.Generator.expressions": {"tf": 1}, "sqlglot.generator.Generator.op_expressions": {"tf": 1}}, "df": 3}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Explode": {"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.tokens.TokenType.LIKE": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}}, "df": 5, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.likeany_sql": {"tf": 1}, "sqlglot.expressions.LikeAny": {"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.LikeProperty": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_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}}}, "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": {}, "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}, "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.expressions.Max": {"tf": 1}}, "df": 2}, "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}}}}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Matches": {"tf": 1}}, "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}}, "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.dialects.oracle.Oracle.Generator.query_modifiers": {"tf": 1}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1}}, "df": 2}}}}}}}, "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.optimizer.scope.build_scope": {"tf": 1}}, "df": 2}}}, "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.tokens.TokenType.NULL": {"tf": 1}}, "df": 6, "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}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.oracle.Oracle.Generator.query_modifiers": {"tf": 1}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1}}, "df": 2}}}, "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}}}}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.QUOTE": {"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}}}}}, "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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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.fetch_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.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.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.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.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.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_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": 359, "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.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.query_modifiers": {"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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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": {"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.fetch_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.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.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.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.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.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.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.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.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.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.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.Matches": {"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.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.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.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.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_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.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.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.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": 1733, "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.fetch_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": 12}}}, "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, "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.ilikeany_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_sql": {"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": 15}}}}}}}, "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.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": 19}}}}}}}, "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}}}}}}}, "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.Parser.parse": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 9, "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.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": 32}, "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.schema.AbstractMappingSchema.table_parts": {"tf": 1}}, "df": 1}}, "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}}, "df": 1}, "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.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": 8, "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.query_modifiers": {"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": 10}}}}}, "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.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": 130}}}}}, "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.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": 6}}}}}, "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.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": 16, "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.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": 306}, "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.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}}}}}}}, "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.systemtime_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1.4142135623730951}}, "df": 9}}, "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.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": 63, "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.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.query_modifiers": {"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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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": {"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.fetch_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.systemtime_sql": {"tf": 1}, "sqlglot.dialects.tsql.TSQL.Generator.returnsproperty_sql": {"tf": 1}}, "df": 203}}}}}}, "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, "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}}}}, "t": {"docs": {"sqlglot.expressions.Dot": {"tf": 1}, "sqlglot.generator.Generator.dot_sql": {"tf": 1}, "sqlglot.tokens.TokenType.DOT": {"tf": 1}}, "df": 3}, "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.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": 48, "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}, "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.tokens.TokenType.IS": {"tf": 1}}, "df": 22, "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.dialects.snowflake.Snowflake.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.expressions.ILikeAny": {"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}}, "df": 1, "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}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dialects.sqlite.SQLite.Generator.fetch_sql": {"tf": 1}, "sqlglot.expressions.Fetch": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"tf": 1}, "sqlglot.tokens.TokenType.FETCH": {"tf": 1}}, "df": 4}}}}, "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}}}}}}}}}}}}}}}}, "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.tokens.TokenType.FALSE": {"tf": 1}}, "df": 2}}}, "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}}}}}}, "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.expressions.Greatest": {"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.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.query_modifiers": {"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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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": {"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.fetch_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.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.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.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.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.is_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.like_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": 283}}, "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}}}}}}}}}}}}}}, "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}}}}}}}}}}}}}}}}}, "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.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.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": 43, "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.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.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.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.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.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.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.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.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.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.Matches": {"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": 580}}}}}}}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Explode": {"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.tokens.TokenType.LIKE": {"tf": 1}, "sqlglot.tokens.TokenType.LIKE_ANY": {"tf": 1}}, "df": 5, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.likeany_sql": {"tf": 1}, "sqlglot.expressions.LikeAny": {"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.LikeProperty": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_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}}}, "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": {}, "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}, "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.expressions.Max": {"tf": 1}}, "df": 2}, "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}}}}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Matches": {"tf": 1}}, "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}}, "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.dialects.oracle.Oracle.Generator.query_modifiers": {"tf": 1}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1}}, "df": 2}}}}}}}, "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.optimizer.scope.build_scope": {"tf": 1}}, "df": 2}}}, "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.tokens.TokenType.NULL": {"tf": 1}}, "df": 6, "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}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.oracle.Oracle.Generator.query_modifiers": {"tf": 1}, "sqlglot.generator.Generator.query_modifiers": {"tf": 1}}, "df": 2}}}, "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}}}}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.tokens.TokenType.QUOTE": {"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}}}}}, "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.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": 10, "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}}}, "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.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": 391, "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.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": 391, "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.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": 391, "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.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": 384}, "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}}}}}}}, "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.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": 295}}}}}}}, "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": {"docs": {}, "df": 0, "b": {"8": {"docs": {}, "df": 0, "b": {"8": {"7": {"4": {"6": {"5": {"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": {"docs": {}, "df": 0, "e": {"2": {"9": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "8": {"docs": {}, "df": 0, "c": {"0": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}}, "9": {"docs": {}, "df": 0, "e": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "docs": {}, "df": 0}, "d": {"0": {"0": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "2": {"docs": {}, "df": 0, "d": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "7": {"docs": {}, "df": 0, "e": {"0": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}}, "8": {"7": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "c": {"0": {"docs": {}, "df": 0, "d": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "1": {"6": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "f": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "4": {"docs": {}, "df": 0, "c": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "docs": {}, "df": 0}}, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "b": {"0": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}}, "a": {"docs": {}, "df": 0, "c": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}}, "d": {"6": {"docs": {}, "df": 0, "c": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "c": {"docs": {}, "df": 0, "f": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "b": {"docs": {}, "df": 0, "d": {"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}}, "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": {"4": {"3": {"1": {"3": {"2": {"0": {"1": {"8": {"5": {"4": {"4": {"0": {"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}, "docs": {}, "df": 0}, "1": {"0": {"7": {"4": {"3": {"2": {"0": {"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}, "2": {"7": {"2": {"9": {"4": {"4": {"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}, "3": {"6": {"8": {"8": {"9": {"6": {"docs": {"sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"8": {"9": {"7": {"6": {"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}, "4": {"5": {"2": {"0": {"6": {"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}, "5": {"7": {"9": {"6": {"8": {"0": {"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}, "6": {"6": {"7": {"1": {"2": {"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}, "7": {"0": {"5": {"2": {"1": {"6": {"docs": {"sqlglot.dataframe.sql.Column.between": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"2": {"9": {"2": {"8": {"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": {"5": {"4": {"9": {"7": {"6": {"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}, "docs": {}, "df": 0}, "2": {"0": {"0": {"0": {"0": {"3": {"2": {"docs": {"sqlglot.dataframe.sql.Window.partitionBy": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "8": {"0": {"4": {"6": {"4": {"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}, "2": {"7": {"8": {"9": {"9": {"2": {"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}, "3": {"7": {"2": {"7": {"3": {"6": {"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}, "4": {"4": {"9": {"0": {"8": {"8": {"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": {"7": {"7": {"7": {"2": {"8": {"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}, "8": {"7": {"5": {"4": {"5": {"6": {"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}, "9": {"3": {"6": {"8": {"0": {"0": {"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}, "docs": {}, "df": 0}, "3": {"0": {"6": {"6": {"8": {"1": {"6": {"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}, "6": {"9": {"9": {"6": {"4": {"8": {"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}, "4": {"9": {"3": {"6": {"5": {"6": {"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}, "7": {"0": {"3": {"2": {"6": {"5": {"6": {"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}, "1": {"2": {"5": {"1": {"0": {"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.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": 3.7416573867739413}, "sqlglot.dialects.oracle.Oracle.Generator.query_modifiers": {"tf": 6.164414002968976}, "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.ilikeany_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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.fetch_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.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.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.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.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": 11.575836902790225}, "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": 5.744562646538029}, "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.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.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.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.is_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.like_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": 8}, "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": 5.0990195135927845}, "sqlglot.optimizer.normalize.normalized": {"tf": 4.242640687119285}, "sqlglot.optimizer.normalize.normalization_distance": {"tf": 4.242640687119285}, "sqlglot.optimizer.normalize.distributive_law": {"tf": 4.242640687119285}, "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.40535650240808}, "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": 3.1622776601683795}, "sqlglot.optimizer.simplify.remove_compliments": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.uniq_sort": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.absorb_and_eliminate": {"tf": 3.1622776601683795}, "sqlglot.optimizer.simplify.simplify_literals": {"tf": 3.1622776601683795}, "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.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": 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": 4.898979485566356}, "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": 719, "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.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.oracle.Oracle.Generator.query_modifiers": {"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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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.fetch_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.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.root": {"tf": 1}, "sqlglot.expressions.Expression.sql": {"tf": 1.4142135623730951}, "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.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}, "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.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.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.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.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_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.optimizer.optimize": {"tf": 2}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1.4142135623730951}, "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}, "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": 491}}}}, "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.dialects.oracle.Oracle.Generator.query_modifiers": {"tf": 1}, "sqlglot.generator.Generator.query_modifiers": {"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.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.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.oracle.Oracle.Generator.query_modifiers": {"tf": 1.4142135623730951}, "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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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.fetch_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.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.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": 1.7320508075688772}, "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}, "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.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.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.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.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_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_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": 414, "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.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.query_modifiers": {"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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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.fetch_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.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.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.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.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.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.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.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.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_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": 499}, "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.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.trie.new_trie": {"tf": 1}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 17}}}}}}, "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.expressions.column": {"tf": 1}, "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": 18}}}}, "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}}}}}, "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}}}}}}}}, "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}}, "df": 1}}}, "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.4142135623730951}, "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_column_mapping": {"tf": 1}, "sqlglot.serde.dump": {"tf": 1.4142135623730951}, "sqlglot.serde.load": {"tf": 1.4142135623730951}}, "df": 73}}, "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}}, "df": 58, "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}}, "df": 22}}}}}}, "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.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": 37}}, "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}}}}, "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.table_": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}}, "df": 3}, "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}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"sqlglot.generator.Generator.dot_sql": {"tf": 1}}, "df": 1}, "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}}}}}}}}}, "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.serde.dump": {"tf": 1}, "sqlglot.serde.load": {"tf": 1}, "sqlglot.tokens.Token.__init__": {"tf": 1}}, "df": 44, "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.schema.AbstractMappingSchema.find": {"tf": 1}}, "df": 54}}, "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.values": {"tf": 1}, "sqlglot.generator.Generator.tuple_sql": {"tf": 1}, "sqlglot.helper.subclasses": {"tf": 1.4142135623730951}, "sqlglot.trie.in_trie": {"tf": 1}}, "df": 13}}}}, "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": 1.7320508075688772}, "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.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.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.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.flatten_schema": {"tf": 1}, "sqlglot.time.format_time": {"tf": 1}, "sqlglot.tokens.Tokenizer.reset": {"tf": 1}}, "df": 128, "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.4142135623730951}, "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_column_mapping": {"tf": 1}}, "df": 45}}}}}}, "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}, "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.while_changing": {"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": 60}}}}, "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.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": 5}}}}}, "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}}, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.like_sql": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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}}}}}}}}}}, "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}}}}}, "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.242640687119285}, "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.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.query_modifiers": {"tf": 1.4142135623730951}, "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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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.fetch_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.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.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.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.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.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.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.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_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}, "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.eval_boolean": {"tf": 1}, "sqlglot.optimizer.unnest_subqueries.unnest_subqueries": {"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": 391, "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.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.oracle.Oracle.Generator.query_modifiers": {"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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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.fetch_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.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.root": {"tf": 1}, "sqlglot.expressions.Condition.and_": {"tf": 1}, "sqlglot.expressions.Condition.or_": {"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.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}, "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.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.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.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.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_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.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.qualify_columns.Resolver.get_table": {"tf": 1}, "sqlglot.optimizer.simplify.rewrite_between": {"tf": 1.4142135623730951}, "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": 385}}}}}}}, "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.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.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": 33, "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": 1.7320508075688772}, "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.find_all": {"tf": 1}, "sqlglot.helper.flatten": {"tf": 1}, "sqlglot.lineage.Node.walk": {"tf": 1}}, "df": 4}}}}}}}, "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.dialects.snowflake.Snowflake.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}, "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.table_": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}, "sqlglot.optimizer.qualify_tables.qualify_tables": {"tf": 1}}, "df": 3}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.cache_sql": {"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.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.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": 39, "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}}}}}}}}}}}, "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}}}}}}}}}}}}, "x": {"docs": {"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": 4, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"sqlglot.errors.concat_messages": {"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.242640687119285}, "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.count_if_to_sum": {"tf": 1.4142135623730951}, "sqlglot.dialects.dialect.trim_sql": {"tf": 1.4142135623730951}, "sqlglot.transforms.preprocess": {"tf": 2}}, "df": 27}}, "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.242640687119285}}, "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}}}}}}}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"sqlglot.dialects.sqlite.SQLite.Generator.fetch_sql": {"tf": 1}, "sqlglot.generator.Generator.fetch_sql": {"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}}}}}}}}}}}}}}}}}, "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}}}}}}}}}}}}}}}}}}}}}}}}}, "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.eval_boolean": {"tf": 1}}, "df": 2, "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.Parser.validate_expression": {"tf": 1}}, "df": 19}}, "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.242640687119285}}, "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}}}}}}}}}}}}}}}}}, "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.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.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.Use": {"tf": 1}, "sqlglot.expressions.Merge": {"tf": 1}}, "df": 97}}}}}}}}}}, "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.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.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": 23}}}}}}}, "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.JSONExtract": {"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.Matches": {"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": 121}}}}, "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, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Matches": {"tf": 1}}, "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}, "2": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "b": {"1": {"4": {"2": {"0": {"0": {"docs": {}, "df": 0, "/": {"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": {"0": {"4": {"0": {"docs": {"sqlglot.expressions.Matches": {"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}}}, "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.318838867023565}, "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.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.query_modifiers": {"tf": 1.7320508075688772}, "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.ilikeany_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_sql": {"tf": 1.7320508075688772}, "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.fetch_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.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.find": {"tf": 4.898979485566356}, "sqlglot.expressions.Expression.find_all": {"tf": 4.898979485566356}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 4.898979485566356}, "sqlglot.expressions.Expression.parent_select": {"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.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.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.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.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.Floor": {"tf": 1.7320508075688772}, "sqlglot.expressions.Greatest": {"tf": 1.7320508075688772}, "sqlglot.expressions.GroupConcat": {"tf": 1.7320508075688772}, "sqlglot.expressions.Hex": {"tf": 1.7320508075688772}, "sqlglot.expressions.If": {"tf": 1.7320508075688772}, "sqlglot.expressions.IfNull": {"tf": 1.7320508075688772}, "sqlglot.expressions.Initcap": {"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.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.Matches": {"tf": 2.23606797749979}, "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": 5.744562646538029}, "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": 11.575836902790225}, "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.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.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.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.is_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.like_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.14889156509222}, "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.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.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.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": 1733, "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.4142135623730951}, "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.4031242374328485}, "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.23606797749979}, "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.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": 14, "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.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": 64, "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.4142135623730951}, "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}}, "df": 2}}, "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.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}, "sqlglot.transforms.preprocess": {"tf": 1.4142135623730951}, "sqlglot.trie.new_trie": {"tf": 1}}, "df": 7, "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.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": 84, "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": {"1": {"docs": {"sqlglot.expressions.Matches": {"tf": 1}}, "df": 1}, "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, "n": {"docs": {"sqlglot.expressions.Matches": {"tf": 1}}, "df": 1}, "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.expressions.column": {"tf": 1.4142135623730951}, "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": 21, "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.flatten": {"tf": 1}, "sqlglot.expressions.Expression.transform": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 8}}, "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.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.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": 154, "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.optimizer.scope.traverse_scope": {"tf": 1}}, "df": 3}}}}, "\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.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": 156, "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.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": 40}, "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.generator.Generator": {"tf": 2}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1.4142135623730951}}, "df": 30, "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.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.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": 142}, "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.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.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.replace_placeholders": {"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": 234, "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.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": 130, "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.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": 118}, "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.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": 69, "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.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": 179}}}}}}, "s": {"docs": {"sqlglot.executor.context.Context.__init__": {"tf": 1}, "sqlglot.expressions.Expression": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.text": {"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": 11}}, "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.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": 142, "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.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": 28, "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.4142135623730951}}, "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.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": 1.7320508075688772}, "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": 45, "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}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Matches": {"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}}, "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}}, "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.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": 9, "/": {"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}, "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}}, "df": 2}}, "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.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": 8, "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}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Matches": {"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}, "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.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.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.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": 1.7320508075688772}, "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": 235, "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.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": 175}, "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.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": 85, "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.4142135623730951}, "sqlglot.expressions.Expression.find_all": {"tf": 1.4142135623730951}, "sqlglot.expressions.Expression.find_ancestor": {"tf": 1.4142135623730951}, "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.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": 12, "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": 1.7320508075688772}, "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.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": 19, "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}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Matches": {"tf": 1}}, "df": 1, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "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.expressions.Matches": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "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.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.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.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": 155, "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.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": 45, "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.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": 64}}, "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.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": 11, "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.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}, "sqlglot.optimizer.scope.Scope.ref_count": {"tf": 1}, "sqlglot.parser.Parser.parse_into": {"tf": 1}}, "df": 12}}, "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}, "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.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.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}, "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.6457513110645907}, "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": 150, "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.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": 89}, "|": {"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, "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.expressions.Matches": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}}, "df": 5}}, "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}}, "df": 2}}}, "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.to_table": {"tf": 1.7320508075688772}, "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": 7}}}}}, "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, "c": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "b": {"1": {"9": {"3": {"0": {"6": {"docs": {"sqlglot.expressions.Matches": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "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.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": 8}, "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.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 2}, "sqlglot.schema.MappingSchema": {"tf": 1.7320508075688772}}, "df": 7, "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.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": 61, "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.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": 23, "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.normalize.normalize": {"tf": 1}, "sqlglot.optimizer.pushdown_predicates.pushdown_cnf": {"tf": 1}}, "df": 3}}}, "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.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": 15, "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.normalize": {"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": 58, "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.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": 89, "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.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": 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.4142135623730951}, "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.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": 77}}, "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.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": 55, "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}}, "df": 1}}}}}}}, "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_table_names": {"tf": 1}, "sqlglot.helper.open_file": {"tf": 1}, "sqlglot.helper.split_num_words": {"tf": 1}, "sqlglot.schema.AbstractMappingSchema": {"tf": 1.4142135623730951}}, "df": 10, "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.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": 170}, "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": {"1": {"docs": {"sqlglot.expressions.Matches": {"tf": 1}}, "df": 1}, "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}}, "n": {"docs": {"sqlglot.expressions.Matches": {"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.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": 47, "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.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": 50}}, "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.Matches": {"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": 16, "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": 2.8284271247461903}, "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.optimizer.optimizer.optimize": {"tf": 1.4142135623730951}}, "df": 7, "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.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": 8}, "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}}, "df": 1, "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}}}}}}}}}}, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Matches": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"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}}}}}}}}}, ":": {"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": {"sqlglot.expressions.Matches": {"tf": 1}}, "df": 1, "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.expressions.Matches": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.4142135623730951}}, "df": 6}, "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.expressions.Matches": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}}, "df": 5, "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.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": 34, "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='139664661722448'>], List[<MagicMock id='139664661722448'>], Tuple]],\tschema: Optional[<MagicMock id='139664663687136'>] = 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='139664666867024'>,\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='139664666468816'>] = 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='139664662140320'>,\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='139664662567456'>], <MagicMock id='139664662567456'>, 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='139664662120624'>],\t*cols: <MagicMock id='139664660651392'>) -> 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='139664664676480'>, 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='139664660714432'>, 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='139664661180336'>, 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='139664660985216'>],\tfunc_name: str,\t*args: Optional[<MagicMock id='139664660877840'>]) -> 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='139664660828688'>],\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='139664660803696'>,\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='139664661093472'>,\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='139664661278976'>, Iterable[<MagicMock id='139664661278976'>]]):", "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='139664661413264'>,\tupperBound: <MagicMock id='139664661467808'>) -> 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='139664661492640'>) -> 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='139664661620352'>, List[<MagicMock id='139664661620352'>]]) -> 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='139664661565392'>, List[<MagicMock id='139664661565392'>]]) -> 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='139664659914448'>, List[<MagicMock id='139664659914448'>]]) -> 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='139664659893216'>, List[<MagicMock id='139664659893216'>]]) -> 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):", "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.ilikeany_sql": {"fullname": "sqlglot.dialects.snowflake.Snowflake.Generator.ilikeany_sql", "modulename": "sqlglot.dialects.snowflake", "qualname": "Snowflake.Generator.ilikeany_sql", "kind": "function", "doc": "

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

\n", "signature": "(self, expression: sqlglot.expressions.LikeAny) -> str:", "funcdef": "def"}, "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.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.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.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.Matches": {"fullname": "sqlglot.expressions.Matches", "modulename": "sqlglot.expressions", "qualname": "Matches", "kind": "class", "doc": "

Oracle/Snowflake decode.\nhttps://docs.oracle.com/cd/B19306_01/server.102/b14200/functions040.htm\nPattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

\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 ? = ?"), "a", "b", tbl="foo"\n... ).sql()\n'SELECT * FROM foo WHERE a = 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.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.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.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.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 0x7f0637f3fa30>, <function qualify_columns at 0x7f0637f3e950>, <function expand_laterals at 0x7f0637f3d000>),\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 0x7f0637f3d360>, <function qualify_tables at 0x7f0637f3fa30>, <function isolate_table_selects at 0x7f0637f3d240>, <function qualify_columns at 0x7f0637f3e950>, <function expand_laterals at 0x7f0637f3d000>, <function pushdown_projections at 0x7f0637f3f400>, <function validate_qualify_columns at 0x7f0637f3e9e0>, <function normalize at 0x7f0637eeae60>, <function unnest_subqueries at 0x7f0637f3fb50>, <function expand_multi_table_selects at 0x7f0637f3d1b0>, <function pushdown_predicates at 0x7f0637f3e4d0>, <function optimize_joins at 0x7f0637f3e0e0>, <function eliminate_subqueries at 0x7f0637f3cc10>, <function merge_subqueries at 0x7f0637f3d630>, <function eliminate_joins at 0x7f0637eead40>, <function eliminate_ctes at 0x7f0637eeac20>, <function annotate_types at 0x7f0637ec7490>, <function canonicalize at 0x7f0637eea680>, <function simplify at 0x7f0637eeaf80>),\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 other expressions.\nThis 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": 16, "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.ilikeany_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_sql": {"qualname": 4, "fullname": 7, "annotation": 0, "default_value": 0, "signature": 34, "bases": 0, "doc": 3}, "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.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.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.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.Matches": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 1, "doc": 22}, "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": 216}, "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.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.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.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.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": 1751, "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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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.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.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.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_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": 257, "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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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}}, "df": 14}}}}}}}, "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}, "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.dialects.snowflake.Snowflake.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.expressions.ILikeAny": {"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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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": {"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.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.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.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_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": 284}}, "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}}}}}}}}}}}}}}}}}, "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, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.likeany_sql": {"tf": 1}, "sqlglot.expressions.LikeAny": {"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.LikeProperty": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_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": {}, "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}, "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}}}}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Matches": {"tf": 1}}, "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}}, "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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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.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.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.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_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": 362, "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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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": {"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.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.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.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.Matches": {"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.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.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.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_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": 1751, "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.ilikeany_sql": {"tf": 1.4142135623730951}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_sql": {"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": 15}}}}}}}, "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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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": {"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": 203}}}}}}, "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}, "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.dialects.snowflake.Snowflake.Generator.ilikeany_sql": {"tf": 1}, "sqlglot.expressions.ILikeAny": {"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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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": {"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.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.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.is_sql": {"tf": 1.4142135623730951}, "sqlglot.generator.Generator.like_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": 285}}, "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}}}}}}}}}}}}}}}}}, "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.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.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.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.Matches": {"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": 591}}}}}}}}, "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, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.likeany_sql": {"tf": 1}, "sqlglot.expressions.LikeAny": {"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.LikeProperty": {"tf": 1}, "sqlglot.generator.Generator.likeproperty_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": {}, "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}, "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}}}}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Matches": {"tf": 1}}, "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}}, "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": {"0": {"6": {"3": {"7": {"docs": {}, "df": 0, "f": {"3": {"docs": {}, "df": 0, "f": {"4": {"0": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "a": {"3": {"0": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "b": {"5": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "e": {"0": {"docs": {}, "df": 0, "e": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "4": {"docs": {}, "df": 0, "d": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "9": {"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}, "d": {"0": {"0": {"0": {"docs": {"sqlglot.lineage.lineage": {"tf": 1}, "sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "1": {"docs": {}, "df": 0, "b": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "2": {"4": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "3": {"6": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"3": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "c": {"docs": {}, "df": 0, "c": {"1": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}}, "docs": {}, "df": 0}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"6": {"8": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "e": {"6": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "d": {"4": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "c": {"2": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "f": {"8": {"0": {"docs": {"sqlglot.optimizer.optimizer.optimize": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}}, "c": {"7": {"4": {"9": {"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": {"6": {"6": {"4": {"6": {"5": {"9": {"8": {"9": {"3": {"2": {"1": {"6": {"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": {"4": {"4": {"4": {"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}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"0": {"6": {"5": {"1": {"3": {"9": {"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}, "7": {"1": {"4": {"4": {"3": {"2": {"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}, "8": {"0": {"3": {"6": {"9": {"6": {"docs": {"sqlglot.dataframe.sql.Column.binary_op": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "2": {"8": {"6": {"8": {"8": {"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}, "7": {"7": {"8": {"4": {"0": {"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}, "9": {"8": {"5": {"2": {"1": {"6": {"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}, "1": {"0": {"9": {"3": {"4": {"7": {"2": {"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}, "1": {"8": {"0": {"3": {"3": {"6": {"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}, "2": {"7": {"8": {"9": {"7": {"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}, "4": {"1": {"3": {"2": {"6": {"4": {"docs": {"sqlglot.dataframe.sql.Column.between": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"7": {"8": {"0": {"8": {"docs": {"sqlglot.dataframe.sql.Column.between": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"2": {"6": {"4": {"0": {"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}, "5": {"6": {"5": {"3": {"9": {"2": {"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": {"2": {"0": {"3": {"5": {"2": {"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}, "7": {"2": {"2": {"4": {"4": {"8": {"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}, "2": {"1": {"2": {"0": {"6": {"2": {"4": {"docs": {"sqlglot.dataframe.sql.DataFrame.repartition": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "4": {"0": {"3": {"2": {"0": {"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}, "5": {"6": {"7": {"4": {"5": {"6": {"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}, "3": {"6": {"8": {"7": {"1": {"3": {"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}, "docs": {}, "df": 0}, "4": {"6": {"7": {"6": {"4": {"8": {"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}, "6": {"4": {"6": {"8": {"8": {"1": {"6": {"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}, "8": {"6": {"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": 3.7416573867739413}, "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.ilikeany_sql": {"tf": 5.291502622129181}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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.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.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.is_sql": {"tf": 5.291502622129181}, "sqlglot.generator.Generator.like_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": 728, "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.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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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.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.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.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_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": 501}}}}, "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.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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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.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.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.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_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": 419, "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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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.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.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.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_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": 505}, "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}}}}}, "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}}, "k": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.generator.Generator.like_sql": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "y": {"docs": {"sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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}}}}}}}}}}, "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}}}}}, "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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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.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.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.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_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": 399, "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.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.ilikeany_sql": {"tf": 1}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_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.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.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.is_sql": {"tf": 1}, "sqlglot.generator.Generator.like_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": 395}}}}}}}, "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.dialects.snowflake.Snowflake.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}, "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}}}}}}}}}}}}}, "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.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": 99}}}}}}}}}}, "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.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": 26}}}}}}}, "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.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.Matches": {"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": 122}}}}, "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, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"sqlglot.expressions.Matches": {"tf": 1}}, "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}, "2": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "b": {"1": {"4": {"2": {"0": {"0": {"docs": {}, "df": 0, "/": {"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": {"0": {"4": {"0": {"docs": {"sqlglot.expressions.Matches": {"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}}}, "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.ilikeany_sql": {"tf": 1.7320508075688772}, "sqlglot.dialects.snowflake.Snowflake.Generator.likeany_sql": {"tf": 1.7320508075688772}, "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.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.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.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.Matches": {"tf": 2.23606797749979}, "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": 11.575836902790225}, "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.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.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.is_sql": {"tf": 1.7320508075688772}, "sqlglot.generator.Generator.like_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": 1751, "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.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": 64, "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": {"1": {"docs": {"sqlglot.expressions.Matches": {"tf": 1}}, "df": 1}, "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, "n": {"docs": {"sqlglot.expressions.Matches": {"tf": 1}}, "df": 1}, "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.generator.Generator": {"tf": 2}, "sqlglot.optimizer.canonicalize.canonicalize": {"tf": 1}, "sqlglot.tokens.Token.identifier": {"tf": 1.4142135623730951}}, "df": 30, "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.replace_placeholders": {"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": 237, "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}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Matches": {"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}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"sqlglot.expressions.Matches": {"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}, "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}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"sqlglot.expressions.Matches": {"tf": 1}}, "df": 1, "/": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "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.expressions.Matches": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "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}, "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.expressions.Matches": {"tf": 1}, "sqlglot.helper.ensure_list": {"tf": 1}, "sqlglot.helper.ensure_collection": {"tf": 1}}, "df": 5}}, "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, "c": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "b": {"1": {"9": {"3": {"0": {"6": {"docs": {"sqlglot.expressions.Matches": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "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.optimizer.optimizer.optimize": {"tf": 1.7320508075688772}, "sqlglot.optimizer.qualify_columns.qualify_columns": {"tf": 2}, "sqlglot.schema.MappingSchema": {"tf": 1.7320508075688772}}, "df": 7, "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": {"1": {"docs": {"sqlglot.expressions.Matches": {"tf": 1}}, "df": 1}, "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}}, "n": {"docs": {"sqlglot.expressions.Matches": {"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.Matches": {"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": 16, "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": 2.8284271247461903}, "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}}}}}}}}}}, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"sqlglot.expressions.Matches": {"tf": 1}, "sqlglot.transforms.eliminate_qualify": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "v": {"docs": {"sqlglot.optimizer.merge_subqueries.merge_subqueries": {"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}}}}}}}}}, ":": {"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": {"sqlglot.expressions.Matches": {"tf": 1}}, "df": 1, "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.expressions.Matches": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1.4142135623730951}}, "df": 6}, "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.expressions.Matches": {"tf": 1}, "sqlglot.optimizer.scope.Scope.find": {"tf": 1}}, "df": 5, "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}; // 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 d579823..9c719f7 100644 --- a/docs/sqlglot.html +++ b/docs/sqlglot.html @@ -3,7 +3,7 @@ - + sqlglot API documentation @@ -21,47 +21,44 @@ -

Contents

-
    -
  • SQLGlot -
  • +

    Contents

    + -

    Submodules

    - - -

    API Documentation

    -
      +

      Submodules

      + + +

      API Documentation

      +
      • pretty
      • @@ -93,7 +90,7 @@
        Edit on GitHub -

        SQLGlot

        +

        SQLGlot logo

        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.

        @@ -701,7 +698,7 @@ 47 T = t.TypeVar("T", bound=Expression) 48 49 - 50__version__ = "11.4.0" + 50__version__ = "11.4.4" 51 52pretty = False 53"""Whether to format generated SQL by default.""" diff --git a/docs/sqlglot/dataframe.html b/docs/sqlglot/dataframe.html index 7befe92..b0fa431 100644 --- a/docs/sqlglot/dataframe.html +++ b/docs/sqlglot/dataframe.html @@ -3,7 +3,7 @@ - + sqlglot.dataframe API documentation @@ -26,8 +26,8 @@ -

        Contents

        -
          +

          Contents

          +
          • PySpark DataFrame SQL Generator
          • How to use
              @@ -40,10 +40,10 @@
            -

            Submodules

            - +

            Submodules

            +
            Copyright (c) 2023 Toby Mao
            diff --git a/docs/sqlglot/dataframe/sql.html b/docs/sqlglot/dataframe/sql.html index 765bcb7..b64e56b 100644 --- a/docs/sqlglot/dataframe/sql.html +++ b/docs/sqlglot/dataframe/sql.html @@ -3,7 +3,7 @@ - + sqlglot.dataframe.sql API documentation @@ -28,8 +28,8 @@ -

            API Documentation

            -
              +

              API Documentation

              +
              • SparkSession
                  @@ -608,7 +608,7 @@
                  def - createDataFrame( self, data: Sequence[Union[Dict[str, <MagicMock id='140431323699648'>], List[<MagicMock id='140431323699648'>], Tuple]], schema: Optional[<MagicMock id='140431322449088'>] = None, samplingRatio: Optional[float] = None, verifySchema: bool = False) -> sqlglot.dataframe.sql.DataFrame: + createDataFrame( self, data: Sequence[Union[Dict[str, <MagicMock id='139664661722448'>], List[<MagicMock id='139664661722448'>], Tuple]], schema: Optional[<MagicMock id='139664663687136'>] = None, samplingRatio: Optional[float] = None, verifySchema: bool = False) -> sqlglot.dataframe.sql.DataFrame: @@ -1476,7 +1476,7 @@
                  - DataFrame( spark: <MagicMock id='140431327125104'>, 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='140431327032656'>] = None, **kwargs) + DataFrame( spark: <MagicMock id='139664666867024'>, 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='139664666468816'>] = None, **kwargs) @@ -2214,7 +2214,7 @@ is unlikely to come up.

                  @operation(Operation.FROM)
                  def - fillna( self, value: <MagicMock id='140431322372736'>, subset: Union[str, Tuple[str, ...], List[str], NoneType] = None) -> sqlglot.dataframe.sql.DataFrame: + fillna( self, value: <MagicMock id='139664662140320'>, subset: Union[str, Tuple[str, ...], List[str], NoneType] = None) -> sqlglot.dataframe.sql.DataFrame: @@ -2283,7 +2283,7 @@ 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='140431322278992'>], <MagicMock id='140431322278992'>, 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='139664662567456'>], <MagicMock id='139664662567456'>, NoneType] = None) -> sqlglot.dataframe.sql.DataFrame: @@ -2488,7 +2488,7 @@ 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='140431322875456'>], *cols: <MagicMock id='140431322936800'>) -> sqlglot.dataframe.sql.DataFrame: + repartition( self, numPartitions: Union[int, <MagicMock id='139664662120624'>], *cols: <MagicMock id='139664660651392'>) -> sqlglot.dataframe.sql.DataFrame: @@ -3156,7 +3156,7 @@ and check if it matches the type of the value provided. If not then make it null
                  - Column( expression: Union[<MagicMock id='140431324936560'>, sqlglot.expressions.Expression, NoneType]) + Column( expression: Union[<MagicMock id='139664664676480'>, sqlglot.expressions.Expression, NoneType]) @@ -3184,7 +3184,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='140431323066816'>, sqlglot.expressions.Expression, NoneType]): + ensure_col( cls, value: Union[<MagicMock id='139664660714432'>, sqlglot.expressions.Expression, NoneType]): @@ -3205,7 +3205,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='140431322777728'>, sqlglot.expressions.Expression]]) -> List[sqlglot.dataframe.sql.Column]: + ensure_cols( cls, args: List[Union[<MagicMock id='139664661180336'>, sqlglot.expressions.Expression]]) -> List[sqlglot.dataframe.sql.Column]: @@ -3226,7 +3226,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='140431321452064'>], func_name: str, *args: Optional[<MagicMock id='140431321074320'>]) -> sqlglot.dataframe.sql.Column: + invoke_anonymous_function( cls, column: Optional[<MagicMock id='139664660985216'>], func_name: str, *args: Optional[<MagicMock id='139664660877840'>]) -> sqlglot.dataframe.sql.Column: @@ -3253,7 +3253,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='140431321272944'>], callable_expression: Callable, **kwargs) -> sqlglot.dataframe.sql.Column: + invoke_expression_over_column( cls, column: Optional[<MagicMock id='139664660828688'>], callable_expression: Callable, **kwargs) -> sqlglot.dataframe.sql.Column: @@ -3290,7 +3290,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='140431321368896'>, **kwargs) -> sqlglot.dataframe.sql.Column: + binary_op( self, klass: Callable, other: <MagicMock id='139664660803696'>, **kwargs) -> sqlglot.dataframe.sql.Column: @@ -3311,7 +3311,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='140431321378976'>, **kwargs) -> sqlglot.dataframe.sql.Column: + inverse_binary_op( self, klass: Callable, other: <MagicMock id='139664661093472'>, **kwargs) -> sqlglot.dataframe.sql.Column: @@ -3821,7 +3821,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

                  def - isin( self, *cols: Union[<MagicMock id='140431321579680'>, Iterable[<MagicMock id='140431321579680'>]]): + isin( self, *cols: Union[<MagicMock id='139664661278976'>, Iterable[<MagicMock id='139664661278976'>]]): @@ -3842,7 +3842,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

                  def - between( self, lowerBound: <MagicMock id='140431321667120'>, upperBound: <MagicMock id='140431321705216'>) -> sqlglot.dataframe.sql.Column: + between( self, lowerBound: <MagicMock id='139664661413264'>, upperBound: <MagicMock id='139664661467808'>) -> sqlglot.dataframe.sql.Column: @@ -3877,7 +3877,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

                  def - over( self, window: <MagicMock id='140431321762928'>) -> sqlglot.dataframe.sql.Column: + over( self, window: <MagicMock id='139664661492640'>) -> sqlglot.dataframe.sql.Column: @@ -4075,7 +4075,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

                  @classmethod
                  def - partitionBy( cls, *cols: Union[<MagicMock id='140431322000032'>, List[<MagicMock id='140431322000032'>]]) -> sqlglot.dataframe.sql.WindowSpec: + partitionBy( cls, *cols: Union[<MagicMock id='139664661620352'>, List[<MagicMock id='139664661620352'>]]) -> sqlglot.dataframe.sql.WindowSpec: @@ -4096,7 +4096,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

                  @classmethod
                  def - orderBy( cls, *cols: Union[<MagicMock id='140431322080464'>, List[<MagicMock id='140431322080464'>]]) -> sqlglot.dataframe.sql.WindowSpec: + orderBy( cls, *cols: Union[<MagicMock id='139664661565392'>, List[<MagicMock id='139664661565392'>]]) -> sqlglot.dataframe.sql.WindowSpec: @@ -4321,7 +4321,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

                  def - partitionBy( self, *cols: Union[<MagicMock id='140431321854976'>, List[<MagicMock id='140431321854976'>]]) -> sqlglot.dataframe.sql.WindowSpec: + partitionBy( self, *cols: Union[<MagicMock id='139664659914448'>, List[<MagicMock id='139664659914448'>]]) -> sqlglot.dataframe.sql.WindowSpec: @@ -4348,7 +4348,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string

                  def - orderBy( self, *cols: Union[<MagicMock id='140431320185440'>, List[<MagicMock id='140431320185440'>]]) -> sqlglot.dataframe.sql.WindowSpec: + orderBy( self, *cols: Union[<MagicMock id='139664659893216'>, List[<MagicMock id='139664659893216'>]]) -> sqlglot.dataframe.sql.WindowSpec: diff --git a/docs/sqlglot/dialects.html b/docs/sqlglot/dialects.html index d7b6f6c..8c8b57f 100644 --- a/docs/sqlglot/dialects.html +++ b/docs/sqlglot/dialects.html @@ -3,7 +3,7 @@ - + sqlglot.dialects API documentation @@ -26,35 +26,35 @@ -

                  Contents

                  -
                    +

                    Contents

                    + -

                    Submodules

                    - +

                    Submodules

                    +
                    Copyright (c) 2023 Toby Mao
                    diff --git a/docs/sqlglot/dialects/bigquery.html b/docs/sqlglot/dialects/bigquery.html index bdfea69..7a0daa5 100644 --- a/docs/sqlglot/dialects/bigquery.html +++ b/docs/sqlglot/dialects/bigquery.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.bigquery API documentation @@ -28,8 +28,8 @@ -

                    API Documentation

                    -
                      +

                      API Documentation

                      +
                      • BigQuery
                          @@ -110,296 +110,301 @@ 10 Dialect, 11 datestrtodate_sql, 12 inline_array_sql, - 13 min_or_least, - 14 no_ilike_sql, - 15 rename_func, - 16 timestrtotime_sql, - 17 ts_or_ds_to_date_sql, - 18) - 19from sqlglot.helper import seq_get - 20from sqlglot.tokens import TokenType - 21 - 22E = t.TypeVar("E", bound=exp.Expression) - 23 + 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 - 25def _date_add(expression_class: t.Type[E]) -> t.Callable[[t.Sequence], E]: - 26 def func(args): - 27 interval = seq_get(args, 1) - 28 return expression_class( - 29 this=seq_get(args, 0), - 30 expression=interval.this, - 31 unit=interval.args.get("unit"), - 32 ) - 33 - 34 return func - 35 + 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 36 - 37def _date_add_sql( - 38 data_type: str, kind: str - 39) -> t.Callable[[generator.Generator, exp.Expression], str]: - 40 def func(self, expression): - 41 this = self.sql(expression, "this") - 42 unit = expression.args.get("unit") - 43 unit = exp.var(unit.name.upper() if unit else "DAY") - 44 interval = exp.Interval(this=expression.expression, unit=unit) - 45 return f"{data_type}_{kind}({this}, {self.sql(interval)})" - 46 - 47 return func - 48 + 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 - 50def _derived_table_values_to_unnest(self: generator.Generator, expression: exp.Values) -> str: - 51 if not isinstance(expression.unnest().parent, exp.From): - 52 expression = t.cast(exp.Values, transforms.remove_precision_parameterized_types(expression)) - 53 return self.values_sql(expression) - 54 rows = [tuple_exp.expressions for tuple_exp in expression.find_all(exp.Tuple)] - 55 structs = [] - 56 for row in rows: - 57 aliases = [ - 58 exp.alias_(value, column_name) - 59 for value, column_name in zip(row, expression.args["alias"].args["columns"]) - 60 ] - 61 structs.append(exp.Struct(expressions=aliases)) - 62 unnest_exp = exp.Unnest(expressions=[exp.Array(expressions=structs)]) - 63 return self.unnest_sql(unnest_exp) - 64 + 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 - 66def _returnsproperty_sql(self: generator.Generator, expression: exp.ReturnsProperty) -> str: - 67 this = expression.this - 68 if isinstance(this, exp.Schema): - 69 this = f"{this.this} <{self.expressions(this)}>" - 70 else: - 71 this = self.sql(this) - 72 return f"RETURNS {this}" - 73 + 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 - 75def _create_sql(self: generator.Generator, expression: exp.Create) -> str: - 76 kind = expression.args["kind"] - 77 returns = expression.find(exp.ReturnsProperty) - 78 if kind.upper() == "FUNCTION" and returns and returns.args.get("is_table"): - 79 expression = expression.copy() - 80 expression.set("kind", "TABLE FUNCTION") - 81 if isinstance( - 82 expression.expression, - 83 ( - 84 exp.Subquery, - 85 exp.Literal, - 86 ), - 87 ): - 88 expression.set("expression", expression.expression.this) - 89 - 90 return self.create_sql(expression) - 91 - 92 return self.create_sql(expression) - 93 + 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 - 95def _unqualify_unnest(expression: exp.Expression) -> exp.Expression: - 96 """Remove references to unnest table aliases since bigquery doesn't allow them. - 97 - 98 These are added by the optimizer's qualify_column step. - 99 """ -100 if isinstance(expression, exp.Select): -101 unnests = { -102 unnest.alias -103 for unnest in expression.args.get("from", exp.From(expressions=[])).expressions -104 if isinstance(unnest, exp.Unnest) and unnest.alias -105 } -106 -107 if unnests: -108 expression = expression.copy() -109 -110 for select in expression.expressions: -111 for column in select.find_all(exp.Column): -112 if column.table in unnests: -113 column.set("table", None) -114 -115 return expression -116 + 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 } +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 -118class BigQuery(Dialect): -119 unnest_column_only = True -120 time_mapping = { -121 "%M": "%-M", -122 "%d": "%-d", -123 "%m": "%-m", -124 "%y": "%-y", -125 "%H": "%-H", -126 "%I": "%-I", -127 "%S": "%-S", -128 "%j": "%-j", -129 } -130 -131 class Tokenizer(tokens.Tokenizer): -132 QUOTES = [ -133 (prefix + quote, quote) if prefix else quote -134 for quote in ["'", '"', '"""', "'''"] -135 for prefix in ["", "r", "R"] -136 ] -137 COMMENTS = ["--", "#", ("/*", "*/")] -138 IDENTIFIERS = ["`"] -139 STRING_ESCAPES = ["\\"] -140 HEX_STRINGS = [("0x", ""), ("0X", "")] -141 -142 KEYWORDS = { -143 **tokens.Tokenizer.KEYWORDS, -144 "BEGIN": TokenType.COMMAND, -145 "BEGIN TRANSACTION": TokenType.BEGIN, -146 "CURRENT_DATETIME": TokenType.CURRENT_DATETIME, -147 "DECLARE": TokenType.COMMAND, -148 "GEOGRAPHY": TokenType.GEOGRAPHY, -149 "FLOAT64": TokenType.DOUBLE, -150 "INT64": TokenType.BIGINT, -151 "NOT DETERMINISTIC": TokenType.VOLATILE, -152 "UNKNOWN": TokenType.NULL, -153 } -154 KEYWORDS.pop("DIV") -155 -156 class Parser(parser.Parser): -157 FUNCTIONS = { -158 **parser.Parser.FUNCTIONS, # type: ignore -159 "DATE_TRUNC": lambda args: exp.DateTrunc( -160 unit=exp.Literal.string(seq_get(args, 1).name), # type: ignore -161 this=seq_get(args, 0), -162 ), -163 "DATE_ADD": _date_add(exp.DateAdd), -164 "DATETIME_ADD": _date_add(exp.DatetimeAdd), -165 "DIV": lambda args: exp.IntDiv(this=seq_get(args, 0), expression=seq_get(args, 1)), -166 "REGEXP_CONTAINS": exp.RegexpLike.from_arg_list, -167 "REGEXP_EXTRACT": lambda args: exp.RegexpExtract( -168 this=seq_get(args, 0), -169 expression=seq_get(args, 1), -170 position=seq_get(args, 2), -171 occurrence=seq_get(args, 3), -172 group=exp.Literal.number(1) -173 if re.compile(str(seq_get(args, 1))).groups == 1 -174 else None, -175 ), -176 "TIME_ADD": _date_add(exp.TimeAdd), -177 "TIMESTAMP_ADD": _date_add(exp.TimestampAdd), -178 "DATE_SUB": _date_add(exp.DateSub), -179 "DATETIME_SUB": _date_add(exp.DatetimeSub), -180 "TIME_SUB": _date_add(exp.TimeSub), -181 "TIMESTAMP_SUB": _date_add(exp.TimestampSub), -182 "PARSE_TIMESTAMP": lambda args: exp.StrToTime( -183 this=seq_get(args, 1), format=seq_get(args, 0) -184 ), -185 } -186 -187 FUNCTION_PARSERS = { -188 **parser.Parser.FUNCTION_PARSERS, # type: ignore -189 "ARRAY": lambda self: self.expression(exp.Array, expressions=[self._parse_statement()]), -190 } -191 FUNCTION_PARSERS.pop("TRIM") -192 -193 NO_PAREN_FUNCTIONS = { -194 **parser.Parser.NO_PAREN_FUNCTIONS, # type: ignore -195 TokenType.CURRENT_DATETIME: exp.CurrentDatetime, -196 } -197 -198 NESTED_TYPE_TOKENS = { -199 *parser.Parser.NESTED_TYPE_TOKENS, # type: ignore -200 TokenType.TABLE, -201 } -202 -203 ID_VAR_TOKENS = { -204 *parser.Parser.ID_VAR_TOKENS, # type: ignore -205 TokenType.VALUES, -206 } -207 -208 PROPERTY_PARSERS = { -209 **parser.Parser.PROPERTY_PARSERS, # type: ignore -210 "NOT DETERMINISTIC": lambda self: self.expression( -211 exp.VolatilityProperty, this=exp.Literal.string("VOLATILE") -212 ), -213 } -214 -215 class Generator(generator.Generator): -216 TRANSFORMS = { -217 **generator.Generator.TRANSFORMS, # type: ignore -218 **transforms.REMOVE_PRECISION_PARAMETERIZED_TYPES, # type: ignore -219 exp.ArraySize: rename_func("ARRAY_LENGTH"), -220 exp.DateAdd: _date_add_sql("DATE", "ADD"), -221 exp.DateSub: _date_add_sql("DATE", "SUB"), -222 exp.DatetimeAdd: _date_add_sql("DATETIME", "ADD"), -223 exp.DatetimeSub: _date_add_sql("DATETIME", "SUB"), -224 exp.DateDiff: lambda self, e: f"DATE_DIFF({self.sql(e, 'this')}, {self.sql(e, 'expression')}, {self.sql(e.args.get('unit', 'DAY'))})", -225 exp.DateStrToDate: datestrtodate_sql, -226 exp.DateTrunc: lambda self, e: self.func("DATE_TRUNC", e.this, e.text("unit")), -227 exp.GroupConcat: rename_func("STRING_AGG"), -228 exp.ILike: no_ilike_sql, -229 exp.IntDiv: rename_func("DIV"), -230 exp.Min: min_or_least, -231 exp.Select: transforms.preprocess( -232 [_unqualify_unnest], transforms.delegate("select_sql") -233 ), -234 exp.StrToTime: lambda self, e: f"PARSE_TIMESTAMP({self.format_time(e)}, {self.sql(e, 'this')})", -235 exp.TimeAdd: _date_add_sql("TIME", "ADD"), -236 exp.TimeSub: _date_add_sql("TIME", "SUB"), -237 exp.TimestampAdd: _date_add_sql("TIMESTAMP", "ADD"), -238 exp.TimestampSub: _date_add_sql("TIMESTAMP", "SUB"), -239 exp.TimeStrToTime: timestrtotime_sql, -240 exp.TsOrDsToDate: ts_or_ds_to_date_sql("bigquery"), -241 exp.TsOrDsAdd: _date_add_sql("DATE", "ADD"), -242 exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}", -243 exp.VariancePop: rename_func("VAR_POP"), -244 exp.Values: _derived_table_values_to_unnest, -245 exp.ReturnsProperty: _returnsproperty_sql, -246 exp.Create: _create_sql, -247 exp.Trim: lambda self, e: self.func(f"TRIM", e.this, e.expression), -248 exp.VolatilityProperty: lambda self, e: f"DETERMINISTIC" -249 if e.name == "IMMUTABLE" -250 else "NOT DETERMINISTIC", -251 exp.RegexpLike: rename_func("REGEXP_CONTAINS"), -252 } -253 -254 TYPE_MAPPING = { -255 **generator.Generator.TYPE_MAPPING, # type: ignore -256 exp.DataType.Type.TINYINT: "INT64", -257 exp.DataType.Type.SMALLINT: "INT64", -258 exp.DataType.Type.INT: "INT64", -259 exp.DataType.Type.BIGINT: "INT64", -260 exp.DataType.Type.DECIMAL: "NUMERIC", -261 exp.DataType.Type.FLOAT: "FLOAT64", +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 } +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 ), +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") +193 +194 NO_PAREN_FUNCTIONS = { +195 **parser.Parser.NO_PAREN_FUNCTIONS, # type: ignore +196 TokenType.CURRENT_DATETIME: exp.CurrentDatetime, +197 } +198 +199 NESTED_TYPE_TOKENS = { +200 *parser.Parser.NESTED_TYPE_TOKENS, # type: ignore +201 TokenType.TABLE, +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 class Generator(generator.Generator): +217 TRANSFORMS = { +218 **generator.Generator.TRANSFORMS, # type: ignore +219 **transforms.REMOVE_PRECISION_PARAMETERIZED_TYPES, # type: ignore +220 exp.ArraySize: rename_func("ARRAY_LENGTH"), +221 exp.DateAdd: _date_add_sql("DATE", "ADD"), +222 exp.DateSub: _date_add_sql("DATE", "SUB"), +223 exp.DatetimeAdd: _date_add_sql("DATETIME", "ADD"), +224 exp.DatetimeSub: _date_add_sql("DATETIME", "SUB"), +225 exp.DateDiff: lambda self, e: f"DATE_DIFF({self.sql(e, 'this')}, {self.sql(e, 'expression')}, {self.sql(e.args.get('unit', 'DAY'))})", +226 exp.DateStrToDate: datestrtodate_sql, +227 exp.DateTrunc: lambda self, e: self.func("DATE_TRUNC", e.this, e.text("unit")), +228 exp.GroupConcat: rename_func("STRING_AGG"), +229 exp.ILike: no_ilike_sql, +230 exp.IntDiv: rename_func("DIV"), +231 exp.Max: max_or_greatest, +232 exp.Min: min_or_least, +233 exp.Select: transforms.preprocess( +234 [_unqualify_unnest], transforms.delegate("select_sql") +235 ), +236 exp.StrToTime: lambda self, e: f"PARSE_TIMESTAMP({self.format_time(e)}, {self.sql(e, 'this')})", +237 exp.TimeAdd: _date_add_sql("TIME", "ADD"), +238 exp.TimeSub: _date_add_sql("TIME", "SUB"), +239 exp.TimestampAdd: _date_add_sql("TIMESTAMP", "ADD"), +240 exp.TimestampSub: _date_add_sql("TIMESTAMP", "SUB"), +241 exp.TimeStrToTime: timestrtotime_sql, +242 exp.TsOrDsToDate: ts_or_ds_to_date_sql("bigquery"), +243 exp.TsOrDsAdd: _date_add_sql("DATE", "ADD"), +244 exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}", +245 exp.VariancePop: rename_func("VAR_POP"), +246 exp.Values: _derived_table_values_to_unnest, +247 exp.ReturnsProperty: _returnsproperty_sql, +248 exp.Create: _create_sql, +249 exp.Trim: lambda self, e: self.func(f"TRIM", e.this, e.expression), +250 exp.VolatilityProperty: lambda self, e: f"DETERMINISTIC" +251 if e.name == "IMMUTABLE" +252 else "NOT DETERMINISTIC", +253 exp.RegexpLike: rename_func("REGEXP_CONTAINS"), +254 } +255 +256 TYPE_MAPPING = { +257 **generator.Generator.TYPE_MAPPING, # type: ignore +258 exp.DataType.Type.BIGINT: "INT64", +259 exp.DataType.Type.BOOLEAN: "BOOL", +260 exp.DataType.Type.CHAR: "STRING", +261 exp.DataType.Type.DECIMAL: "NUMERIC", 262 exp.DataType.Type.DOUBLE: "FLOAT64", -263 exp.DataType.Type.BOOLEAN: "BOOL", -264 exp.DataType.Type.TEXT: "STRING", -265 exp.DataType.Type.VARCHAR: "STRING", +263 exp.DataType.Type.FLOAT: "FLOAT64", +264 exp.DataType.Type.INT: "INT64", +265 exp.DataType.Type.NCHAR: "STRING", 266 exp.DataType.Type.NVARCHAR: "STRING", -267 } -268 PROPERTIES_LOCATION = { -269 **generator.Generator.PROPERTIES_LOCATION, # type: ignore -270 exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA, +267 exp.DataType.Type.SMALLINT: "INT64", +268 exp.DataType.Type.TEXT: "STRING", +269 exp.DataType.Type.TINYINT: "INT64", +270 exp.DataType.Type.VARCHAR: "STRING", 271 } -272 -273 EXPLICIT_UNION = True -274 -275 def array_sql(self, expression: exp.Array) -> str: -276 first_arg = seq_get(expression.expressions, 0) -277 if isinstance(first_arg, exp.Subqueryable): -278 return f"ARRAY{self.wrap(self.sql(first_arg))}" +272 PROPERTIES_LOCATION = { +273 **generator.Generator.PROPERTIES_LOCATION, # type: ignore +274 exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA, +275 } +276 +277 EXPLICIT_UNION = True +278 LIMIT_FETCH = "LIMIT" 279 -280 return inline_array_sql(self, expression) -281 -282 def transaction_sql(self, *_) -> str: -283 return "BEGIN TRANSACTION" +280 def array_sql(self, expression: exp.Array) -> str: +281 first_arg = seq_get(expression.expressions, 0) +282 if isinstance(first_arg, exp.Subqueryable): +283 return f"ARRAY{self.wrap(self.sql(first_arg))}" 284 -285 def commit_sql(self, *_) -> str: -286 return "COMMIT TRANSACTION" -287 -288 def rollback_sql(self, *_) -> str: -289 return "ROLLBACK TRANSACTION" -290 -291 def in_unnest_op(self, expression: exp.Unnest) -> str: -292 return self.sql(expression) -293 -294 def except_op(self, expression: exp.Except) -> str: -295 if not expression.args.get("distinct", False): -296 self.unsupported("EXCEPT without DISTINCT is not supported in BigQuery") -297 return f"EXCEPT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}" +285 return inline_array_sql(self, expression) +286 +287 def transaction_sql(self, *_) -> str: +288 return "BEGIN TRANSACTION" +289 +290 def commit_sql(self, *_) -> str: +291 return "COMMIT TRANSACTION" +292 +293 def rollback_sql(self, *_) -> str: +294 return "ROLLBACK TRANSACTION" +295 +296 def in_unnest_op(self, expression: exp.Unnest) -> str: +297 return self.sql(expression) 298 -299 def intersect_op(self, expression: exp.Intersect) -> str: +299 def except_op(self, expression: exp.Except) -> str: 300 if not expression.args.get("distinct", False): -301 self.unsupported("INTERSECT without DISTINCT is not supported in BigQuery") -302 return f"INTERSECT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}" +301 self.unsupported("EXCEPT without DISTINCT is not supported in BigQuery") +302 return f"EXCEPT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}" +303 +304 def intersect_op(self, expression: exp.Intersect) -> str: +305 if not expression.args.get("distinct", False): +306 self.unsupported("INTERSECT without DISTINCT is not supported in BigQuery") +307 return f"INTERSECT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
                  @@ -415,191 +420,195 @@
                  -
                  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    }
                  -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            ),
                  -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")
                  -193
                  -194        NO_PAREN_FUNCTIONS = {
                  -195            **parser.Parser.NO_PAREN_FUNCTIONS,  # type: ignore
                  -196            TokenType.CURRENT_DATETIME: exp.CurrentDatetime,
                  -197        }
                  -198
                  -199        NESTED_TYPE_TOKENS = {
                  -200            *parser.Parser.NESTED_TYPE_TOKENS,  # type: ignore
                  -201            TokenType.TABLE,
                  -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    class Generator(generator.Generator):
                  -217        TRANSFORMS = {
                  -218            **generator.Generator.TRANSFORMS,  # type: ignore
                  -219            **transforms.REMOVE_PRECISION_PARAMETERIZED_TYPES,  # type: ignore
                  -220            exp.ArraySize: rename_func("ARRAY_LENGTH"),
                  -221            exp.DateAdd: _date_add_sql("DATE", "ADD"),
                  -222            exp.DateSub: _date_add_sql("DATE", "SUB"),
                  -223            exp.DatetimeAdd: _date_add_sql("DATETIME", "ADD"),
                  -224            exp.DatetimeSub: _date_add_sql("DATETIME", "SUB"),
                  -225            exp.DateDiff: lambda self, e: f"DATE_DIFF({self.sql(e, 'this')}, {self.sql(e, 'expression')}, {self.sql(e.args.get('unit', 'DAY'))})",
                  -226            exp.DateStrToDate: datestrtodate_sql,
                  -227            exp.DateTrunc: lambda self, e: self.func("DATE_TRUNC", e.this, e.text("unit")),
                  -228            exp.GroupConcat: rename_func("STRING_AGG"),
                  -229            exp.ILike: no_ilike_sql,
                  -230            exp.IntDiv: rename_func("DIV"),
                  -231            exp.Min: min_or_least,
                  -232            exp.Select: transforms.preprocess(
                  -233                [_unqualify_unnest], transforms.delegate("select_sql")
                  -234            ),
                  -235            exp.StrToTime: lambda self, e: f"PARSE_TIMESTAMP({self.format_time(e)}, {self.sql(e, 'this')})",
                  -236            exp.TimeAdd: _date_add_sql("TIME", "ADD"),
                  -237            exp.TimeSub: _date_add_sql("TIME", "SUB"),
                  -238            exp.TimestampAdd: _date_add_sql("TIMESTAMP", "ADD"),
                  -239            exp.TimestampSub: _date_add_sql("TIMESTAMP", "SUB"),
                  -240            exp.TimeStrToTime: timestrtotime_sql,
                  -241            exp.TsOrDsToDate: ts_or_ds_to_date_sql("bigquery"),
                  -242            exp.TsOrDsAdd: _date_add_sql("DATE", "ADD"),
                  -243            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
                  -244            exp.VariancePop: rename_func("VAR_POP"),
                  -245            exp.Values: _derived_table_values_to_unnest,
                  -246            exp.ReturnsProperty: _returnsproperty_sql,
                  -247            exp.Create: _create_sql,
                  -248            exp.Trim: lambda self, e: self.func(f"TRIM", e.this, e.expression),
                  -249            exp.VolatilityProperty: lambda self, e: f"DETERMINISTIC"
                  -250            if e.name == "IMMUTABLE"
                  -251            else "NOT DETERMINISTIC",
                  -252            exp.RegexpLike: rename_func("REGEXP_CONTAINS"),
                  -253        }
                  -254
                  -255        TYPE_MAPPING = {
                  -256            **generator.Generator.TYPE_MAPPING,  # type: ignore
                  -257            exp.DataType.Type.TINYINT: "INT64",
                  -258            exp.DataType.Type.SMALLINT: "INT64",
                  -259            exp.DataType.Type.INT: "INT64",
                  -260            exp.DataType.Type.BIGINT: "INT64",
                  -261            exp.DataType.Type.DECIMAL: "NUMERIC",
                  -262            exp.DataType.Type.FLOAT: "FLOAT64",
                  +            
                  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    }
                  +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            ),
                  +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")
                  +194
                  +195        NO_PAREN_FUNCTIONS = {
                  +196            **parser.Parser.NO_PAREN_FUNCTIONS,  # type: ignore
                  +197            TokenType.CURRENT_DATETIME: exp.CurrentDatetime,
                  +198        }
                  +199
                  +200        NESTED_TYPE_TOKENS = {
                  +201            *parser.Parser.NESTED_TYPE_TOKENS,  # type: ignore
                  +202            TokenType.TABLE,
                  +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    class Generator(generator.Generator):
                  +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.DateAdd: _date_add_sql("DATE", "ADD"),
                  +223            exp.DateSub: _date_add_sql("DATE", "SUB"),
                  +224            exp.DatetimeAdd: _date_add_sql("DATETIME", "ADD"),
                  +225            exp.DatetimeSub: _date_add_sql("DATETIME", "SUB"),
                  +226            exp.DateDiff: lambda self, e: f"DATE_DIFF({self.sql(e, 'this')}, {self.sql(e, 'expression')}, {self.sql(e.args.get('unit', 'DAY'))})",
                  +227            exp.DateStrToDate: datestrtodate_sql,
                  +228            exp.DateTrunc: lambda self, e: self.func("DATE_TRUNC", e.this, e.text("unit")),
                  +229            exp.GroupConcat: rename_func("STRING_AGG"),
                  +230            exp.ILike: no_ilike_sql,
                  +231            exp.IntDiv: rename_func("DIV"),
                  +232            exp.Max: max_or_greatest,
                  +233            exp.Min: min_or_least,
                  +234            exp.Select: transforms.preprocess(
                  +235                [_unqualify_unnest], transforms.delegate("select_sql")
                  +236            ),
                  +237            exp.StrToTime: lambda self, e: f"PARSE_TIMESTAMP({self.format_time(e)}, {self.sql(e, 'this')})",
                  +238            exp.TimeAdd: _date_add_sql("TIME", "ADD"),
                  +239            exp.TimeSub: _date_add_sql("TIME", "SUB"),
                  +240            exp.TimestampAdd: _date_add_sql("TIMESTAMP", "ADD"),
                  +241            exp.TimestampSub: _date_add_sql("TIMESTAMP", "SUB"),
                  +242            exp.TimeStrToTime: timestrtotime_sql,
                  +243            exp.TsOrDsToDate: ts_or_ds_to_date_sql("bigquery"),
                  +244            exp.TsOrDsAdd: _date_add_sql("DATE", "ADD"),
                  +245            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
                  +246            exp.VariancePop: rename_func("VAR_POP"),
                  +247            exp.Values: _derived_table_values_to_unnest,
                  +248            exp.ReturnsProperty: _returnsproperty_sql,
                  +249            exp.Create: _create_sql,
                  +250            exp.Trim: lambda self, e: self.func(f"TRIM", e.this, e.expression),
                  +251            exp.VolatilityProperty: lambda self, e: f"DETERMINISTIC"
                  +252            if e.name == "IMMUTABLE"
                  +253            else "NOT DETERMINISTIC",
                  +254            exp.RegexpLike: rename_func("REGEXP_CONTAINS"),
                  +255        }
                  +256
                  +257        TYPE_MAPPING = {
                  +258            **generator.Generator.TYPE_MAPPING,  # type: ignore
                  +259            exp.DataType.Type.BIGINT: "INT64",
                  +260            exp.DataType.Type.BOOLEAN: "BOOL",
                  +261            exp.DataType.Type.CHAR: "STRING",
                  +262            exp.DataType.Type.DECIMAL: "NUMERIC",
                   263            exp.DataType.Type.DOUBLE: "FLOAT64",
                  -264            exp.DataType.Type.BOOLEAN: "BOOL",
                  -265            exp.DataType.Type.TEXT: "STRING",
                  -266            exp.DataType.Type.VARCHAR: "STRING",
                  +264            exp.DataType.Type.FLOAT: "FLOAT64",
                  +265            exp.DataType.Type.INT: "INT64",
                  +266            exp.DataType.Type.NCHAR: "STRING",
                   267            exp.DataType.Type.NVARCHAR: "STRING",
                  -268        }
                  -269        PROPERTIES_LOCATION = {
                  -270            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
                  -271            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
                  +268            exp.DataType.Type.SMALLINT: "INT64",
                  +269            exp.DataType.Type.TEXT: "STRING",
                  +270            exp.DataType.Type.TINYINT: "INT64",
                  +271            exp.DataType.Type.VARCHAR: "STRING",
                   272        }
                  -273
                  -274        EXPLICIT_UNION = True
                  -275
                  -276        def array_sql(self, expression: exp.Array) -> str:
                  -277            first_arg = seq_get(expression.expressions, 0)
                  -278            if isinstance(first_arg, exp.Subqueryable):
                  -279                return f"ARRAY{self.wrap(self.sql(first_arg))}"
                  +273        PROPERTIES_LOCATION = {
                  +274            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
                  +275            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
                  +276        }
                  +277
                  +278        EXPLICIT_UNION = True
                  +279        LIMIT_FETCH = "LIMIT"
                   280
                  -281            return inline_array_sql(self, expression)
                  -282
                  -283        def transaction_sql(self, *_) -> str:
                  -284            return "BEGIN TRANSACTION"
                  +281        def array_sql(self, expression: exp.Array) -> str:
                  +282            first_arg = seq_get(expression.expressions, 0)
                  +283            if isinstance(first_arg, exp.Subqueryable):
                  +284                return f"ARRAY{self.wrap(self.sql(first_arg))}"
                   285
                  -286        def commit_sql(self, *_) -> str:
                  -287            return "COMMIT TRANSACTION"
                  -288
                  -289        def rollback_sql(self, *_) -> str:
                  -290            return "ROLLBACK TRANSACTION"
                  -291
                  -292        def in_unnest_op(self, expression: exp.Unnest) -> str:
                  -293            return self.sql(expression)
                  -294
                  -295        def except_op(self, expression: exp.Except) -> str:
                  -296            if not expression.args.get("distinct", False):
                  -297                self.unsupported("EXCEPT without DISTINCT is not supported in BigQuery")
                  -298            return f"EXCEPT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
                  +286            return inline_array_sql(self, expression)
                  +287
                  +288        def transaction_sql(self, *_) -> str:
                  +289            return "BEGIN TRANSACTION"
                  +290
                  +291        def commit_sql(self, *_) -> str:
                  +292            return "COMMIT TRANSACTION"
                  +293
                  +294        def rollback_sql(self, *_) -> str:
                  +295            return "ROLLBACK TRANSACTION"
                  +296
                  +297        def in_unnest_op(self, expression: exp.Unnest) -> str:
                  +298            return self.sql(expression)
                   299
                  -300        def intersect_op(self, expression: exp.Intersect) -> str:
                  +300        def except_op(self, expression: exp.Except) -> str:
                   301            if not expression.args.get("distinct", False):
                  -302                self.unsupported("INTERSECT without DISTINCT is not supported in BigQuery")
                  -303            return f"INTERSECT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
                  +302                self.unsupported("EXCEPT without DISTINCT is not supported in BigQuery")
                  +303            return f"EXCEPT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
                  +304
                  +305        def intersect_op(self, expression: exp.Intersect) -> str:
                  +306            if not expression.args.get("distinct", False):
                  +307                self.unsupported("INTERSECT without DISTINCT is not supported in BigQuery")
                  +308            return f"INTERSECT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
                   
                  @@ -634,30 +643,30 @@
                  -
                  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")
                  +            
                  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")
                   
                  @@ -685,64 +694,64 @@
                  -
                  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            ),
                  -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")
                  -193
                  -194        NO_PAREN_FUNCTIONS = {
                  -195            **parser.Parser.NO_PAREN_FUNCTIONS,  # type: ignore
                  -196            TokenType.CURRENT_DATETIME: exp.CurrentDatetime,
                  -197        }
                  -198
                  -199        NESTED_TYPE_TOKENS = {
                  -200            *parser.Parser.NESTED_TYPE_TOKENS,  # type: ignore
                  -201            TokenType.TABLE,
                  -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        }
                  +            
                  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            ),
                  +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")
                  +194
                  +195        NO_PAREN_FUNCTIONS = {
                  +196            **parser.Parser.NO_PAREN_FUNCTIONS,  # type: ignore
                  +197            TokenType.CURRENT_DATETIME: exp.CurrentDatetime,
                  +198        }
                  +199
                  +200        NESTED_TYPE_TOKENS = {
                  +201            *parser.Parser.NESTED_TYPE_TOKENS,  # type: ignore
                  +202            TokenType.TABLE,
                  +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        }
                   
                  @@ -799,94 +808,98 @@ Default: "nulls_are_small"
                  -
                  216    class Generator(generator.Generator):
                  -217        TRANSFORMS = {
                  -218            **generator.Generator.TRANSFORMS,  # type: ignore
                  -219            **transforms.REMOVE_PRECISION_PARAMETERIZED_TYPES,  # type: ignore
                  -220            exp.ArraySize: rename_func("ARRAY_LENGTH"),
                  -221            exp.DateAdd: _date_add_sql("DATE", "ADD"),
                  -222            exp.DateSub: _date_add_sql("DATE", "SUB"),
                  -223            exp.DatetimeAdd: _date_add_sql("DATETIME", "ADD"),
                  -224            exp.DatetimeSub: _date_add_sql("DATETIME", "SUB"),
                  -225            exp.DateDiff: lambda self, e: f"DATE_DIFF({self.sql(e, 'this')}, {self.sql(e, 'expression')}, {self.sql(e.args.get('unit', 'DAY'))})",
                  -226            exp.DateStrToDate: datestrtodate_sql,
                  -227            exp.DateTrunc: lambda self, e: self.func("DATE_TRUNC", e.this, e.text("unit")),
                  -228            exp.GroupConcat: rename_func("STRING_AGG"),
                  -229            exp.ILike: no_ilike_sql,
                  -230            exp.IntDiv: rename_func("DIV"),
                  -231            exp.Min: min_or_least,
                  -232            exp.Select: transforms.preprocess(
                  -233                [_unqualify_unnest], transforms.delegate("select_sql")
                  -234            ),
                  -235            exp.StrToTime: lambda self, e: f"PARSE_TIMESTAMP({self.format_time(e)}, {self.sql(e, 'this')})",
                  -236            exp.TimeAdd: _date_add_sql("TIME", "ADD"),
                  -237            exp.TimeSub: _date_add_sql("TIME", "SUB"),
                  -238            exp.TimestampAdd: _date_add_sql("TIMESTAMP", "ADD"),
                  -239            exp.TimestampSub: _date_add_sql("TIMESTAMP", "SUB"),
                  -240            exp.TimeStrToTime: timestrtotime_sql,
                  -241            exp.TsOrDsToDate: ts_or_ds_to_date_sql("bigquery"),
                  -242            exp.TsOrDsAdd: _date_add_sql("DATE", "ADD"),
                  -243            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
                  -244            exp.VariancePop: rename_func("VAR_POP"),
                  -245            exp.Values: _derived_table_values_to_unnest,
                  -246            exp.ReturnsProperty: _returnsproperty_sql,
                  -247            exp.Create: _create_sql,
                  -248            exp.Trim: lambda self, e: self.func(f"TRIM", e.this, e.expression),
                  -249            exp.VolatilityProperty: lambda self, e: f"DETERMINISTIC"
                  -250            if e.name == "IMMUTABLE"
                  -251            else "NOT DETERMINISTIC",
                  -252            exp.RegexpLike: rename_func("REGEXP_CONTAINS"),
                  -253        }
                  -254
                  -255        TYPE_MAPPING = {
                  -256            **generator.Generator.TYPE_MAPPING,  # type: ignore
                  -257            exp.DataType.Type.TINYINT: "INT64",
                  -258            exp.DataType.Type.SMALLINT: "INT64",
                  -259            exp.DataType.Type.INT: "INT64",
                  -260            exp.DataType.Type.BIGINT: "INT64",
                  -261            exp.DataType.Type.DECIMAL: "NUMERIC",
                  -262            exp.DataType.Type.FLOAT: "FLOAT64",
                  +            
                  217    class Generator(generator.Generator):
                  +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.DateAdd: _date_add_sql("DATE", "ADD"),
                  +223            exp.DateSub: _date_add_sql("DATE", "SUB"),
                  +224            exp.DatetimeAdd: _date_add_sql("DATETIME", "ADD"),
                  +225            exp.DatetimeSub: _date_add_sql("DATETIME", "SUB"),
                  +226            exp.DateDiff: lambda self, e: f"DATE_DIFF({self.sql(e, 'this')}, {self.sql(e, 'expression')}, {self.sql(e.args.get('unit', 'DAY'))})",
                  +227            exp.DateStrToDate: datestrtodate_sql,
                  +228            exp.DateTrunc: lambda self, e: self.func("DATE_TRUNC", e.this, e.text("unit")),
                  +229            exp.GroupConcat: rename_func("STRING_AGG"),
                  +230            exp.ILike: no_ilike_sql,
                  +231            exp.IntDiv: rename_func("DIV"),
                  +232            exp.Max: max_or_greatest,
                  +233            exp.Min: min_or_least,
                  +234            exp.Select: transforms.preprocess(
                  +235                [_unqualify_unnest], transforms.delegate("select_sql")
                  +236            ),
                  +237            exp.StrToTime: lambda self, e: f"PARSE_TIMESTAMP({self.format_time(e)}, {self.sql(e, 'this')})",
                  +238            exp.TimeAdd: _date_add_sql("TIME", "ADD"),
                  +239            exp.TimeSub: _date_add_sql("TIME", "SUB"),
                  +240            exp.TimestampAdd: _date_add_sql("TIMESTAMP", "ADD"),
                  +241            exp.TimestampSub: _date_add_sql("TIMESTAMP", "SUB"),
                  +242            exp.TimeStrToTime: timestrtotime_sql,
                  +243            exp.TsOrDsToDate: ts_or_ds_to_date_sql("bigquery"),
                  +244            exp.TsOrDsAdd: _date_add_sql("DATE", "ADD"),
                  +245            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
                  +246            exp.VariancePop: rename_func("VAR_POP"),
                  +247            exp.Values: _derived_table_values_to_unnest,
                  +248            exp.ReturnsProperty: _returnsproperty_sql,
                  +249            exp.Create: _create_sql,
                  +250            exp.Trim: lambda self, e: self.func(f"TRIM", e.this, e.expression),
                  +251            exp.VolatilityProperty: lambda self, e: f"DETERMINISTIC"
                  +252            if e.name == "IMMUTABLE"
                  +253            else "NOT DETERMINISTIC",
                  +254            exp.RegexpLike: rename_func("REGEXP_CONTAINS"),
                  +255        }
                  +256
                  +257        TYPE_MAPPING = {
                  +258            **generator.Generator.TYPE_MAPPING,  # type: ignore
                  +259            exp.DataType.Type.BIGINT: "INT64",
                  +260            exp.DataType.Type.BOOLEAN: "BOOL",
                  +261            exp.DataType.Type.CHAR: "STRING",
                  +262            exp.DataType.Type.DECIMAL: "NUMERIC",
                   263            exp.DataType.Type.DOUBLE: "FLOAT64",
                  -264            exp.DataType.Type.BOOLEAN: "BOOL",
                  -265            exp.DataType.Type.TEXT: "STRING",
                  -266            exp.DataType.Type.VARCHAR: "STRING",
                  +264            exp.DataType.Type.FLOAT: "FLOAT64",
                  +265            exp.DataType.Type.INT: "INT64",
                  +266            exp.DataType.Type.NCHAR: "STRING",
                   267            exp.DataType.Type.NVARCHAR: "STRING",
                  -268        }
                  -269        PROPERTIES_LOCATION = {
                  -270            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
                  -271            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
                  +268            exp.DataType.Type.SMALLINT: "INT64",
                  +269            exp.DataType.Type.TEXT: "STRING",
                  +270            exp.DataType.Type.TINYINT: "INT64",
                  +271            exp.DataType.Type.VARCHAR: "STRING",
                   272        }
                  -273
                  -274        EXPLICIT_UNION = True
                  -275
                  -276        def array_sql(self, expression: exp.Array) -> str:
                  -277            first_arg = seq_get(expression.expressions, 0)
                  -278            if isinstance(first_arg, exp.Subqueryable):
                  -279                return f"ARRAY{self.wrap(self.sql(first_arg))}"
                  +273        PROPERTIES_LOCATION = {
                  +274            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
                  +275            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
                  +276        }
                  +277
                  +278        EXPLICIT_UNION = True
                  +279        LIMIT_FETCH = "LIMIT"
                   280
                  -281            return inline_array_sql(self, expression)
                  -282
                  -283        def transaction_sql(self, *_) -> str:
                  -284            return "BEGIN TRANSACTION"
                  +281        def array_sql(self, expression: exp.Array) -> str:
                  +282            first_arg = seq_get(expression.expressions, 0)
                  +283            if isinstance(first_arg, exp.Subqueryable):
                  +284                return f"ARRAY{self.wrap(self.sql(first_arg))}"
                   285
                  -286        def commit_sql(self, *_) -> str:
                  -287            return "COMMIT TRANSACTION"
                  -288
                  -289        def rollback_sql(self, *_) -> str:
                  -290            return "ROLLBACK TRANSACTION"
                  -291
                  -292        def in_unnest_op(self, expression: exp.Unnest) -> str:
                  -293            return self.sql(expression)
                  -294
                  -295        def except_op(self, expression: exp.Except) -> str:
                  -296            if not expression.args.get("distinct", False):
                  -297                self.unsupported("EXCEPT without DISTINCT is not supported in BigQuery")
                  -298            return f"EXCEPT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
                  +286            return inline_array_sql(self, expression)
                  +287
                  +288        def transaction_sql(self, *_) -> str:
                  +289            return "BEGIN TRANSACTION"
                  +290
                  +291        def commit_sql(self, *_) -> str:
                  +292            return "COMMIT TRANSACTION"
                  +293
                  +294        def rollback_sql(self, *_) -> str:
                  +295            return "ROLLBACK TRANSACTION"
                  +296
                  +297        def in_unnest_op(self, expression: exp.Unnest) -> str:
                  +298            return self.sql(expression)
                   299
                  -300        def intersect_op(self, expression: exp.Intersect) -> str:
                  +300        def except_op(self, expression: exp.Except) -> str:
                   301            if not expression.args.get("distinct", False):
                  -302                self.unsupported("INTERSECT without DISTINCT is not supported in BigQuery")
                  -303            return f"INTERSECT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
                  +302                self.unsupported("EXCEPT without DISTINCT is not supported in BigQuery")
                  +303            return f"EXCEPT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
                  +304
                  +305        def intersect_op(self, expression: exp.Intersect) -> str:
                  +306            if not expression.args.get("distinct", False):
                  +307                self.unsupported("INTERSECT without DISTINCT is not supported in BigQuery")
                  +308            return f"INTERSECT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
                   
                  @@ -945,12 +958,12 @@ Default: True
                  -
                  276        def array_sql(self, expression: exp.Array) -> str:
                  -277            first_arg = seq_get(expression.expressions, 0)
                  -278            if isinstance(first_arg, exp.Subqueryable):
                  -279                return f"ARRAY{self.wrap(self.sql(first_arg))}"
                  -280
                  -281            return inline_array_sql(self, expression)
                  +            
                  281        def array_sql(self, expression: exp.Array) -> str:
                  +282            first_arg = seq_get(expression.expressions, 0)
                  +283            if isinstance(first_arg, exp.Subqueryable):
                  +284                return f"ARRAY{self.wrap(self.sql(first_arg))}"
                  +285
                  +286            return inline_array_sql(self, expression)
                   
                  @@ -968,8 +981,8 @@ Default: True
                  -
                  283        def transaction_sql(self, *_) -> str:
                  -284            return "BEGIN TRANSACTION"
                  +            
                  288        def transaction_sql(self, *_) -> str:
                  +289            return "BEGIN TRANSACTION"
                   
                  @@ -987,8 +1000,8 @@ Default: True
                  -
                  286        def commit_sql(self, *_) -> str:
                  -287            return "COMMIT TRANSACTION"
                  +            
                  291        def commit_sql(self, *_) -> str:
                  +292            return "COMMIT TRANSACTION"
                   
                  @@ -1006,8 +1019,8 @@ Default: True
                  -
                  289        def rollback_sql(self, *_) -> str:
                  -290            return "ROLLBACK TRANSACTION"
                  +            
                  294        def rollback_sql(self, *_) -> str:
                  +295            return "ROLLBACK TRANSACTION"
                   
                  @@ -1025,8 +1038,8 @@ Default: True
                  -
                  292        def in_unnest_op(self, expression: exp.Unnest) -> str:
                  -293            return self.sql(expression)
                  +            
                  297        def in_unnest_op(self, expression: exp.Unnest) -> str:
                  +298            return self.sql(expression)
                   
                  @@ -1044,10 +1057,10 @@ Default: True
                  -
                  295        def except_op(self, expression: exp.Except) -> str:
                  -296            if not expression.args.get("distinct", False):
                  -297                self.unsupported("EXCEPT without DISTINCT is not supported in BigQuery")
                  -298            return f"EXCEPT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
                  +            
                  300        def except_op(self, expression: exp.Except) -> str:
                  +301            if not expression.args.get("distinct", False):
                  +302                self.unsupported("EXCEPT without DISTINCT is not supported in BigQuery")
                  +303            return f"EXCEPT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
                   
                  @@ -1065,10 +1078,10 @@ Default: True
                  -
                  300        def intersect_op(self, expression: exp.Intersect) -> str:
                  -301            if not expression.args.get("distinct", False):
                  -302                self.unsupported("INTERSECT without DISTINCT is not supported in BigQuery")
                  -303            return f"INTERSECT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
                  +            
                  305        def intersect_op(self, expression: exp.Intersect) -> str:
                  +306            if not expression.args.get("distinct", False):
                  +307                self.unsupported("INTERSECT without DISTINCT is not supported in BigQuery")
                  +308            return f"INTERSECT{' DISTINCT' if expression.args.get('distinct') else ' ALL'}"
                   
                  @@ -1165,6 +1178,7 @@ Default: True
                  offset_sql
                  setitem_sql
                  set_sql
                  +
                  pragma_sql
                  lock_sql
                  literal_sql
                  loaddata_sql
                  @@ -1209,6 +1223,8 @@ Default: True
                  primarykey_sql
                  unique_sql
                  if_sql
                  +
                  jsonkeyvalue_sql
                  +
                  jsonobject_sql
                  in_sql
                  interval_sql
                  return_sql
                  diff --git a/docs/sqlglot/dialects/clickhouse.html b/docs/sqlglot/dialects/clickhouse.html index 309d5db..529646d 100644 --- a/docs/sqlglot/dialects/clickhouse.html +++ b/docs/sqlglot/dialects/clickhouse.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.clickhouse API documentation @@ -28,8 +28,8 @@ -

                  API Documentation

                  -
                    +

                    API Documentation

                    +
                    • ClickHouse
                        @@ -87,137 +87,167 @@ 5from sqlglot import exp, generator, parser, tokens 6from sqlglot.dialects.dialect import Dialect, inline_array_sql, var_map_sql 7from sqlglot.errors import ParseError - 8from sqlglot.parser import parse_var_map - 9from sqlglot.tokens import TokenType - 10 + 8from sqlglot.helper import ensure_list, seq_get + 9from sqlglot.parser import parse_var_map + 10from sqlglot.tokens import TokenType 11 - 12def _lower_func(sql: str) -> str: - 13 index = sql.index("(") - 14 return sql[:index].lower() + sql[index:] - 15 + 12 + 13def _lower_func(sql: str) -> str: + 14 index = sql.index("(") + 15 return sql[:index].lower() + sql[index:] 16 - 17class ClickHouse(Dialect): - 18 normalize_functions = None - 19 null_ordering = "nulls_are_last" - 20 - 21 class Tokenizer(tokens.Tokenizer): - 22 COMMENTS = ["--", "#", "#!", ("/*", "*/")] - 23 IDENTIFIERS = ['"', "`"] - 24 - 25 KEYWORDS = { - 26 **tokens.Tokenizer.KEYWORDS, - 27 "ASOF": TokenType.ASOF, - 28 "GLOBAL": TokenType.GLOBAL, - 29 "DATETIME64": TokenType.DATETIME, - 30 "FINAL": TokenType.FINAL, - 31 "FLOAT32": TokenType.FLOAT, - 32 "FLOAT64": TokenType.DOUBLE, - 33 "INT16": TokenType.SMALLINT, - 34 "INT32": TokenType.INT, - 35 "INT64": TokenType.BIGINT, - 36 "INT8": TokenType.TINYINT, - 37 "TUPLE": TokenType.STRUCT, - 38 } - 39 - 40 class Parser(parser.Parser): - 41 FUNCTIONS = { - 42 **parser.Parser.FUNCTIONS, # type: ignore - 43 "MAP": parse_var_map, - 44 "QUANTILE": lambda params, args: exp.Quantile(this=args, quantile=params), - 45 "QUANTILES": lambda params, args: exp.Quantiles(parameters=params, expressions=args), - 46 "QUANTILEIF": lambda params, args: exp.QuantileIf(parameters=params, expressions=args), - 47 } - 48 - 49 RANGE_PARSERS = { - 50 **parser.Parser.RANGE_PARSERS, - 51 TokenType.GLOBAL: lambda self, this: self._match(TokenType.IN) - 52 and self._parse_in(this, is_global=True), - 53 } - 54 - 55 JOIN_KINDS = {*parser.Parser.JOIN_KINDS, TokenType.ANY, TokenType.ASOF} # type: ignore - 56 - 57 TABLE_ALIAS_TOKENS = {*parser.Parser.TABLE_ALIAS_TOKENS} - {TokenType.ANY} # type: ignore - 58 - 59 def _parse_in( - 60 self, this: t.Optional[exp.Expression], is_global: bool = False - 61 ) -> exp.Expression: - 62 this = super()._parse_in(this) - 63 this.set("is_global", is_global) - 64 return this - 65 - 66 def _parse_table( - 67 self, schema: bool = False, alias_tokens: t.Optional[t.Collection[TokenType]] = None - 68 ) -> t.Optional[exp.Expression]: - 69 this = super()._parse_table(schema=schema, alias_tokens=alias_tokens) + 17 + 18class ClickHouse(Dialect): + 19 normalize_functions = None + 20 null_ordering = "nulls_are_last" + 21 + 22 class Tokenizer(tokens.Tokenizer): + 23 COMMENTS = ["--", "#", "#!", ("/*", "*/")] + 24 IDENTIFIERS = ['"', "`"] + 25 + 26 KEYWORDS = { + 27 **tokens.Tokenizer.KEYWORDS, + 28 "ASOF": TokenType.ASOF, + 29 "GLOBAL": TokenType.GLOBAL, + 30 "DATETIME64": TokenType.DATETIME, + 31 "FINAL": TokenType.FINAL, + 32 "FLOAT32": TokenType.FLOAT, + 33 "FLOAT64": TokenType.DOUBLE, + 34 "INT16": TokenType.SMALLINT, + 35 "INT32": TokenType.INT, + 36 "INT64": TokenType.BIGINT, + 37 "INT8": TokenType.TINYINT, + 38 "TUPLE": TokenType.STRUCT, + 39 } + 40 + 41 class Parser(parser.Parser): + 42 FUNCTIONS = { + 43 **parser.Parser.FUNCTIONS, # type: ignore + 44 "EXPONENTIALTIMEDECAYEDAVG": lambda params, args: exp.ExponentialTimeDecayedAvg( + 45 this=seq_get(args, 0), + 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 70 - 71 if self._match(TokenType.FINAL): - 72 this = self.expression(exp.Final, this=this) - 73 - 74 return this - 75 - 76 def _parse_position(self, haystack_first: bool = False) -> exp.Expression: - 77 return super()._parse_position(haystack_first=True) - 78 - 79 # https://clickhouse.com/docs/en/sql-reference/statements/select/with/ - 80 def _parse_cte(self) -> exp.Expression: - 81 index = self._index - 82 try: - 83 # WITH <identifier> AS <subquery expression> - 84 return super()._parse_cte() - 85 except ParseError: - 86 # WITH <expression> AS <identifier> - 87 self._retreat(index) - 88 statement = self._parse_statement() - 89 - 90 if statement and isinstance(statement.this, exp.Alias): - 91 self.raise_error("Expected CTE to have alias") - 92 - 93 return self.expression(exp.CTE, this=statement, alias=statement and statement.this) - 94 - 95 class Generator(generator.Generator): - 96 STRUCT_DELIMITER = ("(", ")") - 97 - 98 TYPE_MAPPING = { - 99 **generator.Generator.TYPE_MAPPING, # type: ignore -100 exp.DataType.Type.NULLABLE: "Nullable", -101 exp.DataType.Type.DATETIME: "DateTime64", -102 exp.DataType.Type.MAP: "Map", -103 exp.DataType.Type.ARRAY: "Array", -104 exp.DataType.Type.STRUCT: "Tuple", -105 exp.DataType.Type.TINYINT: "Int8", -106 exp.DataType.Type.SMALLINT: "Int16", -107 exp.DataType.Type.INT: "Int32", -108 exp.DataType.Type.BIGINT: "Int64", -109 exp.DataType.Type.FLOAT: "Float32", -110 exp.DataType.Type.DOUBLE: "Float64", -111 } -112 -113 TRANSFORMS = { -114 **generator.Generator.TRANSFORMS, # type: ignore -115 exp.Array: inline_array_sql, -116 exp.StrPosition: lambda self, e: f"position({self.format_args(e.this, e.args.get('substr'), e.args.get('position'))})", -117 exp.Final: lambda self, e: f"{self.sql(e, 'this')} FINAL", -118 exp.Map: lambda self, e: _lower_func(var_map_sql(self, e)), -119 exp.VarMap: lambda self, e: _lower_func(var_map_sql(self, e)), -120 exp.Quantile: lambda self, e: f"quantile{self._param_args_sql(e, 'quantile', 'this')}", -121 exp.Quantiles: lambda self, e: f"quantiles{self._param_args_sql(e, 'parameters', 'expressions')}", -122 exp.QuantileIf: lambda self, e: f"quantileIf{self._param_args_sql(e, 'parameters', 'expressions')}", + 71 def _parse_in( + 72 self, this: t.Optional[exp.Expression], is_global: bool = False + 73 ) -> exp.Expression: + 74 this = super()._parse_in(this) + 75 this.set("is_global", is_global) + 76 return this + 77 + 78 def _parse_table( + 79 self, schema: bool = False, alias_tokens: t.Optional[t.Collection[TokenType]] = None + 80 ) -> t.Optional[exp.Expression]: + 81 this = super()._parse_table(schema=schema, alias_tokens=alias_tokens) + 82 + 83 if self._match(TokenType.FINAL): + 84 this = self.expression(exp.Final, this=this) + 85 + 86 return this + 87 + 88 def _parse_position(self, haystack_first: bool = False) -> exp.Expression: + 89 return super()._parse_position(haystack_first=True) + 90 + 91 # https://clickhouse.com/docs/en/sql-reference/statements/select/with/ + 92 def _parse_cte(self) -> exp.Expression: + 93 index = self._index + 94 try: + 95 # WITH <identifier> AS <subquery expression> + 96 return super()._parse_cte() + 97 except ParseError: + 98 # WITH <expression> AS <identifier> + 99 self._retreat(index) +100 statement = self._parse_statement() +101 +102 if statement and isinstance(statement.this, exp.Alias): +103 self.raise_error("Expected CTE to have alias") +104 +105 return self.expression(exp.CTE, this=statement, alias=statement and statement.this) +106 +107 class Generator(generator.Generator): +108 STRUCT_DELIMITER = ("(", ")") +109 +110 TYPE_MAPPING = { +111 **generator.Generator.TYPE_MAPPING, # type: ignore +112 exp.DataType.Type.NULLABLE: "Nullable", +113 exp.DataType.Type.DATETIME: "DateTime64", +114 exp.DataType.Type.MAP: "Map", +115 exp.DataType.Type.ARRAY: "Array", +116 exp.DataType.Type.STRUCT: "Tuple", +117 exp.DataType.Type.TINYINT: "Int8", +118 exp.DataType.Type.SMALLINT: "Int16", +119 exp.DataType.Type.INT: "Int32", +120 exp.DataType.Type.BIGINT: "Int64", +121 exp.DataType.Type.FLOAT: "Float32", +122 exp.DataType.Type.DOUBLE: "Float64", 123 } 124 -125 EXPLICIT_UNION = True -126 -127 def _param_args_sql( -128 self, expression: exp.Expression, params_name: str, args_name: str -129 ) -> str: -130 params = self.format_args(self.expressions(expression, params_name)) -131 args = self.format_args(self.expressions(expression, args_name)) -132 return f"({params})({args})" -133 -134 def cte_sql(self, expression: exp.CTE) -> str: -135 if isinstance(expression.this, exp.Alias): -136 return self.sql(expression, "this") -137 -138 return super().cte_sql(expression) +125 TRANSFORMS = { +126 **generator.Generator.TRANSFORMS, # type: ignore +127 exp.Array: inline_array_sql, +128 exp.ExponentialTimeDecayedAvg: lambda self, e: f"exponentialTimeDecayedAvg{self._param_args_sql(e, 'decay', ['this', 'time'])}", +129 exp.Final: lambda self, e: f"{self.sql(e, 'this')} FINAL", +130 exp.GroupUniqArray: lambda self, e: f"groupUniqArray{self._param_args_sql(e, 'size', 'this')}", +131 exp.Histogram: lambda self, e: f"histogram{self._param_args_sql(e, 'bins', 'this')}", +132 exp.Map: lambda self, e: _lower_func(var_map_sql(self, e)), +133 exp.Quantile: lambda self, e: f"quantile{self._param_args_sql(e, 'quantile', 'this')}", +134 exp.Quantiles: lambda self, e: f"quantiles{self._param_args_sql(e, 'parameters', 'expressions')}", +135 exp.QuantileIf: lambda self, e: f"quantileIf{self._param_args_sql(e, 'parameters', 'expressions')}", +136 exp.StrPosition: lambda self, e: f"position({self.format_args(e.this, e.args.get('substr'), e.args.get('position'))})", +137 exp.VarMap: lambda self, e: _lower_func(var_map_sql(self, e)), +138 } +139 +140 EXPLICIT_UNION = True +141 +142 def _param_args_sql( +143 self, +144 expression: exp.Expression, +145 param_names: str | t.List[str], +146 arg_names: str | t.List[str], +147 ) -> str: +148 params = self.format_args( +149 *( +150 arg +151 for name in ensure_list(param_names) +152 for arg in ensure_list(expression.args.get(name)) +153 ) +154 ) +155 args = self.format_args( +156 *( +157 arg +158 for name in ensure_list(arg_names) +159 for arg in ensure_list(expression.args.get(name)) +160 ) +161 ) +162 return f"({params})({args})" +163 +164 def cte_sql(self, expression: exp.CTE) -> str: +165 if isinstance(expression.this, exp.Alias): +166 return self.sql(expression, "this") +167 +168 return super().cte_sql(expression)
                  @@ -233,128 +263,157 @@
                  -
                   18class ClickHouse(Dialect):
                  - 19    normalize_functions = None
                  - 20    null_ordering = "nulls_are_last"
                  - 21
                  - 22    class Tokenizer(tokens.Tokenizer):
                  - 23        COMMENTS = ["--", "#", "#!", ("/*", "*/")]
                  - 24        IDENTIFIERS = ['"', "`"]
                  - 25
                  - 26        KEYWORDS = {
                  - 27            **tokens.Tokenizer.KEYWORDS,
                  - 28            "ASOF": TokenType.ASOF,
                  - 29            "GLOBAL": TokenType.GLOBAL,
                  - 30            "DATETIME64": TokenType.DATETIME,
                  - 31            "FINAL": TokenType.FINAL,
                  - 32            "FLOAT32": TokenType.FLOAT,
                  - 33            "FLOAT64": TokenType.DOUBLE,
                  - 34            "INT16": TokenType.SMALLINT,
                  - 35            "INT32": TokenType.INT,
                  - 36            "INT64": TokenType.BIGINT,
                  - 37            "INT8": TokenType.TINYINT,
                  - 38            "TUPLE": TokenType.STRUCT,
                  - 39        }
                  - 40
                  - 41    class Parser(parser.Parser):
                  - 42        FUNCTIONS = {
                  - 43            **parser.Parser.FUNCTIONS,  # type: ignore
                  - 44            "MAP": parse_var_map,
                  - 45            "QUANTILE": lambda params, args: exp.Quantile(this=args, quantile=params),
                  - 46            "QUANTILES": lambda params, args: exp.Quantiles(parameters=params, expressions=args),
                  - 47            "QUANTILEIF": lambda params, args: exp.QuantileIf(parameters=params, expressions=args),
                  - 48        }
                  - 49
                  - 50        RANGE_PARSERS = {
                  - 51            **parser.Parser.RANGE_PARSERS,
                  - 52            TokenType.GLOBAL: lambda self, this: self._match(TokenType.IN)
                  - 53            and self._parse_in(this, is_global=True),
                  - 54        }
                  - 55
                  - 56        JOIN_KINDS = {*parser.Parser.JOIN_KINDS, TokenType.ANY, TokenType.ASOF}  # type: ignore
                  - 57
                  - 58        TABLE_ALIAS_TOKENS = {*parser.Parser.TABLE_ALIAS_TOKENS} - {TokenType.ANY}  # type: ignore
                  - 59
                  - 60        def _parse_in(
                  - 61            self, this: t.Optional[exp.Expression], is_global: bool = False
                  - 62        ) -> exp.Expression:
                  - 63            this = super()._parse_in(this)
                  - 64            this.set("is_global", is_global)
                  - 65            return this
                  - 66
                  - 67        def _parse_table(
                  - 68            self, schema: bool = False, alias_tokens: t.Optional[t.Collection[TokenType]] = None
                  - 69        ) -> t.Optional[exp.Expression]:
                  - 70            this = super()._parse_table(schema=schema, alias_tokens=alias_tokens)
                  +            
                   19class ClickHouse(Dialect):
                  + 20    normalize_functions = None
                  + 21    null_ordering = "nulls_are_last"
                  + 22
                  + 23    class Tokenizer(tokens.Tokenizer):
                  + 24        COMMENTS = ["--", "#", "#!", ("/*", "*/")]
                  + 25        IDENTIFIERS = ['"', "`"]
                  + 26
                  + 27        KEYWORDS = {
                  + 28            **tokens.Tokenizer.KEYWORDS,
                  + 29            "ASOF": TokenType.ASOF,
                  + 30            "GLOBAL": TokenType.GLOBAL,
                  + 31            "DATETIME64": TokenType.DATETIME,
                  + 32            "FINAL": TokenType.FINAL,
                  + 33            "FLOAT32": TokenType.FLOAT,
                  + 34            "FLOAT64": TokenType.DOUBLE,
                  + 35            "INT16": TokenType.SMALLINT,
                  + 36            "INT32": TokenType.INT,
                  + 37            "INT64": TokenType.BIGINT,
                  + 38            "INT8": TokenType.TINYINT,
                  + 39            "TUPLE": TokenType.STRUCT,
                  + 40        }
                  + 41
                  + 42    class Parser(parser.Parser):
                  + 43        FUNCTIONS = {
                  + 44            **parser.Parser.FUNCTIONS,  # type: ignore
                  + 45            "EXPONENTIALTIMEDECAYEDAVG": lambda params, args: exp.ExponentialTimeDecayedAvg(
                  + 46                this=seq_get(args, 0),
                  + 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
                    71
                  - 72            if self._match(TokenType.FINAL):
                  - 73                this = self.expression(exp.Final, this=this)
                  - 74
                  - 75            return this
                  - 76
                  - 77        def _parse_position(self, haystack_first: bool = False) -> exp.Expression:
                  - 78            return super()._parse_position(haystack_first=True)
                  - 79
                  - 80        # https://clickhouse.com/docs/en/sql-reference/statements/select/with/
                  - 81        def _parse_cte(self) -> exp.Expression:
                  - 82            index = self._index
                  - 83            try:
                  - 84                # WITH <identifier> AS <subquery expression>
                  - 85                return super()._parse_cte()
                  - 86            except ParseError:
                  - 87                # WITH <expression> AS <identifier>
                  - 88                self._retreat(index)
                  - 89                statement = self._parse_statement()
                  - 90
                  - 91                if statement and isinstance(statement.this, exp.Alias):
                  - 92                    self.raise_error("Expected CTE to have alias")
                  - 93
                  - 94                return self.expression(exp.CTE, this=statement, alias=statement and statement.this)
                  - 95
                  - 96    class Generator(generator.Generator):
                  - 97        STRUCT_DELIMITER = ("(", ")")
                  - 98
                  - 99        TYPE_MAPPING = {
                  -100            **generator.Generator.TYPE_MAPPING,  # type: ignore
                  -101            exp.DataType.Type.NULLABLE: "Nullable",
                  -102            exp.DataType.Type.DATETIME: "DateTime64",
                  -103            exp.DataType.Type.MAP: "Map",
                  -104            exp.DataType.Type.ARRAY: "Array",
                  -105            exp.DataType.Type.STRUCT: "Tuple",
                  -106            exp.DataType.Type.TINYINT: "Int8",
                  -107            exp.DataType.Type.SMALLINT: "Int16",
                  -108            exp.DataType.Type.INT: "Int32",
                  -109            exp.DataType.Type.BIGINT: "Int64",
                  -110            exp.DataType.Type.FLOAT: "Float32",
                  -111            exp.DataType.Type.DOUBLE: "Float64",
                  -112        }
                  -113
                  -114        TRANSFORMS = {
                  -115            **generator.Generator.TRANSFORMS,  # type: ignore
                  -116            exp.Array: inline_array_sql,
                  -117            exp.StrPosition: lambda self, e: f"position({self.format_args(e.this, e.args.get('substr'), e.args.get('position'))})",
                  -118            exp.Final: lambda self, e: f"{self.sql(e, 'this')} FINAL",
                  -119            exp.Map: lambda self, e: _lower_func(var_map_sql(self, e)),
                  -120            exp.VarMap: lambda self, e: _lower_func(var_map_sql(self, e)),
                  -121            exp.Quantile: lambda self, e: f"quantile{self._param_args_sql(e, 'quantile', 'this')}",
                  -122            exp.Quantiles: lambda self, e: f"quantiles{self._param_args_sql(e, 'parameters', 'expressions')}",
                  -123            exp.QuantileIf: lambda self, e: f"quantileIf{self._param_args_sql(e, 'parameters', 'expressions')}",
                  + 72        def _parse_in(
                  + 73            self, this: t.Optional[exp.Expression], is_global: bool = False
                  + 74        ) -> exp.Expression:
                  + 75            this = super()._parse_in(this)
                  + 76            this.set("is_global", is_global)
                  + 77            return this
                  + 78
                  + 79        def _parse_table(
                  + 80            self, schema: bool = False, alias_tokens: t.Optional[t.Collection[TokenType]] = None
                  + 81        ) -> t.Optional[exp.Expression]:
                  + 82            this = super()._parse_table(schema=schema, alias_tokens=alias_tokens)
                  + 83
                  + 84            if self._match(TokenType.FINAL):
                  + 85                this = self.expression(exp.Final, this=this)
                  + 86
                  + 87            return this
                  + 88
                  + 89        def _parse_position(self, haystack_first: bool = False) -> exp.Expression:
                  + 90            return super()._parse_position(haystack_first=True)
                  + 91
                  + 92        # https://clickhouse.com/docs/en/sql-reference/statements/select/with/
                  + 93        def _parse_cte(self) -> exp.Expression:
                  + 94            index = self._index
                  + 95            try:
                  + 96                # WITH <identifier> AS <subquery expression>
                  + 97                return super()._parse_cte()
                  + 98            except ParseError:
                  + 99                # WITH <expression> AS <identifier>
                  +100                self._retreat(index)
                  +101                statement = self._parse_statement()
                  +102
                  +103                if statement and isinstance(statement.this, exp.Alias):
                  +104                    self.raise_error("Expected CTE to have alias")
                  +105
                  +106                return self.expression(exp.CTE, this=statement, alias=statement and statement.this)
                  +107
                  +108    class Generator(generator.Generator):
                  +109        STRUCT_DELIMITER = ("(", ")")
                  +110
                  +111        TYPE_MAPPING = {
                  +112            **generator.Generator.TYPE_MAPPING,  # type: ignore
                  +113            exp.DataType.Type.NULLABLE: "Nullable",
                  +114            exp.DataType.Type.DATETIME: "DateTime64",
                  +115            exp.DataType.Type.MAP: "Map",
                  +116            exp.DataType.Type.ARRAY: "Array",
                  +117            exp.DataType.Type.STRUCT: "Tuple",
                  +118            exp.DataType.Type.TINYINT: "Int8",
                  +119            exp.DataType.Type.SMALLINT: "Int16",
                  +120            exp.DataType.Type.INT: "Int32",
                  +121            exp.DataType.Type.BIGINT: "Int64",
                  +122            exp.DataType.Type.FLOAT: "Float32",
                  +123            exp.DataType.Type.DOUBLE: "Float64",
                   124        }
                   125
                  -126        EXPLICIT_UNION = True
                  -127
                  -128        def _param_args_sql(
                  -129            self, expression: exp.Expression, params_name: str, args_name: str
                  -130        ) -> str:
                  -131            params = self.format_args(self.expressions(expression, params_name))
                  -132            args = self.format_args(self.expressions(expression, args_name))
                  -133            return f"({params})({args})"
                  -134
                  -135        def cte_sql(self, expression: exp.CTE) -> str:
                  -136            if isinstance(expression.this, exp.Alias):
                  -137                return self.sql(expression, "this")
                  -138
                  -139            return super().cte_sql(expression)
                  +126        TRANSFORMS = {
                  +127            **generator.Generator.TRANSFORMS,  # type: ignore
                  +128            exp.Array: inline_array_sql,
                  +129            exp.ExponentialTimeDecayedAvg: lambda self, e: f"exponentialTimeDecayedAvg{self._param_args_sql(e, 'decay', ['this', 'time'])}",
                  +130            exp.Final: lambda self, e: f"{self.sql(e, 'this')} FINAL",
                  +131            exp.GroupUniqArray: lambda self, e: f"groupUniqArray{self._param_args_sql(e, 'size', 'this')}",
                  +132            exp.Histogram: lambda self, e: f"histogram{self._param_args_sql(e, 'bins', 'this')}",
                  +133            exp.Map: lambda self, e: _lower_func(var_map_sql(self, e)),
                  +134            exp.Quantile: lambda self, e: f"quantile{self._param_args_sql(e, 'quantile', 'this')}",
                  +135            exp.Quantiles: lambda self, e: f"quantiles{self._param_args_sql(e, 'parameters', 'expressions')}",
                  +136            exp.QuantileIf: lambda self, e: f"quantileIf{self._param_args_sql(e, 'parameters', 'expressions')}",
                  +137            exp.StrPosition: lambda self, e: f"position({self.format_args(e.this, e.args.get('substr'), e.args.get('position'))})",
                  +138            exp.VarMap: lambda self, e: _lower_func(var_map_sql(self, e)),
                  +139        }
                  +140
                  +141        EXPLICIT_UNION = True
                  +142
                  +143        def _param_args_sql(
                  +144            self,
                  +145            expression: exp.Expression,
                  +146            param_names: str | t.List[str],
                  +147            arg_names: str | t.List[str],
                  +148        ) -> str:
                  +149            params = self.format_args(
                  +150                *(
                  +151                    arg
                  +152                    for name in ensure_list(param_names)
                  +153                    for arg in ensure_list(expression.args.get(name))
                  +154                )
                  +155            )
                  +156            args = self.format_args(
                  +157                *(
                  +158                    arg
                  +159                    for name in ensure_list(arg_names)
                  +160                    for arg in ensure_list(expression.args.get(name))
                  +161                )
                  +162            )
                  +163            return f"({params})({args})"
                  +164
                  +165        def cte_sql(self, expression: exp.CTE) -> str:
                  +166            if isinstance(expression.this, exp.Alias):
                  +167                return self.sql(expression, "this")
                  +168
                  +169            return super().cte_sql(expression)
                   
                  @@ -389,24 +448,24 @@
                  -
                  22    class Tokenizer(tokens.Tokenizer):
                  -23        COMMENTS = ["--", "#", "#!", ("/*", "*/")]
                  -24        IDENTIFIERS = ['"', "`"]
                  -25
                  -26        KEYWORDS = {
                  -27            **tokens.Tokenizer.KEYWORDS,
                  -28            "ASOF": TokenType.ASOF,
                  -29            "GLOBAL": TokenType.GLOBAL,
                  -30            "DATETIME64": TokenType.DATETIME,
                  -31            "FINAL": TokenType.FINAL,
                  -32            "FLOAT32": TokenType.FLOAT,
                  -33            "FLOAT64": TokenType.DOUBLE,
                  -34            "INT16": TokenType.SMALLINT,
                  -35            "INT32": TokenType.INT,
                  -36            "INT64": TokenType.BIGINT,
                  -37            "INT8": TokenType.TINYINT,
                  -38            "TUPLE": TokenType.STRUCT,
                  -39        }
                  +            
                  23    class Tokenizer(tokens.Tokenizer):
                  +24        COMMENTS = ["--", "#", "#!", ("/*", "*/")]
                  +25        IDENTIFIERS = ['"', "`"]
                  +26
                  +27        KEYWORDS = {
                  +28            **tokens.Tokenizer.KEYWORDS,
                  +29            "ASOF": TokenType.ASOF,
                  +30            "GLOBAL": TokenType.GLOBAL,
                  +31            "DATETIME64": TokenType.DATETIME,
                  +32            "FINAL": TokenType.FINAL,
                  +33            "FLOAT32": TokenType.FLOAT,
                  +34            "FLOAT64": TokenType.DOUBLE,
                  +35            "INT16": TokenType.SMALLINT,
                  +36            "INT32": TokenType.INT,
                  +37            "INT64": TokenType.BIGINT,
                  +38            "INT8": TokenType.TINYINT,
                  +39            "TUPLE": TokenType.STRUCT,
                  +40        }
                   
                  @@ -434,60 +493,71 @@
                  -
                  41    class Parser(parser.Parser):
                  -42        FUNCTIONS = {
                  -43            **parser.Parser.FUNCTIONS,  # type: ignore
                  -44            "MAP": parse_var_map,
                  -45            "QUANTILE": lambda params, args: exp.Quantile(this=args, quantile=params),
                  -46            "QUANTILES": lambda params, args: exp.Quantiles(parameters=params, expressions=args),
                  -47            "QUANTILEIF": lambda params, args: exp.QuantileIf(parameters=params, expressions=args),
                  -48        }
                  -49
                  -50        RANGE_PARSERS = {
                  -51            **parser.Parser.RANGE_PARSERS,
                  -52            TokenType.GLOBAL: lambda self, this: self._match(TokenType.IN)
                  -53            and self._parse_in(this, is_global=True),
                  -54        }
                  -55
                  -56        JOIN_KINDS = {*parser.Parser.JOIN_KINDS, TokenType.ANY, TokenType.ASOF}  # type: ignore
                  -57
                  -58        TABLE_ALIAS_TOKENS = {*parser.Parser.TABLE_ALIAS_TOKENS} - {TokenType.ANY}  # type: ignore
                  -59
                  -60        def _parse_in(
                  -61            self, this: t.Optional[exp.Expression], is_global: bool = False
                  -62        ) -> exp.Expression:
                  -63            this = super()._parse_in(this)
                  -64            this.set("is_global", is_global)
                  -65            return this
                  -66
                  -67        def _parse_table(
                  -68            self, schema: bool = False, alias_tokens: t.Optional[t.Collection[TokenType]] = None
                  -69        ) -> t.Optional[exp.Expression]:
                  -70            this = super()._parse_table(schema=schema, alias_tokens=alias_tokens)
                  -71
                  -72            if self._match(TokenType.FINAL):
                  -73                this = self.expression(exp.Final, this=this)
                  -74
                  -75            return this
                  -76
                  -77        def _parse_position(self, haystack_first: bool = False) -> exp.Expression:
                  -78            return super()._parse_position(haystack_first=True)
                  -79
                  -80        # https://clickhouse.com/docs/en/sql-reference/statements/select/with/
                  -81        def _parse_cte(self) -> exp.Expression:
                  -82            index = self._index
                  -83            try:
                  -84                # WITH <identifier> AS <subquery expression>
                  -85                return super()._parse_cte()
                  -86            except ParseError:
                  -87                # WITH <expression> AS <identifier>
                  -88                self._retreat(index)
                  -89                statement = self._parse_statement()
                  -90
                  -91                if statement and isinstance(statement.this, exp.Alias):
                  -92                    self.raise_error("Expected CTE to have alias")
                  -93
                  -94                return self.expression(exp.CTE, this=statement, alias=statement and statement.this)
                  +            
                   42    class Parser(parser.Parser):
                  + 43        FUNCTIONS = {
                  + 44            **parser.Parser.FUNCTIONS,  # type: ignore
                  + 45            "EXPONENTIALTIMEDECAYEDAVG": lambda params, args: exp.ExponentialTimeDecayedAvg(
                  + 46                this=seq_get(args, 0),
                  + 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
                  + 71
                  + 72        def _parse_in(
                  + 73            self, this: t.Optional[exp.Expression], is_global: bool = False
                  + 74        ) -> exp.Expression:
                  + 75            this = super()._parse_in(this)
                  + 76            this.set("is_global", is_global)
                  + 77            return this
                  + 78
                  + 79        def _parse_table(
                  + 80            self, schema: bool = False, alias_tokens: t.Optional[t.Collection[TokenType]] = None
                  + 81        ) -> t.Optional[exp.Expression]:
                  + 82            this = super()._parse_table(schema=schema, alias_tokens=alias_tokens)
                  + 83
                  + 84            if self._match(TokenType.FINAL):
                  + 85                this = self.expression(exp.Final, this=this)
                  + 86
                  + 87            return this
                  + 88
                  + 89        def _parse_position(self, haystack_first: bool = False) -> exp.Expression:
                  + 90            return super()._parse_position(haystack_first=True)
                  + 91
                  + 92        # https://clickhouse.com/docs/en/sql-reference/statements/select/with/
                  + 93        def _parse_cte(self) -> exp.Expression:
                  + 94            index = self._index
                  + 95            try:
                  + 96                # WITH <identifier> AS <subquery expression>
                  + 97                return super()._parse_cte()
                  + 98            except ParseError:
                  + 99                # WITH <expression> AS <identifier>
                  +100                self._retreat(index)
                  +101                statement = self._parse_statement()
                  +102
                  +103                if statement and isinstance(statement.this, exp.Alias):
                  +104                    self.raise_error("Expected CTE to have alias")
                  +105
                  +106                return self.expression(exp.CTE, this=statement, alias=statement and statement.this)
                   
                  @@ -544,50 +614,68 @@ Default: "nulls_are_small"
                  -
                   96    class Generator(generator.Generator):
                  - 97        STRUCT_DELIMITER = ("(", ")")
                  - 98
                  - 99        TYPE_MAPPING = {
                  -100            **generator.Generator.TYPE_MAPPING,  # type: ignore
                  -101            exp.DataType.Type.NULLABLE: "Nullable",
                  -102            exp.DataType.Type.DATETIME: "DateTime64",
                  -103            exp.DataType.Type.MAP: "Map",
                  -104            exp.DataType.Type.ARRAY: "Array",
                  -105            exp.DataType.Type.STRUCT: "Tuple",
                  -106            exp.DataType.Type.TINYINT: "Int8",
                  -107            exp.DataType.Type.SMALLINT: "Int16",
                  -108            exp.DataType.Type.INT: "Int32",
                  -109            exp.DataType.Type.BIGINT: "Int64",
                  -110            exp.DataType.Type.FLOAT: "Float32",
                  -111            exp.DataType.Type.DOUBLE: "Float64",
                  -112        }
                  -113
                  -114        TRANSFORMS = {
                  -115            **generator.Generator.TRANSFORMS,  # type: ignore
                  -116            exp.Array: inline_array_sql,
                  -117            exp.StrPosition: lambda self, e: f"position({self.format_args(e.this, e.args.get('substr'), e.args.get('position'))})",
                  -118            exp.Final: lambda self, e: f"{self.sql(e, 'this')} FINAL",
                  -119            exp.Map: lambda self, e: _lower_func(var_map_sql(self, e)),
                  -120            exp.VarMap: lambda self, e: _lower_func(var_map_sql(self, e)),
                  -121            exp.Quantile: lambda self, e: f"quantile{self._param_args_sql(e, 'quantile', 'this')}",
                  -122            exp.Quantiles: lambda self, e: f"quantiles{self._param_args_sql(e, 'parameters', 'expressions')}",
                  -123            exp.QuantileIf: lambda self, e: f"quantileIf{self._param_args_sql(e, 'parameters', 'expressions')}",
                  +            
                  108    class Generator(generator.Generator):
                  +109        STRUCT_DELIMITER = ("(", ")")
                  +110
                  +111        TYPE_MAPPING = {
                  +112            **generator.Generator.TYPE_MAPPING,  # type: ignore
                  +113            exp.DataType.Type.NULLABLE: "Nullable",
                  +114            exp.DataType.Type.DATETIME: "DateTime64",
                  +115            exp.DataType.Type.MAP: "Map",
                  +116            exp.DataType.Type.ARRAY: "Array",
                  +117            exp.DataType.Type.STRUCT: "Tuple",
                  +118            exp.DataType.Type.TINYINT: "Int8",
                  +119            exp.DataType.Type.SMALLINT: "Int16",
                  +120            exp.DataType.Type.INT: "Int32",
                  +121            exp.DataType.Type.BIGINT: "Int64",
                  +122            exp.DataType.Type.FLOAT: "Float32",
                  +123            exp.DataType.Type.DOUBLE: "Float64",
                   124        }
                   125
                  -126        EXPLICIT_UNION = True
                  -127
                  -128        def _param_args_sql(
                  -129            self, expression: exp.Expression, params_name: str, args_name: str
                  -130        ) -> str:
                  -131            params = self.format_args(self.expressions(expression, params_name))
                  -132            args = self.format_args(self.expressions(expression, args_name))
                  -133            return f"({params})({args})"
                  -134
                  -135        def cte_sql(self, expression: exp.CTE) -> str:
                  -136            if isinstance(expression.this, exp.Alias):
                  -137                return self.sql(expression, "this")
                  -138
                  -139            return super().cte_sql(expression)
                  +126        TRANSFORMS = {
                  +127            **generator.Generator.TRANSFORMS,  # type: ignore
                  +128            exp.Array: inline_array_sql,
                  +129            exp.ExponentialTimeDecayedAvg: lambda self, e: f"exponentialTimeDecayedAvg{self._param_args_sql(e, 'decay', ['this', 'time'])}",
                  +130            exp.Final: lambda self, e: f"{self.sql(e, 'this')} FINAL",
                  +131            exp.GroupUniqArray: lambda self, e: f"groupUniqArray{self._param_args_sql(e, 'size', 'this')}",
                  +132            exp.Histogram: lambda self, e: f"histogram{self._param_args_sql(e, 'bins', 'this')}",
                  +133            exp.Map: lambda self, e: _lower_func(var_map_sql(self, e)),
                  +134            exp.Quantile: lambda self, e: f"quantile{self._param_args_sql(e, 'quantile', 'this')}",
                  +135            exp.Quantiles: lambda self, e: f"quantiles{self._param_args_sql(e, 'parameters', 'expressions')}",
                  +136            exp.QuantileIf: lambda self, e: f"quantileIf{self._param_args_sql(e, 'parameters', 'expressions')}",
                  +137            exp.StrPosition: lambda self, e: f"position({self.format_args(e.this, e.args.get('substr'), e.args.get('position'))})",
                  +138            exp.VarMap: lambda self, e: _lower_func(var_map_sql(self, e)),
                  +139        }
                  +140
                  +141        EXPLICIT_UNION = True
                  +142
                  +143        def _param_args_sql(
                  +144            self,
                  +145            expression: exp.Expression,
                  +146            param_names: str | t.List[str],
                  +147            arg_names: str | t.List[str],
                  +148        ) -> str:
                  +149            params = self.format_args(
                  +150                *(
                  +151                    arg
                  +152                    for name in ensure_list(param_names)
                  +153                    for arg in ensure_list(expression.args.get(name))
                  +154                )
                  +155            )
                  +156            args = self.format_args(
                  +157                *(
                  +158                    arg
                  +159                    for name in ensure_list(arg_names)
                  +160                    for arg in ensure_list(expression.args.get(name))
                  +161                )
                  +162            )
                  +163            return f"({params})({args})"
                  +164
                  +165        def cte_sql(self, expression: exp.CTE) -> str:
                  +166            if isinstance(expression.this, exp.Alias):
                  +167                return self.sql(expression, "this")
                  +168
                  +169            return super().cte_sql(expression)
                   
                  @@ -646,11 +734,11 @@ Default: True
                  -
                  135        def cte_sql(self, expression: exp.CTE) -> str:
                  -136            if isinstance(expression.this, exp.Alias):
                  -137                return self.sql(expression, "this")
                  -138
                  -139            return super().cte_sql(expression)
                  +            
                  165        def cte_sql(self, expression: exp.CTE) -> str:
                  +166            if isinstance(expression.this, exp.Alias):
                  +167                return self.sql(expression, "this")
                  +168
                  +169            return super().cte_sql(expression)
                   
                  @@ -748,6 +836,7 @@ Default: True
                  offset_sql
                  setitem_sql
                  set_sql
                  +
                  pragma_sql
                  lock_sql
                  literal_sql
                  loaddata_sql
                  @@ -792,6 +881,8 @@ Default: True
                  primarykey_sql
                  unique_sql
                  if_sql
                  +
                  jsonkeyvalue_sql
                  +
                  jsonobject_sql
                  in_sql
                  in_unnest_op
                  interval_sql
                  diff --git a/docs/sqlglot/dialects/databricks.html b/docs/sqlglot/dialects/databricks.html index b10aa9a..2489f93 100644 --- a/docs/sqlglot/dialects/databricks.html +++ b/docs/sqlglot/dialects/databricks.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.databricks API documentation @@ -28,8 +28,8 @@ -

                  API Documentation

                  -
                    +

                    API Documentation

                    +
                    • Databricks
                        @@ -395,6 +395,7 @@ Default: True
                        offset_sql
                        setitem_sql
                        set_sql
                        +
                        pragma_sql
                        lock_sql
                        literal_sql
                        loaddata_sql
                        @@ -439,6 +440,8 @@ Default: True
                        primarykey_sql
                        unique_sql
                        if_sql
                        +
                        jsonkeyvalue_sql
                        +
                        jsonobject_sql
                        in_sql
                        in_unnest_op
                        interval_sql
                        diff --git a/docs/sqlglot/dialects/dialect.html b/docs/sqlglot/dialects/dialect.html index 76c8403..dce43fd 100644 --- a/docs/sqlglot/dialects/dialect.html +++ b/docs/sqlglot/dialects/dialect.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.dialect API documentation @@ -28,8 +28,8 @@ -

                        API Documentation

                        -
                          +

                          API Documentation

                          +
                          • Dialects
                              @@ -210,6 +210,9 @@
                            • min_or_least
                            • +
                            • + max_or_greatest +
                            • count_if_to_sum
                            • @@ -677,46 +680,51 @@ 430 return rename_func(name)(self, expression) 431 432 -433def count_if_to_sum(self: Generator, expression: exp.CountIf) -> str: -434 cond = expression.this -435 -436 if isinstance(expression.this, exp.Distinct): -437 cond = expression.this.expressions[0] -438 self.unsupported("DISTINCT is not supported when converting COUNT_IF to SUM") -439 -440 return self.func("sum", exp.func("if", cond, 1, 0)) -441 -442 -443def trim_sql(self: Generator, expression: exp.Trim) -> str: -444 target = self.sql(expression, "this") -445 trim_type = self.sql(expression, "position") -446 remove_chars = self.sql(expression, "expression") -447 collation = self.sql(expression, "collation") -448 -449 # Use TRIM/LTRIM/RTRIM syntax if the expression isn't database-specific -450 if not remove_chars and not collation: -451 return self.trim_sql(expression) -452 -453 trim_type = f"{trim_type} " if trim_type else "" -454 remove_chars = f"{remove_chars} " if remove_chars else "" -455 from_part = "FROM " if trim_type or remove_chars else "" -456 collation = f" COLLATE {collation}" if collation else "" -457 return f"TRIM({trim_type}{remove_chars}{from_part}{target}{collation})" -458 -459 -460def str_to_time_sql(self, expression: exp.Expression) -> str: -461 return self.func("STRPTIME", expression.this, self.format_time(expression)) -462 +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 +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)) +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") +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})" 463 -464def ts_or_ds_to_date_sql(dialect: str) -> t.Callable: -465 def _ts_or_ds_to_date_sql(self: Generator, expression: exp.TsOrDsToDate) -> str: -466 _dialect = Dialect.get_or_raise(dialect) -467 time_format = self.format_time(expression) -468 if time_format and time_format not in (_dialect.time_format, _dialect.date_format): -469 return f"CAST({str_to_time_sql(self, expression)} AS DATE)" -470 return f"CAST({self.sql(expression, 'this')} AS DATE)" -471 -472 return _ts_or_ds_to_date_sql +464 +465def str_to_time_sql(self, expression: exp.Expression) -> str: +466 return self.func("STRPTIME", expression.this, self.format_time(expression)) +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
                  @@ -2062,6 +2070,26 @@ columns are removed from the create statement.

                  +
        +
        + +
        + + def + max_or_greatest( self: sqlglot.generator.Generator, expression: sqlglot.expressions.Max) -> str: + + + +
        + +
        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)
        +
        + + + +
        @@ -2074,14 +2102,14 @@ columns are removed from the create statement.

        -
        434def count_if_to_sum(self: Generator, expression: exp.CountIf) -> str:
        -435    cond = expression.this
        -436
        -437    if isinstance(expression.this, exp.Distinct):
        -438        cond = expression.this.expressions[0]
        -439        self.unsupported("DISTINCT is not supported when converting COUNT_IF to SUM")
        -440
        -441    return self.func("sum", exp.func("if", cond, 1, 0))
        +            
        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))
         
        @@ -2099,21 +2127,21 @@ columns are removed from the create statement.

        -
        444def trim_sql(self: Generator, expression: exp.Trim) -> str:
        -445    target = self.sql(expression, "this")
        -446    trim_type = self.sql(expression, "position")
        -447    remove_chars = self.sql(expression, "expression")
        -448    collation = self.sql(expression, "collation")
        -449
        -450    # Use TRIM/LTRIM/RTRIM syntax if the expression isn't database-specific
        -451    if not remove_chars and not collation:
        -452        return self.trim_sql(expression)
        -453
        -454    trim_type = f"{trim_type} " if trim_type else ""
        -455    remove_chars = f"{remove_chars} " if remove_chars else ""
        -456    from_part = "FROM " if trim_type or remove_chars else ""
        -457    collation = f" COLLATE {collation}" if collation else ""
        -458    return f"TRIM({trim_type}{remove_chars}{from_part}{target}{collation})"
        +            
        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})"
         
        @@ -2131,8 +2159,8 @@ columns are removed from the create statement.

        -
        461def str_to_time_sql(self, expression: exp.Expression) -> str:
        -462    return self.func("STRPTIME", expression.this, self.format_time(expression))
        +            
        466def str_to_time_sql(self, expression: exp.Expression) -> str:
        +467    return self.func("STRPTIME", expression.this, self.format_time(expression))
         
        @@ -2150,15 +2178,15 @@ columns are removed from the create statement.

        -
        465def ts_or_ds_to_date_sql(dialect: str) -> t.Callable:
        -466    def _ts_or_ds_to_date_sql(self: Generator, expression: exp.TsOrDsToDate) -> str:
        -467        _dialect = Dialect.get_or_raise(dialect)
        -468        time_format = self.format_time(expression)
        -469        if time_format and time_format not in (_dialect.time_format, _dialect.date_format):
        -470            return f"CAST({str_to_time_sql(self, expression)} AS DATE)"
        -471        return f"CAST({self.sql(expression, 'this')} AS DATE)"
        -472
        -473    return _ts_or_ds_to_date_sql
        +            
        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
         
        diff --git a/docs/sqlglot/dialects/drill.html b/docs/sqlglot/dialects/drill.html index 3e3fb3c..e7c25e1 100644 --- a/docs/sqlglot/dialects/drill.html +++ b/docs/sqlglot/dialects/drill.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.drill API documentation @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • Drill
              @@ -82,161 +82,160 @@
                1from __future__ import annotations
                 2
              -  3import re
              -  4import typing as t
              -  5
              -  6from sqlglot import exp, generator, parser, tokens
              -  7from sqlglot.dialects.dialect import (
              -  8    Dialect,
              -  9    create_with_partitions_sql,
              - 10    datestrtodate_sql,
              - 11    format_time_lambda,
              - 12    no_trycast_sql,
              - 13    rename_func,
              - 14    str_position_sql,
              - 15    timestrtotime_sql,
              - 16    ts_or_ds_to_date_sql,
              - 17)
              +  3import typing as t
              +  4
              +  5from sqlglot import exp, generator, parser, tokens
              +  6from sqlglot.dialects.dialect import (
              +  7    Dialect,
              +  8    create_with_partitions_sql,
              +  9    datestrtodate_sql,
              + 10    format_time_lambda,
              + 11    no_trycast_sql,
              + 12    rename_func,
              + 13    str_position_sql,
              + 14    timestrtotime_sql,
              + 15    ts_or_ds_to_date_sql,
              + 16)
              + 17
                18
              - 19
              - 20def _str_to_time_sql(self: generator.Generator, expression: exp.TsOrDsToDate) -> str:
              - 21    return f"STRPTIME({self.sql(expression, 'this')}, {self.format_time(expression)})"
              + 19def _str_to_time_sql(self: generator.Generator, expression: exp.TsOrDsToDate) -> str:
              + 20    return f"STRPTIME({self.sql(expression, 'this')}, {self.format_time(expression)})"
              + 21
                22
              - 23
              - 24def _ts_or_ds_to_date_sql(self: generator.Generator, expression: exp.TsOrDsToDate) -> str:
              - 25    time_format = self.format_time(expression)
              - 26    if time_format and time_format not in (Drill.time_format, Drill.date_format):
              - 27        return f"CAST({_str_to_time_sql(self, expression)} AS DATE)"
              - 28    return f"CAST({self.sql(expression, 'this')} AS DATE)"
              + 23def _ts_or_ds_to_date_sql(self: generator.Generator, expression: exp.TsOrDsToDate) -> str:
              + 24    time_format = self.format_time(expression)
              + 25    if time_format and time_format not in (Drill.time_format, Drill.date_format):
              + 26        return f"CAST({_str_to_time_sql(self, expression)} AS DATE)"
              + 27    return f"CAST({self.sql(expression, 'this')} AS DATE)"
              + 28
                29
              - 30
              - 31def _date_add_sql(kind: str) -> t.Callable[[generator.Generator, exp.DateAdd | exp.DateSub], str]:
              - 32    def func(self: generator.Generator, expression: exp.DateAdd | exp.DateSub) -> str:
              - 33        this = self.sql(expression, "this")
              - 34        unit = exp.Var(this=expression.text("unit").upper() or "DAY")
              - 35        return (
              - 36            f"DATE_{kind}({this}, {self.sql(exp.Interval(this=expression.expression, unit=unit))})"
              - 37        )
              - 38
              - 39    return func
              + 30def _date_add_sql(kind: str) -> t.Callable[[generator.Generator, exp.DateAdd | exp.DateSub], str]:
              + 31    def func(self: generator.Generator, expression: exp.DateAdd | exp.DateSub) -> str:
              + 32        this = self.sql(expression, "this")
              + 33        unit = exp.Var(this=expression.text("unit").upper() or "DAY")
              + 34        return (
              + 35            f"DATE_{kind}({this}, {self.sql(exp.Interval(this=expression.expression, unit=unit))})"
              + 36        )
              + 37
              + 38    return func
              + 39
                40
              - 41
              - 42def _str_to_date(self: generator.Generator, expression: exp.StrToDate) -> str:
              - 43    this = self.sql(expression, "this")
              - 44    time_format = self.format_time(expression)
              - 45    if time_format == Drill.date_format:
              - 46        return f"CAST({this} AS DATE)"
              - 47    return f"TO_DATE({this}, {time_format})"
              + 41def _str_to_date(self: generator.Generator, expression: exp.StrToDate) -> str:
              + 42    this = self.sql(expression, "this")
              + 43    time_format = self.format_time(expression)
              + 44    if time_format == Drill.date_format:
              + 45        return f"CAST({this} AS DATE)"
              + 46    return f"TO_DATE({this}, {time_format})"
              + 47
                48
              - 49
              - 50class Drill(Dialect):
              - 51    normalize_functions = None
              - 52    null_ordering = "nulls_are_last"
              - 53    date_format = "'yyyy-MM-dd'"
              - 54    dateint_format = "'yyyyMMdd'"
              - 55    time_format = "'yyyy-MM-dd HH:mm:ss'"
              - 56
              - 57    time_mapping = {
              - 58        "y": "%Y",
              - 59        "Y": "%Y",
              - 60        "YYYY": "%Y",
              - 61        "yyyy": "%Y",
              - 62        "YY": "%y",
              - 63        "yy": "%y",
              - 64        "MMMM": "%B",
              - 65        "MMM": "%b",
              - 66        "MM": "%m",
              - 67        "M": "%-m",
              - 68        "dd": "%d",
              - 69        "d": "%-d",
              - 70        "HH": "%H",
              - 71        "H": "%-H",
              - 72        "hh": "%I",
              - 73        "h": "%-I",
              - 74        "mm": "%M",
              - 75        "m": "%-M",
              - 76        "ss": "%S",
              - 77        "s": "%-S",
              - 78        "SSSSSS": "%f",
              - 79        "a": "%p",
              - 80        "DD": "%j",
              - 81        "D": "%-j",
              - 82        "E": "%a",
              - 83        "EE": "%a",
              - 84        "EEE": "%a",
              - 85        "EEEE": "%A",
              - 86        "''T''": "T",
              - 87    }
              - 88
              - 89    class Tokenizer(tokens.Tokenizer):
              - 90        QUOTES = ["'"]
              - 91        IDENTIFIERS = ["`"]
              - 92        STRING_ESCAPES = ["\\"]
              - 93        ENCODE = "utf-8"
              - 94
              - 95    class Parser(parser.Parser):
              - 96        STRICT_CAST = False
              - 97
              - 98        FUNCTIONS = {
              - 99            **parser.Parser.FUNCTIONS,  # type: ignore
              -100            "DATE_FORMAT": format_time_lambda(exp.TimeToStr, "drill"),
              -101            "TO_TIMESTAMP": exp.TimeStrToTime.from_arg_list,
              -102            "TO_CHAR": format_time_lambda(exp.TimeToStr, "drill"),
              -103        }
              -104
              -105    class Generator(generator.Generator):
              -106        TYPE_MAPPING = {
              -107            **generator.Generator.TYPE_MAPPING,  # type: ignore
              -108            exp.DataType.Type.INT: "INTEGER",
              -109            exp.DataType.Type.SMALLINT: "INTEGER",
              -110            exp.DataType.Type.TINYINT: "INTEGER",
              -111            exp.DataType.Type.BINARY: "VARBINARY",
              -112            exp.DataType.Type.TEXT: "VARCHAR",
              -113            exp.DataType.Type.NCHAR: "VARCHAR",
              -114            exp.DataType.Type.TIMESTAMPLTZ: "TIMESTAMP",
              -115            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
              -116            exp.DataType.Type.DATETIME: "TIMESTAMP",
              -117        }
              -118
              -119        PROPERTIES_LOCATION = {
              -120            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
              -121            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
              -122        }
              -123
              -124        TRANSFORMS = {
              -125            **generator.Generator.TRANSFORMS,  # type: ignore
              -126            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
              -127            exp.ArrayContains: rename_func("REPEATED_CONTAINS"),
              -128            exp.ArraySize: rename_func("REPEATED_COUNT"),
              -129            exp.Create: create_with_partitions_sql,
              -130            exp.DateAdd: _date_add_sql("ADD"),
              -131            exp.DateStrToDate: datestrtodate_sql,
              -132            exp.DateSub: _date_add_sql("SUB"),
              -133            exp.DateToDi: lambda self, e: f"CAST(TO_DATE({self.sql(e, 'this')}, {Drill.dateint_format}) AS INT)",
              -134            exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS VARCHAR), {Drill.dateint_format})",
              -135            exp.If: lambda self, e: f"`IF`({self.format_args(e.this, e.args.get('true'), e.args.get('false'))})",
              -136            exp.ILike: lambda self, e: f" {self.sql(e, 'this')} `ILIKE` {self.sql(e, 'expression')}",
              -137            exp.Levenshtein: rename_func("LEVENSHTEIN_DISTANCE"),
              -138            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
              -139            exp.RegexpLike: rename_func("REGEXP_MATCHES"),
              -140            exp.StrPosition: str_position_sql,
              -141            exp.StrToDate: _str_to_date,
              -142            exp.Pow: rename_func("POW"),
              -143            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
              -144            exp.TimeStrToDate: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE)",
              -145            exp.TimeStrToTime: timestrtotime_sql,
              -146            exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"),
              -147            exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})",
              -148            exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"),
              -149            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
              -150            exp.TryCast: no_trycast_sql,
              -151            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')))})",
              -152            exp.TsOrDsToDate: ts_or_ds_to_date_sql("drill"),
              -153            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS VARCHAR), '-', ''), 1, 8) AS INT)",
              -154        }
              -155
              -156        def normalize_func(self, name: str) -> str:
              -157            return name if re.match(exp.SAFE_IDENTIFIER_RE, name) else f"`{name}`"
              + 49class Drill(Dialect):
              + 50    normalize_functions = None
              + 51    null_ordering = "nulls_are_last"
              + 52    date_format = "'yyyy-MM-dd'"
              + 53    dateint_format = "'yyyyMMdd'"
              + 54    time_format = "'yyyy-MM-dd HH:mm:ss'"
              + 55
              + 56    time_mapping = {
              + 57        "y": "%Y",
              + 58        "Y": "%Y",
              + 59        "YYYY": "%Y",
              + 60        "yyyy": "%Y",
              + 61        "YY": "%y",
              + 62        "yy": "%y",
              + 63        "MMMM": "%B",
              + 64        "MMM": "%b",
              + 65        "MM": "%m",
              + 66        "M": "%-m",
              + 67        "dd": "%d",
              + 68        "d": "%-d",
              + 69        "HH": "%H",
              + 70        "H": "%-H",
              + 71        "hh": "%I",
              + 72        "h": "%-I",
              + 73        "mm": "%M",
              + 74        "m": "%-M",
              + 75        "ss": "%S",
              + 76        "s": "%-S",
              + 77        "SSSSSS": "%f",
              + 78        "a": "%p",
              + 79        "DD": "%j",
              + 80        "D": "%-j",
              + 81        "E": "%a",
              + 82        "EE": "%a",
              + 83        "EEE": "%a",
              + 84        "EEEE": "%A",
              + 85        "''T''": "T",
              + 86    }
              + 87
              + 88    class Tokenizer(tokens.Tokenizer):
              + 89        QUOTES = ["'"]
              + 90        IDENTIFIERS = ["`"]
              + 91        STRING_ESCAPES = ["\\"]
              + 92        ENCODE = "utf-8"
              + 93
              + 94    class Parser(parser.Parser):
              + 95        STRICT_CAST = False
              + 96
              + 97        FUNCTIONS = {
              + 98            **parser.Parser.FUNCTIONS,  # type: ignore
              + 99            "DATE_FORMAT": format_time_lambda(exp.TimeToStr, "drill"),
              +100            "TO_TIMESTAMP": exp.TimeStrToTime.from_arg_list,
              +101            "TO_CHAR": format_time_lambda(exp.TimeToStr, "drill"),
              +102        }
              +103
              +104    class Generator(generator.Generator):
              +105        TYPE_MAPPING = {
              +106            **generator.Generator.TYPE_MAPPING,  # type: ignore
              +107            exp.DataType.Type.INT: "INTEGER",
              +108            exp.DataType.Type.SMALLINT: "INTEGER",
              +109            exp.DataType.Type.TINYINT: "INTEGER",
              +110            exp.DataType.Type.BINARY: "VARBINARY",
              +111            exp.DataType.Type.TEXT: "VARCHAR",
              +112            exp.DataType.Type.NCHAR: "VARCHAR",
              +113            exp.DataType.Type.TIMESTAMPLTZ: "TIMESTAMP",
              +114            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
              +115            exp.DataType.Type.DATETIME: "TIMESTAMP",
              +116        }
              +117
              +118        PROPERTIES_LOCATION = {
              +119            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
              +120            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
              +121        }
              +122
              +123        TRANSFORMS = {
              +124            **generator.Generator.TRANSFORMS,  # type: ignore
              +125            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
              +126            exp.ArrayContains: rename_func("REPEATED_CONTAINS"),
              +127            exp.ArraySize: rename_func("REPEATED_COUNT"),
              +128            exp.Create: create_with_partitions_sql,
              +129            exp.DateAdd: _date_add_sql("ADD"),
              +130            exp.DateStrToDate: datestrtodate_sql,
              +131            exp.DateSub: _date_add_sql("SUB"),
              +132            exp.DateToDi: lambda self, e: f"CAST(TO_DATE({self.sql(e, 'this')}, {Drill.dateint_format}) AS INT)",
              +133            exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS VARCHAR), {Drill.dateint_format})",
              +134            exp.If: lambda self, e: f"`IF`({self.format_args(e.this, e.args.get('true'), e.args.get('false'))})",
              +135            exp.ILike: lambda self, e: f" {self.sql(e, 'this')} `ILIKE` {self.sql(e, 'expression')}",
              +136            exp.Levenshtein: rename_func("LEVENSHTEIN_DISTANCE"),
              +137            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
              +138            exp.RegexpLike: rename_func("REGEXP_MATCHES"),
              +139            exp.StrPosition: str_position_sql,
              +140            exp.StrToDate: _str_to_date,
              +141            exp.Pow: rename_func("POW"),
              +142            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
              +143            exp.TimeStrToDate: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE)",
              +144            exp.TimeStrToTime: timestrtotime_sql,
              +145            exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"),
              +146            exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})",
              +147            exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"),
              +148            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
              +149            exp.TryCast: no_trycast_sql,
              +150            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')))})",
              +151            exp.TsOrDsToDate: ts_or_ds_to_date_sql("drill"),
              +152            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS VARCHAR), '-', ''), 1, 8) AS INT)",
              +153        }
              +154
              +155        def normalize_func(self, name: str) -> str:
              +156            return name if exp.SAFE_IDENTIFIER_RE.match(name) else f"`{name}`"
               
              @@ -252,114 +251,114 @@
        -
         51class Drill(Dialect):
        - 52    normalize_functions = None
        - 53    null_ordering = "nulls_are_last"
        - 54    date_format = "'yyyy-MM-dd'"
        - 55    dateint_format = "'yyyyMMdd'"
        - 56    time_format = "'yyyy-MM-dd HH:mm:ss'"
        - 57
        - 58    time_mapping = {
        - 59        "y": "%Y",
        - 60        "Y": "%Y",
        - 61        "YYYY": "%Y",
        - 62        "yyyy": "%Y",
        - 63        "YY": "%y",
        - 64        "yy": "%y",
        - 65        "MMMM": "%B",
        - 66        "MMM": "%b",
        - 67        "MM": "%m",
        - 68        "M": "%-m",
        - 69        "dd": "%d",
        - 70        "d": "%-d",
        - 71        "HH": "%H",
        - 72        "H": "%-H",
        - 73        "hh": "%I",
        - 74        "h": "%-I",
        - 75        "mm": "%M",
        - 76        "m": "%-M",
        - 77        "ss": "%S",
        - 78        "s": "%-S",
        - 79        "SSSSSS": "%f",
        - 80        "a": "%p",
        - 81        "DD": "%j",
        - 82        "D": "%-j",
        - 83        "E": "%a",
        - 84        "EE": "%a",
        - 85        "EEE": "%a",
        - 86        "EEEE": "%A",
        - 87        "''T''": "T",
        - 88    }
        - 89
        - 90    class Tokenizer(tokens.Tokenizer):
        - 91        QUOTES = ["'"]
        - 92        IDENTIFIERS = ["`"]
        - 93        STRING_ESCAPES = ["\\"]
        - 94        ENCODE = "utf-8"
        - 95
        - 96    class Parser(parser.Parser):
        - 97        STRICT_CAST = False
        - 98
        - 99        FUNCTIONS = {
        -100            **parser.Parser.FUNCTIONS,  # type: ignore
        -101            "DATE_FORMAT": format_time_lambda(exp.TimeToStr, "drill"),
        -102            "TO_TIMESTAMP": exp.TimeStrToTime.from_arg_list,
        -103            "TO_CHAR": format_time_lambda(exp.TimeToStr, "drill"),
        -104        }
        -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 re.match(exp.SAFE_IDENTIFIER_RE, name) else f"`{name}`"
        +            
         50class Drill(Dialect):
        + 51    normalize_functions = None
        + 52    null_ordering = "nulls_are_last"
        + 53    date_format = "'yyyy-MM-dd'"
        + 54    dateint_format = "'yyyyMMdd'"
        + 55    time_format = "'yyyy-MM-dd HH:mm:ss'"
        + 56
        + 57    time_mapping = {
        + 58        "y": "%Y",
        + 59        "Y": "%Y",
        + 60        "YYYY": "%Y",
        + 61        "yyyy": "%Y",
        + 62        "YY": "%y",
        + 63        "yy": "%y",
        + 64        "MMMM": "%B",
        + 65        "MMM": "%b",
        + 66        "MM": "%m",
        + 67        "M": "%-m",
        + 68        "dd": "%d",
        + 69        "d": "%-d",
        + 70        "HH": "%H",
        + 71        "H": "%-H",
        + 72        "hh": "%I",
        + 73        "h": "%-I",
        + 74        "mm": "%M",
        + 75        "m": "%-M",
        + 76        "ss": "%S",
        + 77        "s": "%-S",
        + 78        "SSSSSS": "%f",
        + 79        "a": "%p",
        + 80        "DD": "%j",
        + 81        "D": "%-j",
        + 82        "E": "%a",
        + 83        "EE": "%a",
        + 84        "EEE": "%a",
        + 85        "EEEE": "%A",
        + 86        "''T''": "T",
        + 87    }
        + 88
        + 89    class Tokenizer(tokens.Tokenizer):
        + 90        QUOTES = ["'"]
        + 91        IDENTIFIERS = ["`"]
        + 92        STRING_ESCAPES = ["\\"]
        + 93        ENCODE = "utf-8"
        + 94
        + 95    class Parser(parser.Parser):
        + 96        STRICT_CAST = False
        + 97
        + 98        FUNCTIONS = {
        + 99            **parser.Parser.FUNCTIONS,  # type: ignore
        +100            "DATE_FORMAT": format_time_lambda(exp.TimeToStr, "drill"),
        +101            "TO_TIMESTAMP": exp.TimeStrToTime.from_arg_list,
        +102            "TO_CHAR": format_time_lambda(exp.TimeToStr, "drill"),
        +103        }
        +104
        +105    class Generator(generator.Generator):
        +106        TYPE_MAPPING = {
        +107            **generator.Generator.TYPE_MAPPING,  # type: ignore
        +108            exp.DataType.Type.INT: "INTEGER",
        +109            exp.DataType.Type.SMALLINT: "INTEGER",
        +110            exp.DataType.Type.TINYINT: "INTEGER",
        +111            exp.DataType.Type.BINARY: "VARBINARY",
        +112            exp.DataType.Type.TEXT: "VARCHAR",
        +113            exp.DataType.Type.NCHAR: "VARCHAR",
        +114            exp.DataType.Type.TIMESTAMPLTZ: "TIMESTAMP",
        +115            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
        +116            exp.DataType.Type.DATETIME: "TIMESTAMP",
        +117        }
        +118
        +119        PROPERTIES_LOCATION = {
        +120            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
        +121            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
        +122        }
        +123
        +124        TRANSFORMS = {
        +125            **generator.Generator.TRANSFORMS,  # type: ignore
        +126            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
        +127            exp.ArrayContains: rename_func("REPEATED_CONTAINS"),
        +128            exp.ArraySize: rename_func("REPEATED_COUNT"),
        +129            exp.Create: create_with_partitions_sql,
        +130            exp.DateAdd: _date_add_sql("ADD"),
        +131            exp.DateStrToDate: datestrtodate_sql,
        +132            exp.DateSub: _date_add_sql("SUB"),
        +133            exp.DateToDi: lambda self, e: f"CAST(TO_DATE({self.sql(e, 'this')}, {Drill.dateint_format}) AS INT)",
        +134            exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS VARCHAR), {Drill.dateint_format})",
        +135            exp.If: lambda self, e: f"`IF`({self.format_args(e.this, e.args.get('true'), e.args.get('false'))})",
        +136            exp.ILike: lambda self, e: f" {self.sql(e, 'this')} `ILIKE` {self.sql(e, 'expression')}",
        +137            exp.Levenshtein: rename_func("LEVENSHTEIN_DISTANCE"),
        +138            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
        +139            exp.RegexpLike: rename_func("REGEXP_MATCHES"),
        +140            exp.StrPosition: str_position_sql,
        +141            exp.StrToDate: _str_to_date,
        +142            exp.Pow: rename_func("POW"),
        +143            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
        +144            exp.TimeStrToDate: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE)",
        +145            exp.TimeStrToTime: timestrtotime_sql,
        +146            exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"),
        +147            exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})",
        +148            exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"),
        +149            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
        +150            exp.TryCast: no_trycast_sql,
        +151            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')))})",
        +152            exp.TsOrDsToDate: ts_or_ds_to_date_sql("drill"),
        +153            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS VARCHAR), '-', ''), 1, 8) AS INT)",
        +154        }
        +155
        +156        def normalize_func(self, name: str) -> str:
        +157            return name if exp.SAFE_IDENTIFIER_RE.match(name) else f"`{name}`"
         
        @@ -394,11 +393,11 @@
        -
        90    class Tokenizer(tokens.Tokenizer):
        -91        QUOTES = ["'"]
        -92        IDENTIFIERS = ["`"]
        -93        STRING_ESCAPES = ["\\"]
        -94        ENCODE = "utf-8"
        +            
        89    class Tokenizer(tokens.Tokenizer):
        +90        QUOTES = ["'"]
        +91        IDENTIFIERS = ["`"]
        +92        STRING_ESCAPES = ["\\"]
        +93        ENCODE = "utf-8"
         
        @@ -426,15 +425,15 @@
        -
         96    class Parser(parser.Parser):
        - 97        STRICT_CAST = False
        - 98
        - 99        FUNCTIONS = {
        -100            **parser.Parser.FUNCTIONS,  # type: ignore
        -101            "DATE_FORMAT": format_time_lambda(exp.TimeToStr, "drill"),
        -102            "TO_TIMESTAMP": exp.TimeStrToTime.from_arg_list,
        -103            "TO_CHAR": format_time_lambda(exp.TimeToStr, "drill"),
        -104        }
        +            
         95    class Parser(parser.Parser):
        + 96        STRICT_CAST = False
        + 97
        + 98        FUNCTIONS = {
        + 99            **parser.Parser.FUNCTIONS,  # type: ignore
        +100            "DATE_FORMAT": format_time_lambda(exp.TimeToStr, "drill"),
        +101            "TO_TIMESTAMP": exp.TimeStrToTime.from_arg_list,
        +102            "TO_CHAR": format_time_lambda(exp.TimeToStr, "drill"),
        +103        }
         
        @@ -491,59 +490,59 @@ Default: "nulls_are_small"
        -
        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 re.match(exp.SAFE_IDENTIFIER_RE, name) else f"`{name}`"
        +            
        105    class Generator(generator.Generator):
        +106        TYPE_MAPPING = {
        +107            **generator.Generator.TYPE_MAPPING,  # type: ignore
        +108            exp.DataType.Type.INT: "INTEGER",
        +109            exp.DataType.Type.SMALLINT: "INTEGER",
        +110            exp.DataType.Type.TINYINT: "INTEGER",
        +111            exp.DataType.Type.BINARY: "VARBINARY",
        +112            exp.DataType.Type.TEXT: "VARCHAR",
        +113            exp.DataType.Type.NCHAR: "VARCHAR",
        +114            exp.DataType.Type.TIMESTAMPLTZ: "TIMESTAMP",
        +115            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
        +116            exp.DataType.Type.DATETIME: "TIMESTAMP",
        +117        }
        +118
        +119        PROPERTIES_LOCATION = {
        +120            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
        +121            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
        +122        }
        +123
        +124        TRANSFORMS = {
        +125            **generator.Generator.TRANSFORMS,  # type: ignore
        +126            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
        +127            exp.ArrayContains: rename_func("REPEATED_CONTAINS"),
        +128            exp.ArraySize: rename_func("REPEATED_COUNT"),
        +129            exp.Create: create_with_partitions_sql,
        +130            exp.DateAdd: _date_add_sql("ADD"),
        +131            exp.DateStrToDate: datestrtodate_sql,
        +132            exp.DateSub: _date_add_sql("SUB"),
        +133            exp.DateToDi: lambda self, e: f"CAST(TO_DATE({self.sql(e, 'this')}, {Drill.dateint_format}) AS INT)",
        +134            exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS VARCHAR), {Drill.dateint_format})",
        +135            exp.If: lambda self, e: f"`IF`({self.format_args(e.this, e.args.get('true'), e.args.get('false'))})",
        +136            exp.ILike: lambda self, e: f" {self.sql(e, 'this')} `ILIKE` {self.sql(e, 'expression')}",
        +137            exp.Levenshtein: rename_func("LEVENSHTEIN_DISTANCE"),
        +138            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
        +139            exp.RegexpLike: rename_func("REGEXP_MATCHES"),
        +140            exp.StrPosition: str_position_sql,
        +141            exp.StrToDate: _str_to_date,
        +142            exp.Pow: rename_func("POW"),
        +143            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
        +144            exp.TimeStrToDate: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE)",
        +145            exp.TimeStrToTime: timestrtotime_sql,
        +146            exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"),
        +147            exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})",
        +148            exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"),
        +149            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
        +150            exp.TryCast: no_trycast_sql,
        +151            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')))})",
        +152            exp.TsOrDsToDate: ts_or_ds_to_date_sql("drill"),
        +153            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS VARCHAR), '-', ''), 1, 8) AS INT)",
        +154        }
        +155
        +156        def normalize_func(self, name: str) -> str:
        +157            return name if exp.SAFE_IDENTIFIER_RE.match(name) else f"`{name}`"
         
        @@ -602,8 +601,8 @@ Default: True
        -
        157        def normalize_func(self, name: str) -> str:
        -158            return name if re.match(exp.SAFE_IDENTIFIER_RE, name) else f"`{name}`"
        +            
        156        def normalize_func(self, name: str) -> str:
        +157            return name if exp.SAFE_IDENTIFIER_RE.match(name) else f"`{name}`"
         
        @@ -701,6 +700,7 @@ Default: True
        offset_sql
        setitem_sql
        set_sql
        +
        pragma_sql
        lock_sql
        literal_sql
        loaddata_sql
        @@ -745,6 +745,8 @@ Default: True
        primarykey_sql
        unique_sql
        if_sql
        +
        jsonkeyvalue_sql
        +
        jsonobject_sql
        in_sql
        in_unnest_op
        interval_sql
        diff --git a/docs/sqlglot/dialects/duckdb.html b/docs/sqlglot/dialects/duckdb.html index 6b9bcfa..4486029 100644 --- a/docs/sqlglot/dialects/duckdb.html +++ b/docs/sqlglot/dialects/duckdb.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.duckdb API documentation @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • DuckDB
              @@ -162,140 +162,143 @@ 80 class Tokenizer(tokens.Tokenizer): 81 KEYWORDS = { 82 **tokens.Tokenizer.KEYWORDS, - 83 ":=": TokenType.EQ, - 84 "ATTACH": TokenType.COMMAND, - 85 "BINARY": TokenType.VARBINARY, - 86 "BPCHAR": TokenType.TEXT, - 87 "BITSTRING": TokenType.BIT, - 88 "CHAR": TokenType.TEXT, - 89 "CHARACTER VARYING": TokenType.TEXT, - 90 "EXCLUDE": TokenType.EXCEPT, - 91 "INT1": TokenType.TINYINT, - 92 "LOGICAL": TokenType.BOOLEAN, - 93 "NUMERIC": TokenType.DOUBLE, - 94 "SIGNED": TokenType.INT, - 95 "STRING": TokenType.VARCHAR, - 96 "UBIGINT": TokenType.UBIGINT, - 97 "UINTEGER": TokenType.UINT, - 98 "USMALLINT": TokenType.USMALLINT, - 99 "UTINYINT": TokenType.UTINYINT, -100 } -101 -102 class Parser(parser.Parser): -103 FUNCTIONS = { -104 **parser.Parser.FUNCTIONS, # type: ignore -105 "APPROX_COUNT_DISTINCT": exp.ApproxDistinct.from_arg_list, -106 "ARRAY_LENGTH": exp.ArraySize.from_arg_list, -107 "ARRAY_SORT": exp.SortArray.from_arg_list, -108 "ARRAY_REVERSE_SORT": _sort_array_reverse, -109 "EPOCH": exp.TimeToUnix.from_arg_list, -110 "EPOCH_MS": lambda args: exp.UnixToTime( -111 this=exp.Div( -112 this=seq_get(args, 0), -113 expression=exp.Literal.number(1000), -114 ) -115 ), -116 "LIST_SORT": exp.SortArray.from_arg_list, -117 "LIST_REVERSE_SORT": _sort_array_reverse, -118 "LIST_VALUE": exp.Array.from_arg_list, -119 "REGEXP_MATCHES": exp.RegexpLike.from_arg_list, -120 "STRFTIME": format_time_lambda(exp.TimeToStr, "duckdb"), -121 "STRPTIME": format_time_lambda(exp.StrToTime, "duckdb"), -122 "STR_SPLIT": exp.Split.from_arg_list, -123 "STRING_SPLIT": exp.Split.from_arg_list, -124 "STRING_TO_ARRAY": exp.Split.from_arg_list, -125 "STR_SPLIT_REGEX": exp.RegexpSplit.from_arg_list, -126 "STRING_SPLIT_REGEX": exp.RegexpSplit.from_arg_list, -127 "STRUCT_PACK": exp.Struct.from_arg_list, -128 "TO_TIMESTAMP": exp.UnixToTime.from_arg_list, -129 "UNNEST": exp.Explode.from_arg_list, -130 } -131 -132 TYPE_TOKENS = { -133 *parser.Parser.TYPE_TOKENS, -134 TokenType.UBIGINT, -135 TokenType.UINT, -136 TokenType.USMALLINT, -137 TokenType.UTINYINT, -138 } -139 -140 class Generator(generator.Generator): -141 STRUCT_DELIMITER = ("(", ")") -142 -143 TRANSFORMS = { -144 **generator.Generator.TRANSFORMS, # type: ignore -145 exp.ApproxDistinct: approx_count_distinct_sql, -146 exp.Array: lambda self, e: self.func("ARRAY", e.expressions[0]) -147 if isinstance(seq_get(e.expressions, 0), exp.Select) -148 else rename_func("LIST_VALUE")(self, e), -149 exp.ArraySize: rename_func("ARRAY_LENGTH"), -150 exp.ArraySort: _array_sort_sql, -151 exp.ArraySum: rename_func("LIST_SUM"), -152 exp.DayOfMonth: rename_func("DAYOFMONTH"), -153 exp.DayOfWeek: rename_func("DAYOFWEEK"), -154 exp.DayOfYear: rename_func("DAYOFYEAR"), -155 exp.DataType: _datatype_sql, -156 exp.DateAdd: _date_add, -157 exp.DateDiff: lambda self, e: self.func( -158 "DATE_DIFF", e.args.get("unit") or exp.Literal.string("day"), e.expression, e.this -159 ), -160 exp.DateStrToDate: datestrtodate_sql, -161 exp.DateToDi: lambda self, e: f"CAST(STRFTIME({self.sql(e, 'this')}, {DuckDB.dateint_format}) AS INT)", -162 exp.DiToDate: lambda self, e: f"CAST(STRPTIME(CAST({self.sql(e, 'this')} AS TEXT), {DuckDB.dateint_format}) AS DATE)", -163 exp.Explode: rename_func("UNNEST"), -164 exp.JSONExtract: arrow_json_extract_sql, -165 exp.JSONExtractScalar: arrow_json_extract_scalar_sql, -166 exp.JSONBExtract: arrow_json_extract_sql, -167 exp.JSONBExtractScalar: arrow_json_extract_scalar_sql, -168 exp.LogicalOr: rename_func("BOOL_OR"), -169 exp.LogicalAnd: rename_func("BOOL_AND"), -170 exp.Pivot: no_pivot_sql, -171 exp.Properties: no_properties_sql, -172 exp.RegexpExtract: _regexp_extract_sql, -173 exp.RegexpLike: rename_func("REGEXP_MATCHES"), -174 exp.RegexpSplit: rename_func("STR_SPLIT_REGEX"), -175 exp.SafeDivide: no_safe_divide_sql, -176 exp.Split: rename_func("STR_SPLIT"), -177 exp.SortArray: _sort_array_sql, -178 exp.StrPosition: str_position_sql, -179 exp.StrToDate: lambda self, e: f"CAST({str_to_time_sql(self, e)} AS DATE)", -180 exp.StrToTime: str_to_time_sql, -181 exp.StrToUnix: lambda self, e: f"EPOCH(STRPTIME({self.sql(e, 'this')}, {self.format_time(e)}))", -182 exp.Struct: _struct_sql, -183 exp.TimestampTrunc: timestamptrunc_sql, -184 exp.TimeStrToDate: lambda self, e: f"CAST({self.sql(e, 'this')} AS DATE)", -185 exp.TimeStrToTime: timestrtotime_sql, -186 exp.TimeStrToUnix: lambda self, e: f"EPOCH(CAST({self.sql(e, 'this')} AS TIMESTAMP))", -187 exp.TimeToStr: lambda self, e: f"STRFTIME({self.sql(e, 'this')}, {self.format_time(e)})", -188 exp.TimeToUnix: rename_func("EPOCH"), -189 exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS TEXT), '-', ''), 1, 8) AS INT)", -190 exp.TsOrDsAdd: _ts_or_ds_add, -191 exp.TsOrDsToDate: ts_or_ds_to_date_sql("duckdb"), -192 exp.UnixToStr: lambda self, e: f"STRFTIME(TO_TIMESTAMP({self.sql(e, 'this')}), {self.format_time(e)})", -193 exp.UnixToTime: rename_func("TO_TIMESTAMP"), -194 exp.UnixToTimeStr: lambda self, e: f"CAST(TO_TIMESTAMP({self.sql(e, 'this')}) AS TEXT)", -195 exp.WeekOfYear: rename_func("WEEKOFYEAR"), -196 } -197 -198 TYPE_MAPPING = { -199 **generator.Generator.TYPE_MAPPING, # type: ignore -200 exp.DataType.Type.BINARY: "BLOB", -201 exp.DataType.Type.CHAR: "TEXT", -202 exp.DataType.Type.FLOAT: "REAL", -203 exp.DataType.Type.NCHAR: "TEXT", -204 exp.DataType.Type.NVARCHAR: "TEXT", -205 exp.DataType.Type.UINT: "UINTEGER", -206 exp.DataType.Type.VARBINARY: "BLOB", -207 exp.DataType.Type.VARCHAR: "TEXT", -208 } -209 -210 STAR_MAPPING = { -211 **generator.Generator.STAR_MAPPING, -212 "except": "EXCLUDE", -213 } -214 -215 def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str: -216 return super().tablesample_sql(expression, seed_prefix="REPEATABLE") + 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")
        @@ -315,140 +318,143 @@ 81 class Tokenizer(tokens.Tokenizer): 82 KEYWORDS = { 83 **tokens.Tokenizer.KEYWORDS, - 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 def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str: -217 return super().tablesample_sql(expression, seed_prefix="REPEATABLE") + 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") @@ -486,24 +492,25 @@
         81    class Tokenizer(tokens.Tokenizer):
          82        KEYWORDS = {
          83            **tokens.Tokenizer.KEYWORDS,
        - 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        }
        + 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        }
         
        @@ -531,43 +538,43 @@ -
        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        }
        +            
        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        }
         
        @@ -624,83 +631,85 @@ Default: "nulls_are_small"
        -
        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        def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str:
        -217            return super().tablesample_sql(expression, seed_prefix="REPEATABLE")
        +            
        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")
         
        @@ -759,8 +768,8 @@ Default: True
        -
        216        def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str:
        -217            return super().tablesample_sql(expression, seed_prefix="REPEATABLE")
        +            
        219        def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str:
        +220            return super().tablesample_sql(expression, seed_prefix="REPEATABLE")
         
        @@ -858,6 +867,7 @@ Default: True
        offset_sql
        setitem_sql
        set_sql
        +
        pragma_sql
        lock_sql
        literal_sql
        loaddata_sql
        @@ -902,6 +912,8 @@ Default: True
        primarykey_sql
        unique_sql
        if_sql
        +
        jsonkeyvalue_sql
        +
        jsonobject_sql
        in_sql
        in_unnest_op
        interval_sql
        diff --git a/docs/sqlglot/dialects/hive.html b/docs/sqlglot/dialects/hive.html index f7c0a5e..d1b5e63 100644 --- a/docs/sqlglot/dialects/hive.html +++ b/docs/sqlglot/dialects/hive.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.hive API documentation @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • Hive
              @@ -98,355 +98,374 @@ 10 format_time_lambda, 11 if_sql, 12 locate_to_strposition, - 13 min_or_least, - 14 no_ilike_sql, - 15 no_recursive_cte_sql, - 16 no_safe_divide_sql, - 17 no_trycast_sql, - 18 rename_func, - 19 strposition_to_locate_sql, - 20 struct_extract_sql, - 21 timestrtotime_sql, - 22 var_map_sql, - 23) - 24from sqlglot.helper import seq_get - 25from sqlglot.parser import parse_var_map - 26from sqlglot.tokens import TokenType - 27 - 28# (FuncType, Multiplier) - 29DATE_DELTA_INTERVAL = { - 30 "YEAR": ("ADD_MONTHS", 12), - 31 "MONTH": ("ADD_MONTHS", 1), - 32 "QUARTER": ("ADD_MONTHS", 3), - 33 "WEEK": ("DATE_ADD", 7), - 34 "DAY": ("DATE_ADD", 1), - 35} - 36 - 37DIFF_MONTH_SWITCH = ("YEAR", "QUARTER", "MONTH") - 38 - 39 - 40def _add_date_sql(self: generator.Generator, expression: exp.DateAdd) -> str: - 41 unit = expression.text("unit").upper() - 42 func, multiplier = DATE_DELTA_INTERVAL.get(unit, ("DATE_ADD", 1)) - 43 modified_increment = ( - 44 int(expression.text("expression")) * multiplier - 45 if expression.expression.is_number - 46 else expression.expression - 47 ) - 48 modified_increment = exp.Literal.number(modified_increment) - 49 return self.func(func, expression.this, modified_increment.this) - 50 - 51 - 52def _date_diff_sql(self: generator.Generator, expression: exp.DateDiff) -> str: - 53 unit = expression.text("unit").upper() - 54 sql_func = "MONTHS_BETWEEN" if unit in DIFF_MONTH_SWITCH else "DATEDIFF" - 55 _, multiplier = DATE_DELTA_INTERVAL.get(unit, ("", 1)) - 56 multiplier_sql = f" / {multiplier}" if multiplier > 1 else "" - 57 diff_sql = f"{sql_func}({self.format_args(expression.this, expression.expression)})" - 58 return f"{diff_sql}{multiplier_sql}" + 13 max_or_greatest, + 14 min_or_least, + 15 no_ilike_sql, + 16 no_recursive_cte_sql, + 17 no_safe_divide_sql, + 18 no_trycast_sql, + 19 rename_func, + 20 strposition_to_locate_sql, + 21 struct_extract_sql, + 22 timestrtotime_sql, + 23 var_map_sql, + 24) + 25from sqlglot.helper import seq_get + 26from sqlglot.parser import parse_var_map + 27from sqlglot.tokens import TokenType + 28 + 29# (FuncType, Multiplier) + 30DATE_DELTA_INTERVAL = { + 31 "YEAR": ("ADD_MONTHS", 12), + 32 "MONTH": ("ADD_MONTHS", 1), + 33 "QUARTER": ("ADD_MONTHS", 3), + 34 "WEEK": ("DATE_ADD", 7), + 35 "DAY": ("DATE_ADD", 1), + 36} + 37 + 38TIME_DIFF_FACTOR = { + 39 "MILLISECOND": " * 1000", + 40 "SECOND": "", + 41 "MINUTE": " / 60", + 42 "HOUR": " / 3600", + 43} + 44 + 45DIFF_MONTH_SWITCH = ("YEAR", "QUARTER", "MONTH") + 46 + 47 + 48def _add_date_sql(self: generator.Generator, expression: exp.DateAdd) -> 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 - 60 - 61def _array_sort(self: generator.Generator, expression: exp.ArraySort) -> str: - 62 if expression.expression: - 63 self.unsupported("Hive SORT_ARRAY does not support a comparator") - 64 return f"SORT_ARRAY({self.sql(expression, 'this')})" - 65 - 66 - 67def _property_sql(self: generator.Generator, expression: exp.Property) -> str: - 68 return f"'{expression.name}'={self.sql(expression, 'value')}" + 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 69 - 70 - 71def _str_to_unix(self: generator.Generator, expression: exp.StrToUnix) -> str: - 72 return self.func("UNIX_TIMESTAMP", expression.this, _time_format(self, expression)) - 73 - 74 - 75def _str_to_date(self: generator.Generator, expression: exp.StrToDate) -> str: - 76 this = self.sql(expression, "this") - 77 time_format = self.format_time(expression) - 78 if time_format not in (Hive.time_format, Hive.date_format): - 79 this = f"FROM_UNIXTIME(UNIX_TIMESTAMP({this}, {time_format}))" - 80 return f"CAST({this} AS DATE)" + 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 + 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 82 - 83def _str_to_time(self: generator.Generator, expression: exp.StrToTime) -> str: - 84 this = self.sql(expression, "this") - 85 time_format = self.format_time(expression) - 86 if time_format not in (Hive.time_format, Hive.date_format): - 87 this = f"FROM_UNIXTIME(UNIX_TIMESTAMP({this}, {time_format}))" - 88 return f"CAST({this} AS TIMESTAMP)" + 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)) 89 90 - 91def _time_format( - 92 self: generator.Generator, expression: exp.UnixToStr | exp.StrToUnix - 93) -> t.Optional[str]: - 94 time_format = self.format_time(expression) - 95 if time_format == Hive.time_format: - 96 return None - 97 return time_format + 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)" + 97 98 - 99 -100def _time_to_str(self: generator.Generator, expression: exp.TimeToStr) -> str: -101 this = self.sql(expression, "this") -102 time_format = self.format_time(expression) -103 return f"DATE_FORMAT({this}, {time_format})" -104 + 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)" 105 -106def _to_date_sql(self: generator.Generator, expression: exp.TsOrDsToDate) -> str: -107 this = self.sql(expression, "this") -108 time_format = self.format_time(expression) -109 if time_format and time_format not in (Hive.time_format, Hive.date_format): -110 return f"TO_DATE({this}, {time_format})" -111 return f"TO_DATE({this})" -112 -113 -114def _unnest_to_explode_sql(self: generator.Generator, expression: exp.Join) -> str: -115 unnest = expression.this -116 if isinstance(unnest, exp.Unnest): -117 alias = unnest.args.get("alias") -118 udtf = exp.Posexplode if unnest.args.get("ordinality") else exp.Explode -119 return "".join( -120 self.sql( -121 exp.Lateral( -122 this=udtf(this=expression), -123 view=True, -124 alias=exp.TableAlias(this=alias.this, columns=[column]), # type: ignore -125 ) -126 ) -127 for expression, column in zip(unnest.expressions, alias.columns if alias else []) -128 ) -129 return self.join_sql(expression) -130 -131 -132def _index_sql(self: generator.Generator, expression: exp.Index) -> str: -133 this = self.sql(expression, "this") -134 table = self.sql(expression, "table") -135 columns = self.sql(expression, "columns") -136 return f"{this} ON TABLE {table} {columns}" -137 -138 -139class Hive(Dialect): -140 alias_post_tablesample = True -141 -142 time_mapping = { -143 "y": "%Y", -144 "Y": "%Y", -145 "YYYY": "%Y", -146 "yyyy": "%Y", -147 "YY": "%y", -148 "yy": "%y", -149 "MMMM": "%B", -150 "MMM": "%b", -151 "MM": "%m", -152 "M": "%-m", -153 "dd": "%d", -154 "d": "%-d", -155 "HH": "%H", -156 "H": "%-H", -157 "hh": "%I", -158 "h": "%-I", -159 "mm": "%M", -160 "m": "%-M", -161 "ss": "%S", -162 "s": "%-S", -163 "SSSSSS": "%f", -164 "a": "%p", -165 "DD": "%j", -166 "D": "%-j", -167 "E": "%a", -168 "EE": "%a", -169 "EEE": "%a", -170 "EEEE": "%A", -171 } -172 -173 date_format = "'yyyy-MM-dd'" -174 dateint_format = "'yyyyMMdd'" -175 time_format = "'yyyy-MM-dd HH:mm:ss'" -176 -177 class Tokenizer(tokens.Tokenizer): -178 QUOTES = ["'", '"'] -179 IDENTIFIERS = ["`"] -180 STRING_ESCAPES = ["\\"] -181 ENCODE = "utf-8" -182 -183 KEYWORDS = { -184 **tokens.Tokenizer.KEYWORDS, -185 "ADD ARCHIVE": TokenType.COMMAND, -186 "ADD ARCHIVES": TokenType.COMMAND, -187 "ADD FILE": TokenType.COMMAND, -188 "ADD FILES": TokenType.COMMAND, -189 "ADD JAR": TokenType.COMMAND, -190 "ADD JARS": TokenType.COMMAND, -191 "MSCK REPAIR": TokenType.COMMAND, -192 "WITH SERDEPROPERTIES": TokenType.SERDE_PROPERTIES, -193 } -194 -195 NUMERIC_LITERALS = { -196 "L": "BIGINT", -197 "S": "SMALLINT", -198 "Y": "TINYINT", -199 "D": "DOUBLE", -200 "F": "FLOAT", -201 "BD": "DECIMAL", -202 } -203 -204 IDENTIFIER_CAN_START_WITH_DIGIT = True -205 -206 class Parser(parser.Parser): -207 STRICT_CAST = False -208 -209 FUNCTIONS = { -210 **parser.Parser.FUNCTIONS, # type: ignore -211 "APPROX_COUNT_DISTINCT": exp.ApproxDistinct.from_arg_list, -212 "COLLECT_LIST": exp.ArrayAgg.from_arg_list, -213 "DATE_ADD": lambda args: exp.TsOrDsAdd( -214 this=seq_get(args, 0), -215 expression=seq_get(args, 1), -216 unit=exp.Literal.string("DAY"), -217 ), -218 "DATEDIFF": lambda args: exp.DateDiff( -219 this=exp.TsOrDsToDate(this=seq_get(args, 0)), -220 expression=exp.TsOrDsToDate(this=seq_get(args, 1)), -221 ), -222 "DATE_SUB": lambda args: exp.TsOrDsAdd( -223 this=seq_get(args, 0), -224 expression=exp.Mul( -225 this=seq_get(args, 1), -226 expression=exp.Literal.number(-1), -227 ), -228 unit=exp.Literal.string("DAY"), -229 ), -230 "DATE_FORMAT": lambda args: format_time_lambda(exp.TimeToStr, "hive")( -231 [ -232 exp.TimeStrToTime(this=seq_get(args, 0)), -233 seq_get(args, 1), -234 ] -235 ), -236 "DAY": lambda args: exp.Day(this=exp.TsOrDsToDate(this=seq_get(args, 0))), -237 "FROM_UNIXTIME": format_time_lambda(exp.UnixToStr, "hive", True), -238 "GET_JSON_OBJECT": exp.JSONExtractScalar.from_arg_list, -239 "LOCATE": locate_to_strposition, -240 "LOG": ( -241 lambda args: exp.Log.from_arg_list(args) -242 if len(args) > 1 -243 else exp.Ln.from_arg_list(args) -244 ), -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 "UNIX_TIMESTAMP": format_time_lambda(exp.StrToUnix, "hive", True), -254 "YEAR": lambda args: exp.Year(this=exp.TsOrDsToDate.from_arg_list(args)), -255 } -256 -257 PROPERTY_PARSERS = { -258 **parser.Parser.PROPERTY_PARSERS, # type: ignore -259 "WITH SERDEPROPERTIES": lambda self: exp.SerdeProperties( -260 expressions=self._parse_wrapped_csv(self._parse_property) -261 ), -262 } -263 -264 class Generator(generator.Generator): -265 TYPE_MAPPING = { -266 **generator.Generator.TYPE_MAPPING, # type: ignore -267 exp.DataType.Type.TEXT: "STRING", -268 exp.DataType.Type.DATETIME: "TIMESTAMP", -269 exp.DataType.Type.VARBINARY: "BINARY", -270 exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP", +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 +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})" +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) +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 } +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 "LOG": ( +257 lambda args: exp.Log.from_arg_list(args) +258 if len(args) > 1 +259 else exp.Ln.from_arg_list(args) +260 ), +261 "MAP": parse_var_map, +262 "MONTH": lambda args: exp.Month(this=exp.TsOrDsToDate.from_arg_list(args)), +263 "PERCENTILE": exp.Quantile.from_arg_list, +264 "PERCENTILE_APPROX": exp.ApproxQuantile.from_arg_list, +265 "COLLECT_SET": exp.SetAgg.from_arg_list, +266 "SIZE": exp.ArraySize.from_arg_list, +267 "SPLIT": exp.RegexpSplit.from_arg_list, +268 "TO_DATE": format_time_lambda(exp.TsOrDsToDate, "hive"), +269 "UNIX_TIMESTAMP": format_time_lambda(exp.StrToUnix, "hive", True), +270 "YEAR": lambda args: exp.Year(this=exp.TsOrDsToDate.from_arg_list(args)), 271 } 272 -273 TRANSFORMS = { -274 **generator.Generator.TRANSFORMS, # type: ignore -275 **transforms.UNALIAS_GROUP, # type: ignore -276 **transforms.ELIMINATE_QUALIFY, # type: ignore -277 exp.Property: _property_sql, -278 exp.ApproxDistinct: approx_count_distinct_sql, -279 exp.ArrayConcat: rename_func("CONCAT"), -280 exp.ArraySize: rename_func("SIZE"), -281 exp.ArraySort: _array_sort, -282 exp.With: no_recursive_cte_sql, -283 exp.DateAdd: _add_date_sql, -284 exp.DateDiff: _date_diff_sql, -285 exp.DateStrToDate: rename_func("TO_DATE"), -286 exp.DateToDi: lambda self, e: f"CAST(DATE_FORMAT({self.sql(e, 'this')}, {Hive.dateint_format}) AS INT)", -287 exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS STRING), {Hive.dateint_format})", -288 exp.FileFormatProperty: lambda self, e: f"STORED AS {e.name.upper()}", -289 exp.If: if_sql, -290 exp.Index: _index_sql, -291 exp.ILike: no_ilike_sql, -292 exp.Join: _unnest_to_explode_sql, -293 exp.JSONExtract: rename_func("GET_JSON_OBJECT"), -294 exp.JSONExtractScalar: rename_func("GET_JSON_OBJECT"), -295 exp.Map: var_map_sql, -296 exp.Min: min_or_least, -297 exp.VarMap: var_map_sql, -298 exp.Create: create_with_partitions_sql, -299 exp.Quantile: rename_func("PERCENTILE"), -300 exp.ApproxQuantile: rename_func("PERCENTILE_APPROX"), -301 exp.RegexpLike: lambda self, e: self.binary(e, "RLIKE"), -302 exp.RegexpSplit: rename_func("SPLIT"), -303 exp.SafeDivide: no_safe_divide_sql, -304 exp.SchemaCommentProperty: lambda self, e: self.naked_property(e), -305 exp.SetAgg: rename_func("COLLECT_SET"), -306 exp.Split: lambda self, e: f"SPLIT({self.sql(e, 'this')}, CONCAT('\\\\Q', {self.sql(e, 'expression')}))", -307 exp.StrPosition: strposition_to_locate_sql, -308 exp.StrToDate: _str_to_date, -309 exp.StrToTime: _str_to_time, -310 exp.StrToUnix: _str_to_unix, -311 exp.StructExtract: struct_extract_sql, -312 exp.TableFormatProperty: lambda self, e: f"USING {self.sql(e, 'this')}", -313 exp.TimeStrToDate: rename_func("TO_DATE"), -314 exp.TimeStrToTime: timestrtotime_sql, -315 exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"), -316 exp.TimeToStr: _time_to_str, -317 exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"), -318 exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS STRING), '-', ''), 1, 8) AS INT)", -319 exp.TsOrDsAdd: lambda self, e: f"DATE_ADD({self.sql(e, 'this')}, {self.sql(e, 'expression')})", -320 exp.TsOrDsToDate: _to_date_sql, -321 exp.TryCast: no_trycast_sql, -322 exp.UnixToStr: lambda self, e: self.func( -323 "FROM_UNIXTIME", e.this, _time_format(self, e) -324 ), -325 exp.UnixToTime: rename_func("FROM_UNIXTIME"), -326 exp.UnixToTimeStr: rename_func("FROM_UNIXTIME"), -327 exp.PartitionedByProperty: lambda self, e: f"PARTITIONED BY {self.sql(e, 'this')}", -328 exp.RowFormatSerdeProperty: lambda self, e: f"ROW FORMAT SERDE {self.sql(e, 'this')}", -329 exp.SerdeProperties: lambda self, e: self.properties(e, prefix="WITH SERDEPROPERTIES"), -330 exp.NumberToStr: rename_func("FORMAT_NUMBER"), -331 exp.LastDateOfMonth: rename_func("LAST_DAY"), -332 } -333 -334 PROPERTIES_LOCATION = { -335 **generator.Generator.PROPERTIES_LOCATION, # type: ignore -336 exp.FileFormatProperty: exp.Properties.Location.POST_SCHEMA, -337 exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA, -338 exp.TableFormatProperty: exp.Properties.Location.POST_SCHEMA, -339 } -340 -341 def arrayagg_sql(self, expression: exp.ArrayAgg) -> str: -342 return self.func( -343 "COLLECT_LIST", -344 expression.this.this if isinstance(expression.this, exp.Order) else expression.this, -345 ) -346 -347 def with_properties(self, properties: exp.Properties) -> str: -348 return self.properties( -349 properties, -350 prefix=self.seg("TBLPROPERTIES"), -351 ) -352 -353 def datatype_sql(self, expression: exp.DataType) -> str: -354 if ( -355 expression.this in (exp.DataType.Type.VARCHAR, exp.DataType.Type.NVARCHAR) -356 and not expression.expressions -357 ): -358 expression = exp.DataType.build("text") -359 elif expression.this in exp.DataType.TEMPORAL_TYPES: -360 expression = exp.DataType.build(expression.this) -361 return super().datatype_sql(expression) +273 PROPERTY_PARSERS = { +274 **parser.Parser.PROPERTY_PARSERS, # type: ignore +275 "WITH SERDEPROPERTIES": lambda self: exp.SerdeProperties( +276 expressions=self._parse_wrapped_csv(self._parse_property) +277 ), +278 } +279 +280 class Generator(generator.Generator): +281 TYPE_MAPPING = { +282 **generator.Generator.TYPE_MAPPING, # type: ignore +283 exp.DataType.Type.TEXT: "STRING", +284 exp.DataType.Type.DATETIME: "TIMESTAMP", +285 exp.DataType.Type.VARBINARY: "BINARY", +286 exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP", +287 } +288 +289 TRANSFORMS = { +290 **generator.Generator.TRANSFORMS, # type: ignore +291 **transforms.UNALIAS_GROUP, # type: ignore +292 **transforms.ELIMINATE_QUALIFY, # type: ignore +293 exp.Property: _property_sql, +294 exp.ApproxDistinct: approx_count_distinct_sql, +295 exp.ArrayConcat: rename_func("CONCAT"), +296 exp.ArraySize: rename_func("SIZE"), +297 exp.ArraySort: _array_sort, +298 exp.With: no_recursive_cte_sql, +299 exp.DateAdd: _add_date_sql, +300 exp.DateDiff: _date_diff_sql, +301 exp.DateStrToDate: rename_func("TO_DATE"), +302 exp.DateToDi: lambda self, e: f"CAST(DATE_FORMAT({self.sql(e, 'this')}, {Hive.dateint_format}) AS INT)", +303 exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS STRING), {Hive.dateint_format})", +304 exp.FileFormatProperty: lambda self, e: f"STORED AS {e.name.upper()}", +305 exp.If: if_sql, +306 exp.Index: _index_sql, +307 exp.ILike: no_ilike_sql, +308 exp.Join: _unnest_to_explode_sql, +309 exp.JSONExtract: rename_func("GET_JSON_OBJECT"), +310 exp.JSONExtractScalar: rename_func("GET_JSON_OBJECT"), +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)
        @@ -462,229 +481,232 @@ -
        140class Hive(Dialect):
        -141    alias_post_tablesample = True
        -142
        -143    time_mapping = {
        -144        "y": "%Y",
        -145        "Y": "%Y",
        -146        "YYYY": "%Y",
        -147        "yyyy": "%Y",
        -148        "YY": "%y",
        -149        "yy": "%y",
        -150        "MMMM": "%B",
        -151        "MMM": "%b",
        -152        "MM": "%m",
        -153        "M": "%-m",
        -154        "dd": "%d",
        -155        "d": "%-d",
        -156        "HH": "%H",
        -157        "H": "%-H",
        -158        "hh": "%I",
        -159        "h": "%-I",
        -160        "mm": "%M",
        -161        "m": "%-M",
        -162        "ss": "%S",
        -163        "s": "%-S",
        -164        "SSSSSS": "%f",
        -165        "a": "%p",
        -166        "DD": "%j",
        -167        "D": "%-j",
        -168        "E": "%a",
        -169        "EE": "%a",
        -170        "EEE": "%a",
        -171        "EEEE": "%A",
        -172    }
        -173
        -174    date_format = "'yyyy-MM-dd'"
        -175    dateint_format = "'yyyyMMdd'"
        -176    time_format = "'yyyy-MM-dd HH:mm:ss'"
        -177
        -178    class Tokenizer(tokens.Tokenizer):
        -179        QUOTES = ["'", '"']
        -180        IDENTIFIERS = ["`"]
        -181        STRING_ESCAPES = ["\\"]
        -182        ENCODE = "utf-8"
        -183
        -184        KEYWORDS = {
        -185            **tokens.Tokenizer.KEYWORDS,
        -186            "ADD ARCHIVE": TokenType.COMMAND,
        -187            "ADD ARCHIVES": TokenType.COMMAND,
        -188            "ADD FILE": TokenType.COMMAND,
        -189            "ADD FILES": TokenType.COMMAND,
        -190            "ADD JAR": TokenType.COMMAND,
        -191            "ADD JARS": TokenType.COMMAND,
        -192            "MSCK REPAIR": TokenType.COMMAND,
        -193            "WITH SERDEPROPERTIES": TokenType.SERDE_PROPERTIES,
        -194        }
        -195
        -196        NUMERIC_LITERALS = {
        -197            "L": "BIGINT",
        -198            "S": "SMALLINT",
        -199            "Y": "TINYINT",
        -200            "D": "DOUBLE",
        -201            "F": "FLOAT",
        -202            "BD": "DECIMAL",
        -203        }
        -204
        -205        IDENTIFIER_CAN_START_WITH_DIGIT = True
        -206
        -207    class Parser(parser.Parser):
        -208        STRICT_CAST = False
        -209
        -210        FUNCTIONS = {
        -211            **parser.Parser.FUNCTIONS,  # type: ignore
        -212            "APPROX_COUNT_DISTINCT": exp.ApproxDistinct.from_arg_list,
        -213            "COLLECT_LIST": exp.ArrayAgg.from_arg_list,
        -214            "DATE_ADD": lambda args: exp.TsOrDsAdd(
        -215                this=seq_get(args, 0),
        -216                expression=seq_get(args, 1),
        -217                unit=exp.Literal.string("DAY"),
        -218            ),
        -219            "DATEDIFF": lambda args: exp.DateDiff(
        -220                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
        -221                expression=exp.TsOrDsToDate(this=seq_get(args, 1)),
        -222            ),
        -223            "DATE_SUB": lambda args: exp.TsOrDsAdd(
        -224                this=seq_get(args, 0),
        -225                expression=exp.Mul(
        -226                    this=seq_get(args, 1),
        -227                    expression=exp.Literal.number(-1),
        -228                ),
        -229                unit=exp.Literal.string("DAY"),
        -230            ),
        -231            "DATE_FORMAT": lambda args: format_time_lambda(exp.TimeToStr, "hive")(
        -232                [
        -233                    exp.TimeStrToTime(this=seq_get(args, 0)),
        -234                    seq_get(args, 1),
        -235                ]
        -236            ),
        -237            "DAY": lambda args: exp.Day(this=exp.TsOrDsToDate(this=seq_get(args, 0))),
        -238            "FROM_UNIXTIME": format_time_lambda(exp.UnixToStr, "hive", True),
        -239            "GET_JSON_OBJECT": exp.JSONExtractScalar.from_arg_list,
        -240            "LOCATE": locate_to_strposition,
        -241            "LOG": (
        -242                lambda args: exp.Log.from_arg_list(args)
        -243                if len(args) > 1
        -244                else exp.Ln.from_arg_list(args)
        -245            ),
        -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            "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        TYPE_MAPPING = {
        -267            **generator.Generator.TYPE_MAPPING,  # type: ignore
        -268            exp.DataType.Type.TEXT: "STRING",
        -269            exp.DataType.Type.DATETIME: "TIMESTAMP",
        -270            exp.DataType.Type.VARBINARY: "BINARY",
        -271            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
        +            
        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    }
        +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            "LOG": (
        +258                lambda args: exp.Log.from_arg_list(args)
        +259                if len(args) > 1
        +260                else exp.Ln.from_arg_list(args)
        +261            ),
        +262            "MAP": parse_var_map,
        +263            "MONTH": lambda args: exp.Month(this=exp.TsOrDsToDate.from_arg_list(args)),
        +264            "PERCENTILE": exp.Quantile.from_arg_list,
        +265            "PERCENTILE_APPROX": exp.ApproxQuantile.from_arg_list,
        +266            "COLLECT_SET": exp.SetAgg.from_arg_list,
        +267            "SIZE": exp.ArraySize.from_arg_list,
        +268            "SPLIT": exp.RegexpSplit.from_arg_list,
        +269            "TO_DATE": format_time_lambda(exp.TsOrDsToDate, "hive"),
        +270            "UNIX_TIMESTAMP": format_time_lambda(exp.StrToUnix, "hive", True),
        +271            "YEAR": lambda args: exp.Year(this=exp.TsOrDsToDate.from_arg_list(args)),
         272        }
         273
        -274        TRANSFORMS = {
        -275            **generator.Generator.TRANSFORMS,  # type: ignore
        -276            **transforms.UNALIAS_GROUP,  # type: ignore
        -277            **transforms.ELIMINATE_QUALIFY,  # type: ignore
        -278            exp.Property: _property_sql,
        -279            exp.ApproxDistinct: approx_count_distinct_sql,
        -280            exp.ArrayConcat: rename_func("CONCAT"),
        -281            exp.ArraySize: rename_func("SIZE"),
        -282            exp.ArraySort: _array_sort,
        -283            exp.With: no_recursive_cte_sql,
        -284            exp.DateAdd: _add_date_sql,
        -285            exp.DateDiff: _date_diff_sql,
        -286            exp.DateStrToDate: rename_func("TO_DATE"),
        -287            exp.DateToDi: lambda self, e: f"CAST(DATE_FORMAT({self.sql(e, 'this')}, {Hive.dateint_format}) AS INT)",
        -288            exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS STRING), {Hive.dateint_format})",
        -289            exp.FileFormatProperty: lambda self, e: f"STORED AS {e.name.upper()}",
        -290            exp.If: if_sql,
        -291            exp.Index: _index_sql,
        -292            exp.ILike: no_ilike_sql,
        -293            exp.Join: _unnest_to_explode_sql,
        -294            exp.JSONExtract: rename_func("GET_JSON_OBJECT"),
        -295            exp.JSONExtractScalar: rename_func("GET_JSON_OBJECT"),
        -296            exp.Map: var_map_sql,
        -297            exp.Min: min_or_least,
        -298            exp.VarMap: var_map_sql,
        -299            exp.Create: create_with_partitions_sql,
        -300            exp.Quantile: rename_func("PERCENTILE"),
        -301            exp.ApproxQuantile: rename_func("PERCENTILE_APPROX"),
        -302            exp.RegexpLike: lambda self, e: self.binary(e, "RLIKE"),
        -303            exp.RegexpSplit: rename_func("SPLIT"),
        -304            exp.SafeDivide: no_safe_divide_sql,
        -305            exp.SchemaCommentProperty: lambda self, e: self.naked_property(e),
        -306            exp.SetAgg: rename_func("COLLECT_SET"),
        -307            exp.Split: lambda self, e: f"SPLIT({self.sql(e, 'this')}, CONCAT('\\\\Q', {self.sql(e, 'expression')}))",
        -308            exp.StrPosition: strposition_to_locate_sql,
        -309            exp.StrToDate: _str_to_date,
        -310            exp.StrToTime: _str_to_time,
        -311            exp.StrToUnix: _str_to_unix,
        -312            exp.StructExtract: struct_extract_sql,
        -313            exp.TableFormatProperty: lambda self, e: f"USING {self.sql(e, 'this')}",
        -314            exp.TimeStrToDate: rename_func("TO_DATE"),
        -315            exp.TimeStrToTime: timestrtotime_sql,
        -316            exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"),
        -317            exp.TimeToStr: _time_to_str,
        -318            exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"),
        -319            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS STRING), '-', ''), 1, 8) AS INT)",
        -320            exp.TsOrDsAdd: lambda self, e: f"DATE_ADD({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
        -321            exp.TsOrDsToDate: _to_date_sql,
        -322            exp.TryCast: no_trycast_sql,
        -323            exp.UnixToStr: lambda self, e: self.func(
        -324                "FROM_UNIXTIME", e.this, _time_format(self, e)
        -325            ),
        -326            exp.UnixToTime: rename_func("FROM_UNIXTIME"),
        -327            exp.UnixToTimeStr: rename_func("FROM_UNIXTIME"),
        -328            exp.PartitionedByProperty: lambda self, e: f"PARTITIONED BY {self.sql(e, 'this')}",
        -329            exp.RowFormatSerdeProperty: lambda self, e: f"ROW FORMAT SERDE {self.sql(e, 'this')}",
        -330            exp.SerdeProperties: lambda self, e: self.properties(e, prefix="WITH SERDEPROPERTIES"),
        -331            exp.NumberToStr: rename_func("FORMAT_NUMBER"),
        -332            exp.LastDateOfMonth: rename_func("LAST_DAY"),
        -333        }
        -334
        -335        PROPERTIES_LOCATION = {
        -336            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
        -337            exp.FileFormatProperty: exp.Properties.Location.POST_SCHEMA,
        -338            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
        -339            exp.TableFormatProperty: exp.Properties.Location.POST_SCHEMA,
        -340        }
        -341
        -342        def arrayagg_sql(self, expression: exp.ArrayAgg) -> str:
        -343            return self.func(
        -344                "COLLECT_LIST",
        -345                expression.this.this if isinstance(expression.this, exp.Order) else expression.this,
        -346            )
        -347
        -348        def with_properties(self, properties: exp.Properties) -> str:
        -349            return self.properties(
        -350                properties,
        -351                prefix=self.seg("TBLPROPERTIES"),
        -352            )
        -353
        -354        def datatype_sql(self, expression: exp.DataType) -> str:
        -355            if (
        -356                expression.this in (exp.DataType.Type.VARCHAR, exp.DataType.Type.NVARCHAR)
        -357                and not expression.expressions
        -358            ):
        -359                expression = exp.DataType.build("text")
        -360            elif expression.this in exp.DataType.TEMPORAL_TYPES:
        -361                expression = exp.DataType.build(expression.this)
        -362            return super().datatype_sql(expression)
        +274        PROPERTY_PARSERS = {
        +275            **parser.Parser.PROPERTY_PARSERS,  # type: ignore
        +276            "WITH SERDEPROPERTIES": lambda self: exp.SerdeProperties(
        +277                expressions=self._parse_wrapped_csv(self._parse_property)
        +278            ),
        +279        }
        +280
        +281    class Generator(generator.Generator):
        +282        TYPE_MAPPING = {
        +283            **generator.Generator.TYPE_MAPPING,  # type: ignore
        +284            exp.DataType.Type.TEXT: "STRING",
        +285            exp.DataType.Type.DATETIME: "TIMESTAMP",
        +286            exp.DataType.Type.VARBINARY: "BINARY",
        +287            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
        +288        }
        +289
        +290        TRANSFORMS = {
        +291            **generator.Generator.TRANSFORMS,  # type: ignore
        +292            **transforms.UNALIAS_GROUP,  # type: ignore
        +293            **transforms.ELIMINATE_QUALIFY,  # type: ignore
        +294            exp.Property: _property_sql,
        +295            exp.ApproxDistinct: approx_count_distinct_sql,
        +296            exp.ArrayConcat: rename_func("CONCAT"),
        +297            exp.ArraySize: rename_func("SIZE"),
        +298            exp.ArraySort: _array_sort,
        +299            exp.With: no_recursive_cte_sql,
        +300            exp.DateAdd: _add_date_sql,
        +301            exp.DateDiff: _date_diff_sql,
        +302            exp.DateStrToDate: rename_func("TO_DATE"),
        +303            exp.DateToDi: lambda self, e: f"CAST(DATE_FORMAT({self.sql(e, 'this')}, {Hive.dateint_format}) AS INT)",
        +304            exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS STRING), {Hive.dateint_format})",
        +305            exp.FileFormatProperty: lambda self, e: f"STORED AS {e.name.upper()}",
        +306            exp.If: if_sql,
        +307            exp.Index: _index_sql,
        +308            exp.ILike: no_ilike_sql,
        +309            exp.Join: _unnest_to_explode_sql,
        +310            exp.JSONExtract: rename_func("GET_JSON_OBJECT"),
        +311            exp.JSONExtractScalar: rename_func("GET_JSON_OBJECT"),
        +312            exp.Map: var_map_sql,
        +313            exp.Max: max_or_greatest,
        +314            exp.Min: min_or_least,
        +315            exp.VarMap: var_map_sql,
        +316            exp.Create: create_with_partitions_sql,
        +317            exp.Quantile: rename_func("PERCENTILE"),
        +318            exp.ApproxQuantile: rename_func("PERCENTILE_APPROX"),
        +319            exp.RegexpLike: lambda self, e: self.binary(e, "RLIKE"),
        +320            exp.RegexpSplit: rename_func("SPLIT"),
        +321            exp.SafeDivide: no_safe_divide_sql,
        +322            exp.SchemaCommentProperty: lambda self, e: self.naked_property(e),
        +323            exp.SetAgg: rename_func("COLLECT_SET"),
        +324            exp.Split: lambda self, e: f"SPLIT({self.sql(e, 'this')}, CONCAT('\\\\Q', {self.sql(e, 'expression')}))",
        +325            exp.StrPosition: strposition_to_locate_sql,
        +326            exp.StrToDate: _str_to_date,
        +327            exp.StrToTime: _str_to_time,
        +328            exp.StrToUnix: _str_to_unix,
        +329            exp.StructExtract: struct_extract_sql,
        +330            exp.TableFormatProperty: lambda self, e: f"USING {self.sql(e, 'this')}",
        +331            exp.TimeStrToDate: rename_func("TO_DATE"),
        +332            exp.TimeStrToTime: timestrtotime_sql,
        +333            exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"),
        +334            exp.TimeToStr: _time_to_str,
        +335            exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"),
        +336            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS STRING), '-', ''), 1, 8) AS INT)",
        +337            exp.TsOrDsAdd: lambda self, e: f"DATE_ADD({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
        +338            exp.TsOrDsToDate: _to_date_sql,
        +339            exp.TryCast: no_trycast_sql,
        +340            exp.UnixToStr: lambda self, e: self.func(
        +341                "FROM_UNIXTIME", e.this, _time_format(self, e)
        +342            ),
        +343            exp.UnixToTime: rename_func("FROM_UNIXTIME"),
        +344            exp.UnixToTimeStr: rename_func("FROM_UNIXTIME"),
        +345            exp.PartitionedByProperty: lambda self, e: f"PARTITIONED BY {self.sql(e, 'this')}",
        +346            exp.RowFormatSerdeProperty: lambda self, e: f"ROW FORMAT SERDE {self.sql(e, 'this')}",
        +347            exp.SerdeProperties: lambda self, e: self.properties(e, prefix="WITH SERDEPROPERTIES"),
        +348            exp.NumberToStr: rename_func("FORMAT_NUMBER"),
        +349            exp.LastDateOfMonth: rename_func("LAST_DAY"),
        +350        }
        +351
        +352        PROPERTIES_LOCATION = {
        +353            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
        +354            exp.FileFormatProperty: exp.Properties.Location.POST_SCHEMA,
        +355            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
        +356            exp.TableFormatProperty: exp.Properties.Location.POST_SCHEMA,
        +357        }
        +358
        +359        LIMIT_FETCH = "LIMIT"
        +360
        +361        def arrayagg_sql(self, expression: exp.ArrayAgg) -> str:
        +362            return self.func(
        +363                "COLLECT_LIST",
        +364                expression.this.this if isinstance(expression.this, exp.Order) else expression.this,
        +365            )
        +366
        +367        def with_properties(self, properties: exp.Properties) -> str:
        +368            return self.properties(
        +369                properties,
        +370                prefix=self.seg("TBLPROPERTIES"),
        +371            )
        +372
        +373        def datatype_sql(self, expression: exp.DataType) -> str:
        +374            if (
        +375                expression.this in (exp.DataType.Type.VARCHAR, exp.DataType.Type.NVARCHAR)
        +376                and not expression.expressions
        +377            ):
        +378                expression = exp.DataType.build("text")
        +379            elif expression.this in exp.DataType.TEMPORAL_TYPES:
        +380                expression = exp.DataType.build(expression.this)
        +381            return super().datatype_sql(expression)
         
        @@ -719,34 +741,34 @@
        -
        178    class Tokenizer(tokens.Tokenizer):
        -179        QUOTES = ["'", '"']
        -180        IDENTIFIERS = ["`"]
        -181        STRING_ESCAPES = ["\\"]
        -182        ENCODE = "utf-8"
        -183
        -184        KEYWORDS = {
        -185            **tokens.Tokenizer.KEYWORDS,
        -186            "ADD ARCHIVE": TokenType.COMMAND,
        -187            "ADD ARCHIVES": TokenType.COMMAND,
        -188            "ADD FILE": TokenType.COMMAND,
        -189            "ADD FILES": TokenType.COMMAND,
        -190            "ADD JAR": TokenType.COMMAND,
        -191            "ADD JARS": TokenType.COMMAND,
        -192            "MSCK REPAIR": TokenType.COMMAND,
        -193            "WITH SERDEPROPERTIES": TokenType.SERDE_PROPERTIES,
        -194        }
        -195
        -196        NUMERIC_LITERALS = {
        -197            "L": "BIGINT",
        -198            "S": "SMALLINT",
        -199            "Y": "TINYINT",
        -200            "D": "DOUBLE",
        -201            "F": "FLOAT",
        -202            "BD": "DECIMAL",
        -203        }
        -204
        -205        IDENTIFIER_CAN_START_WITH_DIGIT = True
        +            
        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
         
        @@ -774,63 +796,63 @@
        -
        207    class Parser(parser.Parser):
        -208        STRICT_CAST = False
        -209
        -210        FUNCTIONS = {
        -211            **parser.Parser.FUNCTIONS,  # type: ignore
        -212            "APPROX_COUNT_DISTINCT": exp.ApproxDistinct.from_arg_list,
        -213            "COLLECT_LIST": exp.ArrayAgg.from_arg_list,
        -214            "DATE_ADD": lambda args: exp.TsOrDsAdd(
        -215                this=seq_get(args, 0),
        -216                expression=seq_get(args, 1),
        -217                unit=exp.Literal.string("DAY"),
        -218            ),
        -219            "DATEDIFF": lambda args: exp.DateDiff(
        -220                this=exp.TsOrDsToDate(this=seq_get(args, 0)),
        -221                expression=exp.TsOrDsToDate(this=seq_get(args, 1)),
        -222            ),
        -223            "DATE_SUB": lambda args: exp.TsOrDsAdd(
        -224                this=seq_get(args, 0),
        -225                expression=exp.Mul(
        -226                    this=seq_get(args, 1),
        -227                    expression=exp.Literal.number(-1),
        -228                ),
        -229                unit=exp.Literal.string("DAY"),
        -230            ),
        -231            "DATE_FORMAT": lambda args: format_time_lambda(exp.TimeToStr, "hive")(
        -232                [
        -233                    exp.TimeStrToTime(this=seq_get(args, 0)),
        -234                    seq_get(args, 1),
        -235                ]
        -236            ),
        -237            "DAY": lambda args: exp.Day(this=exp.TsOrDsToDate(this=seq_get(args, 0))),
        -238            "FROM_UNIXTIME": format_time_lambda(exp.UnixToStr, "hive", True),
        -239            "GET_JSON_OBJECT": exp.JSONExtractScalar.from_arg_list,
        -240            "LOCATE": locate_to_strposition,
        -241            "LOG": (
        -242                lambda args: exp.Log.from_arg_list(args)
        -243                if len(args) > 1
        -244                else exp.Ln.from_arg_list(args)
        -245            ),
        -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            "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        }
        +            
        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            "LOG": (
        +258                lambda args: exp.Log.from_arg_list(args)
        +259                if len(args) > 1
        +260                else exp.Ln.from_arg_list(args)
        +261            ),
        +262            "MAP": parse_var_map,
        +263            "MONTH": lambda args: exp.Month(this=exp.TsOrDsToDate.from_arg_list(args)),
        +264            "PERCENTILE": exp.Quantile.from_arg_list,
        +265            "PERCENTILE_APPROX": exp.ApproxQuantile.from_arg_list,
        +266            "COLLECT_SET": exp.SetAgg.from_arg_list,
        +267            "SIZE": exp.ArraySize.from_arg_list,
        +268            "SPLIT": exp.RegexpSplit.from_arg_list,
        +269            "TO_DATE": format_time_lambda(exp.TsOrDsToDate, "hive"),
        +270            "UNIX_TIMESTAMP": format_time_lambda(exp.StrToUnix, "hive", True),
        +271            "YEAR": lambda args: exp.Year(this=exp.TsOrDsToDate.from_arg_list(args)),
        +272        }
        +273
        +274        PROPERTY_PARSERS = {
        +275            **parser.Parser.PROPERTY_PARSERS,  # type: ignore
        +276            "WITH SERDEPROPERTIES": lambda self: exp.SerdeProperties(
        +277                expressions=self._parse_wrapped_csv(self._parse_property)
        +278            ),
        +279        }
         
        @@ -887,104 +909,107 @@ Default: "nulls_are_small"
        -
        265    class Generator(generator.Generator):
        -266        TYPE_MAPPING = {
        -267            **generator.Generator.TYPE_MAPPING,  # type: ignore
        -268            exp.DataType.Type.TEXT: "STRING",
        -269            exp.DataType.Type.DATETIME: "TIMESTAMP",
        -270            exp.DataType.Type.VARBINARY: "BINARY",
        -271            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
        -272        }
        -273
        -274        TRANSFORMS = {
        -275            **generator.Generator.TRANSFORMS,  # type: ignore
        -276            **transforms.UNALIAS_GROUP,  # type: ignore
        -277            **transforms.ELIMINATE_QUALIFY,  # type: ignore
        -278            exp.Property: _property_sql,
        -279            exp.ApproxDistinct: approx_count_distinct_sql,
        -280            exp.ArrayConcat: rename_func("CONCAT"),
        -281            exp.ArraySize: rename_func("SIZE"),
        -282            exp.ArraySort: _array_sort,
        -283            exp.With: no_recursive_cte_sql,
        -284            exp.DateAdd: _add_date_sql,
        -285            exp.DateDiff: _date_diff_sql,
        -286            exp.DateStrToDate: rename_func("TO_DATE"),
        -287            exp.DateToDi: lambda self, e: f"CAST(DATE_FORMAT({self.sql(e, 'this')}, {Hive.dateint_format}) AS INT)",
        -288            exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS STRING), {Hive.dateint_format})",
        -289            exp.FileFormatProperty: lambda self, e: f"STORED AS {e.name.upper()}",
        -290            exp.If: if_sql,
        -291            exp.Index: _index_sql,
        -292            exp.ILike: no_ilike_sql,
        -293            exp.Join: _unnest_to_explode_sql,
        -294            exp.JSONExtract: rename_func("GET_JSON_OBJECT"),
        -295            exp.JSONExtractScalar: rename_func("GET_JSON_OBJECT"),
        -296            exp.Map: var_map_sql,
        -297            exp.Min: min_or_least,
        -298            exp.VarMap: var_map_sql,
        -299            exp.Create: create_with_partitions_sql,
        -300            exp.Quantile: rename_func("PERCENTILE"),
        -301            exp.ApproxQuantile: rename_func("PERCENTILE_APPROX"),
        -302            exp.RegexpLike: lambda self, e: self.binary(e, "RLIKE"),
        -303            exp.RegexpSplit: rename_func("SPLIT"),
        -304            exp.SafeDivide: no_safe_divide_sql,
        -305            exp.SchemaCommentProperty: lambda self, e: self.naked_property(e),
        -306            exp.SetAgg: rename_func("COLLECT_SET"),
        -307            exp.Split: lambda self, e: f"SPLIT({self.sql(e, 'this')}, CONCAT('\\\\Q', {self.sql(e, 'expression')}))",
        -308            exp.StrPosition: strposition_to_locate_sql,
        -309            exp.StrToDate: _str_to_date,
        -310            exp.StrToTime: _str_to_time,
        -311            exp.StrToUnix: _str_to_unix,
        -312            exp.StructExtract: struct_extract_sql,
        -313            exp.TableFormatProperty: lambda self, e: f"USING {self.sql(e, 'this')}",
        -314            exp.TimeStrToDate: rename_func("TO_DATE"),
        -315            exp.TimeStrToTime: timestrtotime_sql,
        -316            exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"),
        -317            exp.TimeToStr: _time_to_str,
        -318            exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"),
        -319            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS STRING), '-', ''), 1, 8) AS INT)",
        -320            exp.TsOrDsAdd: lambda self, e: f"DATE_ADD({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
        -321            exp.TsOrDsToDate: _to_date_sql,
        -322            exp.TryCast: no_trycast_sql,
        -323            exp.UnixToStr: lambda self, e: self.func(
        -324                "FROM_UNIXTIME", e.this, _time_format(self, e)
        -325            ),
        -326            exp.UnixToTime: rename_func("FROM_UNIXTIME"),
        -327            exp.UnixToTimeStr: rename_func("FROM_UNIXTIME"),
        -328            exp.PartitionedByProperty: lambda self, e: f"PARTITIONED BY {self.sql(e, 'this')}",
        -329            exp.RowFormatSerdeProperty: lambda self, e: f"ROW FORMAT SERDE {self.sql(e, 'this')}",
        -330            exp.SerdeProperties: lambda self, e: self.properties(e, prefix="WITH SERDEPROPERTIES"),
        -331            exp.NumberToStr: rename_func("FORMAT_NUMBER"),
        -332            exp.LastDateOfMonth: rename_func("LAST_DAY"),
        -333        }
        -334
        -335        PROPERTIES_LOCATION = {
        -336            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
        -337            exp.FileFormatProperty: exp.Properties.Location.POST_SCHEMA,
        -338            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
        -339            exp.TableFormatProperty: exp.Properties.Location.POST_SCHEMA,
        -340        }
        -341
        -342        def arrayagg_sql(self, expression: exp.ArrayAgg) -> str:
        -343            return self.func(
        -344                "COLLECT_LIST",
        -345                expression.this.this if isinstance(expression.this, exp.Order) else expression.this,
        -346            )
        -347
        -348        def with_properties(self, properties: exp.Properties) -> str:
        -349            return self.properties(
        -350                properties,
        -351                prefix=self.seg("TBLPROPERTIES"),
        -352            )
        -353
        -354        def datatype_sql(self, expression: exp.DataType) -> str:
        -355            if (
        -356                expression.this in (exp.DataType.Type.VARCHAR, exp.DataType.Type.NVARCHAR)
        -357                and not expression.expressions
        -358            ):
        -359                expression = exp.DataType.build("text")
        -360            elif expression.this in exp.DataType.TEMPORAL_TYPES:
        -361                expression = exp.DataType.build(expression.this)
        -362            return super().datatype_sql(expression)
        +            
        281    class Generator(generator.Generator):
        +282        TYPE_MAPPING = {
        +283            **generator.Generator.TYPE_MAPPING,  # type: ignore
        +284            exp.DataType.Type.TEXT: "STRING",
        +285            exp.DataType.Type.DATETIME: "TIMESTAMP",
        +286            exp.DataType.Type.VARBINARY: "BINARY",
        +287            exp.DataType.Type.TIMESTAMPTZ: "TIMESTAMP",
        +288        }
        +289
        +290        TRANSFORMS = {
        +291            **generator.Generator.TRANSFORMS,  # type: ignore
        +292            **transforms.UNALIAS_GROUP,  # type: ignore
        +293            **transforms.ELIMINATE_QUALIFY,  # type: ignore
        +294            exp.Property: _property_sql,
        +295            exp.ApproxDistinct: approx_count_distinct_sql,
        +296            exp.ArrayConcat: rename_func("CONCAT"),
        +297            exp.ArraySize: rename_func("SIZE"),
        +298            exp.ArraySort: _array_sort,
        +299            exp.With: no_recursive_cte_sql,
        +300            exp.DateAdd: _add_date_sql,
        +301            exp.DateDiff: _date_diff_sql,
        +302            exp.DateStrToDate: rename_func("TO_DATE"),
        +303            exp.DateToDi: lambda self, e: f"CAST(DATE_FORMAT({self.sql(e, 'this')}, {Hive.dateint_format}) AS INT)",
        +304            exp.DiToDate: lambda self, e: f"TO_DATE(CAST({self.sql(e, 'this')} AS STRING), {Hive.dateint_format})",
        +305            exp.FileFormatProperty: lambda self, e: f"STORED AS {e.name.upper()}",
        +306            exp.If: if_sql,
        +307            exp.Index: _index_sql,
        +308            exp.ILike: no_ilike_sql,
        +309            exp.Join: _unnest_to_explode_sql,
        +310            exp.JSONExtract: rename_func("GET_JSON_OBJECT"),
        +311            exp.JSONExtractScalar: rename_func("GET_JSON_OBJECT"),
        +312            exp.Map: var_map_sql,
        +313            exp.Max: max_or_greatest,
        +314            exp.Min: min_or_least,
        +315            exp.VarMap: var_map_sql,
        +316            exp.Create: create_with_partitions_sql,
        +317            exp.Quantile: rename_func("PERCENTILE"),
        +318            exp.ApproxQuantile: rename_func("PERCENTILE_APPROX"),
        +319            exp.RegexpLike: lambda self, e: self.binary(e, "RLIKE"),
        +320            exp.RegexpSplit: rename_func("SPLIT"),
        +321            exp.SafeDivide: no_safe_divide_sql,
        +322            exp.SchemaCommentProperty: lambda self, e: self.naked_property(e),
        +323            exp.SetAgg: rename_func("COLLECT_SET"),
        +324            exp.Split: lambda self, e: f"SPLIT({self.sql(e, 'this')}, CONCAT('\\\\Q', {self.sql(e, 'expression')}))",
        +325            exp.StrPosition: strposition_to_locate_sql,
        +326            exp.StrToDate: _str_to_date,
        +327            exp.StrToTime: _str_to_time,
        +328            exp.StrToUnix: _str_to_unix,
        +329            exp.StructExtract: struct_extract_sql,
        +330            exp.TableFormatProperty: lambda self, e: f"USING {self.sql(e, 'this')}",
        +331            exp.TimeStrToDate: rename_func("TO_DATE"),
        +332            exp.TimeStrToTime: timestrtotime_sql,
        +333            exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"),
        +334            exp.TimeToStr: _time_to_str,
        +335            exp.TimeToUnix: rename_func("UNIX_TIMESTAMP"),
        +336            exp.TsOrDiToDi: lambda self, e: f"CAST(SUBSTR(REPLACE(CAST({self.sql(e, 'this')} AS STRING), '-', ''), 1, 8) AS INT)",
        +337            exp.TsOrDsAdd: lambda self, e: f"DATE_ADD({self.sql(e, 'this')}, {self.sql(e, 'expression')})",
        +338            exp.TsOrDsToDate: _to_date_sql,
        +339            exp.TryCast: no_trycast_sql,
        +340            exp.UnixToStr: lambda self, e: self.func(
        +341                "FROM_UNIXTIME", e.this, _time_format(self, e)
        +342            ),
        +343            exp.UnixToTime: rename_func("FROM_UNIXTIME"),
        +344            exp.UnixToTimeStr: rename_func("FROM_UNIXTIME"),
        +345            exp.PartitionedByProperty: lambda self, e: f"PARTITIONED BY {self.sql(e, 'this')}",
        +346            exp.RowFormatSerdeProperty: lambda self, e: f"ROW FORMAT SERDE {self.sql(e, 'this')}",
        +347            exp.SerdeProperties: lambda self, e: self.properties(e, prefix="WITH SERDEPROPERTIES"),
        +348            exp.NumberToStr: rename_func("FORMAT_NUMBER"),
        +349            exp.LastDateOfMonth: rename_func("LAST_DAY"),
        +350        }
        +351
        +352        PROPERTIES_LOCATION = {
        +353            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
        +354            exp.FileFormatProperty: exp.Properties.Location.POST_SCHEMA,
        +355            exp.PartitionedByProperty: exp.Properties.Location.POST_SCHEMA,
        +356            exp.TableFormatProperty: exp.Properties.Location.POST_SCHEMA,
        +357        }
        +358
        +359        LIMIT_FETCH = "LIMIT"
        +360
        +361        def arrayagg_sql(self, expression: exp.ArrayAgg) -> str:
        +362            return self.func(
        +363                "COLLECT_LIST",
        +364                expression.this.this if isinstance(expression.this, exp.Order) else expression.this,
        +365            )
        +366
        +367        def with_properties(self, properties: exp.Properties) -> str:
        +368            return self.properties(
        +369                properties,
        +370                prefix=self.seg("TBLPROPERTIES"),
        +371            )
        +372
        +373        def datatype_sql(self, expression: exp.DataType) -> str:
        +374            if (
        +375                expression.this in (exp.DataType.Type.VARCHAR, exp.DataType.Type.NVARCHAR)
        +376                and not expression.expressions
        +377            ):
        +378                expression = exp.DataType.build("text")
        +379            elif expression.this in exp.DataType.TEMPORAL_TYPES:
        +380                expression = exp.DataType.build(expression.this)
        +381            return super().datatype_sql(expression)
         
        @@ -1043,11 +1068,11 @@ Default: True
        -
        342        def arrayagg_sql(self, expression: exp.ArrayAgg) -> str:
        -343            return self.func(
        -344                "COLLECT_LIST",
        -345                expression.this.this if isinstance(expression.this, exp.Order) else expression.this,
        -346            )
        +            
        361        def arrayagg_sql(self, expression: exp.ArrayAgg) -> str:
        +362            return self.func(
        +363                "COLLECT_LIST",
        +364                expression.this.this if isinstance(expression.this, exp.Order) else expression.this,
        +365            )
         
        @@ -1065,11 +1090,11 @@ Default: True
        -
        348        def with_properties(self, properties: exp.Properties) -> str:
        -349            return self.properties(
        -350                properties,
        -351                prefix=self.seg("TBLPROPERTIES"),
        -352            )
        +            
        367        def with_properties(self, properties: exp.Properties) -> str:
        +368            return self.properties(
        +369                properties,
        +370                prefix=self.seg("TBLPROPERTIES"),
        +371            )
         
        @@ -1087,15 +1112,15 @@ Default: True
        -
        354        def datatype_sql(self, expression: exp.DataType) -> str:
        -355            if (
        -356                expression.this in (exp.DataType.Type.VARCHAR, exp.DataType.Type.NVARCHAR)
        -357                and not expression.expressions
        -358            ):
        -359                expression = exp.DataType.build("text")
        -360            elif expression.this in exp.DataType.TEMPORAL_TYPES:
        -361                expression = exp.DataType.build(expression.this)
        -362            return super().datatype_sql(expression)
        +            
        373        def datatype_sql(self, expression: exp.DataType) -> str:
        +374            if (
        +375                expression.this in (exp.DataType.Type.VARCHAR, exp.DataType.Type.NVARCHAR)
        +376                and not expression.expressions
        +377            ):
        +378                expression = exp.DataType.build("text")
        +379            elif expression.this in exp.DataType.TEMPORAL_TYPES:
        +380                expression = exp.DataType.build(expression.this)
        +381            return super().datatype_sql(expression)
         
        @@ -1192,6 +1217,7 @@ Default: True
        offset_sql
        setitem_sql
        set_sql
        +
        pragma_sql
        lock_sql
        literal_sql
        loaddata_sql
        @@ -1236,6 +1262,8 @@ Default: True
        primarykey_sql
        unique_sql
        if_sql
        +
        jsonkeyvalue_sql
        +
        jsonobject_sql
        in_sql
        in_unnest_op
        interval_sql
        diff --git a/docs/sqlglot/dialects/mysql.html b/docs/sqlglot/dialects/mysql.html index e3b8c55..166cd1a 100644 --- a/docs/sqlglot/dialects/mysql.html +++ b/docs/sqlglot/dialects/mysql.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.mysql API documentation @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • MySQL
              @@ -85,471 +85,483 @@ 3from sqlglot import exp, generator, parser, tokens 4from sqlglot.dialects.dialect import ( 5 Dialect, - 6 locate_to_strposition, - 7 min_or_least, - 8 no_ilike_sql, - 9 no_paren_current_date_sql, - 10 no_tablesample_sql, - 11 no_trycast_sql, - 12 rename_func, - 13 strposition_to_locate_sql, - 14) - 15from sqlglot.helper import seq_get - 16from sqlglot.tokens import TokenType - 17 - 18 - 19def _show_parser(*args, **kwargs): - 20 def _parse(self): - 21 return self._parse_show_mysql(*args, **kwargs) - 22 - 23 return _parse + 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 - 26def _date_trunc_sql(self, expression): - 27 expr = self.sql(expression, "this") - 28 unit = expression.text("unit") - 29 - 30 if unit == "day": - 31 return f"DATE({expr})" - 32 - 33 if unit == "week": - 34 concat = f"CONCAT(YEAR({expr}), ' ', WEEK({expr}, 1), ' 1')" - 35 date_format = "%Y %u %w" - 36 elif unit == "month": - 37 concat = f"CONCAT(YEAR({expr}), ' ', MONTH({expr}), ' 1')" - 38 date_format = "%Y %c %e" - 39 elif unit == "quarter": - 40 concat = f"CONCAT(YEAR({expr}), ' ', QUARTER({expr}) * 3 - 2, ' 1')" - 41 date_format = "%Y %c %e" - 42 elif unit == "year": - 43 concat = f"CONCAT(YEAR({expr}), ' 1 1')" - 44 date_format = "%Y %c %e" - 45 else: - 46 self.unsupported(f"Unexpected interval unit: {unit}") - 47 return f"DATE({expr})" - 48 - 49 return f"STR_TO_DATE({concat}, '{date_format}')" + 25 return _parse + 26 + 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})" + 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')" + 43 date_format = "%Y %c %e" + 44 elif unit == "year": + 45 concat = f"CONCAT(YEAR({expr}), ' 1 1')" + 46 date_format = "%Y %c %e" + 47 else: + 48 self.unsupported(f"Unexpected interval unit: {unit}") + 49 return f"DATE({expr})" 50 - 51 - 52def _str_to_date(args): - 53 date_format = MySQL.format_time(seq_get(args, 1)) - 54 return exp.StrToDate(this=seq_get(args, 0), format=date_format) - 55 - 56 - 57def _str_to_date_sql(self, expression): - 58 date_format = self.format_time(expression) - 59 return f"STR_TO_DATE({self.sql(expression.this)}, {date_format})" - 60 - 61 - 62def _trim_sql(self, expression): - 63 target = self.sql(expression, "this") - 64 trim_type = self.sql(expression, "position") - 65 remove_chars = self.sql(expression, "expression") - 66 - 67 # Use TRIM/LTRIM/RTRIM syntax if the expression isn't mysql-specific - 68 if not remove_chars: - 69 return self.trim_sql(expression) - 70 - 71 trim_type = f"{trim_type} " if trim_type else "" - 72 remove_chars = f"{remove_chars} " if remove_chars else "" - 73 from_part = "FROM " if trim_type or remove_chars else "" - 74 return f"TRIM({trim_type}{remove_chars}{from_part}{target})" - 75 - 76 - 77def _date_add(expression_class): - 78 def func(args): - 79 interval = seq_get(args, 1) - 80 return expression_class( - 81 this=seq_get(args, 0), - 82 expression=interval.this, - 83 unit=exp.Literal.string(interval.text("unit").lower()), - 84 ) - 85 - 86 return func + 51 return f"STR_TO_DATE({concat}, '{date_format}')" + 52 + 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 - 89def _date_add_sql(kind): - 90 def func(self, expression): - 91 this = self.sql(expression, "this") - 92 unit = expression.text("unit").upper() or "DAY" - 93 return ( - 94 f"DATE_{kind}({this}, {self.sql(exp.Interval(this=expression.expression, unit=unit))})" - 95 ) - 96 - 97 return func + 88 return func + 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 -100class MySQL(Dialect): -101 time_format = "'%Y-%m-%d %T'" -102 -103 # https://prestodb.io/docs/current/functions/datetime.html#mysql-date-functions -104 time_mapping = { -105 "%M": "%B", -106 "%c": "%-m", -107 "%e": "%-d", -108 "%h": "%I", -109 "%i": "%M", -110 "%s": "%S", -111 "%S": "%S", -112 "%u": "%W", -113 "%k": "%-H", -114 "%l": "%-I", -115 "%T": "%H:%M:%S", -116 } -117 -118 class Tokenizer(tokens.Tokenizer): -119 QUOTES = ["'", '"'] -120 COMMENTS = ["--", "#", ("/*", "*/")] -121 IDENTIFIERS = ["`"] -122 STRING_ESCAPES = ["'", "\\"] -123 BIT_STRINGS = [("b'", "'"), ("B'", "'"), ("0b", "")] -124 HEX_STRINGS = [("x'", "'"), ("X'", "'"), ("0x", "")] -125 -126 KEYWORDS = { -127 **tokens.Tokenizer.KEYWORDS, -128 "MEDIUMTEXT": TokenType.MEDIUMTEXT, -129 "LONGTEXT": TokenType.LONGTEXT, -130 "MEDIUMBLOB": TokenType.MEDIUMBLOB, -131 "LONGBLOB": TokenType.LONGBLOB, -132 "START": TokenType.BEGIN, -133 "SEPARATOR": TokenType.SEPARATOR, -134 "_ARMSCII8": TokenType.INTRODUCER, -135 "_ASCII": TokenType.INTRODUCER, -136 "_BIG5": TokenType.INTRODUCER, -137 "_BINARY": TokenType.INTRODUCER, -138 "_CP1250": TokenType.INTRODUCER, -139 "_CP1251": TokenType.INTRODUCER, -140 "_CP1256": TokenType.INTRODUCER, -141 "_CP1257": TokenType.INTRODUCER, -142 "_CP850": TokenType.INTRODUCER, -143 "_CP852": TokenType.INTRODUCER, -144 "_CP866": TokenType.INTRODUCER, -145 "_CP932": TokenType.INTRODUCER, -146 "_DEC8": TokenType.INTRODUCER, -147 "_EUCJPMS": TokenType.INTRODUCER, -148 "_EUCKR": TokenType.INTRODUCER, -149 "_GB18030": TokenType.INTRODUCER, -150 "_GB2312": TokenType.INTRODUCER, -151 "_GBK": TokenType.INTRODUCER, -152 "_GEOSTD8": TokenType.INTRODUCER, -153 "_GREEK": TokenType.INTRODUCER, -154 "_HEBREW": TokenType.INTRODUCER, -155 "_HP8": TokenType.INTRODUCER, -156 "_KEYBCS2": TokenType.INTRODUCER, -157 "_KOI8R": TokenType.INTRODUCER, -158 "_KOI8U": TokenType.INTRODUCER, -159 "_LATIN1": TokenType.INTRODUCER, -160 "_LATIN2": TokenType.INTRODUCER, -161 "_LATIN5": TokenType.INTRODUCER, -162 "_LATIN7": TokenType.INTRODUCER, -163 "_MACCE": TokenType.INTRODUCER, -164 "_MACROMAN": TokenType.INTRODUCER, -165 "_SJIS": TokenType.INTRODUCER, -166 "_SWE7": TokenType.INTRODUCER, -167 "_TIS620": TokenType.INTRODUCER, -168 "_UCS2": TokenType.INTRODUCER, -169 "_UJIS": TokenType.INTRODUCER, -170 # https://dev.mysql.com/doc/refman/8.0/en/string-literals.html -171 "_UTF8": TokenType.INTRODUCER, -172 "_UTF16": TokenType.INTRODUCER, -173 "_UTF16LE": TokenType.INTRODUCER, -174 "_UTF32": TokenType.INTRODUCER, -175 "_UTF8MB3": TokenType.INTRODUCER, -176 "_UTF8MB4": TokenType.INTRODUCER, -177 "@@": TokenType.SESSION_PARAMETER, -178 } -179 -180 COMMANDS = tokens.Tokenizer.COMMANDS - {TokenType.SHOW} + 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 } +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 class Parser(parser.Parser): -183 FUNC_TOKENS = {*parser.Parser.FUNC_TOKENS, TokenType.SCHEMA, TokenType.DATABASE} # type: ignore -184 -185 FUNCTIONS = { -186 **parser.Parser.FUNCTIONS, # type: ignore -187 "DATE_ADD": _date_add(exp.DateAdd), -188 "DATE_SUB": _date_add(exp.DateSub), -189 "STR_TO_DATE": _str_to_date, -190 "LOCATE": locate_to_strposition, -191 "INSTR": lambda args: exp.StrPosition(substr=seq_get(args, 1), this=seq_get(args, 0)), -192 "LEFT": lambda args: exp.Substring( -193 this=seq_get(args, 0), start=exp.Literal.number(1), length=seq_get(args, 1) -194 ), -195 } -196 -197 FUNCTION_PARSERS = { -198 **parser.Parser.FUNCTION_PARSERS, # type: ignore -199 "GROUP_CONCAT": lambda self: self.expression( -200 exp.GroupConcat, -201 this=self._parse_lambda(), -202 separator=self._match(TokenType.SEPARATOR) and self._parse_field(), -203 ), -204 } -205 -206 PROPERTY_PARSERS = { -207 **parser.Parser.PROPERTY_PARSERS, # type: ignore -208 "ENGINE": lambda self: self._parse_property_assignment(exp.EngineProperty), -209 } -210 -211 STATEMENT_PARSERS = { -212 **parser.Parser.STATEMENT_PARSERS, # type: ignore -213 TokenType.SHOW: lambda self: self._parse_show(), -214 } -215 -216 SHOW_PARSERS = { -217 "BINARY LOGS": _show_parser("BINARY LOGS"), -218 "MASTER LOGS": _show_parser("BINARY LOGS"), -219 "BINLOG EVENTS": _show_parser("BINLOG EVENTS"), -220 "CHARACTER SET": _show_parser("CHARACTER SET"), -221 "CHARSET": _show_parser("CHARACTER SET"), -222 "COLLATION": _show_parser("COLLATION"), -223 "FULL COLUMNS": _show_parser("COLUMNS", target="FROM", full=True), -224 "COLUMNS": _show_parser("COLUMNS", target="FROM"), -225 "CREATE DATABASE": _show_parser("CREATE DATABASE", target=True), -226 "CREATE EVENT": _show_parser("CREATE EVENT", target=True), -227 "CREATE FUNCTION": _show_parser("CREATE FUNCTION", target=True), -228 "CREATE PROCEDURE": _show_parser("CREATE PROCEDURE", target=True), -229 "CREATE TABLE": _show_parser("CREATE TABLE", target=True), -230 "CREATE TRIGGER": _show_parser("CREATE TRIGGER", target=True), -231 "CREATE VIEW": _show_parser("CREATE VIEW", target=True), -232 "DATABASES": _show_parser("DATABASES"), -233 "ENGINE": _show_parser("ENGINE", target=True), -234 "STORAGE ENGINES": _show_parser("ENGINES"), -235 "ENGINES": _show_parser("ENGINES"), -236 "ERRORS": _show_parser("ERRORS"), -237 "EVENTS": _show_parser("EVENTS"), -238 "FUNCTION CODE": _show_parser("FUNCTION CODE", target=True), -239 "FUNCTION STATUS": _show_parser("FUNCTION STATUS"), -240 "GRANTS": _show_parser("GRANTS", target="FOR"), -241 "INDEX": _show_parser("INDEX", target="FROM"), -242 "MASTER STATUS": _show_parser("MASTER STATUS"), -243 "OPEN TABLES": _show_parser("OPEN TABLES"), -244 "PLUGINS": _show_parser("PLUGINS"), -245 "PROCEDURE CODE": _show_parser("PROCEDURE CODE", target=True), -246 "PROCEDURE STATUS": _show_parser("PROCEDURE STATUS"), -247 "PRIVILEGES": _show_parser("PRIVILEGES"), -248 "FULL PROCESSLIST": _show_parser("PROCESSLIST", full=True), -249 "PROCESSLIST": _show_parser("PROCESSLIST"), -250 "PROFILE": _show_parser("PROFILE"), -251 "PROFILES": _show_parser("PROFILES"), -252 "RELAYLOG EVENTS": _show_parser("RELAYLOG EVENTS"), -253 "REPLICAS": _show_parser("REPLICAS"), -254 "SLAVE HOSTS": _show_parser("REPLICAS"), -255 "REPLICA STATUS": _show_parser("REPLICA STATUS"), -256 "SLAVE STATUS": _show_parser("REPLICA STATUS"), -257 "GLOBAL STATUS": _show_parser("STATUS", global_=True), -258 "SESSION STATUS": _show_parser("STATUS"), -259 "STATUS": _show_parser("STATUS"), -260 "TABLE STATUS": _show_parser("TABLE STATUS"), -261 "FULL TABLES": _show_parser("TABLES", full=True), -262 "TABLES": _show_parser("TABLES"), -263 "TRIGGERS": _show_parser("TRIGGERS"), -264 "GLOBAL VARIABLES": _show_parser("VARIABLES", global_=True), -265 "SESSION VARIABLES": _show_parser("VARIABLES"), -266 "VARIABLES": _show_parser("VARIABLES"), -267 "WARNINGS": _show_parser("WARNINGS"), -268 } -269 -270 SET_PARSERS = { -271 **parser.Parser.SET_PARSERS, -272 "PERSIST": lambda self: self._parse_set_item_assignment("PERSIST"), -273 "PERSIST_ONLY": lambda self: self._parse_set_item_assignment("PERSIST_ONLY"), -274 "CHARACTER SET": lambda self: self._parse_set_item_charset("CHARACTER SET"), -275 "CHARSET": lambda self: self._parse_set_item_charset("CHARACTER SET"), -276 "NAMES": lambda self: self._parse_set_item_names(), -277 } -278 -279 PROFILE_TYPES = { -280 "ALL", -281 "BLOCK IO", -282 "CONTEXT SWITCHES", -283 "CPU", -284 "IPC", -285 "MEMORY", -286 "PAGE FAULTS", -287 "SOURCE", -288 "SWAPS", -289 } -290 -291 def _parse_show_mysql(self, this, target=False, full=None, global_=None): -292 if target: -293 if isinstance(target, str): -294 self._match_text_seq(target) -295 target_id = self._parse_id_var() -296 else: -297 target_id = None -298 -299 log = self._parse_string() if self._match_text_seq("IN") else None +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 def _parse_show_mysql(self, this, target=False, full=None, global_=None): +294 if target: +295 if isinstance(target, str): +296 self._match_text_seq(target) +297 target_id = self._parse_id_var() +298 else: +299 target_id = None 300 -301 if this in {"BINLOG EVENTS", "RELAYLOG EVENTS"}: -302 position = self._parse_number() if self._match_text_seq("FROM") else None -303 db = None -304 else: -305 position = None -306 db = self._parse_id_var() if self._match_text_seq("FROM") else None -307 -308 channel = self._parse_id_var() if self._match_text_seq("FOR", "CHANNEL") else None +301 log = self._parse_string() if self._match_text_seq("IN") else None +302 +303 if this in {"BINLOG EVENTS", "RELAYLOG EVENTS"}: +304 position = self._parse_number() if self._match_text_seq("FROM") else None +305 db = None +306 else: +307 position = None +308 db = None 309 -310 like = self._parse_string() if self._match_text_seq("LIKE") else None -311 where = self._parse_where() -312 -313 if this == "PROFILE": -314 types = self._parse_csv(lambda: self._parse_var_from_options(self.PROFILE_TYPES)) -315 query = self._parse_number() if self._match_text_seq("FOR", "QUERY") else None -316 offset = self._parse_number() if self._match_text_seq("OFFSET") else None -317 limit = self._parse_number() if self._match_text_seq("LIMIT") else None -318 else: -319 types, query = None, None -320 offset, limit = self._parse_oldstyle_limit() -321 -322 mutex = True if self._match_text_seq("MUTEX") else None -323 mutex = False if self._match_text_seq("STATUS") else mutex -324 -325 return self.expression( -326 exp.Show, -327 this=this, -328 target=target_id, -329 full=full, -330 log=log, -331 position=position, -332 db=db, -333 channel=channel, -334 like=like, -335 where=where, -336 types=types, -337 query=query, -338 offset=offset, -339 limit=limit, -340 mutex=mutex, -341 **{"global": global_}, -342 ) -343 -344 def _parse_oldstyle_limit(self): -345 limit = None -346 offset = None -347 if self._match_text_seq("LIMIT"): -348 parts = self._parse_csv(self._parse_number) -349 if len(parts) == 1: -350 limit = parts[0] -351 elif len(parts) == 2: -352 limit = parts[1] -353 offset = parts[0] -354 return offset, limit -355 -356 def _parse_set_item_charset(self, kind): -357 this = self._parse_string() or self._parse_id_var() -358 -359 return self.expression( -360 exp.SetItem, -361 this=this, -362 kind=kind, -363 ) -364 -365 def _parse_set_item_names(self): -366 charset = self._parse_string() or self._parse_id_var() -367 if self._match_text_seq("COLLATE"): -368 collate = self._parse_string() or self._parse_id_var() -369 else: -370 collate = None -371 return self.expression( -372 exp.SetItem, -373 this=charset, -374 collate=collate, -375 kind="NAMES", -376 ) -377 -378 class Generator(generator.Generator): -379 LOCKING_READS_SUPPORTED = True -380 NULL_ORDERING_SUPPORTED = False -381 -382 TRANSFORMS = { -383 **generator.Generator.TRANSFORMS, # type: ignore -384 exp.CurrentDate: no_paren_current_date_sql, -385 exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP", -386 exp.ILike: no_ilike_sql, -387 exp.Min: min_or_least, -388 exp.TableSample: no_tablesample_sql, -389 exp.TryCast: no_trycast_sql, -390 exp.DateAdd: _date_add_sql("ADD"), -391 exp.DateDiff: lambda self, e: f"DATEDIFF({self.format_args(e.this, e.expression)})", -392 exp.DateSub: _date_add_sql("SUB"), -393 exp.DateTrunc: _date_trunc_sql, -394 exp.DayOfWeek: rename_func("DAYOFWEEK"), -395 exp.DayOfMonth: rename_func("DAYOFMONTH"), -396 exp.DayOfYear: rename_func("DAYOFYEAR"), -397 exp.WeekOfYear: rename_func("WEEKOFYEAR"), -398 exp.GroupConcat: lambda self, e: f"""GROUP_CONCAT({self.sql(e, "this")} SEPARATOR {self.sql(e, "separator") or "','"})""", -399 exp.StrToDate: _str_to_date_sql, -400 exp.StrToTime: _str_to_date_sql, -401 exp.Trim: _trim_sql, -402 exp.NullSafeEQ: lambda self, e: self.binary(e, "<=>"), -403 exp.NullSafeNEQ: lambda self, e: self.not_sql(self.binary(e, "<=>")), -404 exp.StrPosition: strposition_to_locate_sql, -405 } -406 -407 TYPE_MAPPING = generator.Generator.TYPE_MAPPING.copy() -408 TYPE_MAPPING.pop(exp.DataType.Type.MEDIUMTEXT) -409 TYPE_MAPPING.pop(exp.DataType.Type.LONGTEXT) -410 TYPE_MAPPING.pop(exp.DataType.Type.MEDIUMBLOB) -411 TYPE_MAPPING.pop(exp.DataType.Type.LONGBLOB) -412 -413 PROPERTIES_LOCATION = { -414 **generator.Generator.PROPERTIES_LOCATION, # type: ignore -415 exp.TransientProperty: exp.Properties.Location.UNSUPPORTED, -416 } -417 -418 def show_sql(self, expression): -419 this = f" {expression.name}" -420 full = " FULL" if expression.args.get("full") else "" -421 global_ = " GLOBAL" if expression.args.get("global") else "" +310 if self._match(TokenType.FROM): +311 db = self._parse_id_var() +312 elif self._match(TokenType.DOT): +313 db = target_id +314 target_id = self._parse_id_var() +315 +316 channel = self._parse_id_var() if self._match_text_seq("FOR", "CHANNEL") else None +317 +318 like = self._parse_string() if self._match_text_seq("LIKE") else None +319 where = self._parse_where() +320 +321 if this == "PROFILE": +322 types = self._parse_csv(lambda: self._parse_var_from_options(self.PROFILE_TYPES)) +323 query = self._parse_number() if self._match_text_seq("FOR", "QUERY") else None +324 offset = self._parse_number() if self._match_text_seq("OFFSET") else None +325 limit = self._parse_number() if self._match_text_seq("LIMIT") else None +326 else: +327 types, query = None, None +328 offset, limit = self._parse_oldstyle_limit() +329 +330 mutex = True if self._match_text_seq("MUTEX") else None +331 mutex = False if self._match_text_seq("STATUS") else mutex +332 +333 return self.expression( +334 exp.Show, +335 this=this, +336 target=target_id, +337 full=full, +338 log=log, +339 position=position, +340 db=db, +341 channel=channel, +342 like=like, +343 where=where, +344 types=types, +345 query=query, +346 offset=offset, +347 limit=limit, +348 mutex=mutex, +349 **{"global": global_}, +350 ) +351 +352 def _parse_oldstyle_limit(self): +353 limit = None +354 offset = None +355 if self._match_text_seq("LIMIT"): +356 parts = self._parse_csv(self._parse_number) +357 if len(parts) == 1: +358 limit = parts[0] +359 elif len(parts) == 2: +360 limit = parts[1] +361 offset = parts[0] +362 return offset, limit +363 +364 def _parse_set_item_charset(self, kind): +365 this = self._parse_string() or self._parse_id_var() +366 +367 return self.expression( +368 exp.SetItem, +369 this=this, +370 kind=kind, +371 ) +372 +373 def _parse_set_item_names(self): +374 charset = self._parse_string() or self._parse_id_var() +375 if self._match_text_seq("COLLATE"): +376 collate = self._parse_string() or self._parse_id_var() +377 else: +378 collate = None +379 return self.expression( +380 exp.SetItem, +381 this=charset, +382 collate=collate, +383 kind="NAMES", +384 ) +385 +386 class Generator(generator.Generator): +387 LOCKING_READS_SUPPORTED = True +388 NULL_ORDERING_SUPPORTED = False +389 +390 TRANSFORMS = { +391 **generator.Generator.TRANSFORMS, # type: ignore +392 exp.CurrentDate: no_paren_current_date_sql, +393 exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP", +394 exp.ILike: no_ilike_sql, +395 exp.JSONExtractScalar: arrow_json_extract_scalar_sql, +396 exp.Max: max_or_greatest, +397 exp.Min: min_or_least, +398 exp.TableSample: no_tablesample_sql, +399 exp.TryCast: no_trycast_sql, +400 exp.DateAdd: _date_add_sql("ADD"), +401 exp.DateDiff: lambda self, e: f"DATEDIFF({self.format_args(e.this, e.expression)})", +402 exp.DateSub: _date_add_sql("SUB"), +403 exp.DateTrunc: _date_trunc_sql, +404 exp.DayOfWeek: rename_func("DAYOFWEEK"), +405 exp.DayOfMonth: rename_func("DAYOFMONTH"), +406 exp.DayOfYear: rename_func("DAYOFYEAR"), +407 exp.WeekOfYear: rename_func("WEEKOFYEAR"), +408 exp.GroupConcat: lambda self, e: f"""GROUP_CONCAT({self.sql(e, "this")} SEPARATOR {self.sql(e, "separator") or "','"})""", +409 exp.StrToDate: _str_to_date_sql, +410 exp.StrToTime: _str_to_date_sql, +411 exp.Trim: _trim_sql, +412 exp.NullSafeEQ: lambda self, e: self.binary(e, "<=>"), +413 exp.NullSafeNEQ: lambda self, e: self.not_sql(self.binary(e, "<=>")), +414 exp.StrPosition: strposition_to_locate_sql, +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 target = self.sql(expression, "target") -424 target = f" {target}" if target else "" -425 if expression.name in {"COLUMNS", "INDEX"}: -426 target = f" FROM{target}" -427 elif expression.name == "GRANTS": -428 target = f" FOR{target}" +423 PROPERTIES_LOCATION = { +424 **generator.Generator.PROPERTIES_LOCATION, # type: ignore +425 exp.TransientProperty: exp.Properties.Location.UNSUPPORTED, +426 } +427 +428 LIMIT_FETCH = "LIMIT" 429 -430 db = self._prefixed_sql("FROM", expression, "db") -431 -432 like = self._prefixed_sql("LIKE", expression, "like") -433 where = self.sql(expression, "where") +430 def show_sql(self, expression): +431 this = f" {expression.name}" +432 full = " FULL" if expression.args.get("full") else "" +433 global_ = " GLOBAL" if expression.args.get("global") else "" 434 -435 types = self.expressions(expression, key="types") -436 types = f" {types}" if types else types -437 query = self._prefixed_sql("FOR QUERY", expression, "query") -438 -439 if expression.name == "PROFILE": -440 offset = self._prefixed_sql("OFFSET", expression, "offset") -441 limit = self._prefixed_sql("LIMIT", expression, "limit") -442 else: -443 offset = "" -444 limit = self._oldstyle_limit_sql(expression) -445 -446 log = self._prefixed_sql("IN", expression, "log") -447 position = self._prefixed_sql("FROM", expression, "position") -448 -449 channel = self._prefixed_sql("FOR CHANNEL", expression, "channel") +435 target = self.sql(expression, "target") +436 target = f" {target}" if target else "" +437 if expression.name in {"COLUMNS", "INDEX"}: +438 target = f" FROM{target}" +439 elif expression.name == "GRANTS": +440 target = f" FOR{target}" +441 +442 db = self._prefixed_sql("FROM", expression, "db") +443 +444 like = self._prefixed_sql("LIKE", expression, "like") +445 where = self.sql(expression, "where") +446 +447 types = self.expressions(expression, key="types") +448 types = f" {types}" if types else types +449 query = self._prefixed_sql("FOR QUERY", expression, "query") 450 -451 if expression.name == "ENGINE": -452 mutex_or_status = " MUTEX" if expression.args.get("mutex") else " STATUS" -453 else: -454 mutex_or_status = "" -455 -456 return f"SHOW{full}{global_}{this}{target}{types}{db}{query}{log}{position}{channel}{mutex_or_status}{like}{where}{offset}{limit}" +451 if expression.name == "PROFILE": +452 offset = self._prefixed_sql("OFFSET", expression, "offset") +453 limit = self._prefixed_sql("LIMIT", expression, "limit") +454 else: +455 offset = "" +456 limit = self._oldstyle_limit_sql(expression) 457 -458 def _prefixed_sql(self, prefix, expression, arg): -459 sql = self.sql(expression, arg) -460 if not sql: -461 return "" -462 return f" {prefix} {sql}" -463 -464 def _oldstyle_limit_sql(self, expression): -465 limit = self.sql(expression, "limit") -466 offset = self.sql(expression, "offset") -467 if limit: -468 limit_offset = f"{offset}, {limit}" if offset else limit -469 return f" LIMIT {limit_offset}" -470 return "" +458 log = self._prefixed_sql("IN", expression, "log") +459 position = self._prefixed_sql("FROM", expression, "position") +460 +461 channel = self._prefixed_sql("FOR CHANNEL", expression, "channel") +462 +463 if expression.name == "ENGINE": +464 mutex_or_status = " MUTEX" if expression.args.get("mutex") else " STATUS" +465 else: +466 mutex_or_status = "" +467 +468 return f"SHOW{full}{global_}{this}{target}{types}{db}{query}{log}{position}{channel}{mutex_or_status}{like}{where}{offset}{limit}" +469 +470 def _prefixed_sql(self, prefix, expression, arg): +471 sql = self.sql(expression, arg) +472 if not sql: +473 return "" +474 return f" {prefix} {sql}" +475 +476 def _oldstyle_limit_sql(self, expression): +477 limit = self.sql(expression, "limit") +478 offset = self.sql(expression, "offset") +479 if limit: +480 limit_offset = f"{offset}, {limit}" if offset else limit +481 return f" LIMIT {limit_offset}" +482 return ""
        @@ -565,377 +577,387 @@ -
        101class MySQL(Dialect):
        -102    time_format = "'%Y-%m-%d %T'"
        -103
        -104    # https://prestodb.io/docs/current/functions/datetime.html#mysql-date-functions
        -105    time_mapping = {
        -106        "%M": "%B",
        -107        "%c": "%-m",
        -108        "%e": "%-d",
        -109        "%h": "%I",
        -110        "%i": "%M",
        -111        "%s": "%S",
        -112        "%S": "%S",
        -113        "%u": "%W",
        -114        "%k": "%-H",
        -115        "%l": "%-I",
        -116        "%T": "%H:%M:%S",
        -117    }
        -118
        -119    class Tokenizer(tokens.Tokenizer):
        -120        QUOTES = ["'", '"']
        -121        COMMENTS = ["--", "#", ("/*", "*/")]
        -122        IDENTIFIERS = ["`"]
        -123        STRING_ESCAPES = ["'", "\\"]
        -124        BIT_STRINGS = [("b'", "'"), ("B'", "'"), ("0b", "")]
        -125        HEX_STRINGS = [("x'", "'"), ("X'", "'"), ("0x", "")]
        -126
        -127        KEYWORDS = {
        -128            **tokens.Tokenizer.KEYWORDS,
        -129            "MEDIUMTEXT": TokenType.MEDIUMTEXT,
        -130            "LONGTEXT": TokenType.LONGTEXT,
        -131            "MEDIUMBLOB": TokenType.MEDIUMBLOB,
        -132            "LONGBLOB": TokenType.LONGBLOB,
        -133            "START": TokenType.BEGIN,
        -134            "SEPARATOR": TokenType.SEPARATOR,
        -135            "_ARMSCII8": TokenType.INTRODUCER,
        -136            "_ASCII": TokenType.INTRODUCER,
        -137            "_BIG5": TokenType.INTRODUCER,
        -138            "_BINARY": TokenType.INTRODUCER,
        -139            "_CP1250": TokenType.INTRODUCER,
        -140            "_CP1251": TokenType.INTRODUCER,
        -141            "_CP1256": TokenType.INTRODUCER,
        -142            "_CP1257": TokenType.INTRODUCER,
        -143            "_CP850": TokenType.INTRODUCER,
        -144            "_CP852": TokenType.INTRODUCER,
        -145            "_CP866": TokenType.INTRODUCER,
        -146            "_CP932": TokenType.INTRODUCER,
        -147            "_DEC8": TokenType.INTRODUCER,
        -148            "_EUCJPMS": TokenType.INTRODUCER,
        -149            "_EUCKR": TokenType.INTRODUCER,
        -150            "_GB18030": TokenType.INTRODUCER,
        -151            "_GB2312": TokenType.INTRODUCER,
        -152            "_GBK": TokenType.INTRODUCER,
        -153            "_GEOSTD8": TokenType.INTRODUCER,
        -154            "_GREEK": TokenType.INTRODUCER,
        -155            "_HEBREW": TokenType.INTRODUCER,
        -156            "_HP8": TokenType.INTRODUCER,
        -157            "_KEYBCS2": TokenType.INTRODUCER,
        -158            "_KOI8R": TokenType.INTRODUCER,
        -159            "_KOI8U": TokenType.INTRODUCER,
        -160            "_LATIN1": TokenType.INTRODUCER,
        -161            "_LATIN2": TokenType.INTRODUCER,
        -162            "_LATIN5": TokenType.INTRODUCER,
        -163            "_LATIN7": TokenType.INTRODUCER,
        -164            "_MACCE": TokenType.INTRODUCER,
        -165            "_MACROMAN": TokenType.INTRODUCER,
        -166            "_SJIS": TokenType.INTRODUCER,
        -167            "_SWE7": TokenType.INTRODUCER,
        -168            "_TIS620": TokenType.INTRODUCER,
        -169            "_UCS2": TokenType.INTRODUCER,
        -170            "_UJIS": TokenType.INTRODUCER,
        -171            # https://dev.mysql.com/doc/refman/8.0/en/string-literals.html
        -172            "_UTF8": TokenType.INTRODUCER,
        -173            "_UTF16": TokenType.INTRODUCER,
        -174            "_UTF16LE": TokenType.INTRODUCER,
        -175            "_UTF32": TokenType.INTRODUCER,
        -176            "_UTF8MB3": TokenType.INTRODUCER,
        -177            "_UTF8MB4": TokenType.INTRODUCER,
        -178            "@@": TokenType.SESSION_PARAMETER,
        -179        }
        -180
        -181        COMMANDS = tokens.Tokenizer.COMMANDS - {TokenType.SHOW}
        +            
        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    }
        +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    class Parser(parser.Parser):
        -184        FUNC_TOKENS = {*parser.Parser.FUNC_TOKENS, TokenType.SCHEMA, TokenType.DATABASE}  # type: ignore
        -185
        -186        FUNCTIONS = {
        -187            **parser.Parser.FUNCTIONS,  # type: ignore
        -188            "DATE_ADD": _date_add(exp.DateAdd),
        -189            "DATE_SUB": _date_add(exp.DateSub),
        -190            "STR_TO_DATE": _str_to_date,
        -191            "LOCATE": locate_to_strposition,
        -192            "INSTR": lambda args: exp.StrPosition(substr=seq_get(args, 1), this=seq_get(args, 0)),
        -193            "LEFT": lambda args: exp.Substring(
        -194                this=seq_get(args, 0), start=exp.Literal.number(1), length=seq_get(args, 1)
        -195            ),
        -196        }
        -197
        -198        FUNCTION_PARSERS = {
        -199            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
        -200            "GROUP_CONCAT": lambda self: self.expression(
        -201                exp.GroupConcat,
        -202                this=self._parse_lambda(),
        -203                separator=self._match(TokenType.SEPARATOR) and self._parse_field(),
        -204            ),
        -205        }
        -206
        -207        PROPERTY_PARSERS = {
        -208            **parser.Parser.PROPERTY_PARSERS,  # type: ignore
        -209            "ENGINE": lambda self: self._parse_property_assignment(exp.EngineProperty),
        -210        }
        -211
        -212        STATEMENT_PARSERS = {
        -213            **parser.Parser.STATEMENT_PARSERS,  # type: ignore
        -214            TokenType.SHOW: lambda self: self._parse_show(),
        -215        }
        -216
        -217        SHOW_PARSERS = {
        -218            "BINARY LOGS": _show_parser("BINARY LOGS"),
        -219            "MASTER LOGS": _show_parser("BINARY LOGS"),
        -220            "BINLOG EVENTS": _show_parser("BINLOG EVENTS"),
        -221            "CHARACTER SET": _show_parser("CHARACTER SET"),
        -222            "CHARSET": _show_parser("CHARACTER SET"),
        -223            "COLLATION": _show_parser("COLLATION"),
        -224            "FULL COLUMNS": _show_parser("COLUMNS", target="FROM", full=True),
        -225            "COLUMNS": _show_parser("COLUMNS", target="FROM"),
        -226            "CREATE DATABASE": _show_parser("CREATE DATABASE", target=True),
        -227            "CREATE EVENT": _show_parser("CREATE EVENT", target=True),
        -228            "CREATE FUNCTION": _show_parser("CREATE FUNCTION", target=True),
        -229            "CREATE PROCEDURE": _show_parser("CREATE PROCEDURE", target=True),
        -230            "CREATE TABLE": _show_parser("CREATE TABLE", target=True),
        -231            "CREATE TRIGGER": _show_parser("CREATE TRIGGER", target=True),
        -232            "CREATE VIEW": _show_parser("CREATE VIEW", target=True),
        -233            "DATABASES": _show_parser("DATABASES"),
        -234            "ENGINE": _show_parser("ENGINE", target=True),
        -235            "STORAGE ENGINES": _show_parser("ENGINES"),
        -236            "ENGINES": _show_parser("ENGINES"),
        -237            "ERRORS": _show_parser("ERRORS"),
        -238            "EVENTS": _show_parser("EVENTS"),
        -239            "FUNCTION CODE": _show_parser("FUNCTION CODE", target=True),
        -240            "FUNCTION STATUS": _show_parser("FUNCTION STATUS"),
        -241            "GRANTS": _show_parser("GRANTS", target="FOR"),
        -242            "INDEX": _show_parser("INDEX", target="FROM"),
        -243            "MASTER STATUS": _show_parser("MASTER STATUS"),
        -244            "OPEN TABLES": _show_parser("OPEN TABLES"),
        -245            "PLUGINS": _show_parser("PLUGINS"),
        -246            "PROCEDURE CODE": _show_parser("PROCEDURE CODE", target=True),
        -247            "PROCEDURE STATUS": _show_parser("PROCEDURE STATUS"),
        -248            "PRIVILEGES": _show_parser("PRIVILEGES"),
        -249            "FULL PROCESSLIST": _show_parser("PROCESSLIST", full=True),
        -250            "PROCESSLIST": _show_parser("PROCESSLIST"),
        -251            "PROFILE": _show_parser("PROFILE"),
        -252            "PROFILES": _show_parser("PROFILES"),
        -253            "RELAYLOG EVENTS": _show_parser("RELAYLOG EVENTS"),
        -254            "REPLICAS": _show_parser("REPLICAS"),
        -255            "SLAVE HOSTS": _show_parser("REPLICAS"),
        -256            "REPLICA STATUS": _show_parser("REPLICA STATUS"),
        -257            "SLAVE STATUS": _show_parser("REPLICA STATUS"),
        -258            "GLOBAL STATUS": _show_parser("STATUS", global_=True),
        -259            "SESSION STATUS": _show_parser("STATUS"),
        -260            "STATUS": _show_parser("STATUS"),
        -261            "TABLE STATUS": _show_parser("TABLE STATUS"),
        -262            "FULL TABLES": _show_parser("TABLES", full=True),
        -263            "TABLES": _show_parser("TABLES"),
        -264            "TRIGGERS": _show_parser("TRIGGERS"),
        -265            "GLOBAL VARIABLES": _show_parser("VARIABLES", global_=True),
        -266            "SESSION VARIABLES": _show_parser("VARIABLES"),
        -267            "VARIABLES": _show_parser("VARIABLES"),
        -268            "WARNINGS": _show_parser("WARNINGS"),
        -269        }
        -270
        -271        SET_PARSERS = {
        -272            **parser.Parser.SET_PARSERS,
        -273            "PERSIST": lambda self: self._parse_set_item_assignment("PERSIST"),
        -274            "PERSIST_ONLY": lambda self: self._parse_set_item_assignment("PERSIST_ONLY"),
        -275            "CHARACTER SET": lambda self: self._parse_set_item_charset("CHARACTER SET"),
        -276            "CHARSET": lambda self: self._parse_set_item_charset("CHARACTER SET"),
        -277            "NAMES": lambda self: self._parse_set_item_names(),
        -278        }
        -279
        -280        PROFILE_TYPES = {
        -281            "ALL",
        -282            "BLOCK IO",
        -283            "CONTEXT SWITCHES",
        -284            "CPU",
        -285            "IPC",
        -286            "MEMORY",
        -287            "PAGE FAULTS",
        -288            "SOURCE",
        -289            "SWAPS",
        -290        }
        -291
        -292        def _parse_show_mysql(self, this, target=False, full=None, global_=None):
        -293            if target:
        -294                if isinstance(target, str):
        -295                    self._match_text_seq(target)
        -296                target_id = self._parse_id_var()
        -297            else:
        -298                target_id = None
        -299
        -300            log = self._parse_string() if self._match_text_seq("IN") else None
        +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        def _parse_show_mysql(self, this, target=False, full=None, global_=None):
        +295            if target:
        +296                if isinstance(target, str):
        +297                    self._match_text_seq(target)
        +298                target_id = self._parse_id_var()
        +299            else:
        +300                target_id = None
         301
        -302            if this in {"BINLOG EVENTS", "RELAYLOG EVENTS"}:
        -303                position = self._parse_number() if self._match_text_seq("FROM") else None
        -304                db = None
        -305            else:
        -306                position = None
        -307                db = self._parse_id_var() if self._match_text_seq("FROM") else None
        -308
        -309            channel = self._parse_id_var() if self._match_text_seq("FOR", "CHANNEL") else None
        +302            log = self._parse_string() if self._match_text_seq("IN") else None
        +303
        +304            if this in {"BINLOG EVENTS", "RELAYLOG EVENTS"}:
        +305                position = self._parse_number() if self._match_text_seq("FROM") else None
        +306                db = None
        +307            else:
        +308                position = None
        +309                db = None
         310
        -311            like = self._parse_string() if self._match_text_seq("LIKE") else None
        -312            where = self._parse_where()
        -313
        -314            if this == "PROFILE":
        -315                types = self._parse_csv(lambda: self._parse_var_from_options(self.PROFILE_TYPES))
        -316                query = self._parse_number() if self._match_text_seq("FOR", "QUERY") else None
        -317                offset = self._parse_number() if self._match_text_seq("OFFSET") else None
        -318                limit = self._parse_number() if self._match_text_seq("LIMIT") else None
        -319            else:
        -320                types, query = None, None
        -321                offset, limit = self._parse_oldstyle_limit()
        -322
        -323            mutex = True if self._match_text_seq("MUTEX") else None
        -324            mutex = False if self._match_text_seq("STATUS") else mutex
        -325
        -326            return self.expression(
        -327                exp.Show,
        -328                this=this,
        -329                target=target_id,
        -330                full=full,
        -331                log=log,
        -332                position=position,
        -333                db=db,
        -334                channel=channel,
        -335                like=like,
        -336                where=where,
        -337                types=types,
        -338                query=query,
        -339                offset=offset,
        -340                limit=limit,
        -341                mutex=mutex,
        -342                **{"global": global_},
        -343            )
        -344
        -345        def _parse_oldstyle_limit(self):
        -346            limit = None
        -347            offset = None
        -348            if self._match_text_seq("LIMIT"):
        -349                parts = self._parse_csv(self._parse_number)
        -350                if len(parts) == 1:
        -351                    limit = parts[0]
        -352                elif len(parts) == 2:
        -353                    limit = parts[1]
        -354                    offset = parts[0]
        -355            return offset, limit
        -356
        -357        def _parse_set_item_charset(self, kind):
        -358            this = self._parse_string() or self._parse_id_var()
        -359
        -360            return self.expression(
        -361                exp.SetItem,
        -362                this=this,
        -363                kind=kind,
        -364            )
        -365
        -366        def _parse_set_item_names(self):
        -367            charset = self._parse_string() or self._parse_id_var()
        -368            if self._match_text_seq("COLLATE"):
        -369                collate = self._parse_string() or self._parse_id_var()
        -370            else:
        -371                collate = None
        -372            return self.expression(
        -373                exp.SetItem,
        -374                this=charset,
        -375                collate=collate,
        -376                kind="NAMES",
        -377            )
        -378
        -379    class Generator(generator.Generator):
        -380        LOCKING_READS_SUPPORTED = True
        -381        NULL_ORDERING_SUPPORTED = False
        -382
        -383        TRANSFORMS = {
        -384            **generator.Generator.TRANSFORMS,  # type: ignore
        -385            exp.CurrentDate: no_paren_current_date_sql,
        -386            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
        -387            exp.ILike: no_ilike_sql,
        -388            exp.Min: min_or_least,
        -389            exp.TableSample: no_tablesample_sql,
        -390            exp.TryCast: no_trycast_sql,
        -391            exp.DateAdd: _date_add_sql("ADD"),
        -392            exp.DateDiff: lambda self, e: f"DATEDIFF({self.format_args(e.this, e.expression)})",
        -393            exp.DateSub: _date_add_sql("SUB"),
        -394            exp.DateTrunc: _date_trunc_sql,
        -395            exp.DayOfWeek: rename_func("DAYOFWEEK"),
        -396            exp.DayOfMonth: rename_func("DAYOFMONTH"),
        -397            exp.DayOfYear: rename_func("DAYOFYEAR"),
        -398            exp.WeekOfYear: rename_func("WEEKOFYEAR"),
        -399            exp.GroupConcat: lambda self, e: f"""GROUP_CONCAT({self.sql(e, "this")} SEPARATOR {self.sql(e, "separator") or "','"})""",
        -400            exp.StrToDate: _str_to_date_sql,
        -401            exp.StrToTime: _str_to_date_sql,
        -402            exp.Trim: _trim_sql,
        -403            exp.NullSafeEQ: lambda self, e: self.binary(e, "<=>"),
        -404            exp.NullSafeNEQ: lambda self, e: self.not_sql(self.binary(e, "<=>")),
        -405            exp.StrPosition: strposition_to_locate_sql,
        -406        }
        -407
        -408        TYPE_MAPPING = generator.Generator.TYPE_MAPPING.copy()
        -409        TYPE_MAPPING.pop(exp.DataType.Type.MEDIUMTEXT)
        -410        TYPE_MAPPING.pop(exp.DataType.Type.LONGTEXT)
        -411        TYPE_MAPPING.pop(exp.DataType.Type.MEDIUMBLOB)
        -412        TYPE_MAPPING.pop(exp.DataType.Type.LONGBLOB)
        -413
        -414        PROPERTIES_LOCATION = {
        -415            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
        -416            exp.TransientProperty: exp.Properties.Location.UNSUPPORTED,
        -417        }
        -418
        -419        def show_sql(self, expression):
        -420            this = f" {expression.name}"
        -421            full = " FULL" if expression.args.get("full") else ""
        -422            global_ = " GLOBAL" if expression.args.get("global") else ""
        +311                if self._match(TokenType.FROM):
        +312                    db = self._parse_id_var()
        +313                elif self._match(TokenType.DOT):
        +314                    db = target_id
        +315                    target_id = self._parse_id_var()
        +316
        +317            channel = self._parse_id_var() if self._match_text_seq("FOR", "CHANNEL") else None
        +318
        +319            like = self._parse_string() if self._match_text_seq("LIKE") else None
        +320            where = self._parse_where()
        +321
        +322            if this == "PROFILE":
        +323                types = self._parse_csv(lambda: self._parse_var_from_options(self.PROFILE_TYPES))
        +324                query = self._parse_number() if self._match_text_seq("FOR", "QUERY") else None
        +325                offset = self._parse_number() if self._match_text_seq("OFFSET") else None
        +326                limit = self._parse_number() if self._match_text_seq("LIMIT") else None
        +327            else:
        +328                types, query = None, None
        +329                offset, limit = self._parse_oldstyle_limit()
        +330
        +331            mutex = True if self._match_text_seq("MUTEX") else None
        +332            mutex = False if self._match_text_seq("STATUS") else mutex
        +333
        +334            return self.expression(
        +335                exp.Show,
        +336                this=this,
        +337                target=target_id,
        +338                full=full,
        +339                log=log,
        +340                position=position,
        +341                db=db,
        +342                channel=channel,
        +343                like=like,
        +344                where=where,
        +345                types=types,
        +346                query=query,
        +347                offset=offset,
        +348                limit=limit,
        +349                mutex=mutex,
        +350                **{"global": global_},
        +351            )
        +352
        +353        def _parse_oldstyle_limit(self):
        +354            limit = None
        +355            offset = None
        +356            if self._match_text_seq("LIMIT"):
        +357                parts = self._parse_csv(self._parse_number)
        +358                if len(parts) == 1:
        +359                    limit = parts[0]
        +360                elif len(parts) == 2:
        +361                    limit = parts[1]
        +362                    offset = parts[0]
        +363            return offset, limit
        +364
        +365        def _parse_set_item_charset(self, kind):
        +366            this = self._parse_string() or self._parse_id_var()
        +367
        +368            return self.expression(
        +369                exp.SetItem,
        +370                this=this,
        +371                kind=kind,
        +372            )
        +373
        +374        def _parse_set_item_names(self):
        +375            charset = self._parse_string() or self._parse_id_var()
        +376            if self._match_text_seq("COLLATE"):
        +377                collate = self._parse_string() or self._parse_id_var()
        +378            else:
        +379                collate = None
        +380            return self.expression(
        +381                exp.SetItem,
        +382                this=charset,
        +383                collate=collate,
        +384                kind="NAMES",
        +385            )
        +386
        +387    class Generator(generator.Generator):
        +388        LOCKING_READS_SUPPORTED = True
        +389        NULL_ORDERING_SUPPORTED = False
        +390
        +391        TRANSFORMS = {
        +392            **generator.Generator.TRANSFORMS,  # type: ignore
        +393            exp.CurrentDate: no_paren_current_date_sql,
        +394            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
        +395            exp.ILike: no_ilike_sql,
        +396            exp.JSONExtractScalar: arrow_json_extract_scalar_sql,
        +397            exp.Max: max_or_greatest,
        +398            exp.Min: min_or_least,
        +399            exp.TableSample: no_tablesample_sql,
        +400            exp.TryCast: no_trycast_sql,
        +401            exp.DateAdd: _date_add_sql("ADD"),
        +402            exp.DateDiff: lambda self, e: f"DATEDIFF({self.format_args(e.this, e.expression)})",
        +403            exp.DateSub: _date_add_sql("SUB"),
        +404            exp.DateTrunc: _date_trunc_sql,
        +405            exp.DayOfWeek: rename_func("DAYOFWEEK"),
        +406            exp.DayOfMonth: rename_func("DAYOFMONTH"),
        +407            exp.DayOfYear: rename_func("DAYOFYEAR"),
        +408            exp.WeekOfYear: rename_func("WEEKOFYEAR"),
        +409            exp.GroupConcat: lambda self, e: f"""GROUP_CONCAT({self.sql(e, "this")} SEPARATOR {self.sql(e, "separator") or "','"})""",
        +410            exp.StrToDate: _str_to_date_sql,
        +411            exp.StrToTime: _str_to_date_sql,
        +412            exp.Trim: _trim_sql,
        +413            exp.NullSafeEQ: lambda self, e: self.binary(e, "<=>"),
        +414            exp.NullSafeNEQ: lambda self, e: self.not_sql(self.binary(e, "<=>")),
        +415            exp.StrPosition: strposition_to_locate_sql,
        +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            target = self.sql(expression, "target")
        -425            target = f" {target}" if target else ""
        -426            if expression.name in {"COLUMNS", "INDEX"}:
        -427                target = f" FROM{target}"
        -428            elif expression.name == "GRANTS":
        -429                target = f" FOR{target}"
        +424        PROPERTIES_LOCATION = {
        +425            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
        +426            exp.TransientProperty: exp.Properties.Location.UNSUPPORTED,
        +427        }
        +428
        +429        LIMIT_FETCH = "LIMIT"
         430
        -431            db = self._prefixed_sql("FROM", expression, "db")
        -432
        -433            like = self._prefixed_sql("LIKE", expression, "like")
        -434            where = self.sql(expression, "where")
        +431        def show_sql(self, expression):
        +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            types = self.expressions(expression, key="types")
        -437            types = f" {types}" if types else types
        -438            query = self._prefixed_sql("FOR QUERY", expression, "query")
        -439
        -440            if expression.name == "PROFILE":
        -441                offset = self._prefixed_sql("OFFSET", expression, "offset")
        -442                limit = self._prefixed_sql("LIMIT", expression, "limit")
        -443            else:
        -444                offset = ""
        -445                limit = self._oldstyle_limit_sql(expression)
        -446
        -447            log = self._prefixed_sql("IN", expression, "log")
        -448            position = self._prefixed_sql("FROM", expression, "position")
        -449
        -450            channel = self._prefixed_sql("FOR CHANNEL", expression, "channel")
        +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 == "ENGINE":
        -453                mutex_or_status = " MUTEX" if expression.args.get("mutex") else " STATUS"
        -454            else:
        -455                mutex_or_status = ""
        -456
        -457            return f"SHOW{full}{global_}{this}{target}{types}{db}{query}{log}{position}{channel}{mutex_or_status}{like}{where}{offset}{limit}"
        +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        def _prefixed_sql(self, prefix, expression, arg):
        -460            sql = self.sql(expression, arg)
        -461            if not sql:
        -462                return ""
        -463            return f" {prefix} {sql}"
        -464
        -465        def _oldstyle_limit_sql(self, expression):
        -466            limit = self.sql(expression, "limit")
        -467            offset = self.sql(expression, "offset")
        -468            if limit:
        -469                limit_offset = f"{offset}, {limit}" if offset else limit
        -470                return f" LIMIT {limit_offset}"
        -471            return ""
        +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, expression, arg):
        +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):
        +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 ""
         
        @@ -970,69 +992,69 @@
        -
        119    class Tokenizer(tokens.Tokenizer):
        -120        QUOTES = ["'", '"']
        -121        COMMENTS = ["--", "#", ("/*", "*/")]
        -122        IDENTIFIERS = ["`"]
        -123        STRING_ESCAPES = ["'", "\\"]
        -124        BIT_STRINGS = [("b'", "'"), ("B'", "'"), ("0b", "")]
        -125        HEX_STRINGS = [("x'", "'"), ("X'", "'"), ("0x", "")]
        -126
        -127        KEYWORDS = {
        -128            **tokens.Tokenizer.KEYWORDS,
        -129            "MEDIUMTEXT": TokenType.MEDIUMTEXT,
        -130            "LONGTEXT": TokenType.LONGTEXT,
        -131            "MEDIUMBLOB": TokenType.MEDIUMBLOB,
        -132            "LONGBLOB": TokenType.LONGBLOB,
        -133            "START": TokenType.BEGIN,
        -134            "SEPARATOR": TokenType.SEPARATOR,
        -135            "_ARMSCII8": TokenType.INTRODUCER,
        -136            "_ASCII": TokenType.INTRODUCER,
        -137            "_BIG5": TokenType.INTRODUCER,
        -138            "_BINARY": TokenType.INTRODUCER,
        -139            "_CP1250": TokenType.INTRODUCER,
        -140            "_CP1251": TokenType.INTRODUCER,
        -141            "_CP1256": TokenType.INTRODUCER,
        -142            "_CP1257": TokenType.INTRODUCER,
        -143            "_CP850": TokenType.INTRODUCER,
        -144            "_CP852": TokenType.INTRODUCER,
        -145            "_CP866": TokenType.INTRODUCER,
        -146            "_CP932": TokenType.INTRODUCER,
        -147            "_DEC8": TokenType.INTRODUCER,
        -148            "_EUCJPMS": TokenType.INTRODUCER,
        -149            "_EUCKR": TokenType.INTRODUCER,
        -150            "_GB18030": TokenType.INTRODUCER,
        -151            "_GB2312": TokenType.INTRODUCER,
        -152            "_GBK": TokenType.INTRODUCER,
        -153            "_GEOSTD8": TokenType.INTRODUCER,
        -154            "_GREEK": TokenType.INTRODUCER,
        -155            "_HEBREW": TokenType.INTRODUCER,
        -156            "_HP8": TokenType.INTRODUCER,
        -157            "_KEYBCS2": TokenType.INTRODUCER,
        -158            "_KOI8R": TokenType.INTRODUCER,
        -159            "_KOI8U": TokenType.INTRODUCER,
        -160            "_LATIN1": TokenType.INTRODUCER,
        -161            "_LATIN2": TokenType.INTRODUCER,
        -162            "_LATIN5": TokenType.INTRODUCER,
        -163            "_LATIN7": TokenType.INTRODUCER,
        -164            "_MACCE": TokenType.INTRODUCER,
        -165            "_MACROMAN": TokenType.INTRODUCER,
        -166            "_SJIS": TokenType.INTRODUCER,
        -167            "_SWE7": TokenType.INTRODUCER,
        -168            "_TIS620": TokenType.INTRODUCER,
        -169            "_UCS2": TokenType.INTRODUCER,
        -170            "_UJIS": TokenType.INTRODUCER,
        -171            # https://dev.mysql.com/doc/refman/8.0/en/string-literals.html
        -172            "_UTF8": TokenType.INTRODUCER,
        -173            "_UTF16": TokenType.INTRODUCER,
        -174            "_UTF16LE": TokenType.INTRODUCER,
        -175            "_UTF32": TokenType.INTRODUCER,
        -176            "_UTF8MB3": TokenType.INTRODUCER,
        -177            "_UTF8MB4": TokenType.INTRODUCER,
        -178            "@@": TokenType.SESSION_PARAMETER,
        -179        }
        -180
        -181        COMMANDS = tokens.Tokenizer.COMMANDS - {TokenType.SHOW}
        +            
        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}
         
        @@ -1060,201 +1082,207 @@
        -
        183    class Parser(parser.Parser):
        -184        FUNC_TOKENS = {*parser.Parser.FUNC_TOKENS, TokenType.SCHEMA, TokenType.DATABASE}  # type: ignore
        -185
        -186        FUNCTIONS = {
        -187            **parser.Parser.FUNCTIONS,  # type: ignore
        -188            "DATE_ADD": _date_add(exp.DateAdd),
        -189            "DATE_SUB": _date_add(exp.DateSub),
        -190            "STR_TO_DATE": _str_to_date,
        -191            "LOCATE": locate_to_strposition,
        -192            "INSTR": lambda args: exp.StrPosition(substr=seq_get(args, 1), this=seq_get(args, 0)),
        -193            "LEFT": lambda args: exp.Substring(
        -194                this=seq_get(args, 0), start=exp.Literal.number(1), length=seq_get(args, 1)
        -195            ),
        -196        }
        -197
        -198        FUNCTION_PARSERS = {
        -199            **parser.Parser.FUNCTION_PARSERS,  # type: ignore
        -200            "GROUP_CONCAT": lambda self: self.expression(
        -201                exp.GroupConcat,
        -202                this=self._parse_lambda(),
        -203                separator=self._match(TokenType.SEPARATOR) and self._parse_field(),
        -204            ),
        -205        }
        -206
        -207        PROPERTY_PARSERS = {
        -208            **parser.Parser.PROPERTY_PARSERS,  # type: ignore
        -209            "ENGINE": lambda self: self._parse_property_assignment(exp.EngineProperty),
        -210        }
        -211
        -212        STATEMENT_PARSERS = {
        -213            **parser.Parser.STATEMENT_PARSERS,  # type: ignore
        -214            TokenType.SHOW: lambda self: self._parse_show(),
        -215        }
        -216
        -217        SHOW_PARSERS = {
        -218            "BINARY LOGS": _show_parser("BINARY LOGS"),
        -219            "MASTER LOGS": _show_parser("BINARY LOGS"),
        -220            "BINLOG EVENTS": _show_parser("BINLOG EVENTS"),
        -221            "CHARACTER SET": _show_parser("CHARACTER SET"),
        -222            "CHARSET": _show_parser("CHARACTER SET"),
        -223            "COLLATION": _show_parser("COLLATION"),
        -224            "FULL COLUMNS": _show_parser("COLUMNS", target="FROM", full=True),
        -225            "COLUMNS": _show_parser("COLUMNS", target="FROM"),
        -226            "CREATE DATABASE": _show_parser("CREATE DATABASE", target=True),
        -227            "CREATE EVENT": _show_parser("CREATE EVENT", target=True),
        -228            "CREATE FUNCTION": _show_parser("CREATE FUNCTION", target=True),
        -229            "CREATE PROCEDURE": _show_parser("CREATE PROCEDURE", target=True),
        -230            "CREATE TABLE": _show_parser("CREATE TABLE", target=True),
        -231            "CREATE TRIGGER": _show_parser("CREATE TRIGGER", target=True),
        -232            "CREATE VIEW": _show_parser("CREATE VIEW", target=True),
        -233            "DATABASES": _show_parser("DATABASES"),
        -234            "ENGINE": _show_parser("ENGINE", target=True),
        -235            "STORAGE ENGINES": _show_parser("ENGINES"),
        -236            "ENGINES": _show_parser("ENGINES"),
        -237            "ERRORS": _show_parser("ERRORS"),
        -238            "EVENTS": _show_parser("EVENTS"),
        -239            "FUNCTION CODE": _show_parser("FUNCTION CODE", target=True),
        -240            "FUNCTION STATUS": _show_parser("FUNCTION STATUS"),
        -241            "GRANTS": _show_parser("GRANTS", target="FOR"),
        -242            "INDEX": _show_parser("INDEX", target="FROM"),
        -243            "MASTER STATUS": _show_parser("MASTER STATUS"),
        -244            "OPEN TABLES": _show_parser("OPEN TABLES"),
        -245            "PLUGINS": _show_parser("PLUGINS"),
        -246            "PROCEDURE CODE": _show_parser("PROCEDURE CODE", target=True),
        -247            "PROCEDURE STATUS": _show_parser("PROCEDURE STATUS"),
        -248            "PRIVILEGES": _show_parser("PRIVILEGES"),
        -249            "FULL PROCESSLIST": _show_parser("PROCESSLIST", full=True),
        -250            "PROCESSLIST": _show_parser("PROCESSLIST"),
        -251            "PROFILE": _show_parser("PROFILE"),
        -252            "PROFILES": _show_parser("PROFILES"),
        -253            "RELAYLOG EVENTS": _show_parser("RELAYLOG EVENTS"),
        -254            "REPLICAS": _show_parser("REPLICAS"),
        -255            "SLAVE HOSTS": _show_parser("REPLICAS"),
        -256            "REPLICA STATUS": _show_parser("REPLICA STATUS"),
        -257            "SLAVE STATUS": _show_parser("REPLICA STATUS"),
        -258            "GLOBAL STATUS": _show_parser("STATUS", global_=True),
        -259            "SESSION STATUS": _show_parser("STATUS"),
        -260            "STATUS": _show_parser("STATUS"),
        -261            "TABLE STATUS": _show_parser("TABLE STATUS"),
        -262            "FULL TABLES": _show_parser("TABLES", full=True),
        -263            "TABLES": _show_parser("TABLES"),
        -264            "TRIGGERS": _show_parser("TRIGGERS"),
        -265            "GLOBAL VARIABLES": _show_parser("VARIABLES", global_=True),
        -266            "SESSION VARIABLES": _show_parser("VARIABLES"),
        -267            "VARIABLES": _show_parser("VARIABLES"),
        -268            "WARNINGS": _show_parser("WARNINGS"),
        -269        }
        -270
        -271        SET_PARSERS = {
        -272            **parser.Parser.SET_PARSERS,
        -273            "PERSIST": lambda self: self._parse_set_item_assignment("PERSIST"),
        -274            "PERSIST_ONLY": lambda self: self._parse_set_item_assignment("PERSIST_ONLY"),
        -275            "CHARACTER SET": lambda self: self._parse_set_item_charset("CHARACTER SET"),
        -276            "CHARSET": lambda self: self._parse_set_item_charset("CHARACTER SET"),
        -277            "NAMES": lambda self: self._parse_set_item_names(),
        -278        }
        -279
        -280        PROFILE_TYPES = {
        -281            "ALL",
        -282            "BLOCK IO",
        -283            "CONTEXT SWITCHES",
        -284            "CPU",
        -285            "IPC",
        -286            "MEMORY",
        -287            "PAGE FAULTS",
        -288            "SOURCE",
        -289            "SWAPS",
        -290        }
        -291
        -292        def _parse_show_mysql(self, this, target=False, full=None, global_=None):
        -293            if target:
        -294                if isinstance(target, str):
        -295                    self._match_text_seq(target)
        -296                target_id = self._parse_id_var()
        -297            else:
        -298                target_id = None
        -299
        -300            log = self._parse_string() if self._match_text_seq("IN") else None
        +            
        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        def _parse_show_mysql(self, this, target=False, full=None, global_=None):
        +295            if target:
        +296                if isinstance(target, str):
        +297                    self._match_text_seq(target)
        +298                target_id = self._parse_id_var()
        +299            else:
        +300                target_id = None
         301
        -302            if this in {"BINLOG EVENTS", "RELAYLOG EVENTS"}:
        -303                position = self._parse_number() if self._match_text_seq("FROM") else None
        -304                db = None
        -305            else:
        -306                position = None
        -307                db = self._parse_id_var() if self._match_text_seq("FROM") else None
        -308
        -309            channel = self._parse_id_var() if self._match_text_seq("FOR", "CHANNEL") else None
        +302            log = self._parse_string() if self._match_text_seq("IN") else None
        +303
        +304            if this in {"BINLOG EVENTS", "RELAYLOG EVENTS"}:
        +305                position = self._parse_number() if self._match_text_seq("FROM") else None
        +306                db = None
        +307            else:
        +308                position = None
        +309                db = None
         310
        -311            like = self._parse_string() if self._match_text_seq("LIKE") else None
        -312            where = self._parse_where()
        -313
        -314            if this == "PROFILE":
        -315                types = self._parse_csv(lambda: self._parse_var_from_options(self.PROFILE_TYPES))
        -316                query = self._parse_number() if self._match_text_seq("FOR", "QUERY") else None
        -317                offset = self._parse_number() if self._match_text_seq("OFFSET") else None
        -318                limit = self._parse_number() if self._match_text_seq("LIMIT") else None
        -319            else:
        -320                types, query = None, None
        -321                offset, limit = self._parse_oldstyle_limit()
        -322
        -323            mutex = True if self._match_text_seq("MUTEX") else None
        -324            mutex = False if self._match_text_seq("STATUS") else mutex
        -325
        -326            return self.expression(
        -327                exp.Show,
        -328                this=this,
        -329                target=target_id,
        -330                full=full,
        -331                log=log,
        -332                position=position,
        -333                db=db,
        -334                channel=channel,
        -335                like=like,
        -336                where=where,
        -337                types=types,
        -338                query=query,
        -339                offset=offset,
        -340                limit=limit,
        -341                mutex=mutex,
        -342                **{"global": global_},
        -343            )
        -344
        -345        def _parse_oldstyle_limit(self):
        -346            limit = None
        -347            offset = None
        -348            if self._match_text_seq("LIMIT"):
        -349                parts = self._parse_csv(self._parse_number)
        -350                if len(parts) == 1:
        -351                    limit = parts[0]
        -352                elif len(parts) == 2:
        -353                    limit = parts[1]
        -354                    offset = parts[0]
        -355            return offset, limit
        -356
        -357        def _parse_set_item_charset(self, kind):
        -358            this = self._parse_string() or self._parse_id_var()
        -359
        -360            return self.expression(
        -361                exp.SetItem,
        -362                this=this,
        -363                kind=kind,
        -364            )
        -365
        -366        def _parse_set_item_names(self):
        -367            charset = self._parse_string() or self._parse_id_var()
        -368            if self._match_text_seq("COLLATE"):
        -369                collate = self._parse_string() or self._parse_id_var()
        -370            else:
        -371                collate = None
        -372            return self.expression(
        -373                exp.SetItem,
        -374                this=charset,
        -375                collate=collate,
        -376                kind="NAMES",
        -377            )
        +311                if self._match(TokenType.FROM):
        +312                    db = self._parse_id_var()
        +313                elif self._match(TokenType.DOT):
        +314                    db = target_id
        +315                    target_id = self._parse_id_var()
        +316
        +317            channel = self._parse_id_var() if self._match_text_seq("FOR", "CHANNEL") else None
        +318
        +319            like = self._parse_string() if self._match_text_seq("LIKE") else None
        +320            where = self._parse_where()
        +321
        +322            if this == "PROFILE":
        +323                types = self._parse_csv(lambda: self._parse_var_from_options(self.PROFILE_TYPES))
        +324                query = self._parse_number() if self._match_text_seq("FOR", "QUERY") else None
        +325                offset = self._parse_number() if self._match_text_seq("OFFSET") else None
        +326                limit = self._parse_number() if self._match_text_seq("LIMIT") else None
        +327            else:
        +328                types, query = None, None
        +329                offset, limit = self._parse_oldstyle_limit()
        +330
        +331            mutex = True if self._match_text_seq("MUTEX") else None
        +332            mutex = False if self._match_text_seq("STATUS") else mutex
        +333
        +334            return self.expression(
        +335                exp.Show,
        +336                this=this,
        +337                target=target_id,
        +338                full=full,
        +339                log=log,
        +340                position=position,
        +341                db=db,
        +342                channel=channel,
        +343                like=like,
        +344                where=where,
        +345                types=types,
        +346                query=query,
        +347                offset=offset,
        +348                limit=limit,
        +349                mutex=mutex,
        +350                **{"global": global_},
        +351            )
        +352
        +353        def _parse_oldstyle_limit(self):
        +354            limit = None
        +355            offset = None
        +356            if self._match_text_seq("LIMIT"):
        +357                parts = self._parse_csv(self._parse_number)
        +358                if len(parts) == 1:
        +359                    limit = parts[0]
        +360                elif len(parts) == 2:
        +361                    limit = parts[1]
        +362                    offset = parts[0]
        +363            return offset, limit
        +364
        +365        def _parse_set_item_charset(self, kind):
        +366            this = self._parse_string() or self._parse_id_var()
        +367
        +368            return self.expression(
        +369                exp.SetItem,
        +370                this=this,
        +371                kind=kind,
        +372            )
        +373
        +374        def _parse_set_item_names(self):
        +375            charset = self._parse_string() or self._parse_id_var()
        +376            if self._match_text_seq("COLLATE"):
        +377                collate = self._parse_string() or self._parse_id_var()
        +378            else:
        +379                collate = None
        +380            return self.expression(
        +381                exp.SetItem,
        +382                this=charset,
        +383                collate=collate,
        +384                kind="NAMES",
        +385            )
         
        @@ -1311,99 +1339,103 @@ Default: "nulls_are_small"
        -
        379    class Generator(generator.Generator):
        -380        LOCKING_READS_SUPPORTED = True
        -381        NULL_ORDERING_SUPPORTED = False
        -382
        -383        TRANSFORMS = {
        -384            **generator.Generator.TRANSFORMS,  # type: ignore
        -385            exp.CurrentDate: no_paren_current_date_sql,
        -386            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
        -387            exp.ILike: no_ilike_sql,
        -388            exp.Min: min_or_least,
        -389            exp.TableSample: no_tablesample_sql,
        -390            exp.TryCast: no_trycast_sql,
        -391            exp.DateAdd: _date_add_sql("ADD"),
        -392            exp.DateDiff: lambda self, e: f"DATEDIFF({self.format_args(e.this, e.expression)})",
        -393            exp.DateSub: _date_add_sql("SUB"),
        -394            exp.DateTrunc: _date_trunc_sql,
        -395            exp.DayOfWeek: rename_func("DAYOFWEEK"),
        -396            exp.DayOfMonth: rename_func("DAYOFMONTH"),
        -397            exp.DayOfYear: rename_func("DAYOFYEAR"),
        -398            exp.WeekOfYear: rename_func("WEEKOFYEAR"),
        -399            exp.GroupConcat: lambda self, e: f"""GROUP_CONCAT({self.sql(e, "this")} SEPARATOR {self.sql(e, "separator") or "','"})""",
        -400            exp.StrToDate: _str_to_date_sql,
        -401            exp.StrToTime: _str_to_date_sql,
        -402            exp.Trim: _trim_sql,
        -403            exp.NullSafeEQ: lambda self, e: self.binary(e, "<=>"),
        -404            exp.NullSafeNEQ: lambda self, e: self.not_sql(self.binary(e, "<=>")),
        -405            exp.StrPosition: strposition_to_locate_sql,
        -406        }
        -407
        -408        TYPE_MAPPING = generator.Generator.TYPE_MAPPING.copy()
        -409        TYPE_MAPPING.pop(exp.DataType.Type.MEDIUMTEXT)
        -410        TYPE_MAPPING.pop(exp.DataType.Type.LONGTEXT)
        -411        TYPE_MAPPING.pop(exp.DataType.Type.MEDIUMBLOB)
        -412        TYPE_MAPPING.pop(exp.DataType.Type.LONGBLOB)
        -413
        -414        PROPERTIES_LOCATION = {
        -415            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
        -416            exp.TransientProperty: exp.Properties.Location.UNSUPPORTED,
        -417        }
        -418
        -419        def show_sql(self, expression):
        -420            this = f" {expression.name}"
        -421            full = " FULL" if expression.args.get("full") else ""
        -422            global_ = " GLOBAL" if expression.args.get("global") else ""
        +            
        387    class Generator(generator.Generator):
        +388        LOCKING_READS_SUPPORTED = True
        +389        NULL_ORDERING_SUPPORTED = False
        +390
        +391        TRANSFORMS = {
        +392            **generator.Generator.TRANSFORMS,  # type: ignore
        +393            exp.CurrentDate: no_paren_current_date_sql,
        +394            exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP",
        +395            exp.ILike: no_ilike_sql,
        +396            exp.JSONExtractScalar: arrow_json_extract_scalar_sql,
        +397            exp.Max: max_or_greatest,
        +398            exp.Min: min_or_least,
        +399            exp.TableSample: no_tablesample_sql,
        +400            exp.TryCast: no_trycast_sql,
        +401            exp.DateAdd: _date_add_sql("ADD"),
        +402            exp.DateDiff: lambda self, e: f"DATEDIFF({self.format_args(e.this, e.expression)})",
        +403            exp.DateSub: _date_add_sql("SUB"),
        +404            exp.DateTrunc: _date_trunc_sql,
        +405            exp.DayOfWeek: rename_func("DAYOFWEEK"),
        +406            exp.DayOfMonth: rename_func("DAYOFMONTH"),
        +407            exp.DayOfYear: rename_func("DAYOFYEAR"),
        +408            exp.WeekOfYear: rename_func("WEEKOFYEAR"),
        +409            exp.GroupConcat: lambda self, e: f"""GROUP_CONCAT({self.sql(e, "this")} SEPARATOR {self.sql(e, "separator") or "','"})""",
        +410            exp.StrToDate: _str_to_date_sql,
        +411            exp.StrToTime: _str_to_date_sql,
        +412            exp.Trim: _trim_sql,
        +413            exp.NullSafeEQ: lambda self, e: self.binary(e, "<=>"),
        +414            exp.NullSafeNEQ: lambda self, e: self.not_sql(self.binary(e, "<=>")),
        +415            exp.StrPosition: strposition_to_locate_sql,
        +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            target = self.sql(expression, "target")
        -425            target = f" {target}" if target else ""
        -426            if expression.name in {"COLUMNS", "INDEX"}:
        -427                target = f" FROM{target}"
        -428            elif expression.name == "GRANTS":
        -429                target = f" FOR{target}"
        +424        PROPERTIES_LOCATION = {
        +425            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
        +426            exp.TransientProperty: exp.Properties.Location.UNSUPPORTED,
        +427        }
        +428
        +429        LIMIT_FETCH = "LIMIT"
         430
        -431            db = self._prefixed_sql("FROM", expression, "db")
        -432
        -433            like = self._prefixed_sql("LIKE", expression, "like")
        -434            where = self.sql(expression, "where")
        +431        def show_sql(self, expression):
        +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            types = self.expressions(expression, key="types")
        -437            types = f" {types}" if types else types
        -438            query = self._prefixed_sql("FOR QUERY", expression, "query")
        -439
        -440            if expression.name == "PROFILE":
        -441                offset = self._prefixed_sql("OFFSET", expression, "offset")
        -442                limit = self._prefixed_sql("LIMIT", expression, "limit")
        -443            else:
        -444                offset = ""
        -445                limit = self._oldstyle_limit_sql(expression)
        -446
        -447            log = self._prefixed_sql("IN", expression, "log")
        -448            position = self._prefixed_sql("FROM", expression, "position")
        -449
        -450            channel = self._prefixed_sql("FOR CHANNEL", expression, "channel")
        +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 == "ENGINE":
        -453                mutex_or_status = " MUTEX" if expression.args.get("mutex") else " STATUS"
        -454            else:
        -455                mutex_or_status = ""
        -456
        -457            return f"SHOW{full}{global_}{this}{target}{types}{db}{query}{log}{position}{channel}{mutex_or_status}{like}{where}{offset}{limit}"
        +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        def _prefixed_sql(self, prefix, expression, arg):
        -460            sql = self.sql(expression, arg)
        -461            if not sql:
        -462                return ""
        -463            return f" {prefix} {sql}"
        -464
        -465        def _oldstyle_limit_sql(self, expression):
        -466            limit = self.sql(expression, "limit")
        -467            offset = self.sql(expression, "offset")
        -468            if limit:
        -469                limit_offset = f"{offset}, {limit}" if offset else limit
        -470                return f" LIMIT {limit_offset}"
        -471            return ""
        +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, expression, arg):
        +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):
        +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 ""
         
        @@ -1462,45 +1494,45 @@ Default: True
        -
        419        def show_sql(self, expression):
        -420            this = f" {expression.name}"
        -421            full = " FULL" if expression.args.get("full") else ""
        -422            global_ = " GLOBAL" if expression.args.get("global") else ""
        -423
        -424            target = self.sql(expression, "target")
        -425            target = f" {target}" if target else ""
        -426            if expression.name in {"COLUMNS", "INDEX"}:
        -427                target = f" FROM{target}"
        -428            elif expression.name == "GRANTS":
        -429                target = f" FOR{target}"
        -430
        -431            db = self._prefixed_sql("FROM", expression, "db")
        -432
        -433            like = self._prefixed_sql("LIKE", expression, "like")
        -434            where = self.sql(expression, "where")
        +            
        431        def show_sql(self, expression):
        +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            types = self.expressions(expression, key="types")
        -437            types = f" {types}" if types else types
        -438            query = self._prefixed_sql("FOR QUERY", expression, "query")
        -439
        -440            if expression.name == "PROFILE":
        -441                offset = self._prefixed_sql("OFFSET", expression, "offset")
        -442                limit = self._prefixed_sql("LIMIT", expression, "limit")
        -443            else:
        -444                offset = ""
        -445                limit = self._oldstyle_limit_sql(expression)
        -446
        -447            log = self._prefixed_sql("IN", expression, "log")
        -448            position = self._prefixed_sql("FROM", expression, "position")
        -449
        -450            channel = self._prefixed_sql("FOR CHANNEL", expression, "channel")
        +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 == "ENGINE":
        -453                mutex_or_status = " MUTEX" if expression.args.get("mutex") else " STATUS"
        -454            else:
        -455                mutex_or_status = ""
        -456
        -457            return f"SHOW{full}{global_}{this}{target}{types}{db}{query}{log}{position}{channel}{mutex_or_status}{like}{where}{offset}{limit}"
        +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}"
         
        @@ -1599,6 +1631,7 @@ Default: True
        offset_sql
        setitem_sql
        set_sql
        +
        pragma_sql
        lock_sql
        literal_sql
        loaddata_sql
        @@ -1643,6 +1676,8 @@ Default: True
        primarykey_sql
        unique_sql
        if_sql
        +
        jsonkeyvalue_sql
        +
        jsonobject_sql
        in_sql
        in_unnest_op
        interval_sql
        diff --git a/docs/sqlglot/dialects/oracle.html b/docs/sqlglot/dialects/oracle.html index 8ce152e..c1d00d2 100644 --- a/docs/sqlglot/dialects/oracle.html +++ b/docs/sqlglot/dialects/oracle.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.oracle API documentation @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • Oracle
              @@ -42,9 +42,6 @@
            • Oracle.Generator
                -
              • - query_modifiers -
              • offset_sql
              • @@ -95,7 +92,7 @@ 4 5from sqlglot import exp, generator, parser, tokens, transforms 6from sqlglot.dialects.dialect import Dialect, no_ilike_sql, rename_func, trim_sql - 7from sqlglot.helper import csv, seq_get + 7from sqlglot.helper import seq_get 8from sqlglot.tokens import TokenType 9 10PASSING_TABLE_ALIAS_TOKENS = parser.Parser.TABLE_ALIAS_TOKENS - { @@ -104,170 +101,159 @@ 13} 14 15 - 16def _limit_sql(self, expression): - 17 return self.fetch_sql(exp.Fetch(direction="FIRST", count=expression.expression)) + 16def _parse_xml_table(self) -> exp.XMLTable: + 17 this = self._parse_string() 18 - 19 - 20def _parse_xml_table(self) -> exp.XMLTable: - 21 this = self._parse_string() - 22 - 23 passing = None - 24 columns = None - 25 - 26 if self._match_text_seq("PASSING"): - 27 # The BY VALUE keywords are optional and are provided for semantic clarity - 28 self._match_text_seq("BY", "VALUE") - 29 passing = self._parse_csv( - 30 lambda: self._parse_table(alias_tokens=PASSING_TABLE_ALIAS_TOKENS) - 31 ) - 32 - 33 by_ref = self._match_text_seq("RETURNING", "SEQUENCE", "BY", "REF") - 34 - 35 if self._match_text_seq("COLUMNS"): - 36 columns = self._parse_csv(lambda: self._parse_column_def(self._parse_field(any_token=True))) - 37 - 38 return self.expression( - 39 exp.XMLTable, - 40 this=this, - 41 passing=passing, - 42 columns=columns, - 43 by_ref=by_ref, - 44 ) - 45 - 46 - 47class Oracle(Dialect): - 48 # https://docs.oracle.com/database/121/SQLRF/sql_elements004.htm#SQLRF00212 - 49 # https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes - 50 time_mapping = { - 51 "AM": "%p", # Meridian indicator with or without periods - 52 "A.M.": "%p", # Meridian indicator with or without periods - 53 "PM": "%p", # Meridian indicator with or without periods - 54 "P.M.": "%p", # Meridian indicator with or without periods - 55 "D": "%u", # Day of week (1-7) - 56 "DAY": "%A", # name of day - 57 "DD": "%d", # day of month (1-31) - 58 "DDD": "%j", # day of year (1-366) - 59 "DY": "%a", # abbreviated name of day - 60 "HH": "%I", # Hour of day (1-12) - 61 "HH12": "%I", # alias for HH - 62 "HH24": "%H", # Hour of day (0-23) - 63 "IW": "%V", # Calendar week of year (1-52 or 1-53), as defined by the ISO 8601 standard - 64 "MI": "%M", # Minute (0-59) - 65 "MM": "%m", # Month (01-12; January = 01) - 66 "MON": "%b", # Abbreviated name of month - 67 "MONTH": "%B", # Name of month - 68 "SS": "%S", # Second (0-59) - 69 "WW": "%W", # Week of year (1-53) - 70 "YY": "%y", # 15 - 71 "YYYY": "%Y", # 2015 - 72 } - 73 - 74 class Parser(parser.Parser): - 75 FUNCTIONS = { - 76 **parser.Parser.FUNCTIONS, # type: ignore - 77 "DECODE": exp.Matches.from_arg_list, - 78 "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)), - 79 } - 80 - 81 FUNCTION_PARSERS: t.Dict[str, t.Callable] = { - 82 **parser.Parser.FUNCTION_PARSERS, - 83 "XMLTABLE": _parse_xml_table, - 84 } - 85 - 86 def _parse_column(self) -> t.Optional[exp.Expression]: - 87 column = super()._parse_column() - 88 if column: - 89 column.set("join_mark", self._match(TokenType.JOIN_MARKER)) - 90 return column - 91 - 92 class Generator(generator.Generator): - 93 LOCKING_READS_SUPPORTED = True - 94 - 95 TYPE_MAPPING = { - 96 **generator.Generator.TYPE_MAPPING, # type: ignore - 97 exp.DataType.Type.TINYINT: "NUMBER", - 98 exp.DataType.Type.SMALLINT: "NUMBER", - 99 exp.DataType.Type.INT: "NUMBER", -100 exp.DataType.Type.BIGINT: "NUMBER", -101 exp.DataType.Type.DECIMAL: "NUMBER", -102 exp.DataType.Type.DOUBLE: "DOUBLE PRECISION", -103 exp.DataType.Type.VARCHAR: "VARCHAR2", -104 exp.DataType.Type.NVARCHAR: "NVARCHAR2", -105 exp.DataType.Type.TEXT: "CLOB", -106 exp.DataType.Type.BINARY: "BLOB", -107 exp.DataType.Type.VARBINARY: "BLOB", -108 } -109 -110 TRANSFORMS = { -111 **generator.Generator.TRANSFORMS, # type: ignore -112 **transforms.UNALIAS_GROUP, # type: ignore -113 exp.ILike: no_ilike_sql, -114 exp.Limit: _limit_sql, -115 exp.Trim: trim_sql, -116 exp.Matches: rename_func("DECODE"), -117 exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})", -118 exp.Subquery: lambda self, e: self.subquery_sql(e, sep=" "), -119 exp.Table: lambda self, e: self.table_sql(e, sep=" "), -120 exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})", -121 exp.UnixToTime: lambda self, e: f"TO_DATE('1970-01-01','YYYY-MM-DD') + ({self.sql(e, 'this')} / 86400)", -122 exp.Substring: rename_func("SUBSTR"), -123 exp.ToChar: lambda self, e: self.function_fallback_sql(e), -124 } -125 -126 def query_modifiers(self, expression: exp.Expression, *sqls: str) -> str: -127 return csv( -128 *sqls, -129 *[self.sql(sql) for sql in expression.args.get("joins") or []], -130 self.sql(expression, "match"), -131 *[self.sql(sql) for sql in expression.args.get("laterals") or []], -132 self.sql(expression, "where"), -133 self.sql(expression, "group"), -134 self.sql(expression, "having"), -135 self.sql(expression, "qualify"), -136 self.seg("WINDOW ") + self.expressions(expression, "windows", flat=True) -137 if expression.args.get("windows") -138 else "", -139 self.sql(expression, "distribute"), -140 self.sql(expression, "sort"), -141 self.sql(expression, "cluster"), -142 self.sql(expression, "order"), -143 self.sql(expression, "offset"), # offset before limit in oracle -144 self.sql(expression, "limit"), -145 self.sql(expression, "lock"), -146 sep="", -147 ) -148 -149 def offset_sql(self, expression: exp.Offset) -> str: -150 return f"{super().offset_sql(expression)} ROWS" -151 -152 def column_sql(self, expression: exp.Column) -> str: -153 column = super().column_sql(expression) -154 return f"{column} (+)" if expression.args.get("join_mark") else column + 19 passing = None + 20 columns = None + 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 "DECODE": exp.Matches.from_arg_list, + 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.Matches: rename_func("DECODE"), +126 exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})", +127 exp.Subquery: lambda self, e: self.subquery_sql(e, sep=" "), +128 exp.Substring: rename_func("SUBSTR"), +129 exp.Table: lambda self, e: self.table_sql(e, sep=" "), +130 exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})", +131 exp.ToChar: lambda self, e: self.function_fallback_sql(e), +132 exp.Trim: trim_sql, +133 exp.UnixToTime: lambda self, e: f"TO_DATE('1970-01-01','YYYY-MM-DD') + ({self.sql(e, 'this')} / 86400)", +134 } +135 +136 LIMIT_FETCH = "FETCH" +137 +138 def offset_sql(self, expression: exp.Offset) -> str: +139 return f"{super().offset_sql(expression)} ROWS" +140 +141 def column_sql(self, expression: exp.Column) -> str: +142 column = super().column_sql(expression) +143 return f"{column} (+)" if expression.args.get("join_mark") else column +144 +145 def xmltable_sql(self, expression: exp.XMLTable) -> str: +146 this = self.sql(expression, "this") +147 passing = self.expressions(expression, "passing") +148 passing = f"{self.sep()}PASSING{self.seg(passing)}" if passing else "" +149 columns = self.expressions(expression, "columns") +150 columns = f"{self.sep()}COLUMNS{self.seg(columns)}" if columns else "" +151 by_ref = ( +152 f"{self.sep()}RETURNING SEQUENCE BY REF" if expression.args.get("by_ref") else "" +153 ) +154 return f"XMLTABLE({self.sep('')}{self.indent(this + passing + by_ref + columns)}{self.seg(')', sep='')}" 155 -156 def xmltable_sql(self, expression: exp.XMLTable) -> str: -157 this = self.sql(expression, "this") -158 passing = self.expressions(expression, "passing") -159 passing = f"{self.sep()}PASSING{self.seg(passing)}" if passing else "" -160 columns = self.expressions(expression, "columns") -161 columns = f"{self.sep()}COLUMNS{self.seg(columns)}" if columns else "" -162 by_ref = ( -163 f"{self.sep()}RETURNING SEQUENCE BY REF" if expression.args.get("by_ref") else "" -164 ) -165 return f"XMLTABLE({self.sep('')}{self.indent(this + passing + by_ref + columns)}{self.seg(')', sep='')}" -166 -167 class Tokenizer(tokens.Tokenizer): -168 KEYWORDS = { -169 **tokens.Tokenizer.KEYWORDS, -170 "(+)": TokenType.JOIN_MARKER, -171 "COLUMNS": TokenType.COLUMN, -172 "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE, -173 "MINUS": TokenType.EXCEPT, -174 "NVARCHAR2": TokenType.NVARCHAR, -175 "RETURNING": TokenType.RETURNING, -176 "START": TokenType.BEGIN, -177 "TOP": TokenType.TOP, -178 "VARCHAR2": TokenType.VARCHAR, -179 } +156 class Tokenizer(tokens.Tokenizer): +157 KEYWORDS = { +158 **tokens.Tokenizer.KEYWORDS, +159 "(+)": TokenType.JOIN_MARKER, +160 "COLUMNS": TokenType.COLUMN, +161 "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE, +162 "MINUS": TokenType.EXCEPT, +163 "NVARCHAR2": TokenType.NVARCHAR, +164 "RETURNING": TokenType.RETURNING, +165 "START": TokenType.BEGIN, +166 "TOP": TokenType.TOP, +167 "VARCHAR2": TokenType.VARCHAR, +168 }
        @@ -283,139 +269,132 @@ -
         48class Oracle(Dialect):
        - 49    # https://docs.oracle.com/database/121/SQLRF/sql_elements004.htm#SQLRF00212
        - 50    # https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes
        - 51    time_mapping = {
        - 52        "AM": "%p",  # Meridian indicator with or without periods
        - 53        "A.M.": "%p",  # Meridian indicator with or without periods
        - 54        "PM": "%p",  # Meridian indicator with or without periods
        - 55        "P.M.": "%p",  # Meridian indicator with or without periods
        - 56        "D": "%u",  # Day of week (1-7)
        - 57        "DAY": "%A",  # name of day
        - 58        "DD": "%d",  # day of month (1-31)
        - 59        "DDD": "%j",  # day of year (1-366)
        - 60        "DY": "%a",  # abbreviated name of day
        - 61        "HH": "%I",  # Hour of day (1-12)
        - 62        "HH12": "%I",  # alias for HH
        - 63        "HH24": "%H",  # Hour of day (0-23)
        - 64        "IW": "%V",  # Calendar week of year (1-52 or 1-53), as defined by the ISO 8601 standard
        - 65        "MI": "%M",  # Minute (0-59)
        - 66        "MM": "%m",  # Month (01-12; January = 01)
        - 67        "MON": "%b",  # Abbreviated name of month
        - 68        "MONTH": "%B",  # Name of month
        - 69        "SS": "%S",  # Second (0-59)
        - 70        "WW": "%W",  # Week of year (1-53)
        - 71        "YY": "%y",  # 15
        - 72        "YYYY": "%Y",  # 2015
        - 73    }
        - 74
        - 75    class Parser(parser.Parser):
        - 76        FUNCTIONS = {
        - 77            **parser.Parser.FUNCTIONS,  # type: ignore
        - 78            "DECODE": exp.Matches.from_arg_list,
        - 79            "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
        - 80        }
        - 81
        - 82        FUNCTION_PARSERS: t.Dict[str, t.Callable] = {
        - 83            **parser.Parser.FUNCTION_PARSERS,
        - 84            "XMLTABLE": _parse_xml_table,
        - 85        }
        - 86
        - 87        def _parse_column(self) -> t.Optional[exp.Expression]:
        - 88            column = super()._parse_column()
        - 89            if column:
        - 90                column.set("join_mark", self._match(TokenType.JOIN_MARKER))
        - 91            return column
        - 92
        - 93    class Generator(generator.Generator):
        - 94        LOCKING_READS_SUPPORTED = True
        - 95
        - 96        TYPE_MAPPING = {
        - 97            **generator.Generator.TYPE_MAPPING,  # type: ignore
        - 98            exp.DataType.Type.TINYINT: "NUMBER",
        - 99            exp.DataType.Type.SMALLINT: "NUMBER",
        -100            exp.DataType.Type.INT: "NUMBER",
        -101            exp.DataType.Type.BIGINT: "NUMBER",
        -102            exp.DataType.Type.DECIMAL: "NUMBER",
        -103            exp.DataType.Type.DOUBLE: "DOUBLE PRECISION",
        -104            exp.DataType.Type.VARCHAR: "VARCHAR2",
        -105            exp.DataType.Type.NVARCHAR: "NVARCHAR2",
        -106            exp.DataType.Type.TEXT: "CLOB",
        -107            exp.DataType.Type.BINARY: "BLOB",
        -108            exp.DataType.Type.VARBINARY: "BLOB",
        -109        }
        -110
        -111        TRANSFORMS = {
        -112            **generator.Generator.TRANSFORMS,  # type: ignore
        -113            **transforms.UNALIAS_GROUP,  # type: ignore
        -114            exp.ILike: no_ilike_sql,
        -115            exp.Limit: _limit_sql,
        -116            exp.Trim: trim_sql,
        -117            exp.Matches: rename_func("DECODE"),
        -118            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
        -119            exp.Subquery: lambda self, e: self.subquery_sql(e, sep=" "),
        -120            exp.Table: lambda self, e: self.table_sql(e, sep=" "),
        -121            exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})",
        -122            exp.UnixToTime: lambda self, e: f"TO_DATE('1970-01-01','YYYY-MM-DD') + ({self.sql(e, 'this')} / 86400)",
        -123            exp.Substring: rename_func("SUBSTR"),
        -124            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
        -125        }
        -126
        -127        def query_modifiers(self, expression: exp.Expression, *sqls: str) -> str:
        -128            return csv(
        -129                *sqls,
        -130                *[self.sql(sql) for sql in expression.args.get("joins") or []],
        -131                self.sql(expression, "match"),
        -132                *[self.sql(sql) for sql in expression.args.get("laterals") or []],
        -133                self.sql(expression, "where"),
        -134                self.sql(expression, "group"),
        -135                self.sql(expression, "having"),
        -136                self.sql(expression, "qualify"),
        -137                self.seg("WINDOW ") + self.expressions(expression, "windows", flat=True)
        -138                if expression.args.get("windows")
        -139                else "",
        -140                self.sql(expression, "distribute"),
        -141                self.sql(expression, "sort"),
        -142                self.sql(expression, "cluster"),
        -143                self.sql(expression, "order"),
        -144                self.sql(expression, "offset"),  # offset before limit in oracle
        -145                self.sql(expression, "limit"),
        -146                self.sql(expression, "lock"),
        -147                sep="",
        -148            )
        -149
        -150        def offset_sql(self, expression: exp.Offset) -> str:
        -151            return f"{super().offset_sql(expression)} ROWS"
        -152
        -153        def column_sql(self, expression: exp.Column) -> str:
        -154            column = super().column_sql(expression)
        -155            return f"{column} (+)" if expression.args.get("join_mark") else column
        +            
         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            "DECODE": exp.Matches.from_arg_list,
        + 75            "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
        + 76        }
        + 77
        + 78        FUNCTION_PARSERS: t.Dict[str, t.Callable] = {
        + 79            **parser.Parser.FUNCTION_PARSERS,
        + 80            "XMLTABLE": _parse_xml_table,
        + 81        }
        + 82
        + 83        def _parse_column(self) -> t.Optional[exp.Expression]:
        + 84            column = super()._parse_column()
        + 85            if column:
        + 86                column.set("join_mark", self._match(TokenType.JOIN_MARKER))
        + 87            return column
        + 88
        + 89        def _parse_hint(self) -> t.Optional[exp.Expression]:
        + 90            if self._match(TokenType.HINT):
        + 91                start = self._curr
        + 92                while self._curr and not self._match_pair(TokenType.STAR, TokenType.SLASH):
        + 93                    self._advance()
        + 94
        + 95                if not self._curr:
        + 96                    self.raise_error("Expected */ after HINT")
        + 97
        + 98                end = self._tokens[self._index - 3]
        + 99                return exp.Hint(expressions=[self._find_sql(start, end)])
        +100
        +101            return None
        +102
        +103    class Generator(generator.Generator):
        +104        LOCKING_READS_SUPPORTED = True
        +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.Hint: lambda self, e: f" /*+ {self.expressions(e).strip()} */",
        +125            exp.ILike: no_ilike_sql,
        +126            exp.Matches: rename_func("DECODE"),
        +127            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
        +128            exp.Subquery: lambda self, e: self.subquery_sql(e, sep=" "),
        +129            exp.Substring: rename_func("SUBSTR"),
        +130            exp.Table: lambda self, e: self.table_sql(e, sep=" "),
        +131            exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})",
        +132            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
        +133            exp.Trim: trim_sql,
        +134            exp.UnixToTime: lambda self, e: f"TO_DATE('1970-01-01','YYYY-MM-DD') + ({self.sql(e, 'this')} / 86400)",
        +135        }
        +136
        +137        LIMIT_FETCH = "FETCH"
        +138
        +139        def offset_sql(self, expression: exp.Offset) -> str:
        +140            return f"{super().offset_sql(expression)} ROWS"
        +141
        +142        def column_sql(self, expression: exp.Column) -> str:
        +143            column = super().column_sql(expression)
        +144            return f"{column} (+)" if expression.args.get("join_mark") else column
        +145
        +146        def xmltable_sql(self, expression: exp.XMLTable) -> str:
        +147            this = self.sql(expression, "this")
        +148            passing = self.expressions(expression, "passing")
        +149            passing = f"{self.sep()}PASSING{self.seg(passing)}" if passing else ""
        +150            columns = self.expressions(expression, "columns")
        +151            columns = f"{self.sep()}COLUMNS{self.seg(columns)}" if columns else ""
        +152            by_ref = (
        +153                f"{self.sep()}RETURNING SEQUENCE BY REF" if expression.args.get("by_ref") else ""
        +154            )
        +155            return f"XMLTABLE({self.sep('')}{self.indent(this + passing + by_ref + columns)}{self.seg(')', sep='')}"
         156
        -157        def xmltable_sql(self, expression: exp.XMLTable) -> str:
        -158            this = self.sql(expression, "this")
        -159            passing = self.expressions(expression, "passing")
        -160            passing = f"{self.sep()}PASSING{self.seg(passing)}" if passing else ""
        -161            columns = self.expressions(expression, "columns")
        -162            columns = f"{self.sep()}COLUMNS{self.seg(columns)}" if columns else ""
        -163            by_ref = (
        -164                f"{self.sep()}RETURNING SEQUENCE BY REF" if expression.args.get("by_ref") else ""
        -165            )
        -166            return f"XMLTABLE({self.sep('')}{self.indent(this + passing + by_ref + columns)}{self.seg(')', sep='')}"
        -167
        -168    class Tokenizer(tokens.Tokenizer):
        -169        KEYWORDS = {
        -170            **tokens.Tokenizer.KEYWORDS,
        -171            "(+)": TokenType.JOIN_MARKER,
        -172            "COLUMNS": TokenType.COLUMN,
        -173            "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE,
        -174            "MINUS": TokenType.EXCEPT,
        -175            "NVARCHAR2": TokenType.NVARCHAR,
        -176            "RETURNING": TokenType.RETURNING,
        -177            "START": TokenType.BEGIN,
        -178            "TOP": TokenType.TOP,
        -179            "VARCHAR2": TokenType.VARCHAR,
        -180        }
        +157    class Tokenizer(tokens.Tokenizer):
        +158        KEYWORDS = {
        +159            **tokens.Tokenizer.KEYWORDS,
        +160            "(+)": TokenType.JOIN_MARKER,
        +161            "COLUMNS": TokenType.COLUMN,
        +162            "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE,
        +163            "MINUS": TokenType.EXCEPT,
        +164            "NVARCHAR2": TokenType.NVARCHAR,
        +165            "RETURNING": TokenType.RETURNING,
        +166            "START": TokenType.BEGIN,
        +167            "TOP": TokenType.TOP,
        +168            "VARCHAR2": TokenType.VARCHAR,
        +169        }
         
        @@ -450,23 +429,37 @@
        -
        75    class Parser(parser.Parser):
        -76        FUNCTIONS = {
        -77            **parser.Parser.FUNCTIONS,  # type: ignore
        -78            "DECODE": exp.Matches.from_arg_list,
        -79            "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
        -80        }
        -81
        -82        FUNCTION_PARSERS: t.Dict[str, t.Callable] = {
        -83            **parser.Parser.FUNCTION_PARSERS,
        -84            "XMLTABLE": _parse_xml_table,
        -85        }
        -86
        -87        def _parse_column(self) -> t.Optional[exp.Expression]:
        -88            column = super()._parse_column()
        -89            if column:
        -90                column.set("join_mark", self._match(TokenType.JOIN_MARKER))
        -91            return column
        +            
         71    class Parser(parser.Parser):
        + 72        FUNCTIONS = {
        + 73            **parser.Parser.FUNCTIONS,  # type: ignore
        + 74            "DECODE": exp.Matches.from_arg_list,
        + 75            "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
        + 76        }
        + 77
        + 78        FUNCTION_PARSERS: t.Dict[str, t.Callable] = {
        + 79            **parser.Parser.FUNCTION_PARSERS,
        + 80            "XMLTABLE": _parse_xml_table,
        + 81        }
        + 82
        + 83        def _parse_column(self) -> t.Optional[exp.Expression]:
        + 84            column = super()._parse_column()
        + 85            if column:
        + 86                column.set("join_mark", self._match(TokenType.JOIN_MARKER))
        + 87            return column
        + 88
        + 89        def _parse_hint(self) -> t.Optional[exp.Expression]:
        + 90            if self._match(TokenType.HINT):
        + 91                start = self._curr
        + 92                while self._curr and not self._match_pair(TokenType.STAR, TokenType.SLASH):
        + 93                    self._advance()
        + 94
        + 95                if not self._curr:
        + 96                    self.raise_error("Expected */ after HINT")
        + 97
        + 98                end = self._tokens[self._index - 3]
        + 99                return exp.Hint(expressions=[self._find_sql(start, end)])
        +100
        +101            return None
         
        @@ -523,80 +516,59 @@ Default: "nulls_are_small"
        -
         93    class Generator(generator.Generator):
        - 94        LOCKING_READS_SUPPORTED = True
        - 95
        - 96        TYPE_MAPPING = {
        - 97            **generator.Generator.TYPE_MAPPING,  # type: ignore
        - 98            exp.DataType.Type.TINYINT: "NUMBER",
        - 99            exp.DataType.Type.SMALLINT: "NUMBER",
        -100            exp.DataType.Type.INT: "NUMBER",
        -101            exp.DataType.Type.BIGINT: "NUMBER",
        -102            exp.DataType.Type.DECIMAL: "NUMBER",
        -103            exp.DataType.Type.DOUBLE: "DOUBLE PRECISION",
        -104            exp.DataType.Type.VARCHAR: "VARCHAR2",
        -105            exp.DataType.Type.NVARCHAR: "NVARCHAR2",
        -106            exp.DataType.Type.TEXT: "CLOB",
        -107            exp.DataType.Type.BINARY: "BLOB",
        -108            exp.DataType.Type.VARBINARY: "BLOB",
        -109        }
        -110
        -111        TRANSFORMS = {
        -112            **generator.Generator.TRANSFORMS,  # type: ignore
        -113            **transforms.UNALIAS_GROUP,  # type: ignore
        -114            exp.ILike: no_ilike_sql,
        -115            exp.Limit: _limit_sql,
        -116            exp.Trim: trim_sql,
        -117            exp.Matches: rename_func("DECODE"),
        -118            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
        -119            exp.Subquery: lambda self, e: self.subquery_sql(e, sep=" "),
        -120            exp.Table: lambda self, e: self.table_sql(e, sep=" "),
        -121            exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})",
        -122            exp.UnixToTime: lambda self, e: f"TO_DATE('1970-01-01','YYYY-MM-DD') + ({self.sql(e, 'this')} / 86400)",
        -123            exp.Substring: rename_func("SUBSTR"),
        -124            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
        -125        }
        -126
        -127        def query_modifiers(self, expression: exp.Expression, *sqls: str) -> str:
        -128            return csv(
        -129                *sqls,
        -130                *[self.sql(sql) for sql in expression.args.get("joins") or []],
        -131                self.sql(expression, "match"),
        -132                *[self.sql(sql) for sql in expression.args.get("laterals") or []],
        -133                self.sql(expression, "where"),
        -134                self.sql(expression, "group"),
        -135                self.sql(expression, "having"),
        -136                self.sql(expression, "qualify"),
        -137                self.seg("WINDOW ") + self.expressions(expression, "windows", flat=True)
        -138                if expression.args.get("windows")
        -139                else "",
        -140                self.sql(expression, "distribute"),
        -141                self.sql(expression, "sort"),
        -142                self.sql(expression, "cluster"),
        -143                self.sql(expression, "order"),
        -144                self.sql(expression, "offset"),  # offset before limit in oracle
        -145                self.sql(expression, "limit"),
        -146                self.sql(expression, "lock"),
        -147                sep="",
        -148            )
        -149
        -150        def offset_sql(self, expression: exp.Offset) -> str:
        -151            return f"{super().offset_sql(expression)} ROWS"
        -152
        -153        def column_sql(self, expression: exp.Column) -> str:
        -154            column = super().column_sql(expression)
        -155            return f"{column} (+)" if expression.args.get("join_mark") else column
        -156
        -157        def xmltable_sql(self, expression: exp.XMLTable) -> str:
        -158            this = self.sql(expression, "this")
        -159            passing = self.expressions(expression, "passing")
        -160            passing = f"{self.sep()}PASSING{self.seg(passing)}" if passing else ""
        -161            columns = self.expressions(expression, "columns")
        -162            columns = f"{self.sep()}COLUMNS{self.seg(columns)}" if columns else ""
        -163            by_ref = (
        -164                f"{self.sep()}RETURNING SEQUENCE BY REF" if expression.args.get("by_ref") else ""
        -165            )
        -166            return f"XMLTABLE({self.sep('')}{self.indent(this + passing + by_ref + columns)}{self.seg(')', sep='')}"
        +            
        103    class Generator(generator.Generator):
        +104        LOCKING_READS_SUPPORTED = True
        +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.Hint: lambda self, e: f" /*+ {self.expressions(e).strip()} */",
        +125            exp.ILike: no_ilike_sql,
        +126            exp.Matches: rename_func("DECODE"),
        +127            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
        +128            exp.Subquery: lambda self, e: self.subquery_sql(e, sep=" "),
        +129            exp.Substring: rename_func("SUBSTR"),
        +130            exp.Table: lambda self, e: self.table_sql(e, sep=" "),
        +131            exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})",
        +132            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
        +133            exp.Trim: trim_sql,
        +134            exp.UnixToTime: lambda self, e: f"TO_DATE('1970-01-01','YYYY-MM-DD') + ({self.sql(e, 'this')} / 86400)",
        +135        }
        +136
        +137        LIMIT_FETCH = "FETCH"
        +138
        +139        def offset_sql(self, expression: exp.Offset) -> str:
        +140            return f"{super().offset_sql(expression)} ROWS"
        +141
        +142        def column_sql(self, expression: exp.Column) -> str:
        +143            column = super().column_sql(expression)
        +144            return f"{column} (+)" if expression.args.get("join_mark") else column
        +145
        +146        def xmltable_sql(self, expression: exp.XMLTable) -> str:
        +147            this = self.sql(expression, "this")
        +148            passing = self.expressions(expression, "passing")
        +149            passing = f"{self.sep()}PASSING{self.seg(passing)}" if passing else ""
        +150            columns = self.expressions(expression, "columns")
        +151            columns = f"{self.sep()}COLUMNS{self.seg(columns)}" if columns else ""
        +152            by_ref = (
        +153                f"{self.sep()}RETURNING SEQUENCE BY REF" if expression.args.get("by_ref") else ""
        +154            )
        +155            return f"XMLTABLE({self.sep('')}{self.indent(this + passing + by_ref + columns)}{self.seg(')', sep='')}"
         
        @@ -644,45 +616,6 @@ Default: True
        -
        - -
        - - def - query_modifiers(self, expression: sqlglot.expressions.Expression, *sqls: str) -> str: - - - -
        - -
        127        def query_modifiers(self, expression: exp.Expression, *sqls: str) -> str:
        -128            return csv(
        -129                *sqls,
        -130                *[self.sql(sql) for sql in expression.args.get("joins") or []],
        -131                self.sql(expression, "match"),
        -132                *[self.sql(sql) for sql in expression.args.get("laterals") or []],
        -133                self.sql(expression, "where"),
        -134                self.sql(expression, "group"),
        -135                self.sql(expression, "having"),
        -136                self.sql(expression, "qualify"),
        -137                self.seg("WINDOW ") + self.expressions(expression, "windows", flat=True)
        -138                if expression.args.get("windows")
        -139                else "",
        -140                self.sql(expression, "distribute"),
        -141                self.sql(expression, "sort"),
        -142                self.sql(expression, "cluster"),
        -143                self.sql(expression, "order"),
        -144                self.sql(expression, "offset"),  # offset before limit in oracle
        -145                self.sql(expression, "limit"),
        -146                self.sql(expression, "lock"),
        -147                sep="",
        -148            )
        -
        - - - - -
        @@ -694,8 +627,8 @@ Default: True
        -
        150        def offset_sql(self, expression: exp.Offset) -> str:
        -151            return f"{super().offset_sql(expression)} ROWS"
        +            
        139        def offset_sql(self, expression: exp.Offset) -> str:
        +140            return f"{super().offset_sql(expression)} ROWS"
         
        @@ -713,9 +646,9 @@ Default: True
        -
        153        def column_sql(self, expression: exp.Column) -> str:
        -154            column = super().column_sql(expression)
        -155            return f"{column} (+)" if expression.args.get("join_mark") else column
        +            
        142        def column_sql(self, expression: exp.Column) -> str:
        +143            column = super().column_sql(expression)
        +144            return f"{column} (+)" if expression.args.get("join_mark") else column
         
        @@ -733,16 +666,16 @@ Default: True
        -
        157        def xmltable_sql(self, expression: exp.XMLTable) -> str:
        -158            this = self.sql(expression, "this")
        -159            passing = self.expressions(expression, "passing")
        -160            passing = f"{self.sep()}PASSING{self.seg(passing)}" if passing else ""
        -161            columns = self.expressions(expression, "columns")
        -162            columns = f"{self.sep()}COLUMNS{self.seg(columns)}" if columns else ""
        -163            by_ref = (
        -164                f"{self.sep()}RETURNING SEQUENCE BY REF" if expression.args.get("by_ref") else ""
        -165            )
        -166            return f"XMLTABLE({self.sep('')}{self.indent(this + passing + by_ref + columns)}{self.seg(')', sep='')}"
        +            
        146        def xmltable_sql(self, expression: exp.XMLTable) -> str:
        +147            this = self.sql(expression, "this")
        +148            passing = self.expressions(expression, "passing")
        +149            passing = f"{self.sep()}PASSING{self.seg(passing)}" if passing else ""
        +150            columns = self.expressions(expression, "columns")
        +151            columns = f"{self.sep()}COLUMNS{self.seg(columns)}" if columns else ""
        +152            by_ref = (
        +153                f"{self.sep()}RETURNING SEQUENCE BY REF" if expression.args.get("by_ref") else ""
        +154            )
        +155            return f"XMLTABLE({self.sep('')}{self.indent(this + passing + by_ref + columns)}{self.seg(')', sep='')}"
         
        @@ -839,6 +772,7 @@ Default: True
        limit_sql
        setitem_sql
        set_sql
        +
        pragma_sql
        lock_sql
        literal_sql
        loaddata_sql
        @@ -850,6 +784,7 @@ Default: True
        sort_sql
        ordered_sql
        matchrecognize_sql
        +
        query_modifiers
        select_sql
        schema_sql
        star_sql
        @@ -882,6 +817,8 @@ Default: True
        primarykey_sql
        unique_sql
        if_sql
        +
        jsonkeyvalue_sql
        +
        jsonobject_sql
        in_sql
        in_unnest_op
        interval_sql
        @@ -980,19 +917,19 @@ Default: True
        -
        168    class Tokenizer(tokens.Tokenizer):
        -169        KEYWORDS = {
        -170            **tokens.Tokenizer.KEYWORDS,
        -171            "(+)": TokenType.JOIN_MARKER,
        -172            "COLUMNS": TokenType.COLUMN,
        -173            "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE,
        -174            "MINUS": TokenType.EXCEPT,
        -175            "NVARCHAR2": TokenType.NVARCHAR,
        -176            "RETURNING": TokenType.RETURNING,
        -177            "START": TokenType.BEGIN,
        -178            "TOP": TokenType.TOP,
        -179            "VARCHAR2": TokenType.VARCHAR,
        -180        }
        +            
        157    class Tokenizer(tokens.Tokenizer):
        +158        KEYWORDS = {
        +159            **tokens.Tokenizer.KEYWORDS,
        +160            "(+)": TokenType.JOIN_MARKER,
        +161            "COLUMNS": TokenType.COLUMN,
        +162            "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE,
        +163            "MINUS": TokenType.EXCEPT,
        +164            "NVARCHAR2": TokenType.NVARCHAR,
        +165            "RETURNING": TokenType.RETURNING,
        +166            "START": TokenType.BEGIN,
        +167            "TOP": TokenType.TOP,
        +168            "VARCHAR2": TokenType.VARCHAR,
        +169        }
         
        diff --git a/docs/sqlglot/dialects/postgres.html b/docs/sqlglot/dialects/postgres.html index 9172a76..86cdd70 100644 --- a/docs/sqlglot/dialects/postgres.html +++ b/docs/sqlglot/dialects/postgres.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.postgres API documentation @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • Postgres
              @@ -85,343 +85,345 @@ 6 arrow_json_extract_scalar_sql, 7 arrow_json_extract_sql, 8 format_time_lambda, - 9 min_or_least, - 10 no_paren_current_date_sql, - 11 no_tablesample_sql, - 12 no_trycast_sql, - 13 rename_func, - 14 str_position_sql, - 15 timestamptrunc_sql, - 16 trim_sql, - 17) - 18from sqlglot.helper import seq_get - 19from sqlglot.parser import binary_range_parser - 20from sqlglot.tokens import TokenType - 21from sqlglot.transforms import delegate, preprocess - 22 - 23DATE_DIFF_FACTOR = { - 24 "MICROSECOND": " * 1000000", - 25 "MILLISECOND": " * 1000", - 26 "SECOND": "", - 27 "MINUTE": " / 60", - 28 "HOUR": " / 3600", - 29 "DAY": " / 86400", - 30} - 31 + 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 - 33def _date_add_sql(kind): - 34 def func(self, expression): - 35 from sqlglot.optimizer.simplify import simplify - 36 - 37 this = self.sql(expression, "this") - 38 unit = expression.args.get("unit") - 39 expression = simplify(expression.args["expression"]) - 40 - 41 if not isinstance(expression, exp.Literal): - 42 self.unsupported("Cannot add non literal") - 43 - 44 expression = expression.copy() - 45 expression.args["is_string"] = True - 46 return f"{this} {kind} {self.sql(exp.Interval(this=expression, unit=unit))}" - 47 - 48 return func - 49 + 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 - 51def _date_diff_sql(self, expression): - 52 unit = expression.text("unit").upper() - 53 factor = DATE_DIFF_FACTOR.get(unit) - 54 - 55 end = f"CAST({expression.this} AS TIMESTAMP)" - 56 start = f"CAST({expression.expression} AS TIMESTAMP)" - 57 - 58 if factor is not None: - 59 return f"CAST(EXTRACT(epoch FROM {end} - {start}){factor} AS BIGINT)" - 60 - 61 age = f"AGE({end}, {start})" - 62 - 63 if unit == "WEEK": - 64 unit = f"EXTRACT(year FROM {age}) * 48 + EXTRACT(month FROM {age}) * 4 + EXTRACT(day FROM {age}) / 7" - 65 elif unit == "MONTH": - 66 unit = f"EXTRACT(year FROM {age}) * 12 + EXTRACT(month FROM {age})" - 67 elif unit == "QUARTER": - 68 unit = f"EXTRACT(year FROM {age}) * 4 + EXTRACT(month FROM {age}) / 3" - 69 elif unit == "YEAR": - 70 unit = f"EXTRACT(year FROM {age})" - 71 else: - 72 unit = age - 73 - 74 return f"CAST({unit} AS BIGINT)" - 75 + 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 - 77def _substring_sql(self, expression): - 78 this = self.sql(expression, "this") - 79 start = self.sql(expression, "start") - 80 length = self.sql(expression, "length") - 81 - 82 from_part = f" FROM {start}" if start else "" - 83 for_part = f" FOR {length}" if length else "" - 84 - 85 return f"SUBSTRING({this}{from_part}{for_part})" - 86 + 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 - 88def _string_agg_sql(self, expression): - 89 expression = expression.copy() - 90 separator = expression.args.get("separator") or exp.Literal.string(",") - 91 - 92 order = "" - 93 this = expression.this - 94 if isinstance(this, exp.Order): - 95 if this.this: - 96 this = this.this.pop() - 97 order = self.sql(expression.this) # Order has a leading space - 98 - 99 return f"STRING_AGG({self.format_args(this, separator)}{order})" -100 + 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 -102def _datatype_sql(self, expression): -103 if expression.this == exp.DataType.Type.ARRAY: -104 return f"{self.expressions(expression, flat=True)}[]" -105 return self.datatype_sql(expression) -106 +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 -108def _auto_increment_to_serial(expression): -109 auto = expression.find(exp.AutoIncrementColumnConstraint) -110 -111 if auto: -112 expression = expression.copy() -113 expression.args["constraints"].remove(auto.parent) -114 kind = expression.args["kind"] -115 -116 if kind.this == exp.DataType.Type.INT: -117 kind.replace(exp.DataType(this=exp.DataType.Type.SERIAL)) -118 elif kind.this == exp.DataType.Type.SMALLINT: -119 kind.replace(exp.DataType(this=exp.DataType.Type.SMALLSERIAL)) -120 elif kind.this == exp.DataType.Type.BIGINT: -121 kind.replace(exp.DataType(this=exp.DataType.Type.BIGSERIAL)) -122 -123 return expression -124 +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 -126def _serial_to_generated(expression): -127 kind = expression.args["kind"] -128 -129 if kind.this == exp.DataType.Type.SERIAL: -130 data_type = exp.DataType(this=exp.DataType.Type.INT) -131 elif kind.this == exp.DataType.Type.SMALLSERIAL: -132 data_type = exp.DataType(this=exp.DataType.Type.SMALLINT) -133 elif kind.this == exp.DataType.Type.BIGSERIAL: -134 data_type = exp.DataType(this=exp.DataType.Type.BIGINT) -135 else: -136 data_type = None -137 -138 if data_type: -139 expression = expression.copy() -140 expression.args["kind"].replace(data_type) -141 constraints = expression.args["constraints"] -142 generated = exp.ColumnConstraint(kind=exp.GeneratedAsIdentityColumnConstraint(this=False)) -143 notnull = exp.ColumnConstraint(kind=exp.NotNullColumnConstraint()) -144 if notnull not in constraints: -145 constraints.insert(0, notnull) -146 if generated not in constraints: -147 constraints.insert(0, generated) -148 -149 return expression -150 +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 -152def _generate_series(args): -153 # The goal is to convert step values like '1 day' or INTERVAL '1 day' into INTERVAL '1' day -154 step = seq_get(args, 2) -155 -156 if step is None: -157 # Postgres allows calls with just two arguments -- the "step" argument defaults to 1 -158 return exp.GenerateSeries.from_arg_list(args) -159 -160 if step.is_string: -161 args[2] = exp.to_interval(step.this) -162 elif isinstance(step, exp.Interval) and not step.args.get("unit"): -163 args[2] = exp.to_interval(step.this.this) -164 -165 return exp.GenerateSeries.from_arg_list(args) -166 +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 -168def _to_timestamp(args): -169 # TO_TIMESTAMP accepts either a single double argument or (text, text) -170 if len(args) == 1: -171 # https://www.postgresql.org/docs/current/functions-datetime.html#FUNCTIONS-DATETIME-TABLE -172 return exp.UnixToTime.from_arg_list(args) -173 # https://www.postgresql.org/docs/current/functions-formatting.html -174 return format_time_lambda(exp.StrToTime, "postgres")(args) -175 +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 -177class Postgres(Dialect): -178 null_ordering = "nulls_are_large" -179 time_format = "'YYYY-MM-DD HH24:MI:SS'" -180 time_mapping = { -181 "AM": "%p", -182 "PM": "%p", -183 "D": "%u", # 1-based day of week -184 "DD": "%d", # day of month -185 "DDD": "%j", # zero padded day of year -186 "FMDD": "%-d", # - is no leading zero for Python; same for FM in postgres -187 "FMDDD": "%-j", # day of year -188 "FMHH12": "%-I", # 9 -189 "FMHH24": "%-H", # 9 -190 "FMMI": "%-M", # Minute -191 "FMMM": "%-m", # 1 -192 "FMSS": "%-S", # Second -193 "HH12": "%I", # 09 -194 "HH24": "%H", # 09 -195 "MI": "%M", # zero padded minute -196 "MM": "%m", # 01 -197 "OF": "%z", # utc offset -198 "SS": "%S", # zero padded second -199 "TMDay": "%A", # TM is locale dependent -200 "TMDy": "%a", -201 "TMMon": "%b", # Sep -202 "TMMonth": "%B", # September -203 "TZ": "%Z", # uppercase timezone name -204 "US": "%f", # zero padded microsecond -205 "WW": "%U", # 1-based week of year -206 "YY": "%y", # 15 -207 "YYYY": "%Y", # 2015 -208 } -209 -210 class Tokenizer(tokens.Tokenizer): -211 QUOTES = ["'", "$$"] -212 -213 BIT_STRINGS = [("b'", "'"), ("B'", "'")] -214 HEX_STRINGS = [("x'", "'"), ("X'", "'")] -215 BYTE_STRINGS = [("e'", "'"), ("E'", "'")] -216 -217 KEYWORDS = { -218 **tokens.Tokenizer.KEYWORDS, -219 "~~": TokenType.LIKE, -220 "~~*": TokenType.ILIKE, -221 "~*": TokenType.IRLIKE, -222 "~": TokenType.RLIKE, -223 "@>": TokenType.AT_GT, -224 "<@": TokenType.LT_AT, -225 "BEGIN": TokenType.COMMAND, -226 "BEGIN TRANSACTION": TokenType.BEGIN, -227 "BIGSERIAL": TokenType.BIGSERIAL, -228 "CHARACTER VARYING": TokenType.VARCHAR, -229 "DECLARE": TokenType.COMMAND, -230 "DO": TokenType.COMMAND, -231 "HSTORE": TokenType.HSTORE, -232 "JSONB": TokenType.JSONB, -233 "REFRESH": TokenType.COMMAND, -234 "REINDEX": TokenType.COMMAND, -235 "RESET": TokenType.COMMAND, -236 "RETURNING": TokenType.RETURNING, -237 "REVOKE": TokenType.COMMAND, -238 "SERIAL": TokenType.SERIAL, -239 "SMALLSERIAL": TokenType.SMALLSERIAL, -240 "TEMP": TokenType.TEMPORARY, -241 "UUID": TokenType.UUID, -242 "CSTRING": TokenType.PSEUDO_TYPE, -243 } -244 -245 SINGLE_TOKENS = { -246 **tokens.Tokenizer.SINGLE_TOKENS, -247 "$": TokenType.PARAMETER, -248 } -249 -250 class Parser(parser.Parser): -251 STRICT_CAST = False -252 -253 FUNCTIONS = { -254 **parser.Parser.FUNCTIONS, # type: ignore -255 "NOW": exp.CurrentTimestamp.from_arg_list, -256 "TO_TIMESTAMP": _to_timestamp, -257 "TO_CHAR": format_time_lambda(exp.TimeToStr, "postgres"), -258 "GENERATE_SERIES": _generate_series, -259 "DATE_TRUNC": lambda args: exp.TimestampTrunc( -260 this=seq_get(args, 1), unit=seq_get(args, 0) -261 ), -262 } -263 -264 BITWISE = { -265 **parser.Parser.BITWISE, # type: ignore -266 TokenType.HASH: exp.BitwiseXor, -267 } -268 -269 FACTOR = { -270 **parser.Parser.FACTOR, -271 TokenType.CARET: exp.Pow, -272 } -273 -274 RANGE_PARSERS = { -275 **parser.Parser.RANGE_PARSERS, # type: ignore -276 TokenType.DAMP: binary_range_parser(exp.ArrayOverlaps), -277 TokenType.AT_GT: binary_range_parser(exp.ArrayContains), -278 TokenType.LT_AT: binary_range_parser(exp.ArrayContained), -279 } -280 -281 class Generator(generator.Generator): -282 LOCKING_READS_SUPPORTED = True -283 PARAMETER_TOKEN = "$" -284 -285 TYPE_MAPPING = { -286 **generator.Generator.TYPE_MAPPING, # type: ignore -287 exp.DataType.Type.TINYINT: "SMALLINT", -288 exp.DataType.Type.FLOAT: "REAL", -289 exp.DataType.Type.DOUBLE: "DOUBLE PRECISION", -290 exp.DataType.Type.BINARY: "BYTEA", -291 exp.DataType.Type.VARBINARY: "BYTEA", -292 exp.DataType.Type.DATETIME: "TIMESTAMP", -293 } -294 -295 TRANSFORMS = { -296 **generator.Generator.TRANSFORMS, # type: ignore -297 exp.BitwiseXor: lambda self, e: self.binary(e, "#"), -298 exp.ColumnDef: preprocess( -299 [ -300 _auto_increment_to_serial, -301 _serial_to_generated, -302 ], -303 delegate("columndef_sql"), -304 ), -305 exp.JSONExtract: arrow_json_extract_sql, -306 exp.JSONExtractScalar: arrow_json_extract_scalar_sql, -307 exp.JSONBExtract: lambda self, e: self.binary(e, "#>"), -308 exp.JSONBExtractScalar: lambda self, e: self.binary(e, "#>>"), -309 exp.JSONBContains: lambda self, e: self.binary(e, "?"), -310 exp.Pow: lambda self, e: self.binary(e, "^"), -311 exp.CurrentDate: no_paren_current_date_sql, -312 exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP", -313 exp.DateAdd: _date_add_sql("+"), -314 exp.DateSub: _date_add_sql("-"), -315 exp.DateDiff: _date_diff_sql, -316 exp.LogicalOr: rename_func("BOOL_OR"), -317 exp.LogicalAnd: rename_func("BOOL_AND"), -318 exp.Min: min_or_least, -319 exp.ArrayOverlaps: lambda self, e: self.binary(e, "&&"), -320 exp.ArrayContains: lambda self, e: self.binary(e, "@>"), -321 exp.ArrayContained: lambda self, e: self.binary(e, "<@"), -322 exp.RegexpLike: lambda self, e: self.binary(e, "~"), -323 exp.RegexpILike: lambda self, e: self.binary(e, "~*"), -324 exp.StrPosition: str_position_sql, -325 exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})", -326 exp.Substring: _substring_sql, -327 exp.TimestampTrunc: timestamptrunc_sql, -328 exp.TimeStrToTime: lambda self, e: f"CAST({self.sql(e, 'this')} AS TIMESTAMP)", -329 exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})", -330 exp.TableSample: no_tablesample_sql, -331 exp.ToChar: lambda self, e: self.function_fallback_sql(e), -332 exp.Trim: trim_sql, -333 exp.TryCast: no_trycast_sql, -334 exp.UnixToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')})", -335 exp.DataType: _datatype_sql, -336 exp.GroupConcat: _string_agg_sql, -337 exp.Array: lambda self, e: f"{self.normalize_func('ARRAY')}({self.sql(e.expressions[0])})" -338 if isinstance(seq_get(e.expressions, 0), exp.Select) -339 else f"{self.normalize_func('ARRAY')}[{self.expressions(e, flat=True)}]", -340 } -341 -342 PROPERTIES_LOCATION = { -343 **generator.Generator.PROPERTIES_LOCATION, # type: ignore -344 exp.TransientProperty: exp.Properties.Location.UNSUPPORTED, -345 } +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, +243 "CSTRING": TokenType.PSEUDO_TYPE, +244 } +245 +246 SINGLE_TOKENS = { +247 **tokens.Tokenizer.SINGLE_TOKENS, +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), +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 }
        @@ -437,175 +439,176 @@
        -
        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,
        -243            "CSTRING": TokenType.PSEUDO_TYPE,
        -244        }
        -245
        -246        SINGLE_TOKENS = {
        -247            **tokens.Tokenizer.SINGLE_TOKENS,
        -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),
        -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.Min: min_or_least,
        -320            exp.ArrayOverlaps: lambda self, e: self.binary(e, "&&"),
        -321            exp.ArrayContains: lambda self, e: self.binary(e, "@>"),
        -322            exp.ArrayContained: lambda self, e: self.binary(e, "<@"),
        -323            exp.RegexpLike: lambda self, e: self.binary(e, "~"),
        -324            exp.RegexpILike: lambda self, e: self.binary(e, "~*"),
        -325            exp.StrPosition: str_position_sql,
        -326            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
        -327            exp.Substring: _substring_sql,
        -328            exp.TimestampTrunc: timestamptrunc_sql,
        -329            exp.TimeStrToTime: lambda self, e: f"CAST({self.sql(e, 'this')} AS TIMESTAMP)",
        -330            exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})",
        -331            exp.TableSample: no_tablesample_sql,
        -332            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
        -333            exp.Trim: trim_sql,
        -334            exp.TryCast: no_trycast_sql,
        -335            exp.UnixToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')})",
        -336            exp.DataType: _datatype_sql,
        -337            exp.GroupConcat: _string_agg_sql,
        -338            exp.Array: lambda self, e: f"{self.normalize_func('ARRAY')}({self.sql(e.expressions[0])})"
        -339            if isinstance(seq_get(e.expressions, 0), exp.Select)
        -340            else f"{self.normalize_func('ARRAY')}[{self.expressions(e, flat=True)}]",
        -341        }
        -342
        -343        PROPERTIES_LOCATION = {
        -344            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
        -345            exp.TransientProperty: exp.Properties.Location.UNSUPPORTED,
        -346        }
        +            
        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,
        +244            "CSTRING": TokenType.PSEUDO_TYPE,
        +245        }
        +246
        +247        SINGLE_TOKENS = {
        +248            **tokens.Tokenizer.SINGLE_TOKENS,
        +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),
        +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        }
         
        @@ -640,45 +643,45 @@
        -
        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,
        -243            "CSTRING": TokenType.PSEUDO_TYPE,
        -244        }
        -245
        -246        SINGLE_TOKENS = {
        -247            **tokens.Tokenizer.SINGLE_TOKENS,
        -248            "$": TokenType.PARAMETER,
        -249        }
        +            
        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,
        +244            "CSTRING": TokenType.PSEUDO_TYPE,
        +245        }
        +246
        +247        SINGLE_TOKENS = {
        +248            **tokens.Tokenizer.SINGLE_TOKENS,
        +249            "$": TokenType.PARAMETER,
        +250        }
         
        @@ -706,36 +709,36 @@
        -
        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),
        -280        }
        +            
        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),
        +281        }
         
        @@ -792,71 +795,72 @@ Default: "nulls_are_small"
        -
        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.Min: min_or_least,
        -320            exp.ArrayOverlaps: lambda self, e: self.binary(e, "&&"),
        -321            exp.ArrayContains: lambda self, e: self.binary(e, "@>"),
        -322            exp.ArrayContained: lambda self, e: self.binary(e, "<@"),
        -323            exp.RegexpLike: lambda self, e: self.binary(e, "~"),
        -324            exp.RegexpILike: lambda self, e: self.binary(e, "~*"),
        -325            exp.StrPosition: str_position_sql,
        -326            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
        -327            exp.Substring: _substring_sql,
        -328            exp.TimestampTrunc: timestamptrunc_sql,
        -329            exp.TimeStrToTime: lambda self, e: f"CAST({self.sql(e, 'this')} AS TIMESTAMP)",
        -330            exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})",
        -331            exp.TableSample: no_tablesample_sql,
        -332            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
        -333            exp.Trim: trim_sql,
        -334            exp.TryCast: no_trycast_sql,
        -335            exp.UnixToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')})",
        -336            exp.DataType: _datatype_sql,
        -337            exp.GroupConcat: _string_agg_sql,
        -338            exp.Array: lambda self, e: f"{self.normalize_func('ARRAY')}({self.sql(e.expressions[0])})"
        -339            if isinstance(seq_get(e.expressions, 0), exp.Select)
        -340            else f"{self.normalize_func('ARRAY')}[{self.expressions(e, flat=True)}]",
        -341        }
        -342
        -343        PROPERTIES_LOCATION = {
        -344            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
        -345            exp.TransientProperty: exp.Properties.Location.UNSUPPORTED,
        -346        }
        +            
        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        }
         
        @@ -996,6 +1000,7 @@ Default: True
        offset_sql
        setitem_sql
        set_sql
        +
        pragma_sql
        lock_sql
        literal_sql
        loaddata_sql
        @@ -1040,6 +1045,8 @@ Default: True
        primarykey_sql
        unique_sql
        if_sql
        +
        jsonkeyvalue_sql
        +
        jsonobject_sql
        in_sql
        in_unnest_op
        interval_sql
        diff --git a/docs/sqlglot/dialects/presto.html b/docs/sqlglot/dialects/presto.html index b027752..2c5983c 100644 --- a/docs/sqlglot/dialects/presto.html +++ b/docs/sqlglot/dialects/presto.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.presto API documentation @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • Presto
              @@ -958,6 +958,7 @@ Default: True
              offset_sql
              setitem_sql
              set_sql
              +
              pragma_sql
              lock_sql
              literal_sql
              loaddata_sql
              @@ -1002,6 +1003,8 @@ Default: True
              primarykey_sql
              unique_sql
              if_sql
              +
              jsonkeyvalue_sql
              +
              jsonobject_sql
              in_sql
              in_unnest_op
              interval_sql
              diff --git a/docs/sqlglot/dialects/redshift.html b/docs/sqlglot/dialects/redshift.html index 7ec5882..5af8b73 100644 --- a/docs/sqlglot/dialects/redshift.html +++ b/docs/sqlglot/dialects/redshift.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.redshift API documentation @@ -28,8 +28,8 @@ -

              API Documentation

              -
                +

                API Documentation

                +
                • Redshift
                    @@ -911,6 +911,7 @@ without precision we convert it to VARCHAR(max) and if it does have
                    offset_sql
                    setitem_sql
                    set_sql
                    +
                    pragma_sql
                    lock_sql
                    literal_sql
                    loaddata_sql
                    @@ -955,6 +956,8 @@ without precision we convert it to VARCHAR(max) and if it does have
                    primarykey_sql
                    unique_sql
                    if_sql
                    +
                    jsonkeyvalue_sql
                    +
                    jsonobject_sql
                    in_sql
                    in_unnest_op
                    interval_sql
                    diff --git a/docs/sqlglot/dialects/snowflake.html b/docs/sqlglot/dialects/snowflake.html index 0ac6420..8202f0e 100644 --- a/docs/sqlglot/dialects/snowflake.html +++ b/docs/sqlglot/dialects/snowflake.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.snowflake API documentation @@ -28,8 +28,8 @@ -

                    API Documentation

                    -
                      +

                      API Documentation

                      +
                      • Snowflake
                          @@ -115,389 +115,394 @@ 9 datestrtodate_sql, 10 format_time_lambda, 11 inline_array_sql, - 12 min_or_least, - 13 rename_func, - 14 timestamptrunc_sql, - 15 timestrtotime_sql, - 16 ts_or_ds_to_date_sql, - 17 var_map_sql, - 18) - 19from sqlglot.expressions import Literal - 20from sqlglot.helper import flatten, seq_get - 21from sqlglot.parser import binary_range_parser - 22from sqlglot.tokens import TokenType - 23 + 12 max_or_greatest, + 13 min_or_least, + 14 rename_func, + 15 timestamptrunc_sql, + 16 timestrtotime_sql, + 17 ts_or_ds_to_date_sql, + 18 var_map_sql, + 19) + 20from sqlglot.expressions import Literal + 21from sqlglot.helper import flatten, seq_get + 22from sqlglot.parser import binary_range_parser + 23from sqlglot.tokens import TokenType 24 - 25def _check_int(s): - 26 if s[0] in ("-", "+"): - 27 return s[1:].isdigit() - 28 return s.isdigit() - 29 + 25 + 26def _check_int(s): + 27 if s[0] in ("-", "+"): + 28 return s[1:].isdigit() + 29 return s.isdigit() 30 - 31# from https://docs.snowflake.com/en/sql-reference/functions/to_timestamp.html - 32def _snowflake_to_timestamp(args): - 33 if len(args) == 2: - 34 first_arg, second_arg = args - 35 if second_arg.is_string: - 36 # case: <string_expr> [ , <format> ] - 37 return format_time_lambda(exp.StrToTime, "snowflake")(args) - 38 - 39 # case: <numeric_expr> [ , <scale> ] - 40 if second_arg.name not in ["0", "3", "9"]: - 41 raise ValueError( - 42 f"Scale for snowflake numeric timestamp is {second_arg}, but should be 0, 3, or 9" - 43 ) - 44 - 45 if second_arg.name == "0": - 46 timescale = exp.UnixToTime.SECONDS - 47 elif second_arg.name == "3": - 48 timescale = exp.UnixToTime.MILLIS - 49 elif second_arg.name == "9": - 50 timescale = exp.UnixToTime.MICROS - 51 - 52 return exp.UnixToTime(this=first_arg, scale=timescale) - 53 - 54 first_arg = seq_get(args, 0) - 55 if not isinstance(first_arg, Literal): - 56 # case: <variant_expr> - 57 return format_time_lambda(exp.StrToTime, "snowflake", default=True)(args) - 58 - 59 if first_arg.is_string: - 60 if _check_int(first_arg.this): - 61 # case: <integer> - 62 return exp.UnixToTime.from_arg_list(args) - 63 - 64 # case: <date_expr> - 65 return format_time_lambda(exp.StrToTime, "snowflake", default=True)(args) - 66 - 67 # case: <numeric_expr> - 68 return exp.UnixToTime.from_arg_list(args) - 69 + 31 + 32# from https://docs.snowflake.com/en/sql-reference/functions/to_timestamp.html + 33def _snowflake_to_timestamp(args): + 34 if len(args) == 2: + 35 first_arg, second_arg = args + 36 if second_arg.is_string: + 37 # case: <string_expr> [ , <format> ] + 38 return format_time_lambda(exp.StrToTime, "snowflake")(args) + 39 + 40 # case: <numeric_expr> [ , <scale> ] + 41 if second_arg.name not in ["0", "3", "9"]: + 42 raise ValueError( + 43 f"Scale for snowflake numeric timestamp is {second_arg}, but should be 0, 3, or 9" + 44 ) + 45 + 46 if second_arg.name == "0": + 47 timescale = exp.UnixToTime.SECONDS + 48 elif second_arg.name == "3": + 49 timescale = exp.UnixToTime.MILLIS + 50 elif second_arg.name == "9": + 51 timescale = exp.UnixToTime.MICROS + 52 + 53 return exp.UnixToTime(this=first_arg, scale=timescale) + 54 + 55 first_arg = seq_get(args, 0) + 56 if not isinstance(first_arg, Literal): + 57 # case: <variant_expr> + 58 return format_time_lambda(exp.StrToTime, "snowflake", default=True)(args) + 59 + 60 if first_arg.is_string: + 61 if _check_int(first_arg.this): + 62 # case: <integer> + 63 return exp.UnixToTime.from_arg_list(args) + 64 + 65 # case: <date_expr> + 66 return format_time_lambda(exp.StrToTime, "snowflake", default=True)(args) + 67 + 68 # case: <numeric_expr> + 69 return exp.UnixToTime.from_arg_list(args) 70 - 71def _unix_to_time_sql(self, expression): - 72 scale = expression.args.get("scale") - 73 timestamp = self.sql(expression, "this") - 74 if scale in [None, exp.UnixToTime.SECONDS]: - 75 return f"TO_TIMESTAMP({timestamp})" - 76 if scale == exp.UnixToTime.MILLIS: - 77 return f"TO_TIMESTAMP({timestamp}, 3)" - 78 if scale == exp.UnixToTime.MICROS: - 79 return f"TO_TIMESTAMP({timestamp}, 9)" - 80 - 81 raise ValueError("Improper scale for timestamp") - 82 + 71 + 72def _unix_to_time_sql(self, expression): + 73 scale = expression.args.get("scale") + 74 timestamp = self.sql(expression, "this") + 75 if scale in [None, exp.UnixToTime.SECONDS]: + 76 return f"TO_TIMESTAMP({timestamp})" + 77 if scale == exp.UnixToTime.MILLIS: + 78 return f"TO_TIMESTAMP({timestamp}, 3)" + 79 if scale == exp.UnixToTime.MICROS: + 80 return f"TO_TIMESTAMP({timestamp}, 9)" + 81 + 82 raise ValueError("Improper scale for timestamp") 83 - 84# https://docs.snowflake.com/en/sql-reference/functions/date_part.html - 85# https://docs.snowflake.com/en/sql-reference/functions-date-time.html#label-supported-date-time-parts - 86def _parse_date_part(self): - 87 this = self._parse_var() or self._parse_type() - 88 self._match(TokenType.COMMA) - 89 expression = self._parse_bitwise() - 90 - 91 name = this.name.upper() - 92 if name.startswith("EPOCH"): - 93 if name.startswith("EPOCH_MILLISECOND"): - 94 scale = 10**3 - 95 elif name.startswith("EPOCH_MICROSECOND"): - 96 scale = 10**6 - 97 elif name.startswith("EPOCH_NANOSECOND"): - 98 scale = 10**9 - 99 else: -100 scale = None -101 -102 ts = self.expression(exp.Cast, this=expression, to=exp.DataType.build("TIMESTAMP")) -103 to_unix = self.expression(exp.TimeToUnix, this=ts) -104 -105 if scale: -106 to_unix = exp.Mul(this=to_unix, expression=exp.Literal.number(scale)) -107 -108 return to_unix -109 -110 return self.expression(exp.Extract, this=this, expression=expression) -111 + 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): + 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) 112 -113# https://docs.snowflake.com/en/sql-reference/functions/div0 -114def _div0_to_if(args): -115 cond = exp.EQ(this=seq_get(args, 1), expression=exp.Literal.number(0)) -116 true = exp.Literal.number(0) -117 false = exp.Div(this=seq_get(args, 0), expression=seq_get(args, 1)) -118 return exp.If(this=cond, true=true, false=false) -119 +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# https://docs.snowflake.com/en/sql-reference/functions/zeroifnull -122def _zeroifnull_to_if(args): -123 cond = exp.Is(this=seq_get(args, 0), expression=exp.Null()) -124 return exp.If(this=cond, true=exp.Literal.number(0), false=seq_get(args, 0)) -125 +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# https://docs.snowflake.com/en/sql-reference/functions/zeroifnull -128def _nullifzero_to_if(args): -129 cond = exp.EQ(this=seq_get(args, 0), expression=exp.Literal.number(0)) -130 return exp.If(this=cond, true=exp.Null(), false=seq_get(args, 0)) -131 +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 -133def _datatype_sql(self, expression): -134 if expression.this == exp.DataType.Type.ARRAY: -135 return "ARRAY" -136 elif expression.this == exp.DataType.Type.MAP: -137 return "OBJECT" -138 return self.datatype_sql(expression) -139 +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 -141class Snowflake(Dialect): -142 null_ordering = "nulls_are_large" -143 time_format = "'yyyy-mm-dd hh24:mi:ss'" -144 -145 time_mapping = { -146 "YYYY": "%Y", -147 "yyyy": "%Y", -148 "YY": "%y", -149 "yy": "%y", -150 "MMMM": "%B", -151 "mmmm": "%B", -152 "MON": "%b", -153 "mon": "%b", -154 "MM": "%m", -155 "mm": "%m", -156 "DD": "%d", -157 "dd": "%d", -158 "d": "%-d", -159 "DY": "%w", -160 "dy": "%w", -161 "HH24": "%H", -162 "hh24": "%H", -163 "HH12": "%I", -164 "hh12": "%I", -165 "MI": "%M", -166 "mi": "%M", -167 "SS": "%S", -168 "ss": "%S", -169 "FF": "%f", -170 "ff": "%f", -171 "FF6": "%f", -172 "ff6": "%f", -173 } -174 -175 class Parser(parser.Parser): -176 FUNCTIONS = { -177 **parser.Parser.FUNCTIONS, -178 "ARRAYAGG": exp.ArrayAgg.from_arg_list, -179 "ARRAY_CONSTRUCT": exp.Array.from_arg_list, -180 "ARRAY_TO_STRING": exp.ArrayJoin.from_arg_list, -181 "DATE_TRUNC": date_trunc_to_time, -182 "DATEADD": lambda args: exp.DateAdd( -183 this=seq_get(args, 2), -184 expression=seq_get(args, 1), -185 unit=seq_get(args, 0), -186 ), -187 "DATEDIFF": lambda args: exp.DateDiff( -188 this=seq_get(args, 2), -189 expression=seq_get(args, 1), -190 unit=seq_get(args, 0), -191 ), -192 "DECODE": exp.Matches.from_arg_list, -193 "DIV0": _div0_to_if, -194 "IFF": exp.If.from_arg_list, -195 "NULLIFZERO": _nullifzero_to_if, -196 "OBJECT_CONSTRUCT": parser.parse_var_map, -197 "RLIKE": exp.RegexpLike.from_arg_list, -198 "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)), -199 "TO_ARRAY": exp.Array.from_arg_list, -200 "TO_VARCHAR": exp.ToChar.from_arg_list, -201 "TO_TIMESTAMP": _snowflake_to_timestamp, -202 "ZEROIFNULL": _zeroifnull_to_if, -203 } -204 -205 FUNCTION_PARSERS = { -206 **parser.Parser.FUNCTION_PARSERS, -207 "DATE_PART": _parse_date_part, -208 } -209 FUNCTION_PARSERS.pop("TRIM") -210 -211 FUNC_TOKENS = { -212 *parser.Parser.FUNC_TOKENS, -213 TokenType.RLIKE, -214 TokenType.TABLE, -215 } -216 -217 COLUMN_OPERATORS = { -218 **parser.Parser.COLUMN_OPERATORS, # type: ignore -219 TokenType.COLON: lambda self, this, path: self.expression( -220 exp.Bracket, -221 this=this, -222 expressions=[path], -223 ), -224 } -225 -226 RANGE_PARSERS = { -227 **parser.Parser.RANGE_PARSERS, # type: ignore -228 TokenType.LIKE_ANY: binary_range_parser(exp.LikeAny), -229 TokenType.ILIKE_ANY: binary_range_parser(exp.ILikeAny), -230 } -231 -232 ALTER_PARSERS = { -233 **parser.Parser.ALTER_PARSERS, # type: ignore -234 "UNSET": lambda self: self._parse_alter_table_set_tag(unset=True), -235 "SET": lambda self: self._parse_alter_table_set_tag(), -236 } -237 -238 def _parse_alter_table_set_tag(self, unset: bool = False) -> exp.Expression: -239 self._match_text_seq("TAG") -240 parser = t.cast(t.Callable, self._parse_id_var if unset else self._parse_conjunction) -241 return self.expression(exp.SetTag, expressions=self._parse_csv(parser), unset=unset) -242 -243 class Tokenizer(tokens.Tokenizer): -244 QUOTES = ["'", "$$"] -245 STRING_ESCAPES = ["\\", "'"] -246 -247 KEYWORDS = { -248 **tokens.Tokenizer.KEYWORDS, -249 "EXCLUDE": TokenType.EXCEPT, -250 "ILIKE ANY": TokenType.ILIKE_ANY, -251 "LIKE ANY": TokenType.LIKE_ANY, -252 "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE, -253 "PUT": TokenType.COMMAND, -254 "RENAME": TokenType.REPLACE, -255 "TIMESTAMP_LTZ": TokenType.TIMESTAMPLTZ, -256 "TIMESTAMP_NTZ": TokenType.TIMESTAMP, -257 "TIMESTAMP_TZ": TokenType.TIMESTAMPTZ, -258 "TIMESTAMPNTZ": TokenType.TIMESTAMP, -259 "MINUS": TokenType.EXCEPT, -260 "SAMPLE": TokenType.TABLE_SAMPLE, -261 } -262 -263 SINGLE_TOKENS = { -264 **tokens.Tokenizer.SINGLE_TOKENS, -265 "$": TokenType.PARAMETER, -266 } -267 -268 class Generator(generator.Generator): -269 PARAMETER_TOKEN = "$" -270 MATCHED_BY_SOURCE = False -271 -272 TRANSFORMS = { -273 **generator.Generator.TRANSFORMS, # type: ignore -274 exp.Array: inline_array_sql, -275 exp.ArrayConcat: rename_func("ARRAY_CAT"), -276 exp.ArrayJoin: rename_func("ARRAY_TO_STRING"), -277 exp.DateAdd: lambda self, e: self.func("DATEADD", e.text("unit"), e.expression, e.this), -278 exp.DateStrToDate: datestrtodate_sql, -279 exp.DataType: _datatype_sql, -280 exp.If: rename_func("IFF"), -281 exp.Map: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"), -282 exp.LogicalOr: rename_func("BOOLOR_AGG"), -283 exp.LogicalAnd: rename_func("BOOLAND_AGG"), -284 exp.VarMap: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"), -285 exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}", -286 exp.Matches: rename_func("DECODE"), -287 exp.StrPosition: lambda self, e: self.func( -288 "POSITION", e.args.get("substr"), e.this, e.args.get("position") -289 ), -290 exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})", -291 exp.TimestampTrunc: timestamptrunc_sql, -292 exp.TimeStrToTime: timestrtotime_sql, -293 exp.TimeToUnix: lambda self, e: f"EXTRACT(epoch_second FROM {self.sql(e, 'this')})", -294 exp.Trim: lambda self, e: self.func("TRIM", e.this, e.expression), -295 exp.ToChar: lambda self, e: self.function_fallback_sql(e), -296 exp.TsOrDsToDate: ts_or_ds_to_date_sql("snowflake"), -297 exp.UnixToTime: _unix_to_time_sql, -298 exp.DayOfWeek: rename_func("DAYOFWEEK"), -299 exp.Min: min_or_least, -300 } -301 -302 TYPE_MAPPING = { -303 **generator.Generator.TYPE_MAPPING, # type: ignore -304 exp.DataType.Type.TIMESTAMP: "TIMESTAMPNTZ", +141 +142class Snowflake(Dialect): +143 null_ordering = "nulls_are_large" +144 time_format = "'yyyy-mm-dd hh24:mi:ss'" +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 "DATE_TRUNC": date_trunc_to_time, +183 "DATEADD": lambda args: exp.DateAdd( +184 this=seq_get(args, 2), +185 expression=seq_get(args, 1), +186 unit=seq_get(args, 0), +187 ), +188 "DATEDIFF": lambda args: exp.DateDiff( +189 this=seq_get(args, 2), +190 expression=seq_get(args, 1), +191 unit=seq_get(args, 0), +192 ), +193 "DECODE": exp.Matches.from_arg_list, +194 "DIV0": _div0_to_if, +195 "IFF": exp.If.from_arg_list, +196 "NULLIFZERO": _nullifzero_to_if, +197 "OBJECT_CONSTRUCT": parser.parse_var_map, +198 "RLIKE": exp.RegexpLike.from_arg_list, +199 "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)), +200 "TO_ARRAY": exp.Array.from_arg_list, +201 "TO_VARCHAR": exp.ToChar.from_arg_list, +202 "TO_TIMESTAMP": _snowflake_to_timestamp, +203 "ZEROIFNULL": _zeroifnull_to_if, +204 } +205 +206 FUNCTION_PARSERS = { +207 **parser.Parser.FUNCTION_PARSERS, +208 "DATE_PART": _parse_date_part, +209 } +210 FUNCTION_PARSERS.pop("TRIM") +211 +212 FUNC_TOKENS = { +213 *parser.Parser.FUNC_TOKENS, +214 TokenType.RLIKE, +215 TokenType.TABLE, +216 } +217 +218 COLUMN_OPERATORS = { +219 **parser.Parser.COLUMN_OPERATORS, # type: ignore +220 TokenType.COLON: lambda self, this, path: self.expression( +221 exp.Bracket, +222 this=this, +223 expressions=[path], +224 ), +225 } +226 +227 RANGE_PARSERS = { +228 **parser.Parser.RANGE_PARSERS, # type: ignore +229 TokenType.LIKE_ANY: binary_range_parser(exp.LikeAny), +230 TokenType.ILIKE_ANY: binary_range_parser(exp.ILikeAny), +231 } +232 +233 ALTER_PARSERS = { +234 **parser.Parser.ALTER_PARSERS, # type: ignore +235 "UNSET": lambda self: self._parse_alter_table_set_tag(unset=True), +236 "SET": lambda self: self._parse_alter_table_set_tag(), +237 } +238 +239 def _parse_alter_table_set_tag(self, unset: bool = False) -> exp.Expression: +240 self._match_text_seq("TAG") +241 parser = t.cast(t.Callable, self._parse_id_var if unset else self._parse_conjunction) +242 return self.expression(exp.SetTag, expressions=self._parse_csv(parser), unset=unset) +243 +244 class Tokenizer(tokens.Tokenizer): +245 QUOTES = ["'", "$$"] +246 STRING_ESCAPES = ["\\", "'"] +247 +248 KEYWORDS = { +249 **tokens.Tokenizer.KEYWORDS, +250 "EXCLUDE": TokenType.EXCEPT, +251 "ILIKE ANY": TokenType.ILIKE_ANY, +252 "LIKE ANY": TokenType.LIKE_ANY, +253 "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE, +254 "PUT": TokenType.COMMAND, +255 "RENAME": TokenType.REPLACE, +256 "TIMESTAMP_LTZ": TokenType.TIMESTAMPLTZ, +257 "TIMESTAMP_NTZ": TokenType.TIMESTAMP, +258 "TIMESTAMP_TZ": TokenType.TIMESTAMPTZ, +259 "TIMESTAMPNTZ": TokenType.TIMESTAMP, +260 "MINUS": TokenType.EXCEPT, +261 "SAMPLE": TokenType.TABLE_SAMPLE, +262 } +263 +264 SINGLE_TOKENS = { +265 **tokens.Tokenizer.SINGLE_TOKENS, +266 "$": TokenType.PARAMETER, +267 } +268 +269 class Generator(generator.Generator): +270 PARAMETER_TOKEN = "$" +271 MATCHED_BY_SOURCE = False +272 +273 TRANSFORMS = { +274 **generator.Generator.TRANSFORMS, # type: ignore +275 exp.Array: inline_array_sql, +276 exp.ArrayConcat: rename_func("ARRAY_CAT"), +277 exp.ArrayJoin: rename_func("ARRAY_TO_STRING"), +278 exp.DateAdd: lambda self, e: self.func("DATEADD", e.text("unit"), e.expression, e.this), +279 exp.DateDiff: lambda self, e: self.func( +280 "DATEDIFF", e.text("unit"), e.expression, e.this +281 ), +282 exp.DateStrToDate: datestrtodate_sql, +283 exp.DataType: _datatype_sql, +284 exp.If: rename_func("IFF"), +285 exp.Map: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"), +286 exp.LogicalOr: rename_func("BOOLOR_AGG"), +287 exp.LogicalAnd: rename_func("BOOLAND_AGG"), +288 exp.VarMap: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"), +289 exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}", +290 exp.Matches: rename_func("DECODE"), +291 exp.StrPosition: lambda self, e: self.func( +292 "POSITION", e.args.get("substr"), e.this, e.args.get("position") +293 ), +294 exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})", +295 exp.TimestampTrunc: timestamptrunc_sql, +296 exp.TimeStrToTime: timestrtotime_sql, +297 exp.TimeToUnix: lambda self, e: f"EXTRACT(epoch_second FROM {self.sql(e, 'this')})", +298 exp.Trim: lambda self, e: self.func("TRIM", e.this, e.expression), +299 exp.ToChar: lambda self, e: self.function_fallback_sql(e), +300 exp.TsOrDsToDate: ts_or_ds_to_date_sql("snowflake"), +301 exp.UnixToTime: _unix_to_time_sql, +302 exp.DayOfWeek: rename_func("DAYOFWEEK"), +303 exp.Max: max_or_greatest, +304 exp.Min: min_or_least, 305 } 306 -307 STAR_MAPPING = { -308 "except": "EXCLUDE", -309 "replace": "RENAME", +307 TYPE_MAPPING = { +308 **generator.Generator.TYPE_MAPPING, # type: ignore +309 exp.DataType.Type.TIMESTAMP: "TIMESTAMPNTZ", 310 } 311 -312 PROPERTIES_LOCATION = { -313 **generator.Generator.PROPERTIES_LOCATION, # type: ignore -314 exp.SetProperty: exp.Properties.Location.UNSUPPORTED, +312 STAR_MAPPING = { +313 "except": "EXCLUDE", +314 "replace": "RENAME", 315 } 316 -317 def ilikeany_sql(self, expression: exp.ILikeAny) -> str: -318 return self.binary(expression, "ILIKE ANY") -319 -320 def likeany_sql(self, expression: exp.LikeAny) -> str: -321 return self.binary(expression, "LIKE ANY") -322 -323 def except_op(self, expression): -324 if not expression.args.get("distinct", False): -325 self.unsupported("EXCEPT with All is not supported in Snowflake") -326 return super().except_op(expression) +317 PROPERTIES_LOCATION = { +318 **generator.Generator.PROPERTIES_LOCATION, # type: ignore +319 exp.SetProperty: exp.Properties.Location.UNSUPPORTED, +320 } +321 +322 def ilikeany_sql(self, expression: exp.ILikeAny) -> str: +323 return self.binary(expression, "ILIKE ANY") +324 +325 def likeany_sql(self, expression: exp.LikeAny) -> str: +326 return self.binary(expression, "LIKE ANY") 327 -328 def intersect_op(self, expression): +328 def except_op(self, expression): 329 if not expression.args.get("distinct", False): -330 self.unsupported("INTERSECT with All is not supported in Snowflake") -331 return super().intersect_op(expression) +330 self.unsupported("EXCEPT with All is not supported in Snowflake") +331 return super().except_op(expression) 332 -333 def values_sql(self, expression: exp.Values) -> str: -334 """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted. -335 -336 We also want to make sure that after we find matches where we need to unquote a column that we prevent users -337 from adding quotes to the column by using the `identify` argument when generating the SQL. -338 """ -339 alias = expression.args.get("alias") -340 if alias and alias.args.get("columns"): -341 expression = expression.transform( -342 lambda node: exp.Identifier(**{**node.args, "quoted": False}) -343 if isinstance(node, exp.Identifier) -344 and isinstance(node.parent, exp.TableAlias) -345 and node.arg_key == "columns" -346 else node, -347 ) -348 return self.no_identify(lambda: super(self.__class__, self).values_sql(expression)) -349 return super().values_sql(expression) -350 -351 def settag_sql(self, expression: exp.SetTag) -> str: -352 action = "UNSET" if expression.args.get("unset") else "SET" -353 return f"{action} TAG {self.expressions(expression)}" -354 -355 def select_sql(self, expression: exp.Select) -> str: -356 """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also -357 that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need -358 to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when -359 generating the SQL. -360 -361 Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the -362 expression. This might not be true in a case where the same column name can be sourced from another table that can -363 properly quote but should be true in most cases. -364 """ -365 values_identifiers = set( -366 flatten( -367 (v.args.get("alias") or exp.Alias()).args.get("columns", []) -368 for v in expression.find_all(exp.Values) -369 ) -370 ) -371 if values_identifiers: -372 expression = expression.transform( -373 lambda node: exp.Identifier(**{**node.args, "quoted": False}) -374 if isinstance(node, exp.Identifier) and node in values_identifiers -375 else node, -376 ) -377 return self.no_identify(lambda: super(self.__class__, self).select_sql(expression)) -378 return super().select_sql(expression) -379 -380 def describe_sql(self, expression: exp.Describe) -> str: -381 # Default to table if kind is unknown -382 kind_value = expression.args.get("kind") or "TABLE" -383 kind = f" {kind_value}" if kind_value else "" -384 this = f" {self.sql(expression, 'this')}" -385 return f"DESCRIBE{kind}{this}" -386 -387 def generatedasidentitycolumnconstraint_sql( -388 self, expression: exp.GeneratedAsIdentityColumnConstraint -389 ) -> str: -390 start = expression.args.get("start") -391 start = f" START {start}" if start else "" -392 increment = expression.args.get("increment") -393 increment = f" INCREMENT {increment}" if increment else "" -394 return f"AUTOINCREMENT{start}{increment}" +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) +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}"
        @@ -513,260 +518,264 @@ -
        142class Snowflake(Dialect):
        -143    null_ordering = "nulls_are_large"
        -144    time_format = "'yyyy-mm-dd hh24:mi:ss'"
        -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            "DATE_TRUNC": date_trunc_to_time,
        -183            "DATEADD": lambda args: exp.DateAdd(
        -184                this=seq_get(args, 2),
        -185                expression=seq_get(args, 1),
        -186                unit=seq_get(args, 0),
        -187            ),
        -188            "DATEDIFF": lambda args: exp.DateDiff(
        -189                this=seq_get(args, 2),
        -190                expression=seq_get(args, 1),
        -191                unit=seq_get(args, 0),
        -192            ),
        -193            "DECODE": exp.Matches.from_arg_list,
        -194            "DIV0": _div0_to_if,
        -195            "IFF": exp.If.from_arg_list,
        -196            "NULLIFZERO": _nullifzero_to_if,
        -197            "OBJECT_CONSTRUCT": parser.parse_var_map,
        -198            "RLIKE": exp.RegexpLike.from_arg_list,
        -199            "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
        -200            "TO_ARRAY": exp.Array.from_arg_list,
        -201            "TO_VARCHAR": exp.ToChar.from_arg_list,
        -202            "TO_TIMESTAMP": _snowflake_to_timestamp,
        -203            "ZEROIFNULL": _zeroifnull_to_if,
        -204        }
        -205
        -206        FUNCTION_PARSERS = {
        -207            **parser.Parser.FUNCTION_PARSERS,
        -208            "DATE_PART": _parse_date_part,
        -209        }
        -210        FUNCTION_PARSERS.pop("TRIM")
        -211
        -212        FUNC_TOKENS = {
        -213            *parser.Parser.FUNC_TOKENS,
        -214            TokenType.RLIKE,
        -215            TokenType.TABLE,
        -216        }
        -217
        -218        COLUMN_OPERATORS = {
        -219            **parser.Parser.COLUMN_OPERATORS,  # type: ignore
        -220            TokenType.COLON: lambda self, this, path: self.expression(
        -221                exp.Bracket,
        -222                this=this,
        -223                expressions=[path],
        -224            ),
        -225        }
        -226
        -227        RANGE_PARSERS = {
        -228            **parser.Parser.RANGE_PARSERS,  # type: ignore
        -229            TokenType.LIKE_ANY: binary_range_parser(exp.LikeAny),
        -230            TokenType.ILIKE_ANY: binary_range_parser(exp.ILikeAny),
        -231        }
        -232
        -233        ALTER_PARSERS = {
        -234            **parser.Parser.ALTER_PARSERS,  # type: ignore
        -235            "UNSET": lambda self: self._parse_alter_table_set_tag(unset=True),
        -236            "SET": lambda self: self._parse_alter_table_set_tag(),
        -237        }
        -238
        -239        def _parse_alter_table_set_tag(self, unset: bool = False) -> exp.Expression:
        -240            self._match_text_seq("TAG")
        -241            parser = t.cast(t.Callable, self._parse_id_var if unset else self._parse_conjunction)
        -242            return self.expression(exp.SetTag, expressions=self._parse_csv(parser), unset=unset)
        -243
        -244    class Tokenizer(tokens.Tokenizer):
        -245        QUOTES = ["'", "$$"]
        -246        STRING_ESCAPES = ["\\", "'"]
        -247
        -248        KEYWORDS = {
        -249            **tokens.Tokenizer.KEYWORDS,
        -250            "EXCLUDE": TokenType.EXCEPT,
        -251            "ILIKE ANY": TokenType.ILIKE_ANY,
        -252            "LIKE ANY": TokenType.LIKE_ANY,
        -253            "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE,
        -254            "PUT": TokenType.COMMAND,
        -255            "RENAME": TokenType.REPLACE,
        -256            "TIMESTAMP_LTZ": TokenType.TIMESTAMPLTZ,
        -257            "TIMESTAMP_NTZ": TokenType.TIMESTAMP,
        -258            "TIMESTAMP_TZ": TokenType.TIMESTAMPTZ,
        -259            "TIMESTAMPNTZ": TokenType.TIMESTAMP,
        -260            "MINUS": TokenType.EXCEPT,
        -261            "SAMPLE": TokenType.TABLE_SAMPLE,
        -262        }
        -263
        -264        SINGLE_TOKENS = {
        -265            **tokens.Tokenizer.SINGLE_TOKENS,
        -266            "$": TokenType.PARAMETER,
        -267        }
        -268
        -269    class Generator(generator.Generator):
        -270        PARAMETER_TOKEN = "$"
        -271        MATCHED_BY_SOURCE = False
        -272
        -273        TRANSFORMS = {
        -274            **generator.Generator.TRANSFORMS,  # type: ignore
        -275            exp.Array: inline_array_sql,
        -276            exp.ArrayConcat: rename_func("ARRAY_CAT"),
        -277            exp.ArrayJoin: rename_func("ARRAY_TO_STRING"),
        -278            exp.DateAdd: lambda self, e: self.func("DATEADD", e.text("unit"), e.expression, e.this),
        -279            exp.DateStrToDate: datestrtodate_sql,
        -280            exp.DataType: _datatype_sql,
        -281            exp.If: rename_func("IFF"),
        -282            exp.Map: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"),
        -283            exp.LogicalOr: rename_func("BOOLOR_AGG"),
        -284            exp.LogicalAnd: rename_func("BOOLAND_AGG"),
        -285            exp.VarMap: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"),
        -286            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
        -287            exp.Matches: rename_func("DECODE"),
        -288            exp.StrPosition: lambda self, e: self.func(
        -289                "POSITION", e.args.get("substr"), e.this, e.args.get("position")
        -290            ),
        -291            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
        -292            exp.TimestampTrunc: timestamptrunc_sql,
        -293            exp.TimeStrToTime: timestrtotime_sql,
        -294            exp.TimeToUnix: lambda self, e: f"EXTRACT(epoch_second FROM {self.sql(e, 'this')})",
        -295            exp.Trim: lambda self, e: self.func("TRIM", e.this, e.expression),
        -296            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
        -297            exp.TsOrDsToDate: ts_or_ds_to_date_sql("snowflake"),
        -298            exp.UnixToTime: _unix_to_time_sql,
        -299            exp.DayOfWeek: rename_func("DAYOFWEEK"),
        -300            exp.Min: min_or_least,
        -301        }
        -302
        -303        TYPE_MAPPING = {
        -304            **generator.Generator.TYPE_MAPPING,  # type: ignore
        -305            exp.DataType.Type.TIMESTAMP: "TIMESTAMPNTZ",
        +            
        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            "DATE_TRUNC": date_trunc_to_time,
        +184            "DATEADD": lambda args: exp.DateAdd(
        +185                this=seq_get(args, 2),
        +186                expression=seq_get(args, 1),
        +187                unit=seq_get(args, 0),
        +188            ),
        +189            "DATEDIFF": lambda args: exp.DateDiff(
        +190                this=seq_get(args, 2),
        +191                expression=seq_get(args, 1),
        +192                unit=seq_get(args, 0),
        +193            ),
        +194            "DECODE": exp.Matches.from_arg_list,
        +195            "DIV0": _div0_to_if,
        +196            "IFF": exp.If.from_arg_list,
        +197            "NULLIFZERO": _nullifzero_to_if,
        +198            "OBJECT_CONSTRUCT": parser.parse_var_map,
        +199            "RLIKE": exp.RegexpLike.from_arg_list,
        +200            "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
        +201            "TO_ARRAY": exp.Array.from_arg_list,
        +202            "TO_VARCHAR": exp.ToChar.from_arg_list,
        +203            "TO_TIMESTAMP": _snowflake_to_timestamp,
        +204            "ZEROIFNULL": _zeroifnull_to_if,
        +205        }
        +206
        +207        FUNCTION_PARSERS = {
        +208            **parser.Parser.FUNCTION_PARSERS,
        +209            "DATE_PART": _parse_date_part,
        +210        }
        +211        FUNCTION_PARSERS.pop("TRIM")
        +212
        +213        FUNC_TOKENS = {
        +214            *parser.Parser.FUNC_TOKENS,
        +215            TokenType.RLIKE,
        +216            TokenType.TABLE,
        +217        }
        +218
        +219        COLUMN_OPERATORS = {
        +220            **parser.Parser.COLUMN_OPERATORS,  # type: ignore
        +221            TokenType.COLON: lambda self, this, path: self.expression(
        +222                exp.Bracket,
        +223                this=this,
        +224                expressions=[path],
        +225            ),
        +226        }
        +227
        +228        RANGE_PARSERS = {
        +229            **parser.Parser.RANGE_PARSERS,  # type: ignore
        +230            TokenType.LIKE_ANY: binary_range_parser(exp.LikeAny),
        +231            TokenType.ILIKE_ANY: binary_range_parser(exp.ILikeAny),
        +232        }
        +233
        +234        ALTER_PARSERS = {
        +235            **parser.Parser.ALTER_PARSERS,  # type: ignore
        +236            "UNSET": lambda self: self._parse_alter_table_set_tag(unset=True),
        +237            "SET": lambda self: self._parse_alter_table_set_tag(),
        +238        }
        +239
        +240        def _parse_alter_table_set_tag(self, unset: bool = False) -> exp.Expression:
        +241            self._match_text_seq("TAG")
        +242            parser = t.cast(t.Callable, self._parse_id_var if unset else self._parse_conjunction)
        +243            return self.expression(exp.SetTag, expressions=self._parse_csv(parser), unset=unset)
        +244
        +245    class Tokenizer(tokens.Tokenizer):
        +246        QUOTES = ["'", "$$"]
        +247        STRING_ESCAPES = ["\\", "'"]
        +248
        +249        KEYWORDS = {
        +250            **tokens.Tokenizer.KEYWORDS,
        +251            "EXCLUDE": TokenType.EXCEPT,
        +252            "ILIKE ANY": TokenType.ILIKE_ANY,
        +253            "LIKE ANY": TokenType.LIKE_ANY,
        +254            "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE,
        +255            "PUT": TokenType.COMMAND,
        +256            "RENAME": TokenType.REPLACE,
        +257            "TIMESTAMP_LTZ": TokenType.TIMESTAMPLTZ,
        +258            "TIMESTAMP_NTZ": TokenType.TIMESTAMP,
        +259            "TIMESTAMP_TZ": TokenType.TIMESTAMPTZ,
        +260            "TIMESTAMPNTZ": TokenType.TIMESTAMP,
        +261            "MINUS": TokenType.EXCEPT,
        +262            "SAMPLE": TokenType.TABLE_SAMPLE,
        +263        }
        +264
        +265        SINGLE_TOKENS = {
        +266            **tokens.Tokenizer.SINGLE_TOKENS,
        +267            "$": TokenType.PARAMETER,
        +268        }
        +269
        +270    class Generator(generator.Generator):
        +271        PARAMETER_TOKEN = "$"
        +272        MATCHED_BY_SOURCE = False
        +273
        +274        TRANSFORMS = {
        +275            **generator.Generator.TRANSFORMS,  # type: ignore
        +276            exp.Array: inline_array_sql,
        +277            exp.ArrayConcat: rename_func("ARRAY_CAT"),
        +278            exp.ArrayJoin: rename_func("ARRAY_TO_STRING"),
        +279            exp.DateAdd: lambda self, e: self.func("DATEADD", e.text("unit"), e.expression, e.this),
        +280            exp.DateDiff: lambda self, e: self.func(
        +281                "DATEDIFF", e.text("unit"), e.expression, e.this
        +282            ),
        +283            exp.DateStrToDate: datestrtodate_sql,
        +284            exp.DataType: _datatype_sql,
        +285            exp.If: rename_func("IFF"),
        +286            exp.Map: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"),
        +287            exp.LogicalOr: rename_func("BOOLOR_AGG"),
        +288            exp.LogicalAnd: rename_func("BOOLAND_AGG"),
        +289            exp.VarMap: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"),
        +290            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
        +291            exp.Matches: rename_func("DECODE"),
        +292            exp.StrPosition: lambda self, e: self.func(
        +293                "POSITION", e.args.get("substr"), e.this, e.args.get("position")
        +294            ),
        +295            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
        +296            exp.TimestampTrunc: timestamptrunc_sql,
        +297            exp.TimeStrToTime: timestrtotime_sql,
        +298            exp.TimeToUnix: lambda self, e: f"EXTRACT(epoch_second FROM {self.sql(e, 'this')})",
        +299            exp.Trim: lambda self, e: self.func("TRIM", e.this, e.expression),
        +300            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
        +301            exp.TsOrDsToDate: ts_or_ds_to_date_sql("snowflake"),
        +302            exp.UnixToTime: _unix_to_time_sql,
        +303            exp.DayOfWeek: rename_func("DAYOFWEEK"),
        +304            exp.Max: max_or_greatest,
        +305            exp.Min: min_or_least,
         306        }
         307
        -308        STAR_MAPPING = {
        -309            "except": "EXCLUDE",
        -310            "replace": "RENAME",
        +308        TYPE_MAPPING = {
        +309            **generator.Generator.TYPE_MAPPING,  # type: ignore
        +310            exp.DataType.Type.TIMESTAMP: "TIMESTAMPNTZ",
         311        }
         312
        -313        PROPERTIES_LOCATION = {
        -314            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
        -315            exp.SetProperty: exp.Properties.Location.UNSUPPORTED,
        +313        STAR_MAPPING = {
        +314            "except": "EXCLUDE",
        +315            "replace": "RENAME",
         316        }
         317
        -318        def ilikeany_sql(self, expression: exp.ILikeAny) -> str:
        -319            return self.binary(expression, "ILIKE ANY")
        -320
        -321        def likeany_sql(self, expression: exp.LikeAny) -> str:
        -322            return self.binary(expression, "LIKE ANY")
        -323
        -324        def except_op(self, expression):
        -325            if not expression.args.get("distinct", False):
        -326                self.unsupported("EXCEPT with All is not supported in Snowflake")
        -327            return super().except_op(expression)
        +318        PROPERTIES_LOCATION = {
        +319            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
        +320            exp.SetProperty: exp.Properties.Location.UNSUPPORTED,
        +321        }
        +322
        +323        def ilikeany_sql(self, expression: exp.ILikeAny) -> str:
        +324            return self.binary(expression, "ILIKE ANY")
        +325
        +326        def likeany_sql(self, expression: exp.LikeAny) -> str:
        +327            return self.binary(expression, "LIKE ANY")
         328
        -329        def intersect_op(self, expression):
        +329        def except_op(self, expression):
         330            if not expression.args.get("distinct", False):
        -331                self.unsupported("INTERSECT with All is not supported in Snowflake")
        -332            return super().intersect_op(expression)
        +331                self.unsupported("EXCEPT with All is not supported in Snowflake")
        +332            return super().except_op(expression)
         333
        -334        def values_sql(self, expression: exp.Values) -> str:
        -335            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.
        -336
        -337            We also want to make sure that after we find matches where we need to unquote a column that we prevent users
        -338            from adding quotes to the column by using the `identify` argument when generating the SQL.
        -339            """
        -340            alias = expression.args.get("alias")
        -341            if alias and alias.args.get("columns"):
        -342                expression = expression.transform(
        -343                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
        -344                    if isinstance(node, exp.Identifier)
        -345                    and isinstance(node.parent, exp.TableAlias)
        -346                    and node.arg_key == "columns"
        -347                    else node,
        -348                )
        -349                return self.no_identify(lambda: super(self.__class__, self).values_sql(expression))
        -350            return super().values_sql(expression)
        -351
        -352        def settag_sql(self, expression: exp.SetTag) -> str:
        -353            action = "UNSET" if expression.args.get("unset") else "SET"
        -354            return f"{action} TAG {self.expressions(expression)}"
        -355
        -356        def select_sql(self, expression: exp.Select) -> str:
        -357            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also
        -358            that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need
        -359            to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when
        -360            generating the SQL.
        -361
        -362            Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the
        -363            expression. This might not be true in a case where the same column name can be sourced from another table that can
        -364            properly quote but should be true in most cases.
        -365            """
        -366            values_identifiers = set(
        -367                flatten(
        -368                    (v.args.get("alias") or exp.Alias()).args.get("columns", [])
        -369                    for v in expression.find_all(exp.Values)
        -370                )
        -371            )
        -372            if values_identifiers:
        -373                expression = expression.transform(
        -374                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
        -375                    if isinstance(node, exp.Identifier) and node in values_identifiers
        -376                    else node,
        -377                )
        -378                return self.no_identify(lambda: super(self.__class__, self).select_sql(expression))
        -379            return super().select_sql(expression)
        -380
        -381        def describe_sql(self, expression: exp.Describe) -> str:
        -382            # Default to table if kind is unknown
        -383            kind_value = expression.args.get("kind") or "TABLE"
        -384            kind = f" {kind_value}" if kind_value else ""
        -385            this = f" {self.sql(expression, 'this')}"
        -386            return f"DESCRIBE{kind}{this}"
        -387
        -388        def generatedasidentitycolumnconstraint_sql(
        -389            self, expression: exp.GeneratedAsIdentityColumnConstraint
        -390        ) -> str:
        -391            start = expression.args.get("start")
        -392            start = f" START {start}" if start else ""
        -393            increment = expression.args.get("increment")
        -394            increment = f" INCREMENT {increment}" if increment else ""
        -395            return f"AUTOINCREMENT{start}{increment}"
        +334        def intersect_op(self, expression):
        +335            if not expression.args.get("distinct", False):
        +336                self.unsupported("INTERSECT with All is not supported in Snowflake")
        +337            return super().intersect_op(expression)
        +338
        +339        def values_sql(self, expression: exp.Values) -> str:
        +340            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.
        +341
        +342            We also want to make sure that after we find matches where we need to unquote a column that we prevent users
        +343            from adding quotes to the column by using the `identify` argument when generating the SQL.
        +344            """
        +345            alias = expression.args.get("alias")
        +346            if alias and alias.args.get("columns"):
        +347                expression = expression.transform(
        +348                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
        +349                    if isinstance(node, exp.Identifier)
        +350                    and isinstance(node.parent, exp.TableAlias)
        +351                    and node.arg_key == "columns"
        +352                    else node,
        +353                )
        +354                return self.no_identify(lambda: super(self.__class__, self).values_sql(expression))
        +355            return super().values_sql(expression)
        +356
        +357        def settag_sql(self, expression: exp.SetTag) -> str:
        +358            action = "UNSET" if expression.args.get("unset") else "SET"
        +359            return f"{action} TAG {self.expressions(expression)}"
        +360
        +361        def select_sql(self, expression: exp.Select) -> str:
        +362            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also
        +363            that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need
        +364            to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when
        +365            generating the SQL.
        +366
        +367            Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the
        +368            expression. This might not be true in a case where the same column name can be sourced from another table that can
        +369            properly quote but should be true in most cases.
        +370            """
        +371            values_identifiers = set(
        +372                flatten(
        +373                    (v.args.get("alias") or exp.Alias()).args.get("columns", [])
        +374                    for v in expression.find_all(exp.Values)
        +375                )
        +376            )
        +377            if values_identifiers:
        +378                expression = expression.transform(
        +379                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
        +380                    if isinstance(node, exp.Identifier) and node in values_identifiers
        +381                    else node,
        +382                )
        +383                return self.no_identify(lambda: super(self.__class__, self).select_sql(expression))
        +384            return super().select_sql(expression)
        +385
        +386        def describe_sql(self, expression: exp.Describe) -> str:
        +387            # Default to table if kind is unknown
        +388            kind_value = expression.args.get("kind") or "TABLE"
        +389            kind = f" {kind_value}" if kind_value else ""
        +390            this = f" {self.sql(expression, 'this')}"
        +391            return f"DESCRIBE{kind}{this}"
        +392
        +393        def generatedasidentitycolumnconstraint_sql(
        +394            self, expression: exp.GeneratedAsIdentityColumnConstraint
        +395        ) -> str:
        +396            start = expression.args.get("start")
        +397            start = f" START {start}" if start else ""
        +398            increment = expression.args.get("increment")
        +399            increment = f" INCREMENT {increment}" if increment else ""
        +400            return f"AUTOINCREMENT{start}{increment}"
         
        @@ -801,73 +810,73 @@
        -
        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            "DATE_TRUNC": date_trunc_to_time,
        -183            "DATEADD": lambda args: exp.DateAdd(
        -184                this=seq_get(args, 2),
        -185                expression=seq_get(args, 1),
        -186                unit=seq_get(args, 0),
        -187            ),
        -188            "DATEDIFF": lambda args: exp.DateDiff(
        -189                this=seq_get(args, 2),
        -190                expression=seq_get(args, 1),
        -191                unit=seq_get(args, 0),
        -192            ),
        -193            "DECODE": exp.Matches.from_arg_list,
        -194            "DIV0": _div0_to_if,
        -195            "IFF": exp.If.from_arg_list,
        -196            "NULLIFZERO": _nullifzero_to_if,
        -197            "OBJECT_CONSTRUCT": parser.parse_var_map,
        -198            "RLIKE": exp.RegexpLike.from_arg_list,
        -199            "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
        -200            "TO_ARRAY": exp.Array.from_arg_list,
        -201            "TO_VARCHAR": exp.ToChar.from_arg_list,
        -202            "TO_TIMESTAMP": _snowflake_to_timestamp,
        -203            "ZEROIFNULL": _zeroifnull_to_if,
        -204        }
        -205
        -206        FUNCTION_PARSERS = {
        -207            **parser.Parser.FUNCTION_PARSERS,
        -208            "DATE_PART": _parse_date_part,
        -209        }
        -210        FUNCTION_PARSERS.pop("TRIM")
        -211
        -212        FUNC_TOKENS = {
        -213            *parser.Parser.FUNC_TOKENS,
        -214            TokenType.RLIKE,
        -215            TokenType.TABLE,
        -216        }
        -217
        -218        COLUMN_OPERATORS = {
        -219            **parser.Parser.COLUMN_OPERATORS,  # type: ignore
        -220            TokenType.COLON: lambda self, this, path: self.expression(
        -221                exp.Bracket,
        -222                this=this,
        -223                expressions=[path],
        -224            ),
        -225        }
        -226
        -227        RANGE_PARSERS = {
        -228            **parser.Parser.RANGE_PARSERS,  # type: ignore
        -229            TokenType.LIKE_ANY: binary_range_parser(exp.LikeAny),
        -230            TokenType.ILIKE_ANY: binary_range_parser(exp.ILikeAny),
        -231        }
        -232
        -233        ALTER_PARSERS = {
        -234            **parser.Parser.ALTER_PARSERS,  # type: ignore
        -235            "UNSET": lambda self: self._parse_alter_table_set_tag(unset=True),
        -236            "SET": lambda self: self._parse_alter_table_set_tag(),
        -237        }
        -238
        -239        def _parse_alter_table_set_tag(self, unset: bool = False) -> exp.Expression:
        -240            self._match_text_seq("TAG")
        -241            parser = t.cast(t.Callable, self._parse_id_var if unset else self._parse_conjunction)
        -242            return self.expression(exp.SetTag, expressions=self._parse_csv(parser), unset=unset)
        +            
        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            "DATE_TRUNC": date_trunc_to_time,
        +184            "DATEADD": lambda args: exp.DateAdd(
        +185                this=seq_get(args, 2),
        +186                expression=seq_get(args, 1),
        +187                unit=seq_get(args, 0),
        +188            ),
        +189            "DATEDIFF": lambda args: exp.DateDiff(
        +190                this=seq_get(args, 2),
        +191                expression=seq_get(args, 1),
        +192                unit=seq_get(args, 0),
        +193            ),
        +194            "DECODE": exp.Matches.from_arg_list,
        +195            "DIV0": _div0_to_if,
        +196            "IFF": exp.If.from_arg_list,
        +197            "NULLIFZERO": _nullifzero_to_if,
        +198            "OBJECT_CONSTRUCT": parser.parse_var_map,
        +199            "RLIKE": exp.RegexpLike.from_arg_list,
        +200            "SQUARE": lambda args: exp.Pow(this=seq_get(args, 0), expression=exp.Literal.number(2)),
        +201            "TO_ARRAY": exp.Array.from_arg_list,
        +202            "TO_VARCHAR": exp.ToChar.from_arg_list,
        +203            "TO_TIMESTAMP": _snowflake_to_timestamp,
        +204            "ZEROIFNULL": _zeroifnull_to_if,
        +205        }
        +206
        +207        FUNCTION_PARSERS = {
        +208            **parser.Parser.FUNCTION_PARSERS,
        +209            "DATE_PART": _parse_date_part,
        +210        }
        +211        FUNCTION_PARSERS.pop("TRIM")
        +212
        +213        FUNC_TOKENS = {
        +214            *parser.Parser.FUNC_TOKENS,
        +215            TokenType.RLIKE,
        +216            TokenType.TABLE,
        +217        }
        +218
        +219        COLUMN_OPERATORS = {
        +220            **parser.Parser.COLUMN_OPERATORS,  # type: ignore
        +221            TokenType.COLON: lambda self, this, path: self.expression(
        +222                exp.Bracket,
        +223                this=this,
        +224                expressions=[path],
        +225            ),
        +226        }
        +227
        +228        RANGE_PARSERS = {
        +229            **parser.Parser.RANGE_PARSERS,  # type: ignore
        +230            TokenType.LIKE_ANY: binary_range_parser(exp.LikeAny),
        +231            TokenType.ILIKE_ANY: binary_range_parser(exp.ILikeAny),
        +232        }
        +233
        +234        ALTER_PARSERS = {
        +235            **parser.Parser.ALTER_PARSERS,  # type: ignore
        +236            "UNSET": lambda self: self._parse_alter_table_set_tag(unset=True),
        +237            "SET": lambda self: self._parse_alter_table_set_tag(),
        +238        }
        +239
        +240        def _parse_alter_table_set_tag(self, unset: bool = False) -> exp.Expression:
        +241            self._match_text_seq("TAG")
        +242            parser = t.cast(t.Callable, self._parse_id_var if unset else self._parse_conjunction)
        +243            return self.expression(exp.SetTag, expressions=self._parse_csv(parser), unset=unset)
         
        @@ -924,30 +933,30 @@ Default: "nulls_are_small"
        -
        244    class Tokenizer(tokens.Tokenizer):
        -245        QUOTES = ["'", "$$"]
        -246        STRING_ESCAPES = ["\\", "'"]
        -247
        -248        KEYWORDS = {
        -249            **tokens.Tokenizer.KEYWORDS,
        -250            "EXCLUDE": TokenType.EXCEPT,
        -251            "ILIKE ANY": TokenType.ILIKE_ANY,
        -252            "LIKE ANY": TokenType.LIKE_ANY,
        -253            "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE,
        -254            "PUT": TokenType.COMMAND,
        -255            "RENAME": TokenType.REPLACE,
        -256            "TIMESTAMP_LTZ": TokenType.TIMESTAMPLTZ,
        -257            "TIMESTAMP_NTZ": TokenType.TIMESTAMP,
        -258            "TIMESTAMP_TZ": TokenType.TIMESTAMPTZ,
        -259            "TIMESTAMPNTZ": TokenType.TIMESTAMP,
        -260            "MINUS": TokenType.EXCEPT,
        -261            "SAMPLE": TokenType.TABLE_SAMPLE,
        -262        }
        -263
        -264        SINGLE_TOKENS = {
        -265            **tokens.Tokenizer.SINGLE_TOKENS,
        -266            "$": TokenType.PARAMETER,
        -267        }
        +            
        245    class Tokenizer(tokens.Tokenizer):
        +246        QUOTES = ["'", "$$"]
        +247        STRING_ESCAPES = ["\\", "'"]
        +248
        +249        KEYWORDS = {
        +250            **tokens.Tokenizer.KEYWORDS,
        +251            "EXCLUDE": TokenType.EXCEPT,
        +252            "ILIKE ANY": TokenType.ILIKE_ANY,
        +253            "LIKE ANY": TokenType.LIKE_ANY,
        +254            "MATCH_RECOGNIZE": TokenType.MATCH_RECOGNIZE,
        +255            "PUT": TokenType.COMMAND,
        +256            "RENAME": TokenType.REPLACE,
        +257            "TIMESTAMP_LTZ": TokenType.TIMESTAMPLTZ,
        +258            "TIMESTAMP_NTZ": TokenType.TIMESTAMP,
        +259            "TIMESTAMP_TZ": TokenType.TIMESTAMPTZ,
        +260            "TIMESTAMPNTZ": TokenType.TIMESTAMP,
        +261            "MINUS": TokenType.EXCEPT,
        +262            "SAMPLE": TokenType.TABLE_SAMPLE,
        +263        }
        +264
        +265        SINGLE_TOKENS = {
        +266            **tokens.Tokenizer.SINGLE_TOKENS,
        +267            "$": TokenType.PARAMETER,
        +268        }
         
        @@ -975,133 +984,137 @@ Default: "nulls_are_small"
        -
        269    class Generator(generator.Generator):
        -270        PARAMETER_TOKEN = "$"
        -271        MATCHED_BY_SOURCE = False
        -272
        -273        TRANSFORMS = {
        -274            **generator.Generator.TRANSFORMS,  # type: ignore
        -275            exp.Array: inline_array_sql,
        -276            exp.ArrayConcat: rename_func("ARRAY_CAT"),
        -277            exp.ArrayJoin: rename_func("ARRAY_TO_STRING"),
        -278            exp.DateAdd: lambda self, e: self.func("DATEADD", e.text("unit"), e.expression, e.this),
        -279            exp.DateStrToDate: datestrtodate_sql,
        -280            exp.DataType: _datatype_sql,
        -281            exp.If: rename_func("IFF"),
        -282            exp.Map: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"),
        -283            exp.LogicalOr: rename_func("BOOLOR_AGG"),
        -284            exp.LogicalAnd: rename_func("BOOLAND_AGG"),
        -285            exp.VarMap: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"),
        -286            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
        -287            exp.Matches: rename_func("DECODE"),
        -288            exp.StrPosition: lambda self, e: self.func(
        -289                "POSITION", e.args.get("substr"), e.this, e.args.get("position")
        -290            ),
        -291            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
        -292            exp.TimestampTrunc: timestamptrunc_sql,
        -293            exp.TimeStrToTime: timestrtotime_sql,
        -294            exp.TimeToUnix: lambda self, e: f"EXTRACT(epoch_second FROM {self.sql(e, 'this')})",
        -295            exp.Trim: lambda self, e: self.func("TRIM", e.this, e.expression),
        -296            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
        -297            exp.TsOrDsToDate: ts_or_ds_to_date_sql("snowflake"),
        -298            exp.UnixToTime: _unix_to_time_sql,
        -299            exp.DayOfWeek: rename_func("DAYOFWEEK"),
        -300            exp.Min: min_or_least,
        -301        }
        -302
        -303        TYPE_MAPPING = {
        -304            **generator.Generator.TYPE_MAPPING,  # type: ignore
        -305            exp.DataType.Type.TIMESTAMP: "TIMESTAMPNTZ",
        +            
        270    class Generator(generator.Generator):
        +271        PARAMETER_TOKEN = "$"
        +272        MATCHED_BY_SOURCE = False
        +273
        +274        TRANSFORMS = {
        +275            **generator.Generator.TRANSFORMS,  # type: ignore
        +276            exp.Array: inline_array_sql,
        +277            exp.ArrayConcat: rename_func("ARRAY_CAT"),
        +278            exp.ArrayJoin: rename_func("ARRAY_TO_STRING"),
        +279            exp.DateAdd: lambda self, e: self.func("DATEADD", e.text("unit"), e.expression, e.this),
        +280            exp.DateDiff: lambda self, e: self.func(
        +281                "DATEDIFF", e.text("unit"), e.expression, e.this
        +282            ),
        +283            exp.DateStrToDate: datestrtodate_sql,
        +284            exp.DataType: _datatype_sql,
        +285            exp.If: rename_func("IFF"),
        +286            exp.Map: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"),
        +287            exp.LogicalOr: rename_func("BOOLOR_AGG"),
        +288            exp.LogicalAnd: rename_func("BOOLAND_AGG"),
        +289            exp.VarMap: lambda self, e: var_map_sql(self, e, "OBJECT_CONSTRUCT"),
        +290            exp.PartitionedByProperty: lambda self, e: f"PARTITION BY {self.sql(e, 'this')}",
        +291            exp.Matches: rename_func("DECODE"),
        +292            exp.StrPosition: lambda self, e: self.func(
        +293                "POSITION", e.args.get("substr"), e.this, e.args.get("position")
        +294            ),
        +295            exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})",
        +296            exp.TimestampTrunc: timestamptrunc_sql,
        +297            exp.TimeStrToTime: timestrtotime_sql,
        +298            exp.TimeToUnix: lambda self, e: f"EXTRACT(epoch_second FROM {self.sql(e, 'this')})",
        +299            exp.Trim: lambda self, e: self.func("TRIM", e.this, e.expression),
        +300            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
        +301            exp.TsOrDsToDate: ts_or_ds_to_date_sql("snowflake"),
        +302            exp.UnixToTime: _unix_to_time_sql,
        +303            exp.DayOfWeek: rename_func("DAYOFWEEK"),
        +304            exp.Max: max_or_greatest,
        +305            exp.Min: min_or_least,
         306        }
         307
        -308        STAR_MAPPING = {
        -309            "except": "EXCLUDE",
        -310            "replace": "RENAME",
        +308        TYPE_MAPPING = {
        +309            **generator.Generator.TYPE_MAPPING,  # type: ignore
        +310            exp.DataType.Type.TIMESTAMP: "TIMESTAMPNTZ",
         311        }
         312
        -313        PROPERTIES_LOCATION = {
        -314            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
        -315            exp.SetProperty: exp.Properties.Location.UNSUPPORTED,
        +313        STAR_MAPPING = {
        +314            "except": "EXCLUDE",
        +315            "replace": "RENAME",
         316        }
         317
        -318        def ilikeany_sql(self, expression: exp.ILikeAny) -> str:
        -319            return self.binary(expression, "ILIKE ANY")
        -320
        -321        def likeany_sql(self, expression: exp.LikeAny) -> str:
        -322            return self.binary(expression, "LIKE ANY")
        -323
        -324        def except_op(self, expression):
        -325            if not expression.args.get("distinct", False):
        -326                self.unsupported("EXCEPT with All is not supported in Snowflake")
        -327            return super().except_op(expression)
        +318        PROPERTIES_LOCATION = {
        +319            **generator.Generator.PROPERTIES_LOCATION,  # type: ignore
        +320            exp.SetProperty: exp.Properties.Location.UNSUPPORTED,
        +321        }
        +322
        +323        def ilikeany_sql(self, expression: exp.ILikeAny) -> str:
        +324            return self.binary(expression, "ILIKE ANY")
        +325
        +326        def likeany_sql(self, expression: exp.LikeAny) -> str:
        +327            return self.binary(expression, "LIKE ANY")
         328
        -329        def intersect_op(self, expression):
        +329        def except_op(self, expression):
         330            if not expression.args.get("distinct", False):
        -331                self.unsupported("INTERSECT with All is not supported in Snowflake")
        -332            return super().intersect_op(expression)
        +331                self.unsupported("EXCEPT with All is not supported in Snowflake")
        +332            return super().except_op(expression)
         333
        -334        def values_sql(self, expression: exp.Values) -> str:
        -335            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.
        -336
        -337            We also want to make sure that after we find matches where we need to unquote a column that we prevent users
        -338            from adding quotes to the column by using the `identify` argument when generating the SQL.
        -339            """
        -340            alias = expression.args.get("alias")
        -341            if alias and alias.args.get("columns"):
        -342                expression = expression.transform(
        -343                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
        -344                    if isinstance(node, exp.Identifier)
        -345                    and isinstance(node.parent, exp.TableAlias)
        -346                    and node.arg_key == "columns"
        -347                    else node,
        -348                )
        -349                return self.no_identify(lambda: super(self.__class__, self).values_sql(expression))
        -350            return super().values_sql(expression)
        -351
        -352        def settag_sql(self, expression: exp.SetTag) -> str:
        -353            action = "UNSET" if expression.args.get("unset") else "SET"
        -354            return f"{action} TAG {self.expressions(expression)}"
        -355
        -356        def select_sql(self, expression: exp.Select) -> str:
        -357            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also
        -358            that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need
        -359            to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when
        -360            generating the SQL.
        -361
        -362            Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the
        -363            expression. This might not be true in a case where the same column name can be sourced from another table that can
        -364            properly quote but should be true in most cases.
        -365            """
        -366            values_identifiers = set(
        -367                flatten(
        -368                    (v.args.get("alias") or exp.Alias()).args.get("columns", [])
        -369                    for v in expression.find_all(exp.Values)
        -370                )
        -371            )
        -372            if values_identifiers:
        -373                expression = expression.transform(
        -374                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
        -375                    if isinstance(node, exp.Identifier) and node in values_identifiers
        -376                    else node,
        -377                )
        -378                return self.no_identify(lambda: super(self.__class__, self).select_sql(expression))
        -379            return super().select_sql(expression)
        -380
        -381        def describe_sql(self, expression: exp.Describe) -> str:
        -382            # Default to table if kind is unknown
        -383            kind_value = expression.args.get("kind") or "TABLE"
        -384            kind = f" {kind_value}" if kind_value else ""
        -385            this = f" {self.sql(expression, 'this')}"
        -386            return f"DESCRIBE{kind}{this}"
        -387
        -388        def generatedasidentitycolumnconstraint_sql(
        -389            self, expression: exp.GeneratedAsIdentityColumnConstraint
        -390        ) -> str:
        -391            start = expression.args.get("start")
        -392            start = f" START {start}" if start else ""
        -393            increment = expression.args.get("increment")
        -394            increment = f" INCREMENT {increment}" if increment else ""
        -395            return f"AUTOINCREMENT{start}{increment}"
        +334        def intersect_op(self, expression):
        +335            if not expression.args.get("distinct", False):
        +336                self.unsupported("INTERSECT with All is not supported in Snowflake")
        +337            return super().intersect_op(expression)
        +338
        +339        def values_sql(self, expression: exp.Values) -> str:
        +340            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.
        +341
        +342            We also want to make sure that after we find matches where we need to unquote a column that we prevent users
        +343            from adding quotes to the column by using the `identify` argument when generating the SQL.
        +344            """
        +345            alias = expression.args.get("alias")
        +346            if alias and alias.args.get("columns"):
        +347                expression = expression.transform(
        +348                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
        +349                    if isinstance(node, exp.Identifier)
        +350                    and isinstance(node.parent, exp.TableAlias)
        +351                    and node.arg_key == "columns"
        +352                    else node,
        +353                )
        +354                return self.no_identify(lambda: super(self.__class__, self).values_sql(expression))
        +355            return super().values_sql(expression)
        +356
        +357        def settag_sql(self, expression: exp.SetTag) -> str:
        +358            action = "UNSET" if expression.args.get("unset") else "SET"
        +359            return f"{action} TAG {self.expressions(expression)}"
        +360
        +361        def select_sql(self, expression: exp.Select) -> str:
        +362            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also
        +363            that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need
        +364            to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when
        +365            generating the SQL.
        +366
        +367            Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the
        +368            expression. This might not be true in a case where the same column name can be sourced from another table that can
        +369            properly quote but should be true in most cases.
        +370            """
        +371            values_identifiers = set(
        +372                flatten(
        +373                    (v.args.get("alias") or exp.Alias()).args.get("columns", [])
        +374                    for v in expression.find_all(exp.Values)
        +375                )
        +376            )
        +377            if values_identifiers:
        +378                expression = expression.transform(
        +379                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
        +380                    if isinstance(node, exp.Identifier) and node in values_identifiers
        +381                    else node,
        +382                )
        +383                return self.no_identify(lambda: super(self.__class__, self).select_sql(expression))
        +384            return super().select_sql(expression)
        +385
        +386        def describe_sql(self, expression: exp.Describe) -> str:
        +387            # Default to table if kind is unknown
        +388            kind_value = expression.args.get("kind") or "TABLE"
        +389            kind = f" {kind_value}" if kind_value else ""
        +390            this = f" {self.sql(expression, 'this')}"
        +391            return f"DESCRIBE{kind}{this}"
        +392
        +393        def generatedasidentitycolumnconstraint_sql(
        +394            self, expression: exp.GeneratedAsIdentityColumnConstraint
        +395        ) -> str:
        +396            start = expression.args.get("start")
        +397            start = f" START {start}" if start else ""
        +398            increment = expression.args.get("increment")
        +399            increment = f" INCREMENT {increment}" if increment else ""
        +400            return f"AUTOINCREMENT{start}{increment}"
         
        @@ -1160,8 +1173,8 @@ Default: True
        -
        318        def ilikeany_sql(self, expression: exp.ILikeAny) -> str:
        -319            return self.binary(expression, "ILIKE ANY")
        +            
        323        def ilikeany_sql(self, expression: exp.ILikeAny) -> str:
        +324            return self.binary(expression, "ILIKE ANY")
         
        @@ -1179,8 +1192,8 @@ Default: True
        -
        321        def likeany_sql(self, expression: exp.LikeAny) -> str:
        -322            return self.binary(expression, "LIKE ANY")
        +            
        326        def likeany_sql(self, expression: exp.LikeAny) -> str:
        +327            return self.binary(expression, "LIKE ANY")
         
        @@ -1198,10 +1211,10 @@ Default: True
        -
        324        def except_op(self, expression):
        -325            if not expression.args.get("distinct", False):
        -326                self.unsupported("EXCEPT with All is not supported in Snowflake")
        -327            return super().except_op(expression)
        +            
        329        def except_op(self, expression):
        +330            if not expression.args.get("distinct", False):
        +331                self.unsupported("EXCEPT with All is not supported in Snowflake")
        +332            return super().except_op(expression)
         
        @@ -1219,10 +1232,10 @@ Default: True
        -
        329        def intersect_op(self, expression):
        -330            if not expression.args.get("distinct", False):
        -331                self.unsupported("INTERSECT with All is not supported in Snowflake")
        -332            return super().intersect_op(expression)
        +            
        334        def intersect_op(self, expression):
        +335            if not expression.args.get("distinct", False):
        +336                self.unsupported("INTERSECT with All is not supported in Snowflake")
        +337            return super().intersect_op(expression)
         
        @@ -1240,23 +1253,23 @@ Default: True
        -
        334        def values_sql(self, expression: exp.Values) -> str:
        -335            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.
        -336
        -337            We also want to make sure that after we find matches where we need to unquote a column that we prevent users
        -338            from adding quotes to the column by using the `identify` argument when generating the SQL.
        -339            """
        -340            alias = expression.args.get("alias")
        -341            if alias and alias.args.get("columns"):
        -342                expression = expression.transform(
        -343                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
        -344                    if isinstance(node, exp.Identifier)
        -345                    and isinstance(node.parent, exp.TableAlias)
        -346                    and node.arg_key == "columns"
        -347                    else node,
        -348                )
        -349                return self.no_identify(lambda: super(self.__class__, self).values_sql(expression))
        -350            return super().values_sql(expression)
        +            
        339        def values_sql(self, expression: exp.Values) -> str:
        +340            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.
        +341
        +342            We also want to make sure that after we find matches where we need to unquote a column that we prevent users
        +343            from adding quotes to the column by using the `identify` argument when generating the SQL.
        +344            """
        +345            alias = expression.args.get("alias")
        +346            if alias and alias.args.get("columns"):
        +347                expression = expression.transform(
        +348                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
        +349                    if isinstance(node, exp.Identifier)
        +350                    and isinstance(node.parent, exp.TableAlias)
        +351                    and node.arg_key == "columns"
        +352                    else node,
        +353                )
        +354                return self.no_identify(lambda: super(self.__class__, self).values_sql(expression))
        +355            return super().values_sql(expression)
         
        @@ -1279,9 +1292,9 @@ from adding quotes to the column by using the identify argument whe
        -
        352        def settag_sql(self, expression: exp.SetTag) -> str:
        -353            action = "UNSET" if expression.args.get("unset") else "SET"
        -354            return f"{action} TAG {self.expressions(expression)}"
        +            
        357        def settag_sql(self, expression: exp.SetTag) -> str:
        +358            action = "UNSET" if expression.args.get("unset") else "SET"
        +359            return f"{action} TAG {self.expressions(expression)}"
         
        @@ -1299,30 +1312,30 @@ from adding quotes to the column by using the identify argument whe
        -
        356        def select_sql(self, expression: exp.Select) -> str:
        -357            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also
        -358            that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need
        -359            to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when
        -360            generating the SQL.
        -361
        -362            Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the
        -363            expression. This might not be true in a case where the same column name can be sourced from another table that can
        -364            properly quote but should be true in most cases.
        -365            """
        -366            values_identifiers = set(
        -367                flatten(
        -368                    (v.args.get("alias") or exp.Alias()).args.get("columns", [])
        -369                    for v in expression.find_all(exp.Values)
        -370                )
        -371            )
        -372            if values_identifiers:
        -373                expression = expression.transform(
        -374                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
        -375                    if isinstance(node, exp.Identifier) and node in values_identifiers
        -376                    else node,
        -377                )
        -378                return self.no_identify(lambda: super(self.__class__, self).select_sql(expression))
        -379            return super().select_sql(expression)
        +            
        361        def select_sql(self, expression: exp.Select) -> str:
        +362            """Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also
        +363            that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need
        +364            to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when
        +365            generating the SQL.
        +366
        +367            Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the
        +368            expression. This might not be true in a case where the same column name can be sourced from another table that can
        +369            properly quote but should be true in most cases.
        +370            """
        +371            values_identifiers = set(
        +372                flatten(
        +373                    (v.args.get("alias") or exp.Alias()).args.get("columns", [])
        +374                    for v in expression.find_all(exp.Values)
        +375                )
        +376            )
        +377            if values_identifiers:
        +378                expression = expression.transform(
        +379                    lambda node: exp.Identifier(**{**node.args, "quoted": False})
        +380                    if isinstance(node, exp.Identifier) and node in values_identifiers
        +381                    else node,
        +382                )
        +383                return self.no_identify(lambda: super(self.__class__, self).select_sql(expression))
        +384            return super().select_sql(expression)
         
        @@ -1349,12 +1362,12 @@ properly quote but should be true in most cases.

        -
        381        def describe_sql(self, expression: exp.Describe) -> str:
        -382            # Default to table if kind is unknown
        -383            kind_value = expression.args.get("kind") or "TABLE"
        -384            kind = f" {kind_value}" if kind_value else ""
        -385            this = f" {self.sql(expression, 'this')}"
        -386            return f"DESCRIBE{kind}{this}"
        +            
        386        def describe_sql(self, expression: exp.Describe) -> str:
        +387            # Default to table if kind is unknown
        +388            kind_value = expression.args.get("kind") or "TABLE"
        +389            kind = f" {kind_value}" if kind_value else ""
        +390            this = f" {self.sql(expression, 'this')}"
        +391            return f"DESCRIBE{kind}{this}"
         
        @@ -1372,14 +1385,14 @@ properly quote but should be true in most cases.

        -
        388        def generatedasidentitycolumnconstraint_sql(
        -389            self, expression: exp.GeneratedAsIdentityColumnConstraint
        -390        ) -> str:
        -391            start = expression.args.get("start")
        -392            start = f" START {start}" if start else ""
        -393            increment = expression.args.get("increment")
        -394            increment = f" INCREMENT {increment}" if increment else ""
        -395            return f"AUTOINCREMENT{start}{increment}"
        +            
        393        def generatedasidentitycolumnconstraint_sql(
        +394            self, expression: exp.GeneratedAsIdentityColumnConstraint
        +395        ) -> str:
        +396            start = expression.args.get("start")
        +397            start = f" START {start}" if start else ""
        +398            increment = expression.args.get("increment")
        +399            increment = f" INCREMENT {increment}" if increment else ""
        +400            return f"AUTOINCREMENT{start}{increment}"
         
        @@ -1473,6 +1486,7 @@ properly quote but should be true in most cases.

        offset_sql
        setitem_sql
        set_sql
        +
        pragma_sql
        lock_sql
        literal_sql
        loaddata_sql
        @@ -1516,6 +1530,8 @@ properly quote but should be true in most cases.

        primarykey_sql
        unique_sql
        if_sql
        +
        jsonkeyvalue_sql
        +
        jsonobject_sql
        in_sql
        in_unnest_op
        interval_sql
        diff --git a/docs/sqlglot/dialects/spark.html b/docs/sqlglot/dialects/spark.html index 6e70c65..3107173 100644 --- a/docs/sqlglot/dialects/spark.html +++ b/docs/sqlglot/dialects/spark.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.spark API documentation @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • Spark
              @@ -801,6 +801,7 @@ Default: True
              offset_sql
              setitem_sql
              set_sql
              +
              pragma_sql
              lock_sql
              literal_sql
              loaddata_sql
              @@ -845,6 +846,8 @@ Default: True
              primarykey_sql
              unique_sql
              if_sql
              +
              jsonkeyvalue_sql
              +
              jsonobject_sql
              in_sql
              in_unnest_op
              interval_sql
              diff --git a/docs/sqlglot/dialects/sqlite.html b/docs/sqlglot/dialects/sqlite.html index c8f1fd6..a8ac25c 100644 --- a/docs/sqlglot/dialects/sqlite.html +++ b/docs/sqlglot/dialects/sqlite.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.sqlite API documentation @@ -28,8 +28,8 @@ -

              API Documentation

              -
                +

                API Documentation

                +
                • SQLite
                    @@ -54,9 +54,6 @@
                  • datediff_sql
                  • -
                  • - fetch_sql -
                  • groupconcat_sql
                  • @@ -179,68 +176,67 @@ 82 exp.TryCast: no_trycast_sql, 83 } 84 - 85 def cast_sql(self, expression: exp.Cast) -> str: - 86 if expression.to.this == exp.DataType.Type.DATE: - 87 return self.func("DATE", expression.this) - 88 - 89 return super().cast_sql(expression) + 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 def datediff_sql(self, expression: exp.DateDiff) -> str: - 92 unit = expression.args.get("unit") - 93 unit = unit.name.upper() if unit else "DAY" - 94 - 95 sql = f"(JULIANDAY({self.sql(expression, 'this')}) - JULIANDAY({self.sql(expression, 'expression')}))" + 91 return super().cast_sql(expression) + 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 if unit == "MONTH": - 98 sql = f"{sql} / 30.0" - 99 elif unit == "YEAR": -100 sql = f"{sql} / 365.0" -101 elif unit == "HOUR": -102 sql = f"{sql} * 24.0" -103 elif unit == "MINUTE": -104 sql = f"{sql} * 1440.0" -105 elif unit == "SECOND": -106 sql = f"{sql} * 86400.0" -107 elif unit == "MILLISECOND": -108 sql = f"{sql} * 86400000.0" -109 elif unit == "MICROSECOND": -110 sql = f"{sql} * 86400000000.0" -111 elif unit == "NANOSECOND": -112 sql = f"{sql} * 8640000000000.0" -113 else: -114 self.unsupported("DATEDIFF unsupported for '{unit}'.") -115 -116 return f"CAST({sql} AS INTEGER)" + 97 sql = f"(JULIANDAY({self.sql(expression, 'this')}) - JULIANDAY({self.sql(expression, 'expression')}))" + 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 def fetch_sql(self, expression: exp.Fetch) -> str: -119 return self.limit_sql(exp.Limit(expression=expression.args.get("count"))) -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 " -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)})" -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" +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 " +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)})" +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"
        @@ -316,68 +312,67 @@ 83 exp.TryCast: no_trycast_sql, 84 } 85 - 86 def cast_sql(self, expression: exp.Cast) -> str: - 87 if expression.to.this == exp.DataType.Type.DATE: - 88 return self.func("DATE", expression.this) - 89 - 90 return super().cast_sql(expression) + 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 def datediff_sql(self, expression: exp.DateDiff) -> str: - 93 unit = expression.args.get("unit") - 94 unit = unit.name.upper() if unit else "DAY" - 95 - 96 sql = f"(JULIANDAY({self.sql(expression, 'this')}) - JULIANDAY({self.sql(expression, 'expression')}))" + 92 return super().cast_sql(expression) + 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 if unit == "MONTH": - 99 sql = f"{sql} / 30.0" -100 elif unit == "YEAR": -101 sql = f"{sql} / 365.0" -102 elif unit == "HOUR": -103 sql = f"{sql} * 24.0" -104 elif unit == "MINUTE": -105 sql = f"{sql} * 1440.0" -106 elif unit == "SECOND": -107 sql = f"{sql} * 86400.0" -108 elif unit == "MILLISECOND": -109 sql = f"{sql} * 86400000.0" -110 elif unit == "MICROSECOND": -111 sql = f"{sql} * 86400000000.0" -112 elif unit == "NANOSECOND": -113 sql = f"{sql} * 8640000000000.0" -114 else: -115 self.unsupported("DATEDIFF unsupported for '{unit}'.") -116 -117 return f"CAST({sql} AS INTEGER)" + 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 def fetch_sql(self, expression: exp.Fetch) -> str: -120 return self.limit_sql(exp.Limit(expression=expression.args.get("count"))) -121 -122 # https://www.sqlite.org/lang_aggfunc.html#group_concat -123 def groupconcat_sql(self, expression): -124 this = expression.this -125 distinct = expression.find(exp.Distinct) -126 if distinct: -127 this = distinct.expressions[0] -128 distinct = "DISTINCT " -129 -130 if isinstance(expression.this, exp.Order): -131 self.unsupported("SQLite GROUP_CONCAT doesn't support ORDER BY.") -132 if expression.this.this and not distinct: -133 this = expression.this.this -134 -135 separator = expression.args.get("separator") -136 return f"GROUP_CONCAT({distinct or ''}{self.format_args(this, separator)})" -137 -138 def least_sql(self, expression: exp.Least) -> str: -139 if len(expression.expressions) > 1: -140 return rename_func("MIN")(self, expression) -141 -142 return self.expressions(expression) -143 -144 def transaction_sql(self, expression: exp.Transaction) -> str: -145 this = expression.this -146 this = f" {this}" if this else "" -147 return f"BEGIN{this} TRANSACTION" +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 " +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)})" +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" @@ -552,68 +547,67 @@ Default: "nulls_are_small" 83 exp.TryCast: no_trycast_sql, 84 } 85 - 86 def cast_sql(self, expression: exp.Cast) -> str: - 87 if expression.to.this == exp.DataType.Type.DATE: - 88 return self.func("DATE", expression.this) - 89 - 90 return super().cast_sql(expression) + 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 def datediff_sql(self, expression: exp.DateDiff) -> str: - 93 unit = expression.args.get("unit") - 94 unit = unit.name.upper() if unit else "DAY" - 95 - 96 sql = f"(JULIANDAY({self.sql(expression, 'this')}) - JULIANDAY({self.sql(expression, 'expression')}))" + 92 return super().cast_sql(expression) + 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 if unit == "MONTH": - 99 sql = f"{sql} / 30.0" -100 elif unit == "YEAR": -101 sql = f"{sql} / 365.0" -102 elif unit == "HOUR": -103 sql = f"{sql} * 24.0" -104 elif unit == "MINUTE": -105 sql = f"{sql} * 1440.0" -106 elif unit == "SECOND": -107 sql = f"{sql} * 86400.0" -108 elif unit == "MILLISECOND": -109 sql = f"{sql} * 86400000.0" -110 elif unit == "MICROSECOND": -111 sql = f"{sql} * 86400000000.0" -112 elif unit == "NANOSECOND": -113 sql = f"{sql} * 8640000000000.0" -114 else: -115 self.unsupported("DATEDIFF unsupported for '{unit}'.") -116 -117 return f"CAST({sql} AS INTEGER)" + 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 def fetch_sql(self, expression: exp.Fetch) -> str: -120 return self.limit_sql(exp.Limit(expression=expression.args.get("count"))) -121 -122 # https://www.sqlite.org/lang_aggfunc.html#group_concat -123 def groupconcat_sql(self, expression): -124 this = expression.this -125 distinct = expression.find(exp.Distinct) -126 if distinct: -127 this = distinct.expressions[0] -128 distinct = "DISTINCT " -129 -130 if isinstance(expression.this, exp.Order): -131 self.unsupported("SQLite GROUP_CONCAT doesn't support ORDER BY.") -132 if expression.this.this and not distinct: -133 this = expression.this.this -134 -135 separator = expression.args.get("separator") -136 return f"GROUP_CONCAT({distinct or ''}{self.format_args(this, separator)})" -137 -138 def least_sql(self, expression: exp.Least) -> str: -139 if len(expression.expressions) > 1: -140 return rename_func("MIN")(self, expression) -141 -142 return self.expressions(expression) -143 -144 def transaction_sql(self, expression: exp.Transaction) -> str: -145 this = expression.this -146 this = f" {this}" if this else "" -147 return f"BEGIN{this} TRANSACTION" +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 " +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)})" +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" @@ -672,11 +666,11 @@ Default: True -
        86        def cast_sql(self, expression: exp.Cast) -> str:
        -87            if expression.to.this == exp.DataType.Type.DATE:
        -88                return self.func("DATE", expression.this)
        -89
        -90            return super().cast_sql(expression)
        +            
        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)
         
        @@ -694,51 +688,32 @@ Default: True
        -
         92        def datediff_sql(self, expression: exp.DateDiff) -> str:
        - 93            unit = expression.args.get("unit")
        - 94            unit = unit.name.upper() if unit else "DAY"
        - 95
        - 96            sql = f"(JULIANDAY({self.sql(expression, 'this')}) - JULIANDAY({self.sql(expression, 'expression')}))"
        +            
         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            if unit == "MONTH":
        - 99                sql = f"{sql} / 30.0"
        -100            elif unit == "YEAR":
        -101                sql = f"{sql} / 365.0"
        -102            elif unit == "HOUR":
        -103                sql = f"{sql} * 24.0"
        -104            elif unit == "MINUTE":
        -105                sql = f"{sql} * 1440.0"
        -106            elif unit == "SECOND":
        -107                sql = f"{sql} * 86400.0"
        -108            elif unit == "MILLISECOND":
        -109                sql = f"{sql} * 86400000.0"
        -110            elif unit == "MICROSECOND":
        -111                sql = f"{sql} * 86400000000.0"
        -112            elif unit == "NANOSECOND":
        -113                sql = f"{sql} * 8640000000000.0"
        -114            else:
        -115                self.unsupported("DATEDIFF unsupported for '{unit}'.")
        -116
        -117            return f"CAST({sql} AS INTEGER)"
        -
        - - - - -
        -
        - -
        - - def - fetch_sql(self, expression: sqlglot.expressions.Fetch) -> str: - - - -
        - -
        119        def fetch_sql(self, expression: exp.Fetch) -> str:
        -120            return self.limit_sql(exp.Limit(expression=expression.args.get("count")))
        + 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)"
         
        @@ -756,20 +731,20 @@ Default: True
        -
        123        def groupconcat_sql(self, expression):
        -124            this = expression.this
        -125            distinct = expression.find(exp.Distinct)
        -126            if distinct:
        -127                this = distinct.expressions[0]
        -128                distinct = "DISTINCT "
        -129
        -130            if isinstance(expression.this, exp.Order):
        -131                self.unsupported("SQLite GROUP_CONCAT doesn't support ORDER BY.")
        -132                if expression.this.this and not distinct:
        -133                    this = expression.this.this
        -134
        -135            separator = expression.args.get("separator")
        -136            return f"GROUP_CONCAT({distinct or ''}{self.format_args(this, separator)})"
        +            
        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)})"
         
        @@ -787,11 +762,11 @@ Default: True
        -
        138        def least_sql(self, expression: exp.Least) -> str:
        -139            if len(expression.expressions) > 1:
        -140                return rename_func("MIN")(self, expression)
        -141
        -142            return self.expressions(expression)
        +            
        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)
         
        @@ -809,10 +784,10 @@ Default: True
        -
        144        def transaction_sql(self, expression: exp.Transaction) -> str:
        -145            this = expression.this
        -146            this = f" {this}" if this else ""
        -147            return f"BEGIN{this} TRANSACTION"
        +            
        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"
         
        @@ -861,6 +836,7 @@ Default: True
        drop_sql
        except_sql
        except_op
        +
        fetch_sql
        filter_sql
        hint_sql
        index_sql
        @@ -910,6 +886,7 @@ Default: True
        offset_sql
        setitem_sql
        set_sql
        +
        pragma_sql
        lock_sql
        literal_sql
        loaddata_sql
        @@ -954,6 +931,8 @@ Default: True
        primarykey_sql
        unique_sql
        if_sql
        +
        jsonkeyvalue_sql
        +
        jsonobject_sql
        in_sql
        in_unnest_op
        interval_sql
        diff --git a/docs/sqlglot/dialects/starrocks.html b/docs/sqlglot/dialects/starrocks.html index f1c9924..0cbc4a0 100644 --- a/docs/sqlglot/dialects/starrocks.html +++ b/docs/sqlglot/dialects/starrocks.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.starrocks API documentation @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • StarRocks
              @@ -418,6 +418,7 @@ Default: True
              offset_sql
              setitem_sql
              set_sql
              +
              pragma_sql
              lock_sql
              literal_sql
              loaddata_sql
              @@ -462,6 +463,8 @@ Default: True
              primarykey_sql
              unique_sql
              if_sql
              +
              jsonkeyvalue_sql
              +
              jsonobject_sql
              in_sql
              in_unnest_op
              interval_sql
              diff --git a/docs/sqlglot/dialects/tableau.html b/docs/sqlglot/dialects/tableau.html index b8f34d8..44b7239 100644 --- a/docs/sqlglot/dialects/tableau.html +++ b/docs/sqlglot/dialects/tableau.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.tableau API documentation @@ -28,8 +28,8 @@ -

              API Documentation

              -
                +

                API Documentation

                +
                • Tableau
                    @@ -315,6 +315,7 @@ Default: True
                    offset_sql
                    setitem_sql
                    set_sql
                    +
                    pragma_sql
                    lock_sql
                    literal_sql
                    loaddata_sql
                    @@ -359,6 +360,8 @@ Default: True
                    primarykey_sql
                    unique_sql
                    if_sql
                    +
                    jsonkeyvalue_sql
                    +
                    jsonobject_sql
                    in_sql
                    in_unnest_op
                    interval_sql
                    diff --git a/docs/sqlglot/dialects/teradata.html b/docs/sqlglot/dialects/teradata.html index 91b5d18..d3c3041 100644 --- a/docs/sqlglot/dialects/teradata.html +++ b/docs/sqlglot/dialects/teradata.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.teradata API documentation @@ -28,8 +28,8 @@ -

                    API Documentation

                    -
                      +

                      API Documentation

                      +
                      • Teradata
                          @@ -95,7 +95,7 @@
                            1from __future__ import annotations
                             2
                             3from sqlglot import exp, generator, parser, tokens
                          -  4from sqlglot.dialects.dialect import Dialect, min_or_least
                          +  4from sqlglot.dialects.dialect import Dialect, max_or_greatest, min_or_least
                             5from sqlglot.tokens import TokenType
                             6
                             7
                          @@ -222,38 +222,39 @@
                           128
                           129        TRANSFORMS = {
                           130            **generator.Generator.TRANSFORMS,
                          -131            exp.Min: min_or_least,
                          -132            exp.ToChar: lambda self, e: self.function_fallback_sql(e),
                          -133        }
                          -134
                          -135        def partitionedbyproperty_sql(self, expression: exp.PartitionedByProperty) -> str:
                          -136            return f"PARTITION BY {self.sql(expression, 'this')}"
                          -137
                          -138        # FROM before SET in Teradata UPDATE syntax
                          -139        # 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
                          -140        def update_sql(self, expression: exp.Update) -> str:
                          -141            this = self.sql(expression, "this")
                          -142            from_sql = self.sql(expression, "from")
                          -143            set_sql = self.expressions(expression, flat=True)
                          -144            where_sql = self.sql(expression, "where")
                          -145            sql = f"UPDATE {this}{from_sql} SET {set_sql}{where_sql}"
                          -146            return self.prepend_ctes(expression, sql)
                          -147
                          -148        def mod_sql(self, expression: exp.Mod) -> str:
                          -149            return self.binary(expression, "MOD")
                          -150
                          -151        def datatype_sql(self, expression: exp.DataType) -> str:
                          -152            type_sql = super().datatype_sql(expression)
                          -153            prefix_sql = expression.args.get("prefix")
                          -154            return f"SYSUDTLIB.{type_sql}" if prefix_sql else type_sql
                          -155
                          -156        def rangen_sql(self, expression: exp.RangeN) -> str:
                          -157            this = self.sql(expression, "this")
                          -158            expressions_sql = self.expressions(expression)
                          -159            each_sql = self.sql(expression, "each")
                          -160            each_sql = f" EACH {each_sql}" if each_sql else ""
                          -161
                          -162            return f"RANGE_N({this} BETWEEN {expressions_sql}{each_sql})"
                          +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})"
                           
                          @@ -392,38 +393,39 @@ 129 130 TRANSFORMS = { 131 **generator.Generator.TRANSFORMS, -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})" +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})"
        @@ -661,38 +663,39 @@ Default: "nulls_are_small" 129 130 TRANSFORMS = { 131 **generator.Generator.TRANSFORMS, -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})" +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})" @@ -751,8 +754,8 @@ Default: True -
        136        def partitionedbyproperty_sql(self, expression: exp.PartitionedByProperty) -> str:
        -137            return f"PARTITION BY {self.sql(expression, 'this')}"
        +            
        137        def partitionedbyproperty_sql(self, expression: exp.PartitionedByProperty) -> str:
        +138            return f"PARTITION BY {self.sql(expression, 'this')}"
         
        @@ -770,13 +773,13 @@ Default: True
        -
        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)
        +            
        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)
         
        @@ -794,8 +797,8 @@ Default: True
        -
        149        def mod_sql(self, expression: exp.Mod) -> str:
        -150            return self.binary(expression, "MOD")
        +            
        150        def mod_sql(self, expression: exp.Mod) -> str:
        +151            return self.binary(expression, "MOD")
         
        @@ -813,10 +816,10 @@ Default: True
        -
        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
        +            
        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
         
        @@ -834,13 +837,13 @@ Default: True
        -
        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})"
        +            
        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})"
         
        @@ -937,6 +940,7 @@ Default: True
        offset_sql
        setitem_sql
        set_sql
        +
        pragma_sql
        lock_sql
        literal_sql
        loaddata_sql
        @@ -981,6 +985,8 @@ Default: True
        primarykey_sql
        unique_sql
        if_sql
        +
        jsonkeyvalue_sql
        +
        jsonobject_sql
        in_sql
        in_unnest_op
        interval_sql
        diff --git a/docs/sqlglot/dialects/trino.html b/docs/sqlglot/dialects/trino.html index 41a1653..d7a2728 100644 --- a/docs/sqlglot/dialects/trino.html +++ b/docs/sqlglot/dialects/trino.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.trino API documentation @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • Trino
              @@ -292,6 +292,7 @@ Default: True
              offset_sql
              setitem_sql
              set_sql
              +
              pragma_sql
              lock_sql
              literal_sql
              loaddata_sql
              @@ -336,6 +337,8 @@ Default: True
              primarykey_sql
              unique_sql
              if_sql
              +
              jsonkeyvalue_sql
              +
              jsonobject_sql
              in_sql
              in_unnest_op
              interval_sql
              diff --git a/docs/sqlglot/dialects/tsql.html b/docs/sqlglot/dialects/tsql.html index 062bcfa..630badb 100644 --- a/docs/sqlglot/dialects/tsql.html +++ b/docs/sqlglot/dialects/tsql.html @@ -3,7 +3,7 @@ - + sqlglot.dialects.tsql API documentation @@ -28,8 +28,8 @@ -

              API Documentation

              -
                +

                API Documentation

                +
                • generate_date_delta_with_unit_sql
                • @@ -51,6 +51,9 @@
                • TSQL.Generator
                    +
                  • + offset_sql +
                  • systemtime_sql
                  • @@ -94,270 +97,270 @@ 6from sqlglot import exp, generator, parser, tokens 7from sqlglot.dialects.dialect import ( 8 Dialect, - 9 min_or_least, - 10 parse_date_delta, - 11 rename_func, - 12) - 13from sqlglot.expressions import DataType - 14from sqlglot.helper import seq_get - 15from sqlglot.time import format_time - 16from sqlglot.tokens import TokenType - 17 - 18FULL_FORMAT_TIME_MAPPING = { - 19 "weekday": "%A", - 20 "dw": "%A", - 21 "w": "%A", - 22 "month": "%B", - 23 "mm": "%B", - 24 "m": "%B", - 25} - 26 - 27DATE_DELTA_INTERVAL = { - 28 "year": "year", - 29 "yyyy": "year", - 30 "yy": "year", - 31 "quarter": "quarter", - 32 "qq": "quarter", - 33 "q": "quarter", - 34 "month": "month", - 35 "mm": "month", - 36 "m": "month", - 37 "week": "week", - 38 "ww": "week", - 39 "wk": "week", - 40 "day": "day", - 41 "dd": "day", - 42 "d": "day", - 43} - 44 + 9 max_or_greatest, + 10 min_or_least, + 11 parse_date_delta, + 12 rename_func, + 13) + 14from sqlglot.expressions import DataType + 15from sqlglot.helper import seq_get + 16from sqlglot.time import format_time + 17from sqlglot.tokens import TokenType + 18 + 19FULL_FORMAT_TIME_MAPPING = { + 20 "weekday": "%A", + 21 "dw": "%A", + 22 "w": "%A", + 23 "month": "%B", + 24 "mm": "%B", + 25 "m": "%B", + 26} + 27 + 28DATE_DELTA_INTERVAL = { + 29 "year": "year", + 30 "yyyy": "year", + 31 "yy": "year", + 32 "quarter": "quarter", + 33 "qq": "quarter", + 34 "q": "quarter", + 35 "month": "month", + 36 "mm": "month", + 37 "m": "month", + 38 "week": "week", + 39 "ww": "week", + 40 "wk": "week", + 41 "day": "day", + 42 "dd": "day", + 43 "d": "day", + 44} 45 - 46DATE_FMT_RE = re.compile("([dD]{1,2})|([mM]{1,2})|([yY]{1,4})|([hH]{1,2})|([sS]{1,2})") - 47 - 48# N = Numeric, C=Currency - 49TRANSPILE_SAFE_NUMBER_FMT = {"N", "C"} - 50 + 46 + 47DATE_FMT_RE = re.compile("([dD]{1,2})|([mM]{1,2})|([yY]{1,4})|([hH]{1,2})|([sS]{1,2})") + 48 + 49# N = Numeric, C=Currency + 50TRANSPILE_SAFE_NUMBER_FMT = {"N", "C"} 51 - 52def _format_time_lambda(exp_class, full_format_mapping=None, default=None): - 53 def _format_time(args): - 54 return exp_class( - 55 this=seq_get(args, 1), - 56 format=exp.Literal.string( - 57 format_time( - 58 seq_get(args, 0).name or (TSQL.time_format if default is True else default), - 59 {**TSQL.time_mapping, **FULL_FORMAT_TIME_MAPPING} - 60 if full_format_mapping - 61 else TSQL.time_mapping, - 62 ) - 63 ), - 64 ) - 65 - 66 return _format_time - 67 + 52 + 53def _format_time_lambda(exp_class, full_format_mapping=None, default=None): + 54 def _format_time(args): + 55 return exp_class( + 56 this=seq_get(args, 1), + 57 format=exp.Literal.string( + 58 format_time( + 59 seq_get(args, 0).name or (TSQL.time_format if default is True else default), + 60 {**TSQL.time_mapping, **FULL_FORMAT_TIME_MAPPING} + 61 if full_format_mapping + 62 else TSQL.time_mapping, + 63 ) + 64 ), + 65 ) + 66 + 67 return _format_time 68 - 69def _parse_format(args): - 70 fmt = seq_get(args, 1) - 71 number_fmt = fmt.name in TRANSPILE_SAFE_NUMBER_FMT or not DATE_FMT_RE.search(fmt.this) - 72 if number_fmt: - 73 return exp.NumberToStr(this=seq_get(args, 0), format=fmt) - 74 return exp.TimeToStr( - 75 this=seq_get(args, 0), - 76 format=exp.Literal.string( - 77 format_time(fmt.name, TSQL.format_time_mapping) - 78 if len(fmt.name) == 1 - 79 else format_time(fmt.name, TSQL.time_mapping) - 80 ), - 81 ) - 82 + 69 + 70def _parse_format(args): + 71 fmt = seq_get(args, 1) + 72 number_fmt = fmt.name in TRANSPILE_SAFE_NUMBER_FMT or not DATE_FMT_RE.search(fmt.this) + 73 if number_fmt: + 74 return exp.NumberToStr(this=seq_get(args, 0), format=fmt) + 75 return exp.TimeToStr( + 76 this=seq_get(args, 0), + 77 format=exp.Literal.string( + 78 format_time(fmt.name, TSQL.format_time_mapping) + 79 if len(fmt.name) == 1 + 80 else format_time(fmt.name, TSQL.time_mapping) + 81 ), + 82 ) 83 - 84def _parse_eomonth(args): - 85 date = seq_get(args, 0) - 86 month_lag = seq_get(args, 1) - 87 unit = DATE_DELTA_INTERVAL.get("month") - 88 - 89 if month_lag is None: - 90 return exp.LastDateOfMonth(this=date) - 91 - 92 # Remove month lag argument in parser as its compared with the number of arguments of the resulting class - 93 args.remove(month_lag) - 94 - 95 return exp.LastDateOfMonth(this=exp.DateAdd(this=date, expression=month_lag, unit=unit)) - 96 + 84 + 85def _parse_eomonth(args): + 86 date = seq_get(args, 0) + 87 month_lag = seq_get(args, 1) + 88 unit = DATE_DELTA_INTERVAL.get("month") + 89 + 90 if month_lag is None: + 91 return exp.LastDateOfMonth(this=date) + 92 + 93 # Remove month lag argument in parser as its compared with the number of arguments of the resulting class + 94 args.remove(month_lag) + 95 + 96 return exp.LastDateOfMonth(this=exp.DateAdd(this=date, expression=month_lag, unit=unit)) 97 - 98def generate_date_delta_with_unit_sql(self, e): - 99 func = "DATEADD" if isinstance(e, exp.DateAdd) else "DATEDIFF" -100 return self.func(func, e.text("unit"), e.expression, e.this) -101 + 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) 102 -103def _format_sql(self, e): -104 fmt = ( -105 e.args["format"] -106 if isinstance(e, exp.NumberToStr) -107 else exp.Literal.string(format_time(e.text("format"), TSQL.inverse_time_mapping)) -108 ) -109 return self.func("FORMAT", e.this, fmt) -110 +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 -112def _string_agg_sql(self, e): -113 e = e.copy() -114 -115 this = e.this -116 distinct = e.find(exp.Distinct) -117 if distinct: -118 # exp.Distinct can appear below an exp.Order or an exp.GroupConcat expression -119 self.unsupported("T-SQL STRING_AGG doesn't support DISTINCT.") -120 this = distinct.pop().expressions[0] -121 -122 order = "" -123 if isinstance(e.this, exp.Order): -124 if e.this.this: -125 this = e.this.this.pop() -126 order = f" WITHIN GROUP ({self.sql(e.this)[1:]})" # Order has a leading space -127 -128 separator = e.args.get("separator") or exp.Literal.string(",") -129 return f"STRING_AGG({self.format_args(this, separator)}){order}" -130 +112 +113def _string_agg_sql(self, e): +114 e = e.copy() +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 +128 +129 separator = e.args.get("separator") or exp.Literal.string(",") +130 return f"STRING_AGG({self.format_args(this, separator)}){order}" 131 -132class TSQL(Dialect): -133 null_ordering = "nulls_are_small" -134 time_format = "'yyyy-mm-dd hh:mm:ss'" -135 -136 time_mapping = { -137 "year": "%Y", -138 "qq": "%q", -139 "q": "%q", -140 "quarter": "%q", -141 "dayofyear": "%j", -142 "day": "%d", -143 "dy": "%d", -144 "y": "%Y", -145 "week": "%W", -146 "ww": "%W", -147 "wk": "%W", -148 "hour": "%h", -149 "hh": "%I", -150 "minute": "%M", -151 "mi": "%M", -152 "n": "%M", -153 "second": "%S", -154 "ss": "%S", -155 "s": "%-S", -156 "millisecond": "%f", -157 "ms": "%f", -158 "weekday": "%W", -159 "dw": "%W", -160 "month": "%m", -161 "mm": "%M", -162 "m": "%-M", -163 "Y": "%Y", -164 "YYYY": "%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 "h": "%-I", -175 "S": "%f", -176 "yyyy": "%Y", -177 "yy": "%y", -178 } -179 -180 convert_format_mapping = { -181 "0": "%b %d %Y %-I:%M%p", -182 "1": "%m/%d/%y", -183 "2": "%y.%m.%d", -184 "3": "%d/%m/%y", -185 "4": "%d.%m.%y", -186 "5": "%d-%m-%y", -187 "6": "%d %b %y", -188 "7": "%b %d, %y", -189 "8": "%H:%M:%S", -190 "9": "%b %d %Y %-I:%M:%S:%f%p", -191 "10": "mm-dd-yy", -192 "11": "yy/mm/dd", -193 "12": "yymmdd", -194 "13": "%d %b %Y %H:%M:ss:%f", -195 "14": "%H:%M:%S:%f", -196 "20": "%Y-%m-%d %H:%M:%S", -197 "21": "%Y-%m-%d %H:%M:%S.%f", -198 "22": "%m/%d/%y %-I:%M:%S %p", -199 "23": "%Y-%m-%d", -200 "24": "%H:%M:%S", -201 "25": "%Y-%m-%d %H:%M:%S.%f", -202 "100": "%b %d %Y %-I:%M%p", -203 "101": "%m/%d/%Y", -204 "102": "%Y.%m.%d", -205 "103": "%d/%m/%Y", -206 "104": "%d.%m.%Y", -207 "105": "%d-%m-%Y", -208 "106": "%d %b %Y", -209 "107": "%b %d, %Y", -210 "108": "%H:%M:%S", -211 "109": "%b %d %Y %-I:%M:%S:%f%p", -212 "110": "%m-%d-%Y", -213 "111": "%Y/%m/%d", -214 "112": "%Y%m%d", -215 "113": "%d %b %Y %H:%M:%S:%f", -216 "114": "%H:%M:%S:%f", -217 "120": "%Y-%m-%d %H:%M:%S", -218 "121": "%Y-%m-%d %H:%M:%S.%f", -219 } -220 # not sure if complete -221 format_time_mapping = { -222 "y": "%B %Y", -223 "d": "%m/%d/%Y", -224 "H": "%-H", -225 "h": "%-I", -226 "s": "%Y-%m-%d %H:%M:%S", -227 "D": "%A,%B,%Y", -228 "f": "%A,%B,%Y %-I:%M %p", -229 "F": "%A,%B,%Y %-I:%M:%S %p", -230 "g": "%m/%d/%Y %-I:%M %p", -231 "G": "%m/%d/%Y %-I:%M:%S %p", -232 "M": "%B %-d", -233 "m": "%B %-d", -234 "O": "%Y-%m-%dT%H:%M:%S", -235 "u": "%Y-%M-%D %H:%M:%S%z", -236 "U": "%A, %B %D, %Y %H:%M:%S%z", -237 "T": "%-I:%M:%S %p", -238 "t": "%-I:%M", -239 "Y": "%a %Y", -240 } -241 -242 class Tokenizer(tokens.Tokenizer): -243 IDENTIFIERS = ['"', ("[", "]")] -244 -245 QUOTES = ["'", '"'] -246 -247 KEYWORDS = { -248 **tokens.Tokenizer.KEYWORDS, -249 "DATETIME2": TokenType.DATETIME, -250 "DATETIMEOFFSET": TokenType.TIMESTAMPTZ, -251 "DECLARE": TokenType.COMMAND, -252 "IMAGE": TokenType.IMAGE, -253 "MONEY": TokenType.MONEY, -254 "NTEXT": TokenType.TEXT, -255 "NVARCHAR(MAX)": TokenType.TEXT, -256 "PRINT": TokenType.COMMAND, -257 "PROC": TokenType.PROCEDURE, -258 "REAL": TokenType.FLOAT, -259 "ROWVERSION": TokenType.ROWVERSION, -260 "SMALLDATETIME": TokenType.DATETIME, -261 "SMALLMONEY": TokenType.SMALLMONEY, -262 "SQL_VARIANT": TokenType.VARIANT, -263 "TIME": TokenType.TIMESTAMP, -264 "TOP": TokenType.TOP, -265 "UNIQUEIDENTIFIER": TokenType.UNIQUEIDENTIFIER, -266 "VARCHAR(MAX)": TokenType.TEXT, -267 "XML": TokenType.XML, -268 } -269 -270 # TSQL allows @, # to appear as a variable/identifier prefix -271 SINGLE_TOKENS = tokens.Tokenizer.SINGLE_TOKENS.copy() -272 SINGLE_TOKENS.pop("@") +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): @@ -523,32 +526,38 @@ 435 exp.NumberToStr: _format_sql, 436 exp.TimeToStr: _format_sql, 437 exp.GroupConcat: _string_agg_sql, -438 exp.Min: min_or_least, -439 } -440 -441 TRANSFORMS.pop(exp.ReturnsProperty) -442 -443 def systemtime_sql(self, expression: exp.SystemTime) -> str: -444 kind = expression.args["kind"] -445 if kind == "ALL": -446 return "FOR SYSTEM_TIME ALL" -447 -448 start = self.sql(expression, "this") -449 if kind == "AS OF": -450 return f"FOR SYSTEM_TIME AS OF {start}" -451 -452 end = self.sql(expression, "expression") -453 if kind == "FROM": -454 return f"FOR SYSTEM_TIME FROM {start} TO {end}" -455 if kind == "BETWEEN": -456 return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}" +438 exp.Max: max_or_greatest, +439 exp.Min: min_or_least, +440 } +441 +442 TRANSFORMS.pop(exp.ReturnsProperty) +443 +444 LIMIT_FETCH = "FETCH" +445 +446 def offset_sql(self, expression: exp.Offset) -> str: +447 return f"{super().offset_sql(expression)} ROWS" +448 +449 def systemtime_sql(self, expression: exp.SystemTime) -> str: +450 kind = expression.args["kind"] +451 if kind == "ALL": +452 return "FOR SYSTEM_TIME ALL" +453 +454 start = self.sql(expression, "this") +455 if kind == "AS OF": +456 return f"FOR SYSTEM_TIME AS OF {start}" 457 -458 return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})" -459 -460 def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str: -461 table = expression.args.get("table") -462 table = f"{table} " if table else "" -463 return f"RETURNS {table}{self.sql(expression, 'this')}" +458 end = self.sql(expression, "expression") +459 if kind == "FROM": +460 return f"FOR SYSTEM_TIME FROM {start} TO {end}" +461 if kind == "BETWEEN": +462 return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}" +463 +464 return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})" +465 +466 def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str: +467 table = expression.args.get("table") +468 table = f"{table} " if table else "" +469 return f"RETURNS {table}{self.sql(expression, 'this')}"
        @@ -564,9 +573,9 @@ -
         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)
        +            
        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)
         
        @@ -584,147 +593,146 @@
        -
        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("@")
        +            
        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):
        @@ -890,32 +898,38 @@
         436            exp.NumberToStr: _format_sql,
         437            exp.TimeToStr: _format_sql,
         438            exp.GroupConcat: _string_agg_sql,
        -439            exp.Min: min_or_least,
        -440        }
        -441
        -442        TRANSFORMS.pop(exp.ReturnsProperty)
        -443
        -444        def systemtime_sql(self, expression: exp.SystemTime) -> str:
        -445            kind = expression.args["kind"]
        -446            if kind == "ALL":
        -447                return "FOR SYSTEM_TIME ALL"
        -448
        -449            start = self.sql(expression, "this")
        -450            if kind == "AS OF":
        -451                return f"FOR SYSTEM_TIME AS OF {start}"
        -452
        -453            end = self.sql(expression, "expression")
        -454            if kind == "FROM":
        -455                return f"FOR SYSTEM_TIME FROM {start} TO {end}"
        -456            if kind == "BETWEEN":
        -457                return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}"
        +439            exp.Max: max_or_greatest,
        +440            exp.Min: min_or_least,
        +441        }
        +442
        +443        TRANSFORMS.pop(exp.ReturnsProperty)
        +444
        +445        LIMIT_FETCH = "FETCH"
        +446
        +447        def offset_sql(self, expression: exp.Offset) -> str:
        +448            return f"{super().offset_sql(expression)} ROWS"
        +449
        +450        def systemtime_sql(self, expression: exp.SystemTime) -> str:
        +451            kind = expression.args["kind"]
        +452            if kind == "ALL":
        +453                return "FOR SYSTEM_TIME ALL"
        +454
        +455            start = self.sql(expression, "this")
        +456            if kind == "AS OF":
        +457                return f"FOR SYSTEM_TIME AS OF {start}"
         458
        -459            return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})"
        -460
        -461        def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str:
        -462            table = expression.args.get("table")
        -463            table = f"{table} " if table else ""
        -464            return f"RETURNS {table}{self.sql(expression, 'this')}"
        +459            end = self.sql(expression, "expression")
        +460            if kind == "FROM":
        +461                return f"FOR SYSTEM_TIME FROM {start} TO {end}"
        +462            if kind == "BETWEEN":
        +463                return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}"
        +464
        +465            return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})"
        +466
        +467        def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str:
        +468            table = expression.args.get("table")
        +469            table = f"{table} " if table else ""
        +470            return f"RETURNS {table}{self.sql(expression, 'this')}"
         
        @@ -950,37 +964,36 @@
        -
        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("@")
        +            
        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("#")
         
        @@ -1227,32 +1240,38 @@ Default: "nulls_are_small"
        436 exp.NumberToStr: _format_sql, 437 exp.TimeToStr: _format_sql, 438 exp.GroupConcat: _string_agg_sql, -439 exp.Min: min_or_least, -440 } -441 -442 TRANSFORMS.pop(exp.ReturnsProperty) -443 -444 def systemtime_sql(self, expression: exp.SystemTime) -> str: -445 kind = expression.args["kind"] -446 if kind == "ALL": -447 return "FOR SYSTEM_TIME ALL" -448 -449 start = self.sql(expression, "this") -450 if kind == "AS OF": -451 return f"FOR SYSTEM_TIME AS OF {start}" -452 -453 end = self.sql(expression, "expression") -454 if kind == "FROM": -455 return f"FOR SYSTEM_TIME FROM {start} TO {end}" -456 if kind == "BETWEEN": -457 return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}" +439 exp.Max: max_or_greatest, +440 exp.Min: min_or_least, +441 } +442 +443 TRANSFORMS.pop(exp.ReturnsProperty) +444 +445 LIMIT_FETCH = "FETCH" +446 +447 def offset_sql(self, expression: exp.Offset) -> str: +448 return f"{super().offset_sql(expression)} ROWS" +449 +450 def systemtime_sql(self, expression: exp.SystemTime) -> str: +451 kind = expression.args["kind"] +452 if kind == "ALL": +453 return "FOR SYSTEM_TIME ALL" +454 +455 start = self.sql(expression, "this") +456 if kind == "AS OF": +457 return f"FOR SYSTEM_TIME AS OF {start}" 458 -459 return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})" -460 -461 def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str: -462 table = expression.args.get("table") -463 table = f"{table} " if table else "" -464 return f"RETURNS {table}{self.sql(expression, 'this')}" +459 end = self.sql(expression, "expression") +460 if kind == "FROM": +461 return f"FOR SYSTEM_TIME FROM {start} TO {end}" +462 if kind == "BETWEEN": +463 return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}" +464 +465 return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})" +466 +467 def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str: +468 table = expression.args.get("table") +469 table = f"{table} " if table else "" +470 return f"RETURNS {table}{self.sql(expression, 'this')}"
        @@ -1300,6 +1319,25 @@ Default: True +
        + +
        + + def + offset_sql(self, expression: sqlglot.expressions.Offset) -> str: + + + +
        + +
        447        def offset_sql(self, expression: exp.Offset) -> str:
        +448            return f"{super().offset_sql(expression)} ROWS"
        +
        + + + + +
        @@ -1311,22 +1349,22 @@ Default: True
        -
        444        def systemtime_sql(self, expression: exp.SystemTime) -> str:
        -445            kind = expression.args["kind"]
        -446            if kind == "ALL":
        -447                return "FOR SYSTEM_TIME ALL"
        -448
        -449            start = self.sql(expression, "this")
        -450            if kind == "AS OF":
        -451                return f"FOR SYSTEM_TIME AS OF {start}"
        -452
        -453            end = self.sql(expression, "expression")
        -454            if kind == "FROM":
        -455                return f"FOR SYSTEM_TIME FROM {start} TO {end}"
        -456            if kind == "BETWEEN":
        -457                return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}"
        +            
        450        def systemtime_sql(self, expression: exp.SystemTime) -> str:
        +451            kind = expression.args["kind"]
        +452            if kind == "ALL":
        +453                return "FOR SYSTEM_TIME ALL"
        +454
        +455            start = self.sql(expression, "this")
        +456            if kind == "AS OF":
        +457                return f"FOR SYSTEM_TIME AS OF {start}"
         458
        -459            return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})"
        +459            end = self.sql(expression, "expression")
        +460            if kind == "FROM":
        +461                return f"FOR SYSTEM_TIME FROM {start} TO {end}"
        +462            if kind == "BETWEEN":
        +463                return f"FOR SYSTEM_TIME BETWEEN {start} AND {end}"
        +464
        +465            return f"FOR SYSTEM_TIME CONTAINED IN ({start}, {end})"
         
        @@ -1344,10 +1382,10 @@ Default: True
        -
        461        def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str:
        -462            table = expression.args.get("table")
        -463            table = f"{table} " if table else ""
        -464            return f"RETURNS {table}{self.sql(expression, 'this')}"
        +            
        467        def returnsproperty_sql(self, expression: exp.ReturnsProperty) -> str:
        +468            table = expression.args.get("table")
        +469            table = f"{table} " if table else ""
        +470            return f"RETURNS {table}{self.sql(expression, 'this')}"
         
        @@ -1443,9 +1481,9 @@ Default: True
        lambda_sql
        lateral_sql
        limit_sql
        -
        offset_sql
        setitem_sql
        set_sql
        +
        pragma_sql
        lock_sql
        literal_sql
        loaddata_sql
        @@ -1490,6 +1528,8 @@ Default: True
        primarykey_sql
        unique_sql
        if_sql
        +
        jsonkeyvalue_sql
        +
        jsonobject_sql
        in_sql
        in_unnest_op
        interval_sql
        diff --git a/docs/sqlglot/diff.html b/docs/sqlglot/diff.html index 14f05eb..c31b7ab 100644 --- a/docs/sqlglot/diff.html +++ b/docs/sqlglot/diff.html @@ -3,7 +3,7 @@ - + sqlglot.diff API documentation @@ -26,8 +26,8 @@ -

        Contents

        -
          +

          Contents

          +
          • Semantic Diff for SQL
            • Motivation
            • @@ -41,8 +41,8 @@ -

              API Documentation

              -
                +

                API Documentation

                +
                • Insert
                    @@ -560,7 +560,7 @@ 12from heapq import heappop, heappush 13 14from sqlglot import Dialect, expressions as exp - 15from sqlglot.helper import ensure_collection + 15from sqlglot.helper import ensure_list 16 17 18@dataclass(frozen=True) @@ -699,8 +699,8 @@ 151 152 self._source = source 153 self._target = target -154 self._source_index = {id(n[0]): n[0] for n in source.bfs()} -155 self._target_index = {id(n[0]): n[0] for n in target.bfs()} +154 self._source_index = {id(n): n for n, *_ in self._source.bfs()} +155 self._target_index = {id(n): n for n, *_ in self._target.bfs()} 156 self._unmatched_source_nodes = set(self._source_index) - set(pre_matched_nodes) 157 self._unmatched_target_nodes = set(self._target_index) - set(pre_matched_nodes.values()) 158 self._bigram_histo_cache: t.Dict[int, t.DefaultDict[str, int]] = {} @@ -747,10 +747,10 @@ 199 matching_set = leaves_matching_set.copy() 200 201 ordered_unmatched_source_nodes = { -202 id(n[0]): None for n in self._source.bfs() if id(n[0]) in self._unmatched_source_nodes +202 id(n): None for n, *_ in self._source.bfs() if id(n) in self._unmatched_source_nodes 203 } 204 ordered_unmatched_target_nodes = { -205 id(n[0]): None for n in self._target.bfs() if id(n[0]) in self._unmatched_target_nodes +205 id(n): None for n, *_ in self._target.bfs() if id(n) in self._unmatched_target_nodes 206 } 207 208 for source_node_id in ordered_unmatched_source_nodes: @@ -852,18 +852,18 @@ 304def _get_leaves(expression: exp.Expression) -> t.Iterator[exp.Expression]: 305 has_child_exprs = False 306 -307 for a in expression.args.values(): -308 for node in ensure_collection(a): -309 if isinstance(node, exp.Expression): -310 has_child_exprs = True -311 yield from _get_leaves(node) -312 -313 if not has_child_exprs: -314 yield expression -315 -316 -317def _is_same_type(source: exp.Expression, target: exp.Expression) -> bool: -318 if type(source) is type(target): +307 for _, node in expression.iter_expressions(): +308 has_child_exprs = True +309 yield from _get_leaves(node) +310 +311 if not has_child_exprs: +312 yield expression +313 +314 +315def _is_same_type(source: exp.Expression, target: exp.Expression) -> bool: +316 if type(source) is type(target) and ( +317 not isinstance(source, exp.Identifier) or type(source.parent) is type(target.parent) +318 ): 319 if isinstance(source, exp.Join): 320 return source.args.get("side") == target.args.get("side") 321 @@ -879,7 +879,7 @@ 331 args: t.List[t.Union[exp.Expression, t.List]] = [] 332 if expression: 333 for a in expression.args.values(): -334 args.extend(ensure_collection(a)) +334 args.extend(ensure_list(a)) 335 return [a for a in args if isinstance(a, exp.Expression)] 336 337 @@ -1251,8 +1251,8 @@ referenced in source / target trees. 152 153 self._source = source 154 self._target = target -155 self._source_index = {id(n[0]): n[0] for n in source.bfs()} -156 self._target_index = {id(n[0]): n[0] for n in target.bfs()} +155 self._source_index = {id(n): n for n, *_ in self._source.bfs()} +156 self._target_index = {id(n): n for n, *_ in self._target.bfs()} 157 self._unmatched_source_nodes = set(self._source_index) - set(pre_matched_nodes) 158 self._unmatched_target_nodes = set(self._target_index) - set(pre_matched_nodes.values()) 159 self._bigram_histo_cache: t.Dict[int, t.DefaultDict[str, int]] = {} @@ -1299,10 +1299,10 @@ referenced in source / target trees. 200 matching_set = leaves_matching_set.copy() 201 202 ordered_unmatched_source_nodes = { -203 id(n[0]): None for n in self._source.bfs() if id(n[0]) in self._unmatched_source_nodes +203 id(n): None for n, *_ in self._source.bfs() if id(n) in self._unmatched_source_nodes 204 } 205 ordered_unmatched_target_nodes = { -206 id(n[0]): None for n in self._target.bfs() if id(n[0]) in self._unmatched_target_nodes +206 id(n): None for n, *_ in self._target.bfs() if id(n) in self._unmatched_target_nodes 207 } 208 209 for source_node_id in ordered_unmatched_source_nodes: @@ -1452,8 +1452,8 @@ Chawathe et al. described in 152 153 self._source = source 154 self._target = target -155 self._source_index = {id(n[0]): n[0] for n in source.bfs()} -156 self._target_index = {id(n[0]): n[0] for n in target.bfs()} +155 self._source_index = {id(n): n for n, *_ in self._source.bfs()} +156 self._target_index = {id(n): n for n, *_ in self._target.bfs()} 157 self._unmatched_source_nodes = set(self._source_index) - set(pre_matched_nodes) 158 self._unmatched_target_nodes = set(self._target_index) - set(pre_matched_nodes.values()) 159 self._bigram_histo_cache: t.Dict[int, t.DefaultDict[str, int]] = {} diff --git a/docs/sqlglot/errors.html b/docs/sqlglot/errors.html index bcee5f4..5628cbd 100644 --- a/docs/sqlglot/errors.html +++ b/docs/sqlglot/errors.html @@ -3,7 +3,7 @@ - + sqlglot.errors API documentation @@ -28,8 +28,8 @@ -

                    API Documentation

                    -
                      +

                      API Documentation

                      +
                      • ErrorLevel
                          diff --git a/docs/sqlglot/executor.html b/docs/sqlglot/executor.html index a12760e..10f16bb 100644 --- a/docs/sqlglot/executor.html +++ b/docs/sqlglot/executor.html @@ -3,7 +3,7 @@ - + sqlglot.executor API documentation @@ -26,8 +26,8 @@ -

                          Contents

                          -
                            +

                            Contents

                            +
                            • Writing a Python SQL engine from scratch -

                              Submodules

                              - +

                              Submodules

                              + -

                              API Documentation

                              -
                                +

                                API Documentation

                                +
                                • execute
                                • @@ -388,7 +388,7 @@ 57 for name, table in tables_.mapping.items() 58 } 59 -60 schema = ensure_schema(schema) +60 schema = ensure_schema(schema, dialect=read) 61 62 if tables_.supported_table_args and tables_.supported_table_args != schema.supported_table_args: 63 raise ExecuteError("Tables must support the same table args as schema") @@ -454,7 +454,7 @@ 58 for name, table in tables_.mapping.items() 59 } 60 -61 schema = ensure_schema(schema) +61 schema = ensure_schema(schema, dialect=read) 62 63 if tables_.supported_table_args and tables_.supported_table_args != schema.supported_table_args: 64 raise ExecuteError("Tables must support the same table args as schema") diff --git a/docs/sqlglot/executor/context.html b/docs/sqlglot/executor/context.html index 0ee8a2d..3e96344 100644 --- a/docs/sqlglot/executor/context.html +++ b/docs/sqlglot/executor/context.html @@ -3,7 +3,7 @@ - + sqlglot.executor.context API documentation @@ -28,8 +28,8 @@ -

                                  API Documentation

                                  -
                                    +

                                    API Documentation

                                    +
                                    • Context
                                        diff --git a/docs/sqlglot/executor/env.html b/docs/sqlglot/executor/env.html index 29d9395..1abb468 100644 --- a/docs/sqlglot/executor/env.html +++ b/docs/sqlglot/executor/env.html @@ -3,7 +3,7 @@ - + sqlglot.executor.env API documentation @@ -28,8 +28,8 @@ -

                                        API Documentation

                                        -
                                          +

                                          API Documentation

                                          +
                                          • reverse_key
                                              diff --git a/docs/sqlglot/executor/python.html b/docs/sqlglot/executor/python.html index 2c1a429..a00e7e8 100644 --- a/docs/sqlglot/executor/python.html +++ b/docs/sqlglot/executor/python.html @@ -3,7 +3,7 @@ - + sqlglot.executor.python API documentation @@ -28,8 +28,8 @@ -

                                              API Documentation

                                              -
                                                +

                                                API Documentation

                                                +
                                                • PythonExecutor
                                                    @@ -221,345 +221,333 @@ 94 if source and isinstance(source, exp.Expression): 95 source = source.name or source.alias 96 - 97 condition = self.generate(step.condition) - 98 projections = self.generate_tuple(step.projections) - 99 -100 if source is None: -101 context, table_iter = self.static() -102 elif source in context: -103 if not projections and not condition: -104 return self.context({step.name: context.tables[source]}) -105 table_iter = context.table_iter(source) -106 elif isinstance(step.source, exp.Table) and isinstance(step.source.this, exp.ReadCSV): -107 table_iter = self.scan_csv(step) -108 context = next(table_iter) -109 else: -110 context, table_iter = self.scan_table(step) -111 -112 if projections: -113 sink = self.table(step.projections) -114 else: -115 sink = self.table(context.columns) -116 -117 for reader in table_iter: -118 if len(sink) >= step.limit: -119 break -120 -121 if condition and not context.eval(condition): -122 continue -123 -124 if projections: -125 sink.append(context.eval_tuple(projections)) -126 else: -127 sink.append(reader.row) -128 -129 return self.context({step.name: sink}) -130 -131 def static(self): -132 return self.context({}), [RowReader(())] -133 -134 def scan_table(self, step): -135 table = self.tables.find(step.source) -136 context = self.context({step.source.alias_or_name: table}) -137 return context, iter(table) -138 -139 def scan_csv(self, step): -140 alias = step.source.alias -141 source = step.source.this -142 -143 with csv_reader(source) as reader: -144 columns = next(reader) -145 table = Table(columns) -146 context = self.context({alias: table}) -147 yield context -148 types = [] -149 -150 for row in reader: -151 if not types: -152 for v in row: -153 try: -154 types.append(type(ast.literal_eval(v))) -155 except (ValueError, SyntaxError): -156 types.append(str) -157 context.set_row(tuple(t(v) for t, v in zip(types, row))) -158 yield context.table.reader -159 -160 def join(self, step, context): -161 source = step.name -162 -163 source_table = context.tables[source] -164 source_context = self.context({source: source_table}) -165 column_ranges = {source: range(0, len(source_table.columns))} -166 -167 for name, join in step.joins.items(): -168 table = context.tables[name] -169 start = max(r.stop for r in column_ranges.values()) -170 column_ranges[name] = range(start, len(table.columns) + start) -171 join_context = self.context({name: table}) -172 -173 if join.get("source_key"): -174 table = self.hash_join(join, source_context, join_context) -175 else: -176 table = self.nested_loop_join(join, source_context, join_context) -177 -178 source_context = self.context( -179 { -180 name: Table(table.columns, table.rows, column_range) -181 for name, column_range in column_ranges.items() -182 } -183 ) -184 condition = self.generate(join["condition"]) -185 if condition: -186 source_context.filter(condition) -187 -188 condition = self.generate(step.condition) -189 projections = self.generate_tuple(step.projections) -190 -191 if not condition and not projections: -192 return source_context -193 -194 sink = self.table(step.projections if projections else source_context.columns) + 97 if source is None: + 98 context, table_iter = self.static() + 99 elif source in context: +100 if not step.projections and not step.condition: +101 return self.context({step.name: context.tables[source]}) +102 table_iter = context.table_iter(source) +103 elif isinstance(step.source, exp.Table) and isinstance(step.source.this, exp.ReadCSV): +104 table_iter = self.scan_csv(step) +105 context = next(table_iter) +106 else: +107 context, table_iter = self.scan_table(step) +108 +109 return self.context({step.name: self._project_and_filter(context, step, table_iter)}) +110 +111 def _project_and_filter(self, context, step, table_iter): +112 sink = self.table(step.projections if step.projections else context.columns) +113 condition = self.generate(step.condition) +114 projections = self.generate_tuple(step.projections) +115 +116 for reader in table_iter: +117 if len(sink) >= step.limit: +118 break +119 +120 if condition and not context.eval(condition): +121 continue +122 +123 if projections: +124 sink.append(context.eval_tuple(projections)) +125 else: +126 sink.append(reader.row) +127 +128 return sink +129 +130 def static(self): +131 return self.context({}), [RowReader(())] +132 +133 def scan_table(self, step): +134 table = self.tables.find(step.source) +135 context = self.context({step.source.alias_or_name: table}) +136 return context, iter(table) +137 +138 def scan_csv(self, step): +139 alias = step.source.alias +140 source = step.source.this +141 +142 with csv_reader(source) as reader: +143 columns = next(reader) +144 table = Table(columns) +145 context = self.context({alias: table}) +146 yield context +147 types = [] +148 +149 for row in reader: +150 if not types: +151 for v in row: +152 try: +153 types.append(type(ast.literal_eval(v))) +154 except (ValueError, SyntaxError): +155 types.append(str) +156 context.set_row(tuple(t(v) for t, v in zip(types, row))) +157 yield context.table.reader +158 +159 def join(self, step, context): +160 source = step.name +161 +162 source_table = context.tables[source] +163 source_context = self.context({source: source_table}) +164 column_ranges = {source: range(0, len(source_table.columns))} +165 +166 for name, join in step.joins.items(): +167 table = context.tables[name] +168 start = max(r.stop for r in column_ranges.values()) +169 column_ranges[name] = range(start, len(table.columns) + start) +170 join_context = self.context({name: table}) +171 +172 if join.get("source_key"): +173 table = self.hash_join(join, source_context, join_context) +174 else: +175 table = self.nested_loop_join(join, source_context, join_context) +176 +177 source_context = self.context( +178 { +179 name: Table(table.columns, table.rows, column_range) +180 for name, column_range in column_ranges.items() +181 } +182 ) +183 condition = self.generate(join["condition"]) +184 if condition: +185 source_context.filter(condition) +186 +187 if not step.condition and not step.projections: +188 return source_context +189 +190 sink = self._project_and_filter( +191 source_context, +192 step, +193 (reader for reader, _ in iter(source_context)), +194 ) 195 -196 for reader, ctx in source_context: -197 if condition and not ctx.eval(condition): -198 continue -199 -200 if projections: -201 sink.append(ctx.eval_tuple(projections)) -202 else: -203 sink.append(reader.row) -204 -205 if len(sink) >= step.limit: -206 break -207 -208 if projections: -209 return self.context({step.name: sink}) -210 else: -211 return self.context( -212 { -213 name: Table(table.columns, sink.rows, table.column_range) -214 for name, table in source_context.tables.items() -215 } -216 ) -217 -218 def nested_loop_join(self, _join, source_context, join_context): -219 table = Table(source_context.columns + join_context.columns) +196 if step.projections: +197 return self.context({step.name: sink}) +198 else: +199 return self.context( +200 { +201 name: Table(table.columns, sink.rows, table.column_range) +202 for name, table in source_context.tables.items() +203 } +204 ) +205 +206 def nested_loop_join(self, _join, source_context, join_context): +207 table = Table(source_context.columns + join_context.columns) +208 +209 for reader_a, _ in source_context: +210 for reader_b, _ in join_context: +211 table.append(reader_a.row + reader_b.row) +212 +213 return table +214 +215 def hash_join(self, join, source_context, join_context): +216 source_key = self.generate_tuple(join["source_key"]) +217 join_key = self.generate_tuple(join["join_key"]) +218 left = join.get("side") == "LEFT" +219 right = join.get("side") == "RIGHT" 220 -221 for reader_a, _ in source_context: -222 for reader_b, _ in join_context: -223 table.append(reader_a.row + reader_b.row) -224 -225 return table -226 -227 def hash_join(self, join, source_context, join_context): -228 source_key = self.generate_tuple(join["source_key"]) -229 join_key = self.generate_tuple(join["join_key"]) -230 left = join.get("side") == "LEFT" -231 right = join.get("side") == "RIGHT" -232 -233 results = collections.defaultdict(lambda: ([], [])) -234 -235 for reader, ctx in source_context: -236 results[ctx.eval_tuple(source_key)][0].append(reader.row) -237 for reader, ctx in join_context: -238 results[ctx.eval_tuple(join_key)][1].append(reader.row) +221 results = collections.defaultdict(lambda: ([], [])) +222 +223 for reader, ctx in source_context: +224 results[ctx.eval_tuple(source_key)][0].append(reader.row) +225 for reader, ctx in join_context: +226 results[ctx.eval_tuple(join_key)][1].append(reader.row) +227 +228 table = Table(source_context.columns + join_context.columns) +229 nulls = [(None,) * len(join_context.columns if left else source_context.columns)] +230 +231 for a_group, b_group in results.values(): +232 if left: +233 b_group = b_group or nulls +234 elif right: +235 a_group = a_group or nulls +236 +237 for a_row, b_row in itertools.product(a_group, b_group): +238 table.append(a_row + b_row) 239 -240 table = Table(source_context.columns + join_context.columns) -241 nulls = [(None,) * len(join_context.columns if left else source_context.columns)] -242 -243 for a_group, b_group in results.values(): -244 if left: -245 b_group = b_group or nulls -246 elif right: -247 a_group = a_group or nulls -248 -249 for a_row, b_row in itertools.product(a_group, b_group): -250 table.append(a_row + b_row) -251 -252 return table -253 -254 def aggregate(self, step, context): -255 group_by = self.generate_tuple(step.group.values()) -256 aggregations = self.generate_tuple(step.aggregations) -257 operands = self.generate_tuple(step.operands) +240 return table +241 +242 def aggregate(self, step, context): +243 group_by = self.generate_tuple(step.group.values()) +244 aggregations = self.generate_tuple(step.aggregations) +245 operands = self.generate_tuple(step.operands) +246 +247 if operands: +248 operand_table = Table(self.table(step.operands).columns) +249 +250 for reader, ctx in context: +251 operand_table.append(ctx.eval_tuple(operands)) +252 +253 for i, (a, b) in enumerate(zip(context.table.rows, operand_table.rows)): +254 context.table.rows[i] = a + b +255 +256 width = len(context.columns) +257 context.add_columns(*operand_table.columns) 258 -259 if operands: -260 operand_table = Table(self.table(step.operands).columns) -261 -262 for reader, ctx in context: -263 operand_table.append(ctx.eval_tuple(operands)) +259 operand_table = Table( +260 context.columns, +261 context.table.rows, +262 range(width, width + len(operand_table.columns)), +263 ) 264 -265 for i, (a, b) in enumerate(zip(context.table.rows, operand_table.rows)): -266 context.table.rows[i] = a + b -267 -268 width = len(context.columns) -269 context.add_columns(*operand_table.columns) -270 -271 operand_table = Table( -272 context.columns, -273 context.table.rows, -274 range(width, width + len(operand_table.columns)), -275 ) -276 -277 context = self.context( -278 { -279 None: operand_table, -280 **context.tables, -281 } -282 ) -283 -284 context.sort(group_by) -285 -286 group = None -287 start = 0 -288 end = 1 -289 length = len(context.table) -290 table = self.table(list(step.group) + step.aggregations) -291 condition = self.generate(step.condition) -292 -293 def add_row(): -294 if not condition or context.eval(condition): -295 table.append(group + context.eval_tuple(aggregations)) -296 -297 if length: -298 for i in range(length): -299 context.set_index(i) -300 key = context.eval_tuple(group_by) -301 group = key if group is None else group -302 end += 1 -303 if key != group: -304 context.set_range(start, end - 2) -305 add_row() -306 group = key -307 start = end - 2 -308 if len(table.rows) >= step.limit: -309 break -310 if i == length - 1: -311 context.set_range(start, end - 1) -312 add_row() -313 elif step.limit > 0 and not group_by: -314 context.set_range(0, 0) -315 table.append(context.eval_tuple(aggregations)) -316 -317 context = self.context({step.name: table, **{name: table for name in context.tables}}) +265 context = self.context( +266 { +267 None: operand_table, +268 **context.tables, +269 } +270 ) +271 +272 context.sort(group_by) +273 +274 group = None +275 start = 0 +276 end = 1 +277 length = len(context.table) +278 table = self.table(list(step.group) + step.aggregations) +279 condition = self.generate(step.condition) +280 +281 def add_row(): +282 if not condition or context.eval(condition): +283 table.append(group + context.eval_tuple(aggregations)) +284 +285 if length: +286 for i in range(length): +287 context.set_index(i) +288 key = context.eval_tuple(group_by) +289 group = key if group is None else group +290 end += 1 +291 if key != group: +292 context.set_range(start, end - 2) +293 add_row() +294 group = key +295 start = end - 2 +296 if len(table.rows) >= step.limit: +297 break +298 if i == length - 1: +299 context.set_range(start, end - 1) +300 add_row() +301 elif step.limit > 0 and not group_by: +302 context.set_range(0, 0) +303 table.append(context.eval_tuple(aggregations)) +304 +305 context = self.context({step.name: table, **{name: table for name in context.tables}}) +306 +307 if step.projections: +308 return self.scan(step, context) +309 return context +310 +311 def sort(self, step, context): +312 projections = self.generate_tuple(step.projections) +313 projection_columns = [p.alias_or_name for p in step.projections] +314 all_columns = list(context.columns) + projection_columns +315 sink = self.table(all_columns) +316 for reader, ctx in context: +317 sink.append(reader.row + ctx.eval_tuple(projections)) 318 -319 if step.projections: -320 return self.scan(step, context) -321 return context -322 -323 def sort(self, step, context): -324 projections = self.generate_tuple(step.projections) -325 projection_columns = [p.alias_or_name for p in step.projections] -326 all_columns = list(context.columns) + projection_columns -327 sink = self.table(all_columns) -328 for reader, ctx in context: -329 sink.append(reader.row + ctx.eval_tuple(projections)) -330 -331 sort_ctx = self.context( -332 { -333 None: sink, -334 **{table: sink for table in context.tables}, -335 } -336 ) -337 sort_ctx.sort(self.generate_tuple(step.key)) -338 -339 if not math.isinf(step.limit): -340 sort_ctx.table.rows = sort_ctx.table.rows[0 : step.limit] +319 sort_ctx = self.context( +320 { +321 None: sink, +322 **{table: sink for table in context.tables}, +323 } +324 ) +325 sort_ctx.sort(self.generate_tuple(step.key)) +326 +327 if not math.isinf(step.limit): +328 sort_ctx.table.rows = sort_ctx.table.rows[0 : step.limit] +329 +330 output = Table( +331 projection_columns, +332 rows=[r[len(context.columns) : len(all_columns)] for r in sort_ctx.table.rows], +333 ) +334 return self.context({step.name: output}) +335 +336 def set_operation(self, step, context): +337 left = context.tables[step.left] +338 right = context.tables[step.right] +339 +340 sink = self.table(left.columns) 341 -342 output = Table( -343 projection_columns, -344 rows=[r[len(context.columns) : len(all_columns)] for r in sort_ctx.table.rows], -345 ) -346 return self.context({step.name: output}) -347 -348 def set_operation(self, step, context): -349 left = context.tables[step.left] -350 right = context.tables[step.right] -351 -352 sink = self.table(left.columns) +342 if issubclass(step.op, exp.Intersect): +343 sink.rows = list(set(left.rows).intersection(set(right.rows))) +344 elif issubclass(step.op, exp.Except): +345 sink.rows = list(set(left.rows).difference(set(right.rows))) +346 elif issubclass(step.op, exp.Union) and step.distinct: +347 sink.rows = list(set(left.rows).union(set(right.rows))) +348 else: +349 sink.rows = left.rows + right.rows +350 +351 return self.context({step.name: sink}) +352 353 -354 if issubclass(step.op, exp.Intersect): -355 sink.rows = list(set(left.rows).intersection(set(right.rows))) -356 elif issubclass(step.op, exp.Except): -357 sink.rows = list(set(left.rows).difference(set(right.rows))) -358 elif issubclass(step.op, exp.Union) and step.distinct: -359 sink.rows = list(set(left.rows).union(set(right.rows))) -360 else: -361 sink.rows = left.rows + right.rows -362 -363 return self.context({step.name: sink}) -364 -365 -366def _ordered_py(self, expression): -367 this = self.sql(expression, "this") -368 desc = "True" if expression.args.get("desc") else "False" -369 nulls_first = "True" if expression.args.get("nulls_first") else "False" -370 return f"ORDERED({this}, {desc}, {nulls_first})" +354def _ordered_py(self, expression): +355 this = self.sql(expression, "this") +356 desc = "True" if expression.args.get("desc") else "False" +357 nulls_first = "True" if expression.args.get("nulls_first") else "False" +358 return f"ORDERED({this}, {desc}, {nulls_first})" +359 +360 +361def _rename(self, e): +362 try: +363 if "expressions" in e.args: +364 this = self.sql(e, "this") +365 this = f"{this}, " if this else "" +366 return f"{e.key.upper()}({this}{self.expressions(e)})" +367 return self.func(e.key, *e.args.values()) +368 except Exception as ex: +369 raise Exception(f"Could not rename {repr(e)}") from ex +370 371 -372 -373def _rename(self, e): -374 try: -375 if "expressions" in e.args: -376 this = self.sql(e, "this") -377 this = f"{this}, " if this else "" -378 return f"{e.key.upper()}({this}{self.expressions(e)})" -379 return self.func(e.key, *e.args.values()) -380 except Exception as ex: -381 raise Exception(f"Could not rename {repr(e)}") from ex -382 +372def _case_sql(self, expression): +373 this = self.sql(expression, "this") +374 chain = self.sql(expression, "default") or "None" +375 +376 for e in reversed(expression.args["ifs"]): +377 true = self.sql(e, "true") +378 condition = self.sql(e, "this") +379 condition = f"{this} = ({condition})" if this else condition +380 chain = f"{true} if {condition} else ({chain})" +381 +382 return chain 383 -384def _case_sql(self, expression): -385 this = self.sql(expression, "this") -386 chain = self.sql(expression, "default") or "None" +384 +385def _lambda_sql(self, e: exp.Lambda) -> str: +386 names = {e.name.lower() for e in e.expressions} 387 -388 for e in reversed(expression.args["ifs"]): -389 true = self.sql(e, "true") -390 condition = self.sql(e, "this") -391 condition = f"{this} = ({condition})" if this else condition -392 chain = f"{true} if {condition} else ({chain})" +388 e = e.transform( +389 lambda n: exp.Var(this=n.name) +390 if isinstance(n, exp.Identifier) and n.name.lower() in names +391 else n +392 ) 393 -394 return chain +394 return f"lambda {self.expressions(e, flat=True)}: {self.sql(e, 'this')}" 395 396 -397def _lambda_sql(self, e: exp.Lambda) -> str: -398 names = {e.name.lower() for e in e.expressions} -399 -400 e = e.transform( -401 lambda n: exp.Var(this=n.name) -402 if isinstance(n, exp.Identifier) and n.name.lower() in names -403 else n -404 ) -405 -406 return f"lambda {self.expressions(e, flat=True)}: {self.sql(e, 'this')}" -407 -408 -409class Python(Dialect): -410 class Tokenizer(tokens.Tokenizer): -411 STRING_ESCAPES = ["\\"] -412 -413 class Generator(generator.Generator): -414 TRANSFORMS = { -415 **{klass: _rename for klass in subclasses(exp.__name__, exp.Binary)}, -416 **{klass: _rename for klass in exp.ALL_FUNCTIONS}, -417 exp.Case: _case_sql, -418 exp.Alias: lambda self, e: self.sql(e.this), -419 exp.Array: inline_array_sql, -420 exp.And: lambda self, e: self.binary(e, "and"), -421 exp.Between: _rename, -422 exp.Boolean: lambda self, e: "True" if e.this else "False", -423 exp.Cast: lambda self, e: f"CAST({self.sql(e.this)}, exp.DataType.Type.{e.args['to']})", -424 exp.Column: lambda self, e: f"scope[{self.sql(e, 'table') or None}][{self.sql(e.this)}]", -425 exp.Distinct: lambda self, e: f"set({self.sql(e, 'this')})", -426 exp.Extract: lambda self, e: f"EXTRACT('{e.name.lower()}', {self.sql(e, 'expression')})", -427 exp.In: lambda self, e: f"{self.sql(e, 'this')} in ({self.expressions(e, flat=True)})", -428 exp.Is: lambda self, e: self.binary(e, "is"), -429 exp.Lambda: _lambda_sql, -430 exp.Not: lambda self, e: f"not {self.sql(e.this)}", -431 exp.Null: lambda *_: "None", -432 exp.Or: lambda self, e: self.binary(e, "or"), -433 exp.Ordered: _ordered_py, -434 exp.Star: lambda *_: "1", -435 } +397class Python(Dialect): +398 class Tokenizer(tokens.Tokenizer): +399 STRING_ESCAPES = ["\\"] +400 +401 class Generator(generator.Generator): +402 TRANSFORMS = { +403 **{klass: _rename for klass in subclasses(exp.__name__, exp.Binary)}, +404 **{klass: _rename for klass in exp.ALL_FUNCTIONS}, +405 exp.Case: _case_sql, +406 exp.Alias: lambda self, e: self.sql(e.this), +407 exp.Array: inline_array_sql, +408 exp.And: lambda self, e: self.binary(e, "and"), +409 exp.Between: _rename, +410 exp.Boolean: lambda self, e: "True" if e.this else "False", +411 exp.Cast: lambda self, e: f"CAST({self.sql(e.this)}, exp.DataType.Type.{e.args['to']})", +412 exp.Column: lambda self, e: f"scope[{self.sql(e, 'table') or None}][{self.sql(e.this)}]", +413 exp.Distinct: lambda self, e: f"set({self.sql(e, 'this')})", +414 exp.Extract: lambda self, e: f"EXTRACT('{e.name.lower()}', {self.sql(e, 'expression')})", +415 exp.In: lambda self, e: f"{self.sql(e, 'this')} in ({self.expressions(e, flat=True)})", +416 exp.Is: lambda self, e: self.binary(e, "is"), +417 exp.Lambda: _lambda_sql, +418 exp.Not: lambda self, e: f"not {self.sql(e.this)}", +419 exp.Null: lambda *_: "None", +420 exp.Or: lambda self, e: self.binary(e, "or"), +421 exp.Ordered: _ordered_py, +422 exp.Star: lambda *_: "1", +423 }
        @@ -657,273 +645,261 @@ 95 if source and isinstance(source, exp.Expression): 96 source = source.name or source.alias 97 - 98 condition = self.generate(step.condition) - 99 projections = self.generate_tuple(step.projections) -100 -101 if source is None: -102 context, table_iter = self.static() -103 elif source in context: -104 if not projections and not condition: -105 return self.context({step.name: context.tables[source]}) -106 table_iter = context.table_iter(source) -107 elif isinstance(step.source, exp.Table) and isinstance(step.source.this, exp.ReadCSV): -108 table_iter = self.scan_csv(step) -109 context = next(table_iter) -110 else: -111 context, table_iter = self.scan_table(step) -112 -113 if projections: -114 sink = self.table(step.projections) -115 else: -116 sink = self.table(context.columns) -117 -118 for reader in table_iter: -119 if len(sink) >= step.limit: -120 break -121 -122 if condition and not context.eval(condition): -123 continue -124 -125 if projections: -126 sink.append(context.eval_tuple(projections)) -127 else: -128 sink.append(reader.row) -129 -130 return self.context({step.name: sink}) -131 -132 def static(self): -133 return self.context({}), [RowReader(())] -134 -135 def scan_table(self, step): -136 table = self.tables.find(step.source) -137 context = self.context({step.source.alias_or_name: table}) -138 return context, iter(table) -139 -140 def scan_csv(self, step): -141 alias = step.source.alias -142 source = step.source.this -143 -144 with csv_reader(source) as reader: -145 columns = next(reader) -146 table = Table(columns) -147 context = self.context({alias: table}) -148 yield context -149 types = [] -150 -151 for row in reader: -152 if not types: -153 for v in row: -154 try: -155 types.append(type(ast.literal_eval(v))) -156 except (ValueError, SyntaxError): -157 types.append(str) -158 context.set_row(tuple(t(v) for t, v in zip(types, row))) -159 yield context.table.reader -160 -161 def join(self, step, context): -162 source = step.name -163 -164 source_table = context.tables[source] -165 source_context = self.context({source: source_table}) -166 column_ranges = {source: range(0, len(source_table.columns))} -167 -168 for name, join in step.joins.items(): -169 table = context.tables[name] -170 start = max(r.stop for r in column_ranges.values()) -171 column_ranges[name] = range(start, len(table.columns) + start) -172 join_context = self.context({name: table}) -173 -174 if join.get("source_key"): -175 table = self.hash_join(join, source_context, join_context) -176 else: -177 table = self.nested_loop_join(join, source_context, join_context) -178 -179 source_context = self.context( -180 { -181 name: Table(table.columns, table.rows, column_range) -182 for name, column_range in column_ranges.items() -183 } -184 ) -185 condition = self.generate(join["condition"]) -186 if condition: -187 source_context.filter(condition) -188 -189 condition = self.generate(step.condition) -190 projections = self.generate_tuple(step.projections) -191 -192 if not condition and not projections: -193 return source_context -194 -195 sink = self.table(step.projections if projections else source_context.columns) + 98 if source is None: + 99 context, table_iter = self.static() +100 elif source in context: +101 if not step.projections and not step.condition: +102 return self.context({step.name: context.tables[source]}) +103 table_iter = context.table_iter(source) +104 elif isinstance(step.source, exp.Table) and isinstance(step.source.this, exp.ReadCSV): +105 table_iter = self.scan_csv(step) +106 context = next(table_iter) +107 else: +108 context, table_iter = self.scan_table(step) +109 +110 return self.context({step.name: self._project_and_filter(context, step, table_iter)}) +111 +112 def _project_and_filter(self, context, step, table_iter): +113 sink = self.table(step.projections if step.projections else context.columns) +114 condition = self.generate(step.condition) +115 projections = self.generate_tuple(step.projections) +116 +117 for reader in table_iter: +118 if len(sink) >= step.limit: +119 break +120 +121 if condition and not context.eval(condition): +122 continue +123 +124 if projections: +125 sink.append(context.eval_tuple(projections)) +126 else: +127 sink.append(reader.row) +128 +129 return sink +130 +131 def static(self): +132 return self.context({}), [RowReader(())] +133 +134 def scan_table(self, step): +135 table = self.tables.find(step.source) +136 context = self.context({step.source.alias_or_name: table}) +137 return context, iter(table) +138 +139 def scan_csv(self, step): +140 alias = step.source.alias +141 source = step.source.this +142 +143 with csv_reader(source) as reader: +144 columns = next(reader) +145 table = Table(columns) +146 context = self.context({alias: table}) +147 yield context +148 types = [] +149 +150 for row in reader: +151 if not types: +152 for v in row: +153 try: +154 types.append(type(ast.literal_eval(v))) +155 except (ValueError, SyntaxError): +156 types.append(str) +157 context.set_row(tuple(t(v) for t, v in zip(types, row))) +158 yield context.table.reader +159 +160 def join(self, step, context): +161 source = step.name +162 +163 source_table = context.tables[source] +164 source_context = self.context({source: source_table}) +165 column_ranges = {source: range(0, len(source_table.columns))} +166 +167 for name, join in step.joins.items(): +168 table = context.tables[name] +169 start = max(r.stop for r in column_ranges.values()) +170 column_ranges[name] = range(start, len(table.columns) + start) +171 join_context = self.context({name: table}) +172 +173 if join.get("source_key"): +174 table = self.hash_join(join, source_context, join_context) +175 else: +176 table = self.nested_loop_join(join, source_context, join_context) +177 +178 source_context = self.context( +179 { +180 name: Table(table.columns, table.rows, column_range) +181 for name, column_range in column_ranges.items() +182 } +183 ) +184 condition = self.generate(join["condition"]) +185 if condition: +186 source_context.filter(condition) +187 +188 if not step.condition and not step.projections: +189 return source_context +190 +191 sink = self._project_and_filter( +192 source_context, +193 step, +194 (reader for reader, _ in iter(source_context)), +195 ) 196 -197 for reader, ctx in source_context: -198 if condition and not ctx.eval(condition): -199 continue -200 -201 if projections: -202 sink.append(ctx.eval_tuple(projections)) -203 else: -204 sink.append(reader.row) -205 -206 if len(sink) >= step.limit: -207 break -208 -209 if projections: -210 return self.context({step.name: sink}) -211 else: -212 return self.context( -213 { -214 name: Table(table.columns, sink.rows, table.column_range) -215 for name, table in source_context.tables.items() -216 } -217 ) -218 -219 def nested_loop_join(self, _join, source_context, join_context): -220 table = Table(source_context.columns + join_context.columns) +197 if step.projections: +198 return self.context({step.name: sink}) +199 else: +200 return self.context( +201 { +202 name: Table(table.columns, sink.rows, table.column_range) +203 for name, table in source_context.tables.items() +204 } +205 ) +206 +207 def nested_loop_join(self, _join, source_context, join_context): +208 table = Table(source_context.columns + join_context.columns) +209 +210 for reader_a, _ in source_context: +211 for reader_b, _ in join_context: +212 table.append(reader_a.row + reader_b.row) +213 +214 return table +215 +216 def hash_join(self, join, source_context, join_context): +217 source_key = self.generate_tuple(join["source_key"]) +218 join_key = self.generate_tuple(join["join_key"]) +219 left = join.get("side") == "LEFT" +220 right = join.get("side") == "RIGHT" 221 -222 for reader_a, _ in source_context: -223 for reader_b, _ in join_context: -224 table.append(reader_a.row + reader_b.row) -225 -226 return table -227 -228 def hash_join(self, join, source_context, join_context): -229 source_key = self.generate_tuple(join["source_key"]) -230 join_key = self.generate_tuple(join["join_key"]) -231 left = join.get("side") == "LEFT" -232 right = join.get("side") == "RIGHT" -233 -234 results = collections.defaultdict(lambda: ([], [])) -235 -236 for reader, ctx in source_context: -237 results[ctx.eval_tuple(source_key)][0].append(reader.row) -238 for reader, ctx in join_context: -239 results[ctx.eval_tuple(join_key)][1].append(reader.row) +222 results = collections.defaultdict(lambda: ([], [])) +223 +224 for reader, ctx in source_context: +225 results[ctx.eval_tuple(source_key)][0].append(reader.row) +226 for reader, ctx in join_context: +227 results[ctx.eval_tuple(join_key)][1].append(reader.row) +228 +229 table = Table(source_context.columns + join_context.columns) +230 nulls = [(None,) * len(join_context.columns if left else source_context.columns)] +231 +232 for a_group, b_group in results.values(): +233 if left: +234 b_group = b_group or nulls +235 elif right: +236 a_group = a_group or nulls +237 +238 for a_row, b_row in itertools.product(a_group, b_group): +239 table.append(a_row + b_row) 240 -241 table = Table(source_context.columns + join_context.columns) -242 nulls = [(None,) * len(join_context.columns if left else source_context.columns)] -243 -244 for a_group, b_group in results.values(): -245 if left: -246 b_group = b_group or nulls -247 elif right: -248 a_group = a_group or nulls -249 -250 for a_row, b_row in itertools.product(a_group, b_group): -251 table.append(a_row + b_row) -252 -253 return table -254 -255 def aggregate(self, step, context): -256 group_by = self.generate_tuple(step.group.values()) -257 aggregations = self.generate_tuple(step.aggregations) -258 operands = self.generate_tuple(step.operands) +241 return table +242 +243 def aggregate(self, step, context): +244 group_by = self.generate_tuple(step.group.values()) +245 aggregations = self.generate_tuple(step.aggregations) +246 operands = self.generate_tuple(step.operands) +247 +248 if operands: +249 operand_table = Table(self.table(step.operands).columns) +250 +251 for reader, ctx in context: +252 operand_table.append(ctx.eval_tuple(operands)) +253 +254 for i, (a, b) in enumerate(zip(context.table.rows, operand_table.rows)): +255 context.table.rows[i] = a + b +256 +257 width = len(context.columns) +258 context.add_columns(*operand_table.columns) 259 -260 if operands: -261 operand_table = Table(self.table(step.operands).columns) -262 -263 for reader, ctx in context: -264 operand_table.append(ctx.eval_tuple(operands)) +260 operand_table = Table( +261 context.columns, +262 context.table.rows, +263 range(width, width + len(operand_table.columns)), +264 ) 265 -266 for i, (a, b) in enumerate(zip(context.table.rows, operand_table.rows)): -267 context.table.rows[i] = a + b -268 -269 width = len(context.columns) -270 context.add_columns(*operand_table.columns) -271 -272 operand_table = Table( -273 context.columns, -274 context.table.rows, -275 range(width, width + len(operand_table.columns)), -276 ) -277 -278 context = self.context( -279 { -280 None: operand_table, -281 **context.tables, -282 } -283 ) -284 -285 context.sort(group_by) -286 -287 group = None -288 start = 0 -289 end = 1 -290 length = len(context.table) -291 table = self.table(list(step.group) + step.aggregations) -292 condition = self.generate(step.condition) -293 -294 def add_row(): -295 if not condition or context.eval(condition): -296 table.append(group + context.eval_tuple(aggregations)) -297 -298 if length: -299 for i in range(length): -300 context.set_index(i) -301 key = context.eval_tuple(group_by) -302 group = key if group is None else group -303 end += 1 -304 if key != group: -305 context.set_range(start, end - 2) -306 add_row() -307 group = key -308 start = end - 2 -309 if len(table.rows) >= step.limit: -310 break -311 if i == length - 1: -312 context.set_range(start, end - 1) -313 add_row() -314 elif step.limit > 0 and not group_by: -315 context.set_range(0, 0) -316 table.append(context.eval_tuple(aggregations)) -317 -318 context = self.context({step.name: table, **{name: table for name in context.tables}}) +266 context = self.context( +267 { +268 None: operand_table, +269 **context.tables, +270 } +271 ) +272 +273 context.sort(group_by) +274 +275 group = None +276 start = 0 +277 end = 1 +278 length = len(context.table) +279 table = self.table(list(step.group) + step.aggregations) +280 condition = self.generate(step.condition) +281 +282 def add_row(): +283 if not condition or context.eval(condition): +284 table.append(group + context.eval_tuple(aggregations)) +285 +286 if length: +287 for i in range(length): +288 context.set_index(i) +289 key = context.eval_tuple(group_by) +290 group = key if group is None else group +291 end += 1 +292 if key != group: +293 context.set_range(start, end - 2) +294 add_row() +295 group = key +296 start = end - 2 +297 if len(table.rows) >= step.limit: +298 break +299 if i == length - 1: +300 context.set_range(start, end - 1) +301 add_row() +302 elif step.limit > 0 and not group_by: +303 context.set_range(0, 0) +304 table.append(context.eval_tuple(aggregations)) +305 +306 context = self.context({step.name: table, **{name: table for name in context.tables}}) +307 +308 if step.projections: +309 return self.scan(step, context) +310 return context +311 +312 def sort(self, step, context): +313 projections = self.generate_tuple(step.projections) +314 projection_columns = [p.alias_or_name for p in step.projections] +315 all_columns = list(context.columns) + projection_columns +316 sink = self.table(all_columns) +317 for reader, ctx in context: +318 sink.append(reader.row + ctx.eval_tuple(projections)) 319 -320 if step.projections: -321 return self.scan(step, context) -322 return context -323 -324 def sort(self, step, context): -325 projections = self.generate_tuple(step.projections) -326 projection_columns = [p.alias_or_name for p in step.projections] -327 all_columns = list(context.columns) + projection_columns -328 sink = self.table(all_columns) -329 for reader, ctx in context: -330 sink.append(reader.row + ctx.eval_tuple(projections)) -331 -332 sort_ctx = self.context( -333 { -334 None: sink, -335 **{table: sink for table in context.tables}, -336 } -337 ) -338 sort_ctx.sort(self.generate_tuple(step.key)) -339 -340 if not math.isinf(step.limit): -341 sort_ctx.table.rows = sort_ctx.table.rows[0 : step.limit] +320 sort_ctx = self.context( +321 { +322 None: sink, +323 **{table: sink for table in context.tables}, +324 } +325 ) +326 sort_ctx.sort(self.generate_tuple(step.key)) +327 +328 if not math.isinf(step.limit): +329 sort_ctx.table.rows = sort_ctx.table.rows[0 : step.limit] +330 +331 output = Table( +332 projection_columns, +333 rows=[r[len(context.columns) : len(all_columns)] for r in sort_ctx.table.rows], +334 ) +335 return self.context({step.name: output}) +336 +337 def set_operation(self, step, context): +338 left = context.tables[step.left] +339 right = context.tables[step.right] +340 +341 sink = self.table(left.columns) 342 -343 output = Table( -344 projection_columns, -345 rows=[r[len(context.columns) : len(all_columns)] for r in sort_ctx.table.rows], -346 ) -347 return self.context({step.name: output}) -348 -349 def set_operation(self, step, context): -350 left = context.tables[step.left] -351 right = context.tables[step.right] -352 -353 sink = self.table(left.columns) -354 -355 if issubclass(step.op, exp.Intersect): -356 sink.rows = list(set(left.rows).intersection(set(right.rows))) -357 elif issubclass(step.op, exp.Except): -358 sink.rows = list(set(left.rows).difference(set(right.rows))) -359 elif issubclass(step.op, exp.Union) and step.distinct: -360 sink.rows = list(set(left.rows).union(set(right.rows))) -361 else: -362 sink.rows = left.rows + right.rows -363 -364 return self.context({step.name: sink}) +343 if issubclass(step.op, exp.Intersect): +344 sink.rows = list(set(left.rows).intersection(set(right.rows))) +345 elif issubclass(step.op, exp.Except): +346 sink.rows = list(set(left.rows).difference(set(right.rows))) +347 elif issubclass(step.op, exp.Union) and step.distinct: +348 sink.rows = list(set(left.rows).union(set(right.rows))) +349 else: +350 sink.rows = left.rows + right.rows +351 +352 return self.context({step.name: sink})
        @@ -1120,39 +1096,19 @@ 95 if source and isinstance(source, exp.Expression): 96 source = source.name or source.alias 97 - 98 condition = self.generate(step.condition) - 99 projections = self.generate_tuple(step.projections) -100 -101 if source is None: -102 context, table_iter = self.static() -103 elif source in context: -104 if not projections and not condition: -105 return self.context({step.name: context.tables[source]}) -106 table_iter = context.table_iter(source) -107 elif isinstance(step.source, exp.Table) and isinstance(step.source.this, exp.ReadCSV): -108 table_iter = self.scan_csv(step) -109 context = next(table_iter) -110 else: -111 context, table_iter = self.scan_table(step) -112 -113 if projections: -114 sink = self.table(step.projections) -115 else: -116 sink = self.table(context.columns) -117 -118 for reader in table_iter: -119 if len(sink) >= step.limit: -120 break -121 -122 if condition and not context.eval(condition): -123 continue -124 -125 if projections: -126 sink.append(context.eval_tuple(projections)) -127 else: -128 sink.append(reader.row) -129 -130 return self.context({step.name: sink}) + 98 if source is None: + 99 context, table_iter = self.static() +100 elif source in context: +101 if not step.projections and not step.condition: +102 return self.context({step.name: context.tables[source]}) +103 table_iter = context.table_iter(source) +104 elif isinstance(step.source, exp.Table) and isinstance(step.source.this, exp.ReadCSV): +105 table_iter = self.scan_csv(step) +106 context = next(table_iter) +107 else: +108 context, table_iter = self.scan_table(step) +109 +110 return self.context({step.name: self._project_and_filter(context, step, table_iter)}) @@ -1170,8 +1126,8 @@ -
        132    def static(self):
        -133        return self.context({}), [RowReader(())]
        +            
        131    def static(self):
        +132        return self.context({}), [RowReader(())]
         
        @@ -1189,10 +1145,10 @@
        -
        135    def scan_table(self, step):
        -136        table = self.tables.find(step.source)
        -137        context = self.context({step.source.alias_or_name: table})
        -138        return context, iter(table)
        +            
        134    def scan_table(self, step):
        +135        table = self.tables.find(step.source)
        +136        context = self.context({step.source.alias_or_name: table})
        +137        return context, iter(table)
         
        @@ -1210,26 +1166,26 @@
        -
        140    def scan_csv(self, step):
        -141        alias = step.source.alias
        -142        source = step.source.this
        -143
        -144        with csv_reader(source) as reader:
        -145            columns = next(reader)
        -146            table = Table(columns)
        -147            context = self.context({alias: table})
        -148            yield context
        -149            types = []
        -150
        -151            for row in reader:
        -152                if not types:
        -153                    for v in row:
        -154                        try:
        -155                            types.append(type(ast.literal_eval(v)))
        -156                        except (ValueError, SyntaxError):
        -157                            types.append(str)
        -158                context.set_row(tuple(t(v) for t, v in zip(types, row)))
        -159                yield context.table.reader
        +            
        139    def scan_csv(self, step):
        +140        alias = step.source.alias
        +141        source = step.source.this
        +142
        +143        with csv_reader(source) as reader:
        +144            columns = next(reader)
        +145            table = Table(columns)
        +146            context = self.context({alias: table})
        +147            yield context
        +148            types = []
        +149
        +150            for row in reader:
        +151                if not types:
        +152                    for v in row:
        +153                        try:
        +154                            types.append(type(ast.literal_eval(v)))
        +155                        except (ValueError, SyntaxError):
        +156                            types.append(str)
        +157                context.set_row(tuple(t(v) for t, v in zip(types, row)))
        +158                yield context.table.reader
         
        @@ -1247,63 +1203,52 @@
        -
        161    def join(self, step, context):
        -162        source = step.name
        -163
        -164        source_table = context.tables[source]
        -165        source_context = self.context({source: source_table})
        -166        column_ranges = {source: range(0, len(source_table.columns))}
        -167
        -168        for name, join in step.joins.items():
        -169            table = context.tables[name]
        -170            start = max(r.stop for r in column_ranges.values())
        -171            column_ranges[name] = range(start, len(table.columns) + start)
        -172            join_context = self.context({name: table})
        -173
        -174            if join.get("source_key"):
        -175                table = self.hash_join(join, source_context, join_context)
        -176            else:
        -177                table = self.nested_loop_join(join, source_context, join_context)
        -178
        -179            source_context = self.context(
        -180                {
        -181                    name: Table(table.columns, table.rows, column_range)
        -182                    for name, column_range in column_ranges.items()
        -183                }
        -184            )
        -185            condition = self.generate(join["condition"])
        -186            if condition:
        -187                source_context.filter(condition)
        -188
        -189        condition = self.generate(step.condition)
        -190        projections = self.generate_tuple(step.projections)
        -191
        -192        if not condition and not projections:
        -193            return source_context
        -194
        -195        sink = self.table(step.projections if projections else source_context.columns)
        +            
        160    def join(self, step, context):
        +161        source = step.name
        +162
        +163        source_table = context.tables[source]
        +164        source_context = self.context({source: source_table})
        +165        column_ranges = {source: range(0, len(source_table.columns))}
        +166
        +167        for name, join in step.joins.items():
        +168            table = context.tables[name]
        +169            start = max(r.stop for r in column_ranges.values())
        +170            column_ranges[name] = range(start, len(table.columns) + start)
        +171            join_context = self.context({name: table})
        +172
        +173            if join.get("source_key"):
        +174                table = self.hash_join(join, source_context, join_context)
        +175            else:
        +176                table = self.nested_loop_join(join, source_context, join_context)
        +177
        +178            source_context = self.context(
        +179                {
        +180                    name: Table(table.columns, table.rows, column_range)
        +181                    for name, column_range in column_ranges.items()
        +182                }
        +183            )
        +184            condition = self.generate(join["condition"])
        +185            if condition:
        +186                source_context.filter(condition)
        +187
        +188        if not step.condition and not step.projections:
        +189            return source_context
        +190
        +191        sink = self._project_and_filter(
        +192            source_context,
        +193            step,
        +194            (reader for reader, _ in iter(source_context)),
        +195        )
         196
        -197        for reader, ctx in source_context:
        -198            if condition and not ctx.eval(condition):
        -199                continue
        -200
        -201            if projections:
        -202                sink.append(ctx.eval_tuple(projections))
        -203            else:
        -204                sink.append(reader.row)
        -205
        -206            if len(sink) >= step.limit:
        -207                break
        -208
        -209        if projections:
        -210            return self.context({step.name: sink})
        -211        else:
        -212            return self.context(
        -213                {
        -214                    name: Table(table.columns, sink.rows, table.column_range)
        -215                    for name, table in source_context.tables.items()
        -216                }
        -217            )
        +197        if step.projections:
        +198            return self.context({step.name: sink})
        +199        else:
        +200            return self.context(
        +201                {
        +202                    name: Table(table.columns, sink.rows, table.column_range)
        +203                    for name, table in source_context.tables.items()
        +204                }
        +205            )
         
        @@ -1321,14 +1266,14 @@
        -
        219    def nested_loop_join(self, _join, source_context, join_context):
        -220        table = Table(source_context.columns + join_context.columns)
        -221
        -222        for reader_a, _ in source_context:
        -223            for reader_b, _ in join_context:
        -224                table.append(reader_a.row + reader_b.row)
        -225
        -226        return table
        +            
        207    def nested_loop_join(self, _join, source_context, join_context):
        +208        table = Table(source_context.columns + join_context.columns)
        +209
        +210        for reader_a, _ in source_context:
        +211            for reader_b, _ in join_context:
        +212                table.append(reader_a.row + reader_b.row)
        +213
        +214        return table
         
        @@ -1346,32 +1291,32 @@
        -
        228    def hash_join(self, join, source_context, join_context):
        -229        source_key = self.generate_tuple(join["source_key"])
        -230        join_key = self.generate_tuple(join["join_key"])
        -231        left = join.get("side") == "LEFT"
        -232        right = join.get("side") == "RIGHT"
        -233
        -234        results = collections.defaultdict(lambda: ([], []))
        -235
        -236        for reader, ctx in source_context:
        -237            results[ctx.eval_tuple(source_key)][0].append(reader.row)
        -238        for reader, ctx in join_context:
        -239            results[ctx.eval_tuple(join_key)][1].append(reader.row)
        +            
        216    def hash_join(self, join, source_context, join_context):
        +217        source_key = self.generate_tuple(join["source_key"])
        +218        join_key = self.generate_tuple(join["join_key"])
        +219        left = join.get("side") == "LEFT"
        +220        right = join.get("side") == "RIGHT"
        +221
        +222        results = collections.defaultdict(lambda: ([], []))
        +223
        +224        for reader, ctx in source_context:
        +225            results[ctx.eval_tuple(source_key)][0].append(reader.row)
        +226        for reader, ctx in join_context:
        +227            results[ctx.eval_tuple(join_key)][1].append(reader.row)
        +228
        +229        table = Table(source_context.columns + join_context.columns)
        +230        nulls = [(None,) * len(join_context.columns if left else source_context.columns)]
        +231
        +232        for a_group, b_group in results.values():
        +233            if left:
        +234                b_group = b_group or nulls
        +235            elif right:
        +236                a_group = a_group or nulls
        +237
        +238            for a_row, b_row in itertools.product(a_group, b_group):
        +239                table.append(a_row + b_row)
         240
        -241        table = Table(source_context.columns + join_context.columns)
        -242        nulls = [(None,) * len(join_context.columns if left else source_context.columns)]
        -243
        -244        for a_group, b_group in results.values():
        -245            if left:
        -246                b_group = b_group or nulls
        -247            elif right:
        -248                a_group = a_group or nulls
        -249
        -250            for a_row, b_row in itertools.product(a_group, b_group):
        -251                table.append(a_row + b_row)
        -252
        -253        return table
        +241        return table
         
        @@ -1389,74 +1334,74 @@
        -
        255    def aggregate(self, step, context):
        -256        group_by = self.generate_tuple(step.group.values())
        -257        aggregations = self.generate_tuple(step.aggregations)
        -258        operands = self.generate_tuple(step.operands)
        +            
        243    def aggregate(self, step, context):
        +244        group_by = self.generate_tuple(step.group.values())
        +245        aggregations = self.generate_tuple(step.aggregations)
        +246        operands = self.generate_tuple(step.operands)
        +247
        +248        if operands:
        +249            operand_table = Table(self.table(step.operands).columns)
        +250
        +251            for reader, ctx in context:
        +252                operand_table.append(ctx.eval_tuple(operands))
        +253
        +254            for i, (a, b) in enumerate(zip(context.table.rows, operand_table.rows)):
        +255                context.table.rows[i] = a + b
        +256
        +257            width = len(context.columns)
        +258            context.add_columns(*operand_table.columns)
         259
        -260        if operands:
        -261            operand_table = Table(self.table(step.operands).columns)
        -262
        -263            for reader, ctx in context:
        -264                operand_table.append(ctx.eval_tuple(operands))
        +260            operand_table = Table(
        +261                context.columns,
        +262                context.table.rows,
        +263                range(width, width + len(operand_table.columns)),
        +264            )
         265
        -266            for i, (a, b) in enumerate(zip(context.table.rows, operand_table.rows)):
        -267                context.table.rows[i] = a + b
        -268
        -269            width = len(context.columns)
        -270            context.add_columns(*operand_table.columns)
        -271
        -272            operand_table = Table(
        -273                context.columns,
        -274                context.table.rows,
        -275                range(width, width + len(operand_table.columns)),
        -276            )
        -277
        -278            context = self.context(
        -279                {
        -280                    None: operand_table,
        -281                    **context.tables,
        -282                }
        -283            )
        -284
        -285        context.sort(group_by)
        -286
        -287        group = None
        -288        start = 0
        -289        end = 1
        -290        length = len(context.table)
        -291        table = self.table(list(step.group) + step.aggregations)
        -292        condition = self.generate(step.condition)
        -293
        -294        def add_row():
        -295            if not condition or context.eval(condition):
        -296                table.append(group + context.eval_tuple(aggregations))
        -297
        -298        if length:
        -299            for i in range(length):
        -300                context.set_index(i)
        -301                key = context.eval_tuple(group_by)
        -302                group = key if group is None else group
        -303                end += 1
        -304                if key != group:
        -305                    context.set_range(start, end - 2)
        -306                    add_row()
        -307                    group = key
        -308                    start = end - 2
        -309                if len(table.rows) >= step.limit:
        -310                    break
        -311                if i == length - 1:
        -312                    context.set_range(start, end - 1)
        -313                    add_row()
        -314        elif step.limit > 0 and not group_by:
        -315            context.set_range(0, 0)
        -316            table.append(context.eval_tuple(aggregations))
        -317
        -318        context = self.context({step.name: table, **{name: table for name in context.tables}})
        -319
        -320        if step.projections:
        -321            return self.scan(step, context)
        -322        return context
        +266            context = self.context(
        +267                {
        +268                    None: operand_table,
        +269                    **context.tables,
        +270                }
        +271            )
        +272
        +273        context.sort(group_by)
        +274
        +275        group = None
        +276        start = 0
        +277        end = 1
        +278        length = len(context.table)
        +279        table = self.table(list(step.group) + step.aggregations)
        +280        condition = self.generate(step.condition)
        +281
        +282        def add_row():
        +283            if not condition or context.eval(condition):
        +284                table.append(group + context.eval_tuple(aggregations))
        +285
        +286        if length:
        +287            for i in range(length):
        +288                context.set_index(i)
        +289                key = context.eval_tuple(group_by)
        +290                group = key if group is None else group
        +291                end += 1
        +292                if key != group:
        +293                    context.set_range(start, end - 2)
        +294                    add_row()
        +295                    group = key
        +296                    start = end - 2
        +297                if len(table.rows) >= step.limit:
        +298                    break
        +299                if i == length - 1:
        +300                    context.set_range(start, end - 1)
        +301                    add_row()
        +302        elif step.limit > 0 and not group_by:
        +303            context.set_range(0, 0)
        +304            table.append(context.eval_tuple(aggregations))
        +305
        +306        context = self.context({step.name: table, **{name: table for name in context.tables}})
        +307
        +308        if step.projections:
        +309            return self.scan(step, context)
        +310        return context
         
        @@ -1474,30 +1419,30 @@
        -
        324    def sort(self, step, context):
        -325        projections = self.generate_tuple(step.projections)
        -326        projection_columns = [p.alias_or_name for p in step.projections]
        -327        all_columns = list(context.columns) + projection_columns
        -328        sink = self.table(all_columns)
        -329        for reader, ctx in context:
        -330            sink.append(reader.row + ctx.eval_tuple(projections))
        -331
        -332        sort_ctx = self.context(
        -333            {
        -334                None: sink,
        -335                **{table: sink for table in context.tables},
        -336            }
        -337        )
        -338        sort_ctx.sort(self.generate_tuple(step.key))
        -339
        -340        if not math.isinf(step.limit):
        -341            sort_ctx.table.rows = sort_ctx.table.rows[0 : step.limit]
        -342
        -343        output = Table(
        -344            projection_columns,
        -345            rows=[r[len(context.columns) : len(all_columns)] for r in sort_ctx.table.rows],
        -346        )
        -347        return self.context({step.name: output})
        +            
        312    def sort(self, step, context):
        +313        projections = self.generate_tuple(step.projections)
        +314        projection_columns = [p.alias_or_name for p in step.projections]
        +315        all_columns = list(context.columns) + projection_columns
        +316        sink = self.table(all_columns)
        +317        for reader, ctx in context:
        +318            sink.append(reader.row + ctx.eval_tuple(projections))
        +319
        +320        sort_ctx = self.context(
        +321            {
        +322                None: sink,
        +323                **{table: sink for table in context.tables},
        +324            }
        +325        )
        +326        sort_ctx.sort(self.generate_tuple(step.key))
        +327
        +328        if not math.isinf(step.limit):
        +329            sort_ctx.table.rows = sort_ctx.table.rows[0 : step.limit]
        +330
        +331        output = Table(
        +332            projection_columns,
        +333            rows=[r[len(context.columns) : len(all_columns)] for r in sort_ctx.table.rows],
        +334        )
        +335        return self.context({step.name: output})
         
        @@ -1515,22 +1460,22 @@
        -
        349    def set_operation(self, step, context):
        -350        left = context.tables[step.left]
        -351        right = context.tables[step.right]
        -352
        -353        sink = self.table(left.columns)
        -354
        -355        if issubclass(step.op, exp.Intersect):
        -356            sink.rows = list(set(left.rows).intersection(set(right.rows)))
        -357        elif issubclass(step.op, exp.Except):
        -358            sink.rows = list(set(left.rows).difference(set(right.rows)))
        -359        elif issubclass(step.op, exp.Union) and step.distinct:
        -360            sink.rows = list(set(left.rows).union(set(right.rows)))
        -361        else:
        -362            sink.rows = left.rows + right.rows
        -363
        -364        return self.context({step.name: sink})
        +            
        337    def set_operation(self, step, context):
        +338        left = context.tables[step.left]
        +339        right = context.tables[step.right]
        +340
        +341        sink = self.table(left.columns)
        +342
        +343        if issubclass(step.op, exp.Intersect):
        +344            sink.rows = list(set(left.rows).intersection(set(right.rows)))
        +345        elif issubclass(step.op, exp.Except):
        +346            sink.rows = list(set(left.rows).difference(set(right.rows)))
        +347        elif issubclass(step.op, exp.Union) and step.distinct:
        +348            sink.rows = list(set(left.rows).union(set(right.rows)))
        +349        else:
        +350            sink.rows = left.rows + right.rows
        +351
        +352        return self.context({step.name: sink})
         
        @@ -1549,33 +1494,33 @@
        -
        410class Python(Dialect):
        -411    class Tokenizer(tokens.Tokenizer):
        -412        STRING_ESCAPES = ["\\"]
        -413
        -414    class Generator(generator.Generator):
        -415        TRANSFORMS = {
        -416            **{klass: _rename for klass in subclasses(exp.__name__, exp.Binary)},
        -417            **{klass: _rename for klass in exp.ALL_FUNCTIONS},
        -418            exp.Case: _case_sql,
        -419            exp.Alias: lambda self, e: self.sql(e.this),
        -420            exp.Array: inline_array_sql,
        -421            exp.And: lambda self, e: self.binary(e, "and"),
        -422            exp.Between: _rename,
        -423            exp.Boolean: lambda self, e: "True" if e.this else "False",
        -424            exp.Cast: lambda self, e: f"CAST({self.sql(e.this)}, exp.DataType.Type.{e.args['to']})",
        -425            exp.Column: lambda self, e: f"scope[{self.sql(e, 'table') or None}][{self.sql(e.this)}]",
        -426            exp.Distinct: lambda self, e: f"set({self.sql(e, 'this')})",
        -427            exp.Extract: lambda self, e: f"EXTRACT('{e.name.lower()}', {self.sql(e, 'expression')})",
        -428            exp.In: lambda self, e: f"{self.sql(e, 'this')} in ({self.expressions(e, flat=True)})",
        -429            exp.Is: lambda self, e: self.binary(e, "is"),
        -430            exp.Lambda: _lambda_sql,
        -431            exp.Not: lambda self, e: f"not {self.sql(e.this)}",
        -432            exp.Null: lambda *_: "None",
        -433            exp.Or: lambda self, e: self.binary(e, "or"),
        -434            exp.Ordered: _ordered_py,
        -435            exp.Star: lambda *_: "1",
        -436        }
        +            
        398class Python(Dialect):
        +399    class Tokenizer(tokens.Tokenizer):
        +400        STRING_ESCAPES = ["\\"]
        +401
        +402    class Generator(generator.Generator):
        +403        TRANSFORMS = {
        +404            **{klass: _rename for klass in subclasses(exp.__name__, exp.Binary)},
        +405            **{klass: _rename for klass in exp.ALL_FUNCTIONS},
        +406            exp.Case: _case_sql,
        +407            exp.Alias: lambda self, e: self.sql(e.this),
        +408            exp.Array: inline_array_sql,
        +409            exp.And: lambda self, e: self.binary(e, "and"),
        +410            exp.Between: _rename,
        +411            exp.Boolean: lambda self, e: "True" if e.this else "False",
        +412            exp.Cast: lambda self, e: f"CAST({self.sql(e.this)}, exp.DataType.Type.{e.args['to']})",
        +413            exp.Column: lambda self, e: f"scope[{self.sql(e, 'table') or None}][{self.sql(e.this)}]",
        +414            exp.Distinct: lambda self, e: f"set({self.sql(e, 'this')})",
        +415            exp.Extract: lambda self, e: f"EXTRACT('{e.name.lower()}', {self.sql(e, 'expression')})",
        +416            exp.In: lambda self, e: f"{self.sql(e, 'this')} in ({self.expressions(e, flat=True)})",
        +417            exp.Is: lambda self, e: self.binary(e, "is"),
        +418            exp.Lambda: _lambda_sql,
        +419            exp.Not: lambda self, e: f"not {self.sql(e.this)}",
        +420            exp.Null: lambda *_: "None",
        +421            exp.Or: lambda self, e: self.binary(e, "or"),
        +422            exp.Ordered: _ordered_py,
        +423            exp.Star: lambda *_: "1",
        +424        }
         
        @@ -1610,8 +1555,8 @@
        -
        411    class Tokenizer(tokens.Tokenizer):
        -412        STRING_ESCAPES = ["\\"]
        +            
        399    class Tokenizer(tokens.Tokenizer):
        +400        STRING_ESCAPES = ["\\"]
         
        @@ -1639,29 +1584,29 @@
        -
        414    class Generator(generator.Generator):
        -415        TRANSFORMS = {
        -416            **{klass: _rename for klass in subclasses(exp.__name__, exp.Binary)},
        -417            **{klass: _rename for klass in exp.ALL_FUNCTIONS},
        -418            exp.Case: _case_sql,
        -419            exp.Alias: lambda self, e: self.sql(e.this),
        -420            exp.Array: inline_array_sql,
        -421            exp.And: lambda self, e: self.binary(e, "and"),
        -422            exp.Between: _rename,
        -423            exp.Boolean: lambda self, e: "True" if e.this else "False",
        -424            exp.Cast: lambda self, e: f"CAST({self.sql(e.this)}, exp.DataType.Type.{e.args['to']})",
        -425            exp.Column: lambda self, e: f"scope[{self.sql(e, 'table') or None}][{self.sql(e.this)}]",
        -426            exp.Distinct: lambda self, e: f"set({self.sql(e, 'this')})",
        -427            exp.Extract: lambda self, e: f"EXTRACT('{e.name.lower()}', {self.sql(e, 'expression')})",
        -428            exp.In: lambda self, e: f"{self.sql(e, 'this')} in ({self.expressions(e, flat=True)})",
        -429            exp.Is: lambda self, e: self.binary(e, "is"),
        -430            exp.Lambda: _lambda_sql,
        -431            exp.Not: lambda self, e: f"not {self.sql(e.this)}",
        -432            exp.Null: lambda *_: "None",
        -433            exp.Or: lambda self, e: self.binary(e, "or"),
        -434            exp.Ordered: _ordered_py,
        -435            exp.Star: lambda *_: "1",
        -436        }
        +            
        402    class Generator(generator.Generator):
        +403        TRANSFORMS = {
        +404            **{klass: _rename for klass in subclasses(exp.__name__, exp.Binary)},
        +405            **{klass: _rename for klass in exp.ALL_FUNCTIONS},
        +406            exp.Case: _case_sql,
        +407            exp.Alias: lambda self, e: self.sql(e.this),
        +408            exp.Array: inline_array_sql,
        +409            exp.And: lambda self, e: self.binary(e, "and"),
        +410            exp.Between: _rename,
        +411            exp.Boolean: lambda self, e: "True" if e.this else "False",
        +412            exp.Cast: lambda self, e: f"CAST({self.sql(e.this)}, exp.DataType.Type.{e.args['to']})",
        +413            exp.Column: lambda self, e: f"scope[{self.sql(e, 'table') or None}][{self.sql(e.this)}]",
        +414            exp.Distinct: lambda self, e: f"set({self.sql(e, 'this')})",
        +415            exp.Extract: lambda self, e: f"EXTRACT('{e.name.lower()}', {self.sql(e, 'expression')})",
        +416            exp.In: lambda self, e: f"{self.sql(e, 'this')} in ({self.expressions(e, flat=True)})",
        +417            exp.Is: lambda self, e: self.binary(e, "is"),
        +418            exp.Lambda: _lambda_sql,
        +419            exp.Not: lambda self, e: f"not {self.sql(e.this)}",
        +420            exp.Null: lambda *_: "None",
        +421            exp.Or: lambda self, e: self.binary(e, "or"),
        +422            exp.Ordered: _ordered_py,
        +423            exp.Star: lambda *_: "1",
        +424        }
         
        @@ -1801,6 +1746,7 @@ Default: True
        offset_sql
        setitem_sql
        set_sql
        +
        pragma_sql
        lock_sql
        literal_sql
        loaddata_sql
        @@ -1845,6 +1791,8 @@ Default: True
        primarykey_sql
        unique_sql
        if_sql
        +
        jsonkeyvalue_sql
        +
        jsonobject_sql
        in_sql
        in_unnest_op
        interval_sql
        diff --git a/docs/sqlglot/executor/table.html b/docs/sqlglot/executor/table.html index cbb3285..69a8921 100644 --- a/docs/sqlglot/executor/table.html +++ b/docs/sqlglot/executor/table.html @@ -3,7 +3,7 @@ - + sqlglot.executor.table API documentation @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • Table
              diff --git a/docs/sqlglot/expressions.html b/docs/sqlglot/expressions.html index 0df7852..de5a274 100644 --- a/docs/sqlglot/expressions.html +++ b/docs/sqlglot/expressions.html @@ -3,7 +3,7 @@ - + sqlglot.expressions API documentation @@ -26,15 +26,15 @@ -

              Contents

              -
                +

                Contents

                + -

                API Documentation

                -
                  +

                  API Documentation

                  +
                  • Expression
                  • @@ -1607,6 +1625,9 @@
                  • Dot
                  • @@ -2287,6 +2308,12 @@
                    + +
                  • + ExponentialTimeDecayedAvg +
                      +
                    +
                  • Floor @@ -2305,12 +2332,24 @@
                    +
                  • +
                  • + GroupUniqArray +
                      +
                    +
                  • Hex
                    +
                  • +
                  • + Histogram +
                      +
                    +
                  • If @@ -2329,6 +2368,18 @@
                    +
                  • +
                  • + JSONKeyValue +
                      +
                    + +
                  • +
                  • + JSONObject +
                      +
                    +
                  • JSONBContains @@ -2983,2211 +3034,2211 @@ SQL expressions, such as sqlglot.expressions.select< 26 AutoName, 27 camel_to_snake_case, 28 ensure_collection, - 29 seq_get, - 30 split_num_words, - 31 subclasses, - 32) - 33from sqlglot.tokens import Token - 34 - 35if t.TYPE_CHECKING: - 36 from sqlglot.dialects.dialect import DialectType - 37 - 38E = t.TypeVar("E", bound="Expression") - 39 + 29 ensure_list, + 30 seq_get, + 31 split_num_words, + 32 subclasses, + 33) + 34from sqlglot.tokens import Token + 35 + 36if t.TYPE_CHECKING: + 37 from sqlglot.dialects.dialect import DialectType + 38 + 39E = t.TypeVar("E", bound="Expression") 40 - 41class _Expression(type): - 42 def __new__(cls, clsname, bases, attrs): - 43 klass = super().__new__(cls, clsname, bases, attrs) - 44 - 45 # When an Expression class is created, its key is automatically set to be - 46 # the lowercase version of the class' name. - 47 klass.key = clsname.lower() - 48 - 49 # This is so that docstrings are not inherited in pdoc - 50 klass.__doc__ = klass.__doc__ or "" - 51 - 52 return klass - 53 + 41 + 42class _Expression(type): + 43 def __new__(cls, clsname, bases, attrs): + 44 klass = super().__new__(cls, clsname, bases, attrs) + 45 + 46 # When an Expression class is created, its key is automatically set to be + 47 # the lowercase version of the class' name. + 48 klass.key = clsname.lower() + 49 + 50 # This is so that docstrings are not inherited in pdoc + 51 klass.__doc__ = klass.__doc__ or "" + 52 + 53 return klass 54 - 55class Expression(metaclass=_Expression): - 56 """ - 57 The base class for all expressions in a syntax tree. Each Expression encapsulates any necessary - 58 context, such as its child expressions, their names (arg keys), and whether a given child expression - 59 is optional or not. - 60 - 61 Attributes: - 62 key: a unique key for each class in the Expression hierarchy. This is useful for hashing - 63 and representing expressions as strings. - 64 arg_types: determines what arguments (child nodes) are supported by an expression. It - 65 maps arg keys to booleans that indicate whether the corresponding args are optional. - 66 - 67 Example: - 68 >>> class Foo(Expression): - 69 ... arg_types = {"this": True, "expression": False} - 70 - 71 The above definition informs us that Foo is an Expression that requires an argument called - 72 "this" and may also optionally receive an argument called "expression". - 73 - 74 Args: - 75 args: a mapping used for retrieving the arguments of an expression, given their arg keys. - 76 parent: a reference to the parent expression (or None, in case of root expressions). - 77 arg_key: the arg key an expression is associated with, i.e. the name its parent expression - 78 uses to refer to it. - 79 comments: a list of comments that are associated with a given expression. This is used in - 80 order to preserve comments when transpiling SQL code. - 81 _type: the `sqlglot.expressions.DataType` type of an expression. This is inferred by the - 82 optimizer, in order to enable some transformations that require type information. - 83 """ - 84 - 85 key = "expression" - 86 arg_types = {"this": True} - 87 __slots__ = ("args", "parent", "arg_key", "comments", "_type", "_meta") - 88 - 89 def __init__(self, **args: t.Any): - 90 self.args: t.Dict[str, t.Any] = args - 91 self.parent: t.Optional[Expression] = None - 92 self.arg_key: t.Optional[str] = None - 93 self.comments: t.Optional[t.List[str]] = None - 94 self._type: t.Optional[DataType] = None - 95 self._meta: t.Optional[t.Dict[str, t.Any]] = None - 96 - 97 for arg_key, value in self.args.items(): - 98 self._set_parent(arg_key, value) - 99 - 100 def __eq__(self, other) -> bool: - 101 return type(self) is type(other) and _norm_args(self) == _norm_args(other) - 102 - 103 def __hash__(self) -> int: - 104 return hash( - 105 ( - 106 self.key, - 107 tuple( - 108 (k, tuple(v) if isinstance(v, list) else v) for k, v in _norm_args(self).items() - 109 ), - 110 ) - 111 ) - 112 - 113 @property - 114 def this(self): - 115 """ - 116 Retrieves the argument with key "this". - 117 """ - 118 return self.args.get("this") + 55 + 56class Expression(metaclass=_Expression): + 57 """ + 58 The base class for all expressions in a syntax tree. Each Expression encapsulates any necessary + 59 context, such as its child expressions, their names (arg keys), and whether a given child expression + 60 is optional or not. + 61 + 62 Attributes: + 63 key: a unique key for each class in the Expression hierarchy. This is useful for hashing + 64 and representing expressions as strings. + 65 arg_types: determines what arguments (child nodes) are supported by an expression. It + 66 maps arg keys to booleans that indicate whether the corresponding args are optional. + 67 + 68 Example: + 69 >>> class Foo(Expression): + 70 ... arg_types = {"this": True, "expression": False} + 71 + 72 The above definition informs us that Foo is an Expression that requires an argument called + 73 "this" and may also optionally receive an argument called "expression". + 74 + 75 Args: + 76 args: a mapping used for retrieving the arguments of an expression, given their arg keys. + 77 parent: a reference to the parent expression (or None, in case of root expressions). + 78 arg_key: the arg key an expression is associated with, i.e. the name its parent expression + 79 uses to refer to it. + 80 comments: a list of comments that are associated with a given expression. This is used in + 81 order to preserve comments when transpiling SQL code. + 82 _type: the `sqlglot.expressions.DataType` type of an expression. This is inferred by the + 83 optimizer, in order to enable some transformations that require type information. + 84 """ + 85 + 86 key = "expression" + 87 arg_types = {"this": True} + 88 __slots__ = ("args", "parent", "arg_key", "comments", "_type", "_meta", "_hash") + 89 + 90 def __init__(self, **args: t.Any): + 91 self.args: t.Dict[str, t.Any] = args + 92 self.parent: t.Optional[Expression] = None + 93 self.arg_key: t.Optional[str] = None + 94 self.comments: t.Optional[t.List[str]] = None + 95 self._type: t.Optional[DataType] = None + 96 self._meta: t.Optional[t.Dict[str, t.Any]] = None + 97 self._hash: t.Optional[int] = None + 98 + 99 for arg_key, value in self.args.items(): + 100 self._set_parent(arg_key, value) + 101 + 102 def __eq__(self, other) -> bool: + 103 return type(self) is type(other) and hash(self) == hash(other) + 104 + 105 @property + 106 def hashable_args(self) -> t.Any: + 107 args = (self.args.get(k) for k in self.arg_types) + 108 + 109 return tuple( + 110 (tuple(_norm_arg(a) for a in arg) if arg else None) + 111 if type(arg) is list + 112 else (_norm_arg(arg) if arg is not None and arg is not False else None) + 113 for arg in args + 114 ) + 115 + 116 def __hash__(self) -> int: + 117 if self._hash is not None: + 118 return self._hash 119 - 120 @property - 121 def expression(self): - 122 """ - 123 Retrieves the argument with key "expression". - 124 """ - 125 return self.args.get("expression") - 126 - 127 @property - 128 def expressions(self): - 129 """ - 130 Retrieves the argument with key "expressions". - 131 """ - 132 return self.args.get("expressions") or [] - 133 - 134 def text(self, key) -> str: - 135 """ - 136 Returns a textual representation of the argument corresponding to "key". This can only be used - 137 for args that are strings or leaf Expression instances, such as identifiers and literals. - 138 """ - 139 field = self.args.get(key) - 140 if isinstance(field, str): - 141 return field - 142 if isinstance(field, (Identifier, Literal, Var)): - 143 return field.this - 144 if isinstance(field, (Star, Null)): - 145 return field.name - 146 return "" - 147 - 148 @property - 149 def is_string(self) -> bool: - 150 """ - 151 Checks whether a Literal expression is a string. - 152 """ - 153 return isinstance(self, Literal) and self.args["is_string"] - 154 - 155 @property - 156 def is_number(self) -> bool: - 157 """ - 158 Checks whether a Literal expression is a number. - 159 """ - 160 return isinstance(self, Literal) and not self.args["is_string"] - 161 - 162 @property - 163 def is_int(self) -> bool: - 164 """ - 165 Checks whether a Literal expression is an integer. - 166 """ - 167 if self.is_number: - 168 try: - 169 int(self.name) - 170 return True - 171 except ValueError: - 172 pass - 173 return False - 174 - 175 @property - 176 def is_star(self) -> bool: - 177 """Checks whether an expression is a star.""" - 178 return isinstance(self, Star) or (isinstance(self, Column) and isinstance(self.this, Star)) - 179 - 180 @property - 181 def alias(self) -> str: - 182 """ - 183 Returns the alias of the expression, or an empty string if it's not aliased. - 184 """ - 185 if isinstance(self.args.get("alias"), TableAlias): - 186 return self.args["alias"].name - 187 return self.text("alias") + 120 return hash((self.__class__, self.hashable_args)) + 121 + 122 @property + 123 def this(self): + 124 """ + 125 Retrieves the argument with key "this". + 126 """ + 127 return self.args.get("this") + 128 + 129 @property + 130 def expression(self): + 131 """ + 132 Retrieves the argument with key "expression". + 133 """ + 134 return self.args.get("expression") + 135 + 136 @property + 137 def expressions(self): + 138 """ + 139 Retrieves the argument with key "expressions". + 140 """ + 141 return self.args.get("expressions") or [] + 142 + 143 def text(self, key) -> str: + 144 """ + 145 Returns a textual representation of the argument corresponding to "key". This can only be used + 146 for args that are strings or leaf Expression instances, such as identifiers and literals. + 147 """ + 148 field = self.args.get(key) + 149 if isinstance(field, str): + 150 return field + 151 if isinstance(field, (Identifier, Literal, Var)): + 152 return field.this + 153 if isinstance(field, (Star, Null)): + 154 return field.name + 155 return "" + 156 + 157 @property + 158 def is_string(self) -> bool: + 159 """ + 160 Checks whether a Literal expression is a string. + 161 """ + 162 return isinstance(self, Literal) and self.args["is_string"] + 163 + 164 @property + 165 def is_number(self) -> bool: + 166 """ + 167 Checks whether a Literal expression is a number. + 168 """ + 169 return isinstance(self, Literal) and not self.args["is_string"] + 170 + 171 @property + 172 def is_int(self) -> bool: + 173 """ + 174 Checks whether a Literal expression is an integer. + 175 """ + 176 if self.is_number: + 177 try: + 178 int(self.name) + 179 return True + 180 except ValueError: + 181 pass + 182 return False + 183 + 184 @property + 185 def is_star(self) -> bool: + 186 """Checks whether an expression is a star.""" + 187 return isinstance(self, Star) or (isinstance(self, Column) and isinstance(self.this, Star)) 188 189 @property - 190 def name(self) -> str: - 191 return self.text("this") - 192 - 193 @property - 194 def alias_or_name(self): - 195 return self.alias or self.name - 196 - 197 @property - 198 def output_name(self): - 199 """ - 200 Name of the output column if this expression is a selection. + 190 def alias(self) -> str: + 191 """ + 192 Returns the alias of the expression, or an empty string if it's not aliased. + 193 """ + 194 if isinstance(self.args.get("alias"), TableAlias): + 195 return self.args["alias"].name + 196 return self.text("alias") + 197 + 198 @property + 199 def name(self) -> str: + 200 return self.text("this") 201 - 202 If the Expression has no output name, an empty string is returned. - 203 - 204 Example: - 205 >>> from sqlglot import parse_one - 206 >>> parse_one("SELECT a").expressions[0].output_name - 207 'a' - 208 >>> parse_one("SELECT b AS c").expressions[0].output_name - 209 'c' - 210 >>> parse_one("SELECT 1 + 2").expressions[0].output_name - 211 '' - 212 """ - 213 return "" - 214 - 215 @property - 216 def type(self) -> t.Optional[DataType]: - 217 return self._type - 218 - 219 @type.setter - 220 def type(self, dtype: t.Optional[DataType | DataType.Type | str]) -> None: - 221 if dtype and not isinstance(dtype, DataType): - 222 dtype = DataType.build(dtype) - 223 self._type = dtype # type: ignore - 224 - 225 @property - 226 def meta(self) -> t.Dict[str, t.Any]: - 227 if self._meta is None: - 228 self._meta = {} - 229 return self._meta - 230 - 231 def __deepcopy__(self, memo): - 232 copy = self.__class__(**deepcopy(self.args)) - 233 if self.comments is not None: - 234 copy.comments = deepcopy(self.comments) - 235 - 236 if self._type is not None: - 237 copy._type = self._type.copy() - 238 - 239 if self._meta is not None: - 240 copy._meta = deepcopy(self._meta) - 241 - 242 return copy - 243 - 244 def copy(self): - 245 """ - 246 Returns a deep copy of the expression. - 247 """ - 248 new = deepcopy(self) - 249 new.parent = self.parent - 250 for item, parent, _ in new.bfs(): - 251 if isinstance(item, Expression) and parent: - 252 item.parent = parent - 253 return new - 254 - 255 def append(self, arg_key, value): - 256 """ - 257 Appends value to arg_key if it's a list or sets it as a new list. - 258 - 259 Args: - 260 arg_key (str): name of the list expression arg - 261 value (Any): value to append to the list - 262 """ - 263 if not isinstance(self.args.get(arg_key), list): - 264 self.args[arg_key] = [] - 265 self.args[arg_key].append(value) - 266 self._set_parent(arg_key, value) - 267 - 268 def set(self, arg_key, value): - 269 """ - 270 Sets `arg_key` to `value`. - 271 - 272 Args: - 273 arg_key (str): name of the expression arg. - 274 value: value to set the arg to. - 275 """ - 276 self.args[arg_key] = value - 277 self._set_parent(arg_key, value) - 278 - 279 def _set_parent(self, arg_key, value): - 280 if isinstance(value, Expression): - 281 value.parent = self - 282 value.arg_key = arg_key - 283 elif isinstance(value, list): - 284 for v in value: - 285 if isinstance(v, Expression): - 286 v.parent = self - 287 v.arg_key = arg_key - 288 - 289 @property - 290 def depth(self): - 291 """ - 292 Returns the depth of this tree. - 293 """ - 294 if self.parent: - 295 return self.parent.depth + 1 - 296 return 0 - 297 - 298 def find(self, *expression_types: t.Type[E], bfs=True) -> E | None: - 299 """ - 300 Returns the first node in this tree which matches at least one of - 301 the specified types. - 302 - 303 Args: - 304 expression_types (type): the expression type(s) to match. - 305 - 306 Returns: - 307 The node which matches the criteria or None if no such node was found. - 308 """ - 309 return next(self.find_all(*expression_types, bfs=bfs), None) - 310 - 311 def find_all(self, *expression_types: t.Type[E], bfs=True) -> t.Iterator[E]: - 312 """ - 313 Returns a generator object which visits all nodes in this tree and only - 314 yields those that match at least one of the specified expression types. - 315 - 316 Args: - 317 expression_types (type): the expression type(s) to match. - 318 - 319 Returns: - 320 The generator object. - 321 """ - 322 for expression, _, _ in self.walk(bfs=bfs): - 323 if isinstance(expression, expression_types): - 324 yield expression - 325 - 326 def find_ancestor(self, *expression_types: t.Type[E]) -> E | None: - 327 """ - 328 Returns a nearest parent matching expression_types. - 329 - 330 Args: - 331 expression_types (type): the expression type(s) to match. + 202 @property + 203 def alias_or_name(self): + 204 return self.alias or self.name + 205 + 206 @property + 207 def output_name(self): + 208 """ + 209 Name of the output column if this expression is a selection. + 210 + 211 If the Expression has no output name, an empty string is returned. + 212 + 213 Example: + 214 >>> from sqlglot import parse_one + 215 >>> parse_one("SELECT a").expressions[0].output_name + 216 'a' + 217 >>> parse_one("SELECT b AS c").expressions[0].output_name + 218 'c' + 219 >>> parse_one("SELECT 1 + 2").expressions[0].output_name + 220 '' + 221 """ + 222 return "" + 223 + 224 @property + 225 def type(self) -> t.Optional[DataType]: + 226 return self._type + 227 + 228 @type.setter + 229 def type(self, dtype: t.Optional[DataType | DataType.Type | str]) -> None: + 230 if dtype and not isinstance(dtype, DataType): + 231 dtype = DataType.build(dtype) + 232 self._type = dtype # type: ignore + 233 + 234 @property + 235 def meta(self) -> t.Dict[str, t.Any]: + 236 if self._meta is None: + 237 self._meta = {} + 238 return self._meta + 239 + 240 def __deepcopy__(self, memo): + 241 copy = self.__class__(**deepcopy(self.args)) + 242 if self.comments is not None: + 243 copy.comments = deepcopy(self.comments) + 244 + 245 if self._type is not None: + 246 copy._type = self._type.copy() + 247 + 248 if self._meta is not None: + 249 copy._meta = deepcopy(self._meta) + 250 + 251 return copy + 252 + 253 def copy(self): + 254 """ + 255 Returns a deep copy of the expression. + 256 """ + 257 new = deepcopy(self) + 258 new.parent = self.parent + 259 return new + 260 + 261 def append(self, arg_key, value): + 262 """ + 263 Appends value to arg_key if it's a list or sets it as a new list. + 264 + 265 Args: + 266 arg_key (str): name of the list expression arg + 267 value (Any): value to append to the list + 268 """ + 269 if not isinstance(self.args.get(arg_key), list): + 270 self.args[arg_key] = [] + 271 self.args[arg_key].append(value) + 272 self._set_parent(arg_key, value) + 273 + 274 def set(self, arg_key, value): + 275 """ + 276 Sets `arg_key` to `value`. + 277 + 278 Args: + 279 arg_key (str): name of the expression arg. + 280 value: value to set the arg to. + 281 """ + 282 self.args[arg_key] = value + 283 self._set_parent(arg_key, value) + 284 + 285 def _set_parent(self, arg_key, value): + 286 if hasattr(value, "parent"): + 287 value.parent = self + 288 value.arg_key = arg_key + 289 elif type(value) is list: + 290 for v in value: + 291 if hasattr(v, "parent"): + 292 v.parent = self + 293 v.arg_key = arg_key + 294 + 295 @property + 296 def depth(self): + 297 """ + 298 Returns the depth of this tree. + 299 """ + 300 if self.parent: + 301 return self.parent.depth + 1 + 302 return 0 + 303 + 304 def iter_expressions(self) -> t.Iterator[t.Tuple[str, Expression]]: + 305 """Yields the key and expression for all arguments, exploding list args.""" + 306 for k, vs in self.args.items(): + 307 if type(vs) is list: + 308 for v in vs: + 309 if hasattr(v, "parent"): + 310 yield k, v + 311 else: + 312 if hasattr(vs, "parent"): + 313 yield k, vs + 314 + 315 def find(self, *expression_types: t.Type[E], bfs=True) -> E | None: + 316 """ + 317 Returns the first node in this tree which matches at least one of + 318 the specified types. + 319 + 320 Args: + 321 expression_types: the expression type(s) to match. + 322 + 323 Returns: + 324 The node which matches the criteria or None if no such node was found. + 325 """ + 326 return next(self.find_all(*expression_types, bfs=bfs), None) + 327 + 328 def find_all(self, *expression_types: t.Type[E], bfs=True) -> t.Iterator[E]: + 329 """ + 330 Returns a generator object which visits all nodes in this tree and only + 331 yields those that match at least one of the specified expression types. 332 - 333 Returns: - 334 The parent node. - 335 """ - 336 ancestor = self.parent - 337 while ancestor and not isinstance(ancestor, expression_types): - 338 ancestor = ancestor.parent - 339 # ignore type because mypy doesn't know that we're checking type in the loop - 340 return ancestor # type: ignore[return-value] - 341 - 342 @property - 343 def parent_select(self): + 333 Args: + 334 expression_types: the expression type(s) to match. + 335 + 336 Returns: + 337 The generator object. + 338 """ + 339 for expression, *_ in self.walk(bfs=bfs): + 340 if isinstance(expression, expression_types): + 341 yield expression + 342 + 343 def find_ancestor(self, *expression_types: t.Type[E]) -> E | None: 344 """ - 345 Returns the parent select statement. - 346 """ - 347 return self.find_ancestor(Select) - 348 - 349 def root(self) -> Expression: - 350 """ - 351 Returns the root expression of this tree. + 345 Returns a nearest parent matching expression_types. + 346 + 347 Args: + 348 expression_types: the expression type(s) to match. + 349 + 350 Returns: + 351 The parent node. 352 """ - 353 expression = self - 354 while expression.parent: - 355 expression = expression.parent - 356 return expression + 353 ancestor = self.parent + 354 while ancestor and not isinstance(ancestor, expression_types): + 355 ancestor = ancestor.parent + 356 return t.cast(E, ancestor) 357 - 358 def walk(self, bfs=True, prune=None): - 359 """ - 360 Returns a generator object which visits all nodes in this tree. - 361 - 362 Args: - 363 bfs (bool): if set to True the BFS traversal order will be applied, - 364 otherwise the DFS traversal will be used instead. - 365 prune ((node, parent, arg_key) -> bool): callable that returns True if - 366 the generator should stop traversing this branch of the tree. - 367 - 368 Returns: - 369 the generator object. - 370 """ - 371 if bfs: - 372 yield from self.bfs(prune=prune) - 373 else: - 374 yield from self.dfs(prune=prune) - 375 - 376 def dfs(self, parent=None, key=None, prune=None): - 377 """ - 378 Returns a generator object which visits all nodes in this tree in - 379 the DFS (Depth-first) order. - 380 - 381 Returns: - 382 The generator object. - 383 """ - 384 parent = parent or self.parent - 385 yield self, parent, key - 386 if prune and prune(self, parent, key): - 387 return + 358 @property + 359 def parent_select(self): + 360 """ + 361 Returns the parent select statement. + 362 """ + 363 return self.find_ancestor(Select) + 364 + 365 @property + 366 def same_parent(self): + 367 """Returns if the parent is the same class as itself.""" + 368 return type(self.parent) is self.__class__ + 369 + 370 def root(self) -> Expression: + 371 """ + 372 Returns the root expression of this tree. + 373 """ + 374 expression = self + 375 while expression.parent: + 376 expression = expression.parent + 377 return expression + 378 + 379 def walk(self, bfs=True, prune=None): + 380 """ + 381 Returns a generator object which visits all nodes in this tree. + 382 + 383 Args: + 384 bfs (bool): if set to True the BFS traversal order will be applied, + 385 otherwise the DFS traversal will be used instead. + 386 prune ((node, parent, arg_key) -> bool): callable that returns True if + 387 the generator should stop traversing this branch of the tree. 388 - 389 for k, v in self.args.items(): - 390 for node in ensure_collection(v): - 391 if isinstance(node, Expression): - 392 yield from node.dfs(self, k, prune) - 393 - 394 def bfs(self, prune=None): - 395 """ - 396 Returns a generator object which visits all nodes in this tree in - 397 the BFS (Breadth-first) order. - 398 - 399 Returns: - 400 The generator object. - 401 """ - 402 queue = deque([(self, self.parent, None)]) - 403 - 404 while queue: - 405 item, parent, key = queue.popleft() - 406 - 407 yield item, parent, key - 408 if prune and prune(item, parent, key): - 409 continue - 410 - 411 if isinstance(item, Expression): - 412 for k, v in item.args.items(): - 413 for node in ensure_collection(v): - 414 if isinstance(node, Expression): - 415 queue.append((node, item, k)) - 416 - 417 def unnest(self): - 418 """ - 419 Returns the first non parenthesis child or self. + 389 Returns: + 390 the generator object. + 391 """ + 392 if bfs: + 393 yield from self.bfs(prune=prune) + 394 else: + 395 yield from self.dfs(prune=prune) + 396 + 397 def dfs(self, parent=None, key=None, prune=None): + 398 """ + 399 Returns a generator object which visits all nodes in this tree in + 400 the DFS (Depth-first) order. + 401 + 402 Returns: + 403 The generator object. + 404 """ + 405 parent = parent or self.parent + 406 yield self, parent, key + 407 if prune and prune(self, parent, key): + 408 return + 409 + 410 for k, v in self.iter_expressions(): + 411 yield from v.dfs(self, k, prune) + 412 + 413 def bfs(self, prune=None): + 414 """ + 415 Returns a generator object which visits all nodes in this tree in + 416 the BFS (Breadth-first) order. + 417 + 418 Returns: + 419 The generator object. 420 """ - 421 expression = self - 422 while isinstance(expression, Paren): - 423 expression = expression.this - 424 return expression + 421 queue = deque([(self, self.parent, None)]) + 422 + 423 while queue: + 424 item, parent, key = queue.popleft() 425 - 426 def unalias(self): - 427 """ - 428 Returns the inner expression if this is an Alias. - 429 """ - 430 if isinstance(self, Alias): - 431 return self.this - 432 return self - 433 - 434 def unnest_operands(self): - 435 """ - 436 Returns unnested operands as a tuple. - 437 """ - 438 return tuple(arg.unnest() for arg in self.args.values() if arg) - 439 - 440 def flatten(self, unnest=True): - 441 """ - 442 Returns a generator which yields child nodes who's parents are the same class. - 443 - 444 A AND B AND C -> [A, B, C] + 426 yield item, parent, key + 427 if prune and prune(item, parent, key): + 428 continue + 429 + 430 for k, v in item.iter_expressions(): + 431 queue.append((v, item, k)) + 432 + 433 def unnest(self): + 434 """ + 435 Returns the first non parenthesis child or self. + 436 """ + 437 expression = self + 438 while type(expression) is Paren: + 439 expression = expression.this + 440 return expression + 441 + 442 def unalias(self): + 443 """ + 444 Returns the inner expression if this is an Alias. 445 """ - 446 for node, _, _ in self.dfs(prune=lambda n, p, *_: p and not isinstance(n, self.__class__)): - 447 if not isinstance(node, self.__class__): - 448 yield node.unnest() if unnest else node + 446 if isinstance(self, Alias): + 447 return self.this + 448 return self 449 - 450 def __str__(self): - 451 return self.sql() - 452 - 453 def __repr__(self): - 454 return self._to_s() + 450 def unnest_operands(self): + 451 """ + 452 Returns unnested operands as a tuple. + 453 """ + 454 return tuple(arg.unnest() for _, arg in self.iter_expressions()) 455 - 456 def sql(self, dialect: DialectType = None, **opts) -> str: + 456 def flatten(self, unnest=True): 457 """ - 458 Returns SQL string representation of this tree. + 458 Returns a generator which yields child nodes who's parents are the same class. 459 - 460 Args: - 461 dialect: the dialect of the output SQL string (eg. "spark", "hive", "presto", "mysql"). - 462 opts: other `sqlglot.generator.Generator` options. - 463 - 464 Returns: - 465 The SQL string. - 466 """ - 467 from sqlglot.dialects import Dialect + 460 A AND B AND C -> [A, B, C] + 461 """ + 462 for node, _, _ in self.dfs(prune=lambda n, p, *_: p and not type(n) is self.__class__): + 463 if not type(node) is self.__class__: + 464 yield node.unnest() if unnest else node + 465 + 466 def __str__(self): + 467 return self.sql() 468 - 469 return Dialect.get_or_raise(dialect)().generate(self, **opts) - 470 - 471 def _to_s(self, hide_missing: bool = True, level: int = 0) -> str: - 472 indent = "" if not level else "\n" - 473 indent += "".join([" "] * level) - 474 left = f"({self.key.upper()} " + 469 def __repr__(self): + 470 return self._to_s() + 471 + 472 def sql(self, dialect: DialectType = None, **opts) -> str: + 473 """ + 474 Returns SQL string representation of this tree. 475 - 476 args: t.Dict[str, t.Any] = { - 477 k: ", ".join( - 478 v._to_s(hide_missing=hide_missing, level=level + 1) - 479 if hasattr(v, "_to_s") - 480 else str(v) - 481 for v in ensure_collection(vs) - 482 if v is not None - 483 ) - 484 for k, vs in self.args.items() - 485 } - 486 args["comments"] = self.comments - 487 args["type"] = self.type - 488 args = {k: v for k, v in args.items() if v or not hide_missing} - 489 - 490 right = ", ".join(f"{k}: {v}" for k, v in args.items()) - 491 right += ")" - 492 - 493 return indent + left + right - 494 - 495 def transform(self, fun, *args, copy=True, **kwargs): - 496 """ - 497 Recursively visits all tree nodes (excluding already transformed ones) - 498 and applies the given transformation function to each node. - 499 - 500 Args: - 501 fun (function): a function which takes a node as an argument and returns a - 502 new transformed node or the same node without modifications. If the function - 503 returns None, then the corresponding node will be removed from the syntax tree. - 504 copy (bool): if set to True a new tree instance is constructed, otherwise the tree is - 505 modified in place. - 506 - 507 Returns: - 508 The transformed tree. - 509 """ - 510 node = self.copy() if copy else self - 511 new_node = fun(node, *args, **kwargs) - 512 - 513 if new_node is None or not isinstance(new_node, Expression): - 514 return new_node - 515 if new_node is not node: - 516 new_node.parent = node.parent - 517 return new_node - 518 - 519 replace_children(new_node, lambda child: child.transform(fun, *args, copy=False, **kwargs)) - 520 return new_node - 521 - 522 def replace(self, expression): - 523 """ - 524 Swap out this expression with a new expression. - 525 - 526 For example:: - 527 - 528 >>> tree = Select().select("x").from_("tbl") - 529 >>> tree.find(Column).replace(Column(this="y")) - 530 (COLUMN this: y) - 531 >>> tree.sql() - 532 'SELECT y FROM tbl' - 533 - 534 Args: - 535 expression (Expression|None): new node - 536 - 537 Returns: - 538 The new expression or expressions. - 539 """ - 540 if not self.parent: - 541 return expression - 542 - 543 parent = self.parent - 544 self.parent = None - 545 - 546 replace_children(parent, lambda child: expression if child is self else child) - 547 return expression - 548 - 549 def pop(self): - 550 """ - 551 Remove this expression from its AST. + 476 Args: + 477 dialect: the dialect of the output SQL string (eg. "spark", "hive", "presto", "mysql"). + 478 opts: other `sqlglot.generator.Generator` options. + 479 + 480 Returns: + 481 The SQL string. + 482 """ + 483 from sqlglot.dialects import Dialect + 484 + 485 return Dialect.get_or_raise(dialect)().generate(self, **opts) + 486 + 487 def _to_s(self, hide_missing: bool = True, level: int = 0) -> str: + 488 indent = "" if not level else "\n" + 489 indent += "".join([" "] * level) + 490 left = f"({self.key.upper()} " + 491 + 492 args: t.Dict[str, t.Any] = { + 493 k: ", ".join( + 494 v._to_s(hide_missing=hide_missing, level=level + 1) + 495 if hasattr(v, "_to_s") + 496 else str(v) + 497 for v in ensure_list(vs) + 498 if v is not None + 499 ) + 500 for k, vs in self.args.items() + 501 } + 502 args["comments"] = self.comments + 503 args["type"] = self.type + 504 args = {k: v for k, v in args.items() if v or not hide_missing} + 505 + 506 right = ", ".join(f"{k}: {v}" for k, v in args.items()) + 507 right += ")" + 508 + 509 return indent + left + right + 510 + 511 def transform(self, fun, *args, copy=True, **kwargs): + 512 """ + 513 Recursively visits all tree nodes (excluding already transformed ones) + 514 and applies the given transformation function to each node. + 515 + 516 Args: + 517 fun (function): a function which takes a node as an argument and returns a + 518 new transformed node or the same node without modifications. If the function + 519 returns None, then the corresponding node will be removed from the syntax tree. + 520 copy (bool): if set to True a new tree instance is constructed, otherwise the tree is + 521 modified in place. + 522 + 523 Returns: + 524 The transformed tree. + 525 """ + 526 node = self.copy() if copy else self + 527 new_node = fun(node, *args, **kwargs) + 528 + 529 if new_node is None or not isinstance(new_node, Expression): + 530 return new_node + 531 if new_node is not node: + 532 new_node.parent = node.parent + 533 return new_node + 534 + 535 replace_children(new_node, lambda child: child.transform(fun, *args, copy=False, **kwargs)) + 536 return new_node + 537 + 538 def replace(self, expression): + 539 """ + 540 Swap out this expression with a new expression. + 541 + 542 For example:: + 543 + 544 >>> tree = Select().select("x").from_("tbl") + 545 >>> tree.find(Column).replace(Column(this="y")) + 546 (COLUMN this: y) + 547 >>> tree.sql() + 548 'SELECT y FROM tbl' + 549 + 550 Args: + 551 expression (Expression|None): new node 552 553 Returns: - 554 The popped expression. + 554 The new expression or expressions. 555 """ - 556 self.replace(None) - 557 return self + 556 if not self.parent: + 557 return expression 558 - 559 def assert_is(self, type_): - 560 """ - 561 Assert that this `Expression` is an instance of `type_`. - 562 - 563 If it is NOT an instance of `type_`, this raises an assertion error. - 564 Otherwise, this returns this expression. - 565 - 566 Examples: - 567 This is useful for type security in chained expressions: + 559 parent = self.parent + 560 self.parent = None + 561 + 562 replace_children(parent, lambda child: expression if child is self else child) + 563 return expression + 564 + 565 def pop(self): + 566 """ + 567 Remove this expression from its AST. 568 - 569 >>> import sqlglot - 570 >>> sqlglot.parse_one("SELECT x from y").assert_is(Select).select("z").sql() - 571 'SELECT x, z FROM y' - 572 """ - 573 assert isinstance(self, type_) - 574 return self - 575 - 576 def error_messages(self, args: t.Optional[t.Sequence] = None) -> t.List[str]: - 577 """ - 578 Checks if this expression is valid (e.g. all mandatory args are set). - 579 - 580 Args: - 581 args: a sequence of values that were used to instantiate a Func expression. This is used - 582 to check that the provided arguments don't exceed the function argument limit. - 583 - 584 Returns: - 585 A list of error messages for all possible errors that were found. - 586 """ - 587 errors: t.List[str] = [] - 588 - 589 for k in self.args: - 590 if k not in self.arg_types: - 591 errors.append(f"Unexpected keyword: '{k}' for {self.__class__}") - 592 for k, mandatory in self.arg_types.items(): - 593 v = self.args.get(k) - 594 if mandatory and (v is None or (isinstance(v, list) and not v)): - 595 errors.append(f"Required keyword: '{k}' missing for {self.__class__}") - 596 - 597 if ( - 598 args - 599 and isinstance(self, Func) - 600 and len(args) > len(self.arg_types) - 601 and not self.is_var_len_args - 602 ): - 603 errors.append( - 604 f"The number of provided arguments ({len(args)}) is greater than " - 605 f"the maximum number of supported arguments ({len(self.arg_types)})" - 606 ) - 607 - 608 return errors - 609 - 610 def dump(self): - 611 """ - 612 Dump this Expression to a JSON-serializable dict. - 613 """ - 614 from sqlglot.serde import dump - 615 - 616 return dump(self) - 617 - 618 @classmethod - 619 def load(cls, obj): - 620 """ - 621 Load a dict (as returned by `Expression.dump`) into an Expression instance. - 622 """ - 623 from sqlglot.serde import load - 624 - 625 return load(obj) - 626 - 627 - 628IntoType = t.Union[ - 629 str, - 630 t.Type[Expression], - 631 t.Collection[t.Union[str, t.Type[Expression]]], - 632] - 633ExpOrStr = t.Union[str, Expression] - 634 - 635 - 636class Condition(Expression): - 637 def and_(self, *expressions, dialect=None, **opts): - 638 """ - 639 AND this condition with one or multiple expressions. + 569 Returns: + 570 The popped expression. + 571 """ + 572 self.replace(None) + 573 return self + 574 + 575 def assert_is(self, type_): + 576 """ + 577 Assert that this `Expression` is an instance of `type_`. + 578 + 579 If it is NOT an instance of `type_`, this raises an assertion error. + 580 Otherwise, this returns this expression. + 581 + 582 Examples: + 583 This is useful for type security in chained expressions: + 584 + 585 >>> import sqlglot + 586 >>> sqlglot.parse_one("SELECT x from y").assert_is(Select).select("z").sql() + 587 'SELECT x, z FROM y' + 588 """ + 589 assert isinstance(self, type_) + 590 return self + 591 + 592 def error_messages(self, args: t.Optional[t.Sequence] = None) -> t.List[str]: + 593 """ + 594 Checks if this expression is valid (e.g. all mandatory args are set). + 595 + 596 Args: + 597 args: a sequence of values that were used to instantiate a Func expression. This is used + 598 to check that the provided arguments don't exceed the function argument limit. + 599 + 600 Returns: + 601 A list of error messages for all possible errors that were found. + 602 """ + 603 errors: t.List[str] = [] + 604 + 605 for k in self.args: + 606 if k not in self.arg_types: + 607 errors.append(f"Unexpected keyword: '{k}' for {self.__class__}") + 608 for k, mandatory in self.arg_types.items(): + 609 v = self.args.get(k) + 610 if mandatory and (v is None or (isinstance(v, list) and not v)): + 611 errors.append(f"Required keyword: '{k}' missing for {self.__class__}") + 612 + 613 if ( + 614 args + 615 and isinstance(self, Func) + 616 and len(args) > len(self.arg_types) + 617 and not self.is_var_len_args + 618 ): + 619 errors.append( + 620 f"The number of provided arguments ({len(args)}) is greater than " + 621 f"the maximum number of supported arguments ({len(self.arg_types)})" + 622 ) + 623 + 624 return errors + 625 + 626 def dump(self): + 627 """ + 628 Dump this Expression to a JSON-serializable dict. + 629 """ + 630 from sqlglot.serde import dump + 631 + 632 return dump(self) + 633 + 634 @classmethod + 635 def load(cls, obj): + 636 """ + 637 Load a dict (as returned by `Expression.dump`) into an Expression instance. + 638 """ + 639 from sqlglot.serde import load 640 - 641 Example: - 642 >>> condition("x=1").and_("y=1").sql() - 643 'x = 1 AND y = 1' - 644 - 645 Args: - 646 *expressions (str | Expression): the SQL code strings to parse. - 647 If an `Expression` instance is passed, it will be used as-is. - 648 dialect (str): the dialect used to parse the input expression. - 649 opts (kwargs): other options to use to parse the input expressions. + 641 return load(obj) + 642 + 643 + 644IntoType = t.Union[ + 645 str, + 646 t.Type[Expression], + 647 t.Collection[t.Union[str, t.Type[Expression]]], + 648] + 649ExpOrStr = t.Union[str, Expression] 650 - 651 Returns: - 652 And: the new condition. - 653 """ - 654 return and_(self, *expressions, dialect=dialect, **opts) - 655 - 656 def or_(self, *expressions, dialect=None, **opts): - 657 """ - 658 OR this condition with one or multiple expressions. - 659 - 660 Example: - 661 >>> condition("x=1").or_("y=1").sql() - 662 'x = 1 OR y = 1' - 663 - 664 Args: - 665 *expressions (str | Expression): the SQL code strings to parse. - 666 If an `Expression` instance is passed, it will be used as-is. - 667 dialect (str): the dialect used to parse the input expression. - 668 opts (kwargs): other options to use to parse the input expressions. - 669 - 670 Returns: - 671 Or: the new condition. - 672 """ - 673 return or_(self, *expressions, dialect=dialect, **opts) - 674 - 675 def not_(self): - 676 """ - 677 Wrap this condition with NOT. - 678 - 679 Example: - 680 >>> condition("x=1").not_().sql() - 681 'NOT x = 1' - 682 - 683 Returns: - 684 Not: the new condition. - 685 """ - 686 return not_(self) - 687 - 688 - 689class Predicate(Condition): - 690 """Relationships like x = y, x > 1, x >= y.""" - 691 - 692 - 693class DerivedTable(Expression): - 694 @property - 695 def alias_column_names(self): - 696 table_alias = self.args.get("alias") - 697 if not table_alias: - 698 return [] - 699 column_list = table_alias.assert_is(TableAlias).args.get("columns") or [] - 700 return [c.name for c in column_list] - 701 - 702 @property - 703 def selects(self): - 704 alias = self.args.get("alias") - 705 - 706 if alias: - 707 return alias.columns - 708 return [] - 709 + 651 + 652class Condition(Expression): + 653 def and_(self, *expressions, dialect=None, **opts): + 654 """ + 655 AND this condition with one or multiple expressions. + 656 + 657 Example: + 658 >>> condition("x=1").and_("y=1").sql() + 659 'x = 1 AND y = 1' + 660 + 661 Args: + 662 *expressions (str | Expression): the SQL code strings to parse. + 663 If an `Expression` instance is passed, it will be used as-is. + 664 dialect (str): the dialect used to parse the input expression. + 665 opts (kwargs): other options to use to parse the input expressions. + 666 + 667 Returns: + 668 And: the new condition. + 669 """ + 670 return and_(self, *expressions, dialect=dialect, **opts) + 671 + 672 def or_(self, *expressions, dialect=None, **opts): + 673 """ + 674 OR this condition with one or multiple expressions. + 675 + 676 Example: + 677 >>> condition("x=1").or_("y=1").sql() + 678 'x = 1 OR y = 1' + 679 + 680 Args: + 681 *expressions (str | Expression): the SQL code strings to parse. + 682 If an `Expression` instance is passed, it will be used as-is. + 683 dialect (str): the dialect used to parse the input expression. + 684 opts (kwargs): other options to use to parse the input expressions. + 685 + 686 Returns: + 687 Or: the new condition. + 688 """ + 689 return or_(self, *expressions, dialect=dialect, **opts) + 690 + 691 def not_(self): + 692 """ + 693 Wrap this condition with NOT. + 694 + 695 Example: + 696 >>> condition("x=1").not_().sql() + 697 'NOT x = 1' + 698 + 699 Returns: + 700 Not: the new condition. + 701 """ + 702 return not_(self) + 703 + 704 + 705class Predicate(Condition): + 706 """Relationships like x = y, x > 1, x >= y.""" + 707 + 708 + 709class DerivedTable(Expression): 710 @property - 711 def named_selects(self): - 712 return [select.output_name for select in self.selects] - 713 - 714 - 715class Unionable(Expression): - 716 def union(self, expression, distinct=True, dialect=None, **opts): - 717 """ - 718 Builds a UNION expression. - 719 - 720 Example: - 721 >>> import sqlglot - 722 >>> sqlglot.parse_one("SELECT * FROM foo").union("SELECT * FROM bla").sql() - 723 'SELECT * FROM foo UNION SELECT * FROM bla' - 724 - 725 Args: - 726 expression (str | Expression): the SQL code string. - 727 If an `Expression` instance is passed, it will be used as-is. - 728 distinct (bool): set the DISTINCT flag if and only if this is true. - 729 dialect (str): the dialect used to parse the input expression. - 730 opts (kwargs): other options to use to parse the input expressions. - 731 Returns: - 732 Union: the Union expression. - 733 """ - 734 return union(left=self, right=expression, distinct=distinct, dialect=dialect, **opts) + 711 def alias_column_names(self): + 712 table_alias = self.args.get("alias") + 713 if not table_alias: + 714 return [] + 715 column_list = table_alias.assert_is(TableAlias).args.get("columns") or [] + 716 return [c.name for c in column_list] + 717 + 718 @property + 719 def selects(self): + 720 alias = self.args.get("alias") + 721 + 722 if alias: + 723 return alias.columns + 724 return [] + 725 + 726 @property + 727 def named_selects(self): + 728 return [select.output_name for select in self.selects] + 729 + 730 + 731class Unionable(Expression): + 732 def union(self, expression, distinct=True, dialect=None, **opts): + 733 """ + 734 Builds a UNION expression. 735 - 736 def intersect(self, expression, distinct=True, dialect=None, **opts): - 737 """ - 738 Builds an INTERSECT expression. - 739 - 740 Example: - 741 >>> import sqlglot - 742 >>> sqlglot.parse_one("SELECT * FROM foo").intersect("SELECT * FROM bla").sql() - 743 'SELECT * FROM foo INTERSECT SELECT * FROM bla' - 744 - 745 Args: - 746 expression (str | Expression): the SQL code string. - 747 If an `Expression` instance is passed, it will be used as-is. - 748 distinct (bool): set the DISTINCT flag if and only if this is true. - 749 dialect (str): the dialect used to parse the input expression. - 750 opts (kwargs): other options to use to parse the input expressions. - 751 Returns: - 752 Intersect: the Intersect expression - 753 """ - 754 return intersect(left=self, right=expression, distinct=distinct, dialect=dialect, **opts) + 736 Example: + 737 >>> import sqlglot + 738 >>> sqlglot.parse_one("SELECT * FROM foo").union("SELECT * FROM bla").sql() + 739 'SELECT * FROM foo UNION SELECT * FROM bla' + 740 + 741 Args: + 742 expression (str | Expression): the SQL code string. + 743 If an `Expression` instance is passed, it will be used as-is. + 744 distinct (bool): set the DISTINCT flag if and only if this is true. + 745 dialect (str): the dialect used to parse the input expression. + 746 opts (kwargs): other options to use to parse the input expressions. + 747 Returns: + 748 Union: the Union expression. + 749 """ + 750 return union(left=self, right=expression, distinct=distinct, dialect=dialect, **opts) + 751 + 752 def intersect(self, expression, distinct=True, dialect=None, **opts): + 753 """ + 754 Builds an INTERSECT expression. 755 - 756 def except_(self, expression, distinct=True, dialect=None, **opts): - 757 """ - 758 Builds an EXCEPT expression. - 759 - 760 Example: - 761 >>> import sqlglot - 762 >>> sqlglot.parse_one("SELECT * FROM foo").except_("SELECT * FROM bla").sql() - 763 'SELECT * FROM foo EXCEPT SELECT * FROM bla' - 764 - 765 Args: - 766 expression (str | Expression): the SQL code string. - 767 If an `Expression` instance is passed, it will be used as-is. - 768 distinct (bool): set the DISTINCT flag if and only if this is true. - 769 dialect (str): the dialect used to parse the input expression. - 770 opts (kwargs): other options to use to parse the input expressions. - 771 Returns: - 772 Except: the Except expression - 773 """ - 774 return except_(left=self, right=expression, distinct=distinct, dialect=dialect, **opts) + 756 Example: + 757 >>> import sqlglot + 758 >>> sqlglot.parse_one("SELECT * FROM foo").intersect("SELECT * FROM bla").sql() + 759 'SELECT * FROM foo INTERSECT SELECT * FROM bla' + 760 + 761 Args: + 762 expression (str | Expression): the SQL code string. + 763 If an `Expression` instance is passed, it will be used as-is. + 764 distinct (bool): set the DISTINCT flag if and only if this is true. + 765 dialect (str): the dialect used to parse the input expression. + 766 opts (kwargs): other options to use to parse the input expressions. + 767 Returns: + 768 Intersect: the Intersect expression + 769 """ + 770 return intersect(left=self, right=expression, distinct=distinct, dialect=dialect, **opts) + 771 + 772 def except_(self, expression, distinct=True, dialect=None, **opts): + 773 """ + 774 Builds an EXCEPT expression. 775 - 776 - 777class UDTF(DerivedTable, Unionable): - 778 pass - 779 + 776 Example: + 777 >>> import sqlglot + 778 >>> sqlglot.parse_one("SELECT * FROM foo").except_("SELECT * FROM bla").sql() + 779 'SELECT * FROM foo EXCEPT SELECT * FROM bla' 780 - 781class Cache(Expression): - 782 arg_types = { - 783 "with": False, - 784 "this": True, - 785 "lazy": False, - 786 "options": False, - 787 "expression": False, - 788 } - 789 - 790 - 791class Uncache(Expression): - 792 arg_types = {"this": True, "exists": False} - 793 - 794 - 795class Create(Expression): - 796 arg_types = { - 797 "with": False, - 798 "this": True, - 799 "kind": True, - 800 "expression": False, - 801 "exists": False, - 802 "properties": False, - 803 "replace": False, - 804 "unique": False, - 805 "volatile": False, - 806 "indexes": False, - 807 "no_schema_binding": False, - 808 "begin": False, - 809 } + 781 Args: + 782 expression (str | Expression): the SQL code string. + 783 If an `Expression` instance is passed, it will be used as-is. + 784 distinct (bool): set the DISTINCT flag if and only if this is true. + 785 dialect (str): the dialect used to parse the input expression. + 786 opts (kwargs): other options to use to parse the input expressions. + 787 Returns: + 788 Except: the Except expression + 789 """ + 790 return except_(left=self, right=expression, distinct=distinct, dialect=dialect, **opts) + 791 + 792 + 793class UDTF(DerivedTable, Unionable): + 794 pass + 795 + 796 + 797class Cache(Expression): + 798 arg_types = { + 799 "with": False, + 800 "this": True, + 801 "lazy": False, + 802 "options": False, + 803 "expression": False, + 804 } + 805 + 806 + 807class Uncache(Expression): + 808 arg_types = {"this": True, "exists": False} + 809 810 - 811 - 812class Describe(Expression): - 813 arg_types = {"this": True, "kind": False} - 814 - 815 - 816class Set(Expression): - 817 arg_types = {"expressions": False} - 818 - 819 - 820class SetItem(Expression): - 821 arg_types = { - 822 "this": False, - 823 "expressions": False, - 824 "kind": False, - 825 "collate": False, # MySQL SET NAMES statement - 826 "global": False, - 827 } - 828 - 829 - 830class Show(Expression): - 831 arg_types = { - 832 "this": True, - 833 "target": False, - 834 "offset": False, - 835 "limit": False, - 836 "like": False, - 837 "where": False, - 838 "db": False, - 839 "full": False, - 840 "mutex": False, - 841 "query": False, - 842 "channel": False, - 843 "global": False, - 844 "log": False, - 845 "position": False, - 846 "types": False, + 811class Create(Expression): + 812 arg_types = { + 813 "with": False, + 814 "this": True, + 815 "kind": True, + 816 "expression": False, + 817 "exists": False, + 818 "properties": False, + 819 "replace": False, + 820 "unique": False, + 821 "volatile": False, + 822 "indexes": False, + 823 "no_schema_binding": False, + 824 "begin": False, + 825 } + 826 + 827 + 828class Describe(Expression): + 829 arg_types = {"this": True, "kind": False} + 830 + 831 + 832class Pragma(Expression): + 833 pass + 834 + 835 + 836class Set(Expression): + 837 arg_types = {"expressions": False} + 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 } 848 849 - 850class UserDefinedFunction(Expression): - 851 arg_types = {"this": True, "expressions": False, "wrapped": False} - 852 - 853 - 854class CharacterSet(Expression): - 855 arg_types = {"this": True, "default": False} - 856 - 857 - 858class With(Expression): - 859 arg_types = {"expressions": True, "recursive": False} - 860 - 861 @property - 862 def recursive(self) -> bool: - 863 return bool(self.args.get("recursive")) - 864 - 865 - 866class WithinGroup(Expression): - 867 arg_types = {"this": True, "expression": False} + 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 } 868 869 - 870class CTE(DerivedTable): - 871 arg_types = {"this": True, "alias": True} + 870class UserDefinedFunction(Expression): + 871 arg_types = {"this": True, "expressions": False, "wrapped": False} 872 873 - 874class TableAlias(Expression): - 875 arg_types = {"this": False, "columns": False} + 874class CharacterSet(Expression): + 875 arg_types = {"this": True, "default": False} 876 - 877 @property - 878 def columns(self): - 879 return self.args.get("columns") or [] + 877 + 878class With(Expression): + 879 arg_types = {"expressions": True, "recursive": False} 880 - 881 - 882class BitString(Condition): - 883 pass + 881 @property + 882 def recursive(self) -> bool: + 883 return bool(self.args.get("recursive")) 884 885 - 886class HexString(Condition): - 887 pass + 886class WithinGroup(Expression): + 887 arg_types = {"this": True, "expression": False} 888 889 - 890class ByteString(Condition): - 891 pass + 890class CTE(DerivedTable): + 891 arg_types = {"this": True, "alias": True} 892 893 - 894class Column(Condition): - 895 arg_types = {"this": True, "table": False, "db": False, "catalog": False, "join_mark": False} + 894class TableAlias(Expression): + 895 arg_types = {"this": False, "columns": False} 896 897 @property - 898 def table(self) -> str: - 899 return self.text("table") + 898 def columns(self): + 899 return self.args.get("columns") or [] 900 - 901 @property - 902 def db(self) -> str: - 903 return self.text("db") + 901 + 902class BitString(Condition): + 903 pass 904 - 905 @property - 906 def catalog(self) -> str: - 907 return self.text("catalog") + 905 + 906class HexString(Condition): + 907 pass 908 - 909 @property - 910 def output_name(self) -> str: - 911 return self.name + 909 + 910class ByteString(Condition): + 911 pass 912 913 - 914class ColumnDef(Expression): - 915 arg_types = { - 916 "this": True, - 917 "kind": False, - 918 "constraints": False, - 919 "exists": False, - 920 } - 921 - 922 - 923class AlterColumn(Expression): - 924 arg_types = { - 925 "this": True, - 926 "dtype": False, - 927 "collate": False, - 928 "using": False, - 929 "default": False, - 930 "drop": False, - 931 } + 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 - 934class RenameTable(Expression): - 935 pass - 936 + 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 - 938class SetTag(Expression): - 939 arg_types = {"expressions": True, "unset": False} - 940 - 941 - 942class Comment(Expression): - 943 arg_types = {"this": True, "kind": True, "expression": True, "exists": False} - 944 - 945 - 946class ColumnConstraint(Expression): - 947 arg_types = {"this": False, "kind": True} - 948 + 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) 949 - 950class ColumnConstraintKind(Expression): - 951 pass - 952 - 953 - 954class AutoIncrementColumnConstraint(ColumnConstraintKind): - 955 pass - 956 - 957 - 958class CaseSpecificColumnConstraint(ColumnConstraintKind): - 959 arg_types = {"not_": True} - 960 - 961 - 962class CharacterSetColumnConstraint(ColumnConstraintKind): - 963 arg_types = {"this": True} - 964 - 965 - 966class CheckColumnConstraint(ColumnConstraintKind): - 967 pass - 968 + 950 + 951class ColumnDef(Expression): + 952 arg_types = { + 953 "this": True, + 954 "kind": False, + 955 "constraints": False, + 956 "exists": False, + 957 } + 958 + 959 + 960class AlterColumn(Expression): + 961 arg_types = { + 962 "this": True, + 963 "dtype": False, + 964 "collate": False, + 965 "using": False, + 966 "default": False, + 967 "drop": False, + 968 } 969 - 970class CollateColumnConstraint(ColumnConstraintKind): - 971 pass - 972 + 970 + 971class RenameTable(Expression): + 972 pass 973 - 974class CommentColumnConstraint(ColumnConstraintKind): - 975 pass - 976 + 974 + 975class SetTag(Expression): + 976 arg_types = {"expressions": True, "unset": False} 977 - 978class CompressColumnConstraint(ColumnConstraintKind): - 979 pass - 980 + 978 + 979class Comment(Expression): + 980 arg_types = {"this": True, "kind": True, "expression": True, "exists": False} 981 - 982class DateFormatColumnConstraint(ColumnConstraintKind): - 983 arg_types = {"this": True} - 984 + 982 + 983class ColumnConstraint(Expression): + 984 arg_types = {"this": False, "kind": True} 985 - 986class DefaultColumnConstraint(ColumnConstraintKind): - 987 pass - 988 + 986 + 987class ColumnConstraintKind(Expression): + 988 pass 989 - 990class EncodeColumnConstraint(ColumnConstraintKind): - 991 pass - 992 + 990 + 991class AutoIncrementColumnConstraint(ColumnConstraintKind): + 992 pass 993 - 994class GeneratedAsIdentityColumnConstraint(ColumnConstraintKind): - 995 # this: True -> ALWAYS, this: False -> BY DEFAULT - 996 arg_types = { - 997 "this": False, - 998 "start": False, - 999 "increment": False, -1000 "minvalue": False, -1001 "maxvalue": False, -1002 "cycle": False, -1003 } -1004 + 994 + 995class CaseSpecificColumnConstraint(ColumnConstraintKind): + 996 arg_types = {"not_": True} + 997 + 998 + 999class CharacterSetColumnConstraint(ColumnConstraintKind): +1000 arg_types = {"this": True} +1001 +1002 +1003class CheckColumnConstraint(ColumnConstraintKind): +1004 pass 1005 -1006class InlineLengthColumnConstraint(ColumnConstraintKind): -1007 pass -1008 +1006 +1007class CollateColumnConstraint(ColumnConstraintKind): +1008 pass 1009 -1010class NotNullColumnConstraint(ColumnConstraintKind): -1011 arg_types = {"allow_null": False} -1012 +1010 +1011class CommentColumnConstraint(ColumnConstraintKind): +1012 pass 1013 -1014class PrimaryKeyColumnConstraint(ColumnConstraintKind): -1015 arg_types = {"desc": False} -1016 +1014 +1015class CompressColumnConstraint(ColumnConstraintKind): +1016 pass 1017 -1018class TitleColumnConstraint(ColumnConstraintKind): -1019 pass -1020 +1018 +1019class DateFormatColumnConstraint(ColumnConstraintKind): +1020 arg_types = {"this": True} 1021 -1022class UniqueColumnConstraint(ColumnConstraintKind): -1023 arg_types: t.Dict[str, t.Any] = {} -1024 +1022 +1023class DefaultColumnConstraint(ColumnConstraintKind): +1024 pass 1025 -1026class UppercaseColumnConstraint(ColumnConstraintKind): -1027 arg_types: t.Dict[str, t.Any] = {} -1028 +1026 +1027class EncodeColumnConstraint(ColumnConstraintKind): +1028 pass 1029 -1030class PathColumnConstraint(ColumnConstraintKind): -1031 pass -1032 -1033 -1034class Constraint(Expression): -1035 arg_types = {"this": True, "expressions": True} -1036 -1037 -1038class Delete(Expression): -1039 arg_types = {"with": False, "this": False, "using": False, "where": False, "returning": False} -1040 -1041 def delete( -1042 self, -1043 table: ExpOrStr, -1044 dialect: DialectType = None, -1045 copy: bool = True, -1046 **opts, -1047 ) -> Delete: -1048 """ -1049 Create a DELETE expression or replace the table on an existing DELETE expression. +1030 +1031class GeneratedAsIdentityColumnConstraint(ColumnConstraintKind): +1032 # this: True -> ALWAYS, this: False -> BY DEFAULT +1033 arg_types = { +1034 "this": False, +1035 "start": False, +1036 "increment": False, +1037 "minvalue": False, +1038 "maxvalue": False, +1039 "cycle": False, +1040 } +1041 +1042 +1043class InlineLengthColumnConstraint(ColumnConstraintKind): +1044 pass +1045 +1046 +1047class NotNullColumnConstraint(ColumnConstraintKind): +1048 arg_types = {"allow_null": False} +1049 1050 -1051 Example: -1052 >>> delete("tbl").sql() -1053 'DELETE FROM tbl' +1051class PrimaryKeyColumnConstraint(ColumnConstraintKind): +1052 arg_types = {"desc": False} +1053 1054 -1055 Args: -1056 table: the table from which to delete. -1057 dialect: the dialect used to parse the input expression. -1058 copy: if `False`, modify this expression instance in-place. -1059 opts: other options to use to parse the input expressions. -1060 -1061 Returns: -1062 Delete: the modified expression. -1063 """ -1064 return _apply_builder( -1065 expression=table, -1066 instance=self, -1067 arg="this", -1068 dialect=dialect, -1069 into=Table, -1070 copy=copy, -1071 **opts, -1072 ) +1055class TitleColumnConstraint(ColumnConstraintKind): +1056 pass +1057 +1058 +1059class UniqueColumnConstraint(ColumnConstraintKind): +1060 arg_types: t.Dict[str, t.Any] = {} +1061 +1062 +1063class UppercaseColumnConstraint(ColumnConstraintKind): +1064 arg_types: t.Dict[str, t.Any] = {} +1065 +1066 +1067class PathColumnConstraint(ColumnConstraintKind): +1068 pass +1069 +1070 +1071class Constraint(Expression): +1072 arg_types = {"this": True, "expressions": True} 1073 -1074 def where( -1075 self, -1076 *expressions: ExpOrStr, -1077 append: bool = True, -1078 dialect: DialectType = None, -1079 copy: bool = True, -1080 **opts, -1081 ) -> Delete: -1082 """ -1083 Append to or set the WHERE expressions. -1084 -1085 Example: -1086 >>> delete("tbl").where("x = 'a' OR x < 'b'").sql() -1087 "DELETE FROM tbl WHERE x = 'a' OR x < 'b'" -1088 -1089 Args: -1090 *expressions: the SQL code strings to parse. -1091 If an `Expression` instance is passed, it will be used as-is. -1092 Multiple expressions are combined with an AND operator. -1093 append: if `True`, AND the new expressions to any existing expression. -1094 Otherwise, this resets the expression. -1095 dialect: the dialect used to parse the input expressions. -1096 copy: if `False`, modify this expression instance in-place. -1097 opts: other options to use to parse the input expressions. -1098 -1099 Returns: -1100 Delete: the modified expression. -1101 """ -1102 return _apply_conjunction_builder( -1103 *expressions, -1104 instance=self, -1105 arg="where", -1106 append=append, -1107 into=Where, -1108 dialect=dialect, -1109 copy=copy, -1110 **opts, -1111 ) -1112 -1113 def returning( -1114 self, -1115 expression: ExpOrStr, -1116 dialect: DialectType = None, -1117 copy: bool = True, -1118 **opts, -1119 ) -> Delete: -1120 """ -1121 Set the RETURNING expression. Not supported by all dialects. -1122 -1123 Example: -1124 >>> delete("tbl").returning("*", dialect="postgres").sql() -1125 'DELETE FROM tbl RETURNING *' -1126 -1127 Args: -1128 expression: the SQL code strings to parse. -1129 If an `Expression` instance is passed, it will be used as-is. -1130 dialect: the dialect used to parse the input expressions. -1131 copy: if `False`, modify this expression instance in-place. -1132 opts: other options to use to parse the input expressions. -1133 -1134 Returns: -1135 Delete: the modified expression. -1136 """ -1137 return _apply_builder( -1138 expression=expression, -1139 instance=self, -1140 arg="returning", -1141 prefix="RETURNING", -1142 dialect=dialect, -1143 copy=copy, -1144 into=Returning, -1145 **opts, -1146 ) -1147 -1148 -1149class Drop(Expression): -1150 arg_types = { -1151 "this": False, -1152 "kind": False, -1153 "exists": False, -1154 "temporary": False, -1155 "materialized": False, -1156 "cascade": False, -1157 } -1158 +1074 +1075class Delete(Expression): +1076 arg_types = {"with": False, "this": False, "using": False, "where": False, "returning": False} +1077 +1078 def delete( +1079 self, +1080 table: ExpOrStr, +1081 dialect: DialectType = None, +1082 copy: bool = True, +1083 **opts, +1084 ) -> Delete: +1085 """ +1086 Create a DELETE expression or replace the table on an existing DELETE expression. +1087 +1088 Example: +1089 >>> delete("tbl").sql() +1090 'DELETE FROM tbl' +1091 +1092 Args: +1093 table: the table from which to delete. +1094 dialect: the dialect used to parse the input expression. +1095 copy: if `False`, modify this expression instance in-place. +1096 opts: other options to use to parse the input expressions. +1097 +1098 Returns: +1099 Delete: the modified expression. +1100 """ +1101 return _apply_builder( +1102 expression=table, +1103 instance=self, +1104 arg="this", +1105 dialect=dialect, +1106 into=Table, +1107 copy=copy, +1108 **opts, +1109 ) +1110 +1111 def where( +1112 self, +1113 *expressions: ExpOrStr, +1114 append: bool = True, +1115 dialect: DialectType = None, +1116 copy: bool = True, +1117 **opts, +1118 ) -> Delete: +1119 """ +1120 Append to or set the WHERE expressions. +1121 +1122 Example: +1123 >>> delete("tbl").where("x = 'a' OR x < 'b'").sql() +1124 "DELETE FROM tbl WHERE x = 'a' OR x < 'b'" +1125 +1126 Args: +1127 *expressions: the SQL code strings to parse. +1128 If an `Expression` instance is passed, it will be used as-is. +1129 Multiple expressions are combined with an AND operator. +1130 append: if `True`, AND the new expressions to any existing expression. +1131 Otherwise, this resets the expression. +1132 dialect: the dialect used to parse the input expressions. +1133 copy: if `False`, modify this expression instance in-place. +1134 opts: other options to use to parse the input expressions. +1135 +1136 Returns: +1137 Delete: the modified expression. +1138 """ +1139 return _apply_conjunction_builder( +1140 *expressions, +1141 instance=self, +1142 arg="where", +1143 append=append, +1144 into=Where, +1145 dialect=dialect, +1146 copy=copy, +1147 **opts, +1148 ) +1149 +1150 def returning( +1151 self, +1152 expression: ExpOrStr, +1153 dialect: DialectType = None, +1154 copy: bool = True, +1155 **opts, +1156 ) -> Delete: +1157 """ +1158 Set the RETURNING expression. Not supported by all dialects. 1159 -1160class Filter(Expression): -1161 arg_types = {"this": True, "expression": True} -1162 +1160 Example: +1161 >>> delete("tbl").returning("*", dialect="postgres").sql() +1162 'DELETE FROM tbl RETURNING *' 1163 -1164class Check(Expression): -1165 pass -1166 -1167 -1168class Directory(Expression): -1169 # https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-dml-insert-overwrite-directory-hive.html -1170 arg_types = {"this": True, "local": False, "row_format": False} -1171 -1172 -1173class ForeignKey(Expression): -1174 arg_types = { -1175 "expressions": True, -1176 "reference": False, -1177 "delete": False, -1178 "update": False, -1179 } -1180 -1181 -1182class PrimaryKey(Expression): -1183 arg_types = {"expressions": True, "options": False} +1164 Args: +1165 expression: the SQL code strings to parse. +1166 If an `Expression` instance is passed, it will be used as-is. +1167 dialect: the dialect used to parse the input expressions. +1168 copy: if `False`, modify this expression instance in-place. +1169 opts: other options to use to parse the input expressions. +1170 +1171 Returns: +1172 Delete: the modified expression. +1173 """ +1174 return _apply_builder( +1175 expression=expression, +1176 instance=self, +1177 arg="returning", +1178 prefix="RETURNING", +1179 dialect=dialect, +1180 copy=copy, +1181 into=Returning, +1182 **opts, +1183 ) 1184 1185 -1186class Unique(Expression): -1187 arg_types = {"expressions": True} -1188 -1189 -1190# https://www.postgresql.org/docs/9.1/sql-selectinto.html -1191# https://docs.aws.amazon.com/redshift/latest/dg/r_SELECT_INTO.html#r_SELECT_INTO-examples -1192class Into(Expression): -1193 arg_types = {"this": True, "temporary": False, "unlogged": False} -1194 +1186class Drop(Expression): +1187 arg_types = { +1188 "this": False, +1189 "kind": False, +1190 "exists": False, +1191 "temporary": False, +1192 "materialized": False, +1193 "cascade": False, +1194 } 1195 -1196class From(Expression): -1197 arg_types = {"expressions": True} -1198 +1196 +1197class Filter(Expression): +1198 arg_types = {"this": True, "expression": True} 1199 -1200class Having(Expression): -1201 pass -1202 +1200 +1201class Check(Expression): +1202 pass 1203 -1204class Hint(Expression): -1205 arg_types = {"expressions": True} -1206 -1207 -1208class JoinHint(Expression): -1209 arg_types = {"this": True, "expressions": True} -1210 -1211 -1212class Identifier(Expression): -1213 arg_types = {"this": True, "quoted": False} -1214 -1215 @property -1216 def quoted(self): -1217 return bool(self.args.get("quoted")) +1204 +1205class Directory(Expression): +1206 # https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-dml-insert-overwrite-directory-hive.html +1207 arg_types = {"this": True, "local": False, "row_format": False} +1208 +1209 +1210class ForeignKey(Expression): +1211 arg_types = { +1212 "expressions": True, +1213 "reference": False, +1214 "delete": False, +1215 "update": False, +1216 } +1217 1218 -1219 def __eq__(self, other): -1220 return isinstance(other, self.__class__) and _norm_arg(self.this) == _norm_arg(other.this) +1219class PrimaryKey(Expression): +1220 arg_types = {"expressions": True, "options": False} 1221 -1222 def __hash__(self): -1223 return hash((self.key, self.this.lower())) -1224 -1225 @property -1226 def output_name(self): -1227 return self.name -1228 -1229 -1230class Index(Expression): -1231 arg_types = { -1232 "this": False, -1233 "table": False, -1234 "where": False, -1235 "columns": False, -1236 "unique": False, -1237 "primary": False, -1238 "amp": False, # teradata -1239 } +1222 +1223class Unique(Expression): +1224 arg_types = {"expressions": True} +1225 +1226 +1227# https://www.postgresql.org/docs/9.1/sql-selectinto.html +1228# https://docs.aws.amazon.com/redshift/latest/dg/r_SELECT_INTO.html#r_SELECT_INTO-examples +1229class Into(Expression): +1230 arg_types = {"this": True, "temporary": False, "unlogged": False} +1231 +1232 +1233class From(Expression): +1234 arg_types = {"expressions": True} +1235 +1236 +1237class Having(Expression): +1238 pass +1239 1240 -1241 -1242class Insert(Expression): -1243 arg_types = { -1244 "with": False, -1245 "this": True, -1246 "expression": False, -1247 "returning": False, -1248 "overwrite": False, -1249 "exists": False, -1250 "partition": False, -1251 "alternative": False, -1252 } -1253 -1254 -1255class Returning(Expression): -1256 arg_types = {"expressions": True} -1257 -1258 -1259# https://dev.mysql.com/doc/refman/8.0/en/charset-introducer.html -1260class Introducer(Expression): -1261 arg_types = {"this": True, "expression": True} -1262 -1263 -1264# national char, like n'utf8' -1265class National(Expression): -1266 pass -1267 -1268 -1269class LoadData(Expression): -1270 arg_types = { -1271 "this": True, -1272 "local": False, -1273 "overwrite": False, -1274 "inpath": True, -1275 "partition": False, -1276 "input_format": False, -1277 "serde": False, -1278 } -1279 -1280 -1281class Partition(Expression): -1282 arg_types = {"expressions": True} -1283 -1284 -1285class Fetch(Expression): -1286 arg_types = {"direction": False, "count": False} -1287 -1288 -1289class Group(Expression): -1290 arg_types = { -1291 "expressions": False, -1292 "grouping_sets": False, -1293 "cube": False, -1294 "rollup": False, -1295 } -1296 -1297 -1298class Lambda(Expression): -1299 arg_types = {"this": True, "expressions": True} +1241class Hint(Expression): +1242 arg_types = {"expressions": True} +1243 +1244 +1245class JoinHint(Expression): +1246 arg_types = {"this": True, "expressions": True} +1247 +1248 +1249class Identifier(Expression): +1250 arg_types = {"this": True, "quoted": False} +1251 +1252 @property +1253 def quoted(self): +1254 return bool(self.args.get("quoted")) +1255 +1256 @property +1257 def hashable_args(self) -> t.Any: +1258 if self.quoted and any(char.isupper() for char in self.this): +1259 return (self.this, self.quoted) +1260 return self.this.lower() +1261 +1262 @property +1263 def output_name(self): +1264 return self.name +1265 +1266 +1267class Index(Expression): +1268 arg_types = { +1269 "this": False, +1270 "table": False, +1271 "where": False, +1272 "columns": False, +1273 "unique": False, +1274 "primary": False, +1275 "amp": False, # teradata +1276 } +1277 +1278 +1279class Insert(Expression): +1280 arg_types = { +1281 "with": False, +1282 "this": True, +1283 "expression": False, +1284 "returning": False, +1285 "overwrite": False, +1286 "exists": False, +1287 "partition": False, +1288 "alternative": False, +1289 } +1290 +1291 +1292class Returning(Expression): +1293 arg_types = {"expressions": True} +1294 +1295 +1296# https://dev.mysql.com/doc/refman/8.0/en/charset-introducer.html +1297class Introducer(Expression): +1298 arg_types = {"this": True, "expression": True} +1299 1300 -1301 -1302class Limit(Expression): -1303 arg_types = {"this": False, "expression": True} +1301# national char, like n'utf8' +1302class National(Expression): +1303 pass 1304 1305 -1306class Literal(Condition): -1307 arg_types = {"this": True, "is_string": True} -1308 -1309 def __eq__(self, other): -1310 return ( -1311 isinstance(other, Literal) -1312 and self.this == other.this -1313 and self.args["is_string"] == other.args["is_string"] -1314 ) -1315 -1316 def __hash__(self): -1317 return hash((self.key, self.this, self.args["is_string"])) -1318 -1319 @classmethod -1320 def number(cls, number) -> Literal: -1321 return cls(this=str(number), is_string=False) -1322 -1323 @classmethod -1324 def string(cls, string) -> Literal: -1325 return cls(this=str(string), is_string=True) -1326 -1327 @property -1328 def output_name(self): -1329 return self.name -1330 -1331 -1332class Join(Expression): -1333 arg_types = { -1334 "this": True, -1335 "on": False, -1336 "side": False, -1337 "kind": False, -1338 "using": False, -1339 "natural": False, -1340 } +1306class LoadData(Expression): +1307 arg_types = { +1308 "this": True, +1309 "local": False, +1310 "overwrite": False, +1311 "inpath": True, +1312 "partition": False, +1313 "input_format": False, +1314 "serde": False, +1315 } +1316 +1317 +1318class Partition(Expression): +1319 arg_types = {"expressions": True} +1320 +1321 +1322class Fetch(Expression): +1323 arg_types = {"direction": False, "count": False} +1324 +1325 +1326class Group(Expression): +1327 arg_types = { +1328 "expressions": False, +1329 "grouping_sets": False, +1330 "cube": False, +1331 "rollup": False, +1332 } +1333 +1334 +1335class Lambda(Expression): +1336 arg_types = {"this": True, "expressions": True} +1337 +1338 +1339class Limit(Expression): +1340 arg_types = {"this": False, "expression": True} 1341 -1342 @property -1343 def kind(self): -1344 return self.text("kind").upper() +1342 +1343class Literal(Condition): +1344 arg_types = {"this": True, "is_string": True} 1345 1346 @property -1347 def side(self): -1348 return self.text("side").upper() +1347 def hashable_args(self) -> t.Any: +1348 return (self.this, self.args.get("is_string")) 1349 -1350 @property -1351 def alias_or_name(self): -1352 return self.this.alias_or_name +1350 @classmethod +1351 def number(cls, number) -> Literal: +1352 return cls(this=str(number), is_string=False) 1353 -1354 def on(self, *expressions, append=True, dialect=None, copy=True, **opts): -1355 """ -1356 Append to or set the ON expressions. +1354 @classmethod +1355 def string(cls, string) -> Literal: +1356 return cls(this=str(string), is_string=True) 1357 -1358 Example: -1359 >>> import sqlglot -1360 >>> sqlglot.parse_one("JOIN x", into=Join).on("y = 1").sql() -1361 'JOIN x ON y = 1' +1358 @property +1359 def output_name(self): +1360 return self.name +1361 1362 -1363 Args: -1364 *expressions (str | Expression): the SQL code strings to parse. -1365 If an `Expression` instance is passed, it will be used as-is. -1366 Multiple expressions are combined with an AND operator. -1367 append (bool): if `True`, AND the new expressions to any existing expression. -1368 Otherwise, this resets the expression. -1369 dialect (str): the dialect used to parse the input expressions. -1370 copy (bool): if `False`, modify this expression instance in-place. -1371 opts (kwargs): other options to use to parse the input expressions. +1363class Join(Expression): +1364 arg_types = { +1365 "this": True, +1366 "on": False, +1367 "side": False, +1368 "kind": False, +1369 "using": False, +1370 "natural": False, +1371 } 1372 -1373 Returns: -1374 Join: the modified join expression. -1375 """ -1376 join = _apply_conjunction_builder( -1377 *expressions, -1378 instance=self, -1379 arg="on", -1380 append=append, -1381 dialect=dialect, -1382 copy=copy, -1383 **opts, -1384 ) -1385 -1386 if join.kind == "CROSS": -1387 join.set("kind", None) +1373 @property +1374 def kind(self): +1375 return self.text("kind").upper() +1376 +1377 @property +1378 def side(self): +1379 return self.text("side").upper() +1380 +1381 @property +1382 def alias_or_name(self): +1383 return self.this.alias_or_name +1384 +1385 def on(self, *expressions, append=True, dialect=None, copy=True, **opts): +1386 """ +1387 Append to or set the ON expressions. 1388 -1389 return join -1390 -1391 def using(self, *expressions, append=True, dialect=None, copy=True, **opts): -1392 """ -1393 Append to or set the USING expressions. -1394 -1395 Example: -1396 >>> import sqlglot -1397 >>> sqlglot.parse_one("JOIN x", into=Join).using("foo", "bla").sql() -1398 'JOIN x USING (foo, bla)' -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 append (bool): if `True`, concatenate the new expressions to the existing "using" list. -1404 Otherwise, this resets the expression. -1405 dialect (str): the dialect used to parse the input expressions. -1406 copy (bool): if `False`, modify this expression instance in-place. -1407 opts (kwargs): other options to use to parse the input expressions. -1408 -1409 Returns: -1410 Join: the modified join expression. -1411 """ -1412 join = _apply_list_builder( -1413 *expressions, -1414 instance=self, -1415 arg="using", -1416 append=append, -1417 dialect=dialect, -1418 copy=copy, -1419 **opts, -1420 ) +1389 Example: +1390 >>> import sqlglot +1391 >>> sqlglot.parse_one("JOIN x", into=Join).on("y = 1").sql() +1392 'JOIN x ON y = 1' +1393 +1394 Args: +1395 *expressions (str | Expression): the SQL code strings to parse. +1396 If an `Expression` instance is passed, it will be used as-is. +1397 Multiple expressions are combined with an AND operator. +1398 append (bool): if `True`, AND the new expressions to any existing expression. +1399 Otherwise, this resets the expression. +1400 dialect (str): the dialect used to parse the input expressions. +1401 copy (bool): if `False`, modify this expression instance in-place. +1402 opts (kwargs): other options to use to parse the input expressions. +1403 +1404 Returns: +1405 Join: the modified join expression. +1406 """ +1407 join = _apply_conjunction_builder( +1408 *expressions, +1409 instance=self, +1410 arg="on", +1411 append=append, +1412 dialect=dialect, +1413 copy=copy, +1414 **opts, +1415 ) +1416 +1417 if join.kind == "CROSS": +1418 join.set("kind", None) +1419 +1420 return join 1421 -1422 if join.kind == "CROSS": -1423 join.set("kind", None) -1424 -1425 return join -1426 -1427 -1428class Lateral(UDTF): -1429 arg_types = {"this": True, "view": False, "outer": False, "alias": False} +1422 def using(self, *expressions, append=True, dialect=None, copy=True, **opts): +1423 """ +1424 Append to or set the USING expressions. +1425 +1426 Example: +1427 >>> import sqlglot +1428 >>> sqlglot.parse_one("JOIN x", into=Join).using("foo", "bla").sql() +1429 'JOIN x USING (foo, bla)' 1430 -1431 -1432class MatchRecognize(Expression): -1433 arg_types = { -1434 "partition_by": False, -1435 "order": False, -1436 "measures": False, -1437 "rows": False, -1438 "after": False, -1439 "pattern": False, -1440 "define": False, -1441 } -1442 -1443 -1444# Clickhouse FROM FINAL modifier -1445# https://clickhouse.com/docs/en/sql-reference/statements/select/from/#final-modifier -1446class Final(Expression): -1447 pass -1448 -1449 -1450class Offset(Expression): -1451 arg_types = {"this": False, "expression": True} +1431 Args: +1432 *expressions (str | Expression): the SQL code strings to parse. +1433 If an `Expression` instance is passed, it will be used as-is. +1434 append (bool): if `True`, concatenate the new expressions to the existing "using" list. +1435 Otherwise, this resets the expression. +1436 dialect (str): the dialect used to parse the input expressions. +1437 copy (bool): if `False`, modify this expression instance in-place. +1438 opts (kwargs): other options to use to parse the input expressions. +1439 +1440 Returns: +1441 Join: the modified join expression. +1442 """ +1443 join = _apply_list_builder( +1444 *expressions, +1445 instance=self, +1446 arg="using", +1447 append=append, +1448 dialect=dialect, +1449 copy=copy, +1450 **opts, +1451 ) 1452 -1453 -1454class Order(Expression): -1455 arg_types = {"this": False, "expressions": True} -1456 +1453 if join.kind == "CROSS": +1454 join.set("kind", None) +1455 +1456 return join 1457 -1458# hive specific sorts -1459# https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy -1460class Cluster(Order): -1461 pass +1458 +1459class Lateral(UDTF): +1460 arg_types = {"this": True, "view": False, "outer": False, "alias": False} +1461 1462 -1463 -1464class Distribute(Order): -1465 pass -1466 -1467 -1468class Sort(Order): -1469 pass -1470 -1471 -1472class Ordered(Expression): -1473 arg_types = {"this": True, "desc": True, "nulls_first": True} +1463class MatchRecognize(Expression): +1464 arg_types = { +1465 "partition_by": False, +1466 "order": False, +1467 "measures": False, +1468 "rows": False, +1469 "after": False, +1470 "pattern": False, +1471 "define": False, +1472 } +1473 1474 -1475 -1476class Property(Expression): -1477 arg_types = {"this": True, "value": True} -1478 +1475# Clickhouse FROM FINAL modifier +1476# https://clickhouse.com/docs/en/sql-reference/statements/select/from/#final-modifier +1477class Final(Expression): +1478 pass 1479 -1480class AfterJournalProperty(Property): -1481 arg_types = {"no": True, "dual": False, "local": False} -1482 +1480 +1481class Offset(Expression): +1482 arg_types = {"this": False, "expression": True} 1483 -1484class AlgorithmProperty(Property): -1485 arg_types = {"this": True} -1486 +1484 +1485class Order(Expression): +1486 arg_types = {"this": False, "expressions": True} 1487 -1488class AutoIncrementProperty(Property): -1489 arg_types = {"this": True} -1490 -1491 -1492class BlockCompressionProperty(Property): -1493 arg_types = {"autotemp": False, "always": False, "default": True, "manual": True, "never": True} +1488 +1489# hive specific sorts +1490# https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy +1491class Cluster(Order): +1492 pass +1493 1494 -1495 -1496class CharacterSetProperty(Property): -1497 arg_types = {"this": True, "default": True} +1495class Distribute(Order): +1496 pass +1497 1498 -1499 -1500class ChecksumProperty(Property): -1501 arg_types = {"on": False, "default": False} +1499class Sort(Order): +1500 pass +1501 1502 -1503 -1504class CollateProperty(Property): -1505 arg_types = {"this": True} +1503class Ordered(Expression): +1504 arg_types = {"this": True, "desc": True, "nulls_first": True} +1505 1506 -1507 -1508class DataBlocksizeProperty(Property): -1509 arg_types = {"size": False, "units": False, "min": False, "default": False} +1507class Property(Expression): +1508 arg_types = {"this": True, "value": True} +1509 1510 -1511 -1512class DefinerProperty(Property): -1513 arg_types = {"this": True} +1511class AfterJournalProperty(Property): +1512 arg_types = {"no": True, "dual": False, "local": False} +1513 1514 -1515 -1516class DistKeyProperty(Property): -1517 arg_types = {"this": True} +1515class AlgorithmProperty(Property): +1516 arg_types = {"this": True} +1517 1518 -1519 -1520class DistStyleProperty(Property): -1521 arg_types = {"this": True} +1519class AutoIncrementProperty(Property): +1520 arg_types = {"this": True} +1521 1522 -1523 -1524class EngineProperty(Property): -1525 arg_types = {"this": True} +1523class BlockCompressionProperty(Property): +1524 arg_types = {"autotemp": False, "always": False, "default": True, "manual": True, "never": True} +1525 1526 -1527 -1528class ExecuteAsProperty(Property): -1529 arg_types = {"this": True} +1527class CharacterSetProperty(Property): +1528 arg_types = {"this": True, "default": True} +1529 1530 -1531 -1532class ExternalProperty(Property): -1533 arg_types = {"this": False} +1531class ChecksumProperty(Property): +1532 arg_types = {"on": False, "default": False} +1533 1534 -1535 -1536class FallbackProperty(Property): -1537 arg_types = {"no": True, "protection": False} +1535class CollateProperty(Property): +1536 arg_types = {"this": True} +1537 1538 -1539 -1540class FileFormatProperty(Property): -1541 arg_types = {"this": True} +1539class DataBlocksizeProperty(Property): +1540 arg_types = {"size": False, "units": False, "min": False, "default": False} +1541 1542 -1543 -1544class FreespaceProperty(Property): -1545 arg_types = {"this": True, "percent": False} +1543class DefinerProperty(Property): +1544 arg_types = {"this": True} +1545 1546 -1547 -1548class IsolatedLoadingProperty(Property): -1549 arg_types = { -1550 "no": True, -1551 "concurrent": True, -1552 "for_all": True, -1553 "for_insert": True, -1554 "for_none": True, -1555 } -1556 +1547class DistKeyProperty(Property): +1548 arg_types = {"this": True} +1549 +1550 +1551class DistStyleProperty(Property): +1552 arg_types = {"this": True} +1553 +1554 +1555class EngineProperty(Property): +1556 arg_types = {"this": True} 1557 -1558class JournalProperty(Property): -1559 arg_types = {"no": True, "dual": False, "before": False} -1560 +1558 +1559class ExecuteAsProperty(Property): +1560 arg_types = {"this": True} 1561 -1562class LanguageProperty(Property): -1563 arg_types = {"this": True} -1564 +1562 +1563class ExternalProperty(Property): +1564 arg_types = {"this": False} 1565 -1566class LikeProperty(Property): -1567 arg_types = {"this": True, "expressions": False} -1568 +1566 +1567class FallbackProperty(Property): +1568 arg_types = {"no": True, "protection": False} 1569 -1570class LocationProperty(Property): -1571 arg_types = {"this": True} -1572 +1570 +1571class FileFormatProperty(Property): +1572 arg_types = {"this": True} 1573 -1574class LockingProperty(Property): -1575 arg_types = { -1576 "this": False, -1577 "kind": True, -1578 "for_or_in": True, -1579 "lock_type": True, -1580 "override": False, -1581 } -1582 -1583 -1584class LogProperty(Property): -1585 arg_types = {"no": True} -1586 +1574 +1575class FreespaceProperty(Property): +1576 arg_types = {"this": True, "percent": False} +1577 +1578 +1579class IsolatedLoadingProperty(Property): +1580 arg_types = { +1581 "no": True, +1582 "concurrent": True, +1583 "for_all": True, +1584 "for_insert": True, +1585 "for_none": True, +1586 } 1587 -1588class MaterializedProperty(Property): -1589 arg_types = {"this": False} -1590 +1588 +1589class JournalProperty(Property): +1590 arg_types = {"no": True, "dual": False, "before": False} 1591 -1592class MergeBlockRatioProperty(Property): -1593 arg_types = {"this": False, "no": False, "default": False, "percent": False} -1594 +1592 +1593class LanguageProperty(Property): +1594 arg_types = {"this": True} 1595 -1596class NoPrimaryIndexProperty(Property): -1597 arg_types = {"this": False} -1598 +1596 +1597class LikeProperty(Property): +1598 arg_types = {"this": True, "expressions": False} 1599 -1600class OnCommitProperty(Property): -1601 arg_type = {"this": False} -1602 +1600 +1601class LocationProperty(Property): +1602 arg_types = {"this": True} 1603 -1604class PartitionedByProperty(Property): -1605 arg_types = {"this": True} -1606 -1607 -1608class ReturnsProperty(Property): -1609 arg_types = {"this": True, "is_table": False, "table": False} -1610 -1611 -1612class RowFormatDelimitedProperty(Property): -1613 # https://cwiki.apache.org/confluence/display/hive/languagemanual+dml -1614 arg_types = { -1615 "fields": False, -1616 "escaped": False, -1617 "collection_items": False, -1618 "map_keys": False, -1619 "lines": False, -1620 "null": False, -1621 "serde": False, -1622 } -1623 -1624 -1625class RowFormatSerdeProperty(Property): -1626 arg_types = {"this": True} -1627 -1628 -1629class SchemaCommentProperty(Property): -1630 arg_types = {"this": True} -1631 -1632 -1633class SerdeProperties(Property): -1634 arg_types = {"expressions": True} -1635 -1636 -1637class SetProperty(Property): -1638 arg_types = {"multi": True} -1639 -1640 -1641class SortKeyProperty(Property): -1642 arg_types = {"this": True, "compound": False} -1643 -1644 -1645class SqlSecurityProperty(Property): -1646 arg_types = {"definer": True} -1647 -1648 -1649class TableFormatProperty(Property): -1650 arg_types = {"this": True} -1651 -1652 -1653class TemporaryProperty(Property): -1654 arg_types = {"global_": True} +1604 +1605class LockingProperty(Property): +1606 arg_types = { +1607 "this": False, +1608 "kind": True, +1609 "for_or_in": True, +1610 "lock_type": True, +1611 "override": False, +1612 } +1613 +1614 +1615class LogProperty(Property): +1616 arg_types = {"no": True} +1617 +1618 +1619class MaterializedProperty(Property): +1620 arg_types = {"this": False} +1621 +1622 +1623class MergeBlockRatioProperty(Property): +1624 arg_types = {"this": False, "no": False, "default": False, "percent": False} +1625 +1626 +1627class NoPrimaryIndexProperty(Property): +1628 arg_types = {"this": False} +1629 +1630 +1631class OnCommitProperty(Property): +1632 arg_type = {"this": False} +1633 +1634 +1635class PartitionedByProperty(Property): +1636 arg_types = {"this": True} +1637 +1638 +1639class ReturnsProperty(Property): +1640 arg_types = {"this": True, "is_table": False, "table": False} +1641 +1642 +1643class RowFormatDelimitedProperty(Property): +1644 # https://cwiki.apache.org/confluence/display/hive/languagemanual+dml +1645 arg_types = { +1646 "fields": False, +1647 "escaped": False, +1648 "collection_items": False, +1649 "map_keys": False, +1650 "lines": False, +1651 "null": False, +1652 "serde": False, +1653 } +1654 1655 -1656 -1657class TransientProperty(Property): -1658 arg_types = {"this": False} +1656class RowFormatSerdeProperty(Property): +1657 arg_types = {"this": True} +1658 1659 -1660 -1661class VolatilityProperty(Property): -1662 arg_types = {"this": True} +1660class SchemaCommentProperty(Property): +1661 arg_types = {"this": True} +1662 1663 -1664 -1665class WithDataProperty(Property): -1666 arg_types = {"no": True, "statistics": False} +1664class SerdeProperties(Property): +1665 arg_types = {"expressions": True} +1666 1667 -1668 -1669class WithJournalTableProperty(Property): -1670 arg_types = {"this": True} +1668class SetProperty(Property): +1669 arg_types = {"multi": True} +1670 1671 -1672 -1673class Properties(Expression): -1674 arg_types = {"expressions": True} +1672class SortKeyProperty(Property): +1673 arg_types = {"this": True, "compound": False} +1674 1675 -1676 NAME_TO_PROPERTY = { -1677 "ALGORITHM": AlgorithmProperty, -1678 "AUTO_INCREMENT": AutoIncrementProperty, -1679 "CHARACTER SET": CharacterSetProperty, -1680 "COLLATE": CollateProperty, -1681 "COMMENT": SchemaCommentProperty, -1682 "DEFINER": DefinerProperty, -1683 "DISTKEY": DistKeyProperty, -1684 "DISTSTYLE": DistStyleProperty, -1685 "ENGINE": EngineProperty, -1686 "EXECUTE AS": ExecuteAsProperty, -1687 "FORMAT": FileFormatProperty, -1688 "LANGUAGE": LanguageProperty, -1689 "LOCATION": LocationProperty, -1690 "PARTITIONED_BY": PartitionedByProperty, -1691 "RETURNS": ReturnsProperty, -1692 "SORTKEY": SortKeyProperty, -1693 "TABLE_FORMAT": TableFormatProperty, -1694 } +1676class SqlSecurityProperty(Property): +1677 arg_types = {"definer": True} +1678 +1679 +1680class TableFormatProperty(Property): +1681 arg_types = {"this": True} +1682 +1683 +1684class TemporaryProperty(Property): +1685 arg_types = {"global_": True} +1686 +1687 +1688class TransientProperty(Property): +1689 arg_types = {"this": False} +1690 +1691 +1692class VolatilityProperty(Property): +1693 arg_types = {"this": True} +1694 1695 -1696 PROPERTY_TO_NAME = {v: k for k, v in NAME_TO_PROPERTY.items()} -1697 -1698 # CREATE property locations -1699 # Form: schema specified -1700 # create [POST_CREATE] -1701 # table a [POST_NAME] -1702 # (b int) [POST_SCHEMA] -1703 # with ([POST_WITH]) -1704 # index (b) [POST_INDEX] -1705 # -1706 # Form: alias selection -1707 # create [POST_CREATE] -1708 # table a [POST_NAME] -1709 # as [POST_ALIAS] (select * from b) [POST_EXPRESSION] -1710 # index (c) [POST_INDEX] -1711 class Location(AutoName): -1712 POST_CREATE = auto() -1713 POST_NAME = auto() -1714 POST_SCHEMA = auto() -1715 POST_WITH = auto() -1716 POST_ALIAS = auto() -1717 POST_EXPRESSION = auto() -1718 POST_INDEX = auto() -1719 UNSUPPORTED = auto() -1720 -1721 @classmethod -1722 def from_dict(cls, properties_dict) -> Properties: -1723 expressions = [] -1724 for key, value in properties_dict.items(): -1725 property_cls = cls.NAME_TO_PROPERTY.get(key.upper()) -1726 if property_cls: -1727 expressions.append(property_cls(this=convert(value))) -1728 else: -1729 expressions.append(Property(this=Literal.string(key), value=convert(value))) -1730 -1731 return cls(expressions=expressions) -1732 -1733 -1734class Qualify(Expression): -1735 pass -1736 -1737 -1738# https://www.ibm.com/docs/en/ias?topic=procedures-return-statement-in-sql -1739class Return(Expression): -1740 pass -1741 -1742 -1743class Reference(Expression): -1744 arg_types = {"this": True, "expressions": False, "options": False} -1745 -1746 -1747class Tuple(Expression): -1748 arg_types = {"expressions": False} -1749 -1750 -1751class Subqueryable(Unionable): -1752 def subquery(self, alias=None, copy=True) -> Subquery: -1753 """ -1754 Convert this expression to an aliased expression that can be used as a Subquery. -1755 -1756 Example: -1757 >>> subquery = Select().select("x").from_("tbl").subquery() -1758 >>> Select().select("x").from_(subquery).sql() -1759 'SELECT x FROM (SELECT x FROM tbl)' -1760 -1761 Args: -1762 alias (str | Identifier): an optional alias for the subquery -1763 copy (bool): if `False`, modify this expression instance in-place. +1696class WithDataProperty(Property): +1697 arg_types = {"no": True, "statistics": False} +1698 +1699 +1700class WithJournalTableProperty(Property): +1701 arg_types = {"this": True} +1702 +1703 +1704class Properties(Expression): +1705 arg_types = {"expressions": True} +1706 +1707 NAME_TO_PROPERTY = { +1708 "ALGORITHM": AlgorithmProperty, +1709 "AUTO_INCREMENT": AutoIncrementProperty, +1710 "CHARACTER SET": CharacterSetProperty, +1711 "COLLATE": CollateProperty, +1712 "COMMENT": SchemaCommentProperty, +1713 "DEFINER": DefinerProperty, +1714 "DISTKEY": DistKeyProperty, +1715 "DISTSTYLE": DistStyleProperty, +1716 "ENGINE": EngineProperty, +1717 "EXECUTE AS": ExecuteAsProperty, +1718 "FORMAT": FileFormatProperty, +1719 "LANGUAGE": LanguageProperty, +1720 "LOCATION": LocationProperty, +1721 "PARTITIONED_BY": PartitionedByProperty, +1722 "RETURNS": ReturnsProperty, +1723 "SORTKEY": SortKeyProperty, +1724 "TABLE_FORMAT": TableFormatProperty, +1725 } +1726 +1727 PROPERTY_TO_NAME = {v: k for k, v in NAME_TO_PROPERTY.items()} +1728 +1729 # CREATE property locations +1730 # Form: schema specified +1731 # create [POST_CREATE] +1732 # table a [POST_NAME] +1733 # (b int) [POST_SCHEMA] +1734 # with ([POST_WITH]) +1735 # index (b) [POST_INDEX] +1736 # +1737 # Form: alias selection +1738 # create [POST_CREATE] +1739 # table a [POST_NAME] +1740 # as [POST_ALIAS] (select * from b) [POST_EXPRESSION] +1741 # index (c) [POST_INDEX] +1742 class Location(AutoName): +1743 POST_CREATE = auto() +1744 POST_NAME = auto() +1745 POST_SCHEMA = auto() +1746 POST_WITH = auto() +1747 POST_ALIAS = auto() +1748 POST_EXPRESSION = auto() +1749 POST_INDEX = auto() +1750 UNSUPPORTED = auto() +1751 +1752 @classmethod +1753 def from_dict(cls, properties_dict) -> Properties: +1754 expressions = [] +1755 for key, value in properties_dict.items(): +1756 property_cls = cls.NAME_TO_PROPERTY.get(key.upper()) +1757 if property_cls: +1758 expressions.append(property_cls(this=convert(value))) +1759 else: +1760 expressions.append(Property(this=Literal.string(key), value=convert(value))) +1761 +1762 return cls(expressions=expressions) +1763 1764 -1765 Returns: -1766 Alias: the subquery -1767 """ -1768 instance = _maybe_copy(self, copy) -1769 return Subquery( -1770 this=instance, -1771 alias=TableAlias(this=to_identifier(alias)), -1772 ) +1765class Qualify(Expression): +1766 pass +1767 +1768 +1769# https://www.ibm.com/docs/en/ias?topic=procedures-return-statement-in-sql +1770class Return(Expression): +1771 pass +1772 1773 -1774 def limit(self, expression, dialect=None, copy=True, **opts) -> Select: -1775 raise NotImplementedError +1774class Reference(Expression): +1775 arg_types = {"this": True, "expressions": False, "options": False} 1776 -1777 @property -1778 def ctes(self): -1779 with_ = self.args.get("with") -1780 if not with_: -1781 return [] -1782 return with_.expressions -1783 -1784 @property -1785 def selects(self): -1786 raise NotImplementedError("Subqueryable objects must implement `selects`") -1787 -1788 @property -1789 def named_selects(self): -1790 raise NotImplementedError("Subqueryable objects must implement `named_selects`") +1777 +1778class Tuple(Expression): +1779 arg_types = {"expressions": False} +1780 +1781 +1782class Subqueryable(Unionable): +1783 def subquery(self, alias=None, copy=True) -> Subquery: +1784 """ +1785 Convert this expression to an aliased expression that can be used as a Subquery. +1786 +1787 Example: +1788 >>> subquery = Select().select("x").from_("tbl").subquery() +1789 >>> Select().select("x").from_(subquery).sql() +1790 'SELECT x FROM (SELECT x FROM tbl)' 1791 -1792 def with_( -1793 self, -1794 alias, -1795 as_, -1796 recursive=None, -1797 append=True, -1798 dialect=None, -1799 copy=True, -1800 **opts, -1801 ): -1802 """ -1803 Append to or set the common table expressions. +1792 Args: +1793 alias (str | Identifier): an optional alias for the subquery +1794 copy (bool): if `False`, modify this expression instance in-place. +1795 +1796 Returns: +1797 Alias: the subquery +1798 """ +1799 instance = _maybe_copy(self, copy) +1800 return Subquery( +1801 this=instance, +1802 alias=TableAlias(this=to_identifier(alias)) if alias else None, +1803 ) 1804 -1805 Example: -1806 >>> Select().with_("tbl2", as_="SELECT * FROM tbl").select("x").from_("tbl2").sql() -1807 'WITH tbl2 AS (SELECT * FROM tbl) SELECT x FROM tbl2' -1808 -1809 Args: -1810 alias (str | Expression): the SQL code string to parse as the table name. -1811 If an `Expression` instance is passed, this is used as-is. -1812 as_ (str | Expression): the SQL code string to parse as the table expression. -1813 If an `Expression` instance is passed, it will be used as-is. -1814 recursive (bool): set the RECURSIVE part of the expression. Defaults to `False`. -1815 append (bool): if `True`, add to any existing expressions. -1816 Otherwise, this resets the expressions. -1817 dialect (str): the dialect used to parse the input expression. -1818 copy (bool): if `False`, modify this expression instance in-place. -1819 opts (kwargs): other options to use to parse the input expressions. -1820 -1821 Returns: -1822 Select: the modified expression. -1823 """ -1824 alias_expression = maybe_parse( -1825 alias, -1826 dialect=dialect, -1827 into=TableAlias, -1828 **opts, -1829 ) -1830 as_expression = maybe_parse( -1831 as_, -1832 dialect=dialect, -1833 **opts, -1834 ) -1835 cte = CTE( -1836 this=as_expression, -1837 alias=alias_expression, -1838 ) -1839 return _apply_child_list_builder( -1840 cte, -1841 instance=self, -1842 arg="with", -1843 append=append, -1844 copy=copy, -1845 into=With, -1846 properties={"recursive": recursive or False}, -1847 ) -1848 -1849 -1850QUERY_MODIFIERS = { -1851 "match": False, -1852 "laterals": False, -1853 "joins": False, -1854 "pivots": False, -1855 "where": False, -1856 "group": False, -1857 "having": False, -1858 "qualify": False, -1859 "windows": False, -1860 "distribute": False, -1861 "sort": False, -1862 "cluster": False, -1863 "order": False, -1864 "limit": False, -1865 "offset": False, -1866 "lock": False, -1867 "sample": False, -1868} -1869 -1870 -1871class Table(Expression): -1872 arg_types = { -1873 "this": True, -1874 "alias": False, -1875 "db": False, -1876 "catalog": False, -1877 "laterals": False, -1878 "joins": False, -1879 "pivots": False, -1880 "hints": False, -1881 "system_time": False, -1882 } -1883 -1884 @property -1885 def db(self) -> str: -1886 return self.text("db") -1887 -1888 @property -1889 def catalog(self) -> str: -1890 return self.text("catalog") -1891 -1892 -1893# See the TSQL "Querying data in a system-versioned temporal table" page -1894class SystemTime(Expression): -1895 arg_types = { -1896 "this": False, -1897 "expression": False, -1898 "kind": True, -1899 } +1805 def limit(self, expression, dialect=None, copy=True, **opts) -> Select: +1806 raise NotImplementedError +1807 +1808 @property +1809 def ctes(self): +1810 with_ = self.args.get("with") +1811 if not with_: +1812 return [] +1813 return with_.expressions +1814 +1815 @property +1816 def selects(self): +1817 raise NotImplementedError("Subqueryable objects must implement `selects`") +1818 +1819 @property +1820 def named_selects(self): +1821 raise NotImplementedError("Subqueryable objects must implement `named_selects`") +1822 +1823 def with_( +1824 self, +1825 alias, +1826 as_, +1827 recursive=None, +1828 append=True, +1829 dialect=None, +1830 copy=True, +1831 **opts, +1832 ): +1833 """ +1834 Append to or set the common table expressions. +1835 +1836 Example: +1837 >>> Select().with_("tbl2", as_="SELECT * FROM tbl").select("x").from_("tbl2").sql() +1838 'WITH tbl2 AS (SELECT * FROM tbl) SELECT x FROM tbl2' +1839 +1840 Args: +1841 alias (str | Expression): the SQL code string to parse as the table name. +1842 If an `Expression` instance is passed, this is used as-is. +1843 as_ (str | Expression): the SQL code string to parse as the table expression. +1844 If an `Expression` instance is passed, it will be used as-is. +1845 recursive (bool): set the RECURSIVE part of the expression. Defaults to `False`. +1846 append (bool): if `True`, add to any existing expressions. +1847 Otherwise, this resets the expressions. +1848 dialect (str): the dialect used to parse the input expression. +1849 copy (bool): if `False`, modify this expression instance in-place. +1850 opts (kwargs): other options to use to parse the input expressions. +1851 +1852 Returns: +1853 Select: the modified expression. +1854 """ +1855 alias_expression = maybe_parse( +1856 alias, +1857 dialect=dialect, +1858 into=TableAlias, +1859 **opts, +1860 ) +1861 as_expression = maybe_parse( +1862 as_, +1863 dialect=dialect, +1864 **opts, +1865 ) +1866 cte = CTE( +1867 this=as_expression, +1868 alias=alias_expression, +1869 ) +1870 return _apply_child_list_builder( +1871 cte, +1872 instance=self, +1873 arg="with", +1874 append=append, +1875 copy=copy, +1876 into=With, +1877 properties={"recursive": recursive or False}, +1878 ) +1879 +1880 +1881QUERY_MODIFIERS = { +1882 "match": False, +1883 "laterals": False, +1884 "joins": False, +1885 "pivots": False, +1886 "where": False, +1887 "group": False, +1888 "having": False, +1889 "qualify": False, +1890 "windows": False, +1891 "distribute": False, +1892 "sort": False, +1893 "cluster": False, +1894 "order": False, +1895 "limit": False, +1896 "offset": False, +1897 "lock": False, +1898 "sample": False, +1899} 1900 1901 -1902class Union(Subqueryable): +1902class Table(Expression): 1903 arg_types = { -1904 "with": False, -1905 "this": True, -1906 "expression": True, -1907 "distinct": False, -1908 **QUERY_MODIFIERS, -1909 } -1910 -1911 def limit(self, expression, dialect=None, copy=True, **opts) -> Select: -1912 """ -1913 Set the LIMIT expression. +1904 "this": True, +1905 "alias": False, +1906 "db": False, +1907 "catalog": False, +1908 "laterals": False, +1909 "joins": False, +1910 "pivots": False, +1911 "hints": False, +1912 "system_time": False, +1913 } 1914 -1915 Example: -1916 >>> select("1").union(select("1")).limit(1).sql() -1917 'SELECT * FROM (SELECT 1 UNION SELECT 1) AS _l_0 LIMIT 1' +1915 @property +1916 def db(self) -> str: +1917 return self.text("db") 1918 -1919 Args: -1920 expression (str | int | Expression): the SQL code string to parse. -1921 This can also be an integer. -1922 If a `Limit` instance is passed, this is used as-is. -1923 If another `Expression` instance is passed, it will be wrapped in a `Limit`. -1924 dialect (str): the dialect used to parse the input expression. -1925 copy (bool): if `False`, modify this expression instance in-place. -1926 opts (kwargs): other options to use to parse the input expressions. -1927 -1928 Returns: -1929 Select: The limited subqueryable. -1930 """ -1931 return ( -1932 select("*") -1933 .from_(self.subquery(alias="_l_0", copy=copy)) -1934 .limit(expression, dialect=dialect, copy=False, **opts) -1935 ) -1936 -1937 def select( -1938 self, -1939 *expressions: ExpOrStr, -1940 append: bool = True, -1941 dialect: DialectType = None, -1942 copy: bool = True, -1943 **opts, -1944 ) -> Union: -1945 """Append to or set the SELECT of the union recursively. -1946 -1947 Example: -1948 >>> from sqlglot import parse_one -1949 >>> parse_one("select a from x union select a from y union select a from z").select("b").sql() -1950 'SELECT a, b FROM x UNION SELECT a, b FROM y UNION SELECT a, b FROM z' -1951 -1952 Args: -1953 *expressions: the SQL code strings to parse. -1954 If an `Expression` instance is passed, it will be used as-is. -1955 append: if `True`, add to any existing expressions. -1956 Otherwise, this resets the expressions. -1957 dialect: the dialect used to parse the input expressions. -1958 copy: if `False`, modify this expression instance in-place. -1959 opts: other options to use to parse the input expressions. -1960 -1961 Returns: -1962 Union: the modified expression. -1963 """ -1964 this = self.copy() if copy else self -1965 this.this.unnest().select(*expressions, append=append, dialect=dialect, copy=False, **opts) -1966 this.expression.unnest().select( -1967 *expressions, append=append, dialect=dialect, copy=False, **opts -1968 ) -1969 return this -1970 -1971 @property -1972 def named_selects(self): -1973 return self.this.unnest().named_selects -1974 -1975 @property -1976 def is_star(self) -> bool: -1977 return self.this.is_star or self.expression.is_star -1978 -1979 @property -1980 def selects(self): -1981 return self.this.unnest().selects +1919 @property +1920 def catalog(self) -> str: +1921 return self.text("catalog") +1922 +1923 +1924# See the TSQL "Querying data in a system-versioned temporal table" page +1925class SystemTime(Expression): +1926 arg_types = { +1927 "this": False, +1928 "expression": False, +1929 "kind": True, +1930 } +1931 +1932 +1933class Union(Subqueryable): +1934 arg_types = { +1935 "with": False, +1936 "this": True, +1937 "expression": True, +1938 "distinct": False, +1939 **QUERY_MODIFIERS, +1940 } +1941 +1942 def limit(self, expression, dialect=None, copy=True, **opts) -> Select: +1943 """ +1944 Set the LIMIT expression. +1945 +1946 Example: +1947 >>> select("1").union(select("1")).limit(1).sql() +1948 'SELECT * FROM (SELECT 1 UNION SELECT 1) AS _l_0 LIMIT 1' +1949 +1950 Args: +1951 expression (str | int | Expression): the SQL code string to parse. +1952 This can also be an integer. +1953 If a `Limit` instance is passed, this is used as-is. +1954 If another `Expression` instance is passed, it will be wrapped in a `Limit`. +1955 dialect (str): the dialect used to parse the input expression. +1956 copy (bool): if `False`, modify this expression instance in-place. +1957 opts (kwargs): other options to use to parse the input expressions. +1958 +1959 Returns: +1960 Select: The limited subqueryable. +1961 """ +1962 return ( +1963 select("*") +1964 .from_(self.subquery(alias="_l_0", copy=copy)) +1965 .limit(expression, dialect=dialect, copy=False, **opts) +1966 ) +1967 +1968 def select( +1969 self, +1970 *expressions: ExpOrStr, +1971 append: bool = True, +1972 dialect: DialectType = None, +1973 copy: bool = True, +1974 **opts, +1975 ) -> Union: +1976 """Append to or set the SELECT of the union recursively. +1977 +1978 Example: +1979 >>> from sqlglot import parse_one +1980 >>> parse_one("select a from x union select a from y union select a from z").select("b").sql() +1981 'SELECT a, b FROM x UNION SELECT a, b FROM y UNION SELECT a, b FROM z' 1982 -1983 @property -1984 def left(self): -1985 return self.this -1986 -1987 @property -1988 def right(self): -1989 return self.expression -1990 +1983 Args: +1984 *expressions: the SQL code strings to parse. +1985 If an `Expression` instance is passed, it will be used as-is. +1986 append: if `True`, add to any existing expressions. +1987 Otherwise, this resets the expressions. +1988 dialect: the dialect used to parse the input expressions. +1989 copy: if `False`, modify this expression instance in-place. +1990 opts: other options to use to parse the input expressions. 1991 -1992class Except(Union): -1993 pass -1994 -1995 -1996class Intersect(Union): -1997 pass -1998 -1999 -2000class Unnest(UDTF): -2001 arg_types = { -2002 "expressions": True, -2003 "ordinality": False, -2004 "alias": False, -2005 "offset": False, -2006 } -2007 -2008 -2009class Update(Expression): -2010 arg_types = { -2011 "with": False, -2012 "this": False, -2013 "expressions": True, -2014 "from": False, -2015 "where": False, -2016 "returning": False, -2017 } -2018 -2019 -2020class Values(UDTF): -2021 arg_types = { -2022 "expressions": True, -2023 "ordinality": False, -2024 "alias": False, -2025 } +1992 Returns: +1993 Union: the modified expression. +1994 """ +1995 this = self.copy() if copy else self +1996 this.this.unnest().select(*expressions, append=append, dialect=dialect, copy=False, **opts) +1997 this.expression.unnest().select( +1998 *expressions, append=append, dialect=dialect, copy=False, **opts +1999 ) +2000 return this +2001 +2002 @property +2003 def named_selects(self): +2004 return self.this.unnest().named_selects +2005 +2006 @property +2007 def is_star(self) -> bool: +2008 return self.this.is_star or self.expression.is_star +2009 +2010 @property +2011 def selects(self): +2012 return self.this.unnest().selects +2013 +2014 @property +2015 def left(self): +2016 return self.this +2017 +2018 @property +2019 def right(self): +2020 return self.expression +2021 +2022 +2023class Except(Union): +2024 pass +2025 2026 -2027 -2028class Var(Expression): -2029 pass +2027class Intersect(Union): +2028 pass +2029 2030 -2031 -2032class Schema(Expression): -2033 arg_types = {"this": False, "expressions": False} -2034 -2035 -2036# Used to represent the FOR UPDATE and FOR SHARE locking read types. -2037# https://dev.mysql.com/doc/refman/8.0/en/innodb-locking-reads.html -2038class Lock(Expression): -2039 arg_types = {"update": True} -2040 -2041 -2042class Select(Subqueryable): -2043 arg_types = { -2044 "with": False, -2045 "expressions": False, -2046 "hint": False, -2047 "distinct": False, -2048 "into": False, -2049 "from": False, -2050 **QUERY_MODIFIERS, -2051 } -2052 -2053 def from_(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: -2054 """ -2055 Set the FROM expression. -2056 -2057 Example: -2058 >>> Select().from_("tbl").select("x").sql() -2059 'SELECT x FROM tbl' -2060 -2061 Args: -2062 *expressions (str | Expression): the SQL code strings to parse. -2063 If a `From` instance is passed, this is used as-is. -2064 If another `Expression` instance is passed, it will be wrapped in a `From`. -2065 append (bool): if `True`, add to any existing expressions. -2066 Otherwise, this flattens all the `From` expression into a single expression. -2067 dialect (str): the dialect used to parse the input expression. -2068 copy (bool): if `False`, modify this expression instance in-place. -2069 opts (kwargs): other options to use to parse the input expressions. -2070 -2071 Returns: -2072 Select: the modified expression. -2073 """ -2074 return _apply_child_list_builder( -2075 *expressions, -2076 instance=self, -2077 arg="from", -2078 append=append, -2079 copy=copy, -2080 prefix="FROM", -2081 into=From, -2082 dialect=dialect, -2083 **opts, -2084 ) -2085 -2086 def group_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: -2087 """ -2088 Set the GROUP BY expression. -2089 -2090 Example: -2091 >>> Select().from_("tbl").select("x", "COUNT(1)").group_by("x").sql() -2092 'SELECT x, COUNT(1) FROM tbl GROUP BY x' -2093 -2094 Args: -2095 *expressions (str | Expression): the SQL code strings to parse. -2096 If a `Group` instance is passed, this is used as-is. -2097 If another `Expression` instance is passed, it will be wrapped in a `Group`. -2098 If nothing is passed in then a group by is not applied to the expression -2099 append (bool): if `True`, add to any existing expressions. -2100 Otherwise, this flattens all the `Group` expression into a single expression. -2101 dialect (str): the dialect used to parse the input expression. -2102 copy (bool): if `False`, modify this expression instance in-place. -2103 opts (kwargs): other options to use to parse the input expressions. -2104 -2105 Returns: -2106 Select: the modified expression. -2107 """ -2108 if not expressions: -2109 return self if not copy else self.copy() -2110 return _apply_child_list_builder( -2111 *expressions, -2112 instance=self, -2113 arg="group", -2114 append=append, -2115 copy=copy, -2116 prefix="GROUP BY", -2117 into=Group, -2118 dialect=dialect, -2119 **opts, -2120 ) +2031class Unnest(UDTF): +2032 arg_types = { +2033 "expressions": True, +2034 "ordinality": False, +2035 "alias": False, +2036 "offset": False, +2037 } +2038 +2039 +2040class Update(Expression): +2041 arg_types = { +2042 "with": False, +2043 "this": False, +2044 "expressions": True, +2045 "from": False, +2046 "where": False, +2047 "returning": False, +2048 } +2049 +2050 +2051class Values(UDTF): +2052 arg_types = { +2053 "expressions": True, +2054 "ordinality": False, +2055 "alias": False, +2056 } +2057 +2058 +2059class Var(Expression): +2060 pass +2061 +2062 +2063class Schema(Expression): +2064 arg_types = {"this": False, "expressions": False} +2065 +2066 +2067# Used to represent the FOR UPDATE and FOR SHARE locking read types. +2068# https://dev.mysql.com/doc/refman/8.0/en/innodb-locking-reads.html +2069class Lock(Expression): +2070 arg_types = {"update": True} +2071 +2072 +2073class Select(Subqueryable): +2074 arg_types = { +2075 "with": False, +2076 "kind": False, +2077 "expressions": False, +2078 "hint": False, +2079 "distinct": False, +2080 "into": False, +2081 "from": False, +2082 **QUERY_MODIFIERS, +2083 } +2084 +2085 def from_(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: +2086 """ +2087 Set the FROM expression. +2088 +2089 Example: +2090 >>> Select().from_("tbl").select("x").sql() +2091 'SELECT x FROM tbl' +2092 +2093 Args: +2094 *expressions (str | Expression): the SQL code strings to parse. +2095 If a `From` instance is passed, this is used as-is. +2096 If another `Expression` instance is passed, it will be wrapped in a `From`. +2097 append (bool): if `True`, add to any existing expressions. +2098 Otherwise, this flattens all the `From` expression into a single expression. +2099 dialect (str): the dialect used to parse the input expression. +2100 copy (bool): if `False`, modify this expression instance in-place. +2101 opts (kwargs): other options to use to parse the input expressions. +2102 +2103 Returns: +2104 Select: the modified expression. +2105 """ +2106 return _apply_child_list_builder( +2107 *expressions, +2108 instance=self, +2109 arg="from", +2110 append=append, +2111 copy=copy, +2112 prefix="FROM", +2113 into=From, +2114 dialect=dialect, +2115 **opts, +2116 ) +2117 +2118 def group_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: +2119 """ +2120 Set the GROUP BY expression. 2121 -2122 def order_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: -2123 """ -2124 Set the ORDER BY expression. +2122 Example: +2123 >>> Select().from_("tbl").select("x", "COUNT(1)").group_by("x").sql() +2124 'SELECT x, COUNT(1) FROM tbl GROUP BY x' 2125 -2126 Example: -2127 >>> Select().from_("tbl").select("x").order_by("x DESC").sql() -2128 'SELECT x FROM tbl ORDER BY x DESC' -2129 -2130 Args: -2131 *expressions (str | Expression): the SQL code strings to parse. -2132 If a `Group` instance is passed, this is used as-is. -2133 If another `Expression` instance is passed, it will be wrapped in a `Order`. -2134 append (bool): if `True`, add to any existing expressions. -2135 Otherwise, this flattens all the `Order` expression into a single expression. -2136 dialect (str): the dialect used to parse the input expression. -2137 copy (bool): if `False`, modify this expression instance in-place. -2138 opts (kwargs): other options to use to parse the input expressions. -2139 -2140 Returns: -2141 Select: the modified expression. -2142 """ -2143 return _apply_child_list_builder( -2144 *expressions, -2145 instance=self, -2146 arg="order", -2147 append=append, -2148 copy=copy, -2149 prefix="ORDER BY", -2150 into=Order, -2151 dialect=dialect, -2152 **opts, -2153 ) -2154 -2155 def sort_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: -2156 """ -2157 Set the SORT BY expression. -2158 -2159 Example: -2160 >>> Select().from_("tbl").select("x").sort_by("x DESC").sql() -2161 'SELECT x FROM tbl SORT BY x DESC' -2162 -2163 Args: -2164 *expressions (str | Expression): the SQL code strings to parse. -2165 If a `Group` instance is passed, this is used as-is. -2166 If another `Expression` instance is passed, it will be wrapped in a `SORT`. -2167 append (bool): if `True`, add to any existing expressions. -2168 Otherwise, this flattens all the `Order` expression into a single expression. -2169 dialect (str): the dialect used to parse the input expression. -2170 copy (bool): if `False`, modify this expression instance in-place. -2171 opts (kwargs): other options to use to parse the input expressions. -2172 -2173 Returns: -2174 Select: the modified expression. -2175 """ -2176 return _apply_child_list_builder( -2177 *expressions, -2178 instance=self, -2179 arg="sort", -2180 append=append, -2181 copy=copy, -2182 prefix="SORT BY", -2183 into=Sort, -2184 dialect=dialect, -2185 **opts, -2186 ) -2187 -2188 def cluster_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: -2189 """ -2190 Set the CLUSTER BY expression. -2191 -2192 Example: -2193 >>> Select().from_("tbl").select("x").cluster_by("x DESC").sql() -2194 'SELECT x FROM tbl CLUSTER BY x DESC' -2195 -2196 Args: -2197 *expressions (str | Expression): the SQL code strings to parse. -2198 If a `Group` instance is passed, this is used as-is. -2199 If another `Expression` instance is passed, it will be wrapped in a `Cluster`. -2200 append (bool): if `True`, add to any existing expressions. -2201 Otherwise, this flattens all the `Order` expression into a single expression. -2202 dialect (str): the dialect used to parse the input expression. -2203 copy (bool): if `False`, modify this expression instance in-place. -2204 opts (kwargs): other options to use to parse the input expressions. -2205 -2206 Returns: -2207 Select: the modified expression. -2208 """ -2209 return _apply_child_list_builder( -2210 *expressions, -2211 instance=self, -2212 arg="cluster", -2213 append=append, -2214 copy=copy, -2215 prefix="CLUSTER BY", -2216 into=Cluster, -2217 dialect=dialect, -2218 **opts, -2219 ) -2220 -2221 def limit(self, expression, dialect=None, copy=True, **opts) -> Select: -2222 """ -2223 Set the LIMIT expression. -2224 -2225 Example: -2226 >>> Select().from_("tbl").select("x").limit(10).sql() -2227 'SELECT x FROM tbl LIMIT 10' -2228 -2229 Args: -2230 expression (str | int | Expression): the SQL code string to parse. -2231 This can also be an integer. -2232 If a `Limit` instance is passed, this is used as-is. -2233 If another `Expression` instance is passed, it will be wrapped in a `Limit`. +2126 Args: +2127 *expressions (str | Expression): the SQL code strings to parse. +2128 If a `Group` instance is passed, this is used as-is. +2129 If another `Expression` instance is passed, it will be wrapped in a `Group`. +2130 If nothing is passed in then a group by is not applied to the expression +2131 append (bool): if `True`, add to any existing expressions. +2132 Otherwise, this flattens all the `Group` expression into a single expression. +2133 dialect (str): the dialect used to parse the input expression. +2134 copy (bool): if `False`, modify this expression instance in-place. +2135 opts (kwargs): other options to use to parse the input expressions. +2136 +2137 Returns: +2138 Select: the modified expression. +2139 """ +2140 if not expressions: +2141 return self if not copy else self.copy() +2142 return _apply_child_list_builder( +2143 *expressions, +2144 instance=self, +2145 arg="group", +2146 append=append, +2147 copy=copy, +2148 prefix="GROUP BY", +2149 into=Group, +2150 dialect=dialect, +2151 **opts, +2152 ) +2153 +2154 def order_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: +2155 """ +2156 Set the ORDER BY expression. +2157 +2158 Example: +2159 >>> Select().from_("tbl").select("x").order_by("x DESC").sql() +2160 'SELECT x FROM tbl ORDER BY x DESC' +2161 +2162 Args: +2163 *expressions (str | Expression): the SQL code strings to parse. +2164 If a `Group` instance is passed, this is used as-is. +2165 If another `Expression` instance is passed, it will be wrapped in a `Order`. +2166 append (bool): if `True`, add to any existing expressions. +2167 Otherwise, this flattens all the `Order` expression into a single expression. +2168 dialect (str): the dialect used to parse the input expression. +2169 copy (bool): if `False`, modify this expression instance in-place. +2170 opts (kwargs): other options to use to parse the input expressions. +2171 +2172 Returns: +2173 Select: the modified expression. +2174 """ +2175 return _apply_child_list_builder( +2176 *expressions, +2177 instance=self, +2178 arg="order", +2179 append=append, +2180 copy=copy, +2181 prefix="ORDER BY", +2182 into=Order, +2183 dialect=dialect, +2184 **opts, +2185 ) +2186 +2187 def sort_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: +2188 """ +2189 Set the SORT BY expression. +2190 +2191 Example: +2192 >>> Select().from_("tbl").select("x").sort_by("x DESC").sql() +2193 'SELECT x FROM tbl SORT BY x DESC' +2194 +2195 Args: +2196 *expressions (str | Expression): the SQL code strings to parse. +2197 If a `Group` instance is passed, this is used as-is. +2198 If another `Expression` instance is passed, it will be wrapped in a `SORT`. +2199 append (bool): if `True`, add to any existing expressions. +2200 Otherwise, this flattens all the `Order` expression into a single expression. +2201 dialect (str): the dialect used to parse the input expression. +2202 copy (bool): if `False`, modify this expression instance in-place. +2203 opts (kwargs): other options to use to parse the input expressions. +2204 +2205 Returns: +2206 Select: the modified expression. +2207 """ +2208 return _apply_child_list_builder( +2209 *expressions, +2210 instance=self, +2211 arg="sort", +2212 append=append, +2213 copy=copy, +2214 prefix="SORT BY", +2215 into=Sort, +2216 dialect=dialect, +2217 **opts, +2218 ) +2219 +2220 def cluster_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: +2221 """ +2222 Set the CLUSTER BY expression. +2223 +2224 Example: +2225 >>> Select().from_("tbl").select("x").cluster_by("x DESC").sql() +2226 'SELECT x FROM tbl CLUSTER BY x DESC' +2227 +2228 Args: +2229 *expressions (str | Expression): the SQL code strings to parse. +2230 If a `Group` instance is passed, this is used as-is. +2231 If another `Expression` instance is passed, it will be wrapped in a `Cluster`. +2232 append (bool): if `True`, add to any existing expressions. +2233 Otherwise, this flattens all the `Order` expression into a single expression. 2234 dialect (str): the dialect used to parse the input expression. 2235 copy (bool): if `False`, modify this expression instance in-place. 2236 opts (kwargs): other options to use to parse the input expressions. @@ -5195,251 +5246,251 @@ SQL expressions, such as sqlglot.expressions.select< 2238 Returns: 2239 Select: the modified expression. 2240 """ -2241 return _apply_builder( -2242 expression=expression, +2241 return _apply_child_list_builder( +2242 *expressions, 2243 instance=self, -2244 arg="limit", -2245 into=Limit, -2246 prefix="LIMIT", -2247 dialect=dialect, -2248 copy=copy, -2249 **opts, -2250 ) -2251 -2252 def offset(self, expression, dialect=None, copy=True, **opts) -> Select: -2253 """ -2254 Set the OFFSET expression. -2255 -2256 Example: -2257 >>> Select().from_("tbl").select("x").offset(10).sql() -2258 'SELECT x FROM tbl OFFSET 10' -2259 -2260 Args: -2261 expression (str | int | Expression): the SQL code string to parse. -2262 This can also be an integer. -2263 If a `Offset` instance is passed, this is used as-is. -2264 If another `Expression` instance is passed, it will be wrapped in a `Offset`. -2265 dialect (str): the dialect used to parse the input expression. -2266 copy (bool): if `False`, modify this expression instance in-place. -2267 opts (kwargs): other options to use to parse the input expressions. -2268 -2269 Returns: -2270 Select: the modified expression. -2271 """ -2272 return _apply_builder( -2273 expression=expression, -2274 instance=self, -2275 arg="offset", -2276 into=Offset, -2277 prefix="OFFSET", -2278 dialect=dialect, -2279 copy=copy, -2280 **opts, -2281 ) -2282 -2283 def select( -2284 self, -2285 *expressions: ExpOrStr, -2286 append: bool = True, -2287 dialect: DialectType = None, -2288 copy: bool = True, -2289 **opts, -2290 ) -> Select: -2291 """ -2292 Append to or set the SELECT expressions. -2293 -2294 Example: -2295 >>> Select().select("x", "y").sql() -2296 'SELECT x, y' -2297 -2298 Args: -2299 *expressions: the SQL code strings to parse. -2300 If an `Expression` instance is passed, it will be used as-is. -2301 append: if `True`, add to any existing expressions. -2302 Otherwise, this resets the expressions. -2303 dialect: the dialect used to parse the input expressions. -2304 copy: if `False`, modify this expression instance in-place. -2305 opts: other options to use to parse the input expressions. -2306 -2307 Returns: -2308 Select: the modified expression. -2309 """ -2310 return _apply_list_builder( -2311 *expressions, -2312 instance=self, -2313 arg="expressions", -2314 append=append, -2315 dialect=dialect, -2316 copy=copy, -2317 **opts, -2318 ) -2319 -2320 def lateral(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: -2321 """ -2322 Append to or set the LATERAL expressions. -2323 -2324 Example: -2325 >>> Select().select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl").sql() -2326 'SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z' -2327 -2328 Args: -2329 *expressions (str | Expression): the SQL code strings to parse. -2330 If an `Expression` instance is passed, it will be used as-is. -2331 append (bool): if `True`, add to any existing expressions. -2332 Otherwise, this resets the expressions. -2333 dialect (str): the dialect used to parse the input expressions. -2334 copy (bool): if `False`, modify this expression instance in-place. -2335 opts (kwargs): other options to use to parse the input expressions. -2336 -2337 Returns: -2338 Select: the modified expression. -2339 """ -2340 return _apply_list_builder( -2341 *expressions, -2342 instance=self, -2343 arg="laterals", -2344 append=append, -2345 into=Lateral, -2346 prefix="LATERAL VIEW", +2244 arg="cluster", +2245 append=append, +2246 copy=copy, +2247 prefix="CLUSTER BY", +2248 into=Cluster, +2249 dialect=dialect, +2250 **opts, +2251 ) +2252 +2253 def limit(self, expression, dialect=None, copy=True, **opts) -> Select: +2254 """ +2255 Set the LIMIT expression. +2256 +2257 Example: +2258 >>> Select().from_("tbl").select("x").limit(10).sql() +2259 'SELECT x FROM tbl LIMIT 10' +2260 +2261 Args: +2262 expression (str | int | Expression): the SQL code string to parse. +2263 This can also be an integer. +2264 If a `Limit` instance is passed, this is used as-is. +2265 If another `Expression` instance is passed, it will be wrapped in a `Limit`. +2266 dialect (str): the dialect used to parse the input expression. +2267 copy (bool): if `False`, modify this expression instance in-place. +2268 opts (kwargs): other options to use to parse the input expressions. +2269 +2270 Returns: +2271 Select: the modified expression. +2272 """ +2273 return _apply_builder( +2274 expression=expression, +2275 instance=self, +2276 arg="limit", +2277 into=Limit, +2278 prefix="LIMIT", +2279 dialect=dialect, +2280 copy=copy, +2281 **opts, +2282 ) +2283 +2284 def offset(self, expression, dialect=None, copy=True, **opts) -> Select: +2285 """ +2286 Set the OFFSET expression. +2287 +2288 Example: +2289 >>> Select().from_("tbl").select("x").offset(10).sql() +2290 'SELECT x FROM tbl OFFSET 10' +2291 +2292 Args: +2293 expression (str | int | Expression): the SQL code string to parse. +2294 This can also be an integer. +2295 If a `Offset` instance is passed, this is used as-is. +2296 If another `Expression` instance is passed, it will be wrapped in a `Offset`. +2297 dialect (str): the dialect used to parse the input expression. +2298 copy (bool): if `False`, modify this expression instance in-place. +2299 opts (kwargs): other options to use to parse the input expressions. +2300 +2301 Returns: +2302 Select: the modified expression. +2303 """ +2304 return _apply_builder( +2305 expression=expression, +2306 instance=self, +2307 arg="offset", +2308 into=Offset, +2309 prefix="OFFSET", +2310 dialect=dialect, +2311 copy=copy, +2312 **opts, +2313 ) +2314 +2315 def select( +2316 self, +2317 *expressions: ExpOrStr, +2318 append: bool = True, +2319 dialect: DialectType = None, +2320 copy: bool = True, +2321 **opts, +2322 ) -> Select: +2323 """ +2324 Append to or set the SELECT expressions. +2325 +2326 Example: +2327 >>> Select().select("x", "y").sql() +2328 'SELECT x, y' +2329 +2330 Args: +2331 *expressions: the SQL code strings to parse. +2332 If an `Expression` instance is passed, it will be used as-is. +2333 append: if `True`, add to any existing expressions. +2334 Otherwise, this resets the expressions. +2335 dialect: the dialect used to parse the input expressions. +2336 copy: if `False`, modify this expression instance in-place. +2337 opts: other options to use to parse the input expressions. +2338 +2339 Returns: +2340 Select: the modified expression. +2341 """ +2342 return _apply_list_builder( +2343 *expressions, +2344 instance=self, +2345 arg="expressions", +2346 append=append, 2347 dialect=dialect, 2348 copy=copy, 2349 **opts, 2350 ) 2351 -2352 def join( -2353 self, -2354 expression, -2355 on=None, -2356 using=None, -2357 append=True, -2358 join_type=None, -2359 join_alias=None, -2360 dialect=None, -2361 copy=True, -2362 **opts, -2363 ) -> Select: -2364 """ -2365 Append to or set the JOIN expressions. -2366 -2367 Example: -2368 >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y").sql() -2369 'SELECT * FROM tbl JOIN tbl2 ON tbl1.y = tbl2.y' -2370 -2371 >>> Select().select("1").from_("a").join("b", using=["x", "y", "z"]).sql() -2372 'SELECT 1 FROM a JOIN b USING (x, y, z)' -2373 -2374 Use `join_type` to change the type of join: -2375 -2376 >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y", join_type="left outer").sql() -2377 'SELECT * FROM tbl LEFT OUTER JOIN tbl2 ON tbl1.y = tbl2.y' -2378 -2379 Args: -2380 expression (str | Expression): the SQL code string to parse. -2381 If an `Expression` instance is passed, it will be used as-is. -2382 on (str | Expression): optionally specify the join "on" criteria as a SQL string. -2383 If an `Expression` instance is passed, it will be used as-is. -2384 using (str | Expression): optionally specify the join "using" criteria as a SQL string. -2385 If an `Expression` instance is passed, it will be used as-is. -2386 append (bool): if `True`, add to any existing expressions. -2387 Otherwise, this resets the expressions. -2388 join_type (str): If set, alter the parsed join type -2389 dialect (str): the dialect used to parse the input expressions. -2390 copy (bool): if `False`, modify this expression instance in-place. -2391 opts (kwargs): other options to use to parse the input expressions. -2392 -2393 Returns: -2394 Select: the modified expression. -2395 """ -2396 parse_args = {"dialect": dialect, **opts} -2397 -2398 try: -2399 expression = maybe_parse(expression, into=Join, prefix="JOIN", **parse_args) -2400 except ParseError: -2401 expression = maybe_parse(expression, into=(Join, Expression), **parse_args) +2352 def lateral(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: +2353 """ +2354 Append to or set the LATERAL expressions. +2355 +2356 Example: +2357 >>> Select().select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl").sql() +2358 'SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z' +2359 +2360 Args: +2361 *expressions (str | Expression): the SQL code strings to parse. +2362 If an `Expression` instance is passed, it will be used as-is. +2363 append (bool): if `True`, add to any existing expressions. +2364 Otherwise, this resets the expressions. +2365 dialect (str): the dialect used to parse the input expressions. +2366 copy (bool): if `False`, modify this expression instance in-place. +2367 opts (kwargs): other options to use to parse the input expressions. +2368 +2369 Returns: +2370 Select: the modified expression. +2371 """ +2372 return _apply_list_builder( +2373 *expressions, +2374 instance=self, +2375 arg="laterals", +2376 append=append, +2377 into=Lateral, +2378 prefix="LATERAL VIEW", +2379 dialect=dialect, +2380 copy=copy, +2381 **opts, +2382 ) +2383 +2384 def join( +2385 self, +2386 expression, +2387 on=None, +2388 using=None, +2389 append=True, +2390 join_type=None, +2391 join_alias=None, +2392 dialect=None, +2393 copy=True, +2394 **opts, +2395 ) -> Select: +2396 """ +2397 Append to or set the JOIN expressions. +2398 +2399 Example: +2400 >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y").sql() +2401 'SELECT * FROM tbl JOIN tbl2 ON tbl1.y = tbl2.y' 2402 -2403 join = expression if isinstance(expression, Join) else Join(this=expression) -2404 -2405 if isinstance(join.this, Select): -2406 join.this.replace(join.this.subquery()) +2403 >>> Select().select("1").from_("a").join("b", using=["x", "y", "z"]).sql() +2404 'SELECT 1 FROM a JOIN b USING (x, y, z)' +2405 +2406 Use `join_type` to change the type of join: 2407 -2408 if join_type: -2409 natural: t.Optional[Token] -2410 side: t.Optional[Token] -2411 kind: t.Optional[Token] -2412 -2413 natural, side, kind = maybe_parse(join_type, into="JOIN_TYPE", **parse_args) # type: ignore -2414 -2415 if natural: -2416 join.set("natural", True) -2417 if side: -2418 join.set("side", side.text) -2419 if kind: -2420 join.set("kind", kind.text) -2421 -2422 if on: -2423 on = and_(*ensure_collection(on), dialect=dialect, **opts) -2424 join.set("on", on) -2425 -2426 if using: -2427 join = _apply_list_builder( -2428 *ensure_collection(using), -2429 instance=join, -2430 arg="using", -2431 append=append, -2432 copy=copy, -2433 **opts, -2434 ) -2435 -2436 if join_alias: -2437 join.set("this", alias_(join.this, join_alias, table=True)) -2438 return _apply_list_builder( -2439 join, -2440 instance=self, -2441 arg="joins", -2442 append=append, -2443 copy=copy, -2444 **opts, -2445 ) +2408 >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y", join_type="left outer").sql() +2409 'SELECT * FROM tbl LEFT OUTER JOIN tbl2 ON tbl1.y = tbl2.y' +2410 +2411 Args: +2412 expression (str | Expression): the SQL code string to parse. +2413 If an `Expression` instance is passed, it will be used as-is. +2414 on (str | Expression): optionally specify the join "on" criteria as a SQL string. +2415 If an `Expression` instance is passed, it will be used as-is. +2416 using (str | Expression): optionally specify the join "using" criteria as a SQL string. +2417 If an `Expression` instance is passed, it will be used as-is. +2418 append (bool): if `True`, add to any existing expressions. +2419 Otherwise, this resets the expressions. +2420 join_type (str): If set, alter the parsed join type +2421 dialect (str): the dialect used to parse the input expressions. +2422 copy (bool): if `False`, modify this expression instance in-place. +2423 opts (kwargs): other options to use to parse the input expressions. +2424 +2425 Returns: +2426 Select: the modified expression. +2427 """ +2428 parse_args = {"dialect": dialect, **opts} +2429 +2430 try: +2431 expression = maybe_parse(expression, into=Join, prefix="JOIN", **parse_args) +2432 except ParseError: +2433 expression = maybe_parse(expression, into=(Join, Expression), **parse_args) +2434 +2435 join = expression if isinstance(expression, Join) else Join(this=expression) +2436 +2437 if isinstance(join.this, Select): +2438 join.this.replace(join.this.subquery()) +2439 +2440 if join_type: +2441 natural: t.Optional[Token] +2442 side: t.Optional[Token] +2443 kind: t.Optional[Token] +2444 +2445 natural, side, kind = maybe_parse(join_type, into="JOIN_TYPE", **parse_args) # type: ignore 2446 -2447 def where(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: -2448 """ -2449 Append to or set the WHERE expressions. -2450 -2451 Example: -2452 >>> Select().select("x").from_("tbl").where("x = 'a' OR x < 'b'").sql() -2453 "SELECT x FROM tbl WHERE x = 'a' OR x < 'b'" -2454 -2455 Args: -2456 *expressions (str | Expression): the SQL code strings to parse. -2457 If an `Expression` instance is passed, it will be used as-is. -2458 Multiple expressions are combined with an AND operator. -2459 append (bool): if `True`, AND the new expressions to any existing expression. -2460 Otherwise, this resets the expression. -2461 dialect (str): the dialect used to parse the input expressions. -2462 copy (bool): if `False`, modify this expression instance in-place. -2463 opts (kwargs): other options to use to parse the input expressions. -2464 -2465 Returns: -2466 Select: the modified expression. -2467 """ -2468 return _apply_conjunction_builder( -2469 *expressions, -2470 instance=self, -2471 arg="where", -2472 append=append, -2473 into=Where, -2474 dialect=dialect, +2447 if natural: +2448 join.set("natural", True) +2449 if side: +2450 join.set("side", side.text) +2451 if kind: +2452 join.set("kind", kind.text) +2453 +2454 if on: +2455 on = and_(*ensure_collection(on), dialect=dialect, **opts) +2456 join.set("on", on) +2457 +2458 if using: +2459 join = _apply_list_builder( +2460 *ensure_collection(using), +2461 instance=join, +2462 arg="using", +2463 append=append, +2464 copy=copy, +2465 **opts, +2466 ) +2467 +2468 if join_alias: +2469 join.set("this", alias_(join.this, join_alias, table=True)) +2470 return _apply_list_builder( +2471 join, +2472 instance=self, +2473 arg="joins", +2474 append=append, 2475 copy=copy, 2476 **opts, 2477 ) 2478 -2479 def having(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: +2479 def where(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: 2480 """ -2481 Append to or set the HAVING expressions. +2481 Append to or set the WHERE expressions. 2482 2483 Example: -2484 >>> Select().select("x", "COUNT(y)").from_("tbl").group_by("x").having("COUNT(y) > 3").sql() -2485 'SELECT x, COUNT(y) FROM tbl GROUP BY x HAVING COUNT(y) > 3' +2484 >>> Select().select("x").from_("tbl").where("x = 'a' OR x < 'b'").sql() +2485 "SELECT x FROM tbl WHERE x = 'a' OR x < 'b'" 2486 2487 Args: 2488 *expressions (str | Expression): the SQL code strings to parse. @@ -5457,2560 +5508,2618 @@ SQL expressions, such as sqlglot.expressions.select< 2500 return _apply_conjunction_builder( 2501 *expressions, 2502 instance=self, -2503 arg="having", +2503 arg="where", 2504 append=append, -2505 into=Having, +2505 into=Where, 2506 dialect=dialect, 2507 copy=copy, 2508 **opts, 2509 ) 2510 -2511 def window(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: -2512 return _apply_list_builder( -2513 *expressions, -2514 instance=self, -2515 arg="windows", -2516 append=append, -2517 into=Window, -2518 dialect=dialect, -2519 copy=copy, -2520 **opts, -2521 ) -2522 -2523 def qualify(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: -2524 return _apply_conjunction_builder( -2525 *expressions, -2526 instance=self, -2527 arg="qualify", -2528 append=append, -2529 into=Qualify, -2530 dialect=dialect, -2531 copy=copy, -2532 **opts, -2533 ) -2534 -2535 def distinct(self, distinct=True, copy=True) -> Select: -2536 """ -2537 Set the OFFSET expression. -2538 -2539 Example: -2540 >>> Select().from_("tbl").select("x").distinct().sql() -2541 'SELECT DISTINCT x FROM tbl' +2511 def having(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: +2512 """ +2513 Append to or set the HAVING expressions. +2514 +2515 Example: +2516 >>> Select().select("x", "COUNT(y)").from_("tbl").group_by("x").having("COUNT(y) > 3").sql() +2517 'SELECT x, COUNT(y) FROM tbl GROUP BY x HAVING COUNT(y) > 3' +2518 +2519 Args: +2520 *expressions (str | Expression): the SQL code strings to parse. +2521 If an `Expression` instance is passed, it will be used as-is. +2522 Multiple expressions are combined with an AND operator. +2523 append (bool): if `True`, AND the new expressions to any existing expression. +2524 Otherwise, this resets the expression. +2525 dialect (str): the dialect used to parse the input expressions. +2526 copy (bool): if `False`, modify this expression instance in-place. +2527 opts (kwargs): other options to use to parse the input expressions. +2528 +2529 Returns: +2530 Select: the modified expression. +2531 """ +2532 return _apply_conjunction_builder( +2533 *expressions, +2534 instance=self, +2535 arg="having", +2536 append=append, +2537 into=Having, +2538 dialect=dialect, +2539 copy=copy, +2540 **opts, +2541 ) 2542 -2543 Args: -2544 distinct (bool): whether the Select should be distinct -2545 copy (bool): if `False`, modify this expression instance in-place. -2546 -2547 Returns: -2548 Select: the modified expression. -2549 """ -2550 instance = _maybe_copy(self, copy) -2551 instance.set("distinct", Distinct() if distinct else None) -2552 return instance -2553 -2554 def ctas(self, table, properties=None, dialect=None, copy=True, **opts) -> Create: -2555 """ -2556 Convert this expression to a CREATE TABLE AS statement. -2557 -2558 Example: -2559 >>> Select().select("*").from_("tbl").ctas("x").sql() -2560 'CREATE TABLE x AS SELECT * FROM tbl' -2561 -2562 Args: -2563 table (str | Expression): the SQL code string to parse as the table name. -2564 If another `Expression` instance is passed, it will be used as-is. -2565 properties (dict): an optional mapping of table properties -2566 dialect (str): the dialect used to parse the input table. -2567 copy (bool): if `False`, modify this expression instance in-place. -2568 opts (kwargs): other options to use to parse the input table. -2569 -2570 Returns: -2571 Create: the CREATE TABLE AS expression -2572 """ -2573 instance = _maybe_copy(self, copy) -2574 table_expression = maybe_parse( -2575 table, -2576 into=Table, -2577 dialect=dialect, -2578 **opts, -2579 ) -2580 properties_expression = None -2581 if properties: -2582 properties_expression = Properties.from_dict(properties) -2583 -2584 return Create( -2585 this=table_expression, -2586 kind="table", -2587 expression=instance, -2588 properties=properties_expression, -2589 ) -2590 -2591 def lock(self, update: bool = True, copy: bool = True) -> Select: -2592 """ -2593 Set the locking read mode for this expression. -2594 -2595 Examples: -2596 >>> Select().select("x").from_("tbl").where("x = 'a'").lock().sql("mysql") -2597 "SELECT x FROM tbl WHERE x = 'a' FOR UPDATE" -2598 -2599 >>> Select().select("x").from_("tbl").where("x = 'a'").lock(update=False).sql("mysql") -2600 "SELECT x FROM tbl WHERE x = 'a' FOR SHARE" +2543 def window(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: +2544 return _apply_list_builder( +2545 *expressions, +2546 instance=self, +2547 arg="windows", +2548 append=append, +2549 into=Window, +2550 dialect=dialect, +2551 copy=copy, +2552 **opts, +2553 ) +2554 +2555 def qualify(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select: +2556 return _apply_conjunction_builder( +2557 *expressions, +2558 instance=self, +2559 arg="qualify", +2560 append=append, +2561 into=Qualify, +2562 dialect=dialect, +2563 copy=copy, +2564 **opts, +2565 ) +2566 +2567 def distinct(self, distinct=True, copy=True) -> Select: +2568 """ +2569 Set the OFFSET expression. +2570 +2571 Example: +2572 >>> Select().from_("tbl").select("x").distinct().sql() +2573 'SELECT DISTINCT x FROM tbl' +2574 +2575 Args: +2576 distinct (bool): whether the Select should be distinct +2577 copy (bool): if `False`, modify this expression instance in-place. +2578 +2579 Returns: +2580 Select: the modified expression. +2581 """ +2582 instance = _maybe_copy(self, copy) +2583 instance.set("distinct", Distinct() if distinct else None) +2584 return instance +2585 +2586 def ctas(self, table, properties=None, dialect=None, copy=True, **opts) -> Create: +2587 """ +2588 Convert this expression to a CREATE TABLE AS statement. +2589 +2590 Example: +2591 >>> Select().select("*").from_("tbl").ctas("x").sql() +2592 'CREATE TABLE x AS SELECT * FROM tbl' +2593 +2594 Args: +2595 table (str | Expression): the SQL code string to parse as the table name. +2596 If another `Expression` instance is passed, it will be used as-is. +2597 properties (dict): an optional mapping of table properties +2598 dialect (str): the dialect used to parse the input table. +2599 copy (bool): if `False`, modify this expression instance in-place. +2600 opts (kwargs): other options to use to parse the input table. 2601 -2602 Args: -2603 update: if `True`, the locking type will be `FOR UPDATE`, else it will be `FOR SHARE`. -2604 copy: if `False`, modify this expression instance in-place. -2605 -2606 Returns: -2607 The modified expression. -2608 """ -2609 -2610 inst = _maybe_copy(self, copy) -2611 inst.set("lock", Lock(update=update)) -2612 -2613 return inst -2614 -2615 @property -2616 def named_selects(self) -> t.List[str]: -2617 return [e.output_name for e in self.expressions if e.alias_or_name] -2618 -2619 @property -2620 def is_star(self) -> bool: -2621 return any(expression.is_star for expression in self.expressions) +2602 Returns: +2603 Create: the CREATE TABLE AS expression +2604 """ +2605 instance = _maybe_copy(self, copy) +2606 table_expression = maybe_parse( +2607 table, +2608 into=Table, +2609 dialect=dialect, +2610 **opts, +2611 ) +2612 properties_expression = None +2613 if properties: +2614 properties_expression = Properties.from_dict(properties) +2615 +2616 return Create( +2617 this=table_expression, +2618 kind="table", +2619 expression=instance, +2620 properties=properties_expression, +2621 ) 2622 -2623 @property -2624 def selects(self) -> t.List[Expression]: -2625 return self.expressions +2623 def lock(self, update: bool = True, copy: bool = True) -> Select: +2624 """ +2625 Set the locking read mode for this expression. 2626 -2627 -2628class Subquery(DerivedTable, Unionable): -2629 arg_types = { -2630 "this": True, -2631 "alias": False, -2632 "with": False, -2633 **QUERY_MODIFIERS, -2634 } -2635 -2636 def unnest(self): -2637 """ -2638 Returns the first non subquery. -2639 """ -2640 expression = self -2641 while isinstance(expression, Subquery): -2642 expression = expression.this -2643 return expression +2627 Examples: +2628 >>> Select().select("x").from_("tbl").where("x = 'a'").lock().sql("mysql") +2629 "SELECT x FROM tbl WHERE x = 'a' FOR UPDATE" +2630 +2631 >>> Select().select("x").from_("tbl").where("x = 'a'").lock(update=False).sql("mysql") +2632 "SELECT x FROM tbl WHERE x = 'a' FOR SHARE" +2633 +2634 Args: +2635 update: if `True`, the locking type will be `FOR UPDATE`, else it will be `FOR SHARE`. +2636 copy: if `False`, modify this expression instance in-place. +2637 +2638 Returns: +2639 The modified expression. +2640 """ +2641 +2642 inst = _maybe_copy(self, copy) +2643 inst.set("lock", Lock(update=update)) 2644 -2645 @property -2646 def is_star(self) -> bool: -2647 return self.this.is_star -2648 -2649 @property -2650 def output_name(self): -2651 return self.alias -2652 -2653 -2654class TableSample(Expression): -2655 arg_types = { -2656 "this": False, -2657 "method": False, -2658 "bucket_numerator": False, -2659 "bucket_denominator": False, -2660 "bucket_field": False, -2661 "percent": False, -2662 "rows": False, -2663 "size": False, -2664 "seed": False, -2665 "kind": False, +2645 return inst +2646 +2647 @property +2648 def named_selects(self) -> t.List[str]: +2649 return [e.output_name for e in self.expressions if e.alias_or_name] +2650 +2651 @property +2652 def is_star(self) -> bool: +2653 return any(expression.is_star for expression in self.expressions) +2654 +2655 @property +2656 def selects(self) -> t.List[Expression]: +2657 return self.expressions +2658 +2659 +2660class Subquery(DerivedTable, Unionable): +2661 arg_types = { +2662 "this": True, +2663 "alias": False, +2664 "with": False, +2665 **QUERY_MODIFIERS, 2666 } 2667 -2668 -2669class Tag(Expression): -2670 """Tags are used for generating arbitrary sql like SELECT <span>x</span>.""" -2671 -2672 arg_types = { -2673 "this": False, -2674 "prefix": False, -2675 "postfix": False, -2676 } -2677 -2678 -2679class Pivot(Expression): -2680 arg_types = { -2681 "this": False, -2682 "alias": False, -2683 "expressions": True, -2684 "field": True, -2685 "unpivot": True, -2686 } -2687 -2688 -2689class Window(Expression): -2690 arg_types = { -2691 "this": True, -2692 "partition_by": False, -2693 "order": False, -2694 "spec": False, -2695 "alias": False, -2696 } -2697 -2698 -2699class WindowSpec(Expression): -2700 arg_types = { -2701 "kind": False, -2702 "start": False, -2703 "start_side": False, -2704 "end": False, -2705 "end_side": False, -2706 } -2707 -2708 -2709class Where(Expression): -2710 pass -2711 -2712 -2713class Star(Expression): -2714 arg_types = {"except": False, "replace": False} -2715 -2716 @property -2717 def name(self) -> str: -2718 return "*" +2668 def unnest(self): +2669 """ +2670 Returns the first non subquery. +2671 """ +2672 expression = self +2673 while isinstance(expression, Subquery): +2674 expression = expression.this +2675 return expression +2676 +2677 @property +2678 def is_star(self) -> bool: +2679 return self.this.is_star +2680 +2681 @property +2682 def output_name(self): +2683 return self.alias +2684 +2685 +2686class TableSample(Expression): +2687 arg_types = { +2688 "this": False, +2689 "method": False, +2690 "bucket_numerator": False, +2691 "bucket_denominator": False, +2692 "bucket_field": False, +2693 "percent": False, +2694 "rows": False, +2695 "size": False, +2696 "seed": False, +2697 "kind": False, +2698 } +2699 +2700 +2701class Tag(Expression): +2702 """Tags are used for generating arbitrary sql like SELECT <span>x</span>.""" +2703 +2704 arg_types = { +2705 "this": False, +2706 "prefix": False, +2707 "postfix": False, +2708 } +2709 +2710 +2711class Pivot(Expression): +2712 arg_types = { +2713 "this": False, +2714 "alias": False, +2715 "expressions": True, +2716 "field": True, +2717 "unpivot": True, +2718 } 2719 -2720 @property -2721 def output_name(self): -2722 return self.name -2723 -2724 -2725class Parameter(Expression): -2726 arg_types = {"this": True, "wrapped": False} -2727 -2728 -2729class SessionParameter(Expression): -2730 arg_types = {"this": True, "kind": False} -2731 -2732 -2733class Placeholder(Expression): -2734 arg_types = {"this": False} -2735 -2736 -2737class Null(Condition): -2738 arg_types: t.Dict[str, t.Any] = {} +2720 +2721class Window(Expression): +2722 arg_types = { +2723 "this": True, +2724 "partition_by": False, +2725 "order": False, +2726 "spec": False, +2727 "alias": False, +2728 } +2729 +2730 +2731class WindowSpec(Expression): +2732 arg_types = { +2733 "kind": False, +2734 "start": False, +2735 "start_side": False, +2736 "end": False, +2737 "end_side": False, +2738 } 2739 -2740 @property -2741 def name(self) -> str: -2742 return "NULL" +2740 +2741class Where(Expression): +2742 pass 2743 2744 -2745class Boolean(Condition): -2746 pass +2745class Star(Expression): +2746 arg_types = {"except": False, "replace": False} 2747 -2748 -2749class DataType(Expression): -2750 arg_types = { -2751 "this": True, -2752 "expressions": False, -2753 "nested": False, -2754 "values": False, -2755 "prefix": False, -2756 } -2757 -2758 class Type(AutoName): -2759 CHAR = auto() -2760 NCHAR = auto() -2761 VARCHAR = auto() -2762 NVARCHAR = auto() -2763 TEXT = auto() -2764 MEDIUMTEXT = auto() -2765 LONGTEXT = auto() -2766 MEDIUMBLOB = auto() -2767 LONGBLOB = auto() -2768 BINARY = auto() -2769 VARBINARY = auto() -2770 INT = auto() -2771 UINT = auto() -2772 TINYINT = auto() -2773 UTINYINT = auto() -2774 SMALLINT = auto() -2775 USMALLINT = auto() -2776 BIGINT = auto() -2777 UBIGINT = auto() -2778 FLOAT = auto() -2779 DOUBLE = auto() -2780 DECIMAL = auto() -2781 BIT = auto() -2782 BOOLEAN = auto() -2783 JSON = auto() -2784 JSONB = auto() -2785 INTERVAL = auto() -2786 TIME = auto() -2787 TIMESTAMP = auto() -2788 TIMESTAMPTZ = auto() -2789 TIMESTAMPLTZ = auto() -2790 DATE = auto() -2791 DATETIME = auto() -2792 ARRAY = auto() -2793 MAP = auto() -2794 UUID = auto() -2795 GEOGRAPHY = auto() -2796 GEOMETRY = auto() -2797 STRUCT = auto() -2798 NULLABLE = auto() -2799 HLLSKETCH = auto() -2800 HSTORE = auto() -2801 SUPER = auto() -2802 SERIAL = auto() -2803 SMALLSERIAL = auto() -2804 BIGSERIAL = auto() -2805 XML = auto() -2806 UNIQUEIDENTIFIER = auto() -2807 MONEY = auto() -2808 SMALLMONEY = auto() -2809 ROWVERSION = auto() -2810 IMAGE = auto() -2811 VARIANT = auto() -2812 OBJECT = auto() -2813 INET = auto() -2814 NULL = auto() -2815 UNKNOWN = auto() # Sentinel value, useful for type annotation -2816 -2817 TEXT_TYPES = { -2818 Type.CHAR, -2819 Type.NCHAR, -2820 Type.VARCHAR, -2821 Type.NVARCHAR, -2822 Type.TEXT, -2823 } -2824 -2825 INTEGER_TYPES = { -2826 Type.INT, -2827 Type.TINYINT, -2828 Type.SMALLINT, -2829 Type.BIGINT, -2830 } -2831 -2832 FLOAT_TYPES = { -2833 Type.FLOAT, -2834 Type.DOUBLE, -2835 } -2836 -2837 NUMERIC_TYPES = {*INTEGER_TYPES, *FLOAT_TYPES} -2838 -2839 TEMPORAL_TYPES = { -2840 Type.TIMESTAMP, -2841 Type.TIMESTAMPTZ, -2842 Type.TIMESTAMPLTZ, -2843 Type.DATE, -2844 Type.DATETIME, -2845 } -2846 -2847 @classmethod -2848 def build( -2849 cls, dtype: str | DataType | DataType.Type, dialect: DialectType = None, **kwargs -2850 ) -> DataType: -2851 from sqlglot import parse_one -2852 -2853 if isinstance(dtype, str): -2854 if dtype.upper() in cls.Type.__members__: -2855 data_type_exp: t.Optional[Expression] = DataType(this=DataType.Type[dtype.upper()]) -2856 else: -2857 data_type_exp = parse_one(dtype, read=dialect, into=DataType) -2858 if data_type_exp is None: -2859 raise ValueError(f"Unparsable data type value: {dtype}") -2860 elif isinstance(dtype, DataType.Type): -2861 data_type_exp = DataType(this=dtype) -2862 elif isinstance(dtype, DataType): -2863 return dtype -2864 else: -2865 raise ValueError(f"Invalid data type: {type(dtype)}. Expected str or DataType.Type") -2866 return DataType(**{**data_type_exp.args, **kwargs}) -2867 -2868 def is_type(self, dtype: DataType.Type) -> bool: -2869 return self.this == dtype +2748 @property +2749 def name(self) -> str: +2750 return "*" +2751 +2752 @property +2753 def output_name(self): +2754 return self.name +2755 +2756 +2757class Parameter(Expression): +2758 arg_types = {"this": True, "wrapped": False} +2759 +2760 +2761class SessionParameter(Expression): +2762 arg_types = {"this": True, "kind": False} +2763 +2764 +2765class Placeholder(Expression): +2766 arg_types = {"this": False} +2767 +2768 +2769class Null(Condition): +2770 arg_types: t.Dict[str, t.Any] = {} +2771 +2772 @property +2773 def name(self) -> str: +2774 return "NULL" +2775 +2776 +2777class Boolean(Condition): +2778 pass +2779 +2780 +2781class DataType(Expression): +2782 arg_types = { +2783 "this": True, +2784 "expressions": False, +2785 "nested": False, +2786 "values": False, +2787 "prefix": False, +2788 } +2789 +2790 class Type(AutoName): +2791 CHAR = auto() +2792 NCHAR = auto() +2793 VARCHAR = auto() +2794 NVARCHAR = auto() +2795 TEXT = auto() +2796 MEDIUMTEXT = auto() +2797 LONGTEXT = auto() +2798 MEDIUMBLOB = auto() +2799 LONGBLOB = auto() +2800 BINARY = auto() +2801 VARBINARY = auto() +2802 INT = auto() +2803 UINT = auto() +2804 TINYINT = auto() +2805 UTINYINT = auto() +2806 SMALLINT = auto() +2807 USMALLINT = auto() +2808 BIGINT = auto() +2809 UBIGINT = auto() +2810 FLOAT = auto() +2811 DOUBLE = auto() +2812 DECIMAL = auto() +2813 BIT = auto() +2814 BOOLEAN = auto() +2815 JSON = auto() +2816 JSONB = auto() +2817 INTERVAL = auto() +2818 TIME = auto() +2819 TIMESTAMP = auto() +2820 TIMESTAMPTZ = auto() +2821 TIMESTAMPLTZ = auto() +2822 DATE = auto() +2823 DATETIME = auto() +2824 ARRAY = auto() +2825 MAP = auto() +2826 UUID = auto() +2827 GEOGRAPHY = auto() +2828 GEOMETRY = auto() +2829 STRUCT = auto() +2830 NULLABLE = auto() +2831 HLLSKETCH = auto() +2832 HSTORE = auto() +2833 SUPER = auto() +2834 SERIAL = auto() +2835 SMALLSERIAL = auto() +2836 BIGSERIAL = auto() +2837 XML = auto() +2838 UNIQUEIDENTIFIER = auto() +2839 MONEY = auto() +2840 SMALLMONEY = auto() +2841 ROWVERSION = auto() +2842 IMAGE = auto() +2843 VARIANT = auto() +2844 OBJECT = auto() +2845 INET = auto() +2846 NULL = auto() +2847 UNKNOWN = auto() # Sentinel value, useful for type annotation +2848 +2849 TEXT_TYPES = { +2850 Type.CHAR, +2851 Type.NCHAR, +2852 Type.VARCHAR, +2853 Type.NVARCHAR, +2854 Type.TEXT, +2855 } +2856 +2857 INTEGER_TYPES = { +2858 Type.INT, +2859 Type.TINYINT, +2860 Type.SMALLINT, +2861 Type.BIGINT, +2862 } +2863 +2864 FLOAT_TYPES = { +2865 Type.FLOAT, +2866 Type.DOUBLE, +2867 } +2868 +2869 NUMERIC_TYPES = {*INTEGER_TYPES, *FLOAT_TYPES} 2870 -2871 -2872# https://www.postgresql.org/docs/15/datatype-pseudo.html -2873class PseudoType(Expression): -2874 pass -2875 -2876 -2877class StructKwarg(Expression): -2878 arg_types = {"this": True, "expression": True} -2879 -2880 -2881# WHERE x <OP> EXISTS|ALL|ANY|SOME(SELECT ...) -2882class SubqueryPredicate(Predicate): -2883 pass +2871 TEMPORAL_TYPES = { +2872 Type.TIMESTAMP, +2873 Type.TIMESTAMPTZ, +2874 Type.TIMESTAMPLTZ, +2875 Type.DATE, +2876 Type.DATETIME, +2877 } +2878 +2879 @classmethod +2880 def build( +2881 cls, dtype: str | DataType | DataType.Type, dialect: DialectType = None, **kwargs +2882 ) -> DataType: +2883 from sqlglot import parse_one 2884 -2885 -2886class All(SubqueryPredicate): -2887 pass -2888 -2889 -2890class Any(SubqueryPredicate): -2891 pass -2892 -2893 -2894class Exists(SubqueryPredicate): -2895 pass -2896 -2897 -2898# Commands to interact with the databases or engines. For most of the command -2899# expressions we parse whatever comes after the command's name as a string. -2900class Command(Expression): -2901 arg_types = {"this": True, "expression": False} +2885 if isinstance(dtype, str): +2886 if dtype.upper() in cls.Type.__members__: +2887 data_type_exp: t.Optional[Expression] = DataType(this=DataType.Type[dtype.upper()]) +2888 else: +2889 data_type_exp = parse_one(dtype, read=dialect, into=DataType) +2890 if data_type_exp is None: +2891 raise ValueError(f"Unparsable data type value: {dtype}") +2892 elif isinstance(dtype, DataType.Type): +2893 data_type_exp = DataType(this=dtype) +2894 elif isinstance(dtype, DataType): +2895 return dtype +2896 else: +2897 raise ValueError(f"Invalid data type: {type(dtype)}. Expected str or DataType.Type") +2898 return DataType(**{**data_type_exp.args, **kwargs}) +2899 +2900 def is_type(self, dtype: DataType.Type) -> bool: +2901 return self.this == dtype 2902 2903 -2904class Transaction(Expression): -2905 arg_types = {"this": False, "modes": False} -2906 +2904# https://www.postgresql.org/docs/15/datatype-pseudo.html +2905class PseudoType(Expression): +2906 pass 2907 -2908class Commit(Expression): -2909 arg_types = {"chain": False} -2910 +2908 +2909class StructKwarg(Expression): +2910 arg_types = {"this": True, "expression": True} 2911 -2912class Rollback(Expression): -2913 arg_types = {"savepoint": False} -2914 -2915 -2916class AlterTable(Expression): -2917 arg_types = {"this": True, "actions": True, "exists": False} -2918 -2919 -2920class AddConstraint(Expression): -2921 arg_types = {"this": False, "expression": False, "enforced": False} -2922 -2923 -2924class DropPartition(Expression): -2925 arg_types = {"expressions": True, "exists": False} -2926 -2927 -2928# Binary expressions like (ADD a b) -2929class Binary(Expression): -2930 arg_types = {"this": True, "expression": True} -2931 -2932 @property -2933 def left(self): -2934 return self.this +2912 +2913# WHERE x <OP> EXISTS|ALL|ANY|SOME(SELECT ...) +2914class SubqueryPredicate(Predicate): +2915 pass +2916 +2917 +2918class All(SubqueryPredicate): +2919 pass +2920 +2921 +2922class Any(SubqueryPredicate): +2923 pass +2924 +2925 +2926class Exists(SubqueryPredicate): +2927 pass +2928 +2929 +2930# Commands to interact with the databases or engines. For most of the command +2931# expressions we parse whatever comes after the command's name as a string. +2932class Command(Expression): +2933 arg_types = {"this": True, "expression": False} +2934 2935 -2936 @property -2937 def right(self): -2938 return self.expression +2936class Transaction(Expression): +2937 arg_types = {"this": False, "modes": False} +2938 2939 -2940 -2941class Add(Binary): -2942 pass +2940class Commit(Expression): +2941 arg_types = {"chain": False} +2942 2943 -2944 -2945class Connector(Binary, Condition): -2946 pass +2944class Rollback(Expression): +2945 arg_types = {"savepoint": False} +2946 2947 -2948 -2949class And(Connector): -2950 pass +2948class AlterTable(Expression): +2949 arg_types = {"this": True, "actions": True, "exists": False} +2950 2951 -2952 -2953class Or(Connector): -2954 pass +2952class AddConstraint(Expression): +2953 arg_types = {"this": False, "expression": False, "enforced": False} +2954 2955 -2956 -2957class BitwiseAnd(Binary): -2958 pass +2956class DropPartition(Expression): +2957 arg_types = {"expressions": True, "exists": False} +2958 2959 -2960 -2961class BitwiseLeftShift(Binary): -2962 pass +2960# Binary expressions like (ADD a b) +2961class Binary(Expression): +2962 arg_types = {"this": True, "expression": True} 2963 -2964 -2965class BitwiseOr(Binary): -2966 pass +2964 @property +2965 def left(self): +2966 return self.this 2967 -2968 -2969class BitwiseRightShift(Binary): -2970 pass +2968 @property +2969 def right(self): +2970 return self.expression 2971 2972 -2973class BitwiseXor(Binary): +2973class Add(Binary): 2974 pass 2975 2976 -2977class Div(Binary): +2977class Connector(Binary, Condition): 2978 pass 2979 2980 -2981class Overlaps(Binary): +2981class And(Connector): 2982 pass 2983 2984 -2985class Dot(Binary): -2986 @property -2987 def name(self) -> str: -2988 return self.expression.name -2989 -2990 -2991class DPipe(Binary): -2992 pass -2993 -2994 -2995class EQ(Binary, Predicate): -2996 pass -2997 -2998 -2999class NullSafeEQ(Binary, Predicate): -3000 pass -3001 -3002 -3003class NullSafeNEQ(Binary, Predicate): -3004 pass -3005 -3006 -3007class Distance(Binary): -3008 pass -3009 -3010 -3011class Escape(Binary): -3012 pass -3013 -3014 -3015class Glob(Binary, Predicate): -3016 pass -3017 -3018 -3019class GT(Binary, Predicate): -3020 pass +2985class Or(Connector): +2986 pass +2987 +2988 +2989class BitwiseAnd(Binary): +2990 pass +2991 +2992 +2993class BitwiseLeftShift(Binary): +2994 pass +2995 +2996 +2997class BitwiseOr(Binary): +2998 pass +2999 +3000 +3001class BitwiseRightShift(Binary): +3002 pass +3003 +3004 +3005class BitwiseXor(Binary): +3006 pass +3007 +3008 +3009class Div(Binary): +3010 pass +3011 +3012 +3013class Overlaps(Binary): +3014 pass +3015 +3016 +3017class Dot(Binary): +3018 @property +3019 def name(self) -> str: +3020 return self.expression.name 3021 -3022 -3023class GTE(Binary, Predicate): -3024 pass -3025 -3026 -3027class ILike(Binary, Predicate): -3028 pass -3029 +3022 @classmethod +3023 def build(self, expressions: t.Sequence[Expression]) -> Dot: +3024 """Build a Dot object with a sequence of expressions.""" +3025 if len(expressions) < 2: +3026 raise ValueError(f"Dot requires >= 2 expressions.") +3027 +3028 a, b, *expressions = expressions +3029 dot = Dot(this=a, expression=b) 3030 -3031class ILikeAny(Binary, Predicate): -3032 pass +3031 for expression in expressions: +3032 dot = Dot(this=dot, expression=expression) 3033 -3034 -3035class IntDiv(Binary): -3036 pass -3037 -3038 -3039class Is(Binary, Predicate): -3040 pass -3041 -3042 -3043class Kwarg(Binary): -3044 """Kwarg in special functions like func(kwarg => y).""" -3045 -3046 -3047class Like(Binary, Predicate): -3048 pass -3049 -3050 -3051class LikeAny(Binary, Predicate): -3052 pass -3053 -3054 -3055class LT(Binary, Predicate): -3056 pass -3057 -3058 -3059class LTE(Binary, Predicate): -3060 pass -3061 -3062 -3063class Mod(Binary): -3064 pass -3065 -3066 -3067class Mul(Binary): -3068 pass -3069 -3070 -3071class NEQ(Binary, Predicate): -3072 pass -3073 -3074 -3075class SimilarTo(Binary, Predicate): -3076 pass -3077 -3078 -3079class Slice(Binary): -3080 arg_types = {"this": False, "expression": False} -3081 -3082 -3083class Sub(Binary): -3084 pass -3085 -3086 -3087class ArrayOverlaps(Binary): -3088 pass -3089 -3090 -3091# Unary Expressions -3092# (NOT a) -3093class Unary(Expression): +3034 return dot +3035 +3036 +3037class DPipe(Binary): +3038 pass +3039 +3040 +3041class EQ(Binary, Predicate): +3042 pass +3043 +3044 +3045class NullSafeEQ(Binary, Predicate): +3046 pass +3047 +3048 +3049class NullSafeNEQ(Binary, Predicate): +3050 pass +3051 +3052 +3053class Distance(Binary): +3054 pass +3055 +3056 +3057class Escape(Binary): +3058 pass +3059 +3060 +3061class Glob(Binary, Predicate): +3062 pass +3063 +3064 +3065class GT(Binary, Predicate): +3066 pass +3067 +3068 +3069class GTE(Binary, Predicate): +3070 pass +3071 +3072 +3073class ILike(Binary, Predicate): +3074 pass +3075 +3076 +3077class ILikeAny(Binary, Predicate): +3078 pass +3079 +3080 +3081class IntDiv(Binary): +3082 pass +3083 +3084 +3085class Is(Binary, Predicate): +3086 pass +3087 +3088 +3089class Kwarg(Binary): +3090 """Kwarg in special functions like func(kwarg => y).""" +3091 +3092 +3093class Like(Binary, Predicate): 3094 pass 3095 3096 -3097class BitwiseNot(Unary): +3097class LikeAny(Binary, Predicate): 3098 pass 3099 3100 -3101class Not(Unary, Condition): +3101class LT(Binary, Predicate): 3102 pass 3103 3104 -3105class Paren(Unary, Condition): -3106 arg_types = {"this": True, "with": False} +3105class LTE(Binary, Predicate): +3106 pass 3107 3108 -3109class Neg(Unary): +3109class Mod(Binary): 3110 pass 3111 3112 -3113# Special Functions -3114class Alias(Expression): -3115 arg_types = {"this": True, "alias": False} +3113class Mul(Binary): +3114 pass +3115 3116 -3117 @property -3118 def output_name(self): -3119 return self.alias +3117class NEQ(Binary, Predicate): +3118 pass +3119 3120 -3121 -3122class Aliases(Expression): -3123 arg_types = {"this": True, "expressions": True} +3121class SimilarTo(Binary, Predicate): +3122 pass +3123 3124 -3125 @property -3126 def aliases(self): -3127 return self.expressions +3125class Slice(Binary): +3126 arg_types = {"this": False, "expression": False} +3127 3128 -3129 -3130class AtTimeZone(Expression): -3131 arg_types = {"this": True, "zone": True} +3129class Sub(Binary): +3130 pass +3131 3132 -3133 -3134class Between(Predicate): -3135 arg_types = {"this": True, "low": True, "high": True} +3133class ArrayOverlaps(Binary): +3134 pass +3135 3136 -3137 -3138class Bracket(Condition): -3139 arg_types = {"this": True, "expressions": True} -3140 +3137# Unary Expressions +3138# (NOT a) +3139class Unary(Expression): +3140 pass 3141 -3142class Distinct(Expression): -3143 arg_types = {"expressions": False, "on": False} -3144 +3142 +3143class BitwiseNot(Unary): +3144 pass 3145 -3146class In(Predicate): -3147 arg_types = { -3148 "this": True, -3149 "expressions": False, -3150 "query": False, -3151 "unnest": False, -3152 "field": False, -3153 "is_global": False, -3154 } -3155 -3156 -3157class TimeUnit(Expression): -3158 """Automatically converts unit arg into a var.""" -3159 -3160 arg_types = {"unit": False} -3161 -3162 def __init__(self, **args): -3163 unit = args.get("unit") -3164 if isinstance(unit, (Column, Literal)): -3165 args["unit"] = Var(this=unit.name) -3166 elif isinstance(unit, Week): -3167 unit.set("this", Var(this=unit.this.name)) -3168 super().__init__(**args) -3169 +3146 +3147class Not(Unary, Condition): +3148 pass +3149 +3150 +3151class Paren(Unary, Condition): +3152 arg_types = {"this": True, "with": False} +3153 +3154 +3155class Neg(Unary): +3156 pass +3157 +3158 +3159# Special Functions +3160class Alias(Expression): +3161 arg_types = {"this": True, "alias": False} +3162 +3163 @property +3164 def output_name(self): +3165 return self.alias +3166 +3167 +3168class Aliases(Expression): +3169 arg_types = {"this": True, "expressions": True} 3170 -3171class Interval(TimeUnit): -3172 arg_types = {"this": False, "unit": False} -3173 +3171 @property +3172 def aliases(self): +3173 return self.expressions 3174 -3175class IgnoreNulls(Expression): -3176 pass -3177 +3175 +3176class AtTimeZone(Expression): +3177 arg_types = {"this": True, "zone": True} 3178 -3179class RespectNulls(Expression): -3180 pass -3181 +3179 +3180class Between(Predicate): +3181 arg_types = {"this": True, "low": True, "high": True} 3182 -3183# Functions -3184class Func(Condition): -3185 """ -3186 The base class for all function expressions. +3183 +3184class Bracket(Condition): +3185 arg_types = {"this": True, "expressions": True} +3186 3187 -3188 Attributes: -3189 is_var_len_args (bool): if set to True the last argument defined in arg_types will be -3190 treated as a variable length argument and the argument's value will be stored as a list. -3191 _sql_names (list): determines the SQL name (1st item in the list) and aliases (subsequent items) -3192 for this function expression. These values are used to map this node to a name during parsing -3193 as well as to provide the function's name during SQL string generation. By default the SQL -3194 name is set to the expression's class name transformed to snake case. -3195 """ -3196 -3197 is_var_len_args = False -3198 -3199 @classmethod -3200 def from_arg_list(cls, args): -3201 if cls.is_var_len_args: -3202 all_arg_keys = list(cls.arg_types) -3203 # If this function supports variable length argument treat the last argument as such. -3204 non_var_len_arg_keys = all_arg_keys[:-1] if cls.is_var_len_args else all_arg_keys -3205 num_non_var = len(non_var_len_arg_keys) -3206 -3207 args_dict = {arg_key: arg for arg, arg_key in zip(args, non_var_len_arg_keys)} -3208 args_dict[all_arg_keys[-1]] = args[num_non_var:] -3209 else: -3210 args_dict = {arg_key: arg for arg, arg_key in zip(args, cls.arg_types)} -3211 -3212 return cls(**args_dict) -3213 -3214 @classmethod -3215 def sql_names(cls): -3216 if cls is Func: -3217 raise NotImplementedError( -3218 "SQL name is only supported by concrete function implementations" -3219 ) -3220 if "_sql_names" not in cls.__dict__: -3221 cls._sql_names = [camel_to_snake_case(cls.__name__)] -3222 return cls._sql_names +3188class Distinct(Expression): +3189 arg_types = {"expressions": False, "on": False} +3190 +3191 +3192class In(Predicate): +3193 arg_types = { +3194 "this": True, +3195 "expressions": False, +3196 "query": False, +3197 "unnest": False, +3198 "field": False, +3199 "is_global": False, +3200 } +3201 +3202 +3203class TimeUnit(Expression): +3204 """Automatically converts unit arg into a var.""" +3205 +3206 arg_types = {"unit": False} +3207 +3208 def __init__(self, **args): +3209 unit = args.get("unit") +3210 if isinstance(unit, (Column, Literal)): +3211 args["unit"] = Var(this=unit.name) +3212 elif isinstance(unit, Week): +3213 unit.set("this", Var(this=unit.this.name)) +3214 super().__init__(**args) +3215 +3216 +3217class Interval(TimeUnit): +3218 arg_types = {"this": False, "unit": False} +3219 +3220 +3221class IgnoreNulls(Expression): +3222 pass 3223 -3224 @classmethod -3225 def sql_name(cls): -3226 return cls.sql_names()[0] +3224 +3225class RespectNulls(Expression): +3226 pass 3227 -3228 @classmethod -3229 def default_parser_mappings(cls): -3230 return {name: cls.from_arg_list for name in cls.sql_names()} -3231 -3232 -3233class AggFunc(Func): -3234 pass -3235 -3236 -3237class Abs(Func): -3238 pass -3239 -3240 -3241class Anonymous(Func): -3242 arg_types = {"this": True, "expressions": False} -3243 is_var_len_args = True +3228 +3229# Functions +3230class Func(Condition): +3231 """ +3232 The base class for all function expressions. +3233 +3234 Attributes: +3235 is_var_len_args (bool): if set to True the last argument defined in arg_types will be +3236 treated as a variable length argument and the argument's value will be stored as a list. +3237 _sql_names (list): determines the SQL name (1st item in the list) and aliases (subsequent items) +3238 for this function expression. These values are used to map this node to a name during parsing +3239 as well as to provide the function's name during SQL string generation. By default the SQL +3240 name is set to the expression's class name transformed to snake case. +3241 """ +3242 +3243 is_var_len_args = False 3244 -3245 -3246class ApproxDistinct(AggFunc): -3247 arg_types = {"this": True, "accuracy": False} -3248 -3249 -3250class Array(Func): -3251 arg_types = {"expressions": False} -3252 is_var_len_args = True -3253 -3254 -3255# https://docs.snowflake.com/en/sql-reference/functions/to_char -3256class ToChar(Func): -3257 arg_types = {"this": True, "format": False} -3258 +3245 @classmethod +3246 def from_arg_list(cls, args): +3247 if cls.is_var_len_args: +3248 all_arg_keys = list(cls.arg_types) +3249 # If this function supports variable length argument treat the last argument as such. +3250 non_var_len_arg_keys = all_arg_keys[:-1] if cls.is_var_len_args else all_arg_keys +3251 num_non_var = len(non_var_len_arg_keys) +3252 +3253 args_dict = {arg_key: arg for arg, arg_key in zip(args, non_var_len_arg_keys)} +3254 args_dict[all_arg_keys[-1]] = args[num_non_var:] +3255 else: +3256 args_dict = {arg_key: arg for arg, arg_key in zip(args, cls.arg_types)} +3257 +3258 return cls(**args_dict) 3259 -3260class GenerateSeries(Func): -3261 arg_types = {"start": True, "end": True, "step": False} -3262 -3263 -3264class ArrayAgg(AggFunc): -3265 pass -3266 -3267 -3268class ArrayAll(Func): -3269 arg_types = {"this": True, "expression": True} -3270 -3271 -3272class ArrayAny(Func): -3273 arg_types = {"this": True, "expression": True} -3274 -3275 -3276class ArrayConcat(Func): -3277 arg_types = {"this": True, "expressions": False} -3278 is_var_len_args = True -3279 -3280 -3281class ArrayContains(Binary, Func): -3282 pass -3283 -3284 -3285class ArrayContained(Binary): -3286 pass -3287 -3288 -3289class ArrayFilter(Func): -3290 arg_types = {"this": True, "expression": True} -3291 _sql_names = ["FILTER", "ARRAY_FILTER"] -3292 -3293 -3294class ArrayJoin(Func): -3295 arg_types = {"this": True, "expression": True, "null": False} -3296 -3297 -3298class ArraySize(Func): -3299 arg_types = {"this": True, "expression": False} +3260 @classmethod +3261 def sql_names(cls): +3262 if cls is Func: +3263 raise NotImplementedError( +3264 "SQL name is only supported by concrete function implementations" +3265 ) +3266 if "_sql_names" not in cls.__dict__: +3267 cls._sql_names = [camel_to_snake_case(cls.__name__)] +3268 return cls._sql_names +3269 +3270 @classmethod +3271 def sql_name(cls): +3272 return cls.sql_names()[0] +3273 +3274 @classmethod +3275 def default_parser_mappings(cls): +3276 return {name: cls.from_arg_list for name in cls.sql_names()} +3277 +3278 +3279class AggFunc(Func): +3280 pass +3281 +3282 +3283class Abs(Func): +3284 pass +3285 +3286 +3287class Anonymous(Func): +3288 arg_types = {"this": True, "expressions": False} +3289 is_var_len_args = True +3290 +3291 +3292class ApproxDistinct(AggFunc): +3293 arg_types = {"this": True, "accuracy": False} +3294 +3295 +3296class Array(Func): +3297 arg_types = {"expressions": False} +3298 is_var_len_args = True +3299 3300 -3301 -3302class ArraySort(Func): -3303 arg_types = {"this": True, "expression": False} +3301# https://docs.snowflake.com/en/sql-reference/functions/to_char +3302class ToChar(Func): +3303 arg_types = {"this": True, "format": False} 3304 3305 -3306class ArraySum(Func): -3307 pass +3306class GenerateSeries(Func): +3307 arg_types = {"start": True, "end": True, "step": False} 3308 3309 -3310class ArrayUnionAgg(AggFunc): +3310class ArrayAgg(AggFunc): 3311 pass 3312 3313 -3314class Avg(AggFunc): -3315 pass +3314class ArrayAll(Func): +3315 arg_types = {"this": True, "expression": True} 3316 3317 -3318class AnyValue(AggFunc): -3319 pass +3318class ArrayAny(Func): +3319 arg_types = {"this": True, "expression": True} 3320 3321 -3322class Case(Func): -3323 arg_types = {"this": False, "ifs": True, "default": False} -3324 +3322class ArrayConcat(Func): +3323 arg_types = {"this": True, "expressions": False} +3324 is_var_len_args = True 3325 -3326class Cast(Func): -3327 arg_types = {"this": True, "to": True} -3328 -3329 @property -3330 def name(self) -> str: -3331 return self.this.name -3332 -3333 @property -3334 def to(self): -3335 return self.args["to"] -3336 -3337 @property -3338 def output_name(self): -3339 return self.name -3340 -3341 def is_type(self, dtype: DataType.Type) -> bool: -3342 return self.to.is_type(dtype) +3326 +3327class ArrayContains(Binary, Func): +3328 pass +3329 +3330 +3331class ArrayContained(Binary): +3332 pass +3333 +3334 +3335class ArrayFilter(Func): +3336 arg_types = {"this": True, "expression": True} +3337 _sql_names = ["FILTER", "ARRAY_FILTER"] +3338 +3339 +3340class ArrayJoin(Func): +3341 arg_types = {"this": True, "expression": True, "null": False} +3342 3343 -3344 -3345class Collate(Binary): -3346 pass +3344class ArraySize(Func): +3345 arg_types = {"this": True, "expression": False} +3346 3347 -3348 -3349class TryCast(Cast): -3350 pass +3348class ArraySort(Func): +3349 arg_types = {"this": True, "expression": False} +3350 3351 -3352 -3353class Ceil(Func): -3354 arg_types = {"this": True, "decimals": False} -3355 _sql_names = ["CEIL", "CEILING"] -3356 -3357 -3358class Coalesce(Func): -3359 arg_types = {"this": True, "expressions": False} -3360 is_var_len_args = True -3361 +3352class ArraySum(Func): +3353 pass +3354 +3355 +3356class ArrayUnionAgg(AggFunc): +3357 pass +3358 +3359 +3360class Avg(AggFunc): +3361 pass 3362 -3363class Concat(Func): -3364 arg_types = {"expressions": True} -3365 is_var_len_args = True +3363 +3364class AnyValue(AggFunc): +3365 pass 3366 3367 -3368class ConcatWs(Concat): -3369 _sql_names = ["CONCAT_WS"] +3368class Case(Func): +3369 arg_types = {"this": False, "ifs": True, "default": False} 3370 3371 -3372class Count(AggFunc): -3373 arg_types = {"this": False} +3372class Cast(Func): +3373 arg_types = {"this": True, "to": True} 3374 -3375 -3376class CountIf(AggFunc): -3377 pass +3375 @property +3376 def name(self) -> str: +3377 return self.this.name 3378 -3379 -3380class CurrentDate(Func): -3381 arg_types = {"this": False} +3379 @property +3380 def to(self): +3381 return self.args["to"] 3382 -3383 -3384class CurrentDatetime(Func): -3385 arg_types = {"this": False} +3383 @property +3384 def output_name(self): +3385 return self.name 3386 -3387 -3388class CurrentTime(Func): -3389 arg_types = {"this": False} +3387 def is_type(self, dtype: DataType.Type) -> bool: +3388 return self.to.is_type(dtype) +3389 3390 -3391 -3392class CurrentTimestamp(Func): -3393 arg_types = {"this": False} +3391class Collate(Binary): +3392 pass +3393 3394 -3395 -3396class DateAdd(Func, TimeUnit): -3397 arg_types = {"this": True, "expression": True, "unit": False} +3395class TryCast(Cast): +3396 pass +3397 3398 -3399 -3400class DateSub(Func, TimeUnit): -3401 arg_types = {"this": True, "expression": True, "unit": False} +3399class Ceil(Func): +3400 arg_types = {"this": True, "decimals": False} +3401 _sql_names = ["CEIL", "CEILING"] 3402 3403 -3404class DateDiff(Func, TimeUnit): -3405 _sql_names = ["DATEDIFF", "DATE_DIFF"] -3406 arg_types = {"this": True, "expression": True, "unit": False} +3404class Coalesce(Func): +3405 arg_types = {"this": True, "expressions": False} +3406 is_var_len_args = True 3407 3408 -3409class DateTrunc(Func): -3410 arg_types = {"unit": True, "this": True, "zone": False} -3411 +3409class Concat(Func): +3410 arg_types = {"expressions": True} +3411 is_var_len_args = True 3412 -3413class DatetimeAdd(Func, TimeUnit): -3414 arg_types = {"this": True, "expression": True, "unit": False} -3415 +3413 +3414class ConcatWs(Concat): +3415 _sql_names = ["CONCAT_WS"] 3416 -3417class DatetimeSub(Func, TimeUnit): -3418 arg_types = {"this": True, "expression": True, "unit": False} -3419 +3417 +3418class Count(AggFunc): +3419 arg_types = {"this": False} 3420 -3421class DatetimeDiff(Func, TimeUnit): -3422 arg_types = {"this": True, "expression": True, "unit": False} -3423 +3421 +3422class CountIf(AggFunc): +3423 pass 3424 -3425class DatetimeTrunc(Func, TimeUnit): -3426 arg_types = {"this": True, "unit": True, "zone": False} -3427 +3425 +3426class CurrentDate(Func): +3427 arg_types = {"this": False} 3428 -3429class DayOfWeek(Func): -3430 _sql_names = ["DAY_OF_WEEK", "DAYOFWEEK"] -3431 +3429 +3430class CurrentDatetime(Func): +3431 arg_types = {"this": False} 3432 -3433class DayOfMonth(Func): -3434 _sql_names = ["DAY_OF_MONTH", "DAYOFMONTH"] -3435 +3433 +3434class CurrentTime(Func): +3435 arg_types = {"this": False} 3436 -3437class DayOfYear(Func): -3438 _sql_names = ["DAY_OF_YEAR", "DAYOFYEAR"] -3439 +3437 +3438class CurrentTimestamp(Func): +3439 arg_types = {"this": False} 3440 -3441class WeekOfYear(Func): -3442 _sql_names = ["WEEK_OF_YEAR", "WEEKOFYEAR"] -3443 +3441 +3442class DateAdd(Func, TimeUnit): +3443 arg_types = {"this": True, "expression": True, "unit": False} 3444 -3445class LastDateOfMonth(Func): -3446 pass -3447 +3445 +3446class DateSub(Func, TimeUnit): +3447 arg_types = {"this": True, "expression": True, "unit": False} 3448 -3449class Extract(Func): -3450 arg_types = {"this": True, "expression": True} -3451 -3452 -3453class TimestampAdd(Func, TimeUnit): -3454 arg_types = {"this": True, "expression": True, "unit": False} -3455 -3456 -3457class TimestampSub(Func, TimeUnit): -3458 arg_types = {"this": True, "expression": True, "unit": False} -3459 -3460 -3461class TimestampDiff(Func, TimeUnit): -3462 arg_types = {"this": True, "expression": True, "unit": False} -3463 -3464 -3465class TimestampTrunc(Func, TimeUnit): -3466 arg_types = {"this": True, "unit": True, "zone": False} -3467 -3468 -3469class TimeAdd(Func, TimeUnit): -3470 arg_types = {"this": True, "expression": True, "unit": False} -3471 -3472 -3473class TimeSub(Func, TimeUnit): -3474 arg_types = {"this": True, "expression": True, "unit": False} -3475 -3476 -3477class TimeDiff(Func, TimeUnit): -3478 arg_types = {"this": True, "expression": True, "unit": False} -3479 -3480 -3481class TimeTrunc(Func, TimeUnit): -3482 arg_types = {"this": True, "unit": True, "zone": False} -3483 -3484 -3485class DateFromParts(Func): -3486 _sql_names = ["DATEFROMPARTS"] -3487 arg_types = {"year": True, "month": True, "day": True} -3488 +3449 +3450class DateDiff(Func, TimeUnit): +3451 _sql_names = ["DATEDIFF", "DATE_DIFF"] +3452 arg_types = {"this": True, "expression": True, "unit": False} +3453 +3454 +3455class DateTrunc(Func): +3456 arg_types = {"unit": True, "this": True, "zone": False} +3457 +3458 +3459class DatetimeAdd(Func, TimeUnit): +3460 arg_types = {"this": True, "expression": True, "unit": False} +3461 +3462 +3463class DatetimeSub(Func, TimeUnit): +3464 arg_types = {"this": True, "expression": True, "unit": False} +3465 +3466 +3467class DatetimeDiff(Func, TimeUnit): +3468 arg_types = {"this": True, "expression": True, "unit": False} +3469 +3470 +3471class DatetimeTrunc(Func, TimeUnit): +3472 arg_types = {"this": True, "unit": True, "zone": False} +3473 +3474 +3475class DayOfWeek(Func): +3476 _sql_names = ["DAY_OF_WEEK", "DAYOFWEEK"] +3477 +3478 +3479class DayOfMonth(Func): +3480 _sql_names = ["DAY_OF_MONTH", "DAYOFMONTH"] +3481 +3482 +3483class DayOfYear(Func): +3484 _sql_names = ["DAY_OF_YEAR", "DAYOFYEAR"] +3485 +3486 +3487class WeekOfYear(Func): +3488 _sql_names = ["WEEK_OF_YEAR", "WEEKOFYEAR"] 3489 -3490class DateStrToDate(Func): -3491 pass -3492 +3490 +3491class LastDateOfMonth(Func): +3492 pass 3493 -3494class DateToDateStr(Func): -3495 pass -3496 +3494 +3495class Extract(Func): +3496 arg_types = {"this": True, "expression": True} 3497 -3498class DateToDi(Func): -3499 pass -3500 +3498 +3499class TimestampAdd(Func, TimeUnit): +3500 arg_types = {"this": True, "expression": True, "unit": False} 3501 -3502class Day(Func): -3503 pass -3504 +3502 +3503class TimestampSub(Func, TimeUnit): +3504 arg_types = {"this": True, "expression": True, "unit": False} 3505 -3506class Decode(Func): -3507 arg_types = {"this": True, "charset": True, "replace": False} -3508 +3506 +3507class TimestampDiff(Func, TimeUnit): +3508 arg_types = {"this": True, "expression": True, "unit": False} 3509 -3510class DiToDate(Func): -3511 pass -3512 +3510 +3511class TimestampTrunc(Func, TimeUnit): +3512 arg_types = {"this": True, "unit": True, "zone": False} 3513 -3514class Encode(Func): -3515 arg_types = {"this": True, "charset": True} -3516 +3514 +3515class TimeAdd(Func, TimeUnit): +3516 arg_types = {"this": True, "expression": True, "unit": False} 3517 -3518class Exp(Func): -3519 pass -3520 +3518 +3519class TimeSub(Func, TimeUnit): +3520 arg_types = {"this": True, "expression": True, "unit": False} 3521 -3522class Explode(Func): -3523 pass -3524 +3522 +3523class TimeDiff(Func, TimeUnit): +3524 arg_types = {"this": True, "expression": True, "unit": False} 3525 -3526class Floor(Func): -3527 arg_types = {"this": True, "decimals": False} -3528 +3526 +3527class TimeTrunc(Func, TimeUnit): +3528 arg_types = {"this": True, "unit": True, "zone": False} 3529 -3530class Greatest(Func): -3531 arg_types = {"this": True, "expressions": False} -3532 is_var_len_args = True -3533 +3530 +3531class DateFromParts(Func): +3532 _sql_names = ["DATEFROMPARTS"] +3533 arg_types = {"year": True, "month": True, "day": True} 3534 -3535class GroupConcat(Func): -3536 arg_types = {"this": True, "separator": False} -3537 +3535 +3536class DateStrToDate(Func): +3537 pass 3538 -3539class Hex(Func): -3540 pass -3541 +3539 +3540class DateToDateStr(Func): +3541 pass 3542 -3543class If(Func): -3544 arg_types = {"this": True, "true": True, "false": False} -3545 +3543 +3544class DateToDi(Func): +3545 pass 3546 -3547class IfNull(Func): -3548 arg_types = {"this": True, "expression": False} -3549 _sql_names = ["IFNULL", "NVL"] +3547 +3548class Day(Func): +3549 pass 3550 3551 -3552class Initcap(Func): -3553 pass +3552class Decode(Func): +3553 arg_types = {"this": True, "charset": True, "replace": False} 3554 3555 -3556class JSONBContains(Binary): -3557 _sql_names = ["JSONB_CONTAINS"] +3556class DiToDate(Func): +3557 pass 3558 3559 -3560class JSONExtract(Binary, Func): -3561 _sql_names = ["JSON_EXTRACT"] +3560class Encode(Func): +3561 arg_types = {"this": True, "charset": True} 3562 3563 -3564class JSONExtractScalar(JSONExtract): -3565 _sql_names = ["JSON_EXTRACT_SCALAR"] +3564class Exp(Func): +3565 pass 3566 3567 -3568class JSONBExtract(JSONExtract): -3569 _sql_names = ["JSONB_EXTRACT"] +3568class Explode(Func): +3569 pass 3570 3571 -3572class JSONBExtractScalar(JSONExtract): -3573 _sql_names = ["JSONB_EXTRACT_SCALAR"] +3572class ExponentialTimeDecayedAvg(AggFunc): +3573 arg_types = {"this": True, "time": False, "decay": False} 3574 3575 -3576class Least(Func): -3577 arg_types = {"expressions": False} -3578 is_var_len_args = True +3576class Floor(Func): +3577 arg_types = {"this": True, "decimals": False} +3578 3579 -3580 -3581class Length(Func): -3582 pass +3580class Greatest(Func): +3581 arg_types = {"this": True, "expressions": False} +3582 is_var_len_args = True 3583 3584 -3585class Levenshtein(Func): -3586 arg_types = { -3587 "this": True, -3588 "expression": False, -3589 "ins_cost": False, -3590 "del_cost": False, -3591 "sub_cost": False, -3592 } -3593 -3594 -3595class Ln(Func): -3596 pass -3597 -3598 -3599class Log(Func): -3600 arg_types = {"this": True, "expression": False} -3601 -3602 -3603class Log2(Func): -3604 pass -3605 -3606 -3607class Log10(Func): -3608 pass +3585class GroupConcat(Func): +3586 arg_types = {"this": True, "separator": False} +3587 +3588 +3589class GroupUniqArray(AggFunc): +3590 arg_types = {"this": True, "size": False} +3591 +3592 +3593class Hex(Func): +3594 pass +3595 +3596 +3597class Histogram(AggFunc): +3598 arg_types = {"this": True, "bins": False} +3599 +3600 +3601class If(Func): +3602 arg_types = {"this": True, "true": True, "false": False} +3603 +3604 +3605class IfNull(Func): +3606 arg_types = {"this": True, "expression": False} +3607 _sql_names = ["IFNULL", "NVL"] +3608 3609 -3610 -3611class LogicalOr(AggFunc): -3612 _sql_names = ["LOGICAL_OR", "BOOL_OR", "BOOLOR_AGG"] +3610class Initcap(Func): +3611 pass +3612 3613 -3614 -3615class LogicalAnd(AggFunc): -3616 _sql_names = ["LOGICAL_AND", "BOOL_AND", "BOOLAND_AGG"] +3614class JSONKeyValue(Expression): +3615 arg_types = {"this": True, "expression": True} +3616 3617 -3618 -3619class Lower(Func): -3620 _sql_names = ["LOWER", "LCASE"] -3621 -3622 -3623class Map(Func): -3624 arg_types = {"keys": False, "values": False} -3625 -3626 -3627class VarMap(Func): -3628 arg_types = {"keys": True, "values": True} -3629 is_var_len_args = True -3630 +3618class JSONObject(Func): +3619 arg_types = { +3620 "expressions": False, +3621 "null_handling": False, +3622 "unique_keys": False, +3623 "return_type": False, +3624 "format_json": False, +3625 "encoding": False, +3626 } +3627 +3628 +3629class JSONBContains(Binary): +3630 _sql_names = ["JSONB_CONTAINS"] 3631 -3632class Matches(Func): -3633 """Oracle/Snowflake decode. -3634 https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions040.htm -3635 Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else) -3636 """ -3637 -3638 arg_types = {"this": True, "expressions": True} -3639 is_var_len_args = True +3632 +3633class JSONExtract(Binary, Func): +3634 _sql_names = ["JSON_EXTRACT"] +3635 +3636 +3637class JSONExtractScalar(JSONExtract): +3638 _sql_names = ["JSON_EXTRACT_SCALAR"] +3639 3640 -3641 -3642class Max(AggFunc): -3643 arg_types = {"this": True, "expressions": False} -3644 is_var_len_args = True -3645 -3646 -3647class Min(AggFunc): -3648 arg_types = {"this": True, "expressions": False} -3649 is_var_len_args = True -3650 -3651 -3652class Month(Func): -3653 pass -3654 -3655 -3656class Nvl2(Func): -3657 arg_types = {"this": True, "true": True, "false": False} -3658 -3659 -3660class Posexplode(Func): -3661 pass -3662 -3663 -3664class Pow(Binary, Func): -3665 _sql_names = ["POWER", "POW"] +3641class JSONBExtract(JSONExtract): +3642 _sql_names = ["JSONB_EXTRACT"] +3643 +3644 +3645class JSONBExtractScalar(JSONExtract): +3646 _sql_names = ["JSONB_EXTRACT_SCALAR"] +3647 +3648 +3649class Least(Func): +3650 arg_types = {"expressions": False} +3651 is_var_len_args = True +3652 +3653 +3654class Length(Func): +3655 pass +3656 +3657 +3658class Levenshtein(Func): +3659 arg_types = { +3660 "this": True, +3661 "expression": False, +3662 "ins_cost": False, +3663 "del_cost": False, +3664 "sub_cost": False, +3665 } 3666 3667 -3668class PercentileCont(AggFunc): +3668class Ln(Func): 3669 pass 3670 3671 -3672class PercentileDisc(AggFunc): -3673 pass +3672class Log(Func): +3673 arg_types = {"this": True, "expression": False} 3674 3675 -3676class Quantile(AggFunc): -3677 arg_types = {"this": True, "quantile": True} +3676class Log2(Func): +3677 pass 3678 3679 -3680# Clickhouse-specific: -3681# https://clickhouse.com/docs/en/sql-reference/aggregate-functions/reference/quantiles/#quantiles -3682class Quantiles(AggFunc): -3683 arg_types = {"parameters": True, "expressions": True} -3684 is_var_len_args = True -3685 +3680class Log10(Func): +3681 pass +3682 +3683 +3684class LogicalOr(AggFunc): +3685 _sql_names = ["LOGICAL_OR", "BOOL_OR", "BOOLOR_AGG"] 3686 -3687class QuantileIf(AggFunc): -3688 arg_types = {"parameters": True, "expressions": True} -3689 +3687 +3688class LogicalAnd(AggFunc): +3689 _sql_names = ["LOGICAL_AND", "BOOL_AND", "BOOLAND_AGG"] 3690 -3691class ApproxQuantile(Quantile): -3692 arg_types = {"this": True, "quantile": True, "accuracy": False, "weight": False} -3693 +3691 +3692class Lower(Func): +3693 _sql_names = ["LOWER", "LCASE"] 3694 -3695class RangeN(Func): -3696 arg_types = {"this": True, "expressions": True, "each": False} -3697 +3695 +3696class Map(Func): +3697 arg_types = {"keys": False, "values": False} 3698 -3699class ReadCSV(Func): -3700 _sql_names = ["READ_CSV"] -3701 is_var_len_args = True -3702 arg_types = {"this": True, "expressions": False} +3699 +3700class VarMap(Func): +3701 arg_types = {"keys": True, "values": True} +3702 is_var_len_args = True 3703 3704 -3705class Reduce(Func): -3706 arg_types = {"this": True, "initial": True, "merge": True, "finish": False} -3707 -3708 -3709class RegexpExtract(Func): -3710 arg_types = { -3711 "this": True, -3712 "expression": True, -3713 "position": False, -3714 "occurrence": False, -3715 "group": False, -3716 } -3717 +3705class Matches(Func): +3706 """Oracle/Snowflake decode. +3707 https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions040.htm +3708 Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else) +3709 """ +3710 +3711 arg_types = {"this": True, "expressions": True} +3712 is_var_len_args = True +3713 +3714 +3715class Max(AggFunc): +3716 arg_types = {"this": True, "expressions": False} +3717 is_var_len_args = True 3718 -3719class RegexpLike(Func): -3720 arg_types = {"this": True, "expression": True, "flag": False} -3721 -3722 -3723class RegexpILike(Func): -3724 arg_types = {"this": True, "expression": True, "flag": False} -3725 -3726 -3727class RegexpSplit(Func): -3728 arg_types = {"this": True, "expression": True} -3729 -3730 -3731class Repeat(Func): -3732 arg_types = {"this": True, "times": True} -3733 -3734 -3735class Round(Func): -3736 arg_types = {"this": True, "decimals": False} -3737 -3738 -3739class RowNumber(Func): -3740 arg_types: t.Dict[str, t.Any] = {} -3741 -3742 -3743class SafeDivide(Func): -3744 arg_types = {"this": True, "expression": True} -3745 -3746 -3747class SetAgg(AggFunc): -3748 pass -3749 -3750 -3751class SortArray(Func): -3752 arg_types = {"this": True, "asc": False} -3753 -3754 -3755class Split(Func): -3756 arg_types = {"this": True, "expression": True, "limit": False} -3757 +3719 +3720class Min(AggFunc): +3721 arg_types = {"this": True, "expressions": False} +3722 is_var_len_args = True +3723 +3724 +3725class Month(Func): +3726 pass +3727 +3728 +3729class Nvl2(Func): +3730 arg_types = {"this": True, "true": True, "false": False} +3731 +3732 +3733class Posexplode(Func): +3734 pass +3735 +3736 +3737class Pow(Binary, Func): +3738 _sql_names = ["POWER", "POW"] +3739 +3740 +3741class PercentileCont(AggFunc): +3742 pass +3743 +3744 +3745class PercentileDisc(AggFunc): +3746 pass +3747 +3748 +3749class Quantile(AggFunc): +3750 arg_types = {"this": True, "quantile": True} +3751 +3752 +3753# Clickhouse-specific: +3754# https://clickhouse.com/docs/en/sql-reference/aggregate-functions/reference/quantiles/#quantiles +3755class Quantiles(AggFunc): +3756 arg_types = {"parameters": True, "expressions": True} +3757 is_var_len_args = True 3758 -3759# Start may be omitted in the case of postgres -3760# https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6 -3761class Substring(Func): -3762 arg_types = {"this": True, "start": False, "length": False} +3759 +3760class QuantileIf(AggFunc): +3761 arg_types = {"parameters": True, "expressions": True} +3762 3763 -3764 -3765class StrPosition(Func): -3766 arg_types = { -3767 "this": True, -3768 "substr": True, -3769 "position": False, -3770 "instance": False, -3771 } -3772 -3773 -3774class StrToDate(Func): -3775 arg_types = {"this": True, "format": True} +3764class ApproxQuantile(Quantile): +3765 arg_types = {"this": True, "quantile": True, "accuracy": False, "weight": False} +3766 +3767 +3768class RangeN(Func): +3769 arg_types = {"this": True, "expressions": True, "each": False} +3770 +3771 +3772class ReadCSV(Func): +3773 _sql_names = ["READ_CSV"] +3774 is_var_len_args = True +3775 arg_types = {"this": True, "expressions": False} 3776 3777 -3778class StrToTime(Func): -3779 arg_types = {"this": True, "format": True} +3778class Reduce(Func): +3779 arg_types = {"this": True, "initial": True, "merge": True, "finish": False} 3780 3781 -3782# Spark allows unix_timestamp() -3783# https://spark.apache.org/docs/3.1.3/api/python/reference/api/pyspark.sql.functions.unix_timestamp.html -3784class StrToUnix(Func): -3785 arg_types = {"this": False, "format": False} -3786 -3787 -3788class NumberToStr(Func): -3789 arg_types = {"this": True, "format": True} +3782class RegexpExtract(Func): +3783 arg_types = { +3784 "this": True, +3785 "expression": True, +3786 "position": False, +3787 "occurrence": False, +3788 "group": False, +3789 } 3790 3791 -3792class Struct(Func): -3793 arg_types = {"expressions": True} -3794 is_var_len_args = True +3792class RegexpLike(Func): +3793 arg_types = {"this": True, "expression": True, "flag": False} +3794 3795 -3796 -3797class StructExtract(Func): -3798 arg_types = {"this": True, "expression": True} +3796class RegexpILike(Func): +3797 arg_types = {"this": True, "expression": True, "flag": False} +3798 3799 -3800 -3801class Sum(AggFunc): -3802 pass +3800class RegexpSplit(Func): +3801 arg_types = {"this": True, "expression": True} +3802 3803 -3804 -3805class Sqrt(Func): -3806 pass +3804class Repeat(Func): +3805 arg_types = {"this": True, "times": True} +3806 3807 -3808 -3809class Stddev(AggFunc): -3810 pass +3808class Round(Func): +3809 arg_types = {"this": True, "decimals": False} +3810 3811 -3812 -3813class StddevPop(AggFunc): -3814 pass +3812class RowNumber(Func): +3813 arg_types: t.Dict[str, t.Any] = {} +3814 3815 -3816 -3817class StddevSamp(AggFunc): -3818 pass +3816class SafeDivide(Func): +3817 arg_types = {"this": True, "expression": True} +3818 3819 -3820 -3821class TimeToStr(Func): -3822 arg_types = {"this": True, "format": True} +3820class SetAgg(AggFunc): +3821 pass +3822 3823 -3824 -3825class TimeToTimeStr(Func): -3826 pass +3824class SortArray(Func): +3825 arg_types = {"this": True, "asc": False} +3826 3827 -3828 -3829class TimeToUnix(Func): -3830 pass +3828class Split(Func): +3829 arg_types = {"this": True, "expression": True, "limit": False} +3830 3831 -3832 -3833class TimeStrToDate(Func): -3834 pass -3835 +3832# Start may be omitted in the case of postgres +3833# https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6 +3834class Substring(Func): +3835 arg_types = {"this": True, "start": False, "length": False} 3836 -3837class TimeStrToTime(Func): -3838 pass -3839 -3840 -3841class TimeStrToUnix(Func): -3842 pass -3843 -3844 -3845class Trim(Func): -3846 arg_types = { -3847 "this": True, -3848 "expression": False, -3849 "position": False, -3850 "collation": False, -3851 } -3852 +3837 +3838class StrPosition(Func): +3839 arg_types = { +3840 "this": True, +3841 "substr": True, +3842 "position": False, +3843 "instance": False, +3844 } +3845 +3846 +3847class StrToDate(Func): +3848 arg_types = {"this": True, "format": True} +3849 +3850 +3851class StrToTime(Func): +3852 arg_types = {"this": True, "format": True} 3853 -3854class TsOrDsAdd(Func, TimeUnit): -3855 arg_types = {"this": True, "expression": True, "unit": False} -3856 -3857 -3858class TsOrDsToDateStr(Func): -3859 pass +3854 +3855# Spark allows unix_timestamp() +3856# https://spark.apache.org/docs/3.1.3/api/python/reference/api/pyspark.sql.functions.unix_timestamp.html +3857class StrToUnix(Func): +3858 arg_types = {"this": False, "format": False} +3859 3860 -3861 -3862class TsOrDsToDate(Func): -3863 arg_types = {"this": True, "format": False} +3861class NumberToStr(Func): +3862 arg_types = {"this": True, "format": True} +3863 3864 -3865 -3866class TsOrDiToDi(Func): -3867 pass +3865class Struct(Func): +3866 arg_types = {"expressions": True} +3867 is_var_len_args = True 3868 3869 -3870class Unhex(Func): -3871 pass +3870class StructExtract(Func): +3871 arg_types = {"this": True, "expression": True} 3872 3873 -3874class UnixToStr(Func): -3875 arg_types = {"this": True, "format": False} +3874class Sum(AggFunc): +3875 pass 3876 3877 -3878# https://prestodb.io/docs/current/functions/datetime.html -3879# presto has weird zone/hours/minutes -3880class UnixToTime(Func): -3881 arg_types = {"this": True, "scale": False, "zone": False, "hours": False, "minutes": False} -3882 -3883 SECONDS = Literal.string("seconds") -3884 MILLIS = Literal.string("millis") -3885 MICROS = Literal.string("micros") -3886 -3887 -3888class UnixToTimeStr(Func): -3889 pass -3890 -3891 -3892class Upper(Func): -3893 _sql_names = ["UPPER", "UCASE"] -3894 -3895 -3896class Variance(AggFunc): -3897 _sql_names = ["VARIANCE", "VARIANCE_SAMP", "VAR_SAMP"] -3898 -3899 -3900class VariancePop(AggFunc): -3901 _sql_names = ["VARIANCE_POP", "VAR_POP"] -3902 -3903 -3904class Week(Func): -3905 arg_types = {"this": True, "mode": False} -3906 -3907 -3908class XMLTable(Func): -3909 arg_types = {"this": True, "passing": False, "columns": False, "by_ref": False} -3910 -3911 -3912class Year(Func): -3913 pass -3914 -3915 -3916class Use(Expression): -3917 arg_types = {"this": True, "kind": False} -3918 -3919 -3920class Merge(Expression): -3921 arg_types = {"this": True, "using": True, "on": True, "expressions": True} -3922 -3923 -3924class When(Func): -3925 arg_types = {"matched": True, "source": False, "condition": False, "then": True} +3878class Sqrt(Func): +3879 pass +3880 +3881 +3882class Stddev(AggFunc): +3883 pass +3884 +3885 +3886class StddevPop(AggFunc): +3887 pass +3888 +3889 +3890class StddevSamp(AggFunc): +3891 pass +3892 +3893 +3894class TimeToStr(Func): +3895 arg_types = {"this": True, "format": True} +3896 +3897 +3898class TimeToTimeStr(Func): +3899 pass +3900 +3901 +3902class TimeToUnix(Func): +3903 pass +3904 +3905 +3906class TimeStrToDate(Func): +3907 pass +3908 +3909 +3910class TimeStrToTime(Func): +3911 pass +3912 +3913 +3914class TimeStrToUnix(Func): +3915 pass +3916 +3917 +3918class Trim(Func): +3919 arg_types = { +3920 "this": True, +3921 "expression": False, +3922 "position": False, +3923 "collation": False, +3924 } +3925 3926 -3927 -3928def _norm_args(expression): -3929 args = {} +3927class TsOrDsAdd(Func, TimeUnit): +3928 arg_types = {"this": True, "expression": True, "unit": False} +3929 3930 -3931 for k, arg in expression.args.items(): -3932 if isinstance(arg, list): -3933 arg = [_norm_arg(a) for a in arg] -3934 if not arg: -3935 arg = None -3936 else: -3937 arg = _norm_arg(arg) +3931class TsOrDsToDateStr(Func): +3932 pass +3933 +3934 +3935class TsOrDsToDate(Func): +3936 arg_types = {"this": True, "format": False} +3937 3938 -3939 if arg is not None and arg is not False: -3940 args[k] = arg +3939class TsOrDiToDi(Func): +3940 pass 3941 -3942 return args -3943 -3944 -3945def _norm_arg(arg): -3946 return arg.lower() if isinstance(arg, str) else arg -3947 -3948 -3949ALL_FUNCTIONS = subclasses(__name__, Func, (AggFunc, Anonymous, Func)) +3942 +3943class Unhex(Func): +3944 pass +3945 +3946 +3947class UnixToStr(Func): +3948 arg_types = {"this": True, "format": False} +3949 3950 -3951 -3952# Helpers -3953def maybe_parse( -3954 sql_or_expression: ExpOrStr, -3955 *, -3956 into: t.Optional[IntoType] = None, -3957 dialect: DialectType = None, -3958 prefix: t.Optional[str] = None, -3959 copy: bool = False, -3960 **opts, -3961) -> Expression: -3962 """Gracefully handle a possible string or expression. +3951# https://prestodb.io/docs/current/functions/datetime.html +3952# presto has weird zone/hours/minutes +3953class UnixToTime(Func): +3954 arg_types = {"this": True, "scale": False, "zone": False, "hours": False, "minutes": False} +3955 +3956 SECONDS = Literal.string("seconds") +3957 MILLIS = Literal.string("millis") +3958 MICROS = Literal.string("micros") +3959 +3960 +3961class UnixToTimeStr(Func): +3962 pass 3963 -3964 Example: -3965 >>> maybe_parse("1") -3966 (LITERAL this: 1, is_string: False) -3967 >>> maybe_parse(to_identifier("x")) -3968 (IDENTIFIER this: x, quoted: False) -3969 -3970 Args: -3971 sql_or_expression: the SQL code string or an expression -3972 into: the SQLGlot Expression to parse into -3973 dialect: the dialect used to parse the input expressions (in the case that an -3974 input expression is a SQL string). -3975 prefix: a string to prefix the sql with before it gets parsed -3976 (automatically includes a space) -3977 copy: whether or not to copy the expression. -3978 **opts: other options to use to parse the input expressions (again, in the case -3979 that an input expression is a SQL string). +3964 +3965class Upper(Func): +3966 _sql_names = ["UPPER", "UCASE"] +3967 +3968 +3969class Variance(AggFunc): +3970 _sql_names = ["VARIANCE", "VARIANCE_SAMP", "VAR_SAMP"] +3971 +3972 +3973class VariancePop(AggFunc): +3974 _sql_names = ["VARIANCE_POP", "VAR_POP"] +3975 +3976 +3977class Week(Func): +3978 arg_types = {"this": True, "mode": False} +3979 3980 -3981 Returns: -3982 Expression: the parsed or given expression. -3983 """ -3984 if isinstance(sql_or_expression, Expression): -3985 if copy: -3986 return sql_or_expression.copy() -3987 return sql_or_expression +3981class XMLTable(Func): +3982 arg_types = {"this": True, "passing": False, "columns": False, "by_ref": False} +3983 +3984 +3985class Year(Func): +3986 pass +3987 3988 -3989 import sqlglot -3990 -3991 sql = str(sql_or_expression) -3992 if prefix: -3993 sql = f"{prefix} {sql}" -3994 return sqlglot.parse_one(sql, read=dialect, into=into, **opts) +3989class Use(Expression): +3990 arg_types = {"this": True, "kind": False} +3991 +3992 +3993class Merge(Expression): +3994 arg_types = {"this": True, "using": True, "on": True, "expressions": True} 3995 3996 -3997def _maybe_copy(instance, copy=True): -3998 return instance.copy() if copy else instance +3997class When(Func): +3998 arg_types = {"matched": True, "source": False, "condition": False, "then": True} 3999 4000 -4001def _is_wrong_expression(expression, into): -4002 return isinstance(expression, Expression) and not isinstance(expression, into) +4001def _norm_arg(arg): +4002 return arg.lower() if type(arg) is str else arg 4003 4004 -4005def _apply_builder( -4006 expression, -4007 instance, -4008 arg, -4009 copy=True, -4010 prefix=None, -4011 into=None, -4012 dialect=None, -4013 **opts, -4014): -4015 if _is_wrong_expression(expression, into): -4016 expression = into(this=expression) -4017 instance = _maybe_copy(instance, copy) -4018 expression = maybe_parse( -4019 sql_or_expression=expression, -4020 prefix=prefix, -4021 into=into, -4022 dialect=dialect, -4023 **opts, -4024 ) -4025 instance.set(arg, expression) -4026 return instance -4027 -4028 -4029def _apply_child_list_builder( -4030 *expressions, -4031 instance, -4032 arg, -4033 append=True, -4034 copy=True, -4035 prefix=None, -4036 into=None, -4037 dialect=None, -4038 properties=None, -4039 **opts, -4040): -4041 instance = _maybe_copy(instance, copy) -4042 parsed = [] -4043 for expression in expressions: -4044 if _is_wrong_expression(expression, into): -4045 expression = into(expressions=[expression]) -4046 expression = maybe_parse( -4047 expression, -4048 into=into, -4049 dialect=dialect, -4050 prefix=prefix, -4051 **opts, -4052 ) -4053 parsed.extend(expression.expressions) -4054 -4055 existing = instance.args.get(arg) -4056 if append and existing: -4057 parsed = existing.expressions + parsed -4058 -4059 child = into(expressions=parsed) -4060 for k, v in (properties or {}).items(): -4061 child.set(k, v) -4062 instance.set(arg, child) -4063 return instance -4064 -4065 -4066def _apply_list_builder( -4067 *expressions, -4068 instance, -4069 arg, -4070 append=True, -4071 copy=True, -4072 prefix=None, -4073 into=None, -4074 dialect=None, -4075 **opts, -4076): -4077 inst = _maybe_copy(instance, copy) -4078 -4079 expressions = [ -4080 maybe_parse( -4081 sql_or_expression=expression, -4082 into=into, -4083 prefix=prefix, -4084 dialect=dialect, -4085 **opts, -4086 ) -4087 for expression in expressions -4088 ] -4089 -4090 existing_expressions = inst.args.get(arg) -4091 if append and existing_expressions: -4092 expressions = existing_expressions + expressions -4093 -4094 inst.set(arg, expressions) -4095 return inst -4096 -4097 -4098def _apply_conjunction_builder( -4099 *expressions, -4100 instance, -4101 arg, -4102 into=None, -4103 append=True, -4104 copy=True, -4105 dialect=None, -4106 **opts, -4107): -4108 expressions = [exp for exp in expressions if exp is not None and exp != ""] -4109 if not expressions: -4110 return instance -4111 -4112 inst = _maybe_copy(instance, copy) -4113 -4114 existing = inst.args.get(arg) -4115 if append and existing is not None: -4116 expressions = [existing.this if into else existing] + list(expressions) -4117 -4118 node = and_(*expressions, dialect=dialect, **opts) -4119 -4120 inst.set(arg, into(this=node) if into else node) -4121 return inst -4122 -4123 -4124def _combine(expressions, operator, dialect=None, **opts): -4125 expressions = [condition(expression, dialect=dialect, **opts) for expression in expressions] -4126 this = expressions[0] -4127 if expressions[1:]: -4128 this = _wrap_operator(this) -4129 for expression in expressions[1:]: -4130 this = operator(this=this, expression=_wrap_operator(expression)) -4131 return this -4132 -4133 -4134def _wrap_operator(expression): -4135 if isinstance(expression, (And, Or, Not)): -4136 expression = Paren(this=expression) -4137 return expression -4138 -4139 -4140def union(left, right, distinct=True, dialect=None, **opts): -4141 """ -4142 Initializes a syntax tree from one UNION expression. -4143 -4144 Example: -4145 >>> union("SELECT * FROM foo", "SELECT * FROM bla").sql() -4146 'SELECT * FROM foo UNION SELECT * FROM bla' -4147 -4148 Args: -4149 left (str | Expression): the SQL code string corresponding to the left-hand side. -4150 If an `Expression` instance is passed, it will be used as-is. -4151 right (str | Expression): the SQL code string corresponding to the right-hand side. -4152 If an `Expression` instance is passed, it will be used as-is. -4153 distinct (bool): set the DISTINCT flag if and only if this is true. -4154 dialect (str): the dialect used to parse the input expression. -4155 opts (kwargs): other options to use to parse the input expressions. -4156 Returns: -4157 Union: the syntax tree for the UNION expression. -4158 """ -4159 left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts) -4160 right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts) -4161 -4162 return Union(this=left, expression=right, distinct=distinct) -4163 -4164 -4165def intersect(left, right, distinct=True, dialect=None, **opts): -4166 """ -4167 Initializes a syntax tree from one INTERSECT expression. -4168 -4169 Example: -4170 >>> intersect("SELECT * FROM foo", "SELECT * FROM bla").sql() -4171 'SELECT * FROM foo INTERSECT SELECT * FROM bla' -4172 -4173 Args: -4174 left (str | Expression): the SQL code string corresponding to the left-hand side. -4175 If an `Expression` instance is passed, it will be used as-is. -4176 right (str | Expression): the SQL code string corresponding to the right-hand side. -4177 If an `Expression` instance is passed, it will be used as-is. -4178 distinct (bool): set the DISTINCT flag if and only if this is true. -4179 dialect (str): the dialect used to parse the input expression. -4180 opts (kwargs): other options to use to parse the input expressions. -4181 Returns: -4182 Intersect: the syntax tree for the INTERSECT expression. -4183 """ -4184 left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts) -4185 right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts) -4186 -4187 return Intersect(this=left, expression=right, distinct=distinct) +4005ALL_FUNCTIONS = subclasses(__name__, Func, (AggFunc, Anonymous, Func)) +4006 +4007 +4008# Helpers +4009def maybe_parse( +4010 sql_or_expression: ExpOrStr, +4011 *, +4012 into: t.Optional[IntoType] = None, +4013 dialect: DialectType = None, +4014 prefix: t.Optional[str] = None, +4015 copy: bool = False, +4016 **opts, +4017) -> Expression: +4018 """Gracefully handle a possible string or expression. +4019 +4020 Example: +4021 >>> maybe_parse("1") +4022 (LITERAL this: 1, is_string: False) +4023 >>> maybe_parse(to_identifier("x")) +4024 (IDENTIFIER this: x, quoted: False) +4025 +4026 Args: +4027 sql_or_expression: the SQL code string or an expression +4028 into: the SQLGlot Expression to parse into +4029 dialect: the dialect used to parse the input expressions (in the case that an +4030 input expression is a SQL string). +4031 prefix: a string to prefix the sql with before it gets parsed +4032 (automatically includes a space) +4033 copy: whether or not to copy the expression. +4034 **opts: other options to use to parse the input expressions (again, in the case +4035 that an input expression is a SQL string). +4036 +4037 Returns: +4038 Expression: the parsed or given expression. +4039 """ +4040 if isinstance(sql_or_expression, Expression): +4041 if copy: +4042 return sql_or_expression.copy() +4043 return sql_or_expression +4044 +4045 import sqlglot +4046 +4047 sql = str(sql_or_expression) +4048 if prefix: +4049 sql = f"{prefix} {sql}" +4050 return sqlglot.parse_one(sql, read=dialect, into=into, **opts) +4051 +4052 +4053def _maybe_copy(instance, copy=True): +4054 return instance.copy() if copy else instance +4055 +4056 +4057def _is_wrong_expression(expression, into): +4058 return isinstance(expression, Expression) and not isinstance(expression, into) +4059 +4060 +4061def _apply_builder( +4062 expression, +4063 instance, +4064 arg, +4065 copy=True, +4066 prefix=None, +4067 into=None, +4068 dialect=None, +4069 **opts, +4070): +4071 if _is_wrong_expression(expression, into): +4072 expression = into(this=expression) +4073 instance = _maybe_copy(instance, copy) +4074 expression = maybe_parse( +4075 sql_or_expression=expression, +4076 prefix=prefix, +4077 into=into, +4078 dialect=dialect, +4079 **opts, +4080 ) +4081 instance.set(arg, expression) +4082 return instance +4083 +4084 +4085def _apply_child_list_builder( +4086 *expressions, +4087 instance, +4088 arg, +4089 append=True, +4090 copy=True, +4091 prefix=None, +4092 into=None, +4093 dialect=None, +4094 properties=None, +4095 **opts, +4096): +4097 instance = _maybe_copy(instance, copy) +4098 parsed = [] +4099 for expression in expressions: +4100 if _is_wrong_expression(expression, into): +4101 expression = into(expressions=[expression]) +4102 expression = maybe_parse( +4103 expression, +4104 into=into, +4105 dialect=dialect, +4106 prefix=prefix, +4107 **opts, +4108 ) +4109 parsed.extend(expression.expressions) +4110 +4111 existing = instance.args.get(arg) +4112 if append and existing: +4113 parsed = existing.expressions + parsed +4114 +4115 child = into(expressions=parsed) +4116 for k, v in (properties or {}).items(): +4117 child.set(k, v) +4118 instance.set(arg, child) +4119 return instance +4120 +4121 +4122def _apply_list_builder( +4123 *expressions, +4124 instance, +4125 arg, +4126 append=True, +4127 copy=True, +4128 prefix=None, +4129 into=None, +4130 dialect=None, +4131 **opts, +4132): +4133 inst = _maybe_copy(instance, copy) +4134 +4135 expressions = [ +4136 maybe_parse( +4137 sql_or_expression=expression, +4138 into=into, +4139 prefix=prefix, +4140 dialect=dialect, +4141 **opts, +4142 ) +4143 for expression in expressions +4144 ] +4145 +4146 existing_expressions = inst.args.get(arg) +4147 if append and existing_expressions: +4148 expressions = existing_expressions + expressions +4149 +4150 inst.set(arg, expressions) +4151 return inst +4152 +4153 +4154def _apply_conjunction_builder( +4155 *expressions, +4156 instance, +4157 arg, +4158 into=None, +4159 append=True, +4160 copy=True, +4161 dialect=None, +4162 **opts, +4163): +4164 expressions = [exp for exp in expressions if exp is not None and exp != ""] +4165 if not expressions: +4166 return instance +4167 +4168 inst = _maybe_copy(instance, copy) +4169 +4170 existing = inst.args.get(arg) +4171 if append and existing is not None: +4172 expressions = [existing.this if into else existing] + list(expressions) +4173 +4174 node = and_(*expressions, dialect=dialect, **opts) +4175 +4176 inst.set(arg, into(this=node) if into else node) +4177 return inst +4178 +4179 +4180def _combine(expressions, operator, dialect=None, **opts): +4181 expressions = [condition(expression, dialect=dialect, **opts) for expression in expressions] +4182 this = expressions[0] +4183 if expressions[1:]: +4184 this = _wrap_operator(this) +4185 for expression in expressions[1:]: +4186 this = operator(this=this, expression=_wrap_operator(expression)) +4187 return this 4188 4189 -4190def except_(left, right, distinct=True, dialect=None, **opts): -4191 """ -4192 Initializes a syntax tree from one EXCEPT expression. -4193 -4194 Example: -4195 >>> except_("SELECT * FROM foo", "SELECT * FROM bla").sql() -4196 'SELECT * FROM foo EXCEPT SELECT * FROM bla' -4197 -4198 Args: -4199 left (str | Expression): the SQL code string corresponding to the left-hand side. -4200 If an `Expression` instance is passed, it will be used as-is. -4201 right (str | Expression): the SQL code string corresponding to the right-hand side. -4202 If an `Expression` instance is passed, it will be used as-is. -4203 distinct (bool): set the DISTINCT flag if and only if this is true. -4204 dialect (str): the dialect used to parse the input expression. -4205 opts (kwargs): other options to use to parse the input expressions. -4206 Returns: -4207 Except: the syntax tree for the EXCEPT statement. -4208 """ -4209 left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts) -4210 right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts) -4211 -4212 return Except(this=left, expression=right, distinct=distinct) -4213 -4214 -4215def select(*expressions: ExpOrStr, dialect: DialectType = None, **opts) -> Select: -4216 """ -4217 Initializes a syntax tree from one or multiple SELECT expressions. -4218 -4219 Example: -4220 >>> select("col1", "col2").from_("tbl").sql() -4221 'SELECT col1, col2 FROM tbl' -4222 -4223 Args: -4224 *expressions: the SQL code string to parse as the expressions of a -4225 SELECT statement. If an Expression instance is passed, this is used as-is. -4226 dialect: the dialect used to parse the input expressions (in the case that an -4227 input expression is a SQL string). -4228 **opts: other options to use to parse the input expressions (again, in the case -4229 that an input expression is a SQL string). -4230 -4231 Returns: -4232 Select: the syntax tree for the SELECT statement. -4233 """ -4234 return Select().select(*expressions, dialect=dialect, **opts) -4235 -4236 -4237def from_(*expressions, dialect=None, **opts) -> Select: -4238 """ -4239 Initializes a syntax tree from a FROM expression. -4240 -4241 Example: -4242 >>> from_("tbl").select("col1", "col2").sql() -4243 'SELECT col1, col2 FROM tbl' +4190def _wrap_operator(expression): +4191 if isinstance(expression, (And, Or, Not)): +4192 expression = Paren(this=expression) +4193 return expression +4194 +4195 +4196def union(left, right, distinct=True, dialect=None, **opts): +4197 """ +4198 Initializes a syntax tree from one UNION expression. +4199 +4200 Example: +4201 >>> union("SELECT * FROM foo", "SELECT * FROM bla").sql() +4202 'SELECT * FROM foo UNION SELECT * FROM bla' +4203 +4204 Args: +4205 left (str | Expression): the SQL code string corresponding to the left-hand side. +4206 If an `Expression` instance is passed, it will be used as-is. +4207 right (str | Expression): the SQL code string corresponding to the right-hand side. +4208 If an `Expression` instance is passed, it will be used as-is. +4209 distinct (bool): set the DISTINCT flag if and only if this is true. +4210 dialect (str): the dialect used to parse the input expression. +4211 opts (kwargs): other options to use to parse the input expressions. +4212 Returns: +4213 Union: the syntax tree for the UNION expression. +4214 """ +4215 left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts) +4216 right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts) +4217 +4218 return Union(this=left, expression=right, distinct=distinct) +4219 +4220 +4221def intersect(left, right, distinct=True, dialect=None, **opts): +4222 """ +4223 Initializes a syntax tree from one INTERSECT expression. +4224 +4225 Example: +4226 >>> intersect("SELECT * FROM foo", "SELECT * FROM bla").sql() +4227 'SELECT * FROM foo INTERSECT SELECT * FROM bla' +4228 +4229 Args: +4230 left (str | Expression): the SQL code string corresponding to the left-hand side. +4231 If an `Expression` instance is passed, it will be used as-is. +4232 right (str | Expression): the SQL code string corresponding to the right-hand side. +4233 If an `Expression` instance is passed, it will be used as-is. +4234 distinct (bool): set the DISTINCT flag if and only if this is true. +4235 dialect (str): the dialect used to parse the input expression. +4236 opts (kwargs): other options to use to parse the input expressions. +4237 Returns: +4238 Intersect: the syntax tree for the INTERSECT expression. +4239 """ +4240 left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts) +4241 right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts) +4242 +4243 return Intersect(this=left, expression=right, distinct=distinct) 4244 -4245 Args: -4246 *expressions (str | Expression): the SQL code string to parse as the FROM expressions of a -4247 SELECT statement. If an Expression instance is passed, this is used as-is. -4248 dialect (str): the dialect used to parse the input expression (in the case that the -4249 input expression is a SQL string). -4250 **opts: other options to use to parse the input expressions (again, in the case -4251 that the input expression is a SQL string). -4252 -4253 Returns: -4254 Select: the syntax tree for the SELECT statement. -4255 """ -4256 return Select().from_(*expressions, dialect=dialect, **opts) -4257 -4258 -4259def update( -4260 table: str | Table, -4261 properties: dict, -4262 where: t.Optional[ExpOrStr] = None, -4263 from_: t.Optional[ExpOrStr] = None, -4264 dialect: DialectType = None, -4265 **opts, -4266) -> Update: -4267 """ -4268 Creates an update statement. +4245 +4246def except_(left, right, distinct=True, dialect=None, **opts): +4247 """ +4248 Initializes a syntax tree from one EXCEPT expression. +4249 +4250 Example: +4251 >>> except_("SELECT * FROM foo", "SELECT * FROM bla").sql() +4252 'SELECT * FROM foo EXCEPT SELECT * FROM bla' +4253 +4254 Args: +4255 left (str | Expression): the SQL code string corresponding to the left-hand side. +4256 If an `Expression` instance is passed, it will be used as-is. +4257 right (str | Expression): the SQL code string corresponding to the right-hand side. +4258 If an `Expression` instance is passed, it will be used as-is. +4259 distinct (bool): set the DISTINCT flag if and only if this is true. +4260 dialect (str): the dialect used to parse the input expression. +4261 opts (kwargs): other options to use to parse the input expressions. +4262 Returns: +4263 Except: the syntax tree for the EXCEPT statement. +4264 """ +4265 left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts) +4266 right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts) +4267 +4268 return Except(this=left, expression=right, distinct=distinct) 4269 -4270 Example: -4271 >>> update("my_table", {"x": 1, "y": "2", "z": None}, from_="baz", where="id > 1").sql() -4272 "UPDATE my_table SET x = 1, y = '2', z = NULL FROM baz WHERE id > 1" -4273 -4274 Args: -4275 *properties: dictionary of properties to set which are -4276 auto converted to sql objects eg None -> NULL -4277 where: sql conditional parsed into a WHERE statement -4278 from_: sql statement parsed into a FROM statement -4279 dialect: the dialect used to parse the input expressions. -4280 **opts: other options to use to parse the input expressions. -4281 -4282 Returns: -4283 Update: the syntax tree for the UPDATE statement. -4284 """ -4285 update_expr = Update(this=maybe_parse(table, into=Table, dialect=dialect)) -4286 update_expr.set( -4287 "expressions", -4288 [ -4289 EQ(this=maybe_parse(k, dialect=dialect, **opts), expression=convert(v)) -4290 for k, v in properties.items() -4291 ], -4292 ) -4293 if from_: -4294 update_expr.set( -4295 "from", -4296 maybe_parse(from_, into=From, dialect=dialect, prefix="FROM", **opts), -4297 ) -4298 if isinstance(where, Condition): -4299 where = Where(this=where) -4300 if where: -4301 update_expr.set( -4302 "where", -4303 maybe_parse(where, into=Where, dialect=dialect, prefix="WHERE", **opts), -4304 ) -4305 return update_expr -4306 -4307 -4308def delete( -4309 table: ExpOrStr, -4310 where: t.Optional[ExpOrStr] = None, -4311 returning: t.Optional[ExpOrStr] = None, -4312 dialect: DialectType = None, -4313 **opts, -4314) -> Delete: -4315 """ -4316 Builds a delete statement. -4317 -4318 Example: -4319 >>> delete("my_table", where="id > 1").sql() -4320 'DELETE FROM my_table WHERE id > 1' -4321 -4322 Args: -4323 where: sql conditional parsed into a WHERE statement -4324 returning: sql conditional parsed into a RETURNING statement -4325 dialect: the dialect used to parse the input expressions. -4326 **opts: other options to use to parse the input expressions. -4327 -4328 Returns: -4329 Delete: the syntax tree for the DELETE statement. -4330 """ -4331 delete_expr = Delete().delete(table, dialect=dialect, copy=False, **opts) -4332 if where: -4333 delete_expr = delete_expr.where(where, dialect=dialect, copy=False, **opts) -4334 if returning: -4335 delete_expr = delete_expr.returning(returning, dialect=dialect, copy=False, **opts) -4336 return delete_expr +4270 +4271def select(*expressions: ExpOrStr, dialect: DialectType = None, **opts) -> Select: +4272 """ +4273 Initializes a syntax tree from one or multiple SELECT expressions. +4274 +4275 Example: +4276 >>> select("col1", "col2").from_("tbl").sql() +4277 'SELECT col1, col2 FROM tbl' +4278 +4279 Args: +4280 *expressions: the SQL code string to parse as the expressions of a +4281 SELECT statement. If an Expression instance is passed, this is used as-is. +4282 dialect: the dialect used to parse the input expressions (in the case that an +4283 input expression is a SQL string). +4284 **opts: other options to use to parse the input expressions (again, in the case +4285 that an input expression is a SQL string). +4286 +4287 Returns: +4288 Select: the syntax tree for the SELECT statement. +4289 """ +4290 return Select().select(*expressions, dialect=dialect, **opts) +4291 +4292 +4293def from_(*expressions, dialect=None, **opts) -> Select: +4294 """ +4295 Initializes a syntax tree from a FROM expression. +4296 +4297 Example: +4298 >>> from_("tbl").select("col1", "col2").sql() +4299 'SELECT col1, col2 FROM tbl' +4300 +4301 Args: +4302 *expressions (str | Expression): the SQL code string to parse as the FROM expressions of a +4303 SELECT statement. If an Expression instance is passed, this is used as-is. +4304 dialect (str): the dialect used to parse the input expression (in the case that the +4305 input expression is a SQL string). +4306 **opts: other options to use to parse the input expressions (again, in the case +4307 that the input expression is a SQL string). +4308 +4309 Returns: +4310 Select: the syntax tree for the SELECT statement. +4311 """ +4312 return Select().from_(*expressions, dialect=dialect, **opts) +4313 +4314 +4315def update( +4316 table: str | Table, +4317 properties: dict, +4318 where: t.Optional[ExpOrStr] = None, +4319 from_: t.Optional[ExpOrStr] = None, +4320 dialect: DialectType = None, +4321 **opts, +4322) -> Update: +4323 """ +4324 Creates an update statement. +4325 +4326 Example: +4327 >>> update("my_table", {"x": 1, "y": "2", "z": None}, from_="baz", where="id > 1").sql() +4328 "UPDATE my_table SET x = 1, y = '2', z = NULL FROM baz WHERE id > 1" +4329 +4330 Args: +4331 *properties: dictionary of properties to set which are +4332 auto converted to sql objects eg None -> NULL +4333 where: sql conditional parsed into a WHERE statement +4334 from_: sql statement parsed into a FROM statement +4335 dialect: the dialect used to parse the input expressions. +4336 **opts: other options to use to parse the input expressions. 4337 -4338 -4339def condition(expression, dialect=None, **opts) -> Condition: -4340 """ -4341 Initialize a logical condition expression. -4342 -4343 Example: -4344 >>> condition("x=1").sql() -4345 'x = 1' -4346 -4347 This is helpful for composing larger logical syntax trees: -4348 >>> where = condition("x=1") -4349 >>> where = where.and_("y=1") -4350 >>> Select().from_("tbl").select("*").where(where).sql() -4351 'SELECT * FROM tbl WHERE x = 1 AND y = 1' -4352 -4353 Args: -4354 *expression (str | Expression): the SQL code string to parse. -4355 If an Expression instance is passed, this is used as-is. -4356 dialect (str): the dialect used to parse the input expression (in the case that the -4357 input expression is a SQL string). -4358 **opts: other options to use to parse the input expressions (again, in the case -4359 that the input expression is a SQL string). -4360 -4361 Returns: -4362 Condition: the expression -4363 """ -4364 return maybe_parse( # type: ignore -4365 expression, -4366 into=Condition, -4367 dialect=dialect, -4368 **opts, -4369 ) -4370 -4371 -4372def and_(*expressions, dialect=None, **opts) -> And: -4373 """ -4374 Combine multiple conditions with an AND logical operator. -4375 -4376 Example: -4377 >>> and_("x=1", and_("y=1", "z=1")).sql() -4378 'x = 1 AND (y = 1 AND z = 1)' -4379 -4380 Args: -4381 *expressions (str | Expression): the SQL code strings to parse. -4382 If an Expression instance is passed, this is used as-is. -4383 dialect (str): the dialect used to parse the input expression. -4384 **opts: other options to use to parse the input expressions. -4385 -4386 Returns: -4387 And: the new condition -4388 """ -4389 return _combine(expressions, And, dialect, **opts) -4390 -4391 -4392def or_(*expressions, dialect=None, **opts) -> Or: -4393 """ -4394 Combine multiple conditions with an OR logical operator. -4395 -4396 Example: -4397 >>> or_("x=1", or_("y=1", "z=1")).sql() -4398 'x = 1 OR (y = 1 OR z = 1)' -4399 -4400 Args: -4401 *expressions (str | Expression): the SQL code strings to parse. -4402 If an Expression instance is passed, this is used as-is. -4403 dialect (str): the dialect used to parse the input expression. -4404 **opts: other options to use to parse the input expressions. -4405 -4406 Returns: -4407 Or: the new condition -4408 """ -4409 return _combine(expressions, Or, dialect, **opts) -4410 -4411 -4412def not_(expression, dialect=None, **opts) -> Not: -4413 """ -4414 Wrap a condition with a NOT operator. -4415 -4416 Example: -4417 >>> not_("this_suit='black'").sql() -4418 "NOT this_suit = 'black'" -4419 -4420 Args: -4421 expression (str | Expression): the SQL code strings to parse. -4422 If an Expression instance is passed, this is used as-is. -4423 dialect (str): the dialect used to parse the input expression. -4424 **opts: other options to use to parse the input expressions. -4425 -4426 Returns: -4427 Not: the new condition -4428 """ -4429 this = condition( -4430 expression, -4431 dialect=dialect, -4432 **opts, -4433 ) -4434 return Not(this=_wrap_operator(this)) +4338 Returns: +4339 Update: the syntax tree for the UPDATE statement. +4340 """ +4341 update_expr = Update(this=maybe_parse(table, into=Table, dialect=dialect)) +4342 update_expr.set( +4343 "expressions", +4344 [ +4345 EQ(this=maybe_parse(k, dialect=dialect, **opts), expression=convert(v)) +4346 for k, v in properties.items() +4347 ], +4348 ) +4349 if from_: +4350 update_expr.set( +4351 "from", +4352 maybe_parse(from_, into=From, dialect=dialect, prefix="FROM", **opts), +4353 ) +4354 if isinstance(where, Condition): +4355 where = Where(this=where) +4356 if where: +4357 update_expr.set( +4358 "where", +4359 maybe_parse(where, into=Where, dialect=dialect, prefix="WHERE", **opts), +4360 ) +4361 return update_expr +4362 +4363 +4364def delete( +4365 table: ExpOrStr, +4366 where: t.Optional[ExpOrStr] = None, +4367 returning: t.Optional[ExpOrStr] = None, +4368 dialect: DialectType = None, +4369 **opts, +4370) -> Delete: +4371 """ +4372 Builds a delete statement. +4373 +4374 Example: +4375 >>> delete("my_table", where="id > 1").sql() +4376 'DELETE FROM my_table WHERE id > 1' +4377 +4378 Args: +4379 where: sql conditional parsed into a WHERE statement +4380 returning: sql conditional parsed into a RETURNING statement +4381 dialect: the dialect used to parse the input expressions. +4382 **opts: other options to use to parse the input expressions. +4383 +4384 Returns: +4385 Delete: the syntax tree for the DELETE statement. +4386 """ +4387 delete_expr = Delete().delete(table, dialect=dialect, copy=False, **opts) +4388 if where: +4389 delete_expr = delete_expr.where(where, dialect=dialect, copy=False, **opts) +4390 if returning: +4391 delete_expr = delete_expr.returning(returning, dialect=dialect, copy=False, **opts) +4392 return delete_expr +4393 +4394 +4395def condition(expression, dialect=None, **opts) -> Condition: +4396 """ +4397 Initialize a logical condition expression. +4398 +4399 Example: +4400 >>> condition("x=1").sql() +4401 'x = 1' +4402 +4403 This is helpful for composing larger logical syntax trees: +4404 >>> where = condition("x=1") +4405 >>> where = where.and_("y=1") +4406 >>> Select().from_("tbl").select("*").where(where).sql() +4407 'SELECT * FROM tbl WHERE x = 1 AND y = 1' +4408 +4409 Args: +4410 *expression (str | Expression): the SQL code string to parse. +4411 If an Expression instance is passed, this is used as-is. +4412 dialect (str): the dialect used to parse the input expression (in the case that the +4413 input expression is a SQL string). +4414 **opts: other options to use to parse the input expressions (again, in the case +4415 that the input expression is a SQL string). +4416 +4417 Returns: +4418 Condition: the expression +4419 """ +4420 return maybe_parse( # type: ignore +4421 expression, +4422 into=Condition, +4423 dialect=dialect, +4424 **opts, +4425 ) +4426 +4427 +4428def and_(*expressions, dialect=None, **opts) -> And: +4429 """ +4430 Combine multiple conditions with an AND logical operator. +4431 +4432 Example: +4433 >>> and_("x=1", and_("y=1", "z=1")).sql() +4434 'x = 1 AND (y = 1 AND z = 1)' 4435 -4436 -4437def paren(expression) -> Paren: -4438 return Paren(this=expression) -4439 -4440 -4441SAFE_IDENTIFIER_RE = re.compile(r"^[_a-zA-Z][\w]*$") -4442 -4443 -4444@t.overload -4445def to_identifier(name: None, quoted: t.Optional[bool] = None) -> None: -4446 ... +4436 Args: +4437 *expressions (str | Expression): the SQL code strings to parse. +4438 If an Expression instance is passed, this is used as-is. +4439 dialect (str): the dialect used to parse the input expression. +4440 **opts: other options to use to parse the input expressions. +4441 +4442 Returns: +4443 And: the new condition +4444 """ +4445 return _combine(expressions, And, dialect, **opts) +4446 4447 -4448 -4449@t.overload -4450def to_identifier(name: str | Identifier, quoted: t.Optional[bool] = None) -> Identifier: -4451 ... -4452 -4453 -4454def to_identifier(name, quoted=None): -4455 """Builds an identifier. -4456 -4457 Args: -4458 name: The name to turn into an identifier. -4459 quoted: Whether or not force quote the identifier. -4460 -4461 Returns: -4462 The identifier ast node. -4463 """ -4464 -4465 if name is None: -4466 return None +4448def or_(*expressions, dialect=None, **opts) -> Or: +4449 """ +4450 Combine multiple conditions with an OR logical operator. +4451 +4452 Example: +4453 >>> or_("x=1", or_("y=1", "z=1")).sql() +4454 'x = 1 OR (y = 1 OR z = 1)' +4455 +4456 Args: +4457 *expressions (str | Expression): the SQL code strings to parse. +4458 If an Expression instance is passed, this is used as-is. +4459 dialect (str): the dialect used to parse the input expression. +4460 **opts: other options to use to parse the input expressions. +4461 +4462 Returns: +4463 Or: the new condition +4464 """ +4465 return _combine(expressions, Or, dialect, **opts) +4466 4467 -4468 if isinstance(name, Identifier): -4469 identifier = name -4470 elif isinstance(name, str): -4471 identifier = Identifier( -4472 this=name, -4473 quoted=not re.match(SAFE_IDENTIFIER_RE, name) if quoted is None else quoted, -4474 ) -4475 else: -4476 raise ValueError(f"Name needs to be a string or an Identifier, got: {name.__class__}") -4477 return identifier -4478 -4479 -4480INTERVAL_STRING_RE = re.compile(r"\s*([0-9]+)\s*([a-zA-Z]+)\s*") +4468def not_(expression, dialect=None, **opts) -> Not: +4469 """ +4470 Wrap a condition with a NOT operator. +4471 +4472 Example: +4473 >>> not_("this_suit='black'").sql() +4474 "NOT this_suit = 'black'" +4475 +4476 Args: +4477 expression (str | Expression): the SQL code strings to parse. +4478 If an Expression instance is passed, this is used as-is. +4479 dialect (str): the dialect used to parse the input expression. +4480 **opts: other options to use to parse the input expressions. 4481 -4482 -4483def to_interval(interval: str | Literal) -> Interval: -4484 """Builds an interval expression from a string like '1 day' or '5 months'.""" -4485 if isinstance(interval, Literal): -4486 if not interval.is_string: -4487 raise ValueError("Invalid interval string.") -4488 -4489 interval = interval.this -4490 -4491 interval_parts = INTERVAL_STRING_RE.match(interval) # type: ignore +4482 Returns: +4483 Not: the new condition +4484 """ +4485 this = condition( +4486 expression, +4487 dialect=dialect, +4488 **opts, +4489 ) +4490 return Not(this=_wrap_operator(this)) +4491 4492 -4493 if not interval_parts: -4494 raise ValueError("Invalid interval string.") +4493def paren(expression) -> Paren: +4494 return Paren(this=expression) 4495 -4496 return Interval( -4497 this=Literal.string(interval_parts.group(1)), -4498 unit=Var(this=interval_parts.group(2)), -4499 ) -4500 -4501 -4502@t.overload -4503def to_table(sql_path: str | Table, **kwargs) -> Table: -4504 ... -4505 -4506 -4507@t.overload -4508def to_table(sql_path: None, **kwargs) -> None: -4509 ... -4510 -4511 -4512def to_table(sql_path: t.Optional[str | Table], **kwargs) -> t.Optional[Table]: -4513 """ -4514 Create a table expression from a `[catalog].[schema].[table]` sql path. Catalog and schema are optional. -4515 If a table is passed in then that table is returned. +4496 +4497SAFE_IDENTIFIER_RE = re.compile(r"^[_a-zA-Z][\w]*$") +4498 +4499 +4500@t.overload +4501def to_identifier(name: None, quoted: t.Optional[bool] = None) -> None: +4502 ... +4503 +4504 +4505@t.overload +4506def to_identifier(name: str | Identifier, quoted: t.Optional[bool] = None) -> Identifier: +4507 ... +4508 +4509 +4510def to_identifier(name, quoted=None): +4511 """Builds an identifier. +4512 +4513 Args: +4514 name: The name to turn into an identifier. +4515 quoted: Whether or not force quote the identifier. 4516 -4517 Args: -4518 sql_path: a `[catalog].[schema].[table]` string. -4519 -4520 Returns: -4521 A table expression. -4522 """ -4523 if sql_path is None or isinstance(sql_path, Table): -4524 return sql_path -4525 if not isinstance(sql_path, str): -4526 raise ValueError(f"Invalid type provided for a table: {type(sql_path)}") -4527 -4528 catalog, db, table_name = (to_identifier(x) for x in split_num_words(sql_path, ".", 3)) -4529 return Table(this=table_name, db=db, catalog=catalog, **kwargs) -4530 -4531 -4532def to_column(sql_path: str | Column, **kwargs) -> Column: -4533 """ -4534 Create a column from a `[table].[column]` sql path. Schema is optional. +4517 Returns: +4518 The identifier ast node. +4519 """ +4520 +4521 if name is None: +4522 return None +4523 +4524 if isinstance(name, Identifier): +4525 identifier = name +4526 elif isinstance(name, str): +4527 identifier = Identifier( +4528 this=name, +4529 quoted=not SAFE_IDENTIFIER_RE.match(name) if quoted is None else quoted, +4530 ) +4531 else: +4532 raise ValueError(f"Name needs to be a string or an Identifier, got: {name.__class__}") +4533 return identifier +4534 4535 -4536 If a column is passed in then that column is returned. +4536INTERVAL_STRING_RE = re.compile(r"\s*([0-9]+)\s*([a-zA-Z]+)\s*") 4537 -4538 Args: -4539 sql_path: `[table].[column]` string -4540 Returns: -4541 Table: A column expression -4542 """ -4543 if sql_path is None or isinstance(sql_path, Column): -4544 return sql_path -4545 if not isinstance(sql_path, str): -4546 raise ValueError(f"Invalid type provided for column: {type(sql_path)}") -4547 table_name, column_name = (to_identifier(x) for x in split_num_words(sql_path, ".", 2)) -4548 return Column(this=column_name, table=table_name, **kwargs) -4549 -4550 -4551def alias_( -4552 expression: ExpOrStr, -4553 alias: str | Identifier, -4554 table: bool | t.Sequence[str | Identifier] = False, -4555 quoted: t.Optional[bool] = None, -4556 dialect: DialectType = None, -4557 **opts, -4558): -4559 """Create an Alias expression. -4560 -4561 Example: -4562 >>> alias_('foo', 'bar').sql() -4563 'foo AS bar' -4564 -4565 >>> alias_('(select 1, 2)', 'bar', table=['a', 'b']).sql() -4566 '(SELECT 1, 2) AS bar(a, b)' +4538 +4539def to_interval(interval: str | Literal) -> Interval: +4540 """Builds an interval expression from a string like '1 day' or '5 months'.""" +4541 if isinstance(interval, Literal): +4542 if not interval.is_string: +4543 raise ValueError("Invalid interval string.") +4544 +4545 interval = interval.this +4546 +4547 interval_parts = INTERVAL_STRING_RE.match(interval) # type: ignore +4548 +4549 if not interval_parts: +4550 raise ValueError("Invalid interval string.") +4551 +4552 return Interval( +4553 this=Literal.string(interval_parts.group(1)), +4554 unit=Var(this=interval_parts.group(2)), +4555 ) +4556 +4557 +4558@t.overload +4559def to_table(sql_path: str | Table, **kwargs) -> Table: +4560 ... +4561 +4562 +4563@t.overload +4564def to_table(sql_path: None, **kwargs) -> None: +4565 ... +4566 4567 -4568 Args: -4569 expression: the SQL code strings to parse. -4570 If an Expression instance is passed, this is used as-is. -4571 alias: the alias name to use. If the name has -4572 special characters it is quoted. -4573 table: Whether or not to create a table alias, can also be a list of columns. -4574 quoted: whether or not to quote the alias -4575 dialect: the dialect used to parse the input expression. -4576 **opts: other options to use to parse the input expressions. -4577 -4578 Returns: -4579 Alias: the aliased expression -4580 """ -4581 exp = maybe_parse(expression, dialect=dialect, **opts) -4582 alias = to_identifier(alias, quoted=quoted) +4568def to_table(sql_path: t.Optional[str | Table], **kwargs) -> t.Optional[Table]: +4569 """ +4570 Create a table expression from a `[catalog].[schema].[table]` sql path. Catalog and schema are optional. +4571 If a table is passed in then that table is returned. +4572 +4573 Args: +4574 sql_path: a `[catalog].[schema].[table]` string. +4575 +4576 Returns: +4577 A table expression. +4578 """ +4579 if sql_path is None or isinstance(sql_path, Table): +4580 return sql_path +4581 if not isinstance(sql_path, str): +4582 raise ValueError(f"Invalid type provided for a table: {type(sql_path)}") 4583 -4584 if table: -4585 table_alias = TableAlias(this=alias) -4586 exp.set("alias", table_alias) +4584 catalog, db, table_name = (to_identifier(x) for x in split_num_words(sql_path, ".", 3)) +4585 return Table(this=table_name, db=db, catalog=catalog, **kwargs) +4586 4587 -4588 if not isinstance(table, bool): -4589 for column in table: -4590 table_alias.append("columns", to_identifier(column, quoted=quoted)) +4588def to_column(sql_path: str | Column, **kwargs) -> Column: +4589 """ +4590 Create a column from a `[table].[column]` sql path. Schema is optional. 4591 -4592 return exp +4592 If a column is passed in then that column is returned. 4593 -4594 # We don't set the "alias" arg for Window expressions, because that would add an IDENTIFIER node in -4595 # the AST, representing a "named_window" [1] construct (eg. bigquery). What we want is an ALIAS node -4596 # for the complete Window expression. -4597 # -4598 # [1]: https://cloud.google.com/bigquery/docs/reference/standard-sql/window-function-calls -4599 -4600 if "alias" in exp.arg_types and not isinstance(exp, Window): -4601 exp = exp.copy() -4602 exp.set("alias", alias) -4603 return exp -4604 return Alias(this=exp, alias=alias) +4594 Args: +4595 sql_path: `[table].[column]` string +4596 Returns: +4597 Table: A column expression +4598 """ +4599 if sql_path is None or isinstance(sql_path, Column): +4600 return sql_path +4601 if not isinstance(sql_path, str): +4602 raise ValueError(f"Invalid type provided for column: {type(sql_path)}") +4603 return column(*reversed(sql_path.split(".")), **kwargs) # type: ignore +4604 4605 -4606 -4607def subquery(expression, alias=None, dialect=None, **opts): -4608 """ -4609 Build a subquery expression. -4610 -4611 Example: -4612 >>> subquery('select x from tbl', 'bar').select('x').sql() -4613 'SELECT x FROM (SELECT x FROM tbl) AS bar' -4614 -4615 Args: -4616 expression (str | Expression): the SQL code strings to parse. -4617 If an Expression instance is passed, this is used as-is. -4618 alias (str | Expression): the alias name to use. -4619 dialect (str): the dialect used to parse the input expression. -4620 **opts: other options to use to parse the input expressions. -4621 -4622 Returns: -4623 Select: a new select with the subquery expression included -4624 """ -4625 -4626 expression = maybe_parse(expression, dialect=dialect, **opts).subquery(alias) -4627 return Select().from_(expression, dialect=dialect, **opts) -4628 -4629 -4630def column( -4631 col: str | Identifier, -4632 table: t.Optional[str | Identifier] = None, -4633 schema: t.Optional[str | Identifier] = None, -4634 quoted: t.Optional[bool] = None, -4635) -> Column: -4636 """ -4637 Build a Column. +4606def alias_( +4607 expression: ExpOrStr, +4608 alias: str | Identifier, +4609 table: bool | t.Sequence[str | Identifier] = False, +4610 quoted: t.Optional[bool] = None, +4611 dialect: DialectType = None, +4612 **opts, +4613): +4614 """Create an Alias expression. +4615 +4616 Example: +4617 >>> alias_('foo', 'bar').sql() +4618 'foo AS bar' +4619 +4620 >>> alias_('(select 1, 2)', 'bar', table=['a', 'b']).sql() +4621 '(SELECT 1, 2) AS bar(a, b)' +4622 +4623 Args: +4624 expression: the SQL code strings to parse. +4625 If an Expression instance is passed, this is used as-is. +4626 alias: the alias name to use. If the name has +4627 special characters it is quoted. +4628 table: Whether or not to create a table alias, can also be a list of columns. +4629 quoted: whether or not to quote the alias +4630 dialect: the dialect used to parse the input expression. +4631 **opts: other options to use to parse the input expressions. +4632 +4633 Returns: +4634 Alias: the aliased expression +4635 """ +4636 exp = maybe_parse(expression, dialect=dialect, **opts) +4637 alias = to_identifier(alias, quoted=quoted) 4638 -4639 Args: -4640 col: column name -4641 table: table name -4642 schema: schema name -4643 quoted: whether or not to force quote each part -4644 Returns: -4645 Column: column instance -4646 """ -4647 return Column( -4648 this=to_identifier(col, quoted=quoted), -4649 table=to_identifier(table, quoted=quoted), -4650 schema=to_identifier(schema, quoted=quoted), -4651 ) -4652 -4653 -4654def cast(expression: ExpOrStr, to: str | DataType | DataType.Type, **opts) -> Cast: -4655 """Cast an expression to a data type. -4656 -4657 Example: -4658 >>> cast('x + 1', 'int').sql() -4659 'CAST(x + 1 AS INT)' +4639 if table: +4640 table_alias = TableAlias(this=alias) +4641 exp.set("alias", table_alias) +4642 +4643 if not isinstance(table, bool): +4644 for column in table: +4645 table_alias.append("columns", to_identifier(column, quoted=quoted)) +4646 +4647 return exp +4648 +4649 # We don't set the "alias" arg for Window expressions, because that would add an IDENTIFIER node in +4650 # the AST, representing a "named_window" [1] construct (eg. bigquery). What we want is an ALIAS node +4651 # for the complete Window expression. +4652 # +4653 # [1]: https://cloud.google.com/bigquery/docs/reference/standard-sql/window-function-calls +4654 +4655 if "alias" in exp.arg_types and not isinstance(exp, Window): +4656 exp = exp.copy() +4657 exp.set("alias", alias) +4658 return exp +4659 return Alias(this=exp, alias=alias) 4660 -4661 Args: -4662 expression: The expression to cast. -4663 to: The datatype to cast to. -4664 -4665 Returns: -4666 A cast node. -4667 """ -4668 expression = maybe_parse(expression, **opts) -4669 return Cast(this=expression, to=DataType.build(to, **opts)) -4670 -4671 -4672def table_(table, db=None, catalog=None, quoted=None, alias=None) -> Table: -4673 """Build a Table. -4674 -4675 Args: -4676 table (str | Expression): column name -4677 db (str | Expression): db name -4678 catalog (str | Expression): catalog name -4679 -4680 Returns: -4681 Table: table instance -4682 """ -4683 return Table( -4684 this=to_identifier(table, quoted=quoted), -4685 db=to_identifier(db, quoted=quoted), -4686 catalog=to_identifier(catalog, quoted=quoted), -4687 alias=TableAlias(this=to_identifier(alias)) if alias else None, -4688 ) -4689 -4690 -4691def values( -4692 values: t.Iterable[t.Tuple[t.Any, ...]], -4693 alias: t.Optional[str] = None, -4694 columns: t.Optional[t.Iterable[str] | t.Dict[str, DataType]] = None, -4695) -> Values: -4696 """Build VALUES statement. -4697 -4698 Example: -4699 >>> values([(1, '2')]).sql() -4700 "VALUES (1, '2')" -4701 -4702 Args: -4703 values: values statements that will be converted to SQL -4704 alias: optional alias -4705 columns: Optional list of ordered column names or ordered dictionary of column names to types. -4706 If either are provided then an alias is also required. -4707 If a dictionary is provided then the first column of the values will be casted to the expected type -4708 in order to help with type inference. -4709 -4710 Returns: -4711 Values: the Values expression object -4712 """ -4713 if columns and not alias: -4714 raise ValueError("Alias is required when providing columns") -4715 table_alias = ( -4716 TableAlias(this=to_identifier(alias), columns=[to_identifier(x) for x in columns]) -4717 if columns -4718 else TableAlias(this=to_identifier(alias) if alias else None) -4719 ) -4720 expressions = [convert(tup) for tup in values] -4721 if columns and isinstance(columns, dict): -4722 types = list(columns.values()) -4723 expressions[0].set( -4724 "expressions", -4725 [cast(x, types[i]) for i, x in enumerate(expressions[0].expressions)], -4726 ) -4727 return Values( -4728 expressions=expressions, -4729 alias=table_alias, -4730 ) -4731 +4661 +4662def subquery(expression, alias=None, dialect=None, **opts): +4663 """ +4664 Build a subquery expression. +4665 +4666 Example: +4667 >>> subquery('select x from tbl', 'bar').select('x').sql() +4668 'SELECT x FROM (SELECT x FROM tbl) AS bar' +4669 +4670 Args: +4671 expression (str | Expression): the SQL code strings to parse. +4672 If an Expression instance is passed, this is used as-is. +4673 alias (str | Expression): the alias name to use. +4674 dialect (str): the dialect used to parse the input expression. +4675 **opts: other options to use to parse the input expressions. +4676 +4677 Returns: +4678 Select: a new select with the subquery expression included +4679 """ +4680 +4681 expression = maybe_parse(expression, dialect=dialect, **opts).subquery(alias) +4682 return Select().from_(expression, dialect=dialect, **opts) +4683 +4684 +4685def column( +4686 col: str | Identifier, +4687 table: t.Optional[str | Identifier] = None, +4688 db: t.Optional[str | Identifier] = None, +4689 catalog: t.Optional[str | Identifier] = None, +4690 quoted: t.Optional[bool] = None, +4691) -> Column: +4692 """ +4693 Build a Column. +4694 +4695 Args: +4696 col: column name +4697 table: table name +4698 db: db name +4699 catalog: catalog name +4700 quoted: whether or not to force quote each part +4701 Returns: +4702 Column: column instance +4703 """ +4704 return Column( +4705 this=to_identifier(col, quoted=quoted), +4706 table=to_identifier(table, quoted=quoted), +4707 db=to_identifier(db, quoted=quoted), +4708 catalog=to_identifier(catalog, quoted=quoted), +4709 ) +4710 +4711 +4712def cast(expression: ExpOrStr, to: str | DataType | DataType.Type, **opts) -> Cast: +4713 """Cast an expression to a data type. +4714 +4715 Example: +4716 >>> cast('x + 1', 'int').sql() +4717 'CAST(x + 1 AS INT)' +4718 +4719 Args: +4720 expression: The expression to cast. +4721 to: The datatype to cast to. +4722 +4723 Returns: +4724 A cast node. +4725 """ +4726 expression = maybe_parse(expression, **opts) +4727 return Cast(this=expression, to=DataType.build(to, **opts)) +4728 +4729 +4730def table_(table, db=None, catalog=None, quoted=None, alias=None) -> Table: +4731 """Build a Table. 4732 -4733def var(name: t.Optional[ExpOrStr]) -> Var: -4734 """Build a SQL variable. -4735 -4736 Example: -4737 >>> repr(var('x')) -4738 '(VAR this: x)' -4739 -4740 >>> repr(var(column('x', table='y'))) -4741 '(VAR this: x)' -4742 -4743 Args: -4744 name: The name of the var or an expression who's name will become the var. -4745 -4746 Returns: -4747 The new variable node. -4748 """ -4749 if not name: -4750 raise ValueError("Cannot convert empty name into var.") -4751 -4752 if isinstance(name, Expression): -4753 name = name.name -4754 return Var(this=name) +4733 Args: +4734 table (str | Expression): column name +4735 db (str | Expression): db name +4736 catalog (str | Expression): catalog name +4737 +4738 Returns: +4739 Table: table instance +4740 """ +4741 return Table( +4742 this=to_identifier(table, quoted=quoted), +4743 db=to_identifier(db, quoted=quoted), +4744 catalog=to_identifier(catalog, quoted=quoted), +4745 alias=TableAlias(this=to_identifier(alias)) if alias else None, +4746 ) +4747 +4748 +4749def values( +4750 values: t.Iterable[t.Tuple[t.Any, ...]], +4751 alias: t.Optional[str] = None, +4752 columns: t.Optional[t.Iterable[str] | t.Dict[str, DataType]] = None, +4753) -> Values: +4754 """Build VALUES statement. 4755 -4756 -4757def rename_table(old_name: str | Table, new_name: str | Table) -> AlterTable: -4758 """Build ALTER TABLE... RENAME... expression +4756 Example: +4757 >>> values([(1, '2')]).sql() +4758 "VALUES (1, '2')" 4759 4760 Args: -4761 old_name: The old name of the table -4762 new_name: The new name of the table -4763 -4764 Returns: -4765 Alter table expression -4766 """ -4767 old_table = to_table(old_name) -4768 new_table = to_table(new_name) -4769 return AlterTable( -4770 this=old_table, -4771 actions=[ -4772 RenameTable(this=new_table), -4773 ], -4774 ) -4775 -4776 -4777def convert(value) -> Expression: -4778 """Convert a python value into an expression object. -4779 -4780 Raises an error if a conversion is not possible. -4781 -4782 Args: -4783 value (Any): a python object -4784 -4785 Returns: -4786 Expression: the equivalent expression object -4787 """ -4788 if isinstance(value, Expression): -4789 return value -4790 if value is None: -4791 return NULL -4792 if isinstance(value, bool): -4793 return Boolean(this=value) -4794 if isinstance(value, str): -4795 return Literal.string(value) -4796 if isinstance(value, float) and math.isnan(value): -4797 return NULL -4798 if isinstance(value, numbers.Number): -4799 return Literal.number(value) -4800 if isinstance(value, tuple): -4801 return Tuple(expressions=[convert(v) for v in value]) -4802 if isinstance(value, list): -4803 return Array(expressions=[convert(v) for v in value]) -4804 if isinstance(value, dict): -4805 return Map( -4806 keys=[convert(k) for k in value], -4807 values=[convert(v) for v in value.values()], -4808 ) -4809 if isinstance(value, datetime.datetime): -4810 datetime_literal = Literal.string( -4811 (value if value.tzinfo else value.replace(tzinfo=datetime.timezone.utc)).isoformat() -4812 ) -4813 return TimeStrToTime(this=datetime_literal) -4814 if isinstance(value, datetime.date): -4815 date_literal = Literal.string(value.strftime("%Y-%m-%d")) -4816 return DateStrToDate(this=date_literal) -4817 raise ValueError(f"Cannot convert {value}") -4818 -4819 -4820def replace_children(expression, fun, *args, **kwargs): -4821 """ -4822 Replace children of an expression with the result of a lambda fun(child) -> exp. -4823 """ -4824 for k, v in expression.args.items(): -4825 is_list_arg = isinstance(v, list) -4826 -4827 child_nodes = v if is_list_arg else [v] -4828 new_child_nodes = [] -4829 -4830 for cn in child_nodes: -4831 if isinstance(cn, Expression): -4832 for child_node in ensure_collection(fun(cn, *args, **kwargs)): -4833 new_child_nodes.append(child_node) -4834 child_node.parent = expression -4835 child_node.arg_key = k -4836 else: -4837 new_child_nodes.append(cn) -4838 -4839 expression.args[k] = new_child_nodes if is_list_arg else seq_get(new_child_nodes, 0) -4840 -4841 -4842def column_table_names(expression): -4843 """ -4844 Return all table names referenced through columns in an expression. -4845 -4846 Example: -4847 >>> import sqlglot -4848 >>> column_table_names(sqlglot.parse_one("a.b AND c.d AND c.e")) -4849 ['c', 'a'] -4850 -4851 Args: -4852 expression (sqlglot.Expression): expression to find table names -4853 -4854 Returns: -4855 list: A list of unique names -4856 """ -4857 return list(dict.fromkeys(column.table for column in expression.find_all(Column))) -4858 -4859 -4860def table_name(table) -> str: -4861 """Get the full name of a table as a string. -4862 -4863 Args: -4864 table (exp.Table | str): table expression node or string. -4865 -4866 Examples: -4867 >>> from sqlglot import exp, parse_one -4868 >>> table_name(parse_one("select * from a.b.c").find(exp.Table)) -4869 'a.b.c' -4870 -4871 Returns: -4872 The table name. -4873 """ -4874 -4875 table = maybe_parse(table, into=Table) +4761 values: values statements that will be converted to SQL +4762 alias: optional alias +4763 columns: Optional list of ordered column names or ordered dictionary of column names to types. +4764 If either are provided then an alias is also required. +4765 If a dictionary is provided then the first column of the values will be casted to the expected type +4766 in order to help with type inference. +4767 +4768 Returns: +4769 Values: the Values expression object +4770 """ +4771 if columns and not alias: +4772 raise ValueError("Alias is required when providing columns") +4773 table_alias = ( +4774 TableAlias(this=to_identifier(alias), columns=[to_identifier(x) for x in columns]) +4775 if columns +4776 else TableAlias(this=to_identifier(alias) if alias else None) +4777 ) +4778 expressions = [convert(tup) for tup in values] +4779 if columns and isinstance(columns, dict): +4780 types = list(columns.values()) +4781 expressions[0].set( +4782 "expressions", +4783 [cast(x, types[i]) for i, x in enumerate(expressions[0].expressions)], +4784 ) +4785 return Values( +4786 expressions=expressions, +4787 alias=table_alias, +4788 ) +4789 +4790 +4791def var(name: t.Optional[ExpOrStr]) -> Var: +4792 """Build a SQL variable. +4793 +4794 Example: +4795 >>> repr(var('x')) +4796 '(VAR this: x)' +4797 +4798 >>> repr(var(column('x', table='y'))) +4799 '(VAR this: x)' +4800 +4801 Args: +4802 name: The name of the var or an expression who's name will become the var. +4803 +4804 Returns: +4805 The new variable node. +4806 """ +4807 if not name: +4808 raise ValueError("Cannot convert empty name into var.") +4809 +4810 if isinstance(name, Expression): +4811 name = name.name +4812 return Var(this=name) +4813 +4814 +4815def rename_table(old_name: str | Table, new_name: str | Table) -> AlterTable: +4816 """Build ALTER TABLE... RENAME... expression +4817 +4818 Args: +4819 old_name: The old name of the table +4820 new_name: The new name of the table +4821 +4822 Returns: +4823 Alter table expression +4824 """ +4825 old_table = to_table(old_name) +4826 new_table = to_table(new_name) +4827 return AlterTable( +4828 this=old_table, +4829 actions=[ +4830 RenameTable(this=new_table), +4831 ], +4832 ) +4833 +4834 +4835def convert(value) -> Expression: +4836 """Convert a python value into an expression object. +4837 +4838 Raises an error if a conversion is not possible. +4839 +4840 Args: +4841 value (Any): a python object +4842 +4843 Returns: +4844 Expression: the equivalent expression object +4845 """ +4846 if isinstance(value, Expression): +4847 return value +4848 if value is None: +4849 return NULL +4850 if isinstance(value, bool): +4851 return Boolean(this=value) +4852 if isinstance(value, str): +4853 return Literal.string(value) +4854 if isinstance(value, float) and math.isnan(value): +4855 return NULL +4856 if isinstance(value, numbers.Number): +4857 return Literal.number(value) +4858 if isinstance(value, tuple): +4859 return Tuple(expressions=[convert(v) for v in value]) +4860 if isinstance(value, list): +4861 return Array(expressions=[convert(v) for v in value]) +4862 if isinstance(value, dict): +4863 return Map( +4864 keys=[convert(k) for k in value], +4865 values=[convert(v) for v in value.values()], +4866 ) +4867 if isinstance(value, datetime.datetime): +4868 datetime_literal = Literal.string( +4869 (value if value.tzinfo else value.replace(tzinfo=datetime.timezone.utc)).isoformat() +4870 ) +4871 return TimeStrToTime(this=datetime_literal) +4872 if isinstance(value, datetime.date): +4873 date_literal = Literal.string(value.strftime("%Y-%m-%d")) +4874 return DateStrToDate(this=date_literal) +4875 raise ValueError(f"Cannot convert {value}") 4876 -4877 if not table: -4878 raise ValueError(f"Cannot parse {table}") -4879 -4880 return ".".join( -4881 part -4882 for part in ( -4883 table.text("catalog"), -4884 table.text("db"), -4885 table.name, -4886 ) -4887 if part -4888 ) -4889 -4890 -4891def replace_tables(expression, mapping): -4892 """Replace all tables in expression according to the mapping. -4893 -4894 Args: -4895 expression (sqlglot.Expression): expression node to be transformed and replaced. -4896 mapping (Dict[str, str]): mapping of table names. -4897 -4898 Examples: -4899 >>> from sqlglot import exp, parse_one -4900 >>> replace_tables(parse_one("select * from a.b"), {"a.b": "c"}).sql() -4901 'SELECT * FROM c' -4902 -4903 Returns: -4904 The mapped expression. -4905 """ -4906 -4907 def _replace_tables(node): -4908 if isinstance(node, Table): -4909 new_name = mapping.get(table_name(node)) -4910 if new_name: -4911 return to_table( -4912 new_name, -4913 **{k: v for k, v in node.args.items() if k not in ("this", "db", "catalog")}, -4914 ) -4915 return node +4877 +4878def replace_children(expression, fun, *args, **kwargs): +4879 """ +4880 Replace children of an expression with the result of a lambda fun(child) -> exp. +4881 """ +4882 for k, v in expression.args.items(): +4883 is_list_arg = type(v) is list +4884 +4885 child_nodes = v if is_list_arg else [v] +4886 new_child_nodes = [] +4887 +4888 for cn in child_nodes: +4889 if isinstance(cn, Expression): +4890 for child_node in ensure_collection(fun(cn, *args, **kwargs)): +4891 new_child_nodes.append(child_node) +4892 child_node.parent = expression +4893 child_node.arg_key = k +4894 else: +4895 new_child_nodes.append(cn) +4896 +4897 expression.args[k] = new_child_nodes if is_list_arg else seq_get(new_child_nodes, 0) +4898 +4899 +4900def column_table_names(expression): +4901 """ +4902 Return all table names referenced through columns in an expression. +4903 +4904 Example: +4905 >>> import sqlglot +4906 >>> column_table_names(sqlglot.parse_one("a.b AND c.d AND c.e")) +4907 ['c', 'a'] +4908 +4909 Args: +4910 expression (sqlglot.Expression): expression to find table names +4911 +4912 Returns: +4913 list: A list of unique names +4914 """ +4915 return list(dict.fromkeys(column.table for column in expression.find_all(Column))) 4916 -4917 return expression.transform(_replace_tables) -4918 -4919 -4920def replace_placeholders(expression, *args, **kwargs): -4921 """Replace placeholders in an expression. -4922 -4923 Args: -4924 expression (sqlglot.Expression): expression node to be transformed and replaced. -4925 args: positional names that will substitute unnamed placeholders in the given order. -4926 kwargs: keyword arguments that will substitute named placeholders. -4927 -4928 Examples: -4929 >>> from sqlglot import exp, parse_one -4930 >>> replace_placeholders( -4931 ... parse_one("select * from :tbl where ? = ?"), "a", "b", tbl="foo" -4932 ... ).sql() -4933 'SELECT * FROM foo WHERE a = b' +4917 +4918def table_name(table) -> str: +4919 """Get the full name of a table as a string. +4920 +4921 Args: +4922 table (exp.Table | str): table expression node or string. +4923 +4924 Examples: +4925 >>> from sqlglot import exp, parse_one +4926 >>> table_name(parse_one("select * from a.b.c").find(exp.Table)) +4927 'a.b.c' +4928 +4929 Returns: +4930 The table name. +4931 """ +4932 +4933 table = maybe_parse(table, into=Table) 4934 -4935 Returns: -4936 The mapped expression. -4937 """ -4938 -4939 def _replace_placeholders(node, args, **kwargs): -4940 if isinstance(node, Placeholder): -4941 if node.name: -4942 new_name = kwargs.get(node.name) -4943 if new_name: -4944 return to_identifier(new_name) -4945 else: -4946 try: -4947 return to_identifier(next(args)) -4948 except StopIteration: -4949 pass -4950 return node +4935 if not table: +4936 raise ValueError(f"Cannot parse {table}") +4937 +4938 return ".".join( +4939 part +4940 for part in ( +4941 table.text("catalog"), +4942 table.text("db"), +4943 table.name, +4944 ) +4945 if part +4946 ) +4947 +4948 +4949def replace_tables(expression, mapping): +4950 """Replace all tables in expression according to the mapping. 4951 -4952 return expression.transform(_replace_placeholders, iter(args), **kwargs) -4953 -4954 -4955def expand(expression: Expression, sources: t.Dict[str, Subqueryable], copy=True) -> Expression: -4956 """Transforms an expression by expanding all referenced sources into subqueries. -4957 -4958 Examples: -4959 >>> from sqlglot import parse_one -4960 >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y")}).sql() -4961 'SELECT * FROM (SELECT * FROM y) AS z /* source: x */' -4962 -4963 Args: -4964 expression: The expression to expand. -4965 sources: A dictionary of name to Subqueryables. -4966 copy: Whether or not to copy the expression during transformation. Defaults to True. -4967 -4968 Returns: -4969 The transformed expression. -4970 """ -4971 -4972 def _expand(node: Expression): -4973 if isinstance(node, Table): -4974 name = table_name(node) -4975 source = sources.get(name) -4976 if source: -4977 subquery = source.subquery(node.alias or name) -4978 subquery.comments = [f"source: {name}"] -4979 return subquery -4980 return node -4981 -4982 return expression.transform(_expand, copy=copy) -4983 -4984 -4985def func(name: str, *args, dialect: DialectType = None, **kwargs) -> Func: -4986 """ -4987 Returns a Func expression. -4988 -4989 Examples: -4990 >>> func("abs", 5).sql() -4991 'ABS(5)' +4952 Args: +4953 expression (sqlglot.Expression): expression node to be transformed and replaced. +4954 mapping (Dict[str, str]): mapping of table names. +4955 +4956 Examples: +4957 >>> from sqlglot import exp, parse_one +4958 >>> replace_tables(parse_one("select * from a.b"), {"a.b": "c"}).sql() +4959 'SELECT * FROM c' +4960 +4961 Returns: +4962 The mapped expression. +4963 """ +4964 +4965 def _replace_tables(node): +4966 if isinstance(node, Table): +4967 new_name = mapping.get(table_name(node)) +4968 if new_name: +4969 return to_table( +4970 new_name, +4971 **{k: v for k, v in node.args.items() if k not in ("this", "db", "catalog")}, +4972 ) +4973 return node +4974 +4975 return expression.transform(_replace_tables) +4976 +4977 +4978def replace_placeholders(expression, *args, **kwargs): +4979 """Replace placeholders in an expression. +4980 +4981 Args: +4982 expression (sqlglot.Expression): expression node to be transformed and replaced. +4983 args: positional names that will substitute unnamed placeholders in the given order. +4984 kwargs: keyword arguments that will substitute named placeholders. +4985 +4986 Examples: +4987 >>> from sqlglot import exp, parse_one +4988 >>> replace_placeholders( +4989 ... parse_one("select * from :tbl where ? = ?"), "a", "b", tbl="foo" +4990 ... ).sql() +4991 'SELECT * FROM foo WHERE a = b' 4992 -4993 >>> func("cast", this=5, to=DataType.build("DOUBLE")).sql() -4994 'CAST(5 AS DOUBLE)' -4995 -4996 Args: -4997 name: the name of the function to build. -4998 args: the args used to instantiate the function of interest. -4999 dialect: the source dialect. -5000 kwargs: the kwargs used to instantiate the function of interest. -5001 -5002 Note: -5003 The arguments `args` and `kwargs` are mutually exclusive. -5004 -5005 Returns: -5006 An instance of the function of interest, or an anonymous function, if `name` doesn't -5007 correspond to an existing `sqlglot.expressions.Func` class. -5008 """ -5009 if args and kwargs: -5010 raise ValueError("Can't use both args and kwargs to instantiate a function.") +4993 Returns: +4994 The mapped expression. +4995 """ +4996 +4997 def _replace_placeholders(node, args, **kwargs): +4998 if isinstance(node, Placeholder): +4999 if node.name: +5000 new_name = kwargs.get(node.name) +5001 if new_name: +5002 return to_identifier(new_name) +5003 else: +5004 try: +5005 return to_identifier(next(args)) +5006 except StopIteration: +5007 pass +5008 return node +5009 +5010 return expression.transform(_replace_placeholders, iter(args), **kwargs) 5011 -5012 from sqlglot.dialects.dialect import Dialect -5013 -5014 converted = [convert(arg) for arg in args] -5015 kwargs = {key: convert(value) for key, value in kwargs.items()} -5016 -5017 parser = Dialect.get_or_raise(dialect)().parser() -5018 from_args_list = parser.FUNCTIONS.get(name.upper()) -5019 -5020 if from_args_list: -5021 function = from_args_list(converted) if converted else from_args_list.__self__(**kwargs) # type: ignore -5022 else: -5023 kwargs = kwargs or {"expressions": converted} -5024 function = Anonymous(this=name, **kwargs) +5012 +5013def expand(expression: Expression, sources: t.Dict[str, Subqueryable], copy=True) -> Expression: +5014 """Transforms an expression by expanding all referenced sources into subqueries. +5015 +5016 Examples: +5017 >>> from sqlglot import parse_one +5018 >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y")}).sql() +5019 'SELECT * FROM (SELECT * FROM y) AS z /* source: x */' +5020 +5021 Args: +5022 expression: The expression to expand. +5023 sources: A dictionary of name to Subqueryables. +5024 copy: Whether or not to copy the expression during transformation. Defaults to True. 5025 -5026 for error_message in function.error_messages(converted): -5027 raise ValueError(error_message) -5028 -5029 return function -5030 -5031 -5032def true(): -5033 """ -5034 Returns a true Boolean expression. -5035 """ -5036 return Boolean(this=True) -5037 -5038 -5039def false(): -5040 """ -5041 Returns a false Boolean expression. -5042 """ -5043 return Boolean(this=False) -5044 -5045 -5046def null(): -5047 """ -5048 Returns a Null expression. -5049 """ -5050 return Null() -5051 -5052 -5053# TODO: deprecate this -5054TRUE = Boolean(this=True) -5055FALSE = Boolean(this=False) -5056NULL = Null() +5026 Returns: +5027 The transformed expression. +5028 """ +5029 +5030 def _expand(node: Expression): +5031 if isinstance(node, Table): +5032 name = table_name(node) +5033 source = sources.get(name) +5034 if source: +5035 subquery = source.subquery(node.alias or name) +5036 subquery.comments = [f"source: {name}"] +5037 return subquery +5038 return node +5039 +5040 return expression.transform(_expand, copy=copy) +5041 +5042 +5043def func(name: str, *args, dialect: DialectType = None, **kwargs) -> Func: +5044 """ +5045 Returns a Func expression. +5046 +5047 Examples: +5048 >>> func("abs", 5).sql() +5049 'ABS(5)' +5050 +5051 >>> func("cast", this=5, to=DataType.build("DOUBLE")).sql() +5052 'CAST(5 AS DOUBLE)' +5053 +5054 Args: +5055 name: the name of the function to build. +5056 args: the args used to instantiate the function of interest. +5057 dialect: the source dialect. +5058 kwargs: the kwargs used to instantiate the function of interest. +5059 +5060 Note: +5061 The arguments `args` and `kwargs` are mutually exclusive. +5062 +5063 Returns: +5064 An instance of the function of interest, or an anonymous function, if `name` doesn't +5065 correspond to an existing `sqlglot.expressions.Func` class. +5066 """ +5067 if args and kwargs: +5068 raise ValueError("Can't use both args and kwargs to instantiate a function.") +5069 +5070 from sqlglot.dialects.dialect import Dialect +5071 +5072 converted = [convert(arg) for arg in args] +5073 kwargs = {key: convert(value) for key, value in kwargs.items()} +5074 +5075 parser = Dialect.get_or_raise(dialect)().parser() +5076 from_args_list = parser.FUNCTIONS.get(name.upper()) +5077 +5078 if from_args_list: +5079 function = from_args_list(converted) if converted else from_args_list.__self__(**kwargs) # type: ignore +5080 else: +5081 kwargs = kwargs or {"expressions": converted} +5082 function = Anonymous(this=name, **kwargs) +5083 +5084 for error_message in function.error_messages(converted): +5085 raise ValueError(error_message) +5086 +5087 return function +5088 +5089 +5090def true(): +5091 """ +5092 Returns a true Boolean expression. +5093 """ +5094 return Boolean(this=True) +5095 +5096 +5097def false(): +5098 """ +5099 Returns a false Boolean expression. +5100 """ +5101 return Boolean(this=False) +5102 +5103 +5104def null(): +5105 """ +5106 Returns a Null expression. +5107 """ +5108 return Null() +5109 +5110 +5111# TODO: deprecate this +5112TRUE = Boolean(this=True) +5113FALSE = Boolean(this=False) +5114NULL = Null()
        @@ -8026,577 +8135,592 @@ SQL expressions, such as sqlglot.expressions.select< -
         56class Expression(metaclass=_Expression):
        - 57    """
        - 58    The base class for all expressions in a syntax tree. Each Expression encapsulates any necessary
        - 59    context, such as its child expressions, their names (arg keys), and whether a given child expression
        - 60    is optional or not.
        - 61
        - 62    Attributes:
        - 63        key: a unique key for each class in the Expression hierarchy. This is useful for hashing
        - 64            and representing expressions as strings.
        - 65        arg_types: determines what arguments (child nodes) are supported by an expression. It
        - 66            maps arg keys to booleans that indicate whether the corresponding args are optional.
        - 67
        - 68    Example:
        - 69        >>> class Foo(Expression):
        - 70        ...     arg_types = {"this": True, "expression": False}
        - 71
        - 72        The above definition informs us that Foo is an Expression that requires an argument called
        - 73        "this" and may also optionally receive an argument called "expression".
        - 74
        - 75    Args:
        - 76        args: a mapping used for retrieving the arguments of an expression, given their arg keys.
        - 77        parent: a reference to the parent expression (or None, in case of root expressions).
        - 78        arg_key: the arg key an expression is associated with, i.e. the name its parent expression
        - 79            uses to refer to it.
        - 80        comments: a list of comments that are associated with a given expression. This is used in
        - 81            order to preserve comments when transpiling SQL code.
        - 82        _type: the `sqlglot.expressions.DataType` type of an expression. This is inferred by the
        - 83            optimizer, in order to enable some transformations that require type information.
        - 84    """
        - 85
        - 86    key = "expression"
        - 87    arg_types = {"this": True}
        - 88    __slots__ = ("args", "parent", "arg_key", "comments", "_type", "_meta")
        - 89
        - 90    def __init__(self, **args: t.Any):
        - 91        self.args: t.Dict[str, t.Any] = args
        - 92        self.parent: t.Optional[Expression] = None
        - 93        self.arg_key: t.Optional[str] = None
        - 94        self.comments: t.Optional[t.List[str]] = None
        - 95        self._type: t.Optional[DataType] = None
        - 96        self._meta: t.Optional[t.Dict[str, t.Any]] = None
        - 97
        - 98        for arg_key, value in self.args.items():
        - 99            self._set_parent(arg_key, value)
        -100
        -101    def __eq__(self, other) -> bool:
        -102        return type(self) is type(other) and _norm_args(self) == _norm_args(other)
        -103
        -104    def __hash__(self) -> int:
        -105        return hash(
        -106            (
        -107                self.key,
        -108                tuple(
        -109                    (k, tuple(v) if isinstance(v, list) else v) for k, v in _norm_args(self).items()
        -110                ),
        -111            )
        -112        )
        -113
        -114    @property
        -115    def this(self):
        -116        """
        -117        Retrieves the argument with key "this".
        -118        """
        -119        return self.args.get("this")
        +            
         57class Expression(metaclass=_Expression):
        + 58    """
        + 59    The base class for all expressions in a syntax tree. Each Expression encapsulates any necessary
        + 60    context, such as its child expressions, their names (arg keys), and whether a given child expression
        + 61    is optional or not.
        + 62
        + 63    Attributes:
        + 64        key: a unique key for each class in the Expression hierarchy. This is useful for hashing
        + 65            and representing expressions as strings.
        + 66        arg_types: determines what arguments (child nodes) are supported by an expression. It
        + 67            maps arg keys to booleans that indicate whether the corresponding args are optional.
        + 68
        + 69    Example:
        + 70        >>> class Foo(Expression):
        + 71        ...     arg_types = {"this": True, "expression": False}
        + 72
        + 73        The above definition informs us that Foo is an Expression that requires an argument called
        + 74        "this" and may also optionally receive an argument called "expression".
        + 75
        + 76    Args:
        + 77        args: a mapping used for retrieving the arguments of an expression, given their arg keys.
        + 78        parent: a reference to the parent expression (or None, in case of root expressions).
        + 79        arg_key: the arg key an expression is associated with, i.e. the name its parent expression
        + 80            uses to refer to it.
        + 81        comments: a list of comments that are associated with a given expression. This is used in
        + 82            order to preserve comments when transpiling SQL code.
        + 83        _type: the `sqlglot.expressions.DataType` type of an expression. This is inferred by the
        + 84            optimizer, in order to enable some transformations that require type information.
        + 85    """
        + 86
        + 87    key = "expression"
        + 88    arg_types = {"this": True}
        + 89    __slots__ = ("args", "parent", "arg_key", "comments", "_type", "_meta", "_hash")
        + 90
        + 91    def __init__(self, **args: t.Any):
        + 92        self.args: t.Dict[str, t.Any] = args
        + 93        self.parent: t.Optional[Expression] = None
        + 94        self.arg_key: t.Optional[str] = None
        + 95        self.comments: t.Optional[t.List[str]] = None
        + 96        self._type: t.Optional[DataType] = None
        + 97        self._meta: t.Optional[t.Dict[str, t.Any]] = None
        + 98        self._hash: t.Optional[int] = None
        + 99
        +100        for arg_key, value in self.args.items():
        +101            self._set_parent(arg_key, value)
        +102
        +103    def __eq__(self, other) -> bool:
        +104        return type(self) is type(other) and hash(self) == hash(other)
        +105
        +106    @property
        +107    def hashable_args(self) -> t.Any:
        +108        args = (self.args.get(k) for k in self.arg_types)
        +109
        +110        return tuple(
        +111            (tuple(_norm_arg(a) for a in arg) if arg else None)
        +112            if type(arg) is list
        +113            else (_norm_arg(arg) if arg is not None and arg is not False else None)
        +114            for arg in args
        +115        )
        +116
        +117    def __hash__(self) -> int:
        +118        if self._hash is not None:
        +119            return self._hash
         120
        -121    @property
        -122    def expression(self):
        -123        """
        -124        Retrieves the argument with key "expression".
        -125        """
        -126        return self.args.get("expression")
        -127
        -128    @property
        -129    def expressions(self):
        -130        """
        -131        Retrieves the argument with key "expressions".
        -132        """
        -133        return self.args.get("expressions") or []
        -134
        -135    def text(self, key) -> str:
        -136        """
        -137        Returns a textual representation of the argument corresponding to "key". This can only be used
        -138        for args that are strings or leaf Expression instances, such as identifiers and literals.
        -139        """
        -140        field = self.args.get(key)
        -141        if isinstance(field, str):
        -142            return field
        -143        if isinstance(field, (Identifier, Literal, Var)):
        -144            return field.this
        -145        if isinstance(field, (Star, Null)):
        -146            return field.name
        -147        return ""
        -148
        -149    @property
        -150    def is_string(self) -> bool:
        -151        """
        -152        Checks whether a Literal expression is a string.
        -153        """
        -154        return isinstance(self, Literal) and self.args["is_string"]
        -155
        -156    @property
        -157    def is_number(self) -> bool:
        -158        """
        -159        Checks whether a Literal expression is a number.
        -160        """
        -161        return isinstance(self, Literal) and not self.args["is_string"]
        -162
        -163    @property
        -164    def is_int(self) -> bool:
        -165        """
        -166        Checks whether a Literal expression is an integer.
        -167        """
        -168        if self.is_number:
        -169            try:
        -170                int(self.name)
        -171                return True
        -172            except ValueError:
        -173                pass
        -174        return False
        -175
        -176    @property
        -177    def is_star(self) -> bool:
        -178        """Checks whether an expression is a star."""
        -179        return isinstance(self, Star) or (isinstance(self, Column) and isinstance(self.this, Star))
        -180
        -181    @property
        -182    def alias(self) -> str:
        -183        """
        -184        Returns the alias of the expression, or an empty string if it's not aliased.
        -185        """
        -186        if isinstance(self.args.get("alias"), TableAlias):
        -187            return self.args["alias"].name
        -188        return self.text("alias")
        +121        return hash((self.__class__, self.hashable_args))
        +122
        +123    @property
        +124    def this(self):
        +125        """
        +126        Retrieves the argument with key "this".
        +127        """
        +128        return self.args.get("this")
        +129
        +130    @property
        +131    def expression(self):
        +132        """
        +133        Retrieves the argument with key "expression".
        +134        """
        +135        return self.args.get("expression")
        +136
        +137    @property
        +138    def expressions(self):
        +139        """
        +140        Retrieves the argument with key "expressions".
        +141        """
        +142        return self.args.get("expressions") or []
        +143
        +144    def text(self, key) -> str:
        +145        """
        +146        Returns a textual representation of the argument corresponding to "key". This can only be used
        +147        for args that are strings or leaf Expression instances, such as identifiers and literals.
        +148        """
        +149        field = self.args.get(key)
        +150        if isinstance(field, str):
        +151            return field
        +152        if isinstance(field, (Identifier, Literal, Var)):
        +153            return field.this
        +154        if isinstance(field, (Star, Null)):
        +155            return field.name
        +156        return ""
        +157
        +158    @property
        +159    def is_string(self) -> bool:
        +160        """
        +161        Checks whether a Literal expression is a string.
        +162        """
        +163        return isinstance(self, Literal) and self.args["is_string"]
        +164
        +165    @property
        +166    def is_number(self) -> bool:
        +167        """
        +168        Checks whether a Literal expression is a number.
        +169        """
        +170        return isinstance(self, Literal) and not self.args["is_string"]
        +171
        +172    @property
        +173    def is_int(self) -> bool:
        +174        """
        +175        Checks whether a Literal expression is an integer.
        +176        """
        +177        if self.is_number:
        +178            try:
        +179                int(self.name)
        +180                return True
        +181            except ValueError:
        +182                pass
        +183        return False
        +184
        +185    @property
        +186    def is_star(self) -> bool:
        +187        """Checks whether an expression is a star."""
        +188        return isinstance(self, Star) or (isinstance(self, Column) and isinstance(self.this, Star))
         189
         190    @property
        -191    def name(self) -> str:
        -192        return self.text("this")
        -193
        -194    @property
        -195    def alias_or_name(self):
        -196        return self.alias or self.name
        -197
        -198    @property
        -199    def output_name(self):
        -200        """
        -201        Name of the output column if this expression is a selection.
        +191    def alias(self) -> str:
        +192        """
        +193        Returns the alias of the expression, or an empty string if it's not aliased.
        +194        """
        +195        if isinstance(self.args.get("alias"), TableAlias):
        +196            return self.args["alias"].name
        +197        return self.text("alias")
        +198
        +199    @property
        +200    def name(self) -> str:
        +201        return self.text("this")
         202
        -203        If the Expression has no output name, an empty string is returned.
        -204
        -205        Example:
        -206            >>> from sqlglot import parse_one
        -207            >>> parse_one("SELECT a").expressions[0].output_name
        -208            'a'
        -209            >>> parse_one("SELECT b AS c").expressions[0].output_name
        -210            'c'
        -211            >>> parse_one("SELECT 1 + 2").expressions[0].output_name
        -212            ''
        -213        """
        -214        return ""
        -215
        -216    @property
        -217    def type(self) -> t.Optional[DataType]:
        -218        return self._type
        -219
        -220    @type.setter
        -221    def type(self, dtype: t.Optional[DataType | DataType.Type | str]) -> None:
        -222        if dtype and not isinstance(dtype, DataType):
        -223            dtype = DataType.build(dtype)
        -224        self._type = dtype  # type: ignore
        -225
        -226    @property
        -227    def meta(self) -> t.Dict[str, t.Any]:
        -228        if self._meta is None:
        -229            self._meta = {}
        -230        return self._meta
        -231
        -232    def __deepcopy__(self, memo):
        -233        copy = self.__class__(**deepcopy(self.args))
        -234        if self.comments is not None:
        -235            copy.comments = deepcopy(self.comments)
        -236
        -237        if self._type is not None:
        -238            copy._type = self._type.copy()
        -239
        -240        if self._meta is not None:
        -241            copy._meta = deepcopy(self._meta)
        -242
        -243        return copy
        -244
        -245    def copy(self):
        -246        """
        -247        Returns a deep copy of the expression.
        -248        """
        -249        new = deepcopy(self)
        -250        new.parent = self.parent
        -251        for item, parent, _ in new.bfs():
        -252            if isinstance(item, Expression) and parent:
        -253                item.parent = parent
        -254        return new
        -255
        -256    def append(self, arg_key, value):
        -257        """
        -258        Appends value to arg_key if it's a list or sets it as a new list.
        -259
        -260        Args:
        -261            arg_key (str): name of the list expression arg
        -262            value (Any): value to append to the list
        -263        """
        -264        if not isinstance(self.args.get(arg_key), list):
        -265            self.args[arg_key] = []
        -266        self.args[arg_key].append(value)
        -267        self._set_parent(arg_key, value)
        -268
        -269    def set(self, arg_key, value):
        -270        """
        -271        Sets `arg_key` to `value`.
        -272
        -273        Args:
        -274            arg_key (str): name of the expression arg.
        -275            value: value to set the arg to.
        -276        """
        -277        self.args[arg_key] = value
        -278        self._set_parent(arg_key, value)
        -279
        -280    def _set_parent(self, arg_key, value):
        -281        if isinstance(value, Expression):
        -282            value.parent = self
        -283            value.arg_key = arg_key
        -284        elif isinstance(value, list):
        -285            for v in value:
        -286                if isinstance(v, Expression):
        -287                    v.parent = self
        -288                    v.arg_key = arg_key
        -289
        -290    @property
        -291    def depth(self):
        -292        """
        -293        Returns the depth of this tree.
        -294        """
        -295        if self.parent:
        -296            return self.parent.depth + 1
        -297        return 0
        -298
        -299    def find(self, *expression_types: t.Type[E], bfs=True) -> E | None:
        -300        """
        -301        Returns the first node in this tree which matches at least one of
        -302        the specified types.
        -303
        -304        Args:
        -305            expression_types (type): the expression type(s) to match.
        -306
        -307        Returns:
        -308            The node which matches the criteria or None if no such node was found.
        -309        """
        -310        return next(self.find_all(*expression_types, bfs=bfs), None)
        -311
        -312    def find_all(self, *expression_types: t.Type[E], bfs=True) -> t.Iterator[E]:
        -313        """
        -314        Returns a generator object which visits all nodes in this tree and only
        -315        yields those that match at least one of the specified expression types.
        -316
        -317        Args:
        -318            expression_types (type): the expression type(s) to match.
        -319
        -320        Returns:
        -321            The generator object.
        -322        """
        -323        for expression, _, _ in self.walk(bfs=bfs):
        -324            if isinstance(expression, expression_types):
        -325                yield expression
        -326
        -327    def find_ancestor(self, *expression_types: t.Type[E]) -> E | None:
        -328        """
        -329        Returns a nearest parent matching expression_types.
        -330
        -331        Args:
        -332            expression_types (type): the expression type(s) to match.
        +203    @property
        +204    def alias_or_name(self):
        +205        return self.alias or self.name
        +206
        +207    @property
        +208    def output_name(self):
        +209        """
        +210        Name of the output column if this expression is a selection.
        +211
        +212        If the Expression has no output name, an empty string is returned.
        +213
        +214        Example:
        +215            >>> from sqlglot import parse_one
        +216            >>> parse_one("SELECT a").expressions[0].output_name
        +217            'a'
        +218            >>> parse_one("SELECT b AS c").expressions[0].output_name
        +219            'c'
        +220            >>> parse_one("SELECT 1 + 2").expressions[0].output_name
        +221            ''
        +222        """
        +223        return ""
        +224
        +225    @property
        +226    def type(self) -> t.Optional[DataType]:
        +227        return self._type
        +228
        +229    @type.setter
        +230    def type(self, dtype: t.Optional[DataType | DataType.Type | str]) -> None:
        +231        if dtype and not isinstance(dtype, DataType):
        +232            dtype = DataType.build(dtype)
        +233        self._type = dtype  # type: ignore
        +234
        +235    @property
        +236    def meta(self) -> t.Dict[str, t.Any]:
        +237        if self._meta is None:
        +238            self._meta = {}
        +239        return self._meta
        +240
        +241    def __deepcopy__(self, memo):
        +242        copy = self.__class__(**deepcopy(self.args))
        +243        if self.comments is not None:
        +244            copy.comments = deepcopy(self.comments)
        +245
        +246        if self._type is not None:
        +247            copy._type = self._type.copy()
        +248
        +249        if self._meta is not None:
        +250            copy._meta = deepcopy(self._meta)
        +251
        +252        return copy
        +253
        +254    def copy(self):
        +255        """
        +256        Returns a deep copy of the expression.
        +257        """
        +258        new = deepcopy(self)
        +259        new.parent = self.parent
        +260        return new
        +261
        +262    def append(self, arg_key, value):
        +263        """
        +264        Appends value to arg_key if it's a list or sets it as a new list.
        +265
        +266        Args:
        +267            arg_key (str): name of the list expression arg
        +268            value (Any): value to append to the list
        +269        """
        +270        if not isinstance(self.args.get(arg_key), list):
        +271            self.args[arg_key] = []
        +272        self.args[arg_key].append(value)
        +273        self._set_parent(arg_key, value)
        +274
        +275    def set(self, arg_key, value):
        +276        """
        +277        Sets `arg_key` to `value`.
        +278
        +279        Args:
        +280            arg_key (str): name of the expression arg.
        +281            value: value to set the arg to.
        +282        """
        +283        self.args[arg_key] = value
        +284        self._set_parent(arg_key, value)
        +285
        +286    def _set_parent(self, arg_key, value):
        +287        if hasattr(value, "parent"):
        +288            value.parent = self
        +289            value.arg_key = arg_key
        +290        elif type(value) is list:
        +291            for v in value:
        +292                if hasattr(v, "parent"):
        +293                    v.parent = self
        +294                    v.arg_key = arg_key
        +295
        +296    @property
        +297    def depth(self):
        +298        """
        +299        Returns the depth of this tree.
        +300        """
        +301        if self.parent:
        +302            return self.parent.depth + 1
        +303        return 0
        +304
        +305    def iter_expressions(self) -> t.Iterator[t.Tuple[str, Expression]]:
        +306        """Yields the key and expression for all arguments, exploding list args."""
        +307        for k, vs in self.args.items():
        +308            if type(vs) is list:
        +309                for v in vs:
        +310                    if hasattr(v, "parent"):
        +311                        yield k, v
        +312            else:
        +313                if hasattr(vs, "parent"):
        +314                    yield k, vs
        +315
        +316    def find(self, *expression_types: t.Type[E], bfs=True) -> E | None:
        +317        """
        +318        Returns the first node in this tree which matches at least one of
        +319        the specified types.
        +320
        +321        Args:
        +322            expression_types: the expression type(s) to match.
        +323
        +324        Returns:
        +325            The node which matches the criteria or None if no such node was found.
        +326        """
        +327        return next(self.find_all(*expression_types, bfs=bfs), None)
        +328
        +329    def find_all(self, *expression_types: t.Type[E], bfs=True) -> t.Iterator[E]:
        +330        """
        +331        Returns a generator object which visits all nodes in this tree and only
        +332        yields those that match at least one of the specified expression types.
         333
        -334        Returns:
        -335            The parent node.
        -336        """
        -337        ancestor = self.parent
        -338        while ancestor and not isinstance(ancestor, expression_types):
        -339            ancestor = ancestor.parent
        -340        # ignore type because mypy doesn't know that we're checking type in the loop
        -341        return ancestor  # type: ignore[return-value]
        -342
        -343    @property
        -344    def parent_select(self):
        +334        Args:
        +335            expression_types: the expression type(s) to match.
        +336
        +337        Returns:
        +338            The generator object.
        +339        """
        +340        for expression, *_ in self.walk(bfs=bfs):
        +341            if isinstance(expression, expression_types):
        +342                yield expression
        +343
        +344    def find_ancestor(self, *expression_types: t.Type[E]) -> E | None:
         345        """
        -346        Returns the parent select statement.
        -347        """
        -348        return self.find_ancestor(Select)
        -349
        -350    def root(self) -> Expression:
        -351        """
        -352        Returns the root expression of this tree.
        +346        Returns a nearest parent matching expression_types.
        +347
        +348        Args:
        +349            expression_types: the expression type(s) to match.
        +350
        +351        Returns:
        +352            The parent node.
         353        """
        -354        expression = self
        -355        while expression.parent:
        -356            expression = expression.parent
        -357        return expression
        +354        ancestor = self.parent
        +355        while ancestor and not isinstance(ancestor, expression_types):
        +356            ancestor = ancestor.parent
        +357        return t.cast(E, ancestor)
         358
        -359    def walk(self, bfs=True, prune=None):
        -360        """
        -361        Returns a generator object which visits all nodes in this tree.
        -362
        -363        Args:
        -364            bfs (bool): if set to True the BFS traversal order will be applied,
        -365                otherwise the DFS traversal will be used instead.
        -366            prune ((node, parent, arg_key) -> bool): callable that returns True if
        -367                the generator should stop traversing this branch of the tree.
        -368
        -369        Returns:
        -370            the generator object.
        -371        """
        -372        if bfs:
        -373            yield from self.bfs(prune=prune)
        -374        else:
        -375            yield from self.dfs(prune=prune)
        -376
        -377    def dfs(self, parent=None, key=None, prune=None):
        -378        """
        -379        Returns a generator object which visits all nodes in this tree in
        -380        the DFS (Depth-first) order.
        -381
        -382        Returns:
        -383            The generator object.
        -384        """
        -385        parent = parent or self.parent
        -386        yield self, parent, key
        -387        if prune and prune(self, parent, key):
        -388            return
        +359    @property
        +360    def parent_select(self):
        +361        """
        +362        Returns the parent select statement.
        +363        """
        +364        return self.find_ancestor(Select)
        +365
        +366    @property
        +367    def same_parent(self):
        +368        """Returns if the parent is the same class as itself."""
        +369        return type(self.parent) is self.__class__
        +370
        +371    def root(self) -> Expression:
        +372        """
        +373        Returns the root expression of this tree.
        +374        """
        +375        expression = self
        +376        while expression.parent:
        +377            expression = expression.parent
        +378        return expression
        +379
        +380    def walk(self, bfs=True, prune=None):
        +381        """
        +382        Returns a generator object which visits all nodes in this tree.
        +383
        +384        Args:
        +385            bfs (bool): if set to True the BFS traversal order will be applied,
        +386                otherwise the DFS traversal will be used instead.
        +387            prune ((node, parent, arg_key) -> bool): callable that returns True if
        +388                the generator should stop traversing this branch of the tree.
         389
        -390        for k, v in self.args.items():
        -391            for node in ensure_collection(v):
        -392                if isinstance(node, Expression):
        -393                    yield from node.dfs(self, k, prune)
        -394
        -395    def bfs(self, prune=None):
        -396        """
        -397        Returns a generator object which visits all nodes in this tree in
        -398        the BFS (Breadth-first) order.
        -399
        -400        Returns:
        -401            The generator object.
        -402        """
        -403        queue = deque([(self, self.parent, None)])
        -404
        -405        while queue:
        -406            item, parent, key = queue.popleft()
        -407
        -408            yield item, parent, key
        -409            if prune and prune(item, parent, key):
        -410                continue
        -411
        -412            if isinstance(item, Expression):
        -413                for k, v in item.args.items():
        -414                    for node in ensure_collection(v):
        -415                        if isinstance(node, Expression):
        -416                            queue.append((node, item, k))
        -417
        -418    def unnest(self):
        -419        """
        -420        Returns the first non parenthesis child or self.
        +390        Returns:
        +391            the generator object.
        +392        """
        +393        if bfs:
        +394            yield from self.bfs(prune=prune)
        +395        else:
        +396            yield from self.dfs(prune=prune)
        +397
        +398    def dfs(self, parent=None, key=None, prune=None):
        +399        """
        +400        Returns a generator object which visits all nodes in this tree in
        +401        the DFS (Depth-first) order.
        +402
        +403        Returns:
        +404            The generator object.
        +405        """
        +406        parent = parent or self.parent
        +407        yield self, parent, key
        +408        if prune and prune(self, parent, key):
        +409            return
        +410
        +411        for k, v in self.iter_expressions():
        +412            yield from v.dfs(self, k, prune)
        +413
        +414    def bfs(self, prune=None):
        +415        """
        +416        Returns a generator object which visits all nodes in this tree in
        +417        the BFS (Breadth-first) order.
        +418
        +419        Returns:
        +420            The generator object.
         421        """
        -422        expression = self
        -423        while isinstance(expression, Paren):
        -424            expression = expression.this
        -425        return expression
        +422        queue = deque([(self, self.parent, None)])
        +423
        +424        while queue:
        +425            item, parent, key = queue.popleft()
         426
        -427    def unalias(self):
        -428        """
        -429        Returns the inner expression if this is an Alias.
        -430        """
        -431        if isinstance(self, Alias):
        -432            return self.this
        -433        return self
        -434
        -435    def unnest_operands(self):
        -436        """
        -437        Returns unnested operands as a tuple.
        -438        """
        -439        return tuple(arg.unnest() for arg in self.args.values() if arg)
        -440
        -441    def flatten(self, unnest=True):
        -442        """
        -443        Returns a generator which yields child nodes who's parents are the same class.
        -444
        -445        A AND B AND C -> [A, B, C]
        +427            yield item, parent, key
        +428            if prune and prune(item, parent, key):
        +429                continue
        +430
        +431            for k, v in item.iter_expressions():
        +432                queue.append((v, item, k))
        +433
        +434    def unnest(self):
        +435        """
        +436        Returns the first non parenthesis child or self.
        +437        """
        +438        expression = self
        +439        while type(expression) is Paren:
        +440            expression = expression.this
        +441        return expression
        +442
        +443    def unalias(self):
        +444        """
        +445        Returns the inner expression if this is an Alias.
         446        """
        -447        for node, _, _ in self.dfs(prune=lambda n, p, *_: p and not isinstance(n, self.__class__)):
        -448            if not isinstance(node, self.__class__):
        -449                yield node.unnest() if unnest else node
        +447        if isinstance(self, Alias):
        +448            return self.this
        +449        return self
         450
        -451    def __str__(self):
        -452        return self.sql()
        -453
        -454    def __repr__(self):
        -455        return self._to_s()
        +451    def unnest_operands(self):
        +452        """
        +453        Returns unnested operands as a tuple.
        +454        """
        +455        return tuple(arg.unnest() for _, arg in self.iter_expressions())
         456
        -457    def sql(self, dialect: DialectType = None, **opts) -> str:
        +457    def flatten(self, unnest=True):
         458        """
        -459        Returns SQL string representation of this tree.
        +459        Returns a generator which yields child nodes who's parents are the same class.
         460
        -461        Args:
        -462            dialect: the dialect of the output SQL string (eg. "spark", "hive", "presto", "mysql").
        -463            opts: other `sqlglot.generator.Generator` options.
        -464
        -465        Returns:
        -466            The SQL string.
        -467        """
        -468        from sqlglot.dialects import Dialect
        +461        A AND B AND C -> [A, B, C]
        +462        """
        +463        for node, _, _ in self.dfs(prune=lambda n, p, *_: p and not type(n) is self.__class__):
        +464            if not type(node) is self.__class__:
        +465                yield node.unnest() if unnest else node
        +466
        +467    def __str__(self):
        +468        return self.sql()
         469
        -470        return Dialect.get_or_raise(dialect)().generate(self, **opts)
        -471
        -472    def _to_s(self, hide_missing: bool = True, level: int = 0) -> str:
        -473        indent = "" if not level else "\n"
        -474        indent += "".join(["  "] * level)
        -475        left = f"({self.key.upper()} "
        +470    def __repr__(self):
        +471        return self._to_s()
        +472
        +473    def sql(self, dialect: DialectType = None, **opts) -> str:
        +474        """
        +475        Returns SQL string representation of this tree.
         476
        -477        args: t.Dict[str, t.Any] = {
        -478            k: ", ".join(
        -479                v._to_s(hide_missing=hide_missing, level=level + 1)
        -480                if hasattr(v, "_to_s")
        -481                else str(v)
        -482                for v in ensure_collection(vs)
        -483                if v is not None
        -484            )
        -485            for k, vs in self.args.items()
        -486        }
        -487        args["comments"] = self.comments
        -488        args["type"] = self.type
        -489        args = {k: v for k, v in args.items() if v or not hide_missing}
        -490
        -491        right = ", ".join(f"{k}: {v}" for k, v in args.items())
        -492        right += ")"
        -493
        -494        return indent + left + right
        -495
        -496    def transform(self, fun, *args, copy=True, **kwargs):
        -497        """
        -498        Recursively visits all tree nodes (excluding already transformed ones)
        -499        and applies the given transformation function to each node.
        -500
        -501        Args:
        -502            fun (function): a function which takes a node as an argument and returns a
        -503                new transformed node or the same node without modifications. If the function
        -504                returns None, then the corresponding node will be removed from the syntax tree.
        -505            copy (bool): if set to True a new tree instance is constructed, otherwise the tree is
        -506                modified in place.
        -507
        -508        Returns:
        -509            The transformed tree.
        -510        """
        -511        node = self.copy() if copy else self
        -512        new_node = fun(node, *args, **kwargs)
        -513
        -514        if new_node is None or not isinstance(new_node, Expression):
        -515            return new_node
        -516        if new_node is not node:
        -517            new_node.parent = node.parent
        -518            return new_node
        -519
        -520        replace_children(new_node, lambda child: child.transform(fun, *args, copy=False, **kwargs))
        -521        return new_node
        -522
        -523    def replace(self, expression):
        -524        """
        -525        Swap out this expression with a new expression.
        -526
        -527        For example::
        -528
        -529            >>> tree = Select().select("x").from_("tbl")
        -530            >>> tree.find(Column).replace(Column(this="y"))
        -531            (COLUMN this: y)
        -532            >>> tree.sql()
        -533            'SELECT y FROM tbl'
        -534
        -535        Args:
        -536            expression (Expression|None): new node
        -537
        -538        Returns:
        -539            The new expression or expressions.
        -540        """
        -541        if not self.parent:
        -542            return expression
        -543
        -544        parent = self.parent
        -545        self.parent = None
        -546
        -547        replace_children(parent, lambda child: expression if child is self else child)
        -548        return expression
        -549
        -550    def pop(self):
        -551        """
        -552        Remove this expression from its AST.
        +477        Args:
        +478            dialect: the dialect of the output SQL string (eg. "spark", "hive", "presto", "mysql").
        +479            opts: other `sqlglot.generator.Generator` options.
        +480
        +481        Returns:
        +482            The SQL string.
        +483        """
        +484        from sqlglot.dialects import Dialect
        +485
        +486        return Dialect.get_or_raise(dialect)().generate(self, **opts)
        +487
        +488    def _to_s(self, hide_missing: bool = True, level: int = 0) -> str:
        +489        indent = "" if not level else "\n"
        +490        indent += "".join(["  "] * level)
        +491        left = f"({self.key.upper()} "
        +492
        +493        args: t.Dict[str, t.Any] = {
        +494            k: ", ".join(
        +495                v._to_s(hide_missing=hide_missing, level=level + 1)
        +496                if hasattr(v, "_to_s")
        +497                else str(v)
        +498                for v in ensure_list(vs)
        +499                if v is not None
        +500            )
        +501            for k, vs in self.args.items()
        +502        }
        +503        args["comments"] = self.comments
        +504        args["type"] = self.type
        +505        args = {k: v for k, v in args.items() if v or not hide_missing}
        +506
        +507        right = ", ".join(f"{k}: {v}" for k, v in args.items())
        +508        right += ")"
        +509
        +510        return indent + left + right
        +511
        +512    def transform(self, fun, *args, copy=True, **kwargs):
        +513        """
        +514        Recursively visits all tree nodes (excluding already transformed ones)
        +515        and applies the given transformation function to each node.
        +516
        +517        Args:
        +518            fun (function): a function which takes a node as an argument and returns a
        +519                new transformed node or the same node without modifications. If the function
        +520                returns None, then the corresponding node will be removed from the syntax tree.
        +521            copy (bool): if set to True a new tree instance is constructed, otherwise the tree is
        +522                modified in place.
        +523
        +524        Returns:
        +525            The transformed tree.
        +526        """
        +527        node = self.copy() if copy else self
        +528        new_node = fun(node, *args, **kwargs)
        +529
        +530        if new_node is None or not isinstance(new_node, Expression):
        +531            return new_node
        +532        if new_node is not node:
        +533            new_node.parent = node.parent
        +534            return new_node
        +535
        +536        replace_children(new_node, lambda child: child.transform(fun, *args, copy=False, **kwargs))
        +537        return new_node
        +538
        +539    def replace(self, expression):
        +540        """
        +541        Swap out this expression with a new expression.
        +542
        +543        For example::
        +544
        +545            >>> tree = Select().select("x").from_("tbl")
        +546            >>> tree.find(Column).replace(Column(this="y"))
        +547            (COLUMN this: y)
        +548            >>> tree.sql()
        +549            'SELECT y FROM tbl'
        +550
        +551        Args:
        +552            expression (Expression|None): new node
         553
         554        Returns:
        -555            The popped expression.
        +555            The new expression or expressions.
         556        """
        -557        self.replace(None)
        -558        return self
        +557        if not self.parent:
        +558            return expression
         559
        -560    def assert_is(self, type_):
        -561        """
        -562        Assert that this `Expression` is an instance of `type_`.
        -563
        -564        If it is NOT an instance of `type_`, this raises an assertion error.
        -565        Otherwise, this returns this expression.
        -566
        -567        Examples:
        -568            This is useful for type security in chained expressions:
        +560        parent = self.parent
        +561        self.parent = None
        +562
        +563        replace_children(parent, lambda child: expression if child is self else child)
        +564        return expression
        +565
        +566    def pop(self):
        +567        """
        +568        Remove this expression from its AST.
         569
        -570            >>> import sqlglot
        -571            >>> sqlglot.parse_one("SELECT x from y").assert_is(Select).select("z").sql()
        -572            'SELECT x, z FROM y'
        -573        """
        -574        assert isinstance(self, type_)
        -575        return self
        -576
        -577    def error_messages(self, args: t.Optional[t.Sequence] = None) -> t.List[str]:
        -578        """
        -579        Checks if this expression is valid (e.g. all mandatory args are set).
        -580
        -581        Args:
        -582            args: a sequence of values that were used to instantiate a Func expression. This is used
        -583                to check that the provided arguments don't exceed the function argument limit.
        -584
        -585        Returns:
        -586            A list of error messages for all possible errors that were found.
        -587        """
        -588        errors: t.List[str] = []
        -589
        -590        for k in self.args:
        -591            if k not in self.arg_types:
        -592                errors.append(f"Unexpected keyword: '{k}' for {self.__class__}")
        -593        for k, mandatory in self.arg_types.items():
        -594            v = self.args.get(k)
        -595            if mandatory and (v is None or (isinstance(v, list) and not v)):
        -596                errors.append(f"Required keyword: '{k}' missing for {self.__class__}")
        -597
        -598        if (
        -599            args
        -600            and isinstance(self, Func)
        -601            and len(args) > len(self.arg_types)
        -602            and not self.is_var_len_args
        -603        ):
        -604            errors.append(
        -605                f"The number of provided arguments ({len(args)}) is greater than "
        -606                f"the maximum number of supported arguments ({len(self.arg_types)})"
        -607            )
        -608
        -609        return errors
        -610
        -611    def dump(self):
        -612        """
        -613        Dump this Expression to a JSON-serializable dict.
        -614        """
        -615        from sqlglot.serde import dump
        -616
        -617        return dump(self)
        -618
        -619    @classmethod
        -620    def load(cls, obj):
        -621        """
        -622        Load a dict (as returned by `Expression.dump`) into an Expression instance.
        -623        """
        -624        from sqlglot.serde import load
        -625
        -626        return load(obj)
        +570        Returns:
        +571            The popped expression.
        +572        """
        +573        self.replace(None)
        +574        return self
        +575
        +576    def assert_is(self, type_):
        +577        """
        +578        Assert that this `Expression` is an instance of `type_`.
        +579
        +580        If it is NOT an instance of `type_`, this raises an assertion error.
        +581        Otherwise, this returns this expression.
        +582
        +583        Examples:
        +584            This is useful for type security in chained expressions:
        +585
        +586            >>> import sqlglot
        +587            >>> sqlglot.parse_one("SELECT x from y").assert_is(Select).select("z").sql()
        +588            'SELECT x, z FROM y'
        +589        """
        +590        assert isinstance(self, type_)
        +591        return self
        +592
        +593    def error_messages(self, args: t.Optional[t.Sequence] = None) -> t.List[str]:
        +594        """
        +595        Checks if this expression is valid (e.g. all mandatory args are set).
        +596
        +597        Args:
        +598            args: a sequence of values that were used to instantiate a Func expression. This is used
        +599                to check that the provided arguments don't exceed the function argument limit.
        +600
        +601        Returns:
        +602            A list of error messages for all possible errors that were found.
        +603        """
        +604        errors: t.List[str] = []
        +605
        +606        for k in self.args:
        +607            if k not in self.arg_types:
        +608                errors.append(f"Unexpected keyword: '{k}' for {self.__class__}")
        +609        for k, mandatory in self.arg_types.items():
        +610            v = self.args.get(k)
        +611            if mandatory and (v is None or (isinstance(v, list) and not v)):
        +612                errors.append(f"Required keyword: '{k}' missing for {self.__class__}")
        +613
        +614        if (
        +615            args
        +616            and isinstance(self, Func)
        +617            and len(args) > len(self.arg_types)
        +618            and not self.is_var_len_args
        +619        ):
        +620            errors.append(
        +621                f"The number of provided arguments ({len(args)}) is greater than "
        +622                f"the maximum number of supported arguments ({len(self.arg_types)})"
        +623            )
        +624
        +625        return errors
        +626
        +627    def dump(self):
        +628        """
        +629        Dump this Expression to a JSON-serializable dict.
        +630        """
        +631        from sqlglot.serde import dump
        +632
        +633        return dump(self)
        +634
        +635    @classmethod
        +636    def load(cls, obj):
        +637        """
        +638        Load a dict (as returned by `Expression.dump`) into an Expression instance.
        +639        """
        +640        from sqlglot.serde import load
        +641
        +642        return load(obj)
         
        @@ -8651,16 +8775,17 @@ optimizer, in order to enable some transformations that require type information
        -
        90    def __init__(self, **args: t.Any):
        -91        self.args: t.Dict[str, t.Any] = args
        -92        self.parent: t.Optional[Expression] = None
        -93        self.arg_key: t.Optional[str] = None
        -94        self.comments: t.Optional[t.List[str]] = None
        -95        self._type: t.Optional[DataType] = None
        -96        self._meta: t.Optional[t.Dict[str, t.Any]] = None
        -97
        -98        for arg_key, value in self.args.items():
        -99            self._set_parent(arg_key, value)
        +            
         91    def __init__(self, **args: t.Any):
        + 92        self.args: t.Dict[str, t.Any] = args
        + 93        self.parent: t.Optional[Expression] = None
        + 94        self.arg_key: t.Optional[str] = None
        + 95        self.comments: t.Optional[t.List[str]] = None
        + 96        self._type: t.Optional[DataType] = None
        + 97        self._meta: t.Optional[t.Dict[str, t.Any]] = None
        + 98        self._hash: t.Optional[int] = None
        + 99
        +100        for arg_key, value in self.args.items():
        +101            self._set_parent(arg_key, value)
         
        @@ -8717,19 +8842,19 @@ optimizer, in order to enable some transformations that require type information
        -
        135    def text(self, key) -> str:
        -136        """
        -137        Returns a textual representation of the argument corresponding to "key". This can only be used
        -138        for args that are strings or leaf Expression instances, such as identifiers and literals.
        -139        """
        -140        field = self.args.get(key)
        -141        if isinstance(field, str):
        -142            return field
        -143        if isinstance(field, (Identifier, Literal, Var)):
        -144            return field.this
        -145        if isinstance(field, (Star, Null)):
        -146            return field.name
        -147        return ""
        +            
        144    def text(self, key) -> str:
        +145        """
        +146        Returns a textual representation of the argument corresponding to "key". This can only be used
        +147        for args that are strings or leaf Expression instances, such as identifiers and literals.
        +148        """
        +149        field = self.args.get(key)
        +150        if isinstance(field, str):
        +151            return field
        +152        if isinstance(field, (Identifier, Literal, Var)):
        +153            return field.this
        +154        if isinstance(field, (Star, Null)):
        +155            return field.name
        +156        return ""
         
        @@ -8845,16 +8970,13 @@ for args that are strings or leaf Expression instances, such as identifiers and
        -
        245    def copy(self):
        -246        """
        -247        Returns a deep copy of the expression.
        -248        """
        -249        new = deepcopy(self)
        -250        new.parent = self.parent
        -251        for item, parent, _ in new.bfs():
        -252            if isinstance(item, Expression) and parent:
        -253                item.parent = parent
        -254        return new
        +            
        254    def copy(self):
        +255        """
        +256        Returns a deep copy of the expression.
        +257        """
        +258        new = deepcopy(self)
        +259        new.parent = self.parent
        +260        return new
         
        @@ -8874,18 +8996,18 @@ for args that are strings or leaf Expression instances, such as identifiers and
        -
        256    def append(self, arg_key, value):
        -257        """
        -258        Appends value to arg_key if it's a list or sets it as a new list.
        -259
        -260        Args:
        -261            arg_key (str): name of the list expression arg
        -262            value (Any): value to append to the list
        -263        """
        -264        if not isinstance(self.args.get(arg_key), list):
        -265            self.args[arg_key] = []
        -266        self.args[arg_key].append(value)
        -267        self._set_parent(arg_key, value)
        +            
        262    def append(self, arg_key, value):
        +263        """
        +264        Appends value to arg_key if it's a list or sets it as a new list.
        +265
        +266        Args:
        +267            arg_key (str): name of the list expression arg
        +268            value (Any): value to append to the list
        +269        """
        +270        if not isinstance(self.args.get(arg_key), list):
        +271            self.args[arg_key] = []
        +272        self.args[arg_key].append(value)
        +273        self._set_parent(arg_key, value)
         
        @@ -8912,16 +9034,16 @@ for args that are strings or leaf Expression instances, such as identifiers and
        -
        269    def set(self, arg_key, value):
        -270        """
        -271        Sets `arg_key` to `value`.
        -272
        -273        Args:
        -274            arg_key (str): name of the expression arg.
        -275            value: value to set the arg to.
        -276        """
        -277        self.args[arg_key] = value
        -278        self._set_parent(arg_key, value)
        +            
        275    def set(self, arg_key, value):
        +276        """
        +277        Sets `arg_key` to `value`.
        +278
        +279        Args:
        +280            arg_key (str): name of the expression arg.
        +281            value: value to set the arg to.
        +282        """
        +283        self.args[arg_key] = value
        +284        self._set_parent(arg_key, value)
         
        @@ -8949,6 +9071,35 @@ for args that are strings or leaf Expression instances, such as identifiers and
        + +
        + +
        + + def + iter_expressions(self) -> Iterator[Tuple[str, sqlglot.expressions.Expression]]: + + + +
        + +
        305    def iter_expressions(self) -> t.Iterator[t.Tuple[str, Expression]]:
        +306        """Yields the key and expression for all arguments, exploding list args."""
        +307        for k, vs in self.args.items():
        +308            if type(vs) is list:
        +309                for v in vs:
        +310                    if hasattr(v, "parent"):
        +311                        yield k, v
        +312            else:
        +313                if hasattr(vs, "parent"):
        +314                    yield k, vs
        +
        + + +

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

        +
        + +
        @@ -8961,18 +9112,18 @@ for args that are strings or leaf Expression instances, such as identifiers and
        -
        299    def find(self, *expression_types: t.Type[E], bfs=True) -> E | None:
        -300        """
        -301        Returns the first node in this tree which matches at least one of
        -302        the specified types.
        -303
        -304        Args:
        -305            expression_types (type): the expression type(s) to match.
        -306
        -307        Returns:
        -308            The node which matches the criteria or None if no such node was found.
        -309        """
        -310        return next(self.find_all(*expression_types, bfs=bfs), None)
        +            
        316    def find(self, *expression_types: t.Type[E], bfs=True) -> E | None:
        +317        """
        +318        Returns the first node in this tree which matches at least one of
        +319        the specified types.
        +320
        +321        Args:
        +322            expression_types: the expression type(s) to match.
        +323
        +324        Returns:
        +325            The node which matches the criteria or None if no such node was found.
        +326        """
        +327        return next(self.find_all(*expression_types, bfs=bfs), None)
         
        @@ -8982,7 +9133,7 @@ the specified types.

        Arguments:
          -
        • expression_types (type): the expression type(s) to match.
        • +
        • expression_types: the expression type(s) to match.
        Returns:
        @@ -9005,20 +9156,20 @@ the specified types.

        -
        312    def find_all(self, *expression_types: t.Type[E], bfs=True) -> t.Iterator[E]:
        -313        """
        -314        Returns a generator object which visits all nodes in this tree and only
        -315        yields those that match at least one of the specified expression types.
        -316
        -317        Args:
        -318            expression_types (type): the expression type(s) to match.
        -319
        -320        Returns:
        -321            The generator object.
        -322        """
        -323        for expression, _, _ in self.walk(bfs=bfs):
        -324            if isinstance(expression, expression_types):
        -325                yield expression
        +            
        329    def find_all(self, *expression_types: t.Type[E], bfs=True) -> t.Iterator[E]:
        +330        """
        +331        Returns a generator object which visits all nodes in this tree and only
        +332        yields those that match at least one of the specified expression types.
        +333
        +334        Args:
        +335            expression_types: the expression type(s) to match.
        +336
        +337        Returns:
        +338            The generator object.
        +339        """
        +340        for expression, *_ in self.walk(bfs=bfs):
        +341            if isinstance(expression, expression_types):
        +342                yield expression
         
        @@ -9028,7 +9179,7 @@ yields those that match at least one of the specified expression types.

        Arguments:
          -
        • expression_types (type): the expression type(s) to match.
        • +
        • expression_types: the expression type(s) to match.
        Returns:
        @@ -9051,21 +9202,20 @@ yields those that match at least one of the specified expression types.

        -
        327    def find_ancestor(self, *expression_types: t.Type[E]) -> E | None:
        -328        """
        -329        Returns a nearest parent matching expression_types.
        -330
        -331        Args:
        -332            expression_types (type): the expression type(s) to match.
        -333
        -334        Returns:
        -335            The parent node.
        -336        """
        -337        ancestor = self.parent
        -338        while ancestor and not isinstance(ancestor, expression_types):
        -339            ancestor = ancestor.parent
        -340        # ignore type because mypy doesn't know that we're checking type in the loop
        -341        return ancestor  # type: ignore[return-value]
        +            
        344    def find_ancestor(self, *expression_types: t.Type[E]) -> E | None:
        +345        """
        +346        Returns a nearest parent matching expression_types.
        +347
        +348        Args:
        +349            expression_types: the expression type(s) to match.
        +350
        +351        Returns:
        +352            The parent node.
        +353        """
        +354        ancestor = self.parent
        +355        while ancestor and not isinstance(ancestor, expression_types):
        +356            ancestor = ancestor.parent
        +357        return t.cast(E, ancestor)
         
        @@ -9074,7 +9224,7 @@ yields those that match at least one of the specified expression types.

        Arguments:
          -
        • expression_types (type): the expression type(s) to match.
        • +
        • expression_types: the expression type(s) to match.
        Returns:
        @@ -9098,6 +9248,19 @@ yields those that match at least one of the specified expression types.

        + +
        +
        + same_parent + + +
        + + +

        Returns if the parent is the same class as itself.

        +
        + +
        @@ -9110,14 +9273,14 @@ yields those that match at least one of the specified expression types.

        -
        350    def root(self) -> Expression:
        -351        """
        -352        Returns the root expression of this tree.
        -353        """
        -354        expression = self
        -355        while expression.parent:
        -356            expression = expression.parent
        -357        return expression
        +            
        371    def root(self) -> Expression:
        +372        """
        +373        Returns the root expression of this tree.
        +374        """
        +375        expression = self
        +376        while expression.parent:
        +377            expression = expression.parent
        +378        return expression
         
        @@ -9137,23 +9300,23 @@ yields those that match at least one of the specified expression types.

        -
        359    def walk(self, bfs=True, prune=None):
        -360        """
        -361        Returns a generator object which visits all nodes in this tree.
        -362
        -363        Args:
        -364            bfs (bool): if set to True the BFS traversal order will be applied,
        -365                otherwise the DFS traversal will be used instead.
        -366            prune ((node, parent, arg_key) -> bool): callable that returns True if
        -367                the generator should stop traversing this branch of the tree.
        -368
        -369        Returns:
        -370            the generator object.
        -371        """
        -372        if bfs:
        -373            yield from self.bfs(prune=prune)
        -374        else:
        -375            yield from self.dfs(prune=prune)
        +            
        380    def walk(self, bfs=True, prune=None):
        +381        """
        +382        Returns a generator object which visits all nodes in this tree.
        +383
        +384        Args:
        +385            bfs (bool): if set to True the BFS traversal order will be applied,
        +386                otherwise the DFS traversal will be used instead.
        +387            prune ((node, parent, arg_key) -> bool): callable that returns True if
        +388                the generator should stop traversing this branch of the tree.
        +389
        +390        Returns:
        +391            the generator object.
        +392        """
        +393        if bfs:
        +394            yield from self.bfs(prune=prune)
        +395        else:
        +396            yield from self.dfs(prune=prune)
         
        @@ -9188,23 +9351,21 @@ the generator should stop traversing this branch of the tree.
        -
        377    def dfs(self, parent=None, key=None, prune=None):
        -378        """
        -379        Returns a generator object which visits all nodes in this tree in
        -380        the DFS (Depth-first) order.
        -381
        -382        Returns:
        -383            The generator object.
        -384        """
        -385        parent = parent or self.parent
        -386        yield self, parent, key
        -387        if prune and prune(self, parent, key):
        -388            return
        -389
        -390        for k, v in self.args.items():
        -391            for node in ensure_collection(v):
        -392                if isinstance(node, Expression):
        -393                    yield from node.dfs(self, k, prune)
        +            
        398    def dfs(self, parent=None, key=None, prune=None):
        +399        """
        +400        Returns a generator object which visits all nodes in this tree in
        +401        the DFS (Depth-first) order.
        +402
        +403        Returns:
        +404            The generator object.
        +405        """
        +406        parent = parent or self.parent
        +407        yield self, parent, key
        +408        if prune and prune(self, parent, key):
        +409            return
        +410
        +411        for k, v in self.iter_expressions():
        +412            yield from v.dfs(self, k, prune)
         
        @@ -9231,28 +9392,25 @@ the DFS (Depth-first) order.

        -
        395    def bfs(self, prune=None):
        -396        """
        -397        Returns a generator object which visits all nodes in this tree in
        -398        the BFS (Breadth-first) order.
        -399
        -400        Returns:
        -401            The generator object.
        -402        """
        -403        queue = deque([(self, self.parent, None)])
        -404
        -405        while queue:
        -406            item, parent, key = queue.popleft()
        -407
        -408            yield item, parent, key
        -409            if prune and prune(item, parent, key):
        -410                continue
        -411
        -412            if isinstance(item, Expression):
        -413                for k, v in item.args.items():
        -414                    for node in ensure_collection(v):
        -415                        if isinstance(node, Expression):
        -416                            queue.append((node, item, k))
        +            
        414    def bfs(self, prune=None):
        +415        """
        +416        Returns a generator object which visits all nodes in this tree in
        +417        the BFS (Breadth-first) order.
        +418
        +419        Returns:
        +420            The generator object.
        +421        """
        +422        queue = deque([(self, self.parent, None)])
        +423
        +424        while queue:
        +425            item, parent, key = queue.popleft()
        +426
        +427            yield item, parent, key
        +428            if prune and prune(item, parent, key):
        +429                continue
        +430
        +431            for k, v in item.iter_expressions():
        +432                queue.append((v, item, k))
         
        @@ -9279,14 +9437,14 @@ the BFS (Breadth-first) order.

        -
        418    def unnest(self):
        -419        """
        -420        Returns the first non parenthesis child or self.
        -421        """
        -422        expression = self
        -423        while isinstance(expression, Paren):
        -424            expression = expression.this
        -425        return expression
        +            
        434    def unnest(self):
        +435        """
        +436        Returns the first non parenthesis child or self.
        +437        """
        +438        expression = self
        +439        while type(expression) is Paren:
        +440            expression = expression.this
        +441        return expression
         
        @@ -9306,13 +9464,13 @@ the BFS (Breadth-first) order.

        -
        427    def unalias(self):
        -428        """
        -429        Returns the inner expression if this is an Alias.
        -430        """
        -431        if isinstance(self, Alias):
        -432            return self.this
        -433        return self
        +            
        443    def unalias(self):
        +444        """
        +445        Returns the inner expression if this is an Alias.
        +446        """
        +447        if isinstance(self, Alias):
        +448            return self.this
        +449        return self
         
        @@ -9332,11 +9490,11 @@ the BFS (Breadth-first) order.

        -
        435    def unnest_operands(self):
        -436        """
        -437        Returns unnested operands as a tuple.
        -438        """
        -439        return tuple(arg.unnest() for arg in self.args.values() if arg)
        +            
        451    def unnest_operands(self):
        +452        """
        +453        Returns unnested operands as a tuple.
        +454        """
        +455        return tuple(arg.unnest() for _, arg in self.iter_expressions())
         
        @@ -9356,15 +9514,15 @@ the BFS (Breadth-first) order.

        -
        441    def flatten(self, unnest=True):
        -442        """
        -443        Returns a generator which yields child nodes who's parents are the same class.
        -444
        -445        A AND B AND C -> [A, B, C]
        -446        """
        -447        for node, _, _ in self.dfs(prune=lambda n, p, *_: p and not isinstance(n, self.__class__)):
        -448            if not isinstance(node, self.__class__):
        -449                yield node.unnest() if unnest else node
        +            
        457    def flatten(self, unnest=True):
        +458        """
        +459        Returns a generator which yields child nodes who's parents are the same class.
        +460
        +461        A AND B AND C -> [A, B, C]
        +462        """
        +463        for node, _, _ in self.dfs(prune=lambda n, p, *_: p and not type(n) is self.__class__):
        +464            if not type(node) is self.__class__:
        +465                yield node.unnest() if unnest else node
         
        @@ -9386,20 +9544,20 @@ the BFS (Breadth-first) order.

        -
        457    def sql(self, dialect: DialectType = None, **opts) -> str:
        -458        """
        -459        Returns SQL string representation of this tree.
        -460
        -461        Args:
        -462            dialect: the dialect of the output SQL string (eg. "spark", "hive", "presto", "mysql").
        -463            opts: other `sqlglot.generator.Generator` options.
        -464
        -465        Returns:
        -466            The SQL string.
        -467        """
        -468        from sqlglot.dialects import Dialect
        -469
        -470        return Dialect.get_or_raise(dialect)().generate(self, **opts)
        +            
        473    def sql(self, dialect: DialectType = None, **opts) -> str:
        +474        """
        +475        Returns SQL string representation of this tree.
        +476
        +477        Args:
        +478            dialect: the dialect of the output SQL string (eg. "spark", "hive", "presto", "mysql").
        +479            opts: other `sqlglot.generator.Generator` options.
        +480
        +481        Returns:
        +482            The SQL string.
        +483        """
        +484        from sqlglot.dialects import Dialect
        +485
        +486        return Dialect.get_or_raise(dialect)().generate(self, **opts)
         
        @@ -9432,32 +9590,32 @@ the BFS (Breadth-first) order.

        -
        496    def transform(self, fun, *args, copy=True, **kwargs):
        -497        """
        -498        Recursively visits all tree nodes (excluding already transformed ones)
        -499        and applies the given transformation function to each node.
        -500
        -501        Args:
        -502            fun (function): a function which takes a node as an argument and returns a
        -503                new transformed node or the same node without modifications. If the function
        -504                returns None, then the corresponding node will be removed from the syntax tree.
        -505            copy (bool): if set to True a new tree instance is constructed, otherwise the tree is
        -506                modified in place.
        -507
        -508        Returns:
        -509            The transformed tree.
        -510        """
        -511        node = self.copy() if copy else self
        -512        new_node = fun(node, *args, **kwargs)
        -513
        -514        if new_node is None or not isinstance(new_node, Expression):
        -515            return new_node
        -516        if new_node is not node:
        -517            new_node.parent = node.parent
        -518            return new_node
        -519
        -520        replace_children(new_node, lambda child: child.transform(fun, *args, copy=False, **kwargs))
        -521        return new_node
        +            
        512    def transform(self, fun, *args, copy=True, **kwargs):
        +513        """
        +514        Recursively visits all tree nodes (excluding already transformed ones)
        +515        and applies the given transformation function to each node.
        +516
        +517        Args:
        +518            fun (function): a function which takes a node as an argument and returns a
        +519                new transformed node or the same node without modifications. If the function
        +520                returns None, then the corresponding node will be removed from the syntax tree.
        +521            copy (bool): if set to True a new tree instance is constructed, otherwise the tree is
        +522                modified in place.
        +523
        +524        Returns:
        +525            The transformed tree.
        +526        """
        +527        node = self.copy() if copy else self
        +528        new_node = fun(node, *args, **kwargs)
        +529
        +530        if new_node is None or not isinstance(new_node, Expression):
        +531            return new_node
        +532        if new_node is not node:
        +533            new_node.parent = node.parent
        +534            return new_node
        +535
        +536        replace_children(new_node, lambda child: child.transform(fun, *args, copy=False, **kwargs))
        +537        return new_node
         
        @@ -9494,32 +9652,32 @@ modified in place.
        -
        523    def replace(self, expression):
        -524        """
        -525        Swap out this expression with a new expression.
        -526
        -527        For example::
        -528
        -529            >>> tree = Select().select("x").from_("tbl")
        -530            >>> tree.find(Column).replace(Column(this="y"))
        -531            (COLUMN this: y)
        -532            >>> tree.sql()
        -533            'SELECT y FROM tbl'
        -534
        -535        Args:
        -536            expression (Expression|None): new node
        -537
        -538        Returns:
        -539            The new expression or expressions.
        -540        """
        -541        if not self.parent:
        -542            return expression
        -543
        -544        parent = self.parent
        -545        self.parent = None
        -546
        -547        replace_children(parent, lambda child: expression if child is self else child)
        -548        return expression
        +            
        539    def replace(self, expression):
        +540        """
        +541        Swap out this expression with a new expression.
        +542
        +543        For example::
        +544
        +545            >>> tree = Select().select("x").from_("tbl")
        +546            >>> tree.find(Column).replace(Column(this="y"))
        +547            (COLUMN this: y)
        +548            >>> tree.sql()
        +549            'SELECT y FROM tbl'
        +550
        +551        Args:
        +552            expression (Expression|None): new node
        +553
        +554        Returns:
        +555            The new expression or expressions.
        +556        """
        +557        if not self.parent:
        +558            return expression
        +559
        +560        parent = self.parent
        +561        self.parent = None
        +562
        +563        replace_children(parent, lambda child: expression if child is self else child)
        +564        return expression
         
        @@ -9560,15 +9718,15 @@ modified in place.
        -
        550    def pop(self):
        -551        """
        -552        Remove this expression from its AST.
        -553
        -554        Returns:
        -555            The popped expression.
        -556        """
        -557        self.replace(None)
        -558        return self
        +            
        566    def pop(self):
        +567        """
        +568        Remove this expression from its AST.
        +569
        +570        Returns:
        +571            The popped expression.
        +572        """
        +573        self.replace(None)
        +574        return self
         
        @@ -9594,22 +9752,22 @@ modified in place.
        -
        560    def assert_is(self, type_):
        -561        """
        -562        Assert that this `Expression` is an instance of `type_`.
        -563
        -564        If it is NOT an instance of `type_`, this raises an assertion error.
        -565        Otherwise, this returns this expression.
        -566
        -567        Examples:
        -568            This is useful for type security in chained expressions:
        -569
        -570            >>> import sqlglot
        -571            >>> sqlglot.parse_one("SELECT x from y").assert_is(Select).select("z").sql()
        -572            'SELECT x, z FROM y'
        -573        """
        -574        assert isinstance(self, type_)
        -575        return self
        +            
        576    def assert_is(self, type_):
        +577        """
        +578        Assert that this `Expression` is an instance of `type_`.
        +579
        +580        If it is NOT an instance of `type_`, this raises an assertion error.
        +581        Otherwise, this returns this expression.
        +582
        +583        Examples:
        +584            This is useful for type security in chained expressions:
        +585
        +586            >>> import sqlglot
        +587            >>> sqlglot.parse_one("SELECT x from y").assert_is(Select).select("z").sql()
        +588            'SELECT x, z FROM y'
        +589        """
        +590        assert isinstance(self, type_)
        +591        return self
         
        @@ -9645,39 +9803,39 @@ Otherwise, this returns this expression.

        -
        577    def error_messages(self, args: t.Optional[t.Sequence] = None) -> t.List[str]:
        -578        """
        -579        Checks if this expression is valid (e.g. all mandatory args are set).
        -580
        -581        Args:
        -582            args: a sequence of values that were used to instantiate a Func expression. This is used
        -583                to check that the provided arguments don't exceed the function argument limit.
        -584
        -585        Returns:
        -586            A list of error messages for all possible errors that were found.
        -587        """
        -588        errors: t.List[str] = []
        -589
        -590        for k in self.args:
        -591            if k not in self.arg_types:
        -592                errors.append(f"Unexpected keyword: '{k}' for {self.__class__}")
        -593        for k, mandatory in self.arg_types.items():
        -594            v = self.args.get(k)
        -595            if mandatory and (v is None or (isinstance(v, list) and not v)):
        -596                errors.append(f"Required keyword: '{k}' missing for {self.__class__}")
        -597
        -598        if (
        -599            args
        -600            and isinstance(self, Func)
        -601            and len(args) > len(self.arg_types)
        -602            and not self.is_var_len_args
        -603        ):
        -604            errors.append(
        -605                f"The number of provided arguments ({len(args)}) is greater than "
        -606                f"the maximum number of supported arguments ({len(self.arg_types)})"
        -607            )
        -608
        -609        return errors
        +            
        593    def error_messages(self, args: t.Optional[t.Sequence] = None) -> t.List[str]:
        +594        """
        +595        Checks if this expression is valid (e.g. all mandatory args are set).
        +596
        +597        Args:
        +598            args: a sequence of values that were used to instantiate a Func expression. This is used
        +599                to check that the provided arguments don't exceed the function argument limit.
        +600
        +601        Returns:
        +602            A list of error messages for all possible errors that were found.
        +603        """
        +604        errors: t.List[str] = []
        +605
        +606        for k in self.args:
        +607            if k not in self.arg_types:
        +608                errors.append(f"Unexpected keyword: '{k}' for {self.__class__}")
        +609        for k, mandatory in self.arg_types.items():
        +610            v = self.args.get(k)
        +611            if mandatory and (v is None or (isinstance(v, list) and not v)):
        +612                errors.append(f"Required keyword: '{k}' missing for {self.__class__}")
        +613
        +614        if (
        +615            args
        +616            and isinstance(self, Func)
        +617            and len(args) > len(self.arg_types)
        +618            and not self.is_var_len_args
        +619        ):
        +620            errors.append(
        +621                f"The number of provided arguments ({len(args)}) is greater than "
        +622                f"the maximum number of supported arguments ({len(self.arg_types)})"
        +623            )
        +624
        +625        return errors
         
        @@ -9710,13 +9868,13 @@ to check that the provided arguments don't exceed the function argument limit. -
        611    def dump(self):
        -612        """
        -613        Dump this Expression to a JSON-serializable dict.
        -614        """
        -615        from sqlglot.serde import dump
        -616
        -617        return dump(self)
        +            
        627    def dump(self):
        +628        """
        +629        Dump this Expression to a JSON-serializable dict.
        +630        """
        +631        from sqlglot.serde import dump
        +632
        +633        return dump(self)
         
        @@ -9737,14 +9895,14 @@ to check that the provided arguments don't exceed the function argument limit. -
        619    @classmethod
        -620    def load(cls, obj):
        -621        """
        -622        Load a dict (as returned by `Expression.dump`) into an Expression instance.
        -623        """
        -624        from sqlglot.serde import load
        -625
        -626        return load(obj)
        +            
        635    @classmethod
        +636    def load(cls, obj):
        +637        """
        +638        Load a dict (as returned by `Expression.dump`) into an Expression instance.
        +639        """
        +640        from sqlglot.serde import load
        +641
        +642        return load(obj)
         
        @@ -9765,57 +9923,57 @@ to check that the provided arguments don't exceed the function argument limit. -
        637class Condition(Expression):
        -638    def and_(self, *expressions, dialect=None, **opts):
        -639        """
        -640        AND this condition with one or multiple expressions.
        -641
        -642        Example:
        -643            >>> condition("x=1").and_("y=1").sql()
        -644            'x = 1 AND y = 1'
        -645
        -646        Args:
        -647            *expressions (str | Expression): the SQL code strings to parse.
        -648                If an `Expression` instance is passed, it will be used as-is.
        -649            dialect (str): the dialect used to parse the input expression.
        -650            opts (kwargs): other options to use to parse the input expressions.
        -651
        -652        Returns:
        -653            And: the new condition.
        -654        """
        -655        return and_(self, *expressions, dialect=dialect, **opts)
        -656
        -657    def or_(self, *expressions, dialect=None, **opts):
        -658        """
        -659        OR this condition with one or multiple expressions.
        -660
        -661        Example:
        -662            >>> condition("x=1").or_("y=1").sql()
        -663            'x = 1 OR y = 1'
        -664
        -665        Args:
        -666            *expressions (str | Expression): the SQL code strings to parse.
        -667                If an `Expression` instance is passed, it will be used as-is.
        -668            dialect (str): the dialect used to parse the input expression.
        -669            opts (kwargs): other options to use to parse the input expressions.
        -670
        -671        Returns:
        -672            Or: the new condition.
        -673        """
        -674        return or_(self, *expressions, dialect=dialect, **opts)
        -675
        -676    def not_(self):
        -677        """
        -678        Wrap this condition with NOT.
        -679
        -680        Example:
        -681            >>> condition("x=1").not_().sql()
        -682            'NOT x = 1'
        -683
        -684        Returns:
        -685            Not: the new condition.
        -686        """
        -687        return not_(self)
        +            
        653class Condition(Expression):
        +654    def and_(self, *expressions, dialect=None, **opts):
        +655        """
        +656        AND this condition with one or multiple expressions.
        +657
        +658        Example:
        +659            >>> condition("x=1").and_("y=1").sql()
        +660            'x = 1 AND y = 1'
        +661
        +662        Args:
        +663            *expressions (str | Expression): the SQL code strings to parse.
        +664                If an `Expression` instance is passed, it will be used as-is.
        +665            dialect (str): the dialect used to parse the input expression.
        +666            opts (kwargs): other options to use to parse the input expressions.
        +667
        +668        Returns:
        +669            And: the new condition.
        +670        """
        +671        return and_(self, *expressions, dialect=dialect, **opts)
        +672
        +673    def or_(self, *expressions, dialect=None, **opts):
        +674        """
        +675        OR this condition with one or multiple expressions.
        +676
        +677        Example:
        +678            >>> condition("x=1").or_("y=1").sql()
        +679            'x = 1 OR y = 1'
        +680
        +681        Args:
        +682            *expressions (str | Expression): the SQL code strings to parse.
        +683                If an `Expression` instance is passed, it will be used as-is.
        +684            dialect (str): the dialect used to parse the input expression.
        +685            opts (kwargs): other options to use to parse the input expressions.
        +686
        +687        Returns:
        +688            Or: the new condition.
        +689        """
        +690        return or_(self, *expressions, dialect=dialect, **opts)
        +691
        +692    def not_(self):
        +693        """
        +694        Wrap this condition with NOT.
        +695
        +696        Example:
        +697            >>> condition("x=1").not_().sql()
        +698            'NOT x = 1'
        +699
        +700        Returns:
        +701            Not: the new condition.
        +702        """
        +703        return not_(self)
         
        @@ -9832,24 +9990,24 @@ to check that the provided arguments don't exceed the function argument limit. -
        638    def and_(self, *expressions, dialect=None, **opts):
        -639        """
        -640        AND this condition with one or multiple expressions.
        -641
        -642        Example:
        -643            >>> condition("x=1").and_("y=1").sql()
        -644            'x = 1 AND y = 1'
        -645
        -646        Args:
        -647            *expressions (str | Expression): the SQL code strings to parse.
        -648                If an `Expression` instance is passed, it will be used as-is.
        -649            dialect (str): the dialect used to parse the input expression.
        -650            opts (kwargs): other options to use to parse the input expressions.
        -651
        -652        Returns:
        -653            And: the new condition.
        -654        """
        -655        return and_(self, *expressions, dialect=dialect, **opts)
        +            
        654    def and_(self, *expressions, dialect=None, **opts):
        +655        """
        +656        AND this condition with one or multiple expressions.
        +657
        +658        Example:
        +659            >>> condition("x=1").and_("y=1").sql()
        +660            'x = 1 AND y = 1'
        +661
        +662        Args:
        +663            *expressions (str | Expression): the SQL code strings to parse.
        +664                If an `Expression` instance is passed, it will be used as-is.
        +665            dialect (str): the dialect used to parse the input expression.
        +666            opts (kwargs): other options to use to parse the input expressions.
        +667
        +668        Returns:
        +669            And: the new condition.
        +670        """
        +671        return and_(self, *expressions, dialect=dialect, **opts)
         
        @@ -9894,24 +10052,24 @@ If an Expression instance is passed, it w
        -
        657    def or_(self, *expressions, dialect=None, **opts):
        -658        """
        -659        OR this condition with one or multiple expressions.
        -660
        -661        Example:
        -662            >>> condition("x=1").or_("y=1").sql()
        -663            'x = 1 OR y = 1'
        -664
        -665        Args:
        -666            *expressions (str | Expression): the SQL code strings to parse.
        -667                If an `Expression` instance is passed, it will be used as-is.
        -668            dialect (str): the dialect used to parse the input expression.
        -669            opts (kwargs): other options to use to parse the input expressions.
        -670
        -671        Returns:
        -672            Or: the new condition.
        -673        """
        -674        return or_(self, *expressions, dialect=dialect, **opts)
        +            
        673    def or_(self, *expressions, dialect=None, **opts):
        +674        """
        +675        OR this condition with one or multiple expressions.
        +676
        +677        Example:
        +678            >>> condition("x=1").or_("y=1").sql()
        +679            'x = 1 OR y = 1'
        +680
        +681        Args:
        +682            *expressions (str | Expression): the SQL code strings to parse.
        +683                If an `Expression` instance is passed, it will be used as-is.
        +684            dialect (str): the dialect used to parse the input expression.
        +685            opts (kwargs): other options to use to parse the input expressions.
        +686
        +687        Returns:
        +688            Or: the new condition.
        +689        """
        +690        return or_(self, *expressions, dialect=dialect, **opts)
         
        @@ -9956,18 +10114,18 @@ If an Expression instance is passed, it w
        -
        676    def not_(self):
        -677        """
        -678        Wrap this condition with NOT.
        -679
        -680        Example:
        -681            >>> condition("x=1").not_().sql()
        -682            'NOT x = 1'
        -683
        -684        Returns:
        -685            Not: the new condition.
        -686        """
        -687        return not_(self)
        +            
        692    def not_(self):
        +693        """
        +694        Wrap this condition with NOT.
        +695
        +696        Example:
        +697            >>> condition("x=1").not_().sql()
        +698            'NOT x = 1'
        +699
        +700        Returns:
        +701            Not: the new condition.
        +702        """
        +703        return not_(self)
         
        @@ -10011,10 +10169,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -10047,8 +10207,8 @@ If an Expression instance is passed, it w
        -
        690class Predicate(Condition):
        -691    """Relationships like x = y, x > 1, x >= y."""
        +            
        706class Predicate(Condition):
        +707    """Relationships like x = y, x > 1, x >= y."""
         
        @@ -10075,10 +10235,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -10117,26 +10279,26 @@ If an Expression instance is passed, it w
        -
        694class DerivedTable(Expression):
        -695    @property
        -696    def alias_column_names(self):
        -697        table_alias = self.args.get("alias")
        -698        if not table_alias:
        -699            return []
        -700        column_list = table_alias.assert_is(TableAlias).args.get("columns") or []
        -701        return [c.name for c in column_list]
        -702
        -703    @property
        -704    def selects(self):
        -705        alias = self.args.get("alias")
        -706
        -707        if alias:
        -708            return alias.columns
        -709        return []
        -710
        +            
        710class DerivedTable(Expression):
         711    @property
        -712    def named_selects(self):
        -713        return [select.output_name for select in self.selects]
        +712    def alias_column_names(self):
        +713        table_alias = self.args.get("alias")
        +714        if not table_alias:
        +715            return []
        +716        column_list = table_alias.assert_is(TableAlias).args.get("columns") or []
        +717        return [c.name for c in column_list]
        +718
        +719    @property
        +720    def selects(self):
        +721        alias = self.args.get("alias")
        +722
        +723        if alias:
        +724            return alias.columns
        +725        return []
        +726
        +727    @property
        +728    def named_selects(self):
        +729        return [select.output_name for select in self.selects]
         
        @@ -10161,10 +10323,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -10197,66 +10361,66 @@ If an Expression instance is passed, it w
        -
        716class Unionable(Expression):
        -717    def union(self, expression, distinct=True, dialect=None, **opts):
        -718        """
        -719        Builds a UNION expression.
        -720
        -721        Example:
        -722            >>> import sqlglot
        -723            >>> sqlglot.parse_one("SELECT * FROM foo").union("SELECT * FROM bla").sql()
        -724            'SELECT * FROM foo UNION SELECT * FROM bla'
        -725
        -726        Args:
        -727            expression (str | Expression): the SQL code string.
        -728                If an `Expression` instance is passed, it will be used as-is.
        -729            distinct (bool): set the DISTINCT flag if and only if this is true.
        -730            dialect (str): the dialect used to parse the input expression.
        -731            opts (kwargs): other options to use to parse the input expressions.
        -732        Returns:
        -733            Union: the Union expression.
        -734        """
        -735        return union(left=self, right=expression, distinct=distinct, dialect=dialect, **opts)
        +            
        732class Unionable(Expression):
        +733    def union(self, expression, distinct=True, dialect=None, **opts):
        +734        """
        +735        Builds a UNION expression.
         736
        -737    def intersect(self, expression, distinct=True, dialect=None, **opts):
        -738        """
        -739        Builds an INTERSECT expression.
        -740
        -741        Example:
        -742            >>> import sqlglot
        -743            >>> sqlglot.parse_one("SELECT * FROM foo").intersect("SELECT * FROM bla").sql()
        -744            'SELECT * FROM foo INTERSECT SELECT * FROM bla'
        -745
        -746        Args:
        -747            expression (str | Expression): the SQL code string.
        -748                If an `Expression` instance is passed, it will be used as-is.
        -749            distinct (bool): set the DISTINCT flag if and only if this is true.
        -750            dialect (str): the dialect used to parse the input expression.
        -751            opts (kwargs): other options to use to parse the input expressions.
        -752        Returns:
        -753            Intersect: the Intersect expression
        -754        """
        -755        return intersect(left=self, right=expression, distinct=distinct, dialect=dialect, **opts)
        +737        Example:
        +738            >>> import sqlglot
        +739            >>> sqlglot.parse_one("SELECT * FROM foo").union("SELECT * FROM bla").sql()
        +740            'SELECT * FROM foo UNION SELECT * FROM bla'
        +741
        +742        Args:
        +743            expression (str | Expression): the SQL code string.
        +744                If an `Expression` instance is passed, it will be used as-is.
        +745            distinct (bool): set the DISTINCT flag if and only if this is true.
        +746            dialect (str): the dialect used to parse the input expression.
        +747            opts (kwargs): other options to use to parse the input expressions.
        +748        Returns:
        +749            Union: the Union expression.
        +750        """
        +751        return union(left=self, right=expression, distinct=distinct, dialect=dialect, **opts)
        +752
        +753    def intersect(self, expression, distinct=True, dialect=None, **opts):
        +754        """
        +755        Builds an INTERSECT expression.
         756
        -757    def except_(self, expression, distinct=True, dialect=None, **opts):
        -758        """
        -759        Builds an EXCEPT expression.
        -760
        -761        Example:
        -762            >>> import sqlglot
        -763            >>> sqlglot.parse_one("SELECT * FROM foo").except_("SELECT * FROM bla").sql()
        -764            'SELECT * FROM foo EXCEPT SELECT * FROM bla'
        -765
        -766        Args:
        -767            expression (str | Expression): the SQL code string.
        -768                If an `Expression` instance is passed, it will be used as-is.
        -769            distinct (bool): set the DISTINCT flag if and only if this is true.
        -770            dialect (str): the dialect used to parse the input expression.
        -771            opts (kwargs): other options to use to parse the input expressions.
        -772        Returns:
        -773            Except: the Except expression
        -774        """
        -775        return except_(left=self, right=expression, distinct=distinct, dialect=dialect, **opts)
        +757        Example:
        +758            >>> import sqlglot
        +759            >>> sqlglot.parse_one("SELECT * FROM foo").intersect("SELECT * FROM bla").sql()
        +760            'SELECT * FROM foo INTERSECT SELECT * FROM bla'
        +761
        +762        Args:
        +763            expression (str | Expression): the SQL code string.
        +764                If an `Expression` instance is passed, it will be used as-is.
        +765            distinct (bool): set the DISTINCT flag if and only if this is true.
        +766            dialect (str): the dialect used to parse the input expression.
        +767            opts (kwargs): other options to use to parse the input expressions.
        +768        Returns:
        +769            Intersect: the Intersect expression
        +770        """
        +771        return intersect(left=self, right=expression, distinct=distinct, dialect=dialect, **opts)
        +772
        +773    def except_(self, expression, distinct=True, dialect=None, **opts):
        +774        """
        +775        Builds an EXCEPT expression.
        +776
        +777        Example:
        +778            >>> import sqlglot
        +779            >>> sqlglot.parse_one("SELECT * FROM foo").except_("SELECT * FROM bla").sql()
        +780            'SELECT * FROM foo EXCEPT SELECT * FROM bla'
        +781
        +782        Args:
        +783            expression (str | Expression): the SQL code string.
        +784                If an `Expression` instance is passed, it will be used as-is.
        +785            distinct (bool): set the DISTINCT flag if and only if this is true.
        +786            dialect (str): the dialect used to parse the input expression.
        +787            opts (kwargs): other options to use to parse the input expressions.
        +788        Returns:
        +789            Except: the Except expression
        +790        """
        +791        return except_(left=self, right=expression, distinct=distinct, dialect=dialect, **opts)
         
        @@ -10273,25 +10437,25 @@ If an Expression instance is passed, it w
        -
        717    def union(self, expression, distinct=True, dialect=None, **opts):
        -718        """
        -719        Builds a UNION expression.
        -720
        -721        Example:
        -722            >>> import sqlglot
        -723            >>> sqlglot.parse_one("SELECT * FROM foo").union("SELECT * FROM bla").sql()
        -724            'SELECT * FROM foo UNION SELECT * FROM bla'
        -725
        -726        Args:
        -727            expression (str | Expression): the SQL code string.
        -728                If an `Expression` instance is passed, it will be used as-is.
        -729            distinct (bool): set the DISTINCT flag if and only if this is true.
        -730            dialect (str): the dialect used to parse the input expression.
        -731            opts (kwargs): other options to use to parse the input expressions.
        -732        Returns:
        -733            Union: the Union expression.
        -734        """
        -735        return union(left=self, right=expression, distinct=distinct, dialect=dialect, **opts)
        +            
        733    def union(self, expression, distinct=True, dialect=None, **opts):
        +734        """
        +735        Builds a UNION expression.
        +736
        +737        Example:
        +738            >>> import sqlglot
        +739            >>> sqlglot.parse_one("SELECT * FROM foo").union("SELECT * FROM bla").sql()
        +740            'SELECT * FROM foo UNION SELECT * FROM bla'
        +741
        +742        Args:
        +743            expression (str | Expression): the SQL code string.
        +744                If an `Expression` instance is passed, it will be used as-is.
        +745            distinct (bool): set the DISTINCT flag if and only if this is true.
        +746            dialect (str): the dialect used to parse the input expression.
        +747            opts (kwargs): other options to use to parse the input expressions.
        +748        Returns:
        +749            Union: the Union expression.
        +750        """
        +751        return union(left=self, right=expression, distinct=distinct, dialect=dialect, **opts)
         
        @@ -10338,25 +10502,25 @@ If an Expression instance is passed, it w
        -
        737    def intersect(self, expression, distinct=True, dialect=None, **opts):
        -738        """
        -739        Builds an INTERSECT expression.
        -740
        -741        Example:
        -742            >>> import sqlglot
        -743            >>> sqlglot.parse_one("SELECT * FROM foo").intersect("SELECT * FROM bla").sql()
        -744            'SELECT * FROM foo INTERSECT SELECT * FROM bla'
        -745
        -746        Args:
        -747            expression (str | Expression): the SQL code string.
        -748                If an `Expression` instance is passed, it will be used as-is.
        -749            distinct (bool): set the DISTINCT flag if and only if this is true.
        -750            dialect (str): the dialect used to parse the input expression.
        -751            opts (kwargs): other options to use to parse the input expressions.
        -752        Returns:
        -753            Intersect: the Intersect expression
        -754        """
        -755        return intersect(left=self, right=expression, distinct=distinct, dialect=dialect, **opts)
        +            
        753    def intersect(self, expression, distinct=True, dialect=None, **opts):
        +754        """
        +755        Builds an INTERSECT expression.
        +756
        +757        Example:
        +758            >>> import sqlglot
        +759            >>> sqlglot.parse_one("SELECT * FROM foo").intersect("SELECT * FROM bla").sql()
        +760            'SELECT * FROM foo INTERSECT SELECT * FROM bla'
        +761
        +762        Args:
        +763            expression (str | Expression): the SQL code string.
        +764                If an `Expression` instance is passed, it will be used as-is.
        +765            distinct (bool): set the DISTINCT flag if and only if this is true.
        +766            dialect (str): the dialect used to parse the input expression.
        +767            opts (kwargs): other options to use to parse the input expressions.
        +768        Returns:
        +769            Intersect: the Intersect expression
        +770        """
        +771        return intersect(left=self, right=expression, distinct=distinct, dialect=dialect, **opts)
         
        @@ -10403,25 +10567,25 @@ If an Expression instance is passed, it w
        -
        757    def except_(self, expression, distinct=True, dialect=None, **opts):
        -758        """
        -759        Builds an EXCEPT expression.
        -760
        -761        Example:
        -762            >>> import sqlglot
        -763            >>> sqlglot.parse_one("SELECT * FROM foo").except_("SELECT * FROM bla").sql()
        -764            'SELECT * FROM foo EXCEPT SELECT * FROM bla'
        -765
        -766        Args:
        -767            expression (str | Expression): the SQL code string.
        -768                If an `Expression` instance is passed, it will be used as-is.
        -769            distinct (bool): set the DISTINCT flag if and only if this is true.
        -770            dialect (str): the dialect used to parse the input expression.
        -771            opts (kwargs): other options to use to parse the input expressions.
        -772        Returns:
        -773            Except: the Except expression
        -774        """
        -775        return except_(left=self, right=expression, distinct=distinct, dialect=dialect, **opts)
        +            
        773    def except_(self, expression, distinct=True, dialect=None, **opts):
        +774        """
        +775        Builds an EXCEPT expression.
        +776
        +777        Example:
        +778            >>> import sqlglot
        +779            >>> sqlglot.parse_one("SELECT * FROM foo").except_("SELECT * FROM bla").sql()
        +780            'SELECT * FROM foo EXCEPT SELECT * FROM bla'
        +781
        +782        Args:
        +783            expression (str | Expression): the SQL code string.
        +784                If an `Expression` instance is passed, it will be used as-is.
        +785            distinct (bool): set the DISTINCT flag if and only if this is true.
        +786            dialect (str): the dialect used to parse the input expression.
        +787            opts (kwargs): other options to use to parse the input expressions.
        +788        Returns:
        +789            Except: the Except expression
        +790        """
        +791        return except_(left=self, right=expression, distinct=distinct, dialect=dialect, **opts)
         
        @@ -10476,10 +10640,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -10512,8 +10678,8 @@ If an Expression instance is passed, it w
        -
        778class UDTF(DerivedTable, Unionable):
        -779    pass
        +            
        794class UDTF(DerivedTable, Unionable):
        +795    pass
         
        @@ -10538,10 +10704,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -10580,14 +10748,14 @@ If an Expression instance is passed, it w
        -
        782class Cache(Expression):
        -783    arg_types = {
        -784        "with": False,
        -785        "this": True,
        -786        "lazy": False,
        -787        "options": False,
        -788        "expression": False,
        -789    }
        +            
        798class Cache(Expression):
        +799    arg_types = {
        +800        "with": False,
        +801        "this": True,
        +802        "lazy": False,
        +803        "options": False,
        +804        "expression": False,
        +805    }
         
        @@ -10612,10 +10780,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -10648,8 +10818,8 @@ If an Expression instance is passed, it w
        -
        792class Uncache(Expression):
        -793    arg_types = {"this": True, "exists": False}
        +            
        808class Uncache(Expression):
        +809    arg_types = {"this": True, "exists": False}
         
        @@ -10674,10 +10844,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -10710,21 +10882,21 @@ If an Expression instance is passed, it w
        -
        796class Create(Expression):
        -797    arg_types = {
        -798        "with": False,
        -799        "this": True,
        -800        "kind": True,
        -801        "expression": False,
        -802        "exists": False,
        -803        "properties": False,
        -804        "replace": False,
        -805        "unique": False,
        -806        "volatile": False,
        -807        "indexes": False,
        -808        "no_schema_binding": False,
        -809        "begin": False,
        -810    }
        +            
        812class Create(Expression):
        +813    arg_types = {
        +814        "with": False,
        +815        "this": True,
        +816        "kind": True,
        +817        "expression": False,
        +818        "exists": False,
        +819        "properties": False,
        +820        "replace": False,
        +821        "unique": False,
        +822        "volatile": False,
        +823        "indexes": False,
        +824        "no_schema_binding": False,
        +825        "begin": False,
        +826    }
         
        @@ -10749,10 +10921,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -10785,8 +10959,8 @@ If an Expression instance is passed, it w
        -
        813class Describe(Expression):
        -814    arg_types = {"this": True, "kind": False}
        +            
        829class Describe(Expression):
        +830    arg_types = {"this": True, "kind": False}
         
        @@ -10811,10 +10985,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -10832,6 +11008,70 @@ If an Expression instance is passed, it w
        dump
        load
        +
        + +
        +
        +
        + +
        + + class + Pragma(Expression): + + + +
        + +
        833class Pragma(Expression):
        +834    pass
        +
        + + + + + @@ -10847,8 +11087,8 @@ If an Expression instance is passed, it w -
        817class Set(Expression):
        -818    arg_types = {"expressions": False}
        +            
        837class Set(Expression):
        +838    arg_types = {"expressions": False}
         
        @@ -10873,10 +11113,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -10909,14 +11151,14 @@ If an Expression instance is passed, it w
        -
        821class SetItem(Expression):
        -822    arg_types = {
        -823        "this": False,
        -824        "expressions": False,
        -825        "kind": False,
        -826        "collate": False,  # MySQL SET NAMES statement
        -827        "global": False,
        -828    }
        +            
        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    }
         
        @@ -10941,10 +11183,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -10977,24 +11221,24 @@ If an Expression instance is passed, it w
        -
        831class Show(Expression):
        -832    arg_types = {
        -833        "this": True,
        -834        "target": False,
        -835        "offset": False,
        -836        "limit": False,
        -837        "like": False,
        -838        "where": False,
        -839        "db": False,
        -840        "full": False,
        -841        "mutex": False,
        -842        "query": False,
        -843        "channel": False,
        -844        "global": False,
        -845        "log": False,
        -846        "position": False,
        -847        "types": False,
        -848    }
        +            
        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    }
         
        @@ -11019,10 +11263,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -11055,8 +11301,8 @@ If an Expression instance is passed, it w
        -
        851class UserDefinedFunction(Expression):
        -852    arg_types = {"this": True, "expressions": False, "wrapped": False}
        +            
        871class UserDefinedFunction(Expression):
        +872    arg_types = {"this": True, "expressions": False, "wrapped": False}
         
        @@ -11081,10 +11327,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -11117,8 +11365,8 @@ If an Expression instance is passed, it w
        -
        855class CharacterSet(Expression):
        -856    arg_types = {"this": True, "default": False}
        +            
        875class CharacterSet(Expression):
        +876    arg_types = {"this": True, "default": False}
         
        @@ -11143,10 +11391,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -11179,12 +11429,12 @@ If an Expression instance is passed, it w
        -
        859class With(Expression):
        -860    arg_types = {"expressions": True, "recursive": False}
        -861
        -862    @property
        -863    def recursive(self) -> bool:
        -864        return bool(self.args.get("recursive"))
        +            
        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"))
         
        @@ -11209,10 +11459,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -11245,8 +11497,8 @@ If an Expression instance is passed, it w
        -
        867class WithinGroup(Expression):
        -868    arg_types = {"this": True, "expression": False}
        +            
        887class WithinGroup(Expression):
        +888    arg_types = {"this": True, "expression": False}
         
        @@ -11271,10 +11523,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -11307,8 +11561,8 @@ If an Expression instance is passed, it w
        -
        871class CTE(DerivedTable):
        -872    arg_types = {"this": True, "alias": True}
        +            
        891class CTE(DerivedTable):
        +892    arg_types = {"this": True, "alias": True}
         
        @@ -11333,10 +11587,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -11369,12 +11625,12 @@ If an Expression instance is passed, it w
        -
        875class TableAlias(Expression):
        -876    arg_types = {"this": False, "columns": False}
        -877
        -878    @property
        -879    def columns(self):
        -880        return self.args.get("columns") or []
        +            
        895class TableAlias(Expression):
        +896    arg_types = {"this": False, "columns": False}
        +897
        +898    @property
        +899    def columns(self):
        +900        return self.args.get("columns") or []
         
        @@ -11399,10 +11655,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -11435,8 +11693,8 @@ If an Expression instance is passed, it w
        -
        883class BitString(Condition):
        -884    pass
        +            
        903class BitString(Condition):
        +904    pass
         
        @@ -11461,10 +11719,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -11503,8 +11763,8 @@ If an Expression instance is passed, it w
        -
        887class HexString(Condition):
        -888    pass
        +            
        907class HexString(Condition):
        +908    pass
         
        @@ -11529,10 +11789,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -11571,8 +11833,8 @@ If an Expression instance is passed, it w
        -
        891class ByteString(Condition):
        -892    pass
        +            
        911class ByteString(Condition):
        +912    pass
         
        @@ -11597,10 +11859,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -11639,24 +11903,41 @@ If an Expression instance is passed, it w
        -
        895class Column(Condition):
        -896    arg_types = {"this": True, "table": False, "db": False, "catalog": False, "join_mark": False}
        -897
        -898    @property
        -899    def table(self) -> str:
        -900        return self.text("table")
        -901
        -902    @property
        -903    def db(self) -> str:
        -904        return self.text("db")
        -905
        -906    @property
        -907    def catalog(self) -> str:
        -908        return self.text("catalog")
        -909
        -910    @property
        -911    def output_name(self) -> str:
        -912        return self.name
        +            
        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)
         
        @@ -11691,6 +11972,49 @@ If an Expression instance is passed, it w
        + +
        +
        + parts: List[sqlglot.expressions.Identifier] + + +
        + + +

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

        +
        + + +
        +
        + +
        + + def + to_dot(self) -> sqlglot.expressions.Dot: + + + +
        + +
        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)
        +
        + + +

        Converts the column into a dot expression.

        +
        + +
        Inherited Members
        @@ -11710,10 +12034,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -11752,13 +12078,13 @@ If an Expression instance is passed, it w
        -
        915class ColumnDef(Expression):
        -916    arg_types = {
        -917        "this": True,
        -918        "kind": False,
        -919        "constraints": False,
        -920        "exists": False,
        -921    }
        +            
        952class ColumnDef(Expression):
        +953    arg_types = {
        +954        "this": True,
        +955        "kind": False,
        +956        "constraints": False,
        +957        "exists": False,
        +958    }
         
        @@ -11783,10 +12109,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -11819,15 +12147,15 @@ If an Expression instance is passed, it w
        -
        924class AlterColumn(Expression):
        -925    arg_types = {
        -926        "this": True,
        -927        "dtype": False,
        -928        "collate": False,
        -929        "using": False,
        -930        "default": False,
        -931        "drop": False,
        -932    }
        +            
        961class AlterColumn(Expression):
        +962    arg_types = {
        +963        "this": True,
        +964        "dtype": False,
        +965        "collate": False,
        +966        "using": False,
        +967        "default": False,
        +968        "drop": False,
        +969    }
         
        @@ -11852,10 +12180,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -11888,8 +12218,8 @@ If an Expression instance is passed, it w
        -
        935class RenameTable(Expression):
        -936    pass
        +            
        972class RenameTable(Expression):
        +973    pass
         
        @@ -11914,10 +12244,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -11950,8 +12282,8 @@ If an Expression instance is passed, it w
        -
        939class SetTag(Expression):
        -940    arg_types = {"expressions": True, "unset": False}
        +            
        976class SetTag(Expression):
        +977    arg_types = {"expressions": True, "unset": False}
         
        @@ -11976,10 +12308,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -12012,8 +12346,8 @@ If an Expression instance is passed, it w
        -
        943class Comment(Expression):
        -944    arg_types = {"this": True, "kind": True, "expression": True, "exists": False}
        +            
        980class Comment(Expression):
        +981    arg_types = {"this": True, "kind": True, "expression": True, "exists": False}
         
        @@ -12038,10 +12372,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -12074,8 +12410,8 @@ If an Expression instance is passed, it w
        -
        947class ColumnConstraint(Expression):
        -948    arg_types = {"this": False, "kind": True}
        +            
        984class ColumnConstraint(Expression):
        +985    arg_types = {"this": False, "kind": True}
         
        @@ -12100,10 +12436,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -12136,8 +12474,8 @@ If an Expression instance is passed, it w
        -
        951class ColumnConstraintKind(Expression):
        -952    pass
        +            
        988class ColumnConstraintKind(Expression):
        +989    pass
         
        @@ -12162,10 +12500,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -12198,8 +12538,8 @@ If an Expression instance is passed, it w
        -
        955class AutoIncrementColumnConstraint(ColumnConstraintKind):
        -956    pass
        +            
        992class AutoIncrementColumnConstraint(ColumnConstraintKind):
        +993    pass
         
        @@ -12224,10 +12564,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -12260,8 +12602,8 @@ If an Expression instance is passed, it w
        -
        959class CaseSpecificColumnConstraint(ColumnConstraintKind):
        -960    arg_types = {"not_": True}
        +            
        996class CaseSpecificColumnConstraint(ColumnConstraintKind):
        +997    arg_types = {"not_": True}
         
        @@ -12286,10 +12628,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -12322,8 +12666,8 @@ If an Expression instance is passed, it w
        -
        963class CharacterSetColumnConstraint(ColumnConstraintKind):
        -964    arg_types = {"this": True}
        +            
        1000class CharacterSetColumnConstraint(ColumnConstraintKind):
        +1001    arg_types = {"this": True}
         
        @@ -12348,10 +12692,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -12384,8 +12730,8 @@ If an Expression instance is passed, it w
        -
        967class CheckColumnConstraint(ColumnConstraintKind):
        -968    pass
        +            
        1004class CheckColumnConstraint(ColumnConstraintKind):
        +1005    pass
         
        @@ -12410,10 +12756,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -12446,8 +12794,8 @@ If an Expression instance is passed, it w
        -
        971class CollateColumnConstraint(ColumnConstraintKind):
        -972    pass
        +            
        1008class CollateColumnConstraint(ColumnConstraintKind):
        +1009    pass
         
        @@ -12472,10 +12820,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -12508,8 +12858,8 @@ If an Expression instance is passed, it w
        -
        975class CommentColumnConstraint(ColumnConstraintKind):
        -976    pass
        +            
        1012class CommentColumnConstraint(ColumnConstraintKind):
        +1013    pass
         
        @@ -12534,10 +12884,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -12570,8 +12922,8 @@ If an Expression instance is passed, it w
        -
        979class CompressColumnConstraint(ColumnConstraintKind):
        -980    pass
        +            
        1016class CompressColumnConstraint(ColumnConstraintKind):
        +1017    pass
         
        @@ -12596,10 +12948,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -12632,8 +12986,8 @@ If an Expression instance is passed, it w
        -
        983class DateFormatColumnConstraint(ColumnConstraintKind):
        -984    arg_types = {"this": True}
        +            
        1020class DateFormatColumnConstraint(ColumnConstraintKind):
        +1021    arg_types = {"this": True}
         
        @@ -12658,10 +13012,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -12694,8 +13050,8 @@ If an Expression instance is passed, it w
        -
        987class DefaultColumnConstraint(ColumnConstraintKind):
        -988    pass
        +            
        1024class DefaultColumnConstraint(ColumnConstraintKind):
        +1025    pass
         
        @@ -12720,10 +13076,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -12756,8 +13114,8 @@ If an Expression instance is passed, it w
        -
        991class EncodeColumnConstraint(ColumnConstraintKind):
        -992    pass
        +            
        1028class EncodeColumnConstraint(ColumnConstraintKind):
        +1029    pass
         
        @@ -12782,10 +13140,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -12818,16 +13178,16 @@ If an Expression instance is passed, it w
        -
         995class GeneratedAsIdentityColumnConstraint(ColumnConstraintKind):
        - 996    # this: True -> ALWAYS, this: False -> BY DEFAULT
        - 997    arg_types = {
        - 998        "this": False,
        - 999        "start": False,
        -1000        "increment": False,
        -1001        "minvalue": False,
        -1002        "maxvalue": False,
        -1003        "cycle": False,
        -1004    }
        +            
        1032class GeneratedAsIdentityColumnConstraint(ColumnConstraintKind):
        +1033    # this: True -> ALWAYS, this: False -> BY DEFAULT
        +1034    arg_types = {
        +1035        "this": False,
        +1036        "start": False,
        +1037        "increment": False,
        +1038        "minvalue": False,
        +1039        "maxvalue": False,
        +1040        "cycle": False,
        +1041    }
         
        @@ -12852,10 +13212,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -12888,8 +13250,8 @@ If an Expression instance is passed, it w
        -
        1007class InlineLengthColumnConstraint(ColumnConstraintKind):
        -1008    pass
        +            
        1044class InlineLengthColumnConstraint(ColumnConstraintKind):
        +1045    pass
         
        @@ -12914,10 +13276,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -12950,8 +13314,8 @@ If an Expression instance is passed, it w
        -
        1011class NotNullColumnConstraint(ColumnConstraintKind):
        -1012    arg_types = {"allow_null": False}
        +            
        1048class NotNullColumnConstraint(ColumnConstraintKind):
        +1049    arg_types = {"allow_null": False}
         
        @@ -12976,10 +13340,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -13012,8 +13378,8 @@ If an Expression instance is passed, it w
        -
        1015class PrimaryKeyColumnConstraint(ColumnConstraintKind):
        -1016    arg_types = {"desc": False}
        +            
        1052class PrimaryKeyColumnConstraint(ColumnConstraintKind):
        +1053    arg_types = {"desc": False}
         
        @@ -13038,10 +13404,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -13074,8 +13442,8 @@ If an Expression instance is passed, it w
        -
        1019class TitleColumnConstraint(ColumnConstraintKind):
        -1020    pass
        +            
        1056class TitleColumnConstraint(ColumnConstraintKind):
        +1057    pass
         
        @@ -13100,10 +13468,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -13136,8 +13506,8 @@ If an Expression instance is passed, it w
        -
        1023class UniqueColumnConstraint(ColumnConstraintKind):
        -1024    arg_types: t.Dict[str, t.Any] = {}
        +            
        1060class UniqueColumnConstraint(ColumnConstraintKind):
        +1061    arg_types: t.Dict[str, t.Any] = {}
         
        @@ -13162,10 +13532,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -13198,8 +13570,8 @@ If an Expression instance is passed, it w
        -
        1027class UppercaseColumnConstraint(ColumnConstraintKind):
        -1028    arg_types: t.Dict[str, t.Any] = {}
        +            
        1064class UppercaseColumnConstraint(ColumnConstraintKind):
        +1065    arg_types: t.Dict[str, t.Any] = {}
         
        @@ -13224,10 +13596,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -13260,8 +13634,8 @@ If an Expression instance is passed, it w
        -
        1031class PathColumnConstraint(ColumnConstraintKind):
        -1032    pass
        +            
        1068class PathColumnConstraint(ColumnConstraintKind):
        +1069    pass
         
        @@ -13286,10 +13660,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -13322,8 +13698,8 @@ If an Expression instance is passed, it w
        -
        1035class Constraint(Expression):
        -1036    arg_types = {"this": True, "expressions": True}
        +            
        1072class Constraint(Expression):
        +1073    arg_types = {"this": True, "expressions": True}
         
        @@ -13348,10 +13724,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -13384,115 +13762,115 @@ If an Expression instance is passed, it w
        -
        1039class Delete(Expression):
        -1040    arg_types = {"with": False, "this": False, "using": False, "where": False, "returning": False}
        -1041
        -1042    def delete(
        -1043        self,
        -1044        table: ExpOrStr,
        -1045        dialect: DialectType = None,
        -1046        copy: bool = True,
        -1047        **opts,
        -1048    ) -> Delete:
        -1049        """
        -1050        Create a DELETE expression or replace the table on an existing DELETE expression.
        -1051
        -1052        Example:
        -1053            >>> delete("tbl").sql()
        -1054            'DELETE FROM tbl'
        -1055
        -1056        Args:
        -1057            table: the table from which to delete.
        -1058            dialect: the dialect used to parse the input expression.
        -1059            copy: if `False`, modify this expression instance in-place.
        -1060            opts: other options to use to parse the input expressions.
        -1061
        -1062        Returns:
        -1063            Delete: the modified expression.
        -1064        """
        -1065        return _apply_builder(
        -1066            expression=table,
        -1067            instance=self,
        -1068            arg="this",
        -1069            dialect=dialect,
        -1070            into=Table,
        -1071            copy=copy,
        -1072            **opts,
        -1073        )
        -1074
        -1075    def where(
        -1076        self,
        -1077        *expressions: ExpOrStr,
        -1078        append: bool = True,
        -1079        dialect: DialectType = None,
        -1080        copy: bool = True,
        -1081        **opts,
        -1082    ) -> Delete:
        -1083        """
        -1084        Append to or set the WHERE expressions.
        -1085
        -1086        Example:
        -1087            >>> delete("tbl").where("x = 'a' OR x < 'b'").sql()
        -1088            "DELETE FROM tbl WHERE x = 'a' OR x < 'b'"
        -1089
        -1090        Args:
        -1091            *expressions: the SQL code strings to parse.
        -1092                If an `Expression` instance is passed, it will be used as-is.
        -1093                Multiple expressions are combined with an AND operator.
        -1094            append: if `True`, AND the new expressions to any existing expression.
        -1095                Otherwise, this resets the expression.
        -1096            dialect: the dialect used to parse the input expressions.
        -1097            copy: if `False`, modify this expression instance in-place.
        -1098            opts: other options to use to parse the input expressions.
        -1099
        -1100        Returns:
        -1101            Delete: the modified expression.
        -1102        """
        -1103        return _apply_conjunction_builder(
        -1104            *expressions,
        -1105            instance=self,
        -1106            arg="where",
        -1107            append=append,
        -1108            into=Where,
        -1109            dialect=dialect,
        -1110            copy=copy,
        -1111            **opts,
        -1112        )
        -1113
        -1114    def returning(
        -1115        self,
        -1116        expression: ExpOrStr,
        -1117        dialect: DialectType = None,
        -1118        copy: bool = True,
        -1119        **opts,
        -1120    ) -> Delete:
        -1121        """
        -1122        Set the RETURNING expression. Not supported by all dialects.
        -1123
        -1124        Example:
        -1125            >>> delete("tbl").returning("*", dialect="postgres").sql()
        -1126            'DELETE FROM tbl RETURNING *'
        -1127
        -1128        Args:
        -1129            expression: the SQL code strings to parse.
        -1130                If an `Expression` instance is passed, it will be used as-is.
        -1131            dialect: the dialect used to parse the input expressions.
        -1132            copy: if `False`, modify this expression instance in-place.
        -1133            opts: other options to use to parse the input expressions.
        -1134
        -1135        Returns:
        -1136            Delete: the modified expression.
        -1137        """
        -1138        return _apply_builder(
        -1139            expression=expression,
        -1140            instance=self,
        -1141            arg="returning",
        -1142            prefix="RETURNING",
        -1143            dialect=dialect,
        -1144            copy=copy,
        -1145            into=Returning,
        -1146            **opts,
        -1147        )
        +            
        1076class Delete(Expression):
        +1077    arg_types = {"with": False, "this": False, "using": False, "where": False, "returning": False}
        +1078
        +1079    def delete(
        +1080        self,
        +1081        table: ExpOrStr,
        +1082        dialect: DialectType = None,
        +1083        copy: bool = True,
        +1084        **opts,
        +1085    ) -> Delete:
        +1086        """
        +1087        Create a DELETE expression or replace the table on an existing DELETE expression.
        +1088
        +1089        Example:
        +1090            >>> delete("tbl").sql()
        +1091            'DELETE FROM tbl'
        +1092
        +1093        Args:
        +1094            table: the table from which to delete.
        +1095            dialect: the dialect used to parse the input expression.
        +1096            copy: if `False`, modify this expression instance in-place.
        +1097            opts: other options to use to parse the input expressions.
        +1098
        +1099        Returns:
        +1100            Delete: the modified expression.
        +1101        """
        +1102        return _apply_builder(
        +1103            expression=table,
        +1104            instance=self,
        +1105            arg="this",
        +1106            dialect=dialect,
        +1107            into=Table,
        +1108            copy=copy,
        +1109            **opts,
        +1110        )
        +1111
        +1112    def where(
        +1113        self,
        +1114        *expressions: ExpOrStr,
        +1115        append: bool = True,
        +1116        dialect: DialectType = None,
        +1117        copy: bool = True,
        +1118        **opts,
        +1119    ) -> Delete:
        +1120        """
        +1121        Append to or set the WHERE expressions.
        +1122
        +1123        Example:
        +1124            >>> delete("tbl").where("x = 'a' OR x < 'b'").sql()
        +1125            "DELETE FROM tbl WHERE x = 'a' OR x < 'b'"
        +1126
        +1127        Args:
        +1128            *expressions: the SQL code strings to parse.
        +1129                If an `Expression` instance is passed, it will be used as-is.
        +1130                Multiple expressions are combined with an AND operator.
        +1131            append: if `True`, AND the new expressions to any existing expression.
        +1132                Otherwise, this resets the expression.
        +1133            dialect: the dialect used to parse the input expressions.
        +1134            copy: if `False`, modify this expression instance in-place.
        +1135            opts: other options to use to parse the input expressions.
        +1136
        +1137        Returns:
        +1138            Delete: the modified expression.
        +1139        """
        +1140        return _apply_conjunction_builder(
        +1141            *expressions,
        +1142            instance=self,
        +1143            arg="where",
        +1144            append=append,
        +1145            into=Where,
        +1146            dialect=dialect,
        +1147            copy=copy,
        +1148            **opts,
        +1149        )
        +1150
        +1151    def returning(
        +1152        self,
        +1153        expression: ExpOrStr,
        +1154        dialect: DialectType = None,
        +1155        copy: bool = True,
        +1156        **opts,
        +1157    ) -> Delete:
        +1158        """
        +1159        Set the RETURNING expression. Not supported by all dialects.
        +1160
        +1161        Example:
        +1162            >>> delete("tbl").returning("*", dialect="postgres").sql()
        +1163            'DELETE FROM tbl RETURNING *'
        +1164
        +1165        Args:
        +1166            expression: the SQL code strings to parse.
        +1167                If an `Expression` instance is passed, it will be used as-is.
        +1168            dialect: the dialect used to parse the input expressions.
        +1169            copy: if `False`, modify this expression instance in-place.
        +1170            opts: other options to use to parse the input expressions.
        +1171
        +1172        Returns:
        +1173            Delete: the modified expression.
        +1174        """
        +1175        return _apply_builder(
        +1176            expression=expression,
        +1177            instance=self,
        +1178            arg="returning",
        +1179            prefix="RETURNING",
        +1180            dialect=dialect,
        +1181            copy=copy,
        +1182            into=Returning,
        +1183            **opts,
        +1184        )
         
        @@ -13509,38 +13887,38 @@ If an Expression instance is passed, it w
        -
        1042    def delete(
        -1043        self,
        -1044        table: ExpOrStr,
        -1045        dialect: DialectType = None,
        -1046        copy: bool = True,
        -1047        **opts,
        -1048    ) -> Delete:
        -1049        """
        -1050        Create a DELETE expression or replace the table on an existing DELETE expression.
        -1051
        -1052        Example:
        -1053            >>> delete("tbl").sql()
        -1054            'DELETE FROM tbl'
        -1055
        -1056        Args:
        -1057            table: the table from which to delete.
        -1058            dialect: the dialect used to parse the input expression.
        -1059            copy: if `False`, modify this expression instance in-place.
        -1060            opts: other options to use to parse the input expressions.
        -1061
        -1062        Returns:
        -1063            Delete: the modified expression.
        -1064        """
        -1065        return _apply_builder(
        -1066            expression=table,
        -1067            instance=self,
        -1068            arg="this",
        -1069            dialect=dialect,
        -1070            into=Table,
        -1071            copy=copy,
        -1072            **opts,
        -1073        )
        +            
        1079    def delete(
        +1080        self,
        +1081        table: ExpOrStr,
        +1082        dialect: DialectType = None,
        +1083        copy: bool = True,
        +1084        **opts,
        +1085    ) -> Delete:
        +1086        """
        +1087        Create a DELETE expression or replace the table on an existing DELETE expression.
        +1088
        +1089        Example:
        +1090            >>> delete("tbl").sql()
        +1091            'DELETE FROM tbl'
        +1092
        +1093        Args:
        +1094            table: the table from which to delete.
        +1095            dialect: the dialect used to parse the input expression.
        +1096            copy: if `False`, modify this expression instance in-place.
        +1097            opts: other options to use to parse the input expressions.
        +1098
        +1099        Returns:
        +1100            Delete: the modified expression.
        +1101        """
        +1102        return _apply_builder(
        +1103            expression=table,
        +1104            instance=self,
        +1105            arg="this",
        +1106            dialect=dialect,
        +1107            into=Table,
        +1108            copy=copy,
        +1109            **opts,
        +1110        )
         
        @@ -13585,44 +13963,44 @@ If an Expression instance is passed, it w
        -
        1075    def where(
        -1076        self,
        -1077        *expressions: ExpOrStr,
        -1078        append: bool = True,
        -1079        dialect: DialectType = None,
        -1080        copy: bool = True,
        -1081        **opts,
        -1082    ) -> Delete:
        -1083        """
        -1084        Append to or set the WHERE expressions.
        -1085
        -1086        Example:
        -1087            >>> delete("tbl").where("x = 'a' OR x < 'b'").sql()
        -1088            "DELETE FROM tbl WHERE x = 'a' OR x < 'b'"
        -1089
        -1090        Args:
        -1091            *expressions: the SQL code strings to parse.
        -1092                If an `Expression` instance is passed, it will be used as-is.
        -1093                Multiple expressions are combined with an AND operator.
        -1094            append: if `True`, AND the new expressions to any existing expression.
        -1095                Otherwise, this resets the expression.
        -1096            dialect: the dialect used to parse the input expressions.
        -1097            copy: if `False`, modify this expression instance in-place.
        -1098            opts: other options to use to parse the input expressions.
        -1099
        -1100        Returns:
        -1101            Delete: the modified expression.
        -1102        """
        -1103        return _apply_conjunction_builder(
        -1104            *expressions,
        -1105            instance=self,
        -1106            arg="where",
        -1107            append=append,
        -1108            into=Where,
        -1109            dialect=dialect,
        -1110            copy=copy,
        -1111            **opts,
        -1112        )
        +            
        1112    def where(
        +1113        self,
        +1114        *expressions: ExpOrStr,
        +1115        append: bool = True,
        +1116        dialect: DialectType = None,
        +1117        copy: bool = True,
        +1118        **opts,
        +1119    ) -> Delete:
        +1120        """
        +1121        Append to or set the WHERE expressions.
        +1122
        +1123        Example:
        +1124            >>> delete("tbl").where("x = 'a' OR x < 'b'").sql()
        +1125            "DELETE FROM tbl WHERE x = 'a' OR x < 'b'"
        +1126
        +1127        Args:
        +1128            *expressions: the SQL code strings to parse.
        +1129                If an `Expression` instance is passed, it will be used as-is.
        +1130                Multiple expressions are combined with an AND operator.
        +1131            append: if `True`, AND the new expressions to any existing expression.
        +1132                Otherwise, this resets the expression.
        +1133            dialect: the dialect used to parse the input expressions.
        +1134            copy: if `False`, modify this expression instance in-place.
        +1135            opts: other options to use to parse the input expressions.
        +1136
        +1137        Returns:
        +1138            Delete: the modified expression.
        +1139        """
        +1140        return _apply_conjunction_builder(
        +1141            *expressions,
        +1142            instance=self,
        +1143            arg="where",
        +1144            append=append,
        +1145            into=Where,
        +1146            dialect=dialect,
        +1147            copy=copy,
        +1148            **opts,
        +1149        )
         
        @@ -13671,40 +14049,40 @@ Otherwise, this resets the expression.
        -
        1114    def returning(
        -1115        self,
        -1116        expression: ExpOrStr,
        -1117        dialect: DialectType = None,
        -1118        copy: bool = True,
        -1119        **opts,
        -1120    ) -> Delete:
        -1121        """
        -1122        Set the RETURNING expression. Not supported by all dialects.
        -1123
        -1124        Example:
        -1125            >>> delete("tbl").returning("*", dialect="postgres").sql()
        -1126            'DELETE FROM tbl RETURNING *'
        -1127
        -1128        Args:
        -1129            expression: the SQL code strings to parse.
        -1130                If an `Expression` instance is passed, it will be used as-is.
        -1131            dialect: the dialect used to parse the input expressions.
        -1132            copy: if `False`, modify this expression instance in-place.
        -1133            opts: other options to use to parse the input expressions.
        -1134
        -1135        Returns:
        -1136            Delete: the modified expression.
        -1137        """
        -1138        return _apply_builder(
        -1139            expression=expression,
        -1140            instance=self,
        -1141            arg="returning",
        -1142            prefix="RETURNING",
        -1143            dialect=dialect,
        -1144            copy=copy,
        -1145            into=Returning,
        -1146            **opts,
        -1147        )
        +            
        1151    def returning(
        +1152        self,
        +1153        expression: ExpOrStr,
        +1154        dialect: DialectType = None,
        +1155        copy: bool = True,
        +1156        **opts,
        +1157    ) -> Delete:
        +1158        """
        +1159        Set the RETURNING expression. Not supported by all dialects.
        +1160
        +1161        Example:
        +1162            >>> delete("tbl").returning("*", dialect="postgres").sql()
        +1163            'DELETE FROM tbl RETURNING *'
        +1164
        +1165        Args:
        +1166            expression: the SQL code strings to parse.
        +1167                If an `Expression` instance is passed, it will be used as-is.
        +1168            dialect: the dialect used to parse the input expressions.
        +1169            copy: if `False`, modify this expression instance in-place.
        +1170            opts: other options to use to parse the input expressions.
        +1171
        +1172        Returns:
        +1173            Delete: the modified expression.
        +1174        """
        +1175        return _apply_builder(
        +1176            expression=expression,
        +1177            instance=self,
        +1178            arg="returning",
        +1179            prefix="RETURNING",
        +1180            dialect=dialect,
        +1181            copy=copy,
        +1182            into=Returning,
        +1183            **opts,
        +1184        )
         
        @@ -13758,10 +14136,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -13794,15 +14174,15 @@ If an Expression instance is passed, it w
        -
        1150class Drop(Expression):
        -1151    arg_types = {
        -1152        "this": False,
        -1153        "kind": False,
        -1154        "exists": False,
        -1155        "temporary": False,
        -1156        "materialized": False,
        -1157        "cascade": False,
        -1158    }
        +            
        1187class Drop(Expression):
        +1188    arg_types = {
        +1189        "this": False,
        +1190        "kind": False,
        +1191        "exists": False,
        +1192        "temporary": False,
        +1193        "materialized": False,
        +1194        "cascade": False,
        +1195    }
         
        @@ -13827,10 +14207,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -13863,8 +14245,8 @@ If an Expression instance is passed, it w
        -
        1161class Filter(Expression):
        -1162    arg_types = {"this": True, "expression": True}
        +            
        1198class Filter(Expression):
        +1199    arg_types = {"this": True, "expression": True}
         
        @@ -13889,10 +14271,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -13925,8 +14309,8 @@ If an Expression instance is passed, it w
        -
        1165class Check(Expression):
        -1166    pass
        +            
        1202class Check(Expression):
        +1203    pass
         
        @@ -13951,10 +14335,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -13987,9 +14373,9 @@ If an Expression instance is passed, it w
        -
        1169class Directory(Expression):
        -1170    # https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-dml-insert-overwrite-directory-hive.html
        -1171    arg_types = {"this": True, "local": False, "row_format": False}
        +            
        1206class Directory(Expression):
        +1207    # https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-dml-insert-overwrite-directory-hive.html
        +1208    arg_types = {"this": True, "local": False, "row_format": False}
         
        @@ -14014,10 +14400,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -14050,13 +14438,13 @@ If an Expression instance is passed, it w
        -
        1174class ForeignKey(Expression):
        -1175    arg_types = {
        -1176        "expressions": True,
        -1177        "reference": False,
        -1178        "delete": False,
        -1179        "update": False,
        -1180    }
        +            
        1211class ForeignKey(Expression):
        +1212    arg_types = {
        +1213        "expressions": True,
        +1214        "reference": False,
        +1215        "delete": False,
        +1216        "update": False,
        +1217    }
         
        @@ -14081,10 +14469,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -14117,8 +14507,8 @@ If an Expression instance is passed, it w
        -
        1183class PrimaryKey(Expression):
        -1184    arg_types = {"expressions": True, "options": False}
        +            
        1220class PrimaryKey(Expression):
        +1221    arg_types = {"expressions": True, "options": False}
         
        @@ -14143,10 +14533,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -14179,8 +14571,8 @@ If an Expression instance is passed, it w
        -
        1187class Unique(Expression):
        -1188    arg_types = {"expressions": True}
        +            
        1224class Unique(Expression):
        +1225    arg_types = {"expressions": True}
         
        @@ -14205,10 +14597,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -14241,8 +14635,8 @@ If an Expression instance is passed, it w
        -
        1193class Into(Expression):
        -1194    arg_types = {"this": True, "temporary": False, "unlogged": False}
        +            
        1230class Into(Expression):
        +1231    arg_types = {"this": True, "temporary": False, "unlogged": False}
         
        @@ -14267,10 +14661,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -14303,8 +14699,8 @@ If an Expression instance is passed, it w
        -
        1197class From(Expression):
        -1198    arg_types = {"expressions": True}
        +            
        1234class From(Expression):
        +1235    arg_types = {"expressions": True}
         
        @@ -14329,10 +14725,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -14365,8 +14763,8 @@ If an Expression instance is passed, it w
        -
        1201class Having(Expression):
        -1202    pass
        +            
        1238class Having(Expression):
        +1239    pass
         
        @@ -14391,10 +14789,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -14427,8 +14827,8 @@ If an Expression instance is passed, it w
        -
        1205class Hint(Expression):
        -1206    arg_types = {"expressions": True}
        +            
        1242class Hint(Expression):
        +1243    arg_types = {"expressions": True}
         
        @@ -14453,10 +14853,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -14489,8 +14891,8 @@ If an Expression instance is passed, it w
        -
        1209class JoinHint(Expression):
        -1210    arg_types = {"this": True, "expressions": True}
        +            
        1246class JoinHint(Expression):
        +1247    arg_types = {"this": True, "expressions": True}
         
        @@ -14515,10 +14917,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -14551,22 +14955,22 @@ If an Expression instance is passed, it w
        -
        1213class Identifier(Expression):
        -1214    arg_types = {"this": True, "quoted": False}
        -1215
        -1216    @property
        -1217    def quoted(self):
        -1218        return bool(self.args.get("quoted"))
        -1219
        -1220    def __eq__(self, other):
        -1221        return isinstance(other, self.__class__) and _norm_arg(self.this) == _norm_arg(other.this)
        -1222
        -1223    def __hash__(self):
        -1224        return hash((self.key, self.this.lower()))
        -1225
        -1226    @property
        -1227    def output_name(self):
        -1228        return self.name
        +            
        1250class Identifier(Expression):
        +1251    arg_types = {"this": True, "quoted": False}
        +1252
        +1253    @property
        +1254    def quoted(self):
        +1255        return bool(self.args.get("quoted"))
        +1256
        +1257    @property
        +1258    def hashable_args(self) -> t.Any:
        +1259        if self.quoted and any(char.isupper() for char in self.this):
        +1260            return (self.this, self.quoted)
        +1261        return self.this.lower()
        +1262
        +1263    @property
        +1264    def output_name(self):
        +1265        return self.name
         
        @@ -14620,10 +15024,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -14656,16 +15062,16 @@ If an Expression instance is passed, it w
        -
        1231class Index(Expression):
        -1232    arg_types = {
        -1233        "this": False,
        -1234        "table": False,
        -1235        "where": False,
        -1236        "columns": False,
        -1237        "unique": False,
        -1238        "primary": False,
        -1239        "amp": False,  # teradata
        -1240    }
        +            
        1268class Index(Expression):
        +1269    arg_types = {
        +1270        "this": False,
        +1271        "table": False,
        +1272        "where": False,
        +1273        "columns": False,
        +1274        "unique": False,
        +1275        "primary": False,
        +1276        "amp": False,  # teradata
        +1277    }
         
        @@ -14690,10 +15096,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -14726,17 +15134,17 @@ If an Expression instance is passed, it w
        -
        1243class Insert(Expression):
        -1244    arg_types = {
        -1245        "with": False,
        -1246        "this": True,
        -1247        "expression": False,
        -1248        "returning": False,
        -1249        "overwrite": False,
        -1250        "exists": False,
        -1251        "partition": False,
        -1252        "alternative": False,
        -1253    }
        +            
        1280class Insert(Expression):
        +1281    arg_types = {
        +1282        "with": False,
        +1283        "this": True,
        +1284        "expression": False,
        +1285        "returning": False,
        +1286        "overwrite": False,
        +1287        "exists": False,
        +1288        "partition": False,
        +1289        "alternative": False,
        +1290    }
         
        @@ -14761,10 +15169,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -14797,8 +15207,8 @@ If an Expression instance is passed, it w
        -
        1256class Returning(Expression):
        -1257    arg_types = {"expressions": True}
        +            
        1293class Returning(Expression):
        +1294    arg_types = {"expressions": True}
         
        @@ -14823,10 +15233,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -14859,8 +15271,8 @@ If an Expression instance is passed, it w
        -
        1261class Introducer(Expression):
        -1262    arg_types = {"this": True, "expression": True}
        +            
        1298class Introducer(Expression):
        +1299    arg_types = {"this": True, "expression": True}
         
        @@ -14885,10 +15297,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -14921,8 +15335,8 @@ If an Expression instance is passed, it w
        -
        1266class National(Expression):
        -1267    pass
        +            
        1303class National(Expression):
        +1304    pass
         
        @@ -14947,10 +15361,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -14983,16 +15399,16 @@ If an Expression instance is passed, it w
        -
        1270class LoadData(Expression):
        -1271    arg_types = {
        -1272        "this": True,
        -1273        "local": False,
        -1274        "overwrite": False,
        -1275        "inpath": True,
        -1276        "partition": False,
        -1277        "input_format": False,
        -1278        "serde": False,
        -1279    }
        +            
        1307class LoadData(Expression):
        +1308    arg_types = {
        +1309        "this": True,
        +1310        "local": False,
        +1311        "overwrite": False,
        +1312        "inpath": True,
        +1313        "partition": False,
        +1314        "input_format": False,
        +1315        "serde": False,
        +1316    }
         
        @@ -15017,10 +15433,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -15053,8 +15471,8 @@ If an Expression instance is passed, it w
        -
        1282class Partition(Expression):
        -1283    arg_types = {"expressions": True}
        +            
        1319class Partition(Expression):
        +1320    arg_types = {"expressions": True}
         
        @@ -15079,10 +15497,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -15115,8 +15535,8 @@ If an Expression instance is passed, it w
        -
        1286class Fetch(Expression):
        -1287    arg_types = {"direction": False, "count": False}
        +            
        1323class Fetch(Expression):
        +1324    arg_types = {"direction": False, "count": False}
         
        @@ -15141,10 +15561,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -15177,13 +15599,13 @@ If an Expression instance is passed, it w
        -
        1290class Group(Expression):
        -1291    arg_types = {
        -1292        "expressions": False,
        -1293        "grouping_sets": False,
        -1294        "cube": False,
        -1295        "rollup": False,
        -1296    }
        +            
        1327class Group(Expression):
        +1328    arg_types = {
        +1329        "expressions": False,
        +1330        "grouping_sets": False,
        +1331        "cube": False,
        +1332        "rollup": False,
        +1333    }
         
        @@ -15208,10 +15630,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -15244,8 +15668,8 @@ If an Expression instance is passed, it w
        -
        1299class Lambda(Expression):
        -1300    arg_types = {"this": True, "expressions": True}
        +            
        1336class Lambda(Expression):
        +1337    arg_types = {"this": True, "expressions": True}
         
        @@ -15270,10 +15694,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -15306,8 +15732,8 @@ If an Expression instance is passed, it w
        -
        1303class Limit(Expression):
        -1304    arg_types = {"this": False, "expression": True}
        +            
        1340class Limit(Expression):
        +1341    arg_types = {"this": False, "expression": True}
         
        @@ -15332,10 +15758,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -15368,30 +15796,24 @@ If an Expression instance is passed, it w
        -
        1307class Literal(Condition):
        -1308    arg_types = {"this": True, "is_string": True}
        -1309
        -1310    def __eq__(self, other):
        -1311        return (
        -1312            isinstance(other, Literal)
        -1313            and self.this == other.this
        -1314            and self.args["is_string"] == other.args["is_string"]
        -1315        )
        -1316
        -1317    def __hash__(self):
        -1318        return hash((self.key, self.this, self.args["is_string"]))
        -1319
        -1320    @classmethod
        -1321    def number(cls, number) -> Literal:
        -1322        return cls(this=str(number), is_string=False)
        -1323
        -1324    @classmethod
        -1325    def string(cls, string) -> Literal:
        -1326        return cls(this=str(string), is_string=True)
        -1327
        -1328    @property
        -1329    def output_name(self):
        -1330        return self.name
        +            
        1344class Literal(Condition):
        +1345    arg_types = {"this": True, "is_string": True}
        +1346
        +1347    @property
        +1348    def hashable_args(self) -> t.Any:
        +1349        return (self.this, self.args.get("is_string"))
        +1350
        +1351    @classmethod
        +1352    def number(cls, number) -> Literal:
        +1353        return cls(this=str(number), is_string=False)
        +1354
        +1355    @classmethod
        +1356    def string(cls, string) -> Literal:
        +1357        return cls(this=str(string), is_string=True)
        +1358
        +1359    @property
        +1360    def output_name(self):
        +1361        return self.name
         
        @@ -15409,9 +15831,9 @@ If an Expression instance is passed, it w
        -
        1320    @classmethod
        -1321    def number(cls, number) -> Literal:
        -1322        return cls(this=str(number), is_string=False)
        +            
        1351    @classmethod
        +1352    def number(cls, number) -> Literal:
        +1353        return cls(this=str(number), is_string=False)
         
        @@ -15430,9 +15852,9 @@ If an Expression instance is passed, it w
        -
        1324    @classmethod
        -1325    def string(cls, string) -> Literal:
        -1326        return cls(this=str(string), is_string=True)
        +            
        1355    @classmethod
        +1356    def string(cls, string) -> Literal:
        +1357        return cls(this=str(string), is_string=True)
         
        @@ -15487,10 +15909,12 @@ If an Expression instance is passed, it w
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -15529,100 +15953,100 @@ If an Expression instance is passed, it w
        -
        1333class Join(Expression):
        -1334    arg_types = {
        -1335        "this": True,
        -1336        "on": False,
        -1337        "side": False,
        -1338        "kind": False,
        -1339        "using": False,
        -1340        "natural": False,
        -1341    }
        -1342
        -1343    @property
        -1344    def kind(self):
        -1345        return self.text("kind").upper()
        -1346
        -1347    @property
        -1348    def side(self):
        -1349        return self.text("side").upper()
        -1350
        -1351    @property
        -1352    def alias_or_name(self):
        -1353        return self.this.alias_or_name
        -1354
        -1355    def on(self, *expressions, append=True, dialect=None, copy=True, **opts):
        -1356        """
        -1357        Append to or set the ON expressions.
        -1358
        -1359        Example:
        -1360            >>> import sqlglot
        -1361            >>> sqlglot.parse_one("JOIN x", into=Join).on("y = 1").sql()
        -1362            'JOIN x ON y = 1'
        -1363
        -1364        Args:
        -1365            *expressions (str | Expression): the SQL code strings to parse.
        -1366                If an `Expression` instance is passed, it will be used as-is.
        -1367                Multiple expressions are combined with an AND operator.
        -1368            append (bool): if `True`, AND the new expressions to any existing expression.
        -1369                Otherwise, this resets the expression.
        -1370            dialect (str): the dialect used to parse the input expressions.
        -1371            copy (bool): if `False`, modify this expression instance in-place.
        -1372            opts (kwargs): other options to use to parse the input expressions.
        +            
        1364class Join(Expression):
        +1365    arg_types = {
        +1366        "this": True,
        +1367        "on": False,
        +1368        "side": False,
        +1369        "kind": False,
        +1370        "using": False,
        +1371        "natural": False,
        +1372    }
         1373
        -1374        Returns:
        -1375            Join: the modified join expression.
        -1376        """
        -1377        join = _apply_conjunction_builder(
        -1378            *expressions,
        -1379            instance=self,
        -1380            arg="on",
        -1381            append=append,
        -1382            dialect=dialect,
        -1383            copy=copy,
        -1384            **opts,
        -1385        )
        -1386
        -1387        if join.kind == "CROSS":
        -1388            join.set("kind", None)
        +1374    @property
        +1375    def kind(self):
        +1376        return self.text("kind").upper()
        +1377
        +1378    @property
        +1379    def side(self):
        +1380        return self.text("side").upper()
        +1381
        +1382    @property
        +1383    def alias_or_name(self):
        +1384        return self.this.alias_or_name
        +1385
        +1386    def on(self, *expressions, append=True, dialect=None, copy=True, **opts):
        +1387        """
        +1388        Append to or set the ON expressions.
         1389
        -1390        return join
        -1391
        -1392    def using(self, *expressions, append=True, dialect=None, copy=True, **opts):
        -1393        """
        -1394        Append to or set the USING expressions.
        -1395
        -1396        Example:
        -1397            >>> import sqlglot
        -1398            >>> sqlglot.parse_one("JOIN x", into=Join).using("foo", "bla").sql()
        -1399            'JOIN x USING (foo, bla)'
        -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            append (bool): if `True`, concatenate the new expressions to the existing "using" list.
        -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_list_builder(
        -1414            *expressions,
        -1415            instance=self,
        -1416            arg="using",
        -1417            append=append,
        -1418            dialect=dialect,
        -1419            copy=copy,
        -1420            **opts,
        -1421        )
        +1390        Example:
        +1391            >>> import sqlglot
        +1392            >>> sqlglot.parse_one("JOIN x", into=Join).on("y = 1").sql()
        +1393            'JOIN x ON y = 1'
        +1394
        +1395        Args:
        +1396            *expressions (str | Expression): the SQL code strings to parse.
        +1397                If an `Expression` instance is passed, it will be used as-is.
        +1398                Multiple expressions are combined with an AND operator.
        +1399            append (bool): if `True`, AND the new expressions to any existing expression.
        +1400                Otherwise, this resets the expression.
        +1401            dialect (str): the dialect used to parse the input expressions.
        +1402            copy (bool): if `False`, modify this expression instance in-place.
        +1403            opts (kwargs): other options to use to parse the input expressions.
        +1404
        +1405        Returns:
        +1406            Join: the modified join expression.
        +1407        """
        +1408        join = _apply_conjunction_builder(
        +1409            *expressions,
        +1410            instance=self,
        +1411            arg="on",
        +1412            append=append,
        +1413            dialect=dialect,
        +1414            copy=copy,
        +1415            **opts,
        +1416        )
        +1417
        +1418        if join.kind == "CROSS":
        +1419            join.set("kind", None)
        +1420
        +1421        return join
         1422
        -1423        if join.kind == "CROSS":
        -1424            join.set("kind", None)
        -1425
        -1426        return join
        +1423    def using(self, *expressions, append=True, dialect=None, copy=True, **opts):
        +1424        """
        +1425        Append to or set the USING expressions.
        +1426
        +1427        Example:
        +1428            >>> import sqlglot
        +1429            >>> sqlglot.parse_one("JOIN x", into=Join).using("foo", "bla").sql()
        +1430            'JOIN x USING (foo, bla)'
        +1431
        +1432        Args:
        +1433            *expressions (str | Expression): the SQL code strings to parse.
        +1434                If an `Expression` instance is passed, it will be used as-is.
        +1435            append (bool): if `True`, concatenate the new expressions to the existing "using" list.
        +1436                Otherwise, this resets the expression.
        +1437            dialect (str): the dialect used to parse the input expressions.
        +1438            copy (bool): if `False`, modify this expression instance in-place.
        +1439            opts (kwargs): other options to use to parse the input expressions.
        +1440
        +1441        Returns:
        +1442            Join: the modified join expression.
        +1443        """
        +1444        join = _apply_list_builder(
        +1445            *expressions,
        +1446            instance=self,
        +1447            arg="using",
        +1448            append=append,
        +1449            dialect=dialect,
        +1450            copy=copy,
        +1451            **opts,
        +1452        )
        +1453
        +1454        if join.kind == "CROSS":
        +1455            join.set("kind", None)
        +1456
        +1457        return join
         
        @@ -15639,42 +16063,42 @@ If an Expression instance is passed, it w
        -
        1355    def on(self, *expressions, append=True, dialect=None, copy=True, **opts):
        -1356        """
        -1357        Append to or set the ON expressions.
        -1358
        -1359        Example:
        -1360            >>> import sqlglot
        -1361            >>> sqlglot.parse_one("JOIN x", into=Join).on("y = 1").sql()
        -1362            'JOIN x ON y = 1'
        -1363
        -1364        Args:
        -1365            *expressions (str | Expression): the SQL code strings to parse.
        -1366                If an `Expression` instance is passed, it will be used as-is.
        -1367                Multiple expressions are combined with an AND operator.
        -1368            append (bool): if `True`, AND the new expressions to any existing expression.
        -1369                Otherwise, this resets the expression.
        -1370            dialect (str): the dialect used to parse the input expressions.
        -1371            copy (bool): if `False`, modify this expression instance in-place.
        -1372            opts (kwargs): other options to use to parse the input expressions.
        -1373
        -1374        Returns:
        -1375            Join: the modified join expression.
        -1376        """
        -1377        join = _apply_conjunction_builder(
        -1378            *expressions,
        -1379            instance=self,
        -1380            arg="on",
        -1381            append=append,
        -1382            dialect=dialect,
        -1383            copy=copy,
        -1384            **opts,
        -1385        )
        -1386
        -1387        if join.kind == "CROSS":
        -1388            join.set("kind", None)
        +            
        1386    def on(self, *expressions, append=True, dialect=None, copy=True, **opts):
        +1387        """
        +1388        Append to or set the ON expressions.
         1389
        -1390        return join
        +1390        Example:
        +1391            >>> import sqlglot
        +1392            >>> sqlglot.parse_one("JOIN x", into=Join).on("y = 1").sql()
        +1393            'JOIN x ON y = 1'
        +1394
        +1395        Args:
        +1396            *expressions (str | Expression): the SQL code strings to parse.
        +1397                If an `Expression` instance is passed, it will be used as-is.
        +1398                Multiple expressions are combined with an AND operator.
        +1399            append (bool): if `True`, AND the new expressions to any existing expression.
        +1400                Otherwise, this resets the expression.
        +1401            dialect (str): the dialect used to parse the input expressions.
        +1402            copy (bool): if `False`, modify this expression instance in-place.
        +1403            opts (kwargs): other options to use to parse the input expressions.
        +1404
        +1405        Returns:
        +1406            Join: the modified join expression.
        +1407        """
        +1408        join = _apply_conjunction_builder(
        +1409            *expressions,
        +1410            instance=self,
        +1411            arg="on",
        +1412            append=append,
        +1413            dialect=dialect,
        +1414            copy=copy,
        +1415            **opts,
        +1416        )
        +1417
        +1418        if join.kind == "CROSS":
        +1419            join.set("kind", None)
        +1420
        +1421        return join
         
        @@ -15724,41 +16148,41 @@ Otherwise, this resets the expression.
        -
        1392    def using(self, *expressions, append=True, dialect=None, copy=True, **opts):
        -1393        """
        -1394        Append to or set the USING expressions.
        -1395
        -1396        Example:
        -1397            >>> import sqlglot
        -1398            >>> sqlglot.parse_one("JOIN x", into=Join).using("foo", "bla").sql()
        -1399            'JOIN x USING (foo, bla)'
        -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            append (bool): if `True`, concatenate the new expressions to the existing "using" list.
        -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_list_builder(
        -1414            *expressions,
        -1415            instance=self,
        -1416            arg="using",
        -1417            append=append,
        -1418            dialect=dialect,
        -1419            copy=copy,
        -1420            **opts,
        -1421        )
        -1422
        -1423        if join.kind == "CROSS":
        -1424            join.set("kind", None)
        -1425
        -1426        return join
        +            
        1423    def using(self, *expressions, append=True, dialect=None, copy=True, **opts):
        +1424        """
        +1425        Append to or set the USING expressions.
        +1426
        +1427        Example:
        +1428            >>> import sqlglot
        +1429            >>> sqlglot.parse_one("JOIN x", into=Join).using("foo", "bla").sql()
        +1430            'JOIN x USING (foo, bla)'
        +1431
        +1432        Args:
        +1433            *expressions (str | Expression): the SQL code strings to parse.
        +1434                If an `Expression` instance is passed, it will be used as-is.
        +1435            append (bool): if `True`, concatenate the new expressions to the existing "using" list.
        +1436                Otherwise, this resets the expression.
        +1437            dialect (str): the dialect used to parse the input expressions.
        +1438            copy (bool): if `False`, modify this expression instance in-place.
        +1439            opts (kwargs): other options to use to parse the input expressions.
        +1440
        +1441        Returns:
        +1442            Join: the modified join expression.
        +1443        """
        +1444        join = _apply_list_builder(
        +1445            *expressions,
        +1446            instance=self,
        +1447            arg="using",
        +1448            append=append,
        +1449            dialect=dialect,
        +1450            copy=copy,
        +1451            **opts,
        +1452        )
        +1453
        +1454        if join.kind == "CROSS":
        +1455            join.set("kind", None)
        +1456
        +1457        return join
         
        @@ -15815,10 +16239,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -15851,8 +16277,8 @@ Otherwise, this resets the expression.
        -
        1429class Lateral(UDTF):
        -1430    arg_types = {"this": True, "view": False, "outer": False, "alias": False}
        +            
        1460class Lateral(UDTF):
        +1461    arg_types = {"this": True, "view": False, "outer": False, "alias": False}
         
        @@ -15877,10 +16303,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -15919,16 +16347,16 @@ Otherwise, this resets the expression.
        -
        1433class MatchRecognize(Expression):
        -1434    arg_types = {
        -1435        "partition_by": False,
        -1436        "order": False,
        -1437        "measures": False,
        -1438        "rows": False,
        -1439        "after": False,
        -1440        "pattern": False,
        -1441        "define": False,
        -1442    }
        +            
        1464class MatchRecognize(Expression):
        +1465    arg_types = {
        +1466        "partition_by": False,
        +1467        "order": False,
        +1468        "measures": False,
        +1469        "rows": False,
        +1470        "after": False,
        +1471        "pattern": False,
        +1472        "define": False,
        +1473    }
         
        @@ -15953,10 +16381,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -15989,8 +16419,8 @@ Otherwise, this resets the expression.
        -
        1447class Final(Expression):
        -1448    pass
        +            
        1478class Final(Expression):
        +1479    pass
         
        @@ -16015,10 +16445,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -16051,8 +16483,8 @@ Otherwise, this resets the expression.
        -
        1451class Offset(Expression):
        -1452    arg_types = {"this": False, "expression": True}
        +            
        1482class Offset(Expression):
        +1483    arg_types = {"this": False, "expression": True}
         
        @@ -16077,10 +16509,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -16113,8 +16547,8 @@ Otherwise, this resets the expression.
        -
        1455class Order(Expression):
        -1456    arg_types = {"this": False, "expressions": True}
        +            
        1486class Order(Expression):
        +1487    arg_types = {"this": False, "expressions": True}
         
        @@ -16139,10 +16573,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -16175,8 +16611,8 @@ Otherwise, this resets the expression.
        -
        1461class Cluster(Order):
        -1462    pass
        +            
        1492class Cluster(Order):
        +1493    pass
         
        @@ -16201,10 +16637,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -16237,8 +16675,8 @@ Otherwise, this resets the expression.
        -
        1465class Distribute(Order):
        -1466    pass
        +            
        1496class Distribute(Order):
        +1497    pass
         
        @@ -16263,10 +16701,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -16299,8 +16739,8 @@ Otherwise, this resets the expression.
        -
        1469class Sort(Order):
        -1470    pass
        +            
        1500class Sort(Order):
        +1501    pass
         
        @@ -16325,10 +16765,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -16361,8 +16803,8 @@ Otherwise, this resets the expression.
        -
        1473class Ordered(Expression):
        -1474    arg_types = {"this": True, "desc": True, "nulls_first": True}
        +            
        1504class Ordered(Expression):
        +1505    arg_types = {"this": True, "desc": True, "nulls_first": True}
         
        @@ -16387,10 +16829,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -16423,8 +16867,8 @@ Otherwise, this resets the expression.
        -
        1477class Property(Expression):
        -1478    arg_types = {"this": True, "value": True}
        +            
        1508class Property(Expression):
        +1509    arg_types = {"this": True, "value": True}
         
        @@ -16449,10 +16893,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -16485,8 +16931,8 @@ Otherwise, this resets the expression.
        -
        1481class AfterJournalProperty(Property):
        -1482    arg_types = {"no": True, "dual": False, "local": False}
        +            
        1512class AfterJournalProperty(Property):
        +1513    arg_types = {"no": True, "dual": False, "local": False}
         
        @@ -16511,10 +16957,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -16547,8 +16995,8 @@ Otherwise, this resets the expression.
        -
        1485class AlgorithmProperty(Property):
        -1486    arg_types = {"this": True}
        +            
        1516class AlgorithmProperty(Property):
        +1517    arg_types = {"this": True}
         
        @@ -16573,10 +17021,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -16609,8 +17059,8 @@ Otherwise, this resets the expression.
        -
        1489class AutoIncrementProperty(Property):
        -1490    arg_types = {"this": True}
        +            
        1520class AutoIncrementProperty(Property):
        +1521    arg_types = {"this": True}
         
        @@ -16635,10 +17085,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -16671,8 +17123,8 @@ Otherwise, this resets the expression.
        -
        1493class BlockCompressionProperty(Property):
        -1494    arg_types = {"autotemp": False, "always": False, "default": True, "manual": True, "never": True}
        +            
        1524class BlockCompressionProperty(Property):
        +1525    arg_types = {"autotemp": False, "always": False, "default": True, "manual": True, "never": True}
         
        @@ -16697,10 +17149,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -16733,8 +17187,8 @@ Otherwise, this resets the expression.
        -
        1497class CharacterSetProperty(Property):
        -1498    arg_types = {"this": True, "default": True}
        +            
        1528class CharacterSetProperty(Property):
        +1529    arg_types = {"this": True, "default": True}
         
        @@ -16759,10 +17213,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -16795,8 +17251,8 @@ Otherwise, this resets the expression.
        -
        1501class ChecksumProperty(Property):
        -1502    arg_types = {"on": False, "default": False}
        +            
        1532class ChecksumProperty(Property):
        +1533    arg_types = {"on": False, "default": False}
         
        @@ -16821,10 +17277,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -16857,8 +17315,8 @@ Otherwise, this resets the expression.
        -
        1505class CollateProperty(Property):
        -1506    arg_types = {"this": True}
        +            
        1536class CollateProperty(Property):
        +1537    arg_types = {"this": True}
         
        @@ -16883,10 +17341,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -16919,8 +17379,8 @@ Otherwise, this resets the expression.
        -
        1509class DataBlocksizeProperty(Property):
        -1510    arg_types = {"size": False, "units": False, "min": False, "default": False}
        +            
        1540class DataBlocksizeProperty(Property):
        +1541    arg_types = {"size": False, "units": False, "min": False, "default": False}
         
        @@ -16945,10 +17405,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -16981,8 +17443,8 @@ Otherwise, this resets the expression.
        -
        1513class DefinerProperty(Property):
        -1514    arg_types = {"this": True}
        +            
        1544class DefinerProperty(Property):
        +1545    arg_types = {"this": True}
         
        @@ -17007,10 +17469,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -17043,8 +17507,8 @@ Otherwise, this resets the expression.
        -
        1517class DistKeyProperty(Property):
        -1518    arg_types = {"this": True}
        +            
        1548class DistKeyProperty(Property):
        +1549    arg_types = {"this": True}
         
        @@ -17069,10 +17533,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -17105,8 +17571,8 @@ Otherwise, this resets the expression.
        -
        1521class DistStyleProperty(Property):
        -1522    arg_types = {"this": True}
        +            
        1552class DistStyleProperty(Property):
        +1553    arg_types = {"this": True}
         
        @@ -17131,10 +17597,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -17167,8 +17635,8 @@ Otherwise, this resets the expression.
        -
        1525class EngineProperty(Property):
        -1526    arg_types = {"this": True}
        +            
        1556class EngineProperty(Property):
        +1557    arg_types = {"this": True}
         
        @@ -17193,10 +17661,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -17229,8 +17699,8 @@ Otherwise, this resets the expression.
        -
        1529class ExecuteAsProperty(Property):
        -1530    arg_types = {"this": True}
        +            
        1560class ExecuteAsProperty(Property):
        +1561    arg_types = {"this": True}
         
        @@ -17255,10 +17725,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -17291,8 +17763,8 @@ Otherwise, this resets the expression.
        -
        1533class ExternalProperty(Property):
        -1534    arg_types = {"this": False}
        +            
        1564class ExternalProperty(Property):
        +1565    arg_types = {"this": False}
         
        @@ -17317,10 +17789,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -17353,8 +17827,8 @@ Otherwise, this resets the expression.
        -
        1537class FallbackProperty(Property):
        -1538    arg_types = {"no": True, "protection": False}
        +            
        1568class FallbackProperty(Property):
        +1569    arg_types = {"no": True, "protection": False}
         
        @@ -17379,10 +17853,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -17415,8 +17891,8 @@ Otherwise, this resets the expression.
        -
        1541class FileFormatProperty(Property):
        -1542    arg_types = {"this": True}
        +            
        1572class FileFormatProperty(Property):
        +1573    arg_types = {"this": True}
         
        @@ -17441,10 +17917,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -17477,8 +17955,8 @@ Otherwise, this resets the expression.
        -
        1545class FreespaceProperty(Property):
        -1546    arg_types = {"this": True, "percent": False}
        +            
        1576class FreespaceProperty(Property):
        +1577    arg_types = {"this": True, "percent": False}
         
        @@ -17503,10 +17981,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -17539,14 +18019,14 @@ Otherwise, this resets the expression.
        -
        1549class IsolatedLoadingProperty(Property):
        -1550    arg_types = {
        -1551        "no": True,
        -1552        "concurrent": True,
        -1553        "for_all": True,
        -1554        "for_insert": True,
        -1555        "for_none": True,
        -1556    }
        +            
        1580class IsolatedLoadingProperty(Property):
        +1581    arg_types = {
        +1582        "no": True,
        +1583        "concurrent": True,
        +1584        "for_all": True,
        +1585        "for_insert": True,
        +1586        "for_none": True,
        +1587    }
         
        @@ -17571,10 +18051,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -17607,8 +18089,8 @@ Otherwise, this resets the expression.
        -
        1559class JournalProperty(Property):
        -1560    arg_types = {"no": True, "dual": False, "before": False}
        +            
        1590class JournalProperty(Property):
        +1591    arg_types = {"no": True, "dual": False, "before": False}
         
        @@ -17633,10 +18115,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -17669,8 +18153,8 @@ Otherwise, this resets the expression.
        -
        1563class LanguageProperty(Property):
        -1564    arg_types = {"this": True}
        +            
        1594class LanguageProperty(Property):
        +1595    arg_types = {"this": True}
         
        @@ -17695,10 +18179,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -17731,8 +18217,8 @@ Otherwise, this resets the expression.
        -
        1567class LikeProperty(Property):
        -1568    arg_types = {"this": True, "expressions": False}
        +            
        1598class LikeProperty(Property):
        +1599    arg_types = {"this": True, "expressions": False}
         
        @@ -17757,10 +18243,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -17793,8 +18281,8 @@ Otherwise, this resets the expression.
        -
        1571class LocationProperty(Property):
        -1572    arg_types = {"this": True}
        +            
        1602class LocationProperty(Property):
        +1603    arg_types = {"this": True}
         
        @@ -17819,10 +18307,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -17855,14 +18345,14 @@ Otherwise, this resets the expression.
        -
        1575class LockingProperty(Property):
        -1576    arg_types = {
        -1577        "this": False,
        -1578        "kind": True,
        -1579        "for_or_in": True,
        -1580        "lock_type": True,
        -1581        "override": False,
        -1582    }
        +            
        1606class LockingProperty(Property):
        +1607    arg_types = {
        +1608        "this": False,
        +1609        "kind": True,
        +1610        "for_or_in": True,
        +1611        "lock_type": True,
        +1612        "override": False,
        +1613    }
         
        @@ -17887,10 +18377,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -17923,8 +18415,8 @@ Otherwise, this resets the expression.
        -
        1585class LogProperty(Property):
        -1586    arg_types = {"no": True}
        +            
        1616class LogProperty(Property):
        +1617    arg_types = {"no": True}
         
        @@ -17949,10 +18441,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -17985,8 +18479,8 @@ Otherwise, this resets the expression.
        -
        1589class MaterializedProperty(Property):
        -1590    arg_types = {"this": False}
        +            
        1620class MaterializedProperty(Property):
        +1621    arg_types = {"this": False}
         
        @@ -18011,10 +18505,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -18047,8 +18543,8 @@ Otherwise, this resets the expression.
        -
        1593class MergeBlockRatioProperty(Property):
        -1594    arg_types = {"this": False, "no": False, "default": False, "percent": False}
        +            
        1624class MergeBlockRatioProperty(Property):
        +1625    arg_types = {"this": False, "no": False, "default": False, "percent": False}
         
        @@ -18073,10 +18569,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -18109,8 +18607,8 @@ Otherwise, this resets the expression.
        -
        1597class NoPrimaryIndexProperty(Property):
        -1598    arg_types = {"this": False}
        +            
        1628class NoPrimaryIndexProperty(Property):
        +1629    arg_types = {"this": False}
         
        @@ -18135,10 +18633,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -18171,8 +18671,8 @@ Otherwise, this resets the expression.
        -
        1601class OnCommitProperty(Property):
        -1602    arg_type = {"this": False}
        +            
        1632class OnCommitProperty(Property):
        +1633    arg_type = {"this": False}
         
        @@ -18197,10 +18697,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -18233,8 +18735,8 @@ Otherwise, this resets the expression.
        -
        1605class PartitionedByProperty(Property):
        -1606    arg_types = {"this": True}
        +            
        1636class PartitionedByProperty(Property):
        +1637    arg_types = {"this": True}
         
        @@ -18259,10 +18761,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -18295,8 +18799,8 @@ Otherwise, this resets the expression.
        -
        1609class ReturnsProperty(Property):
        -1610    arg_types = {"this": True, "is_table": False, "table": False}
        +            
        1640class ReturnsProperty(Property):
        +1641    arg_types = {"this": True, "is_table": False, "table": False}
         
        @@ -18321,10 +18825,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -18357,17 +18863,17 @@ Otherwise, this resets the expression.
        -
        1613class RowFormatDelimitedProperty(Property):
        -1614    # https://cwiki.apache.org/confluence/display/hive/languagemanual+dml
        -1615    arg_types = {
        -1616        "fields": False,
        -1617        "escaped": False,
        -1618        "collection_items": False,
        -1619        "map_keys": False,
        -1620        "lines": False,
        -1621        "null": False,
        -1622        "serde": False,
        -1623    }
        +            
        1644class RowFormatDelimitedProperty(Property):
        +1645    # https://cwiki.apache.org/confluence/display/hive/languagemanual+dml
        +1646    arg_types = {
        +1647        "fields": False,
        +1648        "escaped": False,
        +1649        "collection_items": False,
        +1650        "map_keys": False,
        +1651        "lines": False,
        +1652        "null": False,
        +1653        "serde": False,
        +1654    }
         
        @@ -18392,10 +18898,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -18428,8 +18936,8 @@ Otherwise, this resets the expression.
        -
        1626class RowFormatSerdeProperty(Property):
        -1627    arg_types = {"this": True}
        +            
        1657class RowFormatSerdeProperty(Property):
        +1658    arg_types = {"this": True}
         
        @@ -18454,10 +18962,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -18490,8 +19000,8 @@ Otherwise, this resets the expression.
        -
        1630class SchemaCommentProperty(Property):
        -1631    arg_types = {"this": True}
        +            
        1661class SchemaCommentProperty(Property):
        +1662    arg_types = {"this": True}
         
        @@ -18516,10 +19026,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -18552,8 +19064,8 @@ Otherwise, this resets the expression.
        -
        1634class SerdeProperties(Property):
        -1635    arg_types = {"expressions": True}
        +            
        1665class SerdeProperties(Property):
        +1666    arg_types = {"expressions": True}
         
        @@ -18578,10 +19090,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -18614,8 +19128,8 @@ Otherwise, this resets the expression.
        -
        1638class SetProperty(Property):
        -1639    arg_types = {"multi": True}
        +            
        1669class SetProperty(Property):
        +1670    arg_types = {"multi": True}
         
        @@ -18640,10 +19154,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -18676,8 +19192,8 @@ Otherwise, this resets the expression.
        -
        1642class SortKeyProperty(Property):
        -1643    arg_types = {"this": True, "compound": False}
        +            
        1673class SortKeyProperty(Property):
        +1674    arg_types = {"this": True, "compound": False}
         
        @@ -18702,10 +19218,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -18738,8 +19256,8 @@ Otherwise, this resets the expression.
        -
        1646class SqlSecurityProperty(Property):
        -1647    arg_types = {"definer": True}
        +            
        1677class SqlSecurityProperty(Property):
        +1678    arg_types = {"definer": True}
         
        @@ -18764,10 +19282,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -18800,8 +19320,8 @@ Otherwise, this resets the expression.
        -
        1650class TableFormatProperty(Property):
        -1651    arg_types = {"this": True}
        +            
        1681class TableFormatProperty(Property):
        +1682    arg_types = {"this": True}
         
        @@ -18826,10 +19346,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -18862,8 +19384,8 @@ Otherwise, this resets the expression.
        -
        1654class TemporaryProperty(Property):
        -1655    arg_types = {"global_": True}
        +            
        1685class TemporaryProperty(Property):
        +1686    arg_types = {"global_": True}
         
        @@ -18888,10 +19410,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -18924,8 +19448,8 @@ Otherwise, this resets the expression.
        -
        1658class TransientProperty(Property):
        -1659    arg_types = {"this": False}
        +            
        1689class TransientProperty(Property):
        +1690    arg_types = {"this": False}
         
        @@ -18950,10 +19474,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -18986,8 +19512,8 @@ Otherwise, this resets the expression.
        -
        1662class VolatilityProperty(Property):
        -1663    arg_types = {"this": True}
        +            
        1693class VolatilityProperty(Property):
        +1694    arg_types = {"this": True}
         
        @@ -19012,10 +19538,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -19048,8 +19576,8 @@ Otherwise, this resets the expression.
        -
        1666class WithDataProperty(Property):
        -1667    arg_types = {"no": True, "statistics": False}
        +            
        1697class WithDataProperty(Property):
        +1698    arg_types = {"no": True, "statistics": False}
         
        @@ -19074,10 +19602,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -19110,8 +19640,8 @@ Otherwise, this resets the expression.
        -
        1670class WithJournalTableProperty(Property):
        -1671    arg_types = {"this": True}
        +            
        1701class WithJournalTableProperty(Property):
        +1702    arg_types = {"this": True}
         
        @@ -19136,10 +19666,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -19172,65 +19704,65 @@ Otherwise, this resets the expression.
        -
        1674class Properties(Expression):
        -1675    arg_types = {"expressions": True}
        -1676
        -1677    NAME_TO_PROPERTY = {
        -1678        "ALGORITHM": AlgorithmProperty,
        -1679        "AUTO_INCREMENT": AutoIncrementProperty,
        -1680        "CHARACTER SET": CharacterSetProperty,
        -1681        "COLLATE": CollateProperty,
        -1682        "COMMENT": SchemaCommentProperty,
        -1683        "DEFINER": DefinerProperty,
        -1684        "DISTKEY": DistKeyProperty,
        -1685        "DISTSTYLE": DistStyleProperty,
        -1686        "ENGINE": EngineProperty,
        -1687        "EXECUTE AS": ExecuteAsProperty,
        -1688        "FORMAT": FileFormatProperty,
        -1689        "LANGUAGE": LanguageProperty,
        -1690        "LOCATION": LocationProperty,
        -1691        "PARTITIONED_BY": PartitionedByProperty,
        -1692        "RETURNS": ReturnsProperty,
        -1693        "SORTKEY": SortKeyProperty,
        -1694        "TABLE_FORMAT": TableFormatProperty,
        -1695    }
        -1696
        -1697    PROPERTY_TO_NAME = {v: k for k, v in NAME_TO_PROPERTY.items()}
        -1698
        -1699    # CREATE property locations
        -1700    # Form: schema specified
        -1701    #   create [POST_CREATE]
        -1702    #     table a [POST_NAME]
        -1703    #     (b int) [POST_SCHEMA]
        -1704    #     with ([POST_WITH])
        -1705    #     index (b) [POST_INDEX]
        -1706    #
        -1707    # Form: alias selection
        -1708    #   create [POST_CREATE]
        -1709    #     table a [POST_NAME]
        -1710    #     as [POST_ALIAS] (select * from b) [POST_EXPRESSION]
        -1711    #     index (c) [POST_INDEX]
        -1712    class Location(AutoName):
        -1713        POST_CREATE = auto()
        -1714        POST_NAME = auto()
        -1715        POST_SCHEMA = auto()
        -1716        POST_WITH = auto()
        -1717        POST_ALIAS = auto()
        -1718        POST_EXPRESSION = auto()
        -1719        POST_INDEX = auto()
        -1720        UNSUPPORTED = auto()
        -1721
        -1722    @classmethod
        -1723    def from_dict(cls, properties_dict) -> Properties:
        -1724        expressions = []
        -1725        for key, value in properties_dict.items():
        -1726            property_cls = cls.NAME_TO_PROPERTY.get(key.upper())
        -1727            if property_cls:
        -1728                expressions.append(property_cls(this=convert(value)))
        -1729            else:
        -1730                expressions.append(Property(this=Literal.string(key), value=convert(value)))
        -1731
        -1732        return cls(expressions=expressions)
        +            
        1705class Properties(Expression):
        +1706    arg_types = {"expressions": True}
        +1707
        +1708    NAME_TO_PROPERTY = {
        +1709        "ALGORITHM": AlgorithmProperty,
        +1710        "AUTO_INCREMENT": AutoIncrementProperty,
        +1711        "CHARACTER SET": CharacterSetProperty,
        +1712        "COLLATE": CollateProperty,
        +1713        "COMMENT": SchemaCommentProperty,
        +1714        "DEFINER": DefinerProperty,
        +1715        "DISTKEY": DistKeyProperty,
        +1716        "DISTSTYLE": DistStyleProperty,
        +1717        "ENGINE": EngineProperty,
        +1718        "EXECUTE AS": ExecuteAsProperty,
        +1719        "FORMAT": FileFormatProperty,
        +1720        "LANGUAGE": LanguageProperty,
        +1721        "LOCATION": LocationProperty,
        +1722        "PARTITIONED_BY": PartitionedByProperty,
        +1723        "RETURNS": ReturnsProperty,
        +1724        "SORTKEY": SortKeyProperty,
        +1725        "TABLE_FORMAT": TableFormatProperty,
        +1726    }
        +1727
        +1728    PROPERTY_TO_NAME = {v: k for k, v in NAME_TO_PROPERTY.items()}
        +1729
        +1730    # CREATE property locations
        +1731    # Form: schema specified
        +1732    #   create [POST_CREATE]
        +1733    #     table a [POST_NAME]
        +1734    #     (b int) [POST_SCHEMA]
        +1735    #     with ([POST_WITH])
        +1736    #     index (b) [POST_INDEX]
        +1737    #
        +1738    # Form: alias selection
        +1739    #   create [POST_CREATE]
        +1740    #     table a [POST_NAME]
        +1741    #     as [POST_ALIAS] (select * from b) [POST_EXPRESSION]
        +1742    #     index (c) [POST_INDEX]
        +1743    class Location(AutoName):
        +1744        POST_CREATE = auto()
        +1745        POST_NAME = auto()
        +1746        POST_SCHEMA = auto()
        +1747        POST_WITH = auto()
        +1748        POST_ALIAS = auto()
        +1749        POST_EXPRESSION = auto()
        +1750        POST_INDEX = auto()
        +1751        UNSUPPORTED = auto()
        +1752
        +1753    @classmethod
        +1754    def from_dict(cls, properties_dict) -> Properties:
        +1755        expressions = []
        +1756        for key, value in properties_dict.items():
        +1757            property_cls = cls.NAME_TO_PROPERTY.get(key.upper())
        +1758            if property_cls:
        +1759                expressions.append(property_cls(this=convert(value)))
        +1760            else:
        +1761                expressions.append(Property(this=Literal.string(key), value=convert(value)))
        +1762
        +1763        return cls(expressions=expressions)
         
        @@ -19248,17 +19780,17 @@ Otherwise, this resets the expression.
        -
        1722    @classmethod
        -1723    def from_dict(cls, properties_dict) -> Properties:
        -1724        expressions = []
        -1725        for key, value in properties_dict.items():
        -1726            property_cls = cls.NAME_TO_PROPERTY.get(key.upper())
        -1727            if property_cls:
        -1728                expressions.append(property_cls(this=convert(value)))
        -1729            else:
        -1730                expressions.append(Property(this=Literal.string(key), value=convert(value)))
        -1731
        -1732        return cls(expressions=expressions)
        +            
        1753    @classmethod
        +1754    def from_dict(cls, properties_dict) -> Properties:
        +1755        expressions = []
        +1756        for key, value in properties_dict.items():
        +1757            property_cls = cls.NAME_TO_PROPERTY.get(key.upper())
        +1758            if property_cls:
        +1759                expressions.append(property_cls(this=convert(value)))
        +1760            else:
        +1761                expressions.append(Property(this=Literal.string(key), value=convert(value)))
        +1762
        +1763        return cls(expressions=expressions)
         
        @@ -19284,10 +19816,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -19320,15 +19854,15 @@ Otherwise, this resets the expression.
        -
        1712    class Location(AutoName):
        -1713        POST_CREATE = auto()
        -1714        POST_NAME = auto()
        -1715        POST_SCHEMA = auto()
        -1716        POST_WITH = auto()
        -1717        POST_ALIAS = auto()
        -1718        POST_EXPRESSION = auto()
        -1719        POST_INDEX = auto()
        -1720        UNSUPPORTED = auto()
        +            
        1743    class Location(AutoName):
        +1744        POST_CREATE = auto()
        +1745        POST_NAME = auto()
        +1746        POST_SCHEMA = auto()
        +1747        POST_WITH = auto()
        +1748        POST_ALIAS = auto()
        +1749        POST_EXPRESSION = auto()
        +1750        POST_INDEX = auto()
        +1751        UNSUPPORTED = auto()
         
        @@ -19454,8 +19988,8 @@ Otherwise, this resets the expression.
        -
        1735class Qualify(Expression):
        -1736    pass
        +            
        1766class Qualify(Expression):
        +1767    pass
         
        @@ -19480,10 +20014,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -19516,8 +20052,8 @@ Otherwise, this resets the expression.
        -
        1740class Return(Expression):
        -1741    pass
        +            
        1771class Return(Expression):
        +1772    pass
         
        @@ -19542,10 +20078,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -19578,8 +20116,8 @@ Otherwise, this resets the expression.
        -
        1744class Reference(Expression):
        -1745    arg_types = {"this": True, "expressions": False, "options": False}
        +            
        1775class Reference(Expression):
        +1776    arg_types = {"this": True, "expressions": False, "options": False}
         
        @@ -19604,10 +20142,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -19640,8 +20180,8 @@ Otherwise, this resets the expression.
        -
        1748class Tuple(Expression):
        -1749    arg_types = {"expressions": False}
        +            
        1779class Tuple(Expression):
        +1780    arg_types = {"expressions": False}
         
        @@ -19666,10 +20206,12 @@ Otherwise, this resets the expression.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -19702,103 +20244,103 @@ Otherwise, this resets the expression.
        -
        1752class Subqueryable(Unionable):
        -1753    def subquery(self, alias=None, copy=True) -> Subquery:
        -1754        """
        -1755        Convert this expression to an aliased expression that can be used as a Subquery.
        -1756
        -1757        Example:
        -1758            >>> subquery = Select().select("x").from_("tbl").subquery()
        -1759            >>> Select().select("x").from_(subquery).sql()
        -1760            'SELECT x FROM (SELECT x FROM tbl)'
        -1761
        -1762        Args:
        -1763            alias (str | Identifier): an optional alias for the subquery
        -1764            copy (bool): if `False`, modify this expression instance in-place.
        -1765
        -1766        Returns:
        -1767            Alias: the subquery
        -1768        """
        -1769        instance = _maybe_copy(self, copy)
        -1770        return Subquery(
        -1771            this=instance,
        -1772            alias=TableAlias(this=to_identifier(alias)),
        -1773        )
        -1774
        -1775    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
        -1776        raise NotImplementedError
        -1777
        -1778    @property
        -1779    def ctes(self):
        -1780        with_ = self.args.get("with")
        -1781        if not with_:
        -1782            return []
        -1783        return with_.expressions
        -1784
        -1785    @property
        -1786    def selects(self):
        -1787        raise NotImplementedError("Subqueryable objects must implement `selects`")
        -1788
        -1789    @property
        -1790    def named_selects(self):
        -1791        raise NotImplementedError("Subqueryable objects must implement `named_selects`")
        +            
        1783class Subqueryable(Unionable):
        +1784    def subquery(self, alias=None, copy=True) -> Subquery:
        +1785        """
        +1786        Convert this expression to an aliased expression that can be used as a Subquery.
        +1787
        +1788        Example:
        +1789            >>> subquery = Select().select("x").from_("tbl").subquery()
        +1790            >>> Select().select("x").from_(subquery).sql()
        +1791            'SELECT x FROM (SELECT x FROM tbl)'
         1792
        -1793    def with_(
        -1794        self,
        -1795        alias,
        -1796        as_,
        -1797        recursive=None,
        -1798        append=True,
        -1799        dialect=None,
        -1800        copy=True,
        -1801        **opts,
        -1802    ):
        -1803        """
        -1804        Append to or set the common table expressions.
        +1793        Args:
        +1794            alias (str | Identifier): an optional alias for the subquery
        +1795            copy (bool): if `False`, modify this expression instance in-place.
        +1796
        +1797        Returns:
        +1798            Alias: the subquery
        +1799        """
        +1800        instance = _maybe_copy(self, copy)
        +1801        return Subquery(
        +1802            this=instance,
        +1803            alias=TableAlias(this=to_identifier(alias)) if alias else None,
        +1804        )
         1805
        -1806        Example:
        -1807            >>> Select().with_("tbl2", as_="SELECT * FROM tbl").select("x").from_("tbl2").sql()
        -1808            'WITH tbl2 AS (SELECT * FROM tbl) SELECT x FROM tbl2'
        -1809
        -1810        Args:
        -1811            alias (str | Expression): the SQL code string to parse as the table name.
        -1812                If an `Expression` instance is passed, this is used as-is.
        -1813            as_ (str | Expression): the SQL code string to parse as the table expression.
        -1814                If an `Expression` instance is passed, it will be used as-is.
        -1815            recursive (bool): set the RECURSIVE part of the expression. Defaults to `False`.
        -1816            append (bool): if `True`, add to any existing expressions.
        -1817                Otherwise, this resets the expressions.
        -1818            dialect (str): the dialect used to parse the input expression.
        -1819            copy (bool): if `False`, modify this expression instance in-place.
        -1820            opts (kwargs): other options to use to parse the input expressions.
        -1821
        -1822        Returns:
        -1823            Select: the modified expression.
        -1824        """
        -1825        alias_expression = maybe_parse(
        -1826            alias,
        -1827            dialect=dialect,
        -1828            into=TableAlias,
        -1829            **opts,
        -1830        )
        -1831        as_expression = maybe_parse(
        -1832            as_,
        -1833            dialect=dialect,
        -1834            **opts,
        -1835        )
        -1836        cte = CTE(
        -1837            this=as_expression,
        -1838            alias=alias_expression,
        -1839        )
        -1840        return _apply_child_list_builder(
        -1841            cte,
        -1842            instance=self,
        -1843            arg="with",
        -1844            append=append,
        -1845            copy=copy,
        -1846            into=With,
        -1847            properties={"recursive": recursive or False},
        -1848        )
        +1806    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
        +1807        raise NotImplementedError
        +1808
        +1809    @property
        +1810    def ctes(self):
        +1811        with_ = self.args.get("with")
        +1812        if not with_:
        +1813            return []
        +1814        return with_.expressions
        +1815
        +1816    @property
        +1817    def selects(self):
        +1818        raise NotImplementedError("Subqueryable objects must implement `selects`")
        +1819
        +1820    @property
        +1821    def named_selects(self):
        +1822        raise NotImplementedError("Subqueryable objects must implement `named_selects`")
        +1823
        +1824    def with_(
        +1825        self,
        +1826        alias,
        +1827        as_,
        +1828        recursive=None,
        +1829        append=True,
        +1830        dialect=None,
        +1831        copy=True,
        +1832        **opts,
        +1833    ):
        +1834        """
        +1835        Append to or set the common table expressions.
        +1836
        +1837        Example:
        +1838            >>> Select().with_("tbl2", as_="SELECT * FROM tbl").select("x").from_("tbl2").sql()
        +1839            'WITH tbl2 AS (SELECT * FROM tbl) SELECT x FROM tbl2'
        +1840
        +1841        Args:
        +1842            alias (str | Expression): the SQL code string to parse as the table name.
        +1843                If an `Expression` instance is passed, this is used as-is.
        +1844            as_ (str | Expression): the SQL code string to parse as the table expression.
        +1845                If an `Expression` instance is passed, it will be used as-is.
        +1846            recursive (bool): set the RECURSIVE part of the expression. Defaults to `False`.
        +1847            append (bool): if `True`, add to any existing expressions.
        +1848                Otherwise, this resets the expressions.
        +1849            dialect (str): the dialect used to parse the input expression.
        +1850            copy (bool): if `False`, modify this expression instance in-place.
        +1851            opts (kwargs): other options to use to parse the input expressions.
        +1852
        +1853        Returns:
        +1854            Select: the modified expression.
        +1855        """
        +1856        alias_expression = maybe_parse(
        +1857            alias,
        +1858            dialect=dialect,
        +1859            into=TableAlias,
        +1860            **opts,
        +1861        )
        +1862        as_expression = maybe_parse(
        +1863            as_,
        +1864            dialect=dialect,
        +1865            **opts,
        +1866        )
        +1867        cte = CTE(
        +1868            this=as_expression,
        +1869            alias=alias_expression,
        +1870        )
        +1871        return _apply_child_list_builder(
        +1872            cte,
        +1873            instance=self,
        +1874            arg="with",
        +1875            append=append,
        +1876            copy=copy,
        +1877            into=With,
        +1878            properties={"recursive": recursive or False},
        +1879        )
         
        @@ -19815,27 +20357,27 @@ Otherwise, this resets the expression.
        -
        1753    def subquery(self, alias=None, copy=True) -> Subquery:
        -1754        """
        -1755        Convert this expression to an aliased expression that can be used as a Subquery.
        -1756
        -1757        Example:
        -1758            >>> subquery = Select().select("x").from_("tbl").subquery()
        -1759            >>> Select().select("x").from_(subquery).sql()
        -1760            'SELECT x FROM (SELECT x FROM tbl)'
        -1761
        -1762        Args:
        -1763            alias (str | Identifier): an optional alias for the subquery
        -1764            copy (bool): if `False`, modify this expression instance in-place.
        -1765
        -1766        Returns:
        -1767            Alias: the subquery
        -1768        """
        -1769        instance = _maybe_copy(self, copy)
        -1770        return Subquery(
        -1771            this=instance,
        -1772            alias=TableAlias(this=to_identifier(alias)),
        -1773        )
        +            
        1784    def subquery(self, alias=None, copy=True) -> Subquery:
        +1785        """
        +1786        Convert this expression to an aliased expression that can be used as a Subquery.
        +1787
        +1788        Example:
        +1789            >>> subquery = Select().select("x").from_("tbl").subquery()
        +1790            >>> Select().select("x").from_(subquery).sql()
        +1791            'SELECT x FROM (SELECT x FROM tbl)'
        +1792
        +1793        Args:
        +1794            alias (str | Identifier): an optional alias for the subquery
        +1795            copy (bool): if `False`, modify this expression instance in-place.
        +1796
        +1797        Returns:
        +1798            Alias: the subquery
        +1799        """
        +1800        instance = _maybe_copy(self, copy)
        +1801        return Subquery(
        +1802            this=instance,
        +1803            alias=TableAlias(this=to_identifier(alias)) if alias else None,
        +1804        )
         
        @@ -19879,8 +20421,8 @@ Otherwise, this resets the expression.
        -
        1775    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
        -1776        raise NotImplementedError
        +            
        1806    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
        +1807        raise NotImplementedError
         
        @@ -19898,62 +20440,62 @@ Otherwise, this resets the expression.
        -
        1793    def with_(
        -1794        self,
        -1795        alias,
        -1796        as_,
        -1797        recursive=None,
        -1798        append=True,
        -1799        dialect=None,
        -1800        copy=True,
        -1801        **opts,
        -1802    ):
        -1803        """
        -1804        Append to or set the common table expressions.
        -1805
        -1806        Example:
        -1807            >>> Select().with_("tbl2", as_="SELECT * FROM tbl").select("x").from_("tbl2").sql()
        -1808            'WITH tbl2 AS (SELECT * FROM tbl) SELECT x FROM tbl2'
        -1809
        -1810        Args:
        -1811            alias (str | Expression): the SQL code string to parse as the table name.
        -1812                If an `Expression` instance is passed, this is used as-is.
        -1813            as_ (str | Expression): the SQL code string to parse as the table expression.
        -1814                If an `Expression` instance is passed, it will be used as-is.
        -1815            recursive (bool): set the RECURSIVE part of the expression. Defaults to `False`.
        -1816            append (bool): if `True`, add to any existing expressions.
        -1817                Otherwise, this resets the expressions.
        -1818            dialect (str): the dialect used to parse the input expression.
        -1819            copy (bool): if `False`, modify this expression instance in-place.
        -1820            opts (kwargs): other options to use to parse the input expressions.
        -1821
        -1822        Returns:
        -1823            Select: the modified expression.
        -1824        """
        -1825        alias_expression = maybe_parse(
        -1826            alias,
        -1827            dialect=dialect,
        -1828            into=TableAlias,
        -1829            **opts,
        -1830        )
        -1831        as_expression = maybe_parse(
        -1832            as_,
        -1833            dialect=dialect,
        -1834            **opts,
        -1835        )
        -1836        cte = CTE(
        -1837            this=as_expression,
        -1838            alias=alias_expression,
        -1839        )
        -1840        return _apply_child_list_builder(
        -1841            cte,
        -1842            instance=self,
        -1843            arg="with",
        -1844            append=append,
        -1845            copy=copy,
        -1846            into=With,
        -1847            properties={"recursive": recursive or False},
        -1848        )
        +            
        1824    def with_(
        +1825        self,
        +1826        alias,
        +1827        as_,
        +1828        recursive=None,
        +1829        append=True,
        +1830        dialect=None,
        +1831        copy=True,
        +1832        **opts,
        +1833    ):
        +1834        """
        +1835        Append to or set the common table expressions.
        +1836
        +1837        Example:
        +1838            >>> Select().with_("tbl2", as_="SELECT * FROM tbl").select("x").from_("tbl2").sql()
        +1839            'WITH tbl2 AS (SELECT * FROM tbl) SELECT x FROM tbl2'
        +1840
        +1841        Args:
        +1842            alias (str | Expression): the SQL code string to parse as the table name.
        +1843                If an `Expression` instance is passed, this is used as-is.
        +1844            as_ (str | Expression): the SQL code string to parse as the table expression.
        +1845                If an `Expression` instance is passed, it will be used as-is.
        +1846            recursive (bool): set the RECURSIVE part of the expression. Defaults to `False`.
        +1847            append (bool): if `True`, add to any existing expressions.
        +1848                Otherwise, this resets the expressions.
        +1849            dialect (str): the dialect used to parse the input expression.
        +1850            copy (bool): if `False`, modify this expression instance in-place.
        +1851            opts (kwargs): other options to use to parse the input expressions.
        +1852
        +1853        Returns:
        +1854            Select: the modified expression.
        +1855        """
        +1856        alias_expression = maybe_parse(
        +1857            alias,
        +1858            dialect=dialect,
        +1859            into=TableAlias,
        +1860            **opts,
        +1861        )
        +1862        as_expression = maybe_parse(
        +1863            as_,
        +1864            dialect=dialect,
        +1865            **opts,
        +1866        )
        +1867        cte = CTE(
        +1868            this=as_expression,
        +1869            alias=alias_expression,
        +1870        )
        +1871        return _apply_child_list_builder(
        +1872            cte,
        +1873            instance=self,
        +1874            arg="with",
        +1875            append=append,
        +1876            copy=copy,
        +1877            into=With,
        +1878            properties={"recursive": recursive or False},
        +1879        )
         
        @@ -20012,10 +20554,12 @@ Otherwise, this resets the expressions.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -20054,26 +20598,26 @@ Otherwise, this resets the expressions.
        -
        1872class Table(Expression):
        -1873    arg_types = {
        -1874        "this": True,
        -1875        "alias": False,
        -1876        "db": False,
        -1877        "catalog": False,
        -1878        "laterals": False,
        -1879        "joins": False,
        -1880        "pivots": False,
        -1881        "hints": False,
        -1882        "system_time": False,
        -1883    }
        -1884
        -1885    @property
        -1886    def db(self) -> str:
        -1887        return self.text("db")
        -1888
        -1889    @property
        -1890    def catalog(self) -> str:
        -1891        return self.text("catalog")
        +            
        1903class Table(Expression):
        +1904    arg_types = {
        +1905        "this": True,
        +1906        "alias": False,
        +1907        "db": False,
        +1908        "catalog": False,
        +1909        "laterals": False,
        +1910        "joins": False,
        +1911        "pivots": False,
        +1912        "hints": False,
        +1913        "system_time": False,
        +1914    }
        +1915
        +1916    @property
        +1917    def db(self) -> str:
        +1918        return self.text("db")
        +1919
        +1920    @property
        +1921    def catalog(self) -> str:
        +1922        return self.text("catalog")
         
        @@ -20098,10 +20642,12 @@ Otherwise, this resets the expressions.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -20134,12 +20680,12 @@ Otherwise, this resets the expressions.
        -
        1895class SystemTime(Expression):
        -1896    arg_types = {
        -1897        "this": False,
        -1898        "expression": False,
        -1899        "kind": True,
        -1900    }
        +            
        1926class SystemTime(Expression):
        +1927    arg_types = {
        +1928        "this": False,
        +1929        "expression": False,
        +1930        "kind": True,
        +1931    }
         
        @@ -20164,10 +20710,12 @@ Otherwise, this resets the expressions.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -20200,94 +20748,94 @@ Otherwise, this resets the expressions.
        -
        1903class Union(Subqueryable):
        -1904    arg_types = {
        -1905        "with": False,
        -1906        "this": True,
        -1907        "expression": True,
        -1908        "distinct": False,
        -1909        **QUERY_MODIFIERS,
        -1910    }
        -1911
        -1912    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
        -1913        """
        -1914        Set the LIMIT expression.
        -1915
        -1916        Example:
        -1917            >>> select("1").union(select("1")).limit(1).sql()
        -1918            'SELECT * FROM (SELECT 1 UNION SELECT 1) AS _l_0 LIMIT 1'
        -1919
        -1920        Args:
        -1921            expression (str | int | Expression): the SQL code string to parse.
        -1922                This can also be an integer.
        -1923                If a `Limit` instance is passed, this is used as-is.
        -1924                If another `Expression` instance is passed, it will be wrapped in a `Limit`.
        -1925            dialect (str): the dialect used to parse the input expression.
        -1926            copy (bool): if `False`, modify this expression instance in-place.
        -1927            opts (kwargs): other options to use to parse the input expressions.
        -1928
        -1929        Returns:
        -1930            Select: The limited subqueryable.
        -1931        """
        -1932        return (
        -1933            select("*")
        -1934            .from_(self.subquery(alias="_l_0", copy=copy))
        -1935            .limit(expression, dialect=dialect, copy=False, **opts)
        -1936        )
        -1937
        -1938    def select(
        -1939        self,
        -1940        *expressions: ExpOrStr,
        -1941        append: bool = True,
        -1942        dialect: DialectType = None,
        -1943        copy: bool = True,
        -1944        **opts,
        -1945    ) -> Union:
        -1946        """Append to or set the SELECT of the union recursively.
        -1947
        -1948        Example:
        -1949            >>> from sqlglot import parse_one
        -1950            >>> parse_one("select a from x union select a from y union select a from z").select("b").sql()
        -1951            'SELECT a, b FROM x UNION SELECT a, b FROM y UNION SELECT a, b FROM z'
        -1952
        -1953        Args:
        -1954            *expressions: the SQL code strings to parse.
        -1955                If an `Expression` instance is passed, it will be used as-is.
        -1956            append: if `True`, add to any existing expressions.
        -1957                Otherwise, this resets the expressions.
        -1958            dialect: the dialect used to parse the input expressions.
        -1959            copy: if `False`, modify this expression instance in-place.
        -1960            opts: other options to use to parse the input expressions.
        -1961
        -1962        Returns:
        -1963            Union: the modified expression.
        -1964        """
        -1965        this = self.copy() if copy else self
        -1966        this.this.unnest().select(*expressions, append=append, dialect=dialect, copy=False, **opts)
        -1967        this.expression.unnest().select(
        -1968            *expressions, append=append, dialect=dialect, copy=False, **opts
        -1969        )
        -1970        return this
        -1971
        -1972    @property
        -1973    def named_selects(self):
        -1974        return self.this.unnest().named_selects
        -1975
        -1976    @property
        -1977    def is_star(self) -> bool:
        -1978        return self.this.is_star or self.expression.is_star
        -1979
        -1980    @property
        -1981    def selects(self):
        -1982        return self.this.unnest().selects
        +            
        1934class Union(Subqueryable):
        +1935    arg_types = {
        +1936        "with": False,
        +1937        "this": True,
        +1938        "expression": True,
        +1939        "distinct": False,
        +1940        **QUERY_MODIFIERS,
        +1941    }
        +1942
        +1943    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
        +1944        """
        +1945        Set the LIMIT expression.
        +1946
        +1947        Example:
        +1948            >>> select("1").union(select("1")).limit(1).sql()
        +1949            'SELECT * FROM (SELECT 1 UNION SELECT 1) AS _l_0 LIMIT 1'
        +1950
        +1951        Args:
        +1952            expression (str | int | Expression): the SQL code string to parse.
        +1953                This can also be an integer.
        +1954                If a `Limit` instance is passed, this is used as-is.
        +1955                If another `Expression` instance is passed, it will be wrapped in a `Limit`.
        +1956            dialect (str): the dialect used to parse the input expression.
        +1957            copy (bool): if `False`, modify this expression instance in-place.
        +1958            opts (kwargs): other options to use to parse the input expressions.
        +1959
        +1960        Returns:
        +1961            Select: The limited subqueryable.
        +1962        """
        +1963        return (
        +1964            select("*")
        +1965            .from_(self.subquery(alias="_l_0", copy=copy))
        +1966            .limit(expression, dialect=dialect, copy=False, **opts)
        +1967        )
        +1968
        +1969    def select(
        +1970        self,
        +1971        *expressions: ExpOrStr,
        +1972        append: bool = True,
        +1973        dialect: DialectType = None,
        +1974        copy: bool = True,
        +1975        **opts,
        +1976    ) -> Union:
        +1977        """Append to or set the SELECT of the union recursively.
        +1978
        +1979        Example:
        +1980            >>> from sqlglot import parse_one
        +1981            >>> parse_one("select a from x union select a from y union select a from z").select("b").sql()
        +1982            'SELECT a, b FROM x UNION SELECT a, b FROM y UNION SELECT a, b FROM z'
         1983
        -1984    @property
        -1985    def left(self):
        -1986        return self.this
        -1987
        -1988    @property
        -1989    def right(self):
        -1990        return self.expression
        +1984        Args:
        +1985            *expressions: the SQL code strings to parse.
        +1986                If an `Expression` instance is passed, it will be used as-is.
        +1987            append: if `True`, add to any existing expressions.
        +1988                Otherwise, this resets the expressions.
        +1989            dialect: the dialect used to parse the input expressions.
        +1990            copy: if `False`, modify this expression instance in-place.
        +1991            opts: other options to use to parse the input expressions.
        +1992
        +1993        Returns:
        +1994            Union: the modified expression.
        +1995        """
        +1996        this = self.copy() if copy else self
        +1997        this.this.unnest().select(*expressions, append=append, dialect=dialect, copy=False, **opts)
        +1998        this.expression.unnest().select(
        +1999            *expressions, append=append, dialect=dialect, copy=False, **opts
        +2000        )
        +2001        return this
        +2002
        +2003    @property
        +2004    def named_selects(self):
        +2005        return self.this.unnest().named_selects
        +2006
        +2007    @property
        +2008    def is_star(self) -> bool:
        +2009        return self.this.is_star or self.expression.is_star
        +2010
        +2011    @property
        +2012    def selects(self):
        +2013        return self.this.unnest().selects
        +2014
        +2015    @property
        +2016    def left(self):
        +2017        return self.this
        +2018
        +2019    @property
        +2020    def right(self):
        +2021        return self.expression
         
        @@ -20304,31 +20852,31 @@ Otherwise, this resets the expressions.
        -
        1912    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
        -1913        """
        -1914        Set the LIMIT expression.
        -1915
        -1916        Example:
        -1917            >>> select("1").union(select("1")).limit(1).sql()
        -1918            'SELECT * FROM (SELECT 1 UNION SELECT 1) AS _l_0 LIMIT 1'
        -1919
        -1920        Args:
        -1921            expression (str | int | Expression): the SQL code string to parse.
        -1922                This can also be an integer.
        -1923                If a `Limit` instance is passed, this is used as-is.
        -1924                If another `Expression` instance is passed, it will be wrapped in a `Limit`.
        -1925            dialect (str): the dialect used to parse the input expression.
        -1926            copy (bool): if `False`, modify this expression instance in-place.
        -1927            opts (kwargs): other options to use to parse the input expressions.
        -1928
        -1929        Returns:
        -1930            Select: The limited subqueryable.
        -1931        """
        -1932        return (
        -1933            select("*")
        -1934            .from_(self.subquery(alias="_l_0", copy=copy))
        -1935            .limit(expression, dialect=dialect, copy=False, **opts)
        -1936        )
        +            
        1943    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
        +1944        """
        +1945        Set the LIMIT expression.
        +1946
        +1947        Example:
        +1948            >>> select("1").union(select("1")).limit(1).sql()
        +1949            'SELECT * FROM (SELECT 1 UNION SELECT 1) AS _l_0 LIMIT 1'
        +1950
        +1951        Args:
        +1952            expression (str | int | Expression): the SQL code string to parse.
        +1953                This can also be an integer.
        +1954                If a `Limit` instance is passed, this is used as-is.
        +1955                If another `Expression` instance is passed, it will be wrapped in a `Limit`.
        +1956            dialect (str): the dialect used to parse the input expression.
        +1957            copy (bool): if `False`, modify this expression instance in-place.
        +1958            opts (kwargs): other options to use to parse the input expressions.
        +1959
        +1960        Returns:
        +1961            Select: The limited subqueryable.
        +1962        """
        +1963        return (
        +1964            select("*")
        +1965            .from_(self.subquery(alias="_l_0", copy=copy))
        +1966            .limit(expression, dialect=dialect, copy=False, **opts)
        +1967        )
         
        @@ -20376,39 +20924,39 @@ If another Expression instance is passed,
        -
        1938    def select(
        -1939        self,
        -1940        *expressions: ExpOrStr,
        -1941        append: bool = True,
        -1942        dialect: DialectType = None,
        -1943        copy: bool = True,
        -1944        **opts,
        -1945    ) -> Union:
        -1946        """Append to or set the SELECT of the union recursively.
        -1947
        -1948        Example:
        -1949            >>> from sqlglot import parse_one
        -1950            >>> parse_one("select a from x union select a from y union select a from z").select("b").sql()
        -1951            'SELECT a, b FROM x UNION SELECT a, b FROM y UNION SELECT a, b FROM z'
        -1952
        -1953        Args:
        -1954            *expressions: the SQL code strings to parse.
        -1955                If an `Expression` instance is passed, it will be used as-is.
        -1956            append: if `True`, add to any existing expressions.
        -1957                Otherwise, this resets the expressions.
        -1958            dialect: the dialect used to parse the input expressions.
        -1959            copy: if `False`, modify this expression instance in-place.
        -1960            opts: other options to use to parse the input expressions.
        -1961
        -1962        Returns:
        -1963            Union: the modified expression.
        -1964        """
        -1965        this = self.copy() if copy else self
        -1966        this.this.unnest().select(*expressions, append=append, dialect=dialect, copy=False, **opts)
        -1967        this.expression.unnest().select(
        -1968            *expressions, append=append, dialect=dialect, copy=False, **opts
        -1969        )
        -1970        return this
        +            
        1969    def select(
        +1970        self,
        +1971        *expressions: ExpOrStr,
        +1972        append: bool = True,
        +1973        dialect: DialectType = None,
        +1974        copy: bool = True,
        +1975        **opts,
        +1976    ) -> Union:
        +1977        """Append to or set the SELECT of the union recursively.
        +1978
        +1979        Example:
        +1980            >>> from sqlglot import parse_one
        +1981            >>> parse_one("select a from x union select a from y union select a from z").select("b").sql()
        +1982            'SELECT a, b FROM x UNION SELECT a, b FROM y UNION SELECT a, b FROM z'
        +1983
        +1984        Args:
        +1985            *expressions: the SQL code strings to parse.
        +1986                If an `Expression` instance is passed, it will be used as-is.
        +1987            append: if `True`, add to any existing expressions.
        +1988                Otherwise, this resets the expressions.
        +1989            dialect: the dialect used to parse the input expressions.
        +1990            copy: if `False`, modify this expression instance in-place.
        +1991            opts: other options to use to parse the input expressions.
        +1992
        +1993        Returns:
        +1994            Union: the modified expression.
        +1995        """
        +1996        this = self.copy() if copy else self
        +1997        this.this.unnest().select(*expressions, append=append, dialect=dialect, copy=False, **opts)
        +1998        this.expression.unnest().select(
        +1999            *expressions, append=append, dialect=dialect, copy=False, **opts
        +2000        )
        +2001        return this
         
        @@ -20477,10 +21025,12 @@ Otherwise, this resets the expressions.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -20524,8 +21074,8 @@ Otherwise, this resets the expressions.
        -
        1993class Except(Union):
        -1994    pass
        +            
        2024class Except(Union):
        +2025    pass
         
        @@ -20549,10 +21099,12 @@ Otherwise, this resets the expressions.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -20602,8 +21154,8 @@ Otherwise, this resets the expressions.
        -
        1997class Intersect(Union):
        -1998    pass
        +            
        2028class Intersect(Union):
        +2029    pass
         
        @@ -20627,10 +21179,12 @@ Otherwise, this resets the expressions.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -20680,13 +21234,13 @@ Otherwise, this resets the expressions.
        -
        2001class Unnest(UDTF):
        -2002    arg_types = {
        -2003        "expressions": True,
        -2004        "ordinality": False,
        -2005        "alias": False,
        -2006        "offset": False,
        -2007    }
        +            
        2032class Unnest(UDTF):
        +2033    arg_types = {
        +2034        "expressions": True,
        +2035        "ordinality": False,
        +2036        "alias": False,
        +2037        "offset": False,
        +2038    }
         
        @@ -20711,10 +21265,12 @@ Otherwise, this resets the expressions.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -20753,15 +21309,15 @@ Otherwise, this resets the expressions.
        -
        2010class Update(Expression):
        -2011    arg_types = {
        -2012        "with": False,
        -2013        "this": False,
        -2014        "expressions": True,
        -2015        "from": False,
        -2016        "where": False,
        -2017        "returning": False,
        -2018    }
        +            
        2041class Update(Expression):
        +2042    arg_types = {
        +2043        "with": False,
        +2044        "this": False,
        +2045        "expressions": True,
        +2046        "from": False,
        +2047        "where": False,
        +2048        "returning": False,
        +2049    }
         
        @@ -20786,10 +21342,12 @@ Otherwise, this resets the expressions.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -20822,12 +21380,12 @@ Otherwise, this resets the expressions.
        -
        2021class Values(UDTF):
        -2022    arg_types = {
        -2023        "expressions": True,
        -2024        "ordinality": False,
        -2025        "alias": False,
        -2026    }
        +            
        2052class Values(UDTF):
        +2053    arg_types = {
        +2054        "expressions": True,
        +2055        "ordinality": False,
        +2056        "alias": False,
        +2057    }
         
        @@ -20852,10 +21410,12 @@ Otherwise, this resets the expressions.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -20894,8 +21454,8 @@ Otherwise, this resets the expressions.
        -
        2029class Var(Expression):
        -2030    pass
        +            
        2060class Var(Expression):
        +2061    pass
         
        @@ -20920,10 +21480,12 @@ Otherwise, this resets the expressions.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -20956,8 +21518,8 @@ Otherwise, this resets the expressions.
        -
        2033class Schema(Expression):
        -2034    arg_types = {"this": False, "expressions": False}
        +            
        2064class Schema(Expression):
        +2065    arg_types = {"this": False, "expressions": False}
         
        @@ -20982,10 +21544,12 @@ Otherwise, this resets the expressions.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -21018,8 +21582,8 @@ Otherwise, this resets the expressions.
        -
        2039class Lock(Expression):
        -2040    arg_types = {"update": True}
        +            
        2070class Lock(Expression):
        +2071    arg_types = {"update": True}
         
        @@ -21044,10 +21608,12 @@ Otherwise, this resets the expressions.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -21080,198 +21646,167 @@ Otherwise, this resets the expressions.
        -
        2043class Select(Subqueryable):
        -2044    arg_types = {
        -2045        "with": False,
        -2046        "expressions": False,
        -2047        "hint": False,
        -2048        "distinct": False,
        -2049        "into": False,
        -2050        "from": False,
        -2051        **QUERY_MODIFIERS,
        -2052    }
        -2053
        -2054    def from_(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        -2055        """
        -2056        Set the FROM expression.
        -2057
        -2058        Example:
        -2059            >>> Select().from_("tbl").select("x").sql()
        -2060            'SELECT x FROM tbl'
        -2061
        -2062        Args:
        -2063            *expressions (str | Expression): the SQL code strings to parse.
        -2064                If a `From` instance is passed, this is used as-is.
        -2065                If another `Expression` instance is passed, it will be wrapped in a `From`.
        -2066            append (bool): if `True`, add to any existing expressions.
        -2067                Otherwise, this flattens all the `From` expression into a single expression.
        -2068            dialect (str): the dialect used to parse the input expression.
        -2069            copy (bool): if `False`, modify this expression instance in-place.
        -2070            opts (kwargs): other options to use to parse the input expressions.
        -2071
        -2072        Returns:
        -2073            Select: the modified expression.
        -2074        """
        -2075        return _apply_child_list_builder(
        -2076            *expressions,
        -2077            instance=self,
        -2078            arg="from",
        -2079            append=append,
        -2080            copy=copy,
        -2081            prefix="FROM",
        -2082            into=From,
        -2083            dialect=dialect,
        -2084            **opts,
        -2085        )
        -2086
        -2087    def group_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        -2088        """
        -2089        Set the GROUP BY expression.
        -2090
        -2091        Example:
        -2092            >>> Select().from_("tbl").select("x", "COUNT(1)").group_by("x").sql()
        -2093            'SELECT x, COUNT(1) FROM tbl GROUP BY x'
        -2094
        -2095        Args:
        -2096            *expressions (str | Expression): the SQL code strings to parse.
        -2097                If a `Group` instance is passed, this is used as-is.
        -2098                If another `Expression` instance is passed, it will be wrapped in a `Group`.
        -2099                If nothing is passed in then a group by is not applied to the expression
        -2100            append (bool): if `True`, add to any existing expressions.
        -2101                Otherwise, this flattens all the `Group` expression into a single expression.
        -2102            dialect (str): the dialect used to parse the input expression.
        -2103            copy (bool): if `False`, modify this expression instance in-place.
        -2104            opts (kwargs): other options to use to parse the input expressions.
        -2105
        -2106        Returns:
        -2107            Select: the modified expression.
        -2108        """
        -2109        if not expressions:
        -2110            return self if not copy else self.copy()
        -2111        return _apply_child_list_builder(
        -2112            *expressions,
        -2113            instance=self,
        -2114            arg="group",
        -2115            append=append,
        -2116            copy=copy,
        -2117            prefix="GROUP BY",
        -2118            into=Group,
        -2119            dialect=dialect,
        -2120            **opts,
        -2121        )
        +            
        2074class Select(Subqueryable):
        +2075    arg_types = {
        +2076        "with": False,
        +2077        "kind": False,
        +2078        "expressions": False,
        +2079        "hint": False,
        +2080        "distinct": False,
        +2081        "into": False,
        +2082        "from": False,
        +2083        **QUERY_MODIFIERS,
        +2084    }
        +2085
        +2086    def from_(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        +2087        """
        +2088        Set the FROM expression.
        +2089
        +2090        Example:
        +2091            >>> Select().from_("tbl").select("x").sql()
        +2092            'SELECT x FROM tbl'
        +2093
        +2094        Args:
        +2095            *expressions (str | Expression): the SQL code strings to parse.
        +2096                If a `From` instance is passed, this is used as-is.
        +2097                If another `Expression` instance is passed, it will be wrapped in a `From`.
        +2098            append (bool): if `True`, add to any existing expressions.
        +2099                Otherwise, this flattens all the `From` expression into a single expression.
        +2100            dialect (str): the dialect used to parse the input expression.
        +2101            copy (bool): if `False`, modify this expression instance in-place.
        +2102            opts (kwargs): other options to use to parse the input expressions.
        +2103
        +2104        Returns:
        +2105            Select: the modified expression.
        +2106        """
        +2107        return _apply_child_list_builder(
        +2108            *expressions,
        +2109            instance=self,
        +2110            arg="from",
        +2111            append=append,
        +2112            copy=copy,
        +2113            prefix="FROM",
        +2114            into=From,
        +2115            dialect=dialect,
        +2116            **opts,
        +2117        )
        +2118
        +2119    def group_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        +2120        """
        +2121        Set the GROUP BY expression.
         2122
        -2123    def order_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        -2124        """
        -2125        Set the ORDER BY expression.
        +2123        Example:
        +2124            >>> Select().from_("tbl").select("x", "COUNT(1)").group_by("x").sql()
        +2125            'SELECT x, COUNT(1) FROM tbl GROUP BY x'
         2126
        -2127        Example:
        -2128            >>> Select().from_("tbl").select("x").order_by("x DESC").sql()
        -2129            'SELECT x FROM tbl ORDER BY x DESC'
        -2130
        -2131        Args:
        -2132            *expressions (str | Expression): the SQL code strings to parse.
        -2133                If a `Group` instance is passed, this is used as-is.
        -2134                If another `Expression` instance is passed, it will be wrapped in a `Order`.
        -2135            append (bool): if `True`, add to any existing expressions.
        -2136                Otherwise, this flattens all the `Order` expression into a single expression.
        -2137            dialect (str): the dialect used to parse the input expression.
        -2138            copy (bool): if `False`, modify this expression instance in-place.
        -2139            opts (kwargs): other options to use to parse the input expressions.
        -2140
        -2141        Returns:
        -2142            Select: the modified expression.
        -2143        """
        -2144        return _apply_child_list_builder(
        -2145            *expressions,
        -2146            instance=self,
        -2147            arg="order",
        -2148            append=append,
        -2149            copy=copy,
        -2150            prefix="ORDER BY",
        -2151            into=Order,
        -2152            dialect=dialect,
        -2153            **opts,
        -2154        )
        -2155
        -2156    def sort_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        -2157        """
        -2158        Set the SORT BY expression.
        -2159
        -2160        Example:
        -2161            >>> Select().from_("tbl").select("x").sort_by("x DESC").sql()
        -2162            'SELECT x FROM tbl SORT BY x DESC'
        -2163
        -2164        Args:
        -2165            *expressions (str | Expression): the SQL code strings to parse.
        -2166                If a `Group` instance is passed, this is used as-is.
        -2167                If another `Expression` instance is passed, it will be wrapped in a `SORT`.
        -2168            append (bool): if `True`, add to any existing expressions.
        -2169                Otherwise, this flattens all the `Order` expression into a single expression.
        -2170            dialect (str): the dialect used to parse the input expression.
        -2171            copy (bool): if `False`, modify this expression instance in-place.
        -2172            opts (kwargs): other options to use to parse the input expressions.
        -2173
        -2174        Returns:
        -2175            Select: the modified expression.
        -2176        """
        -2177        return _apply_child_list_builder(
        -2178            *expressions,
        -2179            instance=self,
        -2180            arg="sort",
        -2181            append=append,
        -2182            copy=copy,
        -2183            prefix="SORT BY",
        -2184            into=Sort,
        -2185            dialect=dialect,
        -2186            **opts,
        -2187        )
        -2188
        -2189    def cluster_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        -2190        """
        -2191        Set the CLUSTER BY expression.
        -2192
        -2193        Example:
        -2194            >>> Select().from_("tbl").select("x").cluster_by("x DESC").sql()
        -2195            'SELECT x FROM tbl CLUSTER BY x DESC'
        -2196
        -2197        Args:
        -2198            *expressions (str | Expression): the SQL code strings to parse.
        -2199                If a `Group` instance is passed, this is used as-is.
        -2200                If another `Expression` instance is passed, it will be wrapped in a `Cluster`.
        -2201            append (bool): if `True`, add to any existing expressions.
        -2202                Otherwise, this flattens all the `Order` expression into a single expression.
        -2203            dialect (str): the dialect used to parse the input expression.
        -2204            copy (bool): if `False`, modify this expression instance in-place.
        -2205            opts (kwargs): other options to use to parse the input expressions.
        -2206
        -2207        Returns:
        -2208            Select: the modified expression.
        -2209        """
        -2210        return _apply_child_list_builder(
        -2211            *expressions,
        -2212            instance=self,
        -2213            arg="cluster",
        -2214            append=append,
        -2215            copy=copy,
        -2216            prefix="CLUSTER BY",
        -2217            into=Cluster,
        -2218            dialect=dialect,
        -2219            **opts,
        -2220        )
        -2221
        -2222    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
        -2223        """
        -2224        Set the LIMIT expression.
        -2225
        -2226        Example:
        -2227            >>> Select().from_("tbl").select("x").limit(10).sql()
        -2228            'SELECT x FROM tbl LIMIT 10'
        -2229
        -2230        Args:
        -2231            expression (str | int | Expression): the SQL code string to parse.
        -2232                This can also be an integer.
        -2233                If a `Limit` instance is passed, this is used as-is.
        -2234                If another `Expression` instance is passed, it will be wrapped in a `Limit`.
        +2127        Args:
        +2128            *expressions (str | Expression): the SQL code strings to parse.
        +2129                If a `Group` instance is passed, this is used as-is.
        +2130                If another `Expression` instance is passed, it will be wrapped in a `Group`.
        +2131                If nothing is passed in then a group by is not applied to the expression
        +2132            append (bool): if `True`, add to any existing expressions.
        +2133                Otherwise, this flattens all the `Group` expression into a single expression.
        +2134            dialect (str): the dialect used to parse the input expression.
        +2135            copy (bool): if `False`, modify this expression instance in-place.
        +2136            opts (kwargs): other options to use to parse the input expressions.
        +2137
        +2138        Returns:
        +2139            Select: the modified expression.
        +2140        """
        +2141        if not expressions:
        +2142            return self if not copy else self.copy()
        +2143        return _apply_child_list_builder(
        +2144            *expressions,
        +2145            instance=self,
        +2146            arg="group",
        +2147            append=append,
        +2148            copy=copy,
        +2149            prefix="GROUP BY",
        +2150            into=Group,
        +2151            dialect=dialect,
        +2152            **opts,
        +2153        )
        +2154
        +2155    def order_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        +2156        """
        +2157        Set the ORDER BY expression.
        +2158
        +2159        Example:
        +2160            >>> Select().from_("tbl").select("x").order_by("x DESC").sql()
        +2161            'SELECT x FROM tbl ORDER BY x DESC'
        +2162
        +2163        Args:
        +2164            *expressions (str | Expression): the SQL code strings to parse.
        +2165                If a `Group` instance is passed, this is used as-is.
        +2166                If another `Expression` instance is passed, it will be wrapped in a `Order`.
        +2167            append (bool): if `True`, add to any existing expressions.
        +2168                Otherwise, this flattens all the `Order` expression into a single expression.
        +2169            dialect (str): the dialect used to parse the input expression.
        +2170            copy (bool): if `False`, modify this expression instance in-place.
        +2171            opts (kwargs): other options to use to parse the input expressions.
        +2172
        +2173        Returns:
        +2174            Select: the modified expression.
        +2175        """
        +2176        return _apply_child_list_builder(
        +2177            *expressions,
        +2178            instance=self,
        +2179            arg="order",
        +2180            append=append,
        +2181            copy=copy,
        +2182            prefix="ORDER BY",
        +2183            into=Order,
        +2184            dialect=dialect,
        +2185            **opts,
        +2186        )
        +2187
        +2188    def sort_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        +2189        """
        +2190        Set the SORT BY expression.
        +2191
        +2192        Example:
        +2193            >>> Select().from_("tbl").select("x").sort_by("x DESC").sql()
        +2194            'SELECT x FROM tbl SORT BY x DESC'
        +2195
        +2196        Args:
        +2197            *expressions (str | Expression): the SQL code strings to parse.
        +2198                If a `Group` instance is passed, this is used as-is.
        +2199                If another `Expression` instance is passed, it will be wrapped in a `SORT`.
        +2200            append (bool): if `True`, add to any existing expressions.
        +2201                Otherwise, this flattens all the `Order` expression into a single expression.
        +2202            dialect (str): the dialect used to parse the input expression.
        +2203            copy (bool): if `False`, modify this expression instance in-place.
        +2204            opts (kwargs): other options to use to parse the input expressions.
        +2205
        +2206        Returns:
        +2207            Select: the modified expression.
        +2208        """
        +2209        return _apply_child_list_builder(
        +2210            *expressions,
        +2211            instance=self,
        +2212            arg="sort",
        +2213            append=append,
        +2214            copy=copy,
        +2215            prefix="SORT BY",
        +2216            into=Sort,
        +2217            dialect=dialect,
        +2218            **opts,
        +2219        )
        +2220
        +2221    def cluster_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        +2222        """
        +2223        Set the CLUSTER BY expression.
        +2224
        +2225        Example:
        +2226            >>> Select().from_("tbl").select("x").cluster_by("x DESC").sql()
        +2227            'SELECT x FROM tbl CLUSTER BY x DESC'
        +2228
        +2229        Args:
        +2230            *expressions (str | Expression): the SQL code strings to parse.
        +2231                If a `Group` instance is passed, this is used as-is.
        +2232                If another `Expression` instance is passed, it will be wrapped in a `Cluster`.
        +2233            append (bool): if `True`, add to any existing expressions.
        +2234                Otherwise, this flattens all the `Order` expression into a single expression.
         2235            dialect (str): the dialect used to parse the input expression.
         2236            copy (bool): if `False`, modify this expression instance in-place.
         2237            opts (kwargs): other options to use to parse the input expressions.
        @@ -21279,251 +21814,251 @@ Otherwise, this resets the expressions.
         2239        Returns:
         2240            Select: the modified expression.
         2241        """
        -2242        return _apply_builder(
        -2243            expression=expression,
        +2242        return _apply_child_list_builder(
        +2243            *expressions,
         2244            instance=self,
        -2245            arg="limit",
        -2246            into=Limit,
        -2247            prefix="LIMIT",
        -2248            dialect=dialect,
        -2249            copy=copy,
        -2250            **opts,
        -2251        )
        -2252
        -2253    def offset(self, expression, dialect=None, copy=True, **opts) -> Select:
        -2254        """
        -2255        Set the OFFSET expression.
        -2256
        -2257        Example:
        -2258            >>> Select().from_("tbl").select("x").offset(10).sql()
        -2259            'SELECT x FROM tbl OFFSET 10'
        -2260
        -2261        Args:
        -2262            expression (str | int | Expression): the SQL code string to parse.
        -2263                This can also be an integer.
        -2264                If a `Offset` instance is passed, this is used as-is.
        -2265                If another `Expression` instance is passed, it will be wrapped in a `Offset`.
        -2266            dialect (str): the dialect used to parse the input expression.
        -2267            copy (bool): if `False`, modify this expression instance in-place.
        -2268            opts (kwargs): other options to use to parse the input expressions.
        -2269
        -2270        Returns:
        -2271            Select: the modified expression.
        -2272        """
        -2273        return _apply_builder(
        -2274            expression=expression,
        -2275            instance=self,
        -2276            arg="offset",
        -2277            into=Offset,
        -2278            prefix="OFFSET",
        -2279            dialect=dialect,
        -2280            copy=copy,
        -2281            **opts,
        -2282        )
        -2283
        -2284    def select(
        -2285        self,
        -2286        *expressions: ExpOrStr,
        -2287        append: bool = True,
        -2288        dialect: DialectType = None,
        -2289        copy: bool = True,
        -2290        **opts,
        -2291    ) -> Select:
        -2292        """
        -2293        Append to or set the SELECT expressions.
        -2294
        -2295        Example:
        -2296            >>> Select().select("x", "y").sql()
        -2297            'SELECT x, y'
        -2298
        -2299        Args:
        -2300            *expressions: the SQL code strings to parse.
        -2301                If an `Expression` instance is passed, it will be used as-is.
        -2302            append: if `True`, add to any existing expressions.
        -2303                Otherwise, this resets the expressions.
        -2304            dialect: the dialect used to parse the input expressions.
        -2305            copy: if `False`, modify this expression instance in-place.
        -2306            opts: other options to use to parse the input expressions.
        -2307
        -2308        Returns:
        -2309            Select: the modified expression.
        -2310        """
        -2311        return _apply_list_builder(
        -2312            *expressions,
        -2313            instance=self,
        -2314            arg="expressions",
        -2315            append=append,
        -2316            dialect=dialect,
        -2317            copy=copy,
        -2318            **opts,
        -2319        )
        -2320
        -2321    def lateral(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        -2322        """
        -2323        Append to or set the LATERAL expressions.
        -2324
        -2325        Example:
        -2326            >>> Select().select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl").sql()
        -2327            'SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z'
        -2328
        -2329        Args:
        -2330            *expressions (str | Expression): the SQL code strings to parse.
        -2331                If an `Expression` instance is passed, it will be used as-is.
        -2332            append (bool): if `True`, add to any existing expressions.
        -2333                Otherwise, this resets the expressions.
        -2334            dialect (str): the dialect used to parse the input expressions.
        -2335            copy (bool): if `False`, modify this expression instance in-place.
        -2336            opts (kwargs): other options to use to parse the input expressions.
        -2337
        -2338        Returns:
        -2339            Select: the modified expression.
        -2340        """
        -2341        return _apply_list_builder(
        -2342            *expressions,
        -2343            instance=self,
        -2344            arg="laterals",
        -2345            append=append,
        -2346            into=Lateral,
        -2347            prefix="LATERAL VIEW",
        +2245            arg="cluster",
        +2246            append=append,
        +2247            copy=copy,
        +2248            prefix="CLUSTER BY",
        +2249            into=Cluster,
        +2250            dialect=dialect,
        +2251            **opts,
        +2252        )
        +2253
        +2254    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
        +2255        """
        +2256        Set the LIMIT expression.
        +2257
        +2258        Example:
        +2259            >>> Select().from_("tbl").select("x").limit(10).sql()
        +2260            'SELECT x FROM tbl LIMIT 10'
        +2261
        +2262        Args:
        +2263            expression (str | int | Expression): the SQL code string to parse.
        +2264                This can also be an integer.
        +2265                If a `Limit` instance is passed, this is used as-is.
        +2266                If another `Expression` instance is passed, it will be wrapped in a `Limit`.
        +2267            dialect (str): the dialect used to parse the input expression.
        +2268            copy (bool): if `False`, modify this expression instance in-place.
        +2269            opts (kwargs): other options to use to parse the input expressions.
        +2270
        +2271        Returns:
        +2272            Select: the modified expression.
        +2273        """
        +2274        return _apply_builder(
        +2275            expression=expression,
        +2276            instance=self,
        +2277            arg="limit",
        +2278            into=Limit,
        +2279            prefix="LIMIT",
        +2280            dialect=dialect,
        +2281            copy=copy,
        +2282            **opts,
        +2283        )
        +2284
        +2285    def offset(self, expression, dialect=None, copy=True, **opts) -> Select:
        +2286        """
        +2287        Set the OFFSET expression.
        +2288
        +2289        Example:
        +2290            >>> Select().from_("tbl").select("x").offset(10).sql()
        +2291            'SELECT x FROM tbl OFFSET 10'
        +2292
        +2293        Args:
        +2294            expression (str | int | Expression): the SQL code string to parse.
        +2295                This can also be an integer.
        +2296                If a `Offset` instance is passed, this is used as-is.
        +2297                If another `Expression` instance is passed, it will be wrapped in a `Offset`.
        +2298            dialect (str): the dialect used to parse the input expression.
        +2299            copy (bool): if `False`, modify this expression instance in-place.
        +2300            opts (kwargs): other options to use to parse the input expressions.
        +2301
        +2302        Returns:
        +2303            Select: the modified expression.
        +2304        """
        +2305        return _apply_builder(
        +2306            expression=expression,
        +2307            instance=self,
        +2308            arg="offset",
        +2309            into=Offset,
        +2310            prefix="OFFSET",
        +2311            dialect=dialect,
        +2312            copy=copy,
        +2313            **opts,
        +2314        )
        +2315
        +2316    def select(
        +2317        self,
        +2318        *expressions: ExpOrStr,
        +2319        append: bool = True,
        +2320        dialect: DialectType = None,
        +2321        copy: bool = True,
        +2322        **opts,
        +2323    ) -> Select:
        +2324        """
        +2325        Append to or set the SELECT expressions.
        +2326
        +2327        Example:
        +2328            >>> Select().select("x", "y").sql()
        +2329            'SELECT x, y'
        +2330
        +2331        Args:
        +2332            *expressions: the SQL code strings to parse.
        +2333                If an `Expression` instance is passed, it will be used as-is.
        +2334            append: if `True`, add to any existing expressions.
        +2335                Otherwise, this resets the expressions.
        +2336            dialect: the dialect used to parse the input expressions.
        +2337            copy: if `False`, modify this expression instance in-place.
        +2338            opts: other options to use to parse the input expressions.
        +2339
        +2340        Returns:
        +2341            Select: the modified expression.
        +2342        """
        +2343        return _apply_list_builder(
        +2344            *expressions,
        +2345            instance=self,
        +2346            arg="expressions",
        +2347            append=append,
         2348            dialect=dialect,
         2349            copy=copy,
         2350            **opts,
         2351        )
         2352
        -2353    def join(
        -2354        self,
        -2355        expression,
        -2356        on=None,
        -2357        using=None,
        -2358        append=True,
        -2359        join_type=None,
        -2360        join_alias=None,
        -2361        dialect=None,
        -2362        copy=True,
        -2363        **opts,
        -2364    ) -> Select:
        -2365        """
        -2366        Append to or set the JOIN expressions.
        -2367
        -2368        Example:
        -2369            >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y").sql()
        -2370            'SELECT * FROM tbl JOIN tbl2 ON tbl1.y = tbl2.y'
        -2371
        -2372            >>> Select().select("1").from_("a").join("b", using=["x", "y", "z"]).sql()
        -2373            'SELECT 1 FROM a JOIN b USING (x, y, z)'
        -2374
        -2375            Use `join_type` to change the type of join:
        -2376
        -2377            >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y", join_type="left outer").sql()
        -2378            'SELECT * FROM tbl LEFT OUTER JOIN tbl2 ON tbl1.y = tbl2.y'
        -2379
        -2380        Args:
        -2381            expression (str | Expression): the SQL code string to parse.
        -2382                If an `Expression` instance is passed, it will be used as-is.
        -2383            on (str | Expression): optionally specify the join "on" criteria as a SQL string.
        -2384                If an `Expression` instance is passed, it will be used as-is.
        -2385            using (str | Expression): optionally specify the join "using" criteria as a SQL string.
        -2386                If an `Expression` instance is passed, it will be used as-is.
        -2387            append (bool): if `True`, add to any existing expressions.
        -2388                Otherwise, this resets the expressions.
        -2389            join_type (str): If set, alter the parsed join type
        -2390            dialect (str): the dialect used to parse the input expressions.
        -2391            copy (bool): if `False`, modify this expression instance in-place.
        -2392            opts (kwargs): other options to use to parse the input expressions.
        -2393
        -2394        Returns:
        -2395            Select: the modified expression.
        -2396        """
        -2397        parse_args = {"dialect": dialect, **opts}
        -2398
        -2399        try:
        -2400            expression = maybe_parse(expression, into=Join, prefix="JOIN", **parse_args)
        -2401        except ParseError:
        -2402            expression = maybe_parse(expression, into=(Join, Expression), **parse_args)
        +2353    def lateral(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        +2354        """
        +2355        Append to or set the LATERAL expressions.
        +2356
        +2357        Example:
        +2358            >>> Select().select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl").sql()
        +2359            'SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z'
        +2360
        +2361        Args:
        +2362            *expressions (str | Expression): the SQL code strings to parse.
        +2363                If an `Expression` instance is passed, it will be used as-is.
        +2364            append (bool): if `True`, add to any existing expressions.
        +2365                Otherwise, this resets the expressions.
        +2366            dialect (str): the dialect used to parse the input expressions.
        +2367            copy (bool): if `False`, modify this expression instance in-place.
        +2368            opts (kwargs): other options to use to parse the input expressions.
        +2369
        +2370        Returns:
        +2371            Select: the modified expression.
        +2372        """
        +2373        return _apply_list_builder(
        +2374            *expressions,
        +2375            instance=self,
        +2376            arg="laterals",
        +2377            append=append,
        +2378            into=Lateral,
        +2379            prefix="LATERAL VIEW",
        +2380            dialect=dialect,
        +2381            copy=copy,
        +2382            **opts,
        +2383        )
        +2384
        +2385    def join(
        +2386        self,
        +2387        expression,
        +2388        on=None,
        +2389        using=None,
        +2390        append=True,
        +2391        join_type=None,
        +2392        join_alias=None,
        +2393        dialect=None,
        +2394        copy=True,
        +2395        **opts,
        +2396    ) -> Select:
        +2397        """
        +2398        Append to or set the JOIN expressions.
        +2399
        +2400        Example:
        +2401            >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y").sql()
        +2402            'SELECT * FROM tbl JOIN tbl2 ON tbl1.y = tbl2.y'
         2403
        -2404        join = expression if isinstance(expression, Join) else Join(this=expression)
        -2405
        -2406        if isinstance(join.this, Select):
        -2407            join.this.replace(join.this.subquery())
        +2404            >>> Select().select("1").from_("a").join("b", using=["x", "y", "z"]).sql()
        +2405            'SELECT 1 FROM a JOIN b USING (x, y, z)'
        +2406
        +2407            Use `join_type` to change the type of join:
         2408
        -2409        if join_type:
        -2410            natural: t.Optional[Token]
        -2411            side: t.Optional[Token]
        -2412            kind: t.Optional[Token]
        -2413
        -2414            natural, side, kind = maybe_parse(join_type, into="JOIN_TYPE", **parse_args)  # type: ignore
        -2415
        -2416            if natural:
        -2417                join.set("natural", True)
        -2418            if side:
        -2419                join.set("side", side.text)
        -2420            if kind:
        -2421                join.set("kind", kind.text)
        -2422
        -2423        if on:
        -2424            on = and_(*ensure_collection(on), dialect=dialect, **opts)
        -2425            join.set("on", on)
        -2426
        -2427        if using:
        -2428            join = _apply_list_builder(
        -2429                *ensure_collection(using),
        -2430                instance=join,
        -2431                arg="using",
        -2432                append=append,
        -2433                copy=copy,
        -2434                **opts,
        -2435            )
        -2436
        -2437        if join_alias:
        -2438            join.set("this", alias_(join.this, join_alias, table=True))
        -2439        return _apply_list_builder(
        -2440            join,
        -2441            instance=self,
        -2442            arg="joins",
        -2443            append=append,
        -2444            copy=copy,
        -2445            **opts,
        -2446        )
        +2409            >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y", join_type="left outer").sql()
        +2410            'SELECT * FROM tbl LEFT OUTER JOIN tbl2 ON tbl1.y = tbl2.y'
        +2411
        +2412        Args:
        +2413            expression (str | Expression): the SQL code string to parse.
        +2414                If an `Expression` instance is passed, it will be used as-is.
        +2415            on (str | Expression): optionally specify the join "on" criteria as a SQL string.
        +2416                If an `Expression` instance is passed, it will be used as-is.
        +2417            using (str | Expression): optionally specify the join "using" criteria as a SQL string.
        +2418                If an `Expression` instance is passed, it will be used as-is.
        +2419            append (bool): if `True`, add to any existing expressions.
        +2420                Otherwise, this resets the expressions.
        +2421            join_type (str): If set, alter the parsed join type
        +2422            dialect (str): the dialect used to parse the input expressions.
        +2423            copy (bool): if `False`, modify this expression instance in-place.
        +2424            opts (kwargs): other options to use to parse the input expressions.
        +2425
        +2426        Returns:
        +2427            Select: the modified expression.
        +2428        """
        +2429        parse_args = {"dialect": dialect, **opts}
        +2430
        +2431        try:
        +2432            expression = maybe_parse(expression, into=Join, prefix="JOIN", **parse_args)
        +2433        except ParseError:
        +2434            expression = maybe_parse(expression, into=(Join, Expression), **parse_args)
        +2435
        +2436        join = expression if isinstance(expression, Join) else Join(this=expression)
        +2437
        +2438        if isinstance(join.this, Select):
        +2439            join.this.replace(join.this.subquery())
        +2440
        +2441        if join_type:
        +2442            natural: t.Optional[Token]
        +2443            side: t.Optional[Token]
        +2444            kind: t.Optional[Token]
        +2445
        +2446            natural, side, kind = maybe_parse(join_type, into="JOIN_TYPE", **parse_args)  # type: ignore
         2447
        -2448    def where(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        -2449        """
        -2450        Append to or set the WHERE expressions.
        -2451
        -2452        Example:
        -2453            >>> Select().select("x").from_("tbl").where("x = 'a' OR x < 'b'").sql()
        -2454            "SELECT x FROM tbl WHERE x = 'a' OR x < 'b'"
        -2455
        -2456        Args:
        -2457            *expressions (str | Expression): the SQL code strings to parse.
        -2458                If an `Expression` instance is passed, it will be used as-is.
        -2459                Multiple expressions are combined with an AND operator.
        -2460            append (bool): if `True`, AND the new expressions to any existing expression.
        -2461                Otherwise, this resets the expression.
        -2462            dialect (str): the dialect used to parse the input expressions.
        -2463            copy (bool): if `False`, modify this expression instance in-place.
        -2464            opts (kwargs): other options to use to parse the input expressions.
        -2465
        -2466        Returns:
        -2467            Select: the modified expression.
        -2468        """
        -2469        return _apply_conjunction_builder(
        -2470            *expressions,
        -2471            instance=self,
        -2472            arg="where",
        -2473            append=append,
        -2474            into=Where,
        -2475            dialect=dialect,
        +2448            if natural:
        +2449                join.set("natural", True)
        +2450            if side:
        +2451                join.set("side", side.text)
        +2452            if kind:
        +2453                join.set("kind", kind.text)
        +2454
        +2455        if on:
        +2456            on = and_(*ensure_collection(on), dialect=dialect, **opts)
        +2457            join.set("on", on)
        +2458
        +2459        if using:
        +2460            join = _apply_list_builder(
        +2461                *ensure_collection(using),
        +2462                instance=join,
        +2463                arg="using",
        +2464                append=append,
        +2465                copy=copy,
        +2466                **opts,
        +2467            )
        +2468
        +2469        if join_alias:
        +2470            join.set("this", alias_(join.this, join_alias, table=True))
        +2471        return _apply_list_builder(
        +2472            join,
        +2473            instance=self,
        +2474            arg="joins",
        +2475            append=append,
         2476            copy=copy,
         2477            **opts,
         2478        )
         2479
        -2480    def having(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        +2480    def where(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
         2481        """
        -2482        Append to or set the HAVING expressions.
        +2482        Append to or set the WHERE expressions.
         2483
         2484        Example:
        -2485            >>> Select().select("x", "COUNT(y)").from_("tbl").group_by("x").having("COUNT(y) > 3").sql()
        -2486            'SELECT x, COUNT(y) FROM tbl GROUP BY x HAVING COUNT(y) > 3'
        +2485            >>> Select().select("x").from_("tbl").where("x = 'a' OR x < 'b'").sql()
        +2486            "SELECT x FROM tbl WHERE x = 'a' OR x < 'b'"
         2487
         2488        Args:
         2489            *expressions (str | Expression): the SQL code strings to parse.
        @@ -21541,129 +22076,161 @@ Otherwise, this resets the expressions.
         2501        return _apply_conjunction_builder(
         2502            *expressions,
         2503            instance=self,
        -2504            arg="having",
        +2504            arg="where",
         2505            append=append,
        -2506            into=Having,
        +2506            into=Where,
         2507            dialect=dialect,
         2508            copy=copy,
         2509            **opts,
         2510        )
         2511
        -2512    def window(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        -2513        return _apply_list_builder(
        -2514            *expressions,
        -2515            instance=self,
        -2516            arg="windows",
        -2517            append=append,
        -2518            into=Window,
        -2519            dialect=dialect,
        -2520            copy=copy,
        -2521            **opts,
        -2522        )
        -2523
        -2524    def qualify(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        -2525        return _apply_conjunction_builder(
        -2526            *expressions,
        -2527            instance=self,
        -2528            arg="qualify",
        -2529            append=append,
        -2530            into=Qualify,
        -2531            dialect=dialect,
        -2532            copy=copy,
        -2533            **opts,
        -2534        )
        -2535
        -2536    def distinct(self, distinct=True, copy=True) -> Select:
        -2537        """
        -2538        Set the OFFSET expression.
        -2539
        -2540        Example:
        -2541            >>> Select().from_("tbl").select("x").distinct().sql()
        -2542            'SELECT DISTINCT x FROM tbl'
        +2512    def having(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        +2513        """
        +2514        Append to or set the HAVING expressions.
        +2515
        +2516        Example:
        +2517            >>> Select().select("x", "COUNT(y)").from_("tbl").group_by("x").having("COUNT(y) > 3").sql()
        +2518            'SELECT x, COUNT(y) FROM tbl GROUP BY x HAVING COUNT(y) > 3'
        +2519
        +2520        Args:
        +2521            *expressions (str | Expression): the SQL code strings to parse.
        +2522                If an `Expression` instance is passed, it will be used as-is.
        +2523                Multiple expressions are combined with an AND operator.
        +2524            append (bool): if `True`, AND the new expressions to any existing expression.
        +2525                Otherwise, this resets the expression.
        +2526            dialect (str): the dialect used to parse the input expressions.
        +2527            copy (bool): if `False`, modify this expression instance in-place.
        +2528            opts (kwargs): other options to use to parse the input expressions.
        +2529
        +2530        Returns:
        +2531            Select: the modified expression.
        +2532        """
        +2533        return _apply_conjunction_builder(
        +2534            *expressions,
        +2535            instance=self,
        +2536            arg="having",
        +2537            append=append,
        +2538            into=Having,
        +2539            dialect=dialect,
        +2540            copy=copy,
        +2541            **opts,
        +2542        )
         2543
        -2544        Args:
        -2545            distinct (bool): whether the Select should be distinct
        -2546            copy (bool): if `False`, modify this expression instance in-place.
        -2547
        -2548        Returns:
        -2549            Select: the modified expression.
        -2550        """
        -2551        instance = _maybe_copy(self, copy)
        -2552        instance.set("distinct", Distinct() if distinct else None)
        -2553        return instance
        -2554
        -2555    def ctas(self, table, properties=None, dialect=None, copy=True, **opts) -> Create:
        -2556        """
        -2557        Convert this expression to a CREATE TABLE AS statement.
        -2558
        -2559        Example:
        -2560            >>> Select().select("*").from_("tbl").ctas("x").sql()
        -2561            'CREATE TABLE x AS SELECT * FROM tbl'
        -2562
        -2563        Args:
        -2564            table (str | Expression): the SQL code string to parse as the table name.
        -2565                If another `Expression` instance is passed, it will be used as-is.
        -2566            properties (dict): an optional mapping of table properties
        -2567            dialect (str): the dialect used to parse the input table.
        -2568            copy (bool): if `False`, modify this expression instance in-place.
        -2569            opts (kwargs): other options to use to parse the input table.
        -2570
        -2571        Returns:
        -2572            Create: the CREATE TABLE AS expression
        -2573        """
        -2574        instance = _maybe_copy(self, copy)
        -2575        table_expression = maybe_parse(
        -2576            table,
        -2577            into=Table,
        -2578            dialect=dialect,
        -2579            **opts,
        -2580        )
        -2581        properties_expression = None
        -2582        if properties:
        -2583            properties_expression = Properties.from_dict(properties)
        -2584
        -2585        return Create(
        -2586            this=table_expression,
        -2587            kind="table",
        -2588            expression=instance,
        -2589            properties=properties_expression,
        -2590        )
        -2591
        -2592    def lock(self, update: bool = True, copy: bool = True) -> Select:
        -2593        """
        -2594        Set the locking read mode for this expression.
        -2595
        -2596        Examples:
        -2597            >>> Select().select("x").from_("tbl").where("x = 'a'").lock().sql("mysql")
        -2598            "SELECT x FROM tbl WHERE x = 'a' FOR UPDATE"
        -2599
        -2600            >>> Select().select("x").from_("tbl").where("x = 'a'").lock(update=False).sql("mysql")
        -2601            "SELECT x FROM tbl WHERE x = 'a' FOR SHARE"
        +2544    def window(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        +2545        return _apply_list_builder(
        +2546            *expressions,
        +2547            instance=self,
        +2548            arg="windows",
        +2549            append=append,
        +2550            into=Window,
        +2551            dialect=dialect,
        +2552            copy=copy,
        +2553            **opts,
        +2554        )
        +2555
        +2556    def qualify(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        +2557        return _apply_conjunction_builder(
        +2558            *expressions,
        +2559            instance=self,
        +2560            arg="qualify",
        +2561            append=append,
        +2562            into=Qualify,
        +2563            dialect=dialect,
        +2564            copy=copy,
        +2565            **opts,
        +2566        )
        +2567
        +2568    def distinct(self, distinct=True, copy=True) -> Select:
        +2569        """
        +2570        Set the OFFSET expression.
        +2571
        +2572        Example:
        +2573            >>> Select().from_("tbl").select("x").distinct().sql()
        +2574            'SELECT DISTINCT x FROM tbl'
        +2575
        +2576        Args:
        +2577            distinct (bool): whether the Select should be distinct
        +2578            copy (bool): if `False`, modify this expression instance in-place.
        +2579
        +2580        Returns:
        +2581            Select: the modified expression.
        +2582        """
        +2583        instance = _maybe_copy(self, copy)
        +2584        instance.set("distinct", Distinct() if distinct else None)
        +2585        return instance
        +2586
        +2587    def ctas(self, table, properties=None, dialect=None, copy=True, **opts) -> Create:
        +2588        """
        +2589        Convert this expression to a CREATE TABLE AS statement.
        +2590
        +2591        Example:
        +2592            >>> Select().select("*").from_("tbl").ctas("x").sql()
        +2593            'CREATE TABLE x AS SELECT * FROM tbl'
        +2594
        +2595        Args:
        +2596            table (str | Expression): the SQL code string to parse as the table name.
        +2597                If another `Expression` instance is passed, it will be used as-is.
        +2598            properties (dict): an optional mapping of table properties
        +2599            dialect (str): the dialect used to parse the input table.
        +2600            copy (bool): if `False`, modify this expression instance in-place.
        +2601            opts (kwargs): other options to use to parse the input table.
         2602
        -2603        Args:
        -2604            update: if `True`, the locking type will be `FOR UPDATE`, else it will be `FOR SHARE`.
        -2605            copy: if `False`, modify this expression instance in-place.
        -2606
        -2607        Returns:
        -2608            The modified expression.
        -2609        """
        -2610
        -2611        inst = _maybe_copy(self, copy)
        -2612        inst.set("lock", Lock(update=update))
        -2613
        -2614        return inst
        -2615
        -2616    @property
        -2617    def named_selects(self) -> t.List[str]:
        -2618        return [e.output_name for e in self.expressions if e.alias_or_name]
        -2619
        -2620    @property
        -2621    def is_star(self) -> bool:
        -2622        return any(expression.is_star for expression in self.expressions)
        +2603        Returns:
        +2604            Create: the CREATE TABLE AS expression
        +2605        """
        +2606        instance = _maybe_copy(self, copy)
        +2607        table_expression = maybe_parse(
        +2608            table,
        +2609            into=Table,
        +2610            dialect=dialect,
        +2611            **opts,
        +2612        )
        +2613        properties_expression = None
        +2614        if properties:
        +2615            properties_expression = Properties.from_dict(properties)
        +2616
        +2617        return Create(
        +2618            this=table_expression,
        +2619            kind="table",
        +2620            expression=instance,
        +2621            properties=properties_expression,
        +2622        )
         2623
        -2624    @property
        -2625    def selects(self) -> t.List[Expression]:
        -2626        return self.expressions
        +2624    def lock(self, update: bool = True, copy: bool = True) -> Select:
        +2625        """
        +2626        Set the locking read mode for this expression.
        +2627
        +2628        Examples:
        +2629            >>> Select().select("x").from_("tbl").where("x = 'a'").lock().sql("mysql")
        +2630            "SELECT x FROM tbl WHERE x = 'a' FOR UPDATE"
        +2631
        +2632            >>> Select().select("x").from_("tbl").where("x = 'a'").lock(update=False).sql("mysql")
        +2633            "SELECT x FROM tbl WHERE x = 'a' FOR SHARE"
        +2634
        +2635        Args:
        +2636            update: if `True`, the locking type will be `FOR UPDATE`, else it will be `FOR SHARE`.
        +2637            copy: if `False`, modify this expression instance in-place.
        +2638
        +2639        Returns:
        +2640            The modified expression.
        +2641        """
        +2642
        +2643        inst = _maybe_copy(self, copy)
        +2644        inst.set("lock", Lock(update=update))
        +2645
        +2646        return inst
        +2647
        +2648    @property
        +2649    def named_selects(self) -> t.List[str]:
        +2650        return [e.output_name for e in self.expressions if e.alias_or_name]
        +2651
        +2652    @property
        +2653    def is_star(self) -> bool:
        +2654        return any(expression.is_star for expression in self.expressions)
        +2655
        +2656    @property
        +2657    def selects(self) -> t.List[Expression]:
        +2658        return self.expressions
         
        @@ -21680,38 +22247,38 @@ Otherwise, this resets the expressions.
        -
        2054    def from_(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        -2055        """
        -2056        Set the FROM expression.
        -2057
        -2058        Example:
        -2059            >>> Select().from_("tbl").select("x").sql()
        -2060            'SELECT x FROM tbl'
        -2061
        -2062        Args:
        -2063            *expressions (str | Expression): the SQL code strings to parse.
        -2064                If a `From` instance is passed, this is used as-is.
        -2065                If another `Expression` instance is passed, it will be wrapped in a `From`.
        -2066            append (bool): if `True`, add to any existing expressions.
        -2067                Otherwise, this flattens all the `From` expression into a single expression.
        -2068            dialect (str): the dialect used to parse the input expression.
        -2069            copy (bool): if `False`, modify this expression instance in-place.
        -2070            opts (kwargs): other options to use to parse the input expressions.
        -2071
        -2072        Returns:
        -2073            Select: the modified expression.
        -2074        """
        -2075        return _apply_child_list_builder(
        -2076            *expressions,
        -2077            instance=self,
        -2078            arg="from",
        -2079            append=append,
        -2080            copy=copy,
        -2081            prefix="FROM",
        -2082            into=From,
        -2083            dialect=dialect,
        -2084            **opts,
        -2085        )
        +            
        2086    def from_(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        +2087        """
        +2088        Set the FROM expression.
        +2089
        +2090        Example:
        +2091            >>> Select().from_("tbl").select("x").sql()
        +2092            'SELECT x FROM tbl'
        +2093
        +2094        Args:
        +2095            *expressions (str | Expression): the SQL code strings to parse.
        +2096                If a `From` instance is passed, this is used as-is.
        +2097                If another `Expression` instance is passed, it will be wrapped in a `From`.
        +2098            append (bool): if `True`, add to any existing expressions.
        +2099                Otherwise, this flattens all the `From` expression into a single expression.
        +2100            dialect (str): the dialect used to parse the input expression.
        +2101            copy (bool): if `False`, modify this expression instance in-place.
        +2102            opts (kwargs): other options to use to parse the input expressions.
        +2103
        +2104        Returns:
        +2105            Select: the modified expression.
        +2106        """
        +2107        return _apply_child_list_builder(
        +2108            *expressions,
        +2109            instance=self,
        +2110            arg="from",
        +2111            append=append,
        +2112            copy=copy,
        +2113            prefix="FROM",
        +2114            into=From,
        +2115            dialect=dialect,
        +2116            **opts,
        +2117        )
         
        @@ -21760,41 +22327,41 @@ Otherwise, this flattens all the From expressio
        -
        2087    def group_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        -2088        """
        -2089        Set the GROUP BY expression.
        -2090
        -2091        Example:
        -2092            >>> Select().from_("tbl").select("x", "COUNT(1)").group_by("x").sql()
        -2093            'SELECT x, COUNT(1) FROM tbl GROUP BY x'
        -2094
        -2095        Args:
        -2096            *expressions (str | Expression): the SQL code strings to parse.
        -2097                If a `Group` instance is passed, this is used as-is.
        -2098                If another `Expression` instance is passed, it will be wrapped in a `Group`.
        -2099                If nothing is passed in then a group by is not applied to the expression
        -2100            append (bool): if `True`, add to any existing expressions.
        -2101                Otherwise, this flattens all the `Group` expression into a single expression.
        -2102            dialect (str): the dialect used to parse the input expression.
        -2103            copy (bool): if `False`, modify this expression instance in-place.
        -2104            opts (kwargs): other options to use to parse the input expressions.
        -2105
        -2106        Returns:
        -2107            Select: the modified expression.
        -2108        """
        -2109        if not expressions:
        -2110            return self if not copy else self.copy()
        -2111        return _apply_child_list_builder(
        -2112            *expressions,
        -2113            instance=self,
        -2114            arg="group",
        -2115            append=append,
        -2116            copy=copy,
        -2117            prefix="GROUP BY",
        -2118            into=Group,
        -2119            dialect=dialect,
        -2120            **opts,
        -2121        )
        +            
        2119    def group_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        +2120        """
        +2121        Set the GROUP BY expression.
        +2122
        +2123        Example:
        +2124            >>> Select().from_("tbl").select("x", "COUNT(1)").group_by("x").sql()
        +2125            'SELECT x, COUNT(1) FROM tbl GROUP BY x'
        +2126
        +2127        Args:
        +2128            *expressions (str | Expression): the SQL code strings to parse.
        +2129                If a `Group` instance is passed, this is used as-is.
        +2130                If another `Expression` instance is passed, it will be wrapped in a `Group`.
        +2131                If nothing is passed in then a group by is not applied to the expression
        +2132            append (bool): if `True`, add to any existing expressions.
        +2133                Otherwise, this flattens all the `Group` expression into a single expression.
        +2134            dialect (str): the dialect used to parse the input expression.
        +2135            copy (bool): if `False`, modify this expression instance in-place.
        +2136            opts (kwargs): other options to use to parse the input expressions.
        +2137
        +2138        Returns:
        +2139            Select: the modified expression.
        +2140        """
        +2141        if not expressions:
        +2142            return self if not copy else self.copy()
        +2143        return _apply_child_list_builder(
        +2144            *expressions,
        +2145            instance=self,
        +2146            arg="group",
        +2147            append=append,
        +2148            copy=copy,
        +2149            prefix="GROUP BY",
        +2150            into=Group,
        +2151            dialect=dialect,
        +2152            **opts,
        +2153        )
         
        @@ -21844,38 +22411,38 @@ Otherwise, this flattens all the Group express
        -
        2123    def order_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        -2124        """
        -2125        Set the ORDER BY expression.
        -2126
        -2127        Example:
        -2128            >>> Select().from_("tbl").select("x").order_by("x DESC").sql()
        -2129            'SELECT x FROM tbl ORDER BY x DESC'
        -2130
        -2131        Args:
        -2132            *expressions (str | Expression): the SQL code strings to parse.
        -2133                If a `Group` instance is passed, this is used as-is.
        -2134                If another `Expression` instance is passed, it will be wrapped in a `Order`.
        -2135            append (bool): if `True`, add to any existing expressions.
        -2136                Otherwise, this flattens all the `Order` expression into a single expression.
        -2137            dialect (str): the dialect used to parse the input expression.
        -2138            copy (bool): if `False`, modify this expression instance in-place.
        -2139            opts (kwargs): other options to use to parse the input expressions.
        -2140
        -2141        Returns:
        -2142            Select: the modified expression.
        -2143        """
        -2144        return _apply_child_list_builder(
        -2145            *expressions,
        -2146            instance=self,
        -2147            arg="order",
        -2148            append=append,
        -2149            copy=copy,
        -2150            prefix="ORDER BY",
        -2151            into=Order,
        -2152            dialect=dialect,
        -2153            **opts,
        -2154        )
        +            
        2155    def order_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        +2156        """
        +2157        Set the ORDER BY expression.
        +2158
        +2159        Example:
        +2160            >>> Select().from_("tbl").select("x").order_by("x DESC").sql()
        +2161            'SELECT x FROM tbl ORDER BY x DESC'
        +2162
        +2163        Args:
        +2164            *expressions (str | Expression): the SQL code strings to parse.
        +2165                If a `Group` instance is passed, this is used as-is.
        +2166                If another `Expression` instance is passed, it will be wrapped in a `Order`.
        +2167            append (bool): if `True`, add to any existing expressions.
        +2168                Otherwise, this flattens all the `Order` expression into a single expression.
        +2169            dialect (str): the dialect used to parse the input expression.
        +2170            copy (bool): if `False`, modify this expression instance in-place.
        +2171            opts (kwargs): other options to use to parse the input expressions.
        +2172
        +2173        Returns:
        +2174            Select: the modified expression.
        +2175        """
        +2176        return _apply_child_list_builder(
        +2177            *expressions,
        +2178            instance=self,
        +2179            arg="order",
        +2180            append=append,
        +2181            copy=copy,
        +2182            prefix="ORDER BY",
        +2183            into=Order,
        +2184            dialect=dialect,
        +2185            **opts,
        +2186        )
         
        @@ -21924,38 +22491,38 @@ Otherwise, this flattens all the Order express
        -
        2156    def sort_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        -2157        """
        -2158        Set the SORT BY expression.
        -2159
        -2160        Example:
        -2161            >>> Select().from_("tbl").select("x").sort_by("x DESC").sql()
        -2162            'SELECT x FROM tbl SORT BY x DESC'
        -2163
        -2164        Args:
        -2165            *expressions (str | Expression): the SQL code strings to parse.
        -2166                If a `Group` instance is passed, this is used as-is.
        -2167                If another `Expression` instance is passed, it will be wrapped in a `SORT`.
        -2168            append (bool): if `True`, add to any existing expressions.
        -2169                Otherwise, this flattens all the `Order` expression into a single expression.
        -2170            dialect (str): the dialect used to parse the input expression.
        -2171            copy (bool): if `False`, modify this expression instance in-place.
        -2172            opts (kwargs): other options to use to parse the input expressions.
        -2173
        -2174        Returns:
        -2175            Select: the modified expression.
        -2176        """
        -2177        return _apply_child_list_builder(
        -2178            *expressions,
        -2179            instance=self,
        -2180            arg="sort",
        -2181            append=append,
        -2182            copy=copy,
        -2183            prefix="SORT BY",
        -2184            into=Sort,
        -2185            dialect=dialect,
        -2186            **opts,
        -2187        )
        +            
        2188    def sort_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        +2189        """
        +2190        Set the SORT BY expression.
        +2191
        +2192        Example:
        +2193            >>> Select().from_("tbl").select("x").sort_by("x DESC").sql()
        +2194            'SELECT x FROM tbl SORT BY x DESC'
        +2195
        +2196        Args:
        +2197            *expressions (str | Expression): the SQL code strings to parse.
        +2198                If a `Group` instance is passed, this is used as-is.
        +2199                If another `Expression` instance is passed, it will be wrapped in a `SORT`.
        +2200            append (bool): if `True`, add to any existing expressions.
        +2201                Otherwise, this flattens all the `Order` expression into a single expression.
        +2202            dialect (str): the dialect used to parse the input expression.
        +2203            copy (bool): if `False`, modify this expression instance in-place.
        +2204            opts (kwargs): other options to use to parse the input expressions.
        +2205
        +2206        Returns:
        +2207            Select: the modified expression.
        +2208        """
        +2209        return _apply_child_list_builder(
        +2210            *expressions,
        +2211            instance=self,
        +2212            arg="sort",
        +2213            append=append,
        +2214            copy=copy,
        +2215            prefix="SORT BY",
        +2216            into=Sort,
        +2217            dialect=dialect,
        +2218            **opts,
        +2219        )
         
        @@ -22004,38 +22571,38 @@ Otherwise, this flattens all the Order express
        -
        2189    def cluster_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        -2190        """
        -2191        Set the CLUSTER BY expression.
        -2192
        -2193        Example:
        -2194            >>> Select().from_("tbl").select("x").cluster_by("x DESC").sql()
        -2195            'SELECT x FROM tbl CLUSTER BY x DESC'
        -2196
        -2197        Args:
        -2198            *expressions (str | Expression): the SQL code strings to parse.
        -2199                If a `Group` instance is passed, this is used as-is.
        -2200                If another `Expression` instance is passed, it will be wrapped in a `Cluster`.
        -2201            append (bool): if `True`, add to any existing expressions.
        -2202                Otherwise, this flattens all the `Order` expression into a single expression.
        -2203            dialect (str): the dialect used to parse the input expression.
        -2204            copy (bool): if `False`, modify this expression instance in-place.
        -2205            opts (kwargs): other options to use to parse the input expressions.
        -2206
        -2207        Returns:
        -2208            Select: the modified expression.
        -2209        """
        -2210        return _apply_child_list_builder(
        -2211            *expressions,
        -2212            instance=self,
        -2213            arg="cluster",
        -2214            append=append,
        -2215            copy=copy,
        -2216            prefix="CLUSTER BY",
        -2217            into=Cluster,
        -2218            dialect=dialect,
        -2219            **opts,
        -2220        )
        +            
        2221    def cluster_by(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        +2222        """
        +2223        Set the CLUSTER BY expression.
        +2224
        +2225        Example:
        +2226            >>> Select().from_("tbl").select("x").cluster_by("x DESC").sql()
        +2227            'SELECT x FROM tbl CLUSTER BY x DESC'
        +2228
        +2229        Args:
        +2230            *expressions (str | Expression): the SQL code strings to parse.
        +2231                If a `Group` instance is passed, this is used as-is.
        +2232                If another `Expression` instance is passed, it will be wrapped in a `Cluster`.
        +2233            append (bool): if `True`, add to any existing expressions.
        +2234                Otherwise, this flattens all the `Order` expression into a single expression.
        +2235            dialect (str): the dialect used to parse the input expression.
        +2236            copy (bool): if `False`, modify this expression instance in-place.
        +2237            opts (kwargs): other options to use to parse the input expressions.
        +2238
        +2239        Returns:
        +2240            Select: the modified expression.
        +2241        """
        +2242        return _apply_child_list_builder(
        +2243            *expressions,
        +2244            instance=self,
        +2245            arg="cluster",
        +2246            append=append,
        +2247            copy=copy,
        +2248            prefix="CLUSTER BY",
        +2249            into=Cluster,
        +2250            dialect=dialect,
        +2251            **opts,
        +2252        )
         
        @@ -22084,36 +22651,36 @@ Otherwise, this flattens all the Order express
        -
        2222    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
        -2223        """
        -2224        Set the LIMIT expression.
        -2225
        -2226        Example:
        -2227            >>> Select().from_("tbl").select("x").limit(10).sql()
        -2228            'SELECT x FROM tbl LIMIT 10'
        -2229
        -2230        Args:
        -2231            expression (str | int | Expression): the SQL code string to parse.
        -2232                This can also be an integer.
        -2233                If a `Limit` instance is passed, this is used as-is.
        -2234                If another `Expression` instance is passed, it will be wrapped in a `Limit`.
        -2235            dialect (str): the dialect used to parse the input expression.
        -2236            copy (bool): if `False`, modify this expression instance in-place.
        -2237            opts (kwargs): other options to use to parse the input expressions.
        -2238
        -2239        Returns:
        -2240            Select: the modified expression.
        -2241        """
        -2242        return _apply_builder(
        -2243            expression=expression,
        -2244            instance=self,
        -2245            arg="limit",
        -2246            into=Limit,
        -2247            prefix="LIMIT",
        -2248            dialect=dialect,
        -2249            copy=copy,
        -2250            **opts,
        -2251        )
        +            
        2254    def limit(self, expression, dialect=None, copy=True, **opts) -> Select:
        +2255        """
        +2256        Set the LIMIT expression.
        +2257
        +2258        Example:
        +2259            >>> Select().from_("tbl").select("x").limit(10).sql()
        +2260            'SELECT x FROM tbl LIMIT 10'
        +2261
        +2262        Args:
        +2263            expression (str | int | Expression): the SQL code string to parse.
        +2264                This can also be an integer.
        +2265                If a `Limit` instance is passed, this is used as-is.
        +2266                If another `Expression` instance is passed, it will be wrapped in a `Limit`.
        +2267            dialect (str): the dialect used to parse the input expression.
        +2268            copy (bool): if `False`, modify this expression instance in-place.
        +2269            opts (kwargs): other options to use to parse the input expressions.
        +2270
        +2271        Returns:
        +2272            Select: the modified expression.
        +2273        """
        +2274        return _apply_builder(
        +2275            expression=expression,
        +2276            instance=self,
        +2277            arg="limit",
        +2278            into=Limit,
        +2279            prefix="LIMIT",
        +2280            dialect=dialect,
        +2281            copy=copy,
        +2282            **opts,
        +2283        )
         
        @@ -22161,36 +22728,36 @@ If another Expression instance is passed,
        -
        2253    def offset(self, expression, dialect=None, copy=True, **opts) -> Select:
        -2254        """
        -2255        Set the OFFSET expression.
        -2256
        -2257        Example:
        -2258            >>> Select().from_("tbl").select("x").offset(10).sql()
        -2259            'SELECT x FROM tbl OFFSET 10'
        -2260
        -2261        Args:
        -2262            expression (str | int | Expression): the SQL code string to parse.
        -2263                This can also be an integer.
        -2264                If a `Offset` instance is passed, this is used as-is.
        -2265                If another `Expression` instance is passed, it will be wrapped in a `Offset`.
        -2266            dialect (str): the dialect used to parse the input expression.
        -2267            copy (bool): if `False`, modify this expression instance in-place.
        -2268            opts (kwargs): other options to use to parse the input expressions.
        -2269
        -2270        Returns:
        -2271            Select: the modified expression.
        -2272        """
        -2273        return _apply_builder(
        -2274            expression=expression,
        -2275            instance=self,
        -2276            arg="offset",
        -2277            into=Offset,
        -2278            prefix="OFFSET",
        -2279            dialect=dialect,
        -2280            copy=copy,
        -2281            **opts,
        -2282        )
        +            
        2285    def offset(self, expression, dialect=None, copy=True, **opts) -> Select:
        +2286        """
        +2287        Set the OFFSET expression.
        +2288
        +2289        Example:
        +2290            >>> Select().from_("tbl").select("x").offset(10).sql()
        +2291            'SELECT x FROM tbl OFFSET 10'
        +2292
        +2293        Args:
        +2294            expression (str | int | Expression): the SQL code string to parse.
        +2295                This can also be an integer.
        +2296                If a `Offset` instance is passed, this is used as-is.
        +2297                If another `Expression` instance is passed, it will be wrapped in a `Offset`.
        +2298            dialect (str): the dialect used to parse the input expression.
        +2299            copy (bool): if `False`, modify this expression instance in-place.
        +2300            opts (kwargs): other options to use to parse the input expressions.
        +2301
        +2302        Returns:
        +2303            Select: the modified expression.
        +2304        """
        +2305        return _apply_builder(
        +2306            expression=expression,
        +2307            instance=self,
        +2308            arg="offset",
        +2309            into=Offset,
        +2310            prefix="OFFSET",
        +2311            dialect=dialect,
        +2312            copy=copy,
        +2313            **opts,
        +2314        )
         
        @@ -22238,42 +22805,42 @@ If another Expression instance is passed,
        -
        2284    def select(
        -2285        self,
        -2286        *expressions: ExpOrStr,
        -2287        append: bool = True,
        -2288        dialect: DialectType = None,
        -2289        copy: bool = True,
        -2290        **opts,
        -2291    ) -> Select:
        -2292        """
        -2293        Append to or set the SELECT expressions.
        -2294
        -2295        Example:
        -2296            >>> Select().select("x", "y").sql()
        -2297            'SELECT x, y'
        -2298
        -2299        Args:
        -2300            *expressions: the SQL code strings to parse.
        -2301                If an `Expression` instance is passed, it will be used as-is.
        -2302            append: if `True`, add to any existing expressions.
        -2303                Otherwise, this resets the expressions.
        -2304            dialect: the dialect used to parse the input expressions.
        -2305            copy: if `False`, modify this expression instance in-place.
        -2306            opts: other options to use to parse the input expressions.
        -2307
        -2308        Returns:
        -2309            Select: the modified expression.
        -2310        """
        -2311        return _apply_list_builder(
        -2312            *expressions,
        -2313            instance=self,
        -2314            arg="expressions",
        -2315            append=append,
        -2316            dialect=dialect,
        -2317            copy=copy,
        -2318            **opts,
        -2319        )
        +            
        2316    def select(
        +2317        self,
        +2318        *expressions: ExpOrStr,
        +2319        append: bool = True,
        +2320        dialect: DialectType = None,
        +2321        copy: bool = True,
        +2322        **opts,
        +2323    ) -> Select:
        +2324        """
        +2325        Append to or set the SELECT expressions.
        +2326
        +2327        Example:
        +2328            >>> Select().select("x", "y").sql()
        +2329            'SELECT x, y'
        +2330
        +2331        Args:
        +2332            *expressions: the SQL code strings to parse.
        +2333                If an `Expression` instance is passed, it will be used as-is.
        +2334            append: if `True`, add to any existing expressions.
        +2335                Otherwise, this resets the expressions.
        +2336            dialect: the dialect used to parse the input expressions.
        +2337            copy: if `False`, modify this expression instance in-place.
        +2338            opts: other options to use to parse the input expressions.
        +2339
        +2340        Returns:
        +2341            Select: the modified expression.
        +2342        """
        +2343        return _apply_list_builder(
        +2344            *expressions,
        +2345            instance=self,
        +2346            arg="expressions",
        +2347            append=append,
        +2348            dialect=dialect,
        +2349            copy=copy,
        +2350            **opts,
        +2351        )
         
        @@ -22321,37 +22888,37 @@ Otherwise, this resets the expressions.
        -
        2321    def lateral(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        -2322        """
        -2323        Append to or set the LATERAL expressions.
        -2324
        -2325        Example:
        -2326            >>> Select().select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl").sql()
        -2327            'SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z'
        -2328
        -2329        Args:
        -2330            *expressions (str | Expression): the SQL code strings to parse.
        -2331                If an `Expression` instance is passed, it will be used as-is.
        -2332            append (bool): if `True`, add to any existing expressions.
        -2333                Otherwise, this resets the expressions.
        -2334            dialect (str): the dialect used to parse the input expressions.
        -2335            copy (bool): if `False`, modify this expression instance in-place.
        -2336            opts (kwargs): other options to use to parse the input expressions.
        -2337
        -2338        Returns:
        -2339            Select: the modified expression.
        -2340        """
        -2341        return _apply_list_builder(
        -2342            *expressions,
        -2343            instance=self,
        -2344            arg="laterals",
        -2345            append=append,
        -2346            into=Lateral,
        -2347            prefix="LATERAL VIEW",
        -2348            dialect=dialect,
        -2349            copy=copy,
        -2350            **opts,
        -2351        )
        +            
        2353    def lateral(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        +2354        """
        +2355        Append to or set the LATERAL expressions.
        +2356
        +2357        Example:
        +2358            >>> Select().select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl").sql()
        +2359            'SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z'
        +2360
        +2361        Args:
        +2362            *expressions (str | Expression): the SQL code strings to parse.
        +2363                If an `Expression` instance is passed, it will be used as-is.
        +2364            append (bool): if `True`, add to any existing expressions.
        +2365                Otherwise, this resets the expressions.
        +2366            dialect (str): the dialect used to parse the input expressions.
        +2367            copy (bool): if `False`, modify this expression instance in-place.
        +2368            opts (kwargs): other options to use to parse the input expressions.
        +2369
        +2370        Returns:
        +2371            Select: the modified expression.
        +2372        """
        +2373        return _apply_list_builder(
        +2374            *expressions,
        +2375            instance=self,
        +2376            arg="laterals",
        +2377            append=append,
        +2378            into=Lateral,
        +2379            prefix="LATERAL VIEW",
        +2380            dialect=dialect,
        +2381            copy=copy,
        +2382            **opts,
        +2383        )
         
        @@ -22399,100 +22966,100 @@ Otherwise, this resets the expressions.
        -
        2353    def join(
        -2354        self,
        -2355        expression,
        -2356        on=None,
        -2357        using=None,
        -2358        append=True,
        -2359        join_type=None,
        -2360        join_alias=None,
        -2361        dialect=None,
        -2362        copy=True,
        -2363        **opts,
        -2364    ) -> Select:
        -2365        """
        -2366        Append to or set the JOIN expressions.
        -2367
        -2368        Example:
        -2369            >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y").sql()
        -2370            'SELECT * FROM tbl JOIN tbl2 ON tbl1.y = tbl2.y'
        -2371
        -2372            >>> Select().select("1").from_("a").join("b", using=["x", "y", "z"]).sql()
        -2373            'SELECT 1 FROM a JOIN b USING (x, y, z)'
        -2374
        -2375            Use `join_type` to change the type of join:
        -2376
        -2377            >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y", join_type="left outer").sql()
        -2378            'SELECT * FROM tbl LEFT OUTER JOIN tbl2 ON tbl1.y = tbl2.y'
        -2379
        -2380        Args:
        -2381            expression (str | Expression): the SQL code string to parse.
        -2382                If an `Expression` instance is passed, it will be used as-is.
        -2383            on (str | Expression): optionally specify the join "on" criteria as a SQL string.
        -2384                If an `Expression` instance is passed, it will be used as-is.
        -2385            using (str | Expression): optionally specify the join "using" criteria as a SQL string.
        -2386                If an `Expression` instance is passed, it will be used as-is.
        -2387            append (bool): if `True`, add to any existing expressions.
        -2388                Otherwise, this resets the expressions.
        -2389            join_type (str): If set, alter the parsed join type
        -2390            dialect (str): the dialect used to parse the input expressions.
        -2391            copy (bool): if `False`, modify this expression instance in-place.
        -2392            opts (kwargs): other options to use to parse the input expressions.
        -2393
        -2394        Returns:
        -2395            Select: the modified expression.
        -2396        """
        -2397        parse_args = {"dialect": dialect, **opts}
        -2398
        -2399        try:
        -2400            expression = maybe_parse(expression, into=Join, prefix="JOIN", **parse_args)
        -2401        except ParseError:
        -2402            expression = maybe_parse(expression, into=(Join, Expression), **parse_args)
        +            
        2385    def join(
        +2386        self,
        +2387        expression,
        +2388        on=None,
        +2389        using=None,
        +2390        append=True,
        +2391        join_type=None,
        +2392        join_alias=None,
        +2393        dialect=None,
        +2394        copy=True,
        +2395        **opts,
        +2396    ) -> Select:
        +2397        """
        +2398        Append to or set the JOIN expressions.
        +2399
        +2400        Example:
        +2401            >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y").sql()
        +2402            'SELECT * FROM tbl JOIN tbl2 ON tbl1.y = tbl2.y'
         2403
        -2404        join = expression if isinstance(expression, Join) else Join(this=expression)
        -2405
        -2406        if isinstance(join.this, Select):
        -2407            join.this.replace(join.this.subquery())
        +2404            >>> Select().select("1").from_("a").join("b", using=["x", "y", "z"]).sql()
        +2405            'SELECT 1 FROM a JOIN b USING (x, y, z)'
        +2406
        +2407            Use `join_type` to change the type of join:
         2408
        -2409        if join_type:
        -2410            natural: t.Optional[Token]
        -2411            side: t.Optional[Token]
        -2412            kind: t.Optional[Token]
        -2413
        -2414            natural, side, kind = maybe_parse(join_type, into="JOIN_TYPE", **parse_args)  # type: ignore
        -2415
        -2416            if natural:
        -2417                join.set("natural", True)
        -2418            if side:
        -2419                join.set("side", side.text)
        -2420            if kind:
        -2421                join.set("kind", kind.text)
        -2422
        -2423        if on:
        -2424            on = and_(*ensure_collection(on), dialect=dialect, **opts)
        -2425            join.set("on", on)
        -2426
        -2427        if using:
        -2428            join = _apply_list_builder(
        -2429                *ensure_collection(using),
        -2430                instance=join,
        -2431                arg="using",
        -2432                append=append,
        -2433                copy=copy,
        -2434                **opts,
        -2435            )
        -2436
        -2437        if join_alias:
        -2438            join.set("this", alias_(join.this, join_alias, table=True))
        -2439        return _apply_list_builder(
        -2440            join,
        -2441            instance=self,
        -2442            arg="joins",
        -2443            append=append,
        -2444            copy=copy,
        -2445            **opts,
        -2446        )
        +2409            >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y", join_type="left outer").sql()
        +2410            'SELECT * FROM tbl LEFT OUTER JOIN tbl2 ON tbl1.y = tbl2.y'
        +2411
        +2412        Args:
        +2413            expression (str | Expression): the SQL code string to parse.
        +2414                If an `Expression` instance is passed, it will be used as-is.
        +2415            on (str | Expression): optionally specify the join "on" criteria as a SQL string.
        +2416                If an `Expression` instance is passed, it will be used as-is.
        +2417            using (str | Expression): optionally specify the join "using" criteria as a SQL string.
        +2418                If an `Expression` instance is passed, it will be used as-is.
        +2419            append (bool): if `True`, add to any existing expressions.
        +2420                Otherwise, this resets the expressions.
        +2421            join_type (str): If set, alter the parsed join type
        +2422            dialect (str): the dialect used to parse the input expressions.
        +2423            copy (bool): if `False`, modify this expression instance in-place.
        +2424            opts (kwargs): other options to use to parse the input expressions.
        +2425
        +2426        Returns:
        +2427            Select: the modified expression.
        +2428        """
        +2429        parse_args = {"dialect": dialect, **opts}
        +2430
        +2431        try:
        +2432            expression = maybe_parse(expression, into=Join, prefix="JOIN", **parse_args)
        +2433        except ParseError:
        +2434            expression = maybe_parse(expression, into=(Join, Expression), **parse_args)
        +2435
        +2436        join = expression if isinstance(expression, Join) else Join(this=expression)
        +2437
        +2438        if isinstance(join.this, Select):
        +2439            join.this.replace(join.this.subquery())
        +2440
        +2441        if join_type:
        +2442            natural: t.Optional[Token]
        +2443            side: t.Optional[Token]
        +2444            kind: t.Optional[Token]
        +2445
        +2446            natural, side, kind = maybe_parse(join_type, into="JOIN_TYPE", **parse_args)  # type: ignore
        +2447
        +2448            if natural:
        +2449                join.set("natural", True)
        +2450            if side:
        +2451                join.set("side", side.text)
        +2452            if kind:
        +2453                join.set("kind", kind.text)
        +2454
        +2455        if on:
        +2456            on = and_(*ensure_collection(on), dialect=dialect, **opts)
        +2457            join.set("on", on)
        +2458
        +2459        if using:
        +2460            join = _apply_list_builder(
        +2461                *ensure_collection(using),
        +2462                instance=join,
        +2463                arg="using",
        +2464                append=append,
        +2465                copy=copy,
        +2466                **opts,
        +2467            )
        +2468
        +2469        if join_alias:
        +2470            join.set("this", alias_(join.this, join_alias, table=True))
        +2471        return _apply_list_builder(
        +2472            join,
        +2473            instance=self,
        +2474            arg="joins",
        +2475            append=append,
        +2476            copy=copy,
        +2477            **opts,
        +2478        )
         
        @@ -22559,37 +23126,37 @@ Otherwise, this resets the expressions.
        -
        2448    def where(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        -2449        """
        -2450        Append to or set the WHERE expressions.
        -2451
        -2452        Example:
        -2453            >>> Select().select("x").from_("tbl").where("x = 'a' OR x < 'b'").sql()
        -2454            "SELECT x FROM tbl WHERE x = 'a' OR x < 'b'"
        -2455
        -2456        Args:
        -2457            *expressions (str | Expression): the SQL code strings to parse.
        -2458                If an `Expression` instance is passed, it will be used as-is.
        -2459                Multiple expressions are combined with an AND operator.
        -2460            append (bool): if `True`, AND the new expressions to any existing expression.
        -2461                Otherwise, this resets the expression.
        -2462            dialect (str): the dialect used to parse the input expressions.
        -2463            copy (bool): if `False`, modify this expression instance in-place.
        -2464            opts (kwargs): other options to use to parse the input expressions.
        -2465
        -2466        Returns:
        -2467            Select: the modified expression.
        -2468        """
        -2469        return _apply_conjunction_builder(
        -2470            *expressions,
        -2471            instance=self,
        -2472            arg="where",
        -2473            append=append,
        -2474            into=Where,
        -2475            dialect=dialect,
        -2476            copy=copy,
        -2477            **opts,
        -2478        )
        +            
        2480    def where(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        +2481        """
        +2482        Append to or set the WHERE expressions.
        +2483
        +2484        Example:
        +2485            >>> Select().select("x").from_("tbl").where("x = 'a' OR x < 'b'").sql()
        +2486            "SELECT x FROM tbl WHERE x = 'a' OR x < 'b'"
        +2487
        +2488        Args:
        +2489            *expressions (str | Expression): the SQL code strings to parse.
        +2490                If an `Expression` instance is passed, it will be used as-is.
        +2491                Multiple expressions are combined with an AND operator.
        +2492            append (bool): if `True`, AND the new expressions to any existing expression.
        +2493                Otherwise, this resets the expression.
        +2494            dialect (str): the dialect used to parse the input expressions.
        +2495            copy (bool): if `False`, modify this expression instance in-place.
        +2496            opts (kwargs): other options to use to parse the input expressions.
        +2497
        +2498        Returns:
        +2499            Select: the modified expression.
        +2500        """
        +2501        return _apply_conjunction_builder(
        +2502            *expressions,
        +2503            instance=self,
        +2504            arg="where",
        +2505            append=append,
        +2506            into=Where,
        +2507            dialect=dialect,
        +2508            copy=copy,
        +2509            **opts,
        +2510        )
         
        @@ -22638,37 +23205,37 @@ Otherwise, this resets the expression.
        -
        2480    def having(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        -2481        """
        -2482        Append to or set the HAVING expressions.
        -2483
        -2484        Example:
        -2485            >>> Select().select("x", "COUNT(y)").from_("tbl").group_by("x").having("COUNT(y) > 3").sql()
        -2486            'SELECT x, COUNT(y) FROM tbl GROUP BY x HAVING COUNT(y) > 3'
        -2487
        -2488        Args:
        -2489            *expressions (str | Expression): the SQL code strings to parse.
        -2490                If an `Expression` instance is passed, it will be used as-is.
        -2491                Multiple expressions are combined with an AND operator.
        -2492            append (bool): if `True`, AND the new expressions to any existing expression.
        -2493                Otherwise, this resets the expression.
        -2494            dialect (str): the dialect used to parse the input expressions.
        -2495            copy (bool): if `False`, modify this expression instance in-place.
        -2496            opts (kwargs): other options to use to parse the input expressions.
        -2497
        -2498        Returns:
        -2499            Select: the modified expression.
        -2500        """
        -2501        return _apply_conjunction_builder(
        -2502            *expressions,
        -2503            instance=self,
        -2504            arg="having",
        -2505            append=append,
        -2506            into=Having,
        -2507            dialect=dialect,
        -2508            copy=copy,
        -2509            **opts,
        -2510        )
        +            
        2512    def having(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        +2513        """
        +2514        Append to or set the HAVING expressions.
        +2515
        +2516        Example:
        +2517            >>> Select().select("x", "COUNT(y)").from_("tbl").group_by("x").having("COUNT(y) > 3").sql()
        +2518            'SELECT x, COUNT(y) FROM tbl GROUP BY x HAVING COUNT(y) > 3'
        +2519
        +2520        Args:
        +2521            *expressions (str | Expression): the SQL code strings to parse.
        +2522                If an `Expression` instance is passed, it will be used as-is.
        +2523                Multiple expressions are combined with an AND operator.
        +2524            append (bool): if `True`, AND the new expressions to any existing expression.
        +2525                Otherwise, this resets the expression.
        +2526            dialect (str): the dialect used to parse the input expressions.
        +2527            copy (bool): if `False`, modify this expression instance in-place.
        +2528            opts (kwargs): other options to use to parse the input expressions.
        +2529
        +2530        Returns:
        +2531            Select: the modified expression.
        +2532        """
        +2533        return _apply_conjunction_builder(
        +2534            *expressions,
        +2535            instance=self,
        +2536            arg="having",
        +2537            append=append,
        +2538            into=Having,
        +2539            dialect=dialect,
        +2540            copy=copy,
        +2541            **opts,
        +2542        )
         
        @@ -22717,17 +23284,17 @@ Otherwise, this resets the expression.
        -
        2512    def window(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        -2513        return _apply_list_builder(
        -2514            *expressions,
        -2515            instance=self,
        -2516            arg="windows",
        -2517            append=append,
        -2518            into=Window,
        -2519            dialect=dialect,
        -2520            copy=copy,
        -2521            **opts,
        -2522        )
        +            
        2544    def window(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        +2545        return _apply_list_builder(
        +2546            *expressions,
        +2547            instance=self,
        +2548            arg="windows",
        +2549            append=append,
        +2550            into=Window,
        +2551            dialect=dialect,
        +2552            copy=copy,
        +2553            **opts,
        +2554        )
         
        @@ -22745,17 +23312,17 @@ Otherwise, this resets the expression.
        -
        2524    def qualify(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        -2525        return _apply_conjunction_builder(
        -2526            *expressions,
        -2527            instance=self,
        -2528            arg="qualify",
        -2529            append=append,
        -2530            into=Qualify,
        -2531            dialect=dialect,
        -2532            copy=copy,
        -2533            **opts,
        -2534        )
        +            
        2556    def qualify(self, *expressions, append=True, dialect=None, copy=True, **opts) -> Select:
        +2557        return _apply_conjunction_builder(
        +2558            *expressions,
        +2559            instance=self,
        +2560            arg="qualify",
        +2561            append=append,
        +2562            into=Qualify,
        +2563            dialect=dialect,
        +2564            copy=copy,
        +2565            **opts,
        +2566        )
         
        @@ -22773,24 +23340,24 @@ Otherwise, this resets the expression.
        -
        2536    def distinct(self, distinct=True, copy=True) -> Select:
        -2537        """
        -2538        Set the OFFSET expression.
        -2539
        -2540        Example:
        -2541            >>> Select().from_("tbl").select("x").distinct().sql()
        -2542            'SELECT DISTINCT x FROM tbl'
        -2543
        -2544        Args:
        -2545            distinct (bool): whether the Select should be distinct
        -2546            copy (bool): if `False`, modify this expression instance in-place.
        -2547
        -2548        Returns:
        -2549            Select: the modified expression.
        -2550        """
        -2551        instance = _maybe_copy(self, copy)
        -2552        instance.set("distinct", Distinct() if distinct else None)
        -2553        return instance
        +            
        2568    def distinct(self, distinct=True, copy=True) -> Select:
        +2569        """
        +2570        Set the OFFSET expression.
        +2571
        +2572        Example:
        +2573            >>> Select().from_("tbl").select("x").distinct().sql()
        +2574            'SELECT DISTINCT x FROM tbl'
        +2575
        +2576        Args:
        +2577            distinct (bool): whether the Select should be distinct
        +2578            copy (bool): if `False`, modify this expression instance in-place.
        +2579
        +2580        Returns:
        +2581            Select: the modified expression.
        +2582        """
        +2583        instance = _maybe_copy(self, copy)
        +2584        instance.set("distinct", Distinct() if distinct else None)
        +2585        return instance
         
        @@ -22833,42 +23400,42 @@ Otherwise, this resets the expression.
        -
        2555    def ctas(self, table, properties=None, dialect=None, copy=True, **opts) -> Create:
        -2556        """
        -2557        Convert this expression to a CREATE TABLE AS statement.
        -2558
        -2559        Example:
        -2560            >>> Select().select("*").from_("tbl").ctas("x").sql()
        -2561            'CREATE TABLE x AS SELECT * FROM tbl'
        -2562
        -2563        Args:
        -2564            table (str | Expression): the SQL code string to parse as the table name.
        -2565                If another `Expression` instance is passed, it will be used as-is.
        -2566            properties (dict): an optional mapping of table properties
        -2567            dialect (str): the dialect used to parse the input table.
        -2568            copy (bool): if `False`, modify this expression instance in-place.
        -2569            opts (kwargs): other options to use to parse the input table.
        -2570
        -2571        Returns:
        -2572            Create: the CREATE TABLE AS expression
        -2573        """
        -2574        instance = _maybe_copy(self, copy)
        -2575        table_expression = maybe_parse(
        -2576            table,
        -2577            into=Table,
        -2578            dialect=dialect,
        -2579            **opts,
        -2580        )
        -2581        properties_expression = None
        -2582        if properties:
        -2583            properties_expression = Properties.from_dict(properties)
        -2584
        -2585        return Create(
        -2586            this=table_expression,
        -2587            kind="table",
        -2588            expression=instance,
        -2589            properties=properties_expression,
        -2590        )
        +            
        2587    def ctas(self, table, properties=None, dialect=None, copy=True, **opts) -> Create:
        +2588        """
        +2589        Convert this expression to a CREATE TABLE AS statement.
        +2590
        +2591        Example:
        +2592            >>> Select().select("*").from_("tbl").ctas("x").sql()
        +2593            'CREATE TABLE x AS SELECT * FROM tbl'
        +2594
        +2595        Args:
        +2596            table (str | Expression): the SQL code string to parse as the table name.
        +2597                If another `Expression` instance is passed, it will be used as-is.
        +2598            properties (dict): an optional mapping of table properties
        +2599            dialect (str): the dialect used to parse the input table.
        +2600            copy (bool): if `False`, modify this expression instance in-place.
        +2601            opts (kwargs): other options to use to parse the input table.
        +2602
        +2603        Returns:
        +2604            Create: the CREATE TABLE AS expression
        +2605        """
        +2606        instance = _maybe_copy(self, copy)
        +2607        table_expression = maybe_parse(
        +2608            table,
        +2609            into=Table,
        +2610            dialect=dialect,
        +2611            **opts,
        +2612        )
        +2613        properties_expression = None
        +2614        if properties:
        +2615            properties_expression = Properties.from_dict(properties)
        +2616
        +2617        return Create(
        +2618            this=table_expression,
        +2619            kind="table",
        +2620            expression=instance,
        +2621            properties=properties_expression,
        +2622        )
         
        @@ -22915,29 +23482,29 @@ If another Expression instance is passed,
        -
        2592    def lock(self, update: bool = True, copy: bool = True) -> Select:
        -2593        """
        -2594        Set the locking read mode for this expression.
        -2595
        -2596        Examples:
        -2597            >>> Select().select("x").from_("tbl").where("x = 'a'").lock().sql("mysql")
        -2598            "SELECT x FROM tbl WHERE x = 'a' FOR UPDATE"
        -2599
        -2600            >>> Select().select("x").from_("tbl").where("x = 'a'").lock(update=False).sql("mysql")
        -2601            "SELECT x FROM tbl WHERE x = 'a' FOR SHARE"
        -2602
        -2603        Args:
        -2604            update: if `True`, the locking type will be `FOR UPDATE`, else it will be `FOR SHARE`.
        -2605            copy: if `False`, modify this expression instance in-place.
        -2606
        -2607        Returns:
        -2608            The modified expression.
        -2609        """
        -2610
        -2611        inst = _maybe_copy(self, copy)
        -2612        inst.set("lock", Lock(update=update))
        -2613
        -2614        return inst
        +            
        2624    def lock(self, update: bool = True, copy: bool = True) -> Select:
        +2625        """
        +2626        Set the locking read mode for this expression.
        +2627
        +2628        Examples:
        +2629            >>> Select().select("x").from_("tbl").where("x = 'a'").lock().sql("mysql")
        +2630            "SELECT x FROM tbl WHERE x = 'a' FOR UPDATE"
        +2631
        +2632            >>> Select().select("x").from_("tbl").where("x = 'a'").lock(update=False).sql("mysql")
        +2633            "SELECT x FROM tbl WHERE x = 'a' FOR SHARE"
        +2634
        +2635        Args:
        +2636            update: if `True`, the locking type will be `FOR UPDATE`, else it will be `FOR SHARE`.
        +2637            copy: if `False`, modify this expression instance in-place.
        +2638
        +2639        Returns:
        +2640            The modified expression.
        +2641        """
        +2642
        +2643        inst = _maybe_copy(self, copy)
        +2644        inst.set("lock", Lock(update=update))
        +2645
        +2646        return inst
         
        @@ -23006,10 +23573,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -23053,30 +23622,30 @@ If another Expression instance is passed,
        -
        2629class Subquery(DerivedTable, Unionable):
        -2630    arg_types = {
        -2631        "this": True,
        -2632        "alias": False,
        -2633        "with": False,
        -2634        **QUERY_MODIFIERS,
        -2635    }
        -2636
        -2637    def unnest(self):
        -2638        """
        -2639        Returns the first non subquery.
        -2640        """
        -2641        expression = self
        -2642        while isinstance(expression, Subquery):
        -2643            expression = expression.this
        -2644        return expression
        -2645
        -2646    @property
        -2647    def is_star(self) -> bool:
        -2648        return self.this.is_star
        -2649
        -2650    @property
        -2651    def output_name(self):
        -2652        return self.alias
        +            
        2661class Subquery(DerivedTable, Unionable):
        +2662    arg_types = {
        +2663        "this": True,
        +2664        "alias": False,
        +2665        "with": False,
        +2666        **QUERY_MODIFIERS,
        +2667    }
        +2668
        +2669    def unnest(self):
        +2670        """
        +2671        Returns the first non subquery.
        +2672        """
        +2673        expression = self
        +2674        while isinstance(expression, Subquery):
        +2675            expression = expression.this
        +2676        return expression
        +2677
        +2678    @property
        +2679    def is_star(self) -> bool:
        +2680        return self.this.is_star
        +2681
        +2682    @property
        +2683    def output_name(self):
        +2684        return self.alias
         
        @@ -23093,14 +23662,14 @@ If another Expression instance is passed,
        -
        2637    def unnest(self):
        -2638        """
        -2639        Returns the first non subquery.
        -2640        """
        -2641        expression = self
        -2642        while isinstance(expression, Subquery):
        -2643            expression = expression.this
        -2644        return expression
        +            
        2669    def unnest(self):
        +2670        """
        +2671        Returns the first non subquery.
        +2672        """
        +2673        expression = self
        +2674        while isinstance(expression, Subquery):
        +2675            expression = expression.this
        +2676        return expression
         
        @@ -23169,10 +23738,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -23210,19 +23781,19 @@ If another Expression instance is passed,
        -
        2655class TableSample(Expression):
        -2656    arg_types = {
        -2657        "this": False,
        -2658        "method": False,
        -2659        "bucket_numerator": False,
        -2660        "bucket_denominator": False,
        -2661        "bucket_field": False,
        -2662        "percent": False,
        -2663        "rows": False,
        -2664        "size": False,
        -2665        "seed": False,
        -2666        "kind": False,
        -2667    }
        +            
        2687class TableSample(Expression):
        +2688    arg_types = {
        +2689        "this": False,
        +2690        "method": False,
        +2691        "bucket_numerator": False,
        +2692        "bucket_denominator": False,
        +2693        "bucket_field": False,
        +2694        "percent": False,
        +2695        "rows": False,
        +2696        "size": False,
        +2697        "seed": False,
        +2698        "kind": False,
        +2699    }
         
        @@ -23247,10 +23818,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -23283,14 +23856,14 @@ If another Expression instance is passed,
        -
        2670class Tag(Expression):
        -2671    """Tags are used for generating arbitrary sql like SELECT <span>x</span>."""
        -2672
        -2673    arg_types = {
        -2674        "this": False,
        -2675        "prefix": False,
        -2676        "postfix": False,
        -2677    }
        +            
        2702class Tag(Expression):
        +2703    """Tags are used for generating arbitrary sql like SELECT <span>x</span>."""
        +2704
        +2705    arg_types = {
        +2706        "this": False,
        +2707        "prefix": False,
        +2708        "postfix": False,
        +2709    }
         
        @@ -23317,10 +23890,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -23353,14 +23928,14 @@ If another Expression instance is passed,
        -
        2680class Pivot(Expression):
        -2681    arg_types = {
        -2682        "this": False,
        -2683        "alias": False,
        -2684        "expressions": True,
        -2685        "field": True,
        -2686        "unpivot": True,
        -2687    }
        +            
        2712class Pivot(Expression):
        +2713    arg_types = {
        +2714        "this": False,
        +2715        "alias": False,
        +2716        "expressions": True,
        +2717        "field": True,
        +2718        "unpivot": True,
        +2719    }
         
        @@ -23385,10 +23960,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -23421,14 +23998,14 @@ If another Expression instance is passed,
        -
        2690class Window(Expression):
        -2691    arg_types = {
        -2692        "this": True,
        -2693        "partition_by": False,
        -2694        "order": False,
        -2695        "spec": False,
        -2696        "alias": False,
        -2697    }
        +            
        2722class Window(Expression):
        +2723    arg_types = {
        +2724        "this": True,
        +2725        "partition_by": False,
        +2726        "order": False,
        +2727        "spec": False,
        +2728        "alias": False,
        +2729    }
         
        @@ -23453,10 +24030,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -23489,14 +24068,14 @@ If another Expression instance is passed,
        -
        2700class WindowSpec(Expression):
        -2701    arg_types = {
        -2702        "kind": False,
        -2703        "start": False,
        -2704        "start_side": False,
        -2705        "end": False,
        -2706        "end_side": False,
        -2707    }
        +            
        2732class WindowSpec(Expression):
        +2733    arg_types = {
        +2734        "kind": False,
        +2735        "start": False,
        +2736        "start_side": False,
        +2737        "end": False,
        +2738        "end_side": False,
        +2739    }
         
        @@ -23521,10 +24100,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -23557,8 +24138,8 @@ If another Expression instance is passed,
        -
        2710class Where(Expression):
        -2711    pass
        +            
        2742class Where(Expression):
        +2743    pass
         
        @@ -23583,10 +24164,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -23619,16 +24202,16 @@ If another Expression instance is passed,
        -
        2714class Star(Expression):
        -2715    arg_types = {"except": False, "replace": False}
        -2716
        -2717    @property
        -2718    def name(self) -> str:
        -2719        return "*"
        -2720
        -2721    @property
        -2722    def output_name(self):
        -2723        return self.name
        +            
        2746class Star(Expression):
        +2747    arg_types = {"except": False, "replace": False}
        +2748
        +2749    @property
        +2750    def name(self) -> str:
        +2751        return "*"
        +2752
        +2753    @property
        +2754    def output_name(self):
        +2755        return self.name
         
        @@ -23682,10 +24265,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -23718,8 +24303,8 @@ If another Expression instance is passed,
        -
        2726class Parameter(Expression):
        -2727    arg_types = {"this": True, "wrapped": False}
        +            
        2758class Parameter(Expression):
        +2759    arg_types = {"this": True, "wrapped": False}
         
        @@ -23744,10 +24329,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -23780,8 +24367,8 @@ If another Expression instance is passed,
        -
        2730class SessionParameter(Expression):
        -2731    arg_types = {"this": True, "kind": False}
        +            
        2762class SessionParameter(Expression):
        +2763    arg_types = {"this": True, "kind": False}
         
        @@ -23806,10 +24393,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -23842,8 +24431,8 @@ If another Expression instance is passed,
        -
        2734class Placeholder(Expression):
        -2735    arg_types = {"this": False}
        +            
        2766class Placeholder(Expression):
        +2767    arg_types = {"this": False}
         
        @@ -23868,10 +24457,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -23904,12 +24495,12 @@ If another Expression instance is passed,
        -
        2738class Null(Condition):
        -2739    arg_types: t.Dict[str, t.Any] = {}
        -2740
        -2741    @property
        -2742    def name(self) -> str:
        -2743        return "NULL"
        +            
        2770class Null(Condition):
        +2771    arg_types: t.Dict[str, t.Any] = {}
        +2772
        +2773    @property
        +2774    def name(self) -> str:
        +2775        return "NULL"
         
        @@ -23934,10 +24525,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -23976,8 +24569,8 @@ If another Expression instance is passed,
        -
        2746class Boolean(Condition):
        -2747    pass
        +            
        2778class Boolean(Condition):
        +2779    pass
         
        @@ -24002,10 +24595,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -24044,127 +24639,127 @@ If another Expression instance is passed,
        -
        2750class DataType(Expression):
        -2751    arg_types = {
        -2752        "this": True,
        -2753        "expressions": False,
        -2754        "nested": False,
        -2755        "values": False,
        -2756        "prefix": False,
        -2757    }
        -2758
        -2759    class Type(AutoName):
        -2760        CHAR = auto()
        -2761        NCHAR = auto()
        -2762        VARCHAR = auto()
        -2763        NVARCHAR = auto()
        -2764        TEXT = auto()
        -2765        MEDIUMTEXT = auto()
        -2766        LONGTEXT = auto()
        -2767        MEDIUMBLOB = auto()
        -2768        LONGBLOB = auto()
        -2769        BINARY = auto()
        -2770        VARBINARY = auto()
        -2771        INT = auto()
        -2772        UINT = auto()
        -2773        TINYINT = auto()
        -2774        UTINYINT = auto()
        -2775        SMALLINT = auto()
        -2776        USMALLINT = auto()
        -2777        BIGINT = auto()
        -2778        UBIGINT = auto()
        -2779        FLOAT = auto()
        -2780        DOUBLE = auto()
        -2781        DECIMAL = auto()
        -2782        BIT = auto()
        -2783        BOOLEAN = auto()
        -2784        JSON = auto()
        -2785        JSONB = auto()
        -2786        INTERVAL = auto()
        -2787        TIME = auto()
        -2788        TIMESTAMP = auto()
        -2789        TIMESTAMPTZ = auto()
        -2790        TIMESTAMPLTZ = auto()
        -2791        DATE = auto()
        -2792        DATETIME = auto()
        -2793        ARRAY = auto()
        -2794        MAP = auto()
        -2795        UUID = auto()
        -2796        GEOGRAPHY = auto()
        -2797        GEOMETRY = auto()
        -2798        STRUCT = auto()
        -2799        NULLABLE = auto()
        -2800        HLLSKETCH = auto()
        -2801        HSTORE = auto()
        -2802        SUPER = auto()
        -2803        SERIAL = auto()
        -2804        SMALLSERIAL = auto()
        -2805        BIGSERIAL = auto()
        -2806        XML = auto()
        -2807        UNIQUEIDENTIFIER = auto()
        -2808        MONEY = auto()
        -2809        SMALLMONEY = auto()
        -2810        ROWVERSION = auto()
        -2811        IMAGE = auto()
        -2812        VARIANT = auto()
        -2813        OBJECT = auto()
        -2814        INET = auto()
        -2815        NULL = auto()
        -2816        UNKNOWN = auto()  # Sentinel value, useful for type annotation
        -2817
        -2818    TEXT_TYPES = {
        -2819        Type.CHAR,
        -2820        Type.NCHAR,
        -2821        Type.VARCHAR,
        -2822        Type.NVARCHAR,
        -2823        Type.TEXT,
        -2824    }
        -2825
        -2826    INTEGER_TYPES = {
        -2827        Type.INT,
        -2828        Type.TINYINT,
        -2829        Type.SMALLINT,
        -2830        Type.BIGINT,
        -2831    }
        -2832
        -2833    FLOAT_TYPES = {
        -2834        Type.FLOAT,
        -2835        Type.DOUBLE,
        -2836    }
        -2837
        -2838    NUMERIC_TYPES = {*INTEGER_TYPES, *FLOAT_TYPES}
        -2839
        -2840    TEMPORAL_TYPES = {
        -2841        Type.TIMESTAMP,
        -2842        Type.TIMESTAMPTZ,
        -2843        Type.TIMESTAMPLTZ,
        -2844        Type.DATE,
        -2845        Type.DATETIME,
        -2846    }
        -2847
        -2848    @classmethod
        -2849    def build(
        -2850        cls, dtype: str | DataType | DataType.Type, dialect: DialectType = None, **kwargs
        -2851    ) -> DataType:
        -2852        from sqlglot import parse_one
        -2853
        -2854        if isinstance(dtype, str):
        -2855            if dtype.upper() in cls.Type.__members__:
        -2856                data_type_exp: t.Optional[Expression] = DataType(this=DataType.Type[dtype.upper()])
        -2857            else:
        -2858                data_type_exp = parse_one(dtype, read=dialect, into=DataType)
        -2859            if data_type_exp is None:
        -2860                raise ValueError(f"Unparsable data type value: {dtype}")
        -2861        elif isinstance(dtype, DataType.Type):
        -2862            data_type_exp = DataType(this=dtype)
        -2863        elif isinstance(dtype, DataType):
        -2864            return dtype
        -2865        else:
        -2866            raise ValueError(f"Invalid data type: {type(dtype)}. Expected str or DataType.Type")
        -2867        return DataType(**{**data_type_exp.args, **kwargs})
        -2868
        -2869    def is_type(self, dtype: DataType.Type) -> bool:
        -2870        return self.this == dtype
        +            
        2782class DataType(Expression):
        +2783    arg_types = {
        +2784        "this": True,
        +2785        "expressions": False,
        +2786        "nested": False,
        +2787        "values": False,
        +2788        "prefix": False,
        +2789    }
        +2790
        +2791    class Type(AutoName):
        +2792        CHAR = auto()
        +2793        NCHAR = auto()
        +2794        VARCHAR = auto()
        +2795        NVARCHAR = auto()
        +2796        TEXT = auto()
        +2797        MEDIUMTEXT = auto()
        +2798        LONGTEXT = auto()
        +2799        MEDIUMBLOB = auto()
        +2800        LONGBLOB = auto()
        +2801        BINARY = auto()
        +2802        VARBINARY = auto()
        +2803        INT = auto()
        +2804        UINT = auto()
        +2805        TINYINT = auto()
        +2806        UTINYINT = auto()
        +2807        SMALLINT = auto()
        +2808        USMALLINT = auto()
        +2809        BIGINT = auto()
        +2810        UBIGINT = auto()
        +2811        FLOAT = auto()
        +2812        DOUBLE = auto()
        +2813        DECIMAL = auto()
        +2814        BIT = auto()
        +2815        BOOLEAN = auto()
        +2816        JSON = auto()
        +2817        JSONB = auto()
        +2818        INTERVAL = auto()
        +2819        TIME = auto()
        +2820        TIMESTAMP = auto()
        +2821        TIMESTAMPTZ = auto()
        +2822        TIMESTAMPLTZ = auto()
        +2823        DATE = auto()
        +2824        DATETIME = auto()
        +2825        ARRAY = auto()
        +2826        MAP = auto()
        +2827        UUID = auto()
        +2828        GEOGRAPHY = auto()
        +2829        GEOMETRY = auto()
        +2830        STRUCT = auto()
        +2831        NULLABLE = auto()
        +2832        HLLSKETCH = auto()
        +2833        HSTORE = auto()
        +2834        SUPER = auto()
        +2835        SERIAL = auto()
        +2836        SMALLSERIAL = auto()
        +2837        BIGSERIAL = auto()
        +2838        XML = auto()
        +2839        UNIQUEIDENTIFIER = auto()
        +2840        MONEY = auto()
        +2841        SMALLMONEY = auto()
        +2842        ROWVERSION = auto()
        +2843        IMAGE = auto()
        +2844        VARIANT = auto()
        +2845        OBJECT = auto()
        +2846        INET = auto()
        +2847        NULL = auto()
        +2848        UNKNOWN = auto()  # Sentinel value, useful for type annotation
        +2849
        +2850    TEXT_TYPES = {
        +2851        Type.CHAR,
        +2852        Type.NCHAR,
        +2853        Type.VARCHAR,
        +2854        Type.NVARCHAR,
        +2855        Type.TEXT,
        +2856    }
        +2857
        +2858    INTEGER_TYPES = {
        +2859        Type.INT,
        +2860        Type.TINYINT,
        +2861        Type.SMALLINT,
        +2862        Type.BIGINT,
        +2863    }
        +2864
        +2865    FLOAT_TYPES = {
        +2866        Type.FLOAT,
        +2867        Type.DOUBLE,
        +2868    }
        +2869
        +2870    NUMERIC_TYPES = {*INTEGER_TYPES, *FLOAT_TYPES}
        +2871
        +2872    TEMPORAL_TYPES = {
        +2873        Type.TIMESTAMP,
        +2874        Type.TIMESTAMPTZ,
        +2875        Type.TIMESTAMPLTZ,
        +2876        Type.DATE,
        +2877        Type.DATETIME,
        +2878    }
        +2879
        +2880    @classmethod
        +2881    def build(
        +2882        cls, dtype: str | DataType | DataType.Type, dialect: DialectType = None, **kwargs
        +2883    ) -> DataType:
        +2884        from sqlglot import parse_one
        +2885
        +2886        if isinstance(dtype, str):
        +2887            if dtype.upper() in cls.Type.__members__:
        +2888                data_type_exp: t.Optional[Expression] = DataType(this=DataType.Type[dtype.upper()])
        +2889            else:
        +2890                data_type_exp = parse_one(dtype, read=dialect, into=DataType)
        +2891            if data_type_exp is None:
        +2892                raise ValueError(f"Unparsable data type value: {dtype}")
        +2893        elif isinstance(dtype, DataType.Type):
        +2894            data_type_exp = DataType(this=dtype)
        +2895        elif isinstance(dtype, DataType):
        +2896            return dtype
        +2897        else:
        +2898            raise ValueError(f"Invalid data type: {type(dtype)}. Expected str or DataType.Type")
        +2899        return DataType(**{**data_type_exp.args, **kwargs})
        +2900
        +2901    def is_type(self, dtype: DataType.Type) -> bool:
        +2902        return self.this == dtype
         
        @@ -24182,26 +24777,26 @@ If another Expression instance is passed,
        -
        2848    @classmethod
        -2849    def build(
        -2850        cls, dtype: str | DataType | DataType.Type, dialect: DialectType = None, **kwargs
        -2851    ) -> DataType:
        -2852        from sqlglot import parse_one
        -2853
        -2854        if isinstance(dtype, str):
        -2855            if dtype.upper() in cls.Type.__members__:
        -2856                data_type_exp: t.Optional[Expression] = DataType(this=DataType.Type[dtype.upper()])
        -2857            else:
        -2858                data_type_exp = parse_one(dtype, read=dialect, into=DataType)
        -2859            if data_type_exp is None:
        -2860                raise ValueError(f"Unparsable data type value: {dtype}")
        -2861        elif isinstance(dtype, DataType.Type):
        -2862            data_type_exp = DataType(this=dtype)
        -2863        elif isinstance(dtype, DataType):
        -2864            return dtype
        -2865        else:
        -2866            raise ValueError(f"Invalid data type: {type(dtype)}. Expected str or DataType.Type")
        -2867        return DataType(**{**data_type_exp.args, **kwargs})
        +            
        2880    @classmethod
        +2881    def build(
        +2882        cls, dtype: str | DataType | DataType.Type, dialect: DialectType = None, **kwargs
        +2883    ) -> DataType:
        +2884        from sqlglot import parse_one
        +2885
        +2886        if isinstance(dtype, str):
        +2887            if dtype.upper() in cls.Type.__members__:
        +2888                data_type_exp: t.Optional[Expression] = DataType(this=DataType.Type[dtype.upper()])
        +2889            else:
        +2890                data_type_exp = parse_one(dtype, read=dialect, into=DataType)
        +2891            if data_type_exp is None:
        +2892                raise ValueError(f"Unparsable data type value: {dtype}")
        +2893        elif isinstance(dtype, DataType.Type):
        +2894            data_type_exp = DataType(this=dtype)
        +2895        elif isinstance(dtype, DataType):
        +2896            return dtype
        +2897        else:
        +2898            raise ValueError(f"Invalid data type: {type(dtype)}. Expected str or DataType.Type")
        +2899        return DataType(**{**data_type_exp.args, **kwargs})
         
        @@ -24219,8 +24814,8 @@ If another Expression instance is passed,
        -
        2869    def is_type(self, dtype: DataType.Type) -> bool:
        -2870        return self.this == dtype
        +            
        2901    def is_type(self, dtype: DataType.Type) -> bool:
        +2902        return self.this == dtype
         
        @@ -24246,10 +24841,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -24282,64 +24879,64 @@ If another Expression instance is passed,
        -
        2759    class Type(AutoName):
        -2760        CHAR = auto()
        -2761        NCHAR = auto()
        -2762        VARCHAR = auto()
        -2763        NVARCHAR = auto()
        -2764        TEXT = auto()
        -2765        MEDIUMTEXT = auto()
        -2766        LONGTEXT = auto()
        -2767        MEDIUMBLOB = auto()
        -2768        LONGBLOB = auto()
        -2769        BINARY = auto()
        -2770        VARBINARY = auto()
        -2771        INT = auto()
        -2772        UINT = auto()
        -2773        TINYINT = auto()
        -2774        UTINYINT = auto()
        -2775        SMALLINT = auto()
        -2776        USMALLINT = auto()
        -2777        BIGINT = auto()
        -2778        UBIGINT = auto()
        -2779        FLOAT = auto()
        -2780        DOUBLE = auto()
        -2781        DECIMAL = auto()
        -2782        BIT = auto()
        -2783        BOOLEAN = auto()
        -2784        JSON = auto()
        -2785        JSONB = auto()
        -2786        INTERVAL = auto()
        -2787        TIME = auto()
        -2788        TIMESTAMP = auto()
        -2789        TIMESTAMPTZ = auto()
        -2790        TIMESTAMPLTZ = auto()
        -2791        DATE = auto()
        -2792        DATETIME = auto()
        -2793        ARRAY = auto()
        -2794        MAP = auto()
        -2795        UUID = auto()
        -2796        GEOGRAPHY = auto()
        -2797        GEOMETRY = auto()
        -2798        STRUCT = auto()
        -2799        NULLABLE = auto()
        -2800        HLLSKETCH = auto()
        -2801        HSTORE = auto()
        -2802        SUPER = auto()
        -2803        SERIAL = auto()
        -2804        SMALLSERIAL = auto()
        -2805        BIGSERIAL = auto()
        -2806        XML = auto()
        -2807        UNIQUEIDENTIFIER = auto()
        -2808        MONEY = auto()
        -2809        SMALLMONEY = auto()
        -2810        ROWVERSION = auto()
        -2811        IMAGE = auto()
        -2812        VARIANT = auto()
        -2813        OBJECT = auto()
        -2814        INET = auto()
        -2815        NULL = auto()
        -2816        UNKNOWN = auto()  # Sentinel value, useful for type annotation
        +            
        2791    class Type(AutoName):
        +2792        CHAR = auto()
        +2793        NCHAR = auto()
        +2794        VARCHAR = auto()
        +2795        NVARCHAR = auto()
        +2796        TEXT = auto()
        +2797        MEDIUMTEXT = auto()
        +2798        LONGTEXT = auto()
        +2799        MEDIUMBLOB = auto()
        +2800        LONGBLOB = auto()
        +2801        BINARY = auto()
        +2802        VARBINARY = auto()
        +2803        INT = auto()
        +2804        UINT = auto()
        +2805        TINYINT = auto()
        +2806        UTINYINT = auto()
        +2807        SMALLINT = auto()
        +2808        USMALLINT = auto()
        +2809        BIGINT = auto()
        +2810        UBIGINT = auto()
        +2811        FLOAT = auto()
        +2812        DOUBLE = auto()
        +2813        DECIMAL = auto()
        +2814        BIT = auto()
        +2815        BOOLEAN = auto()
        +2816        JSON = auto()
        +2817        JSONB = auto()
        +2818        INTERVAL = auto()
        +2819        TIME = auto()
        +2820        TIMESTAMP = auto()
        +2821        TIMESTAMPTZ = auto()
        +2822        TIMESTAMPLTZ = auto()
        +2823        DATE = auto()
        +2824        DATETIME = auto()
        +2825        ARRAY = auto()
        +2826        MAP = auto()
        +2827        UUID = auto()
        +2828        GEOGRAPHY = auto()
        +2829        GEOMETRY = auto()
        +2830        STRUCT = auto()
        +2831        NULLABLE = auto()
        +2832        HLLSKETCH = auto()
        +2833        HSTORE = auto()
        +2834        SUPER = auto()
        +2835        SERIAL = auto()
        +2836        SMALLSERIAL = auto()
        +2837        BIGSERIAL = auto()
        +2838        XML = auto()
        +2839        UNIQUEIDENTIFIER = auto()
        +2840        MONEY = auto()
        +2841        SMALLMONEY = auto()
        +2842        ROWVERSION = auto()
        +2843        IMAGE = auto()
        +2844        VARIANT = auto()
        +2845        OBJECT = auto()
        +2846        INET = auto()
        +2847        NULL = auto()
        +2848        UNKNOWN = auto()  # Sentinel value, useful for type annotation
         
        @@ -25053,8 +25650,8 @@ If another Expression instance is passed,
        -
        2874class PseudoType(Expression):
        -2875    pass
        +            
        2906class PseudoType(Expression):
        +2907    pass
         
        @@ -25079,10 +25676,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -25115,8 +25714,8 @@ If another Expression instance is passed,
        -
        2878class StructKwarg(Expression):
        -2879    arg_types = {"this": True, "expression": True}
        +            
        2910class StructKwarg(Expression):
        +2911    arg_types = {"this": True, "expression": True}
         
        @@ -25141,10 +25740,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -25177,8 +25778,8 @@ If another Expression instance is passed,
        -
        2883class SubqueryPredicate(Predicate):
        -2884    pass
        +            
        2915class SubqueryPredicate(Predicate):
        +2916    pass
         
        @@ -25203,10 +25804,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -25245,8 +25848,8 @@ If another Expression instance is passed,
        -
        2887class All(SubqueryPredicate):
        -2888    pass
        +            
        2919class All(SubqueryPredicate):
        +2920    pass
         
        @@ -25271,10 +25874,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -25313,8 +25918,8 @@ If another Expression instance is passed,
        -
        2891class Any(SubqueryPredicate):
        -2892    pass
        +            
        2923class Any(SubqueryPredicate):
        +2924    pass
         
        @@ -25339,10 +25944,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -25381,8 +25988,8 @@ If another Expression instance is passed,
        -
        2895class Exists(SubqueryPredicate):
        -2896    pass
        +            
        2927class Exists(SubqueryPredicate):
        +2928    pass
         
        @@ -25407,10 +26014,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -25449,8 +26058,8 @@ If another Expression instance is passed,
        -
        2901class Command(Expression):
        -2902    arg_types = {"this": True, "expression": False}
        +            
        2933class Command(Expression):
        +2934    arg_types = {"this": True, "expression": False}
         
        @@ -25475,10 +26084,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -25511,8 +26122,8 @@ If another Expression instance is passed,
        -
        2905class Transaction(Expression):
        -2906    arg_types = {"this": False, "modes": False}
        +            
        2937class Transaction(Expression):
        +2938    arg_types = {"this": False, "modes": False}
         
        @@ -25537,10 +26148,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -25573,8 +26186,8 @@ If another Expression instance is passed,
        -
        2909class Commit(Expression):
        -2910    arg_types = {"chain": False}
        +            
        2941class Commit(Expression):
        +2942    arg_types = {"chain": False}
         
        @@ -25599,10 +26212,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -25635,8 +26250,8 @@ If another Expression instance is passed,
        -
        2913class Rollback(Expression):
        -2914    arg_types = {"savepoint": False}
        +            
        2945class Rollback(Expression):
        +2946    arg_types = {"savepoint": False}
         
        @@ -25661,10 +26276,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -25697,8 +26314,8 @@ If another Expression instance is passed,
        -
        2917class AlterTable(Expression):
        -2918    arg_types = {"this": True, "actions": True, "exists": False}
        +            
        2949class AlterTable(Expression):
        +2950    arg_types = {"this": True, "actions": True, "exists": False}
         
        @@ -25723,10 +26340,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -25759,8 +26378,8 @@ If another Expression instance is passed,
        -
        2921class AddConstraint(Expression):
        -2922    arg_types = {"this": False, "expression": False, "enforced": False}
        +            
        2953class AddConstraint(Expression):
        +2954    arg_types = {"this": False, "expression": False, "enforced": False}
         
        @@ -25785,10 +26404,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -25821,8 +26442,8 @@ If another Expression instance is passed,
        -
        2925class DropPartition(Expression):
        -2926    arg_types = {"expressions": True, "exists": False}
        +            
        2957class DropPartition(Expression):
        +2958    arg_types = {"expressions": True, "exists": False}
         
        @@ -25847,10 +26468,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -25883,16 +26506,16 @@ If another Expression instance is passed,
        -
        2930class Binary(Expression):
        -2931    arg_types = {"this": True, "expression": True}
        -2932
        -2933    @property
        -2934    def left(self):
        -2935        return self.this
        -2936
        -2937    @property
        -2938    def right(self):
        -2939        return self.expression
        +            
        2962class Binary(Expression):
        +2963    arg_types = {"this": True, "expression": True}
        +2964
        +2965    @property
        +2966    def left(self):
        +2967        return self.this
        +2968
        +2969    @property
        +2970    def right(self):
        +2971        return self.expression
         
        @@ -25917,10 +26540,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -25953,8 +26578,8 @@ If another Expression instance is passed,
        -
        2942class Add(Binary):
        -2943    pass
        +            
        2974class Add(Binary):
        +2975    pass
         
        @@ -25979,10 +26604,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -26015,8 +26642,8 @@ If another Expression instance is passed,
        -
        2946class Connector(Binary, Condition):
        -2947    pass
        +            
        2978class Connector(Binary, Condition):
        +2979    pass
         
        @@ -26041,10 +26668,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -26083,8 +26712,8 @@ If another Expression instance is passed,
        -
        2950class And(Connector):
        -2951    pass
        +            
        2982class And(Connector):
        +2983    pass
         
        @@ -26109,10 +26738,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -26151,8 +26782,8 @@ If another Expression instance is passed,
        -
        2954class Or(Connector):
        -2955    pass
        +            
        2986class Or(Connector):
        +2987    pass
         
        @@ -26177,10 +26808,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -26219,8 +26852,8 @@ If another Expression instance is passed,
        -
        2958class BitwiseAnd(Binary):
        -2959    pass
        +            
        2990class BitwiseAnd(Binary):
        +2991    pass
         
        @@ -26245,10 +26878,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -26281,8 +26916,8 @@ If another Expression instance is passed,
        -
        2962class BitwiseLeftShift(Binary):
        -2963    pass
        +            
        2994class BitwiseLeftShift(Binary):
        +2995    pass
         
        @@ -26307,10 +26942,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -26343,8 +26980,8 @@ If another Expression instance is passed,
        -
        2966class BitwiseOr(Binary):
        -2967    pass
        +            
        2998class BitwiseOr(Binary):
        +2999    pass
         
        @@ -26369,10 +27006,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -26405,8 +27044,8 @@ If another Expression instance is passed,
        -
        2970class BitwiseRightShift(Binary):
        -2971    pass
        +            
        3002class BitwiseRightShift(Binary):
        +3003    pass
         
        @@ -26431,10 +27070,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -26467,8 +27108,8 @@ If another Expression instance is passed,
        -
        2974class BitwiseXor(Binary):
        -2975    pass
        +            
        3006class BitwiseXor(Binary):
        +3007    pass
         
        @@ -26493,10 +27134,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -26529,8 +27172,8 @@ If another Expression instance is passed,
        -
        2978class Div(Binary):
        -2979    pass
        +            
        3010class Div(Binary):
        +3011    pass
         
        @@ -26555,10 +27198,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -26591,8 +27236,8 @@ If another Expression instance is passed,
        -
        2982class Overlaps(Binary):
        -2983    pass
        +            
        3014class Overlaps(Binary):
        +3015    pass
         
        @@ -26617,10 +27262,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -26653,15 +27300,62 @@ If another Expression instance is passed,
        -
        2986class Dot(Binary):
        -2987    @property
        -2988    def name(self) -> str:
        -2989        return self.expression.name
        +            
        3018class Dot(Binary):
        +3019    @property
        +3020    def name(self) -> str:
        +3021        return self.expression.name
        +3022
        +3023    @classmethod
        +3024    def build(self, expressions: t.Sequence[Expression]) -> Dot:
        +3025        """Build a Dot object with a sequence of expressions."""
        +3026        if len(expressions) < 2:
        +3027            raise ValueError(f"Dot requires >= 2 expressions.")
        +3028
        +3029        a, b, *expressions = expressions
        +3030        dot = Dot(this=a, expression=b)
        +3031
        +3032        for expression in expressions:
        +3033            dot = Dot(this=dot, expression=expression)
        +3034
        +3035        return dot
        +
        + + + + +
        + +
        +
        @classmethod
        + + def + build( self, expressions: Sequence[sqlglot.expressions.Expression]) -> sqlglot.expressions.Dot: + + + +
        + +
        3023    @classmethod
        +3024    def build(self, expressions: t.Sequence[Expression]) -> Dot:
        +3025        """Build a Dot object with a sequence of expressions."""
        +3026        if len(expressions) < 2:
        +3027            raise ValueError(f"Dot requires >= 2 expressions.")
        +3028
        +3029        a, b, *expressions = expressions
        +3030        dot = Dot(this=a, expression=b)
        +3031
        +3032        for expression in expressions:
        +3033            dot = Dot(this=dot, expression=expression)
        +3034
        +3035        return dot
         
        - +

        Build a Dot object with a sequence of expressions.

        +
        + +
        Inherited Members
        @@ -26681,10 +27375,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -26717,8 +27413,8 @@ If another Expression instance is passed,
        -
        2992class DPipe(Binary):
        -2993    pass
        +            
        3038class DPipe(Binary):
        +3039    pass
         
        @@ -26743,10 +27439,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -26779,8 +27477,8 @@ If another Expression instance is passed,
        -
        2996class EQ(Binary, Predicate):
        -2997    pass
        +            
        3042class EQ(Binary, Predicate):
        +3043    pass
         
        @@ -26805,10 +27503,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -26847,8 +27547,8 @@ If another Expression instance is passed,
        -
        3000class NullSafeEQ(Binary, Predicate):
        -3001    pass
        +            
        3046class NullSafeEQ(Binary, Predicate):
        +3047    pass
         
        @@ -26873,10 +27573,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -26915,8 +27617,8 @@ If another Expression instance is passed,
        -
        3004class NullSafeNEQ(Binary, Predicate):
        -3005    pass
        +            
        3050class NullSafeNEQ(Binary, Predicate):
        +3051    pass
         
        @@ -26941,10 +27643,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -26983,8 +27687,8 @@ If another Expression instance is passed,
        -
        3008class Distance(Binary):
        -3009    pass
        +            
        3054class Distance(Binary):
        +3055    pass
         
        @@ -27009,10 +27713,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -27045,8 +27751,8 @@ If another Expression instance is passed,
        -
        3012class Escape(Binary):
        -3013    pass
        +            
        3058class Escape(Binary):
        +3059    pass
         
        @@ -27071,10 +27777,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -27107,8 +27815,8 @@ If another Expression instance is passed,
        -
        3016class Glob(Binary, Predicate):
        -3017    pass
        +            
        3062class Glob(Binary, Predicate):
        +3063    pass
         
        @@ -27133,10 +27841,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -27175,8 +27885,8 @@ If another Expression instance is passed,
        -
        3020class GT(Binary, Predicate):
        -3021    pass
        +            
        3066class GT(Binary, Predicate):
        +3067    pass
         
        @@ -27201,10 +27911,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -27243,8 +27955,8 @@ If another Expression instance is passed,
        -
        3024class GTE(Binary, Predicate):
        -3025    pass
        +            
        3070class GTE(Binary, Predicate):
        +3071    pass
         
        @@ -27269,10 +27981,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -27311,8 +28025,8 @@ If another Expression instance is passed,
        -
        3028class ILike(Binary, Predicate):
        -3029    pass
        +            
        3074class ILike(Binary, Predicate):
        +3075    pass
         
        @@ -27337,10 +28051,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -27379,8 +28095,8 @@ If another Expression instance is passed,
        -
        3032class ILikeAny(Binary, Predicate):
        -3033    pass
        +            
        3078class ILikeAny(Binary, Predicate):
        +3079    pass
         
        @@ -27405,10 +28121,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -27447,8 +28165,8 @@ If another Expression instance is passed,
        -
        3036class IntDiv(Binary):
        -3037    pass
        +            
        3082class IntDiv(Binary):
        +3083    pass
         
        @@ -27473,10 +28191,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -27509,8 +28229,8 @@ If another Expression instance is passed,
        -
        3040class Is(Binary, Predicate):
        -3041    pass
        +            
        3086class Is(Binary, Predicate):
        +3087    pass
         
        @@ -27535,10 +28255,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -27577,8 +28299,8 @@ If another Expression instance is passed,
        -
        3044class Kwarg(Binary):
        -3045    """Kwarg in special functions like func(kwarg => y)."""
        +            
        3090class Kwarg(Binary):
        +3091    """Kwarg in special functions like func(kwarg => y)."""
         
        @@ -27605,10 +28327,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -27641,8 +28365,8 @@ If another Expression instance is passed,
        -
        3048class Like(Binary, Predicate):
        -3049    pass
        +            
        3094class Like(Binary, Predicate):
        +3095    pass
         
        @@ -27667,10 +28391,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -27709,8 +28435,8 @@ If another Expression instance is passed,
        -
        3052class LikeAny(Binary, Predicate):
        -3053    pass
        +            
        3098class LikeAny(Binary, Predicate):
        +3099    pass
         
        @@ -27735,10 +28461,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -27777,8 +28505,8 @@ If another Expression instance is passed,
        -
        3056class LT(Binary, Predicate):
        -3057    pass
        +            
        3102class LT(Binary, Predicate):
        +3103    pass
         
        @@ -27803,10 +28531,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -27845,8 +28575,8 @@ If another Expression instance is passed,
        -
        3060class LTE(Binary, Predicate):
        -3061    pass
        +            
        3106class LTE(Binary, Predicate):
        +3107    pass
         
        @@ -27871,10 +28601,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -27913,8 +28645,8 @@ If another Expression instance is passed,
        -
        3064class Mod(Binary):
        -3065    pass
        +            
        3110class Mod(Binary):
        +3111    pass
         
        @@ -27939,10 +28671,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -27975,8 +28709,8 @@ If another Expression instance is passed,
        -
        3068class Mul(Binary):
        -3069    pass
        +            
        3114class Mul(Binary):
        +3115    pass
         
        @@ -28001,10 +28735,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -28037,8 +28773,8 @@ If another Expression instance is passed,
        -
        3072class NEQ(Binary, Predicate):
        -3073    pass
        +            
        3118class NEQ(Binary, Predicate):
        +3119    pass
         
        @@ -28063,10 +28799,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -28105,8 +28843,8 @@ If another Expression instance is passed,
        -
        3076class SimilarTo(Binary, Predicate):
        -3077    pass
        +            
        3122class SimilarTo(Binary, Predicate):
        +3123    pass
         
        @@ -28131,10 +28869,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -28173,8 +28913,8 @@ If another Expression instance is passed,
        -
        3080class Slice(Binary):
        -3081    arg_types = {"this": False, "expression": False}
        +            
        3126class Slice(Binary):
        +3127    arg_types = {"this": False, "expression": False}
         
        @@ -28199,10 +28939,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -28235,8 +28977,8 @@ If another Expression instance is passed,
        -
        3084class Sub(Binary):
        -3085    pass
        +            
        3130class Sub(Binary):
        +3131    pass
         
        @@ -28261,10 +29003,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -28297,8 +29041,8 @@ If another Expression instance is passed,
        -
        3088class ArrayOverlaps(Binary):
        -3089    pass
        +            
        3134class ArrayOverlaps(Binary):
        +3135    pass
         
        @@ -28323,10 +29067,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -28359,8 +29105,8 @@ If another Expression instance is passed,
        -
        3094class Unary(Expression):
        -3095    pass
        +            
        3140class Unary(Expression):
        +3141    pass
         
        @@ -28385,10 +29131,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -28421,8 +29169,8 @@ If another Expression instance is passed,
        -
        3098class BitwiseNot(Unary):
        -3099    pass
        +            
        3144class BitwiseNot(Unary):
        +3145    pass
         
        @@ -28447,10 +29195,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -28483,8 +29233,8 @@ If another Expression instance is passed,
        -
        3102class Not(Unary, Condition):
        -3103    pass
        +            
        3148class Not(Unary, Condition):
        +3149    pass
         
        @@ -28509,10 +29259,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -28551,8 +29303,8 @@ If another Expression instance is passed,
        -
        3106class Paren(Unary, Condition):
        -3107    arg_types = {"this": True, "with": False}
        +            
        3152class Paren(Unary, Condition):
        +3153    arg_types = {"this": True, "with": False}
         
        @@ -28577,10 +29329,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -28619,8 +29373,8 @@ If another Expression instance is passed,
        -
        3110class Neg(Unary):
        -3111    pass
        +            
        3156class Neg(Unary):
        +3157    pass
         
        @@ -28645,10 +29399,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -28681,12 +29437,12 @@ If another Expression instance is passed,
        -
        3115class Alias(Expression):
        -3116    arg_types = {"this": True, "alias": False}
        -3117
        -3118    @property
        -3119    def output_name(self):
        -3120        return self.alias
        +            
        3161class Alias(Expression):
        +3162    arg_types = {"this": True, "alias": False}
        +3163
        +3164    @property
        +3165    def output_name(self):
        +3166        return self.alias
         
        @@ -28740,10 +29496,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -28776,12 +29534,12 @@ If another Expression instance is passed,
        -
        3123class Aliases(Expression):
        -3124    arg_types = {"this": True, "expressions": True}
        -3125
        -3126    @property
        -3127    def aliases(self):
        -3128        return self.expressions
        +            
        3169class Aliases(Expression):
        +3170    arg_types = {"this": True, "expressions": True}
        +3171
        +3172    @property
        +3173    def aliases(self):
        +3174        return self.expressions
         
        @@ -28806,10 +29564,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -28842,8 +29602,8 @@ If another Expression instance is passed,
        -
        3131class AtTimeZone(Expression):
        -3132    arg_types = {"this": True, "zone": True}
        +            
        3177class AtTimeZone(Expression):
        +3178    arg_types = {"this": True, "zone": True}
         
        @@ -28868,10 +29628,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -28904,8 +29666,8 @@ If another Expression instance is passed,
        -
        3135class Between(Predicate):
        -3136    arg_types = {"this": True, "low": True, "high": True}
        +            
        3181class Between(Predicate):
        +3182    arg_types = {"this": True, "low": True, "high": True}
         
        @@ -28930,10 +29692,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -28972,8 +29736,8 @@ If another Expression instance is passed,
        -
        3139class Bracket(Condition):
        -3140    arg_types = {"this": True, "expressions": True}
        +            
        3185class Bracket(Condition):
        +3186    arg_types = {"this": True, "expressions": True}
         
        @@ -28998,10 +29762,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -29040,8 +29806,8 @@ If another Expression instance is passed,
        -
        3143class Distinct(Expression):
        -3144    arg_types = {"expressions": False, "on": False}
        +            
        3189class Distinct(Expression):
        +3190    arg_types = {"expressions": False, "on": False}
         
        @@ -29066,10 +29832,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -29102,15 +29870,15 @@ If another Expression instance is passed,
        -
        3147class In(Predicate):
        -3148    arg_types = {
        -3149        "this": True,
        -3150        "expressions": False,
        -3151        "query": False,
        -3152        "unnest": False,
        -3153        "field": False,
        -3154        "is_global": False,
        -3155    }
        +            
        3193class In(Predicate):
        +3194    arg_types = {
        +3195        "this": True,
        +3196        "expressions": False,
        +3197        "query": False,
        +3198        "unnest": False,
        +3199        "field": False,
        +3200        "is_global": False,
        +3201    }
         
        @@ -29135,10 +29903,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -29177,18 +29947,18 @@ If another Expression instance is passed,
        -
        3158class TimeUnit(Expression):
        -3159    """Automatically converts unit arg into a var."""
        -3160
        -3161    arg_types = {"unit": False}
        -3162
        -3163    def __init__(self, **args):
        -3164        unit = args.get("unit")
        -3165        if isinstance(unit, (Column, Literal)):
        -3166            args["unit"] = Var(this=unit.name)
        -3167        elif isinstance(unit, Week):
        -3168            unit.set("this", Var(this=unit.this.name))
        -3169        super().__init__(**args)
        +            
        3204class TimeUnit(Expression):
        +3205    """Automatically converts unit arg into a var."""
        +3206
        +3207    arg_types = {"unit": False}
        +3208
        +3209    def __init__(self, **args):
        +3210        unit = args.get("unit")
        +3211        if isinstance(unit, (Column, Literal)):
        +3212            args["unit"] = Var(this=unit.name)
        +3213        elif isinstance(unit, Week):
        +3214            unit.set("this", Var(this=unit.this.name))
        +3215        super().__init__(**args)
         
        @@ -29206,13 +29976,13 @@ If another Expression instance is passed,
        -
        3163    def __init__(self, **args):
        -3164        unit = args.get("unit")
        -3165        if isinstance(unit, (Column, Literal)):
        -3166            args["unit"] = Var(this=unit.name)
        -3167        elif isinstance(unit, Week):
        -3168            unit.set("this", Var(this=unit.this.name))
        -3169        super().__init__(**args)
        +            
        3209    def __init__(self, **args):
        +3210        unit = args.get("unit")
        +3211        if isinstance(unit, (Column, Literal)):
        +3212            args["unit"] = Var(this=unit.name)
        +3213        elif isinstance(unit, Week):
        +3214            unit.set("this", Var(this=unit.this.name))
        +3215        super().__init__(**args)
         
        @@ -29237,10 +30007,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -29273,8 +30045,8 @@ If another Expression instance is passed,
        -
        3172class Interval(TimeUnit):
        -3173    arg_types = {"this": False, "unit": False}
        +            
        3218class Interval(TimeUnit):
        +3219    arg_types = {"this": False, "unit": False}
         
        @@ -29302,10 +30074,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -29338,8 +30112,8 @@ If another Expression instance is passed,
        -
        3176class IgnoreNulls(Expression):
        -3177    pass
        +            
        3222class IgnoreNulls(Expression):
        +3223    pass
         
        @@ -29364,10 +30138,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -29400,8 +30176,8 @@ If another Expression instance is passed,
        -
        3180class RespectNulls(Expression):
        -3181    pass
        +            
        3226class RespectNulls(Expression):
        +3227    pass
         
        @@ -29426,10 +30202,12 @@ If another Expression instance is passed,
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -29462,53 +30240,53 @@ If another Expression instance is passed,
        -
        3185class Func(Condition):
        -3186    """
        -3187    The base class for all function expressions.
        -3188
        -3189    Attributes:
        -3190        is_var_len_args (bool): if set to True the last argument defined in arg_types will be
        -3191            treated as a variable length argument and the argument's value will be stored as a list.
        -3192        _sql_names (list): determines the SQL name (1st item in the list) and aliases (subsequent items)
        -3193            for this function expression. These values are used to map this node to a name during parsing
        -3194            as well as to provide the function's name during SQL string generation. By default the SQL
        -3195            name is set to the expression's class name transformed to snake case.
        -3196    """
        -3197
        -3198    is_var_len_args = False
        -3199
        -3200    @classmethod
        -3201    def from_arg_list(cls, args):
        -3202        if cls.is_var_len_args:
        -3203            all_arg_keys = list(cls.arg_types)
        -3204            # If this function supports variable length argument treat the last argument as such.
        -3205            non_var_len_arg_keys = all_arg_keys[:-1] if cls.is_var_len_args else all_arg_keys
        -3206            num_non_var = len(non_var_len_arg_keys)
        -3207
        -3208            args_dict = {arg_key: arg for arg, arg_key in zip(args, non_var_len_arg_keys)}
        -3209            args_dict[all_arg_keys[-1]] = args[num_non_var:]
        -3210        else:
        -3211            args_dict = {arg_key: arg for arg, arg_key in zip(args, cls.arg_types)}
        -3212
        -3213        return cls(**args_dict)
        -3214
        -3215    @classmethod
        -3216    def sql_names(cls):
        -3217        if cls is Func:
        -3218            raise NotImplementedError(
        -3219                "SQL name is only supported by concrete function implementations"
        -3220            )
        -3221        if "_sql_names" not in cls.__dict__:
        -3222            cls._sql_names = [camel_to_snake_case(cls.__name__)]
        -3223        return cls._sql_names
        -3224
        -3225    @classmethod
        -3226    def sql_name(cls):
        -3227        return cls.sql_names()[0]
        -3228
        -3229    @classmethod
        -3230    def default_parser_mappings(cls):
        -3231        return {name: cls.from_arg_list for name in cls.sql_names()}
        +            
        3231class Func(Condition):
        +3232    """
        +3233    The base class for all function expressions.
        +3234
        +3235    Attributes:
        +3236        is_var_len_args (bool): if set to True the last argument defined in arg_types will be
        +3237            treated as a variable length argument and the argument's value will be stored as a list.
        +3238        _sql_names (list): determines the SQL name (1st item in the list) and aliases (subsequent items)
        +3239            for this function expression. These values are used to map this node to a name during parsing
        +3240            as well as to provide the function's name during SQL string generation. By default the SQL
        +3241            name is set to the expression's class name transformed to snake case.
        +3242    """
        +3243
        +3244    is_var_len_args = False
        +3245
        +3246    @classmethod
        +3247    def from_arg_list(cls, args):
        +3248        if cls.is_var_len_args:
        +3249            all_arg_keys = list(cls.arg_types)
        +3250            # If this function supports variable length argument treat the last argument as such.
        +3251            non_var_len_arg_keys = all_arg_keys[:-1] if cls.is_var_len_args else all_arg_keys
        +3252            num_non_var = len(non_var_len_arg_keys)
        +3253
        +3254            args_dict = {arg_key: arg for arg, arg_key in zip(args, non_var_len_arg_keys)}
        +3255            args_dict[all_arg_keys[-1]] = args[num_non_var:]
        +3256        else:
        +3257            args_dict = {arg_key: arg for arg, arg_key in zip(args, cls.arg_types)}
        +3258
        +3259        return cls(**args_dict)
        +3260
        +3261    @classmethod
        +3262    def sql_names(cls):
        +3263        if cls is Func:
        +3264            raise NotImplementedError(
        +3265                "SQL name is only supported by concrete function implementations"
        +3266            )
        +3267        if "_sql_names" not in cls.__dict__:
        +3268            cls._sql_names = [camel_to_snake_case(cls.__name__)]
        +3269        return cls._sql_names
        +3270
        +3271    @classmethod
        +3272    def sql_name(cls):
        +3273        return cls.sql_names()[0]
        +3274
        +3275    @classmethod
        +3276    def default_parser_mappings(cls):
        +3277        return {name: cls.from_arg_list for name in cls.sql_names()}
         
        @@ -29539,20 +30317,20 @@ name is set to the expression's class name transformed to snake case.
        -
        3200    @classmethod
        -3201    def from_arg_list(cls, args):
        -3202        if cls.is_var_len_args:
        -3203            all_arg_keys = list(cls.arg_types)
        -3204            # If this function supports variable length argument treat the last argument as such.
        -3205            non_var_len_arg_keys = all_arg_keys[:-1] if cls.is_var_len_args else all_arg_keys
        -3206            num_non_var = len(non_var_len_arg_keys)
        -3207
        -3208            args_dict = {arg_key: arg for arg, arg_key in zip(args, non_var_len_arg_keys)}
        -3209            args_dict[all_arg_keys[-1]] = args[num_non_var:]
        -3210        else:
        -3211            args_dict = {arg_key: arg for arg, arg_key in zip(args, cls.arg_types)}
        -3212
        -3213        return cls(**args_dict)
        +            
        3246    @classmethod
        +3247    def from_arg_list(cls, args):
        +3248        if cls.is_var_len_args:
        +3249            all_arg_keys = list(cls.arg_types)
        +3250            # If this function supports variable length argument treat the last argument as such.
        +3251            non_var_len_arg_keys = all_arg_keys[:-1] if cls.is_var_len_args else all_arg_keys
        +3252            num_non_var = len(non_var_len_arg_keys)
        +3253
        +3254            args_dict = {arg_key: arg for arg, arg_key in zip(args, non_var_len_arg_keys)}
        +3255            args_dict[all_arg_keys[-1]] = args[num_non_var:]
        +3256        else:
        +3257            args_dict = {arg_key: arg for arg, arg_key in zip(args, cls.arg_types)}
        +3258
        +3259        return cls(**args_dict)
         
        @@ -29571,15 +30349,15 @@ name is set to the expression's class name transformed to snake case.
        -
        3215    @classmethod
        -3216    def sql_names(cls):
        -3217        if cls is Func:
        -3218            raise NotImplementedError(
        -3219                "SQL name is only supported by concrete function implementations"
        -3220            )
        -3221        if "_sql_names" not in cls.__dict__:
        -3222            cls._sql_names = [camel_to_snake_case(cls.__name__)]
        -3223        return cls._sql_names
        +            
        3261    @classmethod
        +3262    def sql_names(cls):
        +3263        if cls is Func:
        +3264            raise NotImplementedError(
        +3265                "SQL name is only supported by concrete function implementations"
        +3266            )
        +3267        if "_sql_names" not in cls.__dict__:
        +3268            cls._sql_names = [camel_to_snake_case(cls.__name__)]
        +3269        return cls._sql_names
         
        @@ -29598,9 +30376,9 @@ name is set to the expression's class name transformed to snake case.
        -
        3225    @classmethod
        -3226    def sql_name(cls):
        -3227        return cls.sql_names()[0]
        +            
        3271    @classmethod
        +3272    def sql_name(cls):
        +3273        return cls.sql_names()[0]
         
        @@ -29619,9 +30397,9 @@ name is set to the expression's class name transformed to snake case.
        -
        3229    @classmethod
        -3230    def default_parser_mappings(cls):
        -3231        return {name: cls.from_arg_list for name in cls.sql_names()}
        +            
        3275    @classmethod
        +3276    def default_parser_mappings(cls):
        +3277        return {name: cls.from_arg_list for name in cls.sql_names()}
         
        @@ -29647,10 +30425,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -29689,8 +30469,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3234class AggFunc(Func):
        -3235    pass
        +            
        3280class AggFunc(Func):
        +3281    pass
         
        @@ -29715,10 +30495,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -29764,8 +30546,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3238class Abs(Func):
        -3239    pass
        +            
        3284class Abs(Func):
        +3285    pass
         
        @@ -29790,10 +30572,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -29839,9 +30623,9 @@ name is set to the expression's class name transformed to snake case.
        -
        3242class Anonymous(Func):
        -3243    arg_types = {"this": True, "expressions": False}
        -3244    is_var_len_args = True
        +            
        3288class Anonymous(Func):
        +3289    arg_types = {"this": True, "expressions": False}
        +3290    is_var_len_args = True
         
        @@ -29866,10 +30650,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -29915,8 +30701,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3247class ApproxDistinct(AggFunc):
        -3248    arg_types = {"this": True, "accuracy": False}
        +            
        3293class ApproxDistinct(AggFunc):
        +3294    arg_types = {"this": True, "accuracy": False}
         
        @@ -29941,10 +30727,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -29990,9 +30778,9 @@ name is set to the expression's class name transformed to snake case.
        -
        3251class Array(Func):
        -3252    arg_types = {"expressions": False}
        -3253    is_var_len_args = True
        +            
        3297class Array(Func):
        +3298    arg_types = {"expressions": False}
        +3299    is_var_len_args = True
         
        @@ -30017,10 +30805,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -30066,8 +30856,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3257class ToChar(Func):
        -3258    arg_types = {"this": True, "format": False}
        +            
        3303class ToChar(Func):
        +3304    arg_types = {"this": True, "format": False}
         
        @@ -30092,10 +30882,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -30141,8 +30933,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3261class GenerateSeries(Func):
        -3262    arg_types = {"start": True, "end": True, "step": False}
        +            
        3307class GenerateSeries(Func):
        +3308    arg_types = {"start": True, "end": True, "step": False}
         
        @@ -30167,10 +30959,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -30216,8 +31010,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3265class ArrayAgg(AggFunc):
        -3266    pass
        +            
        3311class ArrayAgg(AggFunc):
        +3312    pass
         
        @@ -30242,10 +31036,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -30291,8 +31087,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3269class ArrayAll(Func):
        -3270    arg_types = {"this": True, "expression": True}
        +            
        3315class ArrayAll(Func):
        +3316    arg_types = {"this": True, "expression": True}
         
        @@ -30317,10 +31113,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -30366,8 +31164,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3273class ArrayAny(Func):
        -3274    arg_types = {"this": True, "expression": True}
        +            
        3319class ArrayAny(Func):
        +3320    arg_types = {"this": True, "expression": True}
         
        @@ -30392,10 +31190,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -30441,9 +31241,9 @@ name is set to the expression's class name transformed to snake case.
        -
        3277class ArrayConcat(Func):
        -3278    arg_types = {"this": True, "expressions": False}
        -3279    is_var_len_args = True
        +            
        3323class ArrayConcat(Func):
        +3324    arg_types = {"this": True, "expressions": False}
        +3325    is_var_len_args = True
         
        @@ -30468,10 +31268,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -30517,8 +31319,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3282class ArrayContains(Binary, Func):
        -3283    pass
        +            
        3328class ArrayContains(Binary, Func):
        +3329    pass
         
        @@ -30543,10 +31345,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -30592,8 +31396,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3286class ArrayContained(Binary):
        -3287    pass
        +            
        3332class ArrayContained(Binary):
        +3333    pass
         
        @@ -30618,10 +31422,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -30654,9 +31460,9 @@ name is set to the expression's class name transformed to snake case.
        -
        3290class ArrayFilter(Func):
        -3291    arg_types = {"this": True, "expression": True}
        -3292    _sql_names = ["FILTER", "ARRAY_FILTER"]
        +            
        3336class ArrayFilter(Func):
        +3337    arg_types = {"this": True, "expression": True}
        +3338    _sql_names = ["FILTER", "ARRAY_FILTER"]
         
        @@ -30681,10 +31487,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -30730,8 +31538,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3295class ArrayJoin(Func):
        -3296    arg_types = {"this": True, "expression": True, "null": False}
        +            
        3341class ArrayJoin(Func):
        +3342    arg_types = {"this": True, "expression": True, "null": False}
         
        @@ -30756,10 +31564,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -30805,8 +31615,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3299class ArraySize(Func):
        -3300    arg_types = {"this": True, "expression": False}
        +            
        3345class ArraySize(Func):
        +3346    arg_types = {"this": True, "expression": False}
         
        @@ -30831,10 +31641,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -30880,8 +31692,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3303class ArraySort(Func):
        -3304    arg_types = {"this": True, "expression": False}
        +            
        3349class ArraySort(Func):
        +3350    arg_types = {"this": True, "expression": False}
         
        @@ -30906,10 +31718,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -30955,8 +31769,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3307class ArraySum(Func):
        -3308    pass
        +            
        3353class ArraySum(Func):
        +3354    pass
         
        @@ -30981,10 +31795,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -31030,8 +31846,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3311class ArrayUnionAgg(AggFunc):
        -3312    pass
        +            
        3357class ArrayUnionAgg(AggFunc):
        +3358    pass
         
        @@ -31056,10 +31872,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -31105,8 +31923,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3315class Avg(AggFunc):
        -3316    pass
        +            
        3361class Avg(AggFunc):
        +3362    pass
         
        @@ -31131,10 +31949,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -31180,8 +32000,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3319class AnyValue(AggFunc):
        -3320    pass
        +            
        3365class AnyValue(AggFunc):
        +3366    pass
         
        @@ -31206,10 +32026,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -31255,8 +32077,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3323class Case(Func):
        -3324    arg_types = {"this": False, "ifs": True, "default": False}
        +            
        3369class Case(Func):
        +3370    arg_types = {"this": False, "ifs": True, "default": False}
         
        @@ -31281,10 +32103,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -31330,23 +32154,23 @@ name is set to the expression's class name transformed to snake case.
        -
        3327class Cast(Func):
        -3328    arg_types = {"this": True, "to": True}
        -3329
        -3330    @property
        -3331    def name(self) -> str:
        -3332        return self.this.name
        -3333
        -3334    @property
        -3335    def to(self):
        -3336        return self.args["to"]
        -3337
        -3338    @property
        -3339    def output_name(self):
        -3340        return self.name
        -3341
        -3342    def is_type(self, dtype: DataType.Type) -> bool:
        -3343        return self.to.is_type(dtype)
        +            
        3373class Cast(Func):
        +3374    arg_types = {"this": True, "to": True}
        +3375
        +3376    @property
        +3377    def name(self) -> str:
        +3378        return self.this.name
        +3379
        +3380    @property
        +3381    def to(self):
        +3382        return self.args["to"]
        +3383
        +3384    @property
        +3385    def output_name(self):
        +3386        return self.name
        +3387
        +3388    def is_type(self, dtype: DataType.Type) -> bool:
        +3389        return self.to.is_type(dtype)
         
        @@ -31393,8 +32217,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3342    def is_type(self, dtype: DataType.Type) -> bool:
        -3343        return self.to.is_type(dtype)
        +            
        3388    def is_type(self, dtype: DataType.Type) -> bool:
        +3389        return self.to.is_type(dtype)
         
        @@ -31419,10 +32243,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -31468,8 +32294,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3346class Collate(Binary):
        -3347    pass
        +            
        3392class Collate(Binary):
        +3393    pass
         
        @@ -31494,10 +32320,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -31530,8 +32358,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3350class TryCast(Cast):
        -3351    pass
        +            
        3396class TryCast(Cast):
        +3397    pass
         
        @@ -31555,10 +32383,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -31609,9 +32439,9 @@ name is set to the expression's class name transformed to snake case.
        -
        3354class Ceil(Func):
        -3355    arg_types = {"this": True, "decimals": False}
        -3356    _sql_names = ["CEIL", "CEILING"]
        +            
        3400class Ceil(Func):
        +3401    arg_types = {"this": True, "decimals": False}
        +3402    _sql_names = ["CEIL", "CEILING"]
         
        @@ -31636,10 +32466,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -31685,9 +32517,9 @@ name is set to the expression's class name transformed to snake case.
        -
        3359class Coalesce(Func):
        -3360    arg_types = {"this": True, "expressions": False}
        -3361    is_var_len_args = True
        +            
        3405class Coalesce(Func):
        +3406    arg_types = {"this": True, "expressions": False}
        +3407    is_var_len_args = True
         
        @@ -31712,10 +32544,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -31761,9 +32595,9 @@ name is set to the expression's class name transformed to snake case.
        -
        3364class Concat(Func):
        -3365    arg_types = {"expressions": True}
        -3366    is_var_len_args = True
        +            
        3410class Concat(Func):
        +3411    arg_types = {"expressions": True}
        +3412    is_var_len_args = True
         
        @@ -31788,10 +32622,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -31837,8 +32673,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3369class ConcatWs(Concat):
        -3370    _sql_names = ["CONCAT_WS"]
        +            
        3415class ConcatWs(Concat):
        +3416    _sql_names = ["CONCAT_WS"]
         
        @@ -31863,10 +32699,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -31912,8 +32750,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3373class Count(AggFunc):
        -3374    arg_types = {"this": False}
        +            
        3419class Count(AggFunc):
        +3420    arg_types = {"this": False}
         
        @@ -31938,10 +32776,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -31987,8 +32827,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3377class CountIf(AggFunc):
        -3378    pass
        +            
        3423class CountIf(AggFunc):
        +3424    pass
         
        @@ -32013,10 +32853,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -32062,8 +32904,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3381class CurrentDate(Func):
        -3382    arg_types = {"this": False}
        +            
        3427class CurrentDate(Func):
        +3428    arg_types = {"this": False}
         
        @@ -32088,10 +32930,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -32137,8 +32981,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3385class CurrentDatetime(Func):
        -3386    arg_types = {"this": False}
        +            
        3431class CurrentDatetime(Func):
        +3432    arg_types = {"this": False}
         
        @@ -32163,10 +33007,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -32212,8 +33058,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3389class CurrentTime(Func):
        -3390    arg_types = {"this": False}
        +            
        3435class CurrentTime(Func):
        +3436    arg_types = {"this": False}
         
        @@ -32238,10 +33084,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -32287,8 +33135,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3393class CurrentTimestamp(Func):
        -3394    arg_types = {"this": False}
        +            
        3439class CurrentTimestamp(Func):
        +3440    arg_types = {"this": False}
         
        @@ -32313,10 +33161,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -32362,8 +33212,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3397class DateAdd(Func, TimeUnit):
        -3398    arg_types = {"this": True, "expression": True, "unit": False}
        +            
        3443class DateAdd(Func, TimeUnit):
        +3444    arg_types = {"this": True, "expression": True, "unit": False}
         
        @@ -32404,10 +33254,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -32440,8 +33292,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3401class DateSub(Func, TimeUnit):
        -3402    arg_types = {"this": True, "expression": True, "unit": False}
        +            
        3447class DateSub(Func, TimeUnit):
        +3448    arg_types = {"this": True, "expression": True, "unit": False}
         
        @@ -32482,10 +33334,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -32518,9 +33372,9 @@ name is set to the expression's class name transformed to snake case.
        -
        3405class DateDiff(Func, TimeUnit):
        -3406    _sql_names = ["DATEDIFF", "DATE_DIFF"]
        -3407    arg_types = {"this": True, "expression": True, "unit": False}
        +            
        3451class DateDiff(Func, TimeUnit):
        +3452    _sql_names = ["DATEDIFF", "DATE_DIFF"]
        +3453    arg_types = {"this": True, "expression": True, "unit": False}
         
        @@ -32561,10 +33415,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -32597,8 +33453,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3410class DateTrunc(Func):
        -3411    arg_types = {"unit": True, "this": True, "zone": False}
        +            
        3456class DateTrunc(Func):
        +3457    arg_types = {"unit": True, "this": True, "zone": False}
         
        @@ -32623,10 +33479,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -32672,8 +33530,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3414class DatetimeAdd(Func, TimeUnit):
        -3415    arg_types = {"this": True, "expression": True, "unit": False}
        +            
        3460class DatetimeAdd(Func, TimeUnit):
        +3461    arg_types = {"this": True, "expression": True, "unit": False}
         
        @@ -32714,10 +33572,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -32750,8 +33610,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3418class DatetimeSub(Func, TimeUnit):
        -3419    arg_types = {"this": True, "expression": True, "unit": False}
        +            
        3464class DatetimeSub(Func, TimeUnit):
        +3465    arg_types = {"this": True, "expression": True, "unit": False}
         
        @@ -32792,10 +33652,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -32828,8 +33690,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3422class DatetimeDiff(Func, TimeUnit):
        -3423    arg_types = {"this": True, "expression": True, "unit": False}
        +            
        3468class DatetimeDiff(Func, TimeUnit):
        +3469    arg_types = {"this": True, "expression": True, "unit": False}
         
        @@ -32870,10 +33732,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -32906,8 +33770,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3426class DatetimeTrunc(Func, TimeUnit):
        -3427    arg_types = {"this": True, "unit": True, "zone": False}
        +            
        3472class DatetimeTrunc(Func, TimeUnit):
        +3473    arg_types = {"this": True, "unit": True, "zone": False}
         
        @@ -32948,10 +33812,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -32984,8 +33850,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3430class DayOfWeek(Func):
        -3431    _sql_names = ["DAY_OF_WEEK", "DAYOFWEEK"]
        +            
        3476class DayOfWeek(Func):
        +3477    _sql_names = ["DAY_OF_WEEK", "DAYOFWEEK"]
         
        @@ -33010,10 +33876,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -33059,8 +33927,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3434class DayOfMonth(Func):
        -3435    _sql_names = ["DAY_OF_MONTH", "DAYOFMONTH"]
        +            
        3480class DayOfMonth(Func):
        +3481    _sql_names = ["DAY_OF_MONTH", "DAYOFMONTH"]
         
        @@ -33085,10 +33953,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -33134,8 +34004,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3438class DayOfYear(Func):
        -3439    _sql_names = ["DAY_OF_YEAR", "DAYOFYEAR"]
        +            
        3484class DayOfYear(Func):
        +3485    _sql_names = ["DAY_OF_YEAR", "DAYOFYEAR"]
         
        @@ -33160,10 +34030,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -33209,8 +34081,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3442class WeekOfYear(Func):
        -3443    _sql_names = ["WEEK_OF_YEAR", "WEEKOFYEAR"]
        +            
        3488class WeekOfYear(Func):
        +3489    _sql_names = ["WEEK_OF_YEAR", "WEEKOFYEAR"]
         
        @@ -33235,10 +34107,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -33284,8 +34158,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3446class LastDateOfMonth(Func):
        -3447    pass
        +            
        3492class LastDateOfMonth(Func):
        +3493    pass
         
        @@ -33310,10 +34184,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -33359,8 +34235,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3450class Extract(Func):
        -3451    arg_types = {"this": True, "expression": True}
        +            
        3496class Extract(Func):
        +3497    arg_types = {"this": True, "expression": True}
         
        @@ -33385,10 +34261,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -33434,8 +34312,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3454class TimestampAdd(Func, TimeUnit):
        -3455    arg_types = {"this": True, "expression": True, "unit": False}
        +            
        3500class TimestampAdd(Func, TimeUnit):
        +3501    arg_types = {"this": True, "expression": True, "unit": False}
         
        @@ -33476,10 +34354,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -33512,8 +34392,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3458class TimestampSub(Func, TimeUnit):
        -3459    arg_types = {"this": True, "expression": True, "unit": False}
        +            
        3504class TimestampSub(Func, TimeUnit):
        +3505    arg_types = {"this": True, "expression": True, "unit": False}
         
        @@ -33554,10 +34434,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -33590,8 +34472,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3462class TimestampDiff(Func, TimeUnit):
        -3463    arg_types = {"this": True, "expression": True, "unit": False}
        +            
        3508class TimestampDiff(Func, TimeUnit):
        +3509    arg_types = {"this": True, "expression": True, "unit": False}
         
        @@ -33632,10 +34514,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -33668,8 +34552,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3466class TimestampTrunc(Func, TimeUnit):
        -3467    arg_types = {"this": True, "unit": True, "zone": False}
        +            
        3512class TimestampTrunc(Func, TimeUnit):
        +3513    arg_types = {"this": True, "unit": True, "zone": False}
         
        @@ -33710,10 +34594,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -33746,8 +34632,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3470class TimeAdd(Func, TimeUnit):
        -3471    arg_types = {"this": True, "expression": True, "unit": False}
        +            
        3516class TimeAdd(Func, TimeUnit):
        +3517    arg_types = {"this": True, "expression": True, "unit": False}
         
        @@ -33788,10 +34674,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -33824,8 +34712,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3474class TimeSub(Func, TimeUnit):
        -3475    arg_types = {"this": True, "expression": True, "unit": False}
        +            
        3520class TimeSub(Func, TimeUnit):
        +3521    arg_types = {"this": True, "expression": True, "unit": False}
         
        @@ -33866,10 +34754,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -33902,8 +34792,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3478class TimeDiff(Func, TimeUnit):
        -3479    arg_types = {"this": True, "expression": True, "unit": False}
        +            
        3524class TimeDiff(Func, TimeUnit):
        +3525    arg_types = {"this": True, "expression": True, "unit": False}
         
        @@ -33944,10 +34834,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -33980,8 +34872,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3482class TimeTrunc(Func, TimeUnit):
        -3483    arg_types = {"this": True, "unit": True, "zone": False}
        +            
        3528class TimeTrunc(Func, TimeUnit):
        +3529    arg_types = {"this": True, "unit": True, "zone": False}
         
        @@ -34022,10 +34914,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -34058,9 +34952,9 @@ name is set to the expression's class name transformed to snake case.
        -
        3486class DateFromParts(Func):
        -3487    _sql_names = ["DATEFROMPARTS"]
        -3488    arg_types = {"year": True, "month": True, "day": True}
        +            
        3532class DateFromParts(Func):
        +3533    _sql_names = ["DATEFROMPARTS"]
        +3534    arg_types = {"year": True, "month": True, "day": True}
         
        @@ -34085,10 +34979,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -34134,8 +35030,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3491class DateStrToDate(Func):
        -3492    pass
        +            
        3537class DateStrToDate(Func):
        +3538    pass
         
        @@ -34160,10 +35056,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -34209,8 +35107,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3495class DateToDateStr(Func):
        -3496    pass
        +            
        3541class DateToDateStr(Func):
        +3542    pass
         
        @@ -34235,10 +35133,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -34284,8 +35184,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3499class DateToDi(Func):
        -3500    pass
        +            
        3545class DateToDi(Func):
        +3546    pass
         
        @@ -34310,10 +35210,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -34359,8 +35261,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3503class Day(Func):
        -3504    pass
        +            
        3549class Day(Func):
        +3550    pass
         
        @@ -34385,10 +35287,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -34434,8 +35338,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3507class Decode(Func):
        -3508    arg_types = {"this": True, "charset": True, "replace": False}
        +            
        3553class Decode(Func):
        +3554    arg_types = {"this": True, "charset": True, "replace": False}
         
        @@ -34460,10 +35364,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -34509,8 +35415,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3511class DiToDate(Func):
        -3512    pass
        +            
        3557class DiToDate(Func):
        +3558    pass
         
        @@ -34535,10 +35441,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -34584,8 +35492,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3515class Encode(Func):
        -3516    arg_types = {"this": True, "charset": True}
        +            
        3561class Encode(Func):
        +3562    arg_types = {"this": True, "charset": True}
         
        @@ -34610,10 +35518,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -34659,8 +35569,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3519class Exp(Func):
        -3520    pass
        +            
        3565class Exp(Func):
        +3566    pass
         
        @@ -34685,10 +35595,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -34734,8 +35646,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3523class Explode(Func):
        -3524    pass
        +            
        3569class Explode(Func):
        +3570    pass
         
        @@ -34760,10 +35672,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -34794,6 +35708,83 @@ name is set to the expression's class name transformed to snake case.
        or_
        not_
        +
        + +
        +
        +
        + +
        + + class + ExponentialTimeDecayedAvg(AggFunc): + + + +
        + +
        3573class ExponentialTimeDecayedAvg(AggFunc):
        +3574    arg_types = {"this": True, "time": False, "decay": False}
        +
        + + + + + @@ -34809,8 +35800,8 @@ name is set to the expression's class name transformed to snake case. -
        3527class Floor(Func):
        -3528    arg_types = {"this": True, "decimals": False}
        +            
        3577class Floor(Func):
        +3578    arg_types = {"this": True, "decimals": False}
         
        @@ -34835,10 +35826,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -34884,9 +35877,9 @@ name is set to the expression's class name transformed to snake case.
        -
        3531class Greatest(Func):
        -3532    arg_types = {"this": True, "expressions": False}
        -3533    is_var_len_args = True
        +            
        3581class Greatest(Func):
        +3582    arg_types = {"this": True, "expressions": False}
        +3583    is_var_len_args = True
         
        @@ -34911,10 +35904,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -34960,8 +35955,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3536class GroupConcat(Func):
        -3537    arg_types = {"this": True, "separator": False}
        +            
        3586class GroupConcat(Func):
        +3587    arg_types = {"this": True, "separator": False}
         
        @@ -34986,10 +35981,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -35020,6 +36017,83 @@ name is set to the expression's class name transformed to snake case.
        or_
        not_
        +
        + + +
        +
        + +
        + + class + GroupUniqArray(AggFunc): + + + +
        + +
        3590class GroupUniqArray(AggFunc):
        +3591    arg_types = {"this": True, "size": False}
        +
        + + + + + @@ -35035,8 +36109,8 @@ name is set to the expression's class name transformed to snake case. -
        3540class Hex(Func):
        -3541    pass
        +            
        3594class Hex(Func):
        +3595    pass
         
        @@ -35061,10 +36135,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -35095,6 +36171,83 @@ name is set to the expression's class name transformed to snake case.
        or_
        not_
        +
        + + +
        +
        + +
        + + class + Histogram(AggFunc): + + + +
        + +
        3598class Histogram(AggFunc):
        +3599    arg_types = {"this": True, "bins": False}
        +
        + + + + + @@ -35110,8 +36263,8 @@ name is set to the expression's class name transformed to snake case. -
        3544class If(Func):
        -3545    arg_types = {"this": True, "true": True, "false": False}
        +            
        3602class If(Func):
        +3603    arg_types = {"this": True, "true": True, "false": False}
         
        @@ -35136,10 +36289,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -35185,9 +36340,9 @@ name is set to the expression's class name transformed to snake case.
        -
        3548class IfNull(Func):
        -3549    arg_types = {"this": True, "expression": False}
        -3550    _sql_names = ["IFNULL", "NVL"]
        +            
        3606class IfNull(Func):
        +3607    arg_types = {"this": True, "expression": False}
        +3608    _sql_names = ["IFNULL", "NVL"]
         
        @@ -35212,10 +36367,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -35261,8 +36418,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3553class Initcap(Func):
        -3554    pass
        +            
        3611class Initcap(Func):
        +3612    pass
         
        @@ -35287,10 +36444,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -35321,6 +36480,154 @@ name is set to the expression's class name transformed to snake case.
        or_
        not_
        +
        + + +
        +
        + +
        + + class + JSONKeyValue(Expression): + + + +
        + +
        3615class JSONKeyValue(Expression):
        +3616    arg_types = {"this": True, "expression": True}
        +
        + + + + + +
        +
        + +
        + + class + JSONObject(Func): + + + +
        + +
        3619class JSONObject(Func):
        +3620    arg_types = {
        +3621        "expressions": False,
        +3622        "null_handling": False,
        +3623        "unique_keys": False,
        +3624        "return_type": False,
        +3625        "format_json": False,
        +3626        "encoding": False,
        +3627    }
        +
        + + + + + @@ -35336,8 +36643,8 @@ name is set to the expression's class name transformed to snake case. -
        3557class JSONBContains(Binary):
        -3558    _sql_names = ["JSONB_CONTAINS"]
        +            
        3630class JSONBContains(Binary):
        +3631    _sql_names = ["JSONB_CONTAINS"]
         
        @@ -35362,10 +36669,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -35398,8 +36707,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3561class JSONExtract(Binary, Func):
        -3562    _sql_names = ["JSON_EXTRACT"]
        +            
        3634class JSONExtract(Binary, Func):
        +3635    _sql_names = ["JSON_EXTRACT"]
         
        @@ -35424,10 +36733,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -35473,8 +36784,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3565class JSONExtractScalar(JSONExtract):
        -3566    _sql_names = ["JSON_EXTRACT_SCALAR"]
        +            
        3638class JSONExtractScalar(JSONExtract):
        +3639    _sql_names = ["JSON_EXTRACT_SCALAR"]
         
        @@ -35499,10 +36810,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -35548,8 +36861,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3569class JSONBExtract(JSONExtract):
        -3570    _sql_names = ["JSONB_EXTRACT"]
        +            
        3642class JSONBExtract(JSONExtract):
        +3643    _sql_names = ["JSONB_EXTRACT"]
         
        @@ -35574,10 +36887,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -35623,8 +36938,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3573class JSONBExtractScalar(JSONExtract):
        -3574    _sql_names = ["JSONB_EXTRACT_SCALAR"]
        +            
        3646class JSONBExtractScalar(JSONExtract):
        +3647    _sql_names = ["JSONB_EXTRACT_SCALAR"]
         
        @@ -35649,10 +36964,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -35698,9 +37015,9 @@ name is set to the expression's class name transformed to snake case.
        -
        3577class Least(Func):
        -3578    arg_types = {"expressions": False}
        -3579    is_var_len_args = True
        +            
        3650class Least(Func):
        +3651    arg_types = {"expressions": False}
        +3652    is_var_len_args = True
         
        @@ -35725,10 +37042,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -35774,8 +37093,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3582class Length(Func):
        -3583    pass
        +            
        3655class Length(Func):
        +3656    pass
         
        @@ -35800,10 +37119,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -35849,14 +37170,14 @@ name is set to the expression's class name transformed to snake case.
        -
        3586class Levenshtein(Func):
        -3587    arg_types = {
        -3588        "this": True,
        -3589        "expression": False,
        -3590        "ins_cost": False,
        -3591        "del_cost": False,
        -3592        "sub_cost": False,
        -3593    }
        +            
        3659class Levenshtein(Func):
        +3660    arg_types = {
        +3661        "this": True,
        +3662        "expression": False,
        +3663        "ins_cost": False,
        +3664        "del_cost": False,
        +3665        "sub_cost": False,
        +3666    }
         
        @@ -35881,10 +37202,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -35930,8 +37253,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3596class Ln(Func):
        -3597    pass
        +            
        3669class Ln(Func):
        +3670    pass
         
        @@ -35956,10 +37279,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -36005,8 +37330,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3600class Log(Func):
        -3601    arg_types = {"this": True, "expression": False}
        +            
        3673class Log(Func):
        +3674    arg_types = {"this": True, "expression": False}
         
        @@ -36031,10 +37356,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -36080,8 +37407,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3604class Log2(Func):
        -3605    pass
        +            
        3677class Log2(Func):
        +3678    pass
         
        @@ -36106,10 +37433,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -36155,8 +37484,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3608class Log10(Func):
        -3609    pass
        +            
        3681class Log10(Func):
        +3682    pass
         
        @@ -36181,10 +37510,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -36230,8 +37561,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3612class LogicalOr(AggFunc):
        -3613    _sql_names = ["LOGICAL_OR", "BOOL_OR", "BOOLOR_AGG"]
        +            
        3685class LogicalOr(AggFunc):
        +3686    _sql_names = ["LOGICAL_OR", "BOOL_OR", "BOOLOR_AGG"]
         
        @@ -36256,10 +37587,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -36305,8 +37638,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3616class LogicalAnd(AggFunc):
        -3617    _sql_names = ["LOGICAL_AND", "BOOL_AND", "BOOLAND_AGG"]
        +            
        3689class LogicalAnd(AggFunc):
        +3690    _sql_names = ["LOGICAL_AND", "BOOL_AND", "BOOLAND_AGG"]
         
        @@ -36331,10 +37664,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -36380,8 +37715,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3620class Lower(Func):
        -3621    _sql_names = ["LOWER", "LCASE"]
        +            
        3693class Lower(Func):
        +3694    _sql_names = ["LOWER", "LCASE"]
         
        @@ -36406,10 +37741,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -36455,8 +37792,8 @@ name is set to the expression's class name transformed to snake case.
        -
        3624class Map(Func):
        -3625    arg_types = {"keys": False, "values": False}
        +            
        3697class Map(Func):
        +3698    arg_types = {"keys": False, "values": False}
         
        @@ -36481,10 +37818,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -36530,9 +37869,9 @@ name is set to the expression's class name transformed to snake case.
        -
        3628class VarMap(Func):
        -3629    arg_types = {"keys": True, "values": True}
        -3630    is_var_len_args = True
        +            
        3701class VarMap(Func):
        +3702    arg_types = {"keys": True, "values": True}
        +3703    is_var_len_args = True
         
        @@ -36557,10 +37896,12 @@ name is set to the expression's class name transformed to snake case.
        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -36606,14 +37947,14 @@ name is set to the expression's class name transformed to snake case.
        -
        3633class Matches(Func):
        -3634    """Oracle/Snowflake decode.
        -3635    https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions040.htm
        -3636    Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)
        -3637    """
        -3638
        -3639    arg_types = {"this": True, "expressions": True}
        -3640    is_var_len_args = True
        +            
        3706class Matches(Func):
        +3707    """Oracle/Snowflake decode.
        +3708    https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions040.htm
        +3709    Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)
        +3710    """
        +3711
        +3712    arg_types = {"this": True, "expressions": True}
        +3713    is_var_len_args = True
         
        @@ -36642,10 +37983,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -36691,9 +38034,9 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3643class Max(AggFunc):
        -3644    arg_types = {"this": True, "expressions": False}
        -3645    is_var_len_args = True
        +            
        3716class Max(AggFunc):
        +3717    arg_types = {"this": True, "expressions": False}
        +3718    is_var_len_args = True
         
        @@ -36718,10 +38061,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -36767,9 +38112,9 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3648class Min(AggFunc):
        -3649    arg_types = {"this": True, "expressions": False}
        -3650    is_var_len_args = True
        +            
        3721class Min(AggFunc):
        +3722    arg_types = {"this": True, "expressions": False}
        +3723    is_var_len_args = True
         
        @@ -36794,10 +38139,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -36843,8 +38190,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3653class Month(Func):
        -3654    pass
        +            
        3726class Month(Func):
        +3727    pass
         
        @@ -36869,10 +38216,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -36918,8 +38267,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3657class Nvl2(Func):
        -3658    arg_types = {"this": True, "true": True, "false": False}
        +            
        3730class Nvl2(Func):
        +3731    arg_types = {"this": True, "true": True, "false": False}
         
        @@ -36944,10 +38293,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -36993,8 +38344,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3661class Posexplode(Func):
        -3662    pass
        +            
        3734class Posexplode(Func):
        +3735    pass
         
        @@ -37019,10 +38370,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -37068,8 +38421,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3665class Pow(Binary, Func):
        -3666    _sql_names = ["POWER", "POW"]
        +            
        3738class Pow(Binary, Func):
        +3739    _sql_names = ["POWER", "POW"]
         
        @@ -37094,10 +38447,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -37143,8 +38498,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3669class PercentileCont(AggFunc):
        -3670    pass
        +            
        3742class PercentileCont(AggFunc):
        +3743    pass
         
        @@ -37169,10 +38524,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -37218,8 +38575,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3673class PercentileDisc(AggFunc):
        -3674    pass
        +            
        3746class PercentileDisc(AggFunc):
        +3747    pass
         
        @@ -37244,10 +38601,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -37293,8 +38652,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3677class Quantile(AggFunc):
        -3678    arg_types = {"this": True, "quantile": True}
        +            
        3750class Quantile(AggFunc):
        +3751    arg_types = {"this": True, "quantile": True}
         
        @@ -37319,10 +38678,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -37368,9 +38729,9 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3683class Quantiles(AggFunc):
        -3684    arg_types = {"parameters": True, "expressions": True}
        -3685    is_var_len_args = True
        +            
        3756class Quantiles(AggFunc):
        +3757    arg_types = {"parameters": True, "expressions": True}
        +3758    is_var_len_args = True
         
        @@ -37395,10 +38756,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -37444,8 +38807,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3688class QuantileIf(AggFunc):
        -3689    arg_types = {"parameters": True, "expressions": True}
        +            
        3761class QuantileIf(AggFunc):
        +3762    arg_types = {"parameters": True, "expressions": True}
         
        @@ -37470,10 +38833,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -37519,8 +38884,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3692class ApproxQuantile(Quantile):
        -3693    arg_types = {"this": True, "quantile": True, "accuracy": False, "weight": False}
        +            
        3765class ApproxQuantile(Quantile):
        +3766    arg_types = {"this": True, "quantile": True, "accuracy": False, "weight": False}
         
        @@ -37545,10 +38910,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -37594,8 +38961,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3696class RangeN(Func):
        -3697    arg_types = {"this": True, "expressions": True, "each": False}
        +            
        3769class RangeN(Func):
        +3770    arg_types = {"this": True, "expressions": True, "each": False}
         
        @@ -37620,10 +38987,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -37669,10 +39038,10 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3700class ReadCSV(Func):
        -3701    _sql_names = ["READ_CSV"]
        -3702    is_var_len_args = True
        -3703    arg_types = {"this": True, "expressions": False}
        +            
        3773class ReadCSV(Func):
        +3774    _sql_names = ["READ_CSV"]
        +3775    is_var_len_args = True
        +3776    arg_types = {"this": True, "expressions": False}
         
        @@ -37697,10 +39066,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -37746,8 +39117,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3706class Reduce(Func):
        -3707    arg_types = {"this": True, "initial": True, "merge": True, "finish": False}
        +            
        3779class Reduce(Func):
        +3780    arg_types = {"this": True, "initial": True, "merge": True, "finish": False}
         
        @@ -37772,10 +39143,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -37821,14 +39194,14 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3710class RegexpExtract(Func):
        -3711    arg_types = {
        -3712        "this": True,
        -3713        "expression": True,
        -3714        "position": False,
        -3715        "occurrence": False,
        -3716        "group": False,
        -3717    }
        +            
        3783class RegexpExtract(Func):
        +3784    arg_types = {
        +3785        "this": True,
        +3786        "expression": True,
        +3787        "position": False,
        +3788        "occurrence": False,
        +3789        "group": False,
        +3790    }
         
        @@ -37853,10 +39226,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -37902,8 +39277,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3720class RegexpLike(Func):
        -3721    arg_types = {"this": True, "expression": True, "flag": False}
        +            
        3793class RegexpLike(Func):
        +3794    arg_types = {"this": True, "expression": True, "flag": False}
         
        @@ -37928,10 +39303,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -37977,8 +39354,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3724class RegexpILike(Func):
        -3725    arg_types = {"this": True, "expression": True, "flag": False}
        +            
        3797class RegexpILike(Func):
        +3798    arg_types = {"this": True, "expression": True, "flag": False}
         
        @@ -38003,10 +39380,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -38052,8 +39431,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3728class RegexpSplit(Func):
        -3729    arg_types = {"this": True, "expression": True}
        +            
        3801class RegexpSplit(Func):
        +3802    arg_types = {"this": True, "expression": True}
         
        @@ -38078,10 +39457,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -38127,8 +39508,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3732class Repeat(Func):
        -3733    arg_types = {"this": True, "times": True}
        +            
        3805class Repeat(Func):
        +3806    arg_types = {"this": True, "times": True}
         
        @@ -38153,10 +39534,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -38202,8 +39585,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3736class Round(Func):
        -3737    arg_types = {"this": True, "decimals": False}
        +            
        3809class Round(Func):
        +3810    arg_types = {"this": True, "decimals": False}
         
        @@ -38228,10 +39611,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -38277,8 +39662,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3740class RowNumber(Func):
        -3741    arg_types: t.Dict[str, t.Any] = {}
        +            
        3813class RowNumber(Func):
        +3814    arg_types: t.Dict[str, t.Any] = {}
         
        @@ -38303,10 +39688,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -38352,8 +39739,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3744class SafeDivide(Func):
        -3745    arg_types = {"this": True, "expression": True}
        +            
        3817class SafeDivide(Func):
        +3818    arg_types = {"this": True, "expression": True}
         
        @@ -38378,10 +39765,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -38427,8 +39816,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3748class SetAgg(AggFunc):
        -3749    pass
        +            
        3821class SetAgg(AggFunc):
        +3822    pass
         
        @@ -38453,10 +39842,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -38502,8 +39893,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3752class SortArray(Func):
        -3753    arg_types = {"this": True, "asc": False}
        +            
        3825class SortArray(Func):
        +3826    arg_types = {"this": True, "asc": False}
         
        @@ -38528,10 +39919,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -38577,8 +39970,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3756class Split(Func):
        -3757    arg_types = {"this": True, "expression": True, "limit": False}
        +            
        3829class Split(Func):
        +3830    arg_types = {"this": True, "expression": True, "limit": False}
         
        @@ -38603,10 +39996,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -38652,8 +40047,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3762class Substring(Func):
        -3763    arg_types = {"this": True, "start": False, "length": False}
        +            
        3835class Substring(Func):
        +3836    arg_types = {"this": True, "start": False, "length": False}
         
        @@ -38678,10 +40073,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -38727,13 +40124,13 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3766class StrPosition(Func):
        -3767    arg_types = {
        -3768        "this": True,
        -3769        "substr": True,
        -3770        "position": False,
        -3771        "instance": False,
        -3772    }
        +            
        3839class StrPosition(Func):
        +3840    arg_types = {
        +3841        "this": True,
        +3842        "substr": True,
        +3843        "position": False,
        +3844        "instance": False,
        +3845    }
         
        @@ -38758,10 +40155,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -38807,8 +40206,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3775class StrToDate(Func):
        -3776    arg_types = {"this": True, "format": True}
        +            
        3848class StrToDate(Func):
        +3849    arg_types = {"this": True, "format": True}
         
        @@ -38833,10 +40232,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -38882,8 +40283,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3779class StrToTime(Func):
        -3780    arg_types = {"this": True, "format": True}
        +            
        3852class StrToTime(Func):
        +3853    arg_types = {"this": True, "format": True}
         
        @@ -38908,10 +40309,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -38957,8 +40360,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3785class StrToUnix(Func):
        -3786    arg_types = {"this": False, "format": False}
        +            
        3858class StrToUnix(Func):
        +3859    arg_types = {"this": False, "format": False}
         
        @@ -38983,10 +40386,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -39032,8 +40437,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3789class NumberToStr(Func):
        -3790    arg_types = {"this": True, "format": True}
        +            
        3862class NumberToStr(Func):
        +3863    arg_types = {"this": True, "format": True}
         
        @@ -39058,10 +40463,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -39107,9 +40514,9 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3793class Struct(Func):
        -3794    arg_types = {"expressions": True}
        -3795    is_var_len_args = True
        +            
        3866class Struct(Func):
        +3867    arg_types = {"expressions": True}
        +3868    is_var_len_args = True
         
        @@ -39134,10 +40541,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -39183,8 +40592,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3798class StructExtract(Func):
        -3799    arg_types = {"this": True, "expression": True}
        +            
        3871class StructExtract(Func):
        +3872    arg_types = {"this": True, "expression": True}
         
        @@ -39209,10 +40618,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -39258,8 +40669,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3802class Sum(AggFunc):
        -3803    pass
        +            
        3875class Sum(AggFunc):
        +3876    pass
         
        @@ -39284,10 +40695,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -39333,8 +40746,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3806class Sqrt(Func):
        -3807    pass
        +            
        3879class Sqrt(Func):
        +3880    pass
         
        @@ -39359,10 +40772,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -39408,8 +40823,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3810class Stddev(AggFunc):
        -3811    pass
        +            
        3883class Stddev(AggFunc):
        +3884    pass
         
        @@ -39434,10 +40849,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -39483,8 +40900,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3814class StddevPop(AggFunc):
        -3815    pass
        +            
        3887class StddevPop(AggFunc):
        +3888    pass
         
        @@ -39509,10 +40926,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -39558,8 +40977,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3818class StddevSamp(AggFunc):
        -3819    pass
        +            
        3891class StddevSamp(AggFunc):
        +3892    pass
         
        @@ -39584,10 +41003,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -39633,8 +41054,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3822class TimeToStr(Func):
        -3823    arg_types = {"this": True, "format": True}
        +            
        3895class TimeToStr(Func):
        +3896    arg_types = {"this": True, "format": True}
         
        @@ -39659,10 +41080,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -39708,8 +41131,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3826class TimeToTimeStr(Func):
        -3827    pass
        +            
        3899class TimeToTimeStr(Func):
        +3900    pass
         
        @@ -39734,10 +41157,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -39783,8 +41208,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3830class TimeToUnix(Func):
        -3831    pass
        +            
        3903class TimeToUnix(Func):
        +3904    pass
         
        @@ -39809,10 +41234,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -39858,8 +41285,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3834class TimeStrToDate(Func):
        -3835    pass
        +            
        3907class TimeStrToDate(Func):
        +3908    pass
         
        @@ -39884,10 +41311,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -39933,8 +41362,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3838class TimeStrToTime(Func):
        -3839    pass
        +            
        3911class TimeStrToTime(Func):
        +3912    pass
         
        @@ -39959,10 +41388,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -40008,8 +41439,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3842class TimeStrToUnix(Func):
        -3843    pass
        +            
        3915class TimeStrToUnix(Func):
        +3916    pass
         
        @@ -40034,10 +41465,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -40083,13 +41516,13 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3846class Trim(Func):
        -3847    arg_types = {
        -3848        "this": True,
        -3849        "expression": False,
        -3850        "position": False,
        -3851        "collation": False,
        -3852    }
        +            
        3919class Trim(Func):
        +3920    arg_types = {
        +3921        "this": True,
        +3922        "expression": False,
        +3923        "position": False,
        +3924        "collation": False,
        +3925    }
         
        @@ -40114,10 +41547,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -40163,8 +41598,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3855class TsOrDsAdd(Func, TimeUnit):
        -3856    arg_types = {"this": True, "expression": True, "unit": False}
        +            
        3928class TsOrDsAdd(Func, TimeUnit):
        +3929    arg_types = {"this": True, "expression": True, "unit": False}
         
        @@ -40205,10 +41640,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -40241,8 +41678,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3859class TsOrDsToDateStr(Func):
        -3860    pass
        +            
        3932class TsOrDsToDateStr(Func):
        +3933    pass
         
        @@ -40267,10 +41704,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -40316,8 +41755,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3863class TsOrDsToDate(Func):
        -3864    arg_types = {"this": True, "format": False}
        +            
        3936class TsOrDsToDate(Func):
        +3937    arg_types = {"this": True, "format": False}
         
        @@ -40342,10 +41781,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -40391,8 +41832,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3867class TsOrDiToDi(Func):
        -3868    pass
        +            
        3940class TsOrDiToDi(Func):
        +3941    pass
         
        @@ -40417,10 +41858,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -40466,8 +41909,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3871class Unhex(Func):
        -3872    pass
        +            
        3944class Unhex(Func):
        +3945    pass
         
        @@ -40492,10 +41935,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -40541,8 +41986,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3875class UnixToStr(Func):
        -3876    arg_types = {"this": True, "format": False}
        +            
        3948class UnixToStr(Func):
        +3949    arg_types = {"this": True, "format": False}
         
        @@ -40567,10 +42012,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -40616,12 +42063,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3881class UnixToTime(Func):
        -3882    arg_types = {"this": True, "scale": False, "zone": False, "hours": False, "minutes": False}
        -3883
        -3884    SECONDS = Literal.string("seconds")
        -3885    MILLIS = Literal.string("millis")
        -3886    MICROS = Literal.string("micros")
        +            
        3954class UnixToTime(Func):
        +3955    arg_types = {"this": True, "scale": False, "zone": False, "hours": False, "minutes": False}
        +3956
        +3957    SECONDS = Literal.string("seconds")
        +3958    MILLIS = Literal.string("millis")
        +3959    MICROS = Literal.string("micros")
         
        @@ -40646,10 +42093,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -40695,8 +42144,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3889class UnixToTimeStr(Func):
        -3890    pass
        +            
        3962class UnixToTimeStr(Func):
        +3963    pass
         
        @@ -40721,10 +42170,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -40770,8 +42221,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3893class Upper(Func):
        -3894    _sql_names = ["UPPER", "UCASE"]
        +            
        3966class Upper(Func):
        +3967    _sql_names = ["UPPER", "UCASE"]
         
        @@ -40796,10 +42247,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -40845,8 +42298,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3897class Variance(AggFunc):
        -3898    _sql_names = ["VARIANCE", "VARIANCE_SAMP", "VAR_SAMP"]
        +            
        3970class Variance(AggFunc):
        +3971    _sql_names = ["VARIANCE", "VARIANCE_SAMP", "VAR_SAMP"]
         
        @@ -40871,10 +42324,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -40920,8 +42375,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3901class VariancePop(AggFunc):
        -3902    _sql_names = ["VARIANCE_POP", "VAR_POP"]
        +            
        3974class VariancePop(AggFunc):
        +3975    _sql_names = ["VARIANCE_POP", "VAR_POP"]
         
        @@ -40946,10 +42401,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -40995,8 +42452,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3905class Week(Func):
        -3906    arg_types = {"this": True, "mode": False}
        +            
        3978class Week(Func):
        +3979    arg_types = {"this": True, "mode": False}
         
        @@ -41021,10 +42478,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -41070,8 +42529,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3909class XMLTable(Func):
        -3910    arg_types = {"this": True, "passing": False, "columns": False, "by_ref": False}
        +            
        3982class XMLTable(Func):
        +3983    arg_types = {"this": True, "passing": False, "columns": False, "by_ref": False}
         
        @@ -41096,10 +42555,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -41145,8 +42606,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3913class Year(Func):
        -3914    pass
        +            
        3986class Year(Func):
        +3987    pass
         
        @@ -41171,10 +42632,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -41220,8 +42683,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3917class Use(Expression):
        -3918    arg_types = {"this": True, "kind": False}
        +            
        3990class Use(Expression):
        +3991    arg_types = {"this": True, "kind": False}
         
        @@ -41246,10 +42709,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -41282,8 +42747,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3921class Merge(Expression):
        -3922    arg_types = {"this": True, "using": True, "on": True, "expressions": True}
        +            
        3994class Merge(Expression):
        +3995    arg_types = {"this": True, "using": True, "on": True, "expressions": True}
         
        @@ -41308,10 +42773,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -41344,8 +42811,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3925class When(Func):
        -3926    arg_types = {"matched": True, "source": False, "condition": False, "then": True}
        +            
        3998class When(Func):
        +3999    arg_types = {"matched": True, "source": False, "condition": False, "then": True}
         
        @@ -41370,10 +42837,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        append
        set
        depth
        +
        iter_expressions
        find
        find_all
        find_ancestor
        parent_select
        +
        same_parent
        root
        walk
        dfs
        @@ -41419,48 +42888,48 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)

        -
        3954def maybe_parse(
        -3955    sql_or_expression: ExpOrStr,
        -3956    *,
        -3957    into: t.Optional[IntoType] = None,
        -3958    dialect: DialectType = None,
        -3959    prefix: t.Optional[str] = None,
        -3960    copy: bool = False,
        -3961    **opts,
        -3962) -> Expression:
        -3963    """Gracefully handle a possible string or expression.
        -3964
        -3965    Example:
        -3966        >>> maybe_parse("1")
        -3967        (LITERAL this: 1, is_string: False)
        -3968        >>> maybe_parse(to_identifier("x"))
        -3969        (IDENTIFIER this: x, quoted: False)
        -3970
        -3971    Args:
        -3972        sql_or_expression: the SQL code string or an expression
        -3973        into: the SQLGlot Expression to parse into
        -3974        dialect: the dialect used to parse the input expressions (in the case that an
        -3975            input expression is a SQL string).
        -3976        prefix: a string to prefix the sql with before it gets parsed
        -3977            (automatically includes a space)
        -3978        copy: whether or not to copy the expression.
        -3979        **opts: other options to use to parse the input expressions (again, in the case
        -3980            that an input expression is a SQL string).
        -3981
        -3982    Returns:
        -3983        Expression: the parsed or given expression.
        -3984    """
        -3985    if isinstance(sql_or_expression, Expression):
        -3986        if copy:
        -3987            return sql_or_expression.copy()
        -3988        return sql_or_expression
        -3989
        -3990    import sqlglot
        -3991
        -3992    sql = str(sql_or_expression)
        -3993    if prefix:
        -3994        sql = f"{prefix} {sql}"
        -3995    return sqlglot.parse_one(sql, read=dialect, into=into, **opts)
        +            
        4010def maybe_parse(
        +4011    sql_or_expression: ExpOrStr,
        +4012    *,
        +4013    into: t.Optional[IntoType] = None,
        +4014    dialect: DialectType = None,
        +4015    prefix: t.Optional[str] = None,
        +4016    copy: bool = False,
        +4017    **opts,
        +4018) -> Expression:
        +4019    """Gracefully handle a possible string or expression.
        +4020
        +4021    Example:
        +4022        >>> maybe_parse("1")
        +4023        (LITERAL this: 1, is_string: False)
        +4024        >>> maybe_parse(to_identifier("x"))
        +4025        (IDENTIFIER this: x, quoted: False)
        +4026
        +4027    Args:
        +4028        sql_or_expression: the SQL code string or an expression
        +4029        into: the SQLGlot Expression to parse into
        +4030        dialect: the dialect used to parse the input expressions (in the case that an
        +4031            input expression is a SQL string).
        +4032        prefix: a string to prefix the sql with before it gets parsed
        +4033            (automatically includes a space)
        +4034        copy: whether or not to copy the expression.
        +4035        **opts: other options to use to parse the input expressions (again, in the case
        +4036            that an input expression is a SQL string).
        +4037
        +4038    Returns:
        +4039        Expression: the parsed or given expression.
        +4040    """
        +4041    if isinstance(sql_or_expression, Expression):
        +4042        if copy:
        +4043            return sql_or_expression.copy()
        +4044        return sql_or_expression
        +4045
        +4046    import sqlglot
        +4047
        +4048    sql = str(sql_or_expression)
        +4049    if prefix:
        +4050        sql = f"{prefix} {sql}"
        +4051    return sqlglot.parse_one(sql, read=dialect, into=into, **opts)
         
        @@ -41512,29 +42981,29 @@ that an input expression is a SQL string).
        -
        4141def union(left, right, distinct=True, dialect=None, **opts):
        -4142    """
        -4143    Initializes a syntax tree from one UNION expression.
        -4144
        -4145    Example:
        -4146        >>> union("SELECT * FROM foo", "SELECT * FROM bla").sql()
        -4147        'SELECT * FROM foo UNION SELECT * FROM bla'
        -4148
        -4149    Args:
        -4150        left (str | Expression): the SQL code string corresponding to the left-hand side.
        -4151            If an `Expression` instance is passed, it will be used as-is.
        -4152        right (str | Expression): the SQL code string corresponding to the right-hand side.
        -4153            If an `Expression` instance is passed, it will be used as-is.
        -4154        distinct (bool): set the DISTINCT flag if and only if this is true.
        -4155        dialect (str): the dialect used to parse the input expression.
        -4156        opts (kwargs): other options to use to parse the input expressions.
        -4157    Returns:
        -4158        Union: the syntax tree for the UNION expression.
        -4159    """
        -4160    left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts)
        -4161    right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts)
        -4162
        -4163    return Union(this=left, expression=right, distinct=distinct)
        +            
        4197def union(left, right, distinct=True, dialect=None, **opts):
        +4198    """
        +4199    Initializes a syntax tree from one UNION expression.
        +4200
        +4201    Example:
        +4202        >>> union("SELECT * FROM foo", "SELECT * FROM bla").sql()
        +4203        'SELECT * FROM foo UNION SELECT * FROM bla'
        +4204
        +4205    Args:
        +4206        left (str | Expression): the SQL code string corresponding to the left-hand side.
        +4207            If an `Expression` instance is passed, it will be used as-is.
        +4208        right (str | Expression): the SQL code string corresponding to the right-hand side.
        +4209            If an `Expression` instance is passed, it will be used as-is.
        +4210        distinct (bool): set the DISTINCT flag if and only if this is true.
        +4211        dialect (str): the dialect used to parse the input expression.
        +4212        opts (kwargs): other options to use to parse the input expressions.
        +4213    Returns:
        +4214        Union: the syntax tree for the UNION expression.
        +4215    """
        +4216    left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts)
        +4217    right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts)
        +4218
        +4219    return Union(this=left, expression=right, distinct=distinct)
         
        @@ -41582,29 +43051,29 @@ If an Expression instance is passed, it w
        -
        4166def intersect(left, right, distinct=True, dialect=None, **opts):
        -4167    """
        -4168    Initializes a syntax tree from one INTERSECT expression.
        -4169
        -4170    Example:
        -4171        >>> intersect("SELECT * FROM foo", "SELECT * FROM bla").sql()
        -4172        'SELECT * FROM foo INTERSECT SELECT * FROM bla'
        -4173
        -4174    Args:
        -4175        left (str | Expression): the SQL code string corresponding to the left-hand side.
        -4176            If an `Expression` instance is passed, it will be used as-is.
        -4177        right (str | Expression): the SQL code string corresponding to the right-hand side.
        -4178            If an `Expression` instance is passed, it will be used as-is.
        -4179        distinct (bool): set the DISTINCT flag if and only if this is true.
        -4180        dialect (str): the dialect used to parse the input expression.
        -4181        opts (kwargs): other options to use to parse the input expressions.
        -4182    Returns:
        -4183        Intersect: the syntax tree for the INTERSECT expression.
        -4184    """
        -4185    left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts)
        -4186    right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts)
        -4187
        -4188    return Intersect(this=left, expression=right, distinct=distinct)
        +            
        4222def intersect(left, right, distinct=True, dialect=None, **opts):
        +4223    """
        +4224    Initializes a syntax tree from one INTERSECT expression.
        +4225
        +4226    Example:
        +4227        >>> intersect("SELECT * FROM foo", "SELECT * FROM bla").sql()
        +4228        'SELECT * FROM foo INTERSECT SELECT * FROM bla'
        +4229
        +4230    Args:
        +4231        left (str | Expression): the SQL code string corresponding to the left-hand side.
        +4232            If an `Expression` instance is passed, it will be used as-is.
        +4233        right (str | Expression): the SQL code string corresponding to the right-hand side.
        +4234            If an `Expression` instance is passed, it will be used as-is.
        +4235        distinct (bool): set the DISTINCT flag if and only if this is true.
        +4236        dialect (str): the dialect used to parse the input expression.
        +4237        opts (kwargs): other options to use to parse the input expressions.
        +4238    Returns:
        +4239        Intersect: the syntax tree for the INTERSECT expression.
        +4240    """
        +4241    left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts)
        +4242    right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts)
        +4243
        +4244    return Intersect(this=left, expression=right, distinct=distinct)
         
        @@ -41652,29 +43121,29 @@ If an Expression instance is passed, it w
        -
        4191def except_(left, right, distinct=True, dialect=None, **opts):
        -4192    """
        -4193    Initializes a syntax tree from one EXCEPT expression.
        -4194
        -4195    Example:
        -4196        >>> except_("SELECT * FROM foo", "SELECT * FROM bla").sql()
        -4197        'SELECT * FROM foo EXCEPT SELECT * FROM bla'
        -4198
        -4199    Args:
        -4200        left (str | Expression): the SQL code string corresponding to the left-hand side.
        -4201            If an `Expression` instance is passed, it will be used as-is.
        -4202        right (str | Expression): the SQL code string corresponding to the right-hand side.
        -4203            If an `Expression` instance is passed, it will be used as-is.
        -4204        distinct (bool): set the DISTINCT flag if and only if this is true.
        -4205        dialect (str): the dialect used to parse the input expression.
        -4206        opts (kwargs): other options to use to parse the input expressions.
        -4207    Returns:
        -4208        Except: the syntax tree for the EXCEPT statement.
        -4209    """
        -4210    left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts)
        -4211    right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts)
        -4212
        -4213    return Except(this=left, expression=right, distinct=distinct)
        +            
        4247def except_(left, right, distinct=True, dialect=None, **opts):
        +4248    """
        +4249    Initializes a syntax tree from one EXCEPT expression.
        +4250
        +4251    Example:
        +4252        >>> except_("SELECT * FROM foo", "SELECT * FROM bla").sql()
        +4253        'SELECT * FROM foo EXCEPT SELECT * FROM bla'
        +4254
        +4255    Args:
        +4256        left (str | Expression): the SQL code string corresponding to the left-hand side.
        +4257            If an `Expression` instance is passed, it will be used as-is.
        +4258        right (str | Expression): the SQL code string corresponding to the right-hand side.
        +4259            If an `Expression` instance is passed, it will be used as-is.
        +4260        distinct (bool): set the DISTINCT flag if and only if this is true.
        +4261        dialect (str): the dialect used to parse the input expression.
        +4262        opts (kwargs): other options to use to parse the input expressions.
        +4263    Returns:
        +4264        Except: the syntax tree for the EXCEPT statement.
        +4265    """
        +4266    left = maybe_parse(sql_or_expression=left, dialect=dialect, **opts)
        +4267    right = maybe_parse(sql_or_expression=right, dialect=dialect, **opts)
        +4268
        +4269    return Except(this=left, expression=right, distinct=distinct)
         
        @@ -41722,26 +43191,26 @@ If an Expression instance is passed, it w
        -
        4216def select(*expressions: ExpOrStr, dialect: DialectType = None, **opts) -> Select:
        -4217    """
        -4218    Initializes a syntax tree from one or multiple SELECT expressions.
        -4219
        -4220    Example:
        -4221        >>> select("col1", "col2").from_("tbl").sql()
        -4222        'SELECT col1, col2 FROM tbl'
        -4223
        -4224    Args:
        -4225        *expressions: the SQL code string to parse as the expressions of a
        -4226            SELECT statement. If an Expression instance is passed, this is used as-is.
        -4227        dialect: the dialect used to parse the input expressions (in the case that an
        -4228            input expression is a SQL string).
        -4229        **opts: other options to use to parse the input expressions (again, in the case
        -4230            that an input expression is a SQL string).
        -4231
        -4232    Returns:
        -4233        Select: the syntax tree for the SELECT statement.
        -4234    """
        -4235    return Select().select(*expressions, dialect=dialect, **opts)
        +            
        4272def select(*expressions: ExpOrStr, dialect: DialectType = None, **opts) -> Select:
        +4273    """
        +4274    Initializes a syntax tree from one or multiple SELECT expressions.
        +4275
        +4276    Example:
        +4277        >>> select("col1", "col2").from_("tbl").sql()
        +4278        'SELECT col1, col2 FROM tbl'
        +4279
        +4280    Args:
        +4281        *expressions: the SQL code string to parse as the expressions of a
        +4282            SELECT statement. If an Expression instance is passed, this is used as-is.
        +4283        dialect: the dialect used to parse the input expressions (in the case that an
        +4284            input expression is a SQL string).
        +4285        **opts: other options to use to parse the input expressions (again, in the case
        +4286            that an input expression is a SQL string).
        +4287
        +4288    Returns:
        +4289        Select: the syntax tree for the SELECT statement.
        +4290    """
        +4291    return Select().select(*expressions, dialect=dialect, **opts)
         
        @@ -41788,26 +43257,26 @@ that an input expression is a SQL string).
        -
        4238def from_(*expressions, dialect=None, **opts) -> Select:
        -4239    """
        -4240    Initializes a syntax tree from a FROM expression.
        -4241
        -4242    Example:
        -4243        >>> from_("tbl").select("col1", "col2").sql()
        -4244        'SELECT col1, col2 FROM tbl'
        -4245
        -4246    Args:
        -4247        *expressions (str | Expression): the SQL code string to parse as the FROM expressions of a
        -4248            SELECT statement. If an Expression instance is passed, this is used as-is.
        -4249        dialect (str): the dialect used to parse the input expression (in the case that the
        -4250            input expression is a SQL string).
        -4251        **opts: other options to use to parse the input expressions (again, in the case
        -4252            that the input expression is a SQL string).
        -4253
        -4254    Returns:
        -4255        Select: the syntax tree for the SELECT statement.
        -4256    """
        -4257    return Select().from_(*expressions, dialect=dialect, **opts)
        +            
        4294def from_(*expressions, dialect=None, **opts) -> Select:
        +4295    """
        +4296    Initializes a syntax tree from a FROM expression.
        +4297
        +4298    Example:
        +4299        >>> from_("tbl").select("col1", "col2").sql()
        +4300        'SELECT col1, col2 FROM tbl'
        +4301
        +4302    Args:
        +4303        *expressions (str | Expression): the SQL code string to parse as the FROM expressions of a
        +4304            SELECT statement. If an Expression instance is passed, this is used as-is.
        +4305        dialect (str): the dialect used to parse the input expression (in the case that the
        +4306            input expression is a SQL string).
        +4307        **opts: other options to use to parse the input expressions (again, in the case
        +4308            that the input expression is a SQL string).
        +4309
        +4310    Returns:
        +4311        Select: the syntax tree for the SELECT statement.
        +4312    """
        +4313    return Select().from_(*expressions, dialect=dialect, **opts)
         
        @@ -41854,53 +43323,53 @@ that the input expression is a SQL string).
        -
        4260def update(
        -4261    table: str | Table,
        -4262    properties: dict,
        -4263    where: t.Optional[ExpOrStr] = None,
        -4264    from_: t.Optional[ExpOrStr] = None,
        -4265    dialect: DialectType = None,
        -4266    **opts,
        -4267) -> Update:
        -4268    """
        -4269    Creates an update statement.
        -4270
        -4271    Example:
        -4272        >>> update("my_table", {"x": 1, "y": "2", "z": None}, from_="baz", where="id > 1").sql()
        -4273        "UPDATE my_table SET x = 1, y = '2', z = NULL FROM baz WHERE id > 1"
        -4274
        -4275    Args:
        -4276        *properties: dictionary of properties to set which are
        -4277            auto converted to sql objects eg None -> NULL
        -4278        where: sql conditional parsed into a WHERE statement
        -4279        from_: sql statement parsed into a FROM statement
        -4280        dialect: the dialect used to parse the input expressions.
        -4281        **opts: other options to use to parse the input expressions.
        -4282
        -4283    Returns:
        -4284        Update: the syntax tree for the UPDATE statement.
        -4285    """
        -4286    update_expr = Update(this=maybe_parse(table, into=Table, dialect=dialect))
        -4287    update_expr.set(
        -4288        "expressions",
        -4289        [
        -4290            EQ(this=maybe_parse(k, dialect=dialect, **opts), expression=convert(v))
        -4291            for k, v in properties.items()
        -4292        ],
        -4293    )
        -4294    if from_:
        -4295        update_expr.set(
        -4296            "from",
        -4297            maybe_parse(from_, into=From, dialect=dialect, prefix="FROM", **opts),
        -4298        )
        -4299    if isinstance(where, Condition):
        -4300        where = Where(this=where)
        -4301    if where:
        -4302        update_expr.set(
        -4303            "where",
        -4304            maybe_parse(where, into=Where, dialect=dialect, prefix="WHERE", **opts),
        -4305        )
        -4306    return update_expr
        +            
        4316def update(
        +4317    table: str | Table,
        +4318    properties: dict,
        +4319    where: t.Optional[ExpOrStr] = None,
        +4320    from_: t.Optional[ExpOrStr] = None,
        +4321    dialect: DialectType = None,
        +4322    **opts,
        +4323) -> Update:
        +4324    """
        +4325    Creates an update statement.
        +4326
        +4327    Example:
        +4328        >>> update("my_table", {"x": 1, "y": "2", "z": None}, from_="baz", where="id > 1").sql()
        +4329        "UPDATE my_table SET x = 1, y = '2', z = NULL FROM baz WHERE id > 1"
        +4330
        +4331    Args:
        +4332        *properties: dictionary of properties to set which are
        +4333            auto converted to sql objects eg None -> NULL
        +4334        where: sql conditional parsed into a WHERE statement
        +4335        from_: sql statement parsed into a FROM statement
        +4336        dialect: the dialect used to parse the input expressions.
        +4337        **opts: other options to use to parse the input expressions.
        +4338
        +4339    Returns:
        +4340        Update: the syntax tree for the UPDATE statement.
        +4341    """
        +4342    update_expr = Update(this=maybe_parse(table, into=Table, dialect=dialect))
        +4343    update_expr.set(
        +4344        "expressions",
        +4345        [
        +4346            EQ(this=maybe_parse(k, dialect=dialect, **opts), expression=convert(v))
        +4347            for k, v in properties.items()
        +4348        ],
        +4349    )
        +4350    if from_:
        +4351        update_expr.set(
        +4352            "from",
        +4353            maybe_parse(from_, into=From, dialect=dialect, prefix="FROM", **opts),
        +4354        )
        +4355    if isinstance(where, Condition):
        +4356        where = Where(this=where)
        +4357    if where:
        +4358        update_expr.set(
        +4359            "where",
        +4360            maybe_parse(where, into=Where, dialect=dialect, prefix="WHERE", **opts),
        +4361        )
        +4362    return update_expr
         
        @@ -41947,35 +43416,35 @@ auto converted to sql objects eg None -> NULL
        -
        4309def delete(
        -4310    table: ExpOrStr,
        -4311    where: t.Optional[ExpOrStr] = None,
        -4312    returning: t.Optional[ExpOrStr] = None,
        -4313    dialect: DialectType = None,
        -4314    **opts,
        -4315) -> Delete:
        -4316    """
        -4317    Builds a delete statement.
        -4318
        -4319    Example:
        -4320        >>> delete("my_table", where="id > 1").sql()
        -4321        'DELETE FROM my_table WHERE id > 1'
        -4322
        -4323    Args:
        -4324        where: sql conditional parsed into a WHERE statement
        -4325        returning: sql conditional parsed into a RETURNING statement
        -4326        dialect: the dialect used to parse the input expressions.
        -4327        **opts: other options to use to parse the input expressions.
        -4328
        -4329    Returns:
        -4330        Delete: the syntax tree for the DELETE statement.
        -4331    """
        -4332    delete_expr = Delete().delete(table, dialect=dialect, copy=False, **opts)
        -4333    if where:
        -4334        delete_expr = delete_expr.where(where, dialect=dialect, copy=False, **opts)
        -4335    if returning:
        -4336        delete_expr = delete_expr.returning(returning, dialect=dialect, copy=False, **opts)
        -4337    return delete_expr
        +            
        4365def delete(
        +4366    table: ExpOrStr,
        +4367    where: t.Optional[ExpOrStr] = None,
        +4368    returning: t.Optional[ExpOrStr] = None,
        +4369    dialect: DialectType = None,
        +4370    **opts,
        +4371) -> Delete:
        +4372    """
        +4373    Builds a delete statement.
        +4374
        +4375    Example:
        +4376        >>> delete("my_table", where="id > 1").sql()
        +4377        'DELETE FROM my_table WHERE id > 1'
        +4378
        +4379    Args:
        +4380        where: sql conditional parsed into a WHERE statement
        +4381        returning: sql conditional parsed into a RETURNING statement
        +4382        dialect: the dialect used to parse the input expressions.
        +4383        **opts: other options to use to parse the input expressions.
        +4384
        +4385    Returns:
        +4386        Delete: the syntax tree for the DELETE statement.
        +4387    """
        +4388    delete_expr = Delete().delete(table, dialect=dialect, copy=False, **opts)
        +4389    if where:
        +4390        delete_expr = delete_expr.where(where, dialect=dialect, copy=False, **opts)
        +4391    if returning:
        +4392        delete_expr = delete_expr.returning(returning, dialect=dialect, copy=False, **opts)
        +4393    return delete_expr
         
        @@ -42020,37 +43489,37 @@ auto converted to sql objects eg None -> NULL
        -
        4340def condition(expression, dialect=None, **opts) -> Condition:
        -4341    """
        -4342    Initialize a logical condition expression.
        -4343
        -4344    Example:
        -4345        >>> condition("x=1").sql()
        -4346        'x = 1'
        -4347
        -4348        This is helpful for composing larger logical syntax trees:
        -4349        >>> where = condition("x=1")
        -4350        >>> where = where.and_("y=1")
        -4351        >>> Select().from_("tbl").select("*").where(where).sql()
        -4352        'SELECT * FROM tbl WHERE x = 1 AND y = 1'
        -4353
        -4354    Args:
        -4355        *expression (str | Expression): the SQL code string to parse.
        -4356            If an Expression instance is passed, this is used as-is.
        -4357        dialect (str): the dialect used to parse the input expression (in the case that the
        -4358            input expression is a SQL string).
        -4359        **opts: other options to use to parse the input expressions (again, in the case
        -4360            that the input expression is a SQL string).
        -4361
        -4362    Returns:
        -4363        Condition: the expression
        -4364    """
        -4365    return maybe_parse(  # type: ignore
        -4366        expression,
        -4367        into=Condition,
        -4368        dialect=dialect,
        -4369        **opts,
        -4370    )
        +            
        4396def condition(expression, dialect=None, **opts) -> Condition:
        +4397    """
        +4398    Initialize a logical condition expression.
        +4399
        +4400    Example:
        +4401        >>> condition("x=1").sql()
        +4402        'x = 1'
        +4403
        +4404        This is helpful for composing larger logical syntax trees:
        +4405        >>> where = condition("x=1")
        +4406        >>> where = where.and_("y=1")
        +4407        >>> Select().from_("tbl").select("*").where(where).sql()
        +4408        'SELECT * FROM tbl WHERE x = 1 AND y = 1'
        +4409
        +4410    Args:
        +4411        *expression (str | Expression): the SQL code string to parse.
        +4412            If an Expression instance is passed, this is used as-is.
        +4413        dialect (str): the dialect used to parse the input expression (in the case that the
        +4414            input expression is a SQL string).
        +4415        **opts: other options to use to parse the input expressions (again, in the case
        +4416            that the input expression is a SQL string).
        +4417
        +4418    Returns:
        +4419        Condition: the expression
        +4420    """
        +4421    return maybe_parse(  # type: ignore
        +4422        expression,
        +4423        into=Condition,
        +4424        dialect=dialect,
        +4425        **opts,
        +4426    )
         
        @@ -42107,24 +43576,24 @@ that the input expression is a SQL string).
        -
        4373def and_(*expressions, dialect=None, **opts) -> And:
        -4374    """
        -4375    Combine multiple conditions with an AND logical operator.
        -4376
        -4377    Example:
        -4378        >>> and_("x=1", and_("y=1", "z=1")).sql()
        -4379        'x = 1 AND (y = 1 AND z = 1)'
        -4380
        -4381    Args:
        -4382        *expressions (str | Expression): the SQL code strings to parse.
        -4383            If an Expression instance is passed, this is used as-is.
        -4384        dialect (str): the dialect used to parse the input expression.
        -4385        **opts: other options to use to parse the input expressions.
        -4386
        -4387    Returns:
        -4388        And: the new condition
        -4389    """
        -4390    return _combine(expressions, And, dialect, **opts)
        +            
        4429def and_(*expressions, dialect=None, **opts) -> And:
        +4430    """
        +4431    Combine multiple conditions with an AND logical operator.
        +4432
        +4433    Example:
        +4434        >>> and_("x=1", and_("y=1", "z=1")).sql()
        +4435        'x = 1 AND (y = 1 AND z = 1)'
        +4436
        +4437    Args:
        +4438        *expressions (str | Expression): the SQL code strings to parse.
        +4439            If an Expression instance is passed, this is used as-is.
        +4440        dialect (str): the dialect used to parse the input expression.
        +4441        **opts: other options to use to parse the input expressions.
        +4442
        +4443    Returns:
        +4444        And: the new condition
        +4445    """
        +4446    return _combine(expressions, And, dialect, **opts)
         
        @@ -42169,24 +43638,24 @@ If an Expression instance is passed, this is used as-is.
        -
        4393def or_(*expressions, dialect=None, **opts) -> Or:
        -4394    """
        -4395    Combine multiple conditions with an OR logical operator.
        -4396
        -4397    Example:
        -4398        >>> or_("x=1", or_("y=1", "z=1")).sql()
        -4399        'x = 1 OR (y = 1 OR z = 1)'
        -4400
        -4401    Args:
        -4402        *expressions (str | Expression): the SQL code strings to parse.
        -4403            If an Expression instance is passed, this is used as-is.
        -4404        dialect (str): the dialect used to parse the input expression.
        -4405        **opts: other options to use to parse the input expressions.
        -4406
        -4407    Returns:
        -4408        Or: the new condition
        -4409    """
        -4410    return _combine(expressions, Or, dialect, **opts)
        +            
        4449def or_(*expressions, dialect=None, **opts) -> Or:
        +4450    """
        +4451    Combine multiple conditions with an OR logical operator.
        +4452
        +4453    Example:
        +4454        >>> or_("x=1", or_("y=1", "z=1")).sql()
        +4455        'x = 1 OR (y = 1 OR z = 1)'
        +4456
        +4457    Args:
        +4458        *expressions (str | Expression): the SQL code strings to parse.
        +4459            If an Expression instance is passed, this is used as-is.
        +4460        dialect (str): the dialect used to parse the input expression.
        +4461        **opts: other options to use to parse the input expressions.
        +4462
        +4463    Returns:
        +4464        Or: the new condition
        +4465    """
        +4466    return _combine(expressions, Or, dialect, **opts)
         
        @@ -42231,29 +43700,29 @@ If an Expression instance is passed, this is used as-is.
        -
        4413def not_(expression, dialect=None, **opts) -> Not:
        -4414    """
        -4415    Wrap a condition with a NOT operator.
        -4416
        -4417    Example:
        -4418        >>> not_("this_suit='black'").sql()
        -4419        "NOT this_suit = 'black'"
        -4420
        -4421    Args:
        -4422        expression (str | Expression): the SQL code strings to parse.
        -4423            If an Expression instance is passed, this is used as-is.
        -4424        dialect (str): the dialect used to parse the input expression.
        -4425        **opts: other options to use to parse the input expressions.
        -4426
        -4427    Returns:
        -4428        Not: the new condition
        -4429    """
        -4430    this = condition(
        -4431        expression,
        -4432        dialect=dialect,
        -4433        **opts,
        -4434    )
        -4435    return Not(this=_wrap_operator(this))
        +            
        4469def not_(expression, dialect=None, **opts) -> Not:
        +4470    """
        +4471    Wrap a condition with a NOT operator.
        +4472
        +4473    Example:
        +4474        >>> not_("this_suit='black'").sql()
        +4475        "NOT this_suit = 'black'"
        +4476
        +4477    Args:
        +4478        expression (str | Expression): the SQL code strings to parse.
        +4479            If an Expression instance is passed, this is used as-is.
        +4480        dialect (str): the dialect used to parse the input expression.
        +4481        **opts: other options to use to parse the input expressions.
        +4482
        +4483    Returns:
        +4484        Not: the new condition
        +4485    """
        +4486    this = condition(
        +4487        expression,
        +4488        dialect=dialect,
        +4489        **opts,
        +4490    )
        +4491    return Not(this=_wrap_operator(this))
         
        @@ -42298,8 +43767,8 @@ If an Expression instance is passed, this is used as-is.
        -
        4438def paren(expression) -> Paren:
        -4439    return Paren(this=expression)
        +            
        4494def paren(expression) -> Paren:
        +4495    return Paren(this=expression)
         
        @@ -42317,30 +43786,30 @@ If an Expression instance is passed, this is used as-is.
        -
        4455def to_identifier(name, quoted=None):
        -4456    """Builds an identifier.
        -4457
        -4458    Args:
        -4459        name: The name to turn into an identifier.
        -4460        quoted: Whether or not force quote the identifier.
        -4461
        -4462    Returns:
        -4463        The identifier ast node.
        -4464    """
        -4465
        -4466    if name is None:
        -4467        return None
        -4468
        -4469    if isinstance(name, Identifier):
        -4470        identifier = name
        -4471    elif isinstance(name, str):
        -4472        identifier = Identifier(
        -4473            this=name,
        -4474            quoted=not re.match(SAFE_IDENTIFIER_RE, name) if quoted is None else quoted,
        -4475        )
        -4476    else:
        -4477        raise ValueError(f"Name needs to be a string or an Identifier, got: {name.__class__}")
        -4478    return identifier
        +            
        4511def to_identifier(name, quoted=None):
        +4512    """Builds an identifier.
        +4513
        +4514    Args:
        +4515        name: The name to turn into an identifier.
        +4516        quoted: Whether or not force quote the identifier.
        +4517
        +4518    Returns:
        +4519        The identifier ast node.
        +4520    """
        +4521
        +4522    if name is None:
        +4523        return None
        +4524
        +4525    if isinstance(name, Identifier):
        +4526        identifier = name
        +4527    elif isinstance(name, str):
        +4528        identifier = Identifier(
        +4529            this=name,
        +4530            quoted=not SAFE_IDENTIFIER_RE.match(name) if quoted is None else quoted,
        +4531        )
        +4532    else:
        +4533        raise ValueError(f"Name needs to be a string or an Identifier, got: {name.__class__}")
        +4534    return identifier
         
        @@ -42373,23 +43842,23 @@ If an Expression instance is passed, this is used as-is.
        -
        4484def to_interval(interval: str | Literal) -> Interval:
        -4485    """Builds an interval expression from a string like '1 day' or '5 months'."""
        -4486    if isinstance(interval, Literal):
        -4487        if not interval.is_string:
        -4488            raise ValueError("Invalid interval string.")
        -4489
        -4490        interval = interval.this
        -4491
        -4492    interval_parts = INTERVAL_STRING_RE.match(interval)  # type: ignore
        -4493
        -4494    if not interval_parts:
        -4495        raise ValueError("Invalid interval string.")
        -4496
        -4497    return Interval(
        -4498        this=Literal.string(interval_parts.group(1)),
        -4499        unit=Var(this=interval_parts.group(2)),
        -4500    )
        +            
        4540def to_interval(interval: str | Literal) -> Interval:
        +4541    """Builds an interval expression from a string like '1 day' or '5 months'."""
        +4542    if isinstance(interval, Literal):
        +4543        if not interval.is_string:
        +4544            raise ValueError("Invalid interval string.")
        +4545
        +4546        interval = interval.this
        +4547
        +4548    interval_parts = INTERVAL_STRING_RE.match(interval)  # type: ignore
        +4549
        +4550    if not interval_parts:
        +4551        raise ValueError("Invalid interval string.")
        +4552
        +4553    return Interval(
        +4554        this=Literal.string(interval_parts.group(1)),
        +4555        unit=Var(this=interval_parts.group(2)),
        +4556    )
         
        @@ -42409,24 +43878,24 @@ If an Expression instance is passed, this is used as-is.
        -
        4513def to_table(sql_path: t.Optional[str | Table], **kwargs) -> t.Optional[Table]:
        -4514    """
        -4515    Create a table expression from a `[catalog].[schema].[table]` sql path. Catalog and schema are optional.
        -4516    If a table is passed in then that table is returned.
        -4517
        -4518    Args:
        -4519        sql_path: a `[catalog].[schema].[table]` string.
        -4520
        -4521    Returns:
        -4522        A table expression.
        -4523    """
        -4524    if sql_path is None or isinstance(sql_path, Table):
        -4525        return sql_path
        -4526    if not isinstance(sql_path, str):
        -4527        raise ValueError(f"Invalid type provided for a table: {type(sql_path)}")
        -4528
        -4529    catalog, db, table_name = (to_identifier(x) for x in split_num_words(sql_path, ".", 3))
        -4530    return Table(this=table_name, db=db, catalog=catalog, **kwargs)
        +            
        4569def to_table(sql_path: t.Optional[str | Table], **kwargs) -> t.Optional[Table]:
        +4570    """
        +4571    Create a table expression from a `[catalog].[schema].[table]` sql path. Catalog and schema are optional.
        +4572    If a table is passed in then that table is returned.
        +4573
        +4574    Args:
        +4575        sql_path: a `[catalog].[schema].[table]` string.
        +4576
        +4577    Returns:
        +4578        A table expression.
        +4579    """
        +4580    if sql_path is None or isinstance(sql_path, Table):
        +4581        return sql_path
        +4582    if not isinstance(sql_path, str):
        +4583        raise ValueError(f"Invalid type provided for a table: {type(sql_path)}")
        +4584
        +4585    catalog, db, table_name = (to_identifier(x) for x in split_num_words(sql_path, ".", 3))
        +4586    return Table(this=table_name, db=db, catalog=catalog, **kwargs)
         
        @@ -42459,23 +43928,22 @@ If a table is passed in then that table is returned.

        -
        4533def to_column(sql_path: str | Column, **kwargs) -> Column:
        -4534    """
        -4535    Create a column from a `[table].[column]` sql path. Schema is optional.
        -4536
        -4537    If a column is passed in then that column is returned.
        -4538
        -4539    Args:
        -4540        sql_path: `[table].[column]` string
        -4541    Returns:
        -4542        Table: A column expression
        -4543    """
        -4544    if sql_path is None or isinstance(sql_path, Column):
        -4545        return sql_path
        -4546    if not isinstance(sql_path, str):
        -4547        raise ValueError(f"Invalid type provided for column: {type(sql_path)}")
        -4548    table_name, column_name = (to_identifier(x) for x in split_num_words(sql_path, ".", 2))
        -4549    return Column(this=column_name, table=table_name, **kwargs)
        +            
        4589def to_column(sql_path: str | Column, **kwargs) -> Column:
        +4590    """
        +4591    Create a column from a `[table].[column]` sql path. Schema is optional.
        +4592
        +4593    If a column is passed in then that column is returned.
        +4594
        +4595    Args:
        +4596        sql_path: `[table].[column]` string
        +4597    Returns:
        +4598        Table: A column expression
        +4599    """
        +4600    if sql_path is None or isinstance(sql_path, Column):
        +4601        return sql_path
        +4602    if not isinstance(sql_path, str):
        +4603        raise ValueError(f"Invalid type provided for column: {type(sql_path)}")
        +4604    return column(*reversed(sql_path.split(".")), **kwargs)  # type: ignore
         
        @@ -42509,60 +43977,60 @@ If a table is passed in then that table is returned.

        -
        4552def alias_(
        -4553    expression: ExpOrStr,
        -4554    alias: str | Identifier,
        -4555    table: bool | t.Sequence[str | Identifier] = False,
        -4556    quoted: t.Optional[bool] = None,
        -4557    dialect: DialectType = None,
        -4558    **opts,
        -4559):
        -4560    """Create an Alias expression.
        -4561
        -4562    Example:
        -4563        >>> alias_('foo', 'bar').sql()
        -4564        'foo AS bar'
        -4565
        -4566        >>> alias_('(select 1, 2)', 'bar', table=['a', 'b']).sql()
        -4567        '(SELECT 1, 2) AS bar(a, b)'
        -4568
        -4569    Args:
        -4570        expression: the SQL code strings to parse.
        -4571            If an Expression instance is passed, this is used as-is.
        -4572        alias: the alias name to use. If the name has
        -4573            special characters it is quoted.
        -4574        table: Whether or not to create a table alias, can also be a list of columns.
        -4575        quoted: whether or not to quote the alias
        -4576        dialect: the dialect used to parse the input expression.
        -4577        **opts: other options to use to parse the input expressions.
        -4578
        -4579    Returns:
        -4580        Alias: the aliased expression
        -4581    """
        -4582    exp = maybe_parse(expression, dialect=dialect, **opts)
        -4583    alias = to_identifier(alias, quoted=quoted)
        -4584
        -4585    if table:
        -4586        table_alias = TableAlias(this=alias)
        -4587        exp.set("alias", table_alias)
        -4588
        -4589        if not isinstance(table, bool):
        -4590            for column in table:
        -4591                table_alias.append("columns", to_identifier(column, quoted=quoted))
        -4592
        -4593        return exp
        -4594
        -4595    # We don't set the "alias" arg for Window expressions, because that would add an IDENTIFIER node in
        -4596    # the AST, representing a "named_window" [1] construct (eg. bigquery). What we want is an ALIAS node
        -4597    # for the complete Window expression.
        -4598    #
        -4599    # [1]: https://cloud.google.com/bigquery/docs/reference/standard-sql/window-function-calls
        -4600
        -4601    if "alias" in exp.arg_types and not isinstance(exp, Window):
        -4602        exp = exp.copy()
        -4603        exp.set("alias", alias)
        -4604        return exp
        -4605    return Alias(this=exp, alias=alias)
        +            
        4607def alias_(
        +4608    expression: ExpOrStr,
        +4609    alias: str | Identifier,
        +4610    table: bool | t.Sequence[str | Identifier] = False,
        +4611    quoted: t.Optional[bool] = None,
        +4612    dialect: DialectType = None,
        +4613    **opts,
        +4614):
        +4615    """Create an Alias expression.
        +4616
        +4617    Example:
        +4618        >>> alias_('foo', 'bar').sql()
        +4619        'foo AS bar'
        +4620
        +4621        >>> alias_('(select 1, 2)', 'bar', table=['a', 'b']).sql()
        +4622        '(SELECT 1, 2) AS bar(a, b)'
        +4623
        +4624    Args:
        +4625        expression: the SQL code strings to parse.
        +4626            If an Expression instance is passed, this is used as-is.
        +4627        alias: the alias name to use. If the name has
        +4628            special characters it is quoted.
        +4629        table: Whether or not to create a table alias, can also be a list of columns.
        +4630        quoted: whether or not to quote the alias
        +4631        dialect: the dialect used to parse the input expression.
        +4632        **opts: other options to use to parse the input expressions.
        +4633
        +4634    Returns:
        +4635        Alias: the aliased expression
        +4636    """
        +4637    exp = maybe_parse(expression, dialect=dialect, **opts)
        +4638    alias = to_identifier(alias, quoted=quoted)
        +4639
        +4640    if table:
        +4641        table_alias = TableAlias(this=alias)
        +4642        exp.set("alias", table_alias)
        +4643
        +4644        if not isinstance(table, bool):
        +4645            for column in table:
        +4646                table_alias.append("columns", to_identifier(column, quoted=quoted))
        +4647
        +4648        return exp
        +4649
        +4650    # We don't set the "alias" arg for Window expressions, because that would add an IDENTIFIER node in
        +4651    # the AST, representing a "named_window" [1] construct (eg. bigquery). What we want is an ALIAS node
        +4652    # for the complete Window expression.
        +4653    #
        +4654    # [1]: https://cloud.google.com/bigquery/docs/reference/standard-sql/window-function-calls
        +4655
        +4656    if "alias" in exp.arg_types and not isinstance(exp, Window):
        +4657        exp = exp.copy()
        +4658        exp.set("alias", alias)
        +4659        return exp
        +4660    return Alias(this=exp, alias=alias)
         
        @@ -42617,27 +44085,27 @@ special characters it is quoted.
        -
        4608def subquery(expression, alias=None, dialect=None, **opts):
        -4609    """
        -4610    Build a subquery expression.
        -4611
        -4612    Example:
        -4613        >>> subquery('select x from tbl', 'bar').select('x').sql()
        -4614        'SELECT x FROM (SELECT x FROM tbl) AS bar'
        -4615
        -4616    Args:
        -4617        expression (str | Expression): the SQL code strings to parse.
        -4618            If an Expression instance is passed, this is used as-is.
        -4619        alias (str | Expression): the alias name to use.
        -4620        dialect (str): the dialect used to parse the input expression.
        -4621        **opts: other options to use to parse the input expressions.
        -4622
        -4623    Returns:
        -4624        Select: a new select with the subquery expression included
        -4625    """
        -4626
        -4627    expression = maybe_parse(expression, dialect=dialect, **opts).subquery(alias)
        -4628    return Select().from_(expression, dialect=dialect, **opts)
        +            
        4663def subquery(expression, alias=None, dialect=None, **opts):
        +4664    """
        +4665    Build a subquery expression.
        +4666
        +4667    Example:
        +4668        >>> subquery('select x from tbl', 'bar').select('x').sql()
        +4669        'SELECT x FROM (SELECT x FROM tbl) AS bar'
        +4670
        +4671    Args:
        +4672        expression (str | Expression): the SQL code strings to parse.
        +4673            If an Expression instance is passed, this is used as-is.
        +4674        alias (str | Expression): the alias name to use.
        +4675        dialect (str): the dialect used to parse the input expression.
        +4676        **opts: other options to use to parse the input expressions.
        +4677
        +4678    Returns:
        +4679        Select: a new select with the subquery expression included
        +4680    """
        +4681
        +4682    expression = maybe_parse(expression, dialect=dialect, **opts).subquery(alias)
        +4683    return Select().from_(expression, dialect=dialect, **opts)
         
        @@ -42677,34 +44145,37 @@ If an Expression instance is passed, this is used as-is.
        def - column( col: str | sqlglot.expressions.Identifier, table: Union[str, sqlglot.expressions.Identifier, NoneType] = None, schema: Union[str, sqlglot.expressions.Identifier, NoneType] = None, quoted: Optional[bool] = None) -> sqlglot.expressions.Column: + column( col: str | sqlglot.expressions.Identifier, table: Union[str, sqlglot.expressions.Identifier, NoneType] = None, db: Union[str, sqlglot.expressions.Identifier, NoneType] = None, catalog: Union[str, sqlglot.expressions.Identifier, NoneType] = None, quoted: Optional[bool] = None) -> sqlglot.expressions.Column:
        -
        4631def column(
        -4632    col: str | Identifier,
        -4633    table: t.Optional[str | Identifier] = None,
        -4634    schema: t.Optional[str | Identifier] = None,
        -4635    quoted: t.Optional[bool] = None,
        -4636) -> Column:
        -4637    """
        -4638    Build a Column.
        -4639
        -4640    Args:
        -4641        col: column name
        -4642        table: table name
        -4643        schema: schema name
        -4644        quoted: whether or not to force quote each part
        -4645    Returns:
        -4646        Column: column instance
        -4647    """
        -4648    return Column(
        -4649        this=to_identifier(col, quoted=quoted),
        -4650        table=to_identifier(table, quoted=quoted),
        -4651        schema=to_identifier(schema, quoted=quoted),
        -4652    )
        +            
        4686def column(
        +4687    col: str | Identifier,
        +4688    table: t.Optional[str | Identifier] = None,
        +4689    db: t.Optional[str | Identifier] = None,
        +4690    catalog: t.Optional[str | Identifier] = None,
        +4691    quoted: t.Optional[bool] = None,
        +4692) -> Column:
        +4693    """
        +4694    Build a Column.
        +4695
        +4696    Args:
        +4697        col: column name
        +4698        table: table name
        +4699        db: db name
        +4700        catalog: catalog name
        +4701        quoted: whether or not to force quote each part
        +4702    Returns:
        +4703        Column: column instance
        +4704    """
        +4705    return Column(
        +4706        this=to_identifier(col, quoted=quoted),
        +4707        table=to_identifier(table, quoted=quoted),
        +4708        db=to_identifier(db, quoted=quoted),
        +4709        catalog=to_identifier(catalog, quoted=quoted),
        +4710    )
         
        @@ -42715,7 +44186,8 @@ If an Expression instance is passed, this is used as-is.
        • col: column name
        • table: table name
        • -
        • schema: schema name
        • +
        • db: db name
        • +
        • catalog: catalog name
        • quoted: whether or not to force quote each part
        @@ -42739,22 +44211,22 @@ If an Expression instance is passed, this is used as-is.
        -
        4655def cast(expression: ExpOrStr, to: str | DataType | DataType.Type, **opts) -> Cast:
        -4656    """Cast an expression to a data type.
        -4657
        -4658    Example:
        -4659        >>> cast('x + 1', 'int').sql()
        -4660        'CAST(x + 1 AS INT)'
        -4661
        -4662    Args:
        -4663        expression: The expression to cast.
        -4664        to: The datatype to cast to.
        -4665
        -4666    Returns:
        -4667        A cast node.
        -4668    """
        -4669    expression = maybe_parse(expression, **opts)
        -4670    return Cast(this=expression, to=DataType.build(to, **opts))
        +            
        4713def cast(expression: ExpOrStr, to: str | DataType | DataType.Type, **opts) -> Cast:
        +4714    """Cast an expression to a data type.
        +4715
        +4716    Example:
        +4717        >>> cast('x + 1', 'int').sql()
        +4718        'CAST(x + 1 AS INT)'
        +4719
        +4720    Args:
        +4721        expression: The expression to cast.
        +4722        to: The datatype to cast to.
        +4723
        +4724    Returns:
        +4725        A cast node.
        +4726    """
        +4727    expression = maybe_parse(expression, **opts)
        +4728    return Cast(this=expression, to=DataType.build(to, **opts))
         
        @@ -42797,23 +44269,23 @@ If an Expression instance is passed, this is used as-is.
        -
        4673def table_(table, db=None, catalog=None, quoted=None, alias=None) -> Table:
        -4674    """Build a Table.
        -4675
        -4676    Args:
        -4677        table (str | Expression): column name
        -4678        db (str | Expression): db name
        -4679        catalog (str | Expression): catalog name
        -4680
        -4681    Returns:
        -4682        Table: table instance
        -4683    """
        -4684    return Table(
        -4685        this=to_identifier(table, quoted=quoted),
        -4686        db=to_identifier(db, quoted=quoted),
        -4687        catalog=to_identifier(catalog, quoted=quoted),
        -4688        alias=TableAlias(this=to_identifier(alias)) if alias else None,
        -4689    )
        +            
        4731def table_(table, db=None, catalog=None, quoted=None, alias=None) -> Table:
        +4732    """Build a Table.
        +4733
        +4734    Args:
        +4735        table (str | Expression): column name
        +4736        db (str | Expression): db name
        +4737        catalog (str | Expression): catalog name
        +4738
        +4739    Returns:
        +4740        Table: table instance
        +4741    """
        +4742    return Table(
        +4743        this=to_identifier(table, quoted=quoted),
        +4744        db=to_identifier(db, quoted=quoted),
        +4745        catalog=to_identifier(catalog, quoted=quoted),
        +4746        alias=TableAlias(this=to_identifier(alias)) if alias else None,
        +4747    )
         
        @@ -42847,46 +44319,46 @@ If an Expression instance is passed, this is used as-is.
        -
        4692def values(
        -4693    values: t.Iterable[t.Tuple[t.Any, ...]],
        -4694    alias: t.Optional[str] = None,
        -4695    columns: t.Optional[t.Iterable[str] | t.Dict[str, DataType]] = None,
        -4696) -> Values:
        -4697    """Build VALUES statement.
        -4698
        -4699    Example:
        -4700        >>> values([(1, '2')]).sql()
        -4701        "VALUES (1, '2')"
        -4702
        -4703    Args:
        -4704        values: values statements that will be converted to SQL
        -4705        alias: optional alias
        -4706        columns: Optional list of ordered column names or ordered dictionary of column names to types.
        -4707         If either are provided then an alias is also required.
        -4708         If a dictionary is provided then the first column of the values will be casted to the expected type
        -4709         in order to help with type inference.
        -4710
        -4711    Returns:
        -4712        Values: the Values expression object
        -4713    """
        -4714    if columns and not alias:
        -4715        raise ValueError("Alias is required when providing columns")
        -4716    table_alias = (
        -4717        TableAlias(this=to_identifier(alias), columns=[to_identifier(x) for x in columns])
        -4718        if columns
        -4719        else TableAlias(this=to_identifier(alias) if alias else None)
        -4720    )
        -4721    expressions = [convert(tup) for tup in values]
        -4722    if columns and isinstance(columns, dict):
        -4723        types = list(columns.values())
        -4724        expressions[0].set(
        -4725            "expressions",
        -4726            [cast(x, types[i]) for i, x in enumerate(expressions[0].expressions)],
        -4727        )
        -4728    return Values(
        -4729        expressions=expressions,
        -4730        alias=table_alias,
        -4731    )
        +            
        4750def values(
        +4751    values: t.Iterable[t.Tuple[t.Any, ...]],
        +4752    alias: t.Optional[str] = None,
        +4753    columns: t.Optional[t.Iterable[str] | t.Dict[str, DataType]] = None,
        +4754) -> Values:
        +4755    """Build VALUES statement.
        +4756
        +4757    Example:
        +4758        >>> values([(1, '2')]).sql()
        +4759        "VALUES (1, '2')"
        +4760
        +4761    Args:
        +4762        values: values statements that will be converted to SQL
        +4763        alias: optional alias
        +4764        columns: Optional list of ordered column names or ordered dictionary of column names to types.
        +4765         If either are provided then an alias is also required.
        +4766         If a dictionary is provided then the first column of the values will be casted to the expected type
        +4767         in order to help with type inference.
        +4768
        +4769    Returns:
        +4770        Values: the Values expression object
        +4771    """
        +4772    if columns and not alias:
        +4773        raise ValueError("Alias is required when providing columns")
        +4774    table_alias = (
        +4775        TableAlias(this=to_identifier(alias), columns=[to_identifier(x) for x in columns])
        +4776        if columns
        +4777        else TableAlias(this=to_identifier(alias) if alias else None)
        +4778    )
        +4779    expressions = [convert(tup) for tup in values]
        +4780    if columns and isinstance(columns, dict):
        +4781        types = list(columns.values())
        +4782        expressions[0].set(
        +4783            "expressions",
        +4784            [cast(x, types[i]) for i, x in enumerate(expressions[0].expressions)],
        +4785        )
        +4786    return Values(
        +4787        expressions=expressions,
        +4788        alias=table_alias,
        +4789    )
         
        @@ -42933,28 +44405,28 @@ in order to help with type inference.
        -
        4734def var(name: t.Optional[ExpOrStr]) -> Var:
        -4735    """Build a SQL variable.
        -4736
        -4737    Example:
        -4738        >>> repr(var('x'))
        -4739        '(VAR this: x)'
        -4740
        -4741        >>> repr(var(column('x', table='y')))
        -4742        '(VAR this: x)'
        -4743
        -4744    Args:
        -4745        name: The name of the var or an expression who's name will become the var.
        -4746
        -4747    Returns:
        -4748        The new variable node.
        -4749    """
        -4750    if not name:
        -4751        raise ValueError("Cannot convert empty name into var.")
        -4752
        -4753    if isinstance(name, Expression):
        -4754        name = name.name
        -4755    return Var(this=name)
        +            
        4792def var(name: t.Optional[ExpOrStr]) -> Var:
        +4793    """Build a SQL variable.
        +4794
        +4795    Example:
        +4796        >>> repr(var('x'))
        +4797        '(VAR this: x)'
        +4798
        +4799        >>> repr(var(column('x', table='y')))
        +4800        '(VAR this: x)'
        +4801
        +4802    Args:
        +4803        name: The name of the var or an expression who's name will become the var.
        +4804
        +4805    Returns:
        +4806        The new variable node.
        +4807    """
        +4808    if not name:
        +4809        raise ValueError("Cannot convert empty name into var.")
        +4810
        +4811    if isinstance(name, Expression):
        +4812        name = name.name
        +4813    return Var(this=name)
         
        @@ -43002,24 +44474,24 @@ in order to help with type inference.
        -
        4758def rename_table(old_name: str | Table, new_name: str | Table) -> AlterTable:
        -4759    """Build ALTER TABLE... RENAME... expression
        -4760
        -4761    Args:
        -4762        old_name: The old name of the table
        -4763        new_name: The new name of the table
        -4764
        -4765    Returns:
        -4766        Alter table expression
        -4767    """
        -4768    old_table = to_table(old_name)
        -4769    new_table = to_table(new_name)
        -4770    return AlterTable(
        -4771        this=old_table,
        -4772        actions=[
        -4773            RenameTable(this=new_table),
        -4774        ],
        -4775    )
        +            
        4816def rename_table(old_name: str | Table, new_name: str | Table) -> AlterTable:
        +4817    """Build ALTER TABLE... RENAME... expression
        +4818
        +4819    Args:
        +4820        old_name: The old name of the table
        +4821        new_name: The new name of the table
        +4822
        +4823    Returns:
        +4824        Alter table expression
        +4825    """
        +4826    old_table = to_table(old_name)
        +4827    new_table = to_table(new_name)
        +4828    return AlterTable(
        +4829        this=old_table,
        +4830        actions=[
        +4831            RenameTable(this=new_table),
        +4832        ],
        +4833    )
         
        @@ -43052,47 +44524,47 @@ in order to help with type inference.
        -
        4778def convert(value) -> Expression:
        -4779    """Convert a python value into an expression object.
        -4780
        -4781    Raises an error if a conversion is not possible.
        -4782
        -4783    Args:
        -4784        value (Any): a python object
        -4785
        -4786    Returns:
        -4787        Expression: the equivalent expression object
        -4788    """
        -4789    if isinstance(value, Expression):
        -4790        return value
        -4791    if value is None:
        -4792        return NULL
        -4793    if isinstance(value, bool):
        -4794        return Boolean(this=value)
        -4795    if isinstance(value, str):
        -4796        return Literal.string(value)
        -4797    if isinstance(value, float) and math.isnan(value):
        -4798        return NULL
        -4799    if isinstance(value, numbers.Number):
        -4800        return Literal.number(value)
        -4801    if isinstance(value, tuple):
        -4802        return Tuple(expressions=[convert(v) for v in value])
        -4803    if isinstance(value, list):
        -4804        return Array(expressions=[convert(v) for v in value])
        -4805    if isinstance(value, dict):
        -4806        return Map(
        -4807            keys=[convert(k) for k in value],
        -4808            values=[convert(v) for v in value.values()],
        -4809        )
        -4810    if isinstance(value, datetime.datetime):
        -4811        datetime_literal = Literal.string(
        -4812            (value if value.tzinfo else value.replace(tzinfo=datetime.timezone.utc)).isoformat()
        -4813        )
        -4814        return TimeStrToTime(this=datetime_literal)
        -4815    if isinstance(value, datetime.date):
        -4816        date_literal = Literal.string(value.strftime("%Y-%m-%d"))
        -4817        return DateStrToDate(this=date_literal)
        -4818    raise ValueError(f"Cannot convert {value}")
        +            
        4836def convert(value) -> Expression:
        +4837    """Convert a python value into an expression object.
        +4838
        +4839    Raises an error if a conversion is not possible.
        +4840
        +4841    Args:
        +4842        value (Any): a python object
        +4843
        +4844    Returns:
        +4845        Expression: the equivalent expression object
        +4846    """
        +4847    if isinstance(value, Expression):
        +4848        return value
        +4849    if value is None:
        +4850        return NULL
        +4851    if isinstance(value, bool):
        +4852        return Boolean(this=value)
        +4853    if isinstance(value, str):
        +4854        return Literal.string(value)
        +4855    if isinstance(value, float) and math.isnan(value):
        +4856        return NULL
        +4857    if isinstance(value, numbers.Number):
        +4858        return Literal.number(value)
        +4859    if isinstance(value, tuple):
        +4860        return Tuple(expressions=[convert(v) for v in value])
        +4861    if isinstance(value, list):
        +4862        return Array(expressions=[convert(v) for v in value])
        +4863    if isinstance(value, dict):
        +4864        return Map(
        +4865            keys=[convert(k) for k in value],
        +4866            values=[convert(v) for v in value.values()],
        +4867        )
        +4868    if isinstance(value, datetime.datetime):
        +4869        datetime_literal = Literal.string(
        +4870            (value if value.tzinfo else value.replace(tzinfo=datetime.timezone.utc)).isoformat()
        +4871        )
        +4872        return TimeStrToTime(this=datetime_literal)
        +4873    if isinstance(value, datetime.date):
        +4874        date_literal = Literal.string(value.strftime("%Y-%m-%d"))
        +4875        return DateStrToDate(this=date_literal)
        +4876    raise ValueError(f"Cannot convert {value}")
         
        @@ -43126,26 +44598,26 @@ in order to help with type inference.
        -
        4821def replace_children(expression, fun, *args, **kwargs):
        -4822    """
        -4823    Replace children of an expression with the result of a lambda fun(child) -> exp.
        -4824    """
        -4825    for k, v in expression.args.items():
        -4826        is_list_arg = isinstance(v, list)
        -4827
        -4828        child_nodes = v if is_list_arg else [v]
        -4829        new_child_nodes = []
        -4830
        -4831        for cn in child_nodes:
        -4832            if isinstance(cn, Expression):
        -4833                for child_node in ensure_collection(fun(cn, *args, **kwargs)):
        -4834                    new_child_nodes.append(child_node)
        -4835                    child_node.parent = expression
        -4836                    child_node.arg_key = k
        -4837            else:
        -4838                new_child_nodes.append(cn)
        -4839
        -4840        expression.args[k] = new_child_nodes if is_list_arg else seq_get(new_child_nodes, 0)
        +            
        4879def replace_children(expression, fun, *args, **kwargs):
        +4880    """
        +4881    Replace children of an expression with the result of a lambda fun(child) -> exp.
        +4882    """
        +4883    for k, v in expression.args.items():
        +4884        is_list_arg = type(v) is list
        +4885
        +4886        child_nodes = v if is_list_arg else [v]
        +4887        new_child_nodes = []
        +4888
        +4889        for cn in child_nodes:
        +4890            if isinstance(cn, Expression):
        +4891                for child_node in ensure_collection(fun(cn, *args, **kwargs)):
        +4892                    new_child_nodes.append(child_node)
        +4893                    child_node.parent = expression
        +4894                    child_node.arg_key = k
        +4895            else:
        +4896                new_child_nodes.append(cn)
        +4897
        +4898        expression.args[k] = new_child_nodes if is_list_arg else seq_get(new_child_nodes, 0)
         
        @@ -43165,22 +44637,22 @@ in order to help with type inference.
        -
        4843def column_table_names(expression):
        -4844    """
        -4845    Return all table names referenced through columns in an expression.
        -4846
        -4847    Example:
        -4848        >>> import sqlglot
        -4849        >>> column_table_names(sqlglot.parse_one("a.b AND c.d AND c.e"))
        -4850        ['c', 'a']
        -4851
        -4852    Args:
        -4853        expression (sqlglot.Expression): expression to find table names
        -4854
        -4855    Returns:
        -4856        list: A list of unique names
        -4857    """
        -4858    return list(dict.fromkeys(column.table for column in expression.find_all(Column)))
        +            
        4901def column_table_names(expression):
        +4902    """
        +4903    Return all table names referenced through columns in an expression.
        +4904
        +4905    Example:
        +4906        >>> import sqlglot
        +4907        >>> column_table_names(sqlglot.parse_one("a.b AND c.d AND c.e"))
        +4908        ['c', 'a']
        +4909
        +4910    Args:
        +4911        expression (sqlglot.Expression): expression to find table names
        +4912
        +4913    Returns:
        +4914        list: A list of unique names
        +4915    """
        +4916    return list(dict.fromkeys(column.table for column in expression.find_all(Column)))
         
        @@ -43223,35 +44695,35 @@ in order to help with type inference.
        -
        4861def table_name(table) -> str:
        -4862    """Get the full name of a table as a string.
        -4863
        -4864    Args:
        -4865        table (exp.Table | str): table expression node or string.
        -4866
        -4867    Examples:
        -4868        >>> from sqlglot import exp, parse_one
        -4869        >>> table_name(parse_one("select * from a.b.c").find(exp.Table))
        -4870        'a.b.c'
        -4871
        -4872    Returns:
        -4873        The table name.
        -4874    """
        -4875
        -4876    table = maybe_parse(table, into=Table)
        -4877
        -4878    if not table:
        -4879        raise ValueError(f"Cannot parse {table}")
        -4880
        -4881    return ".".join(
        -4882        part
        -4883        for part in (
        -4884            table.text("catalog"),
        -4885            table.text("db"),
        -4886            table.name,
        -4887        )
        -4888        if part
        -4889    )
        +            
        4919def table_name(table) -> str:
        +4920    """Get the full name of a table as a string.
        +4921
        +4922    Args:
        +4923        table (exp.Table | str): table expression node or string.
        +4924
        +4925    Examples:
        +4926        >>> from sqlglot import exp, parse_one
        +4927        >>> table_name(parse_one("select * from a.b.c").find(exp.Table))
        +4928        'a.b.c'
        +4929
        +4930    Returns:
        +4931        The table name.
        +4932    """
        +4933
        +4934    table = maybe_parse(table, into=Table)
        +4935
        +4936    if not table:
        +4937        raise ValueError(f"Cannot parse {table}")
        +4938
        +4939    return ".".join(
        +4940        part
        +4941        for part in (
        +4942            table.text("catalog"),
        +4943            table.text("db"),
        +4944            table.name,
        +4945        )
        +4946        if part
        +4947    )
         
        @@ -43294,33 +44766,33 @@ in order to help with type inference.
        -
        4892def replace_tables(expression, mapping):
        -4893    """Replace all tables in expression according to the mapping.
        -4894
        -4895    Args:
        -4896        expression (sqlglot.Expression): expression node to be transformed and replaced.
        -4897        mapping (Dict[str, str]): mapping of table names.
        -4898
        -4899    Examples:
        -4900        >>> from sqlglot import exp, parse_one
        -4901        >>> replace_tables(parse_one("select * from a.b"), {"a.b": "c"}).sql()
        -4902        'SELECT * FROM c'
        -4903
        -4904    Returns:
        -4905        The mapped expression.
        -4906    """
        -4907
        -4908    def _replace_tables(node):
        -4909        if isinstance(node, Table):
        -4910            new_name = mapping.get(table_name(node))
        -4911            if new_name:
        -4912                return to_table(
        -4913                    new_name,
        -4914                    **{k: v for k, v in node.args.items() if k not in ("this", "db", "catalog")},
        -4915                )
        -4916        return node
        -4917
        -4918    return expression.transform(_replace_tables)
        +            
        4950def replace_tables(expression, mapping):
        +4951    """Replace all tables in expression according to the mapping.
        +4952
        +4953    Args:
        +4954        expression (sqlglot.Expression): expression node to be transformed and replaced.
        +4955        mapping (Dict[str, str]): mapping of table names.
        +4956
        +4957    Examples:
        +4958        >>> from sqlglot import exp, parse_one
        +4959        >>> replace_tables(parse_one("select * from a.b"), {"a.b": "c"}).sql()
        +4960        'SELECT * FROM c'
        +4961
        +4962    Returns:
        +4963        The mapped expression.
        +4964    """
        +4965
        +4966    def _replace_tables(node):
        +4967        if isinstance(node, Table):
        +4968            new_name = mapping.get(table_name(node))
        +4969            if new_name:
        +4970                return to_table(
        +4971                    new_name,
        +4972                    **{k: v for k, v in node.args.items() if k not in ("this", "db", "catalog")},
        +4973                )
        +4974        return node
        +4975
        +4976    return expression.transform(_replace_tables)
         
        @@ -43364,39 +44836,39 @@ in order to help with type inference.
        -
        4921def replace_placeholders(expression, *args, **kwargs):
        -4922    """Replace placeholders in an expression.
        -4923
        -4924    Args:
        -4925        expression (sqlglot.Expression): expression node to be transformed and replaced.
        -4926        args: positional names that will substitute unnamed placeholders in the given order.
        -4927        kwargs: keyword arguments that will substitute named placeholders.
        -4928
        -4929    Examples:
        -4930        >>> from sqlglot import exp, parse_one
        -4931        >>> replace_placeholders(
        -4932        ...     parse_one("select * from :tbl where ? = ?"), "a", "b", tbl="foo"
        -4933        ... ).sql()
        -4934        'SELECT * FROM foo WHERE a = b'
        -4935
        -4936    Returns:
        -4937        The mapped expression.
        -4938    """
        -4939
        -4940    def _replace_placeholders(node, args, **kwargs):
        -4941        if isinstance(node, Placeholder):
        -4942            if node.name:
        -4943                new_name = kwargs.get(node.name)
        -4944                if new_name:
        -4945                    return to_identifier(new_name)
        -4946            else:
        -4947                try:
        -4948                    return to_identifier(next(args))
        -4949                except StopIteration:
        -4950                    pass
        -4951        return node
        -4952
        -4953    return expression.transform(_replace_placeholders, iter(args), **kwargs)
        +            
        4979def replace_placeholders(expression, *args, **kwargs):
        +4980    """Replace placeholders in an expression.
        +4981
        +4982    Args:
        +4983        expression (sqlglot.Expression): expression node to be transformed and replaced.
        +4984        args: positional names that will substitute unnamed placeholders in the given order.
        +4985        kwargs: keyword arguments that will substitute named placeholders.
        +4986
        +4987    Examples:
        +4988        >>> from sqlglot import exp, parse_one
        +4989        >>> replace_placeholders(
        +4990        ...     parse_one("select * from :tbl where ? = ?"), "a", "b", tbl="foo"
        +4991        ... ).sql()
        +4992        'SELECT * FROM foo WHERE a = b'
        +4993
        +4994    Returns:
        +4995        The mapped expression.
        +4996    """
        +4997
        +4998    def _replace_placeholders(node, args, **kwargs):
        +4999        if isinstance(node, Placeholder):
        +5000            if node.name:
        +5001                new_name = kwargs.get(node.name)
        +5002                if new_name:
        +5003                    return to_identifier(new_name)
        +5004            else:
        +5005                try:
        +5006                    return to_identifier(next(args))
        +5007                except StopIteration:
        +5008                    pass
        +5009        return node
        +5010
        +5011    return expression.transform(_replace_placeholders, iter(args), **kwargs)
         
        @@ -43443,34 +44915,34 @@ in order to help with type inference.
        -
        4956def expand(expression: Expression, sources: t.Dict[str, Subqueryable], copy=True) -> Expression:
        -4957    """Transforms an expression by expanding all referenced sources into subqueries.
        -4958
        -4959    Examples:
        -4960        >>> from sqlglot import parse_one
        -4961        >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y")}).sql()
        -4962        'SELECT * FROM (SELECT * FROM y) AS z /* source: x */'
        -4963
        -4964    Args:
        -4965        expression: The expression to expand.
        -4966        sources: A dictionary of name to Subqueryables.
        -4967        copy: Whether or not to copy the expression during transformation. Defaults to True.
        -4968
        -4969    Returns:
        -4970        The transformed expression.
        -4971    """
        -4972
        -4973    def _expand(node: Expression):
        -4974        if isinstance(node, Table):
        -4975            name = table_name(node)
        -4976            source = sources.get(name)
        -4977            if source:
        -4978                subquery = source.subquery(node.alias or name)
        -4979                subquery.comments = [f"source: {name}"]
        -4980                return subquery
        -4981        return node
        -4982
        -4983    return expression.transform(_expand, copy=copy)
        +            
        5014def expand(expression: Expression, sources: t.Dict[str, Subqueryable], copy=True) -> Expression:
        +5015    """Transforms an expression by expanding all referenced sources into subqueries.
        +5016
        +5017    Examples:
        +5018        >>> from sqlglot import parse_one
        +5019        >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y")}).sql()
        +5020        'SELECT * FROM (SELECT * FROM y) AS z /* source: x */'
        +5021
        +5022    Args:
        +5023        expression: The expression to expand.
        +5024        sources: A dictionary of name to Subqueryables.
        +5025        copy: Whether or not to copy the expression during transformation. Defaults to True.
        +5026
        +5027    Returns:
        +5028        The transformed expression.
        +5029    """
        +5030
        +5031    def _expand(node: Expression):
        +5032        if isinstance(node, Table):
        +5033            name = table_name(node)
        +5034            source = sources.get(name)
        +5035            if source:
        +5036                subquery = source.subquery(node.alias or name)
        +5037                subquery.comments = [f"source: {name}"]
        +5038                return subquery
        +5039        return node
        +5040
        +5041    return expression.transform(_expand, copy=copy)
         
        @@ -43515,51 +44987,51 @@ in order to help with type inference.
        -
        4986def func(name: str, *args, dialect: DialectType = None, **kwargs) -> Func:
        -4987    """
        -4988    Returns a Func expression.
        -4989
        -4990    Examples:
        -4991        >>> func("abs", 5).sql()
        -4992        'ABS(5)'
        -4993
        -4994        >>> func("cast", this=5, to=DataType.build("DOUBLE")).sql()
        -4995        'CAST(5 AS DOUBLE)'
        -4996
        -4997    Args:
        -4998        name: the name of the function to build.
        -4999        args: the args used to instantiate the function of interest.
        -5000        dialect: the source dialect.
        -5001        kwargs: the kwargs used to instantiate the function of interest.
        -5002
        -5003    Note:
        -5004        The arguments `args` and `kwargs` are mutually exclusive.
        -5005
        -5006    Returns:
        -5007        An instance of the function of interest, or an anonymous function, if `name` doesn't
        -5008        correspond to an existing `sqlglot.expressions.Func` class.
        -5009    """
        -5010    if args and kwargs:
        -5011        raise ValueError("Can't use both args and kwargs to instantiate a function.")
        -5012
        -5013    from sqlglot.dialects.dialect import Dialect
        -5014
        -5015    converted = [convert(arg) for arg in args]
        -5016    kwargs = {key: convert(value) for key, value in kwargs.items()}
        -5017
        -5018    parser = Dialect.get_or_raise(dialect)().parser()
        -5019    from_args_list = parser.FUNCTIONS.get(name.upper())
        -5020
        -5021    if from_args_list:
        -5022        function = from_args_list(converted) if converted else from_args_list.__self__(**kwargs)  # type: ignore
        -5023    else:
        -5024        kwargs = kwargs or {"expressions": converted}
        -5025        function = Anonymous(this=name, **kwargs)
        -5026
        -5027    for error_message in function.error_messages(converted):
        -5028        raise ValueError(error_message)
        -5029
        -5030    return function
        +            
        5044def func(name: str, *args, dialect: DialectType = None, **kwargs) -> Func:
        +5045    """
        +5046    Returns a Func expression.
        +5047
        +5048    Examples:
        +5049        >>> func("abs", 5).sql()
        +5050        'ABS(5)'
        +5051
        +5052        >>> func("cast", this=5, to=DataType.build("DOUBLE")).sql()
        +5053        'CAST(5 AS DOUBLE)'
        +5054
        +5055    Args:
        +5056        name: the name of the function to build.
        +5057        args: the args used to instantiate the function of interest.
        +5058        dialect: the source dialect.
        +5059        kwargs: the kwargs used to instantiate the function of interest.
        +5060
        +5061    Note:
        +5062        The arguments `args` and `kwargs` are mutually exclusive.
        +5063
        +5064    Returns:
        +5065        An instance of the function of interest, or an anonymous function, if `name` doesn't
        +5066        correspond to an existing `sqlglot.expressions.Func` class.
        +5067    """
        +5068    if args and kwargs:
        +5069        raise ValueError("Can't use both args and kwargs to instantiate a function.")
        +5070
        +5071    from sqlglot.dialects.dialect import Dialect
        +5072
        +5073    converted = [convert(arg) for arg in args]
        +5074    kwargs = {key: convert(value) for key, value in kwargs.items()}
        +5075
        +5076    parser = Dialect.get_or_raise(dialect)().parser()
        +5077    from_args_list = parser.FUNCTIONS.get(name.upper())
        +5078
        +5079    if from_args_list:
        +5080        function = from_args_list(converted) if converted else from_args_list.__self__(**kwargs)  # type: ignore
        +5081    else:
        +5082        kwargs = kwargs or {"expressions": converted}
        +5083        function = Anonymous(this=name, **kwargs)
        +5084
        +5085    for error_message in function.error_messages(converted):
        +5086        raise ValueError(error_message)
        +5087
        +5088    return function
         
        @@ -43617,11 +45089,11 @@ in order to help with type inference.
        -
        5033def true():
        -5034    """
        -5035    Returns a true Boolean expression.
        -5036    """
        -5037    return Boolean(this=True)
        +            
        5091def true():
        +5092    """
        +5093    Returns a true Boolean expression.
        +5094    """
        +5095    return Boolean(this=True)
         
        @@ -43641,11 +45113,11 @@ in order to help with type inference.
        -
        5040def false():
        -5041    """
        -5042    Returns a false Boolean expression.
        -5043    """
        -5044    return Boolean(this=False)
        +            
        5098def false():
        +5099    """
        +5100    Returns a false Boolean expression.
        +5101    """
        +5102    return Boolean(this=False)
         
        @@ -43665,11 +45137,11 @@ in order to help with type inference.
        -
        5047def null():
        -5048    """
        -5049    Returns a Null expression.
        -5050    """
        -5051    return Null()
        +            
        5105def null():
        +5106    """
        +5107    Returns a Null expression.
        +5108    """
        +5109    return Null()
         
        diff --git a/docs/sqlglot/generator.html b/docs/sqlglot/generator.html index ec017fe..90ae02b 100644 --- a/docs/sqlglot/generator.html +++ b/docs/sqlglot/generator.html @@ -3,7 +3,7 @@ - + sqlglot.generator API documentation @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • Generator
              @@ -297,6 +297,9 @@
            • set_sql
            • +
            • + pragma_sql +
            • lock_sql
            • @@ -429,6 +432,12 @@
            • if_sql
            • +
            • + jsonkeyvalue_sql +
            • +
            • + jsonobject_sql +
            • in_sql
            • @@ -813,1896 +822,1953 @@ 110 # Whether or not MERGE ... WHEN MATCHED BY SOURCE is allowed 111 MATCHED_BY_SOURCE = True 112 - 113 TYPE_MAPPING = { - 114 exp.DataType.Type.NCHAR: "CHAR", - 115 exp.DataType.Type.NVARCHAR: "VARCHAR", - 116 exp.DataType.Type.MEDIUMTEXT: "TEXT", - 117 exp.DataType.Type.LONGTEXT: "TEXT", - 118 exp.DataType.Type.MEDIUMBLOB: "BLOB", - 119 exp.DataType.Type.LONGBLOB: "BLOB", - 120 exp.DataType.Type.INET: "INET", - 121 } - 122 - 123 STAR_MAPPING = { - 124 "except": "EXCEPT", - 125 "replace": "REPLACE", - 126 } - 127 - 128 TOKEN_MAPPING: t.Dict[TokenType, str] = {} - 129 - 130 STRUCT_DELIMITER = ("<", ">") + 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 } + 126 + 127 STAR_MAPPING = { + 128 "except": "EXCEPT", + 129 "replace": "REPLACE", + 130 } 131 - 132 PARAMETER_TOKEN = "@" + 132 TOKEN_MAPPING: t.Dict[TokenType, str] = {} 133 - 134 PROPERTIES_LOCATION = { - 135 exp.AfterJournalProperty: exp.Properties.Location.POST_NAME, - 136 exp.AlgorithmProperty: exp.Properties.Location.POST_CREATE, - 137 exp.AutoIncrementProperty: exp.Properties.Location.POST_SCHEMA, - 138 exp.BlockCompressionProperty: exp.Properties.Location.POST_NAME, - 139 exp.CharacterSetProperty: exp.Properties.Location.POST_SCHEMA, - 140 exp.ChecksumProperty: exp.Properties.Location.POST_NAME, - 141 exp.CollateProperty: exp.Properties.Location.POST_SCHEMA, - 142 exp.Cluster: exp.Properties.Location.POST_SCHEMA, - 143 exp.DataBlocksizeProperty: exp.Properties.Location.POST_NAME, - 144 exp.DefinerProperty: exp.Properties.Location.POST_CREATE, - 145 exp.DistKeyProperty: exp.Properties.Location.POST_SCHEMA, - 146 exp.DistStyleProperty: exp.Properties.Location.POST_SCHEMA, - 147 exp.EngineProperty: exp.Properties.Location.POST_SCHEMA, - 148 exp.ExecuteAsProperty: exp.Properties.Location.POST_SCHEMA, - 149 exp.ExternalProperty: exp.Properties.Location.POST_CREATE, - 150 exp.FallbackProperty: exp.Properties.Location.POST_NAME, - 151 exp.FileFormatProperty: exp.Properties.Location.POST_WITH, - 152 exp.FreespaceProperty: exp.Properties.Location.POST_NAME, - 153 exp.IsolatedLoadingProperty: exp.Properties.Location.POST_NAME, - 154 exp.JournalProperty: exp.Properties.Location.POST_NAME, - 155 exp.LanguageProperty: exp.Properties.Location.POST_SCHEMA, - 156 exp.LikeProperty: exp.Properties.Location.POST_SCHEMA, - 157 exp.LocationProperty: exp.Properties.Location.POST_SCHEMA, - 158 exp.LockingProperty: exp.Properties.Location.POST_ALIAS, - 159 exp.LogProperty: exp.Properties.Location.POST_NAME, - 160 exp.MaterializedProperty: exp.Properties.Location.POST_CREATE, - 161 exp.MergeBlockRatioProperty: exp.Properties.Location.POST_NAME, - 162 exp.NoPrimaryIndexProperty: exp.Properties.Location.POST_EXPRESSION, - 163 exp.OnCommitProperty: exp.Properties.Location.POST_EXPRESSION, - 164 exp.PartitionedByProperty: exp.Properties.Location.POST_WITH, - 165 exp.Property: exp.Properties.Location.POST_WITH, - 166 exp.ReturnsProperty: exp.Properties.Location.POST_SCHEMA, - 167 exp.RowFormatDelimitedProperty: exp.Properties.Location.POST_SCHEMA, - 168 exp.RowFormatSerdeProperty: exp.Properties.Location.POST_SCHEMA, - 169 exp.SchemaCommentProperty: exp.Properties.Location.POST_SCHEMA, - 170 exp.SerdeProperties: exp.Properties.Location.POST_SCHEMA, - 171 exp.SetProperty: exp.Properties.Location.POST_CREATE, - 172 exp.SortKeyProperty: exp.Properties.Location.POST_SCHEMA, - 173 exp.SqlSecurityProperty: exp.Properties.Location.POST_CREATE, - 174 exp.TableFormatProperty: exp.Properties.Location.POST_WITH, - 175 exp.TemporaryProperty: exp.Properties.Location.POST_CREATE, - 176 exp.TransientProperty: exp.Properties.Location.POST_CREATE, - 177 exp.VolatilityProperty: exp.Properties.Location.POST_SCHEMA, - 178 exp.WithDataProperty: exp.Properties.Location.POST_EXPRESSION, - 179 exp.WithJournalTableProperty: exp.Properties.Location.POST_NAME, - 180 } - 181 - 182 WITH_SEPARATED_COMMENTS = (exp.Select, exp.From, exp.Where, exp.Binary) - 183 SENTINEL_LINE_BREAK = "__SQLGLOT__LB__" - 184 - 185 __slots__ = ( - 186 "time_mapping", - 187 "time_trie", - 188 "pretty", - 189 "quote_start", - 190 "quote_end", - 191 "identifier_start", - 192 "identifier_end", - 193 "identify", - 194 "normalize", - 195 "string_escape", - 196 "identifier_escape", - 197 "pad", - 198 "index_offset", - 199 "unnest_column_only", - 200 "alias_post_tablesample", - 201 "normalize_functions", - 202 "unsupported_level", - 203 "unsupported_messages", - 204 "null_ordering", - 205 "max_unsupported", - 206 "_indent", - 207 "_escaped_quote_end", - 208 "_escaped_identifier_end", - 209 "_leading_comma", - 210 "_max_text_width", - 211 "_comments", - 212 ) - 213 - 214 def __init__( - 215 self, - 216 time_mapping=None, - 217 time_trie=None, - 218 pretty=None, - 219 quote_start=None, - 220 quote_end=None, - 221 identifier_start=None, - 222 identifier_end=None, - 223 identify=False, - 224 normalize=False, - 225 string_escape=None, - 226 identifier_escape=None, - 227 pad=2, - 228 indent=2, - 229 index_offset=0, - 230 unnest_column_only=False, - 231 alias_post_tablesample=False, - 232 normalize_functions="upper", - 233 unsupported_level=ErrorLevel.WARN, - 234 null_ordering=None, - 235 max_unsupported=3, - 236 leading_comma=False, - 237 max_text_width=80, - 238 comments=True, - 239 ): - 240 import sqlglot - 241 - 242 self.time_mapping = time_mapping or {} - 243 self.time_trie = time_trie - 244 self.pretty = pretty if pretty is not None else sqlglot.pretty - 245 self.quote_start = quote_start or "'" - 246 self.quote_end = quote_end or "'" - 247 self.identifier_start = identifier_start or '"' - 248 self.identifier_end = identifier_end or '"' - 249 self.identify = identify - 250 self.normalize = normalize - 251 self.string_escape = string_escape or "'" - 252 self.identifier_escape = identifier_escape or '"' - 253 self.pad = pad - 254 self.index_offset = index_offset - 255 self.unnest_column_only = unnest_column_only - 256 self.alias_post_tablesample = alias_post_tablesample - 257 self.normalize_functions = normalize_functions - 258 self.unsupported_level = unsupported_level - 259 self.unsupported_messages = [] - 260 self.max_unsupported = max_unsupported - 261 self.null_ordering = null_ordering - 262 self._indent = indent - 263 self._escaped_quote_end = self.string_escape + self.quote_end - 264 self._escaped_identifier_end = self.identifier_escape + self.identifier_end - 265 self._leading_comma = leading_comma - 266 self._max_text_width = max_text_width - 267 self._comments = comments - 268 - 269 def generate(self, expression: t.Optional[exp.Expression]) -> str: - 270 """ - 271 Generates a SQL string by interpreting the given syntax tree. - 272 - 273 Args - 274 expression: the syntax tree. - 275 - 276 Returns - 277 the SQL string. - 278 """ - 279 self.unsupported_messages = [] - 280 sql = self.sql(expression).strip() - 281 - 282 if self.unsupported_level == ErrorLevel.IGNORE: - 283 return sql - 284 - 285 if self.unsupported_level == ErrorLevel.WARN: - 286 for msg in self.unsupported_messages: - 287 logger.warning(msg) - 288 elif self.unsupported_level == ErrorLevel.RAISE and self.unsupported_messages: - 289 raise UnsupportedError(concat_messages(self.unsupported_messages, self.max_unsupported)) - 290 - 291 if self.pretty: - 292 sql = sql.replace(self.SENTINEL_LINE_BREAK, "\n") - 293 return sql - 294 - 295 def unsupported(self, message: str) -> None: - 296 if self.unsupported_level == ErrorLevel.IMMEDIATE: - 297 raise UnsupportedError(message) - 298 self.unsupported_messages.append(message) - 299 - 300 def sep(self, sep: str = " ") -> str: - 301 return f"{sep.strip()}\n" if self.pretty else sep - 302 - 303 def seg(self, sql: str, sep: str = " ") -> str: - 304 return f"{self.sep(sep)}{sql}" - 305 - 306 def pad_comment(self, comment: str) -> str: - 307 comment = " " + comment if comment[0].strip() else comment - 308 comment = comment + " " if comment[-1].strip() else comment - 309 return comment - 310 - 311 def maybe_comment(self, sql: str, expression: exp.Expression) -> str: - 312 comments = expression.comments if self._comments else None + 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 if not comments: - 315 return sql + 314 def sep(self, sep: str = " ") -> str: + 315 return f"{sep.strip()}\n" if self.pretty else sep 316 - 317 sep = "\n" if self.pretty else " " - 318 comments_sql = sep.join( - 319 f"/*{self.pad_comment(comment)}*/" for comment in comments if comment - 320 ) - 321 - 322 if not comments_sql: - 323 return sql + 317 def seg(self, sql: str, sep: str = " ") -> str: + 318 return f"{self.sep(sep)}{sql}" + 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 if isinstance(expression, self.WITH_SEPARATED_COMMENTS): - 326 return f"{comments_sql}{self.sep()}{sql}" + 325 def maybe_comment(self, sql: str, expression: exp.Expression) -> str: + 326 comments = expression.comments if self._comments else None 327 - 328 return f"{sql} {comments_sql}" - 329 - 330 def wrap(self, expression: exp.Expression | str) -> str: - 331 this_sql = self.indent( - 332 self.sql(expression) - 333 if isinstance(expression, (exp.Select, exp.Union)) - 334 else self.sql(expression, "this"), - 335 level=1, - 336 pad=0, - 337 ) - 338 return f"({self.sep('')}{this_sql}{self.seg(')', sep='')}" - 339 - 340 def no_identify(self, func: t.Callable[..., str], *args, **kwargs) -> str: - 341 original = self.identify - 342 self.identify = False - 343 result = func(*args, **kwargs) - 344 self.identify = original - 345 return result - 346 - 347 def normalize_func(self, name: str) -> str: - 348 if self.normalize_functions == "upper": - 349 return name.upper() - 350 if self.normalize_functions == "lower": - 351 return name.lower() - 352 return name + 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}" + 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 indent( - 355 self, - 356 sql: str, - 357 level: int = 0, - 358 pad: t.Optional[int] = None, - 359 skip_first: bool = False, - 360 skip_last: bool = False, - 361 ) -> str: - 362 if not self.pretty: - 363 return sql - 364 - 365 pad = self.pad if pad is None else pad - 366 lines = sql.split("\n") + 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 return "\n".join( - 369 line - 370 if (skip_first and i == 0) or (skip_last and i == len(lines) - 1) - 371 else f"{' ' * (level * self._indent + pad)}{line}" - 372 for i, line in enumerate(lines) - 373 ) - 374 - 375 def sql( - 376 self, - 377 expression: t.Optional[str | exp.Expression], - 378 key: t.Optional[str] = None, - 379 comment: bool = True, - 380 ) -> str: - 381 if not expression: - 382 return "" - 383 - 384 if isinstance(expression, str): - 385 return expression - 386 - 387 if key: - 388 return self.sql(expression.args.get(key)) - 389 - 390 transform = self.TRANSFORMS.get(expression.__class__) - 391 - 392 if callable(transform): - 393 sql = transform(self, expression) - 394 elif transform: - 395 sql = transform - 396 elif isinstance(expression, exp.Expression): - 397 exp_handler_name = f"{expression.key}_sql" - 398 - 399 if hasattr(self, exp_handler_name): - 400 sql = getattr(self, exp_handler_name)(expression) - 401 elif isinstance(expression, exp.Func): - 402 sql = self.function_fallback_sql(expression) - 403 elif isinstance(expression, exp.Property): - 404 sql = self.property_sql(expression) - 405 else: - 406 raise ValueError(f"Unsupported expression type {expression.__class__.__name__}") - 407 else: - 408 raise ValueError(f"Expected an Expression. Received {type(expression)}: {expression}") + 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") + 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 return self.maybe_comment(sql, expression) if self._comments and comment else sql + 410 transform = self.TRANSFORMS.get(expression.__class__) 411 - 412 def uncache_sql(self, expression: exp.Uncache) -> str: - 413 table = self.sql(expression, "this") - 414 exists_sql = " IF EXISTS" if expression.args.get("exists") else "" - 415 return f"UNCACHE TABLE{exists_sql} {table}" - 416 - 417 def cache_sql(self, expression: exp.Cache) -> str: - 418 lazy = " LAZY" if expression.args.get("lazy") else "" - 419 table = self.sql(expression, "this") - 420 options = expression.args.get("options") - 421 options = f" OPTIONS({self.sql(options[0])} = {self.sql(options[1])})" if options else "" - 422 sql = self.sql(expression, "expression") - 423 sql = f" AS{self.sep()}{sql}" if sql else "" - 424 sql = f"CACHE{lazy} TABLE {table}{options}{sql}" - 425 return self.prepend_ctes(expression, sql) - 426 - 427 def characterset_sql(self, expression: exp.CharacterSet) -> str: - 428 if isinstance(expression.parent, exp.Cast): - 429 return f"CHAR CHARACTER SET {self.sql(expression, 'this')}" - 430 default = "DEFAULT " if expression.args.get("default") else "" - 431 return f"{default}CHARACTER SET={self.sql(expression, 'this')}" - 432 - 433 def column_sql(self, expression: exp.Column) -> str: - 434 return ".".join( - 435 self.sql(part) - 436 for part in ( - 437 expression.args.get("catalog"), - 438 expression.args.get("db"), - 439 expression.args.get("table"), - 440 expression.args.get("this"), - 441 ) - 442 if part - 443 ) - 444 - 445 def columndef_sql(self, expression: exp.ColumnDef) -> str: - 446 column = self.sql(expression, "this") - 447 kind = self.sql(expression, "kind") - 448 constraints = self.expressions(expression, key="constraints", sep=" ", flat=True) - 449 exists = "IF NOT EXISTS " if expression.args.get("exists") else "" - 450 kind = f" {kind}" if kind else "" - 451 constraints = f" {constraints}" if constraints else "" - 452 - 453 return f"{exists}{column}{kind}{constraints}" - 454 - 455 def columnconstraint_sql(self, expression: exp.ColumnConstraint) -> str: - 456 this = self.sql(expression, "this") - 457 kind_sql = self.sql(expression, "kind") - 458 return f"CONSTRAINT {this} {kind_sql}" if this else kind_sql - 459 - 460 def autoincrementcolumnconstraint_sql(self, _) -> str: - 461 return self.token_sql(TokenType.AUTO_INCREMENT) - 462 - 463 def compresscolumnconstraint_sql(self, expression: exp.CompressColumnConstraint) -> str: - 464 if isinstance(expression.this, list): - 465 this = self.wrap(self.expressions(expression, key="this", flat=True)) - 466 else: - 467 this = self.sql(expression, "this") + 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 + 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')}" + 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 return f"COMPRESS {this}" - 470 - 471 def generatedasidentitycolumnconstraint_sql( - 472 self, expression: exp.GeneratedAsIdentityColumnConstraint - 473 ) -> str: - 474 this = "" - 475 if expression.this is not None: - 476 this = " ALWAYS " if expression.this else " BY DEFAULT " - 477 start = expression.args.get("start") - 478 start = f"START WITH {start}" if start else "" - 479 increment = expression.args.get("increment") - 480 increment = f" INCREMENT BY {increment}" if increment else "" - 481 minvalue = expression.args.get("minvalue") - 482 minvalue = f" MINVALUE {minvalue}" if minvalue else "" - 483 maxvalue = expression.args.get("maxvalue") - 484 maxvalue = f" MAXVALUE {maxvalue}" if maxvalue else "" - 485 cycle = expression.args.get("cycle") - 486 cycle_sql = "" - 487 if cycle is not None: - 488 cycle_sql = f"{' NO' if not cycle else ''} CYCLE" - 489 cycle_sql = cycle_sql.strip() if not start and not increment else cycle_sql - 490 sequence_opts = "" - 491 if start or increment or cycle_sql: - 492 sequence_opts = f"{start}{increment}{minvalue}{maxvalue}{cycle_sql}" - 493 sequence_opts = f" ({sequence_opts.strip()})" - 494 return f"GENERATED{this}AS IDENTITY{sequence_opts}" - 495 - 496 def notnullcolumnconstraint_sql(self, expression: exp.NotNullColumnConstraint) -> str: - 497 return f"{'' if expression.args.get('allow_null') else 'NOT '}NULL" - 498 - 499 def primarykeycolumnconstraint_sql(self, expression: exp.PrimaryKeyColumnConstraint) -> str: - 500 desc = expression.args.get("desc") - 501 if desc is not None: - 502 return f"PRIMARY KEY{' DESC' if desc else ' ASC'}" - 503 return f"PRIMARY KEY" - 504 - 505 def uniquecolumnconstraint_sql(self, _) -> str: - 506 return "UNIQUE" - 507 - 508 def create_sql(self, expression: exp.Create) -> str: - 509 kind = self.sql(expression, "kind").upper() - 510 properties = expression.args.get("properties") - 511 properties_exp = expression.copy() - 512 properties_locs = self.locate_properties(properties) if properties else {} - 513 if properties_locs.get(exp.Properties.Location.POST_SCHEMA) or properties_locs.get( - 514 exp.Properties.Location.POST_WITH - 515 ): - 516 properties_exp.set( - 517 "properties", - 518 exp.Properties( - 519 expressions=[ - 520 *properties_locs[exp.Properties.Location.POST_SCHEMA], - 521 *properties_locs[exp.Properties.Location.POST_WITH], - 522 ] - 523 ), - 524 ) - 525 if kind == "TABLE" and properties_locs.get(exp.Properties.Location.POST_NAME): - 526 this_name = self.sql(expression.this, "this") - 527 this_properties = self.properties( - 528 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_NAME]), - 529 wrapped=False, - 530 ) - 531 this_schema = f"({self.expressions(expression.this)})" - 532 this = f"{this_name}, {this_properties} {this_schema}" - 533 properties_sql = "" - 534 else: - 535 this = self.sql(expression, "this") - 536 properties_sql = self.sql(properties_exp, "properties") - 537 begin = " BEGIN" if expression.args.get("begin") else "" - 538 expression_sql = self.sql(expression, "expression") - 539 if expression_sql: - 540 expression_sql = f"{begin}{self.sep()}{expression_sql}" - 541 - 542 if self.CREATE_FUNCTION_RETURN_AS or not isinstance(expression.expression, exp.Return): - 543 if properties_locs.get(exp.Properties.Location.POST_ALIAS): - 544 postalias_props_sql = self.properties( - 545 exp.Properties( - 546 expressions=properties_locs[exp.Properties.Location.POST_ALIAS] - 547 ), - 548 wrapped=False, - 549 ) - 550 expression_sql = f" AS {postalias_props_sql}{expression_sql}" - 551 else: - 552 expression_sql = f" AS{expression_sql}" - 553 - 554 postindex_props_sql = "" - 555 if properties_locs.get(exp.Properties.Location.POST_INDEX): - 556 postindex_props_sql = self.properties( - 557 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_INDEX]), - 558 wrapped=False, - 559 prefix=" ", - 560 ) - 561 - 562 indexes = expression.args.get("indexes") - 563 if indexes: - 564 indexes_sql: t.List[str] = [] - 565 for index in indexes: - 566 ind_unique = " UNIQUE" if index.args.get("unique") else "" - 567 ind_primary = " PRIMARY" if index.args.get("primary") else "" - 568 ind_amp = " AMP" if index.args.get("amp") else "" - 569 ind_name = f" {index.name}" if index.name else "" - 570 ind_columns = ( - 571 f' ({self.expressions(index, key="columns", flat=True)})' - 572 if index.args.get("columns") - 573 else "" - 574 ) - 575 ind_sql = f"{ind_unique}{ind_primary}{ind_amp} INDEX{ind_name}{ind_columns}" - 576 - 577 if indexes_sql: - 578 indexes_sql.append(ind_sql) - 579 else: - 580 indexes_sql.append( - 581 f"{ind_sql}{postindex_props_sql}" - 582 if index.args.get("primary") - 583 else f"{postindex_props_sql}{ind_sql}" - 584 ) + 469 def columndef_sql(self, expression: exp.ColumnDef) -> str: + 470 column = self.sql(expression, "this") + 471 kind = self.sql(expression, "kind") + 472 constraints = self.expressions(expression, key="constraints", sep=" ", flat=True) + 473 exists = "IF NOT EXISTS " if expression.args.get("exists") else "" + 474 kind = f" {kind}" if kind else "" + 475 constraints = f" {constraints}" if constraints else "" + 476 + 477 return f"{exists}{column}{kind}{constraints}" + 478 + 479 def columnconstraint_sql(self, expression: exp.ColumnConstraint) -> str: + 480 this = self.sql(expression, "this") + 481 kind_sql = self.sql(expression, "kind") + 482 return f"CONSTRAINT {this} {kind_sql}" if this else kind_sql + 483 + 484 def autoincrementcolumnconstraint_sql(self, _) -> str: + 485 return self.token_sql(TokenType.AUTO_INCREMENT) + 486 + 487 def compresscolumnconstraint_sql(self, expression: exp.CompressColumnConstraint) -> str: + 488 if isinstance(expression.this, list): + 489 this = self.wrap(self.expressions(expression, key="this", flat=True)) + 490 else: + 491 this = self.sql(expression, "this") + 492 + 493 return f"COMPRESS {this}" + 494 + 495 def generatedasidentitycolumnconstraint_sql( + 496 self, expression: exp.GeneratedAsIdentityColumnConstraint + 497 ) -> str: + 498 this = "" + 499 if expression.this is not None: + 500 this = " ALWAYS " if expression.this else " BY DEFAULT " + 501 start = expression.args.get("start") + 502 start = f"START WITH {start}" if start else "" + 503 increment = expression.args.get("increment") + 504 increment = f" INCREMENT BY {increment}" if increment else "" + 505 minvalue = expression.args.get("minvalue") + 506 minvalue = f" MINVALUE {minvalue}" if minvalue else "" + 507 maxvalue = expression.args.get("maxvalue") + 508 maxvalue = f" MAXVALUE {maxvalue}" if maxvalue else "" + 509 cycle = expression.args.get("cycle") + 510 cycle_sql = "" + 511 if cycle is not None: + 512 cycle_sql = f"{' NO' if not cycle else ''} CYCLE" + 513 cycle_sql = cycle_sql.strip() if not start and not increment else cycle_sql + 514 sequence_opts = "" + 515 if start or increment or cycle_sql: + 516 sequence_opts = f"{start}{increment}{minvalue}{maxvalue}{cycle_sql}" + 517 sequence_opts = f" ({sequence_opts.strip()})" + 518 return f"GENERATED{this}AS IDENTITY{sequence_opts}" + 519 + 520 def notnullcolumnconstraint_sql(self, expression: exp.NotNullColumnConstraint) -> str: + 521 return f"{'' if expression.args.get('allow_null') else 'NOT '}NULL" + 522 + 523 def primarykeycolumnconstraint_sql(self, expression: exp.PrimaryKeyColumnConstraint) -> str: + 524 desc = expression.args.get("desc") + 525 if desc is not None: + 526 return f"PRIMARY KEY{' DESC' if desc else ' ASC'}" + 527 return f"PRIMARY KEY" + 528 + 529 def uniquecolumnconstraint_sql(self, _) -> str: + 530 return "UNIQUE" + 531 + 532 def create_sql(self, expression: exp.Create) -> str: + 533 kind = self.sql(expression, "kind").upper() + 534 properties = expression.args.get("properties") + 535 properties_exp = expression.copy() + 536 properties_locs = self.locate_properties(properties) if properties else {} + 537 if properties_locs.get(exp.Properties.Location.POST_SCHEMA) or properties_locs.get( + 538 exp.Properties.Location.POST_WITH + 539 ): + 540 properties_exp.set( + 541 "properties", + 542 exp.Properties( + 543 expressions=[ + 544 *properties_locs[exp.Properties.Location.POST_SCHEMA], + 545 *properties_locs[exp.Properties.Location.POST_WITH], + 546 ] + 547 ), + 548 ) + 549 if kind == "TABLE" and properties_locs.get(exp.Properties.Location.POST_NAME): + 550 this_name = self.sql(expression.this, "this") + 551 this_properties = self.properties( + 552 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_NAME]), + 553 wrapped=False, + 554 ) + 555 this_schema = f"({self.expressions(expression.this)})" + 556 this = f"{this_name}, {this_properties} {this_schema}" + 557 properties_sql = "" + 558 else: + 559 this = self.sql(expression, "this") + 560 properties_sql = self.sql(properties_exp, "properties") + 561 begin = " BEGIN" if expression.args.get("begin") else "" + 562 expression_sql = self.sql(expression, "expression") + 563 if expression_sql: + 564 expression_sql = f"{begin}{self.sep()}{expression_sql}" + 565 + 566 if self.CREATE_FUNCTION_RETURN_AS or not isinstance(expression.expression, exp.Return): + 567 if properties_locs.get(exp.Properties.Location.POST_ALIAS): + 568 postalias_props_sql = self.properties( + 569 exp.Properties( + 570 expressions=properties_locs[exp.Properties.Location.POST_ALIAS] + 571 ), + 572 wrapped=False, + 573 ) + 574 expression_sql = f" AS {postalias_props_sql}{expression_sql}" + 575 else: + 576 expression_sql = f" AS{expression_sql}" + 577 + 578 postindex_props_sql = "" + 579 if properties_locs.get(exp.Properties.Location.POST_INDEX): + 580 postindex_props_sql = self.properties( + 581 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_INDEX]), + 582 wrapped=False, + 583 prefix=" ", + 584 ) 585 - 586 index_sql = "".join(indexes_sql) - 587 else: - 588 index_sql = postindex_props_sql - 589 - 590 replace = " OR REPLACE" if expression.args.get("replace") else "" - 591 unique = " UNIQUE" if expression.args.get("unique") else "" - 592 volatile = " VOLATILE" if expression.args.get("volatile") else "" - 593 - 594 postcreate_props_sql = "" - 595 if properties_locs.get(exp.Properties.Location.POST_CREATE): - 596 postcreate_props_sql = self.properties( - 597 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_CREATE]), - 598 sep=" ", - 599 prefix=" ", - 600 wrapped=False, - 601 ) - 602 - 603 modifiers = "".join((replace, unique, volatile, postcreate_props_sql)) - 604 - 605 postexpression_props_sql = "" - 606 if properties_locs.get(exp.Properties.Location.POST_EXPRESSION): - 607 postexpression_props_sql = self.properties( - 608 exp.Properties( - 609 expressions=properties_locs[exp.Properties.Location.POST_EXPRESSION] - 610 ), - 611 sep=" ", - 612 prefix=" ", - 613 wrapped=False, - 614 ) - 615 - 616 exists_sql = " IF NOT EXISTS" if expression.args.get("exists") else "" - 617 no_schema_binding = ( - 618 " WITH NO SCHEMA BINDING" if expression.args.get("no_schema_binding") else "" - 619 ) - 620 - 621 expression_sql = f"CREATE{modifiers} {kind}{exists_sql} {this}{properties_sql}{expression_sql}{postexpression_props_sql}{index_sql}{no_schema_binding}" - 622 return self.prepend_ctes(expression, expression_sql) - 623 - 624 def describe_sql(self, expression: exp.Describe) -> str: - 625 return f"DESCRIBE {self.sql(expression, 'this')}" + 586 indexes = expression.args.get("indexes") + 587 if indexes: + 588 indexes_sql: t.List[str] = [] + 589 for index in indexes: + 590 ind_unique = " UNIQUE" if index.args.get("unique") else "" + 591 ind_primary = " PRIMARY" if index.args.get("primary") else "" + 592 ind_amp = " AMP" if index.args.get("amp") else "" + 593 ind_name = f" {index.name}" if index.name else "" + 594 ind_columns = ( + 595 f' ({self.expressions(index, key="columns", flat=True)})' + 596 if index.args.get("columns") + 597 else "" + 598 ) + 599 ind_sql = f"{ind_unique}{ind_primary}{ind_amp} INDEX{ind_name}{ind_columns}" + 600 + 601 if indexes_sql: + 602 indexes_sql.append(ind_sql) + 603 else: + 604 indexes_sql.append( + 605 f"{ind_sql}{postindex_props_sql}" + 606 if index.args.get("primary") + 607 else f"{postindex_props_sql}{ind_sql}" + 608 ) + 609 + 610 index_sql = "".join(indexes_sql) + 611 else: + 612 index_sql = postindex_props_sql + 613 + 614 replace = " OR REPLACE" if expression.args.get("replace") else "" + 615 unique = " UNIQUE" if expression.args.get("unique") else "" + 616 volatile = " VOLATILE" if expression.args.get("volatile") else "" + 617 + 618 postcreate_props_sql = "" + 619 if properties_locs.get(exp.Properties.Location.POST_CREATE): + 620 postcreate_props_sql = self.properties( + 621 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_CREATE]), + 622 sep=" ", + 623 prefix=" ", + 624 wrapped=False, + 625 ) 626 - 627 def prepend_ctes(self, expression: exp.Expression, sql: str) -> str: - 628 with_ = self.sql(expression, "with") - 629 if with_: - 630 sql = f"{with_}{self.sep()}{sql}" - 631 return sql - 632 - 633 def with_sql(self, expression: exp.With) -> str: - 634 sql = self.expressions(expression, flat=True) - 635 recursive = "RECURSIVE " if expression.args.get("recursive") else "" - 636 - 637 return f"WITH {recursive}{sql}" - 638 - 639 def cte_sql(self, expression: exp.CTE) -> str: - 640 alias = self.sql(expression, "alias") - 641 return f"{alias} AS {self.wrap(expression)}" - 642 - 643 def tablealias_sql(self, expression: exp.TableAlias) -> str: - 644 alias = self.sql(expression, "this") - 645 columns = self.expressions(expression, key="columns", flat=True) - 646 columns = f"({columns})" if columns else "" - 647 return f"{alias}{columns}" - 648 - 649 def bitstring_sql(self, expression: exp.BitString) -> str: - 650 return self.sql(expression, "this") - 651 - 652 def hexstring_sql(self, expression: exp.HexString) -> str: - 653 return self.sql(expression, "this") - 654 - 655 def datatype_sql(self, expression: exp.DataType) -> str: - 656 type_value = expression.this - 657 type_sql = self.TYPE_MAPPING.get(type_value, type_value.value) - 658 nested = "" - 659 interior = self.expressions(expression, flat=True) - 660 values = "" - 661 if interior: - 662 if expression.args.get("nested"): - 663 nested = f"{self.STRUCT_DELIMITER[0]}{interior}{self.STRUCT_DELIMITER[1]}" - 664 if expression.args.get("values") is not None: - 665 delimiters = ("[", "]") if type_value == exp.DataType.Type.ARRAY else ("(", ")") - 666 values = ( - 667 f"{delimiters[0]}{self.expressions(expression, 'values')}{delimiters[1]}" - 668 ) - 669 else: - 670 nested = f"({interior})" - 671 - 672 return f"{type_sql}{nested}{values}" - 673 - 674 def directory_sql(self, expression: exp.Directory) -> str: - 675 local = "LOCAL " if expression.args.get("local") else "" - 676 row_format = self.sql(expression, "row_format") - 677 row_format = f" {row_format}" if row_format else "" - 678 return f"{local}DIRECTORY {self.sql(expression, 'this')}{row_format}" - 679 - 680 def delete_sql(self, expression: exp.Delete) -> str: - 681 this = self.sql(expression, "this") - 682 this = f" FROM {this}" if this else "" - 683 using_sql = ( - 684 f" USING {self.expressions(expression, 'using', sep=', USING ')}" - 685 if expression.args.get("using") - 686 else "" - 687 ) - 688 where_sql = self.sql(expression, "where") - 689 returning = self.sql(expression, "returning") - 690 sql = f"DELETE{this}{using_sql}{where_sql}{returning}" - 691 return self.prepend_ctes(expression, sql) - 692 - 693 def drop_sql(self, expression: exp.Drop) -> str: - 694 this = self.sql(expression, "this") - 695 kind = expression.args["kind"] - 696 exists_sql = " IF EXISTS " if expression.args.get("exists") else " " - 697 temporary = " TEMPORARY" if expression.args.get("temporary") else "" - 698 materialized = " MATERIALIZED" if expression.args.get("materialized") else "" - 699 cascade = " CASCADE" if expression.args.get("cascade") else "" - 700 return f"DROP{temporary}{materialized} {kind}{exists_sql}{this}{cascade}" - 701 - 702 def except_sql(self, expression: exp.Except) -> str: - 703 return self.prepend_ctes( - 704 expression, - 705 self.set_operation(expression, self.except_op(expression)), - 706 ) - 707 - 708 def except_op(self, expression: exp.Except) -> str: - 709 return f"EXCEPT{'' if expression.args.get('distinct') else ' ALL'}" - 710 - 711 def fetch_sql(self, expression: exp.Fetch) -> str: - 712 direction = expression.args.get("direction") - 713 direction = f" {direction.upper()}" if direction else "" - 714 count = expression.args.get("count") - 715 count = f" {count}" if count else "" - 716 return f"{self.seg('FETCH')}{direction}{count} ROWS ONLY" - 717 - 718 def filter_sql(self, expression: exp.Filter) -> str: - 719 this = self.sql(expression, "this") - 720 where = self.sql(expression, "expression")[1:] # where has a leading space - 721 return f"{this} FILTER({where})" - 722 - 723 def hint_sql(self, expression: exp.Hint) -> str: - 724 if self.sql(expression, "this"): - 725 self.unsupported("Hints are not supported") - 726 return "" - 727 - 728 def index_sql(self, expression: exp.Index) -> str: - 729 this = self.sql(expression, "this") - 730 table = self.sql(expression, "table") - 731 columns = self.sql(expression, "columns") - 732 return f"{this} ON {table} {columns}" - 733 - 734 def identifier_sql(self, expression: exp.Identifier) -> str: - 735 text = expression.name - 736 text = text.lower() if self.normalize else text - 737 text = text.replace(self.identifier_end, self._escaped_identifier_end) - 738 if expression.args.get("quoted") or should_identify(text, self.identify): - 739 text = f"{self.identifier_start}{text}{self.identifier_end}" - 740 return text + 627 modifiers = "".join((replace, unique, volatile, postcreate_props_sql)) + 628 + 629 postexpression_props_sql = "" + 630 if properties_locs.get(exp.Properties.Location.POST_EXPRESSION): + 631 postexpression_props_sql = self.properties( + 632 exp.Properties( + 633 expressions=properties_locs[exp.Properties.Location.POST_EXPRESSION] + 634 ), + 635 sep=" ", + 636 prefix=" ", + 637 wrapped=False, + 638 ) + 639 + 640 exists_sql = " IF NOT EXISTS" if expression.args.get("exists") else "" + 641 no_schema_binding = ( + 642 " WITH NO SCHEMA BINDING" if expression.args.get("no_schema_binding") else "" + 643 ) + 644 + 645 expression_sql = f"CREATE{modifiers} {kind}{exists_sql} {this}{properties_sql}{expression_sql}{postexpression_props_sql}{index_sql}{no_schema_binding}" + 646 return self.prepend_ctes(expression, expression_sql) + 647 + 648 def describe_sql(self, expression: exp.Describe) -> str: + 649 return f"DESCRIBE {self.sql(expression, 'this')}" + 650 + 651 def prepend_ctes(self, expression: exp.Expression, sql: str) -> str: + 652 with_ = self.sql(expression, "with") + 653 if with_: + 654 sql = f"{with_}{self.sep()}{sql}" + 655 return sql + 656 + 657 def with_sql(self, expression: exp.With) -> str: + 658 sql = self.expressions(expression, flat=True) + 659 recursive = "RECURSIVE " if expression.args.get("recursive") else "" + 660 + 661 return f"WITH {recursive}{sql}" + 662 + 663 def cte_sql(self, expression: exp.CTE) -> str: + 664 alias = self.sql(expression, "alias") + 665 return f"{alias} AS {self.wrap(expression)}" + 666 + 667 def tablealias_sql(self, expression: exp.TableAlias) -> str: + 668 alias = self.sql(expression, "this") + 669 columns = self.expressions(expression, key="columns", flat=True) + 670 columns = f"({columns})" if columns else "" + 671 return f"{alias}{columns}" + 672 + 673 def bitstring_sql(self, expression: exp.BitString) -> str: + 674 return self.sql(expression, "this") + 675 + 676 def hexstring_sql(self, expression: exp.HexString) -> str: + 677 return self.sql(expression, "this") + 678 + 679 def datatype_sql(self, expression: exp.DataType) -> str: + 680 type_value = expression.this + 681 type_sql = self.TYPE_MAPPING.get(type_value, type_value.value) + 682 nested = "" + 683 interior = self.expressions(expression, flat=True) + 684 values = "" + 685 if interior: + 686 if expression.args.get("nested"): + 687 nested = f"{self.STRUCT_DELIMITER[0]}{interior}{self.STRUCT_DELIMITER[1]}" + 688 if expression.args.get("values") is not None: + 689 delimiters = ("[", "]") if type_value == exp.DataType.Type.ARRAY else ("(", ")") + 690 values = ( + 691 f"{delimiters[0]}{self.expressions(expression, 'values')}{delimiters[1]}" + 692 ) + 693 else: + 694 nested = f"({interior})" + 695 + 696 return f"{type_sql}{nested}{values}" + 697 + 698 def directory_sql(self, expression: exp.Directory) -> str: + 699 local = "LOCAL " if expression.args.get("local") else "" + 700 row_format = self.sql(expression, "row_format") + 701 row_format = f" {row_format}" if row_format else "" + 702 return f"{local}DIRECTORY {self.sql(expression, 'this')}{row_format}" + 703 + 704 def delete_sql(self, expression: exp.Delete) -> str: + 705 this = self.sql(expression, "this") + 706 this = f" FROM {this}" if this else "" + 707 using_sql = ( + 708 f" USING {self.expressions(expression, 'using', sep=', USING ')}" + 709 if expression.args.get("using") + 710 else "" + 711 ) + 712 where_sql = self.sql(expression, "where") + 713 returning = self.sql(expression, "returning") + 714 sql = f"DELETE{this}{using_sql}{where_sql}{returning}" + 715 return self.prepend_ctes(expression, sql) + 716 + 717 def drop_sql(self, expression: exp.Drop) -> str: + 718 this = self.sql(expression, "this") + 719 kind = expression.args["kind"] + 720 exists_sql = " IF EXISTS " if expression.args.get("exists") else " " + 721 temporary = " TEMPORARY" if expression.args.get("temporary") else "" + 722 materialized = " MATERIALIZED" if expression.args.get("materialized") else "" + 723 cascade = " CASCADE" if expression.args.get("cascade") else "" + 724 return f"DROP{temporary}{materialized} {kind}{exists_sql}{this}{cascade}" + 725 + 726 def except_sql(self, expression: exp.Except) -> str: + 727 return self.prepend_ctes( + 728 expression, + 729 self.set_operation(expression, self.except_op(expression)), + 730 ) + 731 + 732 def except_op(self, expression: exp.Except) -> str: + 733 return f"EXCEPT{'' if expression.args.get('distinct') else ' ALL'}" + 734 + 735 def fetch_sql(self, expression: exp.Fetch) -> str: + 736 direction = expression.args.get("direction") + 737 direction = f" {direction.upper()}" if direction else "" + 738 count = expression.args.get("count") + 739 count = f" {count}" if count else "" + 740 return f"{self.seg('FETCH')}{direction}{count} ROWS ONLY" 741 - 742 def national_sql(self, expression: exp.National) -> str: - 743 return f"N{self.sql(expression, 'this')}" - 744 - 745 def partition_sql(self, expression: exp.Partition) -> str: - 746 return f"PARTITION({self.expressions(expression)})" - 747 - 748 def properties_sql(self, expression: exp.Properties) -> str: - 749 root_properties = [] - 750 with_properties = [] + 742 def filter_sql(self, expression: exp.Filter) -> str: + 743 this = self.sql(expression, "this") + 744 where = self.sql(expression, "expression")[1:] # where has a leading space + 745 return f"{this} FILTER({where})" + 746 + 747 def hint_sql(self, expression: exp.Hint) -> str: + 748 if self.sql(expression, "this"): + 749 self.unsupported("Hints are not supported") + 750 return "" 751 - 752 for p in expression.expressions: - 753 p_loc = self.PROPERTIES_LOCATION[p.__class__] - 754 if p_loc == exp.Properties.Location.POST_WITH: - 755 with_properties.append(p) - 756 elif p_loc == exp.Properties.Location.POST_SCHEMA: - 757 root_properties.append(p) - 758 - 759 return self.root_properties( - 760 exp.Properties(expressions=root_properties) - 761 ) + self.with_properties(exp.Properties(expressions=with_properties)) - 762 - 763 def root_properties(self, properties: exp.Properties) -> str: - 764 if properties.expressions: - 765 return self.sep() + self.expressions(properties, indent=False, sep=" ") - 766 return "" - 767 - 768 def properties( - 769 self, - 770 properties: exp.Properties, - 771 prefix: str = "", - 772 sep: str = ", ", - 773 suffix: str = "", - 774 wrapped: bool = True, - 775 ) -> str: - 776 if properties.expressions: - 777 expressions = self.expressions(properties, sep=sep, indent=False) - 778 expressions = self.wrap(expressions) if wrapped else expressions - 779 return f"{prefix}{' ' if prefix and prefix != ' ' else ''}{expressions}{suffix}" - 780 return "" - 781 - 782 def with_properties(self, properties: exp.Properties) -> str: - 783 return self.properties(properties, prefix=self.seg("WITH")) - 784 - 785 def locate_properties( - 786 self, properties: exp.Properties - 787 ) -> t.Dict[exp.Properties.Location, list[exp.Property]]: - 788 properties_locs: t.Dict[exp.Properties.Location, list[exp.Property]] = { - 789 key: [] for key in exp.Properties.Location - 790 } + 752 def index_sql(self, expression: exp.Index) -> str: + 753 this = self.sql(expression, "this") + 754 table = self.sql(expression, "table") + 755 columns = self.sql(expression, "columns") + 756 return f"{this} ON {table} {columns}" + 757 + 758 def identifier_sql(self, expression: exp.Identifier) -> str: + 759 text = expression.name + 760 text = text.lower() if self.normalize and not expression.quoted else text + 761 text = text.replace(self.identifier_end, self._escaped_identifier_end) + 762 if expression.quoted or should_identify(text, self.identify): + 763 text = f"{self.identifier_start}{text}{self.identifier_end}" + 764 return text + 765 + 766 def national_sql(self, expression: exp.National) -> str: + 767 return f"N{self.sql(expression, 'this')}" + 768 + 769 def partition_sql(self, expression: exp.Partition) -> str: + 770 return f"PARTITION({self.expressions(expression)})" + 771 + 772 def properties_sql(self, expression: exp.Properties) -> str: + 773 root_properties = [] + 774 with_properties = [] + 775 + 776 for p in expression.expressions: + 777 p_loc = self.PROPERTIES_LOCATION[p.__class__] + 778 if p_loc == exp.Properties.Location.POST_WITH: + 779 with_properties.append(p) + 780 elif p_loc == exp.Properties.Location.POST_SCHEMA: + 781 root_properties.append(p) + 782 + 783 return self.root_properties( + 784 exp.Properties(expressions=root_properties) + 785 ) + self.with_properties(exp.Properties(expressions=with_properties)) + 786 + 787 def root_properties(self, properties: exp.Properties) -> str: + 788 if properties.expressions: + 789 return self.sep() + self.expressions(properties, indent=False, sep=" ") + 790 return "" 791 - 792 for p in properties.expressions: - 793 p_loc = self.PROPERTIES_LOCATION[p.__class__] - 794 if p_loc == exp.Properties.Location.POST_NAME: - 795 properties_locs[exp.Properties.Location.POST_NAME].append(p) - 796 elif p_loc == exp.Properties.Location.POST_INDEX: - 797 properties_locs[exp.Properties.Location.POST_INDEX].append(p) - 798 elif p_loc == exp.Properties.Location.POST_SCHEMA: - 799 properties_locs[exp.Properties.Location.POST_SCHEMA].append(p) - 800 elif p_loc == exp.Properties.Location.POST_WITH: - 801 properties_locs[exp.Properties.Location.POST_WITH].append(p) - 802 elif p_loc == exp.Properties.Location.POST_CREATE: - 803 properties_locs[exp.Properties.Location.POST_CREATE].append(p) - 804 elif p_loc == exp.Properties.Location.POST_ALIAS: - 805 properties_locs[exp.Properties.Location.POST_ALIAS].append(p) - 806 elif p_loc == exp.Properties.Location.POST_EXPRESSION: - 807 properties_locs[exp.Properties.Location.POST_EXPRESSION].append(p) - 808 elif p_loc == exp.Properties.Location.UNSUPPORTED: - 809 self.unsupported(f"Unsupported property {p.key}") - 810 - 811 return properties_locs - 812 - 813 def property_sql(self, expression: exp.Property) -> str: - 814 property_cls = expression.__class__ - 815 if property_cls == exp.Property: - 816 return f"{expression.name}={self.sql(expression, 'value')}" - 817 - 818 property_name = exp.Properties.PROPERTY_TO_NAME.get(property_cls) - 819 if not property_name: - 820 self.unsupported(f"Unsupported property {expression.key}") - 821 - 822 return f"{property_name}={self.sql(expression, 'this')}" - 823 - 824 def likeproperty_sql(self, expression: exp.LikeProperty) -> str: - 825 options = " ".join(f"{e.name} {self.sql(e, 'value')}" for e in expression.expressions) - 826 options = f" {options}" if options else "" - 827 return f"LIKE {self.sql(expression, 'this')}{options}" - 828 - 829 def fallbackproperty_sql(self, expression: exp.FallbackProperty) -> str: - 830 no = "NO " if expression.args.get("no") else "" - 831 protection = " PROTECTION" if expression.args.get("protection") else "" - 832 return f"{no}FALLBACK{protection}" - 833 - 834 def journalproperty_sql(self, expression: exp.JournalProperty) -> str: - 835 no = "NO " if expression.args.get("no") else "" - 836 dual = "DUAL " if expression.args.get("dual") else "" - 837 before = "BEFORE " if expression.args.get("before") else "" - 838 return f"{no}{dual}{before}JOURNAL" - 839 - 840 def freespaceproperty_sql(self, expression: exp.FreespaceProperty) -> str: - 841 freespace = self.sql(expression, "this") - 842 percent = " PERCENT" if expression.args.get("percent") else "" - 843 return f"FREESPACE={freespace}{percent}" - 844 - 845 def afterjournalproperty_sql(self, expression: exp.AfterJournalProperty) -> str: - 846 no = "NO " if expression.args.get("no") else "" - 847 dual = "DUAL " if expression.args.get("dual") else "" - 848 local = "" - 849 if expression.args.get("local") is not None: - 850 local = "LOCAL " if expression.args.get("local") else "NOT LOCAL " - 851 return f"{no}{dual}{local}AFTER JOURNAL" + 792 def properties( + 793 self, + 794 properties: exp.Properties, + 795 prefix: str = "", + 796 sep: str = ", ", + 797 suffix: str = "", + 798 wrapped: bool = True, + 799 ) -> str: + 800 if properties.expressions: + 801 expressions = self.expressions(properties, sep=sep, indent=False) + 802 expressions = self.wrap(expressions) if wrapped else expressions + 803 return f"{prefix}{' ' if prefix and prefix != ' ' else ''}{expressions}{suffix}" + 804 return "" + 805 + 806 def with_properties(self, properties: exp.Properties) -> str: + 807 return self.properties(properties, prefix=self.seg("WITH")) + 808 + 809 def locate_properties( + 810 self, properties: exp.Properties + 811 ) -> t.Dict[exp.Properties.Location, list[exp.Property]]: + 812 properties_locs: t.Dict[exp.Properties.Location, list[exp.Property]] = { + 813 key: [] for key in exp.Properties.Location + 814 } + 815 + 816 for p in properties.expressions: + 817 p_loc = self.PROPERTIES_LOCATION[p.__class__] + 818 if p_loc == exp.Properties.Location.POST_NAME: + 819 properties_locs[exp.Properties.Location.POST_NAME].append(p) + 820 elif p_loc == exp.Properties.Location.POST_INDEX: + 821 properties_locs[exp.Properties.Location.POST_INDEX].append(p) + 822 elif p_loc == exp.Properties.Location.POST_SCHEMA: + 823 properties_locs[exp.Properties.Location.POST_SCHEMA].append(p) + 824 elif p_loc == exp.Properties.Location.POST_WITH: + 825 properties_locs[exp.Properties.Location.POST_WITH].append(p) + 826 elif p_loc == exp.Properties.Location.POST_CREATE: + 827 properties_locs[exp.Properties.Location.POST_CREATE].append(p) + 828 elif p_loc == exp.Properties.Location.POST_ALIAS: + 829 properties_locs[exp.Properties.Location.POST_ALIAS].append(p) + 830 elif p_loc == exp.Properties.Location.POST_EXPRESSION: + 831 properties_locs[exp.Properties.Location.POST_EXPRESSION].append(p) + 832 elif p_loc == exp.Properties.Location.UNSUPPORTED: + 833 self.unsupported(f"Unsupported property {p.key}") + 834 + 835 return properties_locs + 836 + 837 def property_sql(self, expression: exp.Property) -> str: + 838 property_cls = expression.__class__ + 839 if property_cls == exp.Property: + 840 return f"{expression.name}={self.sql(expression, 'value')}" + 841 + 842 property_name = exp.Properties.PROPERTY_TO_NAME.get(property_cls) + 843 if not property_name: + 844 self.unsupported(f"Unsupported property {expression.key}") + 845 + 846 return f"{property_name}={self.sql(expression, 'this')}" + 847 + 848 def likeproperty_sql(self, expression: exp.LikeProperty) -> str: + 849 options = " ".join(f"{e.name} {self.sql(e, 'value')}" for e in expression.expressions) + 850 options = f" {options}" if options else "" + 851 return f"LIKE {self.sql(expression, 'this')}{options}" 852 - 853 def checksumproperty_sql(self, expression: exp.ChecksumProperty) -> str: - 854 if expression.args.get("default"): - 855 property = "DEFAULT" - 856 elif expression.args.get("on"): - 857 property = "ON" - 858 else: - 859 property = "OFF" - 860 return f"CHECKSUM={property}" - 861 - 862 def mergeblockratioproperty_sql(self, expression: exp.MergeBlockRatioProperty) -> str: - 863 if expression.args.get("no"): - 864 return "NO MERGEBLOCKRATIO" - 865 if expression.args.get("default"): - 866 return "DEFAULT MERGEBLOCKRATIO" - 867 - 868 percent = " PERCENT" if expression.args.get("percent") else "" - 869 return f"MERGEBLOCKRATIO={self.sql(expression, 'this')}{percent}" - 870 - 871 def datablocksizeproperty_sql(self, expression: exp.DataBlocksizeProperty) -> str: - 872 default = expression.args.get("default") - 873 min = expression.args.get("min") - 874 if default is not None or min is not None: - 875 if default: - 876 property = "DEFAULT" - 877 elif min: - 878 property = "MINIMUM" - 879 else: - 880 property = "MAXIMUM" - 881 return f"{property} DATABLOCKSIZE" + 853 def fallbackproperty_sql(self, expression: exp.FallbackProperty) -> str: + 854 no = "NO " if expression.args.get("no") else "" + 855 protection = " PROTECTION" if expression.args.get("protection") else "" + 856 return f"{no}FALLBACK{protection}" + 857 + 858 def journalproperty_sql(self, expression: exp.JournalProperty) -> str: + 859 no = "NO " if expression.args.get("no") else "" + 860 dual = "DUAL " if expression.args.get("dual") else "" + 861 before = "BEFORE " if expression.args.get("before") else "" + 862 return f"{no}{dual}{before}JOURNAL" + 863 + 864 def freespaceproperty_sql(self, expression: exp.FreespaceProperty) -> str: + 865 freespace = self.sql(expression, "this") + 866 percent = " PERCENT" if expression.args.get("percent") else "" + 867 return f"FREESPACE={freespace}{percent}" + 868 + 869 def afterjournalproperty_sql(self, expression: exp.AfterJournalProperty) -> str: + 870 no = "NO " if expression.args.get("no") else "" + 871 dual = "DUAL " if expression.args.get("dual") else "" + 872 local = "" + 873 if expression.args.get("local") is not None: + 874 local = "LOCAL " if expression.args.get("local") else "NOT LOCAL " + 875 return f"{no}{dual}{local}AFTER JOURNAL" + 876 + 877 def checksumproperty_sql(self, expression: exp.ChecksumProperty) -> str: + 878 if expression.args.get("default"): + 879 property = "DEFAULT" + 880 elif expression.args.get("on"): + 881 property = "ON" 882 else: - 883 units = expression.args.get("units") - 884 units = f" {units}" if units else "" - 885 return f"DATABLOCKSIZE={self.sql(expression, 'size')}{units}" - 886 - 887 def blockcompressionproperty_sql(self, expression: exp.BlockCompressionProperty) -> str: - 888 autotemp = expression.args.get("autotemp") - 889 always = expression.args.get("always") - 890 default = expression.args.get("default") - 891 manual = expression.args.get("manual") - 892 never = expression.args.get("never") - 893 - 894 if autotemp is not None: - 895 property = f"AUTOTEMP({self.expressions(autotemp)})" - 896 elif always: - 897 property = "ALWAYS" - 898 elif default: - 899 property = "DEFAULT" - 900 elif manual: - 901 property = "MANUAL" - 902 elif never: - 903 property = "NEVER" - 904 return f"BLOCKCOMPRESSION={property}" - 905 - 906 def isolatedloadingproperty_sql(self, expression: exp.IsolatedLoadingProperty) -> str: - 907 no = expression.args.get("no") - 908 no = " NO" if no else "" - 909 concurrent = expression.args.get("concurrent") - 910 concurrent = " CONCURRENT" if concurrent else "" - 911 - 912 for_ = "" - 913 if expression.args.get("for_all"): - 914 for_ = " FOR ALL" - 915 elif expression.args.get("for_insert"): - 916 for_ = " FOR INSERT" - 917 elif expression.args.get("for_none"): - 918 for_ = " FOR NONE" - 919 return f"WITH{no}{concurrent} ISOLATED LOADING{for_}" - 920 - 921 def lockingproperty_sql(self, expression: exp.LockingProperty) -> str: - 922 kind = expression.args.get("kind") - 923 this: str = f" {this}" if expression.this else "" - 924 for_or_in = expression.args.get("for_or_in") - 925 lock_type = expression.args.get("lock_type") - 926 override = " OVERRIDE" if expression.args.get("override") else "" - 927 return f"LOCKING {kind}{this} {for_or_in} {lock_type}{override}" - 928 - 929 def withdataproperty_sql(self, expression: exp.WithDataProperty) -> str: - 930 data_sql = f"WITH {'NO ' if expression.args.get('no') else ''}DATA" - 931 statistics = expression.args.get("statistics") - 932 statistics_sql = "" - 933 if statistics is not None: - 934 statistics_sql = f" AND {'NO ' if not statistics else ''}STATISTICS" - 935 return f"{data_sql}{statistics_sql}" - 936 - 937 def insert_sql(self, expression: exp.Insert) -> str: - 938 overwrite = expression.args.get("overwrite") - 939 - 940 if isinstance(expression.this, exp.Directory): - 941 this = "OVERWRITE " if overwrite else "INTO " - 942 else: - 943 this = "OVERWRITE TABLE " if overwrite else "INTO " + 883 property = "OFF" + 884 return f"CHECKSUM={property}" + 885 + 886 def mergeblockratioproperty_sql(self, expression: exp.MergeBlockRatioProperty) -> str: + 887 if expression.args.get("no"): + 888 return "NO MERGEBLOCKRATIO" + 889 if expression.args.get("default"): + 890 return "DEFAULT MERGEBLOCKRATIO" + 891 + 892 percent = " PERCENT" if expression.args.get("percent") else "" + 893 return f"MERGEBLOCKRATIO={self.sql(expression, 'this')}{percent}" + 894 + 895 def datablocksizeproperty_sql(self, expression: exp.DataBlocksizeProperty) -> str: + 896 default = expression.args.get("default") + 897 min = expression.args.get("min") + 898 if default is not None or min is not None: + 899 if default: + 900 property = "DEFAULT" + 901 elif min: + 902 property = "MINIMUM" + 903 else: + 904 property = "MAXIMUM" + 905 return f"{property} DATABLOCKSIZE" + 906 else: + 907 units = expression.args.get("units") + 908 units = f" {units}" if units else "" + 909 return f"DATABLOCKSIZE={self.sql(expression, 'size')}{units}" + 910 + 911 def blockcompressionproperty_sql(self, expression: exp.BlockCompressionProperty) -> str: + 912 autotemp = expression.args.get("autotemp") + 913 always = expression.args.get("always") + 914 default = expression.args.get("default") + 915 manual = expression.args.get("manual") + 916 never = expression.args.get("never") + 917 + 918 if autotemp is not None: + 919 property = f"AUTOTEMP({self.expressions(autotemp)})" + 920 elif always: + 921 property = "ALWAYS" + 922 elif default: + 923 property = "DEFAULT" + 924 elif manual: + 925 property = "MANUAL" + 926 elif never: + 927 property = "NEVER" + 928 return f"BLOCKCOMPRESSION={property}" + 929 + 930 def isolatedloadingproperty_sql(self, expression: exp.IsolatedLoadingProperty) -> str: + 931 no = expression.args.get("no") + 932 no = " NO" if no else "" + 933 concurrent = expression.args.get("concurrent") + 934 concurrent = " CONCURRENT" if concurrent else "" + 935 + 936 for_ = "" + 937 if expression.args.get("for_all"): + 938 for_ = " FOR ALL" + 939 elif expression.args.get("for_insert"): + 940 for_ = " FOR INSERT" + 941 elif expression.args.get("for_none"): + 942 for_ = " FOR NONE" + 943 return f"WITH{no}{concurrent} ISOLATED LOADING{for_}" 944 - 945 alternative = expression.args.get("alternative") - 946 alternative = f" OR {alternative} " if alternative else " " - 947 this = f"{this}{self.sql(expression, 'this')}" - 948 - 949 exists = " IF EXISTS " if expression.args.get("exists") else " " - 950 partition_sql = ( - 951 self.sql(expression, "partition") if expression.args.get("partition") else "" - 952 ) - 953 expression_sql = self.sql(expression, "expression") - 954 returning = self.sql(expression, "returning") - 955 sep = self.sep() if partition_sql else "" - 956 sql = f"INSERT{alternative}{this}{exists}{partition_sql}{sep}{expression_sql}{returning}" - 957 return self.prepend_ctes(expression, sql) - 958 - 959 def intersect_sql(self, expression: exp.Intersect) -> str: - 960 return self.prepend_ctes( - 961 expression, - 962 self.set_operation(expression, self.intersect_op(expression)), - 963 ) - 964 - 965 def intersect_op(self, expression: exp.Intersect) -> str: - 966 return f"INTERSECT{'' if expression.args.get('distinct') else ' ALL'}" - 967 - 968 def introducer_sql(self, expression: exp.Introducer) -> str: - 969 return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}" - 970 - 971 def pseudotype_sql(self, expression: exp.PseudoType) -> str: - 972 return expression.name.upper() - 973 - 974 def returning_sql(self, expression: exp.Returning) -> str: - 975 return f"{self.seg('RETURNING')} {self.expressions(expression, flat=True)}" - 976 - 977 def rowformatdelimitedproperty_sql(self, expression: exp.RowFormatDelimitedProperty) -> str: - 978 fields = expression.args.get("fields") - 979 fields = f" FIELDS TERMINATED BY {fields}" if fields else "" - 980 escaped = expression.args.get("escaped") - 981 escaped = f" ESCAPED BY {escaped}" if escaped else "" - 982 items = expression.args.get("collection_items") - 983 items = f" COLLECTION ITEMS TERMINATED BY {items}" if items else "" - 984 keys = expression.args.get("map_keys") - 985 keys = f" MAP KEYS TERMINATED BY {keys}" if keys else "" - 986 lines = expression.args.get("lines") - 987 lines = f" LINES TERMINATED BY {lines}" if lines else "" - 988 null = expression.args.get("null") - 989 null = f" NULL DEFINED AS {null}" if null else "" - 990 return f"ROW FORMAT DELIMITED{fields}{escaped}{items}{keys}{lines}{null}" + 945 def lockingproperty_sql(self, expression: exp.LockingProperty) -> str: + 946 kind = expression.args.get("kind") + 947 this: str = f" {this}" if expression.this else "" + 948 for_or_in = expression.args.get("for_or_in") + 949 lock_type = expression.args.get("lock_type") + 950 override = " OVERRIDE" if expression.args.get("override") else "" + 951 return f"LOCKING {kind}{this} {for_or_in} {lock_type}{override}" + 952 + 953 def withdataproperty_sql(self, expression: exp.WithDataProperty) -> str: + 954 data_sql = f"WITH {'NO ' if expression.args.get('no') else ''}DATA" + 955 statistics = expression.args.get("statistics") + 956 statistics_sql = "" + 957 if statistics is not None: + 958 statistics_sql = f" AND {'NO ' if not statistics else ''}STATISTICS" + 959 return f"{data_sql}{statistics_sql}" + 960 + 961 def insert_sql(self, expression: exp.Insert) -> str: + 962 overwrite = expression.args.get("overwrite") + 963 + 964 if isinstance(expression.this, exp.Directory): + 965 this = "OVERWRITE " if overwrite else "INTO " + 966 else: + 967 this = "OVERWRITE TABLE " if overwrite else "INTO " + 968 + 969 alternative = expression.args.get("alternative") + 970 alternative = f" OR {alternative} " if alternative else " " + 971 this = f"{this}{self.sql(expression, 'this')}" + 972 + 973 exists = " IF EXISTS " if expression.args.get("exists") else " " + 974 partition_sql = ( + 975 self.sql(expression, "partition") if expression.args.get("partition") else "" + 976 ) + 977 expression_sql = self.sql(expression, "expression") + 978 returning = self.sql(expression, "returning") + 979 sep = self.sep() if partition_sql else "" + 980 sql = f"INSERT{alternative}{this}{exists}{partition_sql}{sep}{expression_sql}{returning}" + 981 return self.prepend_ctes(expression, sql) + 982 + 983 def intersect_sql(self, expression: exp.Intersect) -> str: + 984 return self.prepend_ctes( + 985 expression, + 986 self.set_operation(expression, self.intersect_op(expression)), + 987 ) + 988 + 989 def intersect_op(self, expression: exp.Intersect) -> str: + 990 return f"INTERSECT{'' if expression.args.get('distinct') else ' ALL'}" 991 - 992 def table_sql(self, expression: exp.Table, sep: str = " AS ") -> str: - 993 table = ".".join( - 994 part - 995 for part in [ - 996 self.sql(expression, "catalog"), - 997 self.sql(expression, "db"), - 998 self.sql(expression, "this"), - 999 ] -1000 if part -1001 ) -1002 -1003 alias = self.sql(expression, "alias") -1004 alias = f"{sep}{alias}" if alias else "" -1005 hints = self.expressions(expression, key="hints", sep=", ", flat=True) -1006 hints = f" WITH ({hints})" if hints else "" -1007 laterals = self.expressions(expression, key="laterals", sep="") -1008 joins = self.expressions(expression, key="joins", sep="") -1009 pivots = self.expressions(expression, key="pivots", sep="") -1010 system_time = expression.args.get("system_time") -1011 system_time = f" {self.sql(expression, 'system_time')}" if system_time else "" -1012 -1013 return f"{table}{system_time}{alias}{hints}{laterals}{joins}{pivots}" -1014 -1015 def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str: -1016 if self.alias_post_tablesample and expression.this.alias: -1017 this = self.sql(expression.this, "this") -1018 alias = f" AS {self.sql(expression.this, 'alias')}" -1019 else: -1020 this = self.sql(expression, "this") -1021 alias = "" -1022 method = self.sql(expression, "method") -1023 method = f"{method.upper()} " if method else "" -1024 numerator = self.sql(expression, "bucket_numerator") -1025 denominator = self.sql(expression, "bucket_denominator") -1026 field = self.sql(expression, "bucket_field") -1027 field = f" ON {field}" if field else "" -1028 bucket = f"BUCKET {numerator} OUT OF {denominator}{field}" if numerator else "" -1029 percent = self.sql(expression, "percent") -1030 percent = f"{percent} PERCENT" if percent else "" -1031 rows = self.sql(expression, "rows") -1032 rows = f"{rows} ROWS" if rows else "" -1033 size = self.sql(expression, "size") -1034 seed = self.sql(expression, "seed") -1035 seed = f" {seed_prefix} ({seed})" if seed else "" -1036 kind = expression.args.get("kind", "TABLESAMPLE") -1037 return f"{this} {kind} {method}({bucket}{percent}{rows}{size}){seed}{alias}" + 992 def introducer_sql(self, expression: exp.Introducer) -> str: + 993 return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}" + 994 + 995 def pseudotype_sql(self, expression: exp.PseudoType) -> str: + 996 return expression.name.upper() + 997 + 998 def returning_sql(self, expression: exp.Returning) -> str: + 999 return f"{self.seg('RETURNING')} {self.expressions(expression, flat=True)}" +1000 +1001 def rowformatdelimitedproperty_sql(self, expression: exp.RowFormatDelimitedProperty) -> str: +1002 fields = expression.args.get("fields") +1003 fields = f" FIELDS TERMINATED BY {fields}" if fields else "" +1004 escaped = expression.args.get("escaped") +1005 escaped = f" ESCAPED BY {escaped}" if escaped else "" +1006 items = expression.args.get("collection_items") +1007 items = f" COLLECTION ITEMS TERMINATED BY {items}" if items else "" +1008 keys = expression.args.get("map_keys") +1009 keys = f" MAP KEYS TERMINATED BY {keys}" if keys else "" +1010 lines = expression.args.get("lines") +1011 lines = f" LINES TERMINATED BY {lines}" if lines else "" +1012 null = expression.args.get("null") +1013 null = f" NULL DEFINED AS {null}" if null else "" +1014 return f"ROW FORMAT DELIMITED{fields}{escaped}{items}{keys}{lines}{null}" +1015 +1016 def table_sql(self, expression: exp.Table, sep: str = " AS ") -> str: +1017 table = ".".join( +1018 part +1019 for part in [ +1020 self.sql(expression, "catalog"), +1021 self.sql(expression, "db"), +1022 self.sql(expression, "this"), +1023 ] +1024 if part +1025 ) +1026 +1027 alias = self.sql(expression, "alias") +1028 alias = f"{sep}{alias}" if alias else "" +1029 hints = self.expressions(expression, key="hints", sep=", ", flat=True) +1030 hints = f" WITH ({hints})" if hints else "" +1031 laterals = self.expressions(expression, key="laterals", sep="") +1032 joins = self.expressions(expression, key="joins", sep="") +1033 pivots = self.expressions(expression, key="pivots", sep="") +1034 system_time = expression.args.get("system_time") +1035 system_time = f" {self.sql(expression, 'system_time')}" if system_time else "" +1036 +1037 return f"{table}{system_time}{alias}{hints}{laterals}{joins}{pivots}" 1038 -1039 def pivot_sql(self, expression: exp.Pivot) -> str: -1040 this = self.sql(expression, "this") -1041 alias = self.sql(expression, "alias") -1042 alias = f" AS {alias}" if alias else "" -1043 unpivot = expression.args.get("unpivot") -1044 direction = "UNPIVOT" if unpivot else "PIVOT" -1045 expressions = self.expressions(expression, key="expressions") -1046 field = self.sql(expression, "field") -1047 return f"{this} {direction}({expressions} FOR {field}){alias}" -1048 -1049 def tuple_sql(self, expression: exp.Tuple) -> str: -1050 return f"({self.expressions(expression, flat=True)})" -1051 -1052 def update_sql(self, expression: exp.Update) -> str: -1053 this = self.sql(expression, "this") -1054 set_sql = self.expressions(expression, flat=True) -1055 from_sql = self.sql(expression, "from") -1056 where_sql = self.sql(expression, "where") -1057 returning = self.sql(expression, "returning") -1058 sql = f"UPDATE {this} SET {set_sql}{from_sql}{where_sql}{returning}" -1059 return self.prepend_ctes(expression, sql) -1060 -1061 def values_sql(self, expression: exp.Values) -> str: -1062 args = self.expressions(expression) -1063 alias = self.sql(expression, "alias") -1064 values = f"VALUES{self.seg('')}{args}" -1065 values = ( -1066 f"({values})" -1067 if self.WRAP_DERIVED_VALUES and (alias or isinstance(expression.parent, exp.From)) -1068 else values -1069 ) -1070 return f"{values} AS {alias}" if alias else values -1071 -1072 def var_sql(self, expression: exp.Var) -> str: -1073 return self.sql(expression, "this") -1074 -1075 def into_sql(self, expression: exp.Into) -> str: -1076 temporary = " TEMPORARY" if expression.args.get("temporary") else "" -1077 unlogged = " UNLOGGED" if expression.args.get("unlogged") else "" -1078 return f"{self.seg('INTO')}{temporary or unlogged} {self.sql(expression, 'this')}" -1079 -1080 def from_sql(self, expression: exp.From) -> str: -1081 expressions = self.expressions(expression, flat=True) -1082 return f"{self.seg('FROM')} {expressions}" -1083 -1084 def group_sql(self, expression: exp.Group) -> str: -1085 group_by = self.op_expressions("GROUP BY", expression) -1086 grouping_sets = self.expressions(expression, key="grouping_sets", indent=False) -1087 grouping_sets = ( -1088 f"{self.seg('GROUPING SETS')} {self.wrap(grouping_sets)}" if grouping_sets else "" -1089 ) -1090 -1091 cube = expression.args.get("cube", []) -1092 if seq_get(cube, 0) is True: -1093 return f"{group_by}{self.seg('WITH CUBE')}" -1094 else: -1095 cube_sql = self.expressions(expression, key="cube", indent=False) -1096 cube_sql = f"{self.seg('CUBE')} {self.wrap(cube_sql)}" if cube_sql else "" -1097 -1098 rollup = expression.args.get("rollup", []) -1099 if seq_get(rollup, 0) is True: -1100 return f"{group_by}{self.seg('WITH ROLLUP')}" -1101 else: -1102 rollup_sql = self.expressions(expression, key="rollup", indent=False) -1103 rollup_sql = f"{self.seg('ROLLUP')} {self.wrap(rollup_sql)}" if rollup_sql else "" -1104 -1105 groupings = csv(grouping_sets, cube_sql, rollup_sql, sep=",") -1106 -1107 if expression.args.get("expressions") and groupings: -1108 group_by = f"{group_by}," -1109 -1110 return f"{group_by}{groupings}" -1111 -1112 def having_sql(self, expression: exp.Having) -> str: -1113 this = self.indent(self.sql(expression, "this")) -1114 return f"{self.seg('HAVING')}{self.sep()}{this}" -1115 -1116 def join_sql(self, expression: exp.Join) -> str: -1117 op_sql = self.seg( -1118 " ".join( -1119 op -1120 for op in ( -1121 "NATURAL" if expression.args.get("natural") else None, -1122 expression.side, -1123 expression.kind, -1124 "JOIN", -1125 ) -1126 if op -1127 ) -1128 ) -1129 on_sql = self.sql(expression, "on") -1130 using = expression.args.get("using") -1131 -1132 if not on_sql and using: -1133 on_sql = csv(*(self.sql(column) for column in using)) -1134 -1135 if on_sql: -1136 on_sql = self.indent(on_sql, skip_first=True) -1137 space = self.seg(" " * self.pad) if self.pretty else " " -1138 if using: -1139 on_sql = f"{space}USING ({on_sql})" -1140 else: -1141 on_sql = f"{space}ON {on_sql}" -1142 -1143 expression_sql = self.sql(expression, "expression") -1144 this_sql = self.sql(expression, "this") -1145 return f"{expression_sql}{op_sql} {this_sql}{on_sql}" -1146 -1147 def lambda_sql(self, expression: exp.Lambda, arrow_sep: str = "->") -> str: -1148 args = self.expressions(expression, flat=True) -1149 args = f"({args})" if len(args.split(",")) > 1 else args -1150 return f"{args} {arrow_sep} {self.sql(expression, 'this')}" -1151 -1152 def lateral_sql(self, expression: exp.Lateral) -> str: -1153 this = self.sql(expression, "this") -1154 -1155 if isinstance(expression.this, exp.Subquery): -1156 return f"LATERAL {this}" -1157 -1158 if expression.args.get("view"): -1159 alias = expression.args["alias"] -1160 columns = self.expressions(alias, key="columns", flat=True) -1161 table = f" {alias.name}" if alias.name else "" -1162 columns = f" AS {columns}" if columns else "" -1163 op_sql = self.seg(f"LATERAL VIEW{' OUTER' if expression.args.get('outer') else ''}") -1164 return f"{op_sql}{self.sep()}{this}{table}{columns}" -1165 -1166 alias = self.sql(expression, "alias") -1167 alias = f" AS {alias}" if alias else "" -1168 return f"LATERAL {this}{alias}" -1169 -1170 def limit_sql(self, expression: exp.Limit) -> str: -1171 this = self.sql(expression, "this") -1172 return f"{this}{self.seg('LIMIT')} {self.sql(expression, 'expression')}" -1173 -1174 def offset_sql(self, expression: exp.Offset) -> str: -1175 this = self.sql(expression, "this") -1176 return f"{this}{self.seg('OFFSET')} {self.sql(expression, 'expression')}" -1177 -1178 def setitem_sql(self, expression: exp.SetItem) -> str: -1179 kind = self.sql(expression, "kind") -1180 kind = f"{kind} " if kind else "" -1181 this = self.sql(expression, "this") -1182 expressions = self.expressions(expression) -1183 collate = self.sql(expression, "collate") -1184 collate = f" COLLATE {collate}" if collate else "" -1185 global_ = "GLOBAL " if expression.args.get("global") else "" -1186 return f"{global_}{kind}{this}{expressions}{collate}" -1187 -1188 def set_sql(self, expression: exp.Set) -> str: -1189 expressions = ( -1190 f" {self.expressions(expression, flat=True)}" if expression.expressions else "" -1191 ) -1192 return f"SET{expressions}" +1039 def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str: +1040 if self.alias_post_tablesample and expression.this.alias: +1041 this = self.sql(expression.this, "this") +1042 alias = f" AS {self.sql(expression.this, 'alias')}" +1043 else: +1044 this = self.sql(expression, "this") +1045 alias = "" +1046 method = self.sql(expression, "method") +1047 method = f"{method.upper()} " if method else "" +1048 numerator = self.sql(expression, "bucket_numerator") +1049 denominator = self.sql(expression, "bucket_denominator") +1050 field = self.sql(expression, "bucket_field") +1051 field = f" ON {field}" if field else "" +1052 bucket = f"BUCKET {numerator} OUT OF {denominator}{field}" if numerator else "" +1053 percent = self.sql(expression, "percent") +1054 percent = f"{percent} PERCENT" if percent else "" +1055 rows = self.sql(expression, "rows") +1056 rows = f"{rows} ROWS" if rows else "" +1057 size = self.sql(expression, "size") +1058 seed = self.sql(expression, "seed") +1059 seed = f" {seed_prefix} ({seed})" if seed else "" +1060 kind = expression.args.get("kind", "TABLESAMPLE") +1061 return f"{this} {kind} {method}({bucket}{percent}{rows}{size}){seed}{alias}" +1062 +1063 def pivot_sql(self, expression: exp.Pivot) -> str: +1064 this = self.sql(expression, "this") +1065 alias = self.sql(expression, "alias") +1066 alias = f" AS {alias}" if alias else "" +1067 unpivot = expression.args.get("unpivot") +1068 direction = "UNPIVOT" if unpivot else "PIVOT" +1069 expressions = self.expressions(expression, key="expressions") +1070 field = self.sql(expression, "field") +1071 return f"{this} {direction}({expressions} FOR {field}){alias}" +1072 +1073 def tuple_sql(self, expression: exp.Tuple) -> str: +1074 return f"({self.expressions(expression, flat=True)})" +1075 +1076 def update_sql(self, expression: exp.Update) -> str: +1077 this = self.sql(expression, "this") +1078 set_sql = self.expressions(expression, flat=True) +1079 from_sql = self.sql(expression, "from") +1080 where_sql = self.sql(expression, "where") +1081 returning = self.sql(expression, "returning") +1082 sql = f"UPDATE {this} SET {set_sql}{from_sql}{where_sql}{returning}" +1083 return self.prepend_ctes(expression, sql) +1084 +1085 def values_sql(self, expression: exp.Values) -> str: +1086 args = self.expressions(expression) +1087 alias = self.sql(expression, "alias") +1088 values = f"VALUES{self.seg('')}{args}" +1089 values = ( +1090 f"({values})" +1091 if self.WRAP_DERIVED_VALUES and (alias or isinstance(expression.parent, exp.From)) +1092 else values +1093 ) +1094 return f"{values} AS {alias}" if alias else values +1095 +1096 def var_sql(self, expression: exp.Var) -> str: +1097 return self.sql(expression, "this") +1098 +1099 def into_sql(self, expression: exp.Into) -> str: +1100 temporary = " TEMPORARY" if expression.args.get("temporary") else "" +1101 unlogged = " UNLOGGED" if expression.args.get("unlogged") else "" +1102 return f"{self.seg('INTO')}{temporary or unlogged} {self.sql(expression, 'this')}" +1103 +1104 def from_sql(self, expression: exp.From) -> str: +1105 expressions = self.expressions(expression, flat=True) +1106 return f"{self.seg('FROM')} {expressions}" +1107 +1108 def group_sql(self, expression: exp.Group) -> str: +1109 group_by = self.op_expressions("GROUP BY", expression) +1110 grouping_sets = self.expressions(expression, key="grouping_sets", indent=False) +1111 grouping_sets = ( +1112 f"{self.seg('GROUPING SETS')} {self.wrap(grouping_sets)}" if grouping_sets else "" +1113 ) +1114 +1115 cube = expression.args.get("cube", []) +1116 if seq_get(cube, 0) is True: +1117 return f"{group_by}{self.seg('WITH CUBE')}" +1118 else: +1119 cube_sql = self.expressions(expression, key="cube", indent=False) +1120 cube_sql = f"{self.seg('CUBE')} {self.wrap(cube_sql)}" if cube_sql else "" +1121 +1122 rollup = expression.args.get("rollup", []) +1123 if seq_get(rollup, 0) is True: +1124 return f"{group_by}{self.seg('WITH ROLLUP')}" +1125 else: +1126 rollup_sql = self.expressions(expression, key="rollup", indent=False) +1127 rollup_sql = f"{self.seg('ROLLUP')} {self.wrap(rollup_sql)}" if rollup_sql else "" +1128 +1129 groupings = csv(grouping_sets, cube_sql, rollup_sql, sep=",") +1130 +1131 if expression.args.get("expressions") and groupings: +1132 group_by = f"{group_by}," +1133 +1134 return f"{group_by}{groupings}" +1135 +1136 def having_sql(self, expression: exp.Having) -> str: +1137 this = self.indent(self.sql(expression, "this")) +1138 return f"{self.seg('HAVING')}{self.sep()}{this}" +1139 +1140 def join_sql(self, expression: exp.Join) -> str: +1141 op_sql = self.seg( +1142 " ".join( +1143 op +1144 for op in ( +1145 "NATURAL" if expression.args.get("natural") else None, +1146 expression.side, +1147 expression.kind, +1148 "JOIN", +1149 ) +1150 if op +1151 ) +1152 ) +1153 on_sql = self.sql(expression, "on") +1154 using = expression.args.get("using") +1155 +1156 if not on_sql and using: +1157 on_sql = csv(*(self.sql(column) for column in using)) +1158 +1159 if on_sql: +1160 on_sql = self.indent(on_sql, skip_first=True) +1161 space = self.seg(" " * self.pad) if self.pretty else " " +1162 if using: +1163 on_sql = f"{space}USING ({on_sql})" +1164 else: +1165 on_sql = f"{space}ON {on_sql}" +1166 +1167 expression_sql = self.sql(expression, "expression") +1168 this_sql = self.sql(expression, "this") +1169 return f"{expression_sql}{op_sql} {this_sql}{on_sql}" +1170 +1171 def lambda_sql(self, expression: exp.Lambda, arrow_sep: str = "->") -> str: +1172 args = self.expressions(expression, flat=True) +1173 args = f"({args})" if len(args.split(",")) > 1 else args +1174 return f"{args} {arrow_sep} {self.sql(expression, 'this')}" +1175 +1176 def lateral_sql(self, expression: exp.Lateral) -> str: +1177 this = self.sql(expression, "this") +1178 +1179 if isinstance(expression.this, exp.Subquery): +1180 return f"LATERAL {this}" +1181 +1182 if expression.args.get("view"): +1183 alias = expression.args["alias"] +1184 columns = self.expressions(alias, key="columns", flat=True) +1185 table = f" {alias.name}" if alias.name else "" +1186 columns = f" AS {columns}" if columns else "" +1187 op_sql = self.seg(f"LATERAL VIEW{' OUTER' if expression.args.get('outer') else ''}") +1188 return f"{op_sql}{self.sep()}{this}{table}{columns}" +1189 +1190 alias = self.sql(expression, "alias") +1191 alias = f" AS {alias}" if alias else "" +1192 return f"LATERAL {this}{alias}" 1193 -1194 def lock_sql(self, expression: exp.Lock) -> str: -1195 if self.LOCKING_READS_SUPPORTED: -1196 lock_type = "UPDATE" if expression.args["update"] else "SHARE" -1197 return self.seg(f"FOR {lock_type}") -1198 -1199 self.unsupported("Locking reads using 'FOR UPDATE/SHARE' are not supported") -1200 return "" +1194 def limit_sql(self, expression: exp.Limit) -> str: +1195 this = self.sql(expression, "this") +1196 return f"{this}{self.seg('LIMIT')} {self.sql(expression, 'expression')}" +1197 +1198 def offset_sql(self, expression: exp.Offset) -> str: +1199 this = self.sql(expression, "this") +1200 return f"{this}{self.seg('OFFSET')} {self.sql(expression, 'expression')}" 1201 -1202 def literal_sql(self, expression: exp.Literal) -> str: -1203 text = expression.this or "" -1204 if expression.is_string: -1205 text = text.replace(self.quote_end, self._escaped_quote_end) -1206 if self.pretty: -1207 text = text.replace("\n", self.SENTINEL_LINE_BREAK) -1208 text = f"{self.quote_start}{text}{self.quote_end}" -1209 return text -1210 -1211 def loaddata_sql(self, expression: exp.LoadData) -> str: -1212 local = " LOCAL" if expression.args.get("local") else "" -1213 inpath = f" INPATH {self.sql(expression, 'inpath')}" -1214 overwrite = " OVERWRITE" if expression.args.get("overwrite") else "" -1215 this = f" INTO TABLE {self.sql(expression, 'this')}" -1216 partition = self.sql(expression, "partition") -1217 partition = f" {partition}" if partition else "" -1218 input_format = self.sql(expression, "input_format") -1219 input_format = f" INPUTFORMAT {input_format}" if input_format else "" -1220 serde = self.sql(expression, "serde") -1221 serde = f" SERDE {serde}" if serde else "" -1222 return f"LOAD DATA{local}{inpath}{overwrite}{this}{partition}{input_format}{serde}" -1223 -1224 def null_sql(self, *_) -> str: -1225 return "NULL" -1226 -1227 def boolean_sql(self, expression: exp.Boolean) -> str: -1228 return "TRUE" if expression.this else "FALSE" -1229 -1230 def order_sql(self, expression: exp.Order, flat: bool = False) -> str: -1231 this = self.sql(expression, "this") -1232 this = f"{this} " if this else this -1233 return self.op_expressions(f"{this}ORDER BY", expression, flat=this or flat) # type: ignore -1234 -1235 def cluster_sql(self, expression: exp.Cluster) -> str: -1236 return self.op_expressions("CLUSTER BY", expression) +1202 def setitem_sql(self, expression: exp.SetItem) -> str: +1203 kind = self.sql(expression, "kind") +1204 kind = f"{kind} " if kind else "" +1205 this = self.sql(expression, "this") +1206 expressions = self.expressions(expression) +1207 collate = self.sql(expression, "collate") +1208 collate = f" COLLATE {collate}" if collate else "" +1209 global_ = "GLOBAL " if expression.args.get("global") else "" +1210 return f"{global_}{kind}{this}{expressions}{collate}" +1211 +1212 def set_sql(self, expression: exp.Set) -> str: +1213 expressions = ( +1214 f" {self.expressions(expression, flat=True)}" if expression.expressions else "" +1215 ) +1216 return f"SET{expressions}" +1217 +1218 def pragma_sql(self, expression: exp.Pragma) -> str: +1219 return f"PRAGMA {self.sql(expression, 'this')}" +1220 +1221 def lock_sql(self, expression: exp.Lock) -> str: +1222 if self.LOCKING_READS_SUPPORTED: +1223 lock_type = "UPDATE" if expression.args["update"] else "SHARE" +1224 return self.seg(f"FOR {lock_type}") +1225 +1226 self.unsupported("Locking reads using 'FOR UPDATE/SHARE' are not supported") +1227 return "" +1228 +1229 def literal_sql(self, expression: exp.Literal) -> str: +1230 text = expression.this or "" +1231 if expression.is_string: +1232 text = text.replace(self.quote_end, self._escaped_quote_end) +1233 if self.pretty: +1234 text = text.replace("\n", self.SENTINEL_LINE_BREAK) +1235 text = f"{self.quote_start}{text}{self.quote_end}" +1236 return text 1237 -1238 def distribute_sql(self, expression: exp.Distribute) -> str: -1239 return self.op_expressions("DISTRIBUTE BY", expression) -1240 -1241 def sort_sql(self, expression: exp.Sort) -> str: -1242 return self.op_expressions("SORT BY", expression) -1243 -1244 def ordered_sql(self, expression: exp.Ordered) -> str: -1245 desc = expression.args.get("desc") -1246 asc = not desc -1247 -1248 nulls_first = expression.args.get("nulls_first") -1249 nulls_last = not nulls_first -1250 nulls_are_large = self.null_ordering == "nulls_are_large" -1251 nulls_are_small = self.null_ordering == "nulls_are_small" -1252 nulls_are_last = self.null_ordering == "nulls_are_last" +1238 def loaddata_sql(self, expression: exp.LoadData) -> str: +1239 local = " LOCAL" if expression.args.get("local") else "" +1240 inpath = f" INPATH {self.sql(expression, 'inpath')}" +1241 overwrite = " OVERWRITE" if expression.args.get("overwrite") else "" +1242 this = f" INTO TABLE {self.sql(expression, 'this')}" +1243 partition = self.sql(expression, "partition") +1244 partition = f" {partition}" if partition else "" +1245 input_format = self.sql(expression, "input_format") +1246 input_format = f" INPUTFORMAT {input_format}" if input_format else "" +1247 serde = self.sql(expression, "serde") +1248 serde = f" SERDE {serde}" if serde else "" +1249 return f"LOAD DATA{local}{inpath}{overwrite}{this}{partition}{input_format}{serde}" +1250 +1251 def null_sql(self, *_) -> str: +1252 return "NULL" 1253 -1254 sort_order = " DESC" if desc else "" -1255 nulls_sort_change = "" -1256 if nulls_first and ( -1257 (asc and nulls_are_large) or (desc and nulls_are_small) or nulls_are_last -1258 ): -1259 nulls_sort_change = " NULLS FIRST" -1260 elif ( -1261 nulls_last -1262 and ((asc and nulls_are_small) or (desc and nulls_are_large)) -1263 and not nulls_are_last -1264 ): -1265 nulls_sort_change = " NULLS LAST" -1266 -1267 if nulls_sort_change and not self.NULL_ORDERING_SUPPORTED: -1268 self.unsupported( -1269 "Sorting in an ORDER BY on NULLS FIRST/NULLS LAST is not supported by this dialect" -1270 ) -1271 nulls_sort_change = "" -1272 -1273 return f"{self.sql(expression, 'this')}{sort_order}{nulls_sort_change}" +1254 def boolean_sql(self, expression: exp.Boolean) -> str: +1255 return "TRUE" if expression.this else "FALSE" +1256 +1257 def order_sql(self, expression: exp.Order, flat: bool = False) -> str: +1258 this = self.sql(expression, "this") +1259 this = f"{this} " if this else this +1260 return self.op_expressions(f"{this}ORDER BY", expression, flat=this or flat) # type: ignore +1261 +1262 def cluster_sql(self, expression: exp.Cluster) -> str: +1263 return self.op_expressions("CLUSTER BY", expression) +1264 +1265 def distribute_sql(self, expression: exp.Distribute) -> str: +1266 return self.op_expressions("DISTRIBUTE BY", expression) +1267 +1268 def sort_sql(self, expression: exp.Sort) -> str: +1269 return self.op_expressions("SORT BY", expression) +1270 +1271 def ordered_sql(self, expression: exp.Ordered) -> str: +1272 desc = expression.args.get("desc") +1273 asc = not desc 1274 -1275 def matchrecognize_sql(self, expression: exp.MatchRecognize) -> str: -1276 partition = self.partition_by_sql(expression) -1277 order = self.sql(expression, "order") -1278 measures = self.sql(expression, "measures") -1279 measures = self.seg(f"MEASURES {measures}") if measures else "" -1280 rows = self.sql(expression, "rows") -1281 rows = self.seg(rows) if rows else "" -1282 after = self.sql(expression, "after") -1283 after = self.seg(after) if after else "" -1284 pattern = self.sql(expression, "pattern") -1285 pattern = self.seg(f"PATTERN ({pattern})") if pattern else "" -1286 define = self.sql(expression, "define") -1287 define = self.seg(f"DEFINE {define}") if define else "" -1288 body = "".join( -1289 ( -1290 partition, -1291 order, -1292 measures, -1293 rows, -1294 after, -1295 pattern, -1296 define, +1275 nulls_first = expression.args.get("nulls_first") +1276 nulls_last = not nulls_first +1277 nulls_are_large = self.null_ordering == "nulls_are_large" +1278 nulls_are_small = self.null_ordering == "nulls_are_small" +1279 nulls_are_last = self.null_ordering == "nulls_are_last" +1280 +1281 sort_order = " DESC" if desc else "" +1282 nulls_sort_change = "" +1283 if nulls_first and ( +1284 (asc and nulls_are_large) or (desc and nulls_are_small) or nulls_are_last +1285 ): +1286 nulls_sort_change = " NULLS FIRST" +1287 elif ( +1288 nulls_last +1289 and ((asc and nulls_are_small) or (desc and nulls_are_large)) +1290 and not nulls_are_last +1291 ): +1292 nulls_sort_change = " NULLS LAST" +1293 +1294 if nulls_sort_change and not self.NULL_ORDERING_SUPPORTED: +1295 self.unsupported( +1296 "Sorting in an ORDER BY on NULLS FIRST/NULLS LAST is not supported by this dialect" 1297 ) -1298 ) -1299 return f"{self.seg('MATCH_RECOGNIZE')} {self.wrap(body)}" -1300 -1301 def query_modifiers(self, expression: exp.Expression, *sqls: str) -> str: -1302 return csv( -1303 *sqls, -1304 *[self.sql(sql) for sql in expression.args.get("joins") or []], -1305 self.sql(expression, "match"), -1306 *[self.sql(sql) for sql in expression.args.get("laterals") or []], -1307 self.sql(expression, "where"), -1308 self.sql(expression, "group"), -1309 self.sql(expression, "having"), -1310 self.sql(expression, "qualify"), -1311 self.seg("WINDOW ") + self.expressions(expression, "windows", flat=True) -1312 if expression.args.get("windows") -1313 else "", -1314 self.sql(expression, "distribute"), -1315 self.sql(expression, "sort"), -1316 self.sql(expression, "cluster"), -1317 self.sql(expression, "order"), -1318 self.sql(expression, "limit"), -1319 self.sql(expression, "offset"), -1320 self.sql(expression, "lock"), -1321 self.sql(expression, "sample"), -1322 sep="", -1323 ) -1324 -1325 def select_sql(self, expression: exp.Select) -> str: -1326 hint = self.sql(expression, "hint") -1327 distinct = self.sql(expression, "distinct") -1328 distinct = f" {distinct}" if distinct else "" -1329 expressions = self.expressions(expression) -1330 expressions = f"{self.sep()}{expressions}" if expressions else expressions -1331 sql = self.query_modifiers( -1332 expression, -1333 f"SELECT{hint}{distinct}{expressions}", -1334 self.sql(expression, "into", comment=False), -1335 self.sql(expression, "from", comment=False), -1336 ) -1337 return self.prepend_ctes(expression, sql) -1338 -1339 def schema_sql(self, expression: exp.Schema) -> str: -1340 this = self.sql(expression, "this") -1341 this = f"{this} " if this else "" -1342 sql = f"({self.sep('')}{self.expressions(expression)}{self.seg(')', sep='')}" -1343 return f"{this}{sql}" -1344 -1345 def star_sql(self, expression: exp.Star) -> str: -1346 except_ = self.expressions(expression, key="except", flat=True) -1347 except_ = f"{self.seg(self.STAR_MAPPING['except'])} ({except_})" if except_ else "" -1348 replace = self.expressions(expression, key="replace", flat=True) -1349 replace = f"{self.seg(self.STAR_MAPPING['replace'])} ({replace})" if replace else "" -1350 return f"*{except_}{replace}" -1351 -1352 def structkwarg_sql(self, expression: exp.StructKwarg) -> str: -1353 return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}" -1354 -1355 def parameter_sql(self, expression: exp.Parameter) -> str: -1356 this = self.sql(expression, "this") -1357 this = f"{{{this}}}" if expression.args.get("wrapped") else f"{this}" -1358 return f"{self.PARAMETER_TOKEN}{this}" -1359 -1360 def sessionparameter_sql(self, expression: exp.SessionParameter) -> str: -1361 this = self.sql(expression, "this") -1362 kind = expression.text("kind") -1363 if kind: -1364 kind = f"{kind}." -1365 return f"@@{kind}{this}" -1366 -1367 def placeholder_sql(self, expression: exp.Placeholder) -> str: -1368 return f":{expression.name}" if expression.name else "?" -1369 -1370 def subquery_sql(self, expression: exp.Subquery, sep: str = " AS ") -> str: -1371 alias = self.sql(expression, "alias") -1372 alias = f"{sep}{alias}" if alias else "" -1373 -1374 sql = self.query_modifiers( -1375 expression, -1376 self.wrap(expression), -1377 alias, -1378 self.expressions(expression, key="pivots", sep=" "), -1379 ) -1380 -1381 return self.prepend_ctes(expression, sql) +1298 nulls_sort_change = "" +1299 +1300 return f"{self.sql(expression, 'this')}{sort_order}{nulls_sort_change}" +1301 +1302 def matchrecognize_sql(self, expression: exp.MatchRecognize) -> str: +1303 partition = self.partition_by_sql(expression) +1304 order = self.sql(expression, "order") +1305 measures = self.sql(expression, "measures") +1306 measures = self.seg(f"MEASURES {measures}") if measures else "" +1307 rows = self.sql(expression, "rows") +1308 rows = self.seg(rows) if rows else "" +1309 after = self.sql(expression, "after") +1310 after = self.seg(after) if after else "" +1311 pattern = self.sql(expression, "pattern") +1312 pattern = self.seg(f"PATTERN ({pattern})") if pattern else "" +1313 define = self.sql(expression, "define") +1314 define = self.seg(f"DEFINE {define}") if define else "" +1315 body = "".join( +1316 ( +1317 partition, +1318 order, +1319 measures, +1320 rows, +1321 after, +1322 pattern, +1323 define, +1324 ) +1325 ) +1326 return f"{self.seg('MATCH_RECOGNIZE')} {self.wrap(body)}" +1327 +1328 def query_modifiers(self, expression: exp.Expression, *sqls: str) -> str: +1329 limit = expression.args.get("limit") +1330 +1331 if self.LIMIT_FETCH == "LIMIT" and isinstance(limit, exp.Fetch): +1332 limit = exp.Limit(expression=limit.args.get("count")) +1333 elif self.LIMIT_FETCH == "FETCH" and isinstance(limit, exp.Limit): +1334 limit = exp.Fetch(direction="FIRST", count=limit.expression) +1335 +1336 fetch = isinstance(limit, exp.Fetch) +1337 +1338 return csv( +1339 *sqls, +1340 *[self.sql(sql) for sql in expression.args.get("joins") or []], +1341 self.sql(expression, "match"), +1342 *[self.sql(sql) for sql in expression.args.get("laterals") or []], +1343 self.sql(expression, "where"), +1344 self.sql(expression, "group"), +1345 self.sql(expression, "having"), +1346 self.sql(expression, "qualify"), +1347 self.seg("WINDOW ") + self.expressions(expression, "windows", flat=True) +1348 if expression.args.get("windows") +1349 else "", +1350 self.sql(expression, "distribute"), +1351 self.sql(expression, "sort"), +1352 self.sql(expression, "cluster"), +1353 self.sql(expression, "order"), +1354 self.sql(expression, "offset") if fetch else self.sql(limit), +1355 self.sql(limit) if fetch else self.sql(expression, "offset"), +1356 self.sql(expression, "lock"), +1357 self.sql(expression, "sample"), +1358 sep="", +1359 ) +1360 +1361 def select_sql(self, expression: exp.Select) -> str: +1362 kind = expression.args.get("kind") +1363 kind = f" AS {kind}" if kind else "" +1364 hint = self.sql(expression, "hint") +1365 distinct = self.sql(expression, "distinct") +1366 distinct = f" {distinct}" if distinct else "" +1367 expressions = self.expressions(expression) +1368 expressions = f"{self.sep()}{expressions}" if expressions else expressions +1369 sql = self.query_modifiers( +1370 expression, +1371 f"SELECT{kind}{hint}{distinct}{expressions}", +1372 self.sql(expression, "into", comment=False), +1373 self.sql(expression, "from", comment=False), +1374 ) +1375 return self.prepend_ctes(expression, sql) +1376 +1377 def schema_sql(self, expression: exp.Schema) -> str: +1378 this = self.sql(expression, "this") +1379 this = f"{this} " if this else "" +1380 sql = f"({self.sep('')}{self.expressions(expression)}{self.seg(')', sep='')}" +1381 return f"{this}{sql}" 1382 -1383 def qualify_sql(self, expression: exp.Qualify) -> str: -1384 this = self.indent(self.sql(expression, "this")) -1385 return f"{self.seg('QUALIFY')}{self.sep()}{this}" -1386 -1387 def union_sql(self, expression: exp.Union) -> str: -1388 return self.prepend_ctes( -1389 expression, -1390 self.set_operation(expression, self.union_op(expression)), -1391 ) +1383 def star_sql(self, expression: exp.Star) -> str: +1384 except_ = self.expressions(expression, key="except", flat=True) +1385 except_ = f"{self.seg(self.STAR_MAPPING['except'])} ({except_})" if except_ else "" +1386 replace = self.expressions(expression, key="replace", flat=True) +1387 replace = f"{self.seg(self.STAR_MAPPING['replace'])} ({replace})" if replace else "" +1388 return f"*{except_}{replace}" +1389 +1390 def structkwarg_sql(self, expression: exp.StructKwarg) -> str: +1391 return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}" 1392 -1393 def union_op(self, expression: exp.Union) -> str: -1394 kind = " DISTINCT" if self.EXPLICIT_UNION else "" -1395 kind = kind if expression.args.get("distinct") else " ALL" -1396 return f"UNION{kind}" +1393 def parameter_sql(self, expression: exp.Parameter) -> str: +1394 this = self.sql(expression, "this") +1395 this = f"{{{this}}}" if expression.args.get("wrapped") else f"{this}" +1396 return f"{self.PARAMETER_TOKEN}{this}" 1397 -1398 def unnest_sql(self, expression: exp.Unnest) -> str: -1399 args = self.expressions(expression, flat=True) -1400 alias = expression.args.get("alias") -1401 if alias and self.unnest_column_only: -1402 columns = alias.columns -1403 alias = self.sql(columns[0]) if columns else "" -1404 else: -1405 alias = self.sql(expression, "alias") -1406 alias = f" AS {alias}" if alias else alias -1407 ordinality = " WITH ORDINALITY" if expression.args.get("ordinality") else "" -1408 offset = expression.args.get("offset") -1409 offset = f" WITH OFFSET AS {self.sql(offset)}" if offset else "" -1410 return f"UNNEST({args}){ordinality}{alias}{offset}" +1398 def sessionparameter_sql(self, expression: exp.SessionParameter) -> str: +1399 this = self.sql(expression, "this") +1400 kind = expression.text("kind") +1401 if kind: +1402 kind = f"{kind}." +1403 return f"@@{kind}{this}" +1404 +1405 def placeholder_sql(self, expression: exp.Placeholder) -> str: +1406 return f":{expression.name}" if expression.name else "?" +1407 +1408 def subquery_sql(self, expression: exp.Subquery, sep: str = " AS ") -> str: +1409 alias = self.sql(expression, "alias") +1410 alias = f"{sep}{alias}" if alias else "" 1411 -1412 def where_sql(self, expression: exp.Where) -> str: -1413 this = self.indent(self.sql(expression, "this")) -1414 return f"{self.seg('WHERE')}{self.sep()}{this}" -1415 -1416 def window_sql(self, expression: exp.Window) -> str: -1417 this = self.sql(expression, "this") +1412 sql = self.query_modifiers( +1413 expression, +1414 self.wrap(expression), +1415 alias, +1416 self.expressions(expression, key="pivots", sep=" "), +1417 ) 1418 -1419 partition = self.partition_by_sql(expression) +1419 return self.prepend_ctes(expression, sql) 1420 -1421 order = expression.args.get("order") -1422 order_sql = self.order_sql(order, flat=True) if order else "" -1423 -1424 partition_sql = partition + " " if partition and order else partition -1425 -1426 spec = expression.args.get("spec") -1427 spec_sql = " " + self.window_spec_sql(spec) if spec else "" -1428 -1429 alias = self.sql(expression, "alias") -1430 this = f"{this} {'AS' if expression.arg_key == 'windows' else 'OVER'}" -1431 -1432 if not partition and not order and not spec and alias: -1433 return f"{this} {alias}" -1434 -1435 window_args = alias + partition_sql + order_sql + spec_sql -1436 -1437 return f"{this} ({window_args.strip()})" -1438 -1439 def partition_by_sql(self, expression: exp.Window | exp.MatchRecognize) -> str: -1440 partition = self.expressions(expression, key="partition_by", flat=True) -1441 return f"PARTITION BY {partition}" if partition else "" -1442 -1443 def window_spec_sql(self, expression: exp.WindowSpec) -> str: -1444 kind = self.sql(expression, "kind") -1445 start = csv(self.sql(expression, "start"), self.sql(expression, "start_side"), sep=" ") -1446 end = ( -1447 csv(self.sql(expression, "end"), self.sql(expression, "end_side"), sep=" ") -1448 or "CURRENT ROW" -1449 ) -1450 return f"{kind} BETWEEN {start} AND {end}" -1451 -1452 def withingroup_sql(self, expression: exp.WithinGroup) -> str: -1453 this = self.sql(expression, "this") -1454 expression_sql = self.sql(expression, "expression")[1:] # order has a leading space -1455 return f"{this} WITHIN GROUP ({expression_sql})" +1421 def qualify_sql(self, expression: exp.Qualify) -> str: +1422 this = self.indent(self.sql(expression, "this")) +1423 return f"{self.seg('QUALIFY')}{self.sep()}{this}" +1424 +1425 def union_sql(self, expression: exp.Union) -> str: +1426 return self.prepend_ctes( +1427 expression, +1428 self.set_operation(expression, self.union_op(expression)), +1429 ) +1430 +1431 def union_op(self, expression: exp.Union) -> str: +1432 kind = " DISTINCT" if self.EXPLICIT_UNION else "" +1433 kind = kind if expression.args.get("distinct") else " ALL" +1434 return f"UNION{kind}" +1435 +1436 def unnest_sql(self, expression: exp.Unnest) -> str: +1437 args = self.expressions(expression, flat=True) +1438 alias = expression.args.get("alias") +1439 if alias and self.unnest_column_only: +1440 columns = alias.columns +1441 alias = self.sql(columns[0]) if columns else "" +1442 else: +1443 alias = self.sql(expression, "alias") +1444 alias = f" AS {alias}" if alias else alias +1445 ordinality = " WITH ORDINALITY" if expression.args.get("ordinality") else "" +1446 offset = expression.args.get("offset") +1447 offset = f" WITH OFFSET AS {self.sql(offset)}" if offset else "" +1448 return f"UNNEST({args}){ordinality}{alias}{offset}" +1449 +1450 def where_sql(self, expression: exp.Where) -> str: +1451 this = self.indent(self.sql(expression, "this")) +1452 return f"{self.seg('WHERE')}{self.sep()}{this}" +1453 +1454 def window_sql(self, expression: exp.Window) -> str: +1455 this = self.sql(expression, "this") 1456 -1457 def between_sql(self, expression: exp.Between) -> str: -1458 this = self.sql(expression, "this") -1459 low = self.sql(expression, "low") -1460 high = self.sql(expression, "high") -1461 return f"{this} BETWEEN {low} AND {high}" -1462 -1463 def bracket_sql(self, expression: exp.Bracket) -> str: -1464 expressions = apply_index_offset(expression.expressions, self.index_offset) -1465 expressions_sql = ", ".join(self.sql(e) for e in expressions) +1457 partition = self.partition_by_sql(expression) +1458 +1459 order = expression.args.get("order") +1460 order_sql = self.order_sql(order, flat=True) if order else "" +1461 +1462 partition_sql = partition + " " if partition and order else partition +1463 +1464 spec = expression.args.get("spec") +1465 spec_sql = " " + self.window_spec_sql(spec) if spec else "" 1466 -1467 return f"{self.sql(expression, 'this')}[{expressions_sql}]" -1468 -1469 def all_sql(self, expression: exp.All) -> str: -1470 return f"ALL {self.wrap(expression)}" -1471 -1472 def any_sql(self, expression: exp.Any) -> str: -1473 this = self.sql(expression, "this") -1474 if isinstance(expression.this, exp.Subqueryable): -1475 this = self.wrap(this) -1476 return f"ANY {this}" -1477 -1478 def exists_sql(self, expression: exp.Exists) -> str: -1479 return f"EXISTS{self.wrap(expression)}" +1467 alias = self.sql(expression, "alias") +1468 this = f"{this} {'AS' if expression.arg_key == 'windows' else 'OVER'}" +1469 +1470 if not partition and not order and not spec and alias: +1471 return f"{this} {alias}" +1472 +1473 window_args = alias + partition_sql + order_sql + spec_sql +1474 +1475 return f"{this} ({window_args.strip()})" +1476 +1477 def partition_by_sql(self, expression: exp.Window | exp.MatchRecognize) -> str: +1478 partition = self.expressions(expression, key="partition_by", flat=True) +1479 return f"PARTITION BY {partition}" if partition else "" 1480 -1481 def case_sql(self, expression: exp.Case) -> str: -1482 this = self.sql(expression, "this") -1483 statements = [f"CASE {this}" if this else "CASE"] -1484 -1485 for e in expression.args["ifs"]: -1486 statements.append(f"WHEN {self.sql(e, 'this')}") -1487 statements.append(f"THEN {self.sql(e, 'true')}") -1488 -1489 default = self.sql(expression, "default") -1490 -1491 if default: -1492 statements.append(f"ELSE {default}") -1493 -1494 statements.append("END") -1495 -1496 if self.pretty and self.text_width(statements) > self._max_text_width: -1497 return self.indent("\n".join(statements), skip_first=True, skip_last=True) -1498 -1499 return " ".join(statements) +1481 def window_spec_sql(self, expression: exp.WindowSpec) -> str: +1482 kind = self.sql(expression, "kind") +1483 start = csv(self.sql(expression, "start"), self.sql(expression, "start_side"), sep=" ") +1484 end = ( +1485 csv(self.sql(expression, "end"), self.sql(expression, "end_side"), sep=" ") +1486 or "CURRENT ROW" +1487 ) +1488 return f"{kind} BETWEEN {start} AND {end}" +1489 +1490 def withingroup_sql(self, expression: exp.WithinGroup) -> str: +1491 this = self.sql(expression, "this") +1492 expression_sql = self.sql(expression, "expression")[1:] # order has a leading space +1493 return f"{this} WITHIN GROUP ({expression_sql})" +1494 +1495 def between_sql(self, expression: exp.Between) -> str: +1496 this = self.sql(expression, "this") +1497 low = self.sql(expression, "low") +1498 high = self.sql(expression, "high") +1499 return f"{this} BETWEEN {low} AND {high}" 1500 -1501 def constraint_sql(self, expression: exp.Constraint) -> str: -1502 this = self.sql(expression, "this") -1503 expressions = self.expressions(expression, flat=True) -1504 return f"CONSTRAINT {this} {expressions}" -1505 -1506 def extract_sql(self, expression: exp.Extract) -> str: -1507 this = self.sql(expression, "this") -1508 expression_sql = self.sql(expression, "expression") -1509 return f"EXTRACT({this} FROM {expression_sql})" -1510 -1511 def trim_sql(self, expression: exp.Trim) -> str: -1512 trim_type = self.sql(expression, "position") -1513 -1514 if trim_type == "LEADING": -1515 return self.func("LTRIM", expression.this) -1516 elif trim_type == "TRAILING": -1517 return self.func("RTRIM", expression.this) -1518 else: -1519 return self.func("TRIM", expression.this, expression.expression) -1520 -1521 def concat_sql(self, expression: exp.Concat) -> str: -1522 if len(expression.expressions) == 1: -1523 return self.sql(expression.expressions[0]) -1524 return self.function_fallback_sql(expression) -1525 -1526 def check_sql(self, expression: exp.Check) -> str: -1527 this = self.sql(expression, key="this") -1528 return f"CHECK ({this})" -1529 -1530 def foreignkey_sql(self, expression: exp.ForeignKey) -> str: -1531 expressions = self.expressions(expression, flat=True) -1532 reference = self.sql(expression, "reference") -1533 reference = f" {reference}" if reference else "" -1534 delete = self.sql(expression, "delete") -1535 delete = f" ON DELETE {delete}" if delete else "" -1536 update = self.sql(expression, "update") -1537 update = f" ON UPDATE {update}" if update else "" -1538 return f"FOREIGN KEY ({expressions}){reference}{delete}{update}" -1539 -1540 def primarykey_sql(self, expression: exp.ForeignKey) -> str: +1501 def bracket_sql(self, expression: exp.Bracket) -> str: +1502 expressions = apply_index_offset(expression.expressions, self.index_offset) +1503 expressions_sql = ", ".join(self.sql(e) for e in expressions) +1504 +1505 return f"{self.sql(expression, 'this')}[{expressions_sql}]" +1506 +1507 def all_sql(self, expression: exp.All) -> str: +1508 return f"ALL {self.wrap(expression)}" +1509 +1510 def any_sql(self, expression: exp.Any) -> str: +1511 this = self.sql(expression, "this") +1512 if isinstance(expression.this, exp.Subqueryable): +1513 this = self.wrap(this) +1514 return f"ANY {this}" +1515 +1516 def exists_sql(self, expression: exp.Exists) -> str: +1517 return f"EXISTS{self.wrap(expression)}" +1518 +1519 def case_sql(self, expression: exp.Case) -> str: +1520 this = self.sql(expression, "this") +1521 statements = [f"CASE {this}" if this else "CASE"] +1522 +1523 for e in expression.args["ifs"]: +1524 statements.append(f"WHEN {self.sql(e, 'this')}") +1525 statements.append(f"THEN {self.sql(e, 'true')}") +1526 +1527 default = self.sql(expression, "default") +1528 +1529 if default: +1530 statements.append(f"ELSE {default}") +1531 +1532 statements.append("END") +1533 +1534 if self.pretty and self.text_width(statements) > self._max_text_width: +1535 return self.indent("\n".join(statements), skip_first=True, skip_last=True) +1536 +1537 return " ".join(statements) +1538 +1539 def constraint_sql(self, expression: exp.Constraint) -> str: +1540 this = self.sql(expression, "this") 1541 expressions = self.expressions(expression, flat=True) -1542 options = self.expressions(expression, "options", flat=True, sep=" ") -1543 options = f" {options}" if options else "" -1544 return f"PRIMARY KEY ({expressions}){options}" -1545 -1546 def unique_sql(self, expression: exp.Unique) -> str: -1547 columns = self.expressions(expression, key="expressions") -1548 return f"UNIQUE ({columns})" -1549 -1550 def if_sql(self, expression: exp.If) -> str: -1551 return self.case_sql( -1552 exp.Case(ifs=[expression.copy()], default=expression.args.get("false")) -1553 ) -1554 -1555 def in_sql(self, expression: exp.In) -> str: -1556 query = expression.args.get("query") -1557 unnest = expression.args.get("unnest") -1558 field = expression.args.get("field") -1559 is_global = " GLOBAL" if expression.args.get("is_global") else "" -1560 -1561 if query: -1562 in_sql = self.wrap(query) -1563 elif unnest: -1564 in_sql = self.in_unnest_op(unnest) -1565 elif field: -1566 in_sql = self.sql(field) -1567 else: -1568 in_sql = f"({self.expressions(expression, flat=True)})" -1569 -1570 return f"{self.sql(expression, 'this')}{is_global} IN {in_sql}" -1571 -1572 def in_unnest_op(self, unnest: exp.Unnest) -> str: -1573 return f"(SELECT {self.sql(unnest)})" -1574 -1575 def interval_sql(self, expression: exp.Interval) -> str: -1576 this = expression.args.get("this") -1577 if this: -1578 this = ( -1579 f" {this}" -1580 if isinstance(this, exp.Literal) or isinstance(this, exp.Paren) -1581 else f" ({this})" -1582 ) -1583 else: -1584 this = "" -1585 unit = self.sql(expression, "unit") -1586 unit = f" {unit}" if unit else "" -1587 return f"INTERVAL{this}{unit}" -1588 -1589 def return_sql(self, expression: exp.Return) -> str: -1590 return f"RETURN {self.sql(expression, 'this')}" -1591 -1592 def reference_sql(self, expression: exp.Reference) -> str: -1593 this = self.sql(expression, "this") -1594 expressions = self.expressions(expression, flat=True) -1595 expressions = f"({expressions})" if expressions else "" -1596 options = self.expressions(expression, "options", flat=True, sep=" ") -1597 options = f" {options}" if options else "" -1598 return f"REFERENCES {this}{expressions}{options}" -1599 -1600 def anonymous_sql(self, expression: exp.Anonymous) -> str: -1601 return self.func(expression.name, *expression.expressions) -1602 -1603 def paren_sql(self, expression: exp.Paren) -> str: -1604 if isinstance(expression.unnest(), exp.Select): -1605 sql = self.wrap(expression) -1606 else: -1607 sql = self.seg(self.indent(self.sql(expression, "this")), sep="") -1608 sql = f"({sql}{self.seg(')', sep='')}" -1609 -1610 return self.prepend_ctes(expression, sql) +1542 return f"CONSTRAINT {this} {expressions}" +1543 +1544 def extract_sql(self, expression: exp.Extract) -> str: +1545 this = self.sql(expression, "this") +1546 expression_sql = self.sql(expression, "expression") +1547 return f"EXTRACT({this} FROM {expression_sql})" +1548 +1549 def trim_sql(self, expression: exp.Trim) -> str: +1550 trim_type = self.sql(expression, "position") +1551 +1552 if trim_type == "LEADING": +1553 return self.func("LTRIM", expression.this) +1554 elif trim_type == "TRAILING": +1555 return self.func("RTRIM", expression.this) +1556 else: +1557 return self.func("TRIM", expression.this, expression.expression) +1558 +1559 def concat_sql(self, expression: exp.Concat) -> str: +1560 if len(expression.expressions) == 1: +1561 return self.sql(expression.expressions[0]) +1562 return self.function_fallback_sql(expression) +1563 +1564 def check_sql(self, expression: exp.Check) -> str: +1565 this = self.sql(expression, key="this") +1566 return f"CHECK ({this})" +1567 +1568 def foreignkey_sql(self, expression: exp.ForeignKey) -> str: +1569 expressions = self.expressions(expression, flat=True) +1570 reference = self.sql(expression, "reference") +1571 reference = f" {reference}" if reference else "" +1572 delete = self.sql(expression, "delete") +1573 delete = f" ON DELETE {delete}" if delete else "" +1574 update = self.sql(expression, "update") +1575 update = f" ON UPDATE {update}" if update else "" +1576 return f"FOREIGN KEY ({expressions}){reference}{delete}{update}" +1577 +1578 def primarykey_sql(self, expression: exp.ForeignKey) -> str: +1579 expressions = self.expressions(expression, flat=True) +1580 options = self.expressions(expression, "options", flat=True, sep=" ") +1581 options = f" {options}" if options else "" +1582 return f"PRIMARY KEY ({expressions}){options}" +1583 +1584 def unique_sql(self, expression: exp.Unique) -> str: +1585 columns = self.expressions(expression, key="expressions") +1586 return f"UNIQUE ({columns})" +1587 +1588 def if_sql(self, expression: exp.If) -> str: +1589 return self.case_sql( +1590 exp.Case(ifs=[expression.copy()], default=expression.args.get("false")) +1591 ) +1592 +1593 def jsonkeyvalue_sql(self, expression: exp.JSONKeyValue) -> str: +1594 return f"{self.sql(expression, 'this')}: {self.sql(expression, 'expression')}" +1595 +1596 def jsonobject_sql(self, expression: exp.JSONObject) -> str: +1597 expressions = self.expressions(expression) +1598 null_handling = expression.args.get("null_handling") +1599 null_handling = f" {null_handling}" if null_handling else "" +1600 unique_keys = expression.args.get("unique_keys") +1601 if unique_keys is not None: +1602 unique_keys = f" {'WITH' if unique_keys else 'WITHOUT'} UNIQUE KEYS" +1603 else: +1604 unique_keys = "" +1605 return_type = self.sql(expression, "return_type") +1606 return_type = f" RETURNING {return_type}" if return_type else "" +1607 format_json = " FORMAT JSON" if expression.args.get("format_json") else "" +1608 encoding = self.sql(expression, "encoding") +1609 encoding = f" ENCODING {encoding}" if encoding else "" +1610 return f"JSON_OBJECT({expressions}{null_handling}{unique_keys}{return_type}{format_json}{encoding})" 1611 -1612 def neg_sql(self, expression: exp.Neg) -> str: -1613 # This makes sure we don't convert "- - 5" to "--5", which is a comment -1614 this_sql = self.sql(expression, "this") -1615 sep = " " if this_sql[0] == "-" else "" -1616 return f"-{sep}{this_sql}" +1612 def in_sql(self, expression: exp.In) -> str: +1613 query = expression.args.get("query") +1614 unnest = expression.args.get("unnest") +1615 field = expression.args.get("field") +1616 is_global = " GLOBAL" if expression.args.get("is_global") else "" 1617 -1618 def not_sql(self, expression: exp.Not) -> str: -1619 return f"NOT {self.sql(expression, 'this')}" -1620 -1621 def alias_sql(self, expression: exp.Alias) -> str: -1622 to_sql = self.sql(expression, "alias") -1623 to_sql = f" AS {to_sql}" if to_sql else "" -1624 return f"{self.sql(expression, 'this')}{to_sql}" -1625 -1626 def aliases_sql(self, expression: exp.Aliases) -> str: -1627 return f"{self.sql(expression, 'this')} AS ({self.expressions(expression, flat=True)})" +1618 if query: +1619 in_sql = self.wrap(query) +1620 elif unnest: +1621 in_sql = self.in_unnest_op(unnest) +1622 elif field: +1623 in_sql = self.sql(field) +1624 else: +1625 in_sql = f"({self.expressions(expression, flat=True)})" +1626 +1627 return f"{self.sql(expression, 'this')}{is_global} IN {in_sql}" 1628 -1629 def attimezone_sql(self, expression: exp.AtTimeZone) -> str: -1630 this = self.sql(expression, "this") -1631 zone = self.sql(expression, "zone") -1632 return f"{this} AT TIME ZONE {zone}" -1633 -1634 def add_sql(self, expression: exp.Add) -> str: -1635 return self.binary(expression, "+") -1636 -1637 def and_sql(self, expression: exp.And) -> str: -1638 return self.connector_sql(expression, "AND") -1639 -1640 def connector_sql(self, expression: exp.Connector, op: str) -> str: -1641 if not self.pretty: -1642 return self.binary(expression, op) -1643 -1644 sqls = tuple(self.sql(e) for e in expression.flatten(unnest=False)) -1645 sep = "\n" if self.text_width(sqls) > self._max_text_width else " " -1646 return f"{sep}{op} ".join(sqls) -1647 -1648 def bitwiseand_sql(self, expression: exp.BitwiseAnd) -> str: -1649 return self.binary(expression, "&") -1650 -1651 def bitwiseleftshift_sql(self, expression: exp.BitwiseLeftShift) -> str: -1652 return self.binary(expression, "<<") -1653 -1654 def bitwisenot_sql(self, expression: exp.BitwiseNot) -> str: -1655 return f"~{self.sql(expression, 'this')}" +1629 def in_unnest_op(self, unnest: exp.Unnest) -> str: +1630 return f"(SELECT {self.sql(unnest)})" +1631 +1632 def interval_sql(self, expression: exp.Interval) -> str: +1633 this = expression.args.get("this") +1634 if this: +1635 this = ( +1636 f" {this}" +1637 if isinstance(this, exp.Literal) or isinstance(this, exp.Paren) +1638 else f" ({this})" +1639 ) +1640 else: +1641 this = "" +1642 unit = self.sql(expression, "unit") +1643 unit = f" {unit}" if unit else "" +1644 return f"INTERVAL{this}{unit}" +1645 +1646 def return_sql(self, expression: exp.Return) -> str: +1647 return f"RETURN {self.sql(expression, 'this')}" +1648 +1649 def reference_sql(self, expression: exp.Reference) -> str: +1650 this = self.sql(expression, "this") +1651 expressions = self.expressions(expression, flat=True) +1652 expressions = f"({expressions})" if expressions else "" +1653 options = self.expressions(expression, "options", flat=True, sep=" ") +1654 options = f" {options}" if options else "" +1655 return f"REFERENCES {this}{expressions}{options}" 1656 -1657 def bitwiseor_sql(self, expression: exp.BitwiseOr) -> str: -1658 return self.binary(expression, "|") +1657 def anonymous_sql(self, expression: exp.Anonymous) -> str: +1658 return self.func(expression.name, *expression.expressions) 1659 -1660 def bitwiserightshift_sql(self, expression: exp.BitwiseRightShift) -> str: -1661 return self.binary(expression, ">>") -1662 -1663 def bitwisexor_sql(self, expression: exp.BitwiseXor) -> str: -1664 return self.binary(expression, "^") -1665 -1666 def cast_sql(self, expression: exp.Cast) -> str: -1667 return f"CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})" +1660 def paren_sql(self, expression: exp.Paren) -> str: +1661 if isinstance(expression.unnest(), exp.Select): +1662 sql = self.wrap(expression) +1663 else: +1664 sql = self.seg(self.indent(self.sql(expression, "this")), sep="") +1665 sql = f"({sql}{self.seg(')', sep='')}" +1666 +1667 return self.prepend_ctes(expression, sql) 1668 -1669 def currentdate_sql(self, expression: exp.CurrentDate) -> str: -1670 zone = self.sql(expression, "this") -1671 return f"CURRENT_DATE({zone})" if zone else "CURRENT_DATE" -1672 -1673 def collate_sql(self, expression: exp.Collate) -> str: -1674 return self.binary(expression, "COLLATE") -1675 -1676 def command_sql(self, expression: exp.Command) -> str: -1677 return f"{self.sql(expression, 'this').upper()} {expression.text('expression').strip()}" -1678 -1679 def comment_sql(self, expression: exp.Comment) -> str: -1680 this = self.sql(expression, "this") -1681 kind = expression.args["kind"] -1682 exists_sql = " IF EXISTS " if expression.args.get("exists") else " " -1683 expression_sql = self.sql(expression, "expression") -1684 return f"COMMENT{exists_sql}ON {kind} {this} IS {expression_sql}" +1669 def neg_sql(self, expression: exp.Neg) -> str: +1670 # This makes sure we don't convert "- - 5" to "--5", which is a comment +1671 this_sql = self.sql(expression, "this") +1672 sep = " " if this_sql[0] == "-" else "" +1673 return f"-{sep}{this_sql}" +1674 +1675 def not_sql(self, expression: exp.Not) -> str: +1676 return f"NOT {self.sql(expression, 'this')}" +1677 +1678 def alias_sql(self, expression: exp.Alias) -> str: +1679 to_sql = self.sql(expression, "alias") +1680 to_sql = f" AS {to_sql}" if to_sql else "" +1681 return f"{self.sql(expression, 'this')}{to_sql}" +1682 +1683 def aliases_sql(self, expression: exp.Aliases) -> str: +1684 return f"{self.sql(expression, 'this')} AS ({self.expressions(expression, flat=True)})" 1685 -1686 def transaction_sql(self, expression: exp.Transaction) -> str: -1687 return "BEGIN" -1688 -1689 def commit_sql(self, expression: exp.Commit) -> str: -1690 chain = expression.args.get("chain") -1691 if chain is not None: -1692 chain = " AND CHAIN" if chain else " AND NO CHAIN" +1686 def attimezone_sql(self, expression: exp.AtTimeZone) -> str: +1687 this = self.sql(expression, "this") +1688 zone = self.sql(expression, "zone") +1689 return f"{this} AT TIME ZONE {zone}" +1690 +1691 def add_sql(self, expression: exp.Add) -> str: +1692 return self.binary(expression, "+") 1693 -1694 return f"COMMIT{chain or ''}" -1695 -1696 def rollback_sql(self, expression: exp.Rollback) -> str: -1697 savepoint = expression.args.get("savepoint") -1698 savepoint = f" TO {savepoint}" if savepoint else "" -1699 return f"ROLLBACK{savepoint}" +1694 def and_sql(self, expression: exp.And) -> str: +1695 return self.connector_sql(expression, "AND") +1696 +1697 def connector_sql(self, expression: exp.Connector, op: str) -> str: +1698 if not self.pretty: +1699 return self.binary(expression, op) 1700 -1701 def altercolumn_sql(self, expression: exp.AlterColumn) -> str: -1702 this = self.sql(expression, "this") -1703 -1704 dtype = self.sql(expression, "dtype") -1705 if dtype: -1706 collate = self.sql(expression, "collate") -1707 collate = f" COLLATE {collate}" if collate else "" -1708 using = self.sql(expression, "using") -1709 using = f" USING {using}" if using else "" -1710 return f"ALTER COLUMN {this} TYPE {dtype}{collate}{using}" -1711 -1712 default = self.sql(expression, "default") -1713 if default: -1714 return f"ALTER COLUMN {this} SET DEFAULT {default}" -1715 -1716 if not expression.args.get("drop"): -1717 self.unsupported("Unsupported ALTER COLUMN syntax") -1718 -1719 return f"ALTER COLUMN {this} DROP DEFAULT" -1720 -1721 def renametable_sql(self, expression: exp.RenameTable) -> str: -1722 this = self.sql(expression, "this") -1723 return f"RENAME TO {this}" -1724 -1725 def altertable_sql(self, expression: exp.AlterTable) -> str: -1726 actions = expression.args["actions"] -1727 -1728 if isinstance(actions[0], exp.ColumnDef): -1729 actions = self.expressions(expression, "actions", prefix="ADD COLUMN ") -1730 elif isinstance(actions[0], exp.Schema): -1731 actions = self.expressions(expression, "actions", prefix="ADD COLUMNS ") -1732 elif isinstance(actions[0], exp.Delete): -1733 actions = self.expressions(expression, "actions", flat=True) -1734 else: -1735 actions = self.expressions(expression, "actions") -1736 -1737 exists = " IF EXISTS" if expression.args.get("exists") else "" -1738 return f"ALTER TABLE{exists} {self.sql(expression, 'this')} {actions}" -1739 -1740 def droppartition_sql(self, expression: exp.DropPartition) -> str: -1741 expressions = self.expressions(expression) -1742 exists = " IF EXISTS " if expression.args.get("exists") else " " -1743 return f"DROP{exists}{expressions}" -1744 -1745 def addconstraint_sql(self, expression: exp.AddConstraint) -> str: -1746 this = self.sql(expression, "this") -1747 expression_ = self.sql(expression, "expression") -1748 add_constraint = f"ADD CONSTRAINT {this}" if this else "ADD" -1749 -1750 enforced = expression.args.get("enforced") -1751 if enforced is not None: -1752 return f"{add_constraint} CHECK ({expression_}){' ENFORCED' if enforced else ''}" -1753 -1754 return f"{add_constraint} {expression_}" -1755 -1756 def distinct_sql(self, expression: exp.Distinct) -> str: -1757 this = self.expressions(expression, flat=True) -1758 this = f" {this}" if this else "" -1759 -1760 on = self.sql(expression, "on") -1761 on = f" ON {on}" if on else "" -1762 return f"DISTINCT{this}{on}" -1763 -1764 def ignorenulls_sql(self, expression: exp.IgnoreNulls) -> str: -1765 return f"{self.sql(expression, 'this')} IGNORE NULLS" -1766 -1767 def respectnulls_sql(self, expression: exp.RespectNulls) -> str: -1768 return f"{self.sql(expression, 'this')} RESPECT NULLS" -1769 -1770 def intdiv_sql(self, expression: exp.IntDiv) -> str: -1771 return self.sql( -1772 exp.Cast( -1773 this=exp.Div(this=expression.this, expression=expression.expression), -1774 to=exp.DataType(this=exp.DataType.Type.INT), -1775 ) -1776 ) +1701 sqls = tuple(self.sql(e) for e in expression.flatten(unnest=False)) +1702 sep = "\n" if self.text_width(sqls) > self._max_text_width else " " +1703 return f"{sep}{op} ".join(sqls) +1704 +1705 def bitwiseand_sql(self, expression: exp.BitwiseAnd) -> str: +1706 return self.binary(expression, "&") +1707 +1708 def bitwiseleftshift_sql(self, expression: exp.BitwiseLeftShift) -> str: +1709 return self.binary(expression, "<<") +1710 +1711 def bitwisenot_sql(self, expression: exp.BitwiseNot) -> str: +1712 return f"~{self.sql(expression, 'this')}" +1713 +1714 def bitwiseor_sql(self, expression: exp.BitwiseOr) -> str: +1715 return self.binary(expression, "|") +1716 +1717 def bitwiserightshift_sql(self, expression: exp.BitwiseRightShift) -> str: +1718 return self.binary(expression, ">>") +1719 +1720 def bitwisexor_sql(self, expression: exp.BitwiseXor) -> str: +1721 return self.binary(expression, "^") +1722 +1723 def cast_sql(self, expression: exp.Cast) -> str: +1724 return f"CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})" +1725 +1726 def currentdate_sql(self, expression: exp.CurrentDate) -> str: +1727 zone = self.sql(expression, "this") +1728 return f"CURRENT_DATE({zone})" if zone else "CURRENT_DATE" +1729 +1730 def collate_sql(self, expression: exp.Collate) -> str: +1731 return self.binary(expression, "COLLATE") +1732 +1733 def command_sql(self, expression: exp.Command) -> str: +1734 return f"{self.sql(expression, 'this').upper()} {expression.text('expression').strip()}" +1735 +1736 def comment_sql(self, expression: exp.Comment) -> str: +1737 this = self.sql(expression, "this") +1738 kind = expression.args["kind"] +1739 exists_sql = " IF EXISTS " if expression.args.get("exists") else " " +1740 expression_sql = self.sql(expression, "expression") +1741 return f"COMMENT{exists_sql}ON {kind} {this} IS {expression_sql}" +1742 +1743 def transaction_sql(self, expression: exp.Transaction) -> str: +1744 return "BEGIN" +1745 +1746 def commit_sql(self, expression: exp.Commit) -> str: +1747 chain = expression.args.get("chain") +1748 if chain is not None: +1749 chain = " AND CHAIN" if chain else " AND NO CHAIN" +1750 +1751 return f"COMMIT{chain or ''}" +1752 +1753 def rollback_sql(self, expression: exp.Rollback) -> str: +1754 savepoint = expression.args.get("savepoint") +1755 savepoint = f" TO {savepoint}" if savepoint else "" +1756 return f"ROLLBACK{savepoint}" +1757 +1758 def altercolumn_sql(self, expression: exp.AlterColumn) -> str: +1759 this = self.sql(expression, "this") +1760 +1761 dtype = self.sql(expression, "dtype") +1762 if dtype: +1763 collate = self.sql(expression, "collate") +1764 collate = f" COLLATE {collate}" if collate else "" +1765 using = self.sql(expression, "using") +1766 using = f" USING {using}" if using else "" +1767 return f"ALTER COLUMN {this} TYPE {dtype}{collate}{using}" +1768 +1769 default = self.sql(expression, "default") +1770 if default: +1771 return f"ALTER COLUMN {this} SET DEFAULT {default}" +1772 +1773 if not expression.args.get("drop"): +1774 self.unsupported("Unsupported ALTER COLUMN syntax") +1775 +1776 return f"ALTER COLUMN {this} DROP DEFAULT" 1777 -1778 def dpipe_sql(self, expression: exp.DPipe) -> str: -1779 return self.binary(expression, "||") -1780 -1781 def div_sql(self, expression: exp.Div) -> str: -1782 return self.binary(expression, "/") -1783 -1784 def overlaps_sql(self, expression: exp.Overlaps) -> str: -1785 return self.binary(expression, "OVERLAPS") -1786 -1787 def distance_sql(self, expression: exp.Distance) -> str: -1788 return self.binary(expression, "<->") -1789 -1790 def dot_sql(self, expression: exp.Dot) -> str: -1791 return f"{self.sql(expression, 'this')}.{self.sql(expression, 'expression')}" -1792 -1793 def eq_sql(self, expression: exp.EQ) -> str: -1794 return self.binary(expression, "=") -1795 -1796 def escape_sql(self, expression: exp.Escape) -> str: -1797 return self.binary(expression, "ESCAPE") -1798 -1799 def glob_sql(self, expression: exp.Glob) -> str: -1800 return self.binary(expression, "GLOB") +1778 def renametable_sql(self, expression: exp.RenameTable) -> str: +1779 this = self.sql(expression, "this") +1780 return f"RENAME TO {this}" +1781 +1782 def altertable_sql(self, expression: exp.AlterTable) -> str: +1783 actions = expression.args["actions"] +1784 +1785 if isinstance(actions[0], exp.ColumnDef): +1786 actions = self.expressions(expression, "actions", prefix="ADD COLUMN ") +1787 elif isinstance(actions[0], exp.Schema): +1788 actions = self.expressions(expression, "actions", prefix="ADD COLUMNS ") +1789 elif isinstance(actions[0], exp.Delete): +1790 actions = self.expressions(expression, "actions", flat=True) +1791 else: +1792 actions = self.expressions(expression, "actions") +1793 +1794 exists = " IF EXISTS" if expression.args.get("exists") else "" +1795 return f"ALTER TABLE{exists} {self.sql(expression, 'this')} {actions}" +1796 +1797 def droppartition_sql(self, expression: exp.DropPartition) -> str: +1798 expressions = self.expressions(expression) +1799 exists = " IF EXISTS " if expression.args.get("exists") else " " +1800 return f"DROP{exists}{expressions}" 1801 -1802 def gt_sql(self, expression: exp.GT) -> str: -1803 return self.binary(expression, ">") -1804 -1805 def gte_sql(self, expression: exp.GTE) -> str: -1806 return self.binary(expression, ">=") -1807 -1808 def ilike_sql(self, expression: exp.ILike) -> str: -1809 return self.binary(expression, "ILIKE") +1802 def addconstraint_sql(self, expression: exp.AddConstraint) -> str: +1803 this = self.sql(expression, "this") +1804 expression_ = self.sql(expression, "expression") +1805 add_constraint = f"ADD CONSTRAINT {this}" if this else "ADD" +1806 +1807 enforced = expression.args.get("enforced") +1808 if enforced is not None: +1809 return f"{add_constraint} CHECK ({expression_}){' ENFORCED' if enforced else ''}" 1810 -1811 def is_sql(self, expression: exp.Is) -> str: -1812 return self.binary(expression, "IS") -1813 -1814 def like_sql(self, expression: exp.Like) -> str: -1815 return self.binary(expression, "LIKE") +1811 return f"{add_constraint} {expression_}" +1812 +1813 def distinct_sql(self, expression: exp.Distinct) -> str: +1814 this = self.expressions(expression, flat=True) +1815 this = f" {this}" if this else "" 1816 -1817 def similarto_sql(self, expression: exp.SimilarTo) -> str: -1818 return self.binary(expression, "SIMILAR TO") -1819 -1820 def lt_sql(self, expression: exp.LT) -> str: -1821 return self.binary(expression, "<") -1822 -1823 def lte_sql(self, expression: exp.LTE) -> str: -1824 return self.binary(expression, "<=") -1825 -1826 def mod_sql(self, expression: exp.Mod) -> str: -1827 return self.binary(expression, "%") -1828 -1829 def mul_sql(self, expression: exp.Mul) -> str: -1830 return self.binary(expression, "*") -1831 -1832 def neq_sql(self, expression: exp.NEQ) -> str: -1833 return self.binary(expression, "<>") +1817 on = self.sql(expression, "on") +1818 on = f" ON {on}" if on else "" +1819 return f"DISTINCT{this}{on}" +1820 +1821 def ignorenulls_sql(self, expression: exp.IgnoreNulls) -> str: +1822 return f"{self.sql(expression, 'this')} IGNORE NULLS" +1823 +1824 def respectnulls_sql(self, expression: exp.RespectNulls) -> str: +1825 return f"{self.sql(expression, 'this')} RESPECT NULLS" +1826 +1827 def intdiv_sql(self, expression: exp.IntDiv) -> str: +1828 return self.sql( +1829 exp.Cast( +1830 this=exp.Div(this=expression.this, expression=expression.expression), +1831 to=exp.DataType(this=exp.DataType.Type.INT), +1832 ) +1833 ) 1834 -1835 def nullsafeeq_sql(self, expression: exp.NullSafeEQ) -> str: -1836 return self.binary(expression, "IS NOT DISTINCT FROM") +1835 def dpipe_sql(self, expression: exp.DPipe) -> str: +1836 return self.binary(expression, "||") 1837 -1838 def nullsafeneq_sql(self, expression: exp.NullSafeNEQ) -> str: -1839 return self.binary(expression, "IS DISTINCT FROM") +1838 def div_sql(self, expression: exp.Div) -> str: +1839 return self.binary(expression, "/") 1840 -1841 def or_sql(self, expression: exp.Or) -> str: -1842 return self.connector_sql(expression, "OR") +1841 def overlaps_sql(self, expression: exp.Overlaps) -> str: +1842 return self.binary(expression, "OVERLAPS") 1843 -1844 def slice_sql(self, expression: exp.Slice) -> str: -1845 return self.binary(expression, ":") +1844 def distance_sql(self, expression: exp.Distance) -> str: +1845 return self.binary(expression, "<->") 1846 -1847 def sub_sql(self, expression: exp.Sub) -> str: -1848 return self.binary(expression, "-") +1847 def dot_sql(self, expression: exp.Dot) -> str: +1848 return f"{self.sql(expression, 'this')}.{self.sql(expression, 'expression')}" 1849 -1850 def trycast_sql(self, expression: exp.TryCast) -> str: -1851 return f"TRY_CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})" +1850 def eq_sql(self, expression: exp.EQ) -> str: +1851 return self.binary(expression, "=") 1852 -1853 def use_sql(self, expression: exp.Use) -> str: -1854 kind = self.sql(expression, "kind") -1855 kind = f" {kind}" if kind else "" -1856 this = self.sql(expression, "this") -1857 this = f" {this}" if this else "" -1858 return f"USE{kind}{this}" -1859 -1860 def binary(self, expression: exp.Binary, op: str) -> str: -1861 return f"{self.sql(expression, 'this')} {op} {self.sql(expression, 'expression')}" -1862 -1863 def function_fallback_sql(self, expression: exp.Func) -> str: -1864 args = [] -1865 for arg_value in expression.args.values(): -1866 if isinstance(arg_value, list): -1867 for value in arg_value: -1868 args.append(value) -1869 else: -1870 args.append(arg_value) -1871 -1872 return self.func(expression.sql_name(), *args) +1853 def escape_sql(self, expression: exp.Escape) -> str: +1854 return self.binary(expression, "ESCAPE") +1855 +1856 def glob_sql(self, expression: exp.Glob) -> str: +1857 return self.binary(expression, "GLOB") +1858 +1859 def gt_sql(self, expression: exp.GT) -> str: +1860 return self.binary(expression, ">") +1861 +1862 def gte_sql(self, expression: exp.GTE) -> str: +1863 return self.binary(expression, ">=") +1864 +1865 def ilike_sql(self, expression: exp.ILike) -> str: +1866 return self.binary(expression, "ILIKE") +1867 +1868 def is_sql(self, expression: exp.Is) -> str: +1869 return self.binary(expression, "IS") +1870 +1871 def like_sql(self, expression: exp.Like) -> str: +1872 return self.binary(expression, "LIKE") 1873 -1874 def func(self, name: str, *args: t.Optional[exp.Expression | str]) -> str: -1875 return f"{self.normalize_func(name)}({self.format_args(*args)})" +1874 def similarto_sql(self, expression: exp.SimilarTo) -> str: +1875 return self.binary(expression, "SIMILAR TO") 1876 -1877 def format_args(self, *args: t.Optional[str | exp.Expression]) -> str: -1878 arg_sqls = tuple(self.sql(arg) for arg in args if arg is not None) -1879 if self.pretty and self.text_width(arg_sqls) > self._max_text_width: -1880 return self.indent("\n" + f",\n".join(arg_sqls) + "\n", skip_first=True, skip_last=True) -1881 return ", ".join(arg_sqls) +1877 def lt_sql(self, expression: exp.LT) -> str: +1878 return self.binary(expression, "<") +1879 +1880 def lte_sql(self, expression: exp.LTE) -> str: +1881 return self.binary(expression, "<=") 1882 -1883 def text_width(self, args: t.Iterable) -> int: -1884 return sum(len(arg) for arg in args) +1883 def mod_sql(self, expression: exp.Mod) -> str: +1884 return self.binary(expression, "%") 1885 -1886 def format_time(self, expression: exp.Expression) -> t.Optional[str]: -1887 return format_time(self.sql(expression, "format"), self.time_mapping, self.time_trie) +1886 def mul_sql(self, expression: exp.Mul) -> str: +1887 return self.binary(expression, "*") 1888 -1889 def expressions( -1890 self, -1891 expression: exp.Expression, -1892 key: t.Optional[str] = None, -1893 flat: bool = False, -1894 indent: bool = True, -1895 sep: str = ", ", -1896 prefix: str = "", -1897 ) -> str: -1898 expressions = expression.args.get(key or "expressions") -1899 -1900 if not expressions: -1901 return "" -1902 -1903 if flat: -1904 return sep.join(self.sql(e) for e in expressions) -1905 -1906 num_sqls = len(expressions) -1907 -1908 # These are calculated once in case we have the leading_comma / pretty option set, correspondingly -1909 pad = " " * self.pad -1910 stripped_sep = sep.strip() -1911 -1912 result_sqls = [] -1913 for i, e in enumerate(expressions): -1914 sql = self.sql(e, comment=False) -1915 comments = self.maybe_comment("", e) if isinstance(e, exp.Expression) else "" +1889 def neq_sql(self, expression: exp.NEQ) -> str: +1890 return self.binary(expression, "<>") +1891 +1892 def nullsafeeq_sql(self, expression: exp.NullSafeEQ) -> str: +1893 return self.binary(expression, "IS NOT DISTINCT FROM") +1894 +1895 def nullsafeneq_sql(self, expression: exp.NullSafeNEQ) -> str: +1896 return self.binary(expression, "IS DISTINCT FROM") +1897 +1898 def or_sql(self, expression: exp.Or) -> str: +1899 return self.connector_sql(expression, "OR") +1900 +1901 def slice_sql(self, expression: exp.Slice) -> str: +1902 return self.binary(expression, ":") +1903 +1904 def sub_sql(self, expression: exp.Sub) -> str: +1905 return self.binary(expression, "-") +1906 +1907 def trycast_sql(self, expression: exp.TryCast) -> str: +1908 return f"TRY_CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})" +1909 +1910 def use_sql(self, expression: exp.Use) -> str: +1911 kind = self.sql(expression, "kind") +1912 kind = f" {kind}" if kind else "" +1913 this = self.sql(expression, "this") +1914 this = f" {this}" if this else "" +1915 return f"USE{kind}{this}" 1916 -1917 if self.pretty: -1918 if self._leading_comma: -1919 result_sqls.append(f"{sep if i > 0 else pad}{prefix}{sql}{comments}") -1920 else: -1921 result_sqls.append( -1922 f"{prefix}{sql}{stripped_sep if i + 1 < num_sqls else ''}{comments}" -1923 ) -1924 else: -1925 result_sqls.append(f"{prefix}{sql}{comments}{sep if i + 1 < num_sqls else ''}") -1926 -1927 result_sql = "\n".join(result_sqls) if self.pretty else "".join(result_sqls) -1928 return self.indent(result_sql, skip_first=False) if indent else result_sql -1929 -1930 def op_expressions(self, op: str, expression: exp.Expression, flat: bool = False) -> str: -1931 flat = flat or isinstance(expression.parent, exp.Properties) -1932 expressions_sql = self.expressions(expression, flat=flat) -1933 if flat: -1934 return f"{op} {expressions_sql}" -1935 return f"{self.seg(op)}{self.sep() if expressions_sql else ''}{expressions_sql}" -1936 -1937 def naked_property(self, expression: exp.Property) -> str: -1938 property_name = exp.Properties.PROPERTY_TO_NAME.get(expression.__class__) -1939 if not property_name: -1940 self.unsupported(f"Unsupported property {expression.__class__.__name__}") -1941 return f"{property_name} {self.sql(expression, 'this')}" +1917 def binary(self, expression: exp.Binary, op: str) -> str: +1918 return f"{self.sql(expression, 'this')} {op} {self.sql(expression, 'expression')}" +1919 +1920 def function_fallback_sql(self, expression: exp.Func) -> str: +1921 args = [] +1922 for arg_value in expression.args.values(): +1923 if isinstance(arg_value, list): +1924 for value in arg_value: +1925 args.append(value) +1926 else: +1927 args.append(arg_value) +1928 +1929 return self.func(expression.sql_name(), *args) +1930 +1931 def func(self, name: str, *args: t.Optional[exp.Expression | str]) -> str: +1932 return f"{self.normalize_func(name)}({self.format_args(*args)})" +1933 +1934 def format_args(self, *args: t.Optional[str | exp.Expression]) -> str: +1935 arg_sqls = tuple(self.sql(arg) for arg in args if arg is not None) +1936 if self.pretty and self.text_width(arg_sqls) > self._max_text_width: +1937 return self.indent("\n" + f",\n".join(arg_sqls) + "\n", skip_first=True, skip_last=True) +1938 return ", ".join(arg_sqls) +1939 +1940 def text_width(self, args: t.Iterable) -> int: +1941 return sum(len(arg) for arg in args) 1942 -1943 def set_operation(self, expression: exp.Expression, op: str) -> str: -1944 this = self.sql(expression, "this") -1945 op = self.seg(op) -1946 return self.query_modifiers( -1947 expression, f"{this}{op}{self.sep()}{self.sql(expression, 'expression')}" -1948 ) -1949 -1950 def tag_sql(self, expression: exp.Tag) -> str: -1951 return f"{expression.args.get('prefix')}{self.sql(expression.this)}{expression.args.get('postfix')}" -1952 -1953 def token_sql(self, token_type: TokenType) -> str: -1954 return self.TOKEN_MAPPING.get(token_type, token_type.name) -1955 -1956 def userdefinedfunction_sql(self, expression: exp.UserDefinedFunction) -> str: -1957 this = self.sql(expression, "this") -1958 expressions = self.no_identify(self.expressions, expression) -1959 expressions = ( -1960 self.wrap(expressions) if expression.args.get("wrapped") else f" {expressions}" -1961 ) -1962 return f"{this}{expressions}" -1963 -1964 def joinhint_sql(self, expression: exp.JoinHint) -> str: -1965 this = self.sql(expression, "this") -1966 expressions = self.expressions(expression, flat=True) -1967 return f"{this}({expressions})" +1943 def format_time(self, expression: exp.Expression) -> t.Optional[str]: +1944 return format_time(self.sql(expression, "format"), self.time_mapping, self.time_trie) +1945 +1946 def expressions( +1947 self, +1948 expression: exp.Expression, +1949 key: t.Optional[str] = None, +1950 flat: bool = False, +1951 indent: bool = True, +1952 sep: str = ", ", +1953 prefix: str = "", +1954 ) -> str: +1955 expressions = expression.args.get(key or "expressions") +1956 +1957 if not expressions: +1958 return "" +1959 +1960 if flat: +1961 return sep.join(self.sql(e) for e in expressions) +1962 +1963 num_sqls = len(expressions) +1964 +1965 # These are calculated once in case we have the leading_comma / pretty option set, correspondingly +1966 pad = " " * self.pad +1967 stripped_sep = sep.strip() 1968 -1969 def kwarg_sql(self, expression: exp.Kwarg) -> str: -1970 return self.binary(expression, "=>") -1971 -1972 def when_sql(self, expression: exp.When) -> str: -1973 matched = "MATCHED" if expression.args["matched"] else "NOT MATCHED" -1974 source = " BY SOURCE" if self.MATCHED_BY_SOURCE and expression.args.get("source") else "" -1975 condition = self.sql(expression, "condition") -1976 condition = f" AND {condition}" if condition else "" -1977 -1978 then_expression = expression.args.get("then") -1979 if isinstance(then_expression, exp.Insert): -1980 then = f"INSERT {self.sql(then_expression, 'this')}" -1981 if "expression" in then_expression.args: -1982 then += f" VALUES {self.sql(then_expression, 'expression')}" -1983 elif isinstance(then_expression, exp.Update): -1984 if isinstance(then_expression.args.get("expressions"), exp.Star): -1985 then = f"UPDATE {self.sql(then_expression, 'expressions')}" -1986 else: -1987 then = f"UPDATE SET {self.expressions(then_expression, flat=True)}" -1988 else: -1989 then = self.sql(then_expression) -1990 return f"WHEN {matched}{source}{condition} THEN {then}" -1991 -1992 def merge_sql(self, expression: exp.Merge) -> str: -1993 this = self.sql(expression, "this") -1994 using = f"USING {self.sql(expression, 'using')}" -1995 on = f"ON {self.sql(expression, 'on')}" -1996 return f"MERGE INTO {this} {using} {on} {self.expressions(expression, sep=' ')}" -1997 -1998 def tochar_sql(self, expression: exp.ToChar) -> str: -1999 if expression.args.get("format"): -2000 self.unsupported("Format argument unsupported for TO_CHAR/TO_VARCHAR function") -2001 -2002 return self.sql(exp.cast(expression.this, "text")) +1969 result_sqls = [] +1970 for i, e in enumerate(expressions): +1971 sql = self.sql(e, comment=False) +1972 comments = self.maybe_comment("", e) if isinstance(e, exp.Expression) else "" +1973 +1974 if self.pretty: +1975 if self._leading_comma: +1976 result_sqls.append(f"{sep if i > 0 else pad}{prefix}{sql}{comments}") +1977 else: +1978 result_sqls.append( +1979 f"{prefix}{sql}{stripped_sep if i + 1 < num_sqls else ''}{comments}" +1980 ) +1981 else: +1982 result_sqls.append(f"{prefix}{sql}{comments}{sep if i + 1 < num_sqls else ''}") +1983 +1984 result_sql = "\n".join(result_sqls) if self.pretty else "".join(result_sqls) +1985 return self.indent(result_sql, skip_first=False) if indent else result_sql +1986 +1987 def op_expressions(self, op: str, expression: exp.Expression, flat: bool = False) -> str: +1988 flat = flat or isinstance(expression.parent, exp.Properties) +1989 expressions_sql = self.expressions(expression, flat=flat) +1990 if flat: +1991 return f"{op} {expressions_sql}" +1992 return f"{self.seg(op)}{self.sep() if expressions_sql else ''}{expressions_sql}" +1993 +1994 def naked_property(self, expression: exp.Property) -> str: +1995 property_name = exp.Properties.PROPERTY_TO_NAME.get(expression.__class__) +1996 if not property_name: +1997 self.unsupported(f"Unsupported property {expression.__class__.__name__}") +1998 return f"{property_name} {self.sql(expression, 'this')}" +1999 +2000 def set_operation(self, expression: exp.Expression, op: str) -> str: +2001 this = self.sql(expression, "this") +2002 op = self.seg(op) +2003 return self.query_modifiers( +2004 expression, f"{this}{op}{self.sep()}{self.sql(expression, 'expression')}" +2005 ) +2006 +2007 def tag_sql(self, expression: exp.Tag) -> str: +2008 return f"{expression.args.get('prefix')}{self.sql(expression.this)}{expression.args.get('postfix')}" +2009 +2010 def token_sql(self, token_type: TokenType) -> str: +2011 return self.TOKEN_MAPPING.get(token_type, token_type.name) +2012 +2013 def userdefinedfunction_sql(self, expression: exp.UserDefinedFunction) -> str: +2014 this = self.sql(expression, "this") +2015 expressions = self.no_identify(self.expressions, expression) +2016 expressions = ( +2017 self.wrap(expressions) if expression.args.get("wrapped") else f" {expressions}" +2018 ) +2019 return f"{this}{expressions}" +2020 +2021 def joinhint_sql(self, expression: exp.JoinHint) -> str: +2022 this = self.sql(expression, "this") +2023 expressions = self.expressions(expression, flat=True) +2024 return f"{this}({expressions})" +2025 +2026 def kwarg_sql(self, expression: exp.Kwarg) -> str: +2027 return self.binary(expression, "=>") +2028 +2029 def when_sql(self, expression: exp.When) -> str: +2030 matched = "MATCHED" if expression.args["matched"] else "NOT MATCHED" +2031 source = " BY SOURCE" if self.MATCHED_BY_SOURCE and expression.args.get("source") else "" +2032 condition = self.sql(expression, "condition") +2033 condition = f" AND {condition}" if condition else "" +2034 +2035 then_expression = expression.args.get("then") +2036 if isinstance(then_expression, exp.Insert): +2037 then = f"INSERT {self.sql(then_expression, 'this')}" +2038 if "expression" in then_expression.args: +2039 then += f" VALUES {self.sql(then_expression, 'expression')}" +2040 elif isinstance(then_expression, exp.Update): +2041 if isinstance(then_expression.args.get("expressions"), exp.Star): +2042 then = f"UPDATE {self.sql(then_expression, 'expressions')}" +2043 else: +2044 then = f"UPDATE SET {self.expressions(then_expression, flat=True)}" +2045 else: +2046 then = self.sql(then_expression) +2047 return f"WHEN {matched}{source}{condition} THEN {then}" +2048 +2049 def merge_sql(self, expression: exp.Merge) -> str: +2050 this = self.sql(expression, "this") +2051 using = f"USING {self.sql(expression, 'using')}" +2052 on = f"ON {self.sql(expression, 'on')}" +2053 return f"MERGE INTO {this} {using} {on} {self.expressions(expression, sep=' ')}" +2054 +2055 def tochar_sql(self, expression: exp.ToChar) -> str: +2056 if expression.args.get("format"): +2057 self.unsupported("Format argument unsupported for TO_CHAR/TO_VARCHAR function") +2058 +2059 return self.sql(exp.cast(expression.this, "text"))
        @@ -2816,1896 +2882,1953 @@
        111 # Whether or not MERGE ... WHEN MATCHED BY SOURCE is allowed 112 MATCHED_BY_SOURCE = True 113 - 114 TYPE_MAPPING = { - 115 exp.DataType.Type.NCHAR: "CHAR", - 116 exp.DataType.Type.NVARCHAR: "VARCHAR", - 117 exp.DataType.Type.MEDIUMTEXT: "TEXT", - 118 exp.DataType.Type.LONGTEXT: "TEXT", - 119 exp.DataType.Type.MEDIUMBLOB: "BLOB", - 120 exp.DataType.Type.LONGBLOB: "BLOB", - 121 exp.DataType.Type.INET: "INET", - 122 } - 123 - 124 STAR_MAPPING = { - 125 "except": "EXCEPT", - 126 "replace": "REPLACE", - 127 } - 128 - 129 TOKEN_MAPPING: t.Dict[TokenType, str] = {} - 130 - 131 STRUCT_DELIMITER = ("<", ">") + 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 } + 127 + 128 STAR_MAPPING = { + 129 "except": "EXCEPT", + 130 "replace": "REPLACE", + 131 } 132 - 133 PARAMETER_TOKEN = "@" + 133 TOKEN_MAPPING: t.Dict[TokenType, str] = {} 134 - 135 PROPERTIES_LOCATION = { - 136 exp.AfterJournalProperty: exp.Properties.Location.POST_NAME, - 137 exp.AlgorithmProperty: exp.Properties.Location.POST_CREATE, - 138 exp.AutoIncrementProperty: exp.Properties.Location.POST_SCHEMA, - 139 exp.BlockCompressionProperty: exp.Properties.Location.POST_NAME, - 140 exp.CharacterSetProperty: exp.Properties.Location.POST_SCHEMA, - 141 exp.ChecksumProperty: exp.Properties.Location.POST_NAME, - 142 exp.CollateProperty: exp.Properties.Location.POST_SCHEMA, - 143 exp.Cluster: exp.Properties.Location.POST_SCHEMA, - 144 exp.DataBlocksizeProperty: exp.Properties.Location.POST_NAME, - 145 exp.DefinerProperty: exp.Properties.Location.POST_CREATE, - 146 exp.DistKeyProperty: exp.Properties.Location.POST_SCHEMA, - 147 exp.DistStyleProperty: exp.Properties.Location.POST_SCHEMA, - 148 exp.EngineProperty: exp.Properties.Location.POST_SCHEMA, - 149 exp.ExecuteAsProperty: exp.Properties.Location.POST_SCHEMA, - 150 exp.ExternalProperty: exp.Properties.Location.POST_CREATE, - 151 exp.FallbackProperty: exp.Properties.Location.POST_NAME, - 152 exp.FileFormatProperty: exp.Properties.Location.POST_WITH, - 153 exp.FreespaceProperty: exp.Properties.Location.POST_NAME, - 154 exp.IsolatedLoadingProperty: exp.Properties.Location.POST_NAME, - 155 exp.JournalProperty: exp.Properties.Location.POST_NAME, - 156 exp.LanguageProperty: exp.Properties.Location.POST_SCHEMA, - 157 exp.LikeProperty: exp.Properties.Location.POST_SCHEMA, - 158 exp.LocationProperty: exp.Properties.Location.POST_SCHEMA, - 159 exp.LockingProperty: exp.Properties.Location.POST_ALIAS, - 160 exp.LogProperty: exp.Properties.Location.POST_NAME, - 161 exp.MaterializedProperty: exp.Properties.Location.POST_CREATE, - 162 exp.MergeBlockRatioProperty: exp.Properties.Location.POST_NAME, - 163 exp.NoPrimaryIndexProperty: exp.Properties.Location.POST_EXPRESSION, - 164 exp.OnCommitProperty: exp.Properties.Location.POST_EXPRESSION, - 165 exp.PartitionedByProperty: exp.Properties.Location.POST_WITH, - 166 exp.Property: exp.Properties.Location.POST_WITH, - 167 exp.ReturnsProperty: exp.Properties.Location.POST_SCHEMA, - 168 exp.RowFormatDelimitedProperty: exp.Properties.Location.POST_SCHEMA, - 169 exp.RowFormatSerdeProperty: exp.Properties.Location.POST_SCHEMA, - 170 exp.SchemaCommentProperty: exp.Properties.Location.POST_SCHEMA, - 171 exp.SerdeProperties: exp.Properties.Location.POST_SCHEMA, - 172 exp.SetProperty: exp.Properties.Location.POST_CREATE, - 173 exp.SortKeyProperty: exp.Properties.Location.POST_SCHEMA, - 174 exp.SqlSecurityProperty: exp.Properties.Location.POST_CREATE, - 175 exp.TableFormatProperty: exp.Properties.Location.POST_WITH, - 176 exp.TemporaryProperty: exp.Properties.Location.POST_CREATE, - 177 exp.TransientProperty: exp.Properties.Location.POST_CREATE, - 178 exp.VolatilityProperty: exp.Properties.Location.POST_SCHEMA, - 179 exp.WithDataProperty: exp.Properties.Location.POST_EXPRESSION, - 180 exp.WithJournalTableProperty: exp.Properties.Location.POST_NAME, - 181 } - 182 - 183 WITH_SEPARATED_COMMENTS = (exp.Select, exp.From, exp.Where, exp.Binary) - 184 SENTINEL_LINE_BREAK = "__SQLGLOT__LB__" - 185 - 186 __slots__ = ( - 187 "time_mapping", - 188 "time_trie", - 189 "pretty", - 190 "quote_start", - 191 "quote_end", - 192 "identifier_start", - 193 "identifier_end", - 194 "identify", - 195 "normalize", - 196 "string_escape", - 197 "identifier_escape", - 198 "pad", - 199 "index_offset", - 200 "unnest_column_only", - 201 "alias_post_tablesample", - 202 "normalize_functions", - 203 "unsupported_level", - 204 "unsupported_messages", - 205 "null_ordering", - 206 "max_unsupported", - 207 "_indent", - 208 "_escaped_quote_end", - 209 "_escaped_identifier_end", - 210 "_leading_comma", - 211 "_max_text_width", - 212 "_comments", - 213 ) - 214 - 215 def __init__( - 216 self, - 217 time_mapping=None, - 218 time_trie=None, - 219 pretty=None, - 220 quote_start=None, - 221 quote_end=None, - 222 identifier_start=None, - 223 identifier_end=None, - 224 identify=False, - 225 normalize=False, - 226 string_escape=None, - 227 identifier_escape=None, - 228 pad=2, - 229 indent=2, - 230 index_offset=0, - 231 unnest_column_only=False, - 232 alias_post_tablesample=False, - 233 normalize_functions="upper", - 234 unsupported_level=ErrorLevel.WARN, - 235 null_ordering=None, - 236 max_unsupported=3, - 237 leading_comma=False, - 238 max_text_width=80, - 239 comments=True, - 240 ): - 241 import sqlglot - 242 - 243 self.time_mapping = time_mapping or {} - 244 self.time_trie = time_trie - 245 self.pretty = pretty if pretty is not None else sqlglot.pretty - 246 self.quote_start = quote_start or "'" - 247 self.quote_end = quote_end or "'" - 248 self.identifier_start = identifier_start or '"' - 249 self.identifier_end = identifier_end or '"' - 250 self.identify = identify - 251 self.normalize = normalize - 252 self.string_escape = string_escape or "'" - 253 self.identifier_escape = identifier_escape or '"' - 254 self.pad = pad - 255 self.index_offset = index_offset - 256 self.unnest_column_only = unnest_column_only - 257 self.alias_post_tablesample = alias_post_tablesample - 258 self.normalize_functions = normalize_functions - 259 self.unsupported_level = unsupported_level - 260 self.unsupported_messages = [] - 261 self.max_unsupported = max_unsupported - 262 self.null_ordering = null_ordering - 263 self._indent = indent - 264 self._escaped_quote_end = self.string_escape + self.quote_end - 265 self._escaped_identifier_end = self.identifier_escape + self.identifier_end - 266 self._leading_comma = leading_comma - 267 self._max_text_width = max_text_width - 268 self._comments = comments - 269 - 270 def generate(self, expression: t.Optional[exp.Expression]) -> str: - 271 """ - 272 Generates a SQL string by interpreting the given syntax tree. - 273 - 274 Args - 275 expression: the syntax tree. - 276 - 277 Returns - 278 the SQL string. - 279 """ - 280 self.unsupported_messages = [] - 281 sql = self.sql(expression).strip() - 282 - 283 if self.unsupported_level == ErrorLevel.IGNORE: - 284 return sql - 285 - 286 if self.unsupported_level == ErrorLevel.WARN: - 287 for msg in self.unsupported_messages: - 288 logger.warning(msg) - 289 elif self.unsupported_level == ErrorLevel.RAISE and self.unsupported_messages: - 290 raise UnsupportedError(concat_messages(self.unsupported_messages, self.max_unsupported)) - 291 - 292 if self.pretty: - 293 sql = sql.replace(self.SENTINEL_LINE_BREAK, "\n") - 294 return sql - 295 - 296 def unsupported(self, message: str) -> None: - 297 if self.unsupported_level == ErrorLevel.IMMEDIATE: - 298 raise UnsupportedError(message) - 299 self.unsupported_messages.append(message) - 300 - 301 def sep(self, sep: str = " ") -> str: - 302 return f"{sep.strip()}\n" if self.pretty else sep - 303 - 304 def seg(self, sql: str, sep: str = " ") -> str: - 305 return f"{self.sep(sep)}{sql}" - 306 - 307 def pad_comment(self, comment: str) -> str: - 308 comment = " " + comment if comment[0].strip() else comment - 309 comment = comment + " " if comment[-1].strip() else comment - 310 return comment - 311 - 312 def maybe_comment(self, sql: str, expression: exp.Expression) -> str: - 313 comments = expression.comments if self._comments else None + 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 if not comments: - 316 return sql + 315 def sep(self, sep: str = " ") -> str: + 316 return f"{sep.strip()}\n" if self.pretty else sep 317 - 318 sep = "\n" if self.pretty else " " - 319 comments_sql = sep.join( - 320 f"/*{self.pad_comment(comment)}*/" for comment in comments if comment - 321 ) - 322 - 323 if not comments_sql: - 324 return sql + 318 def seg(self, sql: str, sep: str = " ") -> str: + 319 return f"{self.sep(sep)}{sql}" + 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 if isinstance(expression, self.WITH_SEPARATED_COMMENTS): - 327 return f"{comments_sql}{self.sep()}{sql}" + 326 def maybe_comment(self, sql: str, expression: exp.Expression) -> str: + 327 comments = expression.comments if self._comments else None 328 - 329 return f"{sql} {comments_sql}" - 330 - 331 def wrap(self, expression: exp.Expression | str) -> str: - 332 this_sql = self.indent( - 333 self.sql(expression) - 334 if isinstance(expression, (exp.Select, exp.Union)) - 335 else self.sql(expression, "this"), - 336 level=1, - 337 pad=0, - 338 ) - 339 return f"({self.sep('')}{this_sql}{self.seg(')', sep='')}" - 340 - 341 def no_identify(self, func: t.Callable[..., str], *args, **kwargs) -> str: - 342 original = self.identify - 343 self.identify = False - 344 result = func(*args, **kwargs) - 345 self.identify = original - 346 return result - 347 - 348 def normalize_func(self, name: str) -> str: - 349 if self.normalize_functions == "upper": - 350 return name.upper() - 351 if self.normalize_functions == "lower": - 352 return name.lower() - 353 return name + 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}" + 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 indent( - 356 self, - 357 sql: str, - 358 level: int = 0, - 359 pad: t.Optional[int] = None, - 360 skip_first: bool = False, - 361 skip_last: bool = False, - 362 ) -> str: - 363 if not self.pretty: - 364 return sql - 365 - 366 pad = self.pad if pad is None else pad - 367 lines = sql.split("\n") + 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 return "\n".join( - 370 line - 371 if (skip_first and i == 0) or (skip_last and i == len(lines) - 1) - 372 else f"{' ' * (level * self._indent + pad)}{line}" - 373 for i, line in enumerate(lines) - 374 ) - 375 - 376 def sql( - 377 self, - 378 expression: t.Optional[str | exp.Expression], - 379 key: t.Optional[str] = None, - 380 comment: bool = True, - 381 ) -> str: - 382 if not expression: - 383 return "" - 384 - 385 if isinstance(expression, str): - 386 return expression - 387 - 388 if key: - 389 return self.sql(expression.args.get(key)) - 390 - 391 transform = self.TRANSFORMS.get(expression.__class__) - 392 - 393 if callable(transform): - 394 sql = transform(self, expression) - 395 elif transform: - 396 sql = transform - 397 elif isinstance(expression, exp.Expression): - 398 exp_handler_name = f"{expression.key}_sql" - 399 - 400 if hasattr(self, exp_handler_name): - 401 sql = getattr(self, exp_handler_name)(expression) - 402 elif isinstance(expression, exp.Func): - 403 sql = self.function_fallback_sql(expression) - 404 elif isinstance(expression, exp.Property): - 405 sql = self.property_sql(expression) - 406 else: - 407 raise ValueError(f"Unsupported expression type {expression.__class__.__name__}") - 408 else: - 409 raise ValueError(f"Expected an Expression. Received {type(expression)}: {expression}") + 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 ) + 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 return self.maybe_comment(sql, expression) if self._comments and comment else sql + 411 transform = self.TRANSFORMS.get(expression.__class__) 412 - 413 def uncache_sql(self, expression: exp.Uncache) -> str: - 414 table = self.sql(expression, "this") - 415 exists_sql = " IF EXISTS" if expression.args.get("exists") else "" - 416 return f"UNCACHE TABLE{exists_sql} {table}" - 417 - 418 def cache_sql(self, expression: exp.Cache) -> str: - 419 lazy = " LAZY" if expression.args.get("lazy") else "" - 420 table = self.sql(expression, "this") - 421 options = expression.args.get("options") - 422 options = f" OPTIONS({self.sql(options[0])} = {self.sql(options[1])})" if options else "" - 423 sql = self.sql(expression, "expression") - 424 sql = f" AS{self.sep()}{sql}" if sql else "" - 425 sql = f"CACHE{lazy} TABLE {table}{options}{sql}" - 426 return self.prepend_ctes(expression, sql) - 427 - 428 def characterset_sql(self, expression: exp.CharacterSet) -> str: - 429 if isinstance(expression.parent, exp.Cast): - 430 return f"CHAR CHARACTER SET {self.sql(expression, 'this')}" - 431 default = "DEFAULT " if expression.args.get("default") else "" - 432 return f"{default}CHARACTER SET={self.sql(expression, 'this')}" - 433 - 434 def column_sql(self, expression: exp.Column) -> str: - 435 return ".".join( - 436 self.sql(part) - 437 for part in ( - 438 expression.args.get("catalog"), - 439 expression.args.get("db"), - 440 expression.args.get("table"), - 441 expression.args.get("this"), - 442 ) - 443 if part - 444 ) - 445 - 446 def columndef_sql(self, expression: exp.ColumnDef) -> str: - 447 column = self.sql(expression, "this") - 448 kind = self.sql(expression, "kind") - 449 constraints = self.expressions(expression, key="constraints", sep=" ", flat=True) - 450 exists = "IF NOT EXISTS " if expression.args.get("exists") else "" - 451 kind = f" {kind}" if kind else "" - 452 constraints = f" {constraints}" if constraints else "" - 453 - 454 return f"{exists}{column}{kind}{constraints}" - 455 - 456 def columnconstraint_sql(self, expression: exp.ColumnConstraint) -> str: - 457 this = self.sql(expression, "this") - 458 kind_sql = self.sql(expression, "kind") - 459 return f"CONSTRAINT {this} {kind_sql}" if this else kind_sql - 460 - 461 def autoincrementcolumnconstraint_sql(self, _) -> str: - 462 return self.token_sql(TokenType.AUTO_INCREMENT) - 463 - 464 def compresscolumnconstraint_sql(self, expression: exp.CompressColumnConstraint) -> str: - 465 if isinstance(expression.this, list): - 466 this = self.wrap(self.expressions(expression, key="this", flat=True)) - 467 else: - 468 this = self.sql(expression, "this") + 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 + 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')}" + 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 return f"COMPRESS {this}" - 471 - 472 def generatedasidentitycolumnconstraint_sql( - 473 self, expression: exp.GeneratedAsIdentityColumnConstraint - 474 ) -> str: - 475 this = "" - 476 if expression.this is not None: - 477 this = " ALWAYS " if expression.this else " BY DEFAULT " - 478 start = expression.args.get("start") - 479 start = f"START WITH {start}" if start else "" - 480 increment = expression.args.get("increment") - 481 increment = f" INCREMENT BY {increment}" if increment else "" - 482 minvalue = expression.args.get("minvalue") - 483 minvalue = f" MINVALUE {minvalue}" if minvalue else "" - 484 maxvalue = expression.args.get("maxvalue") - 485 maxvalue = f" MAXVALUE {maxvalue}" if maxvalue else "" - 486 cycle = expression.args.get("cycle") - 487 cycle_sql = "" - 488 if cycle is not None: - 489 cycle_sql = f"{' NO' if not cycle else ''} CYCLE" - 490 cycle_sql = cycle_sql.strip() if not start and not increment else cycle_sql - 491 sequence_opts = "" - 492 if start or increment or cycle_sql: - 493 sequence_opts = f"{start}{increment}{minvalue}{maxvalue}{cycle_sql}" - 494 sequence_opts = f" ({sequence_opts.strip()})" - 495 return f"GENERATED{this}AS IDENTITY{sequence_opts}" - 496 - 497 def notnullcolumnconstraint_sql(self, expression: exp.NotNullColumnConstraint) -> str: - 498 return f"{'' if expression.args.get('allow_null') else 'NOT '}NULL" - 499 - 500 def primarykeycolumnconstraint_sql(self, expression: exp.PrimaryKeyColumnConstraint) -> str: - 501 desc = expression.args.get("desc") - 502 if desc is not None: - 503 return f"PRIMARY KEY{' DESC' if desc else ' ASC'}" - 504 return f"PRIMARY KEY" - 505 - 506 def uniquecolumnconstraint_sql(self, _) -> str: - 507 return "UNIQUE" - 508 - 509 def create_sql(self, expression: exp.Create) -> str: - 510 kind = self.sql(expression, "kind").upper() - 511 properties = expression.args.get("properties") - 512 properties_exp = expression.copy() - 513 properties_locs = self.locate_properties(properties) if properties else {} - 514 if properties_locs.get(exp.Properties.Location.POST_SCHEMA) or properties_locs.get( - 515 exp.Properties.Location.POST_WITH - 516 ): - 517 properties_exp.set( - 518 "properties", - 519 exp.Properties( - 520 expressions=[ - 521 *properties_locs[exp.Properties.Location.POST_SCHEMA], - 522 *properties_locs[exp.Properties.Location.POST_WITH], - 523 ] - 524 ), - 525 ) - 526 if kind == "TABLE" and properties_locs.get(exp.Properties.Location.POST_NAME): - 527 this_name = self.sql(expression.this, "this") - 528 this_properties = self.properties( - 529 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_NAME]), - 530 wrapped=False, - 531 ) - 532 this_schema = f"({self.expressions(expression.this)})" - 533 this = f"{this_name}, {this_properties} {this_schema}" - 534 properties_sql = "" - 535 else: - 536 this = self.sql(expression, "this") - 537 properties_sql = self.sql(properties_exp, "properties") - 538 begin = " BEGIN" if expression.args.get("begin") else "" - 539 expression_sql = self.sql(expression, "expression") - 540 if expression_sql: - 541 expression_sql = f"{begin}{self.sep()}{expression_sql}" - 542 - 543 if self.CREATE_FUNCTION_RETURN_AS or not isinstance(expression.expression, exp.Return): - 544 if properties_locs.get(exp.Properties.Location.POST_ALIAS): - 545 postalias_props_sql = self.properties( - 546 exp.Properties( - 547 expressions=properties_locs[exp.Properties.Location.POST_ALIAS] - 548 ), - 549 wrapped=False, - 550 ) - 551 expression_sql = f" AS {postalias_props_sql}{expression_sql}" - 552 else: - 553 expression_sql = f" AS{expression_sql}" - 554 - 555 postindex_props_sql = "" - 556 if properties_locs.get(exp.Properties.Location.POST_INDEX): - 557 postindex_props_sql = self.properties( - 558 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_INDEX]), - 559 wrapped=False, - 560 prefix=" ", - 561 ) - 562 - 563 indexes = expression.args.get("indexes") - 564 if indexes: - 565 indexes_sql: t.List[str] = [] - 566 for index in indexes: - 567 ind_unique = " UNIQUE" if index.args.get("unique") else "" - 568 ind_primary = " PRIMARY" if index.args.get("primary") else "" - 569 ind_amp = " AMP" if index.args.get("amp") else "" - 570 ind_name = f" {index.name}" if index.name else "" - 571 ind_columns = ( - 572 f' ({self.expressions(index, key="columns", flat=True)})' - 573 if index.args.get("columns") - 574 else "" - 575 ) - 576 ind_sql = f"{ind_unique}{ind_primary}{ind_amp} INDEX{ind_name}{ind_columns}" - 577 - 578 if indexes_sql: - 579 indexes_sql.append(ind_sql) - 580 else: - 581 indexes_sql.append( - 582 f"{ind_sql}{postindex_props_sql}" - 583 if index.args.get("primary") - 584 else f"{postindex_props_sql}{ind_sql}" - 585 ) + 470 def columndef_sql(self, expression: exp.ColumnDef) -> str: + 471 column = self.sql(expression, "this") + 472 kind = self.sql(expression, "kind") + 473 constraints = self.expressions(expression, key="constraints", sep=" ", flat=True) + 474 exists = "IF NOT EXISTS " if expression.args.get("exists") else "" + 475 kind = f" {kind}" if kind else "" + 476 constraints = f" {constraints}" if constraints else "" + 477 + 478 return f"{exists}{column}{kind}{constraints}" + 479 + 480 def columnconstraint_sql(self, expression: exp.ColumnConstraint) -> str: + 481 this = self.sql(expression, "this") + 482 kind_sql = self.sql(expression, "kind") + 483 return f"CONSTRAINT {this} {kind_sql}" if this else kind_sql + 484 + 485 def autoincrementcolumnconstraint_sql(self, _) -> str: + 486 return self.token_sql(TokenType.AUTO_INCREMENT) + 487 + 488 def compresscolumnconstraint_sql(self, expression: exp.CompressColumnConstraint) -> str: + 489 if isinstance(expression.this, list): + 490 this = self.wrap(self.expressions(expression, key="this", flat=True)) + 491 else: + 492 this = self.sql(expression, "this") + 493 + 494 return f"COMPRESS {this}" + 495 + 496 def generatedasidentitycolumnconstraint_sql( + 497 self, expression: exp.GeneratedAsIdentityColumnConstraint + 498 ) -> str: + 499 this = "" + 500 if expression.this is not None: + 501 this = " ALWAYS " if expression.this else " BY DEFAULT " + 502 start = expression.args.get("start") + 503 start = f"START WITH {start}" if start else "" + 504 increment = expression.args.get("increment") + 505 increment = f" INCREMENT BY {increment}" if increment else "" + 506 minvalue = expression.args.get("minvalue") + 507 minvalue = f" MINVALUE {minvalue}" if minvalue else "" + 508 maxvalue = expression.args.get("maxvalue") + 509 maxvalue = f" MAXVALUE {maxvalue}" if maxvalue else "" + 510 cycle = expression.args.get("cycle") + 511 cycle_sql = "" + 512 if cycle is not None: + 513 cycle_sql = f"{' NO' if not cycle else ''} CYCLE" + 514 cycle_sql = cycle_sql.strip() if not start and not increment else cycle_sql + 515 sequence_opts = "" + 516 if start or increment or cycle_sql: + 517 sequence_opts = f"{start}{increment}{minvalue}{maxvalue}{cycle_sql}" + 518 sequence_opts = f" ({sequence_opts.strip()})" + 519 return f"GENERATED{this}AS IDENTITY{sequence_opts}" + 520 + 521 def notnullcolumnconstraint_sql(self, expression: exp.NotNullColumnConstraint) -> str: + 522 return f"{'' if expression.args.get('allow_null') else 'NOT '}NULL" + 523 + 524 def primarykeycolumnconstraint_sql(self, expression: exp.PrimaryKeyColumnConstraint) -> str: + 525 desc = expression.args.get("desc") + 526 if desc is not None: + 527 return f"PRIMARY KEY{' DESC' if desc else ' ASC'}" + 528 return f"PRIMARY KEY" + 529 + 530 def uniquecolumnconstraint_sql(self, _) -> str: + 531 return "UNIQUE" + 532 + 533 def create_sql(self, expression: exp.Create) -> str: + 534 kind = self.sql(expression, "kind").upper() + 535 properties = expression.args.get("properties") + 536 properties_exp = expression.copy() + 537 properties_locs = self.locate_properties(properties) if properties else {} + 538 if properties_locs.get(exp.Properties.Location.POST_SCHEMA) or properties_locs.get( + 539 exp.Properties.Location.POST_WITH + 540 ): + 541 properties_exp.set( + 542 "properties", + 543 exp.Properties( + 544 expressions=[ + 545 *properties_locs[exp.Properties.Location.POST_SCHEMA], + 546 *properties_locs[exp.Properties.Location.POST_WITH], + 547 ] + 548 ), + 549 ) + 550 if kind == "TABLE" and properties_locs.get(exp.Properties.Location.POST_NAME): + 551 this_name = self.sql(expression.this, "this") + 552 this_properties = self.properties( + 553 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_NAME]), + 554 wrapped=False, + 555 ) + 556 this_schema = f"({self.expressions(expression.this)})" + 557 this = f"{this_name}, {this_properties} {this_schema}" + 558 properties_sql = "" + 559 else: + 560 this = self.sql(expression, "this") + 561 properties_sql = self.sql(properties_exp, "properties") + 562 begin = " BEGIN" if expression.args.get("begin") else "" + 563 expression_sql = self.sql(expression, "expression") + 564 if expression_sql: + 565 expression_sql = f"{begin}{self.sep()}{expression_sql}" + 566 + 567 if self.CREATE_FUNCTION_RETURN_AS or not isinstance(expression.expression, exp.Return): + 568 if properties_locs.get(exp.Properties.Location.POST_ALIAS): + 569 postalias_props_sql = self.properties( + 570 exp.Properties( + 571 expressions=properties_locs[exp.Properties.Location.POST_ALIAS] + 572 ), + 573 wrapped=False, + 574 ) + 575 expression_sql = f" AS {postalias_props_sql}{expression_sql}" + 576 else: + 577 expression_sql = f" AS{expression_sql}" + 578 + 579 postindex_props_sql = "" + 580 if properties_locs.get(exp.Properties.Location.POST_INDEX): + 581 postindex_props_sql = self.properties( + 582 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_INDEX]), + 583 wrapped=False, + 584 prefix=" ", + 585 ) 586 - 587 index_sql = "".join(indexes_sql) - 588 else: - 589 index_sql = postindex_props_sql - 590 - 591 replace = " OR REPLACE" if expression.args.get("replace") else "" - 592 unique = " UNIQUE" if expression.args.get("unique") else "" - 593 volatile = " VOLATILE" if expression.args.get("volatile") else "" - 594 - 595 postcreate_props_sql = "" - 596 if properties_locs.get(exp.Properties.Location.POST_CREATE): - 597 postcreate_props_sql = self.properties( - 598 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_CREATE]), - 599 sep=" ", - 600 prefix=" ", - 601 wrapped=False, - 602 ) - 603 - 604 modifiers = "".join((replace, unique, volatile, postcreate_props_sql)) - 605 - 606 postexpression_props_sql = "" - 607 if properties_locs.get(exp.Properties.Location.POST_EXPRESSION): - 608 postexpression_props_sql = self.properties( - 609 exp.Properties( - 610 expressions=properties_locs[exp.Properties.Location.POST_EXPRESSION] - 611 ), - 612 sep=" ", - 613 prefix=" ", - 614 wrapped=False, - 615 ) - 616 - 617 exists_sql = " IF NOT EXISTS" if expression.args.get("exists") else "" - 618 no_schema_binding = ( - 619 " WITH NO SCHEMA BINDING" if expression.args.get("no_schema_binding") else "" - 620 ) - 621 - 622 expression_sql = f"CREATE{modifiers} {kind}{exists_sql} {this}{properties_sql}{expression_sql}{postexpression_props_sql}{index_sql}{no_schema_binding}" - 623 return self.prepend_ctes(expression, expression_sql) - 624 - 625 def describe_sql(self, expression: exp.Describe) -> str: - 626 return f"DESCRIBE {self.sql(expression, 'this')}" + 587 indexes = expression.args.get("indexes") + 588 if indexes: + 589 indexes_sql: t.List[str] = [] + 590 for index in indexes: + 591 ind_unique = " UNIQUE" if index.args.get("unique") else "" + 592 ind_primary = " PRIMARY" if index.args.get("primary") else "" + 593 ind_amp = " AMP" if index.args.get("amp") else "" + 594 ind_name = f" {index.name}" if index.name else "" + 595 ind_columns = ( + 596 f' ({self.expressions(index, key="columns", flat=True)})' + 597 if index.args.get("columns") + 598 else "" + 599 ) + 600 ind_sql = f"{ind_unique}{ind_primary}{ind_amp} INDEX{ind_name}{ind_columns}" + 601 + 602 if indexes_sql: + 603 indexes_sql.append(ind_sql) + 604 else: + 605 indexes_sql.append( + 606 f"{ind_sql}{postindex_props_sql}" + 607 if index.args.get("primary") + 608 else f"{postindex_props_sql}{ind_sql}" + 609 ) + 610 + 611 index_sql = "".join(indexes_sql) + 612 else: + 613 index_sql = postindex_props_sql + 614 + 615 replace = " OR REPLACE" if expression.args.get("replace") else "" + 616 unique = " UNIQUE" if expression.args.get("unique") else "" + 617 volatile = " VOLATILE" if expression.args.get("volatile") else "" + 618 + 619 postcreate_props_sql = "" + 620 if properties_locs.get(exp.Properties.Location.POST_CREATE): + 621 postcreate_props_sql = self.properties( + 622 exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_CREATE]), + 623 sep=" ", + 624 prefix=" ", + 625 wrapped=False, + 626 ) 627 - 628 def prepend_ctes(self, expression: exp.Expression, sql: str) -> str: - 629 with_ = self.sql(expression, "with") - 630 if with_: - 631 sql = f"{with_}{self.sep()}{sql}" - 632 return sql - 633 - 634 def with_sql(self, expression: exp.With) -> str: - 635 sql = self.expressions(expression, flat=True) - 636 recursive = "RECURSIVE " if expression.args.get("recursive") else "" - 637 - 638 return f"WITH {recursive}{sql}" - 639 - 640 def cte_sql(self, expression: exp.CTE) -> str: - 641 alias = self.sql(expression, "alias") - 642 return f"{alias} AS {self.wrap(expression)}" - 643 - 644 def tablealias_sql(self, expression: exp.TableAlias) -> str: - 645 alias = self.sql(expression, "this") - 646 columns = self.expressions(expression, key="columns", flat=True) - 647 columns = f"({columns})" if columns else "" - 648 return f"{alias}{columns}" - 649 - 650 def bitstring_sql(self, expression: exp.BitString) -> str: - 651 return self.sql(expression, "this") - 652 - 653 def hexstring_sql(self, expression: exp.HexString) -> str: - 654 return self.sql(expression, "this") - 655 - 656 def datatype_sql(self, expression: exp.DataType) -> str: - 657 type_value = expression.this - 658 type_sql = self.TYPE_MAPPING.get(type_value, type_value.value) - 659 nested = "" - 660 interior = self.expressions(expression, flat=True) - 661 values = "" - 662 if interior: - 663 if expression.args.get("nested"): - 664 nested = f"{self.STRUCT_DELIMITER[0]}{interior}{self.STRUCT_DELIMITER[1]}" - 665 if expression.args.get("values") is not None: - 666 delimiters = ("[", "]") if type_value == exp.DataType.Type.ARRAY else ("(", ")") - 667 values = ( - 668 f"{delimiters[0]}{self.expressions(expression, 'values')}{delimiters[1]}" - 669 ) - 670 else: - 671 nested = f"({interior})" - 672 - 673 return f"{type_sql}{nested}{values}" - 674 - 675 def directory_sql(self, expression: exp.Directory) -> str: - 676 local = "LOCAL " if expression.args.get("local") else "" - 677 row_format = self.sql(expression, "row_format") - 678 row_format = f" {row_format}" if row_format else "" - 679 return f"{local}DIRECTORY {self.sql(expression, 'this')}{row_format}" - 680 - 681 def delete_sql(self, expression: exp.Delete) -> str: - 682 this = self.sql(expression, "this") - 683 this = f" FROM {this}" if this else "" - 684 using_sql = ( - 685 f" USING {self.expressions(expression, 'using', sep=', USING ')}" - 686 if expression.args.get("using") - 687 else "" - 688 ) - 689 where_sql = self.sql(expression, "where") - 690 returning = self.sql(expression, "returning") - 691 sql = f"DELETE{this}{using_sql}{where_sql}{returning}" - 692 return self.prepend_ctes(expression, sql) - 693 - 694 def drop_sql(self, expression: exp.Drop) -> str: - 695 this = self.sql(expression, "this") - 696 kind = expression.args["kind"] - 697 exists_sql = " IF EXISTS " if expression.args.get("exists") else " " - 698 temporary = " TEMPORARY" if expression.args.get("temporary") else "" - 699 materialized = " MATERIALIZED" if expression.args.get("materialized") else "" - 700 cascade = " CASCADE" if expression.args.get("cascade") else "" - 701 return f"DROP{temporary}{materialized} {kind}{exists_sql}{this}{cascade}" - 702 - 703 def except_sql(self, expression: exp.Except) -> str: - 704 return self.prepend_ctes( - 705 expression, - 706 self.set_operation(expression, self.except_op(expression)), - 707 ) - 708 - 709 def except_op(self, expression: exp.Except) -> str: - 710 return f"EXCEPT{'' if expression.args.get('distinct') else ' ALL'}" - 711 - 712 def fetch_sql(self, expression: exp.Fetch) -> str: - 713 direction = expression.args.get("direction") - 714 direction = f" {direction.upper()}" if direction else "" - 715 count = expression.args.get("count") - 716 count = f" {count}" if count else "" - 717 return f"{self.seg('FETCH')}{direction}{count} ROWS ONLY" - 718 - 719 def filter_sql(self, expression: exp.Filter) -> str: - 720 this = self.sql(expression, "this") - 721 where = self.sql(expression, "expression")[1:] # where has a leading space - 722 return f"{this} FILTER({where})" - 723 - 724 def hint_sql(self, expression: exp.Hint) -> str: - 725 if self.sql(expression, "this"): - 726 self.unsupported("Hints are not supported") - 727 return "" - 728 - 729 def index_sql(self, expression: exp.Index) -> str: - 730 this = self.sql(expression, "this") - 731 table = self.sql(expression, "table") - 732 columns = self.sql(expression, "columns") - 733 return f"{this} ON {table} {columns}" - 734 - 735 def identifier_sql(self, expression: exp.Identifier) -> str: - 736 text = expression.name - 737 text = text.lower() if self.normalize else text - 738 text = text.replace(self.identifier_end, self._escaped_identifier_end) - 739 if expression.args.get("quoted") or should_identify(text, self.identify): - 740 text = f"{self.identifier_start}{text}{self.identifier_end}" - 741 return text + 628 modifiers = "".join((replace, unique, volatile, postcreate_props_sql)) + 629 + 630 postexpression_props_sql = "" + 631 if properties_locs.get(exp.Properties.Location.POST_EXPRESSION): + 632 postexpression_props_sql = self.properties( + 633 exp.Properties( + 634 expressions=properties_locs[exp.Properties.Location.POST_EXPRESSION] + 635 ), + 636 sep=" ", + 637 prefix=" ", + 638 wrapped=False, + 639 ) + 640 + 641 exists_sql = " IF NOT EXISTS" if expression.args.get("exists") else "" + 642 no_schema_binding = ( + 643 " WITH NO SCHEMA BINDING" if expression.args.get("no_schema_binding") else "" + 644 ) + 645 + 646 expression_sql = f"CREATE{modifiers} {kind}{exists_sql} {this}{properties_sql}{expression_sql}{postexpression_props_sql}{index_sql}{no_schema_binding}" + 647 return self.prepend_ctes(expression, expression_sql) + 648 + 649 def describe_sql(self, expression: exp.Describe) -> str: + 650 return f"DESCRIBE {self.sql(expression, 'this')}" + 651 + 652 def prepend_ctes(self, expression: exp.Expression, sql: str) -> str: + 653 with_ = self.sql(expression, "with") + 654 if with_: + 655 sql = f"{with_}{self.sep()}{sql}" + 656 return sql + 657 + 658 def with_sql(self, expression: exp.With) -> str: + 659 sql = self.expressions(expression, flat=True) + 660 recursive = "RECURSIVE " if expression.args.get("recursive") else "" + 661 + 662 return f"WITH {recursive}{sql}" + 663 + 664 def cte_sql(self, expression: exp.CTE) -> str: + 665 alias = self.sql(expression, "alias") + 666 return f"{alias} AS {self.wrap(expression)}" + 667 + 668 def tablealias_sql(self, expression: exp.TableAlias) -> str: + 669 alias = self.sql(expression, "this") + 670 columns = self.expressions(expression, key="columns", flat=True) + 671 columns = f"({columns})" if columns else "" + 672 return f"{alias}{columns}" + 673 + 674 def bitstring_sql(self, expression: exp.BitString) -> str: + 675 return self.sql(expression, "this") + 676 + 677 def hexstring_sql(self, expression: exp.HexString) -> str: + 678 return self.sql(expression, "this") + 679 + 680 def datatype_sql(self, expression: exp.DataType) -> str: + 681 type_value = expression.this + 682 type_sql = self.TYPE_MAPPING.get(type_value, type_value.value) + 683 nested = "" + 684 interior = self.expressions(expression, flat=True) + 685 values = "" + 686 if interior: + 687 if expression.args.get("nested"): + 688 nested = f"{self.STRUCT_DELIMITER[0]}{interior}{self.STRUCT_DELIMITER[1]}" + 689 if expression.args.get("values") is not None: + 690 delimiters = ("[", "]") if type_value == exp.DataType.Type.ARRAY else ("(", ")") + 691 values = ( + 692 f"{delimiters[0]}{self.expressions(expression, 'values')}{delimiters[1]}" + 693 ) + 694 else: + 695 nested = f"({interior})" + 696 + 697 return f"{type_sql}{nested}{values}" + 698 + 699 def directory_sql(self, expression: exp.Directory) -> str: + 700 local = "LOCAL " if expression.args.get("local") else "" + 701 row_format = self.sql(expression, "row_format") + 702 row_format = f" {row_format}" if row_format else "" + 703 return f"{local}DIRECTORY {self.sql(expression, 'this')}{row_format}" + 704 + 705 def delete_sql(self, expression: exp.Delete) -> str: + 706 this = self.sql(expression, "this") + 707 this = f" FROM {this}" if this else "" + 708 using_sql = ( + 709 f" USING {self.expressions(expression, 'using', sep=', USING ')}" + 710 if expression.args.get("using") + 711 else "" + 712 ) + 713 where_sql = self.sql(expression, "where") + 714 returning = self.sql(expression, "returning") + 715 sql = f"DELETE{this}{using_sql}{where_sql}{returning}" + 716 return self.prepend_ctes(expression, sql) + 717 + 718 def drop_sql(self, expression: exp.Drop) -> str: + 719 this = self.sql(expression, "this") + 720 kind = expression.args["kind"] + 721 exists_sql = " IF EXISTS " if expression.args.get("exists") else " " + 722 temporary = " TEMPORARY" if expression.args.get("temporary") else "" + 723 materialized = " MATERIALIZED" if expression.args.get("materialized") else "" + 724 cascade = " CASCADE" if expression.args.get("cascade") else "" + 725 return f"DROP{temporary}{materialized} {kind}{exists_sql}{this}{cascade}" + 726 + 727 def except_sql(self, expression: exp.Except) -> str: + 728 return self.prepend_ctes( + 729 expression, + 730 self.set_operation(expression, self.except_op(expression)), + 731 ) + 732 + 733 def except_op(self, expression: exp.Except) -> str: + 734 return f"EXCEPT{'' if expression.args.get('distinct') else ' ALL'}" + 735 + 736 def fetch_sql(self, expression: exp.Fetch) -> str: + 737 direction = expression.args.get("direction") + 738 direction = f" {direction.upper()}" if direction else "" + 739 count = expression.args.get("count") + 740 count = f" {count}" if count else "" + 741 return f"{self.seg('FETCH')}{direction}{count} ROWS ONLY" 742 - 743 def national_sql(self, expression: exp.National) -> str: - 744 return f"N{self.sql(expression, 'this')}" - 745 - 746 def partition_sql(self, expression: exp.Partition) -> str: - 747 return f"PARTITION({self.expressions(expression)})" - 748 - 749 def properties_sql(self, expression: exp.Properties) -> str: - 750 root_properties = [] - 751 with_properties = [] + 743 def filter_sql(self, expression: exp.Filter) -> str: + 744 this = self.sql(expression, "this") + 745 where = self.sql(expression, "expression")[1:] # where has a leading space + 746 return f"{this} FILTER({where})" + 747 + 748 def hint_sql(self, expression: exp.Hint) -> str: + 749 if self.sql(expression, "this"): + 750 self.unsupported("Hints are not supported") + 751 return "" 752 - 753 for p in expression.expressions: - 754 p_loc = self.PROPERTIES_LOCATION[p.__class__] - 755 if p_loc == exp.Properties.Location.POST_WITH: - 756 with_properties.append(p) - 757 elif p_loc == exp.Properties.Location.POST_SCHEMA: - 758 root_properties.append(p) - 759 - 760 return self.root_properties( - 761 exp.Properties(expressions=root_properties) - 762 ) + self.with_properties(exp.Properties(expressions=with_properties)) - 763 - 764 def root_properties(self, properties: exp.Properties) -> str: - 765 if properties.expressions: - 766 return self.sep() + self.expressions(properties, indent=False, sep=" ") - 767 return "" - 768 - 769 def properties( - 770 self, - 771 properties: exp.Properties, - 772 prefix: str = "", - 773 sep: str = ", ", - 774 suffix: str = "", - 775 wrapped: bool = True, - 776 ) -> str: - 777 if properties.expressions: - 778 expressions = self.expressions(properties, sep=sep, indent=False) - 779 expressions = self.wrap(expressions) if wrapped else expressions - 780 return f"{prefix}{' ' if prefix and prefix != ' ' else ''}{expressions}{suffix}" - 781 return "" - 782 - 783 def with_properties(self, properties: exp.Properties) -> str: - 784 return self.properties(properties, prefix=self.seg("WITH")) - 785 - 786 def locate_properties( - 787 self, properties: exp.Properties - 788 ) -> t.Dict[exp.Properties.Location, list[exp.Property]]: - 789 properties_locs: t.Dict[exp.Properties.Location, list[exp.Property]] = { - 790 key: [] for key in exp.Properties.Location - 791 } + 753 def index_sql(self, expression: exp.Index) -> str: + 754 this = self.sql(expression, "this") + 755 table = self.sql(expression, "table") + 756 columns = self.sql(expression, "columns") + 757 return f"{this} ON {table} {columns}" + 758 + 759 def identifier_sql(self, expression: exp.Identifier) -> str: + 760 text = expression.name + 761 text = text.lower() if self.normalize and not expression.quoted else text + 762 text = text.replace(self.identifier_end, self._escaped_identifier_end) + 763 if expression.quoted or should_identify(text, self.identify): + 764 text = f"{self.identifier_start}{text}{self.identifier_end}" + 765 return text + 766 + 767 def national_sql(self, expression: exp.National) -> str: + 768 return f"N{self.sql(expression, 'this')}" + 769 + 770 def partition_sql(self, expression: exp.Partition) -> str: + 771 return f"PARTITION({self.expressions(expression)})" + 772 + 773 def properties_sql(self, expression: exp.Properties) -> str: + 774 root_properties = [] + 775 with_properties = [] + 776 + 777 for p in expression.expressions: + 778 p_loc = self.PROPERTIES_LOCATION[p.__class__] + 779 if p_loc == exp.Properties.Location.POST_WITH: + 780 with_properties.append(p) + 781 elif p_loc == exp.Properties.Location.POST_SCHEMA: + 782 root_properties.append(p) + 783 + 784 return self.root_properties( + 785 exp.Properties(expressions=root_properties) + 786 ) + self.with_properties(exp.Properties(expressions=with_properties)) + 787 + 788 def root_properties(self, properties: exp.Properties) -> str: + 789 if properties.expressions: + 790 return self.sep() + self.expressions(properties, indent=False, sep=" ") + 791 return "" 792 - 793 for p in properties.expressions: - 794 p_loc = self.PROPERTIES_LOCATION[p.__class__] - 795 if p_loc == exp.Properties.Location.POST_NAME: - 796 properties_locs[exp.Properties.Location.POST_NAME].append(p) - 797 elif p_loc == exp.Properties.Location.POST_INDEX: - 798 properties_locs[exp.Properties.Location.POST_INDEX].append(p) - 799 elif p_loc == exp.Properties.Location.POST_SCHEMA: - 800 properties_locs[exp.Properties.Location.POST_SCHEMA].append(p) - 801 elif p_loc == exp.Properties.Location.POST_WITH: - 802 properties_locs[exp.Properties.Location.POST_WITH].append(p) - 803 elif p_loc == exp.Properties.Location.POST_CREATE: - 804 properties_locs[exp.Properties.Location.POST_CREATE].append(p) - 805 elif p_loc == exp.Properties.Location.POST_ALIAS: - 806 properties_locs[exp.Properties.Location.POST_ALIAS].append(p) - 807 elif p_loc == exp.Properties.Location.POST_EXPRESSION: - 808 properties_locs[exp.Properties.Location.POST_EXPRESSION].append(p) - 809 elif p_loc == exp.Properties.Location.UNSUPPORTED: - 810 self.unsupported(f"Unsupported property {p.key}") - 811 - 812 return properties_locs - 813 - 814 def property_sql(self, expression: exp.Property) -> str: - 815 property_cls = expression.__class__ - 816 if property_cls == exp.Property: - 817 return f"{expression.name}={self.sql(expression, 'value')}" - 818 - 819 property_name = exp.Properties.PROPERTY_TO_NAME.get(property_cls) - 820 if not property_name: - 821 self.unsupported(f"Unsupported property {expression.key}") - 822 - 823 return f"{property_name}={self.sql(expression, 'this')}" - 824 - 825 def likeproperty_sql(self, expression: exp.LikeProperty) -> str: - 826 options = " ".join(f"{e.name} {self.sql(e, 'value')}" for e in expression.expressions) - 827 options = f" {options}" if options else "" - 828 return f"LIKE {self.sql(expression, 'this')}{options}" - 829 - 830 def fallbackproperty_sql(self, expression: exp.FallbackProperty) -> str: - 831 no = "NO " if expression.args.get("no") else "" - 832 protection = " PROTECTION" if expression.args.get("protection") else "" - 833 return f"{no}FALLBACK{protection}" - 834 - 835 def journalproperty_sql(self, expression: exp.JournalProperty) -> str: - 836 no = "NO " if expression.args.get("no") else "" - 837 dual = "DUAL " if expression.args.get("dual") else "" - 838 before = "BEFORE " if expression.args.get("before") else "" - 839 return f"{no}{dual}{before}JOURNAL" - 840 - 841 def freespaceproperty_sql(self, expression: exp.FreespaceProperty) -> str: - 842 freespace = self.sql(expression, "this") - 843 percent = " PERCENT" if expression.args.get("percent") else "" - 844 return f"FREESPACE={freespace}{percent}" - 845 - 846 def afterjournalproperty_sql(self, expression: exp.AfterJournalProperty) -> str: - 847 no = "NO " if expression.args.get("no") else "" - 848 dual = "DUAL " if expression.args.get("dual") else "" - 849 local = "" - 850 if expression.args.get("local") is not None: - 851 local = "LOCAL " if expression.args.get("local") else "NOT LOCAL " - 852 return f"{no}{dual}{local}AFTER JOURNAL" + 793 def properties( + 794 self, + 795 properties: exp.Properties, + 796 prefix: str = "", + 797 sep: str = ", ", + 798 suffix: str = "", + 799 wrapped: bool = True, + 800 ) -> str: + 801 if properties.expressions: + 802 expressions = self.expressions(properties, sep=sep, indent=False) + 803 expressions = self.wrap(expressions) if wrapped else expressions + 804 return f"{prefix}{' ' if prefix and prefix != ' ' else ''}{expressions}{suffix}" + 805 return "" + 806 + 807 def with_properties(self, properties: exp.Properties) -> str: + 808 return self.properties(properties, prefix=self.seg("WITH")) + 809 + 810 def locate_properties( + 811 self, properties: exp.Properties + 812 ) -> t.Dict[exp.Properties.Location, list[exp.Property]]: + 813 properties_locs: t.Dict[exp.Properties.Location, list[exp.Property]] = { + 814 key: [] for key in exp.Properties.Location + 815 } + 816 + 817 for p in properties.expressions: + 818 p_loc = self.PROPERTIES_LOCATION[p.__class__] + 819 if p_loc == exp.Properties.Location.POST_NAME: + 820 properties_locs[exp.Properties.Location.POST_NAME].append(p) + 821 elif p_loc == exp.Properties.Location.POST_INDEX: + 822 properties_locs[exp.Properties.Location.POST_INDEX].append(p) + 823 elif p_loc == exp.Properties.Location.POST_SCHEMA: + 824 properties_locs[exp.Properties.Location.POST_SCHEMA].append(p) + 825 elif p_loc == exp.Properties.Location.POST_WITH: + 826 properties_locs[exp.Properties.Location.POST_WITH].append(p) + 827 elif p_loc == exp.Properties.Location.POST_CREATE: + 828 properties_locs[exp.Properties.Location.POST_CREATE].append(p) + 829 elif p_loc == exp.Properties.Location.POST_ALIAS: + 830 properties_locs[exp.Properties.Location.POST_ALIAS].append(p) + 831 elif p_loc == exp.Properties.Location.POST_EXPRESSION: + 832 properties_locs[exp.Properties.Location.POST_EXPRESSION].append(p) + 833 elif p_loc == exp.Properties.Location.UNSUPPORTED: + 834 self.unsupported(f"Unsupported property {p.key}") + 835 + 836 return properties_locs + 837 + 838 def property_sql(self, expression: exp.Property) -> str: + 839 property_cls = expression.__class__ + 840 if property_cls == exp.Property: + 841 return f"{expression.name}={self.sql(expression, 'value')}" + 842 + 843 property_name = exp.Properties.PROPERTY_TO_NAME.get(property_cls) + 844 if not property_name: + 845 self.unsupported(f"Unsupported property {expression.key}") + 846 + 847 return f"{property_name}={self.sql(expression, 'this')}" + 848 + 849 def likeproperty_sql(self, expression: exp.LikeProperty) -> str: + 850 options = " ".join(f"{e.name} {self.sql(e, 'value')}" for e in expression.expressions) + 851 options = f" {options}" if options else "" + 852 return f"LIKE {self.sql(expression, 'this')}{options}" 853 - 854 def checksumproperty_sql(self, expression: exp.ChecksumProperty) -> str: - 855 if expression.args.get("default"): - 856 property = "DEFAULT" - 857 elif expression.args.get("on"): - 858 property = "ON" - 859 else: - 860 property = "OFF" - 861 return f"CHECKSUM={property}" - 862 - 863 def mergeblockratioproperty_sql(self, expression: exp.MergeBlockRatioProperty) -> str: - 864 if expression.args.get("no"): - 865 return "NO MERGEBLOCKRATIO" - 866 if expression.args.get("default"): - 867 return "DEFAULT MERGEBLOCKRATIO" - 868 - 869 percent = " PERCENT" if expression.args.get("percent") else "" - 870 return f"MERGEBLOCKRATIO={self.sql(expression, 'this')}{percent}" - 871 - 872 def datablocksizeproperty_sql(self, expression: exp.DataBlocksizeProperty) -> str: - 873 default = expression.args.get("default") - 874 min = expression.args.get("min") - 875 if default is not None or min is not None: - 876 if default: - 877 property = "DEFAULT" - 878 elif min: - 879 property = "MINIMUM" - 880 else: - 881 property = "MAXIMUM" - 882 return f"{property} DATABLOCKSIZE" + 854 def fallbackproperty_sql(self, expression: exp.FallbackProperty) -> str: + 855 no = "NO " if expression.args.get("no") else "" + 856 protection = " PROTECTION" if expression.args.get("protection") else "" + 857 return f"{no}FALLBACK{protection}" + 858 + 859 def journalproperty_sql(self, expression: exp.JournalProperty) -> str: + 860 no = "NO " if expression.args.get("no") else "" + 861 dual = "DUAL " if expression.args.get("dual") else "" + 862 before = "BEFORE " if expression.args.get("before") else "" + 863 return f"{no}{dual}{before}JOURNAL" + 864 + 865 def freespaceproperty_sql(self, expression: exp.FreespaceProperty) -> str: + 866 freespace = self.sql(expression, "this") + 867 percent = " PERCENT" if expression.args.get("percent") else "" + 868 return f"FREESPACE={freespace}{percent}" + 869 + 870 def afterjournalproperty_sql(self, expression: exp.AfterJournalProperty) -> str: + 871 no = "NO " if expression.args.get("no") else "" + 872 dual = "DUAL " if expression.args.get("dual") else "" + 873 local = "" + 874 if expression.args.get("local") is not None: + 875 local = "LOCAL " if expression.args.get("local") else "NOT LOCAL " + 876 return f"{no}{dual}{local}AFTER JOURNAL" + 877 + 878 def checksumproperty_sql(self, expression: exp.ChecksumProperty) -> str: + 879 if expression.args.get("default"): + 880 property = "DEFAULT" + 881 elif expression.args.get("on"): + 882 property = "ON" 883 else: - 884 units = expression.args.get("units") - 885 units = f" {units}" if units else "" - 886 return f"DATABLOCKSIZE={self.sql(expression, 'size')}{units}" - 887 - 888 def blockcompressionproperty_sql(self, expression: exp.BlockCompressionProperty) -> str: - 889 autotemp = expression.args.get("autotemp") - 890 always = expression.args.get("always") - 891 default = expression.args.get("default") - 892 manual = expression.args.get("manual") - 893 never = expression.args.get("never") - 894 - 895 if autotemp is not None: - 896 property = f"AUTOTEMP({self.expressions(autotemp)})" - 897 elif always: - 898 property = "ALWAYS" - 899 elif default: - 900 property = "DEFAULT" - 901 elif manual: - 902 property = "MANUAL" - 903 elif never: - 904 property = "NEVER" - 905 return f"BLOCKCOMPRESSION={property}" - 906 - 907 def isolatedloadingproperty_sql(self, expression: exp.IsolatedLoadingProperty) -> str: - 908 no = expression.args.get("no") - 909 no = " NO" if no else "" - 910 concurrent = expression.args.get("concurrent") - 911 concurrent = " CONCURRENT" if concurrent else "" - 912 - 913 for_ = "" - 914 if expression.args.get("for_all"): - 915 for_ = " FOR ALL" - 916 elif expression.args.get("for_insert"): - 917 for_ = " FOR INSERT" - 918 elif expression.args.get("for_none"): - 919 for_ = " FOR NONE" - 920 return f"WITH{no}{concurrent} ISOLATED LOADING{for_}" - 921 - 922 def lockingproperty_sql(self, expression: exp.LockingProperty) -> str: - 923 kind = expression.args.get("kind") - 924 this: str = f" {this}" if expression.this else "" - 925 for_or_in = expression.args.get("for_or_in") - 926 lock_type = expression.args.get("lock_type") - 927 override = " OVERRIDE" if expression.args.get("override") else "" - 928 return f"LOCKING {kind}{this} {for_or_in} {lock_type}{override}" - 929 - 930 def withdataproperty_sql(self, expression: exp.WithDataProperty) -> str: - 931 data_sql = f"WITH {'NO ' if expression.args.get('no') else ''}DATA" - 932 statistics = expression.args.get("statistics") - 933 statistics_sql = "" - 934 if statistics is not None: - 935 statistics_sql = f" AND {'NO ' if not statistics else ''}STATISTICS" - 936 return f"{data_sql}{statistics_sql}" - 937 - 938 def insert_sql(self, expression: exp.Insert) -> str: - 939 overwrite = expression.args.get("overwrite") - 940 - 941 if isinstance(expression.this, exp.Directory): - 942 this = "OVERWRITE " if overwrite else "INTO " - 943 else: - 944 this = "OVERWRITE TABLE " if overwrite else "INTO " + 884 property = "OFF" + 885 return f"CHECKSUM={property}" + 886 + 887 def mergeblockratioproperty_sql(self, expression: exp.MergeBlockRatioProperty) -> str: + 888 if expression.args.get("no"): + 889 return "NO MERGEBLOCKRATIO" + 890 if expression.args.get("default"): + 891 return "DEFAULT MERGEBLOCKRATIO" + 892 + 893 percent = " PERCENT" if expression.args.get("percent") else "" + 894 return f"MERGEBLOCKRATIO={self.sql(expression, 'this')}{percent}" + 895 + 896 def datablocksizeproperty_sql(self, expression: exp.DataBlocksizeProperty) -> str: + 897 default = expression.args.get("default") + 898 min = expression.args.get("min") + 899 if default is not None or min is not None: + 900 if default: + 901 property = "DEFAULT" + 902 elif min: + 903 property = "MINIMUM" + 904 else: + 905 property = "MAXIMUM" + 906 return f"{property} DATABLOCKSIZE" + 907 else: + 908 units = expression.args.get("units") + 909 units = f" {units}" if units else "" + 910 return f"DATABLOCKSIZE={self.sql(expression, 'size')}{units}" + 911 + 912 def blockcompressionproperty_sql(self, expression: exp.BlockCompressionProperty) -> str: + 913 autotemp = expression.args.get("autotemp") + 914 always = expression.args.get("always") + 915 default = expression.args.get("default") + 916 manual = expression.args.get("manual") + 917 never = expression.args.get("never") + 918 + 919 if autotemp is not None: + 920 property = f"AUTOTEMP({self.expressions(autotemp)})" + 921 elif always: + 922 property = "ALWAYS" + 923 elif default: + 924 property = "DEFAULT" + 925 elif manual: + 926 property = "MANUAL" + 927 elif never: + 928 property = "NEVER" + 929 return f"BLOCKCOMPRESSION={property}" + 930 + 931 def isolatedloadingproperty_sql(self, expression: exp.IsolatedLoadingProperty) -> str: + 932 no = expression.args.get("no") + 933 no = " NO" if no else "" + 934 concurrent = expression.args.get("concurrent") + 935 concurrent = " CONCURRENT" if concurrent else "" + 936 + 937 for_ = "" + 938 if expression.args.get("for_all"): + 939 for_ = " FOR ALL" + 940 elif expression.args.get("for_insert"): + 941 for_ = " FOR INSERT" + 942 elif expression.args.get("for_none"): + 943 for_ = " FOR NONE" + 944 return f"WITH{no}{concurrent} ISOLATED LOADING{for_}" 945 - 946 alternative = expression.args.get("alternative") - 947 alternative = f" OR {alternative} " if alternative else " " - 948 this = f"{this}{self.sql(expression, 'this')}" - 949 - 950 exists = " IF EXISTS " if expression.args.get("exists") else " " - 951 partition_sql = ( - 952 self.sql(expression, "partition") if expression.args.get("partition") else "" - 953 ) - 954 expression_sql = self.sql(expression, "expression") - 955 returning = self.sql(expression, "returning") - 956 sep = self.sep() if partition_sql else "" - 957 sql = f"INSERT{alternative}{this}{exists}{partition_sql}{sep}{expression_sql}{returning}" - 958 return self.prepend_ctes(expression, sql) - 959 - 960 def intersect_sql(self, expression: exp.Intersect) -> str: - 961 return self.prepend_ctes( - 962 expression, - 963 self.set_operation(expression, self.intersect_op(expression)), - 964 ) - 965 - 966 def intersect_op(self, expression: exp.Intersect) -> str: - 967 return f"INTERSECT{'' if expression.args.get('distinct') else ' ALL'}" - 968 - 969 def introducer_sql(self, expression: exp.Introducer) -> str: - 970 return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}" - 971 - 972 def pseudotype_sql(self, expression: exp.PseudoType) -> str: - 973 return expression.name.upper() - 974 - 975 def returning_sql(self, expression: exp.Returning) -> str: - 976 return f"{self.seg('RETURNING')} {self.expressions(expression, flat=True)}" - 977 - 978 def rowformatdelimitedproperty_sql(self, expression: exp.RowFormatDelimitedProperty) -> str: - 979 fields = expression.args.get("fields") - 980 fields = f" FIELDS TERMINATED BY {fields}" if fields else "" - 981 escaped = expression.args.get("escaped") - 982 escaped = f" ESCAPED BY {escaped}" if escaped else "" - 983 items = expression.args.get("collection_items") - 984 items = f" COLLECTION ITEMS TERMINATED BY {items}" if items else "" - 985 keys = expression.args.get("map_keys") - 986 keys = f" MAP KEYS TERMINATED BY {keys}" if keys else "" - 987 lines = expression.args.get("lines") - 988 lines = f" LINES TERMINATED BY {lines}" if lines else "" - 989 null = expression.args.get("null") - 990 null = f" NULL DEFINED AS {null}" if null else "" - 991 return f"ROW FORMAT DELIMITED{fields}{escaped}{items}{keys}{lines}{null}" + 946 def lockingproperty_sql(self, expression: exp.LockingProperty) -> str: + 947 kind = expression.args.get("kind") + 948 this: str = f" {this}" if expression.this else "" + 949 for_or_in = expression.args.get("for_or_in") + 950 lock_type = expression.args.get("lock_type") + 951 override = " OVERRIDE" if expression.args.get("override") else "" + 952 return f"LOCKING {kind}{this} {for_or_in} {lock_type}{override}" + 953 + 954 def withdataproperty_sql(self, expression: exp.WithDataProperty) -> str: + 955 data_sql = f"WITH {'NO ' if expression.args.get('no') else ''}DATA" + 956 statistics = expression.args.get("statistics") + 957 statistics_sql = "" + 958 if statistics is not None: + 959 statistics_sql = f" AND {'NO ' if not statistics else ''}STATISTICS" + 960 return f"{data_sql}{statistics_sql}" + 961 + 962 def insert_sql(self, expression: exp.Insert) -> str: + 963 overwrite = expression.args.get("overwrite") + 964 + 965 if isinstance(expression.this, exp.Directory): + 966 this = "OVERWRITE " if overwrite else "INTO " + 967 else: + 968 this = "OVERWRITE TABLE " if overwrite else "INTO " + 969 + 970 alternative = expression.args.get("alternative") + 971 alternative = f" OR {alternative} " if alternative else " " + 972 this = f"{this}{self.sql(expression, 'this')}" + 973 + 974 exists = " IF EXISTS " if expression.args.get("exists") else " " + 975 partition_sql = ( + 976 self.sql(expression, "partition") if expression.args.get("partition") else "" + 977 ) + 978 expression_sql = self.sql(expression, "expression") + 979 returning = self.sql(expression, "returning") + 980 sep = self.sep() if partition_sql else "" + 981 sql = f"INSERT{alternative}{this}{exists}{partition_sql}{sep}{expression_sql}{returning}" + 982 return self.prepend_ctes(expression, sql) + 983 + 984 def intersect_sql(self, expression: exp.Intersect) -> str: + 985 return self.prepend_ctes( + 986 expression, + 987 self.set_operation(expression, self.intersect_op(expression)), + 988 ) + 989 + 990 def intersect_op(self, expression: exp.Intersect) -> str: + 991 return f"INTERSECT{'' if expression.args.get('distinct') else ' ALL'}" 992 - 993 def table_sql(self, expression: exp.Table, sep: str = " AS ") -> str: - 994 table = ".".join( - 995 part - 996 for part in [ - 997 self.sql(expression, "catalog"), - 998 self.sql(expression, "db"), - 999 self.sql(expression, "this"), -1000 ] -1001 if part -1002 ) -1003 -1004 alias = self.sql(expression, "alias") -1005 alias = f"{sep}{alias}" if alias else "" -1006 hints = self.expressions(expression, key="hints", sep=", ", flat=True) -1007 hints = f" WITH ({hints})" if hints else "" -1008 laterals = self.expressions(expression, key="laterals", sep="") -1009 joins = self.expressions(expression, key="joins", sep="") -1010 pivots = self.expressions(expression, key="pivots", sep="") -1011 system_time = expression.args.get("system_time") -1012 system_time = f" {self.sql(expression, 'system_time')}" if system_time else "" -1013 -1014 return f"{table}{system_time}{alias}{hints}{laterals}{joins}{pivots}" -1015 -1016 def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str: -1017 if self.alias_post_tablesample and expression.this.alias: -1018 this = self.sql(expression.this, "this") -1019 alias = f" AS {self.sql(expression.this, 'alias')}" -1020 else: -1021 this = self.sql(expression, "this") -1022 alias = "" -1023 method = self.sql(expression, "method") -1024 method = f"{method.upper()} " if method else "" -1025 numerator = self.sql(expression, "bucket_numerator") -1026 denominator = self.sql(expression, "bucket_denominator") -1027 field = self.sql(expression, "bucket_field") -1028 field = f" ON {field}" if field else "" -1029 bucket = f"BUCKET {numerator} OUT OF {denominator}{field}" if numerator else "" -1030 percent = self.sql(expression, "percent") -1031 percent = f"{percent} PERCENT" if percent else "" -1032 rows = self.sql(expression, "rows") -1033 rows = f"{rows} ROWS" if rows else "" -1034 size = self.sql(expression, "size") -1035 seed = self.sql(expression, "seed") -1036 seed = f" {seed_prefix} ({seed})" if seed else "" -1037 kind = expression.args.get("kind", "TABLESAMPLE") -1038 return f"{this} {kind} {method}({bucket}{percent}{rows}{size}){seed}{alias}" + 993 def introducer_sql(self, expression: exp.Introducer) -> str: + 994 return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}" + 995 + 996 def pseudotype_sql(self, expression: exp.PseudoType) -> str: + 997 return expression.name.upper() + 998 + 999 def returning_sql(self, expression: exp.Returning) -> str: +1000 return f"{self.seg('RETURNING')} {self.expressions(expression, flat=True)}" +1001 +1002 def rowformatdelimitedproperty_sql(self, expression: exp.RowFormatDelimitedProperty) -> str: +1003 fields = expression.args.get("fields") +1004 fields = f" FIELDS TERMINATED BY {fields}" if fields else "" +1005 escaped = expression.args.get("escaped") +1006 escaped = f" ESCAPED BY {escaped}" if escaped else "" +1007 items = expression.args.get("collection_items") +1008 items = f" COLLECTION ITEMS TERMINATED BY {items}" if items else "" +1009 keys = expression.args.get("map_keys") +1010 keys = f" MAP KEYS TERMINATED BY {keys}" if keys else "" +1011 lines = expression.args.get("lines") +1012 lines = f" LINES TERMINATED BY {lines}" if lines else "" +1013 null = expression.args.get("null") +1014 null = f" NULL DEFINED AS {null}" if null else "" +1015 return f"ROW FORMAT DELIMITED{fields}{escaped}{items}{keys}{lines}{null}" +1016 +1017 def table_sql(self, expression: exp.Table, sep: str = " AS ") -> str: +1018 table = ".".join( +1019 part +1020 for part in [ +1021 self.sql(expression, "catalog"), +1022 self.sql(expression, "db"), +1023 self.sql(expression, "this"), +1024 ] +1025 if part +1026 ) +1027 +1028 alias = self.sql(expression, "alias") +1029 alias = f"{sep}{alias}" if alias else "" +1030 hints = self.expressions(expression, key="hints", sep=", ", flat=True) +1031 hints = f" WITH ({hints})" if hints else "" +1032 laterals = self.expressions(expression, key="laterals", sep="") +1033 joins = self.expressions(expression, key="joins", sep="") +1034 pivots = self.expressions(expression, key="pivots", sep="") +1035 system_time = expression.args.get("system_time") +1036 system_time = f" {self.sql(expression, 'system_time')}" if system_time else "" +1037 +1038 return f"{table}{system_time}{alias}{hints}{laterals}{joins}{pivots}" 1039 -1040 def pivot_sql(self, expression: exp.Pivot) -> str: -1041 this = self.sql(expression, "this") -1042 alias = self.sql(expression, "alias") -1043 alias = f" AS {alias}" if alias else "" -1044 unpivot = expression.args.get("unpivot") -1045 direction = "UNPIVOT" if unpivot else "PIVOT" -1046 expressions = self.expressions(expression, key="expressions") -1047 field = self.sql(expression, "field") -1048 return f"{this} {direction}({expressions} FOR {field}){alias}" -1049 -1050 def tuple_sql(self, expression: exp.Tuple) -> str: -1051 return f"({self.expressions(expression, flat=True)})" -1052 -1053 def update_sql(self, expression: exp.Update) -> str: -1054 this = self.sql(expression, "this") -1055 set_sql = self.expressions(expression, flat=True) -1056 from_sql = self.sql(expression, "from") -1057 where_sql = self.sql(expression, "where") -1058 returning = self.sql(expression, "returning") -1059 sql = f"UPDATE {this} SET {set_sql}{from_sql}{where_sql}{returning}" -1060 return self.prepend_ctes(expression, sql) -1061 -1062 def values_sql(self, expression: exp.Values) -> str: -1063 args = self.expressions(expression) -1064 alias = self.sql(expression, "alias") -1065 values = f"VALUES{self.seg('')}{args}" -1066 values = ( -1067 f"({values})" -1068 if self.WRAP_DERIVED_VALUES and (alias or isinstance(expression.parent, exp.From)) -1069 else values -1070 ) -1071 return f"{values} AS {alias}" if alias else values -1072 -1073 def var_sql(self, expression: exp.Var) -> str: -1074 return self.sql(expression, "this") -1075 -1076 def into_sql(self, expression: exp.Into) -> str: -1077 temporary = " TEMPORARY" if expression.args.get("temporary") else "" -1078 unlogged = " UNLOGGED" if expression.args.get("unlogged") else "" -1079 return f"{self.seg('INTO')}{temporary or unlogged} {self.sql(expression, 'this')}" -1080 -1081 def from_sql(self, expression: exp.From) -> str: -1082 expressions = self.expressions(expression, flat=True) -1083 return f"{self.seg('FROM')} {expressions}" -1084 -1085 def group_sql(self, expression: exp.Group) -> str: -1086 group_by = self.op_expressions("GROUP BY", expression) -1087 grouping_sets = self.expressions(expression, key="grouping_sets", indent=False) -1088 grouping_sets = ( -1089 f"{self.seg('GROUPING SETS')} {self.wrap(grouping_sets)}" if grouping_sets else "" -1090 ) -1091 -1092 cube = expression.args.get("cube", []) -1093 if seq_get(cube, 0) is True: -1094 return f"{group_by}{self.seg('WITH CUBE')}" -1095 else: -1096 cube_sql = self.expressions(expression, key="cube", indent=False) -1097 cube_sql = f"{self.seg('CUBE')} {self.wrap(cube_sql)}" if cube_sql else "" -1098 -1099 rollup = expression.args.get("rollup", []) -1100 if seq_get(rollup, 0) is True: -1101 return f"{group_by}{self.seg('WITH ROLLUP')}" -1102 else: -1103 rollup_sql = self.expressions(expression, key="rollup", indent=False) -1104 rollup_sql = f"{self.seg('ROLLUP')} {self.wrap(rollup_sql)}" if rollup_sql else "" -1105 -1106 groupings = csv(grouping_sets, cube_sql, rollup_sql, sep=",") -1107 -1108 if expression.args.get("expressions") and groupings: -1109 group_by = f"{group_by}," -1110 -1111 return f"{group_by}{groupings}" -1112 -1113 def having_sql(self, expression: exp.Having) -> str: -1114 this = self.indent(self.sql(expression, "this")) -1115 return f"{self.seg('HAVING')}{self.sep()}{this}" -1116 -1117 def join_sql(self, expression: exp.Join) -> str: -1118 op_sql = self.seg( -1119 " ".join( -1120 op -1121 for op in ( -1122 "NATURAL" if expression.args.get("natural") else None, -1123 expression.side, -1124 expression.kind, -1125 "JOIN", -1126 ) -1127 if op -1128 ) -1129 ) -1130 on_sql = self.sql(expression, "on") -1131 using = expression.args.get("using") -1132 -1133 if not on_sql and using: -1134 on_sql = csv(*(self.sql(column) for column in using)) -1135 -1136 if on_sql: -1137 on_sql = self.indent(on_sql, skip_first=True) -1138 space = self.seg(" " * self.pad) if self.pretty else " " -1139 if using: -1140 on_sql = f"{space}USING ({on_sql})" -1141 else: -1142 on_sql = f"{space}ON {on_sql}" -1143 -1144 expression_sql = self.sql(expression, "expression") -1145 this_sql = self.sql(expression, "this") -1146 return f"{expression_sql}{op_sql} {this_sql}{on_sql}" -1147 -1148 def lambda_sql(self, expression: exp.Lambda, arrow_sep: str = "->") -> str: -1149 args = self.expressions(expression, flat=True) -1150 args = f"({args})" if len(args.split(",")) > 1 else args -1151 return f"{args} {arrow_sep} {self.sql(expression, 'this')}" -1152 -1153 def lateral_sql(self, expression: exp.Lateral) -> str: -1154 this = self.sql(expression, "this") -1155 -1156 if isinstance(expression.this, exp.Subquery): -1157 return f"LATERAL {this}" -1158 -1159 if expression.args.get("view"): -1160 alias = expression.args["alias"] -1161 columns = self.expressions(alias, key="columns", flat=True) -1162 table = f" {alias.name}" if alias.name else "" -1163 columns = f" AS {columns}" if columns else "" -1164 op_sql = self.seg(f"LATERAL VIEW{' OUTER' if expression.args.get('outer') else ''}") -1165 return f"{op_sql}{self.sep()}{this}{table}{columns}" -1166 -1167 alias = self.sql(expression, "alias") -1168 alias = f" AS {alias}" if alias else "" -1169 return f"LATERAL {this}{alias}" -1170 -1171 def limit_sql(self, expression: exp.Limit) -> str: -1172 this = self.sql(expression, "this") -1173 return f"{this}{self.seg('LIMIT')} {self.sql(expression, 'expression')}" -1174 -1175 def offset_sql(self, expression: exp.Offset) -> str: -1176 this = self.sql(expression, "this") -1177 return f"{this}{self.seg('OFFSET')} {self.sql(expression, 'expression')}" -1178 -1179 def setitem_sql(self, expression: exp.SetItem) -> str: -1180 kind = self.sql(expression, "kind") -1181 kind = f"{kind} " if kind else "" -1182 this = self.sql(expression, "this") -1183 expressions = self.expressions(expression) -1184 collate = self.sql(expression, "collate") -1185 collate = f" COLLATE {collate}" if collate else "" -1186 global_ = "GLOBAL " if expression.args.get("global") else "" -1187 return f"{global_}{kind}{this}{expressions}{collate}" -1188 -1189 def set_sql(self, expression: exp.Set) -> str: -1190 expressions = ( -1191 f" {self.expressions(expression, flat=True)}" if expression.expressions else "" -1192 ) -1193 return f"SET{expressions}" +1040 def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str: +1041 if self.alias_post_tablesample and expression.this.alias: +1042 this = self.sql(expression.this, "this") +1043 alias = f" AS {self.sql(expression.this, 'alias')}" +1044 else: +1045 this = self.sql(expression, "this") +1046 alias = "" +1047 method = self.sql(expression, "method") +1048 method = f"{method.upper()} " if method else "" +1049 numerator = self.sql(expression, "bucket_numerator") +1050 denominator = self.sql(expression, "bucket_denominator") +1051 field = self.sql(expression, "bucket_field") +1052 field = f" ON {field}" if field else "" +1053 bucket = f"BUCKET {numerator} OUT OF {denominator}{field}" if numerator else "" +1054 percent = self.sql(expression, "percent") +1055 percent = f"{percent} PERCENT" if percent else "" +1056 rows = self.sql(expression, "rows") +1057 rows = f"{rows} ROWS" if rows else "" +1058 size = self.sql(expression, "size") +1059 seed = self.sql(expression, "seed") +1060 seed = f" {seed_prefix} ({seed})" if seed else "" +1061 kind = expression.args.get("kind", "TABLESAMPLE") +1062 return f"{this} {kind} {method}({bucket}{percent}{rows}{size}){seed}{alias}" +1063 +1064 def pivot_sql(self, expression: exp.Pivot) -> str: +1065 this = self.sql(expression, "this") +1066 alias = self.sql(expression, "alias") +1067 alias = f" AS {alias}" if alias else "" +1068 unpivot = expression.args.get("unpivot") +1069 direction = "UNPIVOT" if unpivot else "PIVOT" +1070 expressions = self.expressions(expression, key="expressions") +1071 field = self.sql(expression, "field") +1072 return f"{this} {direction}({expressions} FOR {field}){alias}" +1073 +1074 def tuple_sql(self, expression: exp.Tuple) -> str: +1075 return f"({self.expressions(expression, flat=True)})" +1076 +1077 def update_sql(self, expression: exp.Update) -> str: +1078 this = self.sql(expression, "this") +1079 set_sql = self.expressions(expression, flat=True) +1080 from_sql = self.sql(expression, "from") +1081 where_sql = self.sql(expression, "where") +1082 returning = self.sql(expression, "returning") +1083 sql = f"UPDATE {this} SET {set_sql}{from_sql}{where_sql}{returning}" +1084 return self.prepend_ctes(expression, sql) +1085 +1086 def values_sql(self, expression: exp.Values) -> str: +1087 args = self.expressions(expression) +1088 alias = self.sql(expression, "alias") +1089 values = f"VALUES{self.seg('')}{args}" +1090 values = ( +1091 f"({values})" +1092 if self.WRAP_DERIVED_VALUES and (alias or isinstance(expression.parent, exp.From)) +1093 else values +1094 ) +1095 return f"{values} AS {alias}" if alias else values +1096 +1097 def var_sql(self, expression: exp.Var) -> str: +1098 return self.sql(expression, "this") +1099 +1100 def into_sql(self, expression: exp.Into) -> str: +1101 temporary = " TEMPORARY" if expression.args.get("temporary") else "" +1102 unlogged = " UNLOGGED" if expression.args.get("unlogged") else "" +1103 return f"{self.seg('INTO')}{temporary or unlogged} {self.sql(expression, 'this')}" +1104 +1105 def from_sql(self, expression: exp.From) -> str: +1106 expressions = self.expressions(expression, flat=True) +1107 return f"{self.seg('FROM')} {expressions}" +1108 +1109 def group_sql(self, expression: exp.Group) -> str: +1110 group_by = self.op_expressions("GROUP BY", expression) +1111 grouping_sets = self.expressions(expression, key="grouping_sets", indent=False) +1112 grouping_sets = ( +1113 f"{self.seg('GROUPING SETS')} {self.wrap(grouping_sets)}" if grouping_sets else "" +1114 ) +1115 +1116 cube = expression.args.get("cube", []) +1117 if seq_get(cube, 0) is True: +1118 return f"{group_by}{self.seg('WITH CUBE')}" +1119 else: +1120 cube_sql = self.expressions(expression, key="cube", indent=False) +1121 cube_sql = f"{self.seg('CUBE')} {self.wrap(cube_sql)}" if cube_sql else "" +1122 +1123 rollup = expression.args.get("rollup", []) +1124 if seq_get(rollup, 0) is True: +1125 return f"{group_by}{self.seg('WITH ROLLUP')}" +1126 else: +1127 rollup_sql = self.expressions(expression, key="rollup", indent=False) +1128 rollup_sql = f"{self.seg('ROLLUP')} {self.wrap(rollup_sql)}" if rollup_sql else "" +1129 +1130 groupings = csv(grouping_sets, cube_sql, rollup_sql, sep=",") +1131 +1132 if expression.args.get("expressions") and groupings: +1133 group_by = f"{group_by}," +1134 +1135 return f"{group_by}{groupings}" +1136 +1137 def having_sql(self, expression: exp.Having) -> str: +1138 this = self.indent(self.sql(expression, "this")) +1139 return f"{self.seg('HAVING')}{self.sep()}{this}" +1140 +1141 def join_sql(self, expression: exp.Join) -> str: +1142 op_sql = self.seg( +1143 " ".join( +1144 op +1145 for op in ( +1146 "NATURAL" if expression.args.get("natural") else None, +1147 expression.side, +1148 expression.kind, +1149 "JOIN", +1150 ) +1151 if op +1152 ) +1153 ) +1154 on_sql = self.sql(expression, "on") +1155 using = expression.args.get("using") +1156 +1157 if not on_sql and using: +1158 on_sql = csv(*(self.sql(column) for column in using)) +1159 +1160 if on_sql: +1161 on_sql = self.indent(on_sql, skip_first=True) +1162 space = self.seg(" " * self.pad) if self.pretty else " " +1163 if using: +1164 on_sql = f"{space}USING ({on_sql})" +1165 else: +1166 on_sql = f"{space}ON {on_sql}" +1167 +1168 expression_sql = self.sql(expression, "expression") +1169 this_sql = self.sql(expression, "this") +1170 return f"{expression_sql}{op_sql} {this_sql}{on_sql}" +1171 +1172 def lambda_sql(self, expression: exp.Lambda, arrow_sep: str = "->") -> str: +1173 args = self.expressions(expression, flat=True) +1174 args = f"({args})" if len(args.split(",")) > 1 else args +1175 return f"{args} {arrow_sep} {self.sql(expression, 'this')}" +1176 +1177 def lateral_sql(self, expression: exp.Lateral) -> str: +1178 this = self.sql(expression, "this") +1179 +1180 if isinstance(expression.this, exp.Subquery): +1181 return f"LATERAL {this}" +1182 +1183 if expression.args.get("view"): +1184 alias = expression.args["alias"] +1185 columns = self.expressions(alias, key="columns", flat=True) +1186 table = f" {alias.name}" if alias.name else "" +1187 columns = f" AS {columns}" if columns else "" +1188 op_sql = self.seg(f"LATERAL VIEW{' OUTER' if expression.args.get('outer') else ''}") +1189 return f"{op_sql}{self.sep()}{this}{table}{columns}" +1190 +1191 alias = self.sql(expression, "alias") +1192 alias = f" AS {alias}" if alias else "" +1193 return f"LATERAL {this}{alias}" 1194 -1195 def lock_sql(self, expression: exp.Lock) -> str: -1196 if self.LOCKING_READS_SUPPORTED: -1197 lock_type = "UPDATE" if expression.args["update"] else "SHARE" -1198 return self.seg(f"FOR {lock_type}") -1199 -1200 self.unsupported("Locking reads using 'FOR UPDATE/SHARE' are not supported") -1201 return "" +1195 def limit_sql(self, expression: exp.Limit) -> str: +1196 this = self.sql(expression, "this") +1197 return f"{this}{self.seg('LIMIT')} {self.sql(expression, 'expression')}" +1198 +1199 def offset_sql(self, expression: exp.Offset) -> str: +1200 this = self.sql(expression, "this") +1201 return f"{this}{self.seg('OFFSET')} {self.sql(expression, 'expression')}" 1202 -1203 def literal_sql(self, expression: exp.Literal) -> str: -1204 text = expression.this or "" -1205 if expression.is_string: -1206 text = text.replace(self.quote_end, self._escaped_quote_end) -1207 if self.pretty: -1208 text = text.replace("\n", self.SENTINEL_LINE_BREAK) -1209 text = f"{self.quote_start}{text}{self.quote_end}" -1210 return text -1211 -1212 def loaddata_sql(self, expression: exp.LoadData) -> str: -1213 local = " LOCAL" if expression.args.get("local") else "" -1214 inpath = f" INPATH {self.sql(expression, 'inpath')}" -1215 overwrite = " OVERWRITE" if expression.args.get("overwrite") else "" -1216 this = f" INTO TABLE {self.sql(expression, 'this')}" -1217 partition = self.sql(expression, "partition") -1218 partition = f" {partition}" if partition else "" -1219 input_format = self.sql(expression, "input_format") -1220 input_format = f" INPUTFORMAT {input_format}" if input_format else "" -1221 serde = self.sql(expression, "serde") -1222 serde = f" SERDE {serde}" if serde else "" -1223 return f"LOAD DATA{local}{inpath}{overwrite}{this}{partition}{input_format}{serde}" -1224 -1225 def null_sql(self, *_) -> str: -1226 return "NULL" -1227 -1228 def boolean_sql(self, expression: exp.Boolean) -> str: -1229 return "TRUE" if expression.this else "FALSE" -1230 -1231 def order_sql(self, expression: exp.Order, flat: bool = False) -> str: -1232 this = self.sql(expression, "this") -1233 this = f"{this} " if this else this -1234 return self.op_expressions(f"{this}ORDER BY", expression, flat=this or flat) # type: ignore -1235 -1236 def cluster_sql(self, expression: exp.Cluster) -> str: -1237 return self.op_expressions("CLUSTER BY", expression) +1203 def setitem_sql(self, expression: exp.SetItem) -> str: +1204 kind = self.sql(expression, "kind") +1205 kind = f"{kind} " if kind else "" +1206 this = self.sql(expression, "this") +1207 expressions = self.expressions(expression) +1208 collate = self.sql(expression, "collate") +1209 collate = f" COLLATE {collate}" if collate else "" +1210 global_ = "GLOBAL " if expression.args.get("global") else "" +1211 return f"{global_}{kind}{this}{expressions}{collate}" +1212 +1213 def set_sql(self, expression: exp.Set) -> str: +1214 expressions = ( +1215 f" {self.expressions(expression, flat=True)}" if expression.expressions else "" +1216 ) +1217 return f"SET{expressions}" +1218 +1219 def pragma_sql(self, expression: exp.Pragma) -> str: +1220 return f"PRAGMA {self.sql(expression, 'this')}" +1221 +1222 def lock_sql(self, expression: exp.Lock) -> str: +1223 if self.LOCKING_READS_SUPPORTED: +1224 lock_type = "UPDATE" if expression.args["update"] else "SHARE" +1225 return self.seg(f"FOR {lock_type}") +1226 +1227 self.unsupported("Locking reads using 'FOR UPDATE/SHARE' are not supported") +1228 return "" +1229 +1230 def literal_sql(self, expression: exp.Literal) -> str: +1231 text = expression.this or "" +1232 if expression.is_string: +1233 text = text.replace(self.quote_end, self._escaped_quote_end) +1234 if self.pretty: +1235 text = text.replace("\n", self.SENTINEL_LINE_BREAK) +1236 text = f"{self.quote_start}{text}{self.quote_end}" +1237 return text 1238 -1239 def distribute_sql(self, expression: exp.Distribute) -> str: -1240 return self.op_expressions("DISTRIBUTE BY", expression) -1241 -1242 def sort_sql(self, expression: exp.Sort) -> str: -1243 return self.op_expressions("SORT BY", expression) -1244 -1245 def ordered_sql(self, expression: exp.Ordered) -> str: -1246 desc = expression.args.get("desc") -1247 asc = not desc -1248 -1249 nulls_first = expression.args.get("nulls_first") -1250 nulls_last = not nulls_first -1251 nulls_are_large = self.null_ordering == "nulls_are_large" -1252 nulls_are_small = self.null_ordering == "nulls_are_small" -1253 nulls_are_last = self.null_ordering == "nulls_are_last" +1239 def loaddata_sql(self, expression: exp.LoadData) -> str: +1240 local = " LOCAL" if expression.args.get("local") else "" +1241 inpath = f" INPATH {self.sql(expression, 'inpath')}" +1242 overwrite = " OVERWRITE" if expression.args.get("overwrite") else "" +1243 this = f" INTO TABLE {self.sql(expression, 'this')}" +1244 partition = self.sql(expression, "partition") +1245 partition = f" {partition}" if partition else "" +1246 input_format = self.sql(expression, "input_format") +1247 input_format = f" INPUTFORMAT {input_format}" if input_format else "" +1248 serde = self.sql(expression, "serde") +1249 serde = f" SERDE {serde}" if serde else "" +1250 return f"LOAD DATA{local}{inpath}{overwrite}{this}{partition}{input_format}{serde}" +1251 +1252 def null_sql(self, *_) -> str: +1253 return "NULL" 1254 -1255 sort_order = " DESC" if desc else "" -1256 nulls_sort_change = "" -1257 if nulls_first and ( -1258 (asc and nulls_are_large) or (desc and nulls_are_small) or nulls_are_last -1259 ): -1260 nulls_sort_change = " NULLS FIRST" -1261 elif ( -1262 nulls_last -1263 and ((asc and nulls_are_small) or (desc and nulls_are_large)) -1264 and not nulls_are_last -1265 ): -1266 nulls_sort_change = " NULLS LAST" -1267 -1268 if nulls_sort_change and not self.NULL_ORDERING_SUPPORTED: -1269 self.unsupported( -1270 "Sorting in an ORDER BY on NULLS FIRST/NULLS LAST is not supported by this dialect" -1271 ) -1272 nulls_sort_change = "" -1273 -1274 return f"{self.sql(expression, 'this')}{sort_order}{nulls_sort_change}" +1255 def boolean_sql(self, expression: exp.Boolean) -> str: +1256 return "TRUE" if expression.this else "FALSE" +1257 +1258 def order_sql(self, expression: exp.Order, flat: bool = False) -> str: +1259 this = self.sql(expression, "this") +1260 this = f"{this} " if this else this +1261 return self.op_expressions(f"{this}ORDER BY", expression, flat=this or flat) # type: ignore +1262 +1263 def cluster_sql(self, expression: exp.Cluster) -> str: +1264 return self.op_expressions("CLUSTER BY", expression) +1265 +1266 def distribute_sql(self, expression: exp.Distribute) -> str: +1267 return self.op_expressions("DISTRIBUTE BY", expression) +1268 +1269 def sort_sql(self, expression: exp.Sort) -> str: +1270 return self.op_expressions("SORT BY", expression) +1271 +1272 def ordered_sql(self, expression: exp.Ordered) -> str: +1273 desc = expression.args.get("desc") +1274 asc = not desc 1275 -1276 def matchrecognize_sql(self, expression: exp.MatchRecognize) -> str: -1277 partition = self.partition_by_sql(expression) -1278 order = self.sql(expression, "order") -1279 measures = self.sql(expression, "measures") -1280 measures = self.seg(f"MEASURES {measures}") if measures else "" -1281 rows = self.sql(expression, "rows") -1282 rows = self.seg(rows) if rows else "" -1283 after = self.sql(expression, "after") -1284 after = self.seg(after) if after else "" -1285 pattern = self.sql(expression, "pattern") -1286 pattern = self.seg(f"PATTERN ({pattern})") if pattern else "" -1287 define = self.sql(expression, "define") -1288 define = self.seg(f"DEFINE {define}") if define else "" -1289 body = "".join( -1290 ( -1291 partition, -1292 order, -1293 measures, -1294 rows, -1295 after, -1296 pattern, -1297 define, +1276 nulls_first = expression.args.get("nulls_first") +1277 nulls_last = not nulls_first +1278 nulls_are_large = self.null_ordering == "nulls_are_large" +1279 nulls_are_small = self.null_ordering == "nulls_are_small" +1280 nulls_are_last = self.null_ordering == "nulls_are_last" +1281 +1282 sort_order = " DESC" if desc else "" +1283 nulls_sort_change = "" +1284 if nulls_first and ( +1285 (asc and nulls_are_large) or (desc and nulls_are_small) or nulls_are_last +1286 ): +1287 nulls_sort_change = " NULLS FIRST" +1288 elif ( +1289 nulls_last +1290 and ((asc and nulls_are_small) or (desc and nulls_are_large)) +1291 and not nulls_are_last +1292 ): +1293 nulls_sort_change = " NULLS LAST" +1294 +1295 if nulls_sort_change and not self.NULL_ORDERING_SUPPORTED: +1296 self.unsupported( +1297 "Sorting in an ORDER BY on NULLS FIRST/NULLS LAST is not supported by this dialect" 1298 ) -1299 ) -1300 return f"{self.seg('MATCH_RECOGNIZE')} {self.wrap(body)}" -1301 -1302 def query_modifiers(self, expression: exp.Expression, *sqls: str) -> str: -1303 return csv( -1304 *sqls, -1305 *[self.sql(sql) for sql in expression.args.get("joins") or []], -1306 self.sql(expression, "match"), -1307 *[self.sql(sql) for sql in expression.args.get("laterals") or []], -1308 self.sql(expression, "where"), -1309 self.sql(expression, "group"), -1310 self.sql(expression, "having"), -1311 self.sql(expression, "qualify"), -1312 self.seg("WINDOW ") + self.expressions(expression, "windows", flat=True) -1313 if expression.args.get("windows") -1314 else "", -1315 self.sql(expression, "distribute"), -1316 self.sql(expression, "sort"), -1317 self.sql(expression, "cluster"), -1318 self.sql(expression, "order"), -1319 self.sql(expression, "limit"), -1320 self.sql(expression, "offset"), -1321 self.sql(expression, "lock"), -1322 self.sql(expression, "sample"), -1323 sep="", -1324 ) -1325 -1326 def select_sql(self, expression: exp.Select) -> str: -1327 hint = self.sql(expression, "hint") -1328 distinct = self.sql(expression, "distinct") -1329 distinct = f" {distinct}" if distinct else "" -1330 expressions = self.expressions(expression) -1331 expressions = f"{self.sep()}{expressions}" if expressions else expressions -1332 sql = self.query_modifiers( -1333 expression, -1334 f"SELECT{hint}{distinct}{expressions}", -1335 self.sql(expression, "into", comment=False), -1336 self.sql(expression, "from", comment=False), -1337 ) -1338 return self.prepend_ctes(expression, sql) -1339 -1340 def schema_sql(self, expression: exp.Schema) -> str: -1341 this = self.sql(expression, "this") -1342 this = f"{this} " if this else "" -1343 sql = f"({self.sep('')}{self.expressions(expression)}{self.seg(')', sep='')}" -1344 return f"{this}{sql}" -1345 -1346 def star_sql(self, expression: exp.Star) -> str: -1347 except_ = self.expressions(expression, key="except", flat=True) -1348 except_ = f"{self.seg(self.STAR_MAPPING['except'])} ({except_})" if except_ else "" -1349 replace = self.expressions(expression, key="replace", flat=True) -1350 replace = f"{self.seg(self.STAR_MAPPING['replace'])} ({replace})" if replace else "" -1351 return f"*{except_}{replace}" -1352 -1353 def structkwarg_sql(self, expression: exp.StructKwarg) -> str: -1354 return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}" -1355 -1356 def parameter_sql(self, expression: exp.Parameter) -> str: -1357 this = self.sql(expression, "this") -1358 this = f"{{{this}}}" if expression.args.get("wrapped") else f"{this}" -1359 return f"{self.PARAMETER_TOKEN}{this}" -1360 -1361 def sessionparameter_sql(self, expression: exp.SessionParameter) -> str: -1362 this = self.sql(expression, "this") -1363 kind = expression.text("kind") -1364 if kind: -1365 kind = f"{kind}." -1366 return f"@@{kind}{this}" -1367 -1368 def placeholder_sql(self, expression: exp.Placeholder) -> str: -1369 return f":{expression.name}" if expression.name else "?" -1370 -1371 def subquery_sql(self, expression: exp.Subquery, sep: str = " AS ") -> str: -1372 alias = self.sql(expression, "alias") -1373 alias = f"{sep}{alias}" if alias else "" -1374 -1375 sql = self.query_modifiers( -1376 expression, -1377 self.wrap(expression), -1378 alias, -1379 self.expressions(expression, key="pivots", sep=" "), -1380 ) -1381 -1382 return self.prepend_ctes(expression, sql) +1299 nulls_sort_change = "" +1300 +1301 return f"{self.sql(expression, 'this')}{sort_order}{nulls_sort_change}" +1302 +1303 def matchrecognize_sql(self, expression: exp.MatchRecognize) -> str: +1304 partition = self.partition_by_sql(expression) +1305 order = self.sql(expression, "order") +1306 measures = self.sql(expression, "measures") +1307 measures = self.seg(f"MEASURES {measures}") if measures else "" +1308 rows = self.sql(expression, "rows") +1309 rows = self.seg(rows) if rows else "" +1310 after = self.sql(expression, "after") +1311 after = self.seg(after) if after else "" +1312 pattern = self.sql(expression, "pattern") +1313 pattern = self.seg(f"PATTERN ({pattern})") if pattern else "" +1314 define = self.sql(expression, "define") +1315 define = self.seg(f"DEFINE {define}") if define else "" +1316 body = "".join( +1317 ( +1318 partition, +1319 order, +1320 measures, +1321 rows, +1322 after, +1323 pattern, +1324 define, +1325 ) +1326 ) +1327 return f"{self.seg('MATCH_RECOGNIZE')} {self.wrap(body)}" +1328 +1329 def query_modifiers(self, expression: exp.Expression, *sqls: str) -> str: +1330 limit = expression.args.get("limit") +1331 +1332 if self.LIMIT_FETCH == "LIMIT" and isinstance(limit, exp.Fetch): +1333 limit = exp.Limit(expression=limit.args.get("count")) +1334 elif self.LIMIT_FETCH == "FETCH" and isinstance(limit, exp.Limit): +1335 limit = exp.Fetch(direction="FIRST", count=limit.expression) +1336 +1337 fetch = isinstance(limit, exp.Fetch) +1338 +1339 return csv( +1340 *sqls, +1341 *[self.sql(sql) for sql in expression.args.get("joins") or []], +1342 self.sql(expression, "match"), +1343 *[self.sql(sql) for sql in expression.args.get("laterals") or []], +1344 self.sql(expression, "where"), +1345 self.sql(expression, "group"), +1346 self.sql(expression, "having"), +1347 self.sql(expression, "qualify"), +1348 self.seg("WINDOW ") + self.expressions(expression, "windows", flat=True) +1349 if expression.args.get("windows") +1350 else "", +1351 self.sql(expression, "distribute"), +1352 self.sql(expression, "sort"), +1353 self.sql(expression, "cluster"), +1354 self.sql(expression, "order"), +1355 self.sql(expression, "offset") if fetch else self.sql(limit), +1356 self.sql(limit) if fetch else self.sql(expression, "offset"), +1357 self.sql(expression, "lock"), +1358 self.sql(expression, "sample"), +1359 sep="", +1360 ) +1361 +1362 def select_sql(self, expression: exp.Select) -> str: +1363 kind = expression.args.get("kind") +1364 kind = f" AS {kind}" if kind else "" +1365 hint = self.sql(expression, "hint") +1366 distinct = self.sql(expression, "distinct") +1367 distinct = f" {distinct}" if distinct else "" +1368 expressions = self.expressions(expression) +1369 expressions = f"{self.sep()}{expressions}" if expressions else expressions +1370 sql = self.query_modifiers( +1371 expression, +1372 f"SELECT{kind}{hint}{distinct}{expressions}", +1373 self.sql(expression, "into", comment=False), +1374 self.sql(expression, "from", comment=False), +1375 ) +1376 return self.prepend_ctes(expression, sql) +1377 +1378 def schema_sql(self, expression: exp.Schema) -> str: +1379 this = self.sql(expression, "this") +1380 this = f"{this} " if this else "" +1381 sql = f"({self.sep('')}{self.expressions(expression)}{self.seg(')', sep='')}" +1382 return f"{this}{sql}" 1383 -1384 def qualify_sql(self, expression: exp.Qualify) -> str: -1385 this = self.indent(self.sql(expression, "this")) -1386 return f"{self.seg('QUALIFY')}{self.sep()}{this}" -1387 -1388 def union_sql(self, expression: exp.Union) -> str: -1389 return self.prepend_ctes( -1390 expression, -1391 self.set_operation(expression, self.union_op(expression)), -1392 ) +1384 def star_sql(self, expression: exp.Star) -> str: +1385 except_ = self.expressions(expression, key="except", flat=True) +1386 except_ = f"{self.seg(self.STAR_MAPPING['except'])} ({except_})" if except_ else "" +1387 replace = self.expressions(expression, key="replace", flat=True) +1388 replace = f"{self.seg(self.STAR_MAPPING['replace'])} ({replace})" if replace else "" +1389 return f"*{except_}{replace}" +1390 +1391 def structkwarg_sql(self, expression: exp.StructKwarg) -> str: +1392 return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}" 1393 -1394 def union_op(self, expression: exp.Union) -> str: -1395 kind = " DISTINCT" if self.EXPLICIT_UNION else "" -1396 kind = kind if expression.args.get("distinct") else " ALL" -1397 return f"UNION{kind}" +1394 def parameter_sql(self, expression: exp.Parameter) -> str: +1395 this = self.sql(expression, "this") +1396 this = f"{{{this}}}" if expression.args.get("wrapped") else f"{this}" +1397 return f"{self.PARAMETER_TOKEN}{this}" 1398 -1399 def unnest_sql(self, expression: exp.Unnest) -> str: -1400 args = self.expressions(expression, flat=True) -1401 alias = expression.args.get("alias") -1402 if alias and self.unnest_column_only: -1403 columns = alias.columns -1404 alias = self.sql(columns[0]) if columns else "" -1405 else: -1406 alias = self.sql(expression, "alias") -1407 alias = f" AS {alias}" if alias else alias -1408 ordinality = " WITH ORDINALITY" if expression.args.get("ordinality") else "" -1409 offset = expression.args.get("offset") -1410 offset = f" WITH OFFSET AS {self.sql(offset)}" if offset else "" -1411 return f"UNNEST({args}){ordinality}{alias}{offset}" +1399 def sessionparameter_sql(self, expression: exp.SessionParameter) -> str: +1400 this = self.sql(expression, "this") +1401 kind = expression.text("kind") +1402 if kind: +1403 kind = f"{kind}." +1404 return f"@@{kind}{this}" +1405 +1406 def placeholder_sql(self, expression: exp.Placeholder) -> str: +1407 return f":{expression.name}" if expression.name else "?" +1408 +1409 def subquery_sql(self, expression: exp.Subquery, sep: str = " AS ") -> str: +1410 alias = self.sql(expression, "alias") +1411 alias = f"{sep}{alias}" if alias else "" 1412 -1413 def where_sql(self, expression: exp.Where) -> str: -1414 this = self.indent(self.sql(expression, "this")) -1415 return f"{self.seg('WHERE')}{self.sep()}{this}" -1416 -1417 def window_sql(self, expression: exp.Window) -> str: -1418 this = self.sql(expression, "this") +1413 sql = self.query_modifiers( +1414 expression, +1415 self.wrap(expression), +1416 alias, +1417 self.expressions(expression, key="pivots", sep=" "), +1418 ) 1419 -1420 partition = self.partition_by_sql(expression) +1420 return self.prepend_ctes(expression, sql) 1421 -1422 order = expression.args.get("order") -1423 order_sql = self.order_sql(order, flat=True) if order else "" -1424 -1425 partition_sql = partition + " " if partition and order else partition -1426 -1427 spec = expression.args.get("spec") -1428 spec_sql = " " + self.window_spec_sql(spec) if spec else "" -1429 -1430 alias = self.sql(expression, "alias") -1431 this = f"{this} {'AS' if expression.arg_key == 'windows' else 'OVER'}" -1432 -1433 if not partition and not order and not spec and alias: -1434 return f"{this} {alias}" -1435 -1436 window_args = alias + partition_sql + order_sql + spec_sql -1437 -1438 return f"{this} ({window_args.strip()})" -1439 -1440 def partition_by_sql(self, expression: exp.Window | exp.MatchRecognize) -> str: -1441 partition = self.expressions(expression, key="partition_by", flat=True) -1442 return f"PARTITION BY {partition}" if partition else "" -1443 -1444 def window_spec_sql(self, expression: exp.WindowSpec) -> str: -1445 kind = self.sql(expression, "kind") -1446 start = csv(self.sql(expression, "start"), self.sql(expression, "start_side"), sep=" ") -1447 end = ( -1448 csv(self.sql(expression, "end"), self.sql(expression, "end_side"), sep=" ") -1449 or "CURRENT ROW" -1450 ) -1451 return f"{kind} BETWEEN {start} AND {end}" -1452 -1453 def withingroup_sql(self, expression: exp.WithinGroup) -> str: -1454 this = self.sql(expression, "this") -1455 expression_sql = self.sql(expression, "expression")[1:] # order has a leading space -1456 return f"{this} WITHIN GROUP ({expression_sql})" +1422 def qualify_sql(self, expression: exp.Qualify) -> str: +1423 this = self.indent(self.sql(expression, "this")) +1424 return f"{self.seg('QUALIFY')}{self.sep()}{this}" +1425 +1426 def union_sql(self, expression: exp.Union) -> str: +1427 return self.prepend_ctes( +1428 expression, +1429 self.set_operation(expression, self.union_op(expression)), +1430 ) +1431 +1432 def union_op(self, expression: exp.Union) -> str: +1433 kind = " DISTINCT" if self.EXPLICIT_UNION else "" +1434 kind = kind if expression.args.get("distinct") else " ALL" +1435 return f"UNION{kind}" +1436 +1437 def unnest_sql(self, expression: exp.Unnest) -> str: +1438 args = self.expressions(expression, flat=True) +1439 alias = expression.args.get("alias") +1440 if alias and self.unnest_column_only: +1441 columns = alias.columns +1442 alias = self.sql(columns[0]) if columns else "" +1443 else: +1444 alias = self.sql(expression, "alias") +1445 alias = f" AS {alias}" if alias else alias +1446 ordinality = " WITH ORDINALITY" if expression.args.get("ordinality") else "" +1447 offset = expression.args.get("offset") +1448 offset = f" WITH OFFSET AS {self.sql(offset)}" if offset else "" +1449 return f"UNNEST({args}){ordinality}{alias}{offset}" +1450 +1451 def where_sql(self, expression: exp.Where) -> str: +1452 this = self.indent(self.sql(expression, "this")) +1453 return f"{self.seg('WHERE')}{self.sep()}{this}" +1454 +1455 def window_sql(self, expression: exp.Window) -> str: +1456 this = self.sql(expression, "this") 1457 -1458 def between_sql(self, expression: exp.Between) -> str: -1459 this = self.sql(expression, "this") -1460 low = self.sql(expression, "low") -1461 high = self.sql(expression, "high") -1462 return f"{this} BETWEEN {low} AND {high}" -1463 -1464 def bracket_sql(self, expression: exp.Bracket) -> str: -1465 expressions = apply_index_offset(expression.expressions, self.index_offset) -1466 expressions_sql = ", ".join(self.sql(e) for e in expressions) +1458 partition = self.partition_by_sql(expression) +1459 +1460 order = expression.args.get("order") +1461 order_sql = self.order_sql(order, flat=True) if order else "" +1462 +1463 partition_sql = partition + " " if partition and order else partition +1464 +1465 spec = expression.args.get("spec") +1466 spec_sql = " " + self.window_spec_sql(spec) if spec else "" 1467 -1468 return f"{self.sql(expression, 'this')}[{expressions_sql}]" -1469 -1470 def all_sql(self, expression: exp.All) -> str: -1471 return f"ALL {self.wrap(expression)}" -1472 -1473 def any_sql(self, expression: exp.Any) -> str: -1474 this = self.sql(expression, "this") -1475 if isinstance(expression.this, exp.Subqueryable): -1476 this = self.wrap(this) -1477 return f"ANY {this}" -1478 -1479 def exists_sql(self, expression: exp.Exists) -> str: -1480 return f"EXISTS{self.wrap(expression)}" +1468 alias = self.sql(expression, "alias") +1469 this = f"{this} {'AS' if expression.arg_key == 'windows' else 'OVER'}" +1470 +1471 if not partition and not order and not spec and alias: +1472 return f"{this} {alias}" +1473 +1474 window_args = alias + partition_sql + order_sql + spec_sql +1475 +1476 return f"{this} ({window_args.strip()})" +1477 +1478 def partition_by_sql(self, expression: exp.Window | exp.MatchRecognize) -> str: +1479 partition = self.expressions(expression, key="partition_by", flat=True) +1480 return f"PARTITION BY {partition}" if partition else "" 1481 -1482 def case_sql(self, expression: exp.Case) -> str: -1483 this = self.sql(expression, "this") -1484 statements = [f"CASE {this}" if this else "CASE"] -1485 -1486 for e in expression.args["ifs"]: -1487 statements.append(f"WHEN {self.sql(e, 'this')}") -1488 statements.append(f"THEN {self.sql(e, 'true')}") -1489 -1490 default = self.sql(expression, "default") -1491 -1492 if default: -1493 statements.append(f"ELSE {default}") -1494 -1495 statements.append("END") -1496 -1497 if self.pretty and self.text_width(statements) > self._max_text_width: -1498 return self.indent("\n".join(statements), skip_first=True, skip_last=True) -1499 -1500 return " ".join(statements) +1482 def window_spec_sql(self, expression: exp.WindowSpec) -> str: +1483 kind = self.sql(expression, "kind") +1484 start = csv(self.sql(expression, "start"), self.sql(expression, "start_side"), sep=" ") +1485 end = ( +1486 csv(self.sql(expression, "end"), self.sql(expression, "end_side"), sep=" ") +1487 or "CURRENT ROW" +1488 ) +1489 return f"{kind} BETWEEN {start} AND {end}" +1490 +1491 def withingroup_sql(self, expression: exp.WithinGroup) -> str: +1492 this = self.sql(expression, "this") +1493 expression_sql = self.sql(expression, "expression")[1:] # order has a leading space +1494 return f"{this} WITHIN GROUP ({expression_sql})" +1495 +1496 def between_sql(self, expression: exp.Between) -> str: +1497 this = self.sql(expression, "this") +1498 low = self.sql(expression, "low") +1499 high = self.sql(expression, "high") +1500 return f"{this} BETWEEN {low} AND {high}" 1501 -1502 def constraint_sql(self, expression: exp.Constraint) -> str: -1503 this = self.sql(expression, "this") -1504 expressions = self.expressions(expression, flat=True) -1505 return f"CONSTRAINT {this} {expressions}" -1506 -1507 def extract_sql(self, expression: exp.Extract) -> str: -1508 this = self.sql(expression, "this") -1509 expression_sql = self.sql(expression, "expression") -1510 return f"EXTRACT({this} FROM {expression_sql})" -1511 -1512 def trim_sql(self, expression: exp.Trim) -> str: -1513 trim_type = self.sql(expression, "position") -1514 -1515 if trim_type == "LEADING": -1516 return self.func("LTRIM", expression.this) -1517 elif trim_type == "TRAILING": -1518 return self.func("RTRIM", expression.this) -1519 else: -1520 return self.func("TRIM", expression.this, expression.expression) -1521 -1522 def concat_sql(self, expression: exp.Concat) -> str: -1523 if len(expression.expressions) == 1: -1524 return self.sql(expression.expressions[0]) -1525 return self.function_fallback_sql(expression) -1526 -1527 def check_sql(self, expression: exp.Check) -> str: -1528 this = self.sql(expression, key="this") -1529 return f"CHECK ({this})" -1530 -1531 def foreignkey_sql(self, expression: exp.ForeignKey) -> str: -1532 expressions = self.expressions(expression, flat=True) -1533 reference = self.sql(expression, "reference") -1534 reference = f" {reference}" if reference else "" -1535 delete = self.sql(expression, "delete") -1536 delete = f" ON DELETE {delete}" if delete else "" -1537 update = self.sql(expression, "update") -1538 update = f" ON UPDATE {update}" if update else "" -1539 return f"FOREIGN KEY ({expressions}){reference}{delete}{update}" -1540 -1541 def primarykey_sql(self, expression: exp.ForeignKey) -> str: +1502 def bracket_sql(self, expression: exp.Bracket) -> str: +1503 expressions = apply_index_offset(expression.expressions, self.index_offset) +1504 expressions_sql = ", ".join(self.sql(e) for e in expressions) +1505 +1506 return f"{self.sql(expression, 'this')}[{expressions_sql}]" +1507 +1508 def all_sql(self, expression: exp.All) -> str: +1509 return f"ALL {self.wrap(expression)}" +1510 +1511 def any_sql(self, expression: exp.Any) -> str: +1512 this = self.sql(expression, "this") +1513 if isinstance(expression.this, exp.Subqueryable): +1514 this = self.wrap(this) +1515 return f"ANY {this}" +1516 +1517 def exists_sql(self, expression: exp.Exists) -> str: +1518 return f"EXISTS{self.wrap(expression)}" +1519 +1520 def case_sql(self, expression: exp.Case) -> str: +1521 this = self.sql(expression, "this") +1522 statements = [f"CASE {this}" if this else "CASE"] +1523 +1524 for e in expression.args["ifs"]: +1525 statements.append(f"WHEN {self.sql(e, 'this')}") +1526 statements.append(f"THEN {self.sql(e, 'true')}") +1527 +1528 default = self.sql(expression, "default") +1529 +1530 if default: +1531 statements.append(f"ELSE {default}") +1532 +1533 statements.append("END") +1534 +1535 if self.pretty and self.text_width(statements) > self._max_text_width: +1536 return self.indent("\n".join(statements), skip_first=True, skip_last=True) +1537 +1538 return " ".join(statements) +1539 +1540 def constraint_sql(self, expression: exp.Constraint) -> str: +1541 this = self.sql(expression, "this") 1542 expressions = self.expressions(expression, flat=True) -1543 options = self.expressions(expression, "options", flat=True, sep=" ") -1544 options = f" {options}" if options else "" -1545 return f"PRIMARY KEY ({expressions}){options}" -1546 -1547 def unique_sql(self, expression: exp.Unique) -> str: -1548 columns = self.expressions(expression, key="expressions") -1549 return f"UNIQUE ({columns})" -1550 -1551 def if_sql(self, expression: exp.If) -> str: -1552 return self.case_sql( -1553 exp.Case(ifs=[expression.copy()], default=expression.args.get("false")) -1554 ) -1555 -1556 def in_sql(self, expression: exp.In) -> str: -1557 query = expression.args.get("query") -1558 unnest = expression.args.get("unnest") -1559 field = expression.args.get("field") -1560 is_global = " GLOBAL" if expression.args.get("is_global") else "" -1561 -1562 if query: -1563 in_sql = self.wrap(query) -1564 elif unnest: -1565 in_sql = self.in_unnest_op(unnest) -1566 elif field: -1567 in_sql = self.sql(field) -1568 else: -1569 in_sql = f"({self.expressions(expression, flat=True)})" -1570 -1571 return f"{self.sql(expression, 'this')}{is_global} IN {in_sql}" -1572 -1573 def in_unnest_op(self, unnest: exp.Unnest) -> str: -1574 return f"(SELECT {self.sql(unnest)})" -1575 -1576 def interval_sql(self, expression: exp.Interval) -> str: -1577 this = expression.args.get("this") -1578 if this: -1579 this = ( -1580 f" {this}" -1581 if isinstance(this, exp.Literal) or isinstance(this, exp.Paren) -1582 else f" ({this})" -1583 ) -1584 else: -1585 this = "" -1586 unit = self.sql(expression, "unit") -1587 unit = f" {unit}" if unit else "" -1588 return f"INTERVAL{this}{unit}" -1589 -1590 def return_sql(self, expression: exp.Return) -> str: -1591 return f"RETURN {self.sql(expression, 'this')}" -1592 -1593 def reference_sql(self, expression: exp.Reference) -> str: -1594 this = self.sql(expression, "this") -1595 expressions = self.expressions(expression, flat=True) -1596 expressions = f"({expressions})" if expressions else "" -1597 options = self.expressions(expression, "options", flat=True, sep=" ") -1598 options = f" {options}" if options else "" -1599 return f"REFERENCES {this}{expressions}{options}" -1600 -1601 def anonymous_sql(self, expression: exp.Anonymous) -> str: -1602 return self.func(expression.name, *expression.expressions) -1603 -1604 def paren_sql(self, expression: exp.Paren) -> str: -1605 if isinstance(expression.unnest(), exp.Select): -1606 sql = self.wrap(expression) -1607 else: -1608 sql = self.seg(self.indent(self.sql(expression, "this")), sep="") -1609 sql = f"({sql}{self.seg(')', sep='')}" -1610 -1611 return self.prepend_ctes(expression, sql) +1543 return f"CONSTRAINT {this} {expressions}" +1544 +1545 def extract_sql(self, expression: exp.Extract) -> str: +1546 this = self.sql(expression, "this") +1547 expression_sql = self.sql(expression, "expression") +1548 return f"EXTRACT({this} FROM {expression_sql})" +1549 +1550 def trim_sql(self, expression: exp.Trim) -> str: +1551 trim_type = self.sql(expression, "position") +1552 +1553 if trim_type == "LEADING": +1554 return self.func("LTRIM", expression.this) +1555 elif trim_type == "TRAILING": +1556 return self.func("RTRIM", expression.this) +1557 else: +1558 return self.func("TRIM", expression.this, expression.expression) +1559 +1560 def concat_sql(self, expression: exp.Concat) -> str: +1561 if len(expression.expressions) == 1: +1562 return self.sql(expression.expressions[0]) +1563 return self.function_fallback_sql(expression) +1564 +1565 def check_sql(self, expression: exp.Check) -> str: +1566 this = self.sql(expression, key="this") +1567 return f"CHECK ({this})" +1568 +1569 def foreignkey_sql(self, expression: exp.ForeignKey) -> str: +1570 expressions = self.expressions(expression, flat=True) +1571 reference = self.sql(expression, "reference") +1572 reference = f" {reference}" if reference else "" +1573 delete = self.sql(expression, "delete") +1574 delete = f" ON DELETE {delete}" if delete else "" +1575 update = self.sql(expression, "update") +1576 update = f" ON UPDATE {update}" if update else "" +1577 return f"FOREIGN KEY ({expressions}){reference}{delete}{update}" +1578 +1579 def primarykey_sql(self, expression: exp.ForeignKey) -> str: +1580 expressions = self.expressions(expression, flat=True) +1581 options = self.expressions(expression, "options", flat=True, sep=" ") +1582 options = f" {options}" if options else "" +1583 return f"PRIMARY KEY ({expressions}){options}" +1584 +1585 def unique_sql(self, expression: exp.Unique) -> str: +1586 columns = self.expressions(expression, key="expressions") +1587 return f"UNIQUE ({columns})" +1588 +1589 def if_sql(self, expression: exp.If) -> str: +1590 return self.case_sql( +1591 exp.Case(ifs=[expression.copy()], default=expression.args.get("false")) +1592 ) +1593 +1594 def jsonkeyvalue_sql(self, expression: exp.JSONKeyValue) -> str: +1595 return f"{self.sql(expression, 'this')}: {self.sql(expression, 'expression')}" +1596 +1597 def jsonobject_sql(self, expression: exp.JSONObject) -> str: +1598 expressions = self.expressions(expression) +1599 null_handling = expression.args.get("null_handling") +1600 null_handling = f" {null_handling}" if null_handling else "" +1601 unique_keys = expression.args.get("unique_keys") +1602 if unique_keys is not None: +1603 unique_keys = f" {'WITH' if unique_keys else 'WITHOUT'} UNIQUE KEYS" +1604 else: +1605 unique_keys = "" +1606 return_type = self.sql(expression, "return_type") +1607 return_type = f" RETURNING {return_type}" if return_type else "" +1608 format_json = " FORMAT JSON" if expression.args.get("format_json") else "" +1609 encoding = self.sql(expression, "encoding") +1610 encoding = f" ENCODING {encoding}" if encoding else "" +1611 return f"JSON_OBJECT({expressions}{null_handling}{unique_keys}{return_type}{format_json}{encoding})" 1612 -1613 def neg_sql(self, expression: exp.Neg) -> str: -1614 # This makes sure we don't convert "- - 5" to "--5", which is a comment -1615 this_sql = self.sql(expression, "this") -1616 sep = " " if this_sql[0] == "-" else "" -1617 return f"-{sep}{this_sql}" +1613 def in_sql(self, expression: exp.In) -> str: +1614 query = expression.args.get("query") +1615 unnest = expression.args.get("unnest") +1616 field = expression.args.get("field") +1617 is_global = " GLOBAL" if expression.args.get("is_global") else "" 1618 -1619 def not_sql(self, expression: exp.Not) -> str: -1620 return f"NOT {self.sql(expression, 'this')}" -1621 -1622 def alias_sql(self, expression: exp.Alias) -> str: -1623 to_sql = self.sql(expression, "alias") -1624 to_sql = f" AS {to_sql}" if to_sql else "" -1625 return f"{self.sql(expression, 'this')}{to_sql}" -1626 -1627 def aliases_sql(self, expression: exp.Aliases) -> str: -1628 return f"{self.sql(expression, 'this')} AS ({self.expressions(expression, flat=True)})" +1619 if query: +1620 in_sql = self.wrap(query) +1621 elif unnest: +1622 in_sql = self.in_unnest_op(unnest) +1623 elif field: +1624 in_sql = self.sql(field) +1625 else: +1626 in_sql = f"({self.expressions(expression, flat=True)})" +1627 +1628 return f"{self.sql(expression, 'this')}{is_global} IN {in_sql}" 1629 -1630 def attimezone_sql(self, expression: exp.AtTimeZone) -> str: -1631 this = self.sql(expression, "this") -1632 zone = self.sql(expression, "zone") -1633 return f"{this} AT TIME ZONE {zone}" -1634 -1635 def add_sql(self, expression: exp.Add) -> str: -1636 return self.binary(expression, "+") -1637 -1638 def and_sql(self, expression: exp.And) -> str: -1639 return self.connector_sql(expression, "AND") -1640 -1641 def connector_sql(self, expression: exp.Connector, op: str) -> str: -1642 if not self.pretty: -1643 return self.binary(expression, op) -1644 -1645 sqls = tuple(self.sql(e) for e in expression.flatten(unnest=False)) -1646 sep = "\n" if self.text_width(sqls) > self._max_text_width else " " -1647 return f"{sep}{op} ".join(sqls) -1648 -1649 def bitwiseand_sql(self, expression: exp.BitwiseAnd) -> str: -1650 return self.binary(expression, "&") -1651 -1652 def bitwiseleftshift_sql(self, expression: exp.BitwiseLeftShift) -> str: -1653 return self.binary(expression, "<<") -1654 -1655 def bitwisenot_sql(self, expression: exp.BitwiseNot) -> str: -1656 return f"~{self.sql(expression, 'this')}" +1630 def in_unnest_op(self, unnest: exp.Unnest) -> str: +1631 return f"(SELECT {self.sql(unnest)})" +1632 +1633 def interval_sql(self, expression: exp.Interval) -> str: +1634 this = expression.args.get("this") +1635 if this: +1636 this = ( +1637 f" {this}" +1638 if isinstance(this, exp.Literal) or isinstance(this, exp.Paren) +1639 else f" ({this})" +1640 ) +1641 else: +1642 this = "" +1643 unit = self.sql(expression, "unit") +1644 unit = f" {unit}" if unit else "" +1645 return f"INTERVAL{this}{unit}" +1646 +1647 def return_sql(self, expression: exp.Return) -> str: +1648 return f"RETURN {self.sql(expression, 'this')}" +1649 +1650 def reference_sql(self, expression: exp.Reference) -> str: +1651 this = self.sql(expression, "this") +1652 expressions = self.expressions(expression, flat=True) +1653 expressions = f"({expressions})" if expressions else "" +1654 options = self.expressions(expression, "options", flat=True, sep=" ") +1655 options = f" {options}" if options else "" +1656 return f"REFERENCES {this}{expressions}{options}" 1657 -1658 def bitwiseor_sql(self, expression: exp.BitwiseOr) -> str: -1659 return self.binary(expression, "|") +1658 def anonymous_sql(self, expression: exp.Anonymous) -> str: +1659 return self.func(expression.name, *expression.expressions) 1660 -1661 def bitwiserightshift_sql(self, expression: exp.BitwiseRightShift) -> str: -1662 return self.binary(expression, ">>") -1663 -1664 def bitwisexor_sql(self, expression: exp.BitwiseXor) -> str: -1665 return self.binary(expression, "^") -1666 -1667 def cast_sql(self, expression: exp.Cast) -> str: -1668 return f"CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})" +1661 def paren_sql(self, expression: exp.Paren) -> str: +1662 if isinstance(expression.unnest(), exp.Select): +1663 sql = self.wrap(expression) +1664 else: +1665 sql = self.seg(self.indent(self.sql(expression, "this")), sep="") +1666 sql = f"({sql}{self.seg(')', sep='')}" +1667 +1668 return self.prepend_ctes(expression, sql) 1669 -1670 def currentdate_sql(self, expression: exp.CurrentDate) -> str: -1671 zone = self.sql(expression, "this") -1672 return f"CURRENT_DATE({zone})" if zone else "CURRENT_DATE" -1673 -1674 def collate_sql(self, expression: exp.Collate) -> str: -1675 return self.binary(expression, "COLLATE") -1676 -1677 def command_sql(self, expression: exp.Command) -> str: -1678 return f"{self.sql(expression, 'this').upper()} {expression.text('expression').strip()}" -1679 -1680 def comment_sql(self, expression: exp.Comment) -> str: -1681 this = self.sql(expression, "this") -1682 kind = expression.args["kind"] -1683 exists_sql = " IF EXISTS " if expression.args.get("exists") else " " -1684 expression_sql = self.sql(expression, "expression") -1685 return f"COMMENT{exists_sql}ON {kind} {this} IS {expression_sql}" +1670 def neg_sql(self, expression: exp.Neg) -> str: +1671 # This makes sure we don't convert "- - 5" to "--5", which is a comment +1672 this_sql = self.sql(expression, "this") +1673 sep = " " if this_sql[0] == "-" else "" +1674 return f"-{sep}{this_sql}" +1675 +1676 def not_sql(self, expression: exp.Not) -> str: +1677 return f"NOT {self.sql(expression, 'this')}" +1678 +1679 def alias_sql(self, expression: exp.Alias) -> str: +1680 to_sql = self.sql(expression, "alias") +1681 to_sql = f" AS {to_sql}" if to_sql else "" +1682 return f"{self.sql(expression, 'this')}{to_sql}" +1683 +1684 def aliases_sql(self, expression: exp.Aliases) -> str: +1685 return f"{self.sql(expression, 'this')} AS ({self.expressions(expression, flat=True)})" 1686 -1687 def transaction_sql(self, expression: exp.Transaction) -> str: -1688 return "BEGIN" -1689 -1690 def commit_sql(self, expression: exp.Commit) -> str: -1691 chain = expression.args.get("chain") -1692 if chain is not None: -1693 chain = " AND CHAIN" if chain else " AND NO CHAIN" +1687 def attimezone_sql(self, expression: exp.AtTimeZone) -> str: +1688 this = self.sql(expression, "this") +1689 zone = self.sql(expression, "zone") +1690 return f"{this} AT TIME ZONE {zone}" +1691 +1692 def add_sql(self, expression: exp.Add) -> str: +1693 return self.binary(expression, "+") 1694 -1695 return f"COMMIT{chain or ''}" -1696 -1697 def rollback_sql(self, expression: exp.Rollback) -> str: -1698 savepoint = expression.args.get("savepoint") -1699 savepoint = f" TO {savepoint}" if savepoint else "" -1700 return f"ROLLBACK{savepoint}" +1695 def and_sql(self, expression: exp.And) -> str: +1696 return self.connector_sql(expression, "AND") +1697 +1698 def connector_sql(self, expression: exp.Connector, op: str) -> str: +1699 if not self.pretty: +1700 return self.binary(expression, op) 1701 -1702 def altercolumn_sql(self, expression: exp.AlterColumn) -> str: -1703 this = self.sql(expression, "this") -1704 -1705 dtype = self.sql(expression, "dtype") -1706 if dtype: -1707 collate = self.sql(expression, "collate") -1708 collate = f" COLLATE {collate}" if collate else "" -1709 using = self.sql(expression, "using") -1710 using = f" USING {using}" if using else "" -1711 return f"ALTER COLUMN {this} TYPE {dtype}{collate}{using}" -1712 -1713 default = self.sql(expression, "default") -1714 if default: -1715 return f"ALTER COLUMN {this} SET DEFAULT {default}" -1716 -1717 if not expression.args.get("drop"): -1718 self.unsupported("Unsupported ALTER COLUMN syntax") -1719 -1720 return f"ALTER COLUMN {this} DROP DEFAULT" -1721 -1722 def renametable_sql(self, expression: exp.RenameTable) -> str: -1723 this = self.sql(expression, "this") -1724 return f"RENAME TO {this}" -1725 -1726 def altertable_sql(self, expression: exp.AlterTable) -> str: -1727 actions = expression.args["actions"] -1728 -1729 if isinstance(actions[0], exp.ColumnDef): -1730 actions = self.expressions(expression, "actions", prefix="ADD COLUMN ") -1731 elif isinstance(actions[0], exp.Schema): -1732 actions = self.expressions(expression, "actions", prefix="ADD COLUMNS ") -1733 elif isinstance(actions[0], exp.Delete): -1734 actions = self.expressions(expression, "actions", flat=True) -1735 else: -1736 actions = self.expressions(expression, "actions") -1737 -1738 exists = " IF EXISTS" if expression.args.get("exists") else "" -1739 return f"ALTER TABLE{exists} {self.sql(expression, 'this')} {actions}" -1740 -1741 def droppartition_sql(self, expression: exp.DropPartition) -> str: -1742 expressions = self.expressions(expression) -1743 exists = " IF EXISTS " if expression.args.get("exists") else " " -1744 return f"DROP{exists}{expressions}" -1745 -1746 def addconstraint_sql(self, expression: exp.AddConstraint) -> str: -1747 this = self.sql(expression, "this") -1748 expression_ = self.sql(expression, "expression") -1749 add_constraint = f"ADD CONSTRAINT {this}" if this else "ADD" -1750 -1751 enforced = expression.args.get("enforced") -1752 if enforced is not None: -1753 return f"{add_constraint} CHECK ({expression_}){' ENFORCED' if enforced else ''}" -1754 -1755 return f"{add_constraint} {expression_}" -1756 -1757 def distinct_sql(self, expression: exp.Distinct) -> str: -1758 this = self.expressions(expression, flat=True) -1759 this = f" {this}" if this else "" -1760 -1761 on = self.sql(expression, "on") -1762 on = f" ON {on}" if on else "" -1763 return f"DISTINCT{this}{on}" -1764 -1765 def ignorenulls_sql(self, expression: exp.IgnoreNulls) -> str: -1766 return f"{self.sql(expression, 'this')} IGNORE NULLS" -1767 -1768 def respectnulls_sql(self, expression: exp.RespectNulls) -> str: -1769 return f"{self.sql(expression, 'this')} RESPECT NULLS" -1770 -1771 def intdiv_sql(self, expression: exp.IntDiv) -> str: -1772 return self.sql( -1773 exp.Cast( -1774 this=exp.Div(this=expression.this, expression=expression.expression), -1775 to=exp.DataType(this=exp.DataType.Type.INT), -1776 ) -1777 ) +1702 sqls = tuple(self.sql(e) for e in expression.flatten(unnest=False)) +1703 sep = "\n" if self.text_width(sqls) > self._max_text_width else " " +1704 return f"{sep}{op} ".join(sqls) +1705 +1706 def bitwiseand_sql(self, expression: exp.BitwiseAnd) -> str: +1707 return self.binary(expression, "&") +1708 +1709 def bitwiseleftshift_sql(self, expression: exp.BitwiseLeftShift) -> str: +1710 return self.binary(expression, "<<") +1711 +1712 def bitwisenot_sql(self, expression: exp.BitwiseNot) -> str: +1713 return f"~{self.sql(expression, 'this')}" +1714 +1715 def bitwiseor_sql(self, expression: exp.BitwiseOr) -> str: +1716 return self.binary(expression, "|") +1717 +1718 def bitwiserightshift_sql(self, expression: exp.BitwiseRightShift) -> str: +1719 return self.binary(expression, ">>") +1720 +1721 def bitwisexor_sql(self, expression: exp.BitwiseXor) -> str: +1722 return self.binary(expression, "^") +1723 +1724 def cast_sql(self, expression: exp.Cast) -> str: +1725 return f"CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})" +1726 +1727 def currentdate_sql(self, expression: exp.CurrentDate) -> str: +1728 zone = self.sql(expression, "this") +1729 return f"CURRENT_DATE({zone})" if zone else "CURRENT_DATE" +1730 +1731 def collate_sql(self, expression: exp.Collate) -> str: +1732 return self.binary(expression, "COLLATE") +1733 +1734 def command_sql(self, expression: exp.Command) -> str: +1735 return f"{self.sql(expression, 'this').upper()} {expression.text('expression').strip()}" +1736 +1737 def comment_sql(self, expression: exp.Comment) -> str: +1738 this = self.sql(expression, "this") +1739 kind = expression.args["kind"] +1740 exists_sql = " IF EXISTS " if expression.args.get("exists") else " " +1741 expression_sql = self.sql(expression, "expression") +1742 return f"COMMENT{exists_sql}ON {kind} {this} IS {expression_sql}" +1743 +1744 def transaction_sql(self, expression: exp.Transaction) -> str: +1745 return "BEGIN" +1746 +1747 def commit_sql(self, expression: exp.Commit) -> str: +1748 chain = expression.args.get("chain") +1749 if chain is not None: +1750 chain = " AND CHAIN" if chain else " AND NO CHAIN" +1751 +1752 return f"COMMIT{chain or ''}" +1753 +1754 def rollback_sql(self, expression: exp.Rollback) -> str: +1755 savepoint = expression.args.get("savepoint") +1756 savepoint = f" TO {savepoint}" if savepoint else "" +1757 return f"ROLLBACK{savepoint}" +1758 +1759 def altercolumn_sql(self, expression: exp.AlterColumn) -> str: +1760 this = self.sql(expression, "this") +1761 +1762 dtype = self.sql(expression, "dtype") +1763 if dtype: +1764 collate = self.sql(expression, "collate") +1765 collate = f" COLLATE {collate}" if collate else "" +1766 using = self.sql(expression, "using") +1767 using = f" USING {using}" if using else "" +1768 return f"ALTER COLUMN {this} TYPE {dtype}{collate}{using}" +1769 +1770 default = self.sql(expression, "default") +1771 if default: +1772 return f"ALTER COLUMN {this} SET DEFAULT {default}" +1773 +1774 if not expression.args.get("drop"): +1775 self.unsupported("Unsupported ALTER COLUMN syntax") +1776 +1777 return f"ALTER COLUMN {this} DROP DEFAULT" 1778 -1779 def dpipe_sql(self, expression: exp.DPipe) -> str: -1780 return self.binary(expression, "||") -1781 -1782 def div_sql(self, expression: exp.Div) -> str: -1783 return self.binary(expression, "/") -1784 -1785 def overlaps_sql(self, expression: exp.Overlaps) -> str: -1786 return self.binary(expression, "OVERLAPS") -1787 -1788 def distance_sql(self, expression: exp.Distance) -> str: -1789 return self.binary(expression, "<->") -1790 -1791 def dot_sql(self, expression: exp.Dot) -> str: -1792 return f"{self.sql(expression, 'this')}.{self.sql(expression, 'expression')}" -1793 -1794 def eq_sql(self, expression: exp.EQ) -> str: -1795 return self.binary(expression, "=") -1796 -1797 def escape_sql(self, expression: exp.Escape) -> str: -1798 return self.binary(expression, "ESCAPE") -1799 -1800 def glob_sql(self, expression: exp.Glob) -> str: -1801 return self.binary(expression, "GLOB") +1779 def renametable_sql(self, expression: exp.RenameTable) -> str: +1780 this = self.sql(expression, "this") +1781 return f"RENAME TO {this}" +1782 +1783 def altertable_sql(self, expression: exp.AlterTable) -> str: +1784 actions = expression.args["actions"] +1785 +1786 if isinstance(actions[0], exp.ColumnDef): +1787 actions = self.expressions(expression, "actions", prefix="ADD COLUMN ") +1788 elif isinstance(actions[0], exp.Schema): +1789 actions = self.expressions(expression, "actions", prefix="ADD COLUMNS ") +1790 elif isinstance(actions[0], exp.Delete): +1791 actions = self.expressions(expression, "actions", flat=True) +1792 else: +1793 actions = self.expressions(expression, "actions") +1794 +1795 exists = " IF EXISTS" if expression.args.get("exists") else "" +1796 return f"ALTER TABLE{exists} {self.sql(expression, 'this')} {actions}" +1797 +1798 def droppartition_sql(self, expression: exp.DropPartition) -> str: +1799 expressions = self.expressions(expression) +1800 exists = " IF EXISTS " if expression.args.get("exists") else " " +1801 return f"DROP{exists}{expressions}" 1802 -1803 def gt_sql(self, expression: exp.GT) -> str: -1804 return self.binary(expression, ">") -1805 -1806 def gte_sql(self, expression: exp.GTE) -> str: -1807 return self.binary(expression, ">=") -1808 -1809 def ilike_sql(self, expression: exp.ILike) -> str: -1810 return self.binary(expression, "ILIKE") +1803 def addconstraint_sql(self, expression: exp.AddConstraint) -> str: +1804 this = self.sql(expression, "this") +1805 expression_ = self.sql(expression, "expression") +1806 add_constraint = f"ADD CONSTRAINT {this}" if this else "ADD" +1807 +1808 enforced = expression.args.get("enforced") +1809 if enforced is not None: +1810 return f"{add_constraint} CHECK ({expression_}){' ENFORCED' if enforced else ''}" 1811 -1812 def is_sql(self, expression: exp.Is) -> str: -1813 return self.binary(expression, "IS") -1814 -1815 def like_sql(self, expression: exp.Like) -> str: -1816 return self.binary(expression, "LIKE") +1812 return f"{add_constraint} {expression_}" +1813 +1814 def distinct_sql(self, expression: exp.Distinct) -> str: +1815 this = self.expressions(expression, flat=True) +1816 this = f" {this}" if this else "" 1817 -1818 def similarto_sql(self, expression: exp.SimilarTo) -> str: -1819 return self.binary(expression, "SIMILAR TO") -1820 -1821 def lt_sql(self, expression: exp.LT) -> str: -1822 return self.binary(expression, "<") -1823 -1824 def lte_sql(self, expression: exp.LTE) -> str: -1825 return self.binary(expression, "<=") -1826 -1827 def mod_sql(self, expression: exp.Mod) -> str: -1828 return self.binary(expression, "%") -1829 -1830 def mul_sql(self, expression: exp.Mul) -> str: -1831 return self.binary(expression, "*") -1832 -1833 def neq_sql(self, expression: exp.NEQ) -> str: -1834 return self.binary(expression, "<>") +1818 on = self.sql(expression, "on") +1819 on = f" ON {on}" if on else "" +1820 return f"DISTINCT{this}{on}" +1821 +1822 def ignorenulls_sql(self, expression: exp.IgnoreNulls) -> str: +1823 return f"{self.sql(expression, 'this')} IGNORE NULLS" +1824 +1825 def respectnulls_sql(self, expression: exp.RespectNulls) -> str: +1826 return f"{self.sql(expression, 'this')} RESPECT NULLS" +1827 +1828 def intdiv_sql(self, expression: exp.IntDiv) -> str: +1829 return self.sql( +1830 exp.Cast( +1831 this=exp.Div(this=expression.this, expression=expression.expression), +1832 to=exp.DataType(this=exp.DataType.Type.INT), +1833 ) +1834 ) 1835 -1836 def nullsafeeq_sql(self, expression: exp.NullSafeEQ) -> str: -1837 return self.binary(expression, "IS NOT DISTINCT FROM") +1836 def dpipe_sql(self, expression: exp.DPipe) -> str: +1837 return self.binary(expression, "||") 1838 -1839 def nullsafeneq_sql(self, expression: exp.NullSafeNEQ) -> str: -1840 return self.binary(expression, "IS DISTINCT FROM") +1839 def div_sql(self, expression: exp.Div) -> str: +1840 return self.binary(expression, "/") 1841 -1842 def or_sql(self, expression: exp.Or) -> str: -1843 return self.connector_sql(expression, "OR") +1842 def overlaps_sql(self, expression: exp.Overlaps) -> str: +1843 return self.binary(expression, "OVERLAPS") 1844 -1845 def slice_sql(self, expression: exp.Slice) -> str: -1846 return self.binary(expression, ":") +1845 def distance_sql(self, expression: exp.Distance) -> str: +1846 return self.binary(expression, "<->") 1847 -1848 def sub_sql(self, expression: exp.Sub) -> str: -1849 return self.binary(expression, "-") +1848 def dot_sql(self, expression: exp.Dot) -> str: +1849 return f"{self.sql(expression, 'this')}.{self.sql(expression, 'expression')}" 1850 -1851 def trycast_sql(self, expression: exp.TryCast) -> str: -1852 return f"TRY_CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})" +1851 def eq_sql(self, expression: exp.EQ) -> str: +1852 return self.binary(expression, "=") 1853 -1854 def use_sql(self, expression: exp.Use) -> str: -1855 kind = self.sql(expression, "kind") -1856 kind = f" {kind}" if kind else "" -1857 this = self.sql(expression, "this") -1858 this = f" {this}" if this else "" -1859 return f"USE{kind}{this}" -1860 -1861 def binary(self, expression: exp.Binary, op: str) -> str: -1862 return f"{self.sql(expression, 'this')} {op} {self.sql(expression, 'expression')}" -1863 -1864 def function_fallback_sql(self, expression: exp.Func) -> str: -1865 args = [] -1866 for arg_value in expression.args.values(): -1867 if isinstance(arg_value, list): -1868 for value in arg_value: -1869 args.append(value) -1870 else: -1871 args.append(arg_value) -1872 -1873 return self.func(expression.sql_name(), *args) +1854 def escape_sql(self, expression: exp.Escape) -> str: +1855 return self.binary(expression, "ESCAPE") +1856 +1857 def glob_sql(self, expression: exp.Glob) -> str: +1858 return self.binary(expression, "GLOB") +1859 +1860 def gt_sql(self, expression: exp.GT) -> str: +1861 return self.binary(expression, ">") +1862 +1863 def gte_sql(self, expression: exp.GTE) -> str: +1864 return self.binary(expression, ">=") +1865 +1866 def ilike_sql(self, expression: exp.ILike) -> str: +1867 return self.binary(expression, "ILIKE") +1868 +1869 def is_sql(self, expression: exp.Is) -> str: +1870 return self.binary(expression, "IS") +1871 +1872 def like_sql(self, expression: exp.Like) -> str: +1873 return self.binary(expression, "LIKE") 1874 -1875 def func(self, name: str, *args: t.Optional[exp.Expression | str]) -> str: -1876 return f"{self.normalize_func(name)}({self.format_args(*args)})" +1875 def similarto_sql(self, expression: exp.SimilarTo) -> str: +1876 return self.binary(expression, "SIMILAR TO") 1877 -1878 def format_args(self, *args: t.Optional[str | exp.Expression]) -> str: -1879 arg_sqls = tuple(self.sql(arg) for arg in args if arg is not None) -1880 if self.pretty and self.text_width(arg_sqls) > self._max_text_width: -1881 return self.indent("\n" + f",\n".join(arg_sqls) + "\n", skip_first=True, skip_last=True) -1882 return ", ".join(arg_sqls) +1878 def lt_sql(self, expression: exp.LT) -> str: +1879 return self.binary(expression, "<") +1880 +1881 def lte_sql(self, expression: exp.LTE) -> str: +1882 return self.binary(expression, "<=") 1883 -1884 def text_width(self, args: t.Iterable) -> int: -1885 return sum(len(arg) for arg in args) +1884 def mod_sql(self, expression: exp.Mod) -> str: +1885 return self.binary(expression, "%") 1886 -1887 def format_time(self, expression: exp.Expression) -> t.Optional[str]: -1888 return format_time(self.sql(expression, "format"), self.time_mapping, self.time_trie) +1887 def mul_sql(self, expression: exp.Mul) -> str: +1888 return self.binary(expression, "*") 1889 -1890 def expressions( -1891 self, -1892 expression: exp.Expression, -1893 key: t.Optional[str] = None, -1894 flat: bool = False, -1895 indent: bool = True, -1896 sep: str = ", ", -1897 prefix: str = "", -1898 ) -> str: -1899 expressions = expression.args.get(key or "expressions") -1900 -1901 if not expressions: -1902 return "" -1903 -1904 if flat: -1905 return sep.join(self.sql(e) for e in expressions) -1906 -1907 num_sqls = len(expressions) -1908 -1909 # These are calculated once in case we have the leading_comma / pretty option set, correspondingly -1910 pad = " " * self.pad -1911 stripped_sep = sep.strip() -1912 -1913 result_sqls = [] -1914 for i, e in enumerate(expressions): -1915 sql = self.sql(e, comment=False) -1916 comments = self.maybe_comment("", e) if isinstance(e, exp.Expression) else "" +1890 def neq_sql(self, expression: exp.NEQ) -> str: +1891 return self.binary(expression, "<>") +1892 +1893 def nullsafeeq_sql(self, expression: exp.NullSafeEQ) -> str: +1894 return self.binary(expression, "IS NOT DISTINCT FROM") +1895 +1896 def nullsafeneq_sql(self, expression: exp.NullSafeNEQ) -> str: +1897 return self.binary(expression, "IS DISTINCT FROM") +1898 +1899 def or_sql(self, expression: exp.Or) -> str: +1900 return self.connector_sql(expression, "OR") +1901 +1902 def slice_sql(self, expression: exp.Slice) -> str: +1903 return self.binary(expression, ":") +1904 +1905 def sub_sql(self, expression: exp.Sub) -> str: +1906 return self.binary(expression, "-") +1907 +1908 def trycast_sql(self, expression: exp.TryCast) -> str: +1909 return f"TRY_CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})" +1910 +1911 def use_sql(self, expression: exp.Use) -> str: +1912 kind = self.sql(expression, "kind") +1913 kind = f" {kind}" if kind else "" +1914 this = self.sql(expression, "this") +1915 this = f" {this}" if this else "" +1916 return f"USE{kind}{this}" 1917 -1918 if self.pretty: -1919 if self._leading_comma: -1920 result_sqls.append(f"{sep if i > 0 else pad}{prefix}{sql}{comments}") -1921 else: -1922 result_sqls.append( -1923 f"{prefix}{sql}{stripped_sep if i + 1 < num_sqls else ''}{comments}" -1924 ) -1925 else: -1926 result_sqls.append(f"{prefix}{sql}{comments}{sep if i + 1 < num_sqls else ''}") -1927 -1928 result_sql = "\n".join(result_sqls) if self.pretty else "".join(result_sqls) -1929 return self.indent(result_sql, skip_first=False) if indent else result_sql -1930 -1931 def op_expressions(self, op: str, expression: exp.Expression, flat: bool = False) -> str: -1932 flat = flat or isinstance(expression.parent, exp.Properties) -1933 expressions_sql = self.expressions(expression, flat=flat) -1934 if flat: -1935 return f"{op} {expressions_sql}" -1936 return f"{self.seg(op)}{self.sep() if expressions_sql else ''}{expressions_sql}" -1937 -1938 def naked_property(self, expression: exp.Property) -> str: -1939 property_name = exp.Properties.PROPERTY_TO_NAME.get(expression.__class__) -1940 if not property_name: -1941 self.unsupported(f"Unsupported property {expression.__class__.__name__}") -1942 return f"{property_name} {self.sql(expression, 'this')}" +1918 def binary(self, expression: exp.Binary, op: str) -> str: +1919 return f"{self.sql(expression, 'this')} {op} {self.sql(expression, 'expression')}" +1920 +1921 def function_fallback_sql(self, expression: exp.Func) -> str: +1922 args = [] +1923 for arg_value in expression.args.values(): +1924 if isinstance(arg_value, list): +1925 for value in arg_value: +1926 args.append(value) +1927 else: +1928 args.append(arg_value) +1929 +1930 return self.func(expression.sql_name(), *args) +1931 +1932 def func(self, name: str, *args: t.Optional[exp.Expression | str]) -> str: +1933 return f"{self.normalize_func(name)}({self.format_args(*args)})" +1934 +1935 def format_args(self, *args: t.Optional[str | exp.Expression]) -> str: +1936 arg_sqls = tuple(self.sql(arg) for arg in args if arg is not None) +1937 if self.pretty and self.text_width(arg_sqls) > self._max_text_width: +1938 return self.indent("\n" + f",\n".join(arg_sqls) + "\n", skip_first=True, skip_last=True) +1939 return ", ".join(arg_sqls) +1940 +1941 def text_width(self, args: t.Iterable) -> int: +1942 return sum(len(arg) for arg in args) 1943 -1944 def set_operation(self, expression: exp.Expression, op: str) -> str: -1945 this = self.sql(expression, "this") -1946 op = self.seg(op) -1947 return self.query_modifiers( -1948 expression, f"{this}{op}{self.sep()}{self.sql(expression, 'expression')}" -1949 ) -1950 -1951 def tag_sql(self, expression: exp.Tag) -> str: -1952 return f"{expression.args.get('prefix')}{self.sql(expression.this)}{expression.args.get('postfix')}" -1953 -1954 def token_sql(self, token_type: TokenType) -> str: -1955 return self.TOKEN_MAPPING.get(token_type, token_type.name) -1956 -1957 def userdefinedfunction_sql(self, expression: exp.UserDefinedFunction) -> str: -1958 this = self.sql(expression, "this") -1959 expressions = self.no_identify(self.expressions, expression) -1960 expressions = ( -1961 self.wrap(expressions) if expression.args.get("wrapped") else f" {expressions}" -1962 ) -1963 return f"{this}{expressions}" -1964 -1965 def joinhint_sql(self, expression: exp.JoinHint) -> str: -1966 this = self.sql(expression, "this") -1967 expressions = self.expressions(expression, flat=True) -1968 return f"{this}({expressions})" +1944 def format_time(self, expression: exp.Expression) -> t.Optional[str]: +1945 return format_time(self.sql(expression, "format"), self.time_mapping, self.time_trie) +1946 +1947 def expressions( +1948 self, +1949 expression: exp.Expression, +1950 key: t.Optional[str] = None, +1951 flat: bool = False, +1952 indent: bool = True, +1953 sep: str = ", ", +1954 prefix: str = "", +1955 ) -> str: +1956 expressions = expression.args.get(key or "expressions") +1957 +1958 if not expressions: +1959 return "" +1960 +1961 if flat: +1962 return sep.join(self.sql(e) for e in expressions) +1963 +1964 num_sqls = len(expressions) +1965 +1966 # These are calculated once in case we have the leading_comma / pretty option set, correspondingly +1967 pad = " " * self.pad +1968 stripped_sep = sep.strip() 1969 -1970 def kwarg_sql(self, expression: exp.Kwarg) -> str: -1971 return self.binary(expression, "=>") -1972 -1973 def when_sql(self, expression: exp.When) -> str: -1974 matched = "MATCHED" if expression.args["matched"] else "NOT MATCHED" -1975 source = " BY SOURCE" if self.MATCHED_BY_SOURCE and expression.args.get("source") else "" -1976 condition = self.sql(expression, "condition") -1977 condition = f" AND {condition}" if condition else "" -1978 -1979 then_expression = expression.args.get("then") -1980 if isinstance(then_expression, exp.Insert): -1981 then = f"INSERT {self.sql(then_expression, 'this')}" -1982 if "expression" in then_expression.args: -1983 then += f" VALUES {self.sql(then_expression, 'expression')}" -1984 elif isinstance(then_expression, exp.Update): -1985 if isinstance(then_expression.args.get("expressions"), exp.Star): -1986 then = f"UPDATE {self.sql(then_expression, 'expressions')}" -1987 else: -1988 then = f"UPDATE SET {self.expressions(then_expression, flat=True)}" -1989 else: -1990 then = self.sql(then_expression) -1991 return f"WHEN {matched}{source}{condition} THEN {then}" -1992 -1993 def merge_sql(self, expression: exp.Merge) -> str: -1994 this = self.sql(expression, "this") -1995 using = f"USING {self.sql(expression, 'using')}" -1996 on = f"ON {self.sql(expression, 'on')}" -1997 return f"MERGE INTO {this} {using} {on} {self.expressions(expression, sep=' ')}" -1998 -1999 def tochar_sql(self, expression: exp.ToChar) -> str: -2000 if expression.args.get("format"): -2001 self.unsupported("Format argument unsupported for TO_CHAR/TO_VARCHAR function") -2002 -2003 return self.sql(exp.cast(expression.this, "text")) +1970 result_sqls = [] +1971 for i, e in enumerate(expressions): +1972 sql = self.sql(e, comment=False) +1973 comments = self.maybe_comment("", e) if isinstance(e, exp.Expression) else "" +1974 +1975 if self.pretty: +1976 if self._leading_comma: +1977 result_sqls.append(f"{sep if i > 0 else pad}{prefix}{sql}{comments}") +1978 else: +1979 result_sqls.append( +1980 f"{prefix}{sql}{stripped_sep if i + 1 < num_sqls else ''}{comments}" +1981 ) +1982 else: +1983 result_sqls.append(f"{prefix}{sql}{comments}{sep if i + 1 < num_sqls else ''}") +1984 +1985 result_sql = "\n".join(result_sqls) if self.pretty else "".join(result_sqls) +1986 return self.indent(result_sql, skip_first=False) if indent else result_sql +1987 +1988 def op_expressions(self, op: str, expression: exp.Expression, flat: bool = False) -> str: +1989 flat = flat or isinstance(expression.parent, exp.Properties) +1990 expressions_sql = self.expressions(expression, flat=flat) +1991 if flat: +1992 return f"{op} {expressions_sql}" +1993 return f"{self.seg(op)}{self.sep() if expressions_sql else ''}{expressions_sql}" +1994 +1995 def naked_property(self, expression: exp.Property) -> str: +1996 property_name = exp.Properties.PROPERTY_TO_NAME.get(expression.__class__) +1997 if not property_name: +1998 self.unsupported(f"Unsupported property {expression.__class__.__name__}") +1999 return f"{property_name} {self.sql(expression, 'this')}" +2000 +2001 def set_operation(self, expression: exp.Expression, op: str) -> str: +2002 this = self.sql(expression, "this") +2003 op = self.seg(op) +2004 return self.query_modifiers( +2005 expression, f"{this}{op}{self.sep()}{self.sql(expression, 'expression')}" +2006 ) +2007 +2008 def tag_sql(self, expression: exp.Tag) -> str: +2009 return f"{expression.args.get('prefix')}{self.sql(expression.this)}{expression.args.get('postfix')}" +2010 +2011 def token_sql(self, token_type: TokenType) -> str: +2012 return self.TOKEN_MAPPING.get(token_type, token_type.name) +2013 +2014 def userdefinedfunction_sql(self, expression: exp.UserDefinedFunction) -> str: +2015 this = self.sql(expression, "this") +2016 expressions = self.no_identify(self.expressions, expression) +2017 expressions = ( +2018 self.wrap(expressions) if expression.args.get("wrapped") else f" {expressions}" +2019 ) +2020 return f"{this}{expressions}" +2021 +2022 def joinhint_sql(self, expression: exp.JoinHint) -> str: +2023 this = self.sql(expression, "this") +2024 expressions = self.expressions(expression, flat=True) +2025 return f"{this}({expressions})" +2026 +2027 def kwarg_sql(self, expression: exp.Kwarg) -> str: +2028 return self.binary(expression, "=>") +2029 +2030 def when_sql(self, expression: exp.When) -> str: +2031 matched = "MATCHED" if expression.args["matched"] else "NOT MATCHED" +2032 source = " BY SOURCE" if self.MATCHED_BY_SOURCE and expression.args.get("source") else "" +2033 condition = self.sql(expression, "condition") +2034 condition = f" AND {condition}" if condition else "" +2035 +2036 then_expression = expression.args.get("then") +2037 if isinstance(then_expression, exp.Insert): +2038 then = f"INSERT {self.sql(then_expression, 'this')}" +2039 if "expression" in then_expression.args: +2040 then += f" VALUES {self.sql(then_expression, 'expression')}" +2041 elif isinstance(then_expression, exp.Update): +2042 if isinstance(then_expression.args.get("expressions"), exp.Star): +2043 then = f"UPDATE {self.sql(then_expression, 'expressions')}" +2044 else: +2045 then = f"UPDATE SET {self.expressions(then_expression, flat=True)}" +2046 else: +2047 then = self.sql(then_expression) +2048 return f"WHEN {matched}{source}{condition} THEN {then}" +2049 +2050 def merge_sql(self, expression: exp.Merge) -> str: +2051 this = self.sql(expression, "this") +2052 using = f"USING {self.sql(expression, 'using')}" +2053 on = f"ON {self.sql(expression, 'on')}" +2054 return f"MERGE INTO {this} {using} {on} {self.expressions(expression, sep=' ')}" +2055 +2056 def tochar_sql(self, expression: exp.ToChar) -> str: +2057 if expression.args.get("format"): +2058 self.unsupported("Format argument unsupported for TO_CHAR/TO_VARCHAR function") +2059 +2060 return self.sql(exp.cast(expression.this, "text"))
        @@ -4763,60 +4886,61 @@ Default: True -
        215    def __init__(
        -216        self,
        -217        time_mapping=None,
        -218        time_trie=None,
        -219        pretty=None,
        -220        quote_start=None,
        -221        quote_end=None,
        -222        identifier_start=None,
        -223        identifier_end=None,
        -224        identify=False,
        -225        normalize=False,
        -226        string_escape=None,
        -227        identifier_escape=None,
        -228        pad=2,
        -229        indent=2,
        -230        index_offset=0,
        -231        unnest_column_only=False,
        -232        alias_post_tablesample=False,
        -233        normalize_functions="upper",
        -234        unsupported_level=ErrorLevel.WARN,
        -235        null_ordering=None,
        -236        max_unsupported=3,
        -237        leading_comma=False,
        -238        max_text_width=80,
        -239        comments=True,
        -240    ):
        -241        import sqlglot
        -242
        -243        self.time_mapping = time_mapping or {}
        -244        self.time_trie = time_trie
        -245        self.pretty = pretty if pretty is not None else sqlglot.pretty
        -246        self.quote_start = quote_start or "'"
        -247        self.quote_end = quote_end or "'"
        -248        self.identifier_start = identifier_start or '"'
        -249        self.identifier_end = identifier_end or '"'
        -250        self.identify = identify
        -251        self.normalize = normalize
        -252        self.string_escape = string_escape or "'"
        -253        self.identifier_escape = identifier_escape or '"'
        -254        self.pad = pad
        -255        self.index_offset = index_offset
        -256        self.unnest_column_only = unnest_column_only
        -257        self.alias_post_tablesample = alias_post_tablesample
        -258        self.normalize_functions = normalize_functions
        -259        self.unsupported_level = unsupported_level
        -260        self.unsupported_messages = []
        -261        self.max_unsupported = max_unsupported
        -262        self.null_ordering = null_ordering
        -263        self._indent = indent
        -264        self._escaped_quote_end = self.string_escape + self.quote_end
        -265        self._escaped_identifier_end = self.identifier_escape + self.identifier_end
        -266        self._leading_comma = leading_comma
        -267        self._max_text_width = max_text_width
        -268        self._comments = comments
        +            
        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
         
        @@ -4828,44 +4952,53 @@ Default: True
        def - generate(self, expression: Optional[sqlglot.expressions.Expression]) -> str: + generate( self, expression: Optional[sqlglot.expressions.Expression], cache: Optional[Dict[int, str]] = None) -> str:
        -
        270    def generate(self, expression: t.Optional[exp.Expression]) -> str:
        -271        """
        -272        Generates a SQL string by interpreting the given syntax tree.
        -273
        -274        Args
        -275            expression: the syntax tree.
        -276
        -277        Returns
        -278            the SQL string.
        -279        """
        -280        self.unsupported_messages = []
        -281        sql = self.sql(expression).strip()
        -282
        -283        if self.unsupported_level == ErrorLevel.IGNORE:
        -284            return sql
        -285
        -286        if self.unsupported_level == ErrorLevel.WARN:
        -287            for msg in self.unsupported_messages:
        -288                logger.warning(msg)
        -289        elif self.unsupported_level == ErrorLevel.RAISE and self.unsupported_messages:
        -290            raise UnsupportedError(concat_messages(self.unsupported_messages, self.max_unsupported))
        -291
        -292        if self.pretty:
        -293            sql = sql.replace(self.SENTINEL_LINE_BREAK, "\n")
        -294        return sql
        +            
        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
         

        Generates a SQL string by interpreting the given syntax tree.

        Args - expression: the syntax tree.

        + expression: the syntax tree. + 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.

        Returns the SQL string.

        @@ -4884,10 +5017,10 @@ Default: True
        -
        296    def unsupported(self, message: str) -> None:
        -297        if self.unsupported_level == ErrorLevel.IMMEDIATE:
        -298            raise UnsupportedError(message)
        -299        self.unsupported_messages.append(message)
        +            
        310    def unsupported(self, message: str) -> None:
        +311        if self.unsupported_level == ErrorLevel.IMMEDIATE:
        +312            raise UnsupportedError(message)
        +313        self.unsupported_messages.append(message)
         
        @@ -4905,8 +5038,8 @@ Default: True
        -
        301    def sep(self, sep: str = " ") -> str:
        -302        return f"{sep.strip()}\n" if self.pretty else sep
        +            
        315    def sep(self, sep: str = " ") -> str:
        +316        return f"{sep.strip()}\n" if self.pretty else sep
         
        @@ -4924,8 +5057,8 @@ Default: True
        -
        304    def seg(self, sql: str, sep: str = " ") -> str:
        -305        return f"{self.sep(sep)}{sql}"
        +            
        318    def seg(self, sql: str, sep: str = " ") -> str:
        +319        return f"{self.sep(sep)}{sql}"
         
        @@ -4943,10 +5076,10 @@ Default: True
        -
        307    def pad_comment(self, comment: str) -> str:
        -308        comment = " " + comment if comment[0].strip() else comment
        -309        comment = comment + " " if comment[-1].strip() else comment
        -310        return comment
        +            
        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
         
        @@ -4964,24 +5097,24 @@ Default: True
        -
        312    def maybe_comment(self, sql: str, expression: exp.Expression) -> str:
        -313        comments = expression.comments if self._comments else None
        -314
        -315        if not comments:
        -316            return sql
        -317
        -318        sep = "\n" if self.pretty else " "
        -319        comments_sql = sep.join(
        -320            f"/*{self.pad_comment(comment)}*/" for comment in comments if comment
        -321        )
        -322
        -323        if not comments_sql:
        -324            return sql
        -325
        -326        if isinstance(expression, self.WITH_SEPARATED_COMMENTS):
        -327            return f"{comments_sql}{self.sep()}{sql}"
        +            
        326    def maybe_comment(self, sql: str, expression: exp.Expression) -> str:
        +327        comments = expression.comments if self._comments else None
         328
        -329        return f"{sql} {comments_sql}"
        +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}"
         
        @@ -4999,15 +5132,15 @@ Default: True
        -
        331    def wrap(self, expression: exp.Expression | str) -> str:
        -332        this_sql = self.indent(
        -333            self.sql(expression)
        -334            if isinstance(expression, (exp.Select, exp.Union))
        -335            else self.sql(expression, "this"),
        -336            level=1,
        -337            pad=0,
        -338        )
        -339        return f"({self.sep('')}{this_sql}{self.seg(')', sep='')}"
        +            
        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='')}"
         
        @@ -5025,12 +5158,12 @@ Default: True
        -
        341    def no_identify(self, func: t.Callable[..., str], *args, **kwargs) -> str:
        -342        original = self.identify
        -343        self.identify = False
        -344        result = func(*args, **kwargs)
        -345        self.identify = original
        -346        return result
        +            
        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
         
        @@ -5048,12 +5181,12 @@ Default: True
        -
        348    def normalize_func(self, name: str) -> str:
        -349        if self.normalize_functions == "upper":
        -350            return name.upper()
        -351        if self.normalize_functions == "lower":
        -352            return name.lower()
        -353        return name
        +            
        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
         
        @@ -5071,26 +5204,26 @@ Default: True
        -
        355    def indent(
        -356        self,
        -357        sql: str,
        -358        level: int = 0,
        -359        pad: t.Optional[int] = None,
        -360        skip_first: bool = False,
        -361        skip_last: bool = False,
        -362    ) -> str:
        -363        if not self.pretty:
        -364            return sql
        -365
        -366        pad = self.pad if pad is None else pad
        -367        lines = sql.split("\n")
        -368
        -369        return "\n".join(
        -370            line
        -371            if (skip_first and i == 0) or (skip_last and i == len(lines) - 1)
        -372            else f"{' ' * (level * self._indent + pad)}{line}"
        -373            for i, line in enumerate(lines)
        -374        )
        +            
        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        )
         
        @@ -5108,42 +5241,52 @@ Default: True
        -
        376    def sql(
        -377        self,
        -378        expression: t.Optional[str | exp.Expression],
        -379        key: t.Optional[str] = None,
        -380        comment: bool = True,
        -381    ) -> str:
        -382        if not expression:
        -383            return ""
        -384
        -385        if isinstance(expression, str):
        -386            return expression
        -387
        -388        if key:
        -389            return self.sql(expression.args.get(key))
        -390
        -391        transform = self.TRANSFORMS.get(expression.__class__)
        -392
        -393        if callable(transform):
        -394            sql = transform(self, expression)
        -395        elif transform:
        -396            sql = transform
        -397        elif isinstance(expression, exp.Expression):
        -398            exp_handler_name = f"{expression.key}_sql"
        -399
        -400            if hasattr(self, exp_handler_name):
        -401                sql = getattr(self, exp_handler_name)(expression)
        -402            elif isinstance(expression, exp.Func):
        -403                sql = self.function_fallback_sql(expression)
        -404            elif isinstance(expression, exp.Property):
        -405                sql = self.property_sql(expression)
        -406            else:
        -407                raise ValueError(f"Unsupported expression type {expression.__class__.__name__}")
        -408        else:
        -409            raise ValueError(f"Expected an Expression. Received {type(expression)}: {expression}")
        +            
        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        return self.maybe_comment(sql, expression) if self._comments and comment else sql
        +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
         
        @@ -5161,10 +5304,10 @@ Default: True
        -
        413    def uncache_sql(self, expression: exp.Uncache) -> str:
        -414        table = self.sql(expression, "this")
        -415        exists_sql = " IF EXISTS" if expression.args.get("exists") else ""
        -416        return f"UNCACHE TABLE{exists_sql} {table}"
        +            
        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}"
         
        @@ -5182,15 +5325,15 @@ Default: True
        -
        418    def cache_sql(self, expression: exp.Cache) -> str:
        -419        lazy = " LAZY" if expression.args.get("lazy") else ""
        -420        table = self.sql(expression, "this")
        -421        options = expression.args.get("options")
        -422        options = f" OPTIONS({self.sql(options[0])} = {self.sql(options[1])})" if options else ""
        -423        sql = self.sql(expression, "expression")
        -424        sql = f" AS{self.sep()}{sql}" if sql else ""
        -425        sql = f"CACHE{lazy} TABLE {table}{options}{sql}"
        -426        return self.prepend_ctes(expression, sql)
        +            
        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)
         
        @@ -5208,11 +5351,11 @@ Default: True
        -
        428    def characterset_sql(self, expression: exp.CharacterSet) -> str:
        -429        if isinstance(expression.parent, exp.Cast):
        -430            return f"CHAR CHARACTER SET {self.sql(expression, 'this')}"
        -431        default = "DEFAULT " if expression.args.get("default") else ""
        -432        return f"{default}CHARACTER SET={self.sql(expression, 'this')}"
        +            
        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')}"
         
        @@ -5230,17 +5373,17 @@ Default: True
        -
        434    def column_sql(self, expression: exp.Column) -> str:
        -435        return ".".join(
        -436            self.sql(part)
        -437            for part in (
        -438                expression.args.get("catalog"),
        -439                expression.args.get("db"),
        -440                expression.args.get("table"),
        -441                expression.args.get("this"),
        -442            )
        -443            if part
        -444        )
        +            
        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        )
         
        @@ -5258,15 +5401,15 @@ Default: True
        -
        446    def columndef_sql(self, expression: exp.ColumnDef) -> str:
        -447        column = self.sql(expression, "this")
        -448        kind = self.sql(expression, "kind")
        -449        constraints = self.expressions(expression, key="constraints", sep=" ", flat=True)
        -450        exists = "IF NOT EXISTS " if expression.args.get("exists") else ""
        -451        kind = f" {kind}" if kind else ""
        -452        constraints = f" {constraints}" if constraints else ""
        -453
        -454        return f"{exists}{column}{kind}{constraints}"
        +            
        470    def columndef_sql(self, expression: exp.ColumnDef) -> str:
        +471        column = self.sql(expression, "this")
        +472        kind = self.sql(expression, "kind")
        +473        constraints = self.expressions(expression, key="constraints", sep=" ", flat=True)
        +474        exists = "IF NOT EXISTS " if expression.args.get("exists") else ""
        +475        kind = f" {kind}" if kind else ""
        +476        constraints = f" {constraints}" if constraints else ""
        +477
        +478        return f"{exists}{column}{kind}{constraints}"
         
        @@ -5284,10 +5427,10 @@ Default: True
        -
        456    def columnconstraint_sql(self, expression: exp.ColumnConstraint) -> str:
        -457        this = self.sql(expression, "this")
        -458        kind_sql = self.sql(expression, "kind")
        -459        return f"CONSTRAINT {this} {kind_sql}" if this else kind_sql
        +            
        480    def columnconstraint_sql(self, expression: exp.ColumnConstraint) -> str:
        +481        this = self.sql(expression, "this")
        +482        kind_sql = self.sql(expression, "kind")
        +483        return f"CONSTRAINT {this} {kind_sql}" if this else kind_sql
         
        @@ -5305,8 +5448,8 @@ Default: True
        -
        461    def autoincrementcolumnconstraint_sql(self, _) -> str:
        -462        return self.token_sql(TokenType.AUTO_INCREMENT)
        +            
        485    def autoincrementcolumnconstraint_sql(self, _) -> str:
        +486        return self.token_sql(TokenType.AUTO_INCREMENT)
         
        @@ -5324,13 +5467,13 @@ Default: True
        -
        464    def compresscolumnconstraint_sql(self, expression: exp.CompressColumnConstraint) -> str:
        -465        if isinstance(expression.this, list):
        -466            this = self.wrap(self.expressions(expression, key="this", flat=True))
        -467        else:
        -468            this = self.sql(expression, "this")
        -469
        -470        return f"COMPRESS {this}"
        +            
        488    def compresscolumnconstraint_sql(self, expression: exp.CompressColumnConstraint) -> str:
        +489        if isinstance(expression.this, list):
        +490            this = self.wrap(self.expressions(expression, key="this", flat=True))
        +491        else:
        +492            this = self.sql(expression, "this")
        +493
        +494        return f"COMPRESS {this}"
         
        @@ -5348,30 +5491,30 @@ Default: True
        -
        472    def generatedasidentitycolumnconstraint_sql(
        -473        self, expression: exp.GeneratedAsIdentityColumnConstraint
        -474    ) -> str:
        -475        this = ""
        -476        if expression.this is not None:
        -477            this = " ALWAYS " if expression.this else " BY DEFAULT "
        -478        start = expression.args.get("start")
        -479        start = f"START WITH {start}" if start else ""
        -480        increment = expression.args.get("increment")
        -481        increment = f" INCREMENT BY {increment}" if increment else ""
        -482        minvalue = expression.args.get("minvalue")
        -483        minvalue = f" MINVALUE {minvalue}" if minvalue else ""
        -484        maxvalue = expression.args.get("maxvalue")
        -485        maxvalue = f" MAXVALUE {maxvalue}" if maxvalue else ""
        -486        cycle = expression.args.get("cycle")
        -487        cycle_sql = ""
        -488        if cycle is not None:
        -489            cycle_sql = f"{' NO' if not cycle else ''} CYCLE"
        -490            cycle_sql = cycle_sql.strip() if not start and not increment else cycle_sql
        -491        sequence_opts = ""
        -492        if start or increment or cycle_sql:
        -493            sequence_opts = f"{start}{increment}{minvalue}{maxvalue}{cycle_sql}"
        -494            sequence_opts = f" ({sequence_opts.strip()})"
        -495        return f"GENERATED{this}AS IDENTITY{sequence_opts}"
        +            
        496    def generatedasidentitycolumnconstraint_sql(
        +497        self, expression: exp.GeneratedAsIdentityColumnConstraint
        +498    ) -> str:
        +499        this = ""
        +500        if expression.this is not None:
        +501            this = " ALWAYS " if expression.this else " BY DEFAULT "
        +502        start = expression.args.get("start")
        +503        start = f"START WITH {start}" if start else ""
        +504        increment = expression.args.get("increment")
        +505        increment = f" INCREMENT BY {increment}" if increment else ""
        +506        minvalue = expression.args.get("minvalue")
        +507        minvalue = f" MINVALUE {minvalue}" if minvalue else ""
        +508        maxvalue = expression.args.get("maxvalue")
        +509        maxvalue = f" MAXVALUE {maxvalue}" if maxvalue else ""
        +510        cycle = expression.args.get("cycle")
        +511        cycle_sql = ""
        +512        if cycle is not None:
        +513            cycle_sql = f"{' NO' if not cycle else ''} CYCLE"
        +514            cycle_sql = cycle_sql.strip() if not start and not increment else cycle_sql
        +515        sequence_opts = ""
        +516        if start or increment or cycle_sql:
        +517            sequence_opts = f"{start}{increment}{minvalue}{maxvalue}{cycle_sql}"
        +518            sequence_opts = f" ({sequence_opts.strip()})"
        +519        return f"GENERATED{this}AS IDENTITY{sequence_opts}"
         
        @@ -5389,8 +5532,8 @@ Default: True
        -
        497    def notnullcolumnconstraint_sql(self, expression: exp.NotNullColumnConstraint) -> str:
        -498        return f"{'' if expression.args.get('allow_null') else 'NOT '}NULL"
        +            
        521    def notnullcolumnconstraint_sql(self, expression: exp.NotNullColumnConstraint) -> str:
        +522        return f"{'' if expression.args.get('allow_null') else 'NOT '}NULL"
         
        @@ -5408,11 +5551,11 @@ Default: True
        -
        500    def primarykeycolumnconstraint_sql(self, expression: exp.PrimaryKeyColumnConstraint) -> str:
        -501        desc = expression.args.get("desc")
        -502        if desc is not None:
        -503            return f"PRIMARY KEY{' DESC' if desc else ' ASC'}"
        -504        return f"PRIMARY KEY"
        +            
        524    def primarykeycolumnconstraint_sql(self, expression: exp.PrimaryKeyColumnConstraint) -> str:
        +525        desc = expression.args.get("desc")
        +526        if desc is not None:
        +527            return f"PRIMARY KEY{' DESC' if desc else ' ASC'}"
        +528        return f"PRIMARY KEY"
         
        @@ -5430,8 +5573,8 @@ Default: True
        -
        506    def uniquecolumnconstraint_sql(self, _) -> str:
        -507        return "UNIQUE"
        +            
        530    def uniquecolumnconstraint_sql(self, _) -> str:
        +531        return "UNIQUE"
         
        @@ -5449,121 +5592,121 @@ Default: True
        -
        509    def create_sql(self, expression: exp.Create) -> str:
        -510        kind = self.sql(expression, "kind").upper()
        -511        properties = expression.args.get("properties")
        -512        properties_exp = expression.copy()
        -513        properties_locs = self.locate_properties(properties) if properties else {}
        -514        if properties_locs.get(exp.Properties.Location.POST_SCHEMA) or properties_locs.get(
        -515            exp.Properties.Location.POST_WITH
        -516        ):
        -517            properties_exp.set(
        -518                "properties",
        -519                exp.Properties(
        -520                    expressions=[
        -521                        *properties_locs[exp.Properties.Location.POST_SCHEMA],
        -522                        *properties_locs[exp.Properties.Location.POST_WITH],
        -523                    ]
        -524                ),
        -525            )
        -526        if kind == "TABLE" and properties_locs.get(exp.Properties.Location.POST_NAME):
        -527            this_name = self.sql(expression.this, "this")
        -528            this_properties = self.properties(
        -529                exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_NAME]),
        -530                wrapped=False,
        -531            )
        -532            this_schema = f"({self.expressions(expression.this)})"
        -533            this = f"{this_name}, {this_properties} {this_schema}"
        -534            properties_sql = ""
        -535        else:
        -536            this = self.sql(expression, "this")
        -537            properties_sql = self.sql(properties_exp, "properties")
        -538        begin = " BEGIN" if expression.args.get("begin") else ""
        -539        expression_sql = self.sql(expression, "expression")
        -540        if expression_sql:
        -541            expression_sql = f"{begin}{self.sep()}{expression_sql}"
        -542
        -543            if self.CREATE_FUNCTION_RETURN_AS or not isinstance(expression.expression, exp.Return):
        -544                if properties_locs.get(exp.Properties.Location.POST_ALIAS):
        -545                    postalias_props_sql = self.properties(
        -546                        exp.Properties(
        -547                            expressions=properties_locs[exp.Properties.Location.POST_ALIAS]
        -548                        ),
        -549                        wrapped=False,
        -550                    )
        -551                    expression_sql = f" AS {postalias_props_sql}{expression_sql}"
        -552                else:
        -553                    expression_sql = f" AS{expression_sql}"
        -554
        -555        postindex_props_sql = ""
        -556        if properties_locs.get(exp.Properties.Location.POST_INDEX):
        -557            postindex_props_sql = self.properties(
        -558                exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_INDEX]),
        -559                wrapped=False,
        -560                prefix=" ",
        -561            )
        -562
        -563        indexes = expression.args.get("indexes")
        -564        if indexes:
        -565            indexes_sql: t.List[str] = []
        -566            for index in indexes:
        -567                ind_unique = " UNIQUE" if index.args.get("unique") else ""
        -568                ind_primary = " PRIMARY" if index.args.get("primary") else ""
        -569                ind_amp = " AMP" if index.args.get("amp") else ""
        -570                ind_name = f" {index.name}" if index.name else ""
        -571                ind_columns = (
        -572                    f' ({self.expressions(index, key="columns", flat=True)})'
        -573                    if index.args.get("columns")
        -574                    else ""
        -575                )
        -576                ind_sql = f"{ind_unique}{ind_primary}{ind_amp} INDEX{ind_name}{ind_columns}"
        -577
        -578                if indexes_sql:
        -579                    indexes_sql.append(ind_sql)
        -580                else:
        -581                    indexes_sql.append(
        -582                        f"{ind_sql}{postindex_props_sql}"
        -583                        if index.args.get("primary")
        -584                        else f"{postindex_props_sql}{ind_sql}"
        -585                    )
        +            
        533    def create_sql(self, expression: exp.Create) -> str:
        +534        kind = self.sql(expression, "kind").upper()
        +535        properties = expression.args.get("properties")
        +536        properties_exp = expression.copy()
        +537        properties_locs = self.locate_properties(properties) if properties else {}
        +538        if properties_locs.get(exp.Properties.Location.POST_SCHEMA) or properties_locs.get(
        +539            exp.Properties.Location.POST_WITH
        +540        ):
        +541            properties_exp.set(
        +542                "properties",
        +543                exp.Properties(
        +544                    expressions=[
        +545                        *properties_locs[exp.Properties.Location.POST_SCHEMA],
        +546                        *properties_locs[exp.Properties.Location.POST_WITH],
        +547                    ]
        +548                ),
        +549            )
        +550        if kind == "TABLE" and properties_locs.get(exp.Properties.Location.POST_NAME):
        +551            this_name = self.sql(expression.this, "this")
        +552            this_properties = self.properties(
        +553                exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_NAME]),
        +554                wrapped=False,
        +555            )
        +556            this_schema = f"({self.expressions(expression.this)})"
        +557            this = f"{this_name}, {this_properties} {this_schema}"
        +558            properties_sql = ""
        +559        else:
        +560            this = self.sql(expression, "this")
        +561            properties_sql = self.sql(properties_exp, "properties")
        +562        begin = " BEGIN" if expression.args.get("begin") else ""
        +563        expression_sql = self.sql(expression, "expression")
        +564        if expression_sql:
        +565            expression_sql = f"{begin}{self.sep()}{expression_sql}"
        +566
        +567            if self.CREATE_FUNCTION_RETURN_AS or not isinstance(expression.expression, exp.Return):
        +568                if properties_locs.get(exp.Properties.Location.POST_ALIAS):
        +569                    postalias_props_sql = self.properties(
        +570                        exp.Properties(
        +571                            expressions=properties_locs[exp.Properties.Location.POST_ALIAS]
        +572                        ),
        +573                        wrapped=False,
        +574                    )
        +575                    expression_sql = f" AS {postalias_props_sql}{expression_sql}"
        +576                else:
        +577                    expression_sql = f" AS{expression_sql}"
        +578
        +579        postindex_props_sql = ""
        +580        if properties_locs.get(exp.Properties.Location.POST_INDEX):
        +581            postindex_props_sql = self.properties(
        +582                exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_INDEX]),
        +583                wrapped=False,
        +584                prefix=" ",
        +585            )
         586
        -587            index_sql = "".join(indexes_sql)
        -588        else:
        -589            index_sql = postindex_props_sql
        -590
        -591        replace = " OR REPLACE" if expression.args.get("replace") else ""
        -592        unique = " UNIQUE" if expression.args.get("unique") else ""
        -593        volatile = " VOLATILE" if expression.args.get("volatile") else ""
        -594
        -595        postcreate_props_sql = ""
        -596        if properties_locs.get(exp.Properties.Location.POST_CREATE):
        -597            postcreate_props_sql = self.properties(
        -598                exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_CREATE]),
        -599                sep=" ",
        -600                prefix=" ",
        -601                wrapped=False,
        -602            )
        -603
        -604        modifiers = "".join((replace, unique, volatile, postcreate_props_sql))
        -605
        -606        postexpression_props_sql = ""
        -607        if properties_locs.get(exp.Properties.Location.POST_EXPRESSION):
        -608            postexpression_props_sql = self.properties(
        -609                exp.Properties(
        -610                    expressions=properties_locs[exp.Properties.Location.POST_EXPRESSION]
        -611                ),
        -612                sep=" ",
        -613                prefix=" ",
        -614                wrapped=False,
        -615            )
        -616
        -617        exists_sql = " IF NOT EXISTS" if expression.args.get("exists") else ""
        -618        no_schema_binding = (
        -619            " WITH NO SCHEMA BINDING" if expression.args.get("no_schema_binding") else ""
        -620        )
        -621
        -622        expression_sql = f"CREATE{modifiers} {kind}{exists_sql} {this}{properties_sql}{expression_sql}{postexpression_props_sql}{index_sql}{no_schema_binding}"
        -623        return self.prepend_ctes(expression, expression_sql)
        +587        indexes = expression.args.get("indexes")
        +588        if indexes:
        +589            indexes_sql: t.List[str] = []
        +590            for index in indexes:
        +591                ind_unique = " UNIQUE" if index.args.get("unique") else ""
        +592                ind_primary = " PRIMARY" if index.args.get("primary") else ""
        +593                ind_amp = " AMP" if index.args.get("amp") else ""
        +594                ind_name = f" {index.name}" if index.name else ""
        +595                ind_columns = (
        +596                    f' ({self.expressions(index, key="columns", flat=True)})'
        +597                    if index.args.get("columns")
        +598                    else ""
        +599                )
        +600                ind_sql = f"{ind_unique}{ind_primary}{ind_amp} INDEX{ind_name}{ind_columns}"
        +601
        +602                if indexes_sql:
        +603                    indexes_sql.append(ind_sql)
        +604                else:
        +605                    indexes_sql.append(
        +606                        f"{ind_sql}{postindex_props_sql}"
        +607                        if index.args.get("primary")
        +608                        else f"{postindex_props_sql}{ind_sql}"
        +609                    )
        +610
        +611            index_sql = "".join(indexes_sql)
        +612        else:
        +613            index_sql = postindex_props_sql
        +614
        +615        replace = " OR REPLACE" if expression.args.get("replace") else ""
        +616        unique = " UNIQUE" if expression.args.get("unique") else ""
        +617        volatile = " VOLATILE" if expression.args.get("volatile") else ""
        +618
        +619        postcreate_props_sql = ""
        +620        if properties_locs.get(exp.Properties.Location.POST_CREATE):
        +621            postcreate_props_sql = self.properties(
        +622                exp.Properties(expressions=properties_locs[exp.Properties.Location.POST_CREATE]),
        +623                sep=" ",
        +624                prefix=" ",
        +625                wrapped=False,
        +626            )
        +627
        +628        modifiers = "".join((replace, unique, volatile, postcreate_props_sql))
        +629
        +630        postexpression_props_sql = ""
        +631        if properties_locs.get(exp.Properties.Location.POST_EXPRESSION):
        +632            postexpression_props_sql = self.properties(
        +633                exp.Properties(
        +634                    expressions=properties_locs[exp.Properties.Location.POST_EXPRESSION]
        +635                ),
        +636                sep=" ",
        +637                prefix=" ",
        +638                wrapped=False,
        +639            )
        +640
        +641        exists_sql = " IF NOT EXISTS" if expression.args.get("exists") else ""
        +642        no_schema_binding = (
        +643            " WITH NO SCHEMA BINDING" if expression.args.get("no_schema_binding") else ""
        +644        )
        +645
        +646        expression_sql = f"CREATE{modifiers} {kind}{exists_sql} {this}{properties_sql}{expression_sql}{postexpression_props_sql}{index_sql}{no_schema_binding}"
        +647        return self.prepend_ctes(expression, expression_sql)
         
        @@ -5581,8 +5724,8 @@ Default: True
        -
        625    def describe_sql(self, expression: exp.Describe) -> str:
        -626        return f"DESCRIBE {self.sql(expression, 'this')}"
        +            
        649    def describe_sql(self, expression: exp.Describe) -> str:
        +650        return f"DESCRIBE {self.sql(expression, 'this')}"
         
        @@ -5600,11 +5743,11 @@ Default: True
        -
        628    def prepend_ctes(self, expression: exp.Expression, sql: str) -> str:
        -629        with_ = self.sql(expression, "with")
        -630        if with_:
        -631            sql = f"{with_}{self.sep()}{sql}"
        -632        return sql
        +            
        652    def prepend_ctes(self, expression: exp.Expression, sql: str) -> str:
        +653        with_ = self.sql(expression, "with")
        +654        if with_:
        +655            sql = f"{with_}{self.sep()}{sql}"
        +656        return sql
         
        @@ -5622,11 +5765,11 @@ Default: True
        -
        634    def with_sql(self, expression: exp.With) -> str:
        -635        sql = self.expressions(expression, flat=True)
        -636        recursive = "RECURSIVE " if expression.args.get("recursive") else ""
        -637
        -638        return f"WITH {recursive}{sql}"
        +            
        658    def with_sql(self, expression: exp.With) -> str:
        +659        sql = self.expressions(expression, flat=True)
        +660        recursive = "RECURSIVE " if expression.args.get("recursive") else ""
        +661
        +662        return f"WITH {recursive}{sql}"
         
        @@ -5644,9 +5787,9 @@ Default: True
        -
        640    def cte_sql(self, expression: exp.CTE) -> str:
        -641        alias = self.sql(expression, "alias")
        -642        return f"{alias} AS {self.wrap(expression)}"
        +            
        664    def cte_sql(self, expression: exp.CTE) -> str:
        +665        alias = self.sql(expression, "alias")
        +666        return f"{alias} AS {self.wrap(expression)}"
         
        @@ -5664,11 +5807,11 @@ Default: True
        -
        644    def tablealias_sql(self, expression: exp.TableAlias) -> str:
        -645        alias = self.sql(expression, "this")
        -646        columns = self.expressions(expression, key="columns", flat=True)
        -647        columns = f"({columns})" if columns else ""
        -648        return f"{alias}{columns}"
        +            
        668    def tablealias_sql(self, expression: exp.TableAlias) -> str:
        +669        alias = self.sql(expression, "this")
        +670        columns = self.expressions(expression, key="columns", flat=True)
        +671        columns = f"({columns})" if columns else ""
        +672        return f"{alias}{columns}"
         
        @@ -5686,8 +5829,8 @@ Default: True
        -
        650    def bitstring_sql(self, expression: exp.BitString) -> str:
        -651        return self.sql(expression, "this")
        +            
        674    def bitstring_sql(self, expression: exp.BitString) -> str:
        +675        return self.sql(expression, "this")
         
        @@ -5705,8 +5848,8 @@ Default: True
        -
        653    def hexstring_sql(self, expression: exp.HexString) -> str:
        -654        return self.sql(expression, "this")
        +            
        677    def hexstring_sql(self, expression: exp.HexString) -> str:
        +678        return self.sql(expression, "this")
         
        @@ -5724,24 +5867,24 @@ Default: True
        -
        656    def datatype_sql(self, expression: exp.DataType) -> str:
        -657        type_value = expression.this
        -658        type_sql = self.TYPE_MAPPING.get(type_value, type_value.value)
        -659        nested = ""
        -660        interior = self.expressions(expression, flat=True)
        -661        values = ""
        -662        if interior:
        -663            if expression.args.get("nested"):
        -664                nested = f"{self.STRUCT_DELIMITER[0]}{interior}{self.STRUCT_DELIMITER[1]}"
        -665                if expression.args.get("values") is not None:
        -666                    delimiters = ("[", "]") if type_value == exp.DataType.Type.ARRAY else ("(", ")")
        -667                    values = (
        -668                        f"{delimiters[0]}{self.expressions(expression, 'values')}{delimiters[1]}"
        -669                    )
        -670            else:
        -671                nested = f"({interior})"
        -672
        -673        return f"{type_sql}{nested}{values}"
        +            
        680    def datatype_sql(self, expression: exp.DataType) -> str:
        +681        type_value = expression.this
        +682        type_sql = self.TYPE_MAPPING.get(type_value, type_value.value)
        +683        nested = ""
        +684        interior = self.expressions(expression, flat=True)
        +685        values = ""
        +686        if interior:
        +687            if expression.args.get("nested"):
        +688                nested = f"{self.STRUCT_DELIMITER[0]}{interior}{self.STRUCT_DELIMITER[1]}"
        +689                if expression.args.get("values") is not None:
        +690                    delimiters = ("[", "]") if type_value == exp.DataType.Type.ARRAY else ("(", ")")
        +691                    values = (
        +692                        f"{delimiters[0]}{self.expressions(expression, 'values')}{delimiters[1]}"
        +693                    )
        +694            else:
        +695                nested = f"({interior})"
        +696
        +697        return f"{type_sql}{nested}{values}"
         
        @@ -5759,11 +5902,11 @@ Default: True
        -
        675    def directory_sql(self, expression: exp.Directory) -> str:
        -676        local = "LOCAL " if expression.args.get("local") else ""
        -677        row_format = self.sql(expression, "row_format")
        -678        row_format = f" {row_format}" if row_format else ""
        -679        return f"{local}DIRECTORY {self.sql(expression, 'this')}{row_format}"
        +            
        699    def directory_sql(self, expression: exp.Directory) -> str:
        +700        local = "LOCAL " if expression.args.get("local") else ""
        +701        row_format = self.sql(expression, "row_format")
        +702        row_format = f" {row_format}" if row_format else ""
        +703        return f"{local}DIRECTORY {self.sql(expression, 'this')}{row_format}"
         
        @@ -5781,18 +5924,18 @@ Default: True
        -
        681    def delete_sql(self, expression: exp.Delete) -> str:
        -682        this = self.sql(expression, "this")
        -683        this = f" FROM {this}" if this else ""
        -684        using_sql = (
        -685            f" USING {self.expressions(expression, 'using', sep=', USING ')}"
        -686            if expression.args.get("using")
        -687            else ""
        -688        )
        -689        where_sql = self.sql(expression, "where")
        -690        returning = self.sql(expression, "returning")
        -691        sql = f"DELETE{this}{using_sql}{where_sql}{returning}"
        -692        return self.prepend_ctes(expression, sql)
        +            
        705    def delete_sql(self, expression: exp.Delete) -> str:
        +706        this = self.sql(expression, "this")
        +707        this = f" FROM {this}" if this else ""
        +708        using_sql = (
        +709            f" USING {self.expressions(expression, 'using', sep=', USING ')}"
        +710            if expression.args.get("using")
        +711            else ""
        +712        )
        +713        where_sql = self.sql(expression, "where")
        +714        returning = self.sql(expression, "returning")
        +715        sql = f"DELETE{this}{using_sql}{where_sql}{returning}"
        +716        return self.prepend_ctes(expression, sql)
         
        @@ -5810,14 +5953,14 @@ Default: True
        -
        694    def drop_sql(self, expression: exp.Drop) -> str:
        -695        this = self.sql(expression, "this")
        -696        kind = expression.args["kind"]
        -697        exists_sql = " IF EXISTS " if expression.args.get("exists") else " "
        -698        temporary = " TEMPORARY" if expression.args.get("temporary") else ""
        -699        materialized = " MATERIALIZED" if expression.args.get("materialized") else ""
        -700        cascade = " CASCADE" if expression.args.get("cascade") else ""
        -701        return f"DROP{temporary}{materialized} {kind}{exists_sql}{this}{cascade}"
        +            
        718    def drop_sql(self, expression: exp.Drop) -> str:
        +719        this = self.sql(expression, "this")
        +720        kind = expression.args["kind"]
        +721        exists_sql = " IF EXISTS " if expression.args.get("exists") else " "
        +722        temporary = " TEMPORARY" if expression.args.get("temporary") else ""
        +723        materialized = " MATERIALIZED" if expression.args.get("materialized") else ""
        +724        cascade = " CASCADE" if expression.args.get("cascade") else ""
        +725        return f"DROP{temporary}{materialized} {kind}{exists_sql}{this}{cascade}"
         
        @@ -5835,11 +5978,11 @@ Default: True
        -
        703    def except_sql(self, expression: exp.Except) -> str:
        -704        return self.prepend_ctes(
        -705            expression,
        -706            self.set_operation(expression, self.except_op(expression)),
        -707        )
        +            
        727    def except_sql(self, expression: exp.Except) -> str:
        +728        return self.prepend_ctes(
        +729            expression,
        +730            self.set_operation(expression, self.except_op(expression)),
        +731        )
         
        @@ -5857,8 +6000,8 @@ Default: True
        -
        709    def except_op(self, expression: exp.Except) -> str:
        -710        return f"EXCEPT{'' if expression.args.get('distinct') else ' ALL'}"
        +            
        733    def except_op(self, expression: exp.Except) -> str:
        +734        return f"EXCEPT{'' if expression.args.get('distinct') else ' ALL'}"
         
        @@ -5876,12 +6019,12 @@ Default: True
        -
        712    def fetch_sql(self, expression: exp.Fetch) -> str:
        -713        direction = expression.args.get("direction")
        -714        direction = f" {direction.upper()}" if direction else ""
        -715        count = expression.args.get("count")
        -716        count = f" {count}" if count else ""
        -717        return f"{self.seg('FETCH')}{direction}{count} ROWS ONLY"
        +            
        736    def fetch_sql(self, expression: exp.Fetch) -> str:
        +737        direction = expression.args.get("direction")
        +738        direction = f" {direction.upper()}" if direction else ""
        +739        count = expression.args.get("count")
        +740        count = f" {count}" if count else ""
        +741        return f"{self.seg('FETCH')}{direction}{count} ROWS ONLY"
         
        @@ -5899,10 +6042,10 @@ Default: True
        -
        719    def filter_sql(self, expression: exp.Filter) -> str:
        -720        this = self.sql(expression, "this")
        -721        where = self.sql(expression, "expression")[1:]  # where has a leading space
        -722        return f"{this} FILTER({where})"
        +            
        743    def filter_sql(self, expression: exp.Filter) -> str:
        +744        this = self.sql(expression, "this")
        +745        where = self.sql(expression, "expression")[1:]  # where has a leading space
        +746        return f"{this} FILTER({where})"
         
        @@ -5920,10 +6063,10 @@ Default: True
        -
        724    def hint_sql(self, expression: exp.Hint) -> str:
        -725        if self.sql(expression, "this"):
        -726            self.unsupported("Hints are not supported")
        -727        return ""
        +            
        748    def hint_sql(self, expression: exp.Hint) -> str:
        +749        if self.sql(expression, "this"):
        +750            self.unsupported("Hints are not supported")
        +751        return ""
         
        @@ -5941,11 +6084,11 @@ Default: True
        -
        729    def index_sql(self, expression: exp.Index) -> str:
        -730        this = self.sql(expression, "this")
        -731        table = self.sql(expression, "table")
        -732        columns = self.sql(expression, "columns")
        -733        return f"{this} ON {table} {columns}"
        +            
        753    def index_sql(self, expression: exp.Index) -> str:
        +754        this = self.sql(expression, "this")
        +755        table = self.sql(expression, "table")
        +756        columns = self.sql(expression, "columns")
        +757        return f"{this} ON {table} {columns}"
         
        @@ -5963,13 +6106,13 @@ Default: True
        -
        735    def identifier_sql(self, expression: exp.Identifier) -> str:
        -736        text = expression.name
        -737        text = text.lower() if self.normalize else text
        -738        text = text.replace(self.identifier_end, self._escaped_identifier_end)
        -739        if expression.args.get("quoted") or should_identify(text, self.identify):
        -740            text = f"{self.identifier_start}{text}{self.identifier_end}"
        -741        return text
        +            
        759    def identifier_sql(self, expression: exp.Identifier) -> str:
        +760        text = expression.name
        +761        text = text.lower() if self.normalize and not expression.quoted else text
        +762        text = text.replace(self.identifier_end, self._escaped_identifier_end)
        +763        if expression.quoted or should_identify(text, self.identify):
        +764            text = f"{self.identifier_start}{text}{self.identifier_end}"
        +765        return text
         
        @@ -5987,8 +6130,8 @@ Default: True
        -
        743    def national_sql(self, expression: exp.National) -> str:
        -744        return f"N{self.sql(expression, 'this')}"
        +            
        767    def national_sql(self, expression: exp.National) -> str:
        +768        return f"N{self.sql(expression, 'this')}"
         
        @@ -6006,8 +6149,8 @@ Default: True
        -
        746    def partition_sql(self, expression: exp.Partition) -> str:
        -747        return f"PARTITION({self.expressions(expression)})"
        +            
        770    def partition_sql(self, expression: exp.Partition) -> str:
        +771        return f"PARTITION({self.expressions(expression)})"
         
        @@ -6025,20 +6168,20 @@ Default: True
        -
        749    def properties_sql(self, expression: exp.Properties) -> str:
        -750        root_properties = []
        -751        with_properties = []
        -752
        -753        for p in expression.expressions:
        -754            p_loc = self.PROPERTIES_LOCATION[p.__class__]
        -755            if p_loc == exp.Properties.Location.POST_WITH:
        -756                with_properties.append(p)
        -757            elif p_loc == exp.Properties.Location.POST_SCHEMA:
        -758                root_properties.append(p)
        -759
        -760        return self.root_properties(
        -761            exp.Properties(expressions=root_properties)
        -762        ) + self.with_properties(exp.Properties(expressions=with_properties))
        +            
        773    def properties_sql(self, expression: exp.Properties) -> str:
        +774        root_properties = []
        +775        with_properties = []
        +776
        +777        for p in expression.expressions:
        +778            p_loc = self.PROPERTIES_LOCATION[p.__class__]
        +779            if p_loc == exp.Properties.Location.POST_WITH:
        +780                with_properties.append(p)
        +781            elif p_loc == exp.Properties.Location.POST_SCHEMA:
        +782                root_properties.append(p)
        +783
        +784        return self.root_properties(
        +785            exp.Properties(expressions=root_properties)
        +786        ) + self.with_properties(exp.Properties(expressions=with_properties))
         
        @@ -6056,10 +6199,10 @@ Default: True
        -
        764    def root_properties(self, properties: exp.Properties) -> str:
        -765        if properties.expressions:
        -766            return self.sep() + self.expressions(properties, indent=False, sep=" ")
        -767        return ""
        +            
        788    def root_properties(self, properties: exp.Properties) -> str:
        +789        if properties.expressions:
        +790            return self.sep() + self.expressions(properties, indent=False, sep=" ")
        +791        return ""
         
        @@ -6077,19 +6220,19 @@ Default: True
        -
        769    def properties(
        -770        self,
        -771        properties: exp.Properties,
        -772        prefix: str = "",
        -773        sep: str = ", ",
        -774        suffix: str = "",
        -775        wrapped: bool = True,
        -776    ) -> str:
        -777        if properties.expressions:
        -778            expressions = self.expressions(properties, sep=sep, indent=False)
        -779            expressions = self.wrap(expressions) if wrapped else expressions
        -780            return f"{prefix}{' ' if prefix and prefix != ' ' else ''}{expressions}{suffix}"
        -781        return ""
        +            
        793    def properties(
        +794        self,
        +795        properties: exp.Properties,
        +796        prefix: str = "",
        +797        sep: str = ", ",
        +798        suffix: str = "",
        +799        wrapped: bool = True,
        +800    ) -> str:
        +801        if properties.expressions:
        +802            expressions = self.expressions(properties, sep=sep, indent=False)
        +803            expressions = self.wrap(expressions) if wrapped else expressions
        +804            return f"{prefix}{' ' if prefix and prefix != ' ' else ''}{expressions}{suffix}"
        +805        return ""
         
        @@ -6107,8 +6250,8 @@ Default: True
        -
        783    def with_properties(self, properties: exp.Properties) -> str:
        -784        return self.properties(properties, prefix=self.seg("WITH"))
        +            
        807    def with_properties(self, properties: exp.Properties) -> str:
        +808        return self.properties(properties, prefix=self.seg("WITH"))
         
        @@ -6126,33 +6269,33 @@ Default: True
        -
        786    def locate_properties(
        -787        self, properties: exp.Properties
        -788    ) -> t.Dict[exp.Properties.Location, list[exp.Property]]:
        -789        properties_locs: t.Dict[exp.Properties.Location, list[exp.Property]] = {
        -790            key: [] for key in exp.Properties.Location
        -791        }
        -792
        -793        for p in properties.expressions:
        -794            p_loc = self.PROPERTIES_LOCATION[p.__class__]
        -795            if p_loc == exp.Properties.Location.POST_NAME:
        -796                properties_locs[exp.Properties.Location.POST_NAME].append(p)
        -797            elif p_loc == exp.Properties.Location.POST_INDEX:
        -798                properties_locs[exp.Properties.Location.POST_INDEX].append(p)
        -799            elif p_loc == exp.Properties.Location.POST_SCHEMA:
        -800                properties_locs[exp.Properties.Location.POST_SCHEMA].append(p)
        -801            elif p_loc == exp.Properties.Location.POST_WITH:
        -802                properties_locs[exp.Properties.Location.POST_WITH].append(p)
        -803            elif p_loc == exp.Properties.Location.POST_CREATE:
        -804                properties_locs[exp.Properties.Location.POST_CREATE].append(p)
        -805            elif p_loc == exp.Properties.Location.POST_ALIAS:
        -806                properties_locs[exp.Properties.Location.POST_ALIAS].append(p)
        -807            elif p_loc == exp.Properties.Location.POST_EXPRESSION:
        -808                properties_locs[exp.Properties.Location.POST_EXPRESSION].append(p)
        -809            elif p_loc == exp.Properties.Location.UNSUPPORTED:
        -810                self.unsupported(f"Unsupported property {p.key}")
        -811
        -812        return properties_locs
        +            
        810    def locate_properties(
        +811        self, properties: exp.Properties
        +812    ) -> t.Dict[exp.Properties.Location, list[exp.Property]]:
        +813        properties_locs: t.Dict[exp.Properties.Location, list[exp.Property]] = {
        +814            key: [] for key in exp.Properties.Location
        +815        }
        +816
        +817        for p in properties.expressions:
        +818            p_loc = self.PROPERTIES_LOCATION[p.__class__]
        +819            if p_loc == exp.Properties.Location.POST_NAME:
        +820                properties_locs[exp.Properties.Location.POST_NAME].append(p)
        +821            elif p_loc == exp.Properties.Location.POST_INDEX:
        +822                properties_locs[exp.Properties.Location.POST_INDEX].append(p)
        +823            elif p_loc == exp.Properties.Location.POST_SCHEMA:
        +824                properties_locs[exp.Properties.Location.POST_SCHEMA].append(p)
        +825            elif p_loc == exp.Properties.Location.POST_WITH:
        +826                properties_locs[exp.Properties.Location.POST_WITH].append(p)
        +827            elif p_loc == exp.Properties.Location.POST_CREATE:
        +828                properties_locs[exp.Properties.Location.POST_CREATE].append(p)
        +829            elif p_loc == exp.Properties.Location.POST_ALIAS:
        +830                properties_locs[exp.Properties.Location.POST_ALIAS].append(p)
        +831            elif p_loc == exp.Properties.Location.POST_EXPRESSION:
        +832                properties_locs[exp.Properties.Location.POST_EXPRESSION].append(p)
        +833            elif p_loc == exp.Properties.Location.UNSUPPORTED:
        +834                self.unsupported(f"Unsupported property {p.key}")
        +835
        +836        return properties_locs
         
        @@ -6170,16 +6313,16 @@ Default: True
        -
        814    def property_sql(self, expression: exp.Property) -> str:
        -815        property_cls = expression.__class__
        -816        if property_cls == exp.Property:
        -817            return f"{expression.name}={self.sql(expression, 'value')}"
        -818
        -819        property_name = exp.Properties.PROPERTY_TO_NAME.get(property_cls)
        -820        if not property_name:
        -821            self.unsupported(f"Unsupported property {expression.key}")
        -822
        -823        return f"{property_name}={self.sql(expression, 'this')}"
        +            
        838    def property_sql(self, expression: exp.Property) -> str:
        +839        property_cls = expression.__class__
        +840        if property_cls == exp.Property:
        +841            return f"{expression.name}={self.sql(expression, 'value')}"
        +842
        +843        property_name = exp.Properties.PROPERTY_TO_NAME.get(property_cls)
        +844        if not property_name:
        +845            self.unsupported(f"Unsupported property {expression.key}")
        +846
        +847        return f"{property_name}={self.sql(expression, 'this')}"
         
        @@ -6197,10 +6340,10 @@ Default: True
        -
        825    def likeproperty_sql(self, expression: exp.LikeProperty) -> str:
        -826        options = " ".join(f"{e.name} {self.sql(e, 'value')}" for e in expression.expressions)
        -827        options = f" {options}" if options else ""
        -828        return f"LIKE {self.sql(expression, 'this')}{options}"
        +            
        849    def likeproperty_sql(self, expression: exp.LikeProperty) -> str:
        +850        options = " ".join(f"{e.name} {self.sql(e, 'value')}" for e in expression.expressions)
        +851        options = f" {options}" if options else ""
        +852        return f"LIKE {self.sql(expression, 'this')}{options}"
         
        @@ -6218,10 +6361,10 @@ Default: True
        -
        830    def fallbackproperty_sql(self, expression: exp.FallbackProperty) -> str:
        -831        no = "NO " if expression.args.get("no") else ""
        -832        protection = " PROTECTION" if expression.args.get("protection") else ""
        -833        return f"{no}FALLBACK{protection}"
        +            
        854    def fallbackproperty_sql(self, expression: exp.FallbackProperty) -> str:
        +855        no = "NO " if expression.args.get("no") else ""
        +856        protection = " PROTECTION" if expression.args.get("protection") else ""
        +857        return f"{no}FALLBACK{protection}"
         
        @@ -6239,11 +6382,11 @@ Default: True
        -
        835    def journalproperty_sql(self, expression: exp.JournalProperty) -> str:
        -836        no = "NO " if expression.args.get("no") else ""
        -837        dual = "DUAL " if expression.args.get("dual") else ""
        -838        before = "BEFORE " if expression.args.get("before") else ""
        -839        return f"{no}{dual}{before}JOURNAL"
        +            
        859    def journalproperty_sql(self, expression: exp.JournalProperty) -> str:
        +860        no = "NO " if expression.args.get("no") else ""
        +861        dual = "DUAL " if expression.args.get("dual") else ""
        +862        before = "BEFORE " if expression.args.get("before") else ""
        +863        return f"{no}{dual}{before}JOURNAL"
         
        @@ -6261,10 +6404,10 @@ Default: True
        -
        841    def freespaceproperty_sql(self, expression: exp.FreespaceProperty) -> str:
        -842        freespace = self.sql(expression, "this")
        -843        percent = " PERCENT" if expression.args.get("percent") else ""
        -844        return f"FREESPACE={freespace}{percent}"
        +            
        865    def freespaceproperty_sql(self, expression: exp.FreespaceProperty) -> str:
        +866        freespace = self.sql(expression, "this")
        +867        percent = " PERCENT" if expression.args.get("percent") else ""
        +868        return f"FREESPACE={freespace}{percent}"
         
        @@ -6282,13 +6425,13 @@ Default: True
        -
        846    def afterjournalproperty_sql(self, expression: exp.AfterJournalProperty) -> str:
        -847        no = "NO " if expression.args.get("no") else ""
        -848        dual = "DUAL " if expression.args.get("dual") else ""
        -849        local = ""
        -850        if expression.args.get("local") is not None:
        -851            local = "LOCAL " if expression.args.get("local") else "NOT LOCAL "
        -852        return f"{no}{dual}{local}AFTER JOURNAL"
        +            
        870    def afterjournalproperty_sql(self, expression: exp.AfterJournalProperty) -> str:
        +871        no = "NO " if expression.args.get("no") else ""
        +872        dual = "DUAL " if expression.args.get("dual") else ""
        +873        local = ""
        +874        if expression.args.get("local") is not None:
        +875            local = "LOCAL " if expression.args.get("local") else "NOT LOCAL "
        +876        return f"{no}{dual}{local}AFTER JOURNAL"
         
        @@ -6306,14 +6449,14 @@ Default: True
        -
        854    def checksumproperty_sql(self, expression: exp.ChecksumProperty) -> str:
        -855        if expression.args.get("default"):
        -856            property = "DEFAULT"
        -857        elif expression.args.get("on"):
        -858            property = "ON"
        -859        else:
        -860            property = "OFF"
        -861        return f"CHECKSUM={property}"
        +            
        878    def checksumproperty_sql(self, expression: exp.ChecksumProperty) -> str:
        +879        if expression.args.get("default"):
        +880            property = "DEFAULT"
        +881        elif expression.args.get("on"):
        +882            property = "ON"
        +883        else:
        +884            property = "OFF"
        +885        return f"CHECKSUM={property}"
         
        @@ -6331,14 +6474,14 @@ Default: True
        -
        863    def mergeblockratioproperty_sql(self, expression: exp.MergeBlockRatioProperty) -> str:
        -864        if expression.args.get("no"):
        -865            return "NO MERGEBLOCKRATIO"
        -866        if expression.args.get("default"):
        -867            return "DEFAULT MERGEBLOCKRATIO"
        -868
        -869        percent = " PERCENT" if expression.args.get("percent") else ""
        -870        return f"MERGEBLOCKRATIO={self.sql(expression, 'this')}{percent}"
        +            
        887    def mergeblockratioproperty_sql(self, expression: exp.MergeBlockRatioProperty) -> str:
        +888        if expression.args.get("no"):
        +889            return "NO MERGEBLOCKRATIO"
        +890        if expression.args.get("default"):
        +891            return "DEFAULT MERGEBLOCKRATIO"
        +892
        +893        percent = " PERCENT" if expression.args.get("percent") else ""
        +894        return f"MERGEBLOCKRATIO={self.sql(expression, 'this')}{percent}"
         
        @@ -6356,21 +6499,21 @@ Default: True
        -
        872    def datablocksizeproperty_sql(self, expression: exp.DataBlocksizeProperty) -> str:
        -873        default = expression.args.get("default")
        -874        min = expression.args.get("min")
        -875        if default is not None or min is not None:
        -876            if default:
        -877                property = "DEFAULT"
        -878            elif min:
        -879                property = "MINIMUM"
        -880            else:
        -881                property = "MAXIMUM"
        -882            return f"{property} DATABLOCKSIZE"
        -883        else:
        -884            units = expression.args.get("units")
        -885            units = f" {units}" if units else ""
        -886            return f"DATABLOCKSIZE={self.sql(expression, 'size')}{units}"
        +            
        896    def datablocksizeproperty_sql(self, expression: exp.DataBlocksizeProperty) -> str:
        +897        default = expression.args.get("default")
        +898        min = expression.args.get("min")
        +899        if default is not None or min is not None:
        +900            if default:
        +901                property = "DEFAULT"
        +902            elif min:
        +903                property = "MINIMUM"
        +904            else:
        +905                property = "MAXIMUM"
        +906            return f"{property} DATABLOCKSIZE"
        +907        else:
        +908            units = expression.args.get("units")
        +909            units = f" {units}" if units else ""
        +910            return f"DATABLOCKSIZE={self.sql(expression, 'size')}{units}"
         
        @@ -6388,24 +6531,24 @@ Default: True
        -
        888    def blockcompressionproperty_sql(self, expression: exp.BlockCompressionProperty) -> str:
        -889        autotemp = expression.args.get("autotemp")
        -890        always = expression.args.get("always")
        -891        default = expression.args.get("default")
        -892        manual = expression.args.get("manual")
        -893        never = expression.args.get("never")
        -894
        -895        if autotemp is not None:
        -896            property = f"AUTOTEMP({self.expressions(autotemp)})"
        -897        elif always:
        -898            property = "ALWAYS"
        -899        elif default:
        -900            property = "DEFAULT"
        -901        elif manual:
        -902            property = "MANUAL"
        -903        elif never:
        -904            property = "NEVER"
        -905        return f"BLOCKCOMPRESSION={property}"
        +            
        912    def blockcompressionproperty_sql(self, expression: exp.BlockCompressionProperty) -> str:
        +913        autotemp = expression.args.get("autotemp")
        +914        always = expression.args.get("always")
        +915        default = expression.args.get("default")
        +916        manual = expression.args.get("manual")
        +917        never = expression.args.get("never")
        +918
        +919        if autotemp is not None:
        +920            property = f"AUTOTEMP({self.expressions(autotemp)})"
        +921        elif always:
        +922            property = "ALWAYS"
        +923        elif default:
        +924            property = "DEFAULT"
        +925        elif manual:
        +926            property = "MANUAL"
        +927        elif never:
        +928            property = "NEVER"
        +929        return f"BLOCKCOMPRESSION={property}"
         
        @@ -6423,20 +6566,20 @@ Default: True
        -
        907    def isolatedloadingproperty_sql(self, expression: exp.IsolatedLoadingProperty) -> str:
        -908        no = expression.args.get("no")
        -909        no = " NO" if no else ""
        -910        concurrent = expression.args.get("concurrent")
        -911        concurrent = " CONCURRENT" if concurrent else ""
        -912
        -913        for_ = ""
        -914        if expression.args.get("for_all"):
        -915            for_ = " FOR ALL"
        -916        elif expression.args.get("for_insert"):
        -917            for_ = " FOR INSERT"
        -918        elif expression.args.get("for_none"):
        -919            for_ = " FOR NONE"
        -920        return f"WITH{no}{concurrent} ISOLATED LOADING{for_}"
        +            
        931    def isolatedloadingproperty_sql(self, expression: exp.IsolatedLoadingProperty) -> str:
        +932        no = expression.args.get("no")
        +933        no = " NO" if no else ""
        +934        concurrent = expression.args.get("concurrent")
        +935        concurrent = " CONCURRENT" if concurrent else ""
        +936
        +937        for_ = ""
        +938        if expression.args.get("for_all"):
        +939            for_ = " FOR ALL"
        +940        elif expression.args.get("for_insert"):
        +941            for_ = " FOR INSERT"
        +942        elif expression.args.get("for_none"):
        +943            for_ = " FOR NONE"
        +944        return f"WITH{no}{concurrent} ISOLATED LOADING{for_}"
         
        @@ -6454,13 +6597,13 @@ Default: True
        -
        922    def lockingproperty_sql(self, expression: exp.LockingProperty) -> str:
        -923        kind = expression.args.get("kind")
        -924        this: str = f" {this}" if expression.this else ""
        -925        for_or_in = expression.args.get("for_or_in")
        -926        lock_type = expression.args.get("lock_type")
        -927        override = " OVERRIDE" if expression.args.get("override") else ""
        -928        return f"LOCKING {kind}{this} {for_or_in} {lock_type}{override}"
        +            
        946    def lockingproperty_sql(self, expression: exp.LockingProperty) -> str:
        +947        kind = expression.args.get("kind")
        +948        this: str = f" {this}" if expression.this else ""
        +949        for_or_in = expression.args.get("for_or_in")
        +950        lock_type = expression.args.get("lock_type")
        +951        override = " OVERRIDE" if expression.args.get("override") else ""
        +952        return f"LOCKING {kind}{this} {for_or_in} {lock_type}{override}"
         
        @@ -6478,13 +6621,13 @@ Default: True
        -
        930    def withdataproperty_sql(self, expression: exp.WithDataProperty) -> str:
        -931        data_sql = f"WITH {'NO ' if expression.args.get('no') else ''}DATA"
        -932        statistics = expression.args.get("statistics")
        -933        statistics_sql = ""
        -934        if statistics is not None:
        -935            statistics_sql = f" AND {'NO ' if not statistics else ''}STATISTICS"
        -936        return f"{data_sql}{statistics_sql}"
        +            
        954    def withdataproperty_sql(self, expression: exp.WithDataProperty) -> str:
        +955        data_sql = f"WITH {'NO ' if expression.args.get('no') else ''}DATA"
        +956        statistics = expression.args.get("statistics")
        +957        statistics_sql = ""
        +958        if statistics is not None:
        +959            statistics_sql = f" AND {'NO ' if not statistics else ''}STATISTICS"
        +960        return f"{data_sql}{statistics_sql}"
         
        @@ -6502,27 +6645,27 @@ Default: True
        -
        938    def insert_sql(self, expression: exp.Insert) -> str:
        -939        overwrite = expression.args.get("overwrite")
        -940
        -941        if isinstance(expression.this, exp.Directory):
        -942            this = "OVERWRITE " if overwrite else "INTO "
        -943        else:
        -944            this = "OVERWRITE TABLE " if overwrite else "INTO "
        -945
        -946        alternative = expression.args.get("alternative")
        -947        alternative = f" OR {alternative} " if alternative else " "
        -948        this = f"{this}{self.sql(expression, 'this')}"
        -949
        -950        exists = " IF EXISTS " if expression.args.get("exists") else " "
        -951        partition_sql = (
        -952            self.sql(expression, "partition") if expression.args.get("partition") else ""
        -953        )
        -954        expression_sql = self.sql(expression, "expression")
        -955        returning = self.sql(expression, "returning")
        -956        sep = self.sep() if partition_sql else ""
        -957        sql = f"INSERT{alternative}{this}{exists}{partition_sql}{sep}{expression_sql}{returning}"
        -958        return self.prepend_ctes(expression, sql)
        +            
        962    def insert_sql(self, expression: exp.Insert) -> str:
        +963        overwrite = expression.args.get("overwrite")
        +964
        +965        if isinstance(expression.this, exp.Directory):
        +966            this = "OVERWRITE " if overwrite else "INTO "
        +967        else:
        +968            this = "OVERWRITE TABLE " if overwrite else "INTO "
        +969
        +970        alternative = expression.args.get("alternative")
        +971        alternative = f" OR {alternative} " if alternative else " "
        +972        this = f"{this}{self.sql(expression, 'this')}"
        +973
        +974        exists = " IF EXISTS " if expression.args.get("exists") else " "
        +975        partition_sql = (
        +976            self.sql(expression, "partition") if expression.args.get("partition") else ""
        +977        )
        +978        expression_sql = self.sql(expression, "expression")
        +979        returning = self.sql(expression, "returning")
        +980        sep = self.sep() if partition_sql else ""
        +981        sql = f"INSERT{alternative}{this}{exists}{partition_sql}{sep}{expression_sql}{returning}"
        +982        return self.prepend_ctes(expression, sql)
         
        @@ -6540,11 +6683,11 @@ Default: True
        -
        960    def intersect_sql(self, expression: exp.Intersect) -> str:
        -961        return self.prepend_ctes(
        -962            expression,
        -963            self.set_operation(expression, self.intersect_op(expression)),
        -964        )
        +            
        984    def intersect_sql(self, expression: exp.Intersect) -> str:
        +985        return self.prepend_ctes(
        +986            expression,
        +987            self.set_operation(expression, self.intersect_op(expression)),
        +988        )
         
        @@ -6562,8 +6705,8 @@ Default: True
        -
        966    def intersect_op(self, expression: exp.Intersect) -> str:
        -967        return f"INTERSECT{'' if expression.args.get('distinct') else ' ALL'}"
        +            
        990    def intersect_op(self, expression: exp.Intersect) -> str:
        +991        return f"INTERSECT{'' if expression.args.get('distinct') else ' ALL'}"
         
        @@ -6581,8 +6724,8 @@ Default: True
        -
        969    def introducer_sql(self, expression: exp.Introducer) -> str:
        -970        return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}"
        +            
        993    def introducer_sql(self, expression: exp.Introducer) -> str:
        +994        return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}"
         
        @@ -6600,8 +6743,8 @@ Default: True
        -
        972    def pseudotype_sql(self, expression: exp.PseudoType) -> str:
        -973        return expression.name.upper()
        +            
        996    def pseudotype_sql(self, expression: exp.PseudoType) -> str:
        +997        return expression.name.upper()
         
        @@ -6619,8 +6762,8 @@ Default: True
        -
        975    def returning_sql(self, expression: exp.Returning) -> str:
        -976        return f"{self.seg('RETURNING')} {self.expressions(expression, flat=True)}"
        +            
         999    def returning_sql(self, expression: exp.Returning) -> str:
        +1000        return f"{self.seg('RETURNING')} {self.expressions(expression, flat=True)}"
         
        @@ -6638,20 +6781,20 @@ Default: True
        -
        978    def rowformatdelimitedproperty_sql(self, expression: exp.RowFormatDelimitedProperty) -> str:
        -979        fields = expression.args.get("fields")
        -980        fields = f" FIELDS TERMINATED BY {fields}" if fields else ""
        -981        escaped = expression.args.get("escaped")
        -982        escaped = f" ESCAPED BY {escaped}" if escaped else ""
        -983        items = expression.args.get("collection_items")
        -984        items = f" COLLECTION ITEMS TERMINATED BY {items}" if items else ""
        -985        keys = expression.args.get("map_keys")
        -986        keys = f" MAP KEYS TERMINATED BY {keys}" if keys else ""
        -987        lines = expression.args.get("lines")
        -988        lines = f" LINES TERMINATED BY {lines}" if lines else ""
        -989        null = expression.args.get("null")
        -990        null = f" NULL DEFINED AS {null}" if null else ""
        -991        return f"ROW FORMAT DELIMITED{fields}{escaped}{items}{keys}{lines}{null}"
        +            
        1002    def rowformatdelimitedproperty_sql(self, expression: exp.RowFormatDelimitedProperty) -> str:
        +1003        fields = expression.args.get("fields")
        +1004        fields = f" FIELDS TERMINATED BY {fields}" if fields else ""
        +1005        escaped = expression.args.get("escaped")
        +1006        escaped = f" ESCAPED BY {escaped}" if escaped else ""
        +1007        items = expression.args.get("collection_items")
        +1008        items = f" COLLECTION ITEMS TERMINATED BY {items}" if items else ""
        +1009        keys = expression.args.get("map_keys")
        +1010        keys = f" MAP KEYS TERMINATED BY {keys}" if keys else ""
        +1011        lines = expression.args.get("lines")
        +1012        lines = f" LINES TERMINATED BY {lines}" if lines else ""
        +1013        null = expression.args.get("null")
        +1014        null = f" NULL DEFINED AS {null}" if null else ""
        +1015        return f"ROW FORMAT DELIMITED{fields}{escaped}{items}{keys}{lines}{null}"
         
        @@ -6669,28 +6812,28 @@ Default: True
        -
         993    def table_sql(self, expression: exp.Table, sep: str = " AS ") -> str:
        - 994        table = ".".join(
        - 995            part
        - 996            for part in [
        - 997                self.sql(expression, "catalog"),
        - 998                self.sql(expression, "db"),
        - 999                self.sql(expression, "this"),
        -1000            ]
        -1001            if part
        -1002        )
        -1003
        -1004        alias = self.sql(expression, "alias")
        -1005        alias = f"{sep}{alias}" if alias else ""
        -1006        hints = self.expressions(expression, key="hints", sep=", ", flat=True)
        -1007        hints = f" WITH ({hints})" if hints else ""
        -1008        laterals = self.expressions(expression, key="laterals", sep="")
        -1009        joins = self.expressions(expression, key="joins", sep="")
        -1010        pivots = self.expressions(expression, key="pivots", sep="")
        -1011        system_time = expression.args.get("system_time")
        -1012        system_time = f" {self.sql(expression, 'system_time')}" if system_time else ""
        -1013
        -1014        return f"{table}{system_time}{alias}{hints}{laterals}{joins}{pivots}"
        +            
        1017    def table_sql(self, expression: exp.Table, sep: str = " AS ") -> str:
        +1018        table = ".".join(
        +1019            part
        +1020            for part in [
        +1021                self.sql(expression, "catalog"),
        +1022                self.sql(expression, "db"),
        +1023                self.sql(expression, "this"),
        +1024            ]
        +1025            if part
        +1026        )
        +1027
        +1028        alias = self.sql(expression, "alias")
        +1029        alias = f"{sep}{alias}" if alias else ""
        +1030        hints = self.expressions(expression, key="hints", sep=", ", flat=True)
        +1031        hints = f" WITH ({hints})" if hints else ""
        +1032        laterals = self.expressions(expression, key="laterals", sep="")
        +1033        joins = self.expressions(expression, key="joins", sep="")
        +1034        pivots = self.expressions(expression, key="pivots", sep="")
        +1035        system_time = expression.args.get("system_time")
        +1036        system_time = f" {self.sql(expression, 'system_time')}" if system_time else ""
        +1037
        +1038        return f"{table}{system_time}{alias}{hints}{laterals}{joins}{pivots}"
         
        @@ -6708,29 +6851,29 @@ Default: True
        -
        1016    def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str:
        -1017        if self.alias_post_tablesample and expression.this.alias:
        -1018            this = self.sql(expression.this, "this")
        -1019            alias = f" AS {self.sql(expression.this, 'alias')}"
        -1020        else:
        -1021            this = self.sql(expression, "this")
        -1022            alias = ""
        -1023        method = self.sql(expression, "method")
        -1024        method = f"{method.upper()} " if method else ""
        -1025        numerator = self.sql(expression, "bucket_numerator")
        -1026        denominator = self.sql(expression, "bucket_denominator")
        -1027        field = self.sql(expression, "bucket_field")
        -1028        field = f" ON {field}" if field else ""
        -1029        bucket = f"BUCKET {numerator} OUT OF {denominator}{field}" if numerator else ""
        -1030        percent = self.sql(expression, "percent")
        -1031        percent = f"{percent} PERCENT" if percent else ""
        -1032        rows = self.sql(expression, "rows")
        -1033        rows = f"{rows} ROWS" if rows else ""
        -1034        size = self.sql(expression, "size")
        -1035        seed = self.sql(expression, "seed")
        -1036        seed = f" {seed_prefix} ({seed})" if seed else ""
        -1037        kind = expression.args.get("kind", "TABLESAMPLE")
        -1038        return f"{this} {kind} {method}({bucket}{percent}{rows}{size}){seed}{alias}"
        +            
        1040    def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str:
        +1041        if self.alias_post_tablesample and expression.this.alias:
        +1042            this = self.sql(expression.this, "this")
        +1043            alias = f" AS {self.sql(expression.this, 'alias')}"
        +1044        else:
        +1045            this = self.sql(expression, "this")
        +1046            alias = ""
        +1047        method = self.sql(expression, "method")
        +1048        method = f"{method.upper()} " if method else ""
        +1049        numerator = self.sql(expression, "bucket_numerator")
        +1050        denominator = self.sql(expression, "bucket_denominator")
        +1051        field = self.sql(expression, "bucket_field")
        +1052        field = f" ON {field}" if field else ""
        +1053        bucket = f"BUCKET {numerator} OUT OF {denominator}{field}" if numerator else ""
        +1054        percent = self.sql(expression, "percent")
        +1055        percent = f"{percent} PERCENT" if percent else ""
        +1056        rows = self.sql(expression, "rows")
        +1057        rows = f"{rows} ROWS" if rows else ""
        +1058        size = self.sql(expression, "size")
        +1059        seed = self.sql(expression, "seed")
        +1060        seed = f" {seed_prefix} ({seed})" if seed else ""
        +1061        kind = expression.args.get("kind", "TABLESAMPLE")
        +1062        return f"{this} {kind} {method}({bucket}{percent}{rows}{size}){seed}{alias}"
         
        @@ -6748,15 +6891,15 @@ Default: True
        -
        1040    def pivot_sql(self, expression: exp.Pivot) -> str:
        -1041        this = self.sql(expression, "this")
        -1042        alias = self.sql(expression, "alias")
        -1043        alias = f" AS {alias}" if alias else ""
        -1044        unpivot = expression.args.get("unpivot")
        -1045        direction = "UNPIVOT" if unpivot else "PIVOT"
        -1046        expressions = self.expressions(expression, key="expressions")
        -1047        field = self.sql(expression, "field")
        -1048        return f"{this} {direction}({expressions} FOR {field}){alias}"
        +            
        1064    def pivot_sql(self, expression: exp.Pivot) -> str:
        +1065        this = self.sql(expression, "this")
        +1066        alias = self.sql(expression, "alias")
        +1067        alias = f" AS {alias}" if alias else ""
        +1068        unpivot = expression.args.get("unpivot")
        +1069        direction = "UNPIVOT" if unpivot else "PIVOT"
        +1070        expressions = self.expressions(expression, key="expressions")
        +1071        field = self.sql(expression, "field")
        +1072        return f"{this} {direction}({expressions} FOR {field}){alias}"
         
        @@ -6774,8 +6917,8 @@ Default: True
        -
        1050    def tuple_sql(self, expression: exp.Tuple) -> str:
        -1051        return f"({self.expressions(expression, flat=True)})"
        +            
        1074    def tuple_sql(self, expression: exp.Tuple) -> str:
        +1075        return f"({self.expressions(expression, flat=True)})"
         
        @@ -6793,14 +6936,14 @@ Default: True
        -
        1053    def update_sql(self, expression: exp.Update) -> str:
        -1054        this = self.sql(expression, "this")
        -1055        set_sql = self.expressions(expression, flat=True)
        -1056        from_sql = self.sql(expression, "from")
        -1057        where_sql = self.sql(expression, "where")
        -1058        returning = self.sql(expression, "returning")
        -1059        sql = f"UPDATE {this} SET {set_sql}{from_sql}{where_sql}{returning}"
        -1060        return self.prepend_ctes(expression, sql)
        +            
        1077    def update_sql(self, expression: exp.Update) -> str:
        +1078        this = self.sql(expression, "this")
        +1079        set_sql = self.expressions(expression, flat=True)
        +1080        from_sql = self.sql(expression, "from")
        +1081        where_sql = self.sql(expression, "where")
        +1082        returning = self.sql(expression, "returning")
        +1083        sql = f"UPDATE {this} SET {set_sql}{from_sql}{where_sql}{returning}"
        +1084        return self.prepend_ctes(expression, sql)
         
        @@ -6818,16 +6961,16 @@ Default: True
        -
        1062    def values_sql(self, expression: exp.Values) -> str:
        -1063        args = self.expressions(expression)
        -1064        alias = self.sql(expression, "alias")
        -1065        values = f"VALUES{self.seg('')}{args}"
        -1066        values = (
        -1067            f"({values})"
        -1068            if self.WRAP_DERIVED_VALUES and (alias or isinstance(expression.parent, exp.From))
        -1069            else values
        -1070        )
        -1071        return f"{values} AS {alias}" if alias else values
        +            
        1086    def values_sql(self, expression: exp.Values) -> str:
        +1087        args = self.expressions(expression)
        +1088        alias = self.sql(expression, "alias")
        +1089        values = f"VALUES{self.seg('')}{args}"
        +1090        values = (
        +1091            f"({values})"
        +1092            if self.WRAP_DERIVED_VALUES and (alias or isinstance(expression.parent, exp.From))
        +1093            else values
        +1094        )
        +1095        return f"{values} AS {alias}" if alias else values
         
        @@ -6845,8 +6988,8 @@ Default: True
        -
        1073    def var_sql(self, expression: exp.Var) -> str:
        -1074        return self.sql(expression, "this")
        +            
        1097    def var_sql(self, expression: exp.Var) -> str:
        +1098        return self.sql(expression, "this")
         
        @@ -6864,10 +7007,10 @@ Default: True
        -
        1076    def into_sql(self, expression: exp.Into) -> str:
        -1077        temporary = " TEMPORARY" if expression.args.get("temporary") else ""
        -1078        unlogged = " UNLOGGED" if expression.args.get("unlogged") else ""
        -1079        return f"{self.seg('INTO')}{temporary or unlogged} {self.sql(expression, 'this')}"
        +            
        1100    def into_sql(self, expression: exp.Into) -> str:
        +1101        temporary = " TEMPORARY" if expression.args.get("temporary") else ""
        +1102        unlogged = " UNLOGGED" if expression.args.get("unlogged") else ""
        +1103        return f"{self.seg('INTO')}{temporary or unlogged} {self.sql(expression, 'this')}"
         
        @@ -6885,9 +7028,9 @@ Default: True
        -
        1081    def from_sql(self, expression: exp.From) -> str:
        -1082        expressions = self.expressions(expression, flat=True)
        -1083        return f"{self.seg('FROM')} {expressions}"
        +            
        1105    def from_sql(self, expression: exp.From) -> str:
        +1106        expressions = self.expressions(expression, flat=True)
        +1107        return f"{self.seg('FROM')} {expressions}"
         
        @@ -6905,33 +7048,33 @@ Default: True
        -
        1085    def group_sql(self, expression: exp.Group) -> str:
        -1086        group_by = self.op_expressions("GROUP BY", expression)
        -1087        grouping_sets = self.expressions(expression, key="grouping_sets", indent=False)
        -1088        grouping_sets = (
        -1089            f"{self.seg('GROUPING SETS')} {self.wrap(grouping_sets)}" if grouping_sets else ""
        -1090        )
        -1091
        -1092        cube = expression.args.get("cube", [])
        -1093        if seq_get(cube, 0) is True:
        -1094            return f"{group_by}{self.seg('WITH CUBE')}"
        -1095        else:
        -1096            cube_sql = self.expressions(expression, key="cube", indent=False)
        -1097            cube_sql = f"{self.seg('CUBE')} {self.wrap(cube_sql)}" if cube_sql else ""
        -1098
        -1099        rollup = expression.args.get("rollup", [])
        -1100        if seq_get(rollup, 0) is True:
        -1101            return f"{group_by}{self.seg('WITH ROLLUP')}"
        -1102        else:
        -1103            rollup_sql = self.expressions(expression, key="rollup", indent=False)
        -1104            rollup_sql = f"{self.seg('ROLLUP')} {self.wrap(rollup_sql)}" if rollup_sql else ""
        -1105
        -1106        groupings = csv(grouping_sets, cube_sql, rollup_sql, sep=",")
        -1107
        -1108        if expression.args.get("expressions") and groupings:
        -1109            group_by = f"{group_by},"
        -1110
        -1111        return f"{group_by}{groupings}"
        +            
        1109    def group_sql(self, expression: exp.Group) -> str:
        +1110        group_by = self.op_expressions("GROUP BY", expression)
        +1111        grouping_sets = self.expressions(expression, key="grouping_sets", indent=False)
        +1112        grouping_sets = (
        +1113            f"{self.seg('GROUPING SETS')} {self.wrap(grouping_sets)}" if grouping_sets else ""
        +1114        )
        +1115
        +1116        cube = expression.args.get("cube", [])
        +1117        if seq_get(cube, 0) is True:
        +1118            return f"{group_by}{self.seg('WITH CUBE')}"
        +1119        else:
        +1120            cube_sql = self.expressions(expression, key="cube", indent=False)
        +1121            cube_sql = f"{self.seg('CUBE')} {self.wrap(cube_sql)}" if cube_sql else ""
        +1122
        +1123        rollup = expression.args.get("rollup", [])
        +1124        if seq_get(rollup, 0) is True:
        +1125            return f"{group_by}{self.seg('WITH ROLLUP')}"
        +1126        else:
        +1127            rollup_sql = self.expressions(expression, key="rollup", indent=False)
        +1128            rollup_sql = f"{self.seg('ROLLUP')} {self.wrap(rollup_sql)}" if rollup_sql else ""
        +1129
        +1130        groupings = csv(grouping_sets, cube_sql, rollup_sql, sep=",")
        +1131
        +1132        if expression.args.get("expressions") and groupings:
        +1133            group_by = f"{group_by},"
        +1134
        +1135        return f"{group_by}{groupings}"
         
        @@ -6949,9 +7092,9 @@ Default: True
        -
        1113    def having_sql(self, expression: exp.Having) -> str:
        -1114        this = self.indent(self.sql(expression, "this"))
        -1115        return f"{self.seg('HAVING')}{self.sep()}{this}"
        +            
        1137    def having_sql(self, expression: exp.Having) -> str:
        +1138        this = self.indent(self.sql(expression, "this"))
        +1139        return f"{self.seg('HAVING')}{self.sep()}{this}"
         
        @@ -6969,36 +7112,36 @@ Default: True
        -
        1117    def join_sql(self, expression: exp.Join) -> str:
        -1118        op_sql = self.seg(
        -1119            " ".join(
        -1120                op
        -1121                for op in (
        -1122                    "NATURAL" if expression.args.get("natural") else None,
        -1123                    expression.side,
        -1124                    expression.kind,
        -1125                    "JOIN",
        -1126                )
        -1127                if op
        -1128            )
        -1129        )
        -1130        on_sql = self.sql(expression, "on")
        -1131        using = expression.args.get("using")
        -1132
        -1133        if not on_sql and using:
        -1134            on_sql = csv(*(self.sql(column) for column in using))
        -1135
        -1136        if on_sql:
        -1137            on_sql = self.indent(on_sql, skip_first=True)
        -1138            space = self.seg(" " * self.pad) if self.pretty else " "
        -1139            if using:
        -1140                on_sql = f"{space}USING ({on_sql})"
        -1141            else:
        -1142                on_sql = f"{space}ON {on_sql}"
        -1143
        -1144        expression_sql = self.sql(expression, "expression")
        -1145        this_sql = self.sql(expression, "this")
        -1146        return f"{expression_sql}{op_sql} {this_sql}{on_sql}"
        +            
        1141    def join_sql(self, expression: exp.Join) -> str:
        +1142        op_sql = self.seg(
        +1143            " ".join(
        +1144                op
        +1145                for op in (
        +1146                    "NATURAL" if expression.args.get("natural") else None,
        +1147                    expression.side,
        +1148                    expression.kind,
        +1149                    "JOIN",
        +1150                )
        +1151                if op
        +1152            )
        +1153        )
        +1154        on_sql = self.sql(expression, "on")
        +1155        using = expression.args.get("using")
        +1156
        +1157        if not on_sql and using:
        +1158            on_sql = csv(*(self.sql(column) for column in using))
        +1159
        +1160        if on_sql:
        +1161            on_sql = self.indent(on_sql, skip_first=True)
        +1162            space = self.seg(" " * self.pad) if self.pretty else " "
        +1163            if using:
        +1164                on_sql = f"{space}USING ({on_sql})"
        +1165            else:
        +1166                on_sql = f"{space}ON {on_sql}"
        +1167
        +1168        expression_sql = self.sql(expression, "expression")
        +1169        this_sql = self.sql(expression, "this")
        +1170        return f"{expression_sql}{op_sql} {this_sql}{on_sql}"
         
        @@ -7016,10 +7159,10 @@ Default: True
        -
        1148    def lambda_sql(self, expression: exp.Lambda, arrow_sep: str = "->") -> str:
        -1149        args = self.expressions(expression, flat=True)
        -1150        args = f"({args})" if len(args.split(",")) > 1 else args
        -1151        return f"{args} {arrow_sep} {self.sql(expression, 'this')}"
        +            
        1172    def lambda_sql(self, expression: exp.Lambda, arrow_sep: str = "->") -> str:
        +1173        args = self.expressions(expression, flat=True)
        +1174        args = f"({args})" if len(args.split(",")) > 1 else args
        +1175        return f"{args} {arrow_sep} {self.sql(expression, 'this')}"
         
        @@ -7037,23 +7180,23 @@ Default: True
        -
        1153    def lateral_sql(self, expression: exp.Lateral) -> str:
        -1154        this = self.sql(expression, "this")
        -1155
        -1156        if isinstance(expression.this, exp.Subquery):
        -1157            return f"LATERAL {this}"
        -1158
        -1159        if expression.args.get("view"):
        -1160            alias = expression.args["alias"]
        -1161            columns = self.expressions(alias, key="columns", flat=True)
        -1162            table = f" {alias.name}" if alias.name else ""
        -1163            columns = f" AS {columns}" if columns else ""
        -1164            op_sql = self.seg(f"LATERAL VIEW{' OUTER' if expression.args.get('outer') else ''}")
        -1165            return f"{op_sql}{self.sep()}{this}{table}{columns}"
        -1166
        -1167        alias = self.sql(expression, "alias")
        -1168        alias = f" AS {alias}" if alias else ""
        -1169        return f"LATERAL {this}{alias}"
        +            
        1177    def lateral_sql(self, expression: exp.Lateral) -> str:
        +1178        this = self.sql(expression, "this")
        +1179
        +1180        if isinstance(expression.this, exp.Subquery):
        +1181            return f"LATERAL {this}"
        +1182
        +1183        if expression.args.get("view"):
        +1184            alias = expression.args["alias"]
        +1185            columns = self.expressions(alias, key="columns", flat=True)
        +1186            table = f" {alias.name}" if alias.name else ""
        +1187            columns = f" AS {columns}" if columns else ""
        +1188            op_sql = self.seg(f"LATERAL VIEW{' OUTER' if expression.args.get('outer') else ''}")
        +1189            return f"{op_sql}{self.sep()}{this}{table}{columns}"
        +1190
        +1191        alias = self.sql(expression, "alias")
        +1192        alias = f" AS {alias}" if alias else ""
        +1193        return f"LATERAL {this}{alias}"
         
        @@ -7071,9 +7214,9 @@ Default: True
        -
        1171    def limit_sql(self, expression: exp.Limit) -> str:
        -1172        this = self.sql(expression, "this")
        -1173        return f"{this}{self.seg('LIMIT')} {self.sql(expression, 'expression')}"
        +            
        1195    def limit_sql(self, expression: exp.Limit) -> str:
        +1196        this = self.sql(expression, "this")
        +1197        return f"{this}{self.seg('LIMIT')} {self.sql(expression, 'expression')}"
         
        @@ -7091,9 +7234,9 @@ Default: True
        -
        1175    def offset_sql(self, expression: exp.Offset) -> str:
        -1176        this = self.sql(expression, "this")
        -1177        return f"{this}{self.seg('OFFSET')} {self.sql(expression, 'expression')}"
        +            
        1199    def offset_sql(self, expression: exp.Offset) -> str:
        +1200        this = self.sql(expression, "this")
        +1201        return f"{this}{self.seg('OFFSET')} {self.sql(expression, 'expression')}"
         
        @@ -7111,15 +7254,15 @@ Default: True
        -
        1179    def setitem_sql(self, expression: exp.SetItem) -> str:
        -1180        kind = self.sql(expression, "kind")
        -1181        kind = f"{kind} " if kind else ""
        -1182        this = self.sql(expression, "this")
        -1183        expressions = self.expressions(expression)
        -1184        collate = self.sql(expression, "collate")
        -1185        collate = f" COLLATE {collate}" if collate else ""
        -1186        global_ = "GLOBAL " if expression.args.get("global") else ""
        -1187        return f"{global_}{kind}{this}{expressions}{collate}"
        +            
        1203    def setitem_sql(self, expression: exp.SetItem) -> str:
        +1204        kind = self.sql(expression, "kind")
        +1205        kind = f"{kind} " if kind else ""
        +1206        this = self.sql(expression, "this")
        +1207        expressions = self.expressions(expression)
        +1208        collate = self.sql(expression, "collate")
        +1209        collate = f" COLLATE {collate}" if collate else ""
        +1210        global_ = "GLOBAL " if expression.args.get("global") else ""
        +1211        return f"{global_}{kind}{this}{expressions}{collate}"
         
        @@ -7137,11 +7280,30 @@ Default: True
        -
        1189    def set_sql(self, expression: exp.Set) -> str:
        -1190        expressions = (
        -1191            f" {self.expressions(expression, flat=True)}" if expression.expressions else ""
        -1192        )
        -1193        return f"SET{expressions}"
        +            
        1213    def set_sql(self, expression: exp.Set) -> str:
        +1214        expressions = (
        +1215            f" {self.expressions(expression, flat=True)}" if expression.expressions else ""
        +1216        )
        +1217        return f"SET{expressions}"
        +
        + + + + +
        +
        + +
        + + def + pragma_sql(self, expression: sqlglot.expressions.Pragma) -> str: + + + +
        + +
        1219    def pragma_sql(self, expression: exp.Pragma) -> str:
        +1220        return f"PRAGMA {self.sql(expression, 'this')}"
         
        @@ -7159,13 +7321,13 @@ Default: True
        -
        1195    def lock_sql(self, expression: exp.Lock) -> str:
        -1196        if self.LOCKING_READS_SUPPORTED:
        -1197            lock_type = "UPDATE" if expression.args["update"] else "SHARE"
        -1198            return self.seg(f"FOR {lock_type}")
        -1199
        -1200        self.unsupported("Locking reads using 'FOR UPDATE/SHARE' are not supported")
        -1201        return ""
        +            
        1222    def lock_sql(self, expression: exp.Lock) -> str:
        +1223        if self.LOCKING_READS_SUPPORTED:
        +1224            lock_type = "UPDATE" if expression.args["update"] else "SHARE"
        +1225            return self.seg(f"FOR {lock_type}")
        +1226
        +1227        self.unsupported("Locking reads using 'FOR UPDATE/SHARE' are not supported")
        +1228        return ""
         
        @@ -7183,14 +7345,14 @@ Default: True
        -
        1203    def literal_sql(self, expression: exp.Literal) -> str:
        -1204        text = expression.this or ""
        -1205        if expression.is_string:
        -1206            text = text.replace(self.quote_end, self._escaped_quote_end)
        -1207            if self.pretty:
        -1208                text = text.replace("\n", self.SENTINEL_LINE_BREAK)
        -1209            text = f"{self.quote_start}{text}{self.quote_end}"
        -1210        return text
        +            
        1230    def literal_sql(self, expression: exp.Literal) -> str:
        +1231        text = expression.this or ""
        +1232        if expression.is_string:
        +1233            text = text.replace(self.quote_end, self._escaped_quote_end)
        +1234            if self.pretty:
        +1235                text = text.replace("\n", self.SENTINEL_LINE_BREAK)
        +1236            text = f"{self.quote_start}{text}{self.quote_end}"
        +1237        return text
         
        @@ -7208,18 +7370,18 @@ Default: True
        -
        1212    def loaddata_sql(self, expression: exp.LoadData) -> str:
        -1213        local = " LOCAL" if expression.args.get("local") else ""
        -1214        inpath = f" INPATH {self.sql(expression, 'inpath')}"
        -1215        overwrite = " OVERWRITE" if expression.args.get("overwrite") else ""
        -1216        this = f" INTO TABLE {self.sql(expression, 'this')}"
        -1217        partition = self.sql(expression, "partition")
        -1218        partition = f" {partition}" if partition else ""
        -1219        input_format = self.sql(expression, "input_format")
        -1220        input_format = f" INPUTFORMAT {input_format}" if input_format else ""
        -1221        serde = self.sql(expression, "serde")
        -1222        serde = f" SERDE {serde}" if serde else ""
        -1223        return f"LOAD DATA{local}{inpath}{overwrite}{this}{partition}{input_format}{serde}"
        +            
        1239    def loaddata_sql(self, expression: exp.LoadData) -> str:
        +1240        local = " LOCAL" if expression.args.get("local") else ""
        +1241        inpath = f" INPATH {self.sql(expression, 'inpath')}"
        +1242        overwrite = " OVERWRITE" if expression.args.get("overwrite") else ""
        +1243        this = f" INTO TABLE {self.sql(expression, 'this')}"
        +1244        partition = self.sql(expression, "partition")
        +1245        partition = f" {partition}" if partition else ""
        +1246        input_format = self.sql(expression, "input_format")
        +1247        input_format = f" INPUTFORMAT {input_format}" if input_format else ""
        +1248        serde = self.sql(expression, "serde")
        +1249        serde = f" SERDE {serde}" if serde else ""
        +1250        return f"LOAD DATA{local}{inpath}{overwrite}{this}{partition}{input_format}{serde}"
         
        @@ -7237,8 +7399,8 @@ Default: True
        -
        1225    def null_sql(self, *_) -> str:
        -1226        return "NULL"
        +            
        1252    def null_sql(self, *_) -> str:
        +1253        return "NULL"
         
        @@ -7256,8 +7418,8 @@ Default: True
        -
        1228    def boolean_sql(self, expression: exp.Boolean) -> str:
        -1229        return "TRUE" if expression.this else "FALSE"
        +            
        1255    def boolean_sql(self, expression: exp.Boolean) -> str:
        +1256        return "TRUE" if expression.this else "FALSE"
         
        @@ -7275,10 +7437,10 @@ Default: True
        -
        1231    def order_sql(self, expression: exp.Order, flat: bool = False) -> str:
        -1232        this = self.sql(expression, "this")
        -1233        this = f"{this} " if this else this
        -1234        return self.op_expressions(f"{this}ORDER BY", expression, flat=this or flat)  # type: ignore
        +            
        1258    def order_sql(self, expression: exp.Order, flat: bool = False) -> str:
        +1259        this = self.sql(expression, "this")
        +1260        this = f"{this} " if this else this
        +1261        return self.op_expressions(f"{this}ORDER BY", expression, flat=this or flat)  # type: ignore
         
        @@ -7296,8 +7458,8 @@ Default: True
        -
        1236    def cluster_sql(self, expression: exp.Cluster) -> str:
        -1237        return self.op_expressions("CLUSTER BY", expression)
        +            
        1263    def cluster_sql(self, expression: exp.Cluster) -> str:
        +1264        return self.op_expressions("CLUSTER BY", expression)
         
        @@ -7315,8 +7477,8 @@ Default: True
        -
        1239    def distribute_sql(self, expression: exp.Distribute) -> str:
        -1240        return self.op_expressions("DISTRIBUTE BY", expression)
        +            
        1266    def distribute_sql(self, expression: exp.Distribute) -> str:
        +1267        return self.op_expressions("DISTRIBUTE BY", expression)
         
        @@ -7334,8 +7496,8 @@ Default: True
        -
        1242    def sort_sql(self, expression: exp.Sort) -> str:
        -1243        return self.op_expressions("SORT BY", expression)
        +            
        1269    def sort_sql(self, expression: exp.Sort) -> str:
        +1270        return self.op_expressions("SORT BY", expression)
         
        @@ -7353,36 +7515,36 @@ Default: True
        -
        1245    def ordered_sql(self, expression: exp.Ordered) -> str:
        -1246        desc = expression.args.get("desc")
        -1247        asc = not desc
        -1248
        -1249        nulls_first = expression.args.get("nulls_first")
        -1250        nulls_last = not nulls_first
        -1251        nulls_are_large = self.null_ordering == "nulls_are_large"
        -1252        nulls_are_small = self.null_ordering == "nulls_are_small"
        -1253        nulls_are_last = self.null_ordering == "nulls_are_last"
        -1254
        -1255        sort_order = " DESC" if desc else ""
        -1256        nulls_sort_change = ""
        -1257        if nulls_first and (
        -1258            (asc and nulls_are_large) or (desc and nulls_are_small) or nulls_are_last
        -1259        ):
        -1260            nulls_sort_change = " NULLS FIRST"
        -1261        elif (
        -1262            nulls_last
        -1263            and ((asc and nulls_are_small) or (desc and nulls_are_large))
        -1264            and not nulls_are_last
        -1265        ):
        -1266            nulls_sort_change = " NULLS LAST"
        -1267
        -1268        if nulls_sort_change and not self.NULL_ORDERING_SUPPORTED:
        -1269            self.unsupported(
        -1270                "Sorting in an ORDER BY on NULLS FIRST/NULLS LAST is not supported by this dialect"
        -1271            )
        -1272            nulls_sort_change = ""
        -1273
        -1274        return f"{self.sql(expression, 'this')}{sort_order}{nulls_sort_change}"
        +            
        1272    def ordered_sql(self, expression: exp.Ordered) -> str:
        +1273        desc = expression.args.get("desc")
        +1274        asc = not desc
        +1275
        +1276        nulls_first = expression.args.get("nulls_first")
        +1277        nulls_last = not nulls_first
        +1278        nulls_are_large = self.null_ordering == "nulls_are_large"
        +1279        nulls_are_small = self.null_ordering == "nulls_are_small"
        +1280        nulls_are_last = self.null_ordering == "nulls_are_last"
        +1281
        +1282        sort_order = " DESC" if desc else ""
        +1283        nulls_sort_change = ""
        +1284        if nulls_first and (
        +1285            (asc and nulls_are_large) or (desc and nulls_are_small) or nulls_are_last
        +1286        ):
        +1287            nulls_sort_change = " NULLS FIRST"
        +1288        elif (
        +1289            nulls_last
        +1290            and ((asc and nulls_are_small) or (desc and nulls_are_large))
        +1291            and not nulls_are_last
        +1292        ):
        +1293            nulls_sort_change = " NULLS LAST"
        +1294
        +1295        if nulls_sort_change and not self.NULL_ORDERING_SUPPORTED:
        +1296            self.unsupported(
        +1297                "Sorting in an ORDER BY on NULLS FIRST/NULLS LAST is not supported by this dialect"
        +1298            )
        +1299            nulls_sort_change = ""
        +1300
        +1301        return f"{self.sql(expression, 'this')}{sort_order}{nulls_sort_change}"
         
        @@ -7400,31 +7562,31 @@ Default: True
        -
        1276    def matchrecognize_sql(self, expression: exp.MatchRecognize) -> str:
        -1277        partition = self.partition_by_sql(expression)
        -1278        order = self.sql(expression, "order")
        -1279        measures = self.sql(expression, "measures")
        -1280        measures = self.seg(f"MEASURES {measures}") if measures else ""
        -1281        rows = self.sql(expression, "rows")
        -1282        rows = self.seg(rows) if rows else ""
        -1283        after = self.sql(expression, "after")
        -1284        after = self.seg(after) if after else ""
        -1285        pattern = self.sql(expression, "pattern")
        -1286        pattern = self.seg(f"PATTERN ({pattern})") if pattern else ""
        -1287        define = self.sql(expression, "define")
        -1288        define = self.seg(f"DEFINE {define}") if define else ""
        -1289        body = "".join(
        -1290            (
        -1291                partition,
        -1292                order,
        -1293                measures,
        -1294                rows,
        -1295                after,
        -1296                pattern,
        -1297                define,
        -1298            )
        -1299        )
        -1300        return f"{self.seg('MATCH_RECOGNIZE')} {self.wrap(body)}"
        +            
        1303    def matchrecognize_sql(self, expression: exp.MatchRecognize) -> str:
        +1304        partition = self.partition_by_sql(expression)
        +1305        order = self.sql(expression, "order")
        +1306        measures = self.sql(expression, "measures")
        +1307        measures = self.seg(f"MEASURES {measures}") if measures else ""
        +1308        rows = self.sql(expression, "rows")
        +1309        rows = self.seg(rows) if rows else ""
        +1310        after = self.sql(expression, "after")
        +1311        after = self.seg(after) if after else ""
        +1312        pattern = self.sql(expression, "pattern")
        +1313        pattern = self.seg(f"PATTERN ({pattern})") if pattern else ""
        +1314        define = self.sql(expression, "define")
        +1315        define = self.seg(f"DEFINE {define}") if define else ""
        +1316        body = "".join(
        +1317            (
        +1318                partition,
        +1319                order,
        +1320                measures,
        +1321                rows,
        +1322                after,
        +1323                pattern,
        +1324                define,
        +1325            )
        +1326        )
        +1327        return f"{self.seg('MATCH_RECOGNIZE')} {self.wrap(body)}"
         
        @@ -7442,29 +7604,38 @@ Default: True
        -
        1302    def query_modifiers(self, expression: exp.Expression, *sqls: str) -> str:
        -1303        return csv(
        -1304            *sqls,
        -1305            *[self.sql(sql) for sql in expression.args.get("joins") or []],
        -1306            self.sql(expression, "match"),
        -1307            *[self.sql(sql) for sql in expression.args.get("laterals") or []],
        -1308            self.sql(expression, "where"),
        -1309            self.sql(expression, "group"),
        -1310            self.sql(expression, "having"),
        -1311            self.sql(expression, "qualify"),
        -1312            self.seg("WINDOW ") + self.expressions(expression, "windows", flat=True)
        -1313            if expression.args.get("windows")
        -1314            else "",
        -1315            self.sql(expression, "distribute"),
        -1316            self.sql(expression, "sort"),
        -1317            self.sql(expression, "cluster"),
        -1318            self.sql(expression, "order"),
        -1319            self.sql(expression, "limit"),
        -1320            self.sql(expression, "offset"),
        -1321            self.sql(expression, "lock"),
        -1322            self.sql(expression, "sample"),
        -1323            sep="",
        -1324        )
        +            
        1329    def query_modifiers(self, expression: exp.Expression, *sqls: str) -> str:
        +1330        limit = expression.args.get("limit")
        +1331
        +1332        if self.LIMIT_FETCH == "LIMIT" and isinstance(limit, exp.Fetch):
        +1333            limit = exp.Limit(expression=limit.args.get("count"))
        +1334        elif self.LIMIT_FETCH == "FETCH" and isinstance(limit, exp.Limit):
        +1335            limit = exp.Fetch(direction="FIRST", count=limit.expression)
        +1336
        +1337        fetch = isinstance(limit, exp.Fetch)
        +1338
        +1339        return csv(
        +1340            *sqls,
        +1341            *[self.sql(sql) for sql in expression.args.get("joins") or []],
        +1342            self.sql(expression, "match"),
        +1343            *[self.sql(sql) for sql in expression.args.get("laterals") or []],
        +1344            self.sql(expression, "where"),
        +1345            self.sql(expression, "group"),
        +1346            self.sql(expression, "having"),
        +1347            self.sql(expression, "qualify"),
        +1348            self.seg("WINDOW ") + self.expressions(expression, "windows", flat=True)
        +1349            if expression.args.get("windows")
        +1350            else "",
        +1351            self.sql(expression, "distribute"),
        +1352            self.sql(expression, "sort"),
        +1353            self.sql(expression, "cluster"),
        +1354            self.sql(expression, "order"),
        +1355            self.sql(expression, "offset") if fetch else self.sql(limit),
        +1356            self.sql(limit) if fetch else self.sql(expression, "offset"),
        +1357            self.sql(expression, "lock"),
        +1358            self.sql(expression, "sample"),
        +1359            sep="",
        +1360        )
         
        @@ -7482,19 +7653,21 @@ Default: True
        -
        1326    def select_sql(self, expression: exp.Select) -> str:
        -1327        hint = self.sql(expression, "hint")
        -1328        distinct = self.sql(expression, "distinct")
        -1329        distinct = f" {distinct}" if distinct else ""
        -1330        expressions = self.expressions(expression)
        -1331        expressions = f"{self.sep()}{expressions}" if expressions else expressions
        -1332        sql = self.query_modifiers(
        -1333            expression,
        -1334            f"SELECT{hint}{distinct}{expressions}",
        -1335            self.sql(expression, "into", comment=False),
        -1336            self.sql(expression, "from", comment=False),
        -1337        )
        -1338        return self.prepend_ctes(expression, sql)
        +            
        1362    def select_sql(self, expression: exp.Select) -> str:
        +1363        kind = expression.args.get("kind")
        +1364        kind = f" AS {kind}" if kind else ""
        +1365        hint = self.sql(expression, "hint")
        +1366        distinct = self.sql(expression, "distinct")
        +1367        distinct = f" {distinct}" if distinct else ""
        +1368        expressions = self.expressions(expression)
        +1369        expressions = f"{self.sep()}{expressions}" if expressions else expressions
        +1370        sql = self.query_modifiers(
        +1371            expression,
        +1372            f"SELECT{kind}{hint}{distinct}{expressions}",
        +1373            self.sql(expression, "into", comment=False),
        +1374            self.sql(expression, "from", comment=False),
        +1375        )
        +1376        return self.prepend_ctes(expression, sql)
         
        @@ -7512,11 +7685,11 @@ Default: True
        -
        1340    def schema_sql(self, expression: exp.Schema) -> str:
        -1341        this = self.sql(expression, "this")
        -1342        this = f"{this} " if this else ""
        -1343        sql = f"({self.sep('')}{self.expressions(expression)}{self.seg(')', sep='')}"
        -1344        return f"{this}{sql}"
        +            
        1378    def schema_sql(self, expression: exp.Schema) -> str:
        +1379        this = self.sql(expression, "this")
        +1380        this = f"{this} " if this else ""
        +1381        sql = f"({self.sep('')}{self.expressions(expression)}{self.seg(')', sep='')}"
        +1382        return f"{this}{sql}"
         
        @@ -7534,12 +7707,12 @@ Default: True
        -
        1346    def star_sql(self, expression: exp.Star) -> str:
        -1347        except_ = self.expressions(expression, key="except", flat=True)
        -1348        except_ = f"{self.seg(self.STAR_MAPPING['except'])} ({except_})" if except_ else ""
        -1349        replace = self.expressions(expression, key="replace", flat=True)
        -1350        replace = f"{self.seg(self.STAR_MAPPING['replace'])} ({replace})" if replace else ""
        -1351        return f"*{except_}{replace}"
        +            
        1384    def star_sql(self, expression: exp.Star) -> str:
        +1385        except_ = self.expressions(expression, key="except", flat=True)
        +1386        except_ = f"{self.seg(self.STAR_MAPPING['except'])} ({except_})" if except_ else ""
        +1387        replace = self.expressions(expression, key="replace", flat=True)
        +1388        replace = f"{self.seg(self.STAR_MAPPING['replace'])} ({replace})" if replace else ""
        +1389        return f"*{except_}{replace}"
         
        @@ -7557,8 +7730,8 @@ Default: True
        -
        1353    def structkwarg_sql(self, expression: exp.StructKwarg) -> str:
        -1354        return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}"
        +            
        1391    def structkwarg_sql(self, expression: exp.StructKwarg) -> str:
        +1392        return f"{self.sql(expression, 'this')} {self.sql(expression, 'expression')}"
         
        @@ -7576,10 +7749,10 @@ Default: True
        -
        1356    def parameter_sql(self, expression: exp.Parameter) -> str:
        -1357        this = self.sql(expression, "this")
        -1358        this = f"{{{this}}}" if expression.args.get("wrapped") else f"{this}"
        -1359        return f"{self.PARAMETER_TOKEN}{this}"
        +            
        1394    def parameter_sql(self, expression: exp.Parameter) -> str:
        +1395        this = self.sql(expression, "this")
        +1396        this = f"{{{this}}}" if expression.args.get("wrapped") else f"{this}"
        +1397        return f"{self.PARAMETER_TOKEN}{this}"
         
        @@ -7597,12 +7770,12 @@ Default: True
        -
        1361    def sessionparameter_sql(self, expression: exp.SessionParameter) -> str:
        -1362        this = self.sql(expression, "this")
        -1363        kind = expression.text("kind")
        -1364        if kind:
        -1365            kind = f"{kind}."
        -1366        return f"@@{kind}{this}"
        +            
        1399    def sessionparameter_sql(self, expression: exp.SessionParameter) -> str:
        +1400        this = self.sql(expression, "this")
        +1401        kind = expression.text("kind")
        +1402        if kind:
        +1403            kind = f"{kind}."
        +1404        return f"@@{kind}{this}"
         
        @@ -7620,8 +7793,8 @@ Default: True
        -
        1368    def placeholder_sql(self, expression: exp.Placeholder) -> str:
        -1369        return f":{expression.name}" if expression.name else "?"
        +            
        1406    def placeholder_sql(self, expression: exp.Placeholder) -> str:
        +1407        return f":{expression.name}" if expression.name else "?"
         
        @@ -7639,18 +7812,18 @@ Default: True
        -
        1371    def subquery_sql(self, expression: exp.Subquery, sep: str = " AS ") -> str:
        -1372        alias = self.sql(expression, "alias")
        -1373        alias = f"{sep}{alias}" if alias else ""
        -1374
        -1375        sql = self.query_modifiers(
        -1376            expression,
        -1377            self.wrap(expression),
        -1378            alias,
        -1379            self.expressions(expression, key="pivots", sep=" "),
        -1380        )
        -1381
        -1382        return self.prepend_ctes(expression, sql)
        +            
        1409    def subquery_sql(self, expression: exp.Subquery, sep: str = " AS ") -> str:
        +1410        alias = self.sql(expression, "alias")
        +1411        alias = f"{sep}{alias}" if alias else ""
        +1412
        +1413        sql = self.query_modifiers(
        +1414            expression,
        +1415            self.wrap(expression),
        +1416            alias,
        +1417            self.expressions(expression, key="pivots", sep=" "),
        +1418        )
        +1419
        +1420        return self.prepend_ctes(expression, sql)
         
        @@ -7668,9 +7841,9 @@ Default: True
        -
        1384    def qualify_sql(self, expression: exp.Qualify) -> str:
        -1385        this = self.indent(self.sql(expression, "this"))
        -1386        return f"{self.seg('QUALIFY')}{self.sep()}{this}"
        +            
        1422    def qualify_sql(self, expression: exp.Qualify) -> str:
        +1423        this = self.indent(self.sql(expression, "this"))
        +1424        return f"{self.seg('QUALIFY')}{self.sep()}{this}"
         
        @@ -7688,11 +7861,11 @@ Default: True
        -
        1388    def union_sql(self, expression: exp.Union) -> str:
        -1389        return self.prepend_ctes(
        -1390            expression,
        -1391            self.set_operation(expression, self.union_op(expression)),
        -1392        )
        +            
        1426    def union_sql(self, expression: exp.Union) -> str:
        +1427        return self.prepend_ctes(
        +1428            expression,
        +1429            self.set_operation(expression, self.union_op(expression)),
        +1430        )
         
        @@ -7710,10 +7883,10 @@ Default: True
        -
        1394    def union_op(self, expression: exp.Union) -> str:
        -1395        kind = " DISTINCT" if self.EXPLICIT_UNION else ""
        -1396        kind = kind if expression.args.get("distinct") else " ALL"
        -1397        return f"UNION{kind}"
        +            
        1432    def union_op(self, expression: exp.Union) -> str:
        +1433        kind = " DISTINCT" if self.EXPLICIT_UNION else ""
        +1434        kind = kind if expression.args.get("distinct") else " ALL"
        +1435        return f"UNION{kind}"
         
        @@ -7731,19 +7904,19 @@ Default: True
        -
        1399    def unnest_sql(self, expression: exp.Unnest) -> str:
        -1400        args = self.expressions(expression, flat=True)
        -1401        alias = expression.args.get("alias")
        -1402        if alias and self.unnest_column_only:
        -1403            columns = alias.columns
        -1404            alias = self.sql(columns[0]) if columns else ""
        -1405        else:
        -1406            alias = self.sql(expression, "alias")
        -1407        alias = f" AS {alias}" if alias else alias
        -1408        ordinality = " WITH ORDINALITY" if expression.args.get("ordinality") else ""
        -1409        offset = expression.args.get("offset")
        -1410        offset = f" WITH OFFSET AS {self.sql(offset)}" if offset else ""
        -1411        return f"UNNEST({args}){ordinality}{alias}{offset}"
        +            
        1437    def unnest_sql(self, expression: exp.Unnest) -> str:
        +1438        args = self.expressions(expression, flat=True)
        +1439        alias = expression.args.get("alias")
        +1440        if alias and self.unnest_column_only:
        +1441            columns = alias.columns
        +1442            alias = self.sql(columns[0]) if columns else ""
        +1443        else:
        +1444            alias = self.sql(expression, "alias")
        +1445        alias = f" AS {alias}" if alias else alias
        +1446        ordinality = " WITH ORDINALITY" if expression.args.get("ordinality") else ""
        +1447        offset = expression.args.get("offset")
        +1448        offset = f" WITH OFFSET AS {self.sql(offset)}" if offset else ""
        +1449        return f"UNNEST({args}){ordinality}{alias}{offset}"
         
        @@ -7761,9 +7934,9 @@ Default: True
        -
        1413    def where_sql(self, expression: exp.Where) -> str:
        -1414        this = self.indent(self.sql(expression, "this"))
        -1415        return f"{self.seg('WHERE')}{self.sep()}{this}"
        +            
        1451    def where_sql(self, expression: exp.Where) -> str:
        +1452        this = self.indent(self.sql(expression, "this"))
        +1453        return f"{self.seg('WHERE')}{self.sep()}{this}"
         
        @@ -7781,28 +7954,28 @@ Default: True
        -
        1417    def window_sql(self, expression: exp.Window) -> str:
        -1418        this = self.sql(expression, "this")
        -1419
        -1420        partition = self.partition_by_sql(expression)
        -1421
        -1422        order = expression.args.get("order")
        -1423        order_sql = self.order_sql(order, flat=True) if order else ""
        -1424
        -1425        partition_sql = partition + " " if partition and order else partition
        -1426
        -1427        spec = expression.args.get("spec")
        -1428        spec_sql = " " + self.window_spec_sql(spec) if spec else ""
        -1429
        -1430        alias = self.sql(expression, "alias")
        -1431        this = f"{this} {'AS' if expression.arg_key == 'windows' else 'OVER'}"
        -1432
        -1433        if not partition and not order and not spec and alias:
        -1434            return f"{this} {alias}"
        -1435
        -1436        window_args = alias + partition_sql + order_sql + spec_sql
        -1437
        -1438        return f"{this} ({window_args.strip()})"
        +            
        1455    def window_sql(self, expression: exp.Window) -> str:
        +1456        this = self.sql(expression, "this")
        +1457
        +1458        partition = self.partition_by_sql(expression)
        +1459
        +1460        order = expression.args.get("order")
        +1461        order_sql = self.order_sql(order, flat=True) if order else ""
        +1462
        +1463        partition_sql = partition + " " if partition and order else partition
        +1464
        +1465        spec = expression.args.get("spec")
        +1466        spec_sql = " " + self.window_spec_sql(spec) if spec else ""
        +1467
        +1468        alias = self.sql(expression, "alias")
        +1469        this = f"{this} {'AS' if expression.arg_key == 'windows' else 'OVER'}"
        +1470
        +1471        if not partition and not order and not spec and alias:
        +1472            return f"{this} {alias}"
        +1473
        +1474        window_args = alias + partition_sql + order_sql + spec_sql
        +1475
        +1476        return f"{this} ({window_args.strip()})"
         
        @@ -7820,9 +7993,9 @@ Default: True
        -
        1440    def partition_by_sql(self, expression: exp.Window | exp.MatchRecognize) -> str:
        -1441        partition = self.expressions(expression, key="partition_by", flat=True)
        -1442        return f"PARTITION BY {partition}" if partition else ""
        +            
        1478    def partition_by_sql(self, expression: exp.Window | exp.MatchRecognize) -> str:
        +1479        partition = self.expressions(expression, key="partition_by", flat=True)
        +1480        return f"PARTITION BY {partition}" if partition else ""
         
        @@ -7840,14 +8013,14 @@ Default: True
        -
        1444    def window_spec_sql(self, expression: exp.WindowSpec) -> str:
        -1445        kind = self.sql(expression, "kind")
        -1446        start = csv(self.sql(expression, "start"), self.sql(expression, "start_side"), sep=" ")
        -1447        end = (
        -1448            csv(self.sql(expression, "end"), self.sql(expression, "end_side"), sep=" ")
        -1449            or "CURRENT ROW"
        -1450        )
        -1451        return f"{kind} BETWEEN {start} AND {end}"
        +            
        1482    def window_spec_sql(self, expression: exp.WindowSpec) -> str:
        +1483        kind = self.sql(expression, "kind")
        +1484        start = csv(self.sql(expression, "start"), self.sql(expression, "start_side"), sep=" ")
        +1485        end = (
        +1486            csv(self.sql(expression, "end"), self.sql(expression, "end_side"), sep=" ")
        +1487            or "CURRENT ROW"
        +1488        )
        +1489        return f"{kind} BETWEEN {start} AND {end}"
         
        @@ -7865,10 +8038,10 @@ Default: True
        -
        1453    def withingroup_sql(self, expression: exp.WithinGroup) -> str:
        -1454        this = self.sql(expression, "this")
        -1455        expression_sql = self.sql(expression, "expression")[1:]  # order has a leading space
        -1456        return f"{this} WITHIN GROUP ({expression_sql})"
        +            
        1491    def withingroup_sql(self, expression: exp.WithinGroup) -> str:
        +1492        this = self.sql(expression, "this")
        +1493        expression_sql = self.sql(expression, "expression")[1:]  # order has a leading space
        +1494        return f"{this} WITHIN GROUP ({expression_sql})"
         
        @@ -7886,11 +8059,11 @@ Default: True
        -
        1458    def between_sql(self, expression: exp.Between) -> str:
        -1459        this = self.sql(expression, "this")
        -1460        low = self.sql(expression, "low")
        -1461        high = self.sql(expression, "high")
        -1462        return f"{this} BETWEEN {low} AND {high}"
        +            
        1496    def between_sql(self, expression: exp.Between) -> str:
        +1497        this = self.sql(expression, "this")
        +1498        low = self.sql(expression, "low")
        +1499        high = self.sql(expression, "high")
        +1500        return f"{this} BETWEEN {low} AND {high}"
         
        @@ -7908,11 +8081,11 @@ Default: True
        -
        1464    def bracket_sql(self, expression: exp.Bracket) -> str:
        -1465        expressions = apply_index_offset(expression.expressions, self.index_offset)
        -1466        expressions_sql = ", ".join(self.sql(e) for e in expressions)
        -1467
        -1468        return f"{self.sql(expression, 'this')}[{expressions_sql}]"
        +            
        1502    def bracket_sql(self, expression: exp.Bracket) -> str:
        +1503        expressions = apply_index_offset(expression.expressions, self.index_offset)
        +1504        expressions_sql = ", ".join(self.sql(e) for e in expressions)
        +1505
        +1506        return f"{self.sql(expression, 'this')}[{expressions_sql}]"
         
        @@ -7930,8 +8103,8 @@ Default: True
        -
        1470    def all_sql(self, expression: exp.All) -> str:
        -1471        return f"ALL {self.wrap(expression)}"
        +            
        1508    def all_sql(self, expression: exp.All) -> str:
        +1509        return f"ALL {self.wrap(expression)}"
         
        @@ -7949,11 +8122,11 @@ Default: True
        -
        1473    def any_sql(self, expression: exp.Any) -> str:
        -1474        this = self.sql(expression, "this")
        -1475        if isinstance(expression.this, exp.Subqueryable):
        -1476            this = self.wrap(this)
        -1477        return f"ANY {this}"
        +            
        1511    def any_sql(self, expression: exp.Any) -> str:
        +1512        this = self.sql(expression, "this")
        +1513        if isinstance(expression.this, exp.Subqueryable):
        +1514            this = self.wrap(this)
        +1515        return f"ANY {this}"
         
        @@ -7971,8 +8144,8 @@ Default: True
        -
        1479    def exists_sql(self, expression: exp.Exists) -> str:
        -1480        return f"EXISTS{self.wrap(expression)}"
        +            
        1517    def exists_sql(self, expression: exp.Exists) -> str:
        +1518        return f"EXISTS{self.wrap(expression)}"
         
        @@ -7990,25 +8163,25 @@ Default: True
        -
        1482    def case_sql(self, expression: exp.Case) -> str:
        -1483        this = self.sql(expression, "this")
        -1484        statements = [f"CASE {this}" if this else "CASE"]
        -1485
        -1486        for e in expression.args["ifs"]:
        -1487            statements.append(f"WHEN {self.sql(e, 'this')}")
        -1488            statements.append(f"THEN {self.sql(e, 'true')}")
        -1489
        -1490        default = self.sql(expression, "default")
        -1491
        -1492        if default:
        -1493            statements.append(f"ELSE {default}")
        -1494
        -1495        statements.append("END")
        -1496
        -1497        if self.pretty and self.text_width(statements) > self._max_text_width:
        -1498            return self.indent("\n".join(statements), skip_first=True, skip_last=True)
        -1499
        -1500        return " ".join(statements)
        +            
        1520    def case_sql(self, expression: exp.Case) -> str:
        +1521        this = self.sql(expression, "this")
        +1522        statements = [f"CASE {this}" if this else "CASE"]
        +1523
        +1524        for e in expression.args["ifs"]:
        +1525            statements.append(f"WHEN {self.sql(e, 'this')}")
        +1526            statements.append(f"THEN {self.sql(e, 'true')}")
        +1527
        +1528        default = self.sql(expression, "default")
        +1529
        +1530        if default:
        +1531            statements.append(f"ELSE {default}")
        +1532
        +1533        statements.append("END")
        +1534
        +1535        if self.pretty and self.text_width(statements) > self._max_text_width:
        +1536            return self.indent("\n".join(statements), skip_first=True, skip_last=True)
        +1537
        +1538        return " ".join(statements)
         
        @@ -8026,10 +8199,10 @@ Default: True
        -
        1502    def constraint_sql(self, expression: exp.Constraint) -> str:
        -1503        this = self.sql(expression, "this")
        -1504        expressions = self.expressions(expression, flat=True)
        -1505        return f"CONSTRAINT {this} {expressions}"
        +            
        1540    def constraint_sql(self, expression: exp.Constraint) -> str:
        +1541        this = self.sql(expression, "this")
        +1542        expressions = self.expressions(expression, flat=True)
        +1543        return f"CONSTRAINT {this} {expressions}"
         
        @@ -8047,10 +8220,10 @@ Default: True
        -
        1507    def extract_sql(self, expression: exp.Extract) -> str:
        -1508        this = self.sql(expression, "this")
        -1509        expression_sql = self.sql(expression, "expression")
        -1510        return f"EXTRACT({this} FROM {expression_sql})"
        +            
        1545    def extract_sql(self, expression: exp.Extract) -> str:
        +1546        this = self.sql(expression, "this")
        +1547        expression_sql = self.sql(expression, "expression")
        +1548        return f"EXTRACT({this} FROM {expression_sql})"
         
        @@ -8068,15 +8241,15 @@ Default: True
        -
        1512    def trim_sql(self, expression: exp.Trim) -> str:
        -1513        trim_type = self.sql(expression, "position")
        -1514
        -1515        if trim_type == "LEADING":
        -1516            return self.func("LTRIM", expression.this)
        -1517        elif trim_type == "TRAILING":
        -1518            return self.func("RTRIM", expression.this)
        -1519        else:
        -1520            return self.func("TRIM", expression.this, expression.expression)
        +            
        1550    def trim_sql(self, expression: exp.Trim) -> str:
        +1551        trim_type = self.sql(expression, "position")
        +1552
        +1553        if trim_type == "LEADING":
        +1554            return self.func("LTRIM", expression.this)
        +1555        elif trim_type == "TRAILING":
        +1556            return self.func("RTRIM", expression.this)
        +1557        else:
        +1558            return self.func("TRIM", expression.this, expression.expression)
         
        @@ -8094,10 +8267,10 @@ Default: True
        -
        1522    def concat_sql(self, expression: exp.Concat) -> str:
        -1523        if len(expression.expressions) == 1:
        -1524            return self.sql(expression.expressions[0])
        -1525        return self.function_fallback_sql(expression)
        +            
        1560    def concat_sql(self, expression: exp.Concat) -> str:
        +1561        if len(expression.expressions) == 1:
        +1562            return self.sql(expression.expressions[0])
        +1563        return self.function_fallback_sql(expression)
         
        @@ -8115,9 +8288,9 @@ Default: True
        -
        1527    def check_sql(self, expression: exp.Check) -> str:
        -1528        this = self.sql(expression, key="this")
        -1529        return f"CHECK ({this})"
        +            
        1565    def check_sql(self, expression: exp.Check) -> str:
        +1566        this = self.sql(expression, key="this")
        +1567        return f"CHECK ({this})"
         
        @@ -8135,15 +8308,15 @@ Default: True
        -
        1531    def foreignkey_sql(self, expression: exp.ForeignKey) -> str:
        -1532        expressions = self.expressions(expression, flat=True)
        -1533        reference = self.sql(expression, "reference")
        -1534        reference = f" {reference}" if reference else ""
        -1535        delete = self.sql(expression, "delete")
        -1536        delete = f" ON DELETE {delete}" if delete else ""
        -1537        update = self.sql(expression, "update")
        -1538        update = f" ON UPDATE {update}" if update else ""
        -1539        return f"FOREIGN KEY ({expressions}){reference}{delete}{update}"
        +            
        1569    def foreignkey_sql(self, expression: exp.ForeignKey) -> str:
        +1570        expressions = self.expressions(expression, flat=True)
        +1571        reference = self.sql(expression, "reference")
        +1572        reference = f" {reference}" if reference else ""
        +1573        delete = self.sql(expression, "delete")
        +1574        delete = f" ON DELETE {delete}" if delete else ""
        +1575        update = self.sql(expression, "update")
        +1576        update = f" ON UPDATE {update}" if update else ""
        +1577        return f"FOREIGN KEY ({expressions}){reference}{delete}{update}"
         
        @@ -8161,11 +8334,11 @@ Default: True
        -
        1541    def primarykey_sql(self, expression: exp.ForeignKey) -> str:
        -1542        expressions = self.expressions(expression, flat=True)
        -1543        options = self.expressions(expression, "options", flat=True, sep=" ")
        -1544        options = f" {options}" if options else ""
        -1545        return f"PRIMARY KEY ({expressions}){options}"
        +            
        1579    def primarykey_sql(self, expression: exp.ForeignKey) -> str:
        +1580        expressions = self.expressions(expression, flat=True)
        +1581        options = self.expressions(expression, "options", flat=True, sep=" ")
        +1582        options = f" {options}" if options else ""
        +1583        return f"PRIMARY KEY ({expressions}){options}"
         
        @@ -8183,9 +8356,9 @@ Default: True
        -
        1547    def unique_sql(self, expression: exp.Unique) -> str:
        -1548        columns = self.expressions(expression, key="expressions")
        -1549        return f"UNIQUE ({columns})"
        +            
        1585    def unique_sql(self, expression: exp.Unique) -> str:
        +1586        columns = self.expressions(expression, key="expressions")
        +1587        return f"UNIQUE ({columns})"
         
        @@ -8203,10 +8376,61 @@ Default: True
        -
        1551    def if_sql(self, expression: exp.If) -> str:
        -1552        return self.case_sql(
        -1553            exp.Case(ifs=[expression.copy()], default=expression.args.get("false"))
        -1554        )
        +            
        1589    def if_sql(self, expression: exp.If) -> str:
        +1590        return self.case_sql(
        +1591            exp.Case(ifs=[expression.copy()], default=expression.args.get("false"))
        +1592        )
        +
        + + + + +
        +
        + +
        + + def + jsonkeyvalue_sql(self, expression: sqlglot.expressions.JSONKeyValue) -> str: + + + +
        + +
        1594    def jsonkeyvalue_sql(self, expression: exp.JSONKeyValue) -> str:
        +1595        return f"{self.sql(expression, 'this')}: {self.sql(expression, 'expression')}"
        +
        + + + + +
        +
        + +
        + + def + jsonobject_sql(self, expression: sqlglot.expressions.JSONObject) -> str: + + + +
        + +
        1597    def jsonobject_sql(self, expression: exp.JSONObject) -> str:
        +1598        expressions = self.expressions(expression)
        +1599        null_handling = expression.args.get("null_handling")
        +1600        null_handling = f" {null_handling}" if null_handling else ""
        +1601        unique_keys = expression.args.get("unique_keys")
        +1602        if unique_keys is not None:
        +1603            unique_keys = f" {'WITH' if unique_keys else 'WITHOUT'} UNIQUE KEYS"
        +1604        else:
        +1605            unique_keys = ""
        +1606        return_type = self.sql(expression, "return_type")
        +1607        return_type = f" RETURNING {return_type}" if return_type else ""
        +1608        format_json = " FORMAT JSON" if expression.args.get("format_json") else ""
        +1609        encoding = self.sql(expression, "encoding")
        +1610        encoding = f" ENCODING {encoding}" if encoding else ""
        +1611        return f"JSON_OBJECT({expressions}{null_handling}{unique_keys}{return_type}{format_json}{encoding})"
         
        @@ -8224,22 +8448,22 @@ Default: True
        -
        1556    def in_sql(self, expression: exp.In) -> str:
        -1557        query = expression.args.get("query")
        -1558        unnest = expression.args.get("unnest")
        -1559        field = expression.args.get("field")
        -1560        is_global = " GLOBAL" if expression.args.get("is_global") else ""
        -1561
        -1562        if query:
        -1563            in_sql = self.wrap(query)
        -1564        elif unnest:
        -1565            in_sql = self.in_unnest_op(unnest)
        -1566        elif field:
        -1567            in_sql = self.sql(field)
        -1568        else:
        -1569            in_sql = f"({self.expressions(expression, flat=True)})"
        -1570
        -1571        return f"{self.sql(expression, 'this')}{is_global} IN {in_sql}"
        +            
        1613    def in_sql(self, expression: exp.In) -> str:
        +1614        query = expression.args.get("query")
        +1615        unnest = expression.args.get("unnest")
        +1616        field = expression.args.get("field")
        +1617        is_global = " GLOBAL" if expression.args.get("is_global") else ""
        +1618
        +1619        if query:
        +1620            in_sql = self.wrap(query)
        +1621        elif unnest:
        +1622            in_sql = self.in_unnest_op(unnest)
        +1623        elif field:
        +1624            in_sql = self.sql(field)
        +1625        else:
        +1626            in_sql = f"({self.expressions(expression, flat=True)})"
        +1627
        +1628        return f"{self.sql(expression, 'this')}{is_global} IN {in_sql}"
         
        @@ -8257,8 +8481,8 @@ Default: True
        -
        1573    def in_unnest_op(self, unnest: exp.Unnest) -> str:
        -1574        return f"(SELECT {self.sql(unnest)})"
        +            
        1630    def in_unnest_op(self, unnest: exp.Unnest) -> str:
        +1631        return f"(SELECT {self.sql(unnest)})"
         
        @@ -8276,19 +8500,19 @@ Default: True
        -
        1576    def interval_sql(self, expression: exp.Interval) -> str:
        -1577        this = expression.args.get("this")
        -1578        if this:
        -1579            this = (
        -1580                f" {this}"
        -1581                if isinstance(this, exp.Literal) or isinstance(this, exp.Paren)
        -1582                else f" ({this})"
        -1583            )
        -1584        else:
        -1585            this = ""
        -1586        unit = self.sql(expression, "unit")
        -1587        unit = f" {unit}" if unit else ""
        -1588        return f"INTERVAL{this}{unit}"
        +            
        1633    def interval_sql(self, expression: exp.Interval) -> str:
        +1634        this = expression.args.get("this")
        +1635        if this:
        +1636            this = (
        +1637                f" {this}"
        +1638                if isinstance(this, exp.Literal) or isinstance(this, exp.Paren)
        +1639                else f" ({this})"
        +1640            )
        +1641        else:
        +1642            this = ""
        +1643        unit = self.sql(expression, "unit")
        +1644        unit = f" {unit}" if unit else ""
        +1645        return f"INTERVAL{this}{unit}"
         
        @@ -8306,8 +8530,8 @@ Default: True
        -
        1590    def return_sql(self, expression: exp.Return) -> str:
        -1591        return f"RETURN {self.sql(expression, 'this')}"
        +            
        1647    def return_sql(self, expression: exp.Return) -> str:
        +1648        return f"RETURN {self.sql(expression, 'this')}"
         
        @@ -8325,13 +8549,13 @@ Default: True
        -
        1593    def reference_sql(self, expression: exp.Reference) -> str:
        -1594        this = self.sql(expression, "this")
        -1595        expressions = self.expressions(expression, flat=True)
        -1596        expressions = f"({expressions})" if expressions else ""
        -1597        options = self.expressions(expression, "options", flat=True, sep=" ")
        -1598        options = f" {options}" if options else ""
        -1599        return f"REFERENCES {this}{expressions}{options}"
        +            
        1650    def reference_sql(self, expression: exp.Reference) -> str:
        +1651        this = self.sql(expression, "this")
        +1652        expressions = self.expressions(expression, flat=True)
        +1653        expressions = f"({expressions})" if expressions else ""
        +1654        options = self.expressions(expression, "options", flat=True, sep=" ")
        +1655        options = f" {options}" if options else ""
        +1656        return f"REFERENCES {this}{expressions}{options}"
         
        @@ -8349,8 +8573,8 @@ Default: True
        -
        1601    def anonymous_sql(self, expression: exp.Anonymous) -> str:
        -1602        return self.func(expression.name, *expression.expressions)
        +            
        1658    def anonymous_sql(self, expression: exp.Anonymous) -> str:
        +1659        return self.func(expression.name, *expression.expressions)
         
        @@ -8368,14 +8592,14 @@ Default: True
        -
        1604    def paren_sql(self, expression: exp.Paren) -> str:
        -1605        if isinstance(expression.unnest(), exp.Select):
        -1606            sql = self.wrap(expression)
        -1607        else:
        -1608            sql = self.seg(self.indent(self.sql(expression, "this")), sep="")
        -1609            sql = f"({sql}{self.seg(')', sep='')}"
        -1610
        -1611        return self.prepend_ctes(expression, sql)
        +            
        1661    def paren_sql(self, expression: exp.Paren) -> str:
        +1662        if isinstance(expression.unnest(), exp.Select):
        +1663            sql = self.wrap(expression)
        +1664        else:
        +1665            sql = self.seg(self.indent(self.sql(expression, "this")), sep="")
        +1666            sql = f"({sql}{self.seg(')', sep='')}"
        +1667
        +1668        return self.prepend_ctes(expression, sql)
         
        @@ -8393,11 +8617,11 @@ Default: True
        -
        1613    def neg_sql(self, expression: exp.Neg) -> str:
        -1614        # This makes sure we don't convert "- - 5" to "--5", which is a comment
        -1615        this_sql = self.sql(expression, "this")
        -1616        sep = " " if this_sql[0] == "-" else ""
        -1617        return f"-{sep}{this_sql}"
        +            
        1670    def neg_sql(self, expression: exp.Neg) -> str:
        +1671        # This makes sure we don't convert "- - 5" to "--5", which is a comment
        +1672        this_sql = self.sql(expression, "this")
        +1673        sep = " " if this_sql[0] == "-" else ""
        +1674        return f"-{sep}{this_sql}"
         
        @@ -8415,8 +8639,8 @@ Default: True
        -
        1619    def not_sql(self, expression: exp.Not) -> str:
        -1620        return f"NOT {self.sql(expression, 'this')}"
        +            
        1676    def not_sql(self, expression: exp.Not) -> str:
        +1677        return f"NOT {self.sql(expression, 'this')}"
         
        @@ -8434,10 +8658,10 @@ Default: True
        -
        1622    def alias_sql(self, expression: exp.Alias) -> str:
        -1623        to_sql = self.sql(expression, "alias")
        -1624        to_sql = f" AS {to_sql}" if to_sql else ""
        -1625        return f"{self.sql(expression, 'this')}{to_sql}"
        +            
        1679    def alias_sql(self, expression: exp.Alias) -> str:
        +1680        to_sql = self.sql(expression, "alias")
        +1681        to_sql = f" AS {to_sql}" if to_sql else ""
        +1682        return f"{self.sql(expression, 'this')}{to_sql}"
         
        @@ -8455,8 +8679,8 @@ Default: True
        -
        1627    def aliases_sql(self, expression: exp.Aliases) -> str:
        -1628        return f"{self.sql(expression, 'this')} AS ({self.expressions(expression, flat=True)})"
        +            
        1684    def aliases_sql(self, expression: exp.Aliases) -> str:
        +1685        return f"{self.sql(expression, 'this')} AS ({self.expressions(expression, flat=True)})"
         
        @@ -8474,10 +8698,10 @@ Default: True
        -
        1630    def attimezone_sql(self, expression: exp.AtTimeZone) -> str:
        -1631        this = self.sql(expression, "this")
        -1632        zone = self.sql(expression, "zone")
        -1633        return f"{this} AT TIME ZONE {zone}"
        +            
        1687    def attimezone_sql(self, expression: exp.AtTimeZone) -> str:
        +1688        this = self.sql(expression, "this")
        +1689        zone = self.sql(expression, "zone")
        +1690        return f"{this} AT TIME ZONE {zone}"
         
        @@ -8495,8 +8719,8 @@ Default: True
        -
        1635    def add_sql(self, expression: exp.Add) -> str:
        -1636        return self.binary(expression, "+")
        +            
        1692    def add_sql(self, expression: exp.Add) -> str:
        +1693        return self.binary(expression, "+")
         
        @@ -8514,8 +8738,8 @@ Default: True
        -
        1638    def and_sql(self, expression: exp.And) -> str:
        -1639        return self.connector_sql(expression, "AND")
        +            
        1695    def and_sql(self, expression: exp.And) -> str:
        +1696        return self.connector_sql(expression, "AND")
         
        @@ -8533,13 +8757,13 @@ Default: True
        -
        1641    def connector_sql(self, expression: exp.Connector, op: str) -> str:
        -1642        if not self.pretty:
        -1643            return self.binary(expression, op)
        -1644
        -1645        sqls = tuple(self.sql(e) for e in expression.flatten(unnest=False))
        -1646        sep = "\n" if self.text_width(sqls) > self._max_text_width else " "
        -1647        return f"{sep}{op} ".join(sqls)
        +            
        1698    def connector_sql(self, expression: exp.Connector, op: str) -> str:
        +1699        if not self.pretty:
        +1700            return self.binary(expression, op)
        +1701
        +1702        sqls = tuple(self.sql(e) for e in expression.flatten(unnest=False))
        +1703        sep = "\n" if self.text_width(sqls) > self._max_text_width else " "
        +1704        return f"{sep}{op} ".join(sqls)
         
        @@ -8557,8 +8781,8 @@ Default: True
        -
        1649    def bitwiseand_sql(self, expression: exp.BitwiseAnd) -> str:
        -1650        return self.binary(expression, "&")
        +            
        1706    def bitwiseand_sql(self, expression: exp.BitwiseAnd) -> str:
        +1707        return self.binary(expression, "&")
         
        @@ -8576,8 +8800,8 @@ Default: True
        -
        1652    def bitwiseleftshift_sql(self, expression: exp.BitwiseLeftShift) -> str:
        -1653        return self.binary(expression, "<<")
        +            
        1709    def bitwiseleftshift_sql(self, expression: exp.BitwiseLeftShift) -> str:
        +1710        return self.binary(expression, "<<")
         
        @@ -8595,8 +8819,8 @@ Default: True
        -
        1655    def bitwisenot_sql(self, expression: exp.BitwiseNot) -> str:
        -1656        return f"~{self.sql(expression, 'this')}"
        +            
        1712    def bitwisenot_sql(self, expression: exp.BitwiseNot) -> str:
        +1713        return f"~{self.sql(expression, 'this')}"
         
        @@ -8614,8 +8838,8 @@ Default: True
        -
        1658    def bitwiseor_sql(self, expression: exp.BitwiseOr) -> str:
        -1659        return self.binary(expression, "|")
        +            
        1715    def bitwiseor_sql(self, expression: exp.BitwiseOr) -> str:
        +1716        return self.binary(expression, "|")
         
        @@ -8633,8 +8857,8 @@ Default: True
        -
        1661    def bitwiserightshift_sql(self, expression: exp.BitwiseRightShift) -> str:
        -1662        return self.binary(expression, ">>")
        +            
        1718    def bitwiserightshift_sql(self, expression: exp.BitwiseRightShift) -> str:
        +1719        return self.binary(expression, ">>")
         
        @@ -8652,8 +8876,8 @@ Default: True
        -
        1664    def bitwisexor_sql(self, expression: exp.BitwiseXor) -> str:
        -1665        return self.binary(expression, "^")
        +            
        1721    def bitwisexor_sql(self, expression: exp.BitwiseXor) -> str:
        +1722        return self.binary(expression, "^")
         
        @@ -8671,8 +8895,8 @@ Default: True
        -
        1667    def cast_sql(self, expression: exp.Cast) -> str:
        -1668        return f"CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})"
        +            
        1724    def cast_sql(self, expression: exp.Cast) -> str:
        +1725        return f"CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})"
         
        @@ -8690,9 +8914,9 @@ Default: True
        -
        1670    def currentdate_sql(self, expression: exp.CurrentDate) -> str:
        -1671        zone = self.sql(expression, "this")
        -1672        return f"CURRENT_DATE({zone})" if zone else "CURRENT_DATE"
        +            
        1727    def currentdate_sql(self, expression: exp.CurrentDate) -> str:
        +1728        zone = self.sql(expression, "this")
        +1729        return f"CURRENT_DATE({zone})" if zone else "CURRENT_DATE"
         
        @@ -8710,8 +8934,8 @@ Default: True
        -
        1674    def collate_sql(self, expression: exp.Collate) -> str:
        -1675        return self.binary(expression, "COLLATE")
        +            
        1731    def collate_sql(self, expression: exp.Collate) -> str:
        +1732        return self.binary(expression, "COLLATE")
         
        @@ -8729,8 +8953,8 @@ Default: True
        -
        1677    def command_sql(self, expression: exp.Command) -> str:
        -1678        return f"{self.sql(expression, 'this').upper()} {expression.text('expression').strip()}"
        +            
        1734    def command_sql(self, expression: exp.Command) -> str:
        +1735        return f"{self.sql(expression, 'this').upper()} {expression.text('expression').strip()}"
         
        @@ -8748,12 +8972,12 @@ Default: True
        -
        1680    def comment_sql(self, expression: exp.Comment) -> str:
        -1681        this = self.sql(expression, "this")
        -1682        kind = expression.args["kind"]
        -1683        exists_sql = " IF EXISTS " if expression.args.get("exists") else " "
        -1684        expression_sql = self.sql(expression, "expression")
        -1685        return f"COMMENT{exists_sql}ON {kind} {this} IS {expression_sql}"
        +            
        1737    def comment_sql(self, expression: exp.Comment) -> str:
        +1738        this = self.sql(expression, "this")
        +1739        kind = expression.args["kind"]
        +1740        exists_sql = " IF EXISTS " if expression.args.get("exists") else " "
        +1741        expression_sql = self.sql(expression, "expression")
        +1742        return f"COMMENT{exists_sql}ON {kind} {this} IS {expression_sql}"
         
        @@ -8771,8 +8995,8 @@ Default: True
        -
        1687    def transaction_sql(self, expression: exp.Transaction) -> str:
        -1688        return "BEGIN"
        +            
        1744    def transaction_sql(self, expression: exp.Transaction) -> str:
        +1745        return "BEGIN"
         
        @@ -8790,12 +9014,12 @@ Default: True
        -
        1690    def commit_sql(self, expression: exp.Commit) -> str:
        -1691        chain = expression.args.get("chain")
        -1692        if chain is not None:
        -1693            chain = " AND CHAIN" if chain else " AND NO CHAIN"
        -1694
        -1695        return f"COMMIT{chain or ''}"
        +            
        1747    def commit_sql(self, expression: exp.Commit) -> str:
        +1748        chain = expression.args.get("chain")
        +1749        if chain is not None:
        +1750            chain = " AND CHAIN" if chain else " AND NO CHAIN"
        +1751
        +1752        return f"COMMIT{chain or ''}"
         
        @@ -8813,10 +9037,10 @@ Default: True
        -
        1697    def rollback_sql(self, expression: exp.Rollback) -> str:
        -1698        savepoint = expression.args.get("savepoint")
        -1699        savepoint = f" TO {savepoint}" if savepoint else ""
        -1700        return f"ROLLBACK{savepoint}"
        +            
        1754    def rollback_sql(self, expression: exp.Rollback) -> str:
        +1755        savepoint = expression.args.get("savepoint")
        +1756        savepoint = f" TO {savepoint}" if savepoint else ""
        +1757        return f"ROLLBACK{savepoint}"
         
        @@ -8834,25 +9058,25 @@ Default: True
        -
        1702    def altercolumn_sql(self, expression: exp.AlterColumn) -> str:
        -1703        this = self.sql(expression, "this")
        -1704
        -1705        dtype = self.sql(expression, "dtype")
        -1706        if dtype:
        -1707            collate = self.sql(expression, "collate")
        -1708            collate = f" COLLATE {collate}" if collate else ""
        -1709            using = self.sql(expression, "using")
        -1710            using = f" USING {using}" if using else ""
        -1711            return f"ALTER COLUMN {this} TYPE {dtype}{collate}{using}"
        -1712
        -1713        default = self.sql(expression, "default")
        -1714        if default:
        -1715            return f"ALTER COLUMN {this} SET DEFAULT {default}"
        -1716
        -1717        if not expression.args.get("drop"):
        -1718            self.unsupported("Unsupported ALTER COLUMN syntax")
        -1719
        -1720        return f"ALTER COLUMN {this} DROP DEFAULT"
        +            
        1759    def altercolumn_sql(self, expression: exp.AlterColumn) -> str:
        +1760        this = self.sql(expression, "this")
        +1761
        +1762        dtype = self.sql(expression, "dtype")
        +1763        if dtype:
        +1764            collate = self.sql(expression, "collate")
        +1765            collate = f" COLLATE {collate}" if collate else ""
        +1766            using = self.sql(expression, "using")
        +1767            using = f" USING {using}" if using else ""
        +1768            return f"ALTER COLUMN {this} TYPE {dtype}{collate}{using}"
        +1769
        +1770        default = self.sql(expression, "default")
        +1771        if default:
        +1772            return f"ALTER COLUMN {this} SET DEFAULT {default}"
        +1773
        +1774        if not expression.args.get("drop"):
        +1775            self.unsupported("Unsupported ALTER COLUMN syntax")
        +1776
        +1777        return f"ALTER COLUMN {this} DROP DEFAULT"
         
        @@ -8870,9 +9094,9 @@ Default: True
        -
        1722    def renametable_sql(self, expression: exp.RenameTable) -> str:
        -1723        this = self.sql(expression, "this")
        -1724        return f"RENAME TO {this}"
        +            
        1779    def renametable_sql(self, expression: exp.RenameTable) -> str:
        +1780        this = self.sql(expression, "this")
        +1781        return f"RENAME TO {this}"
         
        @@ -8890,20 +9114,20 @@ Default: True
        -
        1726    def altertable_sql(self, expression: exp.AlterTable) -> str:
        -1727        actions = expression.args["actions"]
        -1728
        -1729        if isinstance(actions[0], exp.ColumnDef):
        -1730            actions = self.expressions(expression, "actions", prefix="ADD COLUMN ")
        -1731        elif isinstance(actions[0], exp.Schema):
        -1732            actions = self.expressions(expression, "actions", prefix="ADD COLUMNS ")
        -1733        elif isinstance(actions[0], exp.Delete):
        -1734            actions = self.expressions(expression, "actions", flat=True)
        -1735        else:
        -1736            actions = self.expressions(expression, "actions")
        -1737
        -1738        exists = " IF EXISTS" if expression.args.get("exists") else ""
        -1739        return f"ALTER TABLE{exists} {self.sql(expression, 'this')} {actions}"
        +            
        1783    def altertable_sql(self, expression: exp.AlterTable) -> str:
        +1784        actions = expression.args["actions"]
        +1785
        +1786        if isinstance(actions[0], exp.ColumnDef):
        +1787            actions = self.expressions(expression, "actions", prefix="ADD COLUMN ")
        +1788        elif isinstance(actions[0], exp.Schema):
        +1789            actions = self.expressions(expression, "actions", prefix="ADD COLUMNS ")
        +1790        elif isinstance(actions[0], exp.Delete):
        +1791            actions = self.expressions(expression, "actions", flat=True)
        +1792        else:
        +1793            actions = self.expressions(expression, "actions")
        +1794
        +1795        exists = " IF EXISTS" if expression.args.get("exists") else ""
        +1796        return f"ALTER TABLE{exists} {self.sql(expression, 'this')} {actions}"
         
        @@ -8921,10 +9145,10 @@ Default: True
        -
        1741    def droppartition_sql(self, expression: exp.DropPartition) -> str:
        -1742        expressions = self.expressions(expression)
        -1743        exists = " IF EXISTS " if expression.args.get("exists") else " "
        -1744        return f"DROP{exists}{expressions}"
        +            
        1798    def droppartition_sql(self, expression: exp.DropPartition) -> str:
        +1799        expressions = self.expressions(expression)
        +1800        exists = " IF EXISTS " if expression.args.get("exists") else " "
        +1801        return f"DROP{exists}{expressions}"
         
        @@ -8942,16 +9166,16 @@ Default: True
        -
        1746    def addconstraint_sql(self, expression: exp.AddConstraint) -> str:
        -1747        this = self.sql(expression, "this")
        -1748        expression_ = self.sql(expression, "expression")
        -1749        add_constraint = f"ADD CONSTRAINT {this}" if this else "ADD"
        -1750
        -1751        enforced = expression.args.get("enforced")
        -1752        if enforced is not None:
        -1753            return f"{add_constraint} CHECK ({expression_}){' ENFORCED' if enforced else ''}"
        -1754
        -1755        return f"{add_constraint} {expression_}"
        +            
        1803    def addconstraint_sql(self, expression: exp.AddConstraint) -> str:
        +1804        this = self.sql(expression, "this")
        +1805        expression_ = self.sql(expression, "expression")
        +1806        add_constraint = f"ADD CONSTRAINT {this}" if this else "ADD"
        +1807
        +1808        enforced = expression.args.get("enforced")
        +1809        if enforced is not None:
        +1810            return f"{add_constraint} CHECK ({expression_}){' ENFORCED' if enforced else ''}"
        +1811
        +1812        return f"{add_constraint} {expression_}"
         
        @@ -8969,13 +9193,13 @@ Default: True
        -
        1757    def distinct_sql(self, expression: exp.Distinct) -> str:
        -1758        this = self.expressions(expression, flat=True)
        -1759        this = f" {this}" if this else ""
        -1760
        -1761        on = self.sql(expression, "on")
        -1762        on = f" ON {on}" if on else ""
        -1763        return f"DISTINCT{this}{on}"
        +            
        1814    def distinct_sql(self, expression: exp.Distinct) -> str:
        +1815        this = self.expressions(expression, flat=True)
        +1816        this = f" {this}" if this else ""
        +1817
        +1818        on = self.sql(expression, "on")
        +1819        on = f" ON {on}" if on else ""
        +1820        return f"DISTINCT{this}{on}"
         
        @@ -8993,8 +9217,8 @@ Default: True
        -
        1765    def ignorenulls_sql(self, expression: exp.IgnoreNulls) -> str:
        -1766        return f"{self.sql(expression, 'this')} IGNORE NULLS"
        +            
        1822    def ignorenulls_sql(self, expression: exp.IgnoreNulls) -> str:
        +1823        return f"{self.sql(expression, 'this')} IGNORE NULLS"
         
        @@ -9012,8 +9236,8 @@ Default: True
        -
        1768    def respectnulls_sql(self, expression: exp.RespectNulls) -> str:
        -1769        return f"{self.sql(expression, 'this')} RESPECT NULLS"
        +            
        1825    def respectnulls_sql(self, expression: exp.RespectNulls) -> str:
        +1826        return f"{self.sql(expression, 'this')} RESPECT NULLS"
         
        @@ -9031,13 +9255,13 @@ Default: True
        -
        1771    def intdiv_sql(self, expression: exp.IntDiv) -> str:
        -1772        return self.sql(
        -1773            exp.Cast(
        -1774                this=exp.Div(this=expression.this, expression=expression.expression),
        -1775                to=exp.DataType(this=exp.DataType.Type.INT),
        -1776            )
        -1777        )
        +            
        1828    def intdiv_sql(self, expression: exp.IntDiv) -> str:
        +1829        return self.sql(
        +1830            exp.Cast(
        +1831                this=exp.Div(this=expression.this, expression=expression.expression),
        +1832                to=exp.DataType(this=exp.DataType.Type.INT),
        +1833            )
        +1834        )
         
        @@ -9055,8 +9279,8 @@ Default: True
        -
        1779    def dpipe_sql(self, expression: exp.DPipe) -> str:
        -1780        return self.binary(expression, "||")
        +            
        1836    def dpipe_sql(self, expression: exp.DPipe) -> str:
        +1837        return self.binary(expression, "||")
         
        @@ -9074,8 +9298,8 @@ Default: True
        -
        1782    def div_sql(self, expression: exp.Div) -> str:
        -1783        return self.binary(expression, "/")
        +            
        1839    def div_sql(self, expression: exp.Div) -> str:
        +1840        return self.binary(expression, "/")
         
        @@ -9093,8 +9317,8 @@ Default: True
        -
        1785    def overlaps_sql(self, expression: exp.Overlaps) -> str:
        -1786        return self.binary(expression, "OVERLAPS")
        +            
        1842    def overlaps_sql(self, expression: exp.Overlaps) -> str:
        +1843        return self.binary(expression, "OVERLAPS")
         
        @@ -9112,8 +9336,8 @@ Default: True
        -
        1788    def distance_sql(self, expression: exp.Distance) -> str:
        -1789        return self.binary(expression, "<->")
        +            
        1845    def distance_sql(self, expression: exp.Distance) -> str:
        +1846        return self.binary(expression, "<->")
         
        @@ -9131,8 +9355,8 @@ Default: True
        -
        1791    def dot_sql(self, expression: exp.Dot) -> str:
        -1792        return f"{self.sql(expression, 'this')}.{self.sql(expression, 'expression')}"
        +            
        1848    def dot_sql(self, expression: exp.Dot) -> str:
        +1849        return f"{self.sql(expression, 'this')}.{self.sql(expression, 'expression')}"
         
        @@ -9150,8 +9374,8 @@ Default: True
        -
        1794    def eq_sql(self, expression: exp.EQ) -> str:
        -1795        return self.binary(expression, "=")
        +            
        1851    def eq_sql(self, expression: exp.EQ) -> str:
        +1852        return self.binary(expression, "=")
         
        @@ -9169,8 +9393,8 @@ Default: True
        -
        1797    def escape_sql(self, expression: exp.Escape) -> str:
        -1798        return self.binary(expression, "ESCAPE")
        +            
        1854    def escape_sql(self, expression: exp.Escape) -> str:
        +1855        return self.binary(expression, "ESCAPE")
         
        @@ -9188,8 +9412,8 @@ Default: True
        -
        1800    def glob_sql(self, expression: exp.Glob) -> str:
        -1801        return self.binary(expression, "GLOB")
        +            
        1857    def glob_sql(self, expression: exp.Glob) -> str:
        +1858        return self.binary(expression, "GLOB")
         
        @@ -9207,8 +9431,8 @@ Default: True
        -
        1803    def gt_sql(self, expression: exp.GT) -> str:
        -1804        return self.binary(expression, ">")
        +            
        1860    def gt_sql(self, expression: exp.GT) -> str:
        +1861        return self.binary(expression, ">")
         
        @@ -9226,8 +9450,8 @@ Default: True
        -
        1806    def gte_sql(self, expression: exp.GTE) -> str:
        -1807        return self.binary(expression, ">=")
        +            
        1863    def gte_sql(self, expression: exp.GTE) -> str:
        +1864        return self.binary(expression, ">=")
         
        @@ -9245,8 +9469,8 @@ Default: True
        -
        1809    def ilike_sql(self, expression: exp.ILike) -> str:
        -1810        return self.binary(expression, "ILIKE")
        +            
        1866    def ilike_sql(self, expression: exp.ILike) -> str:
        +1867        return self.binary(expression, "ILIKE")
         
        @@ -9264,8 +9488,8 @@ Default: True
        -
        1812    def is_sql(self, expression: exp.Is) -> str:
        -1813        return self.binary(expression, "IS")
        +            
        1869    def is_sql(self, expression: exp.Is) -> str:
        +1870        return self.binary(expression, "IS")
         
        @@ -9283,8 +9507,8 @@ Default: True
        -
        1815    def like_sql(self, expression: exp.Like) -> str:
        -1816        return self.binary(expression, "LIKE")
        +            
        1872    def like_sql(self, expression: exp.Like) -> str:
        +1873        return self.binary(expression, "LIKE")
         
        @@ -9302,8 +9526,8 @@ Default: True
        -
        1818    def similarto_sql(self, expression: exp.SimilarTo) -> str:
        -1819        return self.binary(expression, "SIMILAR TO")
        +            
        1875    def similarto_sql(self, expression: exp.SimilarTo) -> str:
        +1876        return self.binary(expression, "SIMILAR TO")
         
        @@ -9321,8 +9545,8 @@ Default: True
        -
        1821    def lt_sql(self, expression: exp.LT) -> str:
        -1822        return self.binary(expression, "<")
        +            
        1878    def lt_sql(self, expression: exp.LT) -> str:
        +1879        return self.binary(expression, "<")
         
        @@ -9340,8 +9564,8 @@ Default: True
        -
        1824    def lte_sql(self, expression: exp.LTE) -> str:
        -1825        return self.binary(expression, "<=")
        +            
        1881    def lte_sql(self, expression: exp.LTE) -> str:
        +1882        return self.binary(expression, "<=")
         
        @@ -9359,8 +9583,8 @@ Default: True
        -
        1827    def mod_sql(self, expression: exp.Mod) -> str:
        -1828        return self.binary(expression, "%")
        +            
        1884    def mod_sql(self, expression: exp.Mod) -> str:
        +1885        return self.binary(expression, "%")
         
        @@ -9378,8 +9602,8 @@ Default: True
        -
        1830    def mul_sql(self, expression: exp.Mul) -> str:
        -1831        return self.binary(expression, "*")
        +            
        1887    def mul_sql(self, expression: exp.Mul) -> str:
        +1888        return self.binary(expression, "*")
         
        @@ -9397,8 +9621,8 @@ Default: True
        -
        1833    def neq_sql(self, expression: exp.NEQ) -> str:
        -1834        return self.binary(expression, "<>")
        +            
        1890    def neq_sql(self, expression: exp.NEQ) -> str:
        +1891        return self.binary(expression, "<>")
         
        @@ -9416,8 +9640,8 @@ Default: True
        -
        1836    def nullsafeeq_sql(self, expression: exp.NullSafeEQ) -> str:
        -1837        return self.binary(expression, "IS NOT DISTINCT FROM")
        +            
        1893    def nullsafeeq_sql(self, expression: exp.NullSafeEQ) -> str:
        +1894        return self.binary(expression, "IS NOT DISTINCT FROM")
         
        @@ -9435,8 +9659,8 @@ Default: True
        -
        1839    def nullsafeneq_sql(self, expression: exp.NullSafeNEQ) -> str:
        -1840        return self.binary(expression, "IS DISTINCT FROM")
        +            
        1896    def nullsafeneq_sql(self, expression: exp.NullSafeNEQ) -> str:
        +1897        return self.binary(expression, "IS DISTINCT FROM")
         
        @@ -9454,8 +9678,8 @@ Default: True
        -
        1842    def or_sql(self, expression: exp.Or) -> str:
        -1843        return self.connector_sql(expression, "OR")
        +            
        1899    def or_sql(self, expression: exp.Or) -> str:
        +1900        return self.connector_sql(expression, "OR")
         
        @@ -9473,8 +9697,8 @@ Default: True
        -
        1845    def slice_sql(self, expression: exp.Slice) -> str:
        -1846        return self.binary(expression, ":")
        +            
        1902    def slice_sql(self, expression: exp.Slice) -> str:
        +1903        return self.binary(expression, ":")
         
        @@ -9492,8 +9716,8 @@ Default: True
        -
        1848    def sub_sql(self, expression: exp.Sub) -> str:
        -1849        return self.binary(expression, "-")
        +            
        1905    def sub_sql(self, expression: exp.Sub) -> str:
        +1906        return self.binary(expression, "-")
         
        @@ -9511,8 +9735,8 @@ Default: True
        -
        1851    def trycast_sql(self, expression: exp.TryCast) -> str:
        -1852        return f"TRY_CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})"
        +            
        1908    def trycast_sql(self, expression: exp.TryCast) -> str:
        +1909        return f"TRY_CAST({self.sql(expression, 'this')} AS {self.sql(expression, 'to')})"
         
        @@ -9530,12 +9754,12 @@ Default: True
        -
        1854    def use_sql(self, expression: exp.Use) -> str:
        -1855        kind = self.sql(expression, "kind")
        -1856        kind = f" {kind}" if kind else ""
        -1857        this = self.sql(expression, "this")
        -1858        this = f" {this}" if this else ""
        -1859        return f"USE{kind}{this}"
        +            
        1911    def use_sql(self, expression: exp.Use) -> str:
        +1912        kind = self.sql(expression, "kind")
        +1913        kind = f" {kind}" if kind else ""
        +1914        this = self.sql(expression, "this")
        +1915        this = f" {this}" if this else ""
        +1916        return f"USE{kind}{this}"
         
        @@ -9553,8 +9777,8 @@ Default: True
        -
        1861    def binary(self, expression: exp.Binary, op: str) -> str:
        -1862        return f"{self.sql(expression, 'this')} {op} {self.sql(expression, 'expression')}"
        +            
        1918    def binary(self, expression: exp.Binary, op: str) -> str:
        +1919        return f"{self.sql(expression, 'this')} {op} {self.sql(expression, 'expression')}"
         
        @@ -9572,16 +9796,16 @@ Default: True
        -
        1864    def function_fallback_sql(self, expression: exp.Func) -> str:
        -1865        args = []
        -1866        for arg_value in expression.args.values():
        -1867            if isinstance(arg_value, list):
        -1868                for value in arg_value:
        -1869                    args.append(value)
        -1870            else:
        -1871                args.append(arg_value)
        -1872
        -1873        return self.func(expression.sql_name(), *args)
        +            
        1921    def function_fallback_sql(self, expression: exp.Func) -> str:
        +1922        args = []
        +1923        for arg_value in expression.args.values():
        +1924            if isinstance(arg_value, list):
        +1925                for value in arg_value:
        +1926                    args.append(value)
        +1927            else:
        +1928                args.append(arg_value)
        +1929
        +1930        return self.func(expression.sql_name(), *args)
         
        @@ -9599,8 +9823,8 @@ Default: True
        -
        1875    def func(self, name: str, *args: t.Optional[exp.Expression | str]) -> str:
        -1876        return f"{self.normalize_func(name)}({self.format_args(*args)})"
        +            
        1932    def func(self, name: str, *args: t.Optional[exp.Expression | str]) -> str:
        +1933        return f"{self.normalize_func(name)}({self.format_args(*args)})"
         
        @@ -9618,11 +9842,11 @@ Default: True
        -
        1878    def format_args(self, *args: t.Optional[str | exp.Expression]) -> str:
        -1879        arg_sqls = tuple(self.sql(arg) for arg in args if arg is not None)
        -1880        if self.pretty and self.text_width(arg_sqls) > self._max_text_width:
        -1881            return self.indent("\n" + f",\n".join(arg_sqls) + "\n", skip_first=True, skip_last=True)
        -1882        return ", ".join(arg_sqls)
        +            
        1935    def format_args(self, *args: t.Optional[str | exp.Expression]) -> str:
        +1936        arg_sqls = tuple(self.sql(arg) for arg in args if arg is not None)
        +1937        if self.pretty and self.text_width(arg_sqls) > self._max_text_width:
        +1938            return self.indent("\n" + f",\n".join(arg_sqls) + "\n", skip_first=True, skip_last=True)
        +1939        return ", ".join(arg_sqls)
         
        @@ -9640,8 +9864,8 @@ Default: True
        -
        1884    def text_width(self, args: t.Iterable) -> int:
        -1885        return sum(len(arg) for arg in args)
        +            
        1941    def text_width(self, args: t.Iterable) -> int:
        +1942        return sum(len(arg) for arg in args)
         
        @@ -9659,8 +9883,8 @@ Default: True
        -
        1887    def format_time(self, expression: exp.Expression) -> t.Optional[str]:
        -1888        return format_time(self.sql(expression, "format"), self.time_mapping, self.time_trie)
        +            
        1944    def format_time(self, expression: exp.Expression) -> t.Optional[str]:
        +1945        return format_time(self.sql(expression, "format"), self.time_mapping, self.time_trie)
         
        @@ -9678,46 +9902,46 @@ Default: True
        -
        1890    def expressions(
        -1891        self,
        -1892        expression: exp.Expression,
        -1893        key: t.Optional[str] = None,
        -1894        flat: bool = False,
        -1895        indent: bool = True,
        -1896        sep: str = ", ",
        -1897        prefix: str = "",
        -1898    ) -> str:
        -1899        expressions = expression.args.get(key or "expressions")
        -1900
        -1901        if not expressions:
        -1902            return ""
        -1903
        -1904        if flat:
        -1905            return sep.join(self.sql(e) for e in expressions)
        -1906
        -1907        num_sqls = len(expressions)
        -1908
        -1909        # These are calculated once in case we have the leading_comma / pretty option set, correspondingly
        -1910        pad = " " * self.pad
        -1911        stripped_sep = sep.strip()
        -1912
        -1913        result_sqls = []
        -1914        for i, e in enumerate(expressions):
        -1915            sql = self.sql(e, comment=False)
        -1916            comments = self.maybe_comment("", e) if isinstance(e, exp.Expression) else ""
        -1917
        -1918            if self.pretty:
        -1919                if self._leading_comma:
        -1920                    result_sqls.append(f"{sep if i > 0 else pad}{prefix}{sql}{comments}")
        -1921                else:
        -1922                    result_sqls.append(
        -1923                        f"{prefix}{sql}{stripped_sep if i + 1 < num_sqls else ''}{comments}"
        -1924                    )
        -1925            else:
        -1926                result_sqls.append(f"{prefix}{sql}{comments}{sep if i + 1 < num_sqls else ''}")
        -1927
        -1928        result_sql = "\n".join(result_sqls) if self.pretty else "".join(result_sqls)
        -1929        return self.indent(result_sql, skip_first=False) if indent else result_sql
        +            
        1947    def expressions(
        +1948        self,
        +1949        expression: exp.Expression,
        +1950        key: t.Optional[str] = None,
        +1951        flat: bool = False,
        +1952        indent: bool = True,
        +1953        sep: str = ", ",
        +1954        prefix: str = "",
        +1955    ) -> str:
        +1956        expressions = expression.args.get(key or "expressions")
        +1957
        +1958        if not expressions:
        +1959            return ""
        +1960
        +1961        if flat:
        +1962            return sep.join(self.sql(e) for e in expressions)
        +1963
        +1964        num_sqls = len(expressions)
        +1965
        +1966        # These are calculated once in case we have the leading_comma / pretty option set, correspondingly
        +1967        pad = " " * self.pad
        +1968        stripped_sep = sep.strip()
        +1969
        +1970        result_sqls = []
        +1971        for i, e in enumerate(expressions):
        +1972            sql = self.sql(e, comment=False)
        +1973            comments = self.maybe_comment("", e) if isinstance(e, exp.Expression) else ""
        +1974
        +1975            if self.pretty:
        +1976                if self._leading_comma:
        +1977                    result_sqls.append(f"{sep if i > 0 else pad}{prefix}{sql}{comments}")
        +1978                else:
        +1979                    result_sqls.append(
        +1980                        f"{prefix}{sql}{stripped_sep if i + 1 < num_sqls else ''}{comments}"
        +1981                    )
        +1982            else:
        +1983                result_sqls.append(f"{prefix}{sql}{comments}{sep if i + 1 < num_sqls else ''}")
        +1984
        +1985        result_sql = "\n".join(result_sqls) if self.pretty else "".join(result_sqls)
        +1986        return self.indent(result_sql, skip_first=False) if indent else result_sql
         
        @@ -9735,12 +9959,12 @@ Default: True
        -
        1931    def op_expressions(self, op: str, expression: exp.Expression, flat: bool = False) -> str:
        -1932        flat = flat or isinstance(expression.parent, exp.Properties)
        -1933        expressions_sql = self.expressions(expression, flat=flat)
        -1934        if flat:
        -1935            return f"{op} {expressions_sql}"
        -1936        return f"{self.seg(op)}{self.sep() if expressions_sql else ''}{expressions_sql}"
        +            
        1988    def op_expressions(self, op: str, expression: exp.Expression, flat: bool = False) -> str:
        +1989        flat = flat or isinstance(expression.parent, exp.Properties)
        +1990        expressions_sql = self.expressions(expression, flat=flat)
        +1991        if flat:
        +1992            return f"{op} {expressions_sql}"
        +1993        return f"{self.seg(op)}{self.sep() if expressions_sql else ''}{expressions_sql}"
         
        @@ -9758,11 +9982,11 @@ Default: True
        -
        1938    def naked_property(self, expression: exp.Property) -> str:
        -1939        property_name = exp.Properties.PROPERTY_TO_NAME.get(expression.__class__)
        -1940        if not property_name:
        -1941            self.unsupported(f"Unsupported property {expression.__class__.__name__}")
        -1942        return f"{property_name} {self.sql(expression, 'this')}"
        +            
        1995    def naked_property(self, expression: exp.Property) -> str:
        +1996        property_name = exp.Properties.PROPERTY_TO_NAME.get(expression.__class__)
        +1997        if not property_name:
        +1998            self.unsupported(f"Unsupported property {expression.__class__.__name__}")
        +1999        return f"{property_name} {self.sql(expression, 'this')}"
         
        @@ -9780,12 +10004,12 @@ Default: True
        -
        1944    def set_operation(self, expression: exp.Expression, op: str) -> str:
        -1945        this = self.sql(expression, "this")
        -1946        op = self.seg(op)
        -1947        return self.query_modifiers(
        -1948            expression, f"{this}{op}{self.sep()}{self.sql(expression, 'expression')}"
        -1949        )
        +            
        2001    def set_operation(self, expression: exp.Expression, op: str) -> str:
        +2002        this = self.sql(expression, "this")
        +2003        op = self.seg(op)
        +2004        return self.query_modifiers(
        +2005            expression, f"{this}{op}{self.sep()}{self.sql(expression, 'expression')}"
        +2006        )
         
        @@ -9803,8 +10027,8 @@ Default: True
        -
        1951    def tag_sql(self, expression: exp.Tag) -> str:
        -1952        return f"{expression.args.get('prefix')}{self.sql(expression.this)}{expression.args.get('postfix')}"
        +            
        2008    def tag_sql(self, expression: exp.Tag) -> str:
        +2009        return f"{expression.args.get('prefix')}{self.sql(expression.this)}{expression.args.get('postfix')}"
         
        @@ -9822,8 +10046,8 @@ Default: True
        -
        1954    def token_sql(self, token_type: TokenType) -> str:
        -1955        return self.TOKEN_MAPPING.get(token_type, token_type.name)
        +            
        2011    def token_sql(self, token_type: TokenType) -> str:
        +2012        return self.TOKEN_MAPPING.get(token_type, token_type.name)
         
        @@ -9841,13 +10065,13 @@ Default: True
        -
        1957    def userdefinedfunction_sql(self, expression: exp.UserDefinedFunction) -> str:
        -1958        this = self.sql(expression, "this")
        -1959        expressions = self.no_identify(self.expressions, expression)
        -1960        expressions = (
        -1961            self.wrap(expressions) if expression.args.get("wrapped") else f" {expressions}"
        -1962        )
        -1963        return f"{this}{expressions}"
        +            
        2014    def userdefinedfunction_sql(self, expression: exp.UserDefinedFunction) -> str:
        +2015        this = self.sql(expression, "this")
        +2016        expressions = self.no_identify(self.expressions, expression)
        +2017        expressions = (
        +2018            self.wrap(expressions) if expression.args.get("wrapped") else f" {expressions}"
        +2019        )
        +2020        return f"{this}{expressions}"
         
        @@ -9865,10 +10089,10 @@ Default: True
        -
        1965    def joinhint_sql(self, expression: exp.JoinHint) -> str:
        -1966        this = self.sql(expression, "this")
        -1967        expressions = self.expressions(expression, flat=True)
        -1968        return f"{this}({expressions})"
        +            
        2022    def joinhint_sql(self, expression: exp.JoinHint) -> str:
        +2023        this = self.sql(expression, "this")
        +2024        expressions = self.expressions(expression, flat=True)
        +2025        return f"{this}({expressions})"
         
        @@ -9886,8 +10110,8 @@ Default: True
        -
        1970    def kwarg_sql(self, expression: exp.Kwarg) -> str:
        -1971        return self.binary(expression, "=>")
        +            
        2027    def kwarg_sql(self, expression: exp.Kwarg) -> str:
        +2028        return self.binary(expression, "=>")
         
        @@ -9905,25 +10129,25 @@ Default: True
        -
        1973    def when_sql(self, expression: exp.When) -> str:
        -1974        matched = "MATCHED" if expression.args["matched"] else "NOT MATCHED"
        -1975        source = " BY SOURCE" if self.MATCHED_BY_SOURCE and expression.args.get("source") else ""
        -1976        condition = self.sql(expression, "condition")
        -1977        condition = f" AND {condition}" if condition else ""
        -1978
        -1979        then_expression = expression.args.get("then")
        -1980        if isinstance(then_expression, exp.Insert):
        -1981            then = f"INSERT {self.sql(then_expression, 'this')}"
        -1982            if "expression" in then_expression.args:
        -1983                then += f" VALUES {self.sql(then_expression, 'expression')}"
        -1984        elif isinstance(then_expression, exp.Update):
        -1985            if isinstance(then_expression.args.get("expressions"), exp.Star):
        -1986                then = f"UPDATE {self.sql(then_expression, 'expressions')}"
        -1987            else:
        -1988                then = f"UPDATE SET {self.expressions(then_expression, flat=True)}"
        -1989        else:
        -1990            then = self.sql(then_expression)
        -1991        return f"WHEN {matched}{source}{condition} THEN {then}"
        +            
        2030    def when_sql(self, expression: exp.When) -> str:
        +2031        matched = "MATCHED" if expression.args["matched"] else "NOT MATCHED"
        +2032        source = " BY SOURCE" if self.MATCHED_BY_SOURCE and expression.args.get("source") else ""
        +2033        condition = self.sql(expression, "condition")
        +2034        condition = f" AND {condition}" if condition else ""
        +2035
        +2036        then_expression = expression.args.get("then")
        +2037        if isinstance(then_expression, exp.Insert):
        +2038            then = f"INSERT {self.sql(then_expression, 'this')}"
        +2039            if "expression" in then_expression.args:
        +2040                then += f" VALUES {self.sql(then_expression, 'expression')}"
        +2041        elif isinstance(then_expression, exp.Update):
        +2042            if isinstance(then_expression.args.get("expressions"), exp.Star):
        +2043                then = f"UPDATE {self.sql(then_expression, 'expressions')}"
        +2044            else:
        +2045                then = f"UPDATE SET {self.expressions(then_expression, flat=True)}"
        +2046        else:
        +2047            then = self.sql(then_expression)
        +2048        return f"WHEN {matched}{source}{condition} THEN {then}"
         
        @@ -9941,11 +10165,11 @@ Default: True
        -
        1993    def merge_sql(self, expression: exp.Merge) -> str:
        -1994        this = self.sql(expression, "this")
        -1995        using = f"USING {self.sql(expression, 'using')}"
        -1996        on = f"ON {self.sql(expression, 'on')}"
        -1997        return f"MERGE INTO {this} {using} {on} {self.expressions(expression, sep=' ')}"
        +            
        2050    def merge_sql(self, expression: exp.Merge) -> str:
        +2051        this = self.sql(expression, "this")
        +2052        using = f"USING {self.sql(expression, 'using')}"
        +2053        on = f"ON {self.sql(expression, 'on')}"
        +2054        return f"MERGE INTO {this} {using} {on} {self.expressions(expression, sep=' ')}"
         
        @@ -9963,11 +10187,11 @@ Default: True
        -
        1999    def tochar_sql(self, expression: exp.ToChar) -> str:
        -2000        if expression.args.get("format"):
        -2001            self.unsupported("Format argument unsupported for TO_CHAR/TO_VARCHAR function")
        -2002
        -2003        return self.sql(exp.cast(expression.this, "text"))
        +            
        2056    def tochar_sql(self, expression: exp.ToChar) -> str:
        +2057        if expression.args.get("format"):
        +2058            self.unsupported("Format argument unsupported for TO_CHAR/TO_VARCHAR function")
        +2059
        +2060        return self.sql(exp.cast(expression.this, "text"))
         
        diff --git a/docs/sqlglot/helper.html b/docs/sqlglot/helper.html index e2b6565..423c19f 100644 --- a/docs/sqlglot/helper.html +++ b/docs/sqlglot/helper.html @@ -3,7 +3,7 @@ - + sqlglot.helper API documentation @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • AutoName
              @@ -180,7 +180,7 @@ 59 """ 60 if value is None: 61 return [] - 62 elif isinstance(value, (list, tuple)): + 62 if isinstance(value, (list, tuple)): 63 return list(value) 64 65 return [value] @@ -283,264 +283,267 @@ 162 return CAMEL_CASE_PATTERN.sub("_", name).upper() 163 164 -165def while_changing( -166 expression: t.Optional[Expression], func: t.Callable[[t.Optional[Expression]], E] -167) -> E: -168 """ -169 Applies a transformation to a given expression until a fix point is reached. -170 -171 Args: -172 expression: the expression to be transformed. -173 func: the transformation to be applied. -174 -175 Returns: -176 The transformed expression. -177 """ -178 while True: +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. +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) -181 if start == hash(expression): -182 break -183 return expression -184 -185 -186def tsort(dag: t.Dict[T, t.List[T]]) -> t.List[T]: -187 """ -188 Sorts a given directed acyclic graph in topological order. -189 -190 Args: -191 dag: the graph to be sorted. +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 Returns: -194 A list that contains all of the graph's nodes in topological order. -195 """ -196 result = [] -197 -198 def visit(node: T, visited: t.Set[T]) -> None: -199 if node in result: -200 return -201 if node in visited: -202 raise ValueError("Cycle error") -203 -204 visited.add(node) -205 -206 for dep in dag.get(node, []): -207 visit(dep, visited) +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 visited.remove(node) -210 result.append(node) +209 for dep in dag.get(node, []): +210 visit(dep, visited) 211 -212 for node in dag: -213 visit(node, set()) +212 visited.remove(node) +213 result.append(node) 214 -215 return result -216 +215 for node in dag: +216 visit(node, set()) 217 -218def open_file(file_name: str) -> t.TextIO: -219 """Open a file that may be compressed as gzip and return it in universal newline mode.""" -220 with open(file_name, "rb") as f: -221 gzipped = f.read(2) == b"\x1f\x8b" -222 -223 if gzipped: -224 import gzip +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 return gzip.open(file_name, "rt", newline="") -227 -228 return open(file_name, encoding="utf-8", newline="") -229 +226 if gzipped: +227 import gzip +228 +229 return gzip.open(file_name, "rt", newline="") 230 -231@contextmanager -232def csv_reader(read_csv: exp.ReadCSV) -> t.Any: -233 """ -234 Returns a csv reader given the expression `READ_CSV(name, ['delimiter', '|', ...])`. -235 -236 Args: -237 read_csv: a `ReadCSV` function call +231 return open(file_name, encoding="utf-8", newline="") +232 +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 Yields: -240 A python csv reader. -241 """ -242 args = read_csv.expressions -243 file = open_file(read_csv.name) -244 -245 delimiter = "," -246 args = iter(arg.name for arg in args) -247 for k, v in zip(args, args): -248 if k == "delimiter": -249 delimiter = v -250 -251 try: -252 import csv as csv_ +239 Args: +240 read_csv: a `ReadCSV` function call +241 +242 Yields: +243 A python csv reader. +244 """ +245 args = read_csv.expressions +246 file = open_file(read_csv.name) +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 yield csv_.reader(file, delimiter=delimiter) -255 finally: -256 file.close() -257 -258 -259def find_new_name(taken: t.Collection[str], base: str) -> str: -260 """ -261 Searches for a new name. -262 -263 Args: -264 taken: a collection of taken names. -265 base: base name to alter. -266 -267 Returns: -268 The new, available name. -269 """ -270 if base not in taken: -271 return base -272 -273 i = 2 -274 new = f"{base}_{i}" -275 while new in taken: -276 i += 1 -277 new = f"{base}_{i}" -278 -279 return new -280 +254 try: +255 import csv as csv_ +256 +257 yield csv_.reader(file, delimiter=delimiter) +258 finally: +259 file.close() +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. +269 +270 Returns: +271 The new, available name. +272 """ +273 if base not in taken: +274 return base +275 +276 i = 2 +277 new = f"{base}_{i}" +278 while new in taken: +279 i += 1 +280 new = f"{base}_{i}" 281 -282def object_to_dict(obj: t.Any, **kwargs) -> t.Dict: -283 """Returns a dictionary created from an object's attributes.""" -284 return {**{k: copy(v) for k, v in vars(obj).copy().items()}, **kwargs} -285 -286 -287def split_num_words( -288 value: str, sep: str, min_num_words: int, fill_from_start: bool = True -289) -> t.List[t.Optional[str]]: -290 """ -291 Perform a split on a value and return N words as a result with `None` used for words that don't exist. -292 -293 Args: -294 value: the value to be split. -295 sep: the value to use to split on. -296 min_num_words: the minimum number of words that are going to be in the result. -297 fill_from_start: indicates that if `None` values should be inserted at the start or end of the list. -298 -299 Examples: -300 >>> split_num_words("db.table", ".", 3) -301 [None, 'db', 'table'] -302 >>> split_num_words("db.table", ".", 3, fill_from_start=False) -303 ['db', 'table', None] -304 >>> split_num_words("db.table", ".", 1) -305 ['db', 'table'] -306 -307 Returns: -308 The list of words returned by `split`, possibly augmented by a number of `None` values. -309 """ -310 words = value.split(sep) -311 if fill_from_start: -312 return [None] * (min_num_words - len(words)) + words -313 return words + [None] * (min_num_words - len(words)) -314 -315 -316def is_iterable(value: t.Any) -> bool: -317 """ -318 Checks if the value is an iterable, excluding the types `str` and `bytes`. -319 -320 Examples: -321 >>> is_iterable([1,2]) -322 True -323 >>> is_iterable("test") -324 False -325 -326 Args: -327 value: the value to check if it is an iterable. +282 return new +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)) +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 Returns: -330 A `bool` value indicating if it is an iterable. -331 """ -332 return hasattr(value, "__iter__") and not isinstance(value, (str, bytes)) -333 -334 -335def flatten(values: t.Iterable[t.Iterable[t.Any] | t.Any]) -> t.Iterator[t.Any]: -336 """ -337 Flattens an iterable that can contain both iterable and non-iterable elements. Objects of -338 type `str` and `bytes` are not regarded as iterables. -339 -340 Examples: -341 >>> list(flatten([[1, 2], 3, {4}, (5, "bla")])) -342 [1, 2, 3, 4, 5, 'bla'] -343 >>> list(flatten([1, 2, 3])) -344 [1, 2, 3] -345 -346 Args: -347 values: the value to be flattened. +329 Args: +330 value: the value to check if it is an iterable. +331 +332 Returns: +333 A `bool` value indicating if it is an iterable. +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 Yields: -350 Non-iterable elements in `values`. -351 """ -352 for value in values: -353 if is_iterable(value): -354 yield from flatten(value) -355 else: -356 yield value -357 -358 -359def count_params(function: t.Callable) -> int: -360 """ -361 Returns the number of formal parameters expected by a function, without counting "self" -362 and "cls", in case of instance and class methods, respectively. -363 """ -364 count = function.__code__.co_argcount -365 return count - 1 if inspect.ismethod(function) else count -366 -367 -368def dict_depth(d: t.Dict) -> int: -369 """ -370 Get the nesting depth of a dictionary. -371 -372 For example: -373 >>> dict_depth(None) -374 0 -375 >>> dict_depth({}) -376 1 -377 >>> dict_depth({"a": "b"}) -378 1 -379 >>> dict_depth({"a": {}}) -380 2 -381 >>> dict_depth({"a": {"b": {}}}) -382 3 -383 -384 Args: -385 d (dict): dictionary +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 +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 Returns: -388 int: depth -389 """ -390 try: -391 return 1 + dict_depth(next(iter(d.values()))) -392 except AttributeError: -393 # d doesn't have attribute "values" -394 return 0 -395 except StopIteration: -396 # d.values() returns an empty sequence -397 return 1 -398 -399 -400def first(it: t.Iterable[T]) -> T: -401 """Returns the first element from an iterable. +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 -403 Useful for sets. -404 """ -405 return next(i for i in it) -406 -407 -408def should_identify(text: str, identify: str | bool) -> bool: -409 """Checks if text should be identified given an identify option. +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 -411 Args: -412 text: the text to check. -413 identify: "always" | True - always returns true, "safe" - true if no upper case -414 -415 Returns: -416 Whether or not a string should be identified. -417 """ -418 if identify is True or identify == "always": -419 return True -420 if identify == "safe": -421 return not any(char.isupper() for char in text) -422 return False +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
        @@ -627,7 +630,7 @@
        60 """ 61 if value is None: 62 return [] -63 elif isinstance(value, (list, tuple)): +63 if isinstance(value, (list, tuple)): 64 return list(value) 65 66 return [value] @@ -881,31 +884,34 @@
        def - while_changing( expression: Optional[sqlglot.expressions.Expression], func: Callable[[Optional[sqlglot.expressions.Expression]], ~E]) -> ~E: + while_changing( expression: sqlglot.expressions.Expression, func: Callable[[sqlglot.expressions.Expression], ~E]) -> ~E:
        -
        166def while_changing(
        -167    expression: t.Optional[Expression], func: t.Callable[[t.Optional[Expression]], E]
        -168) -> E:
        -169    """
        -170    Applies a transformation to a given expression until a fix point is reached.
        -171
        -172    Args:
        -173        expression: the expression to be transformed.
        -174        func: the transformation to be applied.
        -175
        -176    Returns:
        -177        The transformed expression.
        -178    """
        -179    while True:
        +            
        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        if start == hash(expression):
        -183            break
        -184    return expression
        +182
        +183        for n, *_ in expression.walk():
        +184            n._hash = None
        +185        if start == hash(expression):
        +186            break
        +187    return expression
         
        @@ -938,36 +944,36 @@
        -
        187def tsort(dag: t.Dict[T, t.List[T]]) -> t.List[T]:
        -188    """
        -189    Sorts a given directed acyclic graph in topological order.
        -190
        -191    Args:
        -192        dag: the graph to be sorted.
        +            
        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    Returns:
        -195        A list that contains all of the graph's nodes in topological order.
        -196    """
        -197    result = []
        -198
        -199    def visit(node: T, visited: t.Set[T]) -> None:
        -200        if node in result:
        -201            return
        -202        if node in visited:
        -203            raise ValueError("Cycle error")
        -204
        -205        visited.add(node)
        -206
        -207        for dep in dag.get(node, []):
        -208            visit(dep, visited)
        +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        visited.remove(node)
        -211        result.append(node)
        +210        for dep in dag.get(node, []):
        +211            visit(dep, visited)
         212
        -213    for node in dag:
        -214        visit(node, set())
        +213        visited.remove(node)
        +214        result.append(node)
         215
        -216    return result
        +216    for node in dag:
        +217        visit(node, set())
        +218
        +219    return result
         
        @@ -999,17 +1005,17 @@
        -
        219def open_file(file_name: str) -> t.TextIO:
        -220    """Open a file that may be compressed as gzip and return it in universal newline mode."""
        -221    with open(file_name, "rb") as f:
        -222        gzipped = f.read(2) == b"\x1f\x8b"
        -223
        -224    if gzipped:
        -225        import gzip
        +            
        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        return gzip.open(file_name, "rt", newline="")
        -228
        -229    return open(file_name, encoding="utf-8", newline="")
        +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="")
         
        @@ -1030,32 +1036,32 @@
        -
        232@contextmanager
        -233def csv_reader(read_csv: exp.ReadCSV) -> t.Any:
        -234    """
        -235    Returns a csv reader given the expression `READ_CSV(name, ['delimiter', '|', ...])`.
        -236
        -237    Args:
        -238        read_csv: a `ReadCSV` function call
        +            
        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    Yields:
        -241        A python csv reader.
        -242    """
        -243    args = read_csv.expressions
        -244    file = open_file(read_csv.name)
        -245
        -246    delimiter = ","
        -247    args = iter(arg.name for arg in args)
        -248    for k, v in zip(args, args):
        -249        if k == "delimiter":
        -250            delimiter = v
        -251
        -252    try:
        -253        import csv as csv_
        +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        yield csv_.reader(file, delimiter=delimiter)
        -256    finally:
        -257        file.close()
        +255    try:
        +256        import csv as csv_
        +257
        +258        yield csv_.reader(file, delimiter=delimiter)
        +259    finally:
        +260        file.close()
         
        @@ -1087,27 +1093,27 @@
        -
        260def find_new_name(taken: t.Collection[str], base: str) -> str:
        -261    """
        -262    Searches for a new name.
        -263
        -264    Args:
        -265        taken: a collection of taken names.
        -266        base: base name to alter.
        -267
        -268    Returns:
        -269        The new, available name.
        -270    """
        -271    if base not in taken:
        -272        return base
        -273
        -274    i = 2
        -275    new = f"{base}_{i}"
        -276    while new in taken:
        -277        i += 1
        -278        new = f"{base}_{i}"
        -279
        -280    return new
        +            
        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
         
        @@ -1140,9 +1146,9 @@
        -
        283def object_to_dict(obj: t.Any, **kwargs) -> t.Dict:
        -284    """Returns a dictionary created from an object's attributes."""
        -285    return {**{k: copy(v) for k, v in vars(obj).copy().items()}, **kwargs}
        +            
        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}
         
        @@ -1162,33 +1168,33 @@
        -
        288def split_num_words(
        -289    value: str, sep: str, min_num_words: int, fill_from_start: bool = True
        -290) -> t.List[t.Optional[str]]:
        -291    """
        -292    Perform a split on a value and return N words as a result with `None` used for words that don't exist.
        -293
        -294    Args:
        -295        value: the value to be split.
        -296        sep: the value to use to split on.
        -297        min_num_words: the minimum number of words that are going to be in the result.
        -298        fill_from_start: indicates that if `None` values should be inserted at the start or end of the list.
        -299
        -300    Examples:
        -301        >>> split_num_words("db.table", ".", 3)
        -302        [None, 'db', 'table']
        -303        >>> split_num_words("db.table", ".", 3, fill_from_start=False)
        -304        ['db', 'table', None]
        -305        >>> split_num_words("db.table", ".", 1)
        -306        ['db', 'table']
        -307
        -308    Returns:
        -309        The list of words returned by `split`, possibly augmented by a number of `None` values.
        -310    """
        -311    words = value.split(sep)
        -312    if fill_from_start:
        -313        return [None] * (min_num_words - len(words)) + words
        -314    return words + [None] * (min_num_words - len(words))
        +            
        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))
         
        @@ -1237,23 +1243,23 @@
        -
        317def is_iterable(value: t.Any) -> bool:
        -318    """
        -319    Checks if the value is an iterable, excluding the types `str` and `bytes`.
        -320
        -321    Examples:
        -322        >>> is_iterable([1,2])
        -323        True
        -324        >>> is_iterable("test")
        -325        False
        -326
        -327    Args:
        -328        value: the value to check if it is an iterable.
        +            
        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    Returns:
        -331        A `bool` value indicating if it is an iterable.
        -332    """
        -333    return hasattr(value, "__iter__") and not isinstance(value, (str, bytes))
        +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))
         
        @@ -1297,28 +1303,28 @@
        -
        336def flatten(values: t.Iterable[t.Iterable[t.Any] | t.Any]) -> t.Iterator[t.Any]:
        -337    """
        -338    Flattens an iterable that can contain both iterable and non-iterable elements. Objects of
        -339    type `str` and `bytes` are not regarded as iterables.
        -340
        -341    Examples:
        -342        >>> list(flatten([[1, 2], 3, {4}, (5, "bla")]))
        -343        [1, 2, 3, 4, 5, 'bla']
        -344        >>> list(flatten([1, 2, 3]))
        -345        [1, 2, 3]
        -346
        -347    Args:
        -348        values: the value to be flattened.
        +            
        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    Yields:
        -351        Non-iterable elements in `values`.
        -352    """
        -353    for value in values:
        -354        if is_iterable(value):
        -355            yield from flatten(value)
        -356        else:
        -357            yield value
        +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
         
        @@ -1363,13 +1369,13 @@ type str and bytes are not regarded as iterables.

        -
        360def count_params(function: t.Callable) -> int:
        -361    """
        -362    Returns the number of formal parameters expected by a function, without counting "self"
        -363    and "cls", in case of instance and class methods, respectively.
        -364    """
        -365    count = function.__code__.co_argcount
        -366    return count - 1 if inspect.ismethod(function) else count
        +            
        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
         
        @@ -1390,36 +1396,36 @@ and "cls", in case of instance and class methods, respectively.

        -
        369def dict_depth(d: t.Dict) -> int:
        -370    """
        -371    Get the nesting depth of a dictionary.
        -372
        -373    For example:
        -374        >>> dict_depth(None)
        -375        0
        -376        >>> dict_depth({})
        -377        1
        -378        >>> dict_depth({"a": "b"})
        -379        1
        -380        >>> dict_depth({"a": {}})
        -381        2
        -382        >>> dict_depth({"a": {"b": {}}})
        -383        3
        -384
        -385    Args:
        -386        d (dict): dictionary
        +            
        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    Returns:
        -389        int: depth
        -390    """
        -391    try:
        -392        return 1 + dict_depth(next(iter(d.values())))
        -393    except AttributeError:
        -394        # d doesn't have attribute "values"
        -395        return 0
        -396    except StopIteration:
        -397        # d.values() returns an empty sequence
        -398        return 1
        +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
         
        @@ -1469,12 +1475,12 @@ and "cls", in case of instance and class methods, respectively.

        -
        401def first(it: t.Iterable[T]) -> T:
        -402    """Returns the first element from an iterable.
        -403
        -404    Useful for sets.
        -405    """
        -406    return next(i for i in it)
        +            
        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)
         
        @@ -1496,21 +1502,21 @@ and "cls", in case of instance and class methods, respectively.

        -
        409def should_identify(text: str, identify: str | bool) -> bool:
        -410    """Checks if text should be identified given an identify option.
        -411
        -412    Args:
        -413        text: the text to check.
        -414        identify: "always" | True - always returns true, "safe" - true if no upper case
        -415
        -416    Returns:
        -417        Whether or not a string should be identified.
        -418    """
        -419    if identify is True or identify == "always":
        -420        return True
        -421    if identify == "safe":
        -422        return not any(char.isupper() for char in text)
        -423    return False
        +            
        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
         
        diff --git a/docs/sqlglot/lineage.html b/docs/sqlglot/lineage.html index c2e1156..66858cc 100644 --- a/docs/sqlglot/lineage.html +++ b/docs/sqlglot/lineage.html @@ -3,7 +3,7 @@ - + sqlglot.lineage API documentation @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • Node
              @@ -413,7 +413,7 @@
              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 0x7fb8b87be8c0>, <function qualify_columns at 0x7fb8b87bd7e0>, <function expand_laterals at 0x7fb8b87afeb0>), 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 0x7f0637f3fa30>, <function qualify_columns at 0x7f0637f3e950>, <function expand_laterals at 0x7f0637f3d000>), dialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None) -> sqlglot.lineage.Node: diff --git a/docs/sqlglot/optimizer.html b/docs/sqlglot/optimizer.html index ca09890..86b6cb0 100644 --- a/docs/sqlglot/optimizer.html +++ b/docs/sqlglot/optimizer.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer API documentation @@ -27,29 +27,29 @@ pattern=".+" required> -

              Submodules

              - +

              Submodules

              +
              Copyright (c) 2023 Toby Mao
              diff --git a/docs/sqlglot/optimizer/annotate_types.html b/docs/sqlglot/optimizer/annotate_types.html index 74dff7f..a60f38d 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 @@ -28,8 +28,8 @@ -

              API Documentation

              -
                +

                API Documentation

                +
                • annotate_types
                • @@ -69,7 +69,7 @@
                    1from sqlglot import exp
                  -  2from sqlglot.helper import ensure_collection, ensure_list, subclasses
                  +  2from sqlglot.helper import ensure_list, subclasses
                     3from sqlglot.optimizer.scope import Scope, traverse_scope
                     4from sqlglot.schema import ensure_schema
                     5
                  @@ -178,295 +178,293 @@
                   108        exp.If: lambda self, expr: self._annotate_by_args(expr, "true", "false"),
                   109        exp.Coalesce: lambda self, expr: self._annotate_by_args(expr, "this", "expressions"),
                   110        exp.IfNull: lambda self, expr: self._annotate_by_args(expr, "this", "expression"),
                  -111        exp.ConcatWs: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR),
                  -112        exp.GroupConcat: lambda self, expr: self._annotate_with_type(
                  -113            expr, exp.DataType.Type.VARCHAR
                  -114        ),
                  -115        exp.ArrayConcat: lambda self, expr: self._annotate_with_type(
                  -116            expr, exp.DataType.Type.VARCHAR
                  -117        ),
                  -118        exp.Initcap: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR),
                  -119        exp.Least: lambda self, expr: self._annotate_by_args(expr, "expressions"),
                  -120        exp.Length: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.BIGINT),
                  -121        exp.Levenshtein: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INT),
                  -122        exp.Ln: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE),
                  -123        exp.Log: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE),
                  -124        exp.Log2: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE),
                  -125        exp.Log10: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE),
                  -126        exp.Lower: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR),
                  -127        exp.Month: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.TINYINT),
                  -128        exp.Pow: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE),
                  -129        exp.Quantile: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE),
                  -130        exp.ApproxQuantile: lambda self, expr: self._annotate_with_type(
                  -131            expr, exp.DataType.Type.DOUBLE
                  -132        ),
                  -133        exp.RegexpLike: lambda self, expr: self._annotate_with_type(
                  -134            expr, exp.DataType.Type.BOOLEAN
                  -135        ),
                  -136        exp.Round: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE),
                  -137        exp.SafeDivide: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE),
                  -138        exp.Substring: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR),
                  -139        exp.StrPosition: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INT),
                  -140        exp.StrToDate: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DATE),
                  -141        exp.StrToTime: lambda self, expr: self._annotate_with_type(
                  -142            expr, exp.DataType.Type.TIMESTAMP
                  -143        ),
                  -144        exp.Sqrt: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE),
                  -145        exp.Stddev: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE),
                  -146        exp.StddevPop: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE),
                  -147        exp.StddevSamp: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE),
                  -148        exp.TimeToStr: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR),
                  -149        exp.TimeToTimeStr: lambda self, expr: self._annotate_with_type(
                  -150            expr, exp.DataType.Type.VARCHAR
                  -151        ),
                  -152        exp.TimeStrToDate: lambda self, expr: self._annotate_with_type(
                  -153            expr, exp.DataType.Type.DATE
                  -154        ),
                  -155        exp.TimeStrToTime: lambda self, expr: self._annotate_with_type(
                  -156            expr, exp.DataType.Type.TIMESTAMP
                  -157        ),
                  -158        exp.Trim: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR),
                  -159        exp.TsOrDsToDateStr: lambda self, expr: self._annotate_with_type(
                  -160            expr, exp.DataType.Type.VARCHAR
                  -161        ),
                  -162        exp.TsOrDsToDate: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DATE),
                  -163        exp.TsOrDiToDi: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INT),
                  -164        exp.UnixToStr: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR),
                  -165        exp.UnixToTime: lambda self, expr: self._annotate_with_type(
                  -166            expr, exp.DataType.Type.TIMESTAMP
                  -167        ),
                  -168        exp.UnixToTimeStr: lambda self, expr: self._annotate_with_type(
                  -169            expr, exp.DataType.Type.VARCHAR
                  -170        ),
                  -171        exp.Upper: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR),
                  -172        exp.Variance: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE),
                  -173        exp.VariancePop: lambda self, expr: self._annotate_with_type(
                  -174            expr, exp.DataType.Type.DOUBLE
                  -175        ),
                  -176        exp.Week: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.TINYINT),
                  -177        exp.Year: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.TINYINT),
                  -178    }
                  -179
                  -180    # Reference: https://spark.apache.org/docs/3.2.0/sql-ref-ansi-compliance.html
                  -181    COERCES_TO = {
                  -182        # CHAR < NCHAR < VARCHAR < NVARCHAR < TEXT
                  -183        exp.DataType.Type.TEXT: set(),
                  -184        exp.DataType.Type.NVARCHAR: {exp.DataType.Type.TEXT},
                  -185        exp.DataType.Type.VARCHAR: {exp.DataType.Type.NVARCHAR, exp.DataType.Type.TEXT},
                  -186        exp.DataType.Type.NCHAR: {
                  -187            exp.DataType.Type.VARCHAR,
                  -188            exp.DataType.Type.NVARCHAR,
                  -189            exp.DataType.Type.TEXT,
                  -190        },
                  -191        exp.DataType.Type.CHAR: {
                  -192            exp.DataType.Type.NCHAR,
                  -193            exp.DataType.Type.VARCHAR,
                  -194            exp.DataType.Type.NVARCHAR,
                  -195            exp.DataType.Type.TEXT,
                  -196        },
                  -197        # TINYINT < SMALLINT < INT < BIGINT < DECIMAL < FLOAT < DOUBLE
                  -198        exp.DataType.Type.DOUBLE: set(),
                  -199        exp.DataType.Type.FLOAT: {exp.DataType.Type.DOUBLE},
                  -200        exp.DataType.Type.DECIMAL: {exp.DataType.Type.FLOAT, exp.DataType.Type.DOUBLE},
                  -201        exp.DataType.Type.BIGINT: {
                  -202            exp.DataType.Type.DECIMAL,
                  -203            exp.DataType.Type.FLOAT,
                  -204            exp.DataType.Type.DOUBLE,
                  -205        },
                  -206        exp.DataType.Type.INT: {
                  -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.SMALLINT: {
                  -213            exp.DataType.Type.INT,
                  -214            exp.DataType.Type.BIGINT,
                  -215            exp.DataType.Type.DECIMAL,
                  -216            exp.DataType.Type.FLOAT,
                  -217            exp.DataType.Type.DOUBLE,
                  -218        },
                  -219        exp.DataType.Type.TINYINT: {
                  -220            exp.DataType.Type.SMALLINT,
                  -221            exp.DataType.Type.INT,
                  -222            exp.DataType.Type.BIGINT,
                  -223            exp.DataType.Type.DECIMAL,
                  -224            exp.DataType.Type.FLOAT,
                  -225            exp.DataType.Type.DOUBLE,
                  -226        },
                  -227        # DATE < DATETIME < TIMESTAMP < TIMESTAMPTZ < TIMESTAMPLTZ
                  -228        exp.DataType.Type.TIMESTAMPLTZ: set(),
                  -229        exp.DataType.Type.TIMESTAMPTZ: {exp.DataType.Type.TIMESTAMPLTZ},
                  -230        exp.DataType.Type.TIMESTAMP: {
                  -231            exp.DataType.Type.TIMESTAMPTZ,
                  -232            exp.DataType.Type.TIMESTAMPLTZ,
                  -233        },
                  -234        exp.DataType.Type.DATETIME: {
                  -235            exp.DataType.Type.TIMESTAMP,
                  -236            exp.DataType.Type.TIMESTAMPTZ,
                  -237            exp.DataType.Type.TIMESTAMPLTZ,
                  -238        },
                  -239        exp.DataType.Type.DATE: {
                  -240            exp.DataType.Type.DATETIME,
                  -241            exp.DataType.Type.TIMESTAMP,
                  -242            exp.DataType.Type.TIMESTAMPTZ,
                  -243            exp.DataType.Type.TIMESTAMPLTZ,
                  -244        },
                  -245    }
                  -246
                  -247    TRAVERSABLES = (exp.Select, exp.Union, exp.UDTF, exp.Subquery)
                  +111        exp.Concat: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR),
                  +112        exp.ConcatWs: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR),
                  +113        exp.GroupConcat: lambda self, expr: self._annotate_with_type(
                  +114            expr, exp.DataType.Type.VARCHAR
                  +115        ),
                  +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
                  +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
                  +156        ),
                  +157        exp.TimeStrToTime: lambda self, expr: self._annotate_with_type(
                  +158            expr, exp.DataType.Type.TIMESTAMP
                  +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
                  +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    def __init__(self, schema=None, annotators=None, coerces_to=None):
                  -250        self.schema = schema
                  -251        self.annotators = annotators or self.ANNOTATORS
                  -252        self.coerces_to = coerces_to or self.COERCES_TO
                  -253
                  -254    def annotate(self, expression):
                  -255        if isinstance(expression, self.TRAVERSABLES):
                  -256            for scope in traverse_scope(expression):
                  -257                selects = {}
                  -258                for name, source in scope.sources.items():
                  -259                    if not isinstance(source, Scope):
                  -260                        continue
                  -261                    if isinstance(source.expression, exp.UDTF):
                  -262                        values = []
                  -263
                  -264                        if isinstance(source.expression, exp.Lateral):
                  -265                            if isinstance(source.expression.this, exp.Explode):
                  -266                                values = [source.expression.this.this]
                  -267                        else:
                  -268                            values = source.expression.expressions[0].expressions
                  -269
                  -270                        if not values:
                  -271                            continue
                  -272
                  -273                        selects[name] = {
                  -274                            alias: column
                  -275                            for alias, column in zip(
                  -276                                source.expression.alias_column_names,
                  -277                                values,
                  -278                            )
                  -279                        }
                  -280                    else:
                  -281                        selects[name] = {
                  -282                            select.alias_or_name: select for select in source.expression.selects
                  -283                        }
                  -284                # First annotate the current scope's column references
                  -285                for col in scope.columns:
                  -286                    if not col.table:
                  -287                        continue
                  -288
                  -289                    source = scope.sources.get(col.table)
                  -290                    if isinstance(source, exp.Table):
                  -291                        col.type = self.schema.get_column_type(source, col)
                  -292                    elif source and col.table in selects and col.name in selects[col.table]:
                  -293                        col.type = selects[col.table][col.name].type
                  -294                # Then (possibly) annotate the remaining expressions in the scope
                  -295                self._maybe_annotate(scope.expression)
                  -296        return self._maybe_annotate(expression)  # This takes care of non-traversable expressions
                  -297
                  -298    def _maybe_annotate(self, expression):
                  -299        if not isinstance(expression, exp.Expression):
                  -300            return None
                  -301
                  -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.args.values():
                  -315            for v in ensure_collection(value):
                  -316                self._maybe_annotate(v)
                  +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
                  +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        return expression
                  -319
                  -320    def _maybe_coerce(self, type1, type2):
                  -321        # We propagate the NULL / UNKNOWN types upwards if found
                  -322        if isinstance(type1, exp.DataType):
                  -323            type1 = type1.this
                  -324        if isinstance(type2, exp.DataType):
                  -325            type2 = type2.this
                  -326
                  -327        if exp.DataType.Type.NULL in (type1, type2):
                  -328            return exp.DataType.Type.NULL
                  -329        if exp.DataType.Type.UNKNOWN in (type1, type2):
                  -330            return exp.DataType.Type.UNKNOWN
                  +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        return type2 if type2 in self.coerces_to.get(type1, {}) else type1
                  -333
                  -334    def _annotate_binary(self, expression):
                  -335        self._annotate_args(expression)
                  -336
                  -337        left_type = expression.left.type.this
                  -338        right_type = expression.right.type.this
                  -339
                  -340        if isinstance(expression, (exp.And, exp.Or)):
                  -341            if left_type == exp.DataType.Type.NULL and right_type == exp.DataType.Type.NULL:
                  -342                expression.type = exp.DataType.Type.NULL
                  -343            elif exp.DataType.Type.NULL in (left_type, right_type):
                  -344                expression.type = exp.DataType.build(
                  -345                    "NULLABLE", expressions=exp.DataType.build("BOOLEAN")
                  -346                )
                  -347            else:
                  -348                expression.type = exp.DataType.Type.BOOLEAN
                  -349        elif isinstance(expression, (exp.Condition, exp.Predicate)):
                  -350            expression.type = exp.DataType.Type.BOOLEAN
                  -351        else:
                  -352            expression.type = self._maybe_coerce(left_type, right_type)
                  +332    def _annotate_binary(self, expression):
                  +333        self._annotate_args(expression)
                  +334
                  +335        left_type = expression.left.type.this
                  +336        right_type = expression.right.type.this
                  +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        return expression
                  -355
                  -356    def _annotate_unary(self, expression):
                  -357        self._annotate_args(expression)
                  -358
                  -359        if isinstance(expression, exp.Condition) and not isinstance(expression, exp.Paren):
                  -360            expression.type = exp.DataType.Type.BOOLEAN
                  -361        else:
                  -362            expression.type = expression.this.type
                  +354    def _annotate_unary(self, expression):
                  +355        self._annotate_args(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        return expression
                  -365
                  -366    def _annotate_literal(self, expression):
                  -367        if expression.is_string:
                  -368            expression.type = exp.DataType.Type.VARCHAR
                  -369        elif expression.is_int:
                  -370            expression.type = exp.DataType.Type.INT
                  -371        else:
                  -372            expression.type = exp.DataType.Type.DOUBLE
                  +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        return expression
                  -375
                  -376    def _annotate_with_type(self, expression, target_type):
                  -377        expression.type = target_type
                  -378        return self._annotate_args(expression)
                  -379
                  -380    def _annotate_by_args(self, expression, *args, promote=False):
                  -381        self._annotate_args(expression)
                  -382        expressions = []
                  -383        for arg in args:
                  -384            arg_expr = expression.args.get(arg)
                  -385            expressions.extend(expr for expr in ensure_list(arg_expr) if expr)
                  -386
                  -387        last_datatype = None
                  -388        for expr in expressions:
                  -389            last_datatype = self._maybe_coerce(last_datatype or expr.type, expr.type)
                  +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        expression.type = last_datatype or exp.DataType.Type.UNKNOWN
                  -392
                  -393        if promote:
                  -394            if expression.type.this in exp.DataType.INTEGER_TYPES:
                  -395                expression.type = exp.DataType.Type.BIGINT
                  -396            elif expression.type.this in exp.DataType.FLOAT_TYPES:
                  -397                expression.type = exp.DataType.Type.DOUBLE
                  -398
                  -399        return expression
                  +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
                   
                  @@ -633,295 +631,293 @@ Assumes that we've already executed the optimizer's qualify_columns step.

                  109 exp.If: lambda self, expr: self._annotate_by_args(expr, "true", "false"), 110 exp.Coalesce: lambda self, expr: self._annotate_by_args(expr, "this", "expressions"), 111 exp.IfNull: lambda self, expr: self._annotate_by_args(expr, "this", "expression"), -112 exp.ConcatWs: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -113 exp.GroupConcat: lambda self, expr: self._annotate_with_type( -114 expr, exp.DataType.Type.VARCHAR -115 ), -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.Least: lambda self, expr: self._annotate_by_args(expr, "expressions"), -121 exp.Length: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.BIGINT), -122 exp.Levenshtein: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INT), -123 exp.Ln: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -124 exp.Log: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -125 exp.Log2: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -126 exp.Log10: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -127 exp.Lower: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -128 exp.Month: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.TINYINT), -129 exp.Pow: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -130 exp.Quantile: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -131 exp.ApproxQuantile: lambda self, expr: self._annotate_with_type( -132 expr, exp.DataType.Type.DOUBLE -133 ), -134 exp.RegexpLike: lambda self, expr: self._annotate_with_type( -135 expr, exp.DataType.Type.BOOLEAN -136 ), -137 exp.Round: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -138 exp.SafeDivide: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -139 exp.Substring: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -140 exp.StrPosition: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INT), -141 exp.StrToDate: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DATE), -142 exp.StrToTime: lambda self, expr: self._annotate_with_type( -143 expr, exp.DataType.Type.TIMESTAMP -144 ), -145 exp.Sqrt: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -146 exp.Stddev: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -147 exp.StddevPop: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -148 exp.StddevSamp: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -149 exp.TimeToStr: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -150 exp.TimeToTimeStr: lambda self, expr: self._annotate_with_type( -151 expr, exp.DataType.Type.VARCHAR -152 ), -153 exp.TimeStrToDate: lambda self, expr: self._annotate_with_type( -154 expr, exp.DataType.Type.DATE -155 ), -156 exp.TimeStrToTime: lambda self, expr: self._annotate_with_type( -157 expr, exp.DataType.Type.TIMESTAMP -158 ), -159 exp.Trim: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -160 exp.TsOrDsToDateStr: lambda self, expr: self._annotate_with_type( -161 expr, exp.DataType.Type.VARCHAR -162 ), -163 exp.TsOrDsToDate: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DATE), -164 exp.TsOrDiToDi: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INT), -165 exp.UnixToStr: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -166 exp.UnixToTime: lambda self, expr: self._annotate_with_type( -167 expr, exp.DataType.Type.TIMESTAMP -168 ), -169 exp.UnixToTimeStr: lambda self, expr: self._annotate_with_type( -170 expr, exp.DataType.Type.VARCHAR -171 ), -172 exp.Upper: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), -173 exp.Variance: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.DOUBLE), -174 exp.VariancePop: lambda self, expr: self._annotate_with_type( -175 expr, exp.DataType.Type.DOUBLE -176 ), -177 exp.Week: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.TINYINT), -178 exp.Year: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.TINYINT), -179 } -180 -181 # Reference: https://spark.apache.org/docs/3.2.0/sql-ref-ansi-compliance.html -182 COERCES_TO = { -183 # CHAR < NCHAR < VARCHAR < NVARCHAR < TEXT -184 exp.DataType.Type.TEXT: set(), -185 exp.DataType.Type.NVARCHAR: {exp.DataType.Type.TEXT}, -186 exp.DataType.Type.VARCHAR: {exp.DataType.Type.NVARCHAR, exp.DataType.Type.TEXT}, -187 exp.DataType.Type.NCHAR: { -188 exp.DataType.Type.VARCHAR, -189 exp.DataType.Type.NVARCHAR, -190 exp.DataType.Type.TEXT, -191 }, -192 exp.DataType.Type.CHAR: { -193 exp.DataType.Type.NCHAR, -194 exp.DataType.Type.VARCHAR, -195 exp.DataType.Type.NVARCHAR, -196 exp.DataType.Type.TEXT, -197 }, -198 # TINYINT < SMALLINT < INT < BIGINT < DECIMAL < FLOAT < DOUBLE -199 exp.DataType.Type.DOUBLE: set(), -200 exp.DataType.Type.FLOAT: {exp.DataType.Type.DOUBLE}, -201 exp.DataType.Type.DECIMAL: {exp.DataType.Type.FLOAT, exp.DataType.Type.DOUBLE}, -202 exp.DataType.Type.BIGINT: { -203 exp.DataType.Type.DECIMAL, -204 exp.DataType.Type.FLOAT, -205 exp.DataType.Type.DOUBLE, -206 }, -207 exp.DataType.Type.INT: { -208 exp.DataType.Type.BIGINT, -209 exp.DataType.Type.DECIMAL, -210 exp.DataType.Type.FLOAT, -211 exp.DataType.Type.DOUBLE, -212 }, -213 exp.DataType.Type.SMALLINT: { -214 exp.DataType.Type.INT, -215 exp.DataType.Type.BIGINT, -216 exp.DataType.Type.DECIMAL, -217 exp.DataType.Type.FLOAT, -218 exp.DataType.Type.DOUBLE, -219 }, -220 exp.DataType.Type.TINYINT: { -221 exp.DataType.Type.SMALLINT, -222 exp.DataType.Type.INT, -223 exp.DataType.Type.BIGINT, -224 exp.DataType.Type.DECIMAL, -225 exp.DataType.Type.FLOAT, -226 exp.DataType.Type.DOUBLE, -227 }, -228 # DATE < DATETIME < TIMESTAMP < TIMESTAMPTZ < TIMESTAMPLTZ -229 exp.DataType.Type.TIMESTAMPLTZ: set(), -230 exp.DataType.Type.TIMESTAMPTZ: {exp.DataType.Type.TIMESTAMPLTZ}, -231 exp.DataType.Type.TIMESTAMP: { -232 exp.DataType.Type.TIMESTAMPTZ, -233 exp.DataType.Type.TIMESTAMPLTZ, -234 }, -235 exp.DataType.Type.DATETIME: { -236 exp.DataType.Type.TIMESTAMP, -237 exp.DataType.Type.TIMESTAMPTZ, -238 exp.DataType.Type.TIMESTAMPLTZ, -239 }, -240 exp.DataType.Type.DATE: { -241 exp.DataType.Type.DATETIME, -242 exp.DataType.Type.TIMESTAMP, -243 exp.DataType.Type.TIMESTAMPTZ, -244 exp.DataType.Type.TIMESTAMPLTZ, -245 }, -246 } -247 -248 TRAVERSABLES = (exp.Select, exp.Union, exp.UDTF, exp.Subquery) +112 exp.Concat: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), +113 exp.ConcatWs: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), +114 exp.GroupConcat: lambda self, expr: self._annotate_with_type( +115 expr, exp.DataType.Type.VARCHAR +116 ), +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 +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 +157 ), +158 exp.TimeStrToTime: lambda self, expr: self._annotate_with_type( +159 expr, exp.DataType.Type.TIMESTAMP +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 +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 def __init__(self, schema=None, annotators=None, coerces_to=None): -251 self.schema = schema -252 self.annotators = annotators or self.ANNOTATORS -253 self.coerces_to = coerces_to or self.COERCES_TO -254 -255 def annotate(self, expression): -256 if isinstance(expression, self.TRAVERSABLES): -257 for scope in traverse_scope(expression): -258 selects = {} -259 for name, source in scope.sources.items(): -260 if not isinstance(source, Scope): -261 continue -262 if isinstance(source.expression, exp.UDTF): -263 values = [] -264 -265 if isinstance(source.expression, exp.Lateral): -266 if isinstance(source.expression.this, exp.Explode): -267 values = [source.expression.this.this] -268 else: -269 values = source.expression.expressions[0].expressions -270 -271 if not values: -272 continue -273 -274 selects[name] = { -275 alias: column -276 for alias, column in zip( -277 source.expression.alias_column_names, -278 values, -279 ) -280 } -281 else: -282 selects[name] = { -283 select.alias_or_name: select for select in source.expression.selects -284 } -285 # First annotate the current scope's column references -286 for col in scope.columns: -287 if not col.table: -288 continue -289 -290 source = scope.sources.get(col.table) -291 if isinstance(source, exp.Table): -292 col.type = self.schema.get_column_type(source, col) -293 elif source and col.table in selects and col.name in selects[col.table]: -294 col.type = selects[col.table][col.name].type -295 # Then (possibly) annotate the remaining expressions in the scope -296 self._maybe_annotate(scope.expression) -297 return self._maybe_annotate(expression) # This takes care of non-traversable expressions -298 -299 def _maybe_annotate(self, expression): -300 if not isinstance(expression, exp.Expression): -301 return None -302 -303 if expression.type: -304 return expression # We've already inferred the expression's type -305 -306 annotator = self.annotators.get(expression.__class__) -307 -308 return ( -309 annotator(self, expression) -310 if annotator -311 else self._annotate_with_type(expression, exp.DataType.Type.UNKNOWN) -312 ) -313 -314 def _annotate_args(self, expression): -315 for value in expression.args.values(): -316 for v in ensure_collection(value): -317 self._maybe_annotate(v) +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 +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 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 +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 return type2 if type2 in self.coerces_to.get(type1, {}) else type1 -334 -335 def _annotate_binary(self, expression): -336 self._annotate_args(expression) -337 -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) +333 def _annotate_binary(self, expression): +334 self._annotate_args(expression) +335 +336 left_type = expression.left.type.this +337 right_type = expression.right.type.this +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 return expression -356 -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 +355 def _annotate_unary(self, expression): +356 self._annotate_args(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 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 +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 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) +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 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 +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
        @@ -937,10 +933,10 @@ Assumes that we've already executed the optimizer's qualify_columns step.

        -
        250    def __init__(self, schema=None, annotators=None, coerces_to=None):
        -251        self.schema = schema
        -252        self.annotators = annotators or self.ANNOTATORS
        -253        self.coerces_to = coerces_to or self.COERCES_TO
        +            
        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
         
        @@ -958,49 +954,49 @@ Assumes that we've already executed the optimizer's qualify_columns step.

        -
        255    def annotate(self, expression):
        -256        if isinstance(expression, self.TRAVERSABLES):
        -257            for scope in traverse_scope(expression):
        -258                selects = {}
        -259                for name, source in scope.sources.items():
        -260                    if not isinstance(source, Scope):
        -261                        continue
        -262                    if isinstance(source.expression, exp.UDTF):
        -263                        values = []
        -264
        -265                        if isinstance(source.expression, exp.Lateral):
        -266                            if isinstance(source.expression.this, exp.Explode):
        -267                                values = [source.expression.this.this]
        -268                        else:
        -269                            values = source.expression.expressions[0].expressions
        -270
        -271                        if not values:
        -272                            continue
        -273
        -274                        selects[name] = {
        -275                            alias: column
        -276                            for alias, column in zip(
        -277                                source.expression.alias_column_names,
        -278                                values,
        -279                            )
        -280                        }
        -281                    else:
        -282                        selects[name] = {
        -283                            select.alias_or_name: select for select in source.expression.selects
        -284                        }
        -285                # First annotate the current scope's column references
        -286                for col in scope.columns:
        -287                    if not col.table:
        -288                        continue
        -289
        -290                    source = scope.sources.get(col.table)
        -291                    if isinstance(source, exp.Table):
        -292                        col.type = self.schema.get_column_type(source, col)
        -293                    elif source and col.table in selects and col.name in selects[col.table]:
        -294                        col.type = selects[col.table][col.name].type
        -295                # Then (possibly) annotate the remaining expressions in the scope
        -296                self._maybe_annotate(scope.expression)
        -297        return self._maybe_annotate(expression)  # This takes care of non-traversable expressions
        +            
        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
        +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
         
        diff --git a/docs/sqlglot/optimizer/canonicalize.html b/docs/sqlglot/optimizer/canonicalize.html index 386dfbd..bc73564 100644 --- a/docs/sqlglot/optimizer/canonicalize.html +++ b/docs/sqlglot/optimizer/canonicalize.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.canonicalize API documentation @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • canonicalize
          • @@ -145,7 +145,7 @@ 75 a.type 76 and a.type.this == exp.DataType.Type.DATE 77 and b.type -78 and b.type.this != exp.DataType.Type.DATE +78 and b.type.this not in (exp.DataType.Type.DATE, exp.DataType.Type.INTERVAL) 79 ): 80 _replace_cast(b, "date") 81 diff --git a/docs/sqlglot/optimizer/eliminate_ctes.html b/docs/sqlglot/optimizer/eliminate_ctes.html index ed0ddd1..1d1c21e 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 @@ -28,8 +28,8 @@ -

            API Documentation

            -
              +

              API Documentation

              +
              • eliminate_ctes
              • diff --git a/docs/sqlglot/optimizer/eliminate_joins.html b/docs/sqlglot/optimizer/eliminate_joins.html index 8a0f2ff..30ff3d4 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 @@ -28,8 +28,8 @@ -

                API Documentation

                -
                  +

                  API Documentation

                  +
                  • eliminate_joins
                  • @@ -62,187 +62,184 @@
                      1from sqlglot import expressions as exp
                       2from sqlglot.optimizer.normalize import normalized
                       3from sqlglot.optimizer.scope import Scope, traverse_scope
                    -  4from sqlglot.optimizer.simplify import simplify
                    +  4
                       5
                    -  6
                    -  7def eliminate_joins(expression):
                    -  8    """
                    -  9    Remove unused joins from an expression.
                    - 10
                    - 11    This only removes joins when we know that the join condition doesn't produce duplicate rows.
                    - 12
                    - 13    Example:
                    - 14        >>> import sqlglot
                    - 15        >>> sql = "SELECT x.a FROM x LEFT JOIN (SELECT DISTINCT y.b FROM y) AS y ON x.b = y.b"
                    - 16        >>> expression = sqlglot.parse_one(sql)
                    - 17        >>> eliminate_joins(expression).sql()
                    - 18        'SELECT x.a FROM x'
                    - 19
                    - 20    Args:
                    - 21        expression (sqlglot.Expression): expression to optimize
                    - 22    Returns:
                    - 23        sqlglot.Expression: optimized expression
                    - 24    """
                    - 25    for scope in traverse_scope(expression):
                    - 26        # If any columns in this scope aren't qualified, it's hard to determine if a join isn't used.
                    - 27        # It's probably possible to infer this from the outputs of derived tables.
                    - 28        # But for now, let's just skip this rule.
                    - 29        if scope.unqualified_columns:
                    - 30            continue
                    - 31
                    - 32        joins = scope.expression.args.get("joins", [])
                    - 33
                    - 34        # Reverse the joins so we can remove chains of unused joins
                    - 35        for join in reversed(joins):
                    - 36            alias = join.this.alias_or_name
                    - 37            if _should_eliminate_join(scope, join, alias):
                    - 38                join.pop()
                    - 39                scope.remove_source(alias)
                    - 40    return expression
                    +  6def eliminate_joins(expression):
                    +  7    """
                    +  8    Remove unused joins from an expression.
                    +  9
                    + 10    This only removes joins when we know that the join condition doesn't produce duplicate rows.
                    + 11
                    + 12    Example:
                    + 13        >>> import sqlglot
                    + 14        >>> sql = "SELECT x.a FROM x LEFT JOIN (SELECT DISTINCT y.b FROM y) AS y ON x.b = y.b"
                    + 15        >>> expression = sqlglot.parse_one(sql)
                    + 16        >>> eliminate_joins(expression).sql()
                    + 17        'SELECT x.a FROM x'
                    + 18
                    + 19    Args:
                    + 20        expression (sqlglot.Expression): expression to optimize
                    + 21    Returns:
                    + 22        sqlglot.Expression: optimized expression
                    + 23    """
                    + 24    for scope in traverse_scope(expression):
                    + 25        # If any columns in this scope aren't qualified, it's hard to determine if a join isn't used.
                    + 26        # It's probably possible to infer this from the outputs of derived tables.
                    + 27        # But for now, let's just skip this rule.
                    + 28        if scope.unqualified_columns:
                    + 29            continue
                    + 30
                    + 31        joins = scope.expression.args.get("joins", [])
                    + 32
                    + 33        # Reverse the joins so we can remove chains of unused joins
                    + 34        for join in reversed(joins):
                    + 35            alias = join.this.alias_or_name
                    + 36            if _should_eliminate_join(scope, join, alias):
                    + 37                join.pop()
                    + 38                scope.remove_source(alias)
                    + 39    return expression
                    + 40
                      41
                    - 42
                    - 43def _should_eliminate_join(scope, join, alias):
                    - 44    inner_source = scope.sources.get(alias)
                    - 45    return (
                    - 46        isinstance(inner_source, Scope)
                    - 47        and not _join_is_used(scope, join, alias)
                    - 48        and (
                    - 49            (join.side == "LEFT" and _is_joined_on_all_unique_outputs(inner_source, join))
                    - 50            or (not join.args.get("on") and _has_single_output_row(inner_source))
                    - 51        )
                    - 52    )
                    + 42def _should_eliminate_join(scope, join, alias):
                    + 43    inner_source = scope.sources.get(alias)
                    + 44    return (
                    + 45        isinstance(inner_source, Scope)
                    + 46        and not _join_is_used(scope, join, alias)
                    + 47        and (
                    + 48            (join.side == "LEFT" and _is_joined_on_all_unique_outputs(inner_source, join))
                    + 49            or (not join.args.get("on") and _has_single_output_row(inner_source))
                    + 50        )
                    + 51    )
                    + 52
                      53
                    - 54
                    - 55def _join_is_used(scope, join, alias):
                    - 56    # We need to find all columns that reference this join.
                    - 57    # But columns in the ON clause shouldn't count.
                    - 58    on = join.args.get("on")
                    - 59    if on:
                    - 60        on_clause_columns = {id(column) for column in on.find_all(exp.Column)}
                    - 61    else:
                    - 62        on_clause_columns = set()
                    - 63    return any(
                    - 64        column for column in scope.source_columns(alias) if id(column) not in on_clause_columns
                    - 65    )
                    + 54def _join_is_used(scope, join, alias):
                    + 55    # We need to find all columns that reference this join.
                    + 56    # But columns in the ON clause shouldn't count.
                    + 57    on = join.args.get("on")
                    + 58    if on:
                    + 59        on_clause_columns = {id(column) for column in on.find_all(exp.Column)}
                    + 60    else:
                    + 61        on_clause_columns = set()
                    + 62    return any(
                    + 63        column for column in scope.source_columns(alias) if id(column) not in on_clause_columns
                    + 64    )
                    + 65
                      66
                    - 67
                    - 68def _is_joined_on_all_unique_outputs(scope, join):
                    - 69    unique_outputs = _unique_outputs(scope)
                    - 70    if not unique_outputs:
                    - 71        return False
                    - 72
                    - 73    _, join_keys, _ = join_condition(join)
                    - 74    remaining_unique_outputs = unique_outputs - {c.name for c in join_keys}
                    - 75    return not remaining_unique_outputs
                    + 67def _is_joined_on_all_unique_outputs(scope, join):
                    + 68    unique_outputs = _unique_outputs(scope)
                    + 69    if not unique_outputs:
                    + 70        return False
                    + 71
                    + 72    _, join_keys, _ = join_condition(join)
                    + 73    remaining_unique_outputs = unique_outputs - {c.name for c in join_keys}
                    + 74    return not remaining_unique_outputs
                    + 75
                      76
                    - 77
                    - 78def _unique_outputs(scope):
                    - 79    """Determine output columns of `scope` that must have a unique combination per row"""
                    - 80    if scope.expression.args.get("distinct"):
                    - 81        return set(scope.expression.named_selects)
                    - 82
                    - 83    group = scope.expression.args.get("group")
                    - 84    if group:
                    - 85        grouped_expressions = set(group.expressions)
                    - 86        grouped_outputs = set()
                    - 87
                    - 88        unique_outputs = set()
                    - 89        for select in scope.selects:
                    - 90            output = select.unalias()
                    - 91            if output in grouped_expressions:
                    - 92                grouped_outputs.add(output)
                    - 93                unique_outputs.add(select.alias_or_name)
                    - 94
                    - 95        # All the grouped expressions must be in the output
                    - 96        if not grouped_expressions.difference(grouped_outputs):
                    - 97            return unique_outputs
                    - 98        else:
                    - 99            return set()
                    -100
                    -101    if _has_single_output_row(scope):
                    -102        return set(scope.expression.named_selects)
                    -103
                    -104    return set()
                    + 77def _unique_outputs(scope):
                    + 78    """Determine output columns of `scope` that must have a unique combination per row"""
                    + 79    if scope.expression.args.get("distinct"):
                    + 80        return set(scope.expression.named_selects)
                    + 81
                    + 82    group = scope.expression.args.get("group")
                    + 83    if group:
                    + 84        grouped_expressions = set(group.expressions)
                    + 85        grouped_outputs = set()
                    + 86
                    + 87        unique_outputs = set()
                    + 88        for select in scope.selects:
                    + 89            output = select.unalias()
                    + 90            if output in grouped_expressions:
                    + 91                grouped_outputs.add(output)
                    + 92                unique_outputs.add(select.alias_or_name)
                    + 93
                    + 94        # All the grouped expressions must be in the output
                    + 95        if not grouped_expressions.difference(grouped_outputs):
                    + 96            return unique_outputs
                    + 97        else:
                    + 98            return set()
                    + 99
                    +100    if _has_single_output_row(scope):
                    +101        return set(scope.expression.named_selects)
                    +102
                    +103    return set()
                    +104
                     105
                    -106
                    -107def _has_single_output_row(scope):
                    -108    return isinstance(scope.expression, exp.Select) and (
                    -109        all(isinstance(e.unalias(), exp.AggFunc) for e in scope.selects)
                    -110        or _is_limit_1(scope)
                    -111        or not scope.expression.args.get("from")
                    -112    )
                    +106def _has_single_output_row(scope):
                    +107    return isinstance(scope.expression, exp.Select) and (
                    +108        all(isinstance(e.unalias(), exp.AggFunc) for e in scope.selects)
                    +109        or _is_limit_1(scope)
                    +110        or not scope.expression.args.get("from")
                    +111    )
                    +112
                     113
                    -114
                    -115def _is_limit_1(scope):
                    -116    limit = scope.expression.args.get("limit")
                    -117    return limit and limit.expression.this == "1"
                    +114def _is_limit_1(scope):
                    +115    limit = scope.expression.args.get("limit")
                    +116    return limit and limit.expression.this == "1"
                    +117
                     118
                    -119
                    -120def join_condition(join):
                    -121    """
                    -122    Extract the join condition from a join expression.
                    -123
                    -124    Args:
                    -125        join (exp.Join)
                    -126    Returns:
                    -127        tuple[list[str], list[str], exp.Expression]:
                    -128            Tuple of (source key, join key, remaining predicate)
                    -129    """
                    -130    name = join.this.alias_or_name
                    -131    on = (join.args.get("on") or exp.true()).copy()
                    -132    source_key = []
                    -133    join_key = []
                    -134
                    -135    def extract_condition(condition):
                    -136        left, right = condition.unnest_operands()
                    -137        left_tables = exp.column_table_names(left)
                    -138        right_tables = exp.column_table_names(right)
                    -139
                    -140        if name in left_tables and name not in right_tables:
                    -141            join_key.append(left)
                    -142            source_key.append(right)
                    -143            condition.replace(exp.true())
                    -144        elif name in right_tables and name not in left_tables:
                    -145            join_key.append(right)
                    -146            source_key.append(left)
                    -147            condition.replace(exp.true())
                    -148
                    -149    # find the join keys
                    -150    # SELECT
                    -151    # FROM x
                    -152    # JOIN y
                    -153    #   ON x.a = y.b AND y.b > 1
                    -154    #
                    -155    # should pull y.b as the join key and x.a as the source key
                    -156    if normalized(on):
                    -157        on = on if isinstance(on, exp.And) else exp.and_(on, exp.true())
                    -158
                    -159        for condition in on.flatten():
                    -160            if isinstance(condition, exp.EQ):
                    -161                extract_condition(condition)
                    -162    elif normalized(on, dnf=True):
                    -163        conditions = None
                    -164
                    -165        for condition in on.flatten():
                    -166            parts = [part for part in condition.flatten() if isinstance(part, exp.EQ)]
                    -167            if conditions is None:
                    -168                conditions = parts
                    -169            else:
                    -170                temp = []
                    -171                for p in parts:
                    -172                    cs = [c for c in conditions if p == c]
                    -173
                    -174                    if cs:
                    -175                        temp.append(p)
                    -176                        temp.extend(cs)
                    -177                conditions = temp
                    -178
                    -179        for condition in conditions:
                    -180            extract_condition(condition)
                    -181
                    -182    on = simplify(on)
                    -183    remaining_condition = None if on == exp.true() else on
                    -184    return source_key, join_key, remaining_condition
                    +119def join_condition(join):
                    +120    """
                    +121    Extract the join condition from a join expression.
                    +122
                    +123    Args:
                    +124        join (exp.Join)
                    +125    Returns:
                    +126        tuple[list[str], list[str], exp.Expression]:
                    +127            Tuple of (source key, join key, remaining predicate)
                    +128    """
                    +129    name = join.this.alias_or_name
                    +130    on = (join.args.get("on") or exp.true()).copy()
                    +131    source_key = []
                    +132    join_key = []
                    +133
                    +134    def extract_condition(condition):
                    +135        left, right = condition.unnest_operands()
                    +136        left_tables = exp.column_table_names(left)
                    +137        right_tables = exp.column_table_names(right)
                    +138
                    +139        if name in left_tables and name not in right_tables:
                    +140            join_key.append(left)
                    +141            source_key.append(right)
                    +142            condition.replace(exp.true())
                    +143        elif name in right_tables and name not in left_tables:
                    +144            join_key.append(right)
                    +145            source_key.append(left)
                    +146            condition.replace(exp.true())
                    +147
                    +148    # find the join keys
                    +149    # SELECT
                    +150    # FROM x
                    +151    # JOIN y
                    +152    #   ON x.a = y.b AND y.b > 1
                    +153    #
                    +154    # should pull y.b as the join key and x.a as the source key
                    +155    if normalized(on):
                    +156        on = on if isinstance(on, exp.And) else exp.and_(on, exp.true())
                    +157
                    +158        for condition in on.flatten():
                    +159            if isinstance(condition, exp.EQ):
                    +160                extract_condition(condition)
                    +161    elif normalized(on, dnf=True):
                    +162        conditions = None
                    +163
                    +164        for condition in on.flatten():
                    +165            parts = [part for part in condition.flatten() if isinstance(part, exp.EQ)]
                    +166            if conditions is None:
                    +167                conditions = parts
                    +168            else:
                    +169                temp = []
                    +170                for p in parts:
                    +171                    cs = [c for c in conditions if p == c]
                    +172
                    +173                    if cs:
                    +174                        temp.append(p)
                    +175                        temp.extend(cs)
                    +176                conditions = temp
                    +177
                    +178        for condition in conditions:
                    +179            extract_condition(condition)
                    +180
                    +181    return source_key, join_key, on
                     
                    @@ -258,40 +255,40 @@
        -
         8def eliminate_joins(expression):
        - 9    """
        -10    Remove unused joins from an expression.
        -11
        -12    This only removes joins when we know that the join condition doesn't produce duplicate rows.
        -13
        -14    Example:
        -15        >>> import sqlglot
        -16        >>> sql = "SELECT x.a FROM x LEFT JOIN (SELECT DISTINCT y.b FROM y) AS y ON x.b = y.b"
        -17        >>> expression = sqlglot.parse_one(sql)
        -18        >>> eliminate_joins(expression).sql()
        -19        'SELECT x.a FROM x'
        -20
        -21    Args:
        -22        expression (sqlglot.Expression): expression to optimize
        -23    Returns:
        -24        sqlglot.Expression: optimized expression
        -25    """
        -26    for scope in traverse_scope(expression):
        -27        # If any columns in this scope aren't qualified, it's hard to determine if a join isn't used.
        -28        # It's probably possible to infer this from the outputs of derived tables.
        -29        # But for now, let's just skip this rule.
        -30        if scope.unqualified_columns:
        -31            continue
        -32
        -33        joins = scope.expression.args.get("joins", [])
        -34
        -35        # Reverse the joins so we can remove chains of unused joins
        -36        for join in reversed(joins):
        -37            alias = join.this.alias_or_name
        -38            if _should_eliminate_join(scope, join, alias):
        -39                join.pop()
        -40                scope.remove_source(alias)
        -41    return expression
        +            
         7def eliminate_joins(expression):
        + 8    """
        + 9    Remove unused joins from an expression.
        +10
        +11    This only removes joins when we know that the join condition doesn't produce duplicate rows.
        +12
        +13    Example:
        +14        >>> import sqlglot
        +15        >>> sql = "SELECT x.a FROM x LEFT JOIN (SELECT DISTINCT y.b FROM y) AS y ON x.b = y.b"
        +16        >>> expression = sqlglot.parse_one(sql)
        +17        >>> eliminate_joins(expression).sql()
        +18        'SELECT x.a FROM x'
        +19
        +20    Args:
        +21        expression (sqlglot.Expression): expression to optimize
        +22    Returns:
        +23        sqlglot.Expression: optimized expression
        +24    """
        +25    for scope in traverse_scope(expression):
        +26        # If any columns in this scope aren't qualified, it's hard to determine if a join isn't used.
        +27        # It's probably possible to infer this from the outputs of derived tables.
        +28        # But for now, let's just skip this rule.
        +29        if scope.unqualified_columns:
        +30            continue
        +31
        +32        joins = scope.expression.args.get("joins", [])
        +33
        +34        # Reverse the joins so we can remove chains of unused joins
        +35        for join in reversed(joins):
        +36            alias = join.this.alias_or_name
        +37            if _should_eliminate_join(scope, join, alias):
        +38                join.pop()
        +39                scope.remove_source(alias)
        +40    return expression
         
        @@ -338,71 +335,69 @@
        -
        121def join_condition(join):
        -122    """
        -123    Extract the join condition from a join expression.
        -124
        -125    Args:
        -126        join (exp.Join)
        -127    Returns:
        -128        tuple[list[str], list[str], exp.Expression]:
        -129            Tuple of (source key, join key, remaining predicate)
        -130    """
        -131    name = join.this.alias_or_name
        -132    on = (join.args.get("on") or exp.true()).copy()
        -133    source_key = []
        -134    join_key = []
        -135
        -136    def extract_condition(condition):
        -137        left, right = condition.unnest_operands()
        -138        left_tables = exp.column_table_names(left)
        -139        right_tables = exp.column_table_names(right)
        -140
        -141        if name in left_tables and name not in right_tables:
        -142            join_key.append(left)
        -143            source_key.append(right)
        -144            condition.replace(exp.true())
        -145        elif name in right_tables and name not in left_tables:
        -146            join_key.append(right)
        -147            source_key.append(left)
        -148            condition.replace(exp.true())
        -149
        -150    # find the join keys
        -151    # SELECT
        -152    # FROM x
        -153    # JOIN y
        -154    #   ON x.a = y.b AND y.b > 1
        -155    #
        -156    # should pull y.b as the join key and x.a as the source key
        -157    if normalized(on):
        -158        on = on if isinstance(on, exp.And) else exp.and_(on, exp.true())
        -159
        -160        for condition in on.flatten():
        -161            if isinstance(condition, exp.EQ):
        -162                extract_condition(condition)
        -163    elif normalized(on, dnf=True):
        -164        conditions = None
        -165
        -166        for condition in on.flatten():
        -167            parts = [part for part in condition.flatten() if isinstance(part, exp.EQ)]
        -168            if conditions is None:
        -169                conditions = parts
        -170            else:
        -171                temp = []
        -172                for p in parts:
        -173                    cs = [c for c in conditions if p == c]
        -174
        -175                    if cs:
        -176                        temp.append(p)
        -177                        temp.extend(cs)
        -178                conditions = temp
        -179
        -180        for condition in conditions:
        -181            extract_condition(condition)
        -182
        -183    on = simplify(on)
        -184    remaining_condition = None if on == exp.true() else on
        -185    return source_key, join_key, remaining_condition
        +            
        120def join_condition(join):
        +121    """
        +122    Extract the join condition from a join expression.
        +123
        +124    Args:
        +125        join (exp.Join)
        +126    Returns:
        +127        tuple[list[str], list[str], exp.Expression]:
        +128            Tuple of (source key, join key, remaining predicate)
        +129    """
        +130    name = join.this.alias_or_name
        +131    on = (join.args.get("on") or exp.true()).copy()
        +132    source_key = []
        +133    join_key = []
        +134
        +135    def extract_condition(condition):
        +136        left, right = condition.unnest_operands()
        +137        left_tables = exp.column_table_names(left)
        +138        right_tables = exp.column_table_names(right)
        +139
        +140        if name in left_tables and name not in right_tables:
        +141            join_key.append(left)
        +142            source_key.append(right)
        +143            condition.replace(exp.true())
        +144        elif name in right_tables and name not in left_tables:
        +145            join_key.append(right)
        +146            source_key.append(left)
        +147            condition.replace(exp.true())
        +148
        +149    # find the join keys
        +150    # SELECT
        +151    # FROM x
        +152    # JOIN y
        +153    #   ON x.a = y.b AND y.b > 1
        +154    #
        +155    # should pull y.b as the join key and x.a as the source key
        +156    if normalized(on):
        +157        on = on if isinstance(on, exp.And) else exp.and_(on, exp.true())
        +158
        +159        for condition in on.flatten():
        +160            if isinstance(condition, exp.EQ):
        +161                extract_condition(condition)
        +162    elif normalized(on, dnf=True):
        +163        conditions = None
        +164
        +165        for condition in on.flatten():
        +166            parts = [part for part in condition.flatten() if isinstance(part, exp.EQ)]
        +167            if conditions is None:
        +168                conditions = parts
        +169            else:
        +170                temp = []
        +171                for p in parts:
        +172                    cs = [c for c in conditions if p == c]
        +173
        +174                    if cs:
        +175                        temp.append(p)
        +176                        temp.extend(cs)
        +177                conditions = temp
        +178
        +179        for condition in conditions:
        +180            extract_condition(condition)
        +181
        +182    return source_key, join_key, on
         
        diff --git a/docs/sqlglot/optimizer/eliminate_subqueries.html b/docs/sqlglot/optimizer/eliminate_subqueries.html index 309c76d..28b01b3 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 @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • eliminate_subqueries
          • @@ -61,194 +61,192 @@ 3from sqlglot import expressions as exp 4from sqlglot.helper import find_new_name 5from sqlglot.optimizer.scope import build_scope - 6from sqlglot.optimizer.simplify import simplify + 6 7 - 8 - 9def eliminate_subqueries(expression): - 10 """ - 11 Rewrite derived tables as CTES, deduplicating if possible. - 12 - 13 Example: - 14 >>> import sqlglot - 15 >>> expression = sqlglot.parse_one("SELECT a FROM (SELECT * FROM x) AS y") - 16 >>> eliminate_subqueries(expression).sql() - 17 'WITH y AS (SELECT * FROM x) SELECT a FROM y AS y' - 18 - 19 This also deduplicates common subqueries: - 20 >>> expression = sqlglot.parse_one("SELECT a FROM (SELECT * FROM x) AS y JOIN (SELECT * FROM x) AS z") - 21 >>> eliminate_subqueries(expression).sql() - 22 'WITH y AS (SELECT * FROM x) SELECT a FROM y AS y JOIN y AS z' - 23 - 24 Args: - 25 expression (sqlglot.Expression): expression - 26 Returns: - 27 sqlglot.Expression: expression - 28 """ - 29 if isinstance(expression, exp.Subquery): - 30 # It's possible to have subqueries at the root, e.g. (SELECT * FROM x) LIMIT 1 - 31 eliminate_subqueries(expression.this) - 32 return expression - 33 - 34 expression = simplify(expression) - 35 root = build_scope(expression) - 36 - 37 # Map of alias->Scope|Table - 38 # These are all aliases that are already used in the expression. - 39 # We don't want to create new CTEs that conflict with these names. - 40 taken = {} - 41 - 42 # All CTE aliases in the root scope are taken - 43 for scope in root.cte_scopes: - 44 taken[scope.expression.parent.alias] = scope - 45 - 46 # All table names are taken - 47 for scope in root.traverse(): - 48 taken.update( - 49 { - 50 source.name: source - 51 for _, source in scope.sources.items() - 52 if isinstance(source, exp.Table) - 53 } - 54 ) - 55 - 56 # Map of Expression->alias - 57 # Existing CTES in the root expression. We'll use this for deduplication. - 58 existing_ctes = {} - 59 - 60 with_ = root.expression.args.get("with") - 61 recursive = False - 62 if with_: - 63 recursive = with_.args.get("recursive") - 64 for cte in with_.expressions: - 65 existing_ctes[cte.this] = cte.alias - 66 new_ctes = [] - 67 - 68 # We're adding more CTEs, but we want to maintain the DAG order. - 69 # Derived tables within an existing CTE need to come before the existing CTE. - 70 for cte_scope in root.cte_scopes: - 71 # Append all the new CTEs from this existing CTE - 72 for scope in cte_scope.traverse(): - 73 if scope is cte_scope: - 74 # Don't try to eliminate this CTE itself - 75 continue - 76 new_cte = _eliminate(scope, existing_ctes, taken) - 77 if new_cte: - 78 new_ctes.append(new_cte) - 79 - 80 # Append the existing CTE itself - 81 new_ctes.append(cte_scope.expression.parent) - 82 - 83 # Now append the rest - 84 for scope in itertools.chain(root.union_scopes, root.subquery_scopes, root.table_scopes): - 85 for child_scope in scope.traverse(): - 86 new_cte = _eliminate(child_scope, existing_ctes, taken) - 87 if new_cte: - 88 new_ctes.append(new_cte) - 89 - 90 if new_ctes: - 91 expression.set("with", exp.With(expressions=new_ctes, recursive=recursive)) + 8def eliminate_subqueries(expression): + 9 """ + 10 Rewrite derived tables as CTES, deduplicating if possible. + 11 + 12 Example: + 13 >>> import sqlglot + 14 >>> expression = sqlglot.parse_one("SELECT a FROM (SELECT * FROM x) AS y") + 15 >>> eliminate_subqueries(expression).sql() + 16 'WITH y AS (SELECT * FROM x) SELECT a FROM y AS y' + 17 + 18 This also deduplicates common subqueries: + 19 >>> expression = sqlglot.parse_one("SELECT a FROM (SELECT * FROM x) AS y JOIN (SELECT * FROM x) AS z") + 20 >>> eliminate_subqueries(expression).sql() + 21 'WITH y AS (SELECT * FROM x) SELECT a FROM y AS y JOIN y AS z' + 22 + 23 Args: + 24 expression (sqlglot.Expression): expression + 25 Returns: + 26 sqlglot.Expression: expression + 27 """ + 28 if isinstance(expression, exp.Subquery): + 29 # It's possible to have subqueries at the root, e.g. (SELECT * FROM x) LIMIT 1 + 30 eliminate_subqueries(expression.this) + 31 return expression + 32 + 33 root = build_scope(expression) + 34 + 35 # Map of alias->Scope|Table + 36 # These are all aliases that are already used in the expression. + 37 # We don't want to create new CTEs that conflict with these names. + 38 taken = {} + 39 + 40 # All CTE aliases in the root scope are taken + 41 for scope in root.cte_scopes: + 42 taken[scope.expression.parent.alias] = scope + 43 + 44 # All table names are taken + 45 for scope in root.traverse(): + 46 taken.update( + 47 { + 48 source.name: source + 49 for _, source in scope.sources.items() + 50 if isinstance(source, exp.Table) + 51 } + 52 ) + 53 + 54 # Map of Expression->alias + 55 # Existing CTES in the root expression. We'll use this for deduplication. + 56 existing_ctes = {} + 57 + 58 with_ = root.expression.args.get("with") + 59 recursive = False + 60 if with_: + 61 recursive = with_.args.get("recursive") + 62 for cte in with_.expressions: + 63 existing_ctes[cte.this] = cte.alias + 64 new_ctes = [] + 65 + 66 # We're adding more CTEs, but we want to maintain the DAG order. + 67 # Derived tables within an existing CTE need to come before the existing CTE. + 68 for cte_scope in root.cte_scopes: + 69 # Append all the new CTEs from this existing CTE + 70 for scope in cte_scope.traverse(): + 71 if scope is cte_scope: + 72 # Don't try to eliminate this CTE itself + 73 continue + 74 new_cte = _eliminate(scope, existing_ctes, taken) + 75 if new_cte: + 76 new_ctes.append(new_cte) + 77 + 78 # Append the existing CTE itself + 79 new_ctes.append(cte_scope.expression.parent) + 80 + 81 # Now append the rest + 82 for scope in itertools.chain(root.union_scopes, root.subquery_scopes, root.table_scopes): + 83 for child_scope in scope.traverse(): + 84 new_cte = _eliminate(child_scope, existing_ctes, taken) + 85 if new_cte: + 86 new_ctes.append(new_cte) + 87 + 88 if new_ctes: + 89 expression.set("with", exp.With(expressions=new_ctes, recursive=recursive)) + 90 + 91 return expression 92 - 93 return expression - 94 - 95 - 96def _eliminate(scope, existing_ctes, taken): - 97 if scope.is_union: - 98 return _eliminate_union(scope, existing_ctes, taken) - 99 -100 if scope.is_derived_table: -101 return _eliminate_derived_table(scope, existing_ctes, taken) -102 -103 if scope.is_cte: -104 return _eliminate_cte(scope, existing_ctes, taken) -105 -106 -107def _eliminate_union(scope, existing_ctes, taken): -108 duplicate_cte_alias = existing_ctes.get(scope.expression) + 93 + 94def _eliminate(scope, existing_ctes, taken): + 95 if scope.is_union: + 96 return _eliminate_union(scope, existing_ctes, taken) + 97 + 98 if scope.is_derived_table: + 99 return _eliminate_derived_table(scope, existing_ctes, taken) +100 +101 if scope.is_cte: +102 return _eliminate_cte(scope, existing_ctes, taken) +103 +104 +105def _eliminate_union(scope, existing_ctes, taken): +106 duplicate_cte_alias = existing_ctes.get(scope.expression) +107 +108 alias = duplicate_cte_alias or find_new_name(taken=taken, base="cte") 109 -110 alias = duplicate_cte_alias or find_new_name(taken=taken, base="cte") +110 taken[alias] = scope 111 -112 taken[alias] = scope -113 -114 # Try to maintain the selections -115 expressions = scope.selects -116 selects = [ -117 exp.alias_(exp.column(e.alias_or_name, table=alias), alias=e.alias_or_name) -118 for e in expressions -119 if e.alias_or_name -120 ] -121 # If not all selections have an alias, just select * -122 if len(selects) != len(expressions): -123 selects = ["*"] +112 # Try to maintain the selections +113 expressions = scope.selects +114 selects = [ +115 exp.alias_(exp.column(e.alias_or_name, table=alias), alias=e.alias_or_name) +116 for e in expressions +117 if e.alias_or_name +118 ] +119 # If not all selections have an alias, just select * +120 if len(selects) != len(expressions): +121 selects = ["*"] +122 +123 scope.expression.replace(exp.select(*selects).from_(exp.alias_(exp.table_(alias), alias=alias))) 124 -125 scope.expression.replace(exp.select(*selects).from_(exp.alias_(exp.table_(alias), alias=alias))) -126 -127 if not duplicate_cte_alias: -128 existing_ctes[scope.expression] = alias -129 return exp.CTE( -130 this=scope.expression, -131 alias=exp.TableAlias(this=exp.to_identifier(alias)), -132 ) -133 -134 -135def _eliminate_derived_table(scope, existing_ctes, taken): -136 parent = scope.expression.parent -137 name, cte = _new_cte(scope, existing_ctes, taken) -138 -139 table = exp.alias_(exp.table_(name), alias=parent.alias or name) -140 parent.replace(table) +125 if not duplicate_cte_alias: +126 existing_ctes[scope.expression] = alias +127 return exp.CTE( +128 this=scope.expression, +129 alias=exp.TableAlias(this=exp.to_identifier(alias)), +130 ) +131 +132 +133def _eliminate_derived_table(scope, existing_ctes, taken): +134 parent = scope.expression.parent +135 name, cte = _new_cte(scope, existing_ctes, taken) +136 +137 table = exp.alias_(exp.table_(name), alias=parent.alias or name) +138 parent.replace(table) +139 +140 return cte 141 -142 return cte -143 -144 -145def _eliminate_cte(scope, existing_ctes, taken): -146 parent = scope.expression.parent -147 name, cte = _new_cte(scope, existing_ctes, taken) -148 -149 with_ = parent.parent -150 parent.pop() -151 if not with_.expressions: -152 with_.pop() -153 -154 # Rename references to this CTE -155 for child_scope in scope.parent.traverse(): -156 for table, source in child_scope.selected_sources.values(): -157 if source is scope: -158 new_table = exp.alias_(exp.table_(name), alias=table.alias_or_name) -159 table.replace(new_table) +142 +143def _eliminate_cte(scope, existing_ctes, taken): +144 parent = scope.expression.parent +145 name, cte = _new_cte(scope, existing_ctes, taken) +146 +147 with_ = parent.parent +148 parent.pop() +149 if not with_.expressions: +150 with_.pop() +151 +152 # Rename references to this CTE +153 for child_scope in scope.parent.traverse(): +154 for table, source in child_scope.selected_sources.values(): +155 if source is scope: +156 new_table = exp.alias_(exp.table_(name), alias=table.alias_or_name) +157 table.replace(new_table) +158 +159 return cte 160 -161 return cte -162 -163 -164def _new_cte(scope, existing_ctes, taken): -165 """ -166 Returns: -167 tuple of (name, cte) -168 where `name` is a new name for this CTE in the root scope and `cte` is a new CTE instance. -169 If this CTE duplicates an existing CTE, `cte` will be None. -170 """ -171 duplicate_cte_alias = existing_ctes.get(scope.expression) -172 parent = scope.expression.parent -173 name = parent.alias -174 -175 if not name: -176 name = find_new_name(taken=taken, base="cte") -177 -178 if duplicate_cte_alias: -179 name = duplicate_cte_alias -180 elif taken.get(name): -181 name = find_new_name(taken=taken, base=name) +161 +162def _new_cte(scope, existing_ctes, taken): +163 """ +164 Returns: +165 tuple of (name, cte) +166 where `name` is a new name for this CTE in the root scope and `cte` is a new CTE instance. +167 If this CTE duplicates an existing CTE, `cte` will be None. +168 """ +169 duplicate_cte_alias = existing_ctes.get(scope.expression) +170 parent = scope.expression.parent +171 name = parent.alias +172 +173 if not name: +174 name = find_new_name(taken=taken, base="cte") +175 +176 if duplicate_cte_alias: +177 name = duplicate_cte_alias +178 elif taken.get(name): +179 name = find_new_name(taken=taken, base=name) +180 +181 taken[name] = scope 182 -183 taken[name] = scope -184 -185 if not duplicate_cte_alias: -186 existing_ctes[scope.expression] = name -187 cte = exp.CTE( -188 this=scope.expression, -189 alias=exp.TableAlias(this=exp.to_identifier(name)), -190 ) -191 else: -192 cte = None -193 return name, cte +183 if not duplicate_cte_alias: +184 existing_ctes[scope.expression] = name +185 cte = exp.CTE( +186 this=scope.expression, +187 alias=exp.TableAlias(this=exp.to_identifier(name)), +188 ) +189 else: +190 cte = None +191 return name, cte
        @@ -264,91 +262,90 @@
        -
        10def eliminate_subqueries(expression):
        -11    """
        -12    Rewrite derived tables as CTES, deduplicating if possible.
        -13
        -14    Example:
        -15        >>> import sqlglot
        -16        >>> expression = sqlglot.parse_one("SELECT a FROM (SELECT * FROM x) AS y")
        -17        >>> eliminate_subqueries(expression).sql()
        -18        'WITH y AS (SELECT * FROM x) SELECT a FROM y AS y'
        -19
        -20    This also deduplicates common subqueries:
        -21        >>> expression = sqlglot.parse_one("SELECT a FROM (SELECT * FROM x) AS y JOIN (SELECT * FROM x) AS z")
        -22        >>> eliminate_subqueries(expression).sql()
        -23        'WITH y AS (SELECT * FROM x) SELECT a FROM y AS y JOIN y AS z'
        -24
        -25    Args:
        -26        expression (sqlglot.Expression): expression
        -27    Returns:
        -28        sqlglot.Expression: expression
        -29    """
        -30    if isinstance(expression, exp.Subquery):
        -31        # It's possible to have subqueries at the root, e.g. (SELECT * FROM x) LIMIT 1
        -32        eliminate_subqueries(expression.this)
        -33        return expression
        -34
        -35    expression = simplify(expression)
        -36    root = build_scope(expression)
        -37
        -38    # Map of alias->Scope|Table
        -39    # These are all aliases that are already used in the expression.
        -40    # We don't want to create new CTEs that conflict with these names.
        -41    taken = {}
        -42
        -43    # All CTE aliases in the root scope are taken
        -44    for scope in root.cte_scopes:
        -45        taken[scope.expression.parent.alias] = scope
        -46
        -47    # All table names are taken
        -48    for scope in root.traverse():
        -49        taken.update(
        -50            {
        -51                source.name: source
        -52                for _, source in scope.sources.items()
        -53                if isinstance(source, exp.Table)
        -54            }
        -55        )
        -56
        -57    # Map of Expression->alias
        -58    # Existing CTES in the root expression. We'll use this for deduplication.
        -59    existing_ctes = {}
        -60
        -61    with_ = root.expression.args.get("with")
        -62    recursive = False
        -63    if with_:
        -64        recursive = with_.args.get("recursive")
        -65        for cte in with_.expressions:
        -66            existing_ctes[cte.this] = cte.alias
        -67    new_ctes = []
        -68
        -69    # We're adding more CTEs, but we want to maintain the DAG order.
        -70    # Derived tables within an existing CTE need to come before the existing CTE.
        -71    for cte_scope in root.cte_scopes:
        -72        # Append all the new CTEs from this existing CTE
        -73        for scope in cte_scope.traverse():
        -74            if scope is cte_scope:
        -75                # Don't try to eliminate this CTE itself
        -76                continue
        -77            new_cte = _eliminate(scope, existing_ctes, taken)
        -78            if new_cte:
        -79                new_ctes.append(new_cte)
        -80
        -81        # Append the existing CTE itself
        -82        new_ctes.append(cte_scope.expression.parent)
        -83
        -84    # Now append the rest
        -85    for scope in itertools.chain(root.union_scopes, root.subquery_scopes, root.table_scopes):
        -86        for child_scope in scope.traverse():
        -87            new_cte = _eliminate(child_scope, existing_ctes, taken)
        -88            if new_cte:
        -89                new_ctes.append(new_cte)
        -90
        -91    if new_ctes:
        -92        expression.set("with", exp.With(expressions=new_ctes, recursive=recursive))
        -93
        -94    return expression
        +            
         9def eliminate_subqueries(expression):
        +10    """
        +11    Rewrite derived tables as CTES, deduplicating if possible.
        +12
        +13    Example:
        +14        >>> import sqlglot
        +15        >>> expression = sqlglot.parse_one("SELECT a FROM (SELECT * FROM x) AS y")
        +16        >>> eliminate_subqueries(expression).sql()
        +17        'WITH y AS (SELECT * FROM x) SELECT a FROM y AS y'
        +18
        +19    This also deduplicates common subqueries:
        +20        >>> expression = sqlglot.parse_one("SELECT a FROM (SELECT * FROM x) AS y JOIN (SELECT * FROM x) AS z")
        +21        >>> eliminate_subqueries(expression).sql()
        +22        'WITH y AS (SELECT * FROM x) SELECT a FROM y AS y JOIN y AS z'
        +23
        +24    Args:
        +25        expression (sqlglot.Expression): expression
        +26    Returns:
        +27        sqlglot.Expression: expression
        +28    """
        +29    if isinstance(expression, exp.Subquery):
        +30        # It's possible to have subqueries at the root, e.g. (SELECT * FROM x) LIMIT 1
        +31        eliminate_subqueries(expression.this)
        +32        return expression
        +33
        +34    root = build_scope(expression)
        +35
        +36    # Map of alias->Scope|Table
        +37    # These are all aliases that are already used in the expression.
        +38    # We don't want to create new CTEs that conflict with these names.
        +39    taken = {}
        +40
        +41    # All CTE aliases in the root scope are taken
        +42    for scope in root.cte_scopes:
        +43        taken[scope.expression.parent.alias] = scope
        +44
        +45    # All table names are taken
        +46    for scope in root.traverse():
        +47        taken.update(
        +48            {
        +49                source.name: source
        +50                for _, source in scope.sources.items()
        +51                if isinstance(source, exp.Table)
        +52            }
        +53        )
        +54
        +55    # Map of Expression->alias
        +56    # Existing CTES in the root expression. We'll use this for deduplication.
        +57    existing_ctes = {}
        +58
        +59    with_ = root.expression.args.get("with")
        +60    recursive = False
        +61    if with_:
        +62        recursive = with_.args.get("recursive")
        +63        for cte in with_.expressions:
        +64            existing_ctes[cte.this] = cte.alias
        +65    new_ctes = []
        +66
        +67    # We're adding more CTEs, but we want to maintain the DAG order.
        +68    # Derived tables within an existing CTE need to come before the existing CTE.
        +69    for cte_scope in root.cte_scopes:
        +70        # Append all the new CTEs from this existing CTE
        +71        for scope in cte_scope.traverse():
        +72            if scope is cte_scope:
        +73                # Don't try to eliminate this CTE itself
        +74                continue
        +75            new_cte = _eliminate(scope, existing_ctes, taken)
        +76            if new_cte:
        +77                new_ctes.append(new_cte)
        +78
        +79        # Append the existing CTE itself
        +80        new_ctes.append(cte_scope.expression.parent)
        +81
        +82    # Now append the rest
        +83    for scope in itertools.chain(root.union_scopes, root.subquery_scopes, root.table_scopes):
        +84        for child_scope in scope.traverse():
        +85            new_cte = _eliminate(child_scope, existing_ctes, taken)
        +86            if new_cte:
        +87                new_ctes.append(new_cte)
        +88
        +89    if new_ctes:
        +90        expression.set("with", exp.With(expressions=new_ctes, recursive=recursive))
        +91
        +92    return expression
         
        diff --git a/docs/sqlglot/optimizer/expand_laterals.html b/docs/sqlglot/optimizer/expand_laterals.html index eaf5199..98dce0a 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 @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • expand_laterals
          • diff --git a/docs/sqlglot/optimizer/expand_multi_table_selects.html b/docs/sqlglot/optimizer/expand_multi_table_selects.html index 7f780ad..db8f56e 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 @@ -28,8 +28,8 @@ -

            API Documentation

            -
              +

              API Documentation

              +
              • expand_multi_table_selects
              • diff --git a/docs/sqlglot/optimizer/isolate_table_selects.html b/docs/sqlglot/optimizer/isolate_table_selects.html index 164d720..09d0cbe 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 @@ -28,8 +28,8 @@ -

                API Documentation

                -
                  +

                  API Documentation

                  +
                  • isolate_table_selects
                  • diff --git a/docs/sqlglot/optimizer/lower_identities.html b/docs/sqlglot/optimizer/lower_identities.html index 866415a..43f7e5a 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 @@ -28,8 +28,8 @@ -

                    API Documentation

                    -
                      +

                      API Documentation

                      +
                      • lower_identities
                      • @@ -57,97 +57,93 @@
                         1from sqlglot import exp
                        - 2from sqlglot.helper import ensure_collection
                        + 2
                          3
                        - 4
                        - 5def lower_identities(expression):
                        - 6    """
                        - 7    Convert all unquoted identifiers to lower case.
                        - 8
                        - 9    Assuming the schema is all lower case, this essentially makes identifiers case-insensitive.
                        -10
                        -11    Example:
                        -12        >>> import sqlglot
                        -13        >>> expression = sqlglot.parse_one('SELECT Bar.A AS A FROM "Foo".Bar')
                        -14        >>> lower_identities(expression).sql()
                        -15        'SELECT bar.a AS A FROM "Foo".bar'
                        -16
                        -17    Args:
                        -18        expression (sqlglot.Expression): expression to quote
                        -19    Returns:
                        -20        sqlglot.Expression: quoted expression
                        -21    """
                        -22    # We need to leave the output aliases unchanged, so the selects need special handling
                        -23    _lower_selects(expression)
                        -24
                        -25    # These clauses can reference output aliases and also need special handling
                        -26    _lower_order(expression)
                        -27    _lower_having(expression)
                        -28
                        -29    # We've already handled these args, so don't traverse into them
                        -30    traversed = {"expressions", "order", "having"}
                        -31
                        -32    if isinstance(expression, exp.Subquery):
                        -33        # Root subquery, e.g. (SELECT A AS A FROM X) LIMIT 1
                        -34        lower_identities(expression.this)
                        -35        traversed |= {"this"}
                        -36
                        -37    if isinstance(expression, exp.Union):
                        -38        # Union, e.g. SELECT A AS A FROM X UNION SELECT A AS A FROM X
                        -39        lower_identities(expression.left)
                        -40        lower_identities(expression.right)
                        -41        traversed |= {"this", "expression"}
                        -42
                        -43    for k, v in expression.args.items():
                        -44        if k in traversed:
                        -45            continue
                        + 4def lower_identities(expression):
                        + 5    """
                        + 6    Convert all unquoted identifiers to lower case.
                        + 7
                        + 8    Assuming the schema is all lower case, this essentially makes identifiers case-insensitive.
                        + 9
                        +10    Example:
                        +11        >>> import sqlglot
                        +12        >>> expression = sqlglot.parse_one('SELECT Bar.A AS A FROM "Foo".Bar')
                        +13        >>> lower_identities(expression).sql()
                        +14        'SELECT bar.a AS A FROM "Foo".bar'
                        +15
                        +16    Args:
                        +17        expression (sqlglot.Expression): expression to quote
                        +18    Returns:
                        +19        sqlglot.Expression: quoted expression
                        +20    """
                        +21    # We need to leave the output aliases unchanged, so the selects need special handling
                        +22    _lower_selects(expression)
                        +23
                        +24    # These clauses can reference output aliases and also need special handling
                        +25    _lower_order(expression)
                        +26    _lower_having(expression)
                        +27
                        +28    # We've already handled these args, so don't traverse into them
                        +29    traversed = {"expressions", "order", "having"}
                        +30
                        +31    if isinstance(expression, exp.Subquery):
                        +32        # Root subquery, e.g. (SELECT A AS A FROM X) LIMIT 1
                        +33        lower_identities(expression.this)
                        +34        traversed |= {"this"}
                        +35
                        +36    if isinstance(expression, exp.Union):
                        +37        # Union, e.g. SELECT A AS A FROM X UNION SELECT A AS A FROM X
                        +38        lower_identities(expression.left)
                        +39        lower_identities(expression.right)
                        +40        traversed |= {"this", "expression"}
                        +41
                        +42    for k, v in expression.iter_expressions():
                        +43        if k in traversed:
                        +44            continue
                        +45        v.transform(_lower, copy=False)
                         46
                        -47        for child in ensure_collection(v):
                        -48            if isinstance(child, exp.Expression):
                        -49                child.transform(_lower, copy=False)
                        -50
                        -51    return expression
                        -52
                        -53
                        -54def _lower_selects(expression):
                        -55    for e in expression.expressions:
                        -56        # Leave output aliases as-is
                        -57        e.unalias().transform(_lower, copy=False)
                        +47    return expression
                        +48
                        +49
                        +50def _lower_selects(expression):
                        +51    for e in expression.expressions:
                        +52        # Leave output aliases as-is
                        +53        e.unalias().transform(_lower, copy=False)
                        +54
                        +55
                        +56def _lower_order(expression):
                        +57    order = expression.args.get("order")
                         58
                        -59
                        -60def _lower_order(expression):
                        -61    order = expression.args.get("order")
                        -62
                        -63    if not order:
                        -64        return
                        -65
                        -66    output_aliases = {e.alias for e in expression.expressions if isinstance(e, exp.Alias)}
                        -67
                        -68    for ordered in order.expressions:
                        -69        # Don't lower references to output aliases
                        -70        if not (
                        -71            isinstance(ordered.this, exp.Column)
                        -72            and not ordered.this.table
                        -73            and ordered.this.name in output_aliases
                        -74        ):
                        -75            ordered.transform(_lower, copy=False)
                        +59    if not order:
                        +60        return
                        +61
                        +62    output_aliases = {e.alias for e in expression.expressions if isinstance(e, exp.Alias)}
                        +63
                        +64    for ordered in order.expressions:
                        +65        # Don't lower references to output aliases
                        +66        if not (
                        +67            isinstance(ordered.this, exp.Column)
                        +68            and not ordered.this.table
                        +69            and ordered.this.name in output_aliases
                        +70        ):
                        +71            ordered.transform(_lower, copy=False)
                        +72
                        +73
                        +74def _lower_having(expression):
                        +75    having = expression.args.get("having")
                         76
                        -77
                        -78def _lower_having(expression):
                        -79    having = expression.args.get("having")
                        -80
                        -81    if not having:
                        -82        return
                        +77    if not having:
                        +78        return
                        +79
                        +80    # Don't lower references to output aliases
                        +81    for agg in having.find_all(exp.AggFunc):
                        +82        agg.transform(_lower, copy=False)
                         83
                        -84    # Don't lower references to output aliases
                        -85    for agg in having.find_all(exp.AggFunc):
                        -86        agg.transform(_lower, copy=False)
                        -87
                        -88
                        -89def _lower(node):
                        -90    if isinstance(node, exp.Identifier) and not node.quoted:
                        -91        node.set("this", node.this.lower())
                        -92    return node
                        +84
                        +85def _lower(node):
                        +86    if isinstance(node, exp.Identifier) and not node.quoted:
                        +87        node.set("this", node.this.lower())
                        +88    return node
                         
                        @@ -163,53 +159,50 @@
        -
         6def lower_identities(expression):
        - 7    """
        - 8    Convert all unquoted identifiers to lower case.
        - 9
        -10    Assuming the schema is all lower case, this essentially makes identifiers case-insensitive.
        -11
        -12    Example:
        -13        >>> import sqlglot
        -14        >>> expression = sqlglot.parse_one('SELECT Bar.A AS A FROM "Foo".Bar')
        -15        >>> lower_identities(expression).sql()
        -16        'SELECT bar.a AS A FROM "Foo".bar'
        -17
        -18    Args:
        -19        expression (sqlglot.Expression): expression to quote
        -20    Returns:
        -21        sqlglot.Expression: quoted expression
        -22    """
        -23    # We need to leave the output aliases unchanged, so the selects need special handling
        -24    _lower_selects(expression)
        -25
        -26    # These clauses can reference output aliases and also need special handling
        -27    _lower_order(expression)
        -28    _lower_having(expression)
        -29
        -30    # We've already handled these args, so don't traverse into them
        -31    traversed = {"expressions", "order", "having"}
        -32
        -33    if isinstance(expression, exp.Subquery):
        -34        # Root subquery, e.g. (SELECT A AS A FROM X) LIMIT 1
        -35        lower_identities(expression.this)
        -36        traversed |= {"this"}
        -37
        -38    if isinstance(expression, exp.Union):
        -39        # Union, e.g. SELECT A AS A FROM X UNION SELECT A AS A FROM X
        -40        lower_identities(expression.left)
        -41        lower_identities(expression.right)
        -42        traversed |= {"this", "expression"}
        -43
        -44    for k, v in expression.args.items():
        -45        if k in traversed:
        -46            continue
        +            
         5def lower_identities(expression):
        + 6    """
        + 7    Convert all unquoted identifiers to lower case.
        + 8
        + 9    Assuming the schema is all lower case, this essentially makes identifiers case-insensitive.
        +10
        +11    Example:
        +12        >>> import sqlglot
        +13        >>> expression = sqlglot.parse_one('SELECT Bar.A AS A FROM "Foo".Bar')
        +14        >>> lower_identities(expression).sql()
        +15        'SELECT bar.a AS A FROM "Foo".bar'
        +16
        +17    Args:
        +18        expression (sqlglot.Expression): expression to quote
        +19    Returns:
        +20        sqlglot.Expression: quoted expression
        +21    """
        +22    # We need to leave the output aliases unchanged, so the selects need special handling
        +23    _lower_selects(expression)
        +24
        +25    # These clauses can reference output aliases and also need special handling
        +26    _lower_order(expression)
        +27    _lower_having(expression)
        +28
        +29    # We've already handled these args, so don't traverse into them
        +30    traversed = {"expressions", "order", "having"}
        +31
        +32    if isinstance(expression, exp.Subquery):
        +33        # Root subquery, e.g. (SELECT A AS A FROM X) LIMIT 1
        +34        lower_identities(expression.this)
        +35        traversed |= {"this"}
        +36
        +37    if isinstance(expression, exp.Union):
        +38        # Union, e.g. SELECT A AS A FROM X UNION SELECT A AS A FROM X
        +39        lower_identities(expression.left)
        +40        lower_identities(expression.right)
        +41        traversed |= {"this", "expression"}
        +42
        +43    for k, v in expression.iter_expressions():
        +44        if k in traversed:
        +45            continue
        +46        v.transform(_lower, copy=False)
         47
        -48        for child in ensure_collection(v):
        -49            if isinstance(child, exp.Expression):
        -50                child.transform(_lower, copy=False)
        -51
        -52    return expression
        +48    return expression
         
        diff --git a/docs/sqlglot/optimizer/merge_subqueries.html b/docs/sqlglot/optimizer/merge_subqueries.html index 1842f90..8081d87 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 @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • merge_subqueries
          • @@ -67,385 +67,384 @@ 3from sqlglot import expressions as exp 4from sqlglot.helper import find_new_name 5from sqlglot.optimizer.scope import Scope, traverse_scope - 6from sqlglot.optimizer.simplify import simplify + 6 7 - 8 - 9def merge_subqueries(expression, leave_tables_isolated=False): - 10 """ - 11 Rewrite sqlglot AST to merge derived tables into the outer query. - 12 - 13 This also merges CTEs if they are selected from only once. - 14 - 15 Example: - 16 >>> import sqlglot - 17 >>> expression = sqlglot.parse_one("SELECT a FROM (SELECT x.a FROM x) JOIN y") - 18 >>> merge_subqueries(expression).sql() - 19 'SELECT x.a FROM x JOIN y' - 20 - 21 If `leave_tables_isolated` is True, this will not merge inner queries into outer - 22 queries if it would result in multiple table selects in a single query: - 23 >>> expression = sqlglot.parse_one("SELECT a FROM (SELECT x.a FROM x) JOIN y") - 24 >>> merge_subqueries(expression, leave_tables_isolated=True).sql() - 25 'SELECT a FROM (SELECT x.a FROM x) JOIN y' - 26 - 27 Inspired by https://dev.mysql.com/doc/refman/8.0/en/derived-table-optimization.html - 28 - 29 Args: - 30 expression (sqlglot.Expression): expression to optimize - 31 leave_tables_isolated (bool): - 32 Returns: - 33 sqlglot.Expression: optimized expression - 34 """ - 35 expression = merge_ctes(expression, leave_tables_isolated) - 36 expression = merge_derived_tables(expression, leave_tables_isolated) - 37 return expression + 8def merge_subqueries(expression, leave_tables_isolated=False): + 9 """ + 10 Rewrite sqlglot AST to merge derived tables into the outer query. + 11 + 12 This also merges CTEs if they are selected from only once. + 13 + 14 Example: + 15 >>> import sqlglot + 16 >>> expression = sqlglot.parse_one("SELECT a FROM (SELECT x.a FROM x) JOIN y") + 17 >>> merge_subqueries(expression).sql() + 18 'SELECT x.a FROM x JOIN y' + 19 + 20 If `leave_tables_isolated` is True, this will not merge inner queries into outer + 21 queries if it would result in multiple table selects in a single query: + 22 >>> expression = sqlglot.parse_one("SELECT a FROM (SELECT x.a FROM x) JOIN y") + 23 >>> merge_subqueries(expression, leave_tables_isolated=True).sql() + 24 'SELECT a FROM (SELECT x.a FROM x) JOIN y' + 25 + 26 Inspired by https://dev.mysql.com/doc/refman/8.0/en/derived-table-optimization.html + 27 + 28 Args: + 29 expression (sqlglot.Expression): expression to optimize + 30 leave_tables_isolated (bool): + 31 Returns: + 32 sqlglot.Expression: optimized expression + 33 """ + 34 expression = merge_ctes(expression, leave_tables_isolated) + 35 expression = merge_derived_tables(expression, leave_tables_isolated) + 36 return expression + 37 38 - 39 - 40# If a derived table has these Select args, it can't be merged - 41UNMERGABLE_ARGS = set(exp.Select.arg_types) - { - 42 "expressions", - 43 "from", - 44 "joins", - 45 "where", - 46 "order", - 47 "hint", - 48} + 39# If a derived table has these Select args, it can't be merged + 40UNMERGABLE_ARGS = set(exp.Select.arg_types) - { + 41 "expressions", + 42 "from", + 43 "joins", + 44 "where", + 45 "order", + 46 "hint", + 47} + 48 49 - 50 - 51def merge_ctes(expression, leave_tables_isolated=False): - 52 scopes = traverse_scope(expression) - 53 - 54 # All places where we select from CTEs. - 55 # We key on the CTE scope so we can detect CTES that are selected from multiple times. - 56 cte_selections = defaultdict(list) - 57 for outer_scope in scopes: - 58 for table, inner_scope in outer_scope.selected_sources.values(): - 59 if isinstance(inner_scope, Scope) and inner_scope.is_cte: - 60 cte_selections[id(inner_scope)].append( - 61 ( - 62 outer_scope, - 63 inner_scope, - 64 table, - 65 ) - 66 ) - 67 - 68 singular_cte_selections = [v[0] for k, v in cte_selections.items() if len(v) == 1] - 69 for outer_scope, inner_scope, table in singular_cte_selections: - 70 from_or_join = table.find_ancestor(exp.From, exp.Join) - 71 if _mergeable(outer_scope, inner_scope, leave_tables_isolated, from_or_join): - 72 alias = table.alias_or_name - 73 _rename_inner_sources(outer_scope, inner_scope, alias) - 74 _merge_from(outer_scope, inner_scope, table, alias) - 75 _merge_expressions(outer_scope, inner_scope, alias) - 76 _merge_joins(outer_scope, inner_scope, from_or_join) - 77 _merge_where(outer_scope, inner_scope, from_or_join) - 78 _merge_order(outer_scope, inner_scope) - 79 _merge_hints(outer_scope, inner_scope) - 80 _pop_cte(inner_scope) - 81 outer_scope.clear_cache() - 82 return expression + 50def merge_ctes(expression, leave_tables_isolated=False): + 51 scopes = traverse_scope(expression) + 52 + 53 # All places where we select from CTEs. + 54 # We key on the CTE scope so we can detect CTES that are selected from multiple times. + 55 cte_selections = defaultdict(list) + 56 for outer_scope in scopes: + 57 for table, inner_scope in outer_scope.selected_sources.values(): + 58 if isinstance(inner_scope, Scope) and inner_scope.is_cte: + 59 cte_selections[id(inner_scope)].append( + 60 ( + 61 outer_scope, + 62 inner_scope, + 63 table, + 64 ) + 65 ) + 66 + 67 singular_cte_selections = [v[0] for k, v in cte_selections.items() if len(v) == 1] + 68 for outer_scope, inner_scope, table in singular_cte_selections: + 69 from_or_join = table.find_ancestor(exp.From, exp.Join) + 70 if _mergeable(outer_scope, inner_scope, leave_tables_isolated, from_or_join): + 71 alias = table.alias_or_name + 72 _rename_inner_sources(outer_scope, inner_scope, alias) + 73 _merge_from(outer_scope, inner_scope, table, alias) + 74 _merge_expressions(outer_scope, inner_scope, alias) + 75 _merge_joins(outer_scope, inner_scope, from_or_join) + 76 _merge_where(outer_scope, inner_scope, from_or_join) + 77 _merge_order(outer_scope, inner_scope) + 78 _merge_hints(outer_scope, inner_scope) + 79 _pop_cte(inner_scope) + 80 outer_scope.clear_cache() + 81 return expression + 82 83 - 84 - 85def merge_derived_tables(expression, leave_tables_isolated=False): - 86 for outer_scope in traverse_scope(expression): - 87 for subquery in outer_scope.derived_tables: - 88 from_or_join = subquery.find_ancestor(exp.From, exp.Join) - 89 alias = subquery.alias_or_name - 90 inner_scope = outer_scope.sources[alias] - 91 if _mergeable(outer_scope, inner_scope, leave_tables_isolated, from_or_join): - 92 _rename_inner_sources(outer_scope, inner_scope, alias) - 93 _merge_from(outer_scope, inner_scope, subquery, alias) - 94 _merge_expressions(outer_scope, inner_scope, alias) - 95 _merge_joins(outer_scope, inner_scope, from_or_join) - 96 _merge_where(outer_scope, inner_scope, from_or_join) - 97 _merge_order(outer_scope, inner_scope) - 98 _merge_hints(outer_scope, inner_scope) - 99 outer_scope.clear_cache() -100 return expression + 84def merge_derived_tables(expression, leave_tables_isolated=False): + 85 for outer_scope in traverse_scope(expression): + 86 for subquery in outer_scope.derived_tables: + 87 from_or_join = subquery.find_ancestor(exp.From, exp.Join) + 88 alias = subquery.alias_or_name + 89 inner_scope = outer_scope.sources[alias] + 90 if _mergeable(outer_scope, inner_scope, leave_tables_isolated, from_or_join): + 91 _rename_inner_sources(outer_scope, inner_scope, alias) + 92 _merge_from(outer_scope, inner_scope, subquery, alias) + 93 _merge_expressions(outer_scope, inner_scope, alias) + 94 _merge_joins(outer_scope, inner_scope, from_or_join) + 95 _merge_where(outer_scope, inner_scope, from_or_join) + 96 _merge_order(outer_scope, inner_scope) + 97 _merge_hints(outer_scope, inner_scope) + 98 outer_scope.clear_cache() + 99 return expression +100 101 -102 -103def _mergeable(outer_scope, inner_scope, leave_tables_isolated, from_or_join): -104 """ -105 Return True if `inner_select` can be merged into outer query. -106 -107 Args: -108 outer_scope (Scope) -109 inner_scope (Scope) -110 leave_tables_isolated (bool) -111 from_or_join (exp.From|exp.Join) -112 Returns: -113 bool: True if can be merged -114 """ -115 inner_select = inner_scope.expression.unnest() -116 -117 def _is_a_window_expression_in_unmergable_operation(): -118 window_expressions = inner_select.find_all(exp.Window) -119 window_alias_names = {window.parent.alias_or_name for window in window_expressions} -120 inner_select_name = inner_select.parent.alias_or_name -121 unmergable_window_columns = [ -122 column -123 for column in outer_scope.columns -124 if column.find_ancestor( -125 exp.Where, exp.Group, exp.Order, exp.Join, exp.Having, exp.AggFunc -126 ) -127 ] -128 window_expressions_in_unmergable = [ -129 column -130 for column in unmergable_window_columns -131 if column.table == inner_select_name and column.name in window_alias_names -132 ] -133 return any(window_expressions_in_unmergable) -134 -135 def _outer_select_joins_on_inner_select_join(): -136 """ -137 All columns from the inner select in the ON clause must be from the first FROM table. -138 -139 That is, this can be merged: -140 SELECT * FROM x JOIN (SELECT y.a AS a FROM y JOIN z) AS q ON x.a = q.a -141 ^^^ ^ -142 But this can't: -143 SELECT * FROM x JOIN (SELECT z.a AS a FROM y JOIN z) AS q ON x.a = q.a -144 ^^^ ^ -145 """ -146 if not isinstance(from_or_join, exp.Join): -147 return False -148 -149 alias = from_or_join.this.alias_or_name -150 -151 on = from_or_join.args.get("on") -152 if not on: -153 return False -154 selections = [c.name for c in on.find_all(exp.Column) if c.table == alias] -155 inner_from = inner_scope.expression.args.get("from") -156 if not inner_from: -157 return False -158 inner_from_table = inner_from.expressions[0].alias_or_name -159 inner_projections = {s.alias_or_name: s for s in inner_scope.selects} -160 return any( -161 col.table != inner_from_table -162 for selection in selections -163 for col in inner_projections[selection].find_all(exp.Column) -164 ) -165 -166 return ( -167 isinstance(outer_scope.expression, exp.Select) -168 and isinstance(inner_select, exp.Select) -169 and not any(inner_select.args.get(arg) for arg in UNMERGABLE_ARGS) -170 and inner_select.args.get("from") -171 and not any(e.find(exp.AggFunc, exp.Select) for e in inner_select.expressions) -172 and not (leave_tables_isolated and len(outer_scope.selected_sources) > 1) -173 and not ( -174 isinstance(from_or_join, exp.Join) -175 and inner_select.args.get("where") -176 and from_or_join.side in {"FULL", "LEFT", "RIGHT"} -177 ) -178 and not ( -179 isinstance(from_or_join, exp.From) -180 and inner_select.args.get("where") -181 and any( -182 j.side in {"FULL", "RIGHT"} for j in outer_scope.expression.args.get("joins", []) -183 ) -184 ) -185 and not _outer_select_joins_on_inner_select_join() -186 and not _is_a_window_expression_in_unmergable_operation() -187 ) +102def _mergeable(outer_scope, inner_scope, leave_tables_isolated, from_or_join): +103 """ +104 Return True if `inner_select` can be merged into outer query. +105 +106 Args: +107 outer_scope (Scope) +108 inner_scope (Scope) +109 leave_tables_isolated (bool) +110 from_or_join (exp.From|exp.Join) +111 Returns: +112 bool: True if can be merged +113 """ +114 inner_select = inner_scope.expression.unnest() +115 +116 def _is_a_window_expression_in_unmergable_operation(): +117 window_expressions = inner_select.find_all(exp.Window) +118 window_alias_names = {window.parent.alias_or_name for window in window_expressions} +119 inner_select_name = inner_select.parent.alias_or_name +120 unmergable_window_columns = [ +121 column +122 for column in outer_scope.columns +123 if column.find_ancestor( +124 exp.Where, exp.Group, exp.Order, exp.Join, exp.Having, exp.AggFunc +125 ) +126 ] +127 window_expressions_in_unmergable = [ +128 column +129 for column in unmergable_window_columns +130 if column.table == inner_select_name and column.name in window_alias_names +131 ] +132 return any(window_expressions_in_unmergable) +133 +134 def _outer_select_joins_on_inner_select_join(): +135 """ +136 All columns from the inner select in the ON clause must be from the first FROM table. +137 +138 That is, this can be merged: +139 SELECT * FROM x JOIN (SELECT y.a AS a FROM y JOIN z) AS q ON x.a = q.a +140 ^^^ ^ +141 But this can't: +142 SELECT * FROM x JOIN (SELECT z.a AS a FROM y JOIN z) AS q ON x.a = q.a +143 ^^^ ^ +144 """ +145 if not isinstance(from_or_join, exp.Join): +146 return False +147 +148 alias = from_or_join.this.alias_or_name +149 +150 on = from_or_join.args.get("on") +151 if not on: +152 return False +153 selections = [c.name for c in on.find_all(exp.Column) if c.table == alias] +154 inner_from = inner_scope.expression.args.get("from") +155 if not inner_from: +156 return False +157 inner_from_table = inner_from.expressions[0].alias_or_name +158 inner_projections = {s.alias_or_name: s for s in inner_scope.selects} +159 return any( +160 col.table != inner_from_table +161 for selection in selections +162 for col in inner_projections[selection].find_all(exp.Column) +163 ) +164 +165 return ( +166 isinstance(outer_scope.expression, exp.Select) +167 and isinstance(inner_select, exp.Select) +168 and not any(inner_select.args.get(arg) for arg in UNMERGABLE_ARGS) +169 and inner_select.args.get("from") +170 and not any(e.find(exp.AggFunc, exp.Select) for e in inner_select.expressions) +171 and not (leave_tables_isolated and len(outer_scope.selected_sources) > 1) +172 and not ( +173 isinstance(from_or_join, exp.Join) +174 and inner_select.args.get("where") +175 and from_or_join.side in {"FULL", "LEFT", "RIGHT"} +176 ) +177 and not ( +178 isinstance(from_or_join, exp.From) +179 and inner_select.args.get("where") +180 and any( +181 j.side in {"FULL", "RIGHT"} for j in outer_scope.expression.args.get("joins", []) +182 ) +183 ) +184 and not _outer_select_joins_on_inner_select_join() +185 and not _is_a_window_expression_in_unmergable_operation() +186 ) +187 188 -189 -190def _rename_inner_sources(outer_scope, inner_scope, alias): -191 """ -192 Renames any sources in the inner query that conflict with names in the outer query. -193 -194 Args: -195 outer_scope (sqlglot.optimizer.scope.Scope) -196 inner_scope (sqlglot.optimizer.scope.Scope) -197 alias (str) -198 """ -199 taken = set(outer_scope.selected_sources) -200 conflicts = taken.intersection(set(inner_scope.selected_sources)) -201 conflicts -= {alias} -202 -203 for conflict in conflicts: -204 new_name = find_new_name(taken, conflict) -205 -206 source, _ = inner_scope.selected_sources[conflict] -207 new_alias = exp.to_identifier(new_name) -208 -209 if isinstance(source, exp.Subquery): -210 source.set("alias", exp.TableAlias(this=new_alias)) -211 elif isinstance(source, exp.Table) and source.alias: -212 source.set("alias", new_alias) -213 elif isinstance(source, exp.Table): -214 source.replace(exp.alias_(source.copy(), new_alias)) -215 -216 for column in inner_scope.source_columns(conflict): -217 column.set("table", exp.to_identifier(new_name)) -218 -219 inner_scope.rename_source(conflict, new_name) +189def _rename_inner_sources(outer_scope, inner_scope, alias): +190 """ +191 Renames any sources in the inner query that conflict with names in the outer query. +192 +193 Args: +194 outer_scope (sqlglot.optimizer.scope.Scope) +195 inner_scope (sqlglot.optimizer.scope.Scope) +196 alias (str) +197 """ +198 taken = set(outer_scope.selected_sources) +199 conflicts = taken.intersection(set(inner_scope.selected_sources)) +200 conflicts -= {alias} +201 +202 for conflict in conflicts: +203 new_name = find_new_name(taken, conflict) +204 +205 source, _ = inner_scope.selected_sources[conflict] +206 new_alias = exp.to_identifier(new_name) +207 +208 if isinstance(source, exp.Subquery): +209 source.set("alias", exp.TableAlias(this=new_alias)) +210 elif isinstance(source, exp.Table) and source.alias: +211 source.set("alias", new_alias) +212 elif isinstance(source, exp.Table): +213 source.replace(exp.alias_(source.copy(), new_alias)) +214 +215 for column in inner_scope.source_columns(conflict): +216 column.set("table", exp.to_identifier(new_name)) +217 +218 inner_scope.rename_source(conflict, new_name) +219 220 -221 -222def _merge_from(outer_scope, inner_scope, node_to_replace, alias): -223 """ -224 Merge FROM clause of inner query into outer query. -225 -226 Args: -227 outer_scope (sqlglot.optimizer.scope.Scope) -228 inner_scope (sqlglot.optimizer.scope.Scope) -229 node_to_replace (exp.Subquery|exp.Table) -230 alias (str) -231 """ -232 new_subquery = inner_scope.expression.args.get("from").expressions[0] -233 node_to_replace.replace(new_subquery) -234 for join_hint in outer_scope.join_hints: -235 tables = join_hint.find_all(exp.Table) -236 for table in tables: -237 if table.alias_or_name == node_to_replace.alias_or_name: -238 table.set("this", exp.to_identifier(new_subquery.alias_or_name)) -239 outer_scope.remove_source(alias) -240 outer_scope.add_source( -241 new_subquery.alias_or_name, inner_scope.sources[new_subquery.alias_or_name] -242 ) +221def _merge_from(outer_scope, inner_scope, node_to_replace, alias): +222 """ +223 Merge FROM clause of inner query into outer query. +224 +225 Args: +226 outer_scope (sqlglot.optimizer.scope.Scope) +227 inner_scope (sqlglot.optimizer.scope.Scope) +228 node_to_replace (exp.Subquery|exp.Table) +229 alias (str) +230 """ +231 new_subquery = inner_scope.expression.args.get("from").expressions[0] +232 node_to_replace.replace(new_subquery) +233 for join_hint in outer_scope.join_hints: +234 tables = join_hint.find_all(exp.Table) +235 for table in tables: +236 if table.alias_or_name == node_to_replace.alias_or_name: +237 table.set("this", exp.to_identifier(new_subquery.alias_or_name)) +238 outer_scope.remove_source(alias) +239 outer_scope.add_source( +240 new_subquery.alias_or_name, inner_scope.sources[new_subquery.alias_or_name] +241 ) +242 243 -244 -245def _merge_joins(outer_scope, inner_scope, from_or_join): -246 """ -247 Merge JOIN clauses of inner query into outer query. -248 -249 Args: -250 outer_scope (sqlglot.optimizer.scope.Scope) -251 inner_scope (sqlglot.optimizer.scope.Scope) -252 from_or_join (exp.From|exp.Join) -253 """ -254 -255 new_joins = [] -256 comma_joins = inner_scope.expression.args.get("from").expressions[1:] -257 for subquery in comma_joins: -258 new_joins.append(exp.Join(this=subquery, kind="CROSS")) -259 outer_scope.add_source(subquery.alias_or_name, inner_scope.sources[subquery.alias_or_name]) -260 -261 joins = inner_scope.expression.args.get("joins") or [] -262 for join in joins: -263 new_joins.append(join) -264 outer_scope.add_source(join.alias_or_name, inner_scope.sources[join.alias_or_name]) -265 -266 if new_joins: -267 outer_joins = outer_scope.expression.args.get("joins", []) -268 -269 # Maintain the join order -270 if isinstance(from_or_join, exp.From): -271 position = 0 -272 else: -273 position = outer_joins.index(from_or_join) + 1 -274 outer_joins[position:position] = new_joins -275 -276 outer_scope.expression.set("joins", outer_joins) +244def _merge_joins(outer_scope, inner_scope, from_or_join): +245 """ +246 Merge JOIN clauses of inner query into outer query. +247 +248 Args: +249 outer_scope (sqlglot.optimizer.scope.Scope) +250 inner_scope (sqlglot.optimizer.scope.Scope) +251 from_or_join (exp.From|exp.Join) +252 """ +253 +254 new_joins = [] +255 comma_joins = inner_scope.expression.args.get("from").expressions[1:] +256 for subquery in comma_joins: +257 new_joins.append(exp.Join(this=subquery, kind="CROSS")) +258 outer_scope.add_source(subquery.alias_or_name, inner_scope.sources[subquery.alias_or_name]) +259 +260 joins = inner_scope.expression.args.get("joins") or [] +261 for join in joins: +262 new_joins.append(join) +263 outer_scope.add_source(join.alias_or_name, inner_scope.sources[join.alias_or_name]) +264 +265 if new_joins: +266 outer_joins = outer_scope.expression.args.get("joins", []) +267 +268 # Maintain the join order +269 if isinstance(from_or_join, exp.From): +270 position = 0 +271 else: +272 position = outer_joins.index(from_or_join) + 1 +273 outer_joins[position:position] = new_joins +274 +275 outer_scope.expression.set("joins", outer_joins) +276 277 -278 -279def _merge_expressions(outer_scope, inner_scope, alias): -280 """ -281 Merge projections of inner query into outer query. -282 -283 Args: -284 outer_scope (sqlglot.optimizer.scope.Scope) -285 inner_scope (sqlglot.optimizer.scope.Scope) -286 alias (str) -287 """ -288 # Collect all columns that reference the alias of the inner query -289 outer_columns = defaultdict(list) -290 for column in outer_scope.columns: -291 if column.table == alias: -292 outer_columns[column.name].append(column) -293 -294 # Replace columns with the projection expression in the inner query -295 for expression in inner_scope.expression.expressions: -296 projection_name = expression.alias_or_name -297 if not projection_name: -298 continue -299 columns_to_replace = outer_columns.get(projection_name, []) -300 for column in columns_to_replace: -301 column.replace(expression.unalias().copy()) +278def _merge_expressions(outer_scope, inner_scope, alias): +279 """ +280 Merge projections of inner query into outer query. +281 +282 Args: +283 outer_scope (sqlglot.optimizer.scope.Scope) +284 inner_scope (sqlglot.optimizer.scope.Scope) +285 alias (str) +286 """ +287 # Collect all columns that reference the alias of the inner query +288 outer_columns = defaultdict(list) +289 for column in outer_scope.columns: +290 if column.table == alias: +291 outer_columns[column.name].append(column) +292 +293 # Replace columns with the projection expression in the inner query +294 for expression in inner_scope.expression.expressions: +295 projection_name = expression.alias_or_name +296 if not projection_name: +297 continue +298 columns_to_replace = outer_columns.get(projection_name, []) +299 for column in columns_to_replace: +300 column.replace(expression.unalias().copy()) +301 302 -303 -304def _merge_where(outer_scope, inner_scope, from_or_join): -305 """ -306 Merge WHERE clause of inner query into outer query. -307 -308 Args: -309 outer_scope (sqlglot.optimizer.scope.Scope) -310 inner_scope (sqlglot.optimizer.scope.Scope) -311 from_or_join (exp.From|exp.Join) -312 """ -313 where = inner_scope.expression.args.get("where") -314 if not where or not where.this: -315 return -316 -317 expression = outer_scope.expression -318 -319 if isinstance(from_or_join, exp.Join): -320 # Merge predicates from an outer join to the ON clause -321 # if it only has columns that are already joined -322 from_ = expression.args.get("from") -323 sources = {table.alias_or_name for table in from_.expressions} if from_ else {} -324 -325 for join in expression.args["joins"]: -326 source = join.alias_or_name -327 sources.add(source) -328 if source == from_or_join.alias_or_name: -329 break -330 -331 if set(exp.column_table_names(where.this)) <= sources: -332 from_or_join.on(where.this, copy=False) -333 from_or_join.set("on", simplify(from_or_join.args.get("on"))) -334 return -335 -336 expression.where(where.this, copy=False) -337 expression.set("where", simplify(expression.args.get("where"))) +303def _merge_where(outer_scope, inner_scope, from_or_join): +304 """ +305 Merge WHERE clause of inner query into outer query. +306 +307 Args: +308 outer_scope (sqlglot.optimizer.scope.Scope) +309 inner_scope (sqlglot.optimizer.scope.Scope) +310 from_or_join (exp.From|exp.Join) +311 """ +312 where = inner_scope.expression.args.get("where") +313 if not where or not where.this: +314 return +315 +316 expression = outer_scope.expression +317 +318 if isinstance(from_or_join, exp.Join): +319 # Merge predicates from an outer join to the ON clause +320 # if it only has columns that are already joined +321 from_ = expression.args.get("from") +322 sources = {table.alias_or_name for table in from_.expressions} if from_ else {} +323 +324 for join in expression.args["joins"]: +325 source = join.alias_or_name +326 sources.add(source) +327 if source == from_or_join.alias_or_name: +328 break +329 +330 if set(exp.column_table_names(where.this)) <= sources: +331 from_or_join.on(where.this, copy=False) +332 from_or_join.set("on", from_or_join.args.get("on")) +333 return +334 +335 expression.where(where.this, copy=False) +336 expression.set("where", expression.args.get("where")) +337 338 -339 -340def _merge_order(outer_scope, inner_scope): -341 """ -342 Merge ORDER clause of inner query into outer query. -343 -344 Args: -345 outer_scope (sqlglot.optimizer.scope.Scope) -346 inner_scope (sqlglot.optimizer.scope.Scope) -347 """ -348 if ( -349 any( -350 outer_scope.expression.args.get(arg) for arg in ["group", "distinct", "having", "order"] -351 ) -352 or len(outer_scope.selected_sources) != 1 -353 or any(expression.find(exp.AggFunc) for expression in outer_scope.expression.expressions) -354 ): -355 return -356 -357 outer_scope.expression.set("order", inner_scope.expression.args.get("order")) +339def _merge_order(outer_scope, inner_scope): +340 """ +341 Merge ORDER clause of inner query into outer query. +342 +343 Args: +344 outer_scope (sqlglot.optimizer.scope.Scope) +345 inner_scope (sqlglot.optimizer.scope.Scope) +346 """ +347 if ( +348 any( +349 outer_scope.expression.args.get(arg) for arg in ["group", "distinct", "having", "order"] +350 ) +351 or len(outer_scope.selected_sources) != 1 +352 or any(expression.find(exp.AggFunc) for expression in outer_scope.expression.expressions) +353 ): +354 return +355 +356 outer_scope.expression.set("order", inner_scope.expression.args.get("order")) +357 358 -359 -360def _merge_hints(outer_scope, inner_scope): -361 inner_scope_hint = inner_scope.expression.args.get("hint") -362 if not inner_scope_hint: -363 return -364 outer_scope_hint = outer_scope.expression.args.get("hint") -365 if outer_scope_hint: -366 for hint_expression in inner_scope_hint.expressions: -367 outer_scope_hint.append("expressions", hint_expression) -368 else: -369 outer_scope.expression.set("hint", inner_scope_hint) +359def _merge_hints(outer_scope, inner_scope): +360 inner_scope_hint = inner_scope.expression.args.get("hint") +361 if not inner_scope_hint: +362 return +363 outer_scope_hint = outer_scope.expression.args.get("hint") +364 if outer_scope_hint: +365 for hint_expression in inner_scope_hint.expressions: +366 outer_scope_hint.append("expressions", hint_expression) +367 else: +368 outer_scope.expression.set("hint", inner_scope_hint) +369 370 -371 -372def _pop_cte(inner_scope): -373 """ -374 Remove CTE from the AST. -375 -376 Args: -377 inner_scope (sqlglot.optimizer.scope.Scope) -378 """ -379 cte = inner_scope.expression.parent -380 with_ = cte.parent -381 if len(with_.expressions) == 1: -382 with_.pop() -383 else: -384 cte.pop() +371def _pop_cte(inner_scope): +372 """ +373 Remove CTE from the AST. +374 +375 Args: +376 inner_scope (sqlglot.optimizer.scope.Scope) +377 """ +378 cte = inner_scope.expression.parent +379 with_ = cte.parent +380 if len(with_.expressions) == 1: +381 with_.pop() +382 else: +383 cte.pop()
        @@ -461,35 +460,35 @@ -
        10def merge_subqueries(expression, leave_tables_isolated=False):
        -11    """
        -12    Rewrite sqlglot AST to merge derived tables into the outer query.
        -13
        -14    This also merges CTEs if they are selected from only once.
        -15
        -16    Example:
        -17        >>> import sqlglot
        -18        >>> expression = sqlglot.parse_one("SELECT a FROM (SELECT x.a FROM x) JOIN y")
        -19        >>> merge_subqueries(expression).sql()
        -20        'SELECT x.a FROM x JOIN y'
        -21
        -22    If `leave_tables_isolated` is True, this will not merge inner queries into outer
        -23    queries if it would result in multiple table selects in a single query:
        -24        >>> expression = sqlglot.parse_one("SELECT a FROM (SELECT x.a FROM x) JOIN y")
        -25        >>> merge_subqueries(expression, leave_tables_isolated=True).sql()
        -26        'SELECT a FROM (SELECT x.a FROM x) JOIN y'
        -27
        -28    Inspired by https://dev.mysql.com/doc/refman/8.0/en/derived-table-optimization.html
        -29
        -30    Args:
        -31        expression (sqlglot.Expression): expression to optimize
        -32        leave_tables_isolated (bool):
        -33    Returns:
        -34        sqlglot.Expression: optimized expression
        -35    """
        -36    expression = merge_ctes(expression, leave_tables_isolated)
        -37    expression = merge_derived_tables(expression, leave_tables_isolated)
        -38    return expression
        +            
         9def merge_subqueries(expression, leave_tables_isolated=False):
        +10    """
        +11    Rewrite sqlglot AST to merge derived tables into the outer query.
        +12
        +13    This also merges CTEs if they are selected from only once.
        +14
        +15    Example:
        +16        >>> import sqlglot
        +17        >>> expression = sqlglot.parse_one("SELECT a FROM (SELECT x.a FROM x) JOIN y")
        +18        >>> merge_subqueries(expression).sql()
        +19        'SELECT x.a FROM x JOIN y'
        +20
        +21    If `leave_tables_isolated` is True, this will not merge inner queries into outer
        +22    queries if it would result in multiple table selects in a single query:
        +23        >>> expression = sqlglot.parse_one("SELECT a FROM (SELECT x.a FROM x) JOIN y")
        +24        >>> merge_subqueries(expression, leave_tables_isolated=True).sql()
        +25        'SELECT a FROM (SELECT x.a FROM x) JOIN y'
        +26
        +27    Inspired by https://dev.mysql.com/doc/refman/8.0/en/derived-table-optimization.html
        +28
        +29    Args:
        +30        expression (sqlglot.Expression): expression to optimize
        +31        leave_tables_isolated (bool):
        +32    Returns:
        +33        sqlglot.Expression: optimized expression
        +34    """
        +35    expression = merge_ctes(expression, leave_tables_isolated)
        +36    expression = merge_derived_tables(expression, leave_tables_isolated)
        +37    return expression
         
        @@ -551,38 +550,38 @@ queries if it would result in multiple table selects in a single query:

        -
        52def merge_ctes(expression, leave_tables_isolated=False):
        -53    scopes = traverse_scope(expression)
        -54
        -55    # All places where we select from CTEs.
        -56    # We key on the CTE scope so we can detect CTES that are selected from multiple times.
        -57    cte_selections = defaultdict(list)
        -58    for outer_scope in scopes:
        -59        for table, inner_scope in outer_scope.selected_sources.values():
        -60            if isinstance(inner_scope, Scope) and inner_scope.is_cte:
        -61                cte_selections[id(inner_scope)].append(
        -62                    (
        -63                        outer_scope,
        -64                        inner_scope,
        -65                        table,
        -66                    )
        -67                )
        -68
        -69    singular_cte_selections = [v[0] for k, v in cte_selections.items() if len(v) == 1]
        -70    for outer_scope, inner_scope, table in singular_cte_selections:
        -71        from_or_join = table.find_ancestor(exp.From, exp.Join)
        -72        if _mergeable(outer_scope, inner_scope, leave_tables_isolated, from_or_join):
        -73            alias = table.alias_or_name
        -74            _rename_inner_sources(outer_scope, inner_scope, alias)
        -75            _merge_from(outer_scope, inner_scope, table, alias)
        -76            _merge_expressions(outer_scope, inner_scope, alias)
        -77            _merge_joins(outer_scope, inner_scope, from_or_join)
        -78            _merge_where(outer_scope, inner_scope, from_or_join)
        -79            _merge_order(outer_scope, inner_scope)
        -80            _merge_hints(outer_scope, inner_scope)
        -81            _pop_cte(inner_scope)
        -82            outer_scope.clear_cache()
        -83    return expression
        +            
        51def merge_ctes(expression, leave_tables_isolated=False):
        +52    scopes = traverse_scope(expression)
        +53
        +54    # All places where we select from CTEs.
        +55    # We key on the CTE scope so we can detect CTES that are selected from multiple times.
        +56    cte_selections = defaultdict(list)
        +57    for outer_scope in scopes:
        +58        for table, inner_scope in outer_scope.selected_sources.values():
        +59            if isinstance(inner_scope, Scope) and inner_scope.is_cte:
        +60                cte_selections[id(inner_scope)].append(
        +61                    (
        +62                        outer_scope,
        +63                        inner_scope,
        +64                        table,
        +65                    )
        +66                )
        +67
        +68    singular_cte_selections = [v[0] for k, v in cte_selections.items() if len(v) == 1]
        +69    for outer_scope, inner_scope, table in singular_cte_selections:
        +70        from_or_join = table.find_ancestor(exp.From, exp.Join)
        +71        if _mergeable(outer_scope, inner_scope, leave_tables_isolated, from_or_join):
        +72            alias = table.alias_or_name
        +73            _rename_inner_sources(outer_scope, inner_scope, alias)
        +74            _merge_from(outer_scope, inner_scope, table, alias)
        +75            _merge_expressions(outer_scope, inner_scope, alias)
        +76            _merge_joins(outer_scope, inner_scope, from_or_join)
        +77            _merge_where(outer_scope, inner_scope, from_or_join)
        +78            _merge_order(outer_scope, inner_scope)
        +79            _merge_hints(outer_scope, inner_scope)
        +80            _pop_cte(inner_scope)
        +81            outer_scope.clear_cache()
        +82    return expression
         
        @@ -600,22 +599,22 @@ queries if it would result in multiple table selects in a single query:

        -
         86def merge_derived_tables(expression, leave_tables_isolated=False):
        - 87    for outer_scope in traverse_scope(expression):
        - 88        for subquery in outer_scope.derived_tables:
        - 89            from_or_join = subquery.find_ancestor(exp.From, exp.Join)
        - 90            alias = subquery.alias_or_name
        - 91            inner_scope = outer_scope.sources[alias]
        - 92            if _mergeable(outer_scope, inner_scope, leave_tables_isolated, from_or_join):
        - 93                _rename_inner_sources(outer_scope, inner_scope, alias)
        - 94                _merge_from(outer_scope, inner_scope, subquery, alias)
        - 95                _merge_expressions(outer_scope, inner_scope, alias)
        - 96                _merge_joins(outer_scope, inner_scope, from_or_join)
        - 97                _merge_where(outer_scope, inner_scope, from_or_join)
        - 98                _merge_order(outer_scope, inner_scope)
        - 99                _merge_hints(outer_scope, inner_scope)
        -100                outer_scope.clear_cache()
        -101    return expression
        +            
         85def merge_derived_tables(expression, leave_tables_isolated=False):
        + 86    for outer_scope in traverse_scope(expression):
        + 87        for subquery in outer_scope.derived_tables:
        + 88            from_or_join = subquery.find_ancestor(exp.From, exp.Join)
        + 89            alias = subquery.alias_or_name
        + 90            inner_scope = outer_scope.sources[alias]
        + 91            if _mergeable(outer_scope, inner_scope, leave_tables_isolated, from_or_join):
        + 92                _rename_inner_sources(outer_scope, inner_scope, alias)
        + 93                _merge_from(outer_scope, inner_scope, subquery, alias)
        + 94                _merge_expressions(outer_scope, inner_scope, alias)
        + 95                _merge_joins(outer_scope, inner_scope, from_or_join)
        + 96                _merge_where(outer_scope, inner_scope, from_or_join)
        + 97                _merge_order(outer_scope, inner_scope)
        + 98                _merge_hints(outer_scope, inner_scope)
        + 99                outer_scope.clear_cache()
        +100    return expression
         
        diff --git a/docs/sqlglot/optimizer/normalize.html b/docs/sqlglot/optimizer/normalize.html index 708a94b..92095ba 100644 --- a/docs/sqlglot/optimizer/normalize.html +++ b/docs/sqlglot/optimizer/normalize.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.normalize API documentation @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • normalize
          • @@ -65,133 +65,167 @@ -
              1from sqlglot import exp
            -  2from sqlglot.helper import while_changing
            -  3from sqlglot.optimizer.simplify import flatten, simplify, uniq_sort
            -  4
            +                        
              1from __future__ import annotations
            +  2
            +  3import logging
            +  4import typing as t
               5
            -  6def normalize(expression, dnf=False, max_distance=128):
            -  7    """
            -  8    Rewrite sqlglot AST into conjunctive normal form.
            -  9
            - 10    Example:
            - 11        >>> import sqlglot
            - 12        >>> expression = sqlglot.parse_one("(x AND y) OR z")
            - 13        >>> normalize(expression).sql()
            - 14        '(x OR z) AND (y OR z)'
            - 15
            - 16    Args:
            - 17        expression (sqlglot.Expression): expression to normalize
            - 18        dnf (bool): rewrite in disjunctive normal form instead
            - 19        max_distance (int): the maximal estimated distance from cnf to attempt conversion
            - 20    Returns:
            - 21        sqlglot.Expression: normalized expression
            - 22    """
            - 23    expression = simplify(expression)
            - 24
            - 25    expression = while_changing(expression, lambda e: distributive_law(e, dnf, max_distance))
            - 26    return simplify(expression)
            - 27
            - 28
            - 29def normalized(expression, dnf=False):
            - 30    ancestor, root = (exp.And, exp.Or) if dnf else (exp.Or, exp.And)
            - 31
            - 32    return not any(connector.find_ancestor(ancestor) for connector in expression.find_all(root))
            - 33
            - 34
            - 35def normalization_distance(expression, dnf=False):
            - 36    """
            - 37    The difference in the number of predicates between the current expression and the normalized form.
            - 38
            - 39    This is used as an estimate of the cost of the conversion which is exponential in complexity.
            - 40
            - 41    Example:
            - 42        >>> import sqlglot
            - 43        >>> expression = sqlglot.parse_one("(a AND b) OR (c AND d)")
            - 44        >>> normalization_distance(expression)
            - 45        4
            - 46
            - 47    Args:
            - 48        expression (sqlglot.Expression): expression to compute distance
            - 49        dnf (bool): compute to dnf distance instead
            - 50    Returns:
            - 51        int: difference
            - 52    """
            - 53    return sum(_predicate_lengths(expression, dnf)) - (
            - 54        len(list(expression.find_all(exp.Connector))) + 1
            - 55    )
            +  6from sqlglot import exp
            +  7from sqlglot.errors import OptimizeError
            +  8from sqlglot.helper import while_changing
            +  9from sqlglot.optimizer.simplify import flatten, uniq_sort
            + 10
            + 11logger = logging.getLogger("sqlglot")
            + 12
            + 13
            + 14def normalize(expression: exp.Expression, dnf: bool = False, max_distance: int = 128):
            + 15    """
            + 16    Rewrite sqlglot AST into conjunctive normal form or disjunctive normal form.
            + 17
            + 18    Example:
            + 19        >>> import sqlglot
            + 20        >>> expression = sqlglot.parse_one("(x AND y) OR z")
            + 21        >>> normalize(expression, dnf=False).sql()
            + 22        '(x OR z) AND (y OR z)'
            + 23
            + 24    Args:
            + 25        expression: expression to normalize
            + 26        dnf: rewrite in disjunctive normal form instead.
            + 27        max_distance (int): the maximal estimated distance from cnf/dnf to attempt conversion
            + 28    Returns:
            + 29        sqlglot.Expression: normalized expression
            + 30    """
            + 31    cache: t.Dict[int, str] = {}
            + 32
            + 33    for node, *_ in tuple(expression.walk(prune=lambda e, *_: isinstance(e, exp.Connector))):
            + 34        if isinstance(node, exp.Connector):
            + 35            if normalized(node, dnf=dnf):
            + 36                continue
            + 37
            + 38            distance = normalization_distance(node, dnf=dnf)
            + 39
            + 40            if distance > max_distance:
            + 41                logger.info(
            + 42                    f"Skipping normalization because distance {distance} exceeds max {max_distance}"
            + 43                )
            + 44                return expression
            + 45
            + 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
            - 58def _predicate_lengths(expression, dnf):
            - 59    """
            - 60    Returns a list of predicate lengths when expanded to normalized form.
            + 57            if root:
            + 58                expression = node
            + 59
            + 60    return expression
              61
            - 62    (A AND B) OR C -> [2, 2] because len(A OR C), len(B OR C).
            - 63    """
            - 64    expression = expression.unnest()
            + 62
            + 63def normalized(expression, dnf=False):
            + 64    ancestor, root = (exp.And, exp.Or) if dnf else (exp.Or, exp.And)
              65
            - 66    if not isinstance(expression, exp.Connector):
            - 67        return [1]
            + 66    return not any(connector.find_ancestor(ancestor) for connector in expression.find_all(root))
            + 67
              68
            - 69    left, right = expression.args.values()
            - 70
            - 71    if isinstance(expression, exp.And if dnf else exp.Or):
            - 72        return [
            - 73            a + b for a in _predicate_lengths(left, dnf) for b in _predicate_lengths(right, dnf)
            - 74        ]
            - 75    return _predicate_lengths(left, dnf) + _predicate_lengths(right, dnf)
            - 76
            - 77
            - 78def distributive_law(expression, dnf, max_distance):
            - 79    """
            - 80    x OR (y AND z) -> (x OR y) AND (x OR z)
            - 81    (x AND y) OR (y AND z) -> (x OR y) AND (x OR z) AND (y OR y) AND (y OR z)
            - 82    """
            - 83    if isinstance(expression.unnest(), exp.Connector):
            - 84        if normalization_distance(expression, dnf) > max_distance:
            - 85            return expression
            - 86
            - 87    to_exp, from_exp = (exp.Or, exp.And) if dnf else (exp.And, exp.Or)
            - 88
            - 89    exp.replace_children(expression, lambda e: distributive_law(e, dnf, max_distance))
            + 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.
            + 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    if isinstance(expression, from_exp):
            - 92        a, b = expression.unnest_operands()
            - 93
            - 94        from_func = exp.and_ if from_exp == exp.And else exp.or_
            - 95        to_func = exp.and_ if to_exp == exp.And else exp.or_
            - 96
            - 97        if isinstance(a, to_exp) and isinstance(b, to_exp):
            - 98            if len(tuple(a.find_all(exp.Connector))) > len(tuple(b.find_all(exp.Connector))):
            - 99                return _distribute(a, b, from_func, to_func)
            -100            return _distribute(b, a, from_func, to_func)
            -101        if isinstance(a, to_exp):
            -102            return _distribute(b, a, from_func, to_func)
            -103        if isinstance(b, to_exp):
            -104            return _distribute(a, b, from_func, to_func)
            -105
            -106    return expression
            -107
            -108
            -109def _distribute(a, b, from_func, to_func):
            -110    if isinstance(a, exp.Connector):
            -111        exp.replace_children(
            -112            a,
            -113            lambda c: to_func(
            -114                exp.paren(from_func(c, b.left)),
            -115                exp.paren(from_func(c, b.right)),
            -116            ),
            -117        )
            -118    else:
            -119        a = to_func(from_func(a, b.left), from_func(a, b.right))
            -120
            -121    return _simplify(a)
            -122
            -123
            -124def _simplify(node):
            -125    node = uniq_sort(flatten(node))
            -126    exp.replace_children(node, _simplify)
            -127    return node
            + 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()
            +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)
            +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):
            +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
            +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
             
            @@ -201,37 +235,63 @@
            def - normalize(expression, dnf=False, max_distance=128): + normalize( expression: sqlglot.expressions.Expression, dnf: bool = False, max_distance: int = 128):
            -
             7def normalize(expression, dnf=False, max_distance=128):
            - 8    """
            - 9    Rewrite sqlglot AST into conjunctive normal form.
            -10
            -11    Example:
            -12        >>> import sqlglot
            -13        >>> expression = sqlglot.parse_one("(x AND y) OR z")
            -14        >>> normalize(expression).sql()
            -15        '(x OR z) AND (y OR z)'
            -16
            -17    Args:
            -18        expression (sqlglot.Expression): expression to normalize
            -19        dnf (bool): rewrite in disjunctive normal form instead
            -20        max_distance (int): the maximal estimated distance from cnf to attempt conversion
            -21    Returns:
            -22        sqlglot.Expression: normalized expression
            -23    """
            -24    expression = simplify(expression)
            -25
            -26    expression = while_changing(expression, lambda e: distributive_law(e, dnf, max_distance))
            -27    return simplify(expression)
            +            
            15def normalize(expression: exp.Expression, dnf: bool = False, max_distance: int = 128):
            +16    """
            +17    Rewrite sqlglot AST into conjunctive normal form or disjunctive normal form.
            +18
            +19    Example:
            +20        >>> import sqlglot
            +21        >>> expression = sqlglot.parse_one("(x AND y) OR z")
            +22        >>> normalize(expression, dnf=False).sql()
            +23        '(x OR z) AND (y OR z)'
            +24
            +25    Args:
            +26        expression: expression to normalize
            +27        dnf: rewrite in disjunctive normal form instead.
            +28        max_distance (int): the maximal estimated distance from cnf/dnf to attempt conversion
            +29    Returns:
            +30        sqlglot.Expression: normalized expression
            +31    """
            +32    cache: t.Dict[int, str] = {}
            +33
            +34    for node, *_ in tuple(expression.walk(prune=lambda e, *_: isinstance(e, exp.Connector))):
            +35        if isinstance(node, exp.Connector):
            +36            if normalized(node, dnf=dnf):
            +37                continue
            +38
            +39            distance = normalization_distance(node, dnf=dnf)
            +40
            +41            if distance > max_distance:
            +42                logger.info(
            +43                    f"Skipping normalization because distance {distance} exceeds max {max_distance}"
            +44                )
            +45                return expression
            +46
            +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
             
            -

            Rewrite sqlglot AST into conjunctive normal form.

            +

            Rewrite sqlglot AST into conjunctive normal form or disjunctive normal form.

            Example:
            @@ -239,7 +299,7 @@
            >>> import sqlglot
             >>> expression = sqlglot.parse_one("(x AND y) OR z")
            ->>> normalize(expression).sql()
            +>>> normalize(expression, dnf=False).sql()
             '(x OR z) AND (y OR z)'
             
            @@ -248,9 +308,9 @@
            Arguments:
              -
            • expression (sqlglot.Expression): expression to normalize
            • -
            • dnf (bool): rewrite in disjunctive normal form instead
            • -
            • max_distance (int): the maximal estimated distance from cnf to attempt conversion
            • +
            • expression: expression to normalize
            • +
            • dnf: rewrite in disjunctive normal form instead.
            • +
            • max_distance (int): the maximal estimated distance from cnf/dnf to attempt conversion
            Returns:
            @@ -273,10 +333,10 @@
            -
            30def normalized(expression, dnf=False):
            -31    ancestor, root = (exp.And, exp.Or) if dnf else (exp.Or, exp.And)
            -32
            -33    return not any(connector.find_ancestor(ancestor) for connector in expression.find_all(root))
            +            
            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))
             
            @@ -294,27 +354,27 @@
            -
            36def normalization_distance(expression, dnf=False):
            -37    """
            -38    The difference in the number of predicates between the current expression and the normalized form.
            -39
            -40    This is used as an estimate of the cost of the conversion which is exponential in complexity.
            -41
            -42    Example:
            -43        >>> import sqlglot
            -44        >>> expression = sqlglot.parse_one("(a AND b) OR (c AND d)")
            -45        >>> normalization_distance(expression)
            -46        4
            -47
            -48    Args:
            -49        expression (sqlglot.Expression): expression to compute distance
            -50        dnf (bool): compute to dnf distance instead
            -51    Returns:
            -52        int: difference
            -53    """
            -54    return sum(_predicate_lengths(expression, dnf)) - (
            -55        len(list(expression.find_all(exp.Connector))) + 1
            -56    )
            +            
            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.
            +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    )
             
            @@ -355,41 +415,44 @@
            def - distributive_law(expression, dnf, max_distance): + distributive_law(expression, dnf, max_distance, cache=None):
            -
             79def distributive_law(expression, dnf, max_distance):
            - 80    """
            - 81    x OR (y AND z) -> (x OR y) AND (x OR z)
            - 82    (x AND y) OR (y AND z) -> (x OR y) AND (x OR z) AND (y OR y) AND (y OR z)
            - 83    """
            - 84    if isinstance(expression.unnest(), exp.Connector):
            - 85        if normalization_distance(expression, dnf) > max_distance:
            - 86            return expression
            - 87
            - 88    to_exp, from_exp = (exp.Or, exp.And) if dnf else (exp.And, exp.Or)
            - 89
            - 90    exp.replace_children(expression, lambda e: distributive_law(e, dnf, max_distance))
            - 91
            - 92    if isinstance(expression, from_exp):
            - 93        a, b = expression.unnest_operands()
            - 94
            - 95        from_func = exp.and_ if from_exp == exp.And else exp.or_
            - 96        to_func = exp.and_ if to_exp == exp.And else exp.or_
            - 97
            - 98        if isinstance(a, to_exp) and isinstance(b, to_exp):
            - 99            if len(tuple(a.find_all(exp.Connector))) > len(tuple(b.find_all(exp.Connector))):
            -100                return _distribute(a, b, from_func, to_func)
            -101            return _distribute(b, a, from_func, to_func)
            -102        if isinstance(a, to_exp):
            -103            return _distribute(b, a, from_func, to_func)
            -104        if isinstance(b, to_exp):
            -105            return _distribute(a, b, from_func, to_func)
            -106
            -107    return expression
            +            
            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)
            +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):
            +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
             
            diff --git a/docs/sqlglot/optimizer/optimize_joins.html b/docs/sqlglot/optimizer/optimize_joins.html index e6d246d..0e77efe 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 @@ -28,8 +28,8 @@ -

            API Documentation

            -
              +

              API Documentation

              +
              • optimize_joins
              • @@ -67,84 +67,82 @@
                 1from sqlglot import exp
                  2from sqlglot.helper import tsort
                - 3from sqlglot.optimizer.simplify import simplify
                + 3
                  4
                - 5
                - 6def optimize_joins(expression):
                - 7    """
                - 8    Removes cross joins if possible and reorder joins based on predicate dependencies.
                - 9
                -10    Example:
                -11        >>> from sqlglot import parse_one
                -12        >>> optimize_joins(parse_one("SELECT * FROM x CROSS JOIN y JOIN z ON x.a = z.a AND y.a = z.a")).sql()
                -13        'SELECT * FROM x JOIN z ON x.a = z.a AND TRUE JOIN y ON y.a = z.a'
                -14    """
                -15    for select in expression.find_all(exp.Select):
                -16        references = {}
                -17        cross_joins = []
                -18
                -19        for join in select.args.get("joins", []):
                -20            name = join.this.alias_or_name
                -21            tables = other_table_names(join, name)
                -22
                -23            if tables:
                -24                for table in tables:
                -25                    references[table] = references.get(table, []) + [join]
                -26            else:
                -27                cross_joins.append((name, join))
                -28
                -29        for name, join in cross_joins:
                -30            for dep in references.get(name, []):
                -31                on = dep.args["on"]
                -32                on = on.replace(simplify(on))
                -33
                -34                if isinstance(on, exp.Connector):
                -35                    for predicate in on.flatten():
                -36                        if name in exp.column_table_names(predicate):
                -37                            predicate.replace(exp.true())
                -38                            join.on(predicate, copy=False)
                -39
                -40    expression = reorder_joins(expression)
                -41    expression = normalize(expression)
                -42    return expression
                -43
                -44
                -45def reorder_joins(expression):
                -46    """
                -47    Reorder joins by topological sort order based on predicate references.
                -48    """
                -49    for from_ in expression.find_all(exp.From):
                -50        head = from_.expressions[0]
                -51        parent = from_.parent
                -52        joins = {join.this.alias_or_name: join for join in parent.args.get("joins", [])}
                -53        dag = {head.alias_or_name: []}
                -54
                -55        for name, join in joins.items():
                -56            dag[name] = other_table_names(join, name)
                -57
                -58        parent.set(
                -59            "joins",
                -60            [joins[name] for name in tsort(dag) if name != head.alias_or_name],
                -61        )
                -62    return expression
                -63
                -64
                -65def normalize(expression):
                -66    """
                -67    Remove INNER and OUTER from joins as they are optional.
                -68    """
                -69    for join in expression.find_all(exp.Join):
                -70        if join.kind != "CROSS":
                -71            join.set("kind", None)
                -72    return expression
                -73
                -74
                -75def other_table_names(join, exclude):
                -76    return [
                -77        name
                -78        for name in (exp.column_table_names(join.args.get("on") or exp.true()))
                -79        if name != exclude
                -80    ]
                + 5def optimize_joins(expression):
                + 6    """
                + 7    Removes cross joins if possible and reorder joins based on predicate dependencies.
                + 8
                + 9    Example:
                +10        >>> from sqlglot import parse_one
                +11        >>> optimize_joins(parse_one("SELECT * FROM x CROSS JOIN y JOIN z ON x.a = z.a AND y.a = z.a")).sql()
                +12        'SELECT * FROM x JOIN z ON x.a = z.a AND TRUE JOIN y ON y.a = z.a'
                +13    """
                +14    for select in expression.find_all(exp.Select):
                +15        references = {}
                +16        cross_joins = []
                +17
                +18        for join in select.args.get("joins", []):
                +19            name = join.this.alias_or_name
                +20            tables = other_table_names(join, name)
                +21
                +22            if tables:
                +23                for table in tables:
                +24                    references[table] = references.get(table, []) + [join]
                +25            else:
                +26                cross_joins.append((name, join))
                +27
                +28        for name, join in cross_joins:
                +29            for dep in references.get(name, []):
                +30                on = dep.args["on"]
                +31
                +32                if isinstance(on, exp.Connector):
                +33                    for predicate in on.flatten():
                +34                        if name in exp.column_table_names(predicate):
                +35                            predicate.replace(exp.true())
                +36                            join.on(predicate, copy=False)
                +37
                +38    expression = reorder_joins(expression)
                +39    expression = normalize(expression)
                +40    return expression
                +41
                +42
                +43def reorder_joins(expression):
                +44    """
                +45    Reorder joins by topological sort order based on predicate references.
                +46    """
                +47    for from_ in expression.find_all(exp.From):
                +48        head = from_.expressions[0]
                +49        parent = from_.parent
                +50        joins = {join.this.alias_or_name: join for join in parent.args.get("joins", [])}
                +51        dag = {head.alias_or_name: []}
                +52
                +53        for name, join in joins.items():
                +54            dag[name] = other_table_names(join, name)
                +55
                +56        parent.set(
                +57            "joins",
                +58            [joins[name] for name in tsort(dag) if name != head.alias_or_name],
                +59        )
                +60    return expression
                +61
                +62
                +63def normalize(expression):
                +64    """
                +65    Remove INNER and OUTER from joins as they are optional.
                +66    """
                +67    for join in expression.find_all(exp.Join):
                +68        if join.kind != "CROSS":
                +69            join.set("kind", None)
                +70    return expression
                +71
                +72
                +73def other_table_names(join, exclude):
                +74    return [
                +75        name
                +76        for name in (exp.column_table_names(join.args.get("on") or exp.true()))
                +77        if name != exclude
                +78    ]
                 
                @@ -160,43 +158,42 @@
            -
             7def optimize_joins(expression):
            - 8    """
            - 9    Removes cross joins if possible and reorder joins based on predicate dependencies.
            -10
            -11    Example:
            -12        >>> from sqlglot import parse_one
            -13        >>> optimize_joins(parse_one("SELECT * FROM x CROSS JOIN y JOIN z ON x.a = z.a AND y.a = z.a")).sql()
            -14        'SELECT * FROM x JOIN z ON x.a = z.a AND TRUE JOIN y ON y.a = z.a'
            -15    """
            -16    for select in expression.find_all(exp.Select):
            -17        references = {}
            -18        cross_joins = []
            -19
            -20        for join in select.args.get("joins", []):
            -21            name = join.this.alias_or_name
            -22            tables = other_table_names(join, name)
            -23
            -24            if tables:
            -25                for table in tables:
            -26                    references[table] = references.get(table, []) + [join]
            -27            else:
            -28                cross_joins.append((name, join))
            -29
            -30        for name, join in cross_joins:
            -31            for dep in references.get(name, []):
            -32                on = dep.args["on"]
            -33                on = on.replace(simplify(on))
            -34
            -35                if isinstance(on, exp.Connector):
            -36                    for predicate in on.flatten():
            -37                        if name in exp.column_table_names(predicate):
            -38                            predicate.replace(exp.true())
            -39                            join.on(predicate, copy=False)
            -40
            -41    expression = reorder_joins(expression)
            -42    expression = normalize(expression)
            -43    return expression
            +            
             6def optimize_joins(expression):
            + 7    """
            + 8    Removes cross joins if possible and reorder joins based on predicate dependencies.
            + 9
            +10    Example:
            +11        >>> from sqlglot import parse_one
            +12        >>> optimize_joins(parse_one("SELECT * FROM x CROSS JOIN y JOIN z ON x.a = z.a AND y.a = z.a")).sql()
            +13        'SELECT * FROM x JOIN z ON x.a = z.a AND TRUE JOIN y ON y.a = z.a'
            +14    """
            +15    for select in expression.find_all(exp.Select):
            +16        references = {}
            +17        cross_joins = []
            +18
            +19        for join in select.args.get("joins", []):
            +20            name = join.this.alias_or_name
            +21            tables = other_table_names(join, name)
            +22
            +23            if tables:
            +24                for table in tables:
            +25                    references[table] = references.get(table, []) + [join]
            +26            else:
            +27                cross_joins.append((name, join))
            +28
            +29        for name, join in cross_joins:
            +30            for dep in references.get(name, []):
            +31                on = dep.args["on"]
            +32
            +33                if isinstance(on, exp.Connector):
            +34                    for predicate in on.flatten():
            +35                        if name in exp.column_table_names(predicate):
            +36                            predicate.replace(exp.true())
            +37                            join.on(predicate, copy=False)
            +38
            +39    expression = reorder_joins(expression)
            +40    expression = normalize(expression)
            +41    return expression
             
            @@ -227,24 +224,24 @@
            -
            46def reorder_joins(expression):
            -47    """
            -48    Reorder joins by topological sort order based on predicate references.
            -49    """
            -50    for from_ in expression.find_all(exp.From):
            -51        head = from_.expressions[0]
            -52        parent = from_.parent
            -53        joins = {join.this.alias_or_name: join for join in parent.args.get("joins", [])}
            -54        dag = {head.alias_or_name: []}
            -55
            -56        for name, join in joins.items():
            -57            dag[name] = other_table_names(join, name)
            -58
            -59        parent.set(
            -60            "joins",
            -61            [joins[name] for name in tsort(dag) if name != head.alias_or_name],
            -62        )
            -63    return expression
            +            
            44def reorder_joins(expression):
            +45    """
            +46    Reorder joins by topological sort order based on predicate references.
            +47    """
            +48    for from_ in expression.find_all(exp.From):
            +49        head = from_.expressions[0]
            +50        parent = from_.parent
            +51        joins = {join.this.alias_or_name: join for join in parent.args.get("joins", [])}
            +52        dag = {head.alias_or_name: []}
            +53
            +54        for name, join in joins.items():
            +55            dag[name] = other_table_names(join, name)
            +56
            +57        parent.set(
            +58            "joins",
            +59            [joins[name] for name in tsort(dag) if name != head.alias_or_name],
            +60        )
            +61    return expression
             
            @@ -264,14 +261,14 @@
            -
            66def normalize(expression):
            -67    """
            -68    Remove INNER and OUTER from joins as they are optional.
            -69    """
            -70    for join in expression.find_all(exp.Join):
            -71        if join.kind != "CROSS":
            -72            join.set("kind", None)
            -73    return expression
            +            
            64def normalize(expression):
            +65    """
            +66    Remove INNER and OUTER from joins as they are optional.
            +67    """
            +68    for join in expression.find_all(exp.Join):
            +69        if join.kind != "CROSS":
            +70            join.set("kind", None)
            +71    return expression
             
            @@ -291,12 +288,12 @@
            -
            76def other_table_names(join, exclude):
            -77    return [
            -78        name
            -79        for name in (exp.column_table_names(join.args.get("on") or exp.true()))
            -80        if name != exclude
            -81    ]
            +            
            74def other_table_names(join, exclude):
            +75    return [
            +76        name
            +77        for name in (exp.column_table_names(join.args.get("on") or exp.true()))
            +78        if name != exclude
            +79    ]
             
            diff --git a/docs/sqlglot/optimizer/optimizer.html b/docs/sqlglot/optimizer/optimizer.html index e6bbae7..28abdf8 100644 --- a/docs/sqlglot/optimizer/optimizer.html +++ b/docs/sqlglot/optimizer/optimizer.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.optimizer API documentation @@ -28,8 +28,8 @@ -

            API Documentation

            -
              +

              API Documentation

              +
              • optimize
              • @@ -79,74 +79,76 @@ 21from sqlglot.optimizer.pushdown_projections import pushdown_projections 22from sqlglot.optimizer.qualify_columns import qualify_columns, validate_qualify_columns 23from sqlglot.optimizer.qualify_tables import qualify_tables -24from sqlglot.optimizer.unnest_subqueries import unnest_subqueries -25from sqlglot.schema import ensure_schema -26 -27RULES = ( -28 lower_identities, -29 qualify_tables, -30 isolate_table_selects, -31 qualify_columns, -32 expand_laterals, -33 pushdown_projections, -34 validate_qualify_columns, -35 normalize, -36 unnest_subqueries, -37 expand_multi_table_selects, -38 pushdown_predicates, -39 optimize_joins, -40 eliminate_subqueries, -41 merge_subqueries, -42 eliminate_joins, -43 eliminate_ctes, -44 annotate_types, -45 canonicalize, -46) -47 -48 -49def optimize( -50 expression: str | exp.Expression, -51 schema: t.Optional[dict | Schema] = None, -52 db: t.Optional[str] = None, -53 catalog: t.Optional[str] = None, -54 dialect: DialectType = None, -55 rules: t.Sequence[t.Callable] = RULES, -56 **kwargs, -57): -58 """ -59 Rewrite a sqlglot AST into an optimized form. -60 -61 Args: -62 expression: expression to optimize -63 schema: database schema. -64 This can either be an instance of `sqlglot.optimizer.Schema` or a mapping in one of -65 the following forms: -66 1. {table: {col: type}} -67 2. {db: {table: {col: type}}} -68 3. {catalog: {db: {table: {col: type}}}} -69 If no schema is provided then the default schema defined at `sqlgot.schema` will be used -70 db: specify the default database, as might be set by a `USE DATABASE db` statement -71 catalog: specify the default catalog, as might be set by a `USE CATALOG c` statement -72 dialect: The dialect to parse the sql string. -73 rules: sequence of optimizer rules to use. -74 Many of the rules require tables and columns to be qualified. -75 Do not remove qualify_tables or qualify_columns from the sequence of rules unless you know -76 what you're doing! -77 **kwargs: If a rule has a keyword argument with a same name in **kwargs, it will be passed in. -78 Returns: -79 sqlglot.Expression: optimized expression -80 """ -81 schema = ensure_schema(schema or sqlglot.schema) -82 possible_kwargs = {"db": db, "catalog": catalog, "schema": schema, **kwargs} -83 expression = exp.maybe_parse(expression, dialect=dialect, copy=True) -84 for rule in rules: -85 # Find any additional rule parameters, beyond `expression` -86 rule_params = rule.__code__.co_varnames -87 rule_kwargs = { -88 param: possible_kwargs[param] for param in rule_params if param in possible_kwargs -89 } -90 expression = rule(expression, **rule_kwargs) -91 return expression +24from sqlglot.optimizer.simplify import simplify +25from sqlglot.optimizer.unnest_subqueries import unnest_subqueries +26from sqlglot.schema import ensure_schema +27 +28RULES = ( +29 lower_identities, +30 qualify_tables, +31 isolate_table_selects, +32 qualify_columns, +33 expand_laterals, +34 pushdown_projections, +35 validate_qualify_columns, +36 normalize, +37 unnest_subqueries, +38 expand_multi_table_selects, +39 pushdown_predicates, +40 optimize_joins, +41 eliminate_subqueries, +42 merge_subqueries, +43 eliminate_joins, +44 eliminate_ctes, +45 annotate_types, +46 canonicalize, +47 simplify, +48) +49 +50 +51def optimize( +52 expression: str | exp.Expression, +53 schema: t.Optional[dict | Schema] = None, +54 db: t.Optional[str] = None, +55 catalog: t.Optional[str] = None, +56 dialect: DialectType = None, +57 rules: t.Sequence[t.Callable] = RULES, +58 **kwargs, +59): +60 """ +61 Rewrite a sqlglot AST into an optimized form. +62 +63 Args: +64 expression: expression to optimize +65 schema: database schema. +66 This can either be an instance of `sqlglot.optimizer.Schema` or a mapping in one of +67 the following forms: +68 1. {table: {col: type}} +69 2. {db: {table: {col: type}}} +70 3. {catalog: {db: {table: {col: type}}}} +71 If no schema is provided then the default schema defined at `sqlgot.schema` will be used +72 db: specify the default database, as might be set by a `USE DATABASE db` statement +73 catalog: specify the default catalog, as might be set by a `USE CATALOG c` statement +74 dialect: The dialect to parse the sql string. +75 rules: sequence of optimizer rules to use. +76 Many of the rules require tables and columns to be qualified. +77 Do not remove qualify_tables or qualify_columns from the sequence of rules unless you know +78 what you're doing! +79 **kwargs: If a rule has a keyword argument with a same name in **kwargs, it will be passed in. +80 Returns: +81 sqlglot.Expression: optimized expression +82 """ +83 schema = ensure_schema(schema or sqlglot.schema, dialect=dialect) +84 possible_kwargs = {"db": db, "catalog": catalog, "schema": schema, **kwargs} +85 expression = exp.maybe_parse(expression, dialect=dialect, copy=True) +86 for rule in rules: +87 # Find any additional rule parameters, beyond `expression` +88 rule_params = rule.__code__.co_varnames +89 rule_kwargs = { +90 param: possible_kwargs[param] for param in rule_params if param in possible_kwargs +91 } +92 expression = rule(expression, **rule_kwargs) +93 return expression
            @@ -156,55 +158,55 @@
            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 0x7fb8b87bc1f0>, <function qualify_tables at 0x7fb8b87be8c0>, <function isolate_table_selects at 0x7fb8b87bc160>, <function qualify_columns at 0x7fb8b87bd7e0>, <function expand_laterals at 0x7fb8b87afeb0>, <function pushdown_projections at 0x7fb8b87be290>, <function validate_qualify_columns at 0x7fb8b87bd870>, <function normalize at 0x7fb8b87adea0>, <function unnest_subqueries at 0x7fb8b87be9e0>, <function expand_multi_table_selects at 0x7fb8b87bc0d0>, <function pushdown_predicates at 0x7fb8b87bd2d0>, <function optimize_joins at 0x7fb8b87bd000>, <function eliminate_subqueries at 0x7fb8b87afac0>, <function merge_subqueries at 0x7fb8b87bc4c0>, <function eliminate_joins at 0x7fb8b87adcf0>, <function eliminate_ctes at 0x7fb8b87adbd0>, <function annotate_types at 0x7fb8b87465f0>, <function canonicalize at 0x7fb8b87ad6c0>), **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 0x7f0637f3d360>, <function qualify_tables at 0x7f0637f3fa30>, <function isolate_table_selects at 0x7f0637f3d240>, <function qualify_columns at 0x7f0637f3e950>, <function expand_laterals at 0x7f0637f3d000>, <function pushdown_projections at 0x7f0637f3f400>, <function validate_qualify_columns at 0x7f0637f3e9e0>, <function normalize at 0x7f0637eeae60>, <function unnest_subqueries at 0x7f0637f3fb50>, <function expand_multi_table_selects at 0x7f0637f3d1b0>, <function pushdown_predicates at 0x7f0637f3e4d0>, <function optimize_joins at 0x7f0637f3e0e0>, <function eliminate_subqueries at 0x7f0637f3cc10>, <function merge_subqueries at 0x7f0637f3d630>, <function eliminate_joins at 0x7f0637eead40>, <function eliminate_ctes at 0x7f0637eeac20>, <function annotate_types at 0x7f0637ec7490>, <function canonicalize at 0x7f0637eea680>, <function simplify at 0x7f0637eeaf80>), **kwargs):
            -
            50def optimize(
            -51    expression: str | exp.Expression,
            -52    schema: t.Optional[dict | Schema] = None,
            -53    db: t.Optional[str] = None,
            -54    catalog: t.Optional[str] = None,
            -55    dialect: DialectType = None,
            -56    rules: t.Sequence[t.Callable] = RULES,
            -57    **kwargs,
            -58):
            -59    """
            -60    Rewrite a sqlglot AST into an optimized form.
            -61
            -62    Args:
            -63        expression: expression to optimize
            -64        schema: database schema.
            -65            This can either be an instance of `sqlglot.optimizer.Schema` or a mapping in one of
            -66            the following forms:
            -67                1. {table: {col: type}}
            -68                2. {db: {table: {col: type}}}
            -69                3. {catalog: {db: {table: {col: type}}}}
            -70            If no schema is provided then the default schema defined at `sqlgot.schema` will be used
            -71        db: specify the default database, as might be set by a `USE DATABASE db` statement
            -72        catalog: specify the default catalog, as might be set by a `USE CATALOG c` statement
            -73        dialect: The dialect to parse the sql string.
            -74        rules: sequence of optimizer rules to use.
            -75            Many of the rules require tables and columns to be qualified.
            -76            Do not remove qualify_tables or qualify_columns from the sequence of rules unless you know
            -77            what you're doing!
            -78        **kwargs: If a rule has a keyword argument with a same name in **kwargs, it will be passed in.
            -79    Returns:
            -80        sqlglot.Expression: optimized expression
            -81    """
            -82    schema = ensure_schema(schema or sqlglot.schema)
            -83    possible_kwargs = {"db": db, "catalog": catalog, "schema": schema, **kwargs}
            -84    expression = exp.maybe_parse(expression, dialect=dialect, copy=True)
            -85    for rule in rules:
            -86        # Find any additional rule parameters, beyond `expression`
            -87        rule_params = rule.__code__.co_varnames
            -88        rule_kwargs = {
            -89            param: possible_kwargs[param] for param in rule_params if param in possible_kwargs
            -90        }
            -91        expression = rule(expression, **rule_kwargs)
            -92    return expression
            +            
            52def optimize(
            +53    expression: str | exp.Expression,
            +54    schema: t.Optional[dict | Schema] = None,
            +55    db: t.Optional[str] = None,
            +56    catalog: t.Optional[str] = None,
            +57    dialect: DialectType = None,
            +58    rules: t.Sequence[t.Callable] = RULES,
            +59    **kwargs,
            +60):
            +61    """
            +62    Rewrite a sqlglot AST into an optimized form.
            +63
            +64    Args:
            +65        expression: expression to optimize
            +66        schema: database schema.
            +67            This can either be an instance of `sqlglot.optimizer.Schema` or a mapping in one of
            +68            the following forms:
            +69                1. {table: {col: type}}
            +70                2. {db: {table: {col: type}}}
            +71                3. {catalog: {db: {table: {col: type}}}}
            +72            If no schema is provided then the default schema defined at `sqlgot.schema` will be used
            +73        db: specify the default database, as might be set by a `USE DATABASE db` statement
            +74        catalog: specify the default catalog, as might be set by a `USE CATALOG c` statement
            +75        dialect: The dialect to parse the sql string.
            +76        rules: sequence of optimizer rules to use.
            +77            Many of the rules require tables and columns to be qualified.
            +78            Do not remove qualify_tables or qualify_columns from the sequence of rules unless you know
            +79            what you're doing!
            +80        **kwargs: If a rule has a keyword argument with a same name in **kwargs, it will be passed in.
            +81    Returns:
            +82        sqlglot.Expression: optimized expression
            +83    """
            +84    schema = ensure_schema(schema or sqlglot.schema, dialect=dialect)
            +85    possible_kwargs = {"db": db, "catalog": catalog, "schema": schema, **kwargs}
            +86    expression = exp.maybe_parse(expression, dialect=dialect, copy=True)
            +87    for rule in rules:
            +88        # Find any additional rule parameters, beyond `expression`
            +89        rule_params = rule.__code__.co_varnames
            +90        rule_kwargs = {
            +91            param: possible_kwargs[param] for param in rule_params if param in possible_kwargs
            +92        }
            +93        expression = rule(expression, **rule_kwargs)
            +94    return expression
             
            diff --git a/docs/sqlglot/optimizer/pushdown_predicates.html b/docs/sqlglot/optimizer/pushdown_predicates.html index f69a006..f9371f4 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 @@ -28,8 +28,8 @@ -

            API Documentation

            -
              +

              API Documentation

              +
              • pushdown_predicates
              • diff --git a/docs/sqlglot/optimizer/pushdown_projections.html b/docs/sqlglot/optimizer/pushdown_projections.html index f0de386..18ac794 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 @@ -28,8 +28,8 @@ -

                API Documentation

                -
                  +

                  API Documentation

                  +
                  • DEFAULT_SELECTION
                  • diff --git a/docs/sqlglot/optimizer/qualify_columns.html b/docs/sqlglot/optimizer/qualify_columns.html index 8de0b29..2211a0b 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 @@ -28,8 +28,8 @@ -

                    API Documentation

                    -
                      +

                      API Documentation

                      +
                      • qualify_columns
                      • @@ -109,462 +109,489 @@ 30 resolver = Resolver(scope, schema) 31 _pop_table_column_aliases(scope.ctes) 32 _pop_table_column_aliases(scope.derived_tables) - 33 _expand_using(scope, resolver) + 33 using_column_tables = _expand_using(scope, resolver) 34 _qualify_columns(scope, resolver) 35 if not isinstance(scope.expression, exp.UDTF): - 36 _expand_stars(scope, resolver) + 36 _expand_stars(scope, resolver, using_column_tables) 37 _qualify_outputs(scope) - 38 _expand_group_by(scope, resolver) - 39 _expand_order_by(scope) - 40 - 41 return expression - 42 + 38 _expand_alias_refs(scope, resolver) + 39 _expand_group_by(scope, resolver) + 40 _expand_order_by(scope) + 41 + 42 return expression 43 - 44def validate_qualify_columns(expression): - 45 """Raise an `OptimizeError` if any columns aren't qualified""" - 46 unqualified_columns = [] - 47 for scope in traverse_scope(expression): - 48 if isinstance(scope.expression, exp.Select): - 49 unqualified_columns.extend(scope.unqualified_columns) - 50 if scope.external_columns and not scope.is_correlated_subquery: - 51 column = scope.external_columns[0] - 52 raise OptimizeError(f"Unknown table: '{column.table}' for column '{column}'") - 53 - 54 if unqualified_columns: - 55 raise OptimizeError(f"Ambiguous columns: {unqualified_columns}") - 56 return expression - 57 + 44 + 45def validate_qualify_columns(expression): + 46 """Raise an `OptimizeError` if any columns aren't qualified""" + 47 unqualified_columns = [] + 48 for scope in traverse_scope(expression): + 49 if isinstance(scope.expression, exp.Select): + 50 unqualified_columns.extend(scope.unqualified_columns) + 51 if scope.external_columns and not scope.is_correlated_subquery: + 52 column = scope.external_columns[0] + 53 raise OptimizeError(f"Unknown table: '{column.table}' for column '{column}'") + 54 + 55 if unqualified_columns: + 56 raise OptimizeError(f"Ambiguous columns: {unqualified_columns}") + 57 return expression 58 - 59def _pop_table_column_aliases(derived_tables): - 60 """ - 61 Remove table column aliases. - 62 - 63 (e.g. SELECT ... FROM (SELECT ...) AS foo(col1, col2) - 64 """ - 65 for derived_table in derived_tables: - 66 table_alias = derived_table.args.get("alias") - 67 if table_alias: - 68 table_alias.args.pop("columns", None) - 69 + 59 + 60def _pop_table_column_aliases(derived_tables): + 61 """ + 62 Remove table column aliases. + 63 + 64 (e.g. SELECT ... FROM (SELECT ...) AS foo(col1, col2) + 65 """ + 66 for derived_table in derived_tables: + 67 table_alias = derived_table.args.get("alias") + 68 if table_alias: + 69 table_alias.args.pop("columns", None) 70 - 71def _expand_using(scope, resolver): - 72 joins = list(scope.expression.find_all(exp.Join)) - 73 names = {join.this.alias for join in joins} - 74 ordered = [key for key in scope.selected_sources if key not in names] - 75 - 76 # Mapping of automatically joined column names to source names - 77 column_tables = {} - 78 - 79 for join in joins: - 80 using = join.args.get("using") - 81 - 82 if not using: - 83 continue - 84 - 85 join_table = join.this.alias_or_name - 86 - 87 columns = {} - 88 - 89 for k in scope.selected_sources: - 90 if k in ordered: - 91 for column in resolver.get_source_columns(k): - 92 if column not in columns: - 93 columns[column] = k - 94 - 95 ordered.append(join_table) - 96 join_columns = resolver.get_source_columns(join_table) - 97 conditions = [] - 98 - 99 for identifier in using: -100 identifier = identifier.name -101 table = columns.get(identifier) -102 -103 if not table or identifier not in join_columns: -104 raise OptimizeError(f"Cannot automatically join: {identifier}") -105 -106 conditions.append( -107 exp.condition( -108 exp.EQ( -109 this=exp.column(identifier, table=table), -110 expression=exp.column(identifier, table=join_table), -111 ) -112 ) -113 ) -114 -115 tables = column_tables.setdefault(identifier, []) -116 if table not in tables: -117 tables.append(table) -118 if join_table not in tables: -119 tables.append(join_table) -120 -121 join.args.pop("using") -122 join.set("on", exp.and_(*conditions)) -123 -124 if column_tables: -125 for column in scope.columns: -126 if not column.table and column.name in column_tables: -127 tables = column_tables[column.name] -128 coalesce = [exp.column(column.name, table=table) for table in tables] -129 replacement = exp.Coalesce(this=coalesce[0], expressions=coalesce[1:]) -130 -131 # Ensure selects keep their output name -132 if isinstance(column.parent, exp.Select): -133 replacement = exp.alias_(replacement, alias=column.name) -134 -135 scope.replace(column, replacement) + 71 + 72def _expand_using(scope, resolver): + 73 joins = list(scope.find_all(exp.Join)) + 74 names = {join.this.alias for join in joins} + 75 ordered = [key for key in scope.selected_sources if key not in names] + 76 + 77 # Mapping of automatically joined column names to an ordered set of source names (dict). + 78 column_tables = {} + 79 + 80 for join in joins: + 81 using = join.args.get("using") + 82 + 83 if not using: + 84 continue + 85 + 86 join_table = join.this.alias_or_name + 87 + 88 columns = {} + 89 + 90 for k in scope.selected_sources: + 91 if k in ordered: + 92 for column in resolver.get_source_columns(k): + 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)) +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 -138def _expand_group_by(scope, resolver): -139 group = scope.expression.args.get("group") -140 if not group: -141 return -142 -143 # Replace references to select aliases -144 def transform(node, *_): -145 if isinstance(node, exp.Column) and not node.table: -146 table = resolver.get_table(node.name) -147 -148 # Source columns get priority over select aliases -149 if table: -150 node.set("table", table) -151 return node -152 -153 selects = {s.alias_or_name: s for s in scope.selects} +137 scope.replace(column, replacement) +138 +139 return column_tables +140 +141 +142def _expand_alias_refs(scope, resolver): +143 selects = {} +144 +145 # Replace references to select aliases +146 def transform(node, *_): +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 table: +152 node.set("table", table) +153 return node 154 -155 select = selects.get(node.name) -156 if select: -157 scope.clear_cache() -158 if isinstance(select, exp.Alias): -159 select = select.this -160 return select.copy() -161 -162 return node -163 -164 group.transform(transform, copy=False) -165 group.set("expressions", _expand_positional_references(scope, group.expressions)) -166 scope.expression.set("group", group) +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 return node 167 -168 -169def _expand_order_by(scope): -170 order = scope.expression.args.get("order") -171 if not order: -172 return -173 -174 ordereds = order.expressions -175 for ordered, new_expression in zip( -176 ordereds, -177 _expand_positional_references(scope, (o.this for o in ordereds)), -178 ): -179 ordered.set("this", new_expression) -180 +168 where = scope.expression.args.get("where") +169 if where: +170 where.transform(transform, copy=False) +171 +172 group = scope.expression.args.get("group") +173 if group: +174 group.transform(transform, copy=False) +175 +176 +177def _expand_group_by(scope, resolver): +178 group = scope.expression.args.get("group") +179 if not group: +180 return 181 -182def _expand_positional_references(scope, expressions): -183 new_nodes = [] -184 for node in expressions: -185 if node.is_int: -186 try: -187 select = scope.selects[int(node.name) - 1] -188 except IndexError: -189 raise OptimizeError(f"Unknown output column: {node.name}") -190 if isinstance(select, exp.Alias): -191 select = select.this -192 new_nodes.append(select.copy()) -193 scope.clear_cache() -194 else: -195 new_nodes.append(node) -196 -197 return new_nodes +182 group.set("expressions", _expand_positional_references(scope, group.expressions)) +183 scope.expression.set("group", group) +184 +185 +186def _expand_order_by(scope): +187 order = scope.expression.args.get("order") +188 if not order: +189 return +190 +191 ordereds = order.expressions +192 for ordered, new_expression in zip( +193 ordereds, +194 _expand_positional_references(scope, (o.this for o in ordereds)), +195 ): +196 ordered.set("this", new_expression) +197 198 -199 -200def _qualify_columns(scope, resolver): -201 """Disambiguate columns, ensuring each column specifies a source""" -202 for column in scope.columns: -203 column_table = column.table -204 column_name = column.name -205 -206 if column_table and column_table in scope.sources: -207 source_columns = resolver.get_source_columns(column_table) -208 if source_columns and column_name not in source_columns and "*" not in source_columns: -209 raise OptimizeError(f"Unknown column: {column_name}") -210 -211 if not column_table: -212 column_table = resolver.get_table(column_name) +199def _expand_positional_references(scope, expressions): +200 new_nodes = [] +201 for node in expressions: +202 if node.is_int: +203 try: +204 select = scope.selects[int(node.name) - 1] +205 except IndexError: +206 raise OptimizeError(f"Unknown output column: {node.name}") +207 if isinstance(select, exp.Alias): +208 select = select.this +209 new_nodes.append(select.copy()) +210 scope.clear_cache() +211 else: +212 new_nodes.append(node) 213 -214 # column_table can be a '' because bigquery unnest has no table alias -215 if column_table: -216 column.set("table", column_table) -217 elif column_table not in scope.sources: -218 # structs are used like tables (e.g. "struct"."field"), so they need to be qualified -219 # separately and represented as dot(dot(...(<table>.<column>, field1), field2, ...)) -220 -221 struct_root, *struct_fields = [ -222 val for val in reversed(list(column.args.values())) if val is not None -223 ] -224 -225 if struct_root.name in scope.sources: -226 # struct is already qualified, but we still need to change the AST representation -227 struct_table = struct_root -228 struct_root, *struct_fields = struct_fields -229 else: -230 struct_table = resolver.get_table(struct_root.name) -231 -232 if struct_table: -233 while column.parent and isinstance(column.parent, exp.Dot): -234 column = column.parent -235 struct_fields.append(column.expression) -236 -237 new_column = exp.column(struct_root, table=struct_table) -238 for field in struct_fields: -239 new_column = exp.Dot(this=new_column, expression=field) -240 -241 column.replace(new_column) -242 -243 columns_missing_from_scope = [] -244 # Determine whether each reference in the order by clause is to a column or an alias. -245 for ordered in scope.find_all(exp.Ordered): -246 for column in ordered.find_all(exp.Column): -247 if ( -248 not column.table -249 and column.parent is not ordered -250 and column.name in resolver.all_columns -251 ): -252 columns_missing_from_scope.append(column) -253 -254 # Determine whether each reference in the having clause is to a column or an alias. -255 for having in scope.find_all(exp.Having): -256 for column in having.find_all(exp.Column): -257 if ( -258 not column.table -259 and column.find_ancestor(exp.AggFunc) -260 and column.name in resolver.all_columns -261 ): -262 columns_missing_from_scope.append(column) -263 -264 for column in columns_missing_from_scope: -265 column_table = resolver.get_table(column.name) -266 -267 if column_table: -268 column.set("table", column_table) -269 -270 -271def _expand_stars(scope, resolver): -272 """Expand stars to lists of column selections""" -273 -274 new_selections = [] -275 except_columns = {} -276 replace_columns = {} -277 -278 for expression in scope.selects: -279 if isinstance(expression, exp.Star): -280 tables = list(scope.selected_sources) -281 _add_except_columns(expression, tables, except_columns) -282 _add_replace_columns(expression, tables, replace_columns) -283 elif expression.is_star: -284 tables = [expression.table] -285 _add_except_columns(expression.this, tables, except_columns) -286 _add_replace_columns(expression.this, tables, replace_columns) -287 else: -288 new_selections.append(expression) -289 continue -290 -291 for table in tables: -292 if table not in scope.sources: -293 raise OptimizeError(f"Unknown table: {table}") -294 columns = resolver.get_source_columns(table, only_visible=True) -295 -296 if columns and "*" not in columns: -297 table_id = id(table) -298 for name in columns: -299 if name not in except_columns.get(table_id, set()): -300 alias_ = replace_columns.get(table_id, {}).get(name, name) -301 column = exp.column(name, table) -302 new_selections.append(alias(column, alias_) if alias_ != name else column) -303 else: -304 return -305 scope.expression.set("expressions", new_selections) -306 -307 -308def _add_except_columns(expression, tables, except_columns): -309 except_ = expression.args.get("except") -310 -311 if not except_: -312 return -313 -314 columns = {e.name for e in except_} -315 -316 for table in tables: -317 except_columns[id(table)] = columns -318 -319 -320def _add_replace_columns(expression, tables, replace_columns): -321 replace = expression.args.get("replace") -322 -323 if not replace: -324 return -325 -326 columns = {e.this.name: e.alias for e in replace} -327 -328 for table in tables: -329 replace_columns[id(table)] = columns -330 -331 -332def _qualify_outputs(scope): -333 """Ensure all output columns are aliased""" -334 new_selections = [] -335 -336 for i, (selection, aliased_column) in enumerate( -337 itertools.zip_longest(scope.selects, scope.outer_column_list) -338 ): -339 if isinstance(selection, exp.Subquery): -340 if not selection.output_name: -341 selection.set("alias", exp.TableAlias(this=exp.to_identifier(f"_col_{i}"))) -342 elif not isinstance(selection, exp.Alias) and not selection.is_star: -343 alias_ = alias(exp.column(""), alias=selection.output_name or f"_col_{i}") -344 alias_.set("this", selection) -345 selection = alias_ +214 return new_nodes +215 +216 +217def _qualify_columns(scope, resolver): +218 """Disambiguate columns, ensuring each column specifies a source""" +219 for column in scope.columns: +220 column_table = column.table +221 column_name = column.name +222 +223 if column_table and column_table in scope.sources: +224 source_columns = resolver.get_source_columns(column_table) +225 if source_columns and column_name not in source_columns and "*" not in source_columns: +226 raise OptimizeError(f"Unknown column: {column_name}") +227 +228 if not column_table: +229 column_table = resolver.get_table(column_name) +230 +231 # column_table can be a '' because bigquery unnest has no table alias +232 if column_table: +233 column.set("table", column_table) +234 elif column_table not in scope.sources: +235 # structs are used like tables (e.g. "struct"."field"), so they need to be qualified +236 # separately and represented as dot(dot(...(<table>.<column>, field1), field2, ...)) +237 +238 root, *parts = column.parts +239 +240 if root.name in scope.sources: +241 # struct is already qualified, but we still need to change the AST representation +242 column_table = root +243 root, *parts = parts +244 else: +245 column_table = resolver.get_table(root.name) +246 +247 if column_table: +248 column.replace(exp.Dot.build([exp.column(root, table=column_table), *parts])) +249 +250 columns_missing_from_scope = [] +251 +252 # Determine whether each reference in the order by clause is to a column or an alias. +253 order = scope.expression.args.get("order") +254 +255 if order: +256 for ordered in order.expressions: +257 for column in ordered.find_all(exp.Column): +258 if ( +259 not column.table +260 and column.parent is not ordered +261 and column.name in resolver.all_columns +262 ): +263 columns_missing_from_scope.append(column) +264 +265 # Determine whether each reference in the having clause is to a column or an alias. +266 having = scope.expression.args.get("having") +267 +268 if having: +269 for column in having.find_all(exp.Column): +270 if ( +271 not column.table +272 and column.find_ancestor(exp.AggFunc) +273 and column.name in resolver.all_columns +274 ): +275 columns_missing_from_scope.append(column) +276 +277 for column in columns_missing_from_scope: +278 column_table = resolver.get_table(column.name) +279 +280 if column_table: +281 column.set("table", column_table) +282 +283 +284def _expand_stars(scope, resolver, using_column_tables): +285 """Expand stars to lists of column selections""" +286 +287 new_selections = [] +288 except_columns = {} +289 replace_columns = {} +290 coalesced_columns = set() +291 +292 for expression in scope.selects: +293 if isinstance(expression, exp.Star): +294 tables = list(scope.selected_sources) +295 _add_except_columns(expression, tables, except_columns) +296 _add_replace_columns(expression, tables, replace_columns) +297 elif expression.is_star: +298 tables = [expression.table] +299 _add_except_columns(expression.this, tables, except_columns) +300 _add_replace_columns(expression.this, tables, replace_columns) +301 else: +302 new_selections.append(expression) +303 continue +304 +305 for table in tables: +306 if table not in scope.sources: +307 raise OptimizeError(f"Unknown table: {table}") +308 columns = resolver.get_source_columns(table, only_visible=True) +309 +310 if columns and "*" not in columns: +311 table_id = id(table) +312 for name in columns: +313 if name in using_column_tables and table in using_column_tables[name]: +314 if name in coalesced_columns: +315 continue +316 +317 coalesced_columns.add(name) +318 tables = using_column_tables[name] +319 coalesce = [exp.column(name, table=table) for table in tables] +320 +321 new_selections.append( +322 exp.alias_( +323 exp.Coalesce(this=coalesce[0], expressions=coalesce[1:]), alias=name +324 ) +325 ) +326 elif name not in except_columns.get(table_id, set()): +327 alias_ = replace_columns.get(table_id, {}).get(name, name) +328 column = exp.column(name, table) +329 new_selections.append(alias(column, alias_) if alias_ != name else column) +330 else: +331 return +332 scope.expression.set("expressions", new_selections) +333 +334 +335def _add_except_columns(expression, tables, except_columns): +336 except_ = expression.args.get("except") +337 +338 if not except_: +339 return +340 +341 columns = {e.name for e in except_} +342 +343 for table in tables: +344 except_columns[id(table)] = columns +345 346 -347 if aliased_column: -348 selection.set("alias", exp.to_identifier(aliased_column)) +347def _add_replace_columns(expression, tables, replace_columns): +348 replace = expression.args.get("replace") 349 -350 new_selections.append(selection) -351 -352 scope.expression.set("expressions", new_selections) -353 +350 if not replace: +351 return +352 +353 columns = {e.this.name: e.alias for e in replace} 354 -355class Resolver: -356 """ -357 Helper for resolving columns. +355 for table in tables: +356 replace_columns[id(table)] = columns +357 358 -359 This is a class so we can lazily load some things and easily share them across functions. -360 """ -361 -362 def __init__(self, scope, schema): -363 self.scope = scope -364 self.schema = schema -365 self._source_columns = None -366 self._unambiguous_columns = None -367 self._all_columns = None -368 -369 def get_table(self, column_name: str) -> t.Optional[exp.Identifier]: -370 """ -371 Get the table for a column name. -372 -373 Args: -374 column_name: The column name to find the table for. -375 Returns: -376 The table name if it can be found/inferred. -377 """ -378 if self._unambiguous_columns is None: -379 self._unambiguous_columns = self._get_unambiguous_columns( -380 self._get_all_source_columns() -381 ) -382 -383 table_name = self._unambiguous_columns.get(column_name) -384 -385 if not table_name: -386 sources_without_schema = tuple( -387 source -388 for source, columns in self._get_all_source_columns().items() -389 if not columns or "*" in columns -390 ) -391 if len(sources_without_schema) == 1: -392 table_name = sources_without_schema[0] -393 -394 if table_name not in self.scope.selected_sources: -395 return exp.to_identifier(table_name) -396 -397 node, _ = self.scope.selected_sources.get(table_name) -398 -399 if isinstance(node, exp.Subqueryable): -400 while node and node.alias != table_name: -401 node = node.parent -402 -403 node_alias = node.args.get("alias") -404 if node_alias: -405 return node_alias.this -406 -407 return exp.to_identifier( -408 table_name, quoted=node.this.quoted if isinstance(node, exp.Table) else None -409 ) -410 -411 @property -412 def all_columns(self): -413 """All available columns of all sources in this scope""" -414 if self._all_columns is None: -415 self._all_columns = { -416 column for columns in self._get_all_source_columns().values() for column in columns -417 } -418 return self._all_columns -419 -420 def get_source_columns(self, name, only_visible=False): -421 """Resolve the source columns for a given source `name`""" -422 if name not in self.scope.sources: -423 raise OptimizeError(f"Unknown table: {name}") -424 -425 source = self.scope.sources[name] -426 -427 # If referencing a table, return the columns from the schema -428 if isinstance(source, exp.Table): -429 return self.schema.column_names(source, only_visible) -430 -431 if isinstance(source, Scope) and isinstance(source.expression, exp.Values): -432 return source.expression.alias_column_names +359def _qualify_outputs(scope): +360 """Ensure all output columns are aliased""" +361 new_selections = [] +362 +363 for i, (selection, aliased_column) in enumerate( +364 itertools.zip_longest(scope.selects, scope.outer_column_list) +365 ): +366 if isinstance(selection, exp.Subquery): +367 if not selection.output_name: +368 selection.set("alias", exp.TableAlias(this=exp.to_identifier(f"_col_{i}"))) +369 elif not isinstance(selection, exp.Alias) and not selection.is_star: +370 alias_ = alias(exp.column(""), alias=selection.output_name or f"_col_{i}") +371 alias_.set("this", selection) +372 selection = alias_ +373 +374 if aliased_column: +375 selection.set("alias", exp.to_identifier(aliased_column)) +376 +377 new_selections.append(selection) +378 +379 scope.expression.set("expressions", new_selections) +380 +381 +382class Resolver: +383 """ +384 Helper for resolving columns. +385 +386 This is a class so we can lazily load some things and easily share them across functions. +387 """ +388 +389 def __init__(self, scope, schema): +390 self.scope = scope +391 self.schema = schema +392 self._source_columns = None +393 self._unambiguous_columns = None +394 self._all_columns = None +395 +396 def get_table(self, column_name: str) -> t.Optional[exp.Identifier]: +397 """ +398 Get the table for a column name. +399 +400 Args: +401 column_name: The column name to find the table for. +402 Returns: +403 The table name if it can be found/inferred. +404 """ +405 if self._unambiguous_columns is None: +406 self._unambiguous_columns = self._get_unambiguous_columns( +407 self._get_all_source_columns() +408 ) +409 +410 table_name = self._unambiguous_columns.get(column_name) +411 +412 if not table_name: +413 sources_without_schema = tuple( +414 source +415 for source, columns in self._get_all_source_columns().items() +416 if not columns or "*" in columns +417 ) +418 if len(sources_without_schema) == 1: +419 table_name = sources_without_schema[0] +420 +421 if table_name not in self.scope.selected_sources: +422 return exp.to_identifier(table_name) +423 +424 node, _ = self.scope.selected_sources.get(table_name) +425 +426 if isinstance(node, exp.Subqueryable): +427 while node and node.alias != table_name: +428 node = node.parent +429 +430 node_alias = node.args.get("alias") +431 if node_alias: +432 return node_alias.this 433 -434 # Otherwise, if referencing another scope, return that scope's named selects -435 return source.expression.named_selects -436 -437 def _get_all_source_columns(self): -438 if self._source_columns is None: -439 self._source_columns = { -440 k: self.get_source_columns(k) -441 for k in itertools.chain(self.scope.selected_sources, self.scope.lateral_sources) -442 } -443 return self._source_columns -444 -445 def _get_unambiguous_columns(self, source_columns): -446 """ -447 Find all the unambiguous columns in sources. -448 -449 Args: -450 source_columns (dict): Mapping of names to source columns -451 Returns: -452 dict: Mapping of column name to source name -453 """ -454 if not source_columns: -455 return {} -456 -457 source_columns = list(source_columns.items()) -458 -459 first_table, first_columns = source_columns[0] -460 unambiguous_columns = {col: first_table for col in self._find_unique_columns(first_columns)} -461 all_columns = set(unambiguous_columns) -462 -463 for table, columns in source_columns[1:]: -464 unique = self._find_unique_columns(columns) -465 ambiguous = set(all_columns).intersection(unique) -466 all_columns.update(columns) -467 for column in ambiguous: -468 unambiguous_columns.pop(column, None) -469 for column in unique.difference(ambiguous): -470 unambiguous_columns[column] = table +434 return exp.to_identifier( +435 table_name, quoted=node.this.quoted if isinstance(node, exp.Table) else None +436 ) +437 +438 @property +439 def all_columns(self): +440 """All available columns of all sources in this scope""" +441 if self._all_columns is None: +442 self._all_columns = { +443 column for columns in self._get_all_source_columns().values() for column in columns +444 } +445 return self._all_columns +446 +447 def get_source_columns(self, name, only_visible=False): +448 """Resolve the source columns for a given source `name`""" +449 if name not in self.scope.sources: +450 raise OptimizeError(f"Unknown table: {name}") +451 +452 source = self.scope.sources[name] +453 +454 # If referencing a table, return the columns from the schema +455 if isinstance(source, exp.Table): +456 return self.schema.column_names(source, only_visible) +457 +458 if isinstance(source, Scope) and isinstance(source.expression, exp.Values): +459 return source.expression.alias_column_names +460 +461 # Otherwise, if referencing another scope, return that scope's named selects +462 return source.expression.named_selects +463 +464 def _get_all_source_columns(self): +465 if self._source_columns is None: +466 self._source_columns = { +467 k: self.get_source_columns(k) +468 for k in itertools.chain(self.scope.selected_sources, self.scope.lateral_sources) +469 } +470 return self._source_columns 471 -472 return unambiguous_columns -473 -474 @staticmethod -475 def _find_unique_columns(columns): -476 """ -477 Find the unique columns in a list of columns. -478 -479 Example: -480 >>> sorted(Resolver._find_unique_columns(["a", "b", "b", "c"])) -481 ['a', 'c'] -482 -483 This is necessary because duplicate column names are ambiguous. -484 """ -485 counts = {} -486 for column in columns: -487 counts[column] = counts.get(column, 0) + 1 -488 return {column for column, count in counts.items() if count == 1} +472 def _get_unambiguous_columns(self, source_columns): +473 """ +474 Find all the unambiguous columns in sources. +475 +476 Args: +477 source_columns (dict): Mapping of names to source columns +478 Returns: +479 dict: Mapping of column name to source name +480 """ +481 if not source_columns: +482 return {} +483 +484 source_columns = list(source_columns.items()) +485 +486 first_table, first_columns = source_columns[0] +487 unambiguous_columns = {col: first_table for col in self._find_unique_columns(first_columns)} +488 all_columns = set(unambiguous_columns) +489 +490 for table, columns in source_columns[1:]: +491 unique = self._find_unique_columns(columns) +492 ambiguous = set(all_columns).intersection(unique) +493 all_columns.update(columns) +494 for column in ambiguous: +495 unambiguous_columns.pop(column, None) +496 for column in unique.difference(ambiguous): +497 unambiguous_columns[column] = table +498 +499 return unambiguous_columns +500 +501 @staticmethod +502 def _find_unique_columns(columns): +503 """ +504 Find the unique columns in a list of columns. +505 +506 Example: +507 >>> sorted(Resolver._find_unique_columns(["a", "b", "b", "c"])) +508 ['a', 'c'] +509 +510 This is necessary because duplicate column names are ambiguous. +511 """ +512 counts = {} +513 for column in columns: +514 counts[column] = counts.get(column, 0) + 1 +515 return {column for column, count in counts.items() if count == 1}
            @@ -603,15 +630,16 @@
            31 resolver = Resolver(scope, schema) 32 _pop_table_column_aliases(scope.ctes) 33 _pop_table_column_aliases(scope.derived_tables) -34 _expand_using(scope, resolver) +34 using_column_tables = _expand_using(scope, resolver) 35 _qualify_columns(scope, resolver) 36 if not isinstance(scope.expression, exp.UDTF): -37 _expand_stars(scope, resolver) +37 _expand_stars(scope, resolver, using_column_tables) 38 _qualify_outputs(scope) -39 _expand_group_by(scope, resolver) -40 _expand_order_by(scope) -41 -42 return expression +39 _expand_alias_refs(scope, resolver) +40 _expand_group_by(scope, resolver) +41 _expand_order_by(scope) +42 +43 return expression
            @@ -657,19 +685,19 @@
            -
            45def validate_qualify_columns(expression):
            -46    """Raise an `OptimizeError` if any columns aren't qualified"""
            -47    unqualified_columns = []
            -48    for scope in traverse_scope(expression):
            -49        if isinstance(scope.expression, exp.Select):
            -50            unqualified_columns.extend(scope.unqualified_columns)
            -51            if scope.external_columns and not scope.is_correlated_subquery:
            -52                column = scope.external_columns[0]
            -53                raise OptimizeError(f"Unknown table: '{column.table}' for column '{column}'")
            -54
            -55    if unqualified_columns:
            -56        raise OptimizeError(f"Ambiguous columns: {unqualified_columns}")
            -57    return expression
            +            
            46def validate_qualify_columns(expression):
            +47    """Raise an `OptimizeError` if any columns aren't qualified"""
            +48    unqualified_columns = []
            +49    for scope in traverse_scope(expression):
            +50        if isinstance(scope.expression, exp.Select):
            +51            unqualified_columns.extend(scope.unqualified_columns)
            +52            if scope.external_columns and not scope.is_correlated_subquery:
            +53                column = scope.external_columns[0]
            +54                raise OptimizeError(f"Unknown table: '{column.table}' for column '{column}'")
            +55
            +56    if unqualified_columns:
            +57        raise OptimizeError(f"Ambiguous columns: {unqualified_columns}")
            +58    return expression
             
            @@ -689,140 +717,140 @@
            -
            356class Resolver:
            -357    """
            -358    Helper for resolving columns.
            -359
            -360    This is a class so we can lazily load some things and easily share them across functions.
            -361    """
            -362
            -363    def __init__(self, scope, schema):
            -364        self.scope = scope
            -365        self.schema = schema
            -366        self._source_columns = None
            -367        self._unambiguous_columns = None
            -368        self._all_columns = None
            -369
            -370    def get_table(self, column_name: str) -> t.Optional[exp.Identifier]:
            -371        """
            -372        Get the table for a column name.
            -373
            -374        Args:
            -375            column_name: The column name to find the table for.
            -376        Returns:
            -377            The table name if it can be found/inferred.
            -378        """
            -379        if self._unambiguous_columns is None:
            -380            self._unambiguous_columns = self._get_unambiguous_columns(
            -381                self._get_all_source_columns()
            -382            )
            -383
            -384        table_name = self._unambiguous_columns.get(column_name)
            -385
            -386        if not table_name:
            -387            sources_without_schema = tuple(
            -388                source
            -389                for source, columns in self._get_all_source_columns().items()
            -390                if not columns or "*" in columns
            -391            )
            -392            if len(sources_without_schema) == 1:
            -393                table_name = sources_without_schema[0]
            -394
            -395        if table_name not in self.scope.selected_sources:
            -396            return exp.to_identifier(table_name)
            -397
            -398        node, _ = self.scope.selected_sources.get(table_name)
            -399
            -400        if isinstance(node, exp.Subqueryable):
            -401            while node and node.alias != table_name:
            -402                node = node.parent
            -403
            -404        node_alias = node.args.get("alias")
            -405        if node_alias:
            -406            return node_alias.this
            -407
            -408        return exp.to_identifier(
            -409            table_name, quoted=node.this.quoted if isinstance(node, exp.Table) else None
            -410        )
            -411
            -412    @property
            -413    def all_columns(self):
            -414        """All available columns of all sources in this scope"""
            -415        if self._all_columns is None:
            -416            self._all_columns = {
            -417                column for columns in self._get_all_source_columns().values() for column in columns
            -418            }
            -419        return self._all_columns
            -420
            -421    def get_source_columns(self, name, only_visible=False):
            -422        """Resolve the source columns for a given source `name`"""
            -423        if name not in self.scope.sources:
            -424            raise OptimizeError(f"Unknown table: {name}")
            -425
            -426        source = self.scope.sources[name]
            -427
            -428        # If referencing a table, return the columns from the schema
            -429        if isinstance(source, exp.Table):
            -430            return self.schema.column_names(source, only_visible)
            -431
            -432        if isinstance(source, Scope) and isinstance(source.expression, exp.Values):
            -433            return source.expression.alias_column_names
            +            
            383class Resolver:
            +384    """
            +385    Helper for resolving columns.
            +386
            +387    This is a class so we can lazily load some things and easily share them across functions.
            +388    """
            +389
            +390    def __init__(self, scope, schema):
            +391        self.scope = scope
            +392        self.schema = schema
            +393        self._source_columns = None
            +394        self._unambiguous_columns = None
            +395        self._all_columns = None
            +396
            +397    def get_table(self, column_name: str) -> t.Optional[exp.Identifier]:
            +398        """
            +399        Get the table for a column name.
            +400
            +401        Args:
            +402            column_name: The column name to find the table for.
            +403        Returns:
            +404            The table name if it can be found/inferred.
            +405        """
            +406        if self._unambiguous_columns is None:
            +407            self._unambiguous_columns = self._get_unambiguous_columns(
            +408                self._get_all_source_columns()
            +409            )
            +410
            +411        table_name = self._unambiguous_columns.get(column_name)
            +412
            +413        if not table_name:
            +414            sources_without_schema = tuple(
            +415                source
            +416                for source, columns in self._get_all_source_columns().items()
            +417                if not columns or "*" in columns
            +418            )
            +419            if len(sources_without_schema) == 1:
            +420                table_name = sources_without_schema[0]
            +421
            +422        if table_name not in self.scope.selected_sources:
            +423            return exp.to_identifier(table_name)
            +424
            +425        node, _ = self.scope.selected_sources.get(table_name)
            +426
            +427        if isinstance(node, exp.Subqueryable):
            +428            while node and node.alias != table_name:
            +429                node = node.parent
            +430
            +431        node_alias = node.args.get("alias")
            +432        if node_alias:
            +433            return node_alias.this
             434
            -435        # Otherwise, if referencing another scope, return that scope's named selects
            -436        return source.expression.named_selects
            -437
            -438    def _get_all_source_columns(self):
            -439        if self._source_columns is None:
            -440            self._source_columns = {
            -441                k: self.get_source_columns(k)
            -442                for k in itertools.chain(self.scope.selected_sources, self.scope.lateral_sources)
            -443            }
            -444        return self._source_columns
            -445
            -446    def _get_unambiguous_columns(self, source_columns):
            -447        """
            -448        Find all the unambiguous columns in sources.
            -449
            -450        Args:
            -451            source_columns (dict): Mapping of names to source columns
            -452        Returns:
            -453            dict: Mapping of column name to source name
            -454        """
            -455        if not source_columns:
            -456            return {}
            -457
            -458        source_columns = list(source_columns.items())
            -459
            -460        first_table, first_columns = source_columns[0]
            -461        unambiguous_columns = {col: first_table for col in self._find_unique_columns(first_columns)}
            -462        all_columns = set(unambiguous_columns)
            -463
            -464        for table, columns in source_columns[1:]:
            -465            unique = self._find_unique_columns(columns)
            -466            ambiguous = set(all_columns).intersection(unique)
            -467            all_columns.update(columns)
            -468            for column in ambiguous:
            -469                unambiguous_columns.pop(column, None)
            -470            for column in unique.difference(ambiguous):
            -471                unambiguous_columns[column] = table
            +435        return exp.to_identifier(
            +436            table_name, quoted=node.this.quoted if isinstance(node, exp.Table) else None
            +437        )
            +438
            +439    @property
            +440    def all_columns(self):
            +441        """All available columns of all sources in this scope"""
            +442        if self._all_columns is None:
            +443            self._all_columns = {
            +444                column for columns in self._get_all_source_columns().values() for column in columns
            +445            }
            +446        return self._all_columns
            +447
            +448    def get_source_columns(self, name, only_visible=False):
            +449        """Resolve the source columns for a given source `name`"""
            +450        if name not in self.scope.sources:
            +451            raise OptimizeError(f"Unknown table: {name}")
            +452
            +453        source = self.scope.sources[name]
            +454
            +455        # If referencing a table, return the columns from the schema
            +456        if isinstance(source, exp.Table):
            +457            return self.schema.column_names(source, only_visible)
            +458
            +459        if isinstance(source, Scope) and isinstance(source.expression, exp.Values):
            +460            return source.expression.alias_column_names
            +461
            +462        # Otherwise, if referencing another scope, return that scope's named selects
            +463        return source.expression.named_selects
            +464
            +465    def _get_all_source_columns(self):
            +466        if self._source_columns is None:
            +467            self._source_columns = {
            +468                k: self.get_source_columns(k)
            +469                for k in itertools.chain(self.scope.selected_sources, self.scope.lateral_sources)
            +470            }
            +471        return self._source_columns
             472
            -473        return unambiguous_columns
            -474
            -475    @staticmethod
            -476    def _find_unique_columns(columns):
            -477        """
            -478        Find the unique columns in a list of columns.
            -479
            -480        Example:
            -481            >>> sorted(Resolver._find_unique_columns(["a", "b", "b", "c"]))
            -482            ['a', 'c']
            -483
            -484        This is necessary because duplicate column names are ambiguous.
            -485        """
            -486        counts = {}
            -487        for column in columns:
            -488            counts[column] = counts.get(column, 0) + 1
            -489        return {column for column, count in counts.items() if count == 1}
            +473    def _get_unambiguous_columns(self, source_columns):
            +474        """
            +475        Find all the unambiguous columns in sources.
            +476
            +477        Args:
            +478            source_columns (dict): Mapping of names to source columns
            +479        Returns:
            +480            dict: Mapping of column name to source name
            +481        """
            +482        if not source_columns:
            +483            return {}
            +484
            +485        source_columns = list(source_columns.items())
            +486
            +487        first_table, first_columns = source_columns[0]
            +488        unambiguous_columns = {col: first_table for col in self._find_unique_columns(first_columns)}
            +489        all_columns = set(unambiguous_columns)
            +490
            +491        for table, columns in source_columns[1:]:
            +492            unique = self._find_unique_columns(columns)
            +493            ambiguous = set(all_columns).intersection(unique)
            +494            all_columns.update(columns)
            +495            for column in ambiguous:
            +496                unambiguous_columns.pop(column, None)
            +497            for column in unique.difference(ambiguous):
            +498                unambiguous_columns[column] = table
            +499
            +500        return unambiguous_columns
            +501
            +502    @staticmethod
            +503    def _find_unique_columns(columns):
            +504        """
            +505        Find the unique columns in a list of columns.
            +506
            +507        Example:
            +508            >>> sorted(Resolver._find_unique_columns(["a", "b", "b", "c"]))
            +509            ['a', 'c']
            +510
            +511        This is necessary because duplicate column names are ambiguous.
            +512        """
            +513        counts = {}
            +514        for column in columns:
            +515            counts[column] = counts.get(column, 0) + 1
            +516        return {column for column, count in counts.items() if count == 1}
             
            @@ -842,12 +870,12 @@
            -
            363    def __init__(self, scope, schema):
            -364        self.scope = scope
            -365        self.schema = schema
            -366        self._source_columns = None
            -367        self._unambiguous_columns = None
            -368        self._all_columns = None
            +            
            390    def __init__(self, scope, schema):
            +391        self.scope = scope
            +392        self.schema = schema
            +393        self._source_columns = None
            +394        self._unambiguous_columns = None
            +395        self._all_columns = None
             
            @@ -865,47 +893,47 @@
            -
            370    def get_table(self, column_name: str) -> t.Optional[exp.Identifier]:
            -371        """
            -372        Get the table for a column name.
            -373
            -374        Args:
            -375            column_name: The column name to find the table for.
            -376        Returns:
            -377            The table name if it can be found/inferred.
            -378        """
            -379        if self._unambiguous_columns is None:
            -380            self._unambiguous_columns = self._get_unambiguous_columns(
            -381                self._get_all_source_columns()
            -382            )
            -383
            -384        table_name = self._unambiguous_columns.get(column_name)
            -385
            -386        if not table_name:
            -387            sources_without_schema = tuple(
            -388                source
            -389                for source, columns in self._get_all_source_columns().items()
            -390                if not columns or "*" in columns
            -391            )
            -392            if len(sources_without_schema) == 1:
            -393                table_name = sources_without_schema[0]
            -394
            -395        if table_name not in self.scope.selected_sources:
            -396            return exp.to_identifier(table_name)
            -397
            -398        node, _ = self.scope.selected_sources.get(table_name)
            -399
            -400        if isinstance(node, exp.Subqueryable):
            -401            while node and node.alias != table_name:
            -402                node = node.parent
            -403
            -404        node_alias = node.args.get("alias")
            -405        if node_alias:
            -406            return node_alias.this
            -407
            -408        return exp.to_identifier(
            -409            table_name, quoted=node.this.quoted if isinstance(node, exp.Table) else None
            -410        )
            +            
            397    def get_table(self, column_name: str) -> t.Optional[exp.Identifier]:
            +398        """
            +399        Get the table for a column name.
            +400
            +401        Args:
            +402            column_name: The column name to find the table for.
            +403        Returns:
            +404            The table name if it can be found/inferred.
            +405        """
            +406        if self._unambiguous_columns is None:
            +407            self._unambiguous_columns = self._get_unambiguous_columns(
            +408                self._get_all_source_columns()
            +409            )
            +410
            +411        table_name = self._unambiguous_columns.get(column_name)
            +412
            +413        if not table_name:
            +414            sources_without_schema = tuple(
            +415                source
            +416                for source, columns in self._get_all_source_columns().items()
            +417                if not columns or "*" in columns
            +418            )
            +419            if len(sources_without_schema) == 1:
            +420                table_name = sources_without_schema[0]
            +421
            +422        if table_name not in self.scope.selected_sources:
            +423            return exp.to_identifier(table_name)
            +424
            +425        node, _ = self.scope.selected_sources.get(table_name)
            +426
            +427        if isinstance(node, exp.Subqueryable):
            +428            while node and node.alias != table_name:
            +429                node = node.parent
            +430
            +431        node_alias = node.args.get("alias")
            +432        if node_alias:
            +433            return node_alias.this
            +434
            +435        return exp.to_identifier(
            +436            table_name, quoted=node.this.quoted if isinstance(node, exp.Table) else None
            +437        )
             
            @@ -950,22 +978,22 @@
            -
            421    def get_source_columns(self, name, only_visible=False):
            -422        """Resolve the source columns for a given source `name`"""
            -423        if name not in self.scope.sources:
            -424            raise OptimizeError(f"Unknown table: {name}")
            -425
            -426        source = self.scope.sources[name]
            -427
            -428        # If referencing a table, return the columns from the schema
            -429        if isinstance(source, exp.Table):
            -430            return self.schema.column_names(source, only_visible)
            -431
            -432        if isinstance(source, Scope) and isinstance(source.expression, exp.Values):
            -433            return source.expression.alias_column_names
            -434
            -435        # Otherwise, if referencing another scope, return that scope's named selects
            -436        return source.expression.named_selects
            +            
            448    def get_source_columns(self, name, only_visible=False):
            +449        """Resolve the source columns for a given source `name`"""
            +450        if name not in self.scope.sources:
            +451            raise OptimizeError(f"Unknown table: {name}")
            +452
            +453        source = self.scope.sources[name]
            +454
            +455        # If referencing a table, return the columns from the schema
            +456        if isinstance(source, exp.Table):
            +457            return self.schema.column_names(source, only_visible)
            +458
            +459        if isinstance(source, Scope) and isinstance(source.expression, exp.Values):
            +460            return source.expression.alias_column_names
            +461
            +462        # Otherwise, if referencing another scope, return that scope's named selects
            +463        return source.expression.named_selects
             
            diff --git a/docs/sqlglot/optimizer/qualify_tables.html b/docs/sqlglot/optimizer/qualify_tables.html index f0bbf01..085a10d 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 @@ -28,8 +28,8 @@ -

            API Documentation

            -
              +

              API Documentation

              +
              • qualify_tables
              • diff --git a/docs/sqlglot/optimizer/scope.html b/docs/sqlglot/optimizer/scope.html index a1bc729..05fcece 100644 --- a/docs/sqlglot/optimizer/scope.html +++ b/docs/sqlglot/optimizer/scope.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.scope API documentation @@ -28,8 +28,8 @@ -

                API Documentation

                -
                  +

                  API Documentation

                  +
                  • ScopeType
                      @@ -350,7 +350,7 @@ 160 Yields: 161 exp.Expression: nodes 162 """ -163 for expression, _, _ in self.walk(bfs=bfs): +163 for expression, *_ in self.walk(bfs=bfs): 164 if isinstance(expression, expression_types): 165 yield expression 166 @@ -1133,7 +1133,7 @@ 161 Yields: 162 exp.Expression: nodes 163 """ -164 for expression, _, _ in self.walk(bfs=bfs): +164 for expression, *_ in self.walk(bfs=bfs): 165 if isinstance(expression, expression_types): 166 yield expression 167 @@ -1660,7 +1660,7 @@ a list of the left and right child scopes. 161 Yields: 162 exp.Expression: nodes 163 """ -164 for expression, _, _ in self.walk(bfs=bfs): +164 for expression, *_ in self.walk(bfs=bfs): 165 if isinstance(expression, expression_types): 166 yield expression
            diff --git a/docs/sqlglot/optimizer/simplify.html b/docs/sqlglot/optimizer/simplify.html index b6e0a38..a282a52 100644 --- a/docs/sqlglot/optimizer/simplify.html +++ b/docs/sqlglot/optimizer/simplify.html @@ -3,7 +3,7 @@ - + sqlglot.optimizer.simplify API documentation @@ -28,8 +28,8 @@ -

            API Documentation

            -
              +

              API Documentation

              +
              • simplify
              • @@ -69,6 +69,12 @@
              • is_complement
              • +
              • + is_false +
              • +
              • + is_null +
              • eval_boolean
              • @@ -114,488 +120,502 @@ 5from decimal import Decimal 6 7from sqlglot import exp - 8from sqlglot.expressions import FALSE, NULL, TRUE - 9from sqlglot.generator import Generator - 10from sqlglot.helper import first, while_changing - 11 - 12GENERATOR = Generator(normalize=True, identify=True) + 8from sqlglot.generator import Generator + 9from sqlglot.helper import first, while_changing + 10 + 11GENERATOR = Generator(normalize=True, identify="safe") + 12 13 - 14 - 15def simplify(expression): - 16 """ - 17 Rewrite sqlglot AST to simplify expressions. - 18 - 19 Example: - 20 >>> import sqlglot - 21 >>> expression = sqlglot.parse_one("TRUE AND TRUE") - 22 >>> simplify(expression).sql() - 23 'TRUE' - 24 - 25 Args: - 26 expression (sqlglot.Expression): expression to simplify - 27 Returns: - 28 sqlglot.Expression: simplified expression - 29 """ - 30 - 31 def _simplify(expression, root=True): - 32 node = expression - 33 node = rewrite_between(node) - 34 node = uniq_sort(node) - 35 node = absorb_and_eliminate(node) - 36 exp.replace_children(node, lambda e: _simplify(e, False)) - 37 node = simplify_not(node) - 38 node = flatten(node) - 39 node = simplify_connectors(node) - 40 node = remove_compliments(node) - 41 node.parent = expression.parent - 42 node = simplify_literals(node) - 43 node = simplify_parens(node) - 44 if root: - 45 expression.replace(node) - 46 return node - 47 - 48 expression = while_changing(expression, _simplify) - 49 remove_where_true(expression) - 50 return expression - 51 + 14def simplify(expression): + 15 """ + 16 Rewrite sqlglot AST to simplify expressions. + 17 + 18 Example: + 19 >>> import sqlglot + 20 >>> expression = sqlglot.parse_one("TRUE AND TRUE") + 21 >>> simplify(expression).sql() + 22 'TRUE' + 23 + 24 Args: + 25 expression (sqlglot.Expression): expression to simplify + 26 Returns: + 27 sqlglot.Expression: simplified expression + 28 """ + 29 + 30 cache = {} + 31 + 32 def _simplify(expression, root=True): + 33 node = expression + 34 node = rewrite_between(node) + 35 node = uniq_sort(node, cache, root) + 36 node = absorb_and_eliminate(node, root) + 37 exp.replace_children(node, lambda e: _simplify(e, False)) + 38 node = simplify_not(node) + 39 node = flatten(node) + 40 node = simplify_connectors(node, root) + 41 node = remove_compliments(node, root) + 42 node.parent = expression.parent + 43 node = simplify_literals(node, root) + 44 node = simplify_parens(node) + 45 if root: + 46 expression.replace(node) + 47 return node + 48 + 49 expression = while_changing(expression, _simplify) + 50 remove_where_true(expression) + 51 return expression 52 - 53def rewrite_between(expression: exp.Expression) -> exp.Expression: - 54 """Rewrite x between y and z to x >= y AND x <= z. - 55 - 56 This is done because comparison simplification is only done on lt/lte/gt/gte. - 57 """ - 58 if isinstance(expression, exp.Between): - 59 return exp.and_( - 60 exp.GTE(this=expression.this.copy(), expression=expression.args["low"]), - 61 exp.LTE(this=expression.this.copy(), expression=expression.args["high"]), - 62 ) - 63 return expression - 64 + 53 + 54def rewrite_between(expression: exp.Expression) -> exp.Expression: + 55 """Rewrite x between y and z to x >= y AND x <= z. + 56 + 57 This is done because comparison simplification is only done on lt/lte/gt/gte. + 58 """ + 59 if isinstance(expression, exp.Between): + 60 return exp.and_( + 61 exp.GTE(this=expression.this.copy(), expression=expression.args["low"]), + 62 exp.LTE(this=expression.this.copy(), expression=expression.args["high"]), + 63 ) + 64 return expression 65 - 66def simplify_not(expression): - 67 """ - 68 Demorgan's Law - 69 NOT (x OR y) -> NOT x AND NOT y - 70 NOT (x AND y) -> NOT x OR NOT y - 71 """ - 72 if isinstance(expression, exp.Not): - 73 if isinstance(expression.this, exp.Null): - 74 return exp.null() - 75 if isinstance(expression.this, exp.Paren): - 76 condition = expression.this.unnest() - 77 if isinstance(condition, exp.And): - 78 return exp.or_(exp.not_(condition.left), exp.not_(condition.right)) - 79 if isinstance(condition, exp.Or): - 80 return exp.and_(exp.not_(condition.left), exp.not_(condition.right)) - 81 if isinstance(condition, exp.Null): - 82 return exp.null() - 83 if always_true(expression.this): - 84 return exp.false() - 85 if expression.this == FALSE: - 86 return exp.true() - 87 if isinstance(expression.this, exp.Not): - 88 # double negation - 89 # NOT NOT x -> x - 90 return expression.this.this - 91 return expression - 92 + 66 + 67def simplify_not(expression): + 68 """ + 69 Demorgan's Law + 70 NOT (x OR y) -> NOT x AND NOT y + 71 NOT (x AND y) -> NOT x OR NOT y + 72 """ + 73 if isinstance(expression, exp.Not): + 74 if is_null(expression.this): + 75 return exp.null() + 76 if isinstance(expression.this, exp.Paren): + 77 condition = expression.this.unnest() + 78 if isinstance(condition, exp.And): + 79 return exp.or_(exp.not_(condition.left), exp.not_(condition.right)) + 80 if isinstance(condition, exp.Or): + 81 return exp.and_(exp.not_(condition.left), exp.not_(condition.right)) + 82 if is_null(condition): + 83 return exp.null() + 84 if always_true(expression.this): + 85 return exp.false() + 86 if is_false(expression.this): + 87 return exp.true() + 88 if isinstance(expression.this, exp.Not): + 89 # double negation + 90 # NOT NOT x -> x + 91 return expression.this.this + 92 return expression 93 - 94def flatten(expression): - 95 """ - 96 A AND (B AND C) -> A AND B AND C - 97 A OR (B OR C) -> A OR B OR C - 98 """ - 99 if isinstance(expression, exp.Connector): -100 for node in expression.args.values(): -101 child = node.unnest() -102 if isinstance(child, expression.__class__): -103 node.replace(child) -104 return expression -105 + 94 + 95def flatten(expression): + 96 """ + 97 A AND (B AND C) -> A AND B AND C + 98 A OR (B OR C) -> A OR B OR C + 99 """ +100 if isinstance(expression, exp.Connector): +101 for node in expression.args.values(): +102 child = node.unnest() +103 if isinstance(child, expression.__class__): +104 node.replace(child) +105 return expression 106 -107def simplify_connectors(expression): -108 def _simplify_connectors(expression, left, right): -109 if isinstance(expression, exp.Connector): -110 if left == right: -111 return left -112 if isinstance(expression, exp.And): -113 if FALSE in (left, right): -114 return exp.false() -115 if NULL in (left, right): -116 return exp.null() -117 if always_true(left) and always_true(right): -118 return exp.true() -119 if always_true(left): -120 return right -121 if always_true(right): -122 return left -123 return _simplify_comparison(expression, left, right) -124 elif isinstance(expression, exp.Or): -125 if always_true(left) or always_true(right): -126 return exp.true() -127 if left == FALSE and right == FALSE: -128 return exp.false() -129 if ( -130 (left == NULL and right == NULL) -131 or (left == NULL and right == FALSE) -132 or (left == FALSE and right == NULL) -133 ): -134 return exp.null() -135 if left == FALSE: -136 return right -137 if right == FALSE: -138 return left -139 return _simplify_comparison(expression, left, right, or_=True) -140 return None -141 -142 return _flat_simplify(expression, _simplify_connectors) -143 +107 +108def simplify_connectors(expression, root=True): +109 def _simplify_connectors(expression, left, right): +110 if left == right: +111 return left +112 if isinstance(expression, exp.And): +113 if is_false(left) or is_false(right): +114 return exp.false() +115 if is_null(left) or is_null(right): +116 return exp.null() +117 if always_true(left) and always_true(right): +118 return exp.true() +119 if always_true(left): +120 return right +121 if always_true(right): +122 return left +123 return _simplify_comparison(expression, left, right) +124 elif isinstance(expression, exp.Or): +125 if always_true(left) or always_true(right): +126 return exp.true() +127 if is_false(left) and is_false(right): +128 return exp.false() +129 if ( +130 (is_null(left) and is_null(right)) +131 or (is_null(left) and is_false(right)) +132 or (is_false(left) and is_null(right)) +133 ): +134 return exp.null() +135 if is_false(left): +136 return right +137 if is_false(right): +138 return left +139 return _simplify_comparison(expression, left, right, or_=True) +140 +141 if isinstance(expression, exp.Connector): +142 return _flat_simplify(expression, _simplify_connectors, root) +143 return expression 144 -145LT_LTE = (exp.LT, exp.LTE) -146GT_GTE = (exp.GT, exp.GTE) -147 -148COMPARISONS = ( -149 *LT_LTE, -150 *GT_GTE, -151 exp.EQ, -152 exp.NEQ, -153) -154 -155INVERSE_COMPARISONS = { -156 exp.LT: exp.GT, -157 exp.GT: exp.LT, -158 exp.LTE: exp.GTE, -159 exp.GTE: exp.LTE, -160} -161 +145 +146LT_LTE = (exp.LT, exp.LTE) +147GT_GTE = (exp.GT, exp.GTE) +148 +149COMPARISONS = ( +150 *LT_LTE, +151 *GT_GTE, +152 exp.EQ, +153 exp.NEQ, +154) +155 +156INVERSE_COMPARISONS = { +157 exp.LT: exp.GT, +158 exp.GT: exp.LT, +159 exp.LTE: exp.GTE, +160 exp.GTE: exp.LTE, +161} 162 -163def _simplify_comparison(expression, left, right, or_=False): -164 if isinstance(left, COMPARISONS) and isinstance(right, COMPARISONS): -165 ll, lr = left.args.values() -166 rl, rr = right.args.values() -167 -168 largs = {ll, lr} -169 rargs = {rl, rr} -170 -171 matching = largs & rargs -172 columns = {m for m in matching if isinstance(m, exp.Column)} -173 -174 if matching and columns: -175 try: -176 l = first(largs - columns) -177 r = first(rargs - columns) -178 except StopIteration: -179 return expression -180 -181 # make sure the comparison is always of the form x > 1 instead of 1 < x -182 if left.__class__ in INVERSE_COMPARISONS and l == ll: -183 left = INVERSE_COMPARISONS[left.__class__](this=lr, expression=ll) -184 if right.__class__ in INVERSE_COMPARISONS and r == rl: -185 right = INVERSE_COMPARISONS[right.__class__](this=rr, expression=rl) -186 -187 if l.is_number and r.is_number: -188 l = float(l.name) -189 r = float(r.name) -190 elif l.is_string and r.is_string: -191 l = l.name -192 r = r.name -193 else: -194 return None -195 -196 for (a, av), (b, bv) in itertools.permutations(((left, l), (right, r))): -197 if isinstance(a, LT_LTE) and isinstance(b, LT_LTE): -198 return left if (av > bv if or_ else av <= bv) else right -199 if isinstance(a, GT_GTE) and isinstance(b, GT_GTE): -200 return left if (av < bv if or_ else av >= bv) else right -201 -202 # we can't ever shortcut to true because the column could be null -203 if isinstance(a, exp.LT) and isinstance(b, GT_GTE): -204 if not or_ and av <= bv: -205 return exp.false() -206 elif isinstance(a, exp.GT) and isinstance(b, LT_LTE): -207 if not or_ and av >= bv: -208 return exp.false() -209 elif isinstance(a, exp.EQ): -210 if isinstance(b, exp.LT): -211 return exp.false() if av >= bv else a -212 if isinstance(b, exp.LTE): -213 return exp.false() if av > bv else a -214 if isinstance(b, exp.GT): -215 return exp.false() if av <= bv else a -216 if isinstance(b, exp.GTE): -217 return exp.false() if av < bv else a -218 if isinstance(b, exp.NEQ): -219 return exp.false() if av == bv else a -220 return None -221 +163 +164def _simplify_comparison(expression, left, right, or_=False): +165 if isinstance(left, COMPARISONS) and isinstance(right, COMPARISONS): +166 ll, lr = left.args.values() +167 rl, rr = right.args.values() +168 +169 largs = {ll, lr} +170 rargs = {rl, rr} +171 +172 matching = largs & rargs +173 columns = {m for m in matching if isinstance(m, exp.Column)} +174 +175 if matching and columns: +176 try: +177 l = first(largs - columns) +178 r = first(rargs - columns) +179 except StopIteration: +180 return expression +181 +182 # make sure the comparison is always of the form x > 1 instead of 1 < x +183 if left.__class__ in INVERSE_COMPARISONS and l == ll: +184 left = INVERSE_COMPARISONS[left.__class__](this=lr, expression=ll) +185 if right.__class__ in INVERSE_COMPARISONS and r == rl: +186 right = INVERSE_COMPARISONS[right.__class__](this=rr, expression=rl) +187 +188 if l.is_number and r.is_number: +189 l = float(l.name) +190 r = float(r.name) +191 elif l.is_string and r.is_string: +192 l = l.name +193 r = r.name +194 else: +195 return None +196 +197 for (a, av), (b, bv) in itertools.permutations(((left, l), (right, r))): +198 if isinstance(a, LT_LTE) and isinstance(b, LT_LTE): +199 return left if (av > bv if or_ else av <= bv) else right +200 if isinstance(a, GT_GTE) and isinstance(b, GT_GTE): +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 -223def remove_compliments(expression): -224 """ -225 Removing compliments. -226 -227 A AND NOT A -> FALSE -228 A OR NOT A -> TRUE -229 """ -230 if isinstance(expression, exp.Connector): -231 compliment = exp.false() if isinstance(expression, exp.And) else exp.true() -232 -233 for a, b in itertools.permutations(expression.flatten(), 2): -234 if is_complement(a, b): -235 return compliment -236 return expression -237 +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 -239def uniq_sort(expression): -240 """ -241 Uniq and sort a connector. -242 -243 C AND A AND B AND B -> A AND B AND C -244 """ -245 if isinstance(expression, exp.Connector): -246 result_func = exp.and_ if isinstance(expression, exp.And) else exp.or_ -247 flattened = tuple(expression.flatten()) -248 deduped = {GENERATOR.generate(e): e for e in flattened} -249 arr = tuple(deduped.items()) -250 -251 # check if the operands are already sorted, if not sort them -252 # A AND C AND B -> A AND B AND C -253 for i, (sql, e) in enumerate(arr[1:]): -254 if sql < arr[i][0]: -255 expression = result_func(*(deduped[sql] for sql in sorted(deduped))) -256 break -257 else: -258 # we didn't have to sort but maybe we need to dedup -259 if len(deduped) < len(flattened): -260 expression = result_func(*deduped.values()) -261 -262 return expression -263 +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 -265def absorb_and_eliminate(expression): -266 """ -267 absorption: -268 A AND (A OR B) -> A -269 A OR (A AND B) -> A -270 A AND (NOT A OR B) -> A AND B -271 A OR (NOT A AND B) -> A OR B -272 elimination: -273 (A AND B) OR (A AND NOT B) -> A -274 (A OR B) AND (A OR NOT B) -> A -275 """ -276 if isinstance(expression, exp.Connector): -277 kind = exp.Or if isinstance(expression, exp.And) else exp.And -278 -279 for a, b in itertools.permutations(expression.flatten(), 2): -280 if isinstance(a, kind): -281 aa, ab = a.unnest_operands() -282 -283 # absorb -284 if is_complement(b, aa): -285 aa.replace(exp.true() if kind == exp.And else exp.false()) -286 elif is_complement(b, ab): -287 ab.replace(exp.true() if kind == exp.And else exp.false()) -288 elif (set(b.flatten()) if isinstance(b, kind) else {b}) < set(a.flatten()): -289 a.replace(exp.false() if kind == exp.And else exp.true()) -290 elif isinstance(b, kind): -291 # eliminate -292 rhs = b.unnest_operands() -293 ba, bb = rhs -294 -295 if aa in rhs and (is_complement(ab, ba) or is_complement(ab, bb)): -296 a.replace(aa) -297 b.replace(aa) -298 elif ab in rhs and (is_complement(aa, ba) or is_complement(aa, bb)): -299 a.replace(ab) -300 b.replace(ab) -301 -302 return expression -303 +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 -305def simplify_literals(expression): -306 if isinstance(expression, exp.Binary): -307 return _flat_simplify(expression, _simplify_binary) -308 elif isinstance(expression, exp.Neg): -309 this = expression.this -310 if this.is_number: -311 value = this.name -312 if value[0] == "-": -313 return exp.Literal.number(value[1:]) -314 return exp.Literal.number(f"-{value}") -315 -316 return expression -317 +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 -319def _simplify_binary(expression, a, b): -320 if isinstance(expression, exp.Is): -321 if isinstance(b, exp.Not): -322 c = b.this -323 not_ = True -324 else: -325 c = b -326 not_ = False -327 -328 if c == NULL: -329 if isinstance(a, exp.Literal): -330 return exp.true() if not_ else exp.false() -331 if a == NULL: -332 return exp.false() if not_ else exp.true() -333 elif isinstance(expression, (exp.NullSafeEQ, exp.NullSafeNEQ)): -334 return None -335 elif NULL in (a, b): -336 return exp.null() -337 -338 if a.is_number and b.is_number: -339 a = int(a.name) if a.is_int else Decimal(a.name) -340 b = int(b.name) if b.is_int else Decimal(b.name) -341 -342 if isinstance(expression, exp.Add): -343 return exp.Literal.number(a + b) -344 if isinstance(expression, exp.Sub): -345 return exp.Literal.number(a - b) -346 if isinstance(expression, exp.Mul): -347 return exp.Literal.number(a * b) -348 if isinstance(expression, exp.Div): -349 if isinstance(a, int) and isinstance(b, int): -350 return exp.Literal.number(a // b) -351 return exp.Literal.number(a / b) -352 -353 boolean = eval_boolean(expression, a, b) -354 -355 if boolean: -356 return boolean -357 elif a.is_string and b.is_string: -358 boolean = eval_boolean(expression, a, b) -359 -360 if boolean: -361 return boolean -362 elif isinstance(a, exp.Cast) and isinstance(b, exp.Interval): -363 a, b = extract_date(a), extract_interval(b) -364 if a and b: -365 if isinstance(expression, exp.Add): -366 return date_literal(a + b) -367 if isinstance(expression, exp.Sub): -368 return date_literal(a - b) -369 elif isinstance(a, exp.Interval) and isinstance(b, exp.Cast): -370 a, b = extract_interval(a), extract_date(b) -371 # you cannot subtract a date from an interval -372 if a and b and isinstance(expression, exp.Add): -373 return date_literal(a + b) -374 -375 return None -376 +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) +355 +356 if boolean: +357 return boolean +358 elif a.is_string and b.is_string: +359 boolean = eval_boolean(expression, a, b) +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 377 -378def simplify_parens(expression): -379 if ( -380 isinstance(expression, exp.Paren) -381 and not isinstance(expression.this, exp.Select) -382 and ( -383 not isinstance(expression.parent, (exp.Condition, exp.Binary)) -384 or isinstance(expression.this, (exp.Is, exp.Like)) -385 or not isinstance(expression.this, exp.Binary) -386 ) -387 ): -388 return expression.this -389 return expression -390 +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 -392def remove_where_true(expression): -393 for where in expression.find_all(exp.Where): -394 if always_true(where.this): -395 where.parent.set("where", None) -396 for join in expression.find_all(exp.Join): -397 if always_true(join.args.get("on")): -398 join.set("kind", "CROSS") -399 join.set("on", None) -400 +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 -402def always_true(expression): -403 return expression == TRUE or isinstance(expression, exp.Literal) -404 -405 -406def is_complement(a, b): -407 return isinstance(b, exp.Not) and b.this == a +402 +403def always_true(expression): +404 return (isinstance(expression, exp.Boolean) and expression.this) or isinstance( +405 expression, exp.Literal +406 ) +407 408 -409 -410def eval_boolean(expression, a, b): -411 if isinstance(expression, (exp.EQ, exp.Is)): -412 return boolean_literal(a == b) -413 if isinstance(expression, exp.NEQ): -414 return boolean_literal(a != b) -415 if isinstance(expression, exp.GT): -416 return boolean_literal(a > b) -417 if isinstance(expression, exp.GTE): -418 return boolean_literal(a >= b) -419 if isinstance(expression, exp.LT): -420 return boolean_literal(a < b) -421 if isinstance(expression, exp.LTE): -422 return boolean_literal(a <= b) -423 return None -424 -425 -426def extract_date(cast): -427 # The "fromisoformat" conversion could fail if the cast is used on an identifier, -428 # so in that case we can't extract the date. -429 try: -430 if cast.args["to"].this == exp.DataType.Type.DATE: -431 return datetime.date.fromisoformat(cast.name) -432 if cast.args["to"].this == exp.DataType.Type.DATETIME: -433 return datetime.datetime.fromisoformat(cast.name) -434 except ValueError: -435 return None +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 -437 -438def extract_interval(interval): -439 try: -440 from dateutil.relativedelta import relativedelta # type: ignore -441 except ModuleNotFoundError: -442 return None -443 -444 n = int(interval.name) -445 unit = interval.text("unit").lower() -446 -447 if unit == "year": -448 return relativedelta(years=n) -449 if unit == "month": -450 return relativedelta(months=n) -451 if unit == "week": -452 return relativedelta(weeks=n) -453 if unit == "day": -454 return relativedelta(days=n) -455 return None -456 +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 -458def date_literal(date): -459 return exp.cast( -460 exp.Literal.string(date), -461 "DATETIME" if isinstance(date, datetime.datetime) else "DATE", -462 ) -463 -464 -465def boolean_literal(condition): -466 return exp.true() if condition else exp.false() +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 _flat_simplify(expression, simplifier): -470 operands = [] -471 queue = deque(expression.flatten(unnest=False)) -472 size = len(queue) -473 -474 while queue: -475 a = queue.popleft() -476 -477 for b in queue: -478 result = simplifier(expression, a, b) +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 -480 if result: -481 queue.remove(b) -482 queue.append(result) -483 break -484 else: -485 operands.append(a) -486 -487 if len(operands) < size: -488 return functools.reduce(lambda a, b: expression.__class__(this=a, expression=b), operands) -489 return expression +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
            @@ -611,42 +631,44 @@
            -
            16def simplify(expression):
            -17    """
            -18    Rewrite sqlglot AST to simplify expressions.
            -19
            -20    Example:
            -21        >>> import sqlglot
            -22        >>> expression = sqlglot.parse_one("TRUE AND TRUE")
            -23        >>> simplify(expression).sql()
            -24        'TRUE'
            -25
            -26    Args:
            -27        expression (sqlglot.Expression): expression to simplify
            -28    Returns:
            -29        sqlglot.Expression: simplified expression
            -30    """
            -31
            -32    def _simplify(expression, root=True):
            -33        node = expression
            -34        node = rewrite_between(node)
            -35        node = uniq_sort(node)
            -36        node = absorb_and_eliminate(node)
            -37        exp.replace_children(node, lambda e: _simplify(e, False))
            -38        node = simplify_not(node)
            -39        node = flatten(node)
            -40        node = simplify_connectors(node)
            -41        node = remove_compliments(node)
            -42        node.parent = expression.parent
            -43        node = simplify_literals(node)
            -44        node = simplify_parens(node)
            -45        if root:
            -46            expression.replace(node)
            -47        return node
            -48
            -49    expression = while_changing(expression, _simplify)
            -50    remove_where_true(expression)
            -51    return expression
            +            
            15def simplify(expression):
            +16    """
            +17    Rewrite sqlglot AST to simplify expressions.
            +18
            +19    Example:
            +20        >>> import sqlglot
            +21        >>> expression = sqlglot.parse_one("TRUE AND TRUE")
            +22        >>> simplify(expression).sql()
            +23        'TRUE'
            +24
            +25    Args:
            +26        expression (sqlglot.Expression): expression to simplify
            +27    Returns:
            +28        sqlglot.Expression: simplified expression
            +29    """
            +30
            +31    cache = {}
            +32
            +33    def _simplify(expression, root=True):
            +34        node = expression
            +35        node = rewrite_between(node)
            +36        node = uniq_sort(node, cache, root)
            +37        node = absorb_and_eliminate(node, root)
            +38        exp.replace_children(node, lambda e: _simplify(e, False))
            +39        node = simplify_not(node)
            +40        node = flatten(node)
            +41        node = simplify_connectors(node, root)
            +42        node = remove_compliments(node, root)
            +43        node.parent = expression.parent
            +44        node = simplify_literals(node, root)
            +45        node = simplify_parens(node)
            +46        if root:
            +47            expression.replace(node)
            +48        return node
            +49
            +50    expression = while_changing(expression, _simplify)
            +51    remove_where_true(expression)
            +52    return expression
             
            @@ -690,17 +712,17 @@
            -
            54def rewrite_between(expression: exp.Expression) -> exp.Expression:
            -55    """Rewrite x between y and z to x >= y AND x <= z.
            -56
            -57    This is done because comparison simplification is only done on lt/lte/gt/gte.
            -58    """
            -59    if isinstance(expression, exp.Between):
            -60        return exp.and_(
            -61            exp.GTE(this=expression.this.copy(), expression=expression.args["low"]),
            -62            exp.LTE(this=expression.this.copy(), expression=expression.args["high"]),
            -63        )
            -64    return expression
            +            
            55def rewrite_between(expression: exp.Expression) -> exp.Expression:
            +56    """Rewrite x between y and z to x >= y AND x <= z.
            +57
            +58    This is done because comparison simplification is only done on lt/lte/gt/gte.
            +59    """
            +60    if isinstance(expression, exp.Between):
            +61        return exp.and_(
            +62            exp.GTE(this=expression.this.copy(), expression=expression.args["low"]),
            +63            exp.LTE(this=expression.this.copy(), expression=expression.args["high"]),
            +64        )
            +65    return expression
             
            @@ -722,32 +744,32 @@
            -
            67def simplify_not(expression):
            -68    """
            -69    Demorgan's Law
            -70    NOT (x OR y) -> NOT x AND NOT y
            -71    NOT (x AND y) -> NOT x OR NOT y
            -72    """
            -73    if isinstance(expression, exp.Not):
            -74        if isinstance(expression.this, exp.Null):
            -75            return exp.null()
            -76        if isinstance(expression.this, exp.Paren):
            -77            condition = expression.this.unnest()
            -78            if isinstance(condition, exp.And):
            -79                return exp.or_(exp.not_(condition.left), exp.not_(condition.right))
            -80            if isinstance(condition, exp.Or):
            -81                return exp.and_(exp.not_(condition.left), exp.not_(condition.right))
            -82            if isinstance(condition, exp.Null):
            -83                return exp.null()
            -84        if always_true(expression.this):
            -85            return exp.false()
            -86        if expression.this == FALSE:
            -87            return exp.true()
            -88        if isinstance(expression.this, exp.Not):
            -89            # double negation
            -90            # NOT NOT x -> x
            -91            return expression.this.this
            -92    return expression
            +            
            68def simplify_not(expression):
            +69    """
            +70    Demorgan's Law
            +71    NOT (x OR y) -> NOT x AND NOT y
            +72    NOT (x AND y) -> NOT x OR NOT y
            +73    """
            +74    if isinstance(expression, exp.Not):
            +75        if is_null(expression.this):
            +76            return exp.null()
            +77        if isinstance(expression.this, exp.Paren):
            +78            condition = expression.this.unnest()
            +79            if isinstance(condition, exp.And):
            +80                return exp.or_(exp.not_(condition.left), exp.not_(condition.right))
            +81            if isinstance(condition, exp.Or):
            +82                return exp.and_(exp.not_(condition.left), exp.not_(condition.right))
            +83            if is_null(condition):
            +84                return exp.null()
            +85        if always_true(expression.this):
            +86            return exp.false()
            +87        if is_false(expression.this):
            +88            return exp.true()
            +89        if isinstance(expression.this, exp.Not):
            +90            # double negation
            +91            # NOT NOT x -> x
            +92            return expression.this.this
            +93    return expression
             
            @@ -769,17 +791,17 @@ NOT (x AND y) -> NOT x OR NOT y

            -
             95def flatten(expression):
            - 96    """
            - 97    A AND (B AND C) -> A AND B AND C
            - 98    A OR (B OR C) -> A OR B OR C
            - 99    """
            -100    if isinstance(expression, exp.Connector):
            -101        for node in expression.args.values():
            -102            child = node.unnest()
            -103            if isinstance(child, expression.__class__):
            -104                node.replace(child)
            -105    return expression
            +            
             96def flatten(expression):
            + 97    """
            + 98    A AND (B AND C) -> A AND B AND C
            + 99    A OR (B OR C) -> A OR B OR C
            +100    """
            +101    if isinstance(expression, exp.Connector):
            +102        for node in expression.args.values():
            +103            child = node.unnest()
            +104            if isinstance(child, expression.__class__):
            +105                node.replace(child)
            +106    return expression
             
            @@ -794,48 +816,48 @@ A OR (B OR C) -> A OR B OR C

            def - simplify_connectors(expression): + simplify_connectors(expression, root=True):
            -
            108def simplify_connectors(expression):
            -109    def _simplify_connectors(expression, left, right):
            -110        if isinstance(expression, exp.Connector):
            -111            if left == right:
            -112                return left
            -113            if isinstance(expression, exp.And):
            -114                if FALSE in (left, right):
            -115                    return exp.false()
            -116                if NULL in (left, right):
            -117                    return exp.null()
            -118                if always_true(left) and always_true(right):
            -119                    return exp.true()
            -120                if always_true(left):
            -121                    return right
            -122                if always_true(right):
            -123                    return left
            -124                return _simplify_comparison(expression, left, right)
            -125            elif isinstance(expression, exp.Or):
            -126                if always_true(left) or always_true(right):
            -127                    return exp.true()
            -128                if left == FALSE and right == FALSE:
            -129                    return exp.false()
            -130                if (
            -131                    (left == NULL and right == NULL)
            -132                    or (left == NULL and right == FALSE)
            -133                    or (left == FALSE and right == NULL)
            -134                ):
            -135                    return exp.null()
            -136                if left == FALSE:
            -137                    return right
            -138                if right == FALSE:
            -139                    return left
            -140                return _simplify_comparison(expression, left, right, or_=True)
            -141        return None
            -142
            -143    return _flat_simplify(expression, _simplify_connectors)
            +            
            109def simplify_connectors(expression, root=True):
            +110    def _simplify_connectors(expression, left, right):
            +111        if left == right:
            +112            return left
            +113        if isinstance(expression, exp.And):
            +114            if is_false(left) or is_false(right):
            +115                return exp.false()
            +116            if is_null(left) or is_null(right):
            +117                return exp.null()
            +118            if always_true(left) and always_true(right):
            +119                return exp.true()
            +120            if always_true(left):
            +121                return right
            +122            if always_true(right):
            +123                return left
            +124            return _simplify_comparison(expression, left, right)
            +125        elif isinstance(expression, exp.Or):
            +126            if always_true(left) or always_true(right):
            +127                return exp.true()
            +128            if is_false(left) and is_false(right):
            +129                return exp.false()
            +130            if (
            +131                (is_null(left) and is_null(right))
            +132                or (is_null(left) and is_false(right))
            +133                or (is_false(left) and is_null(right))
            +134            ):
            +135                return exp.null()
            +136            if is_false(left):
            +137                return right
            +138            if is_false(right):
            +139                return left
            +140            return _simplify_comparison(expression, left, right, or_=True)
            +141
            +142    if isinstance(expression, exp.Connector):
            +143        return _flat_simplify(expression, _simplify_connectors, root)
            +144    return expression
             
            @@ -847,26 +869,26 @@ A OR (B OR C) -> A OR B OR C

            def - remove_compliments(expression): + remove_compliments(expression, root=True):
            -
            224def remove_compliments(expression):
            -225    """
            -226    Removing compliments.
            -227
            -228    A AND NOT A -> FALSE
            -229    A OR NOT A -> TRUE
            -230    """
            -231    if isinstance(expression, exp.Connector):
            -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
            +            
            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
             
            @@ -883,36 +905,36 @@ A OR NOT A -> TRUE

            def - uniq_sort(expression): + uniq_sort(expression, cache=None, root=True):
            -
            240def uniq_sort(expression):
            -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):
            -247        result_func = exp.and_ if isinstance(expression, exp.And) else exp.or_
            -248        flattened = tuple(expression.flatten())
            -249        deduped = {GENERATOR.generate(e): 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(*(deduped[sql] for sql in sorted(deduped)))
            -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
            +            
            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
             
            @@ -928,50 +950,50 @@ A OR NOT A -> TRUE

            def - absorb_and_eliminate(expression): + absorb_and_eliminate(expression, root=True):
            -
            266def absorb_and_eliminate(expression):
            -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):
            -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
            +            
            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
             
            @@ -992,24 +1014,24 @@ elimination:
            def - simplify_literals(expression): + simplify_literals(expression, root=True):
            -
            306def simplify_literals(expression):
            -307    if isinstance(expression, exp.Binary):
            -308        return _flat_simplify(expression, _simplify_binary)
            -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
            +            
            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
             
            @@ -1027,18 +1049,18 @@ elimination:
            -
            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.Is, exp.Like))
            -386            or not isinstance(expression.this, exp.Binary)
            -387        )
            -388    ):
            -389        return expression.this
            -390    return expression
            +            
            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
             
            @@ -1056,14 +1078,14 @@ elimination:
            -
            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)
            +            
            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)
             
            @@ -1081,8 +1103,10 @@ elimination:
            -
            403def always_true(expression):
            -404    return expression == TRUE or isinstance(expression, exp.Literal)
            +            
            404def always_true(expression):
            +405    return (isinstance(expression, exp.Boolean) and expression.this) or isinstance(
            +406        expression, exp.Literal
            +407    )
             
            @@ -1100,8 +1124,46 @@ elimination:
            -
            407def is_complement(a, b):
            -408    return isinstance(b, exp.Not) and b.this == a
            +            
            410def is_complement(a, b):
            +411    return isinstance(b, exp.Not) and b.this == a
            +
            + + + + +
        +
        + +
        + + def + is_false(a: sqlglot.expressions.Expression) -> bool: + + + +
        + +
        414def is_false(a: exp.Expression) -> bool:
        +415    return type(a) is exp.Boolean and not a.this
        +
        + + + + +
        +
        + +
        + + def + is_null(a: sqlglot.expressions.Expression) -> bool: + + + +
        + +
        418def is_null(a: exp.Expression) -> bool:
        +419    return type(a) is exp.Null
         
        @@ -1119,20 +1181,20 @@ elimination: -
        411def eval_boolean(expression, a, b):
        -412    if isinstance(expression, (exp.EQ, exp.Is)):
        -413        return boolean_literal(a == b)
        -414    if isinstance(expression, exp.NEQ):
        -415        return boolean_literal(a != b)
        -416    if isinstance(expression, exp.GT):
        -417        return boolean_literal(a > b)
        -418    if isinstance(expression, exp.GTE):
        -419        return boolean_literal(a >= b)
        -420    if isinstance(expression, exp.LT):
        -421        return boolean_literal(a < b)
        -422    if isinstance(expression, exp.LTE):
        -423        return boolean_literal(a <= b)
        -424    return None
        +            
        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
         
        @@ -1150,16 +1212,16 @@ elimination:
        -
        427def extract_date(cast):
        -428    # The "fromisoformat" conversion could fail if the cast is used on an identifier,
        -429    # so in that case we can't extract the date.
        -430    try:
        -431        if cast.args["to"].this == exp.DataType.Type.DATE:
        -432            return datetime.date.fromisoformat(cast.name)
        -433        if cast.args["to"].this == exp.DataType.Type.DATETIME:
        -434            return datetime.datetime.fromisoformat(cast.name)
        -435    except ValueError:
        -436        return None
        +            
        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
         
        @@ -1177,24 +1239,24 @@ elimination:
        -
        439def extract_interval(interval):
        -440    try:
        -441        from dateutil.relativedelta import relativedelta  # type: ignore
        -442    except ModuleNotFoundError:
        -443        return None
        -444
        -445    n = int(interval.name)
        -446    unit = interval.text("unit").lower()
        -447
        -448    if unit == "year":
        -449        return relativedelta(years=n)
        -450    if unit == "month":
        -451        return relativedelta(months=n)
        -452    if unit == "week":
        -453        return relativedelta(weeks=n)
        -454    if unit == "day":
        -455        return relativedelta(days=n)
        -456    return None
        +            
        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
         
        @@ -1212,11 +1274,11 @@ elimination:
        -
        459def date_literal(date):
        -460    return exp.cast(
        -461        exp.Literal.string(date),
        -462        "DATETIME" if isinstance(date, datetime.datetime) else "DATE",
        -463    )
        +            
        470def date_literal(date):
        +471    return exp.cast(
        +472        exp.Literal.string(date),
        +473        "DATETIME" if isinstance(date, datetime.datetime) else "DATE",
        +474    )
         
        @@ -1234,8 +1296,8 @@ elimination:
        -
        466def boolean_literal(condition):
        -467    return exp.true() if condition else exp.false()
        +            
        477def boolean_literal(condition):
        +478    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 8c1c5f6..2f83825 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 @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • unnest_subqueries
          • diff --git a/docs/sqlglot/parser.html b/docs/sqlglot/parser.html index ae232ad..e5ebe1f 100644 --- a/docs/sqlglot/parser.html +++ b/docs/sqlglot/parser.html @@ -3,7 +3,7 @@ - + sqlglot.parser API documentation @@ -28,11 +28,14 @@ -

            API Documentation

            -
              +

              API Documentation

              +
              • parse_var_map
              • +
              • + parse_like +
              • binary_range_parser
              • @@ -110,7 +113,7 @@ 19logger = logging.getLogger("sqlglot") 20 21 - 22def parse_var_map(args): + 22def parse_var_map(args: t.Sequence) -> exp.Expression: 23 keys = [] 24 values = [] 25 for i in range(0, len(args), 2): @@ -122,4029 +125,4101 @@ 31 ) 32 33 - 34def binary_range_parser( - 35 expr_type: t.Type[exp.Expression], - 36) -> t.Callable[[Parser, t.Optional[exp.Expression]], t.Optional[exp.Expression]]: - 37 return lambda self, this: self._parse_escape( - 38 self.expression(expr_type, this=this, expression=self._parse_bitwise()) - 39 ) - 40 - 41 - 42class _Parser(type): - 43 def __new__(cls, clsname, bases, attrs): - 44 klass = super().__new__(cls, clsname, bases, attrs) - 45 klass._show_trie = new_trie(key.split(" ") for key in klass.SHOW_PARSERS) - 46 klass._set_trie = new_trie(key.split(" ") for key in klass.SET_PARSERS) - 47 - 48 return klass - 49 - 50 - 51class Parser(metaclass=_Parser): - 52 """ - 53 Parser consumes a list of tokens produced by the `sqlglot.tokens.Tokenizer` and produces - 54 a parsed syntax tree. + 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 + 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 - 56 Args: - 57 error_level: the desired error level. - 58 Default: ErrorLevel.RAISE - 59 error_message_context: determines the amount of context to capture from a - 60 query string when displaying the error message (in number of characters). - 61 Default: 50. - 62 index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list. - 63 Default: 0 - 64 alias_post_tablesample: If the table alias comes after tablesample. - 65 Default: False - 66 max_errors: Maximum number of error messages to include in a raised ParseError. - 67 This is only relevant if error_level is ErrorLevel.RAISE. - 68 Default: 3 - 69 null_ordering: Indicates the default null ordering method to use if not explicitly set. - 70 Options are "nulls_are_small", "nulls_are_large", "nulls_are_last". - 71 Default: "nulls_are_small" - 72 """ - 73 - 74 FUNCTIONS: t.Dict[str, t.Callable] = { - 75 **{name: f.from_arg_list for f in exp.ALL_FUNCTIONS for name in f.sql_names()}, - 76 "DATE_TO_DATE_STR": lambda args: exp.Cast( - 77 this=seq_get(args, 0), - 78 to=exp.DataType(this=exp.DataType.Type.TEXT), - 79 ), - 80 "TIME_TO_TIME_STR": lambda args: exp.Cast( - 81 this=seq_get(args, 0), - 82 to=exp.DataType(this=exp.DataType.Type.TEXT), - 83 ), - 84 "TS_OR_DS_TO_DATE_STR": lambda args: exp.Substring( - 85 this=exp.Cast( - 86 this=seq_get(args, 0), - 87 to=exp.DataType(this=exp.DataType.Type.TEXT), - 88 ), - 89 start=exp.Literal.number(1), - 90 length=exp.Literal.number(10), + 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. + 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 "VAR_MAP": parse_var_map, - 93 "IFNULL": exp.Coalesce.from_arg_list, - 94 } - 95 - 96 NO_PAREN_FUNCTIONS = { - 97 TokenType.CURRENT_DATE: exp.CurrentDate, - 98 TokenType.CURRENT_DATETIME: exp.CurrentDate, - 99 TokenType.CURRENT_TIME: exp.CurrentTime, - 100 TokenType.CURRENT_TIMESTAMP: exp.CurrentTimestamp, + 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 NESTED_TYPE_TOKENS = { - 104 TokenType.ARRAY, - 105 TokenType.MAP, - 106 TokenType.STRUCT, - 107 TokenType.NULLABLE, + 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 TYPE_TOKENS = { - 111 TokenType.BIT, - 112 TokenType.BOOLEAN, - 113 TokenType.TINYINT, - 114 TokenType.SMALLINT, - 115 TokenType.INT, - 116 TokenType.BIGINT, - 117 TokenType.FLOAT, - 118 TokenType.DOUBLE, - 119 TokenType.CHAR, - 120 TokenType.NCHAR, - 121 TokenType.VARCHAR, - 122 TokenType.NVARCHAR, - 123 TokenType.TEXT, - 124 TokenType.MEDIUMTEXT, - 125 TokenType.LONGTEXT, - 126 TokenType.MEDIUMBLOB, - 127 TokenType.LONGBLOB, - 128 TokenType.BINARY, - 129 TokenType.VARBINARY, - 130 TokenType.JSON, - 131 TokenType.JSONB, - 132 TokenType.INTERVAL, - 133 TokenType.TIME, - 134 TokenType.TIMESTAMP, - 135 TokenType.TIMESTAMPTZ, - 136 TokenType.TIMESTAMPLTZ, - 137 TokenType.DATETIME, - 138 TokenType.DATE, - 139 TokenType.DECIMAL, - 140 TokenType.UUID, - 141 TokenType.GEOGRAPHY, - 142 TokenType.GEOMETRY, - 143 TokenType.HLLSKETCH, - 144 TokenType.HSTORE, - 145 TokenType.PSEUDO_TYPE, - 146 TokenType.SUPER, - 147 TokenType.SERIAL, - 148 TokenType.SMALLSERIAL, - 149 TokenType.BIGSERIAL, - 150 TokenType.XML, - 151 TokenType.UNIQUEIDENTIFIER, - 152 TokenType.MONEY, - 153 TokenType.SMALLMONEY, - 154 TokenType.ROWVERSION, - 155 TokenType.IMAGE, - 156 TokenType.VARIANT, - 157 TokenType.OBJECT, - 158 TokenType.INET, - 159 *NESTED_TYPE_TOKENS, - 160 } - 161 - 162 SUBQUERY_PREDICATES = { - 163 TokenType.ANY: exp.Any, - 164 TokenType.ALL: exp.All, - 165 TokenType.EXISTS: exp.Exists, - 166 TokenType.SOME: exp.Any, + 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 RESERVED_KEYWORDS = {*Tokenizer.SINGLE_TOKENS.values(), TokenType.SELECT} - 170 - 171 DB_CREATABLES = { - 172 TokenType.DATABASE, - 173 TokenType.SCHEMA, - 174 TokenType.TABLE, - 175 TokenType.VIEW, - 176 } + 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} 177 - 178 CREATABLES = { - 179 TokenType.COLUMN, - 180 TokenType.FUNCTION, - 181 TokenType.INDEX, - 182 TokenType.PROCEDURE, - 183 *DB_CREATABLES, - 184 } - 185 - 186 ID_VAR_TOKENS = { - 187 TokenType.VAR, - 188 TokenType.ANTI, - 189 TokenType.APPLY, - 190 TokenType.AUTO_INCREMENT, - 191 TokenType.BEGIN, - 192 TokenType.BOTH, - 193 TokenType.BUCKET, - 194 TokenType.CACHE, - 195 TokenType.CASCADE, - 196 TokenType.COLLATE, - 197 TokenType.COMMAND, - 198 TokenType.COMMENT, - 199 TokenType.COMMIT, - 200 TokenType.COMPOUND, - 201 TokenType.CONSTRAINT, - 202 TokenType.DEFAULT, - 203 TokenType.DELETE, - 204 TokenType.DESCRIBE, - 205 TokenType.DIV, - 206 TokenType.END, - 207 TokenType.EXECUTE, - 208 TokenType.ESCAPE, - 209 TokenType.FALSE, - 210 TokenType.FIRST, - 211 TokenType.FILTER, - 212 TokenType.FOLLOWING, - 213 TokenType.FORMAT, - 214 TokenType.IF, - 215 TokenType.ISNULL, - 216 TokenType.INTERVAL, - 217 TokenType.LAZY, - 218 TokenType.LEADING, - 219 TokenType.LEFT, - 220 TokenType.LOCAL, - 221 TokenType.MATERIALIZED, - 222 TokenType.MERGE, - 223 TokenType.NATURAL, - 224 TokenType.NEXT, - 225 TokenType.OFFSET, - 226 TokenType.ONLY, - 227 TokenType.OPTIONS, - 228 TokenType.ORDINALITY, - 229 TokenType.PERCENT, - 230 TokenType.PIVOT, - 231 TokenType.PRECEDING, - 232 TokenType.RANGE, - 233 TokenType.REFERENCES, - 234 TokenType.RIGHT, - 235 TokenType.ROW, - 236 TokenType.ROWS, - 237 TokenType.SEED, - 238 TokenType.SEMI, - 239 TokenType.SET, - 240 TokenType.SHOW, - 241 TokenType.SORTKEY, - 242 TokenType.TEMPORARY, - 243 TokenType.TOP, - 244 TokenType.TRAILING, - 245 TokenType.TRUE, - 246 TokenType.UNBOUNDED, - 247 TokenType.UNIQUE, - 248 TokenType.UNLOGGED, - 249 TokenType.UNPIVOT, - 250 TokenType.VOLATILE, - 251 TokenType.WINDOW, - 252 *CREATABLES, - 253 *SUBQUERY_PREDICATES, - 254 *TYPE_TOKENS, - 255 *NO_PAREN_FUNCTIONS, - 256 } - 257 - 258 TABLE_ALIAS_TOKENS = ID_VAR_TOKENS - { - 259 TokenType.APPLY, - 260 TokenType.LEFT, - 261 TokenType.NATURAL, - 262 TokenType.OFFSET, - 263 TokenType.RIGHT, - 264 TokenType.WINDOW, - 265 } - 266 - 267 UPDATE_ALIAS_TOKENS = TABLE_ALIAS_TOKENS - {TokenType.SET} - 268 - 269 TRIM_TYPES = {TokenType.LEADING, TokenType.TRAILING, TokenType.BOTH} - 270 - 271 FUNC_TOKENS = { - 272 TokenType.COMMAND, - 273 TokenType.CURRENT_DATE, - 274 TokenType.CURRENT_DATETIME, - 275 TokenType.CURRENT_TIMESTAMP, - 276 TokenType.CURRENT_TIME, - 277 TokenType.FILTER, - 278 TokenType.FIRST, - 279 TokenType.FORMAT, - 280 TokenType.IDENTIFIER, - 281 TokenType.INDEX, - 282 TokenType.ISNULL, - 283 TokenType.ILIKE, - 284 TokenType.LIKE, - 285 TokenType.MERGE, - 286 TokenType.OFFSET, - 287 TokenType.PRIMARY_KEY, - 288 TokenType.REPLACE, - 289 TokenType.ROW, - 290 TokenType.UNNEST, - 291 TokenType.VAR, - 292 TokenType.LEFT, - 293 TokenType.RIGHT, - 294 TokenType.DATE, - 295 TokenType.DATETIME, - 296 TokenType.TABLE, - 297 TokenType.TIMESTAMP, - 298 TokenType.TIMESTAMPTZ, - 299 TokenType.WINDOW, - 300 *TYPE_TOKENS, - 301 *SUBQUERY_PREDICATES, - 302 } - 303 - 304 CONJUNCTION = { - 305 TokenType.AND: exp.And, - 306 TokenType.OR: exp.Or, - 307 } - 308 - 309 EQUALITY = { - 310 TokenType.EQ: exp.EQ, - 311 TokenType.NEQ: exp.NEQ, - 312 TokenType.NULLSAFE_EQ: exp.NullSafeEQ, - 313 } - 314 - 315 COMPARISON = { - 316 TokenType.GT: exp.GT, - 317 TokenType.GTE: exp.GTE, - 318 TokenType.LT: exp.LT, - 319 TokenType.LTE: exp.LTE, - 320 } - 321 - 322 BITWISE = { - 323 TokenType.AMP: exp.BitwiseAnd, - 324 TokenType.CARET: exp.BitwiseXor, - 325 TokenType.PIPE: exp.BitwiseOr, - 326 TokenType.DPIPE: exp.DPipe, - 327 } - 328 - 329 TERM = { - 330 TokenType.DASH: exp.Sub, - 331 TokenType.PLUS: exp.Add, - 332 TokenType.MOD: exp.Mod, - 333 TokenType.COLLATE: exp.Collate, - 334 } - 335 - 336 FACTOR = { - 337 TokenType.DIV: exp.IntDiv, - 338 TokenType.LR_ARROW: exp.Distance, - 339 TokenType.SLASH: exp.Div, - 340 TokenType.STAR: exp.Mul, - 341 } - 342 - 343 TIMESTAMPS = { - 344 TokenType.TIME, - 345 TokenType.TIMESTAMP, - 346 TokenType.TIMESTAMPTZ, - 347 TokenType.TIMESTAMPLTZ, - 348 } - 349 - 350 SET_OPERATIONS = { - 351 TokenType.UNION, - 352 TokenType.INTERSECT, - 353 TokenType.EXCEPT, - 354 } - 355 - 356 JOIN_SIDES = { - 357 TokenType.LEFT, - 358 TokenType.RIGHT, - 359 TokenType.FULL, + 178 DB_CREATABLES = { + 179 TokenType.DATABASE, + 180 TokenType.SCHEMA, + 181 TokenType.TABLE, + 182 TokenType.VIEW, + 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 JOIN_KINDS = { - 363 TokenType.INNER, - 364 TokenType.OUTER, - 365 TokenType.CROSS, - 366 TokenType.SEMI, - 367 TokenType.ANTI, - 368 } - 369 - 370 LAMBDAS = { - 371 TokenType.ARROW: lambda self, expressions: self.expression( - 372 exp.Lambda, - 373 this=self._parse_conjunction().transform( - 374 self._replace_lambda, {node.name for node in expressions} - 375 ), - 376 expressions=expressions, - 377 ), - 378 TokenType.FARROW: lambda self, expressions: self.expression( - 379 exp.Kwarg, - 380 this=exp.Var(this=expressions[0].name), - 381 expression=self._parse_conjunction(), - 382 ), - 383 } - 384 - 385 COLUMN_OPERATORS = { - 386 TokenType.DOT: None, - 387 TokenType.DCOLON: lambda self, this, to: self.expression( - 388 exp.Cast, - 389 this=this, - 390 to=to, - 391 ), - 392 TokenType.ARROW: lambda self, this, path: self.expression( - 393 exp.JSONExtract, - 394 this=this, - 395 expression=path, - 396 ), - 397 TokenType.DARROW: lambda self, this, path: self.expression( - 398 exp.JSONExtractScalar, - 399 this=this, - 400 expression=path, - 401 ), - 402 TokenType.HASH_ARROW: lambda self, this, path: self.expression( - 403 exp.JSONBExtract, - 404 this=this, - 405 expression=path, - 406 ), - 407 TokenType.DHASH_ARROW: lambda self, this, path: self.expression( - 408 exp.JSONBExtractScalar, - 409 this=this, - 410 expression=path, - 411 ), - 412 TokenType.PLACEHOLDER: lambda self, this, key: self.expression( - 413 exp.JSONBContains, - 414 this=this, - 415 expression=key, - 416 ), - 417 } - 418 - 419 EXPRESSION_PARSERS = { - 420 exp.Column: lambda self: self._parse_column(), - 421 exp.DataType: lambda self: self._parse_types(), - 422 exp.From: lambda self: self._parse_from(), - 423 exp.Group: lambda self: self._parse_group(), - 424 exp.Identifier: lambda self: self._parse_id_var(), - 425 exp.Lateral: lambda self: self._parse_lateral(), - 426 exp.Join: lambda self: self._parse_join(), - 427 exp.Order: lambda self: self._parse_order(), - 428 exp.Cluster: lambda self: self._parse_sort(TokenType.CLUSTER_BY, exp.Cluster), - 429 exp.Sort: lambda self: self._parse_sort(TokenType.SORT_BY, exp.Sort), - 430 exp.Lambda: lambda self: self._parse_lambda(), - 431 exp.Limit: lambda self: self._parse_limit(), - 432 exp.Offset: lambda self: self._parse_offset(), - 433 exp.TableAlias: lambda self: self._parse_table_alias(), - 434 exp.Table: lambda self: self._parse_table(), - 435 exp.Condition: lambda self: self._parse_conjunction(), - 436 exp.Expression: lambda self: self._parse_statement(), - 437 exp.Properties: lambda self: self._parse_properties(), - 438 exp.Where: lambda self: self._parse_where(), - 439 exp.Ordered: lambda self: self._parse_ordered(), - 440 exp.Having: lambda self: self._parse_having(), - 441 exp.With: lambda self: self._parse_with(), - 442 exp.Window: lambda self: self._parse_named_window(), - 443 exp.Qualify: lambda self: self._parse_qualify(), - 444 exp.Returning: lambda self: self._parse_returning(), - 445 "JOIN_TYPE": lambda self: self._parse_join_side_and_kind(), - 446 } - 447 - 448 STATEMENT_PARSERS = { - 449 TokenType.ALTER: lambda self: self._parse_alter(), - 450 TokenType.BEGIN: lambda self: self._parse_transaction(), - 451 TokenType.CACHE: lambda self: self._parse_cache(), - 452 TokenType.COMMIT: lambda self: self._parse_commit_or_rollback(), - 453 TokenType.COMMENT: lambda self: self._parse_comment(), - 454 TokenType.CREATE: lambda self: self._parse_create(), - 455 TokenType.DELETE: lambda self: self._parse_delete(), - 456 TokenType.DESC: lambda self: self._parse_describe(), - 457 TokenType.DESCRIBE: lambda self: self._parse_describe(), - 458 TokenType.DROP: lambda self: self._parse_drop(), - 459 TokenType.END: lambda self: self._parse_commit_or_rollback(), - 460 TokenType.INSERT: lambda self: self._parse_insert(), - 461 TokenType.LOAD_DATA: lambda self: self._parse_load_data(), - 462 TokenType.MERGE: lambda self: self._parse_merge(), - 463 TokenType.ROLLBACK: lambda self: self._parse_commit_or_rollback(), - 464 TokenType.SET: lambda self: self._parse_set(), - 465 TokenType.UNCACHE: lambda self: self._parse_uncache(), - 466 TokenType.UPDATE: lambda self: self._parse_update(), - 467 TokenType.USE: lambda self: self.expression( - 468 exp.Use, - 469 kind=self._match_texts(("ROLE", "WAREHOUSE", "DATABASE", "SCHEMA")) - 470 and exp.Var(this=self._prev.text), - 471 this=self._parse_table(schema=False), - 472 ), - 473 } - 474 - 475 UNARY_PARSERS = { - 476 TokenType.PLUS: lambda self: self._parse_unary(), # Unary + is handled as a no-op - 477 TokenType.NOT: lambda self: self.expression(exp.Not, this=self._parse_equality()), - 478 TokenType.TILDA: lambda self: self.expression(exp.BitwiseNot, this=self._parse_unary()), - 479 TokenType.DASH: lambda self: self.expression(exp.Neg, this=self._parse_unary()), - 480 } - 481 - 482 PRIMARY_PARSERS = { - 483 TokenType.STRING: lambda self, token: self.expression( - 484 exp.Literal, this=token.text, is_string=True - 485 ), - 486 TokenType.NUMBER: lambda self, token: self.expression( - 487 exp.Literal, this=token.text, is_string=False - 488 ), - 489 TokenType.STAR: lambda self, _: self.expression( - 490 exp.Star, - 491 **{"except": self._parse_except(), "replace": self._parse_replace()}, - 492 ), - 493 TokenType.NULL: lambda self, _: self.expression(exp.Null), - 494 TokenType.TRUE: lambda self, _: self.expression(exp.Boolean, this=True), - 495 TokenType.FALSE: lambda self, _: self.expression(exp.Boolean, this=False), - 496 TokenType.BIT_STRING: lambda self, token: self.expression(exp.BitString, this=token.text), - 497 TokenType.HEX_STRING: lambda self, token: self.expression(exp.HexString, this=token.text), - 498 TokenType.BYTE_STRING: lambda self, token: self.expression(exp.ByteString, this=token.text), - 499 TokenType.INTRODUCER: lambda self, token: self._parse_introducer(token), - 500 TokenType.NATIONAL: lambda self, token: self._parse_national(token), - 501 TokenType.SESSION_PARAMETER: lambda self, _: self._parse_session_parameter(), - 502 } - 503 - 504 PLACEHOLDER_PARSERS = { - 505 TokenType.PLACEHOLDER: lambda self: self.expression(exp.Placeholder), - 506 TokenType.PARAMETER: lambda self: self._parse_parameter(), - 507 TokenType.COLON: lambda self: self.expression(exp.Placeholder, this=self._prev.text) - 508 if self._match_set((TokenType.NUMBER, TokenType.VAR)) - 509 else None, - 510 } - 511 - 512 RANGE_PARSERS = { - 513 TokenType.BETWEEN: lambda self, this: self._parse_between(this), - 514 TokenType.GLOB: binary_range_parser(exp.Glob), - 515 TokenType.OVERLAPS: binary_range_parser(exp.Overlaps), - 516 TokenType.IN: lambda self, this: self._parse_in(this), - 517 TokenType.IS: lambda self, this: self._parse_is(this), - 518 TokenType.LIKE: binary_range_parser(exp.Like), - 519 TokenType.ILIKE: binary_range_parser(exp.ILike), - 520 TokenType.IRLIKE: binary_range_parser(exp.RegexpILike), - 521 TokenType.RLIKE: binary_range_parser(exp.RegexpLike), - 522 TokenType.SIMILAR_TO: binary_range_parser(exp.SimilarTo), - 523 } - 524 - 525 PROPERTY_PARSERS = { - 526 "AFTER": lambda self: self._parse_afterjournal( - 527 no=self._prev.text.upper() == "NO", dual=self._prev.text.upper() == "DUAL" - 528 ), - 529 "ALGORITHM": lambda self: self._parse_property_assignment(exp.AlgorithmProperty), - 530 "AUTO_INCREMENT": lambda self: self._parse_property_assignment(exp.AutoIncrementProperty), - 531 "BEFORE": lambda self: self._parse_journal( - 532 no=self._prev.text.upper() == "NO", dual=self._prev.text.upper() == "DUAL" - 533 ), - 534 "BLOCKCOMPRESSION": lambda self: self._parse_blockcompression(), - 535 "CHARACTER SET": lambda self: self._parse_character_set(), - 536 "CHECKSUM": lambda self: self._parse_checksum(), - 537 "CLUSTER BY": lambda self: self.expression( - 538 exp.Cluster, expressions=self._parse_csv(self._parse_ordered) - 539 ), - 540 "COLLATE": lambda self: self._parse_property_assignment(exp.CollateProperty), - 541 "COMMENT": lambda self: self._parse_property_assignment(exp.SchemaCommentProperty), - 542 "DATABLOCKSIZE": lambda self: self._parse_datablocksize( - 543 default=self._prev.text.upper() == "DEFAULT" - 544 ), - 545 "DEFINER": lambda self: self._parse_definer(), - 546 "DETERMINISTIC": lambda self: self.expression( - 547 exp.VolatilityProperty, this=exp.Literal.string("IMMUTABLE") - 548 ), - 549 "DISTKEY": lambda self: self._parse_distkey(), - 550 "DISTSTYLE": lambda self: self._parse_property_assignment(exp.DistStyleProperty), - 551 "EXECUTE": lambda self: self._parse_property_assignment(exp.ExecuteAsProperty), - 552 "EXTERNAL": lambda self: self.expression(exp.ExternalProperty), - 553 "FALLBACK": lambda self: self._parse_fallback(no=self._prev.text.upper() == "NO"), - 554 "FORMAT": lambda self: self._parse_property_assignment(exp.FileFormatProperty), - 555 "FREESPACE": lambda self: self._parse_freespace(), - 556 "GLOBAL": lambda self: self._parse_temporary(global_=True), - 557 "IMMUTABLE": lambda self: self.expression( - 558 exp.VolatilityProperty, this=exp.Literal.string("IMMUTABLE") - 559 ), - 560 "JOURNAL": lambda self: self._parse_journal( - 561 no=self._prev.text.upper() == "NO", dual=self._prev.text.upper() == "DUAL" + 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 ), + 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 + 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" + 558 ), + 559 "DEFINER": lambda self: self._parse_definer(), + 560 "DETERMINISTIC": lambda self: self.expression( + 561 exp.VolatilityProperty, this=exp.Literal.string("IMMUTABLE") 562 ), - 563 "LANGUAGE": lambda self: self._parse_property_assignment(exp.LanguageProperty), - 564 "LIKE": lambda self: self._parse_create_like(), - 565 "LOCAL": lambda self: self._parse_afterjournal(no=False, dual=False, local=True), - 566 "LOCATION": lambda self: self._parse_property_assignment(exp.LocationProperty), - 567 "LOCK": lambda self: self._parse_locking(), - 568 "LOCKING": lambda self: self._parse_locking(), - 569 "LOG": lambda self: self._parse_log(no=self._prev.text.upper() == "NO"), - 570 "MATERIALIZED": lambda self: self.expression(exp.MaterializedProperty), - 571 "MAX": lambda self: self._parse_datablocksize(), - 572 "MAXIMUM": lambda self: self._parse_datablocksize(), - 573 "MERGEBLOCKRATIO": lambda self: self._parse_mergeblockratio( - 574 no=self._prev.text.upper() == "NO", default=self._prev.text.upper() == "DEFAULT" - 575 ), - 576 "MIN": lambda self: self._parse_datablocksize(), - 577 "MINIMUM": lambda self: self._parse_datablocksize(), - 578 "MULTISET": lambda self: self.expression(exp.SetProperty, multi=True), - 579 "NO": lambda self: self._parse_noprimaryindex(), - 580 "NOT": lambda self: self._parse_afterjournal(no=False, dual=False, local=False), - 581 "ON": lambda self: self._parse_oncommit(), - 582 "PARTITION BY": lambda self: self._parse_partitioned_by(), - 583 "PARTITIONED BY": lambda self: self._parse_partitioned_by(), - 584 "PARTITIONED_BY": lambda self: self._parse_partitioned_by(), - 585 "RETURNS": lambda self: self._parse_returns(), - 586 "ROW": lambda self: self._parse_row(), - 587 "SET": lambda self: self.expression(exp.SetProperty, multi=False), - 588 "SORTKEY": lambda self: self._parse_sortkey(), - 589 "STABLE": lambda self: self.expression( - 590 exp.VolatilityProperty, this=exp.Literal.string("STABLE") - 591 ), - 592 "STORED": lambda self: self._parse_property_assignment(exp.FileFormatProperty), - 593 "TABLE_FORMAT": lambda self: self._parse_property_assignment(exp.TableFormatProperty), - 594 "TBLPROPERTIES": lambda self: self._parse_wrapped_csv(self._parse_property), - 595 "TEMPORARY": lambda self: self._parse_temporary(global_=False), - 596 "TRANSIENT": lambda self: self.expression(exp.TransientProperty), - 597 "USING": lambda self: self._parse_property_assignment(exp.TableFormatProperty), - 598 "VOLATILE": lambda self: self.expression( - 599 exp.VolatilityProperty, this=exp.Literal.string("VOLATILE") - 600 ), - 601 "WITH": lambda self: self._parse_with_property(), - 602 } - 603 - 604 CONSTRAINT_PARSERS = { - 605 "AUTOINCREMENT": lambda self: self._parse_auto_increment(), - 606 "AUTO_INCREMENT": lambda self: self._parse_auto_increment(), - 607 "CASESPECIFIC": lambda self: self.expression(exp.CaseSpecificColumnConstraint, not_=False), - 608 "CHARACTER SET": lambda self: self.expression( - 609 exp.CharacterSetColumnConstraint, this=self._parse_var_or_string() - 610 ), - 611 "CHECK": lambda self: self.expression( - 612 exp.CheckColumnConstraint, this=self._parse_wrapped(self._parse_conjunction) - 613 ), - 614 "COLLATE": lambda self: self.expression( - 615 exp.CollateColumnConstraint, this=self._parse_var() - 616 ), - 617 "COMMENT": lambda self: self.expression( - 618 exp.CommentColumnConstraint, this=self._parse_string() - 619 ), - 620 "COMPRESS": lambda self: self._parse_compress(), - 621 "DEFAULT": lambda self: self.expression( - 622 exp.DefaultColumnConstraint, this=self._parse_bitwise() - 623 ), - 624 "ENCODE": lambda self: self.expression(exp.EncodeColumnConstraint, this=self._parse_var()), - 625 "FOREIGN KEY": lambda self: self._parse_foreign_key(), - 626 "FORMAT": lambda self: self.expression( - 627 exp.DateFormatColumnConstraint, this=self._parse_var_or_string() - 628 ), - 629 "GENERATED": lambda self: self._parse_generated_as_identity(), - 630 "IDENTITY": lambda self: self._parse_auto_increment(), - 631 "INLINE": lambda self: self._parse_inline(), - 632 "LIKE": lambda self: self._parse_create_like(), - 633 "NOT": lambda self: self._parse_not_constraint(), - 634 "NULL": lambda self: self.expression(exp.NotNullColumnConstraint, allow_null=True), - 635 "PATH": lambda self: self.expression(exp.PathColumnConstraint, this=self._parse_string()), - 636 "PRIMARY KEY": lambda self: self._parse_primary_key(), - 637 "TITLE": lambda self: self.expression( - 638 exp.TitleColumnConstraint, this=self._parse_var_or_string() - 639 ), - 640 "UNIQUE": lambda self: self._parse_unique(), - 641 "UPPERCASE": lambda self: self.expression(exp.UppercaseColumnConstraint), - 642 } - 643 - 644 ALTER_PARSERS = { - 645 "ADD": lambda self: self._parse_alter_table_add(), - 646 "ALTER": lambda self: self._parse_alter_table_alter(), - 647 "DELETE": lambda self: self.expression(exp.Delete, where=self._parse_where()), - 648 "DROP": lambda self: self._parse_alter_table_drop(), - 649 "RENAME": lambda self: self._parse_alter_table_rename(), - 650 } - 651 - 652 SCHEMA_UNNAMED_CONSTRAINTS = {"CHECK", "FOREIGN KEY", "LIKE", "PRIMARY KEY", "UNIQUE"} - 653 - 654 NO_PAREN_FUNCTION_PARSERS = { - 655 TokenType.CASE: lambda self: self._parse_case(), - 656 TokenType.IF: lambda self: self._parse_if(), - 657 TokenType.ANY: lambda self: self.expression(exp.Any, this=self._parse_bitwise()), - 658 } - 659 - 660 FUNCTION_PARSERS: t.Dict[str, t.Callable] = { - 661 "CAST": lambda self: self._parse_cast(self.STRICT_CAST), - 662 "CONVERT": lambda self: self._parse_convert(self.STRICT_CAST), - 663 "EXTRACT": lambda self: self._parse_extract(), - 664 "POSITION": lambda self: self._parse_position(), - 665 "STRING_AGG": lambda self: self._parse_string_agg(), - 666 "SUBSTRING": lambda self: self._parse_substring(), - 667 "TRIM": lambda self: self._parse_trim(), - 668 "TRY_CAST": lambda self: self._parse_cast(False), - 669 "TRY_CONVERT": lambda self: self._parse_convert(False), - 670 } - 671 - 672 QUERY_MODIFIER_PARSERS = { - 673 "match": lambda self: self._parse_match_recognize(), - 674 "where": lambda self: self._parse_where(), - 675 "group": lambda self: self._parse_group(), - 676 "having": lambda self: self._parse_having(), - 677 "qualify": lambda self: self._parse_qualify(), - 678 "windows": lambda self: self._parse_window_clause(), - 679 "distribute": lambda self: self._parse_sort(TokenType.DISTRIBUTE_BY, exp.Distribute), - 680 "sort": lambda self: self._parse_sort(TokenType.SORT_BY, exp.Sort), - 681 "cluster": lambda self: self._parse_sort(TokenType.CLUSTER_BY, exp.Cluster), - 682 "order": lambda self: self._parse_order(), - 683 "limit": lambda self: self._parse_limit(), - 684 "offset": lambda self: self._parse_offset(), - 685 "lock": lambda self: self._parse_lock(), - 686 "sample": lambda self: self._parse_table_sample(as_modifier=True), - 687 } - 688 - 689 SET_PARSERS = { - 690 "GLOBAL": lambda self: self._parse_set_item_assignment("GLOBAL"), - 691 "LOCAL": lambda self: self._parse_set_item_assignment("LOCAL"), - 692 "SESSION": lambda self: self._parse_set_item_assignment("SESSION"), - 693 "TRANSACTION": lambda self: self._parse_set_transaction(), - 694 } - 695 - 696 SHOW_PARSERS: t.Dict[str, t.Callable] = {} - 697 - 698 MODIFIABLES = (exp.Subquery, exp.Subqueryable, exp.Table) - 699 - 700 TRANSACTION_KIND = {"DEFERRED", "IMMEDIATE", "EXCLUSIVE"} - 701 - 702 TRANSACTION_CHARACTERISTICS = { - 703 "ISOLATION LEVEL REPEATABLE READ", - 704 "ISOLATION LEVEL READ COMMITTED", - 705 "ISOLATION LEVEL READ UNCOMMITTED", - 706 "ISOLATION LEVEL SERIALIZABLE", - 707 "READ WRITE", - 708 "READ ONLY", + 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" + 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") + 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() + 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 "EXTRACT": lambda self: self._parse_extract(), + 678 "JSON_OBJECT": lambda self: self._parse_json_object(), + 679 "POSITION": lambda self: self._parse_position(), + 680 "STRING_AGG": lambda self: self._parse_string_agg(), + 681 "SUBSTRING": lambda self: self._parse_substring(), + 682 "TRIM": lambda self: self._parse_trim(), + 683 "TRY_CAST": lambda self: self._parse_cast(False), + 684 "TRY_CONVERT": lambda self: self._parse_convert(False), + 685 } + 686 + 687 QUERY_MODIFIER_PARSERS = { + 688 "match": lambda self: self._parse_match_recognize(), + 689 "where": lambda self: self._parse_where(), + 690 "group": lambda self: self._parse_group(), + 691 "having": lambda self: self._parse_having(), + 692 "qualify": lambda self: self._parse_qualify(), + 693 "windows": lambda self: self._parse_window_clause(), + 694 "distribute": lambda self: self._parse_sort(TokenType.DISTRIBUTE_BY, exp.Distribute), + 695 "sort": lambda self: self._parse_sort(TokenType.SORT_BY, exp.Sort), + 696 "cluster": lambda self: self._parse_sort(TokenType.CLUSTER_BY, exp.Cluster), + 697 "order": lambda self: self._parse_order(), + 698 "limit": lambda self: self._parse_limit(), + 699 "offset": lambda self: self._parse_offset(), + 700 "lock": lambda self: self._parse_lock(), + 701 "sample": lambda self: self._parse_table_sample(as_modifier=True), + 702 } + 703 + 704 SET_PARSERS = { + 705 "GLOBAL": lambda self: self._parse_set_item_assignment("GLOBAL"), + 706 "LOCAL": lambda self: self._parse_set_item_assignment("LOCAL"), + 707 "SESSION": lambda self: self._parse_set_item_assignment("SESSION"), + 708 "TRANSACTION": lambda self: self._parse_set_transaction(), 709 } 710 - 711 INSERT_ALTERNATIVES = {"ABORT", "FAIL", "IGNORE", "REPLACE", "ROLLBACK"} + 711 SHOW_PARSERS: t.Dict[str, t.Callable] = {} 712 - 713 WINDOW_ALIAS_TOKENS = ID_VAR_TOKENS - {TokenType.ROWS} + 713 MODIFIABLES = (exp.Subquery, exp.Subqueryable, exp.Table) 714 - 715 ADD_CONSTRAINT_TOKENS = {TokenType.CONSTRAINT, TokenType.PRIMARY_KEY, TokenType.FOREIGN_KEY} + 715 TRANSACTION_KIND = {"DEFERRED", "IMMEDIATE", "EXCLUSIVE"} 716 - 717 STRICT_CAST = True - 718 - 719 CONVERT_TYPE_FIRST = False - 720 - 721 __slots__ = ( - 722 "error_level", - 723 "error_message_context", - 724 "sql", - 725 "errors", - 726 "index_offset", - 727 "unnest_column_only", - 728 "alias_post_tablesample", - 729 "max_errors", - 730 "null_ordering", - 731 "_tokens", - 732 "_index", - 733 "_curr", - 734 "_next", - 735 "_prev", - 736 "_prev_comments", - 737 "_show_trie", - 738 "_set_trie", - 739 ) - 740 - 741 def __init__( - 742 self, - 743 error_level: t.Optional[ErrorLevel] = None, - 744 error_message_context: int = 100, - 745 index_offset: int = 0, - 746 unnest_column_only: bool = False, - 747 alias_post_tablesample: bool = False, - 748 max_errors: int = 3, - 749 null_ordering: t.Optional[str] = None, - 750 ): - 751 self.error_level = error_level or ErrorLevel.IMMEDIATE - 752 self.error_message_context = error_message_context - 753 self.index_offset = index_offset - 754 self.unnest_column_only = unnest_column_only - 755 self.alias_post_tablesample = alias_post_tablesample - 756 self.max_errors = max_errors - 757 self.null_ordering = null_ordering - 758 self.reset() - 759 - 760 def reset(self): - 761 self.sql = "" - 762 self.errors = [] - 763 self._tokens = [] - 764 self._index = 0 - 765 self._curr = None - 766 self._next = None - 767 self._prev = None - 768 self._prev_comments = None - 769 - 770 def parse( - 771 self, raw_tokens: t.List[Token], sql: t.Optional[str] = None - 772 ) -> t.List[t.Optional[exp.Expression]]: - 773 """ - 774 Parses a list of tokens and returns a list of syntax trees, one tree - 775 per parsed SQL statement. - 776 - 777 Args: - 778 raw_tokens: the list of tokens. - 779 sql: the original SQL string, used to produce helpful debug messages. - 780 - 781 Returns: - 782 The list of syntax trees. - 783 """ - 784 return self._parse( - 785 parse_method=self.__class__._parse_statement, raw_tokens=raw_tokens, sql=sql - 786 ) - 787 - 788 def parse_into( - 789 self, - 790 expression_types: exp.IntoType, - 791 raw_tokens: t.List[Token], - 792 sql: t.Optional[str] = None, - 793 ) -> t.List[t.Optional[exp.Expression]]: - 794 """ - 795 Parses a list of tokens into a given Expression type. If a collection of Expression - 796 types is given instead, this method will try to parse the token list into each one - 797 of them, stopping at the first for which the parsing succeeds. - 798 - 799 Args: - 800 expression_types: the expression type(s) to try and parse the token list into. - 801 raw_tokens: the list of tokens. - 802 sql: the original SQL string, used to produce helpful debug messages. - 803 - 804 Returns: - 805 The target Expression. - 806 """ - 807 errors = [] - 808 for expression_type in ensure_collection(expression_types): - 809 parser = self.EXPRESSION_PARSERS.get(expression_type) - 810 if not parser: - 811 raise TypeError(f"No parser registered for {expression_type}") - 812 try: - 813 return self._parse(parser, raw_tokens, sql) - 814 except ParseError as e: - 815 e.errors[0]["into_expression"] = expression_type - 816 errors.append(e) - 817 raise ParseError( - 818 f"Failed to parse into {expression_types}", - 819 errors=merge_errors(errors), - 820 ) from errors[-1] - 821 - 822 def _parse( - 823 self, - 824 parse_method: t.Callable[[Parser], t.Optional[exp.Expression]], - 825 raw_tokens: t.List[Token], - 826 sql: t.Optional[str] = None, - 827 ) -> t.List[t.Optional[exp.Expression]]: - 828 self.reset() - 829 self.sql = sql or "" - 830 total = len(raw_tokens) - 831 chunks: t.List[t.List[Token]] = [[]] - 832 - 833 for i, token in enumerate(raw_tokens): - 834 if token.token_type == TokenType.SEMICOLON: - 835 if i < total - 1: - 836 chunks.append([]) - 837 else: - 838 chunks[-1].append(token) - 839 - 840 expressions = [] - 841 - 842 for tokens in chunks: - 843 self._index = -1 - 844 self._tokens = tokens - 845 self._advance() - 846 - 847 expressions.append(parse_method(self)) - 848 - 849 if self._index < len(self._tokens): - 850 self.raise_error("Invalid expression / Unexpected token") - 851 - 852 self.check_errors() - 853 - 854 return expressions - 855 - 856 def check_errors(self) -> None: - 857 """ - 858 Logs or raises any found errors, depending on the chosen error level setting. - 859 """ - 860 if self.error_level == ErrorLevel.WARN: - 861 for error in self.errors: - 862 logger.error(str(error)) - 863 elif self.error_level == ErrorLevel.RAISE and self.errors: - 864 raise ParseError( - 865 concat_messages(self.errors, self.max_errors), - 866 errors=merge_errors(self.errors), - 867 ) + 717 TRANSACTION_CHARACTERISTICS = { + 718 "ISOLATION LEVEL REPEATABLE READ", + 719 "ISOLATION LEVEL READ COMMITTED", + 720 "ISOLATION LEVEL READ UNCOMMITTED", + 721 "ISOLATION LEVEL SERIALIZABLE", + 722 "READ WRITE", + 723 "READ ONLY", + 724 } + 725 + 726 INSERT_ALTERNATIVES = {"ABORT", "FAIL", "IGNORE", "REPLACE", "ROLLBACK"} + 727 + 728 WINDOW_ALIAS_TOKENS = ID_VAR_TOKENS - {TokenType.ROWS} + 729 + 730 ADD_CONSTRAINT_TOKENS = {TokenType.CONSTRAINT, TokenType.PRIMARY_KEY, TokenType.FOREIGN_KEY} + 731 + 732 STRICT_CAST = True + 733 + 734 CONVERT_TYPE_FIRST = False + 735 + 736 __slots__ = ( + 737 "error_level", + 738 "error_message_context", + 739 "sql", + 740 "errors", + 741 "index_offset", + 742 "unnest_column_only", + 743 "alias_post_tablesample", + 744 "max_errors", + 745 "null_ordering", + 746 "_tokens", + 747 "_index", + 748 "_curr", + 749 "_next", + 750 "_prev", + 751 "_prev_comments", + 752 "_show_trie", + 753 "_set_trie", + 754 ) + 755 + 756 def __init__( + 757 self, + 758 error_level: t.Optional[ErrorLevel] = None, + 759 error_message_context: int = 100, + 760 index_offset: int = 0, + 761 unnest_column_only: bool = False, + 762 alias_post_tablesample: bool = False, + 763 max_errors: int = 3, + 764 null_ordering: t.Optional[str] = None, + 765 ): + 766 self.error_level = error_level or ErrorLevel.IMMEDIATE + 767 self.error_message_context = error_message_context + 768 self.index_offset = index_offset + 769 self.unnest_column_only = unnest_column_only + 770 self.alias_post_tablesample = alias_post_tablesample + 771 self.max_errors = max_errors + 772 self.null_ordering = null_ordering + 773 self.reset() + 774 + 775 def reset(self): + 776 self.sql = "" + 777 self.errors = [] + 778 self._tokens = [] + 779 self._index = 0 + 780 self._curr = None + 781 self._next = None + 782 self._prev = None + 783 self._prev_comments = None + 784 + 785 def parse( + 786 self, raw_tokens: t.List[Token], sql: t.Optional[str] = None + 787 ) -> t.List[t.Optional[exp.Expression]]: + 788 """ + 789 Parses a list of tokens and returns a list of syntax trees, one tree + 790 per parsed SQL statement. + 791 + 792 Args: + 793 raw_tokens: the list of tokens. + 794 sql: the original SQL string, used to produce helpful debug messages. + 795 + 796 Returns: + 797 The list of syntax trees. + 798 """ + 799 return self._parse( + 800 parse_method=self.__class__._parse_statement, raw_tokens=raw_tokens, sql=sql + 801 ) + 802 + 803 def parse_into( + 804 self, + 805 expression_types: exp.IntoType, + 806 raw_tokens: t.List[Token], + 807 sql: t.Optional[str] = None, + 808 ) -> t.List[t.Optional[exp.Expression]]: + 809 """ + 810 Parses a list of tokens into a given Expression type. If a collection of Expression + 811 types is given instead, this method will try to parse the token list into each one + 812 of them, stopping at the first for which the parsing succeeds. + 813 + 814 Args: + 815 expression_types: the expression type(s) to try and parse the token list into. + 816 raw_tokens: the list of tokens. + 817 sql: the original SQL string, used to produce helpful debug messages. + 818 + 819 Returns: + 820 The target Expression. + 821 """ + 822 errors = [] + 823 for expression_type in ensure_collection(expression_types): + 824 parser = self.EXPRESSION_PARSERS.get(expression_type) + 825 if not parser: + 826 raise TypeError(f"No parser registered for {expression_type}") + 827 try: + 828 return self._parse(parser, raw_tokens, sql) + 829 except ParseError as e: + 830 e.errors[0]["into_expression"] = expression_type + 831 errors.append(e) + 832 raise ParseError( + 833 f"Failed to parse into {expression_types}", + 834 errors=merge_errors(errors), + 835 ) from errors[-1] + 836 + 837 def _parse( + 838 self, + 839 parse_method: t.Callable[[Parser], t.Optional[exp.Expression]], + 840 raw_tokens: t.List[Token], + 841 sql: t.Optional[str] = None, + 842 ) -> t.List[t.Optional[exp.Expression]]: + 843 self.reset() + 844 self.sql = sql or "" + 845 total = len(raw_tokens) + 846 chunks: t.List[t.List[Token]] = [[]] + 847 + 848 for i, token in enumerate(raw_tokens): + 849 if token.token_type == TokenType.SEMICOLON: + 850 if i < total - 1: + 851 chunks.append([]) + 852 else: + 853 chunks[-1].append(token) + 854 + 855 expressions = [] + 856 + 857 for tokens in chunks: + 858 self._index = -1 + 859 self._tokens = tokens + 860 self._advance() + 861 + 862 expressions.append(parse_method(self)) + 863 + 864 if self._index < len(self._tokens): + 865 self.raise_error("Invalid expression / Unexpected token") + 866 + 867 self.check_errors() 868 - 869 def raise_error(self, message: str, token: t.Optional[Token] = None) -> None: - 870 """ - 871 Appends an error in the list of recorded errors or raises it, depending on the chosen - 872 error level setting. - 873 """ - 874 token = token or self._curr or self._prev or Token.string("") - 875 start = self._find_token(token) - 876 end = start + len(token.text) - 877 start_context = self.sql[max(start - self.error_message_context, 0) : start] - 878 highlight = self.sql[start:end] - 879 end_context = self.sql[end : end + self.error_message_context] - 880 - 881 error = ParseError.new( - 882 f"{message}. Line {token.line}, Col: {token.col}.\n" - 883 f" {start_context}\033[4m{highlight}\033[0m{end_context}", - 884 description=message, - 885 line=token.line, - 886 col=token.col, - 887 start_context=start_context, - 888 highlight=highlight, - 889 end_context=end_context, - 890 ) - 891 - 892 if self.error_level == ErrorLevel.IMMEDIATE: - 893 raise error - 894 - 895 self.errors.append(error) - 896 - 897 def expression( - 898 self, exp_class: t.Type[exp.Expression], comments: t.Optional[t.List[str]] = None, **kwargs - 899 ) -> exp.Expression: - 900 """ - 901 Creates a new, validated Expression. - 902 - 903 Args: - 904 exp_class: the expression class to instantiate. - 905 comments: an optional list of comments to attach to the expression. - 906 kwargs: the arguments to set for the expression along with their respective values. - 907 - 908 Returns: - 909 The target expression. - 910 """ - 911 instance = exp_class(**kwargs) - 912 if self._prev_comments: - 913 instance.comments = self._prev_comments - 914 self._prev_comments = None - 915 if comments: - 916 instance.comments = comments - 917 self.validate_expression(instance) - 918 return instance - 919 - 920 def validate_expression( - 921 self, expression: exp.Expression, args: t.Optional[t.List] = None - 922 ) -> None: - 923 """ - 924 Validates an already instantiated expression, making sure that all its mandatory arguments - 925 are set. - 926 - 927 Args: - 928 expression: the expression to validate. - 929 args: an optional list of items that was used to instantiate the expression, if it's a Func. - 930 """ - 931 if self.error_level == ErrorLevel.IGNORE: - 932 return - 933 - 934 for error_message in expression.error_messages(args): - 935 self.raise_error(error_message) - 936 - 937 def _find_sql(self, start: Token, end: Token) -> str: - 938 return self.sql[self._find_token(start) : self._find_token(end) + len(end.text)] - 939 - 940 def _find_token(self, token: Token) -> int: - 941 line = 1 - 942 col = 1 - 943 index = 0 - 944 - 945 while line < token.line or col < token.col: - 946 if Tokenizer.WHITE_SPACE.get(self.sql[index]) == TokenType.BREAK: - 947 line += 1 - 948 col = 1 - 949 else: - 950 col += 1 - 951 index += 1 - 952 - 953 return index + 869 return expressions + 870 + 871 def check_errors(self) -> None: + 872 """ + 873 Logs or raises any found errors, depending on the chosen error level setting. + 874 """ + 875 if self.error_level == ErrorLevel.WARN: + 876 for error in self.errors: + 877 logger.error(str(error)) + 878 elif self.error_level == ErrorLevel.RAISE and self.errors: + 879 raise ParseError( + 880 concat_messages(self.errors, self.max_errors), + 881 errors=merge_errors(self.errors), + 882 ) + 883 + 884 def raise_error(self, message: str, token: t.Optional[Token] = None) -> None: + 885 """ + 886 Appends an error in the list of recorded errors or raises it, depending on the chosen + 887 error level setting. + 888 """ + 889 token = token or self._curr or self._prev or Token.string("") + 890 start = self._find_token(token) + 891 end = start + len(token.text) + 892 start_context = self.sql[max(start - self.error_message_context, 0) : start] + 893 highlight = self.sql[start:end] + 894 end_context = self.sql[end : end + self.error_message_context] + 895 + 896 error = ParseError.new( + 897 f"{message}. Line {token.line}, Col: {token.col}.\n" + 898 f" {start_context}\033[4m{highlight}\033[0m{end_context}", + 899 description=message, + 900 line=token.line, + 901 col=token.col, + 902 start_context=start_context, + 903 highlight=highlight, + 904 end_context=end_context, + 905 ) + 906 + 907 if self.error_level == ErrorLevel.IMMEDIATE: + 908 raise error + 909 + 910 self.errors.append(error) + 911 + 912 def expression( + 913 self, exp_class: t.Type[exp.Expression], comments: t.Optional[t.List[str]] = None, **kwargs + 914 ) -> exp.Expression: + 915 """ + 916 Creates a new, validated Expression. + 917 + 918 Args: + 919 exp_class: the expression class to instantiate. + 920 comments: an optional list of comments to attach to the expression. + 921 kwargs: the arguments to set for the expression along with their respective values. + 922 + 923 Returns: + 924 The target expression. + 925 """ + 926 instance = exp_class(**kwargs) + 927 if self._prev_comments: + 928 instance.comments = self._prev_comments + 929 self._prev_comments = None + 930 if comments: + 931 instance.comments = comments + 932 self.validate_expression(instance) + 933 return instance + 934 + 935 def validate_expression( + 936 self, expression: exp.Expression, args: t.Optional[t.List] = None + 937 ) -> None: + 938 """ + 939 Validates an already instantiated expression, making sure that all its mandatory arguments + 940 are set. + 941 + 942 Args: + 943 expression: the expression to validate. + 944 args: an optional list of items that was used to instantiate the expression, if it's a Func. + 945 """ + 946 if self.error_level == ErrorLevel.IGNORE: + 947 return + 948 + 949 for error_message in expression.error_messages(args): + 950 self.raise_error(error_message) + 951 + 952 def _find_sql(self, start: Token, end: Token) -> str: + 953 return self.sql[self._find_token(start) : self._find_token(end) + len(end.text)] 954 - 955 def _advance(self, times: int = 1) -> None: - 956 self._index += times - 957 self._curr = seq_get(self._tokens, self._index) - 958 self._next = seq_get(self._tokens, self._index + 1) - 959 if self._index > 0: - 960 self._prev = self._tokens[self._index - 1] - 961 self._prev_comments = self._prev.comments - 962 else: - 963 self._prev = None - 964 self._prev_comments = None - 965 - 966 def _retreat(self, index: int) -> None: - 967 if index != self._index: - 968 self._advance(index - self._index) + 955 def _find_token(self, token: Token) -> int: + 956 line = 1 + 957 col = 1 + 958 index = 0 + 959 + 960 while line < token.line or col < token.col: + 961 if Tokenizer.WHITE_SPACE.get(self.sql[index]) == TokenType.BREAK: + 962 line += 1 + 963 col = 1 + 964 else: + 965 col += 1 + 966 index += 1 + 967 + 968 return index 969 - 970 def _parse_command(self) -> exp.Expression: - 971 return self.expression(exp.Command, this=self._prev.text, expression=self._parse_string()) - 972 - 973 def _parse_comment(self, allow_exists: bool = True) -> exp.Expression: - 974 start = self._prev - 975 exists = self._parse_exists() if allow_exists else None - 976 - 977 self._match(TokenType.ON) - 978 - 979 kind = self._match_set(self.CREATABLES) and self._prev + 970 def _advance(self, times: int = 1) -> None: + 971 self._index += times + 972 self._curr = seq_get(self._tokens, self._index) + 973 self._next = seq_get(self._tokens, self._index + 1) + 974 if self._index > 0: + 975 self._prev = self._tokens[self._index - 1] + 976 self._prev_comments = self._prev.comments + 977 else: + 978 self._prev = None + 979 self._prev_comments = None 980 - 981 if not kind: - 982 return self._parse_as_command(start) - 983 - 984 if kind.token_type in (TokenType.FUNCTION, TokenType.PROCEDURE): - 985 this = self._parse_user_defined_function(kind=kind.token_type) - 986 elif kind.token_type == TokenType.TABLE: - 987 this = self._parse_table() - 988 elif kind.token_type == TokenType.COLUMN: - 989 this = self._parse_column() - 990 else: - 991 this = self._parse_id_var() - 992 - 993 self._match(TokenType.IS) - 994 - 995 return self.expression( - 996 exp.Comment, this=this, kind=kind.text, expression=self._parse_string(), exists=exists - 997 ) + 981 def _retreat(self, index: int) -> None: + 982 if index != self._index: + 983 self._advance(index - self._index) + 984 + 985 def _parse_command(self) -> exp.Expression: + 986 return self.expression(exp.Command, this=self._prev.text, expression=self._parse_string()) + 987 + 988 def _parse_comment(self, allow_exists: bool = True) -> exp.Expression: + 989 start = self._prev + 990 exists = self._parse_exists() if allow_exists else None + 991 + 992 self._match(TokenType.ON) + 993 + 994 kind = self._match_set(self.CREATABLES) and self._prev + 995 + 996 if not kind: + 997 return self._parse_as_command(start) 998 - 999 def _parse_statement(self) -> t.Optional[exp.Expression]: -1000 if self._curr is None: -1001 return None -1002 -1003 if self._match_set(self.STATEMENT_PARSERS): -1004 return self.STATEMENT_PARSERS[self._prev.token_type](self) -1005 -1006 if self._match_set(Tokenizer.COMMANDS): -1007 return self._parse_command() -1008 -1009 expression = self._parse_expression() -1010 expression = self._parse_set_operations(expression) if expression else self._parse_select() -1011 -1012 self._parse_query_modifiers(expression) -1013 return expression -1014 -1015 def _parse_drop(self, default_kind: t.Optional[str] = None) -> t.Optional[exp.Expression]: -1016 start = self._prev -1017 temporary = self._match(TokenType.TEMPORARY) -1018 materialized = self._match(TokenType.MATERIALIZED) -1019 kind = self._match_set(self.CREATABLES) and self._prev.text -1020 if not kind: -1021 if default_kind: -1022 kind = default_kind -1023 else: -1024 return self._parse_as_command(start) -1025 -1026 return self.expression( -1027 exp.Drop, -1028 exists=self._parse_exists(), -1029 this=self._parse_table(schema=True), -1030 kind=kind, -1031 temporary=temporary, -1032 materialized=materialized, -1033 cascade=self._match(TokenType.CASCADE), -1034 ) -1035 -1036 def _parse_exists(self, not_: bool = False) -> t.Optional[bool]: -1037 return ( -1038 self._match(TokenType.IF) -1039 and (not not_ or self._match(TokenType.NOT)) -1040 and self._match(TokenType.EXISTS) -1041 ) -1042 -1043 def _parse_create(self) -> t.Optional[exp.Expression]: -1044 start = self._prev -1045 replace = self._prev.text.upper() == "REPLACE" or self._match_pair( -1046 TokenType.OR, TokenType.REPLACE -1047 ) -1048 unique = self._match(TokenType.UNIQUE) -1049 volatile = self._match(TokenType.VOLATILE) + 999 if kind.token_type in (TokenType.FUNCTION, TokenType.PROCEDURE): +1000 this = self._parse_user_defined_function(kind=kind.token_type) +1001 elif kind.token_type == TokenType.TABLE: +1002 this = self._parse_table() +1003 elif kind.token_type == TokenType.COLUMN: +1004 this = self._parse_column() +1005 else: +1006 this = self._parse_id_var() +1007 +1008 self._match(TokenType.IS) +1009 +1010 return self.expression( +1011 exp.Comment, this=this, kind=kind.text, expression=self._parse_string(), exists=exists +1012 ) +1013 +1014 def _parse_statement(self) -> t.Optional[exp.Expression]: +1015 if self._curr is None: +1016 return None +1017 +1018 if self._match_set(self.STATEMENT_PARSERS): +1019 return self.STATEMENT_PARSERS[self._prev.token_type](self) +1020 +1021 if self._match_set(Tokenizer.COMMANDS): +1022 return self._parse_command() +1023 +1024 expression = self._parse_expression() +1025 expression = self._parse_set_operations(expression) if expression else self._parse_select() +1026 +1027 self._parse_query_modifiers(expression) +1028 return expression +1029 +1030 def _parse_drop(self, default_kind: t.Optional[str] = None) -> t.Optional[exp.Expression]: +1031 start = self._prev +1032 temporary = self._match(TokenType.TEMPORARY) +1033 materialized = self._match(TokenType.MATERIALIZED) +1034 kind = self._match_set(self.CREATABLES) and self._prev.text +1035 if not kind: +1036 if default_kind: +1037 kind = default_kind +1038 else: +1039 return self._parse_as_command(start) +1040 +1041 return self.expression( +1042 exp.Drop, +1043 exists=self._parse_exists(), +1044 this=self._parse_table(schema=True), +1045 kind=kind, +1046 temporary=temporary, +1047 materialized=materialized, +1048 cascade=self._match(TokenType.CASCADE), +1049 ) 1050 -1051 if self._match_pair(TokenType.TABLE, TokenType.FUNCTION, advance=False): -1052 self._match(TokenType.TABLE) -1053 -1054 properties = None -1055 create_token = self._match_set(self.CREATABLES) and self._prev -1056 -1057 if not create_token: -1058 properties = self._parse_properties() # exp.Properties.Location.POST_CREATE -1059 create_token = self._match_set(self.CREATABLES) and self._prev -1060 -1061 if not properties or not create_token: -1062 return self._parse_as_command(start) -1063 -1064 exists = self._parse_exists(not_=True) -1065 this = None -1066 expression = None -1067 indexes = None -1068 no_schema_binding = None -1069 begin = None -1070 -1071 if create_token.token_type in (TokenType.FUNCTION, TokenType.PROCEDURE): -1072 this = self._parse_user_defined_function(kind=create_token.token_type) -1073 temp_properties = self._parse_properties() -1074 if properties and temp_properties: -1075 properties.expressions.extend(temp_properties.expressions) -1076 elif temp_properties: -1077 properties = temp_properties +1051 def _parse_exists(self, not_: bool = False) -> t.Optional[bool]: +1052 return ( +1053 self._match(TokenType.IF) +1054 and (not not_ or self._match(TokenType.NOT)) +1055 and self._match(TokenType.EXISTS) +1056 ) +1057 +1058 def _parse_create(self) -> t.Optional[exp.Expression]: +1059 start = self._prev +1060 replace = self._prev.text.upper() == "REPLACE" or self._match_pair( +1061 TokenType.OR, TokenType.REPLACE +1062 ) +1063 unique = self._match(TokenType.UNIQUE) +1064 volatile = self._match(TokenType.VOLATILE) +1065 +1066 if self._match_pair(TokenType.TABLE, TokenType.FUNCTION, advance=False): +1067 self._match(TokenType.TABLE) +1068 +1069 properties = None +1070 create_token = self._match_set(self.CREATABLES) and self._prev +1071 +1072 if not create_token: +1073 properties = self._parse_properties() # exp.Properties.Location.POST_CREATE +1074 create_token = self._match_set(self.CREATABLES) and self._prev +1075 +1076 if not properties or not create_token: +1077 return self._parse_as_command(start) 1078 -1079 self._match(TokenType.ALIAS) -1080 begin = self._match(TokenType.BEGIN) -1081 return_ = self._match_text_seq("RETURN") -1082 expression = self._parse_statement() -1083 -1084 if return_: -1085 expression = self.expression(exp.Return, this=expression) -1086 elif create_token.token_type == TokenType.INDEX: -1087 this = self._parse_index() -1088 elif create_token.token_type in self.DB_CREATABLES: -1089 table_parts = self._parse_table_parts(schema=True) -1090 -1091 # exp.Properties.Location.POST_NAME -1092 if self._match(TokenType.COMMA): -1093 temp_properties = self._parse_properties(before=True) -1094 if properties and temp_properties: -1095 properties.expressions.extend(temp_properties.expressions) -1096 elif temp_properties: -1097 properties = temp_properties +1079 exists = self._parse_exists(not_=True) +1080 this = None +1081 expression = None +1082 indexes = None +1083 no_schema_binding = None +1084 begin = None +1085 +1086 if create_token.token_type in (TokenType.FUNCTION, TokenType.PROCEDURE): +1087 this = self._parse_user_defined_function(kind=create_token.token_type) +1088 temp_properties = self._parse_properties() +1089 if properties and temp_properties: +1090 properties.expressions.extend(temp_properties.expressions) +1091 elif temp_properties: +1092 properties = temp_properties +1093 +1094 self._match(TokenType.ALIAS) +1095 begin = self._match(TokenType.BEGIN) +1096 return_ = self._match_text_seq("RETURN") +1097 expression = self._parse_statement() 1098 -1099 this = self._parse_schema(this=table_parts) -1100 -1101 # exp.Properties.Location.POST_SCHEMA and POST_WITH -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 -1110 # exp.Properties.Location.POST_ALIAS -1111 if not ( -1112 self._match(TokenType.SELECT, advance=False) -1113 or self._match(TokenType.WITH, advance=False) -1114 or self._match(TokenType.L_PAREN, advance=False) -1115 ): -1116 temp_properties = self._parse_properties() -1117 if properties and temp_properties: -1118 properties.expressions.extend(temp_properties.expressions) -1119 elif temp_properties: -1120 properties = temp_properties -1121 -1122 expression = self._parse_ddl_select() -1123 -1124 if create_token.token_type == TokenType.TABLE: -1125 # exp.Properties.Location.POST_EXPRESSION -1126 temp_properties = self._parse_properties() -1127 if properties and temp_properties: -1128 properties.expressions.extend(temp_properties.expressions) -1129 elif temp_properties: -1130 properties = temp_properties -1131 -1132 indexes = [] -1133 while True: -1134 index = self._parse_create_table_index() -1135 -1136 # exp.Properties.Location.POST_INDEX -1137 if self._match(TokenType.PARTITION_BY, advance=False): -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 if not index: -1145 break -1146 else: -1147 indexes.append(index) -1148 elif create_token.token_type == TokenType.VIEW: -1149 if self._match_text_seq("WITH", "NO", "SCHEMA", "BINDING"): -1150 no_schema_binding = True -1151 -1152 return self.expression( -1153 exp.Create, -1154 this=this, -1155 kind=create_token.text, -1156 replace=replace, -1157 unique=unique, -1158 volatile=volatile, -1159 expression=expression, -1160 exists=exists, -1161 properties=properties, -1162 indexes=indexes, -1163 no_schema_binding=no_schema_binding, -1164 begin=begin, -1165 ) +1099 if return_: +1100 expression = self.expression(exp.Return, this=expression) +1101 elif create_token.token_type == TokenType.INDEX: +1102 this = self._parse_index() +1103 elif create_token.token_type in self.DB_CREATABLES: +1104 table_parts = self._parse_table_parts(schema=True) +1105 +1106 # exp.Properties.Location.POST_NAME +1107 if self._match(TokenType.COMMA): +1108 temp_properties = self._parse_properties(before=True) +1109 if properties and temp_properties: +1110 properties.expressions.extend(temp_properties.expressions) +1111 elif temp_properties: +1112 properties = temp_properties +1113 +1114 this = self._parse_schema(this=table_parts) +1115 +1116 # exp.Properties.Location.POST_SCHEMA and POST_WITH +1117 temp_properties = self._parse_properties() +1118 if properties and temp_properties: +1119 properties.expressions.extend(temp_properties.expressions) +1120 elif temp_properties: +1121 properties = temp_properties +1122 +1123 self._match(TokenType.ALIAS) +1124 +1125 # exp.Properties.Location.POST_ALIAS +1126 if not ( +1127 self._match(TokenType.SELECT, advance=False) +1128 or self._match(TokenType.WITH, advance=False) +1129 or self._match(TokenType.L_PAREN, advance=False) +1130 ): +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 expression = self._parse_ddl_select() +1138 +1139 if create_token.token_type == TokenType.TABLE: +1140 # exp.Properties.Location.POST_EXPRESSION +1141 temp_properties = self._parse_properties() +1142 if properties and temp_properties: +1143 properties.expressions.extend(temp_properties.expressions) +1144 elif temp_properties: +1145 properties = temp_properties +1146 +1147 indexes = [] +1148 while True: +1149 index = self._parse_create_table_index() +1150 +1151 # exp.Properties.Location.POST_INDEX +1152 if self._match(TokenType.PARTITION_BY, advance=False): +1153 temp_properties = self._parse_properties() +1154 if properties and temp_properties: +1155 properties.expressions.extend(temp_properties.expressions) +1156 elif temp_properties: +1157 properties = temp_properties +1158 +1159 if not index: +1160 break +1161 else: +1162 indexes.append(index) +1163 elif create_token.token_type == TokenType.VIEW: +1164 if self._match_text_seq("WITH", "NO", "SCHEMA", "BINDING"): +1165 no_schema_binding = True 1166 -1167 def _parse_property_before(self) -> t.Optional[exp.Expression]: -1168 self._match(TokenType.COMMA) -1169 -1170 # parsers look to _prev for no/dual/default, so need to consume first -1171 self._match_text_seq("NO") -1172 self._match_text_seq("DUAL") -1173 self._match_text_seq("DEFAULT") -1174 -1175 if self.PROPERTY_PARSERS.get(self._curr.text.upper()): -1176 return self.PROPERTY_PARSERS[self._curr.text.upper()](self) -1177 -1178 return None -1179 -1180 def _parse_property(self) -> t.Optional[exp.Expression]: -1181 if self._match_texts(self.PROPERTY_PARSERS): -1182 return self.PROPERTY_PARSERS[self._prev.text.upper()](self) -1183 -1184 if self._match_pair(TokenType.DEFAULT, TokenType.CHARACTER_SET): -1185 return self._parse_character_set(default=True) -1186 -1187 if self._match_pair(TokenType.COMPOUND, TokenType.SORTKEY): -1188 return self._parse_sortkey(compound=True) +1167 return self.expression( +1168 exp.Create, +1169 this=this, +1170 kind=create_token.text, +1171 replace=replace, +1172 unique=unique, +1173 volatile=volatile, +1174 expression=expression, +1175 exists=exists, +1176 properties=properties, +1177 indexes=indexes, +1178 no_schema_binding=no_schema_binding, +1179 begin=begin, +1180 ) +1181 +1182 def _parse_property_before(self) -> t.Optional[exp.Expression]: +1183 self._match(TokenType.COMMA) +1184 +1185 # parsers look to _prev for no/dual/default, so need to consume first +1186 self._match_text_seq("NO") +1187 self._match_text_seq("DUAL") +1188 self._match_text_seq("DEFAULT") 1189 -1190 if self._match_text_seq("SQL", "SECURITY"): -1191 return self.expression(exp.SqlSecurityProperty, definer=self._match_text_seq("DEFINER")) +1190 if self.PROPERTY_PARSERS.get(self._curr.text.upper()): +1191 return self.PROPERTY_PARSERS[self._curr.text.upper()](self) 1192 -1193 assignment = self._match_pair( -1194 TokenType.VAR, TokenType.EQ, advance=False -1195 ) or self._match_pair(TokenType.STRING, TokenType.EQ, advance=False) -1196 -1197 if assignment: -1198 key = self._parse_var_or_string() -1199 self._match(TokenType.EQ) -1200 return self.expression(exp.Property, this=key, value=self._parse_column()) +1193 return None +1194 +1195 def _parse_property(self) -> t.Optional[exp.Expression]: +1196 if self._match_texts(self.PROPERTY_PARSERS): +1197 return self.PROPERTY_PARSERS[self._prev.text.upper()](self) +1198 +1199 if self._match_pair(TokenType.DEFAULT, TokenType.CHARACTER_SET): +1200 return self._parse_character_set(default=True) 1201 -1202 return None -1203 -1204 def _parse_property_assignment(self, exp_class: t.Type[exp.Expression]) -> exp.Expression: -1205 self._match(TokenType.EQ) -1206 self._match(TokenType.ALIAS) -1207 return self.expression( -1208 exp_class, -1209 this=self._parse_var_or_string() or self._parse_number() or self._parse_id_var(), -1210 ) +1202 if self._match_pair(TokenType.COMPOUND, TokenType.SORTKEY): +1203 return self._parse_sortkey(compound=True) +1204 +1205 if self._match_text_seq("SQL", "SECURITY"): +1206 return self.expression(exp.SqlSecurityProperty, definer=self._match_text_seq("DEFINER")) +1207 +1208 assignment = self._match_pair( +1209 TokenType.VAR, TokenType.EQ, advance=False +1210 ) or self._match_pair(TokenType.STRING, TokenType.EQ, advance=False) 1211 -1212 def _parse_properties(self, before=None) -> t.Optional[exp.Expression]: -1213 properties = [] -1214 -1215 while True: -1216 if before: -1217 identified_property = self._parse_property_before() -1218 else: -1219 identified_property = self._parse_property() -1220 -1221 if not identified_property: -1222 break -1223 for p in ensure_collection(identified_property): -1224 properties.append(p) -1225 -1226 if properties: -1227 return self.expression(exp.Properties, expressions=properties) -1228 -1229 return None -1230 -1231 def _parse_fallback(self, no=False) -> exp.Expression: -1232 self._match_text_seq("FALLBACK") -1233 return self.expression( -1234 exp.FallbackProperty, no=no, protection=self._match_text_seq("PROTECTION") -1235 ) -1236 -1237 def _parse_with_property( -1238 self, -1239 ) -> t.Union[t.Optional[exp.Expression], t.List[t.Optional[exp.Expression]]]: -1240 self._match(TokenType.WITH) -1241 if self._match(TokenType.L_PAREN, advance=False): -1242 return self._parse_wrapped_csv(self._parse_property) +1212 if assignment: +1213 key = self._parse_var_or_string() +1214 self._match(TokenType.EQ) +1215 return self.expression(exp.Property, this=key, value=self._parse_column()) +1216 +1217 return None +1218 +1219 def _parse_property_assignment(self, exp_class: t.Type[exp.Expression]) -> exp.Expression: +1220 self._match(TokenType.EQ) +1221 self._match(TokenType.ALIAS) +1222 return self.expression( +1223 exp_class, +1224 this=self._parse_var_or_string() or self._parse_number() or self._parse_id_var(), +1225 ) +1226 +1227 def _parse_properties(self, before=None) -> t.Optional[exp.Expression]: +1228 properties = [] +1229 +1230 while True: +1231 if before: +1232 identified_property = self._parse_property_before() +1233 else: +1234 identified_property = self._parse_property() +1235 +1236 if not identified_property: +1237 break +1238 for p in ensure_list(identified_property): +1239 properties.append(p) +1240 +1241 if properties: +1242 return self.expression(exp.Properties, expressions=properties) 1243 -1244 if self._match_text_seq("JOURNAL"): -1245 return self._parse_withjournaltable() -1246 -1247 if self._match_text_seq("DATA"): -1248 return self._parse_withdata(no=False) -1249 elif self._match_text_seq("NO", "DATA"): -1250 return self._parse_withdata(no=True) +1244 return None +1245 +1246 def _parse_fallback(self, no=False) -> exp.Expression: +1247 self._match_text_seq("FALLBACK") +1248 return self.expression( +1249 exp.FallbackProperty, no=no, protection=self._match_text_seq("PROTECTION") +1250 ) 1251 -1252 if not self._next: -1253 return None -1254 -1255 return self._parse_withisolatedloading() -1256 -1257 # https://dev.mysql.com/doc/refman/8.0/en/create-view.html -1258 def _parse_definer(self) -> t.Optional[exp.Expression]: -1259 self._match(TokenType.EQ) -1260 -1261 user = self._parse_id_var() -1262 self._match(TokenType.PARAMETER) -1263 host = self._parse_id_var() or (self._match(TokenType.MOD) and self._prev.text) -1264 -1265 if not user or not host: -1266 return None -1267 -1268 return exp.DefinerProperty(this=f"{user}@{host}") +1252 def _parse_with_property( +1253 self, +1254 ) -> t.Union[t.Optional[exp.Expression], t.List[t.Optional[exp.Expression]]]: +1255 self._match(TokenType.WITH) +1256 if self._match(TokenType.L_PAREN, advance=False): +1257 return self._parse_wrapped_csv(self._parse_property) +1258 +1259 if self._match_text_seq("JOURNAL"): +1260 return self._parse_withjournaltable() +1261 +1262 if self._match_text_seq("DATA"): +1263 return self._parse_withdata(no=False) +1264 elif self._match_text_seq("NO", "DATA"): +1265 return self._parse_withdata(no=True) +1266 +1267 if not self._next: +1268 return None 1269 -1270 def _parse_withjournaltable(self) -> exp.Expression: -1271 self._match(TokenType.TABLE) -1272 self._match(TokenType.EQ) -1273 return self.expression(exp.WithJournalTableProperty, this=self._parse_table_parts()) -1274 -1275 def _parse_log(self, no=False) -> exp.Expression: -1276 self._match_text_seq("LOG") -1277 return self.expression(exp.LogProperty, no=no) -1278 -1279 def _parse_journal(self, no=False, dual=False) -> exp.Expression: -1280 before = self._match_text_seq("BEFORE") -1281 self._match_text_seq("JOURNAL") -1282 return self.expression(exp.JournalProperty, no=no, dual=dual, before=before) -1283 -1284 def _parse_afterjournal(self, no=False, dual=False, local=None) -> exp.Expression: -1285 self._match_text_seq("NOT") -1286 self._match_text_seq("LOCAL") -1287 self._match_text_seq("AFTER", "JOURNAL") -1288 return self.expression(exp.AfterJournalProperty, no=no, dual=dual, local=local) +1270 return self._parse_withisolatedloading() +1271 +1272 # https://dev.mysql.com/doc/refman/8.0/en/create-view.html +1273 def _parse_definer(self) -> t.Optional[exp.Expression]: +1274 self._match(TokenType.EQ) +1275 +1276 user = self._parse_id_var() +1277 self._match(TokenType.PARAMETER) +1278 host = self._parse_id_var() or (self._match(TokenType.MOD) and self._prev.text) +1279 +1280 if not user or not host: +1281 return None +1282 +1283 return exp.DefinerProperty(this=f"{user}@{host}") +1284 +1285 def _parse_withjournaltable(self) -> exp.Expression: +1286 self._match(TokenType.TABLE) +1287 self._match(TokenType.EQ) +1288 return self.expression(exp.WithJournalTableProperty, this=self._parse_table_parts()) 1289 -1290 def _parse_checksum(self) -> exp.Expression: -1291 self._match_text_seq("CHECKSUM") -1292 self._match(TokenType.EQ) +1290 def _parse_log(self, no=False) -> exp.Expression: +1291 self._match_text_seq("LOG") +1292 return self.expression(exp.LogProperty, no=no) 1293 -1294 on = None -1295 if self._match(TokenType.ON): -1296 on = True -1297 elif self._match_text_seq("OFF"): -1298 on = False -1299 default = self._match(TokenType.DEFAULT) -1300 -1301 return self.expression( -1302 exp.ChecksumProperty, -1303 on=on, -1304 default=default, -1305 ) -1306 -1307 def _parse_freespace(self) -> exp.Expression: -1308 self._match_text_seq("FREESPACE") -1309 self._match(TokenType.EQ) -1310 return self.expression( -1311 exp.FreespaceProperty, this=self._parse_number(), percent=self._match(TokenType.PERCENT) -1312 ) -1313 -1314 def _parse_mergeblockratio(self, no=False, default=False) -> exp.Expression: -1315 self._match_text_seq("MERGEBLOCKRATIO") -1316 if self._match(TokenType.EQ): -1317 return self.expression( -1318 exp.MergeBlockRatioProperty, -1319 this=self._parse_number(), -1320 percent=self._match(TokenType.PERCENT), -1321 ) -1322 else: -1323 return self.expression( -1324 exp.MergeBlockRatioProperty, -1325 no=no, -1326 default=default, -1327 ) +1294 def _parse_journal(self, no=False, dual=False) -> exp.Expression: +1295 before = self._match_text_seq("BEFORE") +1296 self._match_text_seq("JOURNAL") +1297 return self.expression(exp.JournalProperty, no=no, dual=dual, before=before) +1298 +1299 def _parse_afterjournal(self, no=False, dual=False, local=None) -> exp.Expression: +1300 self._match_text_seq("NOT") +1301 self._match_text_seq("LOCAL") +1302 self._match_text_seq("AFTER", "JOURNAL") +1303 return self.expression(exp.AfterJournalProperty, no=no, dual=dual, local=local) +1304 +1305 def _parse_checksum(self) -> exp.Expression: +1306 self._match_text_seq("CHECKSUM") +1307 self._match(TokenType.EQ) +1308 +1309 on = None +1310 if self._match(TokenType.ON): +1311 on = True +1312 elif self._match_text_seq("OFF"): +1313 on = False +1314 default = self._match(TokenType.DEFAULT) +1315 +1316 return self.expression( +1317 exp.ChecksumProperty, +1318 on=on, +1319 default=default, +1320 ) +1321 +1322 def _parse_freespace(self) -> exp.Expression: +1323 self._match_text_seq("FREESPACE") +1324 self._match(TokenType.EQ) +1325 return self.expression( +1326 exp.FreespaceProperty, this=self._parse_number(), percent=self._match(TokenType.PERCENT) +1327 ) 1328 -1329 def _parse_datablocksize(self, default=None) -> exp.Expression: -1330 if default: -1331 self._match_text_seq("DATABLOCKSIZE") -1332 return self.expression(exp.DataBlocksizeProperty, default=True) -1333 elif self._match_texts(("MIN", "MINIMUM")): -1334 self._match_text_seq("DATABLOCKSIZE") -1335 return self.expression(exp.DataBlocksizeProperty, min=True) -1336 elif self._match_texts(("MAX", "MAXIMUM")): -1337 self._match_text_seq("DATABLOCKSIZE") -1338 return self.expression(exp.DataBlocksizeProperty, min=False) -1339 -1340 self._match_text_seq("DATABLOCKSIZE") -1341 self._match(TokenType.EQ) -1342 size = self._parse_number() -1343 units = None -1344 if self._match_texts(("BYTES", "KBYTES", "KILOBYTES")): -1345 units = self._prev.text -1346 return self.expression(exp.DataBlocksizeProperty, size=size, units=units) -1347 -1348 def _parse_blockcompression(self) -> exp.Expression: -1349 self._match_text_seq("BLOCKCOMPRESSION") -1350 self._match(TokenType.EQ) -1351 always = self._match_text_seq("ALWAYS") -1352 manual = self._match_text_seq("MANUAL") -1353 never = self._match_text_seq("NEVER") -1354 default = self._match_text_seq("DEFAULT") -1355 autotemp = None -1356 if self._match_text_seq("AUTOTEMP"): -1357 autotemp = self._parse_schema() -1358 -1359 return self.expression( -1360 exp.BlockCompressionProperty, -1361 always=always, -1362 manual=manual, -1363 never=never, -1364 default=default, -1365 autotemp=autotemp, -1366 ) -1367 -1368 def _parse_withisolatedloading(self) -> exp.Expression: -1369 no = self._match_text_seq("NO") -1370 concurrent = self._match_text_seq("CONCURRENT") -1371 self._match_text_seq("ISOLATED", "LOADING") -1372 for_all = self._match_text_seq("FOR", "ALL") -1373 for_insert = self._match_text_seq("FOR", "INSERT") -1374 for_none = self._match_text_seq("FOR", "NONE") -1375 return self.expression( -1376 exp.IsolatedLoadingProperty, -1377 no=no, -1378 concurrent=concurrent, -1379 for_all=for_all, -1380 for_insert=for_insert, -1381 for_none=for_none, -1382 ) -1383 -1384 def _parse_locking(self) -> exp.Expression: -1385 if self._match(TokenType.TABLE): -1386 kind = "TABLE" -1387 elif self._match(TokenType.VIEW): -1388 kind = "VIEW" -1389 elif self._match(TokenType.ROW): -1390 kind = "ROW" -1391 elif self._match_text_seq("DATABASE"): -1392 kind = "DATABASE" -1393 else: -1394 kind = None -1395 -1396 if kind in ("DATABASE", "TABLE", "VIEW"): -1397 this = self._parse_table_parts() -1398 else: -1399 this = None -1400 -1401 if self._match(TokenType.FOR): -1402 for_or_in = "FOR" -1403 elif self._match(TokenType.IN): -1404 for_or_in = "IN" -1405 else: -1406 for_or_in = None -1407 -1408 if self._match_text_seq("ACCESS"): -1409 lock_type = "ACCESS" -1410 elif self._match_texts(("EXCL", "EXCLUSIVE")): -1411 lock_type = "EXCLUSIVE" -1412 elif self._match_text_seq("SHARE"): -1413 lock_type = "SHARE" -1414 elif self._match_text_seq("READ"): -1415 lock_type = "READ" -1416 elif self._match_text_seq("WRITE"): -1417 lock_type = "WRITE" -1418 elif self._match_text_seq("CHECKSUM"): -1419 lock_type = "CHECKSUM" +1329 def _parse_mergeblockratio(self, no=False, default=False) -> exp.Expression: +1330 self._match_text_seq("MERGEBLOCKRATIO") +1331 if self._match(TokenType.EQ): +1332 return self.expression( +1333 exp.MergeBlockRatioProperty, +1334 this=self._parse_number(), +1335 percent=self._match(TokenType.PERCENT), +1336 ) +1337 else: +1338 return self.expression( +1339 exp.MergeBlockRatioProperty, +1340 no=no, +1341 default=default, +1342 ) +1343 +1344 def _parse_datablocksize(self, default=None) -> exp.Expression: +1345 if default: +1346 self._match_text_seq("DATABLOCKSIZE") +1347 return self.expression(exp.DataBlocksizeProperty, default=True) +1348 elif self._match_texts(("MIN", "MINIMUM")): +1349 self._match_text_seq("DATABLOCKSIZE") +1350 return self.expression(exp.DataBlocksizeProperty, min=True) +1351 elif self._match_texts(("MAX", "MAXIMUM")): +1352 self._match_text_seq("DATABLOCKSIZE") +1353 return self.expression(exp.DataBlocksizeProperty, min=False) +1354 +1355 self._match_text_seq("DATABLOCKSIZE") +1356 self._match(TokenType.EQ) +1357 size = self._parse_number() +1358 units = None +1359 if self._match_texts(("BYTES", "KBYTES", "KILOBYTES")): +1360 units = self._prev.text +1361 return self.expression(exp.DataBlocksizeProperty, size=size, units=units) +1362 +1363 def _parse_blockcompression(self) -> exp.Expression: +1364 self._match_text_seq("BLOCKCOMPRESSION") +1365 self._match(TokenType.EQ) +1366 always = self._match_text_seq("ALWAYS") +1367 manual = self._match_text_seq("MANUAL") +1368 never = self._match_text_seq("NEVER") +1369 default = self._match_text_seq("DEFAULT") +1370 autotemp = None +1371 if self._match_text_seq("AUTOTEMP"): +1372 autotemp = self._parse_schema() +1373 +1374 return self.expression( +1375 exp.BlockCompressionProperty, +1376 always=always, +1377 manual=manual, +1378 never=never, +1379 default=default, +1380 autotemp=autotemp, +1381 ) +1382 +1383 def _parse_withisolatedloading(self) -> exp.Expression: +1384 no = self._match_text_seq("NO") +1385 concurrent = self._match_text_seq("CONCURRENT") +1386 self._match_text_seq("ISOLATED", "LOADING") +1387 for_all = self._match_text_seq("FOR", "ALL") +1388 for_insert = self._match_text_seq("FOR", "INSERT") +1389 for_none = self._match_text_seq("FOR", "NONE") +1390 return self.expression( +1391 exp.IsolatedLoadingProperty, +1392 no=no, +1393 concurrent=concurrent, +1394 for_all=for_all, +1395 for_insert=for_insert, +1396 for_none=for_none, +1397 ) +1398 +1399 def _parse_locking(self) -> exp.Expression: +1400 if self._match(TokenType.TABLE): +1401 kind = "TABLE" +1402 elif self._match(TokenType.VIEW): +1403 kind = "VIEW" +1404 elif self._match(TokenType.ROW): +1405 kind = "ROW" +1406 elif self._match_text_seq("DATABASE"): +1407 kind = "DATABASE" +1408 else: +1409 kind = None +1410 +1411 if kind in ("DATABASE", "TABLE", "VIEW"): +1412 this = self._parse_table_parts() +1413 else: +1414 this = None +1415 +1416 if self._match(TokenType.FOR): +1417 for_or_in = "FOR" +1418 elif self._match(TokenType.IN): +1419 for_or_in = "IN" 1420 else: -1421 lock_type = None +1421 for_or_in = None 1422 -1423 override = self._match_text_seq("OVERRIDE") -1424 -1425 return self.expression( -1426 exp.LockingProperty, -1427 this=this, -1428 kind=kind, -1429 for_or_in=for_or_in, -1430 lock_type=lock_type, -1431 override=override, -1432 ) -1433 -1434 def _parse_partition_by(self) -> t.List[t.Optional[exp.Expression]]: -1435 if self._match(TokenType.PARTITION_BY): -1436 return self._parse_csv(self._parse_conjunction) -1437 return [] -1438 -1439 def _parse_partitioned_by(self) -> exp.Expression: -1440 self._match(TokenType.EQ) -1441 return self.expression( -1442 exp.PartitionedByProperty, -1443 this=self._parse_schema() or self._parse_bracket(self._parse_field()), -1444 ) -1445 -1446 def _parse_withdata(self, no=False) -> exp.Expression: -1447 if self._match_text_seq("AND", "STATISTICS"): -1448 statistics = True -1449 elif self._match_text_seq("AND", "NO", "STATISTICS"): -1450 statistics = False -1451 else: -1452 statistics = None +1423 if self._match_text_seq("ACCESS"): +1424 lock_type = "ACCESS" +1425 elif self._match_texts(("EXCL", "EXCLUSIVE")): +1426 lock_type = "EXCLUSIVE" +1427 elif self._match_text_seq("SHARE"): +1428 lock_type = "SHARE" +1429 elif self._match_text_seq("READ"): +1430 lock_type = "READ" +1431 elif self._match_text_seq("WRITE"): +1432 lock_type = "WRITE" +1433 elif self._match_text_seq("CHECKSUM"): +1434 lock_type = "CHECKSUM" +1435 else: +1436 lock_type = None +1437 +1438 override = self._match_text_seq("OVERRIDE") +1439 +1440 return self.expression( +1441 exp.LockingProperty, +1442 this=this, +1443 kind=kind, +1444 for_or_in=for_or_in, +1445 lock_type=lock_type, +1446 override=override, +1447 ) +1448 +1449 def _parse_partition_by(self) -> t.List[t.Optional[exp.Expression]]: +1450 if self._match(TokenType.PARTITION_BY): +1451 return self._parse_csv(self._parse_conjunction) +1452 return [] 1453 -1454 return self.expression(exp.WithDataProperty, no=no, statistics=statistics) -1455 -1456 def _parse_noprimaryindex(self) -> exp.Expression: -1457 self._match_text_seq("PRIMARY", "INDEX") -1458 return exp.NoPrimaryIndexProperty() -1459 -1460 def _parse_oncommit(self) -> exp.Expression: -1461 self._match_text_seq("COMMIT", "PRESERVE", "ROWS") -1462 return exp.OnCommitProperty() -1463 -1464 def _parse_distkey(self) -> exp.Expression: -1465 return self.expression(exp.DistKeyProperty, this=self._parse_wrapped(self._parse_id_var)) -1466 -1467 def _parse_create_like(self) -> t.Optional[exp.Expression]: -1468 table = self._parse_table(schema=True) -1469 options = [] -1470 while self._match_texts(("INCLUDING", "EXCLUDING")): -1471 this = self._prev.text.upper() -1472 id_var = self._parse_id_var() -1473 -1474 if not id_var: -1475 return None -1476 -1477 options.append( -1478 self.expression( -1479 exp.Property, -1480 this=this, -1481 value=exp.Var(this=id_var.this.upper()), -1482 ) -1483 ) -1484 return self.expression(exp.LikeProperty, this=table, expressions=options) -1485 -1486 def _parse_sortkey(self, compound: bool = False) -> exp.Expression: -1487 return self.expression( -1488 exp.SortKeyProperty, this=self._parse_wrapped_csv(self._parse_id_var), compound=compound -1489 ) -1490 -1491 def _parse_character_set(self, default: bool = False) -> exp.Expression: -1492 self._match(TokenType.EQ) -1493 return self.expression( -1494 exp.CharacterSetProperty, this=self._parse_var_or_string(), default=default -1495 ) -1496 -1497 def _parse_returns(self) -> exp.Expression: -1498 value: t.Optional[exp.Expression] -1499 is_table = self._match(TokenType.TABLE) +1454 def _parse_partitioned_by(self) -> exp.Expression: +1455 self._match(TokenType.EQ) +1456 return self.expression( +1457 exp.PartitionedByProperty, +1458 this=self._parse_schema() or self._parse_bracket(self._parse_field()), +1459 ) +1460 +1461 def _parse_withdata(self, no=False) -> exp.Expression: +1462 if self._match_text_seq("AND", "STATISTICS"): +1463 statistics = True +1464 elif self._match_text_seq("AND", "NO", "STATISTICS"): +1465 statistics = False +1466 else: +1467 statistics = None +1468 +1469 return self.expression(exp.WithDataProperty, no=no, statistics=statistics) +1470 +1471 def _parse_noprimaryindex(self) -> exp.Expression: +1472 self._match_text_seq("PRIMARY", "INDEX") +1473 return exp.NoPrimaryIndexProperty() +1474 +1475 def _parse_oncommit(self) -> exp.Expression: +1476 self._match_text_seq("COMMIT", "PRESERVE", "ROWS") +1477 return exp.OnCommitProperty() +1478 +1479 def _parse_distkey(self) -> exp.Expression: +1480 return self.expression(exp.DistKeyProperty, this=self._parse_wrapped(self._parse_id_var)) +1481 +1482 def _parse_create_like(self) -> t.Optional[exp.Expression]: +1483 table = self._parse_table(schema=True) +1484 options = [] +1485 while self._match_texts(("INCLUDING", "EXCLUDING")): +1486 this = self._prev.text.upper() +1487 id_var = self._parse_id_var() +1488 +1489 if not id_var: +1490 return None +1491 +1492 options.append( +1493 self.expression( +1494 exp.Property, +1495 this=this, +1496 value=exp.Var(this=id_var.this.upper()), +1497 ) +1498 ) +1499 return self.expression(exp.LikeProperty, this=table, expressions=options) 1500 -1501 if is_table: -1502 if self._match(TokenType.LT): -1503 value = self.expression( -1504 exp.Schema, -1505 this="TABLE", -1506 expressions=self._parse_csv(self._parse_struct_kwargs), -1507 ) -1508 if not self._match(TokenType.GT): -1509 self.raise_error("Expecting >") -1510 else: -1511 value = self._parse_schema(exp.Var(this="TABLE")) -1512 else: -1513 value = self._parse_types() -1514 -1515 return self.expression(exp.ReturnsProperty, this=value, is_table=is_table) -1516 -1517 def _parse_temporary(self, global_=False) -> exp.Expression: -1518 self._match(TokenType.TEMPORARY) # in case calling from "GLOBAL" -1519 return self.expression(exp.TemporaryProperty, global_=global_) -1520 -1521 def _parse_describe(self) -> exp.Expression: -1522 kind = self._match_set(self.CREATABLES) and self._prev.text -1523 this = self._parse_table() -1524 -1525 return self.expression(exp.Describe, this=this, kind=kind) -1526 -1527 def _parse_insert(self) -> exp.Expression: -1528 overwrite = self._match(TokenType.OVERWRITE) -1529 local = self._match(TokenType.LOCAL) -1530 alternative = None +1501 def _parse_sortkey(self, compound: bool = False) -> exp.Expression: +1502 return self.expression( +1503 exp.SortKeyProperty, this=self._parse_wrapped_csv(self._parse_id_var), compound=compound +1504 ) +1505 +1506 def _parse_character_set(self, default: bool = False) -> exp.Expression: +1507 self._match(TokenType.EQ) +1508 return self.expression( +1509 exp.CharacterSetProperty, this=self._parse_var_or_string(), default=default +1510 ) +1511 +1512 def _parse_returns(self) -> exp.Expression: +1513 value: t.Optional[exp.Expression] +1514 is_table = self._match(TokenType.TABLE) +1515 +1516 if is_table: +1517 if self._match(TokenType.LT): +1518 value = self.expression( +1519 exp.Schema, +1520 this="TABLE", +1521 expressions=self._parse_csv(self._parse_struct_kwargs), +1522 ) +1523 if not self._match(TokenType.GT): +1524 self.raise_error("Expecting >") +1525 else: +1526 value = self._parse_schema(exp.Var(this="TABLE")) +1527 else: +1528 value = self._parse_types() +1529 +1530 return self.expression(exp.ReturnsProperty, this=value, is_table=is_table) 1531 -1532 if self._match_text_seq("DIRECTORY"): -1533 this: t.Optional[exp.Expression] = self.expression( -1534 exp.Directory, -1535 this=self._parse_var_or_string(), -1536 local=local, -1537 row_format=self._parse_row_format(match_row=True), -1538 ) -1539 else: -1540 if self._match(TokenType.OR): -1541 alternative = self._match_texts(self.INSERT_ALTERNATIVES) and self._prev.text -1542 -1543 self._match(TokenType.INTO) -1544 self._match(TokenType.TABLE) -1545 this = self._parse_table(schema=True) +1532 def _parse_temporary(self, global_=False) -> exp.Expression: +1533 self._match(TokenType.TEMPORARY) # in case calling from "GLOBAL" +1534 return self.expression(exp.TemporaryProperty, global_=global_) +1535 +1536 def _parse_describe(self) -> exp.Expression: +1537 kind = self._match_set(self.CREATABLES) and self._prev.text +1538 this = self._parse_table() +1539 +1540 return self.expression(exp.Describe, this=this, kind=kind) +1541 +1542 def _parse_insert(self) -> exp.Expression: +1543 overwrite = self._match(TokenType.OVERWRITE) +1544 local = self._match(TokenType.LOCAL) +1545 alternative = None 1546 -1547 return self.expression( -1548 exp.Insert, -1549 this=this, -1550 exists=self._parse_exists(), -1551 partition=self._parse_partition(), -1552 expression=self._parse_ddl_select(), -1553 returning=self._parse_returning(), -1554 overwrite=overwrite, -1555 alternative=alternative, -1556 ) +1547 if self._match_text_seq("DIRECTORY"): +1548 this: t.Optional[exp.Expression] = self.expression( +1549 exp.Directory, +1550 this=self._parse_var_or_string(), +1551 local=local, +1552 row_format=self._parse_row_format(match_row=True), +1553 ) +1554 else: +1555 if self._match(TokenType.OR): +1556 alternative = self._match_texts(self.INSERT_ALTERNATIVES) and self._prev.text 1557 -1558 def _parse_returning(self) -> t.Optional[exp.Expression]: -1559 if not self._match(TokenType.RETURNING): -1560 return None +1558 self._match(TokenType.INTO) +1559 self._match(TokenType.TABLE) +1560 this = self._parse_table(schema=True) 1561 -1562 return self.expression(exp.Returning, expressions=self._parse_csv(self._parse_column)) -1563 -1564 def _parse_row(self) -> t.Optional[exp.Expression]: -1565 if not self._match(TokenType.FORMAT): -1566 return None -1567 return self._parse_row_format() -1568 -1569 def _parse_row_format(self, match_row: bool = False) -> t.Optional[exp.Expression]: -1570 if match_row and not self._match_pair(TokenType.ROW, TokenType.FORMAT): -1571 return None +1562 return self.expression( +1563 exp.Insert, +1564 this=this, +1565 exists=self._parse_exists(), +1566 partition=self._parse_partition(), +1567 expression=self._parse_ddl_select(), +1568 returning=self._parse_returning(), +1569 overwrite=overwrite, +1570 alternative=alternative, +1571 ) 1572 -1573 if self._match_text_seq("SERDE"): -1574 return self.expression(exp.RowFormatSerdeProperty, this=self._parse_string()) -1575 -1576 self._match_text_seq("DELIMITED") -1577 -1578 kwargs = {} -1579 -1580 if self._match_text_seq("FIELDS", "TERMINATED", "BY"): -1581 kwargs["fields"] = self._parse_string() -1582 if self._match_text_seq("ESCAPED", "BY"): -1583 kwargs["escaped"] = self._parse_string() -1584 if self._match_text_seq("COLLECTION", "ITEMS", "TERMINATED", "BY"): -1585 kwargs["collection_items"] = self._parse_string() -1586 if self._match_text_seq("MAP", "KEYS", "TERMINATED", "BY"): -1587 kwargs["map_keys"] = self._parse_string() -1588 if self._match_text_seq("LINES", "TERMINATED", "BY"): -1589 kwargs["lines"] = self._parse_string() -1590 if self._match_text_seq("NULL", "DEFINED", "AS"): -1591 kwargs["null"] = self._parse_string() +1573 def _parse_returning(self) -> t.Optional[exp.Expression]: +1574 if not self._match(TokenType.RETURNING): +1575 return None +1576 +1577 return self.expression(exp.Returning, expressions=self._parse_csv(self._parse_column)) +1578 +1579 def _parse_row(self) -> t.Optional[exp.Expression]: +1580 if not self._match(TokenType.FORMAT): +1581 return None +1582 return self._parse_row_format() +1583 +1584 def _parse_row_format(self, match_row: bool = False) -> t.Optional[exp.Expression]: +1585 if match_row and not self._match_pair(TokenType.ROW, TokenType.FORMAT): +1586 return None +1587 +1588 if self._match_text_seq("SERDE"): +1589 return self.expression(exp.RowFormatSerdeProperty, this=self._parse_string()) +1590 +1591 self._match_text_seq("DELIMITED") 1592 -1593 return self.expression(exp.RowFormatDelimitedProperty, **kwargs) # type: ignore +1593 kwargs = {} 1594 -1595 def _parse_load_data(self) -> exp.Expression: -1596 local = self._match(TokenType.LOCAL) -1597 self._match_text_seq("INPATH") -1598 inpath = self._parse_string() -1599 overwrite = self._match(TokenType.OVERWRITE) -1600 self._match_pair(TokenType.INTO, TokenType.TABLE) -1601 -1602 return self.expression( -1603 exp.LoadData, -1604 this=self._parse_table(schema=True), -1605 local=local, -1606 overwrite=overwrite, -1607 inpath=inpath, -1608 partition=self._parse_partition(), -1609 input_format=self._match_text_seq("INPUTFORMAT") and self._parse_string(), -1610 serde=self._match_text_seq("SERDE") and self._parse_string(), -1611 ) -1612 -1613 def _parse_delete(self) -> exp.Expression: -1614 self._match(TokenType.FROM) -1615 -1616 return self.expression( -1617 exp.Delete, -1618 this=self._parse_table(schema=True), -1619 using=self._parse_csv(lambda: self._match(TokenType.USING) and self._parse_table()), -1620 where=self._parse_where(), -1621 returning=self._parse_returning(), -1622 ) -1623 -1624 def _parse_update(self) -> exp.Expression: -1625 return self.expression( -1626 exp.Update, -1627 **{ # type: ignore -1628 "this": self._parse_table(alias_tokens=self.UPDATE_ALIAS_TOKENS), -1629 "expressions": self._match(TokenType.SET) and self._parse_csv(self._parse_equality), -1630 "from": self._parse_from(), -1631 "where": self._parse_where(), -1632 "returning": self._parse_returning(), -1633 }, -1634 ) -1635 -1636 def _parse_uncache(self) -> exp.Expression: -1637 if not self._match(TokenType.TABLE): -1638 self.raise_error("Expecting TABLE after UNCACHE") -1639 +1595 if self._match_text_seq("FIELDS", "TERMINATED", "BY"): +1596 kwargs["fields"] = self._parse_string() +1597 if self._match_text_seq("ESCAPED", "BY"): +1598 kwargs["escaped"] = self._parse_string() +1599 if self._match_text_seq("COLLECTION", "ITEMS", "TERMINATED", "BY"): +1600 kwargs["collection_items"] = self._parse_string() +1601 if self._match_text_seq("MAP", "KEYS", "TERMINATED", "BY"): +1602 kwargs["map_keys"] = self._parse_string() +1603 if self._match_text_seq("LINES", "TERMINATED", "BY"): +1604 kwargs["lines"] = self._parse_string() +1605 if self._match_text_seq("NULL", "DEFINED", "AS"): +1606 kwargs["null"] = self._parse_string() +1607 +1608 return self.expression(exp.RowFormatDelimitedProperty, **kwargs) # type: ignore +1609 +1610 def _parse_load_data(self) -> exp.Expression: +1611 local = self._match(TokenType.LOCAL) +1612 self._match_text_seq("INPATH") +1613 inpath = self._parse_string() +1614 overwrite = self._match(TokenType.OVERWRITE) +1615 self._match_pair(TokenType.INTO, TokenType.TABLE) +1616 +1617 return self.expression( +1618 exp.LoadData, +1619 this=self._parse_table(schema=True), +1620 local=local, +1621 overwrite=overwrite, +1622 inpath=inpath, +1623 partition=self._parse_partition(), +1624 input_format=self._match_text_seq("INPUTFORMAT") and self._parse_string(), +1625 serde=self._match_text_seq("SERDE") and self._parse_string(), +1626 ) +1627 +1628 def _parse_delete(self) -> exp.Expression: +1629 self._match(TokenType.FROM) +1630 +1631 return self.expression( +1632 exp.Delete, +1633 this=self._parse_table(schema=True), +1634 using=self._parse_csv(lambda: self._match(TokenType.USING) and self._parse_table()), +1635 where=self._parse_where(), +1636 returning=self._parse_returning(), +1637 ) +1638 +1639 def _parse_update(self) -> exp.Expression: 1640 return self.expression( -1641 exp.Uncache, -1642 exists=self._parse_exists(), -1643 this=self._parse_table(schema=True), -1644 ) -1645 -1646 def _parse_cache(self) -> exp.Expression: -1647 lazy = self._match(TokenType.LAZY) -1648 self._match(TokenType.TABLE) -1649 table = self._parse_table(schema=True) -1650 options = [] -1651 -1652 if self._match(TokenType.OPTIONS): -1653 self._match_l_paren() -1654 k = self._parse_string() -1655 self._match(TokenType.EQ) -1656 v = self._parse_string() -1657 options = [k, v] -1658 self._match_r_paren() -1659 -1660 self._match(TokenType.ALIAS) -1661 return self.expression( -1662 exp.Cache, -1663 this=table, -1664 lazy=lazy, -1665 options=options, -1666 expression=self._parse_select(nested=True), -1667 ) -1668 -1669 def _parse_partition(self) -> t.Optional[exp.Expression]: -1670 if not self._match(TokenType.PARTITION): -1671 return None -1672 -1673 return self.expression( -1674 exp.Partition, expressions=self._parse_wrapped_csv(self._parse_conjunction) -1675 ) -1676 -1677 def _parse_value(self) -> exp.Expression: -1678 if self._match(TokenType.L_PAREN): -1679 expressions = self._parse_csv(self._parse_conjunction) -1680 self._match_r_paren() -1681 return self.expression(exp.Tuple, expressions=expressions) -1682 -1683 # In presto we can have VALUES 1, 2 which results in 1 column & 2 rows. -1684 # Source: https://prestodb.io/docs/current/sql/values.html -1685 return self.expression(exp.Tuple, expressions=[self._parse_conjunction()]) -1686 -1687 def _parse_select( -1688 self, nested: bool = False, table: bool = False, parse_subquery_alias: bool = True -1689 ) -> t.Optional[exp.Expression]: -1690 cte = self._parse_with() -1691 if cte: -1692 this = self._parse_statement() -1693 -1694 if not this: -1695 self.raise_error("Failed to parse any statement following CTE") -1696 return cte +1641 exp.Update, +1642 **{ # type: ignore +1643 "this": self._parse_table(alias_tokens=self.UPDATE_ALIAS_TOKENS), +1644 "expressions": self._match(TokenType.SET) and self._parse_csv(self._parse_equality), +1645 "from": self._parse_from(), +1646 "where": self._parse_where(), +1647 "returning": self._parse_returning(), +1648 }, +1649 ) +1650 +1651 def _parse_uncache(self) -> exp.Expression: +1652 if not self._match(TokenType.TABLE): +1653 self.raise_error("Expecting TABLE after UNCACHE") +1654 +1655 return self.expression( +1656 exp.Uncache, +1657 exists=self._parse_exists(), +1658 this=self._parse_table(schema=True), +1659 ) +1660 +1661 def _parse_cache(self) -> exp.Expression: +1662 lazy = self._match(TokenType.LAZY) +1663 self._match(TokenType.TABLE) +1664 table = self._parse_table(schema=True) +1665 options = [] +1666 +1667 if self._match(TokenType.OPTIONS): +1668 self._match_l_paren() +1669 k = self._parse_string() +1670 self._match(TokenType.EQ) +1671 v = self._parse_string() +1672 options = [k, v] +1673 self._match_r_paren() +1674 +1675 self._match(TokenType.ALIAS) +1676 return self.expression( +1677 exp.Cache, +1678 this=table, +1679 lazy=lazy, +1680 options=options, +1681 expression=self._parse_select(nested=True), +1682 ) +1683 +1684 def _parse_partition(self) -> t.Optional[exp.Expression]: +1685 if not self._match(TokenType.PARTITION): +1686 return None +1687 +1688 return self.expression( +1689 exp.Partition, expressions=self._parse_wrapped_csv(self._parse_conjunction) +1690 ) +1691 +1692 def _parse_value(self) -> exp.Expression: +1693 if self._match(TokenType.L_PAREN): +1694 expressions = self._parse_csv(self._parse_conjunction) +1695 self._match_r_paren() +1696 return self.expression(exp.Tuple, expressions=expressions) 1697 -1698 if "with" in this.arg_types: -1699 this.set("with", cte) -1700 else: -1701 self.raise_error(f"{this.key} does not support CTE") -1702 this = cte -1703 elif self._match(TokenType.SELECT): -1704 comments = self._prev_comments -1705 -1706 hint = self._parse_hint() -1707 all_ = self._match(TokenType.ALL) -1708 distinct = self._match(TokenType.DISTINCT) -1709 -1710 if distinct: -1711 distinct = self.expression( -1712 exp.Distinct, -1713 on=self._parse_value() if self._match(TokenType.ON) else None, -1714 ) -1715 -1716 if all_ and distinct: -1717 self.raise_error("Cannot specify both ALL and DISTINCT after SELECT") -1718 -1719 limit = self._parse_limit(top=True) -1720 expressions = self._parse_csv(self._parse_expression) -1721 -1722 this = self.expression( -1723 exp.Select, -1724 hint=hint, -1725 distinct=distinct, -1726 expressions=expressions, -1727 limit=limit, -1728 ) -1729 this.comments = comments -1730 -1731 into = self._parse_into() -1732 if into: -1733 this.set("into", into) -1734 -1735 from_ = self._parse_from() -1736 if from_: -1737 this.set("from", from_) +1698 # In presto we can have VALUES 1, 2 which results in 1 column & 2 rows. +1699 # Source: https://prestodb.io/docs/current/sql/values.html +1700 return self.expression(exp.Tuple, expressions=[self._parse_conjunction()]) +1701 +1702 def _parse_select( +1703 self, nested: bool = False, table: bool = False, parse_subquery_alias: bool = True +1704 ) -> t.Optional[exp.Expression]: +1705 cte = self._parse_with() +1706 if cte: +1707 this = self._parse_statement() +1708 +1709 if not this: +1710 self.raise_error("Failed to parse any statement following CTE") +1711 return cte +1712 +1713 if "with" in this.arg_types: +1714 this.set("with", cte) +1715 else: +1716 self.raise_error(f"{this.key} does not support CTE") +1717 this = cte +1718 elif self._match(TokenType.SELECT): +1719 comments = self._prev_comments +1720 +1721 kind = ( +1722 self._match(TokenType.ALIAS) +1723 and self._match_texts(("STRUCT", "VALUE")) +1724 and self._prev.text +1725 ) +1726 hint = self._parse_hint() +1727 all_ = self._match(TokenType.ALL) +1728 distinct = self._match(TokenType.DISTINCT) +1729 +1730 if distinct: +1731 distinct = self.expression( +1732 exp.Distinct, +1733 on=self._parse_value() if self._match(TokenType.ON) else None, +1734 ) +1735 +1736 if all_ and distinct: +1737 self.raise_error("Cannot specify both ALL and DISTINCT after SELECT") 1738 -1739 self._parse_query_modifiers(this) -1740 elif (table or nested) and self._match(TokenType.L_PAREN): -1741 this = self._parse_table() if table else self._parse_select(nested=True) -1742 self._parse_query_modifiers(this) -1743 this = self._parse_set_operations(this) -1744 self._match_r_paren() -1745 -1746 # early return so that subquery unions aren't parsed again -1747 # SELECT * FROM (SELECT 1) UNION ALL SELECT 1 -1748 # Union ALL should be a property of the top select node, not the subquery -1749 return self._parse_subquery(this, parse_alias=parse_subquery_alias) -1750 elif self._match(TokenType.VALUES): -1751 this = self.expression( -1752 exp.Values, -1753 expressions=self._parse_csv(self._parse_value), -1754 alias=self._parse_table_alias(), -1755 ) -1756 else: -1757 this = None -1758 -1759 return self._parse_set_operations(this) -1760 -1761 def _parse_with(self, skip_with_token: bool = False) -> t.Optional[exp.Expression]: -1762 if not skip_with_token and not self._match(TokenType.WITH): -1763 return None -1764 -1765 recursive = self._match(TokenType.RECURSIVE) +1739 limit = self._parse_limit(top=True) +1740 expressions = self._parse_csv(self._parse_expression) +1741 +1742 this = self.expression( +1743 exp.Select, +1744 kind=kind, +1745 hint=hint, +1746 distinct=distinct, +1747 expressions=expressions, +1748 limit=limit, +1749 ) +1750 this.comments = comments +1751 +1752 into = self._parse_into() +1753 if into: +1754 this.set("into", into) +1755 +1756 from_ = self._parse_from() +1757 if from_: +1758 this.set("from", from_) +1759 +1760 self._parse_query_modifiers(this) +1761 elif (table or nested) and self._match(TokenType.L_PAREN): +1762 this = self._parse_table() if table else self._parse_select(nested=True) +1763 self._parse_query_modifiers(this) +1764 this = self._parse_set_operations(this) +1765 self._match_r_paren() 1766 -1767 expressions = [] -1768 while True: -1769 expressions.append(self._parse_cte()) -1770 -1771 if not self._match(TokenType.COMMA) and not self._match(TokenType.WITH): -1772 break -1773 else: -1774 self._match(TokenType.WITH) -1775 -1776 return self.expression(exp.With, expressions=expressions, recursive=recursive) -1777 -1778 def _parse_cte(self) -> exp.Expression: -1779 alias = self._parse_table_alias() -1780 if not alias or not alias.this: -1781 self.raise_error("Expected CTE to have alias") -1782 -1783 self._match(TokenType.ALIAS) -1784 -1785 return self.expression( -1786 exp.CTE, -1787 this=self._parse_wrapped(self._parse_statement), -1788 alias=alias, -1789 ) -1790 -1791 def _parse_table_alias( -1792 self, alias_tokens: t.Optional[t.Collection[TokenType]] = None -1793 ) -> t.Optional[exp.Expression]: -1794 any_token = self._match(TokenType.ALIAS) -1795 alias = ( -1796 self._parse_id_var(any_token=any_token, tokens=alias_tokens or self.TABLE_ALIAS_TOKENS) -1797 or self._parse_string_as_identifier() -1798 ) -1799 -1800 index = self._index -1801 if self._match(TokenType.L_PAREN): -1802 columns = self._parse_csv(self._parse_function_parameter) -1803 self._match_r_paren() if columns else self._retreat(index) -1804 else: -1805 columns = None -1806 -1807 if not alias and not columns: -1808 return None -1809 -1810 return self.expression(exp.TableAlias, this=alias, columns=columns) +1767 # early return so that subquery unions aren't parsed again +1768 # SELECT * FROM (SELECT 1) UNION ALL SELECT 1 +1769 # Union ALL should be a property of the top select node, not the subquery +1770 return self._parse_subquery(this, parse_alias=parse_subquery_alias) +1771 elif self._match(TokenType.VALUES): +1772 this = self.expression( +1773 exp.Values, +1774 expressions=self._parse_csv(self._parse_value), +1775 alias=self._parse_table_alias(), +1776 ) +1777 else: +1778 this = None +1779 +1780 return self._parse_set_operations(this) +1781 +1782 def _parse_with(self, skip_with_token: bool = False) -> t.Optional[exp.Expression]: +1783 if not skip_with_token and not self._match(TokenType.WITH): +1784 return None +1785 +1786 recursive = self._match(TokenType.RECURSIVE) +1787 +1788 expressions = [] +1789 while True: +1790 expressions.append(self._parse_cte()) +1791 +1792 if not self._match(TokenType.COMMA) and not self._match(TokenType.WITH): +1793 break +1794 else: +1795 self._match(TokenType.WITH) +1796 +1797 return self.expression(exp.With, expressions=expressions, recursive=recursive) +1798 +1799 def _parse_cte(self) -> exp.Expression: +1800 alias = self._parse_table_alias() +1801 if not alias or not alias.this: +1802 self.raise_error("Expected CTE to have alias") +1803 +1804 self._match(TokenType.ALIAS) +1805 +1806 return self.expression( +1807 exp.CTE, +1808 this=self._parse_wrapped(self._parse_statement), +1809 alias=alias, +1810 ) 1811 -1812 def _parse_subquery( -1813 self, this: t.Optional[exp.Expression], parse_alias: bool = True -1814 ) -> exp.Expression: -1815 return self.expression( -1816 exp.Subquery, -1817 this=this, -1818 pivots=self._parse_pivots(), -1819 alias=self._parse_table_alias() if parse_alias else None, -1820 ) -1821 -1822 def _parse_query_modifiers(self, this: t.Optional[exp.Expression]) -> None: -1823 if not isinstance(this, self.MODIFIABLES): -1824 return -1825 -1826 table = isinstance(this, exp.Table) +1812 def _parse_table_alias( +1813 self, alias_tokens: t.Optional[t.Collection[TokenType]] = None +1814 ) -> t.Optional[exp.Expression]: +1815 any_token = self._match(TokenType.ALIAS) +1816 alias = ( +1817 self._parse_id_var(any_token=any_token, tokens=alias_tokens or self.TABLE_ALIAS_TOKENS) +1818 or self._parse_string_as_identifier() +1819 ) +1820 +1821 index = self._index +1822 if self._match(TokenType.L_PAREN): +1823 columns = self._parse_csv(self._parse_function_parameter) +1824 self._match_r_paren() if columns else self._retreat(index) +1825 else: +1826 columns = None 1827 -1828 while True: -1829 lateral = self._parse_lateral() -1830 join = self._parse_join() -1831 comma = None if table else self._match(TokenType.COMMA) -1832 if lateral: -1833 this.append("laterals", lateral) -1834 if join: -1835 this.append("joins", join) -1836 if comma: -1837 this.args["from"].append("expressions", self._parse_table()) -1838 if not (lateral or join or comma): -1839 break -1840 -1841 for key, parser in self.QUERY_MODIFIER_PARSERS.items(): -1842 expression = parser(self) -1843 -1844 if expression: -1845 this.set(key, expression) +1828 if not alias and not columns: +1829 return None +1830 +1831 return self.expression(exp.TableAlias, this=alias, columns=columns) +1832 +1833 def _parse_subquery( +1834 self, this: t.Optional[exp.Expression], parse_alias: bool = True +1835 ) -> exp.Expression: +1836 return self.expression( +1837 exp.Subquery, +1838 this=this, +1839 pivots=self._parse_pivots(), +1840 alias=self._parse_table_alias() if parse_alias else None, +1841 ) +1842 +1843 def _parse_query_modifiers(self, this: t.Optional[exp.Expression]) -> None: +1844 if not isinstance(this, self.MODIFIABLES): +1845 return 1846 -1847 def _parse_hint(self) -> t.Optional[exp.Expression]: -1848 if self._match(TokenType.HINT): -1849 hints = self._parse_csv(self._parse_function) -1850 if not self._match_pair(TokenType.STAR, TokenType.SLASH): -1851 self.raise_error("Expected */ after HINT") -1852 return self.expression(exp.Hint, expressions=hints) -1853 -1854 return None -1855 -1856 def _parse_into(self) -> t.Optional[exp.Expression]: -1857 if not self._match(TokenType.INTO): -1858 return None -1859 -1860 temp = self._match(TokenType.TEMPORARY) -1861 unlogged = self._match(TokenType.UNLOGGED) -1862 self._match(TokenType.TABLE) -1863 -1864 return self.expression( -1865 exp.Into, this=self._parse_table(schema=True), temporary=temp, unlogged=unlogged -1866 ) +1847 table = isinstance(this, exp.Table) +1848 +1849 while True: +1850 lateral = self._parse_lateral() +1851 join = self._parse_join() +1852 comma = None if table else self._match(TokenType.COMMA) +1853 if lateral: +1854 this.append("laterals", lateral) +1855 if join: +1856 this.append("joins", join) +1857 if comma: +1858 this.args["from"].append("expressions", self._parse_table()) +1859 if not (lateral or join or comma): +1860 break +1861 +1862 for key, parser in self.QUERY_MODIFIER_PARSERS.items(): +1863 expression = parser(self) +1864 +1865 if expression: +1866 this.set(key, expression) 1867 -1868 def _parse_from(self) -> t.Optional[exp.Expression]: -1869 if not self._match(TokenType.FROM): -1870 return None -1871 -1872 return self.expression( -1873 exp.From, comments=self._prev_comments, expressions=self._parse_csv(self._parse_table) -1874 ) -1875 -1876 def _parse_match_recognize(self) -> t.Optional[exp.Expression]: -1877 if not self._match(TokenType.MATCH_RECOGNIZE): -1878 return None -1879 self._match_l_paren() +1868 def _parse_hint(self) -> t.Optional[exp.Expression]: +1869 if self._match(TokenType.HINT): +1870 hints = self._parse_csv(self._parse_function) +1871 if not self._match_pair(TokenType.STAR, TokenType.SLASH): +1872 self.raise_error("Expected */ after HINT") +1873 return self.expression(exp.Hint, expressions=hints) +1874 +1875 return None +1876 +1877 def _parse_into(self) -> t.Optional[exp.Expression]: +1878 if not self._match(TokenType.INTO): +1879 return None 1880 -1881 partition = self._parse_partition_by() -1882 order = self._parse_order() -1883 measures = ( -1884 self._parse_alias(self._parse_conjunction()) -1885 if self._match_text_seq("MEASURES") -1886 else None +1881 temp = self._match(TokenType.TEMPORARY) +1882 unlogged = self._match(TokenType.UNLOGGED) +1883 self._match(TokenType.TABLE) +1884 +1885 return self.expression( +1886 exp.Into, this=self._parse_table(schema=True), temporary=temp, unlogged=unlogged 1887 ) 1888 -1889 if self._match_text_seq("ONE", "ROW", "PER", "MATCH"): -1890 rows = exp.Var(this="ONE ROW PER MATCH") -1891 elif self._match_text_seq("ALL", "ROWS", "PER", "MATCH"): -1892 text = "ALL ROWS PER MATCH" -1893 if self._match_text_seq("SHOW", "EMPTY", "MATCHES"): -1894 text += f" SHOW EMPTY MATCHES" -1895 elif self._match_text_seq("OMIT", "EMPTY", "MATCHES"): -1896 text += f" OMIT EMPTY MATCHES" -1897 elif self._match_text_seq("WITH", "UNMATCHED", "ROWS"): -1898 text += f" WITH UNMATCHED ROWS" -1899 rows = exp.Var(this=text) -1900 else: -1901 rows = None -1902 -1903 if self._match_text_seq("AFTER", "MATCH", "SKIP"): -1904 text = "AFTER MATCH SKIP" -1905 if self._match_text_seq("PAST", "LAST", "ROW"): -1906 text += f" PAST LAST ROW" -1907 elif self._match_text_seq("TO", "NEXT", "ROW"): -1908 text += f" TO NEXT ROW" -1909 elif self._match_text_seq("TO", "FIRST"): -1910 text += f" TO FIRST {self._advance_any().text}" # type: ignore -1911 elif self._match_text_seq("TO", "LAST"): -1912 text += f" TO LAST {self._advance_any().text}" # type: ignore -1913 after = exp.Var(this=text) -1914 else: -1915 after = None -1916 -1917 if self._match_text_seq("PATTERN"): -1918 self._match_l_paren() -1919 -1920 if not self._curr: -1921 self.raise_error("Expecting )", self._curr) -1922 -1923 paren = 1 -1924 start = self._curr -1925 -1926 while self._curr and paren > 0: -1927 if self._curr.token_type == TokenType.L_PAREN: -1928 paren += 1 -1929 if self._curr.token_type == TokenType.R_PAREN: -1930 paren -= 1 -1931 end = self._prev -1932 self._advance() -1933 if paren > 0: -1934 self.raise_error("Expecting )", self._curr) -1935 pattern = exp.Var(this=self._find_sql(start, end)) -1936 else: -1937 pattern = None -1938 -1939 define = ( -1940 self._parse_alias(self._parse_conjunction()) if self._match_text_seq("DEFINE") else None -1941 ) -1942 self._match_r_paren() +1889 def _parse_from(self) -> t.Optional[exp.Expression]: +1890 if not self._match(TokenType.FROM): +1891 return None +1892 +1893 return self.expression( +1894 exp.From, comments=self._prev_comments, expressions=self._parse_csv(self._parse_table) +1895 ) +1896 +1897 def _parse_match_recognize(self) -> t.Optional[exp.Expression]: +1898 if not self._match(TokenType.MATCH_RECOGNIZE): +1899 return None +1900 self._match_l_paren() +1901 +1902 partition = self._parse_partition_by() +1903 order = self._parse_order() +1904 measures = ( +1905 self._parse_alias(self._parse_conjunction()) +1906 if self._match_text_seq("MEASURES") +1907 else None +1908 ) +1909 +1910 if self._match_text_seq("ONE", "ROW", "PER", "MATCH"): +1911 rows = exp.Var(this="ONE ROW PER MATCH") +1912 elif self._match_text_seq("ALL", "ROWS", "PER", "MATCH"): +1913 text = "ALL ROWS PER MATCH" +1914 if self._match_text_seq("SHOW", "EMPTY", "MATCHES"): +1915 text += f" SHOW EMPTY MATCHES" +1916 elif self._match_text_seq("OMIT", "EMPTY", "MATCHES"): +1917 text += f" OMIT EMPTY MATCHES" +1918 elif self._match_text_seq("WITH", "UNMATCHED", "ROWS"): +1919 text += f" WITH UNMATCHED ROWS" +1920 rows = exp.Var(this=text) +1921 else: +1922 rows = None +1923 +1924 if self._match_text_seq("AFTER", "MATCH", "SKIP"): +1925 text = "AFTER MATCH SKIP" +1926 if self._match_text_seq("PAST", "LAST", "ROW"): +1927 text += f" PAST LAST ROW" +1928 elif self._match_text_seq("TO", "NEXT", "ROW"): +1929 text += f" TO NEXT ROW" +1930 elif self._match_text_seq("TO", "FIRST"): +1931 text += f" TO FIRST {self._advance_any().text}" # type: ignore +1932 elif self._match_text_seq("TO", "LAST"): +1933 text += f" TO LAST {self._advance_any().text}" # type: ignore +1934 after = exp.Var(this=text) +1935 else: +1936 after = None +1937 +1938 if self._match_text_seq("PATTERN"): +1939 self._match_l_paren() +1940 +1941 if not self._curr: +1942 self.raise_error("Expecting )", self._curr) 1943 -1944 return self.expression( -1945 exp.MatchRecognize, -1946 partition_by=partition, -1947 order=order, -1948 measures=measures, -1949 rows=rows, -1950 after=after, -1951 pattern=pattern, -1952 define=define, -1953 ) -1954 -1955 def _parse_lateral(self) -> t.Optional[exp.Expression]: -1956 outer_apply = self._match_pair(TokenType.OUTER, TokenType.APPLY) -1957 cross_apply = self._match_pair(TokenType.CROSS, TokenType.APPLY) -1958 -1959 if outer_apply or cross_apply: -1960 this = self._parse_select(table=True) -1961 view = None -1962 outer = not cross_apply -1963 elif self._match(TokenType.LATERAL): -1964 this = self._parse_select(table=True) -1965 view = self._match(TokenType.VIEW) -1966 outer = self._match(TokenType.OUTER) -1967 else: -1968 return None -1969 -1970 if not this: -1971 this = self._parse_function() or self._parse_id_var(any_token=False) -1972 while self._match(TokenType.DOT): -1973 this = exp.Dot( -1974 this=this, -1975 expression=self._parse_function() or self._parse_id_var(any_token=False), -1976 ) -1977 -1978 table_alias: t.Optional[exp.Expression] +1944 paren = 1 +1945 start = self._curr +1946 +1947 while self._curr and paren > 0: +1948 if self._curr.token_type == TokenType.L_PAREN: +1949 paren += 1 +1950 if self._curr.token_type == TokenType.R_PAREN: +1951 paren -= 1 +1952 end = self._prev +1953 self._advance() +1954 if paren > 0: +1955 self.raise_error("Expecting )", self._curr) +1956 pattern = exp.Var(this=self._find_sql(start, end)) +1957 else: +1958 pattern = None +1959 +1960 define = ( +1961 self._parse_alias(self._parse_conjunction()) if self._match_text_seq("DEFINE") else None +1962 ) +1963 self._match_r_paren() +1964 +1965 return self.expression( +1966 exp.MatchRecognize, +1967 partition_by=partition, +1968 order=order, +1969 measures=measures, +1970 rows=rows, +1971 after=after, +1972 pattern=pattern, +1973 define=define, +1974 ) +1975 +1976 def _parse_lateral(self) -> t.Optional[exp.Expression]: +1977 outer_apply = self._match_pair(TokenType.OUTER, TokenType.APPLY) +1978 cross_apply = self._match_pair(TokenType.CROSS, TokenType.APPLY) 1979 -1980 if view: -1981 table = self._parse_id_var(any_token=False) -1982 columns = self._parse_csv(self._parse_id_var) if self._match(TokenType.ALIAS) else [] -1983 table_alias = self.expression(exp.TableAlias, this=table, columns=columns) -1984 else: -1985 table_alias = self._parse_table_alias() -1986 -1987 expression = self.expression( -1988 exp.Lateral, -1989 this=this, -1990 view=view, -1991 outer=outer, -1992 alias=table_alias, -1993 ) -1994 -1995 if outer_apply or cross_apply: -1996 return self.expression(exp.Join, this=expression, side=None if cross_apply else "LEFT") -1997 -1998 return expression -1999 -2000 def _parse_join_side_and_kind( -2001 self, -2002 ) -> t.Tuple[t.Optional[Token], t.Optional[Token], t.Optional[Token]]: -2003 return ( -2004 self._match(TokenType.NATURAL) and self._prev, -2005 self._match_set(self.JOIN_SIDES) and self._prev, -2006 self._match_set(self.JOIN_KINDS) and self._prev, -2007 ) -2008 -2009 def _parse_join(self, skip_join_token: bool = False) -> t.Optional[exp.Expression]: -2010 natural, side, kind = self._parse_join_side_and_kind() -2011 -2012 if not skip_join_token and not self._match(TokenType.JOIN): -2013 return None -2014 -2015 kwargs: t.Dict[ -2016 str, t.Optional[exp.Expression] | bool | str | t.List[t.Optional[exp.Expression]] -2017 ] = {"this": self._parse_table()} +1980 if outer_apply or cross_apply: +1981 this = self._parse_select(table=True) +1982 view = None +1983 outer = not cross_apply +1984 elif self._match(TokenType.LATERAL): +1985 this = self._parse_select(table=True) +1986 view = self._match(TokenType.VIEW) +1987 outer = self._match(TokenType.OUTER) +1988 else: +1989 return None +1990 +1991 if not this: +1992 this = self._parse_function() or self._parse_id_var(any_token=False) +1993 while self._match(TokenType.DOT): +1994 this = exp.Dot( +1995 this=this, +1996 expression=self._parse_function() or self._parse_id_var(any_token=False), +1997 ) +1998 +1999 table_alias: t.Optional[exp.Expression] +2000 +2001 if view: +2002 table = self._parse_id_var(any_token=False) +2003 columns = self._parse_csv(self._parse_id_var) if self._match(TokenType.ALIAS) else [] +2004 table_alias = self.expression(exp.TableAlias, this=table, columns=columns) +2005 else: +2006 table_alias = self._parse_table_alias() +2007 +2008 expression = self.expression( +2009 exp.Lateral, +2010 this=this, +2011 view=view, +2012 outer=outer, +2013 alias=table_alias, +2014 ) +2015 +2016 if outer_apply or cross_apply: +2017 return self.expression(exp.Join, this=expression, side=None if cross_apply else "LEFT") 2018 -2019 if natural: -2020 kwargs["natural"] = True -2021 if side: -2022 kwargs["side"] = side.text -2023 if kind: -2024 kwargs["kind"] = kind.text -2025 -2026 if self._match(TokenType.ON): -2027 kwargs["on"] = self._parse_conjunction() -2028 elif self._match(TokenType.USING): -2029 kwargs["using"] = self._parse_wrapped_id_vars() -2030 -2031 return self.expression(exp.Join, **kwargs) # type: ignore +2019 return expression +2020 +2021 def _parse_join_side_and_kind( +2022 self, +2023 ) -> t.Tuple[t.Optional[Token], t.Optional[Token], t.Optional[Token]]: +2024 return ( +2025 self._match(TokenType.NATURAL) and self._prev, +2026 self._match_set(self.JOIN_SIDES) and self._prev, +2027 self._match_set(self.JOIN_KINDS) and self._prev, +2028 ) +2029 +2030 def _parse_join(self, skip_join_token: bool = False) -> t.Optional[exp.Expression]: +2031 natural, side, kind = self._parse_join_side_and_kind() 2032 -2033 def _parse_index(self) -> exp.Expression: -2034 index = self._parse_id_var() -2035 self._match(TokenType.ON) -2036 self._match(TokenType.TABLE) # hive -2037 -2038 return self.expression( -2039 exp.Index, -2040 this=index, -2041 table=self.expression(exp.Table, this=self._parse_id_var()), -2042 columns=self._parse_expression(), -2043 ) -2044 -2045 def _parse_create_table_index(self) -> t.Optional[exp.Expression]: -2046 unique = self._match(TokenType.UNIQUE) -2047 primary = self._match_text_seq("PRIMARY") -2048 amp = self._match_text_seq("AMP") -2049 if not self._match(TokenType.INDEX): -2050 return None -2051 index = self._parse_id_var() -2052 columns = None -2053 if self._match(TokenType.L_PAREN, advance=False): -2054 columns = self._parse_wrapped_csv(self._parse_column) -2055 return self.expression( -2056 exp.Index, -2057 this=index, -2058 columns=columns, -2059 unique=unique, -2060 primary=primary, -2061 amp=amp, -2062 ) -2063 -2064 def _parse_table_parts(self, schema: bool = False) -> exp.Expression: -2065 catalog = None -2066 db = None -2067 -2068 table = ( -2069 (not schema and self._parse_function()) -2070 or self._parse_id_var(any_token=False) -2071 or self._parse_string_as_identifier() -2072 ) -2073 -2074 while self._match(TokenType.DOT): -2075 if catalog: -2076 # This allows nesting the table in arbitrarily many dot expressions if needed -2077 table = self.expression(exp.Dot, this=table, expression=self._parse_id_var()) -2078 else: -2079 catalog = db -2080 db = table -2081 table = self._parse_id_var() -2082 -2083 if not table: -2084 self.raise_error(f"Expected table name but got {self._curr}") -2085 -2086 return self.expression( -2087 exp.Table, this=table, db=db, catalog=catalog, pivots=self._parse_pivots() -2088 ) -2089 -2090 def _parse_table( -2091 self, schema: bool = False, alias_tokens: t.Optional[t.Collection[TokenType]] = None -2092 ) -> t.Optional[exp.Expression]: -2093 lateral = self._parse_lateral() +2033 if not skip_join_token and not self._match(TokenType.JOIN): +2034 return None +2035 +2036 kwargs: t.Dict[ +2037 str, t.Optional[exp.Expression] | bool | str | t.List[t.Optional[exp.Expression]] +2038 ] = {"this": self._parse_table()} +2039 +2040 if natural: +2041 kwargs["natural"] = True +2042 if side: +2043 kwargs["side"] = side.text +2044 if kind: +2045 kwargs["kind"] = kind.text +2046 +2047 if self._match(TokenType.ON): +2048 kwargs["on"] = self._parse_conjunction() +2049 elif self._match(TokenType.USING): +2050 kwargs["using"] = self._parse_wrapped_id_vars() +2051 +2052 return self.expression(exp.Join, **kwargs) # type: ignore +2053 +2054 def _parse_index(self) -> exp.Expression: +2055 index = self._parse_id_var() +2056 self._match(TokenType.ON) +2057 self._match(TokenType.TABLE) # hive +2058 +2059 return self.expression( +2060 exp.Index, +2061 this=index, +2062 table=self.expression(exp.Table, this=self._parse_id_var()), +2063 columns=self._parse_expression(), +2064 ) +2065 +2066 def _parse_create_table_index(self) -> t.Optional[exp.Expression]: +2067 unique = self._match(TokenType.UNIQUE) +2068 primary = self._match_text_seq("PRIMARY") +2069 amp = self._match_text_seq("AMP") +2070 if not self._match(TokenType.INDEX): +2071 return None +2072 index = self._parse_id_var() +2073 columns = None +2074 if self._match(TokenType.L_PAREN, advance=False): +2075 columns = self._parse_wrapped_csv(self._parse_column) +2076 return self.expression( +2077 exp.Index, +2078 this=index, +2079 columns=columns, +2080 unique=unique, +2081 primary=primary, +2082 amp=amp, +2083 ) +2084 +2085 def _parse_table_parts(self, schema: bool = False) -> exp.Expression: +2086 catalog = None +2087 db = None +2088 +2089 table = ( +2090 (not schema and self._parse_function()) +2091 or self._parse_id_var(any_token=False) +2092 or self._parse_string_as_identifier() +2093 ) 2094 -2095 if lateral: -2096 return lateral -2097 -2098 unnest = self._parse_unnest() -2099 -2100 if unnest: -2101 return unnest -2102 -2103 values = self._parse_derived_table_values() -2104 -2105 if values: -2106 return values -2107 -2108 subquery = self._parse_select(table=True) -2109 -2110 if subquery: -2111 if not subquery.args.get("pivots"): -2112 subquery.set("pivots", self._parse_pivots()) -2113 return subquery -2114 -2115 this = self._parse_table_parts(schema=schema) -2116 -2117 if schema: -2118 return self._parse_schema(this=this) -2119 -2120 if self.alias_post_tablesample: -2121 table_sample = self._parse_table_sample() -2122 -2123 alias = self._parse_table_alias(alias_tokens=alias_tokens or self.TABLE_ALIAS_TOKENS) -2124 -2125 if alias: -2126 this.set("alias", alias) -2127 -2128 if not this.args.get("pivots"): -2129 this.set("pivots", self._parse_pivots()) +2095 while self._match(TokenType.DOT): +2096 if catalog: +2097 # This allows nesting the table in arbitrarily many dot expressions if needed +2098 table = self.expression(exp.Dot, this=table, expression=self._parse_id_var()) +2099 else: +2100 catalog = db +2101 db = table +2102 table = self._parse_id_var() +2103 +2104 if not table: +2105 self.raise_error(f"Expected table name but got {self._curr}") +2106 +2107 return self.expression( +2108 exp.Table, this=table, db=db, catalog=catalog, pivots=self._parse_pivots() +2109 ) +2110 +2111 def _parse_table( +2112 self, schema: bool = False, alias_tokens: t.Optional[t.Collection[TokenType]] = None +2113 ) -> t.Optional[exp.Expression]: +2114 lateral = self._parse_lateral() +2115 +2116 if lateral: +2117 return lateral +2118 +2119 unnest = self._parse_unnest() +2120 +2121 if unnest: +2122 return unnest +2123 +2124 values = self._parse_derived_table_values() +2125 +2126 if values: +2127 return values +2128 +2129 subquery = self._parse_select(table=True) 2130 -2131 if self._match_pair(TokenType.WITH, TokenType.L_PAREN): -2132 this.set( -2133 "hints", -2134 self._parse_csv(lambda: self._parse_function() or self._parse_var(any_token=True)), -2135 ) -2136 self._match_r_paren() +2131 if subquery: +2132 if not subquery.args.get("pivots"): +2133 subquery.set("pivots", self._parse_pivots()) +2134 return subquery +2135 +2136 this = self._parse_table_parts(schema=schema) 2137 -2138 if not self.alias_post_tablesample: -2139 table_sample = self._parse_table_sample() +2138 if schema: +2139 return self._parse_schema(this=this) 2140 -2141 if table_sample: -2142 table_sample.set("this", this) -2143 this = table_sample -2144 -2145 return this -2146 -2147 def _parse_unnest(self) -> t.Optional[exp.Expression]: -2148 if not self._match(TokenType.UNNEST): -2149 return None -2150 -2151 expressions = self._parse_wrapped_csv(self._parse_column) -2152 ordinality = bool(self._match(TokenType.WITH) and self._match(TokenType.ORDINALITY)) -2153 alias = self._parse_table_alias() -2154 -2155 if alias and self.unnest_column_only: -2156 if alias.args.get("columns"): -2157 self.raise_error("Unexpected extra column alias in unnest.") -2158 alias.set("columns", [alias.this]) -2159 alias.set("this", None) -2160 -2161 offset = None -2162 if self._match_pair(TokenType.WITH, TokenType.OFFSET): -2163 self._match(TokenType.ALIAS) -2164 offset = self._parse_conjunction() +2141 if self.alias_post_tablesample: +2142 table_sample = self._parse_table_sample() +2143 +2144 alias = self._parse_table_alias(alias_tokens=alias_tokens or self.TABLE_ALIAS_TOKENS) +2145 +2146 if alias: +2147 this.set("alias", alias) +2148 +2149 if not this.args.get("pivots"): +2150 this.set("pivots", self._parse_pivots()) +2151 +2152 if self._match_pair(TokenType.WITH, TokenType.L_PAREN): +2153 this.set( +2154 "hints", +2155 self._parse_csv(lambda: self._parse_function() or self._parse_var(any_token=True)), +2156 ) +2157 self._match_r_paren() +2158 +2159 if not self.alias_post_tablesample: +2160 table_sample = self._parse_table_sample() +2161 +2162 if table_sample: +2163 table_sample.set("this", this) +2164 this = table_sample 2165 -2166 return self.expression( -2167 exp.Unnest, -2168 expressions=expressions, -2169 ordinality=ordinality, -2170 alias=alias, -2171 offset=offset, -2172 ) -2173 -2174 def _parse_derived_table_values(self) -> t.Optional[exp.Expression]: -2175 is_derived = self._match_pair(TokenType.L_PAREN, TokenType.VALUES) -2176 if not is_derived and not self._match(TokenType.VALUES): -2177 return None -2178 -2179 expressions = self._parse_csv(self._parse_value) -2180 -2181 if is_derived: -2182 self._match_r_paren() -2183 -2184 return self.expression(exp.Values, expressions=expressions, alias=self._parse_table_alias()) -2185 -2186 def _parse_table_sample(self, as_modifier: bool = False) -> t.Optional[exp.Expression]: -2187 if not self._match(TokenType.TABLE_SAMPLE) and not ( -2188 as_modifier and self._match_text_seq("USING", "SAMPLE") -2189 ): -2190 return None -2191 -2192 bucket_numerator = None -2193 bucket_denominator = None -2194 bucket_field = None -2195 percent = None -2196 rows = None -2197 size = None -2198 seed = None +2166 return this +2167 +2168 def _parse_unnest(self) -> t.Optional[exp.Expression]: +2169 if not self._match(TokenType.UNNEST): +2170 return None +2171 +2172 expressions = self._parse_wrapped_csv(self._parse_column) +2173 ordinality = bool(self._match(TokenType.WITH) and self._match(TokenType.ORDINALITY)) +2174 alias = self._parse_table_alias() +2175 +2176 if alias and self.unnest_column_only: +2177 if alias.args.get("columns"): +2178 self.raise_error("Unexpected extra column alias in unnest.") +2179 alias.set("columns", [alias.this]) +2180 alias.set("this", None) +2181 +2182 offset = None +2183 if self._match_pair(TokenType.WITH, TokenType.OFFSET): +2184 self._match(TokenType.ALIAS) +2185 offset = self._parse_conjunction() +2186 +2187 return self.expression( +2188 exp.Unnest, +2189 expressions=expressions, +2190 ordinality=ordinality, +2191 alias=alias, +2192 offset=offset, +2193 ) +2194 +2195 def _parse_derived_table_values(self) -> t.Optional[exp.Expression]: +2196 is_derived = self._match_pair(TokenType.L_PAREN, TokenType.VALUES) +2197 if not is_derived and not self._match(TokenType.VALUES): +2198 return None 2199 -2200 kind = "TABLESAMPLE" if self._prev.token_type == TokenType.TABLE_SAMPLE else "USING SAMPLE" -2201 method = self._parse_var(tokens=(TokenType.ROW,)) -2202 -2203 self._match(TokenType.L_PAREN) +2200 expressions = self._parse_csv(self._parse_value) +2201 +2202 if is_derived: +2203 self._match_r_paren() 2204 -2205 num = self._parse_number() +2205 return self.expression(exp.Values, expressions=expressions, alias=self._parse_table_alias()) 2206 -2207 if self._match(TokenType.BUCKET): -2208 bucket_numerator = self._parse_number() -2209 self._match(TokenType.OUT_OF) -2210 bucket_denominator = bucket_denominator = self._parse_number() -2211 self._match(TokenType.ON) -2212 bucket_field = self._parse_field() -2213 elif self._match_set((TokenType.PERCENT, TokenType.MOD)): -2214 percent = num -2215 elif self._match(TokenType.ROWS): -2216 rows = num -2217 else: -2218 size = num -2219 -2220 self._match(TokenType.R_PAREN) -2221 -2222 if self._match(TokenType.L_PAREN): -2223 method = self._parse_var() -2224 seed = self._match(TokenType.COMMA) and self._parse_number() -2225 self._match_r_paren() -2226 elif self._match_texts(("SEED", "REPEATABLE")): -2227 seed = self._parse_wrapped(self._parse_number) -2228 -2229 return self.expression( -2230 exp.TableSample, -2231 method=method, -2232 bucket_numerator=bucket_numerator, -2233 bucket_denominator=bucket_denominator, -2234 bucket_field=bucket_field, -2235 percent=percent, -2236 rows=rows, -2237 size=size, -2238 seed=seed, -2239 kind=kind, -2240 ) -2241 -2242 def _parse_pivots(self) -> t.List[t.Optional[exp.Expression]]: -2243 return list(iter(self._parse_pivot, None)) -2244 -2245 def _parse_pivot(self) -> t.Optional[exp.Expression]: -2246 index = self._index -2247 -2248 if self._match(TokenType.PIVOT): -2249 unpivot = False -2250 elif self._match(TokenType.UNPIVOT): -2251 unpivot = True -2252 else: -2253 return None -2254 -2255 expressions = [] -2256 field = None -2257 -2258 if not self._match(TokenType.L_PAREN): -2259 self._retreat(index) -2260 return None -2261 -2262 if unpivot: -2263 expressions = self._parse_csv(self._parse_column) -2264 else: -2265 expressions = self._parse_csv(lambda: self._parse_alias(self._parse_function())) -2266 -2267 if not self._match(TokenType.FOR): -2268 self.raise_error("Expecting FOR") -2269 -2270 value = self._parse_column() -2271 -2272 if not self._match(TokenType.IN): -2273 self.raise_error("Expecting IN") -2274 -2275 field = self._parse_in(value) -2276 -2277 self._match_r_paren() +2207 def _parse_table_sample(self, as_modifier: bool = False) -> t.Optional[exp.Expression]: +2208 if not self._match(TokenType.TABLE_SAMPLE) and not ( +2209 as_modifier and self._match_text_seq("USING", "SAMPLE") +2210 ): +2211 return None +2212 +2213 bucket_numerator = None +2214 bucket_denominator = None +2215 bucket_field = None +2216 percent = None +2217 rows = None +2218 size = None +2219 seed = None +2220 +2221 kind = "TABLESAMPLE" if self._prev.token_type == TokenType.TABLE_SAMPLE else "USING SAMPLE" +2222 method = self._parse_var(tokens=(TokenType.ROW,)) +2223 +2224 self._match(TokenType.L_PAREN) +2225 +2226 num = self._parse_number() +2227 +2228 if self._match(TokenType.BUCKET): +2229 bucket_numerator = self._parse_number() +2230 self._match(TokenType.OUT_OF) +2231 bucket_denominator = bucket_denominator = self._parse_number() +2232 self._match(TokenType.ON) +2233 bucket_field = self._parse_field() +2234 elif self._match_set((TokenType.PERCENT, TokenType.MOD)): +2235 percent = num +2236 elif self._match(TokenType.ROWS): +2237 rows = num +2238 else: +2239 size = num +2240 +2241 self._match(TokenType.R_PAREN) +2242 +2243 if self._match(TokenType.L_PAREN): +2244 method = self._parse_var() +2245 seed = self._match(TokenType.COMMA) and self._parse_number() +2246 self._match_r_paren() +2247 elif self._match_texts(("SEED", "REPEATABLE")): +2248 seed = self._parse_wrapped(self._parse_number) +2249 +2250 return self.expression( +2251 exp.TableSample, +2252 method=method, +2253 bucket_numerator=bucket_numerator, +2254 bucket_denominator=bucket_denominator, +2255 bucket_field=bucket_field, +2256 percent=percent, +2257 rows=rows, +2258 size=size, +2259 seed=seed, +2260 kind=kind, +2261 ) +2262 +2263 def _parse_pivots(self) -> t.List[t.Optional[exp.Expression]]: +2264 return list(iter(self._parse_pivot, None)) +2265 +2266 def _parse_pivot(self) -> t.Optional[exp.Expression]: +2267 index = self._index +2268 +2269 if self._match(TokenType.PIVOT): +2270 unpivot = False +2271 elif self._match(TokenType.UNPIVOT): +2272 unpivot = True +2273 else: +2274 return None +2275 +2276 expressions = [] +2277 field = None 2278 -2279 pivot = self.expression(exp.Pivot, expressions=expressions, field=field, unpivot=unpivot) -2280 -2281 if not self._match_set((TokenType.PIVOT, TokenType.UNPIVOT), advance=False): -2282 pivot.set("alias", self._parse_table_alias()) -2283 -2284 return pivot -2285 -2286 def _parse_where(self, skip_where_token: bool = False) -> t.Optional[exp.Expression]: -2287 if not skip_where_token and not self._match(TokenType.WHERE): -2288 return None -2289 -2290 return self.expression( -2291 exp.Where, comments=self._prev_comments, this=self._parse_conjunction() -2292 ) -2293 -2294 def _parse_group(self, skip_group_by_token: bool = False) -> t.Optional[exp.Expression]: -2295 if not skip_group_by_token and not self._match(TokenType.GROUP_BY): -2296 return None +2279 if not self._match(TokenType.L_PAREN): +2280 self._retreat(index) +2281 return None +2282 +2283 if unpivot: +2284 expressions = self._parse_csv(self._parse_column) +2285 else: +2286 expressions = self._parse_csv(lambda: self._parse_alias(self._parse_function())) +2287 +2288 if not self._match(TokenType.FOR): +2289 self.raise_error("Expecting FOR") +2290 +2291 value = self._parse_column() +2292 +2293 if not self._match(TokenType.IN): +2294 self.raise_error("Expecting IN") +2295 +2296 field = self._parse_in(value) 2297 -2298 elements = defaultdict(list) +2298 self._match_r_paren() 2299 -2300 while True: -2301 expressions = self._parse_csv(self._parse_conjunction) -2302 if expressions: -2303 elements["expressions"].extend(expressions) +2300 pivot = self.expression(exp.Pivot, expressions=expressions, field=field, unpivot=unpivot) +2301 +2302 if not self._match_set((TokenType.PIVOT, TokenType.UNPIVOT), advance=False): +2303 pivot.set("alias", self._parse_table_alias()) 2304 -2305 grouping_sets = self._parse_grouping_sets() -2306 if grouping_sets: -2307 elements["grouping_sets"].extend(grouping_sets) -2308 -2309 rollup = None -2310 cube = None -2311 -2312 with_ = self._match(TokenType.WITH) -2313 if self._match(TokenType.ROLLUP): -2314 rollup = with_ or self._parse_wrapped_csv(self._parse_column) -2315 elements["rollup"].extend(ensure_list(rollup)) -2316 -2317 if self._match(TokenType.CUBE): -2318 cube = with_ or self._parse_wrapped_csv(self._parse_column) -2319 elements["cube"].extend(ensure_list(cube)) +2305 return pivot +2306 +2307 def _parse_where(self, skip_where_token: bool = False) -> t.Optional[exp.Expression]: +2308 if not skip_where_token and not self._match(TokenType.WHERE): +2309 return None +2310 +2311 return self.expression( +2312 exp.Where, comments=self._prev_comments, this=self._parse_conjunction() +2313 ) +2314 +2315 def _parse_group(self, skip_group_by_token: bool = False) -> t.Optional[exp.Expression]: +2316 if not skip_group_by_token and not self._match(TokenType.GROUP_BY): +2317 return None +2318 +2319 elements = defaultdict(list) 2320 -2321 if not (expressions or grouping_sets or rollup or cube): -2322 break -2323 -2324 return self.expression(exp.Group, **elements) # type: ignore +2321 while True: +2322 expressions = self._parse_csv(self._parse_conjunction) +2323 if expressions: +2324 elements["expressions"].extend(expressions) 2325 -2326 def _parse_grouping_sets(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]: -2327 if not self._match(TokenType.GROUPING_SETS): -2328 return None +2326 grouping_sets = self._parse_grouping_sets() +2327 if grouping_sets: +2328 elements["grouping_sets"].extend(grouping_sets) 2329 -2330 return self._parse_wrapped_csv(self._parse_grouping_set) -2331 -2332 def _parse_grouping_set(self) -> t.Optional[exp.Expression]: -2333 if self._match(TokenType.L_PAREN): -2334 grouping_set = self._parse_csv(self._parse_column) -2335 self._match_r_paren() -2336 return self.expression(exp.Tuple, expressions=grouping_set) +2330 rollup = None +2331 cube = None +2332 +2333 with_ = self._match(TokenType.WITH) +2334 if self._match(TokenType.ROLLUP): +2335 rollup = with_ or self._parse_wrapped_csv(self._parse_column) +2336 elements["rollup"].extend(ensure_list(rollup)) 2337 -2338 return self._parse_column() -2339 -2340 def _parse_having(self, skip_having_token: bool = False) -> t.Optional[exp.Expression]: -2341 if not skip_having_token and not self._match(TokenType.HAVING): -2342 return None -2343 return self.expression(exp.Having, this=self._parse_conjunction()) +2338 if self._match(TokenType.CUBE): +2339 cube = with_ or self._parse_wrapped_csv(self._parse_column) +2340 elements["cube"].extend(ensure_list(cube)) +2341 +2342 if not (expressions or grouping_sets or rollup or cube): +2343 break 2344 -2345 def _parse_qualify(self) -> t.Optional[exp.Expression]: -2346 if not self._match(TokenType.QUALIFY): -2347 return None -2348 return self.expression(exp.Qualify, this=self._parse_conjunction()) -2349 -2350 def _parse_order( -2351 self, this: t.Optional[exp.Expression] = None, skip_order_token: bool = False -2352 ) -> t.Optional[exp.Expression]: -2353 if not skip_order_token and not self._match(TokenType.ORDER_BY): -2354 return this -2355 -2356 return self.expression( -2357 exp.Order, this=this, expressions=self._parse_csv(self._parse_ordered) -2358 ) -2359 -2360 def _parse_sort( -2361 self, token_type: TokenType, exp_class: t.Type[exp.Expression] -2362 ) -> t.Optional[exp.Expression]: -2363 if not self._match(token_type): -2364 return None -2365 return self.expression(exp_class, expressions=self._parse_csv(self._parse_ordered)) -2366 -2367 def _parse_ordered(self) -> exp.Expression: -2368 this = self._parse_conjunction() -2369 self._match(TokenType.ASC) -2370 is_desc = self._match(TokenType.DESC) -2371 is_nulls_first = self._match(TokenType.NULLS_FIRST) -2372 is_nulls_last = self._match(TokenType.NULLS_LAST) -2373 desc = is_desc or False -2374 asc = not desc -2375 nulls_first = is_nulls_first or False -2376 explicitly_null_ordered = is_nulls_first or is_nulls_last -2377 if ( -2378 not explicitly_null_ordered -2379 and ( -2380 (asc and self.null_ordering == "nulls_are_small") -2381 or (desc and self.null_ordering != "nulls_are_small") -2382 ) -2383 and self.null_ordering != "nulls_are_last" -2384 ): -2385 nulls_first = True -2386 -2387 return self.expression(exp.Ordered, this=this, desc=desc, nulls_first=nulls_first) -2388 -2389 def _parse_limit( -2390 self, this: t.Optional[exp.Expression] = None, top: bool = False -2391 ) -> t.Optional[exp.Expression]: -2392 if self._match(TokenType.TOP if top else TokenType.LIMIT): -2393 limit_paren = self._match(TokenType.L_PAREN) -2394 limit_exp = self.expression( -2395 exp.Limit, this=this, expression=self._parse_number() if top else self._parse_term() -2396 ) -2397 -2398 if limit_paren: -2399 self._match_r_paren() -2400 -2401 return limit_exp -2402 -2403 if self._match(TokenType.FETCH): -2404 direction = self._match_set((TokenType.FIRST, TokenType.NEXT)) -2405 direction = self._prev.text if direction else "FIRST" -2406 count = self._parse_number() -2407 self._match_set((TokenType.ROW, TokenType.ROWS)) -2408 self._match(TokenType.ONLY) -2409 return self.expression(exp.Fetch, direction=direction, count=count) -2410 -2411 return this -2412 -2413 def _parse_offset(self, this: t.Optional[exp.Expression] = None) -> t.Optional[exp.Expression]: -2414 if not self._match_set((TokenType.OFFSET, TokenType.COMMA)): -2415 return this -2416 -2417 count = self._parse_number() -2418 self._match_set((TokenType.ROW, TokenType.ROWS)) -2419 return self.expression(exp.Offset, this=this, expression=count) -2420 -2421 def _parse_lock(self) -> t.Optional[exp.Expression]: -2422 if self._match_text_seq("FOR", "UPDATE"): -2423 return self.expression(exp.Lock, update=True) -2424 if self._match_text_seq("FOR", "SHARE"): -2425 return self.expression(exp.Lock, update=False) -2426 -2427 return None -2428 -2429 def _parse_set_operations(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: -2430 if not self._match_set(self.SET_OPERATIONS): -2431 return this -2432 -2433 token_type = self._prev.token_type -2434 -2435 if token_type == TokenType.UNION: -2436 expression = exp.Union -2437 elif token_type == TokenType.EXCEPT: -2438 expression = exp.Except -2439 else: -2440 expression = exp.Intersect +2345 return self.expression(exp.Group, **elements) # type: ignore +2346 +2347 def _parse_grouping_sets(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]: +2348 if not self._match(TokenType.GROUPING_SETS): +2349 return None +2350 +2351 return self._parse_wrapped_csv(self._parse_grouping_set) +2352 +2353 def _parse_grouping_set(self) -> t.Optional[exp.Expression]: +2354 if self._match(TokenType.L_PAREN): +2355 grouping_set = self._parse_csv(self._parse_column) +2356 self._match_r_paren() +2357 return self.expression(exp.Tuple, expressions=grouping_set) +2358 +2359 return self._parse_column() +2360 +2361 def _parse_having(self, skip_having_token: bool = False) -> t.Optional[exp.Expression]: +2362 if not skip_having_token and not self._match(TokenType.HAVING): +2363 return None +2364 return self.expression(exp.Having, this=self._parse_conjunction()) +2365 +2366 def _parse_qualify(self) -> t.Optional[exp.Expression]: +2367 if not self._match(TokenType.QUALIFY): +2368 return None +2369 return self.expression(exp.Qualify, this=self._parse_conjunction()) +2370 +2371 def _parse_order( +2372 self, this: t.Optional[exp.Expression] = None, skip_order_token: bool = False +2373 ) -> t.Optional[exp.Expression]: +2374 if not skip_order_token and not self._match(TokenType.ORDER_BY): +2375 return this +2376 +2377 return self.expression( +2378 exp.Order, this=this, expressions=self._parse_csv(self._parse_ordered) +2379 ) +2380 +2381 def _parse_sort( +2382 self, token_type: TokenType, exp_class: t.Type[exp.Expression] +2383 ) -> t.Optional[exp.Expression]: +2384 if not self._match(token_type): +2385 return None +2386 return self.expression(exp_class, expressions=self._parse_csv(self._parse_ordered)) +2387 +2388 def _parse_ordered(self) -> exp.Expression: +2389 this = self._parse_conjunction() +2390 self._match(TokenType.ASC) +2391 is_desc = self._match(TokenType.DESC) +2392 is_nulls_first = self._match(TokenType.NULLS_FIRST) +2393 is_nulls_last = self._match(TokenType.NULLS_LAST) +2394 desc = is_desc or False +2395 asc = not desc +2396 nulls_first = is_nulls_first or False +2397 explicitly_null_ordered = is_nulls_first or is_nulls_last +2398 if ( +2399 not explicitly_null_ordered +2400 and ( +2401 (asc and self.null_ordering == "nulls_are_small") +2402 or (desc and self.null_ordering != "nulls_are_small") +2403 ) +2404 and self.null_ordering != "nulls_are_last" +2405 ): +2406 nulls_first = True +2407 +2408 return self.expression(exp.Ordered, this=this, desc=desc, nulls_first=nulls_first) +2409 +2410 def _parse_limit( +2411 self, this: t.Optional[exp.Expression] = None, top: bool = False +2412 ) -> t.Optional[exp.Expression]: +2413 if self._match(TokenType.TOP if top else TokenType.LIMIT): +2414 limit_paren = self._match(TokenType.L_PAREN) +2415 limit_exp = self.expression( +2416 exp.Limit, this=this, expression=self._parse_number() if top else self._parse_term() +2417 ) +2418 +2419 if limit_paren: +2420 self._match_r_paren() +2421 +2422 return limit_exp +2423 +2424 if self._match(TokenType.FETCH): +2425 direction = self._match_set((TokenType.FIRST, TokenType.NEXT)) +2426 direction = self._prev.text if direction else "FIRST" +2427 count = self._parse_number() +2428 self._match_set((TokenType.ROW, TokenType.ROWS)) +2429 self._match(TokenType.ONLY) +2430 return self.expression(exp.Fetch, direction=direction, count=count) +2431 +2432 return this +2433 +2434 def _parse_offset(self, this: t.Optional[exp.Expression] = None) -> t.Optional[exp.Expression]: +2435 if not self._match_set((TokenType.OFFSET, TokenType.COMMA)): +2436 return this +2437 +2438 count = self._parse_number() +2439 self._match_set((TokenType.ROW, TokenType.ROWS)) +2440 return self.expression(exp.Offset, this=this, expression=count) 2441 -2442 return self.expression( -2443 expression, -2444 this=this, -2445 distinct=self._match(TokenType.DISTINCT) or not self._match(TokenType.ALL), -2446 expression=self._parse_set_operations(self._parse_select(nested=True)), -2447 ) -2448 -2449 def _parse_expression(self) -> t.Optional[exp.Expression]: -2450 return self._parse_alias(self._parse_conjunction()) -2451 -2452 def _parse_conjunction(self) -> t.Optional[exp.Expression]: -2453 return self._parse_tokens(self._parse_equality, self.CONJUNCTION) -2454 -2455 def _parse_equality(self) -> t.Optional[exp.Expression]: -2456 return self._parse_tokens(self._parse_comparison, self.EQUALITY) -2457 -2458 def _parse_comparison(self) -> t.Optional[exp.Expression]: -2459 return self._parse_tokens(self._parse_range, self.COMPARISON) -2460 -2461 def _parse_range(self) -> t.Optional[exp.Expression]: -2462 this = self._parse_bitwise() -2463 negate = self._match(TokenType.NOT) -2464 -2465 if self._match_set(self.RANGE_PARSERS): -2466 this = self.RANGE_PARSERS[self._prev.token_type](self, this) -2467 elif self._match(TokenType.ISNULL): -2468 this = self.expression(exp.Is, this=this, expression=exp.Null()) +2442 def _parse_lock(self) -> t.Optional[exp.Expression]: +2443 if self._match_text_seq("FOR", "UPDATE"): +2444 return self.expression(exp.Lock, update=True) +2445 if self._match_text_seq("FOR", "SHARE"): +2446 return self.expression(exp.Lock, update=False) +2447 +2448 return None +2449 +2450 def _parse_set_operations(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: +2451 if not self._match_set(self.SET_OPERATIONS): +2452 return this +2453 +2454 token_type = self._prev.token_type +2455 +2456 if token_type == TokenType.UNION: +2457 expression = exp.Union +2458 elif token_type == TokenType.EXCEPT: +2459 expression = exp.Except +2460 else: +2461 expression = exp.Intersect +2462 +2463 return self.expression( +2464 expression, +2465 this=this, +2466 distinct=self._match(TokenType.DISTINCT) or not self._match(TokenType.ALL), +2467 expression=self._parse_set_operations(self._parse_select(nested=True)), +2468 ) 2469 -2470 # Postgres supports ISNULL and NOTNULL for conditions. -2471 # https://blog.andreiavram.ro/postgresql-null-composite-type/ -2472 if self._match(TokenType.NOTNULL): -2473 this = self.expression(exp.Is, this=this, expression=exp.Null()) -2474 this = self.expression(exp.Not, this=this) +2470 def _parse_expression(self) -> t.Optional[exp.Expression]: +2471 return self._parse_alias(self._parse_conjunction()) +2472 +2473 def _parse_conjunction(self) -> t.Optional[exp.Expression]: +2474 return self._parse_tokens(self._parse_equality, self.CONJUNCTION) 2475 -2476 if negate: -2477 this = self.expression(exp.Not, this=this) +2476 def _parse_equality(self) -> t.Optional[exp.Expression]: +2477 return self._parse_tokens(self._parse_comparison, self.EQUALITY) 2478 -2479 if self._match(TokenType.IS): -2480 this = self._parse_is(this) +2479 def _parse_comparison(self) -> t.Optional[exp.Expression]: +2480 return self._parse_tokens(self._parse_range, self.COMPARISON) 2481 -2482 return this -2483 -2484 def _parse_is(self, this: t.Optional[exp.Expression]) -> exp.Expression: -2485 negate = self._match(TokenType.NOT) -2486 if self._match(TokenType.DISTINCT_FROM): -2487 klass = exp.NullSafeEQ if negate else exp.NullSafeNEQ -2488 return self.expression(klass, this=this, expression=self._parse_expression()) -2489 -2490 this = self.expression( -2491 exp.Is, -2492 this=this, -2493 expression=self._parse_null() or self._parse_boolean(), -2494 ) -2495 return self.expression(exp.Not, this=this) if negate else this +2482 def _parse_range(self) -> t.Optional[exp.Expression]: +2483 this = self._parse_bitwise() +2484 negate = self._match(TokenType.NOT) +2485 +2486 if self._match_set(self.RANGE_PARSERS): +2487 this = self.RANGE_PARSERS[self._prev.token_type](self, this) +2488 elif self._match(TokenType.ISNULL): +2489 this = self.expression(exp.Is, this=this, expression=exp.Null()) +2490 +2491 # Postgres supports ISNULL and NOTNULL for conditions. +2492 # https://blog.andreiavram.ro/postgresql-null-composite-type/ +2493 if self._match(TokenType.NOTNULL): +2494 this = self.expression(exp.Is, this=this, expression=exp.Null()) +2495 this = self.expression(exp.Not, this=this) 2496 -2497 def _parse_in(self, this: t.Optional[exp.Expression]) -> exp.Expression: -2498 unnest = self._parse_unnest() -2499 if unnest: -2500 this = self.expression(exp.In, this=this, unnest=unnest) -2501 elif self._match(TokenType.L_PAREN): -2502 expressions = self._parse_csv(self._parse_select_or_expression) -2503 -2504 if len(expressions) == 1 and isinstance(expressions[0], exp.Subqueryable): -2505 this = self.expression(exp.In, this=this, query=expressions[0]) -2506 else: -2507 this = self.expression(exp.In, this=this, expressions=expressions) -2508 -2509 self._match_r_paren() -2510 else: -2511 this = self.expression(exp.In, this=this, field=self._parse_field()) -2512 -2513 return this -2514 -2515 def _parse_between(self, this: exp.Expression) -> exp.Expression: -2516 low = self._parse_bitwise() -2517 self._match(TokenType.AND) -2518 high = self._parse_bitwise() -2519 return self.expression(exp.Between, this=this, low=low, high=high) -2520 -2521 def _parse_escape(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: -2522 if not self._match(TokenType.ESCAPE): -2523 return this -2524 return self.expression(exp.Escape, this=this, expression=self._parse_string()) -2525 -2526 def _parse_bitwise(self) -> t.Optional[exp.Expression]: -2527 this = self._parse_term() -2528 -2529 while True: -2530 if self._match_set(self.BITWISE): -2531 this = self.expression( -2532 self.BITWISE[self._prev.token_type], -2533 this=this, -2534 expression=self._parse_term(), -2535 ) -2536 elif self._match_pair(TokenType.LT, TokenType.LT): -2537 this = self.expression( -2538 exp.BitwiseLeftShift, this=this, expression=self._parse_term() -2539 ) -2540 elif self._match_pair(TokenType.GT, TokenType.GT): -2541 this = self.expression( -2542 exp.BitwiseRightShift, this=this, expression=self._parse_term() -2543 ) -2544 else: -2545 break +2497 if negate: +2498 this = self.expression(exp.Not, this=this) +2499 +2500 if self._match(TokenType.IS): +2501 this = self._parse_is(this) +2502 +2503 return this +2504 +2505 def _parse_is(self, this: t.Optional[exp.Expression]) -> exp.Expression: +2506 negate = self._match(TokenType.NOT) +2507 if self._match(TokenType.DISTINCT_FROM): +2508 klass = exp.NullSafeEQ if negate else exp.NullSafeNEQ +2509 return self.expression(klass, this=this, expression=self._parse_expression()) +2510 +2511 this = self.expression( +2512 exp.Is, +2513 this=this, +2514 expression=self._parse_null() or self._parse_boolean(), +2515 ) +2516 return self.expression(exp.Not, this=this) if negate else this +2517 +2518 def _parse_in(self, this: t.Optional[exp.Expression]) -> exp.Expression: +2519 unnest = self._parse_unnest() +2520 if unnest: +2521 this = self.expression(exp.In, this=this, unnest=unnest) +2522 elif self._match(TokenType.L_PAREN): +2523 expressions = self._parse_csv(self._parse_select_or_expression) +2524 +2525 if len(expressions) == 1 and isinstance(expressions[0], exp.Subqueryable): +2526 this = self.expression(exp.In, this=this, query=expressions[0]) +2527 else: +2528 this = self.expression(exp.In, this=this, expressions=expressions) +2529 +2530 self._match_r_paren() +2531 else: +2532 this = self.expression(exp.In, this=this, field=self._parse_field()) +2533 +2534 return this +2535 +2536 def _parse_between(self, this: exp.Expression) -> exp.Expression: +2537 low = self._parse_bitwise() +2538 self._match(TokenType.AND) +2539 high = self._parse_bitwise() +2540 return self.expression(exp.Between, this=this, low=low, high=high) +2541 +2542 def _parse_escape(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: +2543 if not self._match(TokenType.ESCAPE): +2544 return this +2545 return self.expression(exp.Escape, this=this, expression=self._parse_string()) 2546 -2547 return this -2548 -2549 def _parse_term(self) -> t.Optional[exp.Expression]: -2550 return self._parse_tokens(self._parse_factor, self.TERM) -2551 -2552 def _parse_factor(self) -> t.Optional[exp.Expression]: -2553 return self._parse_tokens(self._parse_unary, self.FACTOR) -2554 -2555 def _parse_unary(self) -> t.Optional[exp.Expression]: -2556 if self._match_set(self.UNARY_PARSERS): -2557 return self.UNARY_PARSERS[self._prev.token_type](self) -2558 return self._parse_at_time_zone(self._parse_type()) -2559 -2560 def _parse_type(self) -> t.Optional[exp.Expression]: -2561 if self._match(TokenType.INTERVAL): -2562 return self.expression(exp.Interval, this=self._parse_term(), unit=self._parse_field()) -2563 -2564 index = self._index -2565 type_token = self._parse_types(check_func=True) -2566 this = self._parse_column() +2547 def _parse_bitwise(self) -> t.Optional[exp.Expression]: +2548 this = self._parse_term() +2549 +2550 while True: +2551 if self._match_set(self.BITWISE): +2552 this = self.expression( +2553 self.BITWISE[self._prev.token_type], +2554 this=this, +2555 expression=self._parse_term(), +2556 ) +2557 elif self._match_pair(TokenType.LT, TokenType.LT): +2558 this = self.expression( +2559 exp.BitwiseLeftShift, this=this, expression=self._parse_term() +2560 ) +2561 elif self._match_pair(TokenType.GT, TokenType.GT): +2562 this = self.expression( +2563 exp.BitwiseRightShift, this=this, expression=self._parse_term() +2564 ) +2565 else: +2566 break 2567 -2568 if type_token: -2569 if isinstance(this, exp.Literal): -2570 return self.expression(exp.Cast, this=this, to=type_token) -2571 if not type_token.args.get("expressions"): -2572 self._retreat(index) -2573 return self._parse_column() -2574 return type_token +2568 return this +2569 +2570 def _parse_term(self) -> t.Optional[exp.Expression]: +2571 return self._parse_tokens(self._parse_factor, self.TERM) +2572 +2573 def _parse_factor(self) -> t.Optional[exp.Expression]: +2574 return self._parse_tokens(self._parse_unary, self.FACTOR) 2575 -2576 return this -2577 -2578 def _parse_types(self, check_func: bool = False) -> t.Optional[exp.Expression]: -2579 index = self._index +2576 def _parse_unary(self) -> t.Optional[exp.Expression]: +2577 if self._match_set(self.UNARY_PARSERS): +2578 return self.UNARY_PARSERS[self._prev.token_type](self) +2579 return self._parse_at_time_zone(self._parse_type()) 2580 -2581 prefix = self._match_text_seq("SYSUDTLIB", ".") -2582 -2583 if not self._match_set(self.TYPE_TOKENS): -2584 return None -2585 -2586 type_token = self._prev.token_type -2587 -2588 if type_token == TokenType.PSEUDO_TYPE: -2589 return self.expression(exp.PseudoType, this=self._prev.text) -2590 -2591 nested = type_token in self.NESTED_TYPE_TOKENS -2592 is_struct = type_token == TokenType.STRUCT -2593 expressions = None -2594 maybe_func = False -2595 -2596 if self._match(TokenType.L_PAREN): -2597 if is_struct: -2598 expressions = self._parse_csv(self._parse_struct_kwargs) -2599 elif nested: -2600 expressions = self._parse_csv(self._parse_types) -2601 else: -2602 expressions = self._parse_csv(self._parse_conjunction) +2581 def _parse_type(self) -> t.Optional[exp.Expression]: +2582 if self._match(TokenType.INTERVAL): +2583 return self.expression(exp.Interval, this=self._parse_term(), unit=self._parse_field()) +2584 +2585 index = self._index +2586 type_token = self._parse_types(check_func=True) +2587 this = self._parse_column() +2588 +2589 if type_token: +2590 if isinstance(this, exp.Literal): +2591 return self.expression(exp.Cast, this=this, to=type_token) +2592 if not type_token.args.get("expressions"): +2593 self._retreat(index) +2594 return self._parse_column() +2595 return type_token +2596 +2597 return this +2598 +2599 def _parse_types(self, check_func: bool = False) -> t.Optional[exp.Expression]: +2600 index = self._index +2601 +2602 prefix = self._match_text_seq("SYSUDTLIB", ".") 2603 -2604 if not expressions: -2605 self._retreat(index) -2606 return None -2607 -2608 self._match_r_paren() -2609 maybe_func = True -2610 -2611 if not nested and self._match_pair(TokenType.L_BRACKET, TokenType.R_BRACKET): -2612 this = exp.DataType( -2613 this=exp.DataType.Type.ARRAY, -2614 expressions=[exp.DataType.build(type_token.value, expressions=expressions)], -2615 nested=True, -2616 ) -2617 -2618 while self._match_pair(TokenType.L_BRACKET, TokenType.R_BRACKET): -2619 this = exp.DataType( -2620 this=exp.DataType.Type.ARRAY, -2621 expressions=[this], -2622 nested=True, -2623 ) +2604 if not self._match_set(self.TYPE_TOKENS): +2605 return None +2606 +2607 type_token = self._prev.token_type +2608 +2609 if type_token == TokenType.PSEUDO_TYPE: +2610 return self.expression(exp.PseudoType, this=self._prev.text) +2611 +2612 nested = type_token in self.NESTED_TYPE_TOKENS +2613 is_struct = type_token == TokenType.STRUCT +2614 expressions = None +2615 maybe_func = False +2616 +2617 if self._match(TokenType.L_PAREN): +2618 if is_struct: +2619 expressions = self._parse_csv(self._parse_struct_kwargs) +2620 elif nested: +2621 expressions = self._parse_csv(self._parse_types) +2622 else: +2623 expressions = self._parse_csv(self._parse_conjunction) 2624 -2625 return this -2626 -2627 if self._match(TokenType.L_BRACKET): -2628 self._retreat(index) -2629 return None -2630 -2631 values: t.Optional[t.List[t.Optional[exp.Expression]]] = None -2632 if nested and self._match(TokenType.LT): -2633 if is_struct: -2634 expressions = self._parse_csv(self._parse_struct_kwargs) -2635 else: -2636 expressions = self._parse_csv(self._parse_types) -2637 -2638 if not self._match(TokenType.GT): -2639 self.raise_error("Expecting >") -2640 -2641 if self._match_set((TokenType.L_BRACKET, TokenType.L_PAREN)): -2642 values = self._parse_csv(self._parse_conjunction) -2643 self._match_set((TokenType.R_BRACKET, TokenType.R_PAREN)) -2644 -2645 value: t.Optional[exp.Expression] = None -2646 if type_token in self.TIMESTAMPS: -2647 if self._match(TokenType.WITH_TIME_ZONE) or type_token == TokenType.TIMESTAMPTZ: -2648 value = exp.DataType(this=exp.DataType.Type.TIMESTAMPTZ, expressions=expressions) -2649 elif ( -2650 self._match(TokenType.WITH_LOCAL_TIME_ZONE) or type_token == TokenType.TIMESTAMPLTZ -2651 ): -2652 value = exp.DataType(this=exp.DataType.Type.TIMESTAMPLTZ, expressions=expressions) -2653 elif self._match(TokenType.WITHOUT_TIME_ZONE): -2654 if type_token == TokenType.TIME: -2655 value = exp.DataType(this=exp.DataType.Type.TIME, expressions=expressions) -2656 else: -2657 value = exp.DataType(this=exp.DataType.Type.TIMESTAMP, expressions=expressions) +2625 if not expressions: +2626 self._retreat(index) +2627 return None +2628 +2629 self._match_r_paren() +2630 maybe_func = True +2631 +2632 if not nested and self._match_pair(TokenType.L_BRACKET, TokenType.R_BRACKET): +2633 this = exp.DataType( +2634 this=exp.DataType.Type.ARRAY, +2635 expressions=[exp.DataType.build(type_token.value, expressions=expressions)], +2636 nested=True, +2637 ) +2638 +2639 while self._match_pair(TokenType.L_BRACKET, TokenType.R_BRACKET): +2640 this = exp.DataType( +2641 this=exp.DataType.Type.ARRAY, +2642 expressions=[this], +2643 nested=True, +2644 ) +2645 +2646 return this +2647 +2648 if self._match(TokenType.L_BRACKET): +2649 self._retreat(index) +2650 return None +2651 +2652 values: t.Optional[t.List[t.Optional[exp.Expression]]] = None +2653 if nested and self._match(TokenType.LT): +2654 if is_struct: +2655 expressions = self._parse_csv(self._parse_struct_kwargs) +2656 else: +2657 expressions = self._parse_csv(self._parse_types) 2658 -2659 maybe_func = maybe_func and value is None -2660 -2661 if value is None: -2662 value = exp.DataType(this=exp.DataType.Type.TIMESTAMP, expressions=expressions) -2663 elif type_token == TokenType.INTERVAL: -2664 unit = self._parse_var() +2659 if not self._match(TokenType.GT): +2660 self.raise_error("Expecting >") +2661 +2662 if self._match_set((TokenType.L_BRACKET, TokenType.L_PAREN)): +2663 values = self._parse_csv(self._parse_conjunction) +2664 self._match_set((TokenType.R_BRACKET, TokenType.R_PAREN)) 2665 -2666 if not unit: -2667 value = self.expression(exp.DataType, this=exp.DataType.Type.INTERVAL) -2668 else: -2669 value = self.expression(exp.Interval, unit=unit) -2670 -2671 if maybe_func and check_func: -2672 index2 = self._index -2673 peek = self._parse_string() -2674 -2675 if not peek: -2676 self._retreat(index) -2677 return None -2678 -2679 self._retreat(index2) -2680 -2681 if value: -2682 return value -2683 -2684 return exp.DataType( -2685 this=exp.DataType.Type[type_token.value.upper()], -2686 expressions=expressions, -2687 nested=nested, -2688 values=values, -2689 prefix=prefix, -2690 ) +2666 value: t.Optional[exp.Expression] = None +2667 if type_token in self.TIMESTAMPS: +2668 if self._match(TokenType.WITH_TIME_ZONE) or type_token == TokenType.TIMESTAMPTZ: +2669 value = exp.DataType(this=exp.DataType.Type.TIMESTAMPTZ, expressions=expressions) +2670 elif ( +2671 self._match(TokenType.WITH_LOCAL_TIME_ZONE) or type_token == TokenType.TIMESTAMPLTZ +2672 ): +2673 value = exp.DataType(this=exp.DataType.Type.TIMESTAMPLTZ, expressions=expressions) +2674 elif self._match(TokenType.WITHOUT_TIME_ZONE): +2675 if type_token == TokenType.TIME: +2676 value = exp.DataType(this=exp.DataType.Type.TIME, expressions=expressions) +2677 else: +2678 value = exp.DataType(this=exp.DataType.Type.TIMESTAMP, expressions=expressions) +2679 +2680 maybe_func = maybe_func and value is None +2681 +2682 if value is None: +2683 value = exp.DataType(this=exp.DataType.Type.TIMESTAMP, expressions=expressions) +2684 elif type_token == TokenType.INTERVAL: +2685 unit = self._parse_var() +2686 +2687 if not unit: +2688 value = self.expression(exp.DataType, this=exp.DataType.Type.INTERVAL) +2689 else: +2690 value = self.expression(exp.Interval, unit=unit) 2691 -2692 def _parse_struct_kwargs(self) -> t.Optional[exp.Expression]: -2693 if self._curr and self._curr.token_type in self.TYPE_TOKENS: -2694 return self._parse_types() +2692 if maybe_func and check_func: +2693 index2 = self._index +2694 peek = self._parse_string() 2695 -2696 this = self._parse_id_var() -2697 self._match(TokenType.COLON) -2698 data_type = self._parse_types() +2696 if not peek: +2697 self._retreat(index) +2698 return None 2699 -2700 if not data_type: -2701 return None -2702 return self.expression(exp.StructKwarg, this=this, expression=data_type) -2703 -2704 def _parse_at_time_zone(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: -2705 if not self._match(TokenType.AT_TIME_ZONE): -2706 return this -2707 return self.expression(exp.AtTimeZone, this=this, zone=self._parse_unary()) -2708 -2709 def _parse_column(self) -> t.Optional[exp.Expression]: -2710 this = self._parse_field() -2711 if isinstance(this, exp.Identifier): -2712 this = self.expression(exp.Column, this=this) -2713 elif not this: -2714 return self._parse_bracket(this) -2715 this = self._parse_bracket(this) +2700 self._retreat(index2) +2701 +2702 if value: +2703 return value +2704 +2705 return exp.DataType( +2706 this=exp.DataType.Type[type_token.value.upper()], +2707 expressions=expressions, +2708 nested=nested, +2709 values=values, +2710 prefix=prefix, +2711 ) +2712 +2713 def _parse_struct_kwargs(self) -> t.Optional[exp.Expression]: +2714 if self._curr and self._curr.token_type in self.TYPE_TOKENS: +2715 return self._parse_types() 2716 -2717 while self._match_set(self.COLUMN_OPERATORS): -2718 op_token = self._prev.token_type -2719 op = self.COLUMN_OPERATORS.get(op_token) +2717 this = self._parse_id_var() +2718 self._match(TokenType.COLON) +2719 data_type = self._parse_types() 2720 -2721 if op_token == TokenType.DCOLON: -2722 field = self._parse_types() -2723 if not field: -2724 self.raise_error("Expected type") -2725 elif op: -2726 self._advance() -2727 value = self._prev.text -2728 field = ( -2729 exp.Literal.number(value) -2730 if self._prev.token_type == TokenType.NUMBER -2731 else exp.Literal.string(value) -2732 ) -2733 else: -2734 field = self._parse_star() or self._parse_function() or self._parse_id_var() -2735 -2736 if isinstance(field, exp.Func): -2737 # bigquery allows function calls like x.y.count(...) -2738 # SAFE.SUBSTR(...) -2739 # https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-reference#function_call_rules -2740 this = self._replace_columns_with_dots(this) +2721 if not data_type: +2722 return None +2723 return self.expression(exp.StructKwarg, this=this, expression=data_type) +2724 +2725 def _parse_at_time_zone(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: +2726 if not self._match(TokenType.AT_TIME_ZONE): +2727 return this +2728 return self.expression(exp.AtTimeZone, this=this, zone=self._parse_unary()) +2729 +2730 def _parse_column(self) -> t.Optional[exp.Expression]: +2731 this = self._parse_field() +2732 if isinstance(this, exp.Identifier): +2733 this = self.expression(exp.Column, this=this) +2734 elif not this: +2735 return self._parse_bracket(this) +2736 this = self._parse_bracket(this) +2737 +2738 while self._match_set(self.COLUMN_OPERATORS): +2739 op_token = self._prev.token_type +2740 op = self.COLUMN_OPERATORS.get(op_token) 2741 -2742 if op: -2743 this = op(self, this, field) -2744 elif isinstance(this, exp.Column) and not this.args.get("catalog"): -2745 this = self.expression( -2746 exp.Column, -2747 this=field, -2748 table=this.this, -2749 db=this.args.get("table"), -2750 catalog=this.args.get("db"), -2751 ) -2752 else: -2753 this = self.expression(exp.Dot, this=this, expression=field) -2754 this = self._parse_bracket(this) -2755 -2756 return this -2757 -2758 def _parse_primary(self) -> t.Optional[exp.Expression]: -2759 if self._match_set(self.PRIMARY_PARSERS): -2760 token_type = self._prev.token_type -2761 primary = self.PRIMARY_PARSERS[token_type](self, self._prev) +2742 if op_token == TokenType.DCOLON: +2743 field = self._parse_types() +2744 if not field: +2745 self.raise_error("Expected type") +2746 elif op: +2747 self._advance() +2748 value = self._prev.text +2749 field = ( +2750 exp.Literal.number(value) +2751 if self._prev.token_type == TokenType.NUMBER +2752 else exp.Literal.string(value) +2753 ) +2754 else: +2755 field = self._parse_star() or self._parse_function() or self._parse_id_var() +2756 +2757 if isinstance(field, exp.Func): +2758 # bigquery allows function calls like x.y.count(...) +2759 # SAFE.SUBSTR(...) +2760 # https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-reference#function_call_rules +2761 this = self._replace_columns_with_dots(this) 2762 -2763 if token_type == TokenType.STRING: -2764 expressions = [primary] -2765 while self._match(TokenType.STRING): -2766 expressions.append(exp.Literal.string(self._prev.text)) -2767 if len(expressions) > 1: -2768 return self.expression(exp.Concat, expressions=expressions) -2769 return primary -2770 -2771 if self._match_pair(TokenType.DOT, TokenType.NUMBER): -2772 return exp.Literal.number(f"0.{self._prev.text}") -2773 -2774 if self._match(TokenType.L_PAREN): -2775 comments = self._prev_comments -2776 query = self._parse_select() -2777 -2778 if query: -2779 expressions = [query] -2780 else: -2781 expressions = self._parse_csv( -2782 lambda: self._parse_alias(self._parse_conjunction(), explicit=True) -2783 ) -2784 -2785 this = seq_get(expressions, 0) -2786 self._parse_query_modifiers(this) -2787 self._match_r_paren() -2788 -2789 if isinstance(this, exp.Subqueryable): -2790 this = self._parse_set_operations( -2791 self._parse_subquery(this=this, parse_alias=False) -2792 ) -2793 elif len(expressions) > 1: -2794 this = self.expression(exp.Tuple, expressions=expressions) -2795 else: -2796 this = self.expression(exp.Paren, this=this) -2797 -2798 if this and comments: -2799 this.comments = comments -2800 -2801 return this -2802 -2803 return None -2804 -2805 def _parse_field(self, any_token: bool = False) -> t.Optional[exp.Expression]: -2806 return self._parse_primary() or self._parse_function() or self._parse_id_var(any_token) -2807 -2808 def _parse_function( -2809 self, functions: t.Optional[t.Dict[str, t.Callable]] = None -2810 ) -> t.Optional[exp.Expression]: -2811 if not self._curr: -2812 return None -2813 -2814 token_type = self._curr.token_type -2815 -2816 if self._match_set(self.NO_PAREN_FUNCTION_PARSERS): -2817 return self.NO_PAREN_FUNCTION_PARSERS[token_type](self) -2818 -2819 if not self._next or self._next.token_type != TokenType.L_PAREN: -2820 if token_type in self.NO_PAREN_FUNCTIONS: -2821 self._advance() -2822 return self.expression(self.NO_PAREN_FUNCTIONS[token_type]) -2823 -2824 return None -2825 -2826 if token_type not in self.FUNC_TOKENS: -2827 return None -2828 -2829 this = self._curr.text -2830 upper = this.upper() -2831 self._advance(2) -2832 -2833 parser = self.FUNCTION_PARSERS.get(upper) -2834 -2835 if parser: -2836 this = parser(self) -2837 else: -2838 subquery_predicate = self.SUBQUERY_PREDICATES.get(token_type) -2839 -2840 if subquery_predicate and self._curr.token_type in (TokenType.SELECT, TokenType.WITH): -2841 this = self.expression(subquery_predicate, this=self._parse_select()) -2842 self._match_r_paren() -2843 return this -2844 -2845 if functions is None: -2846 functions = self.FUNCTIONS +2763 if op: +2764 this = op(self, this, field) +2765 elif isinstance(this, exp.Column) and not this.args.get("catalog"): +2766 this = self.expression( +2767 exp.Column, +2768 this=field, +2769 table=this.this, +2770 db=this.args.get("table"), +2771 catalog=this.args.get("db"), +2772 ) +2773 else: +2774 this = self.expression(exp.Dot, this=this, expression=field) +2775 this = self._parse_bracket(this) +2776 +2777 return this +2778 +2779 def _parse_primary(self) -> t.Optional[exp.Expression]: +2780 if self._match_set(self.PRIMARY_PARSERS): +2781 token_type = self._prev.token_type +2782 primary = self.PRIMARY_PARSERS[token_type](self, self._prev) +2783 +2784 if token_type == TokenType.STRING: +2785 expressions = [primary] +2786 while self._match(TokenType.STRING): +2787 expressions.append(exp.Literal.string(self._prev.text)) +2788 if len(expressions) > 1: +2789 return self.expression(exp.Concat, expressions=expressions) +2790 return primary +2791 +2792 if self._match_pair(TokenType.DOT, TokenType.NUMBER): +2793 return exp.Literal.number(f"0.{self._prev.text}") +2794 +2795 if self._match(TokenType.L_PAREN): +2796 comments = self._prev_comments +2797 query = self._parse_select() +2798 +2799 if query: +2800 expressions = [query] +2801 else: +2802 expressions = self._parse_csv( +2803 lambda: self._parse_alias(self._parse_conjunction(), explicit=True) +2804 ) +2805 +2806 this = seq_get(expressions, 0) +2807 self._parse_query_modifiers(this) +2808 +2809 if isinstance(this, exp.Subqueryable): +2810 this = self._parse_set_operations( +2811 self._parse_subquery(this=this, parse_alias=False) +2812 ) +2813 elif len(expressions) > 1: +2814 this = self.expression(exp.Tuple, expressions=expressions) +2815 else: +2816 this = self.expression(exp.Paren, this=self._parse_set_operations(this)) +2817 +2818 self._match_r_paren() +2819 +2820 if this and comments: +2821 this.comments = comments +2822 +2823 return this +2824 +2825 return None +2826 +2827 def _parse_field(self, any_token: bool = False) -> t.Optional[exp.Expression]: +2828 return self._parse_primary() or self._parse_function() or self._parse_id_var(any_token) +2829 +2830 def _parse_function( +2831 self, functions: t.Optional[t.Dict[str, t.Callable]] = None +2832 ) -> t.Optional[exp.Expression]: +2833 if not self._curr: +2834 return None +2835 +2836 token_type = self._curr.token_type +2837 +2838 if self._match_set(self.NO_PAREN_FUNCTION_PARSERS): +2839 return self.NO_PAREN_FUNCTION_PARSERS[token_type](self) +2840 +2841 if not self._next or self._next.token_type != TokenType.L_PAREN: +2842 if token_type in self.NO_PAREN_FUNCTIONS: +2843 self._advance() +2844 return self.expression(self.NO_PAREN_FUNCTIONS[token_type]) +2845 +2846 return None 2847 -2848 function = functions.get(upper) -2849 args = self._parse_csv(self._parse_lambda) +2848 if token_type not in self.FUNC_TOKENS: +2849 return None 2850 -2851 if function: -2852 # Clickhouse supports function calls like foo(x, y)(z), so for these we need to also parse the -2853 # second parameter list (i.e. "(z)") and the corresponding function will receive both arg lists. -2854 if count_params(function) == 2: -2855 params = None -2856 if self._match_pair(TokenType.R_PAREN, TokenType.L_PAREN): -2857 params = self._parse_csv(self._parse_lambda) -2858 -2859 this = function(args, params) -2860 else: -2861 this = function(args) -2862 -2863 self.validate_expression(this, args) -2864 else: -2865 this = self.expression(exp.Anonymous, this=this, expressions=args) +2851 this = self._curr.text +2852 upper = this.upper() +2853 self._advance(2) +2854 +2855 parser = self.FUNCTION_PARSERS.get(upper) +2856 +2857 if parser: +2858 this = parser(self) +2859 else: +2860 subquery_predicate = self.SUBQUERY_PREDICATES.get(token_type) +2861 +2862 if subquery_predicate and self._curr.token_type in (TokenType.SELECT, TokenType.WITH): +2863 this = self.expression(subquery_predicate, this=self._parse_select()) +2864 self._match_r_paren() +2865 return this 2866 -2867 self._match_r_paren(this) -2868 return self._parse_window(this) +2867 if functions is None: +2868 functions = self.FUNCTIONS 2869 -2870 def _parse_function_parameter(self) -> t.Optional[exp.Expression]: -2871 return self._parse_column_def(self._parse_id_var()) +2870 function = functions.get(upper) +2871 args = self._parse_csv(self._parse_lambda) 2872 -2873 def _parse_user_defined_function( -2874 self, kind: t.Optional[TokenType] = None -2875 ) -> t.Optional[exp.Expression]: -2876 this = self._parse_id_var() -2877 -2878 while self._match(TokenType.DOT): -2879 this = self.expression(exp.Dot, this=this, expression=self._parse_id_var()) +2873 if function: +2874 # Clickhouse supports function calls like foo(x, y)(z), so for these we need to also parse the +2875 # second parameter list (i.e. "(z)") and the corresponding function will receive both arg lists. +2876 if count_params(function) == 2: +2877 params = None +2878 if self._match_pair(TokenType.R_PAREN, TokenType.L_PAREN): +2879 params = self._parse_csv(self._parse_lambda) 2880 -2881 if not self._match(TokenType.L_PAREN): -2882 return this -2883 -2884 expressions = self._parse_csv(self._parse_function_parameter) -2885 self._match_r_paren() -2886 return self.expression( -2887 exp.UserDefinedFunction, this=this, expressions=expressions, wrapped=True -2888 ) -2889 -2890 def _parse_introducer(self, token: Token) -> t.Optional[exp.Expression]: -2891 literal = self._parse_primary() -2892 if literal: -2893 return self.expression(exp.Introducer, this=token.text, expression=literal) +2881 this = function(args, params) +2882 else: +2883 this = function(args) +2884 +2885 self.validate_expression(this, args) +2886 else: +2887 this = self.expression(exp.Anonymous, this=this, expressions=args) +2888 +2889 self._match_r_paren(this) +2890 return self._parse_window(this) +2891 +2892 def _parse_function_parameter(self) -> t.Optional[exp.Expression]: +2893 return self._parse_column_def(self._parse_id_var()) 2894 -2895 return self.expression(exp.Identifier, this=token.text) -2896 -2897 def _parse_national(self, token: Token) -> exp.Expression: -2898 return self.expression(exp.National, this=exp.Literal.string(token.text)) +2895 def _parse_user_defined_function( +2896 self, kind: t.Optional[TokenType] = None +2897 ) -> t.Optional[exp.Expression]: +2898 this = self._parse_id_var() 2899 -2900 def _parse_session_parameter(self) -> exp.Expression: -2901 kind = None -2902 this = self._parse_id_var() or self._parse_primary() -2903 -2904 if this and self._match(TokenType.DOT): -2905 kind = this.name -2906 this = self._parse_var() or self._parse_primary() -2907 -2908 return self.expression(exp.SessionParameter, this=this, kind=kind) -2909 -2910 def _parse_lambda(self) -> t.Optional[exp.Expression]: -2911 index = self._index -2912 -2913 if self._match(TokenType.L_PAREN): -2914 expressions = self._parse_csv(self._parse_id_var) -2915 -2916 if not self._match(TokenType.R_PAREN): -2917 self._retreat(index) -2918 else: -2919 expressions = [self._parse_id_var()] -2920 -2921 if self._match_set(self.LAMBDAS): -2922 return self.LAMBDAS[self._prev.token_type](self, expressions) -2923 -2924 self._retreat(index) +2900 while self._match(TokenType.DOT): +2901 this = self.expression(exp.Dot, this=this, expression=self._parse_id_var()) +2902 +2903 if not self._match(TokenType.L_PAREN): +2904 return this +2905 +2906 expressions = self._parse_csv(self._parse_function_parameter) +2907 self._match_r_paren() +2908 return self.expression( +2909 exp.UserDefinedFunction, this=this, expressions=expressions, wrapped=True +2910 ) +2911 +2912 def _parse_introducer(self, token: Token) -> t.Optional[exp.Expression]: +2913 literal = self._parse_primary() +2914 if literal: +2915 return self.expression(exp.Introducer, this=token.text, expression=literal) +2916 +2917 return self.expression(exp.Identifier, this=token.text) +2918 +2919 def _parse_national(self, token: Token) -> exp.Expression: +2920 return self.expression(exp.National, this=exp.Literal.string(token.text)) +2921 +2922 def _parse_session_parameter(self) -> exp.Expression: +2923 kind = None +2924 this = self._parse_id_var() or self._parse_primary() 2925 -2926 this: t.Optional[exp.Expression] -2927 -2928 if self._match(TokenType.DISTINCT): -2929 this = self.expression( -2930 exp.Distinct, expressions=self._parse_csv(self._parse_conjunction) -2931 ) -2932 else: -2933 this = self._parse_select_or_expression() +2926 if this and self._match(TokenType.DOT): +2927 kind = this.name +2928 this = self._parse_var() or self._parse_primary() +2929 +2930 return self.expression(exp.SessionParameter, this=this, kind=kind) +2931 +2932 def _parse_lambda(self) -> t.Optional[exp.Expression]: +2933 index = self._index 2934 -2935 if self._match(TokenType.IGNORE_NULLS): -2936 this = self.expression(exp.IgnoreNulls, this=this) -2937 else: -2938 self._match(TokenType.RESPECT_NULLS) -2939 -2940 return self._parse_limit(self._parse_order(this)) -2941 -2942 def _parse_schema(self, this: t.Optional[exp.Expression] = None) -> t.Optional[exp.Expression]: -2943 index = self._index -2944 if not self._match(TokenType.L_PAREN) or self._match(TokenType.SELECT): -2945 self._retreat(index) -2946 return this +2935 if self._match(TokenType.L_PAREN): +2936 expressions = self._parse_csv(self._parse_id_var) +2937 +2938 if not self._match(TokenType.R_PAREN): +2939 self._retreat(index) +2940 else: +2941 expressions = [self._parse_id_var()] +2942 +2943 if self._match_set(self.LAMBDAS): +2944 return self.LAMBDAS[self._prev.token_type](self, expressions) +2945 +2946 self._retreat(index) 2947 -2948 args = self._parse_csv( -2949 lambda: self._parse_constraint() -2950 or self._parse_column_def(self._parse_field(any_token=True)) -2951 ) -2952 self._match_r_paren() -2953 return self.expression(exp.Schema, this=this, expressions=args) -2954 -2955 def _parse_column_def(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: -2956 kind = self._parse_types() -2957 -2958 if self._match_text_seq("FOR", "ORDINALITY"): -2959 return self.expression(exp.ColumnDef, this=this, ordinality=True) -2960 -2961 constraints = [] -2962 while True: -2963 constraint = self._parse_column_constraint() -2964 if not constraint: -2965 break -2966 constraints.append(constraint) -2967 -2968 if not kind and not constraints: -2969 return this -2970 -2971 return self.expression(exp.ColumnDef, this=this, kind=kind, constraints=constraints) -2972 -2973 def _parse_auto_increment(self) -> exp.Expression: -2974 start = None -2975 increment = None +2948 this: t.Optional[exp.Expression] +2949 +2950 if self._match(TokenType.DISTINCT): +2951 this = self.expression( +2952 exp.Distinct, expressions=self._parse_csv(self._parse_conjunction) +2953 ) +2954 else: +2955 this = self._parse_select_or_expression() +2956 +2957 if self._match(TokenType.IGNORE_NULLS): +2958 this = self.expression(exp.IgnoreNulls, this=this) +2959 else: +2960 self._match(TokenType.RESPECT_NULLS) +2961 +2962 return self._parse_limit(self._parse_order(this)) +2963 +2964 def _parse_schema(self, this: t.Optional[exp.Expression] = None) -> t.Optional[exp.Expression]: +2965 index = self._index +2966 if not self._match(TokenType.L_PAREN) or self._match(TokenType.SELECT): +2967 self._retreat(index) +2968 return this +2969 +2970 args = self._parse_csv( +2971 lambda: self._parse_constraint() +2972 or self._parse_column_def(self._parse_field(any_token=True)) +2973 ) +2974 self._match_r_paren() +2975 return self.expression(exp.Schema, this=this, expressions=args) 2976 -2977 if self._match(TokenType.L_PAREN, advance=False): -2978 args = self._parse_wrapped_csv(self._parse_bitwise) -2979 start = seq_get(args, 0) -2980 increment = seq_get(args, 1) -2981 elif self._match_text_seq("START"): -2982 start = self._parse_bitwise() -2983 self._match_text_seq("INCREMENT") -2984 increment = self._parse_bitwise() -2985 -2986 if start and increment: -2987 return exp.GeneratedAsIdentityColumnConstraint(start=start, increment=increment) -2988 -2989 return exp.AutoIncrementColumnConstraint() -2990 -2991 def _parse_compress(self) -> exp.Expression: -2992 if self._match(TokenType.L_PAREN, advance=False): -2993 return self.expression( -2994 exp.CompressColumnConstraint, this=self._parse_wrapped_csv(self._parse_bitwise) -2995 ) -2996 -2997 return self.expression(exp.CompressColumnConstraint, this=self._parse_bitwise()) +2977 def _parse_column_def(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: +2978 kind = self._parse_types() +2979 +2980 if self._match_text_seq("FOR", "ORDINALITY"): +2981 return self.expression(exp.ColumnDef, this=this, ordinality=True) +2982 +2983 constraints = [] +2984 while True: +2985 constraint = self._parse_column_constraint() +2986 if not constraint: +2987 break +2988 constraints.append(constraint) +2989 +2990 if not kind and not constraints: +2991 return this +2992 +2993 return self.expression(exp.ColumnDef, this=this, kind=kind, constraints=constraints) +2994 +2995 def _parse_auto_increment(self) -> exp.Expression: +2996 start = None +2997 increment = None 2998 -2999 def _parse_generated_as_identity(self) -> exp.Expression: -3000 if self._match(TokenType.BY_DEFAULT): -3001 this = self.expression(exp.GeneratedAsIdentityColumnConstraint, this=False) -3002 else: -3003 self._match_text_seq("ALWAYS") -3004 this = self.expression(exp.GeneratedAsIdentityColumnConstraint, this=True) -3005 -3006 self._match_text_seq("AS", "IDENTITY") -3007 if self._match(TokenType.L_PAREN): -3008 if self._match_text_seq("START", "WITH"): -3009 this.set("start", self._parse_bitwise()) -3010 if self._match_text_seq("INCREMENT", "BY"): -3011 this.set("increment", self._parse_bitwise()) -3012 if self._match_text_seq("MINVALUE"): -3013 this.set("minvalue", self._parse_bitwise()) -3014 if self._match_text_seq("MAXVALUE"): -3015 this.set("maxvalue", self._parse_bitwise()) -3016 -3017 if self._match_text_seq("CYCLE"): -3018 this.set("cycle", True) -3019 elif self._match_text_seq("NO", "CYCLE"): -3020 this.set("cycle", False) -3021 -3022 self._match_r_paren() -3023 -3024 return this -3025 -3026 def _parse_inline(self) -> t.Optional[exp.Expression]: -3027 self._match_text_seq("LENGTH") -3028 return self.expression(exp.InlineLengthColumnConstraint, this=self._parse_bitwise()) -3029 -3030 def _parse_not_constraint(self) -> t.Optional[exp.Expression]: -3031 if self._match_text_seq("NULL"): -3032 return self.expression(exp.NotNullColumnConstraint) -3033 if self._match_text_seq("CASESPECIFIC"): -3034 return self.expression(exp.CaseSpecificColumnConstraint, not_=True) -3035 return None -3036 -3037 def _parse_column_constraint(self) -> t.Optional[exp.Expression]: -3038 this = self._parse_references() -3039 if this: -3040 return this -3041 -3042 if self._match(TokenType.CONSTRAINT): -3043 this = self._parse_id_var() -3044 -3045 if self._match_texts(self.CONSTRAINT_PARSERS): -3046 return self.expression( -3047 exp.ColumnConstraint, -3048 this=this, -3049 kind=self.CONSTRAINT_PARSERS[self._prev.text.upper()](self), -3050 ) +2999 if self._match(TokenType.L_PAREN, advance=False): +3000 args = self._parse_wrapped_csv(self._parse_bitwise) +3001 start = seq_get(args, 0) +3002 increment = seq_get(args, 1) +3003 elif self._match_text_seq("START"): +3004 start = self._parse_bitwise() +3005 self._match_text_seq("INCREMENT") +3006 increment = self._parse_bitwise() +3007 +3008 if start and increment: +3009 return exp.GeneratedAsIdentityColumnConstraint(start=start, increment=increment) +3010 +3011 return exp.AutoIncrementColumnConstraint() +3012 +3013 def _parse_compress(self) -> exp.Expression: +3014 if self._match(TokenType.L_PAREN, advance=False): +3015 return self.expression( +3016 exp.CompressColumnConstraint, this=self._parse_wrapped_csv(self._parse_bitwise) +3017 ) +3018 +3019 return self.expression(exp.CompressColumnConstraint, this=self._parse_bitwise()) +3020 +3021 def _parse_generated_as_identity(self) -> exp.Expression: +3022 if self._match(TokenType.BY_DEFAULT): +3023 this = self.expression(exp.GeneratedAsIdentityColumnConstraint, this=False) +3024 else: +3025 self._match_text_seq("ALWAYS") +3026 this = self.expression(exp.GeneratedAsIdentityColumnConstraint, this=True) +3027 +3028 self._match_text_seq("AS", "IDENTITY") +3029 if self._match(TokenType.L_PAREN): +3030 if self._match_text_seq("START", "WITH"): +3031 this.set("start", self._parse_bitwise()) +3032 if self._match_text_seq("INCREMENT", "BY"): +3033 this.set("increment", self._parse_bitwise()) +3034 if self._match_text_seq("MINVALUE"): +3035 this.set("minvalue", self._parse_bitwise()) +3036 if self._match_text_seq("MAXVALUE"): +3037 this.set("maxvalue", self._parse_bitwise()) +3038 +3039 if self._match_text_seq("CYCLE"): +3040 this.set("cycle", True) +3041 elif self._match_text_seq("NO", "CYCLE"): +3042 this.set("cycle", False) +3043 +3044 self._match_r_paren() +3045 +3046 return this +3047 +3048 def _parse_inline(self) -> t.Optional[exp.Expression]: +3049 self._match_text_seq("LENGTH") +3050 return self.expression(exp.InlineLengthColumnConstraint, this=self._parse_bitwise()) 3051 -3052 return this -3053 -3054 def _parse_constraint(self) -> t.Optional[exp.Expression]: -3055 if not self._match(TokenType.CONSTRAINT): -3056 return self._parse_unnamed_constraint(constraints=self.SCHEMA_UNNAMED_CONSTRAINTS) -3057 -3058 this = self._parse_id_var() -3059 expressions = [] -3060 -3061 while True: -3062 constraint = self._parse_unnamed_constraint() or self._parse_function() -3063 if not constraint: -3064 break -3065 expressions.append(constraint) +3052 def _parse_not_constraint(self) -> t.Optional[exp.Expression]: +3053 if self._match_text_seq("NULL"): +3054 return self.expression(exp.NotNullColumnConstraint) +3055 if self._match_text_seq("CASESPECIFIC"): +3056 return self.expression(exp.CaseSpecificColumnConstraint, not_=True) +3057 return None +3058 +3059 def _parse_column_constraint(self) -> t.Optional[exp.Expression]: +3060 this = self._parse_references() +3061 if this: +3062 return this +3063 +3064 if self._match(TokenType.CONSTRAINT): +3065 this = self._parse_id_var() 3066 -3067 return self.expression(exp.Constraint, this=this, expressions=expressions) -3068 -3069 def _parse_unnamed_constraint( -3070 self, constraints: t.Optional[t.Collection[str]] = None -3071 ) -> t.Optional[exp.Expression]: -3072 if not self._match_texts(constraints or self.CONSTRAINT_PARSERS): -3073 return None -3074 -3075 constraint = self._prev.text.upper() -3076 if constraint not in self.CONSTRAINT_PARSERS: -3077 self.raise_error(f"No parser found for schema constraint {constraint}.") -3078 -3079 return self.CONSTRAINT_PARSERS[constraint](self) -3080 -3081 def _parse_unique(self) -> exp.Expression: -3082 if not self._match(TokenType.L_PAREN, advance=False): -3083 return self.expression(exp.UniqueColumnConstraint) -3084 return self.expression(exp.Unique, expressions=self._parse_wrapped_id_vars()) -3085 -3086 def _parse_key_constraint_options(self) -> t.List[str]: -3087 options = [] -3088 while True: -3089 if not self._curr: -3090 break -3091 -3092 if self._match(TokenType.ON): -3093 action = None -3094 on = self._advance_any() and self._prev.text -3095 -3096 if self._match(TokenType.NO_ACTION): -3097 action = "NO ACTION" -3098 elif self._match(TokenType.CASCADE): -3099 action = "CASCADE" -3100 elif self._match_pair(TokenType.SET, TokenType.NULL): -3101 action = "SET NULL" -3102 elif self._match_pair(TokenType.SET, TokenType.DEFAULT): -3103 action = "SET DEFAULT" -3104 else: -3105 self.raise_error("Invalid key constraint") -3106 -3107 options.append(f"ON {on} {action}") -3108 elif self._match_text_seq("NOT", "ENFORCED"): -3109 options.append("NOT ENFORCED") -3110 elif self._match_text_seq("DEFERRABLE"): -3111 options.append("DEFERRABLE") -3112 elif self._match_text_seq("INITIALLY", "DEFERRED"): -3113 options.append("INITIALLY DEFERRED") -3114 elif self._match_text_seq("NORELY"): -3115 options.append("NORELY") -3116 elif self._match_text_seq("MATCH", "FULL"): -3117 options.append("MATCH FULL") -3118 else: -3119 break -3120 -3121 return options -3122 -3123 def _parse_references(self) -> t.Optional[exp.Expression]: -3124 if not self._match(TokenType.REFERENCES): -3125 return None -3126 -3127 expressions = None -3128 this = self._parse_id_var() -3129 -3130 if self._match(TokenType.L_PAREN, advance=False): -3131 expressions = self._parse_wrapped_id_vars() -3132 -3133 options = self._parse_key_constraint_options() -3134 return self.expression(exp.Reference, this=this, expressions=expressions, options=options) -3135 -3136 def _parse_foreign_key(self) -> exp.Expression: -3137 expressions = self._parse_wrapped_id_vars() -3138 reference = self._parse_references() -3139 options = {} -3140 -3141 while self._match(TokenType.ON): -3142 if not self._match_set((TokenType.DELETE, TokenType.UPDATE)): -3143 self.raise_error("Expected DELETE or UPDATE") +3067 if self._match_texts(self.CONSTRAINT_PARSERS): +3068 return self.expression( +3069 exp.ColumnConstraint, +3070 this=this, +3071 kind=self.CONSTRAINT_PARSERS[self._prev.text.upper()](self), +3072 ) +3073 +3074 return this +3075 +3076 def _parse_constraint(self) -> t.Optional[exp.Expression]: +3077 if not self._match(TokenType.CONSTRAINT): +3078 return self._parse_unnamed_constraint(constraints=self.SCHEMA_UNNAMED_CONSTRAINTS) +3079 +3080 this = self._parse_id_var() +3081 expressions = [] +3082 +3083 while True: +3084 constraint = self._parse_unnamed_constraint() or self._parse_function() +3085 if not constraint: +3086 break +3087 expressions.append(constraint) +3088 +3089 return self.expression(exp.Constraint, this=this, expressions=expressions) +3090 +3091 def _parse_unnamed_constraint( +3092 self, constraints: t.Optional[t.Collection[str]] = None +3093 ) -> t.Optional[exp.Expression]: +3094 if not self._match_texts(constraints or self.CONSTRAINT_PARSERS): +3095 return None +3096 +3097 constraint = self._prev.text.upper() +3098 if constraint not in self.CONSTRAINT_PARSERS: +3099 self.raise_error(f"No parser found for schema constraint {constraint}.") +3100 +3101 return self.CONSTRAINT_PARSERS[constraint](self) +3102 +3103 def _parse_unique(self) -> exp.Expression: +3104 if not self._match(TokenType.L_PAREN, advance=False): +3105 return self.expression(exp.UniqueColumnConstraint) +3106 return self.expression(exp.Unique, expressions=self._parse_wrapped_id_vars()) +3107 +3108 def _parse_key_constraint_options(self) -> t.List[str]: +3109 options = [] +3110 while True: +3111 if not self._curr: +3112 break +3113 +3114 if self._match(TokenType.ON): +3115 action = None +3116 on = self._advance_any() and self._prev.text +3117 +3118 if self._match(TokenType.NO_ACTION): +3119 action = "NO ACTION" +3120 elif self._match(TokenType.CASCADE): +3121 action = "CASCADE" +3122 elif self._match_pair(TokenType.SET, TokenType.NULL): +3123 action = "SET NULL" +3124 elif self._match_pair(TokenType.SET, TokenType.DEFAULT): +3125 action = "SET DEFAULT" +3126 else: +3127 self.raise_error("Invalid key constraint") +3128 +3129 options.append(f"ON {on} {action}") +3130 elif self._match_text_seq("NOT", "ENFORCED"): +3131 options.append("NOT ENFORCED") +3132 elif self._match_text_seq("DEFERRABLE"): +3133 options.append("DEFERRABLE") +3134 elif self._match_text_seq("INITIALLY", "DEFERRED"): +3135 options.append("INITIALLY DEFERRED") +3136 elif self._match_text_seq("NORELY"): +3137 options.append("NORELY") +3138 elif self._match_text_seq("MATCH", "FULL"): +3139 options.append("MATCH FULL") +3140 else: +3141 break +3142 +3143 return options 3144 -3145 kind = self._prev.text.lower() -3146 -3147 if self._match(TokenType.NO_ACTION): -3148 action = "NO ACTION" -3149 elif self._match(TokenType.SET): -3150 self._match_set((TokenType.NULL, TokenType.DEFAULT)) -3151 action = "SET " + self._prev.text.upper() -3152 else: -3153 self._advance() -3154 action = self._prev.text.upper() -3155 -3156 options[kind] = action +3145 def _parse_references(self) -> t.Optional[exp.Expression]: +3146 if not self._match(TokenType.REFERENCES): +3147 return None +3148 +3149 expressions = None +3150 this = self._parse_id_var() +3151 +3152 if self._match(TokenType.L_PAREN, advance=False): +3153 expressions = self._parse_wrapped_id_vars() +3154 +3155 options = self._parse_key_constraint_options() +3156 return self.expression(exp.Reference, this=this, expressions=expressions, options=options) 3157 -3158 return self.expression( -3159 exp.ForeignKey, expressions=expressions, reference=reference, **options # type: ignore -3160 ) -3161 -3162 def _parse_primary_key(self) -> exp.Expression: -3163 desc = ( -3164 self._match_set((TokenType.ASC, TokenType.DESC)) -3165 and self._prev.token_type == TokenType.DESC -3166 ) -3167 -3168 if not self._match(TokenType.L_PAREN, advance=False): -3169 return self.expression(exp.PrimaryKeyColumnConstraint, desc=desc) -3170 -3171 expressions = self._parse_wrapped_id_vars() -3172 options = self._parse_key_constraint_options() -3173 return self.expression(exp.PrimaryKey, expressions=expressions, options=options) -3174 -3175 def _parse_bracket(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: -3176 if not self._match_set((TokenType.L_BRACKET, TokenType.L_BRACE)): -3177 return this -3178 -3179 bracket_kind = self._prev.token_type -3180 expressions: t.List[t.Optional[exp.Expression]] -3181 -3182 if self._match(TokenType.COLON): -3183 expressions = [self.expression(exp.Slice, expression=self._parse_conjunction())] -3184 else: -3185 expressions = self._parse_csv(lambda: self._parse_slice(self._parse_conjunction())) -3186 -3187 # https://duckdb.org/docs/sql/data_types/struct.html#creating-structs -3188 if bracket_kind == TokenType.L_BRACE: -3189 this = self.expression(exp.Struct, expressions=expressions) -3190 elif not this or this.name.upper() == "ARRAY": -3191 this = self.expression(exp.Array, expressions=expressions) -3192 else: -3193 expressions = apply_index_offset(expressions, -self.index_offset) -3194 this = self.expression(exp.Bracket, this=this, expressions=expressions) -3195 -3196 if not self._match(TokenType.R_BRACKET) and bracket_kind == TokenType.L_BRACKET: -3197 self.raise_error("Expected ]") -3198 elif not self._match(TokenType.R_BRACE) and bracket_kind == TokenType.L_BRACE: -3199 self.raise_error("Expected }") +3158 def _parse_foreign_key(self) -> exp.Expression: +3159 expressions = self._parse_wrapped_id_vars() +3160 reference = self._parse_references() +3161 options = {} +3162 +3163 while self._match(TokenType.ON): +3164 if not self._match_set((TokenType.DELETE, TokenType.UPDATE)): +3165 self.raise_error("Expected DELETE or UPDATE") +3166 +3167 kind = self._prev.text.lower() +3168 +3169 if self._match(TokenType.NO_ACTION): +3170 action = "NO ACTION" +3171 elif self._match(TokenType.SET): +3172 self._match_set((TokenType.NULL, TokenType.DEFAULT)) +3173 action = "SET " + self._prev.text.upper() +3174 else: +3175 self._advance() +3176 action = self._prev.text.upper() +3177 +3178 options[kind] = action +3179 +3180 return self.expression( +3181 exp.ForeignKey, expressions=expressions, reference=reference, **options # type: ignore +3182 ) +3183 +3184 def _parse_primary_key(self) -> exp.Expression: +3185 desc = ( +3186 self._match_set((TokenType.ASC, TokenType.DESC)) +3187 and self._prev.token_type == TokenType.DESC +3188 ) +3189 +3190 if not self._match(TokenType.L_PAREN, advance=False): +3191 return self.expression(exp.PrimaryKeyColumnConstraint, desc=desc) +3192 +3193 expressions = self._parse_wrapped_id_vars() +3194 options = self._parse_key_constraint_options() +3195 return self.expression(exp.PrimaryKey, expressions=expressions, options=options) +3196 +3197 def _parse_bracket(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: +3198 if not self._match_set((TokenType.L_BRACKET, TokenType.L_BRACE)): +3199 return this 3200 -3201 this.comments = self._prev_comments -3202 return self._parse_bracket(this) +3201 bracket_kind = self._prev.token_type +3202 expressions: t.List[t.Optional[exp.Expression]] 3203 -3204 def _parse_slice(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: -3205 if self._match(TokenType.COLON): -3206 return self.expression(exp.Slice, this=this, expression=self._parse_conjunction()) -3207 return this +3204 if self._match(TokenType.COLON): +3205 expressions = [self.expression(exp.Slice, expression=self._parse_conjunction())] +3206 else: +3207 expressions = self._parse_csv(lambda: self._parse_slice(self._parse_conjunction())) 3208 -3209 def _parse_case(self) -> t.Optional[exp.Expression]: -3210 ifs = [] -3211 default = None -3212 -3213 expression = self._parse_conjunction() -3214 -3215 while self._match(TokenType.WHEN): -3216 this = self._parse_conjunction() -3217 self._match(TokenType.THEN) -3218 then = self._parse_conjunction() -3219 ifs.append(self.expression(exp.If, this=this, true=then)) -3220 -3221 if self._match(TokenType.ELSE): -3222 default = self._parse_conjunction() -3223 -3224 if not self._match(TokenType.END): -3225 self.raise_error("Expected END after CASE", self._prev) -3226 -3227 return self._parse_window( -3228 self.expression(exp.Case, this=expression, ifs=ifs, default=default) -3229 ) +3209 # https://duckdb.org/docs/sql/data_types/struct.html#creating-structs +3210 if bracket_kind == TokenType.L_BRACE: +3211 this = self.expression(exp.Struct, expressions=expressions) +3212 elif not this or this.name.upper() == "ARRAY": +3213 this = self.expression(exp.Array, expressions=expressions) +3214 else: +3215 expressions = apply_index_offset(expressions, -self.index_offset) +3216 this = self.expression(exp.Bracket, this=this, expressions=expressions) +3217 +3218 if not self._match(TokenType.R_BRACKET) and bracket_kind == TokenType.L_BRACKET: +3219 self.raise_error("Expected ]") +3220 elif not self._match(TokenType.R_BRACE) and bracket_kind == TokenType.L_BRACE: +3221 self.raise_error("Expected }") +3222 +3223 this.comments = self._prev_comments +3224 return self._parse_bracket(this) +3225 +3226 def _parse_slice(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]: +3227 if self._match(TokenType.COLON): +3228 return self.expression(exp.Slice, this=this, expression=self._parse_conjunction()) +3229 return this 3230 -3231 def _parse_if(self) -> t.Optional[exp.Expression]: -3232 if self._match(TokenType.L_PAREN): -3233 args = self._parse_csv(self._parse_conjunction) -3234 this = exp.If.from_arg_list(args) -3235 self.validate_expression(this, args) -3236 self._match_r_paren() -3237 else: -3238 condition = self._parse_conjunction() +3231 def _parse_case(self) -> t.Optional[exp.Expression]: +3232 ifs = [] +3233 default = None +3234 +3235 expression = self._parse_conjunction() +3236 +3237 while self._match(TokenType.WHEN): +3238 this = self._parse_conjunction() 3239 self._match(TokenType.THEN) -3240 true = self._parse_conjunction() -3241 false = self._parse_conjunction() if self._match(TokenType.ELSE) else None -3242 self._match(TokenType.END) -3243 this = self.expression(exp.If, this=condition, true=true, false=false) -3244 -3245 return self._parse_window(this) -3246 -3247 def _parse_extract(self) -> exp.Expression: -3248 this = self._parse_function() or self._parse_var() or self._parse_type() -3249 -3250 if self._match(TokenType.FROM): -3251 return self.expression(exp.Extract, this=this, expression=self._parse_bitwise()) +3240 then = self._parse_conjunction() +3241 ifs.append(self.expression(exp.If, this=this, true=then)) +3242 +3243 if self._match(TokenType.ELSE): +3244 default = self._parse_conjunction() +3245 +3246 if not self._match(TokenType.END): +3247 self.raise_error("Expected END after CASE", self._prev) +3248 +3249 return self._parse_window( +3250 self.expression(exp.Case, this=expression, ifs=ifs, default=default) +3251 ) 3252 -3253 if not self._match(TokenType.COMMA): -3254 self.raise_error("Expected FROM or comma after EXTRACT", self._prev) -3255 -3256 return self.expression(exp.Extract, this=this, expression=self._parse_bitwise()) -3257 -3258 def _parse_cast(self, strict: bool) -> exp.Expression: -3259 this = self._parse_conjunction() -3260 -3261 if not self._match(TokenType.ALIAS): -3262 self.raise_error("Expected AS after CAST") -3263 -3264 to = self._parse_types() -3265 -3266 if not to: -3267 self.raise_error("Expected TYPE after CAST") -3268 elif to.this == exp.DataType.Type.CHAR: -3269 if self._match(TokenType.CHARACTER_SET): -3270 to = self.expression(exp.CharacterSet, this=self._parse_var_or_string()) +3253 def _parse_if(self) -> t.Optional[exp.Expression]: +3254 if self._match(TokenType.L_PAREN): +3255 args = self._parse_csv(self._parse_conjunction) +3256 this = exp.If.from_arg_list(args) +3257 self.validate_expression(this, args) +3258 self._match_r_paren() +3259 else: +3260 condition = self._parse_conjunction() +3261 self._match(TokenType.THEN) +3262 true = self._parse_conjunction() +3263 false = self._parse_conjunction() if self._match(TokenType.ELSE) else None +3264 self._match(TokenType.END) +3265 this = self.expression(exp.If, this=condition, true=true, false=false) +3266 +3267 return self._parse_window(this) +3268 +3269 def _parse_extract(self) -> exp.Expression: +3270 this = self._parse_function() or self._parse_var() or self._parse_type() 3271 -3272 return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to) -3273 -3274 def _parse_string_agg(self) -> exp.Expression: -3275 expression: t.Optional[exp.Expression] -3276 -3277 if self._match(TokenType.DISTINCT): -3278 args = self._parse_csv(self._parse_conjunction) -3279 expression = self.expression(exp.Distinct, expressions=[seq_get(args, 0)]) -3280 else: -3281 args = self._parse_csv(self._parse_conjunction) -3282 expression = seq_get(args, 0) -3283 -3284 index = self._index -3285 if not self._match(TokenType.R_PAREN): -3286 # postgres: STRING_AGG([DISTINCT] expression, separator [ORDER BY expression1 {ASC | DESC} [, ...]]) -3287 order = self._parse_order(this=expression) -3288 return self.expression(exp.GroupConcat, this=order, separator=seq_get(args, 1)) -3289 -3290 # Checks if we can parse an order clause: WITHIN GROUP (ORDER BY <order_by_expression_list> [ASC | DESC]). -3291 # This is done "manually", instead of letting _parse_window parse it into an exp.WithinGroup node, so that -3292 # the STRING_AGG call is parsed like in MySQL / SQLite and can thus be transpiled more easily to them. -3293 if not self._match(TokenType.WITHIN_GROUP): -3294 self._retreat(index) -3295 this = exp.GroupConcat.from_arg_list(args) -3296 self.validate_expression(this, args) -3297 return this +3272 if self._match(TokenType.FROM): +3273 return self.expression(exp.Extract, this=this, expression=self._parse_bitwise()) +3274 +3275 if not self._match(TokenType.COMMA): +3276 self.raise_error("Expected FROM or comma after EXTRACT", self._prev) +3277 +3278 return self.expression(exp.Extract, this=this, expression=self._parse_bitwise()) +3279 +3280 def _parse_cast(self, strict: bool) -> exp.Expression: +3281 this = self._parse_conjunction() +3282 +3283 if not self._match(TokenType.ALIAS): +3284 self.raise_error("Expected AS after CAST") +3285 +3286 to = self._parse_types() +3287 +3288 if not to: +3289 self.raise_error("Expected TYPE after CAST") +3290 elif to.this == exp.DataType.Type.CHAR: +3291 if self._match(TokenType.CHARACTER_SET): +3292 to = self.expression(exp.CharacterSet, this=self._parse_var_or_string()) +3293 +3294 return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to) +3295 +3296 def _parse_string_agg(self) -> exp.Expression: +3297 expression: t.Optional[exp.Expression] 3298 -3299 self._match_l_paren() # The corresponding match_r_paren will be called in parse_function (caller) -3300 order = self._parse_order(this=expression) -3301 return self.expression(exp.GroupConcat, this=order, separator=seq_get(args, 1)) -3302 -3303 def _parse_convert(self, strict: bool) -> t.Optional[exp.Expression]: -3304 to: t.Optional[exp.Expression] -3305 this = self._parse_bitwise() -3306 -3307 if self._match(TokenType.USING): -3308 to = self.expression(exp.CharacterSet, this=self._parse_var()) -3309 elif self._match(TokenType.COMMA): -3310 to = self._parse_bitwise() -3311 else: -3312 to = None -3313 -3314 # Swap the argument order if needed to produce the correct AST -3315 if self.CONVERT_TYPE_FIRST: -3316 this, to = to, this -3317 -3318 return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to) -3319 -3320 def _parse_position(self, haystack_first: bool = False) -> exp.Expression: -3321 args = self._parse_csv(self._parse_bitwise) -3322 -3323 if self._match(TokenType.IN): -3324 return self.expression( -3325 exp.StrPosition, this=self._parse_bitwise(), substr=seq_get(args, 0) -3326 ) -3327 -3328 if haystack_first: -3329 haystack = seq_get(args, 0) -3330 needle = seq_get(args, 1) -3331 else: -3332 needle = seq_get(args, 0) -3333 haystack = seq_get(args, 1) -3334 -3335 this = exp.StrPosition(this=haystack, substr=needle, position=seq_get(args, 2)) -3336 -3337 self.validate_expression(this, args) -3338 -3339 return this -3340 -3341 def _parse_join_hint(self, func_name: str) -> exp.Expression: -3342 args = self._parse_csv(self._parse_table) -3343 return exp.JoinHint(this=func_name.upper(), expressions=args) -3344 -3345 def _parse_substring(self) -> exp.Expression: -3346 # Postgres supports the form: substring(string [from int] [for int]) -3347 # https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6 -3348 -3349 args = self._parse_csv(self._parse_bitwise) -3350 -3351 if self._match(TokenType.FROM): -3352 args.append(self._parse_bitwise()) -3353 if self._match(TokenType.FOR): -3354 args.append(self._parse_bitwise()) -3355 -3356 this = exp.Substring.from_arg_list(args) -3357 self.validate_expression(this, args) -3358 -3359 return this +3299 if self._match(TokenType.DISTINCT): +3300 args = self._parse_csv(self._parse_conjunction) +3301 expression = self.expression(exp.Distinct, expressions=[seq_get(args, 0)]) +3302 else: +3303 args = self._parse_csv(self._parse_conjunction) +3304 expression = seq_get(args, 0) +3305 +3306 index = self._index +3307 if not self._match(TokenType.R_PAREN): +3308 # postgres: STRING_AGG([DISTINCT] expression, separator [ORDER BY expression1 {ASC | DESC} [, ...]]) +3309 order = self._parse_order(this=expression) +3310 return self.expression(exp.GroupConcat, this=order, separator=seq_get(args, 1)) +3311 +3312 # Checks if we can parse an order clause: WITHIN GROUP (ORDER BY <order_by_expression_list> [ASC | DESC]). +3313 # This is done "manually", instead of letting _parse_window parse it into an exp.WithinGroup node, so that +3314 # the STRING_AGG call is parsed like in MySQL / SQLite and can thus be transpiled more easily to them. +3315 if not self._match(TokenType.WITHIN_GROUP): +3316 self._retreat(index) +3317 this = exp.GroupConcat.from_arg_list(args) +3318 self.validate_expression(this, args) +3319 return this +3320 +3321 self._match_l_paren() # The corresponding match_r_paren will be called in parse_function (caller) +3322 order = self._parse_order(this=expression) +3323 return self.expression(exp.GroupConcat, this=order, separator=seq_get(args, 1)) +3324 +3325 def _parse_convert(self, strict: bool) -> t.Optional[exp.Expression]: +3326 to: t.Optional[exp.Expression] +3327 this = self._parse_bitwise() +3328 +3329 if self._match(TokenType.USING): +3330 to = self.expression(exp.CharacterSet, this=self._parse_var()) +3331 elif self._match(TokenType.COMMA): +3332 to = self._parse_bitwise() +3333 else: +3334 to = None +3335 +3336 # Swap the argument order if needed to produce the correct AST +3337 if self.CONVERT_TYPE_FIRST: +3338 this, to = to, this +3339 +3340 return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to) +3341 +3342 def _parse_json_key_value(self) -> t.Optional[exp.Expression]: +3343 self._match_text_seq("KEY") +3344 key = self._parse_field() +3345 self._match(TokenType.COLON) +3346 self._match_text_seq("VALUE") +3347 value = self._parse_field() +3348 if not key and not value: +3349 return None +3350 return self.expression(exp.JSONKeyValue, this=key, expression=value) +3351 +3352 def _parse_json_object(self) -> exp.Expression: +3353 expressions = self._parse_csv(self._parse_json_key_value) +3354 +3355 null_handling = None +3356 if self._match_text_seq("NULL", "ON", "NULL"): +3357 null_handling = "NULL ON NULL" +3358 elif self._match_text_seq("ABSENT", "ON", "NULL"): +3359 null_handling = "ABSENT ON NULL" 3360 -3361 def _parse_trim(self) -> exp.Expression: -3362 # https://www.w3resource.com/sql/character-functions/trim.php -3363 # https://docs.oracle.com/javadb/10.8.3.0/ref/rreftrimfunc.html -3364 -3365 position = None -3366 collation = None -3367 -3368 if self._match_set(self.TRIM_TYPES): -3369 position = self._prev.text.upper() -3370 -3371 expression = self._parse_term() -3372 if self._match_set((TokenType.FROM, TokenType.COMMA)): -3373 this = self._parse_term() -3374 else: -3375 this = expression -3376 expression = None -3377 -3378 if self._match(TokenType.COLLATE): -3379 collation = self._parse_term() -3380 -3381 return self.expression( -3382 exp.Trim, -3383 this=this, -3384 position=position, -3385 expression=expression, -3386 collation=collation, -3387 ) -3388 -3389 def _parse_window_clause(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]: -3390 return self._match(TokenType.WINDOW) and self._parse_csv(self._parse_named_window) -3391 -3392 def _parse_named_window(self) -> t.Optional[exp.Expression]: -3393 return self._parse_window(self._parse_id_var(), alias=True) -3394 -3395 def _parse_window( -3396 self, this: t.Optional[exp.Expression], alias: bool = False -3397 ) -> t.Optional[exp.Expression]: -3398 if self._match_pair(TokenType.FILTER, TokenType.L_PAREN): -3399 this = self.expression(exp.Filter, this=this, expression=self._parse_where()) -3400 self._match_r_paren() +3361 unique_keys = None +3362 if self._match_text_seq("WITH", "UNIQUE"): +3363 unique_keys = True +3364 elif self._match_text_seq("WITHOUT", "UNIQUE"): +3365 unique_keys = False +3366 +3367 self._match_text_seq("KEYS") +3368 +3369 return_type = self._match_text_seq("RETURNING") and self._parse_type() +3370 format_json = self._match_text_seq("FORMAT", "JSON") +3371 encoding = self._match_text_seq("ENCODING") and self._parse_var() +3372 +3373 return self.expression( +3374 exp.JSONObject, +3375 expressions=expressions, +3376 null_handling=null_handling, +3377 unique_keys=unique_keys, +3378 return_type=return_type, +3379 format_json=format_json, +3380 encoding=encoding, +3381 ) +3382 +3383 def _parse_position(self, haystack_first: bool = False) -> exp.Expression: +3384 args = self._parse_csv(self._parse_bitwise) +3385 +3386 if self._match(TokenType.IN): +3387 return self.expression( +3388 exp.StrPosition, this=self._parse_bitwise(), substr=seq_get(args, 0) +3389 ) +3390 +3391 if haystack_first: +3392 haystack = seq_get(args, 0) +3393 needle = seq_get(args, 1) +3394 else: +3395 needle = seq_get(args, 0) +3396 haystack = seq_get(args, 1) +3397 +3398 this = exp.StrPosition(this=haystack, substr=needle, position=seq_get(args, 2)) +3399 +3400 self.validate_expression(this, args) 3401 -3402 # T-SQL allows the OVER (...) syntax after WITHIN GROUP. -3403 # https://learn.microsoft.com/en-us/sql/t-sql/functions/percentile-disc-transact-sql?view=sql-server-ver16 -3404 if self._match(TokenType.WITHIN_GROUP): -3405 order = self._parse_wrapped(self._parse_order) -3406 this = self.expression(exp.WithinGroup, this=this, expression=order) +3402 return this +3403 +3404 def _parse_join_hint(self, func_name: str) -> exp.Expression: +3405 args = self._parse_csv(self._parse_table) +3406 return exp.JoinHint(this=func_name.upper(), expressions=args) 3407 -3408 # SQL spec defines an optional [ { IGNORE | RESPECT } NULLS ] OVER -3409 # Some dialects choose to implement and some do not. -3410 # https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html +3408 def _parse_substring(self) -> exp.Expression: +3409 # Postgres supports the form: substring(string [from int] [for int]) +3410 # https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6 3411 -3412 # There is some code above in _parse_lambda that handles -3413 # SELECT FIRST_VALUE(TABLE.COLUMN IGNORE|RESPECT NULLS) OVER ... -3414 -3415 # The below changes handle -3416 # SELECT FIRST_VALUE(TABLE.COLUMN) IGNORE|RESPECT NULLS OVER ... -3417 -3418 # Oracle allows both formats -3419 # (https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/img_text/first_value.html) -3420 # and Snowflake chose to do the same for familiarity -3421 # https://docs.snowflake.com/en/sql-reference/functions/first_value.html#usage-notes -3422 if self._match(TokenType.IGNORE_NULLS): -3423 this = self.expression(exp.IgnoreNulls, this=this) -3424 elif self._match(TokenType.RESPECT_NULLS): -3425 this = self.expression(exp.RespectNulls, this=this) -3426 -3427 # bigquery select from window x AS (partition by ...) -3428 if alias: -3429 self._match(TokenType.ALIAS) -3430 elif not self._match(TokenType.OVER): -3431 return this -3432 -3433 if not self._match(TokenType.L_PAREN): -3434 return self.expression(exp.Window, this=this, alias=self._parse_id_var(False)) -3435 -3436 window_alias = self._parse_id_var(any_token=False, tokens=self.WINDOW_ALIAS_TOKENS) -3437 partition = self._parse_partition_by() -3438 order = self._parse_order() -3439 kind = self._match_set((TokenType.ROWS, TokenType.RANGE)) and self._prev.text +3412 args = self._parse_csv(self._parse_bitwise) +3413 +3414 if self._match(TokenType.FROM): +3415 args.append(self._parse_bitwise()) +3416 if self._match(TokenType.FOR): +3417 args.append(self._parse_bitwise()) +3418 +3419 this = exp.Substring.from_arg_list(args) +3420 self.validate_expression(this, args) +3421 +3422 return this +3423 +3424 def _parse_trim(self) -> exp.Expression: +3425 # https://www.w3resource.com/sql/character-functions/trim.php +3426 # https://docs.oracle.com/javadb/10.8.3.0/ref/rreftrimfunc.html +3427 +3428 position = None +3429 collation = None +3430 +3431 if self._match_set(self.TRIM_TYPES): +3432 position = self._prev.text.upper() +3433 +3434 expression = self._parse_term() +3435 if self._match_set((TokenType.FROM, TokenType.COMMA)): +3436 this = self._parse_term() +3437 else: +3438 this = expression +3439 expression = None 3440 -3441 if kind: -3442 self._match(TokenType.BETWEEN) -3443 start = self._parse_window_spec() -3444 self._match(TokenType.AND) -3445 end = self._parse_window_spec() -3446 -3447 spec = self.expression( -3448 exp.WindowSpec, -3449 kind=kind, -3450 start=start["value"], -3451 start_side=start["side"], -3452 end=end["value"], -3453 end_side=end["side"], -3454 ) -3455 else: -3456 spec = None +3441 if self._match(TokenType.COLLATE): +3442 collation = self._parse_term() +3443 +3444 return self.expression( +3445 exp.Trim, +3446 this=this, +3447 position=position, +3448 expression=expression, +3449 collation=collation, +3450 ) +3451 +3452 def _parse_window_clause(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]: +3453 return self._match(TokenType.WINDOW) and self._parse_csv(self._parse_named_window) +3454 +3455 def _parse_named_window(self) -> t.Optional[exp.Expression]: +3456 return self._parse_window(self._parse_id_var(), alias=True) 3457 -3458 self._match_r_paren() -3459 -3460 return self.expression( -3461 exp.Window, -3462 this=this, -3463 partition_by=partition, -3464 order=order, -3465 spec=spec, -3466 alias=window_alias, -3467 ) -3468 -3469 def _parse_window_spec(self) -> t.Dict[str, t.Optional[str | exp.Expression]]: -3470 self._match(TokenType.BETWEEN) -3471 -3472 return { -3473 "value": ( -3474 self._match_set((TokenType.UNBOUNDED, TokenType.CURRENT_ROW)) and self._prev.text -3475 ) -3476 or self._parse_bitwise(), -3477 "side": self._match_set((TokenType.PRECEDING, TokenType.FOLLOWING)) and self._prev.text, -3478 } -3479 -3480 def _parse_alias( -3481 self, this: t.Optional[exp.Expression], explicit: bool = False -3482 ) -> t.Optional[exp.Expression]: -3483 any_token = self._match(TokenType.ALIAS) -3484 -3485 if explicit and not any_token: -3486 return this -3487 -3488 if self._match(TokenType.L_PAREN): -3489 aliases = self.expression( -3490 exp.Aliases, -3491 this=this, -3492 expressions=self._parse_csv(lambda: self._parse_id_var(any_token)), -3493 ) -3494 self._match_r_paren(aliases) -3495 return aliases -3496 -3497 alias = self._parse_id_var(any_token) +3458 def _parse_window( +3459 self, this: t.Optional[exp.Expression], alias: bool = False +3460 ) -> t.Optional[exp.Expression]: +3461 if self._match_pair(TokenType.FILTER, TokenType.L_PAREN): +3462 this = self.expression(exp.Filter, this=this, expression=self._parse_where()) +3463 self._match_r_paren() +3464 +3465 # T-SQL allows the OVER (...) syntax after WITHIN GROUP. +3466 # https://learn.microsoft.com/en-us/sql/t-sql/functions/percentile-disc-transact-sql?view=sql-server-ver16 +3467 if self._match(TokenType.WITHIN_GROUP): +3468 order = self._parse_wrapped(self._parse_order) +3469 this = self.expression(exp.WithinGroup, this=this, expression=order) +3470 +3471 # SQL spec defines an optional [ { IGNORE | RESPECT } NULLS ] OVER +3472 # Some dialects choose to implement and some do not. +3473 # https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html +3474 +3475 # There is some code above in _parse_lambda that handles +3476 # SELECT FIRST_VALUE(TABLE.COLUMN IGNORE|RESPECT NULLS) OVER ... +3477 +3478 # The below changes handle +3479 # SELECT FIRST_VALUE(TABLE.COLUMN) IGNORE|RESPECT NULLS OVER ... +3480 +3481 # Oracle allows both formats +3482 # (https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/img_text/first_value.html) +3483 # and Snowflake chose to do the same for familiarity +3484 # https://docs.snowflake.com/en/sql-reference/functions/first_value.html#usage-notes +3485 if self._match(TokenType.IGNORE_NULLS): +3486 this = self.expression(exp.IgnoreNulls, this=this) +3487 elif self._match(TokenType.RESPECT_NULLS): +3488 this = self.expression(exp.RespectNulls, this=this) +3489 +3490 # bigquery select from window x AS (partition by ...) +3491 if alias: +3492 self._match(TokenType.ALIAS) +3493 elif not self._match(TokenType.OVER): +3494 return this +3495 +3496 if not self._match(TokenType.L_PAREN): +3497 return self.expression(exp.Window, this=this, alias=self._parse_id_var(False)) 3498 -3499 if alias: -3500 return self.expression(exp.Alias, this=this, alias=alias) -3501 -3502 return this +3499 window_alias = self._parse_id_var(any_token=False, tokens=self.WINDOW_ALIAS_TOKENS) +3500 partition = self._parse_partition_by() +3501 order = self._parse_order() +3502 kind = self._match_set((TokenType.ROWS, TokenType.RANGE)) and self._prev.text 3503 -3504 def _parse_id_var( -3505 self, -3506 any_token: bool = True, -3507 tokens: t.Optional[t.Collection[TokenType]] = None, -3508 prefix_tokens: t.Optional[t.Collection[TokenType]] = None, -3509 ) -> t.Optional[exp.Expression]: -3510 identifier = self._parse_identifier() -3511 -3512 if identifier: -3513 return identifier -3514 -3515 prefix = "" -3516 -3517 if prefix_tokens: -3518 while self._match_set(prefix_tokens): -3519 prefix += self._prev.text +3504 if kind: +3505 self._match(TokenType.BETWEEN) +3506 start = self._parse_window_spec() +3507 self._match(TokenType.AND) +3508 end = self._parse_window_spec() +3509 +3510 spec = self.expression( +3511 exp.WindowSpec, +3512 kind=kind, +3513 start=start["value"], +3514 start_side=start["side"], +3515 end=end["value"], +3516 end_side=end["side"], +3517 ) +3518 else: +3519 spec = None 3520 -3521 if (any_token and self._advance_any()) or self._match_set(tokens or self.ID_VAR_TOKENS): -3522 quoted = self._prev.token_type == TokenType.STRING -3523 return exp.Identifier(this=prefix + self._prev.text, quoted=quoted) -3524 -3525 return None -3526 -3527 def _parse_string(self) -> t.Optional[exp.Expression]: -3528 if self._match(TokenType.STRING): -3529 return self.PRIMARY_PARSERS[TokenType.STRING](self, self._prev) -3530 return self._parse_placeholder() +3521 self._match_r_paren() +3522 +3523 return self.expression( +3524 exp.Window, +3525 this=this, +3526 partition_by=partition, +3527 order=order, +3528 spec=spec, +3529 alias=window_alias, +3530 ) 3531 -3532 def _parse_string_as_identifier(self) -> t.Optional[exp.Expression]: -3533 return exp.to_identifier(self._match(TokenType.STRING) and self._prev.text, quoted=True) +3532 def _parse_window_spec(self) -> t.Dict[str, t.Optional[str | exp.Expression]]: +3533 self._match(TokenType.BETWEEN) 3534 -3535 def _parse_number(self) -> t.Optional[exp.Expression]: -3536 if self._match(TokenType.NUMBER): -3537 return self.PRIMARY_PARSERS[TokenType.NUMBER](self, self._prev) -3538 return self._parse_placeholder() -3539 -3540 def _parse_identifier(self) -> t.Optional[exp.Expression]: -3541 if self._match(TokenType.IDENTIFIER): -3542 return self.expression(exp.Identifier, this=self._prev.text, quoted=True) -3543 return self._parse_placeholder() -3544 -3545 def _parse_var( -3546 self, any_token: bool = False, tokens: t.Optional[t.Collection[TokenType]] = None -3547 ) -> t.Optional[exp.Expression]: -3548 if ( -3549 (any_token and self._advance_any()) -3550 or self._match(TokenType.VAR) -3551 or (self._match_set(tokens) if tokens else False) -3552 ): -3553 return self.expression(exp.Var, this=self._prev.text) -3554 return self._parse_placeholder() -3555 -3556 def _advance_any(self) -> t.Optional[Token]: -3557 if self._curr and self._curr.token_type not in self.RESERVED_KEYWORDS: -3558 self._advance() -3559 return self._prev -3560 return None +3535 return { +3536 "value": ( +3537 self._match_set((TokenType.UNBOUNDED, TokenType.CURRENT_ROW)) and self._prev.text +3538 ) +3539 or self._parse_bitwise(), +3540 "side": self._match_set((TokenType.PRECEDING, TokenType.FOLLOWING)) and self._prev.text, +3541 } +3542 +3543 def _parse_alias( +3544 self, this: t.Optional[exp.Expression], explicit: bool = False +3545 ) -> t.Optional[exp.Expression]: +3546 any_token = self._match(TokenType.ALIAS) +3547 +3548 if explicit and not any_token: +3549 return this +3550 +3551 if self._match(TokenType.L_PAREN): +3552 aliases = self.expression( +3553 exp.Aliases, +3554 this=this, +3555 expressions=self._parse_csv(lambda: self._parse_id_var(any_token)), +3556 ) +3557 self._match_r_paren(aliases) +3558 return aliases +3559 +3560 alias = self._parse_id_var(any_token) 3561 -3562 def _parse_var_or_string(self) -> t.Optional[exp.Expression]: -3563 return self._parse_var() or self._parse_string() +3562 if alias: +3563 return self.expression(exp.Alias, this=this, alias=alias) 3564 -3565 def _parse_null(self) -> t.Optional[exp.Expression]: -3566 if self._match(TokenType.NULL): -3567 return self.PRIMARY_PARSERS[TokenType.NULL](self, self._prev) -3568 return None -3569 -3570 def _parse_boolean(self) -> t.Optional[exp.Expression]: -3571 if self._match(TokenType.TRUE): -3572 return self.PRIMARY_PARSERS[TokenType.TRUE](self, self._prev) -3573 if self._match(TokenType.FALSE): -3574 return self.PRIMARY_PARSERS[TokenType.FALSE](self, self._prev) -3575 return None -3576 -3577 def _parse_star(self) -> t.Optional[exp.Expression]: -3578 if self._match(TokenType.STAR): -3579 return self.PRIMARY_PARSERS[TokenType.STAR](self, self._prev) -3580 return None -3581 -3582 def _parse_parameter(self) -> exp.Expression: -3583 wrapped = self._match(TokenType.L_BRACE) -3584 this = self._parse_var() or self._parse_primary() -3585 self._match(TokenType.R_BRACE) -3586 return self.expression(exp.Parameter, this=this, wrapped=wrapped) +3565 return this +3566 +3567 def _parse_id_var( +3568 self, +3569 any_token: bool = True, +3570 tokens: t.Optional[t.Collection[TokenType]] = None, +3571 prefix_tokens: t.Optional[t.Collection[TokenType]] = None, +3572 ) -> t.Optional[exp.Expression]: +3573 identifier = self._parse_identifier() +3574 +3575 if identifier: +3576 return identifier +3577 +3578 prefix = "" +3579 +3580 if prefix_tokens: +3581 while self._match_set(prefix_tokens): +3582 prefix += self._prev.text +3583 +3584 if (any_token and self._advance_any()) or self._match_set(tokens or self.ID_VAR_TOKENS): +3585 quoted = self._prev.token_type == TokenType.STRING +3586 return exp.Identifier(this=prefix + self._prev.text, quoted=quoted) 3587 -3588 def _parse_placeholder(self) -> t.Optional[exp.Expression]: -3589 if self._match_set(self.PLACEHOLDER_PARSERS): -3590 placeholder = self.PLACEHOLDER_PARSERS[self._prev.token_type](self) -3591 if placeholder: -3592 return placeholder -3593 self._advance(-1) -3594 return None -3595 -3596 def _parse_except(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]: -3597 if not self._match(TokenType.EXCEPT): -3598 return None -3599 if self._match(TokenType.L_PAREN, advance=False): -3600 return self._parse_wrapped_csv(self._parse_column) -3601 return self._parse_csv(self._parse_column) +3588 return None +3589 +3590 def _parse_string(self) -> t.Optional[exp.Expression]: +3591 if self._match(TokenType.STRING): +3592 return self.PRIMARY_PARSERS[TokenType.STRING](self, self._prev) +3593 return self._parse_placeholder() +3594 +3595 def _parse_string_as_identifier(self) -> t.Optional[exp.Expression]: +3596 return exp.to_identifier(self._match(TokenType.STRING) and self._prev.text, quoted=True) +3597 +3598 def _parse_number(self) -> t.Optional[exp.Expression]: +3599 if self._match(TokenType.NUMBER): +3600 return self.PRIMARY_PARSERS[TokenType.NUMBER](self, self._prev) +3601 return self._parse_placeholder() 3602 -3603 def _parse_replace(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]: -3604 if not self._match(TokenType.REPLACE): -3605 return None -3606 if self._match(TokenType.L_PAREN, advance=False): -3607 return self._parse_wrapped_csv(self._parse_expression) -3608 return self._parse_csv(self._parse_expression) -3609 -3610 def _parse_csv( -3611 self, parse_method: t.Callable, sep: TokenType = TokenType.COMMA -3612 ) -> t.List[t.Optional[exp.Expression]]: -3613 parse_result = parse_method() -3614 items = [parse_result] if parse_result is not None else [] -3615 -3616 while self._match(sep): -3617 if parse_result and self._prev_comments: -3618 parse_result.comments = self._prev_comments -3619 -3620 parse_result = parse_method() -3621 if parse_result is not None: -3622 items.append(parse_result) -3623 -3624 return items -3625 -3626 def _parse_tokens( -3627 self, parse_method: t.Callable, expressions: t.Dict -3628 ) -> t.Optional[exp.Expression]: -3629 this = parse_method() -3630 -3631 while self._match_set(expressions): -3632 this = self.expression( -3633 expressions[self._prev.token_type], -3634 this=this, -3635 comments=self._prev_comments, -3636 expression=parse_method(), -3637 ) -3638 -3639 return this -3640 -3641 def _parse_wrapped_id_vars(self) -> t.List[t.Optional[exp.Expression]]: -3642 return self._parse_wrapped_csv(self._parse_id_var) -3643 -3644 def _parse_wrapped_csv( -3645 self, parse_method: t.Callable, sep: TokenType = TokenType.COMMA -3646 ) -> t.List[t.Optional[exp.Expression]]: -3647 return self._parse_wrapped(lambda: self._parse_csv(parse_method, sep=sep)) -3648 -3649 def _parse_wrapped(self, parse_method: t.Callable) -> t.Any: -3650 self._match_l_paren() -3651 parse_result = parse_method() -3652 self._match_r_paren() -3653 return parse_result -3654 -3655 def _parse_select_or_expression(self) -> t.Optional[exp.Expression]: -3656 return self._parse_select() or self._parse_expression() -3657 -3658 def _parse_ddl_select(self) -> t.Optional[exp.Expression]: -3659 return self._parse_set_operations( -3660 self._parse_select(nested=True, parse_subquery_alias=False) -3661 ) -3662 -3663 def _parse_transaction(self) -> exp.Expression: -3664 this = None -3665 if self._match_texts(self.TRANSACTION_KIND): -3666 this = self._prev.text -3667 -3668 self._match_texts({"TRANSACTION", "WORK"}) -3669 -3670 modes = [] -3671 while True: -3672 mode = [] -3673 while self._match(TokenType.VAR): -3674 mode.append(self._prev.text) -3675 -3676 if mode: -3677 modes.append(" ".join(mode)) -3678 if not self._match(TokenType.COMMA): -3679 break -3680 -3681 return self.expression(exp.Transaction, this=this, modes=modes) +3603 def _parse_identifier(self) -> t.Optional[exp.Expression]: +3604 if self._match(TokenType.IDENTIFIER): +3605 return self.expression(exp.Identifier, this=self._prev.text, quoted=True) +3606 return self._parse_placeholder() +3607 +3608 def _parse_var( +3609 self, any_token: bool = False, tokens: t.Optional[t.Collection[TokenType]] = None +3610 ) -> t.Optional[exp.Expression]: +3611 if ( +3612 (any_token and self._advance_any()) +3613 or self._match(TokenType.VAR) +3614 or (self._match_set(tokens) if tokens else False) +3615 ): +3616 return self.expression(exp.Var, this=self._prev.text) +3617 return self._parse_placeholder() +3618 +3619 def _advance_any(self) -> t.Optional[Token]: +3620 if self._curr and self._curr.token_type not in self.RESERVED_KEYWORDS: +3621 self._advance() +3622 return self._prev +3623 return None +3624 +3625 def _parse_var_or_string(self) -> t.Optional[exp.Expression]: +3626 return self._parse_var() or self._parse_string() +3627 +3628 def _parse_null(self) -> t.Optional[exp.Expression]: +3629 if self._match(TokenType.NULL): +3630 return self.PRIMARY_PARSERS[TokenType.NULL](self, self._prev) +3631 return None +3632 +3633 def _parse_boolean(self) -> t.Optional[exp.Expression]: +3634 if self._match(TokenType.TRUE): +3635 return self.PRIMARY_PARSERS[TokenType.TRUE](self, self._prev) +3636 if self._match(TokenType.FALSE): +3637 return self.PRIMARY_PARSERS[TokenType.FALSE](self, self._prev) +3638 return None +3639 +3640 def _parse_star(self) -> t.Optional[exp.Expression]: +3641 if self._match(TokenType.STAR): +3642 return self.PRIMARY_PARSERS[TokenType.STAR](self, self._prev) +3643 return None +3644 +3645 def _parse_parameter(self) -> exp.Expression: +3646 wrapped = self._match(TokenType.L_BRACE) +3647 this = self._parse_var() or self._parse_primary() +3648 self._match(TokenType.R_BRACE) +3649 return self.expression(exp.Parameter, this=this, wrapped=wrapped) +3650 +3651 def _parse_placeholder(self) -> t.Optional[exp.Expression]: +3652 if self._match_set(self.PLACEHOLDER_PARSERS): +3653 placeholder = self.PLACEHOLDER_PARSERS[self._prev.token_type](self) +3654 if placeholder: +3655 return placeholder +3656 self._advance(-1) +3657 return None +3658 +3659 def _parse_except(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]: +3660 if not self._match(TokenType.EXCEPT): +3661 return None +3662 if self._match(TokenType.L_PAREN, advance=False): +3663 return self._parse_wrapped_csv(self._parse_column) +3664 return self._parse_csv(self._parse_column) +3665 +3666 def _parse_replace(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]: +3667 if not self._match(TokenType.REPLACE): +3668 return None +3669 if self._match(TokenType.L_PAREN, advance=False): +3670 return self._parse_wrapped_csv(self._parse_expression) +3671 return self._parse_csv(self._parse_expression) +3672 +3673 def _parse_csv( +3674 self, parse_method: t.Callable, sep: TokenType = TokenType.COMMA +3675 ) -> t.List[t.Optional[exp.Expression]]: +3676 parse_result = parse_method() +3677 items = [parse_result] if parse_result is not None else [] +3678 +3679 while self._match(sep): +3680 if parse_result and self._prev_comments: +3681 parse_result.comments = self._prev_comments 3682 -3683 def _parse_commit_or_rollback(self) -> exp.Expression: -3684 chain = None -3685 savepoint = None -3686 is_rollback = self._prev.token_type == TokenType.ROLLBACK -3687 -3688 self._match_texts({"TRANSACTION", "WORK"}) -3689 -3690 if self._match_text_seq("TO"): -3691 self._match_text_seq("SAVEPOINT") -3692 savepoint = self._parse_id_var() +3683 parse_result = parse_method() +3684 if parse_result is not None: +3685 items.append(parse_result) +3686 +3687 return items +3688 +3689 def _parse_tokens( +3690 self, parse_method: t.Callable, expressions: t.Dict +3691 ) -> t.Optional[exp.Expression]: +3692 this = parse_method() 3693 -3694 if self._match(TokenType.AND): -3695 chain = not self._match_text_seq("NO") -3696 self._match_text_seq("CHAIN") -3697 -3698 if is_rollback: -3699 return self.expression(exp.Rollback, savepoint=savepoint) -3700 return self.expression(exp.Commit, chain=chain) +3694 while self._match_set(expressions): +3695 this = self.expression( +3696 expressions[self._prev.token_type], +3697 this=this, +3698 comments=self._prev_comments, +3699 expression=parse_method(), +3700 ) 3701 -3702 def _parse_add_column(self) -> t.Optional[exp.Expression]: -3703 if not self._match_text_seq("ADD"): -3704 return None -3705 -3706 self._match(TokenType.COLUMN) -3707 exists_column = self._parse_exists(not_=True) -3708 expression = self._parse_column_def(self._parse_field(any_token=True)) -3709 -3710 if expression: -3711 expression.set("exists", exists_column) -3712 -3713 return expression -3714 -3715 def _parse_drop_column(self) -> t.Optional[exp.Expression]: -3716 return self._match(TokenType.DROP) and self._parse_drop(default_kind="COLUMN") +3702 return this +3703 +3704 def _parse_wrapped_id_vars(self) -> t.List[t.Optional[exp.Expression]]: +3705 return self._parse_wrapped_csv(self._parse_id_var) +3706 +3707 def _parse_wrapped_csv( +3708 self, parse_method: t.Callable, sep: TokenType = TokenType.COMMA +3709 ) -> t.List[t.Optional[exp.Expression]]: +3710 return self._parse_wrapped(lambda: self._parse_csv(parse_method, sep=sep)) +3711 +3712 def _parse_wrapped(self, parse_method: t.Callable) -> t.Any: +3713 self._match_l_paren() +3714 parse_result = parse_method() +3715 self._match_r_paren() +3716 return parse_result 3717 -3718 # https://docs.aws.amazon.com/athena/latest/ug/alter-table-drop-partition.html -3719 def _parse_drop_partition(self, exists: t.Optional[bool] = None) -> exp.Expression: -3720 return self.expression( -3721 exp.DropPartition, expressions=self._parse_csv(self._parse_partition), exists=exists -3722 ) -3723 -3724 def _parse_add_constraint(self) -> t.Optional[exp.Expression]: -3725 this = None -3726 kind = self._prev.token_type -3727 -3728 if kind == TokenType.CONSTRAINT: -3729 this = self._parse_id_var() +3718 def _parse_select_or_expression(self) -> t.Optional[exp.Expression]: +3719 return self._parse_select() or self._parse_set_operations(self._parse_expression()) +3720 +3721 def _parse_ddl_select(self) -> t.Optional[exp.Expression]: +3722 return self._parse_set_operations( +3723 self._parse_select(nested=True, parse_subquery_alias=False) +3724 ) +3725 +3726 def _parse_transaction(self) -> exp.Expression: +3727 this = None +3728 if self._match_texts(self.TRANSACTION_KIND): +3729 this = self._prev.text 3730 -3731 if self._match_text_seq("CHECK"): -3732 expression = self._parse_wrapped(self._parse_conjunction) -3733 enforced = self._match_text_seq("ENFORCED") -3734 -3735 return self.expression( -3736 exp.AddConstraint, this=this, expression=expression, enforced=enforced -3737 ) +3731 self._match_texts({"TRANSACTION", "WORK"}) +3732 +3733 modes = [] +3734 while True: +3735 mode = [] +3736 while self._match(TokenType.VAR): +3737 mode.append(self._prev.text) 3738 -3739 if kind == TokenType.FOREIGN_KEY or self._match(TokenType.FOREIGN_KEY): -3740 expression = self._parse_foreign_key() -3741 elif kind == TokenType.PRIMARY_KEY or self._match(TokenType.PRIMARY_KEY): -3742 expression = self._parse_primary_key() +3739 if mode: +3740 modes.append(" ".join(mode)) +3741 if not self._match(TokenType.COMMA): +3742 break 3743 -3744 return self.expression(exp.AddConstraint, this=this, expression=expression) +3744 return self.expression(exp.Transaction, this=this, modes=modes) 3745 -3746 def _parse_alter_table_add(self) -> t.List[t.Optional[exp.Expression]]: -3747 index = self._index - 1 -3748 -3749 if self._match_set(self.ADD_CONSTRAINT_TOKENS): -3750 return self._parse_csv(self._parse_add_constraint) -3751 -3752 self._retreat(index) -3753 return self._parse_csv(self._parse_add_column) -3754 -3755 def _parse_alter_table_alter(self) -> exp.Expression: -3756 self._match(TokenType.COLUMN) -3757 column = self._parse_field(any_token=True) -3758 -3759 if self._match_pair(TokenType.DROP, TokenType.DEFAULT): -3760 return self.expression(exp.AlterColumn, this=column, drop=True) -3761 if self._match_pair(TokenType.SET, TokenType.DEFAULT): -3762 return self.expression(exp.AlterColumn, this=column, default=self._parse_conjunction()) -3763 -3764 self._match_text_seq("SET", "DATA") -3765 return self.expression( -3766 exp.AlterColumn, -3767 this=column, -3768 dtype=self._match_text_seq("TYPE") and self._parse_types(), -3769 collate=self._match(TokenType.COLLATE) and self._parse_term(), -3770 using=self._match(TokenType.USING) and self._parse_conjunction(), -3771 ) +3746 def _parse_commit_or_rollback(self) -> exp.Expression: +3747 chain = None +3748 savepoint = None +3749 is_rollback = self._prev.token_type == TokenType.ROLLBACK +3750 +3751 self._match_texts({"TRANSACTION", "WORK"}) +3752 +3753 if self._match_text_seq("TO"): +3754 self._match_text_seq("SAVEPOINT") +3755 savepoint = self._parse_id_var() +3756 +3757 if self._match(TokenType.AND): +3758 chain = not self._match_text_seq("NO") +3759 self._match_text_seq("CHAIN") +3760 +3761 if is_rollback: +3762 return self.expression(exp.Rollback, savepoint=savepoint) +3763 return self.expression(exp.Commit, chain=chain) +3764 +3765 def _parse_add_column(self) -> t.Optional[exp.Expression]: +3766 if not self._match_text_seq("ADD"): +3767 return None +3768 +3769 self._match(TokenType.COLUMN) +3770 exists_column = self._parse_exists(not_=True) +3771 expression = self._parse_column_def(self._parse_field(any_token=True)) 3772 -3773 def _parse_alter_table_drop(self) -> t.List[t.Optional[exp.Expression]]: -3774 index = self._index - 1 +3773 if expression: +3774 expression.set("exists", exists_column) 3775 -3776 partition_exists = self._parse_exists() -3777 if self._match(TokenType.PARTITION, advance=False): -3778 return self._parse_csv(lambda: self._parse_drop_partition(exists=partition_exists)) -3779 -3780 self._retreat(index) -3781 return self._parse_csv(self._parse_drop_column) -3782 -3783 def _parse_alter_table_rename(self) -> exp.Expression: -3784 self._match_text_seq("TO") -3785 return self.expression(exp.RenameTable, this=self._parse_table(schema=True)) +3776 return expression +3777 +3778 def _parse_drop_column(self) -> t.Optional[exp.Expression]: +3779 return self._match(TokenType.DROP) and self._parse_drop(default_kind="COLUMN") +3780 +3781 # https://docs.aws.amazon.com/athena/latest/ug/alter-table-drop-partition.html +3782 def _parse_drop_partition(self, exists: t.Optional[bool] = None) -> exp.Expression: +3783 return self.expression( +3784 exp.DropPartition, expressions=self._parse_csv(self._parse_partition), exists=exists +3785 ) 3786 -3787 def _parse_alter(self) -> t.Optional[exp.Expression]: -3788 start = self._prev -3789 -3790 if not self._match(TokenType.TABLE): -3791 return self._parse_as_command(start) -3792 -3793 exists = self._parse_exists() -3794 this = self._parse_table(schema=True) -3795 -3796 if self._next: -3797 self._advance() -3798 parser = self.ALTER_PARSERS.get(self._prev.text.upper()) if self._prev else None -3799 -3800 if parser: -3801 return self.expression( -3802 exp.AlterTable, -3803 this=this, -3804 exists=exists, -3805 actions=ensure_list(parser(self)), -3806 ) -3807 return self._parse_as_command(start) +3787 def _parse_add_constraint(self) -> t.Optional[exp.Expression]: +3788 this = None +3789 kind = self._prev.token_type +3790 +3791 if kind == TokenType.CONSTRAINT: +3792 this = self._parse_id_var() +3793 +3794 if self._match_text_seq("CHECK"): +3795 expression = self._parse_wrapped(self._parse_conjunction) +3796 enforced = self._match_text_seq("ENFORCED") +3797 +3798 return self.expression( +3799 exp.AddConstraint, this=this, expression=expression, enforced=enforced +3800 ) +3801 +3802 if kind == TokenType.FOREIGN_KEY or self._match(TokenType.FOREIGN_KEY): +3803 expression = self._parse_foreign_key() +3804 elif kind == TokenType.PRIMARY_KEY or self._match(TokenType.PRIMARY_KEY): +3805 expression = self._parse_primary_key() +3806 +3807 return self.expression(exp.AddConstraint, this=this, expression=expression) 3808 -3809 def _parse_merge(self) -> exp.Expression: -3810 self._match(TokenType.INTO) -3811 target = self._parse_table() -3812 -3813 self._match(TokenType.USING) -3814 using = self._parse_table() -3815 -3816 self._match(TokenType.ON) -3817 on = self._parse_conjunction() -3818 -3819 whens = [] -3820 while self._match(TokenType.WHEN): -3821 matched = not self._match(TokenType.NOT) -3822 self._match_text_seq("MATCHED") -3823 source = ( -3824 False -3825 if self._match_text_seq("BY", "TARGET") -3826 else self._match_text_seq("BY", "SOURCE") -3827 ) -3828 condition = self._parse_conjunction() if self._match(TokenType.AND) else None -3829 -3830 self._match(TokenType.THEN) -3831 -3832 if self._match(TokenType.INSERT): -3833 _this = self._parse_star() -3834 if _this: -3835 then = self.expression(exp.Insert, this=_this) -3836 else: -3837 then = self.expression( -3838 exp.Insert, -3839 this=self._parse_value(), -3840 expression=self._match(TokenType.VALUES) and self._parse_value(), -3841 ) -3842 elif self._match(TokenType.UPDATE): -3843 expressions = self._parse_star() -3844 if expressions: -3845 then = self.expression(exp.Update, expressions=expressions) -3846 else: -3847 then = self.expression( -3848 exp.Update, -3849 expressions=self._match(TokenType.SET) -3850 and self._parse_csv(self._parse_equality), -3851 ) -3852 elif self._match(TokenType.DELETE): -3853 then = self.expression(exp.Var, this=self._prev.text) -3854 else: -3855 then = None -3856 -3857 whens.append( -3858 self.expression( -3859 exp.When, -3860 matched=matched, -3861 source=source, -3862 condition=condition, -3863 then=then, -3864 ) -3865 ) -3866 -3867 return self.expression( -3868 exp.Merge, -3869 this=target, -3870 using=using, -3871 on=on, -3872 expressions=whens, -3873 ) -3874 -3875 def _parse_show(self) -> t.Optional[exp.Expression]: -3876 parser = self._find_parser(self.SHOW_PARSERS, self._show_trie) # type: ignore -3877 if parser: -3878 return parser(self) -3879 self._advance() -3880 return self.expression(exp.Show, this=self._prev.text.upper()) +3809 def _parse_alter_table_add(self) -> t.List[t.Optional[exp.Expression]]: +3810 index = self._index - 1 +3811 +3812 if self._match_set(self.ADD_CONSTRAINT_TOKENS): +3813 return self._parse_csv(self._parse_add_constraint) +3814 +3815 self._retreat(index) +3816 return self._parse_csv(self._parse_add_column) +3817 +3818 def _parse_alter_table_alter(self) -> exp.Expression: +3819 self._match(TokenType.COLUMN) +3820 column = self._parse_field(any_token=True) +3821 +3822 if self._match_pair(TokenType.DROP, TokenType.DEFAULT): +3823 return self.expression(exp.AlterColumn, this=column, drop=True) +3824 if self._match_pair(TokenType.SET, TokenType.DEFAULT): +3825 return self.expression(exp.AlterColumn, this=column, default=self._parse_conjunction()) +3826 +3827 self._match_text_seq("SET", "DATA") +3828 return self.expression( +3829 exp.AlterColumn, +3830 this=column, +3831 dtype=self._match_text_seq("TYPE") and self._parse_types(), +3832 collate=self._match(TokenType.COLLATE) and self._parse_term(), +3833 using=self._match(TokenType.USING) and self._parse_conjunction(), +3834 ) +3835 +3836 def _parse_alter_table_drop(self) -> t.List[t.Optional[exp.Expression]]: +3837 index = self._index - 1 +3838 +3839 partition_exists = self._parse_exists() +3840 if self._match(TokenType.PARTITION, advance=False): +3841 return self._parse_csv(lambda: self._parse_drop_partition(exists=partition_exists)) +3842 +3843 self._retreat(index) +3844 return self._parse_csv(self._parse_drop_column) +3845 +3846 def _parse_alter_table_rename(self) -> exp.Expression: +3847 self._match_text_seq("TO") +3848 return self.expression(exp.RenameTable, this=self._parse_table(schema=True)) +3849 +3850 def _parse_alter(self) -> t.Optional[exp.Expression]: +3851 start = self._prev +3852 +3853 if not self._match(TokenType.TABLE): +3854 return self._parse_as_command(start) +3855 +3856 exists = self._parse_exists() +3857 this = self._parse_table(schema=True) +3858 +3859 if self._next: +3860 self._advance() +3861 parser = self.ALTER_PARSERS.get(self._prev.text.upper()) if self._prev else None +3862 +3863 if parser: +3864 return self.expression( +3865 exp.AlterTable, +3866 this=this, +3867 exists=exists, +3868 actions=ensure_list(parser(self)), +3869 ) +3870 return self._parse_as_command(start) +3871 +3872 def _parse_merge(self) -> exp.Expression: +3873 self._match(TokenType.INTO) +3874 target = self._parse_table() +3875 +3876 self._match(TokenType.USING) +3877 using = self._parse_table() +3878 +3879 self._match(TokenType.ON) +3880 on = self._parse_conjunction() 3881 -3882 def _parse_set_item_assignment( -3883 self, kind: t.Optional[str] = None -3884 ) -> t.Optional[exp.Expression]: -3885 index = self._index -3886 -3887 if kind in {"GLOBAL", "SESSION"} and self._match_text_seq("TRANSACTION"): -3888 return self._parse_set_transaction(global_=kind == "GLOBAL") -3889 -3890 left = self._parse_primary() or self._parse_id_var() -3891 -3892 if not self._match_texts(("=", "TO")): -3893 self._retreat(index) -3894 return None -3895 -3896 right = self._parse_statement() or self._parse_id_var() -3897 this = self.expression( -3898 exp.EQ, -3899 this=left, -3900 expression=right, -3901 ) -3902 -3903 return self.expression( -3904 exp.SetItem, -3905 this=this, -3906 kind=kind, -3907 ) -3908 -3909 def _parse_set_transaction(self, global_: bool = False) -> exp.Expression: -3910 self._match_text_seq("TRANSACTION") -3911 characteristics = self._parse_csv( -3912 lambda: self._parse_var_from_options(self.TRANSACTION_CHARACTERISTICS) -3913 ) -3914 return self.expression( -3915 exp.SetItem, -3916 expressions=characteristics, -3917 kind="TRANSACTION", -3918 **{"global": global_}, # type: ignore -3919 ) -3920 -3921 def _parse_set_item(self) -> t.Optional[exp.Expression]: -3922 parser = self._find_parser(self.SET_PARSERS, self._set_trie) # type: ignore -3923 return parser(self) if parser else self._parse_set_item_assignment(kind=None) -3924 -3925 def _parse_set(self) -> exp.Expression: -3926 index = self._index -3927 set_ = self.expression(exp.Set, expressions=self._parse_csv(self._parse_set_item)) -3928 -3929 if self._curr: -3930 self._retreat(index) -3931 return self._parse_as_command(self._prev) -3932 -3933 return set_ -3934 -3935 def _parse_var_from_options(self, options: t.Collection[str]) -> t.Optional[exp.Expression]: -3936 for option in options: -3937 if self._match_text_seq(*option.split(" ")): -3938 return exp.Var(this=option) -3939 return None -3940 -3941 def _parse_as_command(self, start: Token) -> exp.Command: -3942 while self._curr: -3943 self._advance() -3944 text = self._find_sql(start, self._prev) -3945 size = len(start.text) -3946 return exp.Command(this=text[:size], expression=text[size:]) -3947 -3948 def _find_parser( -3949 self, parsers: t.Dict[str, t.Callable], trie: t.Dict -3950 ) -> t.Optional[t.Callable]: -3951 if not self._curr: -3952 return None -3953 -3954 index = self._index -3955 this = [] -3956 while True: -3957 # The current token might be multiple words -3958 curr = self._curr.text.upper() -3959 key = curr.split(" ") -3960 this.append(curr) -3961 self._advance() -3962 result, trie = in_trie(trie, key) -3963 if result == 0: -3964 break -3965 if result == 2: -3966 subparser = parsers[" ".join(this)] -3967 return subparser -3968 self._retreat(index) -3969 return None -3970 -3971 def _match(self, token_type, advance=True): -3972 if not self._curr: -3973 return None -3974 -3975 if self._curr.token_type == token_type: -3976 if advance: -3977 self._advance() -3978 return True -3979 -3980 return None -3981 -3982 def _match_set(self, types, advance=True): -3983 if not self._curr: -3984 return None -3985 -3986 if self._curr.token_type in types: -3987 if advance: -3988 self._advance() -3989 return True -3990 -3991 return None -3992 -3993 def _match_pair(self, token_type_a, token_type_b, advance=True): -3994 if not self._curr or not self._next: -3995 return None -3996 -3997 if self._curr.token_type == token_type_a and self._next.token_type == token_type_b: -3998 if advance: -3999 self._advance(2) -4000 return True -4001 +3882 whens = [] +3883 while self._match(TokenType.WHEN): +3884 matched = not self._match(TokenType.NOT) +3885 self._match_text_seq("MATCHED") +3886 source = ( +3887 False +3888 if self._match_text_seq("BY", "TARGET") +3889 else self._match_text_seq("BY", "SOURCE") +3890 ) +3891 condition = self._parse_conjunction() if self._match(TokenType.AND) else None +3892 +3893 self._match(TokenType.THEN) +3894 +3895 if self._match(TokenType.INSERT): +3896 _this = self._parse_star() +3897 if _this: +3898 then = self.expression(exp.Insert, this=_this) +3899 else: +3900 then = self.expression( +3901 exp.Insert, +3902 this=self._parse_value(), +3903 expression=self._match(TokenType.VALUES) and self._parse_value(), +3904 ) +3905 elif self._match(TokenType.UPDATE): +3906 expressions = self._parse_star() +3907 if expressions: +3908 then = self.expression(exp.Update, expressions=expressions) +3909 else: +3910 then = self.expression( +3911 exp.Update, +3912 expressions=self._match(TokenType.SET) +3913 and self._parse_csv(self._parse_equality), +3914 ) +3915 elif self._match(TokenType.DELETE): +3916 then = self.expression(exp.Var, this=self._prev.text) +3917 else: +3918 then = None +3919 +3920 whens.append( +3921 self.expression( +3922 exp.When, +3923 matched=matched, +3924 source=source, +3925 condition=condition, +3926 then=then, +3927 ) +3928 ) +3929 +3930 return self.expression( +3931 exp.Merge, +3932 this=target, +3933 using=using, +3934 on=on, +3935 expressions=whens, +3936 ) +3937 +3938 def _parse_show(self) -> t.Optional[exp.Expression]: +3939 parser = self._find_parser(self.SHOW_PARSERS, self._show_trie) # type: ignore +3940 if parser: +3941 return parser(self) +3942 self._advance() +3943 return self.expression(exp.Show, this=self._prev.text.upper()) +3944 +3945 def _parse_set_item_assignment( +3946 self, kind: t.Optional[str] = None +3947 ) -> t.Optional[exp.Expression]: +3948 index = self._index +3949 +3950 if kind in {"GLOBAL", "SESSION"} and self._match_text_seq("TRANSACTION"): +3951 return self._parse_set_transaction(global_=kind == "GLOBAL") +3952 +3953 left = self._parse_primary() or self._parse_id_var() +3954 +3955 if not self._match_texts(("=", "TO")): +3956 self._retreat(index) +3957 return None +3958 +3959 right = self._parse_statement() or self._parse_id_var() +3960 this = self.expression( +3961 exp.EQ, +3962 this=left, +3963 expression=right, +3964 ) +3965 +3966 return self.expression( +3967 exp.SetItem, +3968 this=this, +3969 kind=kind, +3970 ) +3971 +3972 def _parse_set_transaction(self, global_: bool = False) -> exp.Expression: +3973 self._match_text_seq("TRANSACTION") +3974 characteristics = self._parse_csv( +3975 lambda: self._parse_var_from_options(self.TRANSACTION_CHARACTERISTICS) +3976 ) +3977 return self.expression( +3978 exp.SetItem, +3979 expressions=characteristics, +3980 kind="TRANSACTION", +3981 **{"global": global_}, # type: ignore +3982 ) +3983 +3984 def _parse_set_item(self) -> t.Optional[exp.Expression]: +3985 parser = self._find_parser(self.SET_PARSERS, self._set_trie) # type: ignore +3986 return parser(self) if parser else self._parse_set_item_assignment(kind=None) +3987 +3988 def _parse_set(self) -> exp.Expression: +3989 index = self._index +3990 set_ = self.expression(exp.Set, expressions=self._parse_csv(self._parse_set_item)) +3991 +3992 if self._curr: +3993 self._retreat(index) +3994 return self._parse_as_command(self._prev) +3995 +3996 return set_ +3997 +3998 def _parse_var_from_options(self, options: t.Collection[str]) -> t.Optional[exp.Expression]: +3999 for option in options: +4000 if self._match_text_seq(*option.split(" ")): +4001 return exp.Var(this=option) 4002 return None 4003 -4004 def _match_l_paren(self, expression=None): -4005 if not self._match(TokenType.L_PAREN): -4006 self.raise_error("Expecting (") -4007 if expression and self._prev_comments: -4008 expression.comments = self._prev_comments -4009 -4010 def _match_r_paren(self, expression=None): -4011 if not self._match(TokenType.R_PAREN): -4012 self.raise_error("Expecting )") -4013 if expression and self._prev_comments: -4014 expression.comments = self._prev_comments -4015 -4016 def _match_texts(self, texts, advance=True): -4017 if self._curr and self._curr.text.upper() in texts: -4018 if advance: -4019 self._advance() -4020 return True -4021 return False -4022 -4023 def _match_text_seq(self, *texts, advance=True): -4024 index = self._index -4025 for text in texts: -4026 if self._curr and self._curr.text.upper() == text: -4027 self._advance() -4028 else: -4029 self._retreat(index) -4030 return False -4031 -4032 if not advance: -4033 self._retreat(index) -4034 -4035 return True -4036 -4037 def _replace_columns_with_dots(self, this): -4038 if isinstance(this, exp.Dot): -4039 exp.replace_children(this, self._replace_columns_with_dots) -4040 elif isinstance(this, exp.Column): -4041 exp.replace_children(this, self._replace_columns_with_dots) -4042 table = this.args.get("table") -4043 this = ( -4044 self.expression(exp.Dot, this=table, expression=this.this) -4045 if table -4046 else self.expression(exp.Var, this=this.name) -4047 ) -4048 elif isinstance(this, exp.Identifier): -4049 this = self.expression(exp.Var, this=this.name) -4050 return this -4051 -4052 def _replace_lambda(self, node, lambda_variables): -4053 if isinstance(node, exp.Column): -4054 if node.name in lambda_variables: -4055 return node.this -4056 return node +4004 def _parse_as_command(self, start: Token) -> exp.Command: +4005 while self._curr: +4006 self._advance() +4007 text = self._find_sql(start, self._prev) +4008 size = len(start.text) +4009 return exp.Command(this=text[:size], expression=text[size:]) +4010 +4011 def _find_parser( +4012 self, parsers: t.Dict[str, t.Callable], trie: t.Dict +4013 ) -> t.Optional[t.Callable]: +4014 if not self._curr: +4015 return None +4016 +4017 index = self._index +4018 this = [] +4019 while True: +4020 # The current token might be multiple words +4021 curr = self._curr.text.upper() +4022 key = curr.split(" ") +4023 this.append(curr) +4024 self._advance() +4025 result, trie = in_trie(trie, key) +4026 if result == 0: +4027 break +4028 if result == 2: +4029 subparser = parsers[" ".join(this)] +4030 return subparser +4031 self._retreat(index) +4032 return None +4033 +4034 def _match(self, token_type, advance=True): +4035 if not self._curr: +4036 return None +4037 +4038 if self._curr.token_type == token_type: +4039 if advance: +4040 self._advance() +4041 return True +4042 +4043 return None +4044 +4045 def _match_set(self, types, advance=True): +4046 if not self._curr: +4047 return None +4048 +4049 if self._curr.token_type in types: +4050 if advance: +4051 self._advance() +4052 return True +4053 +4054 return None +4055 +4056 def _match_pair(self, token_type_a, token_type_b, advance=True): +4057 if not self._curr or not self._next: +4058 return None +4059 +4060 if self._curr.token_type == token_type_a and self._next.token_type == token_type_b: +4061 if advance: +4062 self._advance(2) +4063 return True +4064 +4065 return None +4066 +4067 def _match_l_paren(self, expression=None): +4068 if not self._match(TokenType.L_PAREN): +4069 self.raise_error("Expecting (") +4070 if expression and self._prev_comments: +4071 expression.comments = self._prev_comments +4072 +4073 def _match_r_paren(self, expression=None): +4074 if not self._match(TokenType.R_PAREN): +4075 self.raise_error("Expecting )") +4076 if expression and self._prev_comments: +4077 expression.comments = self._prev_comments +4078 +4079 def _match_texts(self, texts, advance=True): +4080 if self._curr and self._curr.text.upper() in texts: +4081 if advance: +4082 self._advance() +4083 return True +4084 return False +4085 +4086 def _match_text_seq(self, *texts, advance=True): +4087 index = self._index +4088 for text in texts: +4089 if self._curr and self._curr.text.upper() == text: +4090 self._advance() +4091 else: +4092 self._retreat(index) +4093 return False +4094 +4095 if not advance: +4096 self._retreat(index) +4097 +4098 return True +4099 +4100 def _replace_columns_with_dots(self, this): +4101 if isinstance(this, exp.Dot): +4102 exp.replace_children(this, self._replace_columns_with_dots) +4103 elif isinstance(this, exp.Column): +4104 exp.replace_children(this, self._replace_columns_with_dots) +4105 table = this.args.get("table") +4106 this = ( +4107 self.expression(exp.Dot, this=table, expression=this.this) +4108 if table +4109 else self.expression(exp.Var, this=this.name) +4110 ) +4111 elif isinstance(this, exp.Identifier): +4112 this = self.expression(exp.Var, this=this.name) +4113 return this +4114 +4115 def _replace_lambda(self, node, lambda_variables): +4116 for column in node.find_all(exp.Column): +4117 if column.parts[0].name in lambda_variables: +4118 dot_or_id = column.to_dot() if column.table else column.this +4119 parent = column.parent +4120 +4121 while isinstance(parent, exp.Dot): +4122 if not isinstance(parent.parent, exp.Dot): +4123 parent.replace(dot_or_id) +4124 break +4125 parent = parent.parent +4126 else: +4127 column.replace(dot_or_id) +4128 return node
        @@ -4154,13 +4229,13 @@
        def - parse_var_map(args): + parse_var_map(args: Sequence) -> sqlglot.expressions.Expression:
        -
        23def parse_var_map(args):
        +            
        23def parse_var_map(args: t.Sequence) -> exp.Expression:
         24    keys = []
         25    values = []
         26    for i in range(0, len(args), 2):
        @@ -4175,6 +4250,26 @@
         
             
         
        +                
        +
        + +
        + + def + parse_like(args): + + + +
        + +
        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
        +
        + + + +
        @@ -4187,12 +4282,12 @@ -
        35def binary_range_parser(
        -36    expr_type: t.Type[exp.Expression],
        -37) -> t.Callable[[Parser, t.Optional[exp.Expression]], t.Optional[exp.Expression]]:
        -38    return lambda self, this: self._parse_escape(
        -39        self.expression(expr_type, this=this, expression=self._parse_bitwise())
        -40    )
        +            
        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    )
         
        @@ -4210,4012 +4305,4079 @@
        -
          52class Parser(metaclass=_Parser):
        -  53    """
        -  54    Parser consumes a list of tokens produced by the `sqlglot.tokens.Tokenizer` and produces
        -  55    a parsed syntax tree.
        -  56
        -  57    Args:
        -  58        error_level: the desired error level.
        -  59            Default: ErrorLevel.RAISE
        -  60        error_message_context: determines the amount of context to capture from a
        -  61            query string when displaying the error message (in number of characters).
        -  62            Default: 50.
        -  63        index_offset: Index offset for arrays eg ARRAY[0] vs ARRAY[1] as the head of a list.
        -  64            Default: 0
        -  65        alias_post_tablesample: If the table alias comes after tablesample.
        -  66            Default: False
        -  67        max_errors: Maximum number of error messages to include in a raised ParseError.
        -  68            This is only relevant if error_level is ErrorLevel.RAISE.
        -  69            Default: 3
        -  70        null_ordering: Indicates the default null ordering method to use if not explicitly set.
        -  71            Options are "nulls_are_small", "nulls_are_large", "nulls_are_last".
        -  72            Default: "nulls_are_small"
        -  73    """
        -  74
        -  75    FUNCTIONS: t.Dict[str, t.Callable] = {
        -  76        **{name: f.from_arg_list for f in exp.ALL_FUNCTIONS for name in f.sql_names()},
        -  77        "DATE_TO_DATE_STR": lambda args: exp.Cast(
        -  78            this=seq_get(args, 0),
        -  79            to=exp.DataType(this=exp.DataType.Type.TEXT),
        -  80        ),
        -  81        "TIME_TO_TIME_STR": lambda args: exp.Cast(
        -  82            this=seq_get(args, 0),
        -  83            to=exp.DataType(this=exp.DataType.Type.TEXT),
        -  84        ),
        -  85        "TS_OR_DS_TO_DATE_STR": lambda args: exp.Substring(
        -  86            this=exp.Cast(
        -  87                this=seq_get(args, 0),
        -  88                to=exp.DataType(this=exp.DataType.Type.TEXT),
        -  89            ),
        -  90            start=exp.Literal.number(1),
        -  91            length=exp.Literal.number(10),
        +            
          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        "VAR_MAP": parse_var_map,
        -  94        "IFNULL": exp.Coalesce.from_arg_list,
        -  95    }
        -  96
        -  97    NO_PAREN_FUNCTIONS = {
        -  98        TokenType.CURRENT_DATE: exp.CurrentDate,
        -  99        TokenType.CURRENT_DATETIME: exp.CurrentDate,
        - 100        TokenType.CURRENT_TIME: exp.CurrentTime,
        - 101        TokenType.CURRENT_TIMESTAMP: exp.CurrentTimestamp,
        +  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    NESTED_TYPE_TOKENS = {
        - 105        TokenType.ARRAY,
        - 106        TokenType.MAP,
        - 107        TokenType.STRUCT,
        - 108        TokenType.NULLABLE,
        + 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    TYPE_TOKENS = {
        - 112        TokenType.BIT,
        - 113        TokenType.BOOLEAN,
        - 114        TokenType.TINYINT,
        - 115        TokenType.SMALLINT,
        - 116        TokenType.INT,
        - 117        TokenType.BIGINT,
        - 118        TokenType.FLOAT,
        - 119        TokenType.DOUBLE,
        - 120        TokenType.CHAR,
        - 121        TokenType.NCHAR,
        - 122        TokenType.VARCHAR,
        - 123        TokenType.NVARCHAR,
        - 124        TokenType.TEXT,
        - 125        TokenType.MEDIUMTEXT,
        - 126        TokenType.LONGTEXT,
        - 127        TokenType.MEDIUMBLOB,
        - 128        TokenType.LONGBLOB,
        - 129        TokenType.BINARY,
        - 130        TokenType.VARBINARY,
        - 131        TokenType.JSON,
        - 132        TokenType.JSONB,
        - 133        TokenType.INTERVAL,
        - 134        TokenType.TIME,
        - 135        TokenType.TIMESTAMP,
        - 136        TokenType.TIMESTAMPTZ,
        - 137        TokenType.TIMESTAMPLTZ,
        - 138        TokenType.DATETIME,
        - 139        TokenType.DATE,
        - 140        TokenType.DECIMAL,
        - 141        TokenType.UUID,
        - 142        TokenType.GEOGRAPHY,
        - 143        TokenType.GEOMETRY,
        - 144        TokenType.HLLSKETCH,
        - 145        TokenType.HSTORE,
        - 146        TokenType.PSEUDO_TYPE,
        - 147        TokenType.SUPER,
        - 148        TokenType.SERIAL,
        - 149        TokenType.SMALLSERIAL,
        - 150        TokenType.BIGSERIAL,
        - 151        TokenType.XML,
        - 152        TokenType.UNIQUEIDENTIFIER,
        - 153        TokenType.MONEY,
        - 154        TokenType.SMALLMONEY,
        - 155        TokenType.ROWVERSION,
        - 156        TokenType.IMAGE,
        - 157        TokenType.VARIANT,
        - 158        TokenType.OBJECT,
        - 159        TokenType.INET,
        - 160        *NESTED_TYPE_TOKENS,
        - 161    }
        - 162
        - 163    SUBQUERY_PREDICATES = {
        - 164        TokenType.ANY: exp.Any,
        - 165        TokenType.ALL: exp.All,
        - 166        TokenType.EXISTS: exp.Exists,
        - 167        TokenType.SOME: exp.Any,
        + 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    RESERVED_KEYWORDS = {*Tokenizer.SINGLE_TOKENS.values(), TokenType.SELECT}
        - 171
        - 172    DB_CREATABLES = {
        - 173        TokenType.DATABASE,
        - 174        TokenType.SCHEMA,
        - 175        TokenType.TABLE,
        - 176        TokenType.VIEW,
        - 177    }
        + 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}
          178
        - 179    CREATABLES = {
        - 180        TokenType.COLUMN,
        - 181        TokenType.FUNCTION,
        - 182        TokenType.INDEX,
        - 183        TokenType.PROCEDURE,
        - 184        *DB_CREATABLES,
        - 185    }
        - 186
        - 187    ID_VAR_TOKENS = {
        - 188        TokenType.VAR,
        - 189        TokenType.ANTI,
        - 190        TokenType.APPLY,
        - 191        TokenType.AUTO_INCREMENT,
        - 192        TokenType.BEGIN,
        - 193        TokenType.BOTH,
        - 194        TokenType.BUCKET,
        - 195        TokenType.CACHE,
        - 196        TokenType.CASCADE,
        - 197        TokenType.COLLATE,
        - 198        TokenType.COMMAND,
        - 199        TokenType.COMMENT,
        - 200        TokenType.COMMIT,
        - 201        TokenType.COMPOUND,
        - 202        TokenType.CONSTRAINT,
        - 203        TokenType.DEFAULT,
        - 204        TokenType.DELETE,
        - 205        TokenType.DESCRIBE,
        - 206        TokenType.DIV,
        - 207        TokenType.END,
        - 208        TokenType.EXECUTE,
        - 209        TokenType.ESCAPE,
        - 210        TokenType.FALSE,
        - 211        TokenType.FIRST,
        - 212        TokenType.FILTER,
        - 213        TokenType.FOLLOWING,
        - 214        TokenType.FORMAT,
        - 215        TokenType.IF,
        - 216        TokenType.ISNULL,
        - 217        TokenType.INTERVAL,
        - 218        TokenType.LAZY,
        - 219        TokenType.LEADING,
        - 220        TokenType.LEFT,
        - 221        TokenType.LOCAL,
        - 222        TokenType.MATERIALIZED,
        - 223        TokenType.MERGE,
        - 224        TokenType.NATURAL,
        - 225        TokenType.NEXT,
        - 226        TokenType.OFFSET,
        - 227        TokenType.ONLY,
        - 228        TokenType.OPTIONS,
        - 229        TokenType.ORDINALITY,
        - 230        TokenType.PERCENT,
        - 231        TokenType.PIVOT,
        - 232        TokenType.PRECEDING,
        - 233        TokenType.RANGE,
        - 234        TokenType.REFERENCES,
        - 235        TokenType.RIGHT,
        - 236        TokenType.ROW,
        - 237        TokenType.ROWS,
        - 238        TokenType.SEED,
        - 239        TokenType.SEMI,
        - 240        TokenType.SET,
        - 241        TokenType.SHOW,
        - 242        TokenType.SORTKEY,
        - 243        TokenType.TEMPORARY,
        - 244        TokenType.TOP,
        - 245        TokenType.TRAILING,
        - 246        TokenType.TRUE,
        - 247        TokenType.UNBOUNDED,
        - 248        TokenType.UNIQUE,
        - 249        TokenType.UNLOGGED,
        - 250        TokenType.UNPIVOT,
        - 251        TokenType.VOLATILE,
        - 252        TokenType.WINDOW,
        - 253        *CREATABLES,
        - 254        *SUBQUERY_PREDICATES,
        - 255        *TYPE_TOKENS,
        - 256        *NO_PAREN_FUNCTIONS,
        - 257    }
        - 258
        - 259    TABLE_ALIAS_TOKENS = ID_VAR_TOKENS - {
        - 260        TokenType.APPLY,
        - 261        TokenType.LEFT,
        - 262        TokenType.NATURAL,
        - 263        TokenType.OFFSET,
        - 264        TokenType.RIGHT,
        - 265        TokenType.WINDOW,
        - 266    }
        - 267
        - 268    UPDATE_ALIAS_TOKENS = TABLE_ALIAS_TOKENS - {TokenType.SET}
        - 269
        - 270    TRIM_TYPES = {TokenType.LEADING, TokenType.TRAILING, TokenType.BOTH}
        - 271
        - 272    FUNC_TOKENS = {
        - 273        TokenType.COMMAND,
        - 274        TokenType.CURRENT_DATE,
        - 275        TokenType.CURRENT_DATETIME,
        - 276        TokenType.CURRENT_TIMESTAMP,
        - 277        TokenType.CURRENT_TIME,
        - 278        TokenType.FILTER,
        - 279        TokenType.FIRST,
        - 280        TokenType.FORMAT,
        - 281        TokenType.IDENTIFIER,
        - 282        TokenType.INDEX,
        - 283        TokenType.ISNULL,
        - 284        TokenType.ILIKE,
        - 285        TokenType.LIKE,
        - 286        TokenType.MERGE,
        - 287        TokenType.OFFSET,
        - 288        TokenType.PRIMARY_KEY,
        - 289        TokenType.REPLACE,
        - 290        TokenType.ROW,
        - 291        TokenType.UNNEST,
        - 292        TokenType.VAR,
        - 293        TokenType.LEFT,
        - 294        TokenType.RIGHT,
        - 295        TokenType.DATE,
        - 296        TokenType.DATETIME,
        - 297        TokenType.TABLE,
        - 298        TokenType.TIMESTAMP,
        - 299        TokenType.TIMESTAMPTZ,
        - 300        TokenType.WINDOW,
        - 301        *TYPE_TOKENS,
        - 302        *SUBQUERY_PREDICATES,
        - 303    }
        - 304
        - 305    CONJUNCTION = {
        - 306        TokenType.AND: exp.And,
        - 307        TokenType.OR: exp.Or,
        - 308    }
        - 309
        - 310    EQUALITY = {
        - 311        TokenType.EQ: exp.EQ,
        - 312        TokenType.NEQ: exp.NEQ,
        - 313        TokenType.NULLSAFE_EQ: exp.NullSafeEQ,
        - 314    }
        - 315
        - 316    COMPARISON = {
        - 317        TokenType.GT: exp.GT,
        - 318        TokenType.GTE: exp.GTE,
        - 319        TokenType.LT: exp.LT,
        - 320        TokenType.LTE: exp.LTE,
        - 321    }
        - 322
        - 323    BITWISE = {
        - 324        TokenType.AMP: exp.BitwiseAnd,
        - 325        TokenType.CARET: exp.BitwiseXor,
        - 326        TokenType.PIPE: exp.BitwiseOr,
        - 327        TokenType.DPIPE: exp.DPipe,
        - 328    }
        - 329
        - 330    TERM = {
        - 331        TokenType.DASH: exp.Sub,
        - 332        TokenType.PLUS: exp.Add,
        - 333        TokenType.MOD: exp.Mod,
        - 334        TokenType.COLLATE: exp.Collate,
        - 335    }
        - 336
        - 337    FACTOR = {
        - 338        TokenType.DIV: exp.IntDiv,
        - 339        TokenType.LR_ARROW: exp.Distance,
        - 340        TokenType.SLASH: exp.Div,
        - 341        TokenType.STAR: exp.Mul,
        - 342    }
        - 343
        - 344    TIMESTAMPS = {
        - 345        TokenType.TIME,
        - 346        TokenType.TIMESTAMP,
        - 347        TokenType.TIMESTAMPTZ,
        - 348        TokenType.TIMESTAMPLTZ,
        - 349    }
        - 350
        - 351    SET_OPERATIONS = {
        - 352        TokenType.UNION,
        - 353        TokenType.INTERSECT,
        - 354        TokenType.EXCEPT,
        - 355    }
        - 356
        - 357    JOIN_SIDES = {
        - 358        TokenType.LEFT,
        - 359        TokenType.RIGHT,
        - 360        TokenType.FULL,
        + 179    DB_CREATABLES = {
        + 180        TokenType.DATABASE,
        + 181        TokenType.SCHEMA,
        + 182        TokenType.TABLE,
        + 183        TokenType.VIEW,
        + 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    JOIN_KINDS = {
        - 364        TokenType.INNER,
        - 365        TokenType.OUTER,
        - 366        TokenType.CROSS,
        - 367        TokenType.SEMI,
        - 368        TokenType.ANTI,
        - 369    }
        - 370
        - 371    LAMBDAS = {
        - 372        TokenType.ARROW: lambda self, expressions: self.expression(
        - 373            exp.Lambda,
        - 374            this=self._parse_conjunction().transform(
        - 375                self._replace_lambda, {node.name for node in expressions}
        - 376            ),
        - 377            expressions=expressions,
        - 378        ),
        - 379        TokenType.FARROW: lambda self, expressions: self.expression(
        - 380            exp.Kwarg,
        - 381            this=exp.Var(this=expressions[0].name),
        - 382            expression=self._parse_conjunction(),
        - 383        ),
        - 384    }
        - 385
        - 386    COLUMN_OPERATORS = {
        - 387        TokenType.DOT: None,
        - 388        TokenType.DCOLON: lambda self, this, to: self.expression(
        - 389            exp.Cast,
        - 390            this=this,
        - 391            to=to,
        - 392        ),
        - 393        TokenType.ARROW: lambda self, this, path: self.expression(
        - 394            exp.JSONExtract,
        - 395            this=this,
        - 396            expression=path,
        - 397        ),
        - 398        TokenType.DARROW: lambda self, this, path: self.expression(
        - 399            exp.JSONExtractScalar,
        - 400            this=this,
        - 401            expression=path,
        - 402        ),
        - 403        TokenType.HASH_ARROW: lambda self, this, path: self.expression(
        - 404            exp.JSONBExtract,
        - 405            this=this,
        - 406            expression=path,
        - 407        ),
        - 408        TokenType.DHASH_ARROW: lambda self, this, path: self.expression(
        - 409            exp.JSONBExtractScalar,
        - 410            this=this,
        - 411            expression=path,
        - 412        ),
        - 413        TokenType.PLACEHOLDER: lambda self, this, key: self.expression(
        - 414            exp.JSONBContains,
        - 415            this=this,
        - 416            expression=key,
        - 417        ),
        - 418    }
        - 419
        - 420    EXPRESSION_PARSERS = {
        - 421        exp.Column: lambda self: self._parse_column(),
        - 422        exp.DataType: lambda self: self._parse_types(),
        - 423        exp.From: lambda self: self._parse_from(),
        - 424        exp.Group: lambda self: self._parse_group(),
        - 425        exp.Identifier: lambda self: self._parse_id_var(),
        - 426        exp.Lateral: lambda self: self._parse_lateral(),
        - 427        exp.Join: lambda self: self._parse_join(),
        - 428        exp.Order: lambda self: self._parse_order(),
        - 429        exp.Cluster: lambda self: self._parse_sort(TokenType.CLUSTER_BY, exp.Cluster),
        - 430        exp.Sort: lambda self: self._parse_sort(TokenType.SORT_BY, exp.Sort),
        - 431        exp.Lambda: lambda self: self._parse_lambda(),
        - 432        exp.Limit: lambda self: self._parse_limit(),
        - 433        exp.Offset: lambda self: self._parse_offset(),
        - 434        exp.TableAlias: lambda self: self._parse_table_alias(),
        - 435        exp.Table: lambda self: self._parse_table(),
        - 436        exp.Condition: lambda self: self._parse_conjunction(),
        - 437        exp.Expression: lambda self: self._parse_statement(),
        - 438        exp.Properties: lambda self: self._parse_properties(),
        - 439        exp.Where: lambda self: self._parse_where(),
        - 440        exp.Ordered: lambda self: self._parse_ordered(),
        - 441        exp.Having: lambda self: self._parse_having(),
        - 442        exp.With: lambda self: self._parse_with(),
        - 443        exp.Window: lambda self: self._parse_named_window(),
        - 444        exp.Qualify: lambda self: self._parse_qualify(),
        - 445        exp.Returning: lambda self: self._parse_returning(),
        - 446        "JOIN_TYPE": lambda self: self._parse_join_side_and_kind(),
        - 447    }
        - 448
        - 449    STATEMENT_PARSERS = {
        - 450        TokenType.ALTER: lambda self: self._parse_alter(),
        - 451        TokenType.BEGIN: lambda self: self._parse_transaction(),
        - 452        TokenType.CACHE: lambda self: self._parse_cache(),
        - 453        TokenType.COMMIT: lambda self: self._parse_commit_or_rollback(),
        - 454        TokenType.COMMENT: lambda self: self._parse_comment(),
        - 455        TokenType.CREATE: lambda self: self._parse_create(),
        - 456        TokenType.DELETE: lambda self: self._parse_delete(),
        - 457        TokenType.DESC: lambda self: self._parse_describe(),
        - 458        TokenType.DESCRIBE: lambda self: self._parse_describe(),
        - 459        TokenType.DROP: lambda self: self._parse_drop(),
        - 460        TokenType.END: lambda self: self._parse_commit_or_rollback(),
        - 461        TokenType.INSERT: lambda self: self._parse_insert(),
        - 462        TokenType.LOAD_DATA: lambda self: self._parse_load_data(),
        - 463        TokenType.MERGE: lambda self: self._parse_merge(),
        - 464        TokenType.ROLLBACK: lambda self: self._parse_commit_or_rollback(),
        - 465        TokenType.SET: lambda self: self._parse_set(),
        - 466        TokenType.UNCACHE: lambda self: self._parse_uncache(),
        - 467        TokenType.UPDATE: lambda self: self._parse_update(),
        - 468        TokenType.USE: lambda self: self.expression(
        - 469            exp.Use,
        - 470            kind=self._match_texts(("ROLE", "WAREHOUSE", "DATABASE", "SCHEMA"))
        - 471            and exp.Var(this=self._prev.text),
        - 472            this=self._parse_table(schema=False),
        - 473        ),
        - 474    }
        - 475
        - 476    UNARY_PARSERS = {
        - 477        TokenType.PLUS: lambda self: self._parse_unary(),  # Unary + is handled as a no-op
        - 478        TokenType.NOT: lambda self: self.expression(exp.Not, this=self._parse_equality()),
        - 479        TokenType.TILDA: lambda self: self.expression(exp.BitwiseNot, this=self._parse_unary()),
        - 480        TokenType.DASH: lambda self: self.expression(exp.Neg, this=self._parse_unary()),
        - 481    }
        - 482
        - 483    PRIMARY_PARSERS = {
        - 484        TokenType.STRING: lambda self, token: self.expression(
        - 485            exp.Literal, this=token.text, is_string=True
        - 486        ),
        - 487        TokenType.NUMBER: lambda self, token: self.expression(
        - 488            exp.Literal, this=token.text, is_string=False
        - 489        ),
        - 490        TokenType.STAR: lambda self, _: self.expression(
        - 491            exp.Star,
        - 492            **{"except": self._parse_except(), "replace": self._parse_replace()},
        - 493        ),
        - 494        TokenType.NULL: lambda self, _: self.expression(exp.Null),
        - 495        TokenType.TRUE: lambda self, _: self.expression(exp.Boolean, this=True),
        - 496        TokenType.FALSE: lambda self, _: self.expression(exp.Boolean, this=False),
        - 497        TokenType.BIT_STRING: lambda self, token: self.expression(exp.BitString, this=token.text),
        - 498        TokenType.HEX_STRING: lambda self, token: self.expression(exp.HexString, this=token.text),
        - 499        TokenType.BYTE_STRING: lambda self, token: self.expression(exp.ByteString, this=token.text),
        - 500        TokenType.INTRODUCER: lambda self, token: self._parse_introducer(token),
        - 501        TokenType.NATIONAL: lambda self, token: self._parse_national(token),
        - 502        TokenType.SESSION_PARAMETER: lambda self, _: self._parse_session_parameter(),
        - 503    }
        - 504
        - 505    PLACEHOLDER_PARSERS = {
        - 506        TokenType.PLACEHOLDER: lambda self: self.expression(exp.Placeholder),
        - 507        TokenType.PARAMETER: lambda self: self._parse_parameter(),
        - 508        TokenType.COLON: lambda self: self.expression(exp.Placeholder, this=self._prev.text)
        - 509        if self._match_set((TokenType.NUMBER, TokenType.VAR))
        - 510        else None,
        - 511    }
        - 512
        - 513    RANGE_PARSERS = {
        - 514        TokenType.BETWEEN: lambda self, this: self._parse_between(this),
        - 515        TokenType.GLOB: binary_range_parser(exp.Glob),
        - 516        TokenType.OVERLAPS: binary_range_parser(exp.Overlaps),
        - 517        TokenType.IN: lambda self, this: self._parse_in(this),
        - 518        TokenType.IS: lambda self, this: self._parse_is(this),
        - 519        TokenType.LIKE: binary_range_parser(exp.Like),
        - 520        TokenType.ILIKE: binary_range_parser(exp.ILike),
        - 521        TokenType.IRLIKE: binary_range_parser(exp.RegexpILike),
        - 522        TokenType.RLIKE: binary_range_parser(exp.RegexpLike),
        - 523        TokenType.SIMILAR_TO: binary_range_parser(exp.SimilarTo),
        - 524    }
        - 525
        - 526    PROPERTY_PARSERS = {
        - 527        "AFTER": lambda self: self._parse_afterjournal(
        - 528            no=self._prev.text.upper() == "NO", dual=self._prev.text.upper() == "DUAL"
        - 529        ),
        - 530        "ALGORITHM": lambda self: self._parse_property_assignment(exp.AlgorithmProperty),
        - 531        "AUTO_INCREMENT": lambda self: self._parse_property_assignment(exp.AutoIncrementProperty),
        - 532        "BEFORE": lambda self: self._parse_journal(
        - 533            no=self._prev.text.upper() == "NO", dual=self._prev.text.upper() == "DUAL"
        - 534        ),
        - 535        "BLOCKCOMPRESSION": lambda self: self._parse_blockcompression(),
        - 536        "CHARACTER SET": lambda self: self._parse_character_set(),
        - 537        "CHECKSUM": lambda self: self._parse_checksum(),
        - 538        "CLUSTER BY": lambda self: self.expression(
        - 539            exp.Cluster, expressions=self._parse_csv(self._parse_ordered)
        - 540        ),
        - 541        "COLLATE": lambda self: self._parse_property_assignment(exp.CollateProperty),
        - 542        "COMMENT": lambda self: self._parse_property_assignment(exp.SchemaCommentProperty),
        - 543        "DATABLOCKSIZE": lambda self: self._parse_datablocksize(
        - 544            default=self._prev.text.upper() == "DEFAULT"
        - 545        ),
        - 546        "DEFINER": lambda self: self._parse_definer(),
        - 547        "DETERMINISTIC": lambda self: self.expression(
        - 548            exp.VolatilityProperty, this=exp.Literal.string("IMMUTABLE")
        - 549        ),
        - 550        "DISTKEY": lambda self: self._parse_distkey(),
        - 551        "DISTSTYLE": lambda self: self._parse_property_assignment(exp.DistStyleProperty),
        - 552        "EXECUTE": lambda self: self._parse_property_assignment(exp.ExecuteAsProperty),
        - 553        "EXTERNAL": lambda self: self.expression(exp.ExternalProperty),
        - 554        "FALLBACK": lambda self: self._parse_fallback(no=self._prev.text.upper() == "NO"),
        - 555        "FORMAT": lambda self: self._parse_property_assignment(exp.FileFormatProperty),
        - 556        "FREESPACE": lambda self: self._parse_freespace(),
        - 557        "GLOBAL": lambda self: self._parse_temporary(global_=True),
        - 558        "IMMUTABLE": lambda self: self.expression(
        - 559            exp.VolatilityProperty, this=exp.Literal.string("IMMUTABLE")
        - 560        ),
        - 561        "JOURNAL": lambda self: self._parse_journal(
        - 562            no=self._prev.text.upper() == "NO", dual=self._prev.text.upper() == "DUAL"
        + 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        ),
        + 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
        + 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"
        + 559        ),
        + 560        "DEFINER": lambda self: self._parse_definer(),
        + 561        "DETERMINISTIC": lambda self: self.expression(
        + 562            exp.VolatilityProperty, this=exp.Literal.string("IMMUTABLE")
          563        ),
        - 564        "LANGUAGE": lambda self: self._parse_property_assignment(exp.LanguageProperty),
        - 565        "LIKE": lambda self: self._parse_create_like(),
        - 566        "LOCAL": lambda self: self._parse_afterjournal(no=False, dual=False, local=True),
        - 567        "LOCATION": lambda self: self._parse_property_assignment(exp.LocationProperty),
        - 568        "LOCK": lambda self: self._parse_locking(),
        - 569        "LOCKING": lambda self: self._parse_locking(),
        - 570        "LOG": lambda self: self._parse_log(no=self._prev.text.upper() == "NO"),
        - 571        "MATERIALIZED": lambda self: self.expression(exp.MaterializedProperty),
        - 572        "MAX": lambda self: self._parse_datablocksize(),
        - 573        "MAXIMUM": lambda self: self._parse_datablocksize(),
        - 574        "MERGEBLOCKRATIO": lambda self: self._parse_mergeblockratio(
        - 575            no=self._prev.text.upper() == "NO", default=self._prev.text.upper() == "DEFAULT"
        - 576        ),
        - 577        "MIN": lambda self: self._parse_datablocksize(),
        - 578        "MINIMUM": lambda self: self._parse_datablocksize(),
        - 579        "MULTISET": lambda self: self.expression(exp.SetProperty, multi=True),
        - 580        "NO": lambda self: self._parse_noprimaryindex(),
        - 581        "NOT": lambda self: self._parse_afterjournal(no=False, dual=False, local=False),
        - 582        "ON": lambda self: self._parse_oncommit(),
        - 583        "PARTITION BY": lambda self: self._parse_partitioned_by(),
        - 584        "PARTITIONED BY": lambda self: self._parse_partitioned_by(),
        - 585        "PARTITIONED_BY": lambda self: self._parse_partitioned_by(),
        - 586        "RETURNS": lambda self: self._parse_returns(),
        - 587        "ROW": lambda self: self._parse_row(),
        - 588        "SET": lambda self: self.expression(exp.SetProperty, multi=False),
        - 589        "SORTKEY": lambda self: self._parse_sortkey(),
        - 590        "STABLE": lambda self: self.expression(
        - 591            exp.VolatilityProperty, this=exp.Literal.string("STABLE")
        - 592        ),
        - 593        "STORED": lambda self: self._parse_property_assignment(exp.FileFormatProperty),
        - 594        "TABLE_FORMAT": lambda self: self._parse_property_assignment(exp.TableFormatProperty),
        - 595        "TBLPROPERTIES": lambda self: self._parse_wrapped_csv(self._parse_property),
        - 596        "TEMPORARY": lambda self: self._parse_temporary(global_=False),
        - 597        "TRANSIENT": lambda self: self.expression(exp.TransientProperty),
        - 598        "USING": lambda self: self._parse_property_assignment(exp.TableFormatProperty),
        - 599        "VOLATILE": lambda self: self.expression(
        - 600            exp.VolatilityProperty, this=exp.Literal.string("VOLATILE")
        - 601        ),
        - 602        "WITH": lambda self: self._parse_with_property(),
        - 603    }
        - 604
        - 605    CONSTRAINT_PARSERS = {
        - 606        "AUTOINCREMENT": lambda self: self._parse_auto_increment(),
        - 607        "AUTO_INCREMENT": lambda self: self._parse_auto_increment(),
        - 608        "CASESPECIFIC": lambda self: self.expression(exp.CaseSpecificColumnConstraint, not_=False),
        - 609        "CHARACTER SET": lambda self: self.expression(
        - 610            exp.CharacterSetColumnConstraint, this=self._parse_var_or_string()
        - 611        ),
        - 612        "CHECK": lambda self: self.expression(
        - 613            exp.CheckColumnConstraint, this=self._parse_wrapped(self._parse_conjunction)
        - 614        ),
        - 615        "COLLATE": lambda self: self.expression(
        - 616            exp.CollateColumnConstraint, this=self._parse_var()
        - 617        ),
        - 618        "COMMENT": lambda self: self.expression(
        - 619            exp.CommentColumnConstraint, this=self._parse_string()
        - 620        ),
        - 621        "COMPRESS": lambda self: self._parse_compress(),
        - 622        "DEFAULT": lambda self: self.expression(
        - 623            exp.DefaultColumnConstraint, this=self._parse_bitwise()
        - 624        ),
        - 625        "ENCODE": lambda self: self.expression(exp.EncodeColumnConstraint, this=self._parse_var()),
        - 626        "FOREIGN KEY": lambda self: self._parse_foreign_key(),
        - 627        "FORMAT": lambda self: self.expression(
        - 628            exp.DateFormatColumnConstraint, this=self._parse_var_or_string()
        - 629        ),
        - 630        "GENERATED": lambda self: self._parse_generated_as_identity(),
        - 631        "IDENTITY": lambda self: self._parse_auto_increment(),
        - 632        "INLINE": lambda self: self._parse_inline(),
        - 633        "LIKE": lambda self: self._parse_create_like(),
        - 634        "NOT": lambda self: self._parse_not_constraint(),
        - 635        "NULL": lambda self: self.expression(exp.NotNullColumnConstraint, allow_null=True),
        - 636        "PATH": lambda self: self.expression(exp.PathColumnConstraint, this=self._parse_string()),
        - 637        "PRIMARY KEY": lambda self: self._parse_primary_key(),
        - 638        "TITLE": lambda self: self.expression(
        - 639            exp.TitleColumnConstraint, this=self._parse_var_or_string()
        - 640        ),
        - 641        "UNIQUE": lambda self: self._parse_unique(),
        - 642        "UPPERCASE": lambda self: self.expression(exp.UppercaseColumnConstraint),
        - 643    }
        - 644
        - 645    ALTER_PARSERS = {
        - 646        "ADD": lambda self: self._parse_alter_table_add(),
        - 647        "ALTER": lambda self: self._parse_alter_table_alter(),
        - 648        "DELETE": lambda self: self.expression(exp.Delete, where=self._parse_where()),
        - 649        "DROP": lambda self: self._parse_alter_table_drop(),
        - 650        "RENAME": lambda self: self._parse_alter_table_rename(),
        - 651    }
        - 652
        - 653    SCHEMA_UNNAMED_CONSTRAINTS = {"CHECK", "FOREIGN KEY", "LIKE", "PRIMARY KEY", "UNIQUE"}
        - 654
        - 655    NO_PAREN_FUNCTION_PARSERS = {
        - 656        TokenType.CASE: lambda self: self._parse_case(),
        - 657        TokenType.IF: lambda self: self._parse_if(),
        - 658        TokenType.ANY: lambda self: self.expression(exp.Any, this=self._parse_bitwise()),
        - 659    }
        - 660
        - 661    FUNCTION_PARSERS: t.Dict[str, t.Callable] = {
        - 662        "CAST": lambda self: self._parse_cast(self.STRICT_CAST),
        - 663        "CONVERT": lambda self: self._parse_convert(self.STRICT_CAST),
        - 664        "EXTRACT": lambda self: self._parse_extract(),
        - 665        "POSITION": lambda self: self._parse_position(),
        - 666        "STRING_AGG": lambda self: self._parse_string_agg(),
        - 667        "SUBSTRING": lambda self: self._parse_substring(),
        - 668        "TRIM": lambda self: self._parse_trim(),
        - 669        "TRY_CAST": lambda self: self._parse_cast(False),
        - 670        "TRY_CONVERT": lambda self: self._parse_convert(False),
        - 671    }
        - 672
        - 673    QUERY_MODIFIER_PARSERS = {
        - 674        "match": lambda self: self._parse_match_recognize(),
        - 675        "where": lambda self: self._parse_where(),
        - 676        "group": lambda self: self._parse_group(),
        - 677        "having": lambda self: self._parse_having(),
        - 678        "qualify": lambda self: self._parse_qualify(),
        - 679        "windows": lambda self: self._parse_window_clause(),
        - 680        "distribute": lambda self: self._parse_sort(TokenType.DISTRIBUTE_BY, exp.Distribute),
        - 681        "sort": lambda self: self._parse_sort(TokenType.SORT_BY, exp.Sort),
        - 682        "cluster": lambda self: self._parse_sort(TokenType.CLUSTER_BY, exp.Cluster),
        - 683        "order": lambda self: self._parse_order(),
        - 684        "limit": lambda self: self._parse_limit(),
        - 685        "offset": lambda self: self._parse_offset(),
        - 686        "lock": lambda self: self._parse_lock(),
        - 687        "sample": lambda self: self._parse_table_sample(as_modifier=True),
        - 688    }
        - 689
        - 690    SET_PARSERS = {
        - 691        "GLOBAL": lambda self: self._parse_set_item_assignment("GLOBAL"),
        - 692        "LOCAL": lambda self: self._parse_set_item_assignment("LOCAL"),
        - 693        "SESSION": lambda self: self._parse_set_item_assignment("SESSION"),
        - 694        "TRANSACTION": lambda self: self._parse_set_transaction(),
        - 695    }
        - 696
        - 697    SHOW_PARSERS: t.Dict[str, t.Callable] = {}
        - 698
        - 699    MODIFIABLES = (exp.Subquery, exp.Subqueryable, exp.Table)
        - 700
        - 701    TRANSACTION_KIND = {"DEFERRED", "IMMEDIATE", "EXCLUSIVE"}
        - 702
        - 703    TRANSACTION_CHARACTERISTICS = {
        - 704        "ISOLATION LEVEL REPEATABLE READ",
        - 705        "ISOLATION LEVEL READ COMMITTED",
        - 706        "ISOLATION LEVEL READ UNCOMMITTED",
        - 707        "ISOLATION LEVEL SERIALIZABLE",
        - 708        "READ WRITE",
        - 709        "READ ONLY",
        + 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"
        + 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")
        + 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()
        + 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        "EXTRACT": lambda self: self._parse_extract(),
        + 679        "JSON_OBJECT": lambda self: self._parse_json_object(),
        + 680        "POSITION": lambda self: self._parse_position(),
        + 681        "STRING_AGG": lambda self: self._parse_string_agg(),
        + 682        "SUBSTRING": lambda self: self._parse_substring(),
        + 683        "TRIM": lambda self: self._parse_trim(),
        + 684        "TRY_CAST": lambda self: self._parse_cast(False),
        + 685        "TRY_CONVERT": lambda self: self._parse_convert(False),
        + 686    }
        + 687
        + 688    QUERY_MODIFIER_PARSERS = {
        + 689        "match": lambda self: self._parse_match_recognize(),
        + 690        "where": lambda self: self._parse_where(),
        + 691        "group": lambda self: self._parse_group(),
        + 692        "having": lambda self: self._parse_having(),
        + 693        "qualify": lambda self: self._parse_qualify(),
        + 694        "windows": lambda self: self._parse_window_clause(),
        + 695        "distribute": lambda self: self._parse_sort(TokenType.DISTRIBUTE_BY, exp.Distribute),
        + 696        "sort": lambda self: self._parse_sort(TokenType.SORT_BY, exp.Sort),
        + 697        "cluster": lambda self: self._parse_sort(TokenType.CLUSTER_BY, exp.Cluster),
        + 698        "order": lambda self: self._parse_order(),
        + 699        "limit": lambda self: self._parse_limit(),
        + 700        "offset": lambda self: self._parse_offset(),
        + 701        "lock": lambda self: self._parse_lock(),
        + 702        "sample": lambda self: self._parse_table_sample(as_modifier=True),
        + 703    }
        + 704
        + 705    SET_PARSERS = {
        + 706        "GLOBAL": lambda self: self._parse_set_item_assignment("GLOBAL"),
        + 707        "LOCAL": lambda self: self._parse_set_item_assignment("LOCAL"),
        + 708        "SESSION": lambda self: self._parse_set_item_assignment("SESSION"),
        + 709        "TRANSACTION": lambda self: self._parse_set_transaction(),
          710    }
          711
        - 712    INSERT_ALTERNATIVES = {"ABORT", "FAIL", "IGNORE", "REPLACE", "ROLLBACK"}
        + 712    SHOW_PARSERS: t.Dict[str, t.Callable] = {}
          713
        - 714    WINDOW_ALIAS_TOKENS = ID_VAR_TOKENS - {TokenType.ROWS}
        + 714    MODIFIABLES = (exp.Subquery, exp.Subqueryable, exp.Table)
          715
        - 716    ADD_CONSTRAINT_TOKENS = {TokenType.CONSTRAINT, TokenType.PRIMARY_KEY, TokenType.FOREIGN_KEY}
        + 716    TRANSACTION_KIND = {"DEFERRED", "IMMEDIATE", "EXCLUSIVE"}
          717
        - 718    STRICT_CAST = True
        - 719
        - 720    CONVERT_TYPE_FIRST = False
        - 721
        - 722    __slots__ = (
        - 723        "error_level",
        - 724        "error_message_context",
        - 725        "sql",
        - 726        "errors",
        - 727        "index_offset",
        - 728        "unnest_column_only",
        - 729        "alias_post_tablesample",
        - 730        "max_errors",
        - 731        "null_ordering",
        - 732        "_tokens",
        - 733        "_index",
        - 734        "_curr",
        - 735        "_next",
        - 736        "_prev",
        - 737        "_prev_comments",
        - 738        "_show_trie",
        - 739        "_set_trie",
        - 740    )
        - 741
        - 742    def __init__(
        - 743        self,
        - 744        error_level: t.Optional[ErrorLevel] = None,
        - 745        error_message_context: int = 100,
        - 746        index_offset: int = 0,
        - 747        unnest_column_only: bool = False,
        - 748        alias_post_tablesample: bool = False,
        - 749        max_errors: int = 3,
        - 750        null_ordering: t.Optional[str] = None,
        - 751    ):
        - 752        self.error_level = error_level or ErrorLevel.IMMEDIATE
        - 753        self.error_message_context = error_message_context
        - 754        self.index_offset = index_offset
        - 755        self.unnest_column_only = unnest_column_only
        - 756        self.alias_post_tablesample = alias_post_tablesample
        - 757        self.max_errors = max_errors
        - 758        self.null_ordering = null_ordering
        - 759        self.reset()
        - 760
        - 761    def reset(self):
        - 762        self.sql = ""
        - 763        self.errors = []
        - 764        self._tokens = []
        - 765        self._index = 0
        - 766        self._curr = None
        - 767        self._next = None
        - 768        self._prev = None
        - 769        self._prev_comments = None
        - 770
        - 771    def parse(
        - 772        self, raw_tokens: t.List[Token], sql: t.Optional[str] = None
        - 773    ) -> t.List[t.Optional[exp.Expression]]:
        - 774        """
        - 775        Parses a list of tokens and returns a list of syntax trees, one tree
        - 776        per parsed SQL statement.
        - 777
        - 778        Args:
        - 779            raw_tokens: the list of tokens.
        - 780            sql: the original SQL string, used to produce helpful debug messages.
        - 781
        - 782        Returns:
        - 783            The list of syntax trees.
        - 784        """
        - 785        return self._parse(
        - 786            parse_method=self.__class__._parse_statement, raw_tokens=raw_tokens, sql=sql
        - 787        )
        - 788
        - 789    def parse_into(
        - 790        self,
        - 791        expression_types: exp.IntoType,
        - 792        raw_tokens: t.List[Token],
        - 793        sql: t.Optional[str] = None,
        - 794    ) -> t.List[t.Optional[exp.Expression]]:
        - 795        """
        - 796        Parses a list of tokens into a given Expression type. If a collection of Expression
        - 797        types is given instead, this method will try to parse the token list into each one
        - 798        of them, stopping at the first for which the parsing succeeds.
        - 799
        - 800        Args:
        - 801            expression_types: the expression type(s) to try and parse the token list into.
        - 802            raw_tokens: the list of tokens.
        - 803            sql: the original SQL string, used to produce helpful debug messages.
        - 804
        - 805        Returns:
        - 806            The target Expression.
        - 807        """
        - 808        errors = []
        - 809        for expression_type in ensure_collection(expression_types):
        - 810            parser = self.EXPRESSION_PARSERS.get(expression_type)
        - 811            if not parser:
        - 812                raise TypeError(f"No parser registered for {expression_type}")
        - 813            try:
        - 814                return self._parse(parser, raw_tokens, sql)
        - 815            except ParseError as e:
        - 816                e.errors[0]["into_expression"] = expression_type
        - 817                errors.append(e)
        - 818        raise ParseError(
        - 819            f"Failed to parse into {expression_types}",
        - 820            errors=merge_errors(errors),
        - 821        ) from errors[-1]
        - 822
        - 823    def _parse(
        - 824        self,
        - 825        parse_method: t.Callable[[Parser], t.Optional[exp.Expression]],
        - 826        raw_tokens: t.List[Token],
        - 827        sql: t.Optional[str] = None,
        - 828    ) -> t.List[t.Optional[exp.Expression]]:
        - 829        self.reset()
        - 830        self.sql = sql or ""
        - 831        total = len(raw_tokens)
        - 832        chunks: t.List[t.List[Token]] = [[]]
        - 833
        - 834        for i, token in enumerate(raw_tokens):
        - 835            if token.token_type == TokenType.SEMICOLON:
        - 836                if i < total - 1:
        - 837                    chunks.append([])
        - 838            else:
        - 839                chunks[-1].append(token)
        - 840
        - 841        expressions = []
        - 842
        - 843        for tokens in chunks:
        - 844            self._index = -1
        - 845            self._tokens = tokens
        - 846            self._advance()
        - 847
        - 848            expressions.append(parse_method(self))
        - 849
        - 850            if self._index < len(self._tokens):
        - 851                self.raise_error("Invalid expression / Unexpected token")
        - 852
        - 853            self.check_errors()
        - 854
        - 855        return expressions
        - 856
        - 857    def check_errors(self) -> None:
        - 858        """
        - 859        Logs or raises any found errors, depending on the chosen error level setting.
        - 860        """
        - 861        if self.error_level == ErrorLevel.WARN:
        - 862            for error in self.errors:
        - 863                logger.error(str(error))
        - 864        elif self.error_level == ErrorLevel.RAISE and self.errors:
        - 865            raise ParseError(
        - 866                concat_messages(self.errors, self.max_errors),
        - 867                errors=merge_errors(self.errors),
        - 868            )
        + 718    TRANSACTION_CHARACTERISTICS = {
        + 719        "ISOLATION LEVEL REPEATABLE READ",
        + 720        "ISOLATION LEVEL READ COMMITTED",
        + 721        "ISOLATION LEVEL READ UNCOMMITTED",
        + 722        "ISOLATION LEVEL SERIALIZABLE",
        + 723        "READ WRITE",
        + 724        "READ ONLY",
        + 725    }
        + 726
        + 727    INSERT_ALTERNATIVES = {"ABORT", "FAIL", "IGNORE", "REPLACE", "ROLLBACK"}
        + 728
        + 729    WINDOW_ALIAS_TOKENS = ID_VAR_TOKENS - {TokenType.ROWS}
        + 730
        + 731    ADD_CONSTRAINT_TOKENS = {TokenType.CONSTRAINT, TokenType.PRIMARY_KEY, TokenType.FOREIGN_KEY}
        + 732
        + 733    STRICT_CAST = True
        + 734
        + 735    CONVERT_TYPE_FIRST = False
        + 736
        + 737    __slots__ = (
        + 738        "error_level",
        + 739        "error_message_context",
        + 740        "sql",
        + 741        "errors",
        + 742        "index_offset",
        + 743        "unnest_column_only",
        + 744        "alias_post_tablesample",
        + 745        "max_errors",
        + 746        "null_ordering",
        + 747        "_tokens",
        + 748        "_index",
        + 749        "_curr",
        + 750        "_next",
        + 751        "_prev",
        + 752        "_prev_comments",
        + 753        "_show_trie",
        + 754        "_set_trie",
        + 755    )
        + 756
        + 757    def __init__(
        + 758        self,
        + 759        error_level: t.Optional[ErrorLevel] = None,
        + 760        error_message_context: int = 100,
        + 761        index_offset: int = 0,
        + 762        unnest_column_only: bool = False,
        + 763        alias_post_tablesample: bool = False,
        + 764        max_errors: int = 3,
        + 765        null_ordering: t.Optional[str] = None,
        + 766    ):
        + 767        self.error_level = error_level or ErrorLevel.IMMEDIATE
        + 768        self.error_message_context = error_message_context
        + 769        self.index_offset = index_offset
        + 770        self.unnest_column_only = unnest_column_only
        + 771        self.alias_post_tablesample = alias_post_tablesample
        + 772        self.max_errors = max_errors
        + 773        self.null_ordering = null_ordering
        + 774        self.reset()
        + 775
        + 776    def reset(self):
        + 777        self.sql = ""
        + 778        self.errors = []
        + 779        self._tokens = []
        + 780        self._index = 0
        + 781        self._curr = None
        + 782        self._next = None
        + 783        self._prev = None
        + 784        self._prev_comments = None
        + 785
        + 786    def parse(
        + 787        self, raw_tokens: t.List[Token], sql: t.Optional[str] = None
        + 788    ) -> t.List[t.Optional[exp.Expression]]:
        + 789        """
        + 790        Parses a list of tokens and returns a list of syntax trees, one tree
        + 791        per parsed SQL statement.
        + 792
        + 793        Args:
        + 794            raw_tokens: the list of tokens.
        + 795            sql: the original SQL string, used to produce helpful debug messages.
        + 796
        + 797        Returns:
        + 798            The list of syntax trees.
        + 799        """
        + 800        return self._parse(
        + 801            parse_method=self.__class__._parse_statement, raw_tokens=raw_tokens, sql=sql
        + 802        )
        + 803
        + 804    def parse_into(
        + 805        self,
        + 806        expression_types: exp.IntoType,
        + 807        raw_tokens: t.List[Token],
        + 808        sql: t.Optional[str] = None,
        + 809    ) -> t.List[t.Optional[exp.Expression]]:
        + 810        """
        + 811        Parses a list of tokens into a given Expression type. If a collection of Expression
        + 812        types is given instead, this method will try to parse the token list into each one
        + 813        of them, stopping at the first for which the parsing succeeds.
        + 814
        + 815        Args:
        + 816            expression_types: the expression type(s) to try and parse the token list into.
        + 817            raw_tokens: the list of tokens.
        + 818            sql: the original SQL string, used to produce helpful debug messages.
        + 819
        + 820        Returns:
        + 821            The target Expression.
        + 822        """
        + 823        errors = []
        + 824        for expression_type in ensure_collection(expression_types):
        + 825            parser = self.EXPRESSION_PARSERS.get(expression_type)
        + 826            if not parser:
        + 827                raise TypeError(f"No parser registered for {expression_type}")
        + 828            try:
        + 829                return self._parse(parser, raw_tokens, sql)
        + 830            except ParseError as e:
        + 831                e.errors[0]["into_expression"] = expression_type
        + 832                errors.append(e)
        + 833        raise ParseError(
        + 834            f"Failed to parse into {expression_types}",
        + 835            errors=merge_errors(errors),
        + 836        ) from errors[-1]
        + 837
        + 838    def _parse(
        + 839        self,
        + 840        parse_method: t.Callable[[Parser], t.Optional[exp.Expression]],
        + 841        raw_tokens: t.List[Token],
        + 842        sql: t.Optional[str] = None,
        + 843    ) -> t.List[t.Optional[exp.Expression]]:
        + 844        self.reset()
        + 845        self.sql = sql or ""
        + 846        total = len(raw_tokens)
        + 847        chunks: t.List[t.List[Token]] = [[]]
        + 848
        + 849        for i, token in enumerate(raw_tokens):
        + 850            if token.token_type == TokenType.SEMICOLON:
        + 851                if i < total - 1:
        + 852                    chunks.append([])
        + 853            else:
        + 854                chunks[-1].append(token)
        + 855
        + 856        expressions = []
        + 857
        + 858        for tokens in chunks:
        + 859            self._index = -1
        + 860            self._tokens = tokens
        + 861            self._advance()
        + 862
        + 863            expressions.append(parse_method(self))
        + 864
        + 865            if self._index < len(self._tokens):
        + 866                self.raise_error("Invalid expression / Unexpected token")
        + 867
        + 868            self.check_errors()
          869
        - 870    def raise_error(self, message: str, token: t.Optional[Token] = None) -> None:
        - 871        """
        - 872        Appends an error in the list of recorded errors or raises it, depending on the chosen
        - 873        error level setting.
        - 874        """
        - 875        token = token or self._curr or self._prev or Token.string("")
        - 876        start = self._find_token(token)
        - 877        end = start + len(token.text)
        - 878        start_context = self.sql[max(start - self.error_message_context, 0) : start]
        - 879        highlight = self.sql[start:end]
        - 880        end_context = self.sql[end : end + self.error_message_context]
        - 881
        - 882        error = ParseError.new(
        - 883            f"{message}. Line {token.line}, Col: {token.col}.\n"
        - 884            f"  {start_context}\033[4m{highlight}\033[0m{end_context}",
        - 885            description=message,
        - 886            line=token.line,
        - 887            col=token.col,
        - 888            start_context=start_context,
        - 889            highlight=highlight,
        - 890            end_context=end_context,
        - 891        )
        - 892
        - 893        if self.error_level == ErrorLevel.IMMEDIATE:
        - 894            raise error
        - 895
        - 896        self.errors.append(error)
        - 897
        - 898    def expression(
        - 899        self, exp_class: t.Type[exp.Expression], comments: t.Optional[t.List[str]] = None, **kwargs
        - 900    ) -> exp.Expression:
        - 901        """
        - 902        Creates a new, validated Expression.
        - 903
        - 904        Args:
        - 905            exp_class: the expression class to instantiate.
        - 906            comments: an optional list of comments to attach to the expression.
        - 907            kwargs: the arguments to set for the expression along with their respective values.
        - 908
        - 909        Returns:
        - 910            The target expression.
        - 911        """
        - 912        instance = exp_class(**kwargs)
        - 913        if self._prev_comments:
        - 914            instance.comments = self._prev_comments
        - 915            self._prev_comments = None
        - 916        if comments:
        - 917            instance.comments = comments
        - 918        self.validate_expression(instance)
        - 919        return instance
        - 920
        - 921    def validate_expression(
        - 922        self, expression: exp.Expression, args: t.Optional[t.List] = None
        - 923    ) -> None:
        - 924        """
        - 925        Validates an already instantiated expression, making sure that all its mandatory arguments
        - 926        are set.
        - 927
        - 928        Args:
        - 929            expression: the expression to validate.
        - 930            args: an optional list of items that was used to instantiate the expression, if it's a Func.
        - 931        """
        - 932        if self.error_level == ErrorLevel.IGNORE:
        - 933            return
        - 934
        - 935        for error_message in expression.error_messages(args):
        - 936            self.raise_error(error_message)
        - 937
        - 938    def _find_sql(self, start: Token, end: Token) -> str:
        - 939        return self.sql[self._find_token(start) : self._find_token(end) + len(end.text)]
        - 940
        - 941    def _find_token(self, token: Token) -> int:
        - 942        line = 1
        - 943        col = 1
        - 944        index = 0
        - 945
        - 946        while line < token.line or col < token.col:
        - 947            if Tokenizer.WHITE_SPACE.get(self.sql[index]) == TokenType.BREAK:
        - 948                line += 1
        - 949                col = 1
        - 950            else:
        - 951                col += 1
        - 952            index += 1
        - 953
        - 954        return index
        + 870        return expressions
        + 871
        + 872    def check_errors(self) -> None:
        + 873        """
        + 874        Logs or raises any found errors, depending on the chosen error level setting.
        + 875        """
        + 876        if self.error_level == ErrorLevel.WARN:
        + 877            for error in self.errors:
        + 878                logger.error(str(error))
        + 879        elif self.error_level == ErrorLevel.RAISE and self.errors:
        + 880            raise ParseError(
        + 881                concat_messages(self.errors, self.max_errors),
        + 882                errors=merge_errors(self.errors),
        + 883            )
        + 884
        + 885    def raise_error(self, message: str, token: t.Optional[Token] = None) -> None:
        + 886        """
        + 887        Appends an error in the list of recorded errors or raises it, depending on the chosen
        + 888        error level setting.
        + 889        """
        + 890        token = token or self._curr or self._prev or Token.string("")
        + 891        start = self._find_token(token)
        + 892        end = start + len(token.text)
        + 893        start_context = self.sql[max(start - self.error_message_context, 0) : start]
        + 894        highlight = self.sql[start:end]
        + 895        end_context = self.sql[end : end + self.error_message_context]
        + 896
        + 897        error = ParseError.new(
        + 898            f"{message}. Line {token.line}, Col: {token.col}.\n"
        + 899            f"  {start_context}\033[4m{highlight}\033[0m{end_context}",
        + 900            description=message,
        + 901            line=token.line,
        + 902            col=token.col,
        + 903            start_context=start_context,
        + 904            highlight=highlight,
        + 905            end_context=end_context,
        + 906        )
        + 907
        + 908        if self.error_level == ErrorLevel.IMMEDIATE:
        + 909            raise error
        + 910
        + 911        self.errors.append(error)
        + 912
        + 913    def expression(
        + 914        self, exp_class: t.Type[exp.Expression], comments: t.Optional[t.List[str]] = None, **kwargs
        + 915    ) -> exp.Expression:
        + 916        """
        + 917        Creates a new, validated Expression.
        + 918
        + 919        Args:
        + 920            exp_class: the expression class to instantiate.
        + 921            comments: an optional list of comments to attach to the expression.
        + 922            kwargs: the arguments to set for the expression along with their respective values.
        + 923
        + 924        Returns:
        + 925            The target expression.
        + 926        """
        + 927        instance = exp_class(**kwargs)
        + 928        if self._prev_comments:
        + 929            instance.comments = self._prev_comments
        + 930            self._prev_comments = None
        + 931        if comments:
        + 932            instance.comments = comments
        + 933        self.validate_expression(instance)
        + 934        return instance
        + 935
        + 936    def validate_expression(
        + 937        self, expression: exp.Expression, args: t.Optional[t.List] = None
        + 938    ) -> None:
        + 939        """
        + 940        Validates an already instantiated expression, making sure that all its mandatory arguments
        + 941        are set.
        + 942
        + 943        Args:
        + 944            expression: the expression to validate.
        + 945            args: an optional list of items that was used to instantiate the expression, if it's a Func.
        + 946        """
        + 947        if self.error_level == ErrorLevel.IGNORE:
        + 948            return
        + 949
        + 950        for error_message in expression.error_messages(args):
        + 951            self.raise_error(error_message)
        + 952
        + 953    def _find_sql(self, start: Token, end: Token) -> str:
        + 954        return self.sql[self._find_token(start) : self._find_token(end) + len(end.text)]
          955
        - 956    def _advance(self, times: int = 1) -> None:
        - 957        self._index += times
        - 958        self._curr = seq_get(self._tokens, self._index)
        - 959        self._next = seq_get(self._tokens, self._index + 1)
        - 960        if self._index > 0:
        - 961            self._prev = self._tokens[self._index - 1]
        - 962            self._prev_comments = self._prev.comments
        - 963        else:
        - 964            self._prev = None
        - 965            self._prev_comments = None
        - 966
        - 967    def _retreat(self, index: int) -> None:
        - 968        if index != self._index:
        - 969            self._advance(index - self._index)
        + 956    def _find_token(self, token: Token) -> int:
        + 957        line = 1
        + 958        col = 1
        + 959        index = 0
        + 960
        + 961        while line < token.line or col < token.col:
        + 962            if Tokenizer.WHITE_SPACE.get(self.sql[index]) == TokenType.BREAK:
        + 963                line += 1
        + 964                col = 1
        + 965            else:
        + 966                col += 1
        + 967            index += 1
        + 968
        + 969        return index
          970
        - 971    def _parse_command(self) -> exp.Expression:
        - 972        return self.expression(exp.Command, this=self._prev.text, expression=self._parse_string())
        - 973
        - 974    def _parse_comment(self, allow_exists: bool = True) -> exp.Expression:
        - 975        start = self._prev
        - 976        exists = self._parse_exists() if allow_exists else None
        - 977
        - 978        self._match(TokenType.ON)
        - 979
        - 980        kind = self._match_set(self.CREATABLES) and self._prev
        + 971    def _advance(self, times: int = 1) -> None:
        + 972        self._index += times
        + 973        self._curr = seq_get(self._tokens, self._index)
        + 974        self._next = seq_get(self._tokens, self._index + 1)
        + 975        if self._index > 0:
        + 976            self._prev = self._tokens[self._index - 1]
        + 977            self._prev_comments = self._prev.comments
        + 978        else:
        + 979            self._prev = None
        + 980            self._prev_comments = None
          981
        - 982        if not kind:
        - 983            return self._parse_as_command(start)
        - 984
        - 985        if kind.token_type in (TokenType.FUNCTION, TokenType.PROCEDURE):
        - 986            this = self._parse_user_defined_function(kind=kind.token_type)
        - 987        elif kind.token_type == TokenType.TABLE:
        - 988            this = self._parse_table()
        - 989        elif kind.token_type == TokenType.COLUMN:
        - 990            this = self._parse_column()
        - 991        else:
        - 992            this = self._parse_id_var()
        - 993
        - 994        self._match(TokenType.IS)
        - 995
        - 996        return self.expression(
        - 997            exp.Comment, this=this, kind=kind.text, expression=self._parse_string(), exists=exists
        - 998        )
        + 982    def _retreat(self, index: int) -> None:
        + 983        if index != self._index:
        + 984            self._advance(index - self._index)
        + 985
        + 986    def _parse_command(self) -> exp.Expression:
        + 987        return self.expression(exp.Command, this=self._prev.text, expression=self._parse_string())
        + 988
        + 989    def _parse_comment(self, allow_exists: bool = True) -> exp.Expression:
        + 990        start = self._prev
        + 991        exists = self._parse_exists() if allow_exists else None
        + 992
        + 993        self._match(TokenType.ON)
        + 994
        + 995        kind = self._match_set(self.CREATABLES) and self._prev
        + 996
        + 997        if not kind:
        + 998            return self._parse_as_command(start)
          999
        -1000    def _parse_statement(self) -> t.Optional[exp.Expression]:
        -1001        if self._curr is None:
        -1002            return None
        -1003
        -1004        if self._match_set(self.STATEMENT_PARSERS):
        -1005            return self.STATEMENT_PARSERS[self._prev.token_type](self)
        -1006
        -1007        if self._match_set(Tokenizer.COMMANDS):
        -1008            return self._parse_command()
        -1009
        -1010        expression = self._parse_expression()
        -1011        expression = self._parse_set_operations(expression) if expression else self._parse_select()
        -1012
        -1013        self._parse_query_modifiers(expression)
        -1014        return expression
        -1015
        -1016    def _parse_drop(self, default_kind: t.Optional[str] = None) -> t.Optional[exp.Expression]:
        -1017        start = self._prev
        -1018        temporary = self._match(TokenType.TEMPORARY)
        -1019        materialized = self._match(TokenType.MATERIALIZED)
        -1020        kind = self._match_set(self.CREATABLES) and self._prev.text
        -1021        if not kind:
        -1022            if default_kind:
        -1023                kind = default_kind
        -1024            else:
        -1025                return self._parse_as_command(start)
        -1026
        -1027        return self.expression(
        -1028            exp.Drop,
        -1029            exists=self._parse_exists(),
        -1030            this=self._parse_table(schema=True),
        -1031            kind=kind,
        -1032            temporary=temporary,
        -1033            materialized=materialized,
        -1034            cascade=self._match(TokenType.CASCADE),
        -1035        )
        -1036
        -1037    def _parse_exists(self, not_: bool = False) -> t.Optional[bool]:
        -1038        return (
        -1039            self._match(TokenType.IF)
        -1040            and (not not_ or self._match(TokenType.NOT))
        -1041            and self._match(TokenType.EXISTS)
        -1042        )
        -1043
        -1044    def _parse_create(self) -> t.Optional[exp.Expression]:
        -1045        start = self._prev
        -1046        replace = self._prev.text.upper() == "REPLACE" or self._match_pair(
        -1047            TokenType.OR, TokenType.REPLACE
        -1048        )
        -1049        unique = self._match(TokenType.UNIQUE)
        -1050        volatile = self._match(TokenType.VOLATILE)
        +1000        if kind.token_type in (TokenType.FUNCTION, TokenType.PROCEDURE):
        +1001            this = self._parse_user_defined_function(kind=kind.token_type)
        +1002        elif kind.token_type == TokenType.TABLE:
        +1003            this = self._parse_table()
        +1004        elif kind.token_type == TokenType.COLUMN:
        +1005            this = self._parse_column()
        +1006        else:
        +1007            this = self._parse_id_var()
        +1008
        +1009        self._match(TokenType.IS)
        +1010
        +1011        return self.expression(
        +1012            exp.Comment, this=this, kind=kind.text, expression=self._parse_string(), exists=exists
        +1013        )
        +1014
        +1015    def _parse_statement(self) -> t.Optional[exp.Expression]:
        +1016        if self._curr is None:
        +1017            return None
        +1018
        +1019        if self._match_set(self.STATEMENT_PARSERS):
        +1020            return self.STATEMENT_PARSERS[self._prev.token_type](self)
        +1021
        +1022        if self._match_set(Tokenizer.COMMANDS):
        +1023            return self._parse_command()
        +1024
        +1025        expression = self._parse_expression()
        +1026        expression = self._parse_set_operations(expression) if expression else self._parse_select()
        +1027
        +1028        self._parse_query_modifiers(expression)
        +1029        return expression
        +1030
        +1031    def _parse_drop(self, default_kind: t.Optional[str] = None) -> t.Optional[exp.Expression]:
        +1032        start = self._prev
        +1033        temporary = self._match(TokenType.TEMPORARY)
        +1034        materialized = self._match(TokenType.MATERIALIZED)
        +1035        kind = self._match_set(self.CREATABLES) and self._prev.text
        +1036        if not kind:
        +1037            if default_kind:
        +1038                kind = default_kind
        +1039            else:
        +1040                return self._parse_as_command(start)
        +1041
        +1042        return self.expression(
        +1043            exp.Drop,
        +1044            exists=self._parse_exists(),
        +1045            this=self._parse_table(schema=True),
        +1046            kind=kind,
        +1047            temporary=temporary,
        +1048            materialized=materialized,
        +1049            cascade=self._match(TokenType.CASCADE),
        +1050        )
         1051
        -1052        if self._match_pair(TokenType.TABLE, TokenType.FUNCTION, advance=False):
        -1053            self._match(TokenType.TABLE)
        -1054
        -1055        properties = None
        -1056        create_token = self._match_set(self.CREATABLES) and self._prev
        -1057
        -1058        if not create_token:
        -1059            properties = self._parse_properties()  # exp.Properties.Location.POST_CREATE
        -1060            create_token = self._match_set(self.CREATABLES) and self._prev
        -1061
        -1062            if not properties or not create_token:
        -1063                return self._parse_as_command(start)
        -1064
        -1065        exists = self._parse_exists(not_=True)
        -1066        this = None
        -1067        expression = None
        -1068        indexes = None
        -1069        no_schema_binding = None
        -1070        begin = None
        -1071
        -1072        if create_token.token_type in (TokenType.FUNCTION, TokenType.PROCEDURE):
        -1073            this = self._parse_user_defined_function(kind=create_token.token_type)
        -1074            temp_properties = self._parse_properties()
        -1075            if properties and temp_properties:
        -1076                properties.expressions.extend(temp_properties.expressions)
        -1077            elif temp_properties:
        -1078                properties = temp_properties
        +1052    def _parse_exists(self, not_: bool = False) -> t.Optional[bool]:
        +1053        return (
        +1054            self._match(TokenType.IF)
        +1055            and (not not_ or self._match(TokenType.NOT))
        +1056            and self._match(TokenType.EXISTS)
        +1057        )
        +1058
        +1059    def _parse_create(self) -> t.Optional[exp.Expression]:
        +1060        start = self._prev
        +1061        replace = self._prev.text.upper() == "REPLACE" or self._match_pair(
        +1062            TokenType.OR, TokenType.REPLACE
        +1063        )
        +1064        unique = self._match(TokenType.UNIQUE)
        +1065        volatile = self._match(TokenType.VOLATILE)
        +1066
        +1067        if self._match_pair(TokenType.TABLE, TokenType.FUNCTION, advance=False):
        +1068            self._match(TokenType.TABLE)
        +1069
        +1070        properties = None
        +1071        create_token = self._match_set(self.CREATABLES) and self._prev
        +1072
        +1073        if not create_token:
        +1074            properties = self._parse_properties()  # exp.Properties.Location.POST_CREATE
        +1075            create_token = self._match_set(self.CREATABLES) and self._prev
        +1076
        +1077            if not properties or not create_token:
        +1078                return self._parse_as_command(start)
         1079
        -1080            self._match(TokenType.ALIAS)
        -1081            begin = self._match(TokenType.BEGIN)
        -1082            return_ = self._match_text_seq("RETURN")
        -1083            expression = self._parse_statement()
        -1084
        -1085            if return_:
        -1086                expression = self.expression(exp.Return, this=expression)
        -1087        elif create_token.token_type == TokenType.INDEX:
        -1088            this = self._parse_index()
        -1089        elif create_token.token_type in self.DB_CREATABLES:
        -1090            table_parts = self._parse_table_parts(schema=True)
        -1091
        -1092            # exp.Properties.Location.POST_NAME
        -1093            if self._match(TokenType.COMMA):
        -1094                temp_properties = self._parse_properties(before=True)
        -1095                if properties and temp_properties:
        -1096                    properties.expressions.extend(temp_properties.expressions)
        -1097                elif temp_properties:
        -1098                    properties = temp_properties
        +1080        exists = self._parse_exists(not_=True)
        +1081        this = None
        +1082        expression = None
        +1083        indexes = None
        +1084        no_schema_binding = None
        +1085        begin = None
        +1086
        +1087        if create_token.token_type in (TokenType.FUNCTION, TokenType.PROCEDURE):
        +1088            this = self._parse_user_defined_function(kind=create_token.token_type)
        +1089            temp_properties = self._parse_properties()
        +1090            if properties and temp_properties:
        +1091                properties.expressions.extend(temp_properties.expressions)
        +1092            elif temp_properties:
        +1093                properties = temp_properties
        +1094
        +1095            self._match(TokenType.ALIAS)
        +1096            begin = self._match(TokenType.BEGIN)
        +1097            return_ = self._match_text_seq("RETURN")
        +1098            expression = self._parse_statement()
         1099
        -1100            this = self._parse_schema(this=table_parts)
        -1101
        -1102            # exp.Properties.Location.POST_SCHEMA and POST_WITH
        -1103            temp_properties = self._parse_properties()
        -1104            if properties and temp_properties:
        -1105                properties.expressions.extend(temp_properties.expressions)
        -1106            elif temp_properties:
        -1107                properties = temp_properties
        -1108
        -1109            self._match(TokenType.ALIAS)
        -1110
        -1111            # exp.Properties.Location.POST_ALIAS
        -1112            if not (
        -1113                self._match(TokenType.SELECT, advance=False)
        -1114                or self._match(TokenType.WITH, advance=False)
        -1115                or self._match(TokenType.L_PAREN, advance=False)
        -1116            ):
        -1117                temp_properties = self._parse_properties()
        -1118                if properties and temp_properties:
        -1119                    properties.expressions.extend(temp_properties.expressions)
        -1120                elif temp_properties:
        -1121                    properties = temp_properties
        -1122
        -1123            expression = self._parse_ddl_select()
        -1124
        -1125            if create_token.token_type == TokenType.TABLE:
        -1126                # exp.Properties.Location.POST_EXPRESSION
        -1127                temp_properties = self._parse_properties()
        -1128                if properties and temp_properties:
        -1129                    properties.expressions.extend(temp_properties.expressions)
        -1130                elif temp_properties:
        -1131                    properties = temp_properties
        -1132
        -1133                indexes = []
        -1134                while True:
        -1135                    index = self._parse_create_table_index()
        -1136
        -1137                    # exp.Properties.Location.POST_INDEX
        -1138                    if self._match(TokenType.PARTITION_BY, advance=False):
        -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                    if not index:
        -1146                        break
        -1147                    else:
        -1148                        indexes.append(index)
        -1149            elif create_token.token_type == TokenType.VIEW:
        -1150                if self._match_text_seq("WITH", "NO", "SCHEMA", "BINDING"):
        -1151                    no_schema_binding = True
        -1152
        -1153        return self.expression(
        -1154            exp.Create,
        -1155            this=this,
        -1156            kind=create_token.text,
        -1157            replace=replace,
        -1158            unique=unique,
        -1159            volatile=volatile,
        -1160            expression=expression,
        -1161            exists=exists,
        -1162            properties=properties,
        -1163            indexes=indexes,
        -1164            no_schema_binding=no_schema_binding,
        -1165            begin=begin,
        -1166        )
        +1100            if return_:
        +1101                expression = self.expression(exp.Return, this=expression)
        +1102        elif create_token.token_type == TokenType.INDEX:
        +1103            this = self._parse_index()
        +1104        elif create_token.token_type in self.DB_CREATABLES:
        +1105            table_parts = self._parse_table_parts(schema=True)
        +1106
        +1107            # exp.Properties.Location.POST_NAME
        +1108            if self._match(TokenType.COMMA):
        +1109                temp_properties = self._parse_properties(before=True)
        +1110                if properties and temp_properties:
        +1111                    properties.expressions.extend(temp_properties.expressions)
        +1112                elif temp_properties:
        +1113                    properties = temp_properties
        +1114
        +1115            this = self._parse_schema(this=table_parts)
        +1116
        +1117            # exp.Properties.Location.POST_SCHEMA and POST_WITH
        +1118            temp_properties = self._parse_properties()
        +1119            if properties and temp_properties:
        +1120                properties.expressions.extend(temp_properties.expressions)
        +1121            elif temp_properties:
        +1122                properties = temp_properties
        +1123
        +1124            self._match(TokenType.ALIAS)
        +1125
        +1126            # exp.Properties.Location.POST_ALIAS
        +1127            if not (
        +1128                self._match(TokenType.SELECT, advance=False)
        +1129                or self._match(TokenType.WITH, advance=False)
        +1130                or self._match(TokenType.L_PAREN, advance=False)
        +1131            ):
        +1132                temp_properties = self._parse_properties()
        +1133                if properties and temp_properties:
        +1134                    properties.expressions.extend(temp_properties.expressions)
        +1135                elif temp_properties:
        +1136                    properties = temp_properties
        +1137
        +1138            expression = self._parse_ddl_select()
        +1139
        +1140            if create_token.token_type == TokenType.TABLE:
        +1141                # exp.Properties.Location.POST_EXPRESSION
        +1142                temp_properties = self._parse_properties()
        +1143                if properties and temp_properties:
        +1144                    properties.expressions.extend(temp_properties.expressions)
        +1145                elif temp_properties:
        +1146                    properties = temp_properties
        +1147
        +1148                indexes = []
        +1149                while True:
        +1150                    index = self._parse_create_table_index()
        +1151
        +1152                    # exp.Properties.Location.POST_INDEX
        +1153                    if self._match(TokenType.PARTITION_BY, advance=False):
        +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                    if not index:
        +1161                        break
        +1162                    else:
        +1163                        indexes.append(index)
        +1164            elif create_token.token_type == TokenType.VIEW:
        +1165                if self._match_text_seq("WITH", "NO", "SCHEMA", "BINDING"):
        +1166                    no_schema_binding = True
         1167
        -1168    def _parse_property_before(self) -> t.Optional[exp.Expression]:
        -1169        self._match(TokenType.COMMA)
        -1170
        -1171        # parsers look to _prev for no/dual/default, so need to consume first
        -1172        self._match_text_seq("NO")
        -1173        self._match_text_seq("DUAL")
        -1174        self._match_text_seq("DEFAULT")
        -1175
        -1176        if self.PROPERTY_PARSERS.get(self._curr.text.upper()):
        -1177            return self.PROPERTY_PARSERS[self._curr.text.upper()](self)
        -1178
        -1179        return None
        -1180
        -1181    def _parse_property(self) -> t.Optional[exp.Expression]:
        -1182        if self._match_texts(self.PROPERTY_PARSERS):
        -1183            return self.PROPERTY_PARSERS[self._prev.text.upper()](self)
        -1184
        -1185        if self._match_pair(TokenType.DEFAULT, TokenType.CHARACTER_SET):
        -1186            return self._parse_character_set(default=True)
        -1187
        -1188        if self._match_pair(TokenType.COMPOUND, TokenType.SORTKEY):
        -1189            return self._parse_sortkey(compound=True)
        +1168        return self.expression(
        +1169            exp.Create,
        +1170            this=this,
        +1171            kind=create_token.text,
        +1172            replace=replace,
        +1173            unique=unique,
        +1174            volatile=volatile,
        +1175            expression=expression,
        +1176            exists=exists,
        +1177            properties=properties,
        +1178            indexes=indexes,
        +1179            no_schema_binding=no_schema_binding,
        +1180            begin=begin,
        +1181        )
        +1182
        +1183    def _parse_property_before(self) -> t.Optional[exp.Expression]:
        +1184        self._match(TokenType.COMMA)
        +1185
        +1186        # parsers look to _prev for no/dual/default, so need to consume first
        +1187        self._match_text_seq("NO")
        +1188        self._match_text_seq("DUAL")
        +1189        self._match_text_seq("DEFAULT")
         1190
        -1191        if self._match_text_seq("SQL", "SECURITY"):
        -1192            return self.expression(exp.SqlSecurityProperty, definer=self._match_text_seq("DEFINER"))
        +1191        if self.PROPERTY_PARSERS.get(self._curr.text.upper()):
        +1192            return self.PROPERTY_PARSERS[self._curr.text.upper()](self)
         1193
        -1194        assignment = self._match_pair(
        -1195            TokenType.VAR, TokenType.EQ, advance=False
        -1196        ) or self._match_pair(TokenType.STRING, TokenType.EQ, advance=False)
        -1197
        -1198        if assignment:
        -1199            key = self._parse_var_or_string()
        -1200            self._match(TokenType.EQ)
        -1201            return self.expression(exp.Property, this=key, value=self._parse_column())
        +1194        return None
        +1195
        +1196    def _parse_property(self) -> t.Optional[exp.Expression]:
        +1197        if self._match_texts(self.PROPERTY_PARSERS):
        +1198            return self.PROPERTY_PARSERS[self._prev.text.upper()](self)
        +1199
        +1200        if self._match_pair(TokenType.DEFAULT, TokenType.CHARACTER_SET):
        +1201            return self._parse_character_set(default=True)
         1202
        -1203        return None
        -1204
        -1205    def _parse_property_assignment(self, exp_class: t.Type[exp.Expression]) -> exp.Expression:
        -1206        self._match(TokenType.EQ)
        -1207        self._match(TokenType.ALIAS)
        -1208        return self.expression(
        -1209            exp_class,
        -1210            this=self._parse_var_or_string() or self._parse_number() or self._parse_id_var(),
        -1211        )
        +1203        if self._match_pair(TokenType.COMPOUND, TokenType.SORTKEY):
        +1204            return self._parse_sortkey(compound=True)
        +1205
        +1206        if self._match_text_seq("SQL", "SECURITY"):
        +1207            return self.expression(exp.SqlSecurityProperty, definer=self._match_text_seq("DEFINER"))
        +1208
        +1209        assignment = self._match_pair(
        +1210            TokenType.VAR, TokenType.EQ, advance=False
        +1211        ) or self._match_pair(TokenType.STRING, TokenType.EQ, advance=False)
         1212
        -1213    def _parse_properties(self, before=None) -> t.Optional[exp.Expression]:
        -1214        properties = []
        -1215
        -1216        while True:
        -1217            if before:
        -1218                identified_property = self._parse_property_before()
        -1219            else:
        -1220                identified_property = self._parse_property()
        -1221
        -1222            if not identified_property:
        -1223                break
        -1224            for p in ensure_collection(identified_property):
        -1225                properties.append(p)
        -1226
        -1227        if properties:
        -1228            return self.expression(exp.Properties, expressions=properties)
        -1229
        -1230        return None
        -1231
        -1232    def _parse_fallback(self, no=False) -> exp.Expression:
        -1233        self._match_text_seq("FALLBACK")
        -1234        return self.expression(
        -1235            exp.FallbackProperty, no=no, protection=self._match_text_seq("PROTECTION")
        -1236        )
        -1237
        -1238    def _parse_with_property(
        -1239        self,
        -1240    ) -> t.Union[t.Optional[exp.Expression], t.List[t.Optional[exp.Expression]]]:
        -1241        self._match(TokenType.WITH)
        -1242        if self._match(TokenType.L_PAREN, advance=False):
        -1243            return self._parse_wrapped_csv(self._parse_property)
        +1213        if assignment:
        +1214            key = self._parse_var_or_string()
        +1215            self._match(TokenType.EQ)
        +1216            return self.expression(exp.Property, this=key, value=self._parse_column())
        +1217
        +1218        return None
        +1219
        +1220    def _parse_property_assignment(self, exp_class: t.Type[exp.Expression]) -> exp.Expression:
        +1221        self._match(TokenType.EQ)
        +1222        self._match(TokenType.ALIAS)
        +1223        return self.expression(
        +1224            exp_class,
        +1225            this=self._parse_var_or_string() or self._parse_number() or self._parse_id_var(),
        +1226        )
        +1227
        +1228    def _parse_properties(self, before=None) -> t.Optional[exp.Expression]:
        +1229        properties = []
        +1230
        +1231        while True:
        +1232            if before:
        +1233                identified_property = self._parse_property_before()
        +1234            else:
        +1235                identified_property = self._parse_property()
        +1236
        +1237            if not identified_property:
        +1238                break
        +1239            for p in ensure_list(identified_property):
        +1240                properties.append(p)
        +1241
        +1242        if properties:
        +1243            return self.expression(exp.Properties, expressions=properties)
         1244
        -1245        if self._match_text_seq("JOURNAL"):
        -1246            return self._parse_withjournaltable()
        -1247
        -1248        if self._match_text_seq("DATA"):
        -1249            return self._parse_withdata(no=False)
        -1250        elif self._match_text_seq("NO", "DATA"):
        -1251            return self._parse_withdata(no=True)
        +1245        return None
        +1246
        +1247    def _parse_fallback(self, no=False) -> exp.Expression:
        +1248        self._match_text_seq("FALLBACK")
        +1249        return self.expression(
        +1250            exp.FallbackProperty, no=no, protection=self._match_text_seq("PROTECTION")
        +1251        )
         1252
        -1253        if not self._next:
        -1254            return None
        -1255
        -1256        return self._parse_withisolatedloading()
        -1257
        -1258    # https://dev.mysql.com/doc/refman/8.0/en/create-view.html
        -1259    def _parse_definer(self) -> t.Optional[exp.Expression]:
        -1260        self._match(TokenType.EQ)
        -1261
        -1262        user = self._parse_id_var()
        -1263        self._match(TokenType.PARAMETER)
        -1264        host = self._parse_id_var() or (self._match(TokenType.MOD) and self._prev.text)
        -1265
        -1266        if not user or not host:
        -1267            return None
        -1268
        -1269        return exp.DefinerProperty(this=f"{user}@{host}")
        +1253    def _parse_with_property(
        +1254        self,
        +1255    ) -> t.Union[t.Optional[exp.Expression], t.List[t.Optional[exp.Expression]]]:
        +1256        self._match(TokenType.WITH)
        +1257        if self._match(TokenType.L_PAREN, advance=False):
        +1258            return self._parse_wrapped_csv(self._parse_property)
        +1259
        +1260        if self._match_text_seq("JOURNAL"):
        +1261            return self._parse_withjournaltable()
        +1262
        +1263        if self._match_text_seq("DATA"):
        +1264            return self._parse_withdata(no=False)
        +1265        elif self._match_text_seq("NO", "DATA"):
        +1266            return self._parse_withdata(no=True)
        +1267
        +1268        if not self._next:
        +1269            return None
         1270
        -1271    def _parse_withjournaltable(self) -> exp.Expression:
        -1272        self._match(TokenType.TABLE)
        -1273        self._match(TokenType.EQ)
        -1274        return self.expression(exp.WithJournalTableProperty, this=self._parse_table_parts())
        -1275
        -1276    def _parse_log(self, no=False) -> exp.Expression:
        -1277        self._match_text_seq("LOG")
        -1278        return self.expression(exp.LogProperty, no=no)
        -1279
        -1280    def _parse_journal(self, no=False, dual=False) -> exp.Expression:
        -1281        before = self._match_text_seq("BEFORE")
        -1282        self._match_text_seq("JOURNAL")
        -1283        return self.expression(exp.JournalProperty, no=no, dual=dual, before=before)
        -1284
        -1285    def _parse_afterjournal(self, no=False, dual=False, local=None) -> exp.Expression:
        -1286        self._match_text_seq("NOT")
        -1287        self._match_text_seq("LOCAL")
        -1288        self._match_text_seq("AFTER", "JOURNAL")
        -1289        return self.expression(exp.AfterJournalProperty, no=no, dual=dual, local=local)
        +1271        return self._parse_withisolatedloading()
        +1272
        +1273    # https://dev.mysql.com/doc/refman/8.0/en/create-view.html
        +1274    def _parse_definer(self) -> t.Optional[exp.Expression]:
        +1275        self._match(TokenType.EQ)
        +1276
        +1277        user = self._parse_id_var()
        +1278        self._match(TokenType.PARAMETER)
        +1279        host = self._parse_id_var() or (self._match(TokenType.MOD) and self._prev.text)
        +1280
        +1281        if not user or not host:
        +1282            return None
        +1283
        +1284        return exp.DefinerProperty(this=f"{user}@{host}")
        +1285
        +1286    def _parse_withjournaltable(self) -> exp.Expression:
        +1287        self._match(TokenType.TABLE)
        +1288        self._match(TokenType.EQ)
        +1289        return self.expression(exp.WithJournalTableProperty, this=self._parse_table_parts())
         1290
        -1291    def _parse_checksum(self) -> exp.Expression:
        -1292        self._match_text_seq("CHECKSUM")
        -1293        self._match(TokenType.EQ)
        +1291    def _parse_log(self, no=False) -> exp.Expression:
        +1292        self._match_text_seq("LOG")
        +1293        return self.expression(exp.LogProperty, no=no)
         1294
        -1295        on = None
        -1296        if self._match(TokenType.ON):
        -1297            on = True
        -1298        elif self._match_text_seq("OFF"):
        -1299            on = False
        -1300        default = self._match(TokenType.DEFAULT)
        -1301
        -1302        return self.expression(
        -1303            exp.ChecksumProperty,
        -1304            on=on,
        -1305            default=default,
        -1306        )
        -1307
        -1308    def _parse_freespace(self) -> exp.Expression:
        -1309        self._match_text_seq("FREESPACE")
        -1310        self._match(TokenType.EQ)
        -1311        return self.expression(
        -1312            exp.FreespaceProperty, this=self._parse_number(), percent=self._match(TokenType.PERCENT)
        -1313        )
        -1314
        -1315    def _parse_mergeblockratio(self, no=False, default=False) -> exp.Expression:
        -1316        self._match_text_seq("MERGEBLOCKRATIO")
        -1317        if self._match(TokenType.EQ):
        -1318            return self.expression(
        -1319                exp.MergeBlockRatioProperty,
        -1320                this=self._parse_number(),
        -1321                percent=self._match(TokenType.PERCENT),
        -1322            )
        -1323        else:
        -1324            return self.expression(
        -1325                exp.MergeBlockRatioProperty,
        -1326                no=no,
        -1327                default=default,
        -1328            )
        +1295    def _parse_journal(self, no=False, dual=False) -> exp.Expression:
        +1296        before = self._match_text_seq("BEFORE")
        +1297        self._match_text_seq("JOURNAL")
        +1298        return self.expression(exp.JournalProperty, no=no, dual=dual, before=before)
        +1299
        +1300    def _parse_afterjournal(self, no=False, dual=False, local=None) -> exp.Expression:
        +1301        self._match_text_seq("NOT")
        +1302        self._match_text_seq("LOCAL")
        +1303        self._match_text_seq("AFTER", "JOURNAL")
        +1304        return self.expression(exp.AfterJournalProperty, no=no, dual=dual, local=local)
        +1305
        +1306    def _parse_checksum(self) -> exp.Expression:
        +1307        self._match_text_seq("CHECKSUM")
        +1308        self._match(TokenType.EQ)
        +1309
        +1310        on = None
        +1311        if self._match(TokenType.ON):
        +1312            on = True
        +1313        elif self._match_text_seq("OFF"):
        +1314            on = False
        +1315        default = self._match(TokenType.DEFAULT)
        +1316
        +1317        return self.expression(
        +1318            exp.ChecksumProperty,
        +1319            on=on,
        +1320            default=default,
        +1321        )
        +1322
        +1323    def _parse_freespace(self) -> exp.Expression:
        +1324        self._match_text_seq("FREESPACE")
        +1325        self._match(TokenType.EQ)
        +1326        return self.expression(
        +1327            exp.FreespaceProperty, this=self._parse_number(), percent=self._match(TokenType.PERCENT)
        +1328        )
         1329
        -1330    def _parse_datablocksize(self, default=None) -> exp.Expression:
        -1331        if default:
        -1332            self._match_text_seq("DATABLOCKSIZE")
        -1333            return self.expression(exp.DataBlocksizeProperty, default=True)
        -1334        elif self._match_texts(("MIN", "MINIMUM")):
        -1335            self._match_text_seq("DATABLOCKSIZE")
        -1336            return self.expression(exp.DataBlocksizeProperty, min=True)
        -1337        elif self._match_texts(("MAX", "MAXIMUM")):
        -1338            self._match_text_seq("DATABLOCKSIZE")
        -1339            return self.expression(exp.DataBlocksizeProperty, min=False)
        -1340
        -1341        self._match_text_seq("DATABLOCKSIZE")
        -1342        self._match(TokenType.EQ)
        -1343        size = self._parse_number()
        -1344        units = None
        -1345        if self._match_texts(("BYTES", "KBYTES", "KILOBYTES")):
        -1346            units = self._prev.text
        -1347        return self.expression(exp.DataBlocksizeProperty, size=size, units=units)
        -1348
        -1349    def _parse_blockcompression(self) -> exp.Expression:
        -1350        self._match_text_seq("BLOCKCOMPRESSION")
        -1351        self._match(TokenType.EQ)
        -1352        always = self._match_text_seq("ALWAYS")
        -1353        manual = self._match_text_seq("MANUAL")
        -1354        never = self._match_text_seq("NEVER")
        -1355        default = self._match_text_seq("DEFAULT")
        -1356        autotemp = None
        -1357        if self._match_text_seq("AUTOTEMP"):
        -1358            autotemp = self._parse_schema()
        -1359
        -1360        return self.expression(
        -1361            exp.BlockCompressionProperty,
        -1362            always=always,
        -1363            manual=manual,
        -1364            never=never,
        -1365            default=default,
        -1366            autotemp=autotemp,
        -1367        )
        -1368
        -1369    def _parse_withisolatedloading(self) -> exp.Expression:
        -1370        no = self._match_text_seq("NO")
        -1371        concurrent = self._match_text_seq("CONCURRENT")
        -1372        self._match_text_seq("ISOLATED", "LOADING")
        -1373        for_all = self._match_text_seq("FOR", "ALL")
        -1374        for_insert = self._match_text_seq("FOR", "INSERT")
        -1375        for_none = self._match_text_seq("FOR", "NONE")
        -1376        return self.expression(
        -1377            exp.IsolatedLoadingProperty,
        -1378            no=no,
        -1379            concurrent=concurrent,
        -1380            for_all=for_all,
        -1381            for_insert=for_insert,
        -1382            for_none=for_none,
        -1383        )
        -1384
        -1385    def _parse_locking(self) -> exp.Expression:
        -1386        if self._match(TokenType.TABLE):
        -1387            kind = "TABLE"
        -1388        elif self._match(TokenType.VIEW):
        -1389            kind = "VIEW"
        -1390        elif self._match(TokenType.ROW):
        -1391            kind = "ROW"
        -1392        elif self._match_text_seq("DATABASE"):
        -1393            kind = "DATABASE"
        -1394        else:
        -1395            kind = None
        -1396
        -1397        if kind in ("DATABASE", "TABLE", "VIEW"):
        -1398            this = self._parse_table_parts()
        -1399        else:
        -1400            this = None
        -1401
        -1402        if self._match(TokenType.FOR):
        -1403            for_or_in = "FOR"
        -1404        elif self._match(TokenType.IN):
        -1405            for_or_in = "IN"
        -1406        else:
        -1407            for_or_in = None
        -1408
        -1409        if self._match_text_seq("ACCESS"):
        -1410            lock_type = "ACCESS"
        -1411        elif self._match_texts(("EXCL", "EXCLUSIVE")):
        -1412            lock_type = "EXCLUSIVE"
        -1413        elif self._match_text_seq("SHARE"):
        -1414            lock_type = "SHARE"
        -1415        elif self._match_text_seq("READ"):
        -1416            lock_type = "READ"
        -1417        elif self._match_text_seq("WRITE"):
        -1418            lock_type = "WRITE"
        -1419        elif self._match_text_seq("CHECKSUM"):
        -1420            lock_type = "CHECKSUM"
        +1330    def _parse_mergeblockratio(self, no=False, default=False) -> exp.Expression:
        +1331        self._match_text_seq("MERGEBLOCKRATIO")
        +1332        if self._match(TokenType.EQ):
        +1333            return self.expression(
        +1334                exp.MergeBlockRatioProperty,
        +1335                this=self._parse_number(),
        +1336                percent=self._match(TokenType.PERCENT),
        +1337            )
        +1338        else:
        +1339            return self.expression(
        +1340                exp.MergeBlockRatioProperty,
        +1341                no=no,
        +1342                default=default,
        +1343            )
        +1344
        +1345    def _parse_datablocksize(self, default=None) -> exp.Expression:
        +1346        if default:
        +1347            self._match_text_seq("DATABLOCKSIZE")
        +1348            return self.expression(exp.DataBlocksizeProperty, default=True)
        +1349        elif self._match_texts(("MIN", "MINIMUM")):
        +1350            self._match_text_seq("DATABLOCKSIZE")
        +1351            return self.expression(exp.DataBlocksizeProperty, min=True)
        +1352        elif self._match_texts(("MAX", "MAXIMUM")):
        +1353            self._match_text_seq("DATABLOCKSIZE")
        +1354            return self.expression(exp.DataBlocksizeProperty, min=False)
        +1355
        +1356        self._match_text_seq("DATABLOCKSIZE")
        +1357        self._match(TokenType.EQ)
        +1358        size = self._parse_number()
        +1359        units = None
        +1360        if self._match_texts(("BYTES", "KBYTES", "KILOBYTES")):
        +1361            units = self._prev.text
        +1362        return self.expression(exp.DataBlocksizeProperty, size=size, units=units)
        +1363
        +1364    def _parse_blockcompression(self) -> exp.Expression:
        +1365        self._match_text_seq("BLOCKCOMPRESSION")
        +1366        self._match(TokenType.EQ)
        +1367        always = self._match_text_seq("ALWAYS")
        +1368        manual = self._match_text_seq("MANUAL")
        +1369        never = self._match_text_seq("NEVER")
        +1370        default = self._match_text_seq("DEFAULT")
        +1371        autotemp = None
        +1372        if self._match_text_seq("AUTOTEMP"):
        +1373            autotemp = self._parse_schema()
        +1374
        +1375        return self.expression(
        +1376            exp.BlockCompressionProperty,
        +1377            always=always,
        +1378            manual=manual,
        +1379            never=never,
        +1380            default=default,
        +1381            autotemp=autotemp,
        +1382        )
        +1383
        +1384    def _parse_withisolatedloading(self) -> exp.Expression:
        +1385        no = self._match_text_seq("NO")
        +1386        concurrent = self._match_text_seq("CONCURRENT")
        +1387        self._match_text_seq("ISOLATED", "LOADING")
        +1388        for_all = self._match_text_seq("FOR", "ALL")
        +1389        for_insert = self._match_text_seq("FOR", "INSERT")
        +1390        for_none = self._match_text_seq("FOR", "NONE")
        +1391        return self.expression(
        +1392            exp.IsolatedLoadingProperty,
        +1393            no=no,
        +1394            concurrent=concurrent,
        +1395            for_all=for_all,
        +1396            for_insert=for_insert,
        +1397            for_none=for_none,
        +1398        )
        +1399
        +1400    def _parse_locking(self) -> exp.Expression:
        +1401        if self._match(TokenType.TABLE):
        +1402            kind = "TABLE"
        +1403        elif self._match(TokenType.VIEW):
        +1404            kind = "VIEW"
        +1405        elif self._match(TokenType.ROW):
        +1406            kind = "ROW"
        +1407        elif self._match_text_seq("DATABASE"):
        +1408            kind = "DATABASE"
        +1409        else:
        +1410            kind = None
        +1411
        +1412        if kind in ("DATABASE", "TABLE", "VIEW"):
        +1413            this = self._parse_table_parts()
        +1414        else:
        +1415            this = None
        +1416
        +1417        if self._match(TokenType.FOR):
        +1418            for_or_in = "FOR"
        +1419        elif self._match(TokenType.IN):
        +1420            for_or_in = "IN"
         1421        else:
        -1422            lock_type = None
        +1422            for_or_in = None
         1423
        -1424        override = self._match_text_seq("OVERRIDE")
        -1425
        -1426        return self.expression(
        -1427            exp.LockingProperty,
        -1428            this=this,
        -1429            kind=kind,
        -1430            for_or_in=for_or_in,
        -1431            lock_type=lock_type,
        -1432            override=override,
        -1433        )
        -1434
        -1435    def _parse_partition_by(self) -> t.List[t.Optional[exp.Expression]]:
        -1436        if self._match(TokenType.PARTITION_BY):
        -1437            return self._parse_csv(self._parse_conjunction)
        -1438        return []
        -1439
        -1440    def _parse_partitioned_by(self) -> exp.Expression:
        -1441        self._match(TokenType.EQ)
        -1442        return self.expression(
        -1443            exp.PartitionedByProperty,
        -1444            this=self._parse_schema() or self._parse_bracket(self._parse_field()),
        -1445        )
        -1446
        -1447    def _parse_withdata(self, no=False) -> exp.Expression:
        -1448        if self._match_text_seq("AND", "STATISTICS"):
        -1449            statistics = True
        -1450        elif self._match_text_seq("AND", "NO", "STATISTICS"):
        -1451            statistics = False
        -1452        else:
        -1453            statistics = None
        +1424        if self._match_text_seq("ACCESS"):
        +1425            lock_type = "ACCESS"
        +1426        elif self._match_texts(("EXCL", "EXCLUSIVE")):
        +1427            lock_type = "EXCLUSIVE"
        +1428        elif self._match_text_seq("SHARE"):
        +1429            lock_type = "SHARE"
        +1430        elif self._match_text_seq("READ"):
        +1431            lock_type = "READ"
        +1432        elif self._match_text_seq("WRITE"):
        +1433            lock_type = "WRITE"
        +1434        elif self._match_text_seq("CHECKSUM"):
        +1435            lock_type = "CHECKSUM"
        +1436        else:
        +1437            lock_type = None
        +1438
        +1439        override = self._match_text_seq("OVERRIDE")
        +1440
        +1441        return self.expression(
        +1442            exp.LockingProperty,
        +1443            this=this,
        +1444            kind=kind,
        +1445            for_or_in=for_or_in,
        +1446            lock_type=lock_type,
        +1447            override=override,
        +1448        )
        +1449
        +1450    def _parse_partition_by(self) -> t.List[t.Optional[exp.Expression]]:
        +1451        if self._match(TokenType.PARTITION_BY):
        +1452            return self._parse_csv(self._parse_conjunction)
        +1453        return []
         1454
        -1455        return self.expression(exp.WithDataProperty, no=no, statistics=statistics)
        -1456
        -1457    def _parse_noprimaryindex(self) -> exp.Expression:
        -1458        self._match_text_seq("PRIMARY", "INDEX")
        -1459        return exp.NoPrimaryIndexProperty()
        -1460
        -1461    def _parse_oncommit(self) -> exp.Expression:
        -1462        self._match_text_seq("COMMIT", "PRESERVE", "ROWS")
        -1463        return exp.OnCommitProperty()
        -1464
        -1465    def _parse_distkey(self) -> exp.Expression:
        -1466        return self.expression(exp.DistKeyProperty, this=self._parse_wrapped(self._parse_id_var))
        -1467
        -1468    def _parse_create_like(self) -> t.Optional[exp.Expression]:
        -1469        table = self._parse_table(schema=True)
        -1470        options = []
        -1471        while self._match_texts(("INCLUDING", "EXCLUDING")):
        -1472            this = self._prev.text.upper()
        -1473            id_var = self._parse_id_var()
        -1474
        -1475            if not id_var:
        -1476                return None
        -1477
        -1478            options.append(
        -1479                self.expression(
        -1480                    exp.Property,
        -1481                    this=this,
        -1482                    value=exp.Var(this=id_var.this.upper()),
        -1483                )
        -1484            )
        -1485        return self.expression(exp.LikeProperty, this=table, expressions=options)
        -1486
        -1487    def _parse_sortkey(self, compound: bool = False) -> exp.Expression:
        -1488        return self.expression(
        -1489            exp.SortKeyProperty, this=self._parse_wrapped_csv(self._parse_id_var), compound=compound
        -1490        )
        -1491
        -1492    def _parse_character_set(self, default: bool = False) -> exp.Expression:
        -1493        self._match(TokenType.EQ)
        -1494        return self.expression(
        -1495            exp.CharacterSetProperty, this=self._parse_var_or_string(), default=default
        -1496        )
        -1497
        -1498    def _parse_returns(self) -> exp.Expression:
        -1499        value: t.Optional[exp.Expression]
        -1500        is_table = self._match(TokenType.TABLE)
        +1455    def _parse_partitioned_by(self) -> exp.Expression:
        +1456        self._match(TokenType.EQ)
        +1457        return self.expression(
        +1458            exp.PartitionedByProperty,
        +1459            this=self._parse_schema() or self._parse_bracket(self._parse_field()),
        +1460        )
        +1461
        +1462    def _parse_withdata(self, no=False) -> exp.Expression:
        +1463        if self._match_text_seq("AND", "STATISTICS"):
        +1464            statistics = True
        +1465        elif self._match_text_seq("AND", "NO", "STATISTICS"):
        +1466            statistics = False
        +1467        else:
        +1468            statistics = None
        +1469
        +1470        return self.expression(exp.WithDataProperty, no=no, statistics=statistics)
        +1471
        +1472    def _parse_noprimaryindex(self) -> exp.Expression:
        +1473        self._match_text_seq("PRIMARY", "INDEX")
        +1474        return exp.NoPrimaryIndexProperty()
        +1475
        +1476    def _parse_oncommit(self) -> exp.Expression:
        +1477        self._match_text_seq("COMMIT", "PRESERVE", "ROWS")
        +1478        return exp.OnCommitProperty()
        +1479
        +1480    def _parse_distkey(self) -> exp.Expression:
        +1481        return self.expression(exp.DistKeyProperty, this=self._parse_wrapped(self._parse_id_var))
        +1482
        +1483    def _parse_create_like(self) -> t.Optional[exp.Expression]:
        +1484        table = self._parse_table(schema=True)
        +1485        options = []
        +1486        while self._match_texts(("INCLUDING", "EXCLUDING")):
        +1487            this = self._prev.text.upper()
        +1488            id_var = self._parse_id_var()
        +1489
        +1490            if not id_var:
        +1491                return None
        +1492
        +1493            options.append(
        +1494                self.expression(
        +1495                    exp.Property,
        +1496                    this=this,
        +1497                    value=exp.Var(this=id_var.this.upper()),
        +1498                )
        +1499            )
        +1500        return self.expression(exp.LikeProperty, this=table, expressions=options)
         1501
        -1502        if is_table:
        -1503            if self._match(TokenType.LT):
        -1504                value = self.expression(
        -1505                    exp.Schema,
        -1506                    this="TABLE",
        -1507                    expressions=self._parse_csv(self._parse_struct_kwargs),
        -1508                )
        -1509                if not self._match(TokenType.GT):
        -1510                    self.raise_error("Expecting >")
        -1511            else:
        -1512                value = self._parse_schema(exp.Var(this="TABLE"))
        -1513        else:
        -1514            value = self._parse_types()
        -1515
        -1516        return self.expression(exp.ReturnsProperty, this=value, is_table=is_table)
        -1517
        -1518    def _parse_temporary(self, global_=False) -> exp.Expression:
        -1519        self._match(TokenType.TEMPORARY)  # in case calling from "GLOBAL"
        -1520        return self.expression(exp.TemporaryProperty, global_=global_)
        -1521
        -1522    def _parse_describe(self) -> exp.Expression:
        -1523        kind = self._match_set(self.CREATABLES) and self._prev.text
        -1524        this = self._parse_table()
        -1525
        -1526        return self.expression(exp.Describe, this=this, kind=kind)
        -1527
        -1528    def _parse_insert(self) -> exp.Expression:
        -1529        overwrite = self._match(TokenType.OVERWRITE)
        -1530        local = self._match(TokenType.LOCAL)
        -1531        alternative = None
        +1502    def _parse_sortkey(self, compound: bool = False) -> exp.Expression:
        +1503        return self.expression(
        +1504            exp.SortKeyProperty, this=self._parse_wrapped_csv(self._parse_id_var), compound=compound
        +1505        )
        +1506
        +1507    def _parse_character_set(self, default: bool = False) -> exp.Expression:
        +1508        self._match(TokenType.EQ)
        +1509        return self.expression(
        +1510            exp.CharacterSetProperty, this=self._parse_var_or_string(), default=default
        +1511        )
        +1512
        +1513    def _parse_returns(self) -> exp.Expression:
        +1514        value: t.Optional[exp.Expression]
        +1515        is_table = self._match(TokenType.TABLE)
        +1516
        +1517        if is_table:
        +1518            if self._match(TokenType.LT):
        +1519                value = self.expression(
        +1520                    exp.Schema,
        +1521                    this="TABLE",
        +1522                    expressions=self._parse_csv(self._parse_struct_kwargs),
        +1523                )
        +1524                if not self._match(TokenType.GT):
        +1525                    self.raise_error("Expecting >")
        +1526            else:
        +1527                value = self._parse_schema(exp.Var(this="TABLE"))
        +1528        else:
        +1529            value = self._parse_types()
        +1530
        +1531        return self.expression(exp.ReturnsProperty, this=value, is_table=is_table)
         1532
        -1533        if self._match_text_seq("DIRECTORY"):
        -1534            this: t.Optional[exp.Expression] = self.expression(
        -1535                exp.Directory,
        -1536                this=self._parse_var_or_string(),
        -1537                local=local,
        -1538                row_format=self._parse_row_format(match_row=True),
        -1539            )
        -1540        else:
        -1541            if self._match(TokenType.OR):
        -1542                alternative = self._match_texts(self.INSERT_ALTERNATIVES) and self._prev.text
        -1543
        -1544            self._match(TokenType.INTO)
        -1545            self._match(TokenType.TABLE)
        -1546            this = self._parse_table(schema=True)
        +1533    def _parse_temporary(self, global_=False) -> exp.Expression:
        +1534        self._match(TokenType.TEMPORARY)  # in case calling from "GLOBAL"
        +1535        return self.expression(exp.TemporaryProperty, global_=global_)
        +1536
        +1537    def _parse_describe(self) -> exp.Expression:
        +1538        kind = self._match_set(self.CREATABLES) and self._prev.text
        +1539        this = self._parse_table()
        +1540
        +1541        return self.expression(exp.Describe, this=this, kind=kind)
        +1542
        +1543    def _parse_insert(self) -> exp.Expression:
        +1544        overwrite = self._match(TokenType.OVERWRITE)
        +1545        local = self._match(TokenType.LOCAL)
        +1546        alternative = None
         1547
        -1548        return self.expression(
        -1549            exp.Insert,
        -1550            this=this,
        -1551            exists=self._parse_exists(),
        -1552            partition=self._parse_partition(),
        -1553            expression=self._parse_ddl_select(),
        -1554            returning=self._parse_returning(),
        -1555            overwrite=overwrite,
        -1556            alternative=alternative,
        -1557        )
        +1548        if self._match_text_seq("DIRECTORY"):
        +1549            this: t.Optional[exp.Expression] = self.expression(
        +1550                exp.Directory,
        +1551                this=self._parse_var_or_string(),
        +1552                local=local,
        +1553                row_format=self._parse_row_format(match_row=True),
        +1554            )
        +1555        else:
        +1556            if self._match(TokenType.OR):
        +1557                alternative = self._match_texts(self.INSERT_ALTERNATIVES) and self._prev.text
         1558
        -1559    def _parse_returning(self) -> t.Optional[exp.Expression]:
        -1560        if not self._match(TokenType.RETURNING):
        -1561            return None
        +1559            self._match(TokenType.INTO)
        +1560            self._match(TokenType.TABLE)
        +1561            this = self._parse_table(schema=True)
         1562
        -1563        return self.expression(exp.Returning, expressions=self._parse_csv(self._parse_column))
        -1564
        -1565    def _parse_row(self) -> t.Optional[exp.Expression]:
        -1566        if not self._match(TokenType.FORMAT):
        -1567            return None
        -1568        return self._parse_row_format()
        -1569
        -1570    def _parse_row_format(self, match_row: bool = False) -> t.Optional[exp.Expression]:
        -1571        if match_row and not self._match_pair(TokenType.ROW, TokenType.FORMAT):
        -1572            return None
        +1563        return self.expression(
        +1564            exp.Insert,
        +1565            this=this,
        +1566            exists=self._parse_exists(),
        +1567            partition=self._parse_partition(),
        +1568            expression=self._parse_ddl_select(),
        +1569            returning=self._parse_returning(),
        +1570            overwrite=overwrite,
        +1571            alternative=alternative,
        +1572        )
         1573
        -1574        if self._match_text_seq("SERDE"):
        -1575            return self.expression(exp.RowFormatSerdeProperty, this=self._parse_string())
        -1576
        -1577        self._match_text_seq("DELIMITED")
        -1578
        -1579        kwargs = {}
        -1580
        -1581        if self._match_text_seq("FIELDS", "TERMINATED", "BY"):
        -1582            kwargs["fields"] = self._parse_string()
        -1583            if self._match_text_seq("ESCAPED", "BY"):
        -1584                kwargs["escaped"] = self._parse_string()
        -1585        if self._match_text_seq("COLLECTION", "ITEMS", "TERMINATED", "BY"):
        -1586            kwargs["collection_items"] = self._parse_string()
        -1587        if self._match_text_seq("MAP", "KEYS", "TERMINATED", "BY"):
        -1588            kwargs["map_keys"] = self._parse_string()
        -1589        if self._match_text_seq("LINES", "TERMINATED", "BY"):
        -1590            kwargs["lines"] = self._parse_string()
        -1591        if self._match_text_seq("NULL", "DEFINED", "AS"):
        -1592            kwargs["null"] = self._parse_string()
        +1574    def _parse_returning(self) -> t.Optional[exp.Expression]:
        +1575        if not self._match(TokenType.RETURNING):
        +1576            return None
        +1577
        +1578        return self.expression(exp.Returning, expressions=self._parse_csv(self._parse_column))
        +1579
        +1580    def _parse_row(self) -> t.Optional[exp.Expression]:
        +1581        if not self._match(TokenType.FORMAT):
        +1582            return None
        +1583        return self._parse_row_format()
        +1584
        +1585    def _parse_row_format(self, match_row: bool = False) -> t.Optional[exp.Expression]:
        +1586        if match_row and not self._match_pair(TokenType.ROW, TokenType.FORMAT):
        +1587            return None
        +1588
        +1589        if self._match_text_seq("SERDE"):
        +1590            return self.expression(exp.RowFormatSerdeProperty, this=self._parse_string())
        +1591
        +1592        self._match_text_seq("DELIMITED")
         1593
        -1594        return self.expression(exp.RowFormatDelimitedProperty, **kwargs)  # type: ignore
        +1594        kwargs = {}
         1595
        -1596    def _parse_load_data(self) -> exp.Expression:
        -1597        local = self._match(TokenType.LOCAL)
        -1598        self._match_text_seq("INPATH")
        -1599        inpath = self._parse_string()
        -1600        overwrite = self._match(TokenType.OVERWRITE)
        -1601        self._match_pair(TokenType.INTO, TokenType.TABLE)
        -1602
        -1603        return self.expression(
        -1604            exp.LoadData,
        -1605            this=self._parse_table(schema=True),
        -1606            local=local,
        -1607            overwrite=overwrite,
        -1608            inpath=inpath,
        -1609            partition=self._parse_partition(),
        -1610            input_format=self._match_text_seq("INPUTFORMAT") and self._parse_string(),
        -1611            serde=self._match_text_seq("SERDE") and self._parse_string(),
        -1612        )
        -1613
        -1614    def _parse_delete(self) -> exp.Expression:
        -1615        self._match(TokenType.FROM)
        -1616
        -1617        return self.expression(
        -1618            exp.Delete,
        -1619            this=self._parse_table(schema=True),
        -1620            using=self._parse_csv(lambda: self._match(TokenType.USING) and self._parse_table()),
        -1621            where=self._parse_where(),
        -1622            returning=self._parse_returning(),
        -1623        )
        -1624
        -1625    def _parse_update(self) -> exp.Expression:
        -1626        return self.expression(
        -1627            exp.Update,
        -1628            **{  # type: ignore
        -1629                "this": self._parse_table(alias_tokens=self.UPDATE_ALIAS_TOKENS),
        -1630                "expressions": self._match(TokenType.SET) and self._parse_csv(self._parse_equality),
        -1631                "from": self._parse_from(),
        -1632                "where": self._parse_where(),
        -1633                "returning": self._parse_returning(),
        -1634            },
        -1635        )
        -1636
        -1637    def _parse_uncache(self) -> exp.Expression:
        -1638        if not self._match(TokenType.TABLE):
        -1639            self.raise_error("Expecting TABLE after UNCACHE")
        -1640
        +1596        if self._match_text_seq("FIELDS", "TERMINATED", "BY"):
        +1597            kwargs["fields"] = self._parse_string()
        +1598            if self._match_text_seq("ESCAPED", "BY"):
        +1599                kwargs["escaped"] = self._parse_string()
        +1600        if self._match_text_seq("COLLECTION", "ITEMS", "TERMINATED", "BY"):
        +1601            kwargs["collection_items"] = self._parse_string()
        +1602        if self._match_text_seq("MAP", "KEYS", "TERMINATED", "BY"):
        +1603            kwargs["map_keys"] = self._parse_string()
        +1604        if self._match_text_seq("LINES", "TERMINATED", "BY"):
        +1605            kwargs["lines"] = self._parse_string()
        +1606        if self._match_text_seq("NULL", "DEFINED", "AS"):
        +1607            kwargs["null"] = self._parse_string()
        +1608
        +1609        return self.expression(exp.RowFormatDelimitedProperty, **kwargs)  # type: ignore
        +1610
        +1611    def _parse_load_data(self) -> exp.Expression:
        +1612        local = self._match(TokenType.LOCAL)
        +1613        self._match_text_seq("INPATH")
        +1614        inpath = self._parse_string()
        +1615        overwrite = self._match(TokenType.OVERWRITE)
        +1616        self._match_pair(TokenType.INTO, TokenType.TABLE)
        +1617
        +1618        return self.expression(
        +1619            exp.LoadData,
        +1620            this=self._parse_table(schema=True),
        +1621            local=local,
        +1622            overwrite=overwrite,
        +1623            inpath=inpath,
        +1624            partition=self._parse_partition(),
        +1625            input_format=self._match_text_seq("INPUTFORMAT") and self._parse_string(),
        +1626            serde=self._match_text_seq("SERDE") and self._parse_string(),
        +1627        )
        +1628
        +1629    def _parse_delete(self) -> exp.Expression:
        +1630        self._match(TokenType.FROM)
        +1631
        +1632        return self.expression(
        +1633            exp.Delete,
        +1634            this=self._parse_table(schema=True),
        +1635            using=self._parse_csv(lambda: self._match(TokenType.USING) and self._parse_table()),
        +1636            where=self._parse_where(),
        +1637            returning=self._parse_returning(),
        +1638        )
        +1639
        +1640    def _parse_update(self) -> exp.Expression:
         1641        return self.expression(
        -1642            exp.Uncache,
        -1643            exists=self._parse_exists(),
        -1644            this=self._parse_table(schema=True),
        -1645        )
        -1646
        -1647    def _parse_cache(self) -> exp.Expression:
        -1648        lazy = self._match(TokenType.LAZY)
        -1649        self._match(TokenType.TABLE)
        -1650        table = self._parse_table(schema=True)
        -1651        options = []
        -1652
        -1653        if self._match(TokenType.OPTIONS):
        -1654            self._match_l_paren()
        -1655            k = self._parse_string()
        -1656            self._match(TokenType.EQ)
        -1657            v = self._parse_string()
        -1658            options = [k, v]
        -1659            self._match_r_paren()
        -1660
        -1661        self._match(TokenType.ALIAS)
        -1662        return self.expression(
        -1663            exp.Cache,
        -1664            this=table,
        -1665            lazy=lazy,
        -1666            options=options,
        -1667            expression=self._parse_select(nested=True),
        -1668        )
        -1669
        -1670    def _parse_partition(self) -> t.Optional[exp.Expression]:
        -1671        if not self._match(TokenType.PARTITION):
        -1672            return None
        -1673
        -1674        return self.expression(
        -1675            exp.Partition, expressions=self._parse_wrapped_csv(self._parse_conjunction)
        -1676        )
        -1677
        -1678    def _parse_value(self) -> exp.Expression:
        -1679        if self._match(TokenType.L_PAREN):
        -1680            expressions = self._parse_csv(self._parse_conjunction)
        -1681            self._match_r_paren()
        -1682            return self.expression(exp.Tuple, expressions=expressions)
        -1683
        -1684        # In presto we can have VALUES 1, 2 which results in 1 column & 2 rows.
        -1685        # Source: https://prestodb.io/docs/current/sql/values.html
        -1686        return self.expression(exp.Tuple, expressions=[self._parse_conjunction()])
        -1687
        -1688    def _parse_select(
        -1689        self, nested: bool = False, table: bool = False, parse_subquery_alias: bool = True
        -1690    ) -> t.Optional[exp.Expression]:
        -1691        cte = self._parse_with()
        -1692        if cte:
        -1693            this = self._parse_statement()
        -1694
        -1695            if not this:
        -1696                self.raise_error("Failed to parse any statement following CTE")
        -1697                return cte
        +1642            exp.Update,
        +1643            **{  # type: ignore
        +1644                "this": self._parse_table(alias_tokens=self.UPDATE_ALIAS_TOKENS),
        +1645                "expressions": self._match(TokenType.SET) and self._parse_csv(self._parse_equality),
        +1646                "from": self._parse_from(),
        +1647                "where": self._parse_where(),
        +1648                "returning": self._parse_returning(),
        +1649            },
        +1650        )
        +1651
        +1652    def _parse_uncache(self) -> exp.Expression:
        +1653        if not self._match(TokenType.TABLE):
        +1654            self.raise_error("Expecting TABLE after UNCACHE")
        +1655
        +1656        return self.expression(
        +1657            exp.Uncache,
        +1658            exists=self._parse_exists(),
        +1659            this=self._parse_table(schema=True),
        +1660        )
        +1661
        +1662    def _parse_cache(self) -> exp.Expression:
        +1663        lazy = self._match(TokenType.LAZY)
        +1664        self._match(TokenType.TABLE)
        +1665        table = self._parse_table(schema=True)
        +1666        options = []
        +1667
        +1668        if self._match(TokenType.OPTIONS):
        +1669            self._match_l_paren()
        +1670            k = self._parse_string()
        +1671            self._match(TokenType.EQ)
        +1672            v = self._parse_string()
        +1673            options = [k, v]
        +1674            self._match_r_paren()
        +1675
        +1676        self._match(TokenType.ALIAS)
        +1677        return self.expression(
        +1678            exp.Cache,
        +1679            this=table,
        +1680            lazy=lazy,
        +1681            options=options,
        +1682            expression=self._parse_select(nested=True),
        +1683        )
        +1684
        +1685    def _parse_partition(self) -> t.Optional[exp.Expression]:
        +1686        if not self._match(TokenType.PARTITION):
        +1687            return None
        +1688
        +1689        return self.expression(
        +1690            exp.Partition, expressions=self._parse_wrapped_csv(self._parse_conjunction)
        +1691        )
        +1692
        +1693    def _parse_value(self) -> exp.Expression:
        +1694        if self._match(TokenType.L_PAREN):
        +1695            expressions = self._parse_csv(self._parse_conjunction)
        +1696            self._match_r_paren()
        +1697            return self.expression(exp.Tuple, expressions=expressions)
         1698
        -1699            if "with" in this.arg_types:
        -1700                this.set("with", cte)
        -1701            else:
        -1702                self.raise_error(f"{this.key} does not support CTE")
        -1703                this = cte
        -1704        elif self._match(TokenType.SELECT):
        -1705            comments = self._prev_comments
        -1706
        -1707            hint = self._parse_hint()
        -1708            all_ = self._match(TokenType.ALL)
        -1709            distinct = self._match(TokenType.DISTINCT)
        -1710
        -1711            if distinct:
        -1712                distinct = self.expression(
        -1713                    exp.Distinct,
        -1714                    on=self._parse_value() if self._match(TokenType.ON) else None,
        -1715                )
        -1716
        -1717            if all_ and distinct:
        -1718                self.raise_error("Cannot specify both ALL and DISTINCT after SELECT")
        -1719
        -1720            limit = self._parse_limit(top=True)
        -1721            expressions = self._parse_csv(self._parse_expression)
        -1722
        -1723            this = self.expression(
        -1724                exp.Select,
        -1725                hint=hint,
        -1726                distinct=distinct,
        -1727                expressions=expressions,
        -1728                limit=limit,
        -1729            )
        -1730            this.comments = comments
        -1731
        -1732            into = self._parse_into()
        -1733            if into:
        -1734                this.set("into", into)
        -1735
        -1736            from_ = self._parse_from()
        -1737            if from_:
        -1738                this.set("from", from_)
        +1699        # In presto we can have VALUES 1, 2 which results in 1 column & 2 rows.
        +1700        # Source: https://prestodb.io/docs/current/sql/values.html
        +1701        return self.expression(exp.Tuple, expressions=[self._parse_conjunction()])
        +1702
        +1703    def _parse_select(
        +1704        self, nested: bool = False, table: bool = False, parse_subquery_alias: bool = True
        +1705    ) -> t.Optional[exp.Expression]:
        +1706        cte = self._parse_with()
        +1707        if cte:
        +1708            this = self._parse_statement()
        +1709
        +1710            if not this:
        +1711                self.raise_error("Failed to parse any statement following CTE")
        +1712                return cte
        +1713
        +1714            if "with" in this.arg_types:
        +1715                this.set("with", cte)
        +1716            else:
        +1717                self.raise_error(f"{this.key} does not support CTE")
        +1718                this = cte
        +1719        elif self._match(TokenType.SELECT):
        +1720            comments = self._prev_comments
        +1721
        +1722            kind = (
        +1723                self._match(TokenType.ALIAS)
        +1724                and self._match_texts(("STRUCT", "VALUE"))
        +1725                and self._prev.text
        +1726            )
        +1727            hint = self._parse_hint()
        +1728            all_ = self._match(TokenType.ALL)
        +1729            distinct = self._match(TokenType.DISTINCT)
        +1730
        +1731            if distinct:
        +1732                distinct = self.expression(
        +1733                    exp.Distinct,
        +1734                    on=self._parse_value() if self._match(TokenType.ON) else None,
        +1735                )
        +1736
        +1737            if all_ and distinct:
        +1738                self.raise_error("Cannot specify both ALL and DISTINCT after SELECT")
         1739
        -1740            self._parse_query_modifiers(this)
        -1741        elif (table or nested) and self._match(TokenType.L_PAREN):
        -1742            this = self._parse_table() if table else self._parse_select(nested=True)
        -1743            self._parse_query_modifiers(this)
        -1744            this = self._parse_set_operations(this)
        -1745            self._match_r_paren()
        -1746
        -1747            # early return so that subquery unions aren't parsed again
        -1748            # SELECT * FROM (SELECT 1) UNION ALL SELECT 1
        -1749            # Union ALL should be a property of the top select node, not the subquery
        -1750            return self._parse_subquery(this, parse_alias=parse_subquery_alias)
        -1751        elif self._match(TokenType.VALUES):
        -1752            this = self.expression(
        -1753                exp.Values,
        -1754                expressions=self._parse_csv(self._parse_value),
        -1755                alias=self._parse_table_alias(),
        -1756            )
        -1757        else:
        -1758            this = None
        -1759
        -1760        return self._parse_set_operations(this)
        -1761
        -1762    def _parse_with(self, skip_with_token: bool = False) -> t.Optional[exp.Expression]:
        -1763        if not skip_with_token and not self._match(TokenType.WITH):
        -1764            return None
        -1765
        -1766        recursive = self._match(TokenType.RECURSIVE)
        +1740            limit = self._parse_limit(top=True)
        +1741            expressions = self._parse_csv(self._parse_expression)
        +1742
        +1743            this = self.expression(
        +1744                exp.Select,
        +1745                kind=kind,
        +1746                hint=hint,
        +1747                distinct=distinct,
        +1748                expressions=expressions,
        +1749                limit=limit,
        +1750            )
        +1751            this.comments = comments
        +1752
        +1753            into = self._parse_into()
        +1754            if into:
        +1755                this.set("into", into)
        +1756
        +1757            from_ = self._parse_from()
        +1758            if from_:
        +1759                this.set("from", from_)
        +1760
        +1761            self._parse_query_modifiers(this)
        +1762        elif (table or nested) and self._match(TokenType.L_PAREN):
        +1763            this = self._parse_table() if table else self._parse_select(nested=True)
        +1764            self._parse_query_modifiers(this)
        +1765            this = self._parse_set_operations(this)
        +1766            self._match_r_paren()
         1767
        -1768        expressions = []
        -1769        while True:
        -1770            expressions.append(self._parse_cte())
        -1771
        -1772            if not self._match(TokenType.COMMA) and not self._match(TokenType.WITH):
        -1773                break
        -1774            else:
        -1775                self._match(TokenType.WITH)
        -1776
        -1777        return self.expression(exp.With, expressions=expressions, recursive=recursive)
        -1778
        -1779    def _parse_cte(self) -> exp.Expression:
        -1780        alias = self._parse_table_alias()
        -1781        if not alias or not alias.this:
        -1782            self.raise_error("Expected CTE to have alias")
        -1783
        -1784        self._match(TokenType.ALIAS)
        -1785
        -1786        return self.expression(
        -1787            exp.CTE,
        -1788            this=self._parse_wrapped(self._parse_statement),
        -1789            alias=alias,
        -1790        )
        -1791
        -1792    def _parse_table_alias(
        -1793        self, alias_tokens: t.Optional[t.Collection[TokenType]] = None
        -1794    ) -> t.Optional[exp.Expression]:
        -1795        any_token = self._match(TokenType.ALIAS)
        -1796        alias = (
        -1797            self._parse_id_var(any_token=any_token, tokens=alias_tokens or self.TABLE_ALIAS_TOKENS)
        -1798            or self._parse_string_as_identifier()
        -1799        )
        -1800
        -1801        index = self._index
        -1802        if self._match(TokenType.L_PAREN):
        -1803            columns = self._parse_csv(self._parse_function_parameter)
        -1804            self._match_r_paren() if columns else self._retreat(index)
        -1805        else:
        -1806            columns = None
        -1807
        -1808        if not alias and not columns:
        -1809            return None
        -1810
        -1811        return self.expression(exp.TableAlias, this=alias, columns=columns)
        +1768            # early return so that subquery unions aren't parsed again
        +1769            # SELECT * FROM (SELECT 1) UNION ALL SELECT 1
        +1770            # Union ALL should be a property of the top select node, not the subquery
        +1771            return self._parse_subquery(this, parse_alias=parse_subquery_alias)
        +1772        elif self._match(TokenType.VALUES):
        +1773            this = self.expression(
        +1774                exp.Values,
        +1775                expressions=self._parse_csv(self._parse_value),
        +1776                alias=self._parse_table_alias(),
        +1777            )
        +1778        else:
        +1779            this = None
        +1780
        +1781        return self._parse_set_operations(this)
        +1782
        +1783    def _parse_with(self, skip_with_token: bool = False) -> t.Optional[exp.Expression]:
        +1784        if not skip_with_token and not self._match(TokenType.WITH):
        +1785            return None
        +1786
        +1787        recursive = self._match(TokenType.RECURSIVE)
        +1788
        +1789        expressions = []
        +1790        while True:
        +1791            expressions.append(self._parse_cte())
        +1792
        +1793            if not self._match(TokenType.COMMA) and not self._match(TokenType.WITH):
        +1794                break
        +1795            else:
        +1796                self._match(TokenType.WITH)
        +1797
        +1798        return self.expression(exp.With, expressions=expressions, recursive=recursive)
        +1799
        +1800    def _parse_cte(self) -> exp.Expression:
        +1801        alias = self._parse_table_alias()
        +1802        if not alias or not alias.this:
        +1803            self.raise_error("Expected CTE to have alias")
        +1804
        +1805        self._match(TokenType.ALIAS)
        +1806
        +1807        return self.expression(
        +1808            exp.CTE,
        +1809            this=self._parse_wrapped(self._parse_statement),
        +1810            alias=alias,
        +1811        )
         1812
        -1813    def _parse_subquery(
        -1814        self, this: t.Optional[exp.Expression], parse_alias: bool = True
        -1815    ) -> exp.Expression:
        -1816        return self.expression(
        -1817            exp.Subquery,
        -1818            this=this,
        -1819            pivots=self._parse_pivots(),
        -1820            alias=self._parse_table_alias() if parse_alias else None,
        -1821        )
        -1822
        -1823    def _parse_query_modifiers(self, this: t.Optional[exp.Expression]) -> None:
        -1824        if not isinstance(this, self.MODIFIABLES):
        -1825            return
        -1826
        -1827        table = isinstance(this, exp.Table)
        +1813    def _parse_table_alias(
        +1814        self, alias_tokens: t.Optional[t.Collection[TokenType]] = None
        +1815    ) -> t.Optional[exp.Expression]:
        +1816        any_token = self._match(TokenType.ALIAS)
        +1817        alias = (
        +1818            self._parse_id_var(any_token=any_token, tokens=alias_tokens or self.TABLE_ALIAS_TOKENS)
        +1819            or self._parse_string_as_identifier()
        +1820        )
        +1821
        +1822        index = self._index
        +1823        if self._match(TokenType.L_PAREN):
        +1824            columns = self._parse_csv(self._parse_function_parameter)
        +1825            self._match_r_paren() if columns else self._retreat(index)
        +1826        else:
        +1827            columns = None
         1828
        -1829        while True:
        -1830            lateral = self._parse_lateral()
        -1831            join = self._parse_join()
        -1832            comma = None if table else self._match(TokenType.COMMA)
        -1833            if lateral:
        -1834                this.append("laterals", lateral)
        -1835            if join:
        -1836                this.append("joins", join)
        -1837            if comma:
        -1838                this.args["from"].append("expressions", self._parse_table())
        -1839            if not (lateral or join or comma):
        -1840                break
        -1841
        -1842        for key, parser in self.QUERY_MODIFIER_PARSERS.items():
        -1843            expression = parser(self)
        -1844
        -1845            if expression:
        -1846                this.set(key, expression)
        +1829        if not alias and not columns:
        +1830            return None
        +1831
        +1832        return self.expression(exp.TableAlias, this=alias, columns=columns)
        +1833
        +1834    def _parse_subquery(
        +1835        self, this: t.Optional[exp.Expression], parse_alias: bool = True
        +1836    ) -> exp.Expression:
        +1837        return self.expression(
        +1838            exp.Subquery,
        +1839            this=this,
        +1840            pivots=self._parse_pivots(),
        +1841            alias=self._parse_table_alias() if parse_alias else None,
        +1842        )
        +1843
        +1844    def _parse_query_modifiers(self, this: t.Optional[exp.Expression]) -> None:
        +1845        if not isinstance(this, self.MODIFIABLES):
        +1846            return
         1847
        -1848    def _parse_hint(self) -> t.Optional[exp.Expression]:
        -1849        if self._match(TokenType.HINT):
        -1850            hints = self._parse_csv(self._parse_function)
        -1851            if not self._match_pair(TokenType.STAR, TokenType.SLASH):
        -1852                self.raise_error("Expected */ after HINT")
        -1853            return self.expression(exp.Hint, expressions=hints)
        -1854
        -1855        return None
        -1856
        -1857    def _parse_into(self) -> t.Optional[exp.Expression]:
        -1858        if not self._match(TokenType.INTO):
        -1859            return None
        -1860
        -1861        temp = self._match(TokenType.TEMPORARY)
        -1862        unlogged = self._match(TokenType.UNLOGGED)
        -1863        self._match(TokenType.TABLE)
        -1864
        -1865        return self.expression(
        -1866            exp.Into, this=self._parse_table(schema=True), temporary=temp, unlogged=unlogged
        -1867        )
        +1848        table = isinstance(this, exp.Table)
        +1849
        +1850        while True:
        +1851            lateral = self._parse_lateral()
        +1852            join = self._parse_join()
        +1853            comma = None if table else self._match(TokenType.COMMA)
        +1854            if lateral:
        +1855                this.append("laterals", lateral)
        +1856            if join:
        +1857                this.append("joins", join)
        +1858            if comma:
        +1859                this.args["from"].append("expressions", self._parse_table())
        +1860            if not (lateral or join or comma):
        +1861                break
        +1862
        +1863        for key, parser in self.QUERY_MODIFIER_PARSERS.items():
        +1864            expression = parser(self)
        +1865
        +1866            if expression:
        +1867                this.set(key, expression)
         1868
        -1869    def _parse_from(self) -> t.Optional[exp.Expression]:
        -1870        if not self._match(TokenType.FROM):
        -1871            return None
        -1872
        -1873        return self.expression(
        -1874            exp.From, comments=self._prev_comments, expressions=self._parse_csv(self._parse_table)
        -1875        )
        -1876
        -1877    def _parse_match_recognize(self) -> t.Optional[exp.Expression]:
        -1878        if not self._match(TokenType.MATCH_RECOGNIZE):
        -1879            return None
        -1880        self._match_l_paren()
        +1869    def _parse_hint(self) -> t.Optional[exp.Expression]:
        +1870        if self._match(TokenType.HINT):
        +1871            hints = self._parse_csv(self._parse_function)
        +1872            if not self._match_pair(TokenType.STAR, TokenType.SLASH):
        +1873                self.raise_error("Expected */ after HINT")
        +1874            return self.expression(exp.Hint, expressions=hints)
        +1875
        +1876        return None
        +1877
        +1878    def _parse_into(self) -> t.Optional[exp.Expression]:
        +1879        if not self._match(TokenType.INTO):
        +1880            return None
         1881
        -1882        partition = self._parse_partition_by()
        -1883        order = self._parse_order()
        -1884        measures = (
        -1885            self._parse_alias(self._parse_conjunction())
        -1886            if self._match_text_seq("MEASURES")
        -1887            else None
        +1882        temp = self._match(TokenType.TEMPORARY)
        +1883        unlogged = self._match(TokenType.UNLOGGED)
        +1884        self._match(TokenType.TABLE)
        +1885
        +1886        return self.expression(
        +1887            exp.Into, this=self._parse_table(schema=True), temporary=temp, unlogged=unlogged
         1888        )
         1889
        -1890        if self._match_text_seq("ONE", "ROW", "PER", "MATCH"):
        -1891            rows = exp.Var(this="ONE ROW PER MATCH")
        -1892        elif self._match_text_seq("ALL", "ROWS", "PER", "MATCH"):
        -1893            text = "ALL ROWS PER MATCH"
        -1894            if self._match_text_seq("SHOW", "EMPTY", "MATCHES"):
        -1895                text += f" SHOW EMPTY MATCHES"
        -1896            elif self._match_text_seq("OMIT", "EMPTY", "MATCHES"):
        -1897                text += f" OMIT EMPTY MATCHES"
        -1898            elif self._match_text_seq("WITH", "UNMATCHED", "ROWS"):
        -1899                text += f" WITH UNMATCHED ROWS"
        -1900            rows = exp.Var(this=text)
        -1901        else:
        -1902            rows = None
        -1903
        -1904        if self._match_text_seq("AFTER", "MATCH", "SKIP"):
        -1905            text = "AFTER MATCH SKIP"
        -1906            if self._match_text_seq("PAST", "LAST", "ROW"):
        -1907                text += f" PAST LAST ROW"
        -1908            elif self._match_text_seq("TO", "NEXT", "ROW"):
        -1909                text += f" TO NEXT ROW"
        -1910            elif self._match_text_seq("TO", "FIRST"):
        -1911                text += f" TO FIRST {self._advance_any().text}"  # type: ignore
        -1912            elif self._match_text_seq("TO", "LAST"):
        -1913                text += f" TO LAST {self._advance_any().text}"  # type: ignore
        -1914            after = exp.Var(this=text)
        -1915        else:
        -1916            after = None
        -1917
        -1918        if self._match_text_seq("PATTERN"):
        -1919            self._match_l_paren()
        -1920
        -1921            if not self._curr:
        -1922                self.raise_error("Expecting )", self._curr)
        -1923
        -1924            paren = 1
        -1925            start = self._curr
        -1926
        -1927            while self._curr and paren > 0:
        -1928                if self._curr.token_type == TokenType.L_PAREN:
        -1929                    paren += 1
        -1930                if self._curr.token_type == TokenType.R_PAREN:
        -1931                    paren -= 1
        -1932                end = self._prev
        -1933                self._advance()
        -1934            if paren > 0:
        -1935                self.raise_error("Expecting )", self._curr)
        -1936            pattern = exp.Var(this=self._find_sql(start, end))
        -1937        else:
        -1938            pattern = None
        -1939
        -1940        define = (
        -1941            self._parse_alias(self._parse_conjunction()) if self._match_text_seq("DEFINE") else None
        -1942        )
        -1943        self._match_r_paren()
        +1890    def _parse_from(self) -> t.Optional[exp.Expression]:
        +1891        if not self._match(TokenType.FROM):
        +1892            return None
        +1893
        +1894        return self.expression(
        +1895            exp.From, comments=self._prev_comments, expressions=self._parse_csv(self._parse_table)
        +1896        )
        +1897
        +1898    def _parse_match_recognize(self) -> t.Optional[exp.Expression]:
        +1899        if not self._match(TokenType.MATCH_RECOGNIZE):
        +1900            return None
        +1901        self._match_l_paren()
        +1902
        +1903        partition = self._parse_partition_by()
        +1904        order = self._parse_order()
        +1905        measures = (
        +1906            self._parse_alias(self._parse_conjunction())
        +1907            if self._match_text_seq("MEASURES")
        +1908            else None
        +1909        )
        +1910
        +1911        if self._match_text_seq("ONE", "ROW", "PER", "MATCH"):
        +1912            rows = exp.Var(this="ONE ROW PER MATCH")
        +1913        elif self._match_text_seq("ALL", "ROWS", "PER", "MATCH"):
        +1914            text = "ALL ROWS PER MATCH"
        +1915            if self._match_text_seq("SHOW", "EMPTY", "MATCHES"):
        +1916                text += f" SHOW EMPTY MATCHES"
        +1917            elif self._match_text_seq("OMIT", "EMPTY", "MATCHES"):
        +1918                text += f" OMIT EMPTY MATCHES"
        +1919            elif self._match_text_seq("WITH", "UNMATCHED", "ROWS"):
        +1920                text += f" WITH UNMATCHED ROWS"
        +1921            rows = exp.Var(this=text)
        +1922        else:
        +1923            rows = None
        +1924
        +1925        if self._match_text_seq("AFTER", "MATCH", "SKIP"):
        +1926            text = "AFTER MATCH SKIP"
        +1927            if self._match_text_seq("PAST", "LAST", "ROW"):
        +1928                text += f" PAST LAST ROW"
        +1929            elif self._match_text_seq("TO", "NEXT", "ROW"):
        +1930                text += f" TO NEXT ROW"
        +1931            elif self._match_text_seq("TO", "FIRST"):
        +1932                text += f" TO FIRST {self._advance_any().text}"  # type: ignore
        +1933            elif self._match_text_seq("TO", "LAST"):
        +1934                text += f" TO LAST {self._advance_any().text}"  # type: ignore
        +1935            after = exp.Var(this=text)
        +1936        else:
        +1937            after = None
        +1938
        +1939        if self._match_text_seq("PATTERN"):
        +1940            self._match_l_paren()
        +1941
        +1942            if not self._curr:
        +1943                self.raise_error("Expecting )", self._curr)
         1944
        -1945        return self.expression(
        -1946            exp.MatchRecognize,
        -1947            partition_by=partition,
        -1948            order=order,
        -1949            measures=measures,
        -1950            rows=rows,
        -1951            after=after,
        -1952            pattern=pattern,
        -1953            define=define,
        -1954        )
        -1955
        -1956    def _parse_lateral(self) -> t.Optional[exp.Expression]:
        -1957        outer_apply = self._match_pair(TokenType.OUTER, TokenType.APPLY)
        -1958        cross_apply = self._match_pair(TokenType.CROSS, TokenType.APPLY)
        -1959
        -1960        if outer_apply or cross_apply:
        -1961            this = self._parse_select(table=True)
        -1962            view = None
        -1963            outer = not cross_apply
        -1964        elif self._match(TokenType.LATERAL):
        -1965            this = self._parse_select(table=True)
        -1966            view = self._match(TokenType.VIEW)
        -1967            outer = self._match(TokenType.OUTER)
        -1968        else:
        -1969            return None
        -1970
        -1971        if not this:
        -1972            this = self._parse_function() or self._parse_id_var(any_token=False)
        -1973            while self._match(TokenType.DOT):
        -1974                this = exp.Dot(
        -1975                    this=this,
        -1976                    expression=self._parse_function() or self._parse_id_var(any_token=False),
        -1977                )
        -1978
        -1979        table_alias: t.Optional[exp.Expression]
        +1945            paren = 1
        +1946            start = self._curr
        +1947
        +1948            while self._curr and paren > 0:
        +1949                if self._curr.token_type == TokenType.L_PAREN:
        +1950                    paren += 1
        +1951                if self._curr.token_type == TokenType.R_PAREN:
        +1952                    paren -= 1
        +1953                end = self._prev
        +1954                self._advance()
        +1955            if paren > 0:
        +1956                self.raise_error("Expecting )", self._curr)
        +1957            pattern = exp.Var(this=self._find_sql(start, end))
        +1958        else:
        +1959            pattern = None
        +1960
        +1961        define = (
        +1962            self._parse_alias(self._parse_conjunction()) if self._match_text_seq("DEFINE") else None
        +1963        )
        +1964        self._match_r_paren()
        +1965
        +1966        return self.expression(
        +1967            exp.MatchRecognize,
        +1968            partition_by=partition,
        +1969            order=order,
        +1970            measures=measures,
        +1971            rows=rows,
        +1972            after=after,
        +1973            pattern=pattern,
        +1974            define=define,
        +1975        )
        +1976
        +1977    def _parse_lateral(self) -> t.Optional[exp.Expression]:
        +1978        outer_apply = self._match_pair(TokenType.OUTER, TokenType.APPLY)
        +1979        cross_apply = self._match_pair(TokenType.CROSS, TokenType.APPLY)
         1980
        -1981        if view:
        -1982            table = self._parse_id_var(any_token=False)
        -1983            columns = self._parse_csv(self._parse_id_var) if self._match(TokenType.ALIAS) else []
        -1984            table_alias = self.expression(exp.TableAlias, this=table, columns=columns)
        -1985        else:
        -1986            table_alias = self._parse_table_alias()
        -1987
        -1988        expression = self.expression(
        -1989            exp.Lateral,
        -1990            this=this,
        -1991            view=view,
        -1992            outer=outer,
        -1993            alias=table_alias,
        -1994        )
        -1995
        -1996        if outer_apply or cross_apply:
        -1997            return self.expression(exp.Join, this=expression, side=None if cross_apply else "LEFT")
        -1998
        -1999        return expression
        -2000
        -2001    def _parse_join_side_and_kind(
        -2002        self,
        -2003    ) -> t.Tuple[t.Optional[Token], t.Optional[Token], t.Optional[Token]]:
        -2004        return (
        -2005            self._match(TokenType.NATURAL) and self._prev,
        -2006            self._match_set(self.JOIN_SIDES) and self._prev,
        -2007            self._match_set(self.JOIN_KINDS) and self._prev,
        -2008        )
        -2009
        -2010    def _parse_join(self, skip_join_token: bool = False) -> t.Optional[exp.Expression]:
        -2011        natural, side, kind = self._parse_join_side_and_kind()
        -2012
        -2013        if not skip_join_token and not self._match(TokenType.JOIN):
        -2014            return None
        -2015
        -2016        kwargs: t.Dict[
        -2017            str, t.Optional[exp.Expression] | bool | str | t.List[t.Optional[exp.Expression]]
        -2018        ] = {"this": self._parse_table()}
        +1981        if outer_apply or cross_apply:
        +1982            this = self._parse_select(table=True)
        +1983            view = None
        +1984            outer = not cross_apply
        +1985        elif self._match(TokenType.LATERAL):
        +1986            this = self._parse_select(table=True)
        +1987            view = self._match(TokenType.VIEW)
        +1988            outer = self._match(TokenType.OUTER)
        +1989        else:
        +1990            return None
        +1991
        +1992        if not this:
        +1993            this = self._parse_function() or self._parse_id_var(any_token=False)
        +1994            while self._match(TokenType.DOT):
        +1995                this = exp.Dot(
        +1996                    this=this,
        +1997                    expression=self._parse_function() or self._parse_id_var(any_token=False),
        +1998                )
        +1999
        +2000        table_alias: t.Optional[exp.Expression]
        +2001
        +2002        if view:
        +2003            table = self._parse_id_var(any_token=False)
        +2004            columns = self._parse_csv(self._parse_id_var) if self._match(TokenType.ALIAS) else []
        +2005            table_alias = self.expression(exp.TableAlias, this=table, columns=columns)
        +2006        else:
        +2007            table_alias = self._parse_table_alias()
        +2008
        +2009        expression = self.expression(
        +2010            exp.Lateral,
        +2011            this=this,
        +2012            view=view,
        +2013            outer=outer,
        +2014            alias=table_alias,
        +2015        )
        +2016
        +2017        if outer_apply or cross_apply:
        +2018            return self.expression(exp.Join, this=expression, side=None if cross_apply else "LEFT")
         2019
        -2020        if natural:
        -2021            kwargs["natural"] = True
        -2022        if side:
        -2023            kwargs["side"] = side.text
        -2024        if kind:
        -2025            kwargs["kind"] = kind.text
        -2026
        -2027        if self._match(TokenType.ON):
        -2028            kwargs["on"] = self._parse_conjunction()
        -2029        elif self._match(TokenType.USING):
        -2030            kwargs["using"] = self._parse_wrapped_id_vars()
        -2031
        -2032        return self.expression(exp.Join, **kwargs)  # type: ignore
        +2020        return expression
        +2021
        +2022    def _parse_join_side_and_kind(
        +2023        self,
        +2024    ) -> t.Tuple[t.Optional[Token], t.Optional[Token], t.Optional[Token]]:
        +2025        return (
        +2026            self._match(TokenType.NATURAL) and self._prev,
        +2027            self._match_set(self.JOIN_SIDES) and self._prev,
        +2028            self._match_set(self.JOIN_KINDS) and self._prev,
        +2029        )
        +2030
        +2031    def _parse_join(self, skip_join_token: bool = False) -> t.Optional[exp.Expression]:
        +2032        natural, side, kind = self._parse_join_side_and_kind()
         2033
        -2034    def _parse_index(self) -> exp.Expression:
        -2035        index = self._parse_id_var()
        -2036        self._match(TokenType.ON)
        -2037        self._match(TokenType.TABLE)  # hive
        -2038
        -2039        return self.expression(
        -2040            exp.Index,
        -2041            this=index,
        -2042            table=self.expression(exp.Table, this=self._parse_id_var()),
        -2043            columns=self._parse_expression(),
        -2044        )
        -2045
        -2046    def _parse_create_table_index(self) -> t.Optional[exp.Expression]:
        -2047        unique = self._match(TokenType.UNIQUE)
        -2048        primary = self._match_text_seq("PRIMARY")
        -2049        amp = self._match_text_seq("AMP")
        -2050        if not self._match(TokenType.INDEX):
        -2051            return None
        -2052        index = self._parse_id_var()
        -2053        columns = None
        -2054        if self._match(TokenType.L_PAREN, advance=False):
        -2055            columns = self._parse_wrapped_csv(self._parse_column)
        -2056        return self.expression(
        -2057            exp.Index,
        -2058            this=index,
        -2059            columns=columns,
        -2060            unique=unique,
        -2061            primary=primary,
        -2062            amp=amp,
        -2063        )
        -2064
        -2065    def _parse_table_parts(self, schema: bool = False) -> exp.Expression:
        -2066        catalog = None
        -2067        db = None
        -2068
        -2069        table = (
        -2070            (not schema and self._parse_function())
        -2071            or self._parse_id_var(any_token=False)
        -2072            or self._parse_string_as_identifier()
        -2073        )
        -2074
        -2075        while self._match(TokenType.DOT):
        -2076            if catalog:
        -2077                # This allows nesting the table in arbitrarily many dot expressions if needed
        -2078                table = self.expression(exp.Dot, this=table, expression=self._parse_id_var())
        -2079            else:
        -2080                catalog = db
        -2081                db = table
        -2082                table = self._parse_id_var()
        -2083
        -2084        if not table:
        -2085            self.raise_error(f"Expected table name but got {self._curr}")
        -2086
        -2087        return self.expression(
        -2088            exp.Table, this=table, db=db, catalog=catalog, pivots=self._parse_pivots()
        -2089        )
        -2090
        -2091    def _parse_table(
        -2092        self, schema: bool = False, alias_tokens: t.Optional[t.Collection[TokenType]] = None
        -2093    ) -> t.Optional[exp.Expression]:
        -2094        lateral = self._parse_lateral()
        +2034        if not skip_join_token and not self._match(TokenType.JOIN):
        +2035            return None
        +2036
        +2037        kwargs: t.Dict[
        +2038            str, t.Optional[exp.Expression] | bool | str | t.List[t.Optional[exp.Expression]]
        +2039        ] = {"this": self._parse_table()}
        +2040
        +2041        if natural:
        +2042            kwargs["natural"] = True
        +2043        if side:
        +2044            kwargs["side"] = side.text
        +2045        if kind:
        +2046            kwargs["kind"] = kind.text
        +2047
        +2048        if self._match(TokenType.ON):
        +2049            kwargs["on"] = self._parse_conjunction()
        +2050        elif self._match(TokenType.USING):
        +2051            kwargs["using"] = self._parse_wrapped_id_vars()
        +2052
        +2053        return self.expression(exp.Join, **kwargs)  # type: ignore
        +2054
        +2055    def _parse_index(self) -> exp.Expression:
        +2056        index = self._parse_id_var()
        +2057        self._match(TokenType.ON)
        +2058        self._match(TokenType.TABLE)  # hive
        +2059
        +2060        return self.expression(
        +2061            exp.Index,
        +2062            this=index,
        +2063            table=self.expression(exp.Table, this=self._parse_id_var()),
        +2064            columns=self._parse_expression(),
        +2065        )
        +2066
        +2067    def _parse_create_table_index(self) -> t.Optional[exp.Expression]:
        +2068        unique = self._match(TokenType.UNIQUE)
        +2069        primary = self._match_text_seq("PRIMARY")
        +2070        amp = self._match_text_seq("AMP")
        +2071        if not self._match(TokenType.INDEX):
        +2072            return None
        +2073        index = self._parse_id_var()
        +2074        columns = None
        +2075        if self._match(TokenType.L_PAREN, advance=False):
        +2076            columns = self._parse_wrapped_csv(self._parse_column)
        +2077        return self.expression(
        +2078            exp.Index,
        +2079            this=index,
        +2080            columns=columns,
        +2081            unique=unique,
        +2082            primary=primary,
        +2083            amp=amp,
        +2084        )
        +2085
        +2086    def _parse_table_parts(self, schema: bool = False) -> exp.Expression:
        +2087        catalog = None
        +2088        db = None
        +2089
        +2090        table = (
        +2091            (not schema and self._parse_function())
        +2092            or self._parse_id_var(any_token=False)
        +2093            or self._parse_string_as_identifier()
        +2094        )
         2095
        -2096        if lateral:
        -2097            return lateral
        -2098
        -2099        unnest = self._parse_unnest()
        -2100
        -2101        if unnest:
        -2102            return unnest
        -2103
        -2104        values = self._parse_derived_table_values()
        -2105
        -2106        if values:
        -2107            return values
        -2108
        -2109        subquery = self._parse_select(table=True)
        -2110
        -2111        if subquery:
        -2112            if not subquery.args.get("pivots"):
        -2113                subquery.set("pivots", self._parse_pivots())
        -2114            return subquery
        -2115
        -2116        this = self._parse_table_parts(schema=schema)
        -2117
        -2118        if schema:
        -2119            return self._parse_schema(this=this)
        -2120
        -2121        if self.alias_post_tablesample:
        -2122            table_sample = self._parse_table_sample()
        -2123
        -2124        alias = self._parse_table_alias(alias_tokens=alias_tokens or self.TABLE_ALIAS_TOKENS)
        -2125
        -2126        if alias:
        -2127            this.set("alias", alias)
        -2128
        -2129        if not this.args.get("pivots"):
        -2130            this.set("pivots", self._parse_pivots())
        +2096        while self._match(TokenType.DOT):
        +2097            if catalog:
        +2098                # This allows nesting the table in arbitrarily many dot expressions if needed
        +2099                table = self.expression(exp.Dot, this=table, expression=self._parse_id_var())
        +2100            else:
        +2101                catalog = db
        +2102                db = table
        +2103                table = self._parse_id_var()
        +2104
        +2105        if not table:
        +2106            self.raise_error(f"Expected table name but got {self._curr}")
        +2107
        +2108        return self.expression(
        +2109            exp.Table, this=table, db=db, catalog=catalog, pivots=self._parse_pivots()
        +2110        )
        +2111
        +2112    def _parse_table(
        +2113        self, schema: bool = False, alias_tokens: t.Optional[t.Collection[TokenType]] = None
        +2114    ) -> t.Optional[exp.Expression]:
        +2115        lateral = self._parse_lateral()
        +2116
        +2117        if lateral:
        +2118            return lateral
        +2119
        +2120        unnest = self._parse_unnest()
        +2121
        +2122        if unnest:
        +2123            return unnest
        +2124
        +2125        values = self._parse_derived_table_values()
        +2126
        +2127        if values:
        +2128            return values
        +2129
        +2130        subquery = self._parse_select(table=True)
         2131
        -2132        if self._match_pair(TokenType.WITH, TokenType.L_PAREN):
        -2133            this.set(
        -2134                "hints",
        -2135                self._parse_csv(lambda: self._parse_function() or self._parse_var(any_token=True)),
        -2136            )
        -2137            self._match_r_paren()
        +2132        if subquery:
        +2133            if not subquery.args.get("pivots"):
        +2134                subquery.set("pivots", self._parse_pivots())
        +2135            return subquery
        +2136
        +2137        this = self._parse_table_parts(schema=schema)
         2138
        -2139        if not self.alias_post_tablesample:
        -2140            table_sample = self._parse_table_sample()
        +2139        if schema:
        +2140            return self._parse_schema(this=this)
         2141
        -2142        if table_sample:
        -2143            table_sample.set("this", this)
        -2144            this = table_sample
        -2145
        -2146        return this
        -2147
        -2148    def _parse_unnest(self) -> t.Optional[exp.Expression]:
        -2149        if not self._match(TokenType.UNNEST):
        -2150            return None
        -2151
        -2152        expressions = self._parse_wrapped_csv(self._parse_column)
        -2153        ordinality = bool(self._match(TokenType.WITH) and self._match(TokenType.ORDINALITY))
        -2154        alias = self._parse_table_alias()
        -2155
        -2156        if alias and self.unnest_column_only:
        -2157            if alias.args.get("columns"):
        -2158                self.raise_error("Unexpected extra column alias in unnest.")
        -2159            alias.set("columns", [alias.this])
        -2160            alias.set("this", None)
        -2161
        -2162        offset = None
        -2163        if self._match_pair(TokenType.WITH, TokenType.OFFSET):
        -2164            self._match(TokenType.ALIAS)
        -2165            offset = self._parse_conjunction()
        +2142        if self.alias_post_tablesample:
        +2143            table_sample = self._parse_table_sample()
        +2144
        +2145        alias = self._parse_table_alias(alias_tokens=alias_tokens or self.TABLE_ALIAS_TOKENS)
        +2146
        +2147        if alias:
        +2148            this.set("alias", alias)
        +2149
        +2150        if not this.args.get("pivots"):
        +2151            this.set("pivots", self._parse_pivots())
        +2152
        +2153        if self._match_pair(TokenType.WITH, TokenType.L_PAREN):
        +2154            this.set(
        +2155                "hints",
        +2156                self._parse_csv(lambda: self._parse_function() or self._parse_var(any_token=True)),
        +2157            )
        +2158            self._match_r_paren()
        +2159
        +2160        if not self.alias_post_tablesample:
        +2161            table_sample = self._parse_table_sample()
        +2162
        +2163        if table_sample:
        +2164            table_sample.set("this", this)
        +2165            this = table_sample
         2166
        -2167        return self.expression(
        -2168            exp.Unnest,
        -2169            expressions=expressions,
        -2170            ordinality=ordinality,
        -2171            alias=alias,
        -2172            offset=offset,
        -2173        )
        -2174
        -2175    def _parse_derived_table_values(self) -> t.Optional[exp.Expression]:
        -2176        is_derived = self._match_pair(TokenType.L_PAREN, TokenType.VALUES)
        -2177        if not is_derived and not self._match(TokenType.VALUES):
        -2178            return None
        -2179
        -2180        expressions = self._parse_csv(self._parse_value)
        -2181
        -2182        if is_derived:
        -2183            self._match_r_paren()
        -2184
        -2185        return self.expression(exp.Values, expressions=expressions, alias=self._parse_table_alias())
        -2186
        -2187    def _parse_table_sample(self, as_modifier: bool = False) -> t.Optional[exp.Expression]:
        -2188        if not self._match(TokenType.TABLE_SAMPLE) and not (
        -2189            as_modifier and self._match_text_seq("USING", "SAMPLE")
        -2190        ):
        -2191            return None
        -2192
        -2193        bucket_numerator = None
        -2194        bucket_denominator = None
        -2195        bucket_field = None
        -2196        percent = None
        -2197        rows = None
        -2198        size = None
        -2199        seed = None
        +2167        return this
        +2168
        +2169    def _parse_unnest(self) -> t.Optional[exp.Expression]:
        +2170        if not self._match(TokenType.UNNEST):
        +2171            return None
        +2172
        +2173        expressions = self._parse_wrapped_csv(self._parse_column)
        +2174        ordinality = bool(self._match(TokenType.WITH) and self._match(TokenType.ORDINALITY))
        +2175        alias = self._parse_table_alias()
        +2176
        +2177        if alias and self.unnest_column_only:
        +2178            if alias.args.get("columns"):
        +2179                self.raise_error("Unexpected extra column alias in unnest.")
        +2180            alias.set("columns", [alias.this])
        +2181            alias.set("this", None)
        +2182
        +2183        offset = None
        +2184        if self._match_pair(TokenType.WITH, TokenType.OFFSET):
        +2185            self._match(TokenType.ALIAS)
        +2186            offset = self._parse_conjunction()
        +2187
        +2188        return self.expression(
        +2189            exp.Unnest,
        +2190            expressions=expressions,
        +2191            ordinality=ordinality,
        +2192            alias=alias,
        +2193            offset=offset,
        +2194        )
        +2195
        +2196    def _parse_derived_table_values(self) -> t.Optional[exp.Expression]:
        +2197        is_derived = self._match_pair(TokenType.L_PAREN, TokenType.VALUES)
        +2198        if not is_derived and not self._match(TokenType.VALUES):
        +2199            return None
         2200
        -2201        kind = "TABLESAMPLE" if self._prev.token_type == TokenType.TABLE_SAMPLE else "USING SAMPLE"
        -2202        method = self._parse_var(tokens=(TokenType.ROW,))
        -2203
        -2204        self._match(TokenType.L_PAREN)
        +2201        expressions = self._parse_csv(self._parse_value)
        +2202
        +2203        if is_derived:
        +2204            self._match_r_paren()
         2205
        -2206        num = self._parse_number()
        +2206        return self.expression(exp.Values, expressions=expressions, alias=self._parse_table_alias())
         2207
        -2208        if self._match(TokenType.BUCKET):
        -2209            bucket_numerator = self._parse_number()
        -2210            self._match(TokenType.OUT_OF)
        -2211            bucket_denominator = bucket_denominator = self._parse_number()
        -2212            self._match(TokenType.ON)
        -2213            bucket_field = self._parse_field()
        -2214        elif self._match_set((TokenType.PERCENT, TokenType.MOD)):
        -2215            percent = num
        -2216        elif self._match(TokenType.ROWS):
        -2217            rows = num
        -2218        else:
        -2219            size = num
        -2220
        -2221        self._match(TokenType.R_PAREN)
        -2222
        -2223        if self._match(TokenType.L_PAREN):
        -2224            method = self._parse_var()
        -2225            seed = self._match(TokenType.COMMA) and self._parse_number()
        -2226            self._match_r_paren()
        -2227        elif self._match_texts(("SEED", "REPEATABLE")):
        -2228            seed = self._parse_wrapped(self._parse_number)
        -2229
        -2230        return self.expression(
        -2231            exp.TableSample,
        -2232            method=method,
        -2233            bucket_numerator=bucket_numerator,
        -2234            bucket_denominator=bucket_denominator,
        -2235            bucket_field=bucket_field,
        -2236            percent=percent,
        -2237            rows=rows,
        -2238            size=size,
        -2239            seed=seed,
        -2240            kind=kind,
        -2241        )
        -2242
        -2243    def _parse_pivots(self) -> t.List[t.Optional[exp.Expression]]:
        -2244        return list(iter(self._parse_pivot, None))
        -2245
        -2246    def _parse_pivot(self) -> t.Optional[exp.Expression]:
        -2247        index = self._index
        -2248
        -2249        if self._match(TokenType.PIVOT):
        -2250            unpivot = False
        -2251        elif self._match(TokenType.UNPIVOT):
        -2252            unpivot = True
        -2253        else:
        -2254            return None
        -2255
        -2256        expressions = []
        -2257        field = None
        -2258
        -2259        if not self._match(TokenType.L_PAREN):
        -2260            self._retreat(index)
        -2261            return None
        -2262
        -2263        if unpivot:
        -2264            expressions = self._parse_csv(self._parse_column)
        -2265        else:
        -2266            expressions = self._parse_csv(lambda: self._parse_alias(self._parse_function()))
        -2267
        -2268        if not self._match(TokenType.FOR):
        -2269            self.raise_error("Expecting FOR")
        -2270
        -2271        value = self._parse_column()
        -2272
        -2273        if not self._match(TokenType.IN):
        -2274            self.raise_error("Expecting IN")
        -2275
        -2276        field = self._parse_in(value)
        -2277
        -2278        self._match_r_paren()
        +2208    def _parse_table_sample(self, as_modifier: bool = False) -> t.Optional[exp.Expression]:
        +2209        if not self._match(TokenType.TABLE_SAMPLE) and not (
        +2210            as_modifier and self._match_text_seq("USING", "SAMPLE")
        +2211        ):
        +2212            return None
        +2213
        +2214        bucket_numerator = None
        +2215        bucket_denominator = None
        +2216        bucket_field = None
        +2217        percent = None
        +2218        rows = None
        +2219        size = None
        +2220        seed = None
        +2221
        +2222        kind = "TABLESAMPLE" if self._prev.token_type == TokenType.TABLE_SAMPLE else "USING SAMPLE"
        +2223        method = self._parse_var(tokens=(TokenType.ROW,))
        +2224
        +2225        self._match(TokenType.L_PAREN)
        +2226
        +2227        num = self._parse_number()
        +2228
        +2229        if self._match(TokenType.BUCKET):
        +2230            bucket_numerator = self._parse_number()
        +2231            self._match(TokenType.OUT_OF)
        +2232            bucket_denominator = bucket_denominator = self._parse_number()
        +2233            self._match(TokenType.ON)
        +2234            bucket_field = self._parse_field()
        +2235        elif self._match_set((TokenType.PERCENT, TokenType.MOD)):
        +2236            percent = num
        +2237        elif self._match(TokenType.ROWS):
        +2238            rows = num
        +2239        else:
        +2240            size = num
        +2241
        +2242        self._match(TokenType.R_PAREN)
        +2243
        +2244        if self._match(TokenType.L_PAREN):
        +2245            method = self._parse_var()
        +2246            seed = self._match(TokenType.COMMA) and self._parse_number()
        +2247            self._match_r_paren()
        +2248        elif self._match_texts(("SEED", "REPEATABLE")):
        +2249            seed = self._parse_wrapped(self._parse_number)
        +2250
        +2251        return self.expression(
        +2252            exp.TableSample,
        +2253            method=method,
        +2254            bucket_numerator=bucket_numerator,
        +2255            bucket_denominator=bucket_denominator,
        +2256            bucket_field=bucket_field,
        +2257            percent=percent,
        +2258            rows=rows,
        +2259            size=size,
        +2260            seed=seed,
        +2261            kind=kind,
        +2262        )
        +2263
        +2264    def _parse_pivots(self) -> t.List[t.Optional[exp.Expression]]:
        +2265        return list(iter(self._parse_pivot, None))
        +2266
        +2267    def _parse_pivot(self) -> t.Optional[exp.Expression]:
        +2268        index = self._index
        +2269
        +2270        if self._match(TokenType.PIVOT):
        +2271            unpivot = False
        +2272        elif self._match(TokenType.UNPIVOT):
        +2273            unpivot = True
        +2274        else:
        +2275            return None
        +2276
        +2277        expressions = []
        +2278        field = None
         2279
        -2280        pivot = self.expression(exp.Pivot, expressions=expressions, field=field, unpivot=unpivot)
        -2281
        -2282        if not self._match_set((TokenType.PIVOT, TokenType.UNPIVOT), advance=False):
        -2283            pivot.set("alias", self._parse_table_alias())
        -2284
        -2285        return pivot
        -2286
        -2287    def _parse_where(self, skip_where_token: bool = False) -> t.Optional[exp.Expression]:
        -2288        if not skip_where_token and not self._match(TokenType.WHERE):
        -2289            return None
        -2290
        -2291        return self.expression(
        -2292            exp.Where, comments=self._prev_comments, this=self._parse_conjunction()
        -2293        )
        -2294
        -2295    def _parse_group(self, skip_group_by_token: bool = False) -> t.Optional[exp.Expression]:
        -2296        if not skip_group_by_token and not self._match(TokenType.GROUP_BY):
        -2297            return None
        +2280        if not self._match(TokenType.L_PAREN):
        +2281            self._retreat(index)
        +2282            return None
        +2283
        +2284        if unpivot:
        +2285            expressions = self._parse_csv(self._parse_column)
        +2286        else:
        +2287            expressions = self._parse_csv(lambda: self._parse_alias(self._parse_function()))
        +2288
        +2289        if not self._match(TokenType.FOR):
        +2290            self.raise_error("Expecting FOR")
        +2291
        +2292        value = self._parse_column()
        +2293
        +2294        if not self._match(TokenType.IN):
        +2295            self.raise_error("Expecting IN")
        +2296
        +2297        field = self._parse_in(value)
         2298
        -2299        elements = defaultdict(list)
        +2299        self._match_r_paren()
         2300
        -2301        while True:
        -2302            expressions = self._parse_csv(self._parse_conjunction)
        -2303            if expressions:
        -2304                elements["expressions"].extend(expressions)
        +2301        pivot = self.expression(exp.Pivot, expressions=expressions, field=field, unpivot=unpivot)
        +2302
        +2303        if not self._match_set((TokenType.PIVOT, TokenType.UNPIVOT), advance=False):
        +2304            pivot.set("alias", self._parse_table_alias())
         2305
        -2306            grouping_sets = self._parse_grouping_sets()
        -2307            if grouping_sets:
        -2308                elements["grouping_sets"].extend(grouping_sets)
        -2309
        -2310            rollup = None
        -2311            cube = None
        -2312
        -2313            with_ = self._match(TokenType.WITH)
        -2314            if self._match(TokenType.ROLLUP):
        -2315                rollup = with_ or self._parse_wrapped_csv(self._parse_column)
        -2316                elements["rollup"].extend(ensure_list(rollup))
        -2317
        -2318            if self._match(TokenType.CUBE):
        -2319                cube = with_ or self._parse_wrapped_csv(self._parse_column)
        -2320                elements["cube"].extend(ensure_list(cube))
        +2306        return pivot
        +2307
        +2308    def _parse_where(self, skip_where_token: bool = False) -> t.Optional[exp.Expression]:
        +2309        if not skip_where_token and not self._match(TokenType.WHERE):
        +2310            return None
        +2311
        +2312        return self.expression(
        +2313            exp.Where, comments=self._prev_comments, this=self._parse_conjunction()
        +2314        )
        +2315
        +2316    def _parse_group(self, skip_group_by_token: bool = False) -> t.Optional[exp.Expression]:
        +2317        if not skip_group_by_token and not self._match(TokenType.GROUP_BY):
        +2318            return None
        +2319
        +2320        elements = defaultdict(list)
         2321
        -2322            if not (expressions or grouping_sets or rollup or cube):
        -2323                break
        -2324
        -2325        return self.expression(exp.Group, **elements)  # type: ignore
        +2322        while True:
        +2323            expressions = self._parse_csv(self._parse_conjunction)
        +2324            if expressions:
        +2325                elements["expressions"].extend(expressions)
         2326
        -2327    def _parse_grouping_sets(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]:
        -2328        if not self._match(TokenType.GROUPING_SETS):
        -2329            return None
        +2327            grouping_sets = self._parse_grouping_sets()
        +2328            if grouping_sets:
        +2329                elements["grouping_sets"].extend(grouping_sets)
         2330
        -2331        return self._parse_wrapped_csv(self._parse_grouping_set)
        -2332
        -2333    def _parse_grouping_set(self) -> t.Optional[exp.Expression]:
        -2334        if self._match(TokenType.L_PAREN):
        -2335            grouping_set = self._parse_csv(self._parse_column)
        -2336            self._match_r_paren()
        -2337            return self.expression(exp.Tuple, expressions=grouping_set)
        +2331            rollup = None
        +2332            cube = None
        +2333
        +2334            with_ = self._match(TokenType.WITH)
        +2335            if self._match(TokenType.ROLLUP):
        +2336                rollup = with_ or self._parse_wrapped_csv(self._parse_column)
        +2337                elements["rollup"].extend(ensure_list(rollup))
         2338
        -2339        return self._parse_column()
        -2340
        -2341    def _parse_having(self, skip_having_token: bool = False) -> t.Optional[exp.Expression]:
        -2342        if not skip_having_token and not self._match(TokenType.HAVING):
        -2343            return None
        -2344        return self.expression(exp.Having, this=self._parse_conjunction())
        +2339            if self._match(TokenType.CUBE):
        +2340                cube = with_ or self._parse_wrapped_csv(self._parse_column)
        +2341                elements["cube"].extend(ensure_list(cube))
        +2342
        +2343            if not (expressions or grouping_sets or rollup or cube):
        +2344                break
         2345
        -2346    def _parse_qualify(self) -> t.Optional[exp.Expression]:
        -2347        if not self._match(TokenType.QUALIFY):
        -2348            return None
        -2349        return self.expression(exp.Qualify, this=self._parse_conjunction())
        -2350
        -2351    def _parse_order(
        -2352        self, this: t.Optional[exp.Expression] = None, skip_order_token: bool = False
        -2353    ) -> t.Optional[exp.Expression]:
        -2354        if not skip_order_token and not self._match(TokenType.ORDER_BY):
        -2355            return this
        -2356
        -2357        return self.expression(
        -2358            exp.Order, this=this, expressions=self._parse_csv(self._parse_ordered)
        -2359        )
        -2360
        -2361    def _parse_sort(
        -2362        self, token_type: TokenType, exp_class: t.Type[exp.Expression]
        -2363    ) -> t.Optional[exp.Expression]:
        -2364        if not self._match(token_type):
        -2365            return None
        -2366        return self.expression(exp_class, expressions=self._parse_csv(self._parse_ordered))
        -2367
        -2368    def _parse_ordered(self) -> exp.Expression:
        -2369        this = self._parse_conjunction()
        -2370        self._match(TokenType.ASC)
        -2371        is_desc = self._match(TokenType.DESC)
        -2372        is_nulls_first = self._match(TokenType.NULLS_FIRST)
        -2373        is_nulls_last = self._match(TokenType.NULLS_LAST)
        -2374        desc = is_desc or False
        -2375        asc = not desc
        -2376        nulls_first = is_nulls_first or False
        -2377        explicitly_null_ordered = is_nulls_first or is_nulls_last
        -2378        if (
        -2379            not explicitly_null_ordered
        -2380            and (
        -2381                (asc and self.null_ordering == "nulls_are_small")
        -2382                or (desc and self.null_ordering != "nulls_are_small")
        -2383            )
        -2384            and self.null_ordering != "nulls_are_last"
        -2385        ):
        -2386            nulls_first = True
        -2387
        -2388        return self.expression(exp.Ordered, this=this, desc=desc, nulls_first=nulls_first)
        -2389
        -2390    def _parse_limit(
        -2391        self, this: t.Optional[exp.Expression] = None, top: bool = False
        -2392    ) -> t.Optional[exp.Expression]:
        -2393        if self._match(TokenType.TOP if top else TokenType.LIMIT):
        -2394            limit_paren = self._match(TokenType.L_PAREN)
        -2395            limit_exp = self.expression(
        -2396                exp.Limit, this=this, expression=self._parse_number() if top else self._parse_term()
        -2397            )
        -2398
        -2399            if limit_paren:
        -2400                self._match_r_paren()
        -2401
        -2402            return limit_exp
        -2403
        -2404        if self._match(TokenType.FETCH):
        -2405            direction = self._match_set((TokenType.FIRST, TokenType.NEXT))
        -2406            direction = self._prev.text if direction else "FIRST"
        -2407            count = self._parse_number()
        -2408            self._match_set((TokenType.ROW, TokenType.ROWS))
        -2409            self._match(TokenType.ONLY)
        -2410            return self.expression(exp.Fetch, direction=direction, count=count)
        -2411
        -2412        return this
        -2413
        -2414    def _parse_offset(self, this: t.Optional[exp.Expression] = None) -> t.Optional[exp.Expression]:
        -2415        if not self._match_set((TokenType.OFFSET, TokenType.COMMA)):
        -2416            return this
        -2417
        -2418        count = self._parse_number()
        -2419        self._match_set((TokenType.ROW, TokenType.ROWS))
        -2420        return self.expression(exp.Offset, this=this, expression=count)
        -2421
        -2422    def _parse_lock(self) -> t.Optional[exp.Expression]:
        -2423        if self._match_text_seq("FOR", "UPDATE"):
        -2424            return self.expression(exp.Lock, update=True)
        -2425        if self._match_text_seq("FOR", "SHARE"):
        -2426            return self.expression(exp.Lock, update=False)
        -2427
        -2428        return None
        -2429
        -2430    def _parse_set_operations(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
        -2431        if not self._match_set(self.SET_OPERATIONS):
        -2432            return this
        -2433
        -2434        token_type = self._prev.token_type
        -2435
        -2436        if token_type == TokenType.UNION:
        -2437            expression = exp.Union
        -2438        elif token_type == TokenType.EXCEPT:
        -2439            expression = exp.Except
        -2440        else:
        -2441            expression = exp.Intersect
        +2346        return self.expression(exp.Group, **elements)  # type: ignore
        +2347
        +2348    def _parse_grouping_sets(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]:
        +2349        if not self._match(TokenType.GROUPING_SETS):
        +2350            return None
        +2351
        +2352        return self._parse_wrapped_csv(self._parse_grouping_set)
        +2353
        +2354    def _parse_grouping_set(self) -> t.Optional[exp.Expression]:
        +2355        if self._match(TokenType.L_PAREN):
        +2356            grouping_set = self._parse_csv(self._parse_column)
        +2357            self._match_r_paren()
        +2358            return self.expression(exp.Tuple, expressions=grouping_set)
        +2359
        +2360        return self._parse_column()
        +2361
        +2362    def _parse_having(self, skip_having_token: bool = False) -> t.Optional[exp.Expression]:
        +2363        if not skip_having_token and not self._match(TokenType.HAVING):
        +2364            return None
        +2365        return self.expression(exp.Having, this=self._parse_conjunction())
        +2366
        +2367    def _parse_qualify(self) -> t.Optional[exp.Expression]:
        +2368        if not self._match(TokenType.QUALIFY):
        +2369            return None
        +2370        return self.expression(exp.Qualify, this=self._parse_conjunction())
        +2371
        +2372    def _parse_order(
        +2373        self, this: t.Optional[exp.Expression] = None, skip_order_token: bool = False
        +2374    ) -> t.Optional[exp.Expression]:
        +2375        if not skip_order_token and not self._match(TokenType.ORDER_BY):
        +2376            return this
        +2377
        +2378        return self.expression(
        +2379            exp.Order, this=this, expressions=self._parse_csv(self._parse_ordered)
        +2380        )
        +2381
        +2382    def _parse_sort(
        +2383        self, token_type: TokenType, exp_class: t.Type[exp.Expression]
        +2384    ) -> t.Optional[exp.Expression]:
        +2385        if not self._match(token_type):
        +2386            return None
        +2387        return self.expression(exp_class, expressions=self._parse_csv(self._parse_ordered))
        +2388
        +2389    def _parse_ordered(self) -> exp.Expression:
        +2390        this = self._parse_conjunction()
        +2391        self._match(TokenType.ASC)
        +2392        is_desc = self._match(TokenType.DESC)
        +2393        is_nulls_first = self._match(TokenType.NULLS_FIRST)
        +2394        is_nulls_last = self._match(TokenType.NULLS_LAST)
        +2395        desc = is_desc or False
        +2396        asc = not desc
        +2397        nulls_first = is_nulls_first or False
        +2398        explicitly_null_ordered = is_nulls_first or is_nulls_last
        +2399        if (
        +2400            not explicitly_null_ordered
        +2401            and (
        +2402                (asc and self.null_ordering == "nulls_are_small")
        +2403                or (desc and self.null_ordering != "nulls_are_small")
        +2404            )
        +2405            and self.null_ordering != "nulls_are_last"
        +2406        ):
        +2407            nulls_first = True
        +2408
        +2409        return self.expression(exp.Ordered, this=this, desc=desc, nulls_first=nulls_first)
        +2410
        +2411    def _parse_limit(
        +2412        self, this: t.Optional[exp.Expression] = None, top: bool = False
        +2413    ) -> t.Optional[exp.Expression]:
        +2414        if self._match(TokenType.TOP if top else TokenType.LIMIT):
        +2415            limit_paren = self._match(TokenType.L_PAREN)
        +2416            limit_exp = self.expression(
        +2417                exp.Limit, this=this, expression=self._parse_number() if top else self._parse_term()
        +2418            )
        +2419
        +2420            if limit_paren:
        +2421                self._match_r_paren()
        +2422
        +2423            return limit_exp
        +2424
        +2425        if self._match(TokenType.FETCH):
        +2426            direction = self._match_set((TokenType.FIRST, TokenType.NEXT))
        +2427            direction = self._prev.text if direction else "FIRST"
        +2428            count = self._parse_number()
        +2429            self._match_set((TokenType.ROW, TokenType.ROWS))
        +2430            self._match(TokenType.ONLY)
        +2431            return self.expression(exp.Fetch, direction=direction, count=count)
        +2432
        +2433        return this
        +2434
        +2435    def _parse_offset(self, this: t.Optional[exp.Expression] = None) -> t.Optional[exp.Expression]:
        +2436        if not self._match_set((TokenType.OFFSET, TokenType.COMMA)):
        +2437            return this
        +2438
        +2439        count = self._parse_number()
        +2440        self._match_set((TokenType.ROW, TokenType.ROWS))
        +2441        return self.expression(exp.Offset, this=this, expression=count)
         2442
        -2443        return self.expression(
        -2444            expression,
        -2445            this=this,
        -2446            distinct=self._match(TokenType.DISTINCT) or not self._match(TokenType.ALL),
        -2447            expression=self._parse_set_operations(self._parse_select(nested=True)),
        -2448        )
        -2449
        -2450    def _parse_expression(self) -> t.Optional[exp.Expression]:
        -2451        return self._parse_alias(self._parse_conjunction())
        -2452
        -2453    def _parse_conjunction(self) -> t.Optional[exp.Expression]:
        -2454        return self._parse_tokens(self._parse_equality, self.CONJUNCTION)
        -2455
        -2456    def _parse_equality(self) -> t.Optional[exp.Expression]:
        -2457        return self._parse_tokens(self._parse_comparison, self.EQUALITY)
        -2458
        -2459    def _parse_comparison(self) -> t.Optional[exp.Expression]:
        -2460        return self._parse_tokens(self._parse_range, self.COMPARISON)
        -2461
        -2462    def _parse_range(self) -> t.Optional[exp.Expression]:
        -2463        this = self._parse_bitwise()
        -2464        negate = self._match(TokenType.NOT)
        -2465
        -2466        if self._match_set(self.RANGE_PARSERS):
        -2467            this = self.RANGE_PARSERS[self._prev.token_type](self, this)
        -2468        elif self._match(TokenType.ISNULL):
        -2469            this = self.expression(exp.Is, this=this, expression=exp.Null())
        +2443    def _parse_lock(self) -> t.Optional[exp.Expression]:
        +2444        if self._match_text_seq("FOR", "UPDATE"):
        +2445            return self.expression(exp.Lock, update=True)
        +2446        if self._match_text_seq("FOR", "SHARE"):
        +2447            return self.expression(exp.Lock, update=False)
        +2448
        +2449        return None
        +2450
        +2451    def _parse_set_operations(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
        +2452        if not self._match_set(self.SET_OPERATIONS):
        +2453            return this
        +2454
        +2455        token_type = self._prev.token_type
        +2456
        +2457        if token_type == TokenType.UNION:
        +2458            expression = exp.Union
        +2459        elif token_type == TokenType.EXCEPT:
        +2460            expression = exp.Except
        +2461        else:
        +2462            expression = exp.Intersect
        +2463
        +2464        return self.expression(
        +2465            expression,
        +2466            this=this,
        +2467            distinct=self._match(TokenType.DISTINCT) or not self._match(TokenType.ALL),
        +2468            expression=self._parse_set_operations(self._parse_select(nested=True)),
        +2469        )
         2470
        -2471        # Postgres supports ISNULL and NOTNULL for conditions.
        -2472        # https://blog.andreiavram.ro/postgresql-null-composite-type/
        -2473        if self._match(TokenType.NOTNULL):
        -2474            this = self.expression(exp.Is, this=this, expression=exp.Null())
        -2475            this = self.expression(exp.Not, this=this)
        +2471    def _parse_expression(self) -> t.Optional[exp.Expression]:
        +2472        return self._parse_alias(self._parse_conjunction())
        +2473
        +2474    def _parse_conjunction(self) -> t.Optional[exp.Expression]:
        +2475        return self._parse_tokens(self._parse_equality, self.CONJUNCTION)
         2476
        -2477        if negate:
        -2478            this = self.expression(exp.Not, this=this)
        +2477    def _parse_equality(self) -> t.Optional[exp.Expression]:
        +2478        return self._parse_tokens(self._parse_comparison, self.EQUALITY)
         2479
        -2480        if self._match(TokenType.IS):
        -2481            this = self._parse_is(this)
        +2480    def _parse_comparison(self) -> t.Optional[exp.Expression]:
        +2481        return self._parse_tokens(self._parse_range, self.COMPARISON)
         2482
        -2483        return this
        -2484
        -2485    def _parse_is(self, this: t.Optional[exp.Expression]) -> exp.Expression:
        -2486        negate = self._match(TokenType.NOT)
        -2487        if self._match(TokenType.DISTINCT_FROM):
        -2488            klass = exp.NullSafeEQ if negate else exp.NullSafeNEQ
        -2489            return self.expression(klass, this=this, expression=self._parse_expression())
        -2490
        -2491        this = self.expression(
        -2492            exp.Is,
        -2493            this=this,
        -2494            expression=self._parse_null() or self._parse_boolean(),
        -2495        )
        -2496        return self.expression(exp.Not, this=this) if negate else this
        +2483    def _parse_range(self) -> t.Optional[exp.Expression]:
        +2484        this = self._parse_bitwise()
        +2485        negate = self._match(TokenType.NOT)
        +2486
        +2487        if self._match_set(self.RANGE_PARSERS):
        +2488            this = self.RANGE_PARSERS[self._prev.token_type](self, this)
        +2489        elif self._match(TokenType.ISNULL):
        +2490            this = self.expression(exp.Is, this=this, expression=exp.Null())
        +2491
        +2492        # Postgres supports ISNULL and NOTNULL for conditions.
        +2493        # https://blog.andreiavram.ro/postgresql-null-composite-type/
        +2494        if self._match(TokenType.NOTNULL):
        +2495            this = self.expression(exp.Is, this=this, expression=exp.Null())
        +2496            this = self.expression(exp.Not, this=this)
         2497
        -2498    def _parse_in(self, this: t.Optional[exp.Expression]) -> exp.Expression:
        -2499        unnest = self._parse_unnest()
        -2500        if unnest:
        -2501            this = self.expression(exp.In, this=this, unnest=unnest)
        -2502        elif self._match(TokenType.L_PAREN):
        -2503            expressions = self._parse_csv(self._parse_select_or_expression)
        -2504
        -2505            if len(expressions) == 1 and isinstance(expressions[0], exp.Subqueryable):
        -2506                this = self.expression(exp.In, this=this, query=expressions[0])
        -2507            else:
        -2508                this = self.expression(exp.In, this=this, expressions=expressions)
        -2509
        -2510            self._match_r_paren()
        -2511        else:
        -2512            this = self.expression(exp.In, this=this, field=self._parse_field())
        -2513
        -2514        return this
        -2515
        -2516    def _parse_between(self, this: exp.Expression) -> exp.Expression:
        -2517        low = self._parse_bitwise()
        -2518        self._match(TokenType.AND)
        -2519        high = self._parse_bitwise()
        -2520        return self.expression(exp.Between, this=this, low=low, high=high)
        -2521
        -2522    def _parse_escape(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
        -2523        if not self._match(TokenType.ESCAPE):
        -2524            return this
        -2525        return self.expression(exp.Escape, this=this, expression=self._parse_string())
        -2526
        -2527    def _parse_bitwise(self) -> t.Optional[exp.Expression]:
        -2528        this = self._parse_term()
        -2529
        -2530        while True:
        -2531            if self._match_set(self.BITWISE):
        -2532                this = self.expression(
        -2533                    self.BITWISE[self._prev.token_type],
        -2534                    this=this,
        -2535                    expression=self._parse_term(),
        -2536                )
        -2537            elif self._match_pair(TokenType.LT, TokenType.LT):
        -2538                this = self.expression(
        -2539                    exp.BitwiseLeftShift, this=this, expression=self._parse_term()
        -2540                )
        -2541            elif self._match_pair(TokenType.GT, TokenType.GT):
        -2542                this = self.expression(
        -2543                    exp.BitwiseRightShift, this=this, expression=self._parse_term()
        -2544                )
        -2545            else:
        -2546                break
        +2498        if negate:
        +2499            this = self.expression(exp.Not, this=this)
        +2500
        +2501        if self._match(TokenType.IS):
        +2502            this = self._parse_is(this)
        +2503
        +2504        return this
        +2505
        +2506    def _parse_is(self, this: t.Optional[exp.Expression]) -> exp.Expression:
        +2507        negate = self._match(TokenType.NOT)
        +2508        if self._match(TokenType.DISTINCT_FROM):
        +2509            klass = exp.NullSafeEQ if negate else exp.NullSafeNEQ
        +2510            return self.expression(klass, this=this, expression=self._parse_expression())
        +2511
        +2512        this = self.expression(
        +2513            exp.Is,
        +2514            this=this,
        +2515            expression=self._parse_null() or self._parse_boolean(),
        +2516        )
        +2517        return self.expression(exp.Not, this=this) if negate else this
        +2518
        +2519    def _parse_in(self, this: t.Optional[exp.Expression]) -> exp.Expression:
        +2520        unnest = self._parse_unnest()
        +2521        if unnest:
        +2522            this = self.expression(exp.In, this=this, unnest=unnest)
        +2523        elif self._match(TokenType.L_PAREN):
        +2524            expressions = self._parse_csv(self._parse_select_or_expression)
        +2525
        +2526            if len(expressions) == 1 and isinstance(expressions[0], exp.Subqueryable):
        +2527                this = self.expression(exp.In, this=this, query=expressions[0])
        +2528            else:
        +2529                this = self.expression(exp.In, this=this, expressions=expressions)
        +2530
        +2531            self._match_r_paren()
        +2532        else:
        +2533            this = self.expression(exp.In, this=this, field=self._parse_field())
        +2534
        +2535        return this
        +2536
        +2537    def _parse_between(self, this: exp.Expression) -> exp.Expression:
        +2538        low = self._parse_bitwise()
        +2539        self._match(TokenType.AND)
        +2540        high = self._parse_bitwise()
        +2541        return self.expression(exp.Between, this=this, low=low, high=high)
        +2542
        +2543    def _parse_escape(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
        +2544        if not self._match(TokenType.ESCAPE):
        +2545            return this
        +2546        return self.expression(exp.Escape, this=this, expression=self._parse_string())
         2547
        -2548        return this
        -2549
        -2550    def _parse_term(self) -> t.Optional[exp.Expression]:
        -2551        return self._parse_tokens(self._parse_factor, self.TERM)
        -2552
        -2553    def _parse_factor(self) -> t.Optional[exp.Expression]:
        -2554        return self._parse_tokens(self._parse_unary, self.FACTOR)
        -2555
        -2556    def _parse_unary(self) -> t.Optional[exp.Expression]:
        -2557        if self._match_set(self.UNARY_PARSERS):
        -2558            return self.UNARY_PARSERS[self._prev.token_type](self)
        -2559        return self._parse_at_time_zone(self._parse_type())
        -2560
        -2561    def _parse_type(self) -> t.Optional[exp.Expression]:
        -2562        if self._match(TokenType.INTERVAL):
        -2563            return self.expression(exp.Interval, this=self._parse_term(), unit=self._parse_field())
        -2564
        -2565        index = self._index
        -2566        type_token = self._parse_types(check_func=True)
        -2567        this = self._parse_column()
        +2548    def _parse_bitwise(self) -> t.Optional[exp.Expression]:
        +2549        this = self._parse_term()
        +2550
        +2551        while True:
        +2552            if self._match_set(self.BITWISE):
        +2553                this = self.expression(
        +2554                    self.BITWISE[self._prev.token_type],
        +2555                    this=this,
        +2556                    expression=self._parse_term(),
        +2557                )
        +2558            elif self._match_pair(TokenType.LT, TokenType.LT):
        +2559                this = self.expression(
        +2560                    exp.BitwiseLeftShift, this=this, expression=self._parse_term()
        +2561                )
        +2562            elif self._match_pair(TokenType.GT, TokenType.GT):
        +2563                this = self.expression(
        +2564                    exp.BitwiseRightShift, this=this, expression=self._parse_term()
        +2565                )
        +2566            else:
        +2567                break
         2568
        -2569        if type_token:
        -2570            if isinstance(this, exp.Literal):
        -2571                return self.expression(exp.Cast, this=this, to=type_token)
        -2572            if not type_token.args.get("expressions"):
        -2573                self._retreat(index)
        -2574                return self._parse_column()
        -2575            return type_token
        +2569        return this
        +2570
        +2571    def _parse_term(self) -> t.Optional[exp.Expression]:
        +2572        return self._parse_tokens(self._parse_factor, self.TERM)
        +2573
        +2574    def _parse_factor(self) -> t.Optional[exp.Expression]:
        +2575        return self._parse_tokens(self._parse_unary, self.FACTOR)
         2576
        -2577        return this
        -2578
        -2579    def _parse_types(self, check_func: bool = False) -> t.Optional[exp.Expression]:
        -2580        index = self._index
        +2577    def _parse_unary(self) -> t.Optional[exp.Expression]:
        +2578        if self._match_set(self.UNARY_PARSERS):
        +2579            return self.UNARY_PARSERS[self._prev.token_type](self)
        +2580        return self._parse_at_time_zone(self._parse_type())
         2581
        -2582        prefix = self._match_text_seq("SYSUDTLIB", ".")
        -2583
        -2584        if not self._match_set(self.TYPE_TOKENS):
        -2585            return None
        -2586
        -2587        type_token = self._prev.token_type
        -2588
        -2589        if type_token == TokenType.PSEUDO_TYPE:
        -2590            return self.expression(exp.PseudoType, this=self._prev.text)
        -2591
        -2592        nested = type_token in self.NESTED_TYPE_TOKENS
        -2593        is_struct = type_token == TokenType.STRUCT
        -2594        expressions = None
        -2595        maybe_func = False
        -2596
        -2597        if self._match(TokenType.L_PAREN):
        -2598            if is_struct:
        -2599                expressions = self._parse_csv(self._parse_struct_kwargs)
        -2600            elif nested:
        -2601                expressions = self._parse_csv(self._parse_types)
        -2602            else:
        -2603                expressions = self._parse_csv(self._parse_conjunction)
        +2582    def _parse_type(self) -> t.Optional[exp.Expression]:
        +2583        if self._match(TokenType.INTERVAL):
        +2584            return self.expression(exp.Interval, this=self._parse_term(), unit=self._parse_field())
        +2585
        +2586        index = self._index
        +2587        type_token = self._parse_types(check_func=True)
        +2588        this = self._parse_column()
        +2589
        +2590        if type_token:
        +2591            if isinstance(this, exp.Literal):
        +2592                return self.expression(exp.Cast, this=this, to=type_token)
        +2593            if not type_token.args.get("expressions"):
        +2594                self._retreat(index)
        +2595                return self._parse_column()
        +2596            return type_token
        +2597
        +2598        return this
        +2599
        +2600    def _parse_types(self, check_func: bool = False) -> t.Optional[exp.Expression]:
        +2601        index = self._index
        +2602
        +2603        prefix = self._match_text_seq("SYSUDTLIB", ".")
         2604
        -2605            if not expressions:
        -2606                self._retreat(index)
        -2607                return None
        -2608
        -2609            self._match_r_paren()
        -2610            maybe_func = True
        -2611
        -2612        if not nested and self._match_pair(TokenType.L_BRACKET, TokenType.R_BRACKET):
        -2613            this = exp.DataType(
        -2614                this=exp.DataType.Type.ARRAY,
        -2615                expressions=[exp.DataType.build(type_token.value, expressions=expressions)],
        -2616                nested=True,
        -2617            )
        -2618
        -2619            while self._match_pair(TokenType.L_BRACKET, TokenType.R_BRACKET):
        -2620                this = exp.DataType(
        -2621                    this=exp.DataType.Type.ARRAY,
        -2622                    expressions=[this],
        -2623                    nested=True,
        -2624                )
        +2605        if not self._match_set(self.TYPE_TOKENS):
        +2606            return None
        +2607
        +2608        type_token = self._prev.token_type
        +2609
        +2610        if type_token == TokenType.PSEUDO_TYPE:
        +2611            return self.expression(exp.PseudoType, this=self._prev.text)
        +2612
        +2613        nested = type_token in self.NESTED_TYPE_TOKENS
        +2614        is_struct = type_token == TokenType.STRUCT
        +2615        expressions = None
        +2616        maybe_func = False
        +2617
        +2618        if self._match(TokenType.L_PAREN):
        +2619            if is_struct:
        +2620                expressions = self._parse_csv(self._parse_struct_kwargs)
        +2621            elif nested:
        +2622                expressions = self._parse_csv(self._parse_types)
        +2623            else:
        +2624                expressions = self._parse_csv(self._parse_conjunction)
         2625
        -2626            return this
        -2627
        -2628        if self._match(TokenType.L_BRACKET):
        -2629            self._retreat(index)
        -2630            return None
        -2631
        -2632        values: t.Optional[t.List[t.Optional[exp.Expression]]] = None
        -2633        if nested and self._match(TokenType.LT):
        -2634            if is_struct:
        -2635                expressions = self._parse_csv(self._parse_struct_kwargs)
        -2636            else:
        -2637                expressions = self._parse_csv(self._parse_types)
        -2638
        -2639            if not self._match(TokenType.GT):
        -2640                self.raise_error("Expecting >")
        -2641
        -2642            if self._match_set((TokenType.L_BRACKET, TokenType.L_PAREN)):
        -2643                values = self._parse_csv(self._parse_conjunction)
        -2644                self._match_set((TokenType.R_BRACKET, TokenType.R_PAREN))
        -2645
        -2646        value: t.Optional[exp.Expression] = None
        -2647        if type_token in self.TIMESTAMPS:
        -2648            if self._match(TokenType.WITH_TIME_ZONE) or type_token == TokenType.TIMESTAMPTZ:
        -2649                value = exp.DataType(this=exp.DataType.Type.TIMESTAMPTZ, expressions=expressions)
        -2650            elif (
        -2651                self._match(TokenType.WITH_LOCAL_TIME_ZONE) or type_token == TokenType.TIMESTAMPLTZ
        -2652            ):
        -2653                value = exp.DataType(this=exp.DataType.Type.TIMESTAMPLTZ, expressions=expressions)
        -2654            elif self._match(TokenType.WITHOUT_TIME_ZONE):
        -2655                if type_token == TokenType.TIME:
        -2656                    value = exp.DataType(this=exp.DataType.Type.TIME, expressions=expressions)
        -2657                else:
        -2658                    value = exp.DataType(this=exp.DataType.Type.TIMESTAMP, expressions=expressions)
        +2626            if not expressions:
        +2627                self._retreat(index)
        +2628                return None
        +2629
        +2630            self._match_r_paren()
        +2631            maybe_func = True
        +2632
        +2633        if not nested and self._match_pair(TokenType.L_BRACKET, TokenType.R_BRACKET):
        +2634            this = exp.DataType(
        +2635                this=exp.DataType.Type.ARRAY,
        +2636                expressions=[exp.DataType.build(type_token.value, expressions=expressions)],
        +2637                nested=True,
        +2638            )
        +2639
        +2640            while self._match_pair(TokenType.L_BRACKET, TokenType.R_BRACKET):
        +2641                this = exp.DataType(
        +2642                    this=exp.DataType.Type.ARRAY,
        +2643                    expressions=[this],
        +2644                    nested=True,
        +2645                )
        +2646
        +2647            return this
        +2648
        +2649        if self._match(TokenType.L_BRACKET):
        +2650            self._retreat(index)
        +2651            return None
        +2652
        +2653        values: t.Optional[t.List[t.Optional[exp.Expression]]] = None
        +2654        if nested and self._match(TokenType.LT):
        +2655            if is_struct:
        +2656                expressions = self._parse_csv(self._parse_struct_kwargs)
        +2657            else:
        +2658                expressions = self._parse_csv(self._parse_types)
         2659
        -2660            maybe_func = maybe_func and value is None
        -2661
        -2662            if value is None:
        -2663                value = exp.DataType(this=exp.DataType.Type.TIMESTAMP, expressions=expressions)
        -2664        elif type_token == TokenType.INTERVAL:
        -2665            unit = self._parse_var()
        +2660            if not self._match(TokenType.GT):
        +2661                self.raise_error("Expecting >")
        +2662
        +2663            if self._match_set((TokenType.L_BRACKET, TokenType.L_PAREN)):
        +2664                values = self._parse_csv(self._parse_conjunction)
        +2665                self._match_set((TokenType.R_BRACKET, TokenType.R_PAREN))
         2666
        -2667            if not unit:
        -2668                value = self.expression(exp.DataType, this=exp.DataType.Type.INTERVAL)
        -2669            else:
        -2670                value = self.expression(exp.Interval, unit=unit)
        -2671
        -2672        if maybe_func and check_func:
        -2673            index2 = self._index
        -2674            peek = self._parse_string()
        -2675
        -2676            if not peek:
        -2677                self._retreat(index)
        -2678                return None
        -2679
        -2680            self._retreat(index2)
        -2681
        -2682        if value:
        -2683            return value
        -2684
        -2685        return exp.DataType(
        -2686            this=exp.DataType.Type[type_token.value.upper()],
        -2687            expressions=expressions,
        -2688            nested=nested,
        -2689            values=values,
        -2690            prefix=prefix,
        -2691        )
        +2667        value: t.Optional[exp.Expression] = None
        +2668        if type_token in self.TIMESTAMPS:
        +2669            if self._match(TokenType.WITH_TIME_ZONE) or type_token == TokenType.TIMESTAMPTZ:
        +2670                value = exp.DataType(this=exp.DataType.Type.TIMESTAMPTZ, expressions=expressions)
        +2671            elif (
        +2672                self._match(TokenType.WITH_LOCAL_TIME_ZONE) or type_token == TokenType.TIMESTAMPLTZ
        +2673            ):
        +2674                value = exp.DataType(this=exp.DataType.Type.TIMESTAMPLTZ, expressions=expressions)
        +2675            elif self._match(TokenType.WITHOUT_TIME_ZONE):
        +2676                if type_token == TokenType.TIME:
        +2677                    value = exp.DataType(this=exp.DataType.Type.TIME, expressions=expressions)
        +2678                else:
        +2679                    value = exp.DataType(this=exp.DataType.Type.TIMESTAMP, expressions=expressions)
        +2680
        +2681            maybe_func = maybe_func and value is None
        +2682
        +2683            if value is None:
        +2684                value = exp.DataType(this=exp.DataType.Type.TIMESTAMP, expressions=expressions)
        +2685        elif type_token == TokenType.INTERVAL:
        +2686            unit = self._parse_var()
        +2687
        +2688            if not unit:
        +2689                value = self.expression(exp.DataType, this=exp.DataType.Type.INTERVAL)
        +2690            else:
        +2691                value = self.expression(exp.Interval, unit=unit)
         2692
        -2693    def _parse_struct_kwargs(self) -> t.Optional[exp.Expression]:
        -2694        if self._curr and self._curr.token_type in self.TYPE_TOKENS:
        -2695            return self._parse_types()
        +2693        if maybe_func and check_func:
        +2694            index2 = self._index
        +2695            peek = self._parse_string()
         2696
        -2697        this = self._parse_id_var()
        -2698        self._match(TokenType.COLON)
        -2699        data_type = self._parse_types()
        +2697            if not peek:
        +2698                self._retreat(index)
        +2699                return None
         2700
        -2701        if not data_type:
        -2702            return None
        -2703        return self.expression(exp.StructKwarg, this=this, expression=data_type)
        -2704
        -2705    def _parse_at_time_zone(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
        -2706        if not self._match(TokenType.AT_TIME_ZONE):
        -2707            return this
        -2708        return self.expression(exp.AtTimeZone, this=this, zone=self._parse_unary())
        -2709
        -2710    def _parse_column(self) -> t.Optional[exp.Expression]:
        -2711        this = self._parse_field()
        -2712        if isinstance(this, exp.Identifier):
        -2713            this = self.expression(exp.Column, this=this)
        -2714        elif not this:
        -2715            return self._parse_bracket(this)
        -2716        this = self._parse_bracket(this)
        +2701            self._retreat(index2)
        +2702
        +2703        if value:
        +2704            return value
        +2705
        +2706        return exp.DataType(
        +2707            this=exp.DataType.Type[type_token.value.upper()],
        +2708            expressions=expressions,
        +2709            nested=nested,
        +2710            values=values,
        +2711            prefix=prefix,
        +2712        )
        +2713
        +2714    def _parse_struct_kwargs(self) -> t.Optional[exp.Expression]:
        +2715        if self._curr and self._curr.token_type in self.TYPE_TOKENS:
        +2716            return self._parse_types()
         2717
        -2718        while self._match_set(self.COLUMN_OPERATORS):
        -2719            op_token = self._prev.token_type
        -2720            op = self.COLUMN_OPERATORS.get(op_token)
        +2718        this = self._parse_id_var()
        +2719        self._match(TokenType.COLON)
        +2720        data_type = self._parse_types()
         2721
        -2722            if op_token == TokenType.DCOLON:
        -2723                field = self._parse_types()
        -2724                if not field:
        -2725                    self.raise_error("Expected type")
        -2726            elif op:
        -2727                self._advance()
        -2728                value = self._prev.text
        -2729                field = (
        -2730                    exp.Literal.number(value)
        -2731                    if self._prev.token_type == TokenType.NUMBER
        -2732                    else exp.Literal.string(value)
        -2733                )
        -2734            else:
        -2735                field = self._parse_star() or self._parse_function() or self._parse_id_var()
        -2736
        -2737            if isinstance(field, exp.Func):
        -2738                # bigquery allows function calls like x.y.count(...)
        -2739                # SAFE.SUBSTR(...)
        -2740                # https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-reference#function_call_rules
        -2741                this = self._replace_columns_with_dots(this)
        +2722        if not data_type:
        +2723            return None
        +2724        return self.expression(exp.StructKwarg, this=this, expression=data_type)
        +2725
        +2726    def _parse_at_time_zone(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
        +2727        if not self._match(TokenType.AT_TIME_ZONE):
        +2728            return this
        +2729        return self.expression(exp.AtTimeZone, this=this, zone=self._parse_unary())
        +2730
        +2731    def _parse_column(self) -> t.Optional[exp.Expression]:
        +2732        this = self._parse_field()
        +2733        if isinstance(this, exp.Identifier):
        +2734            this = self.expression(exp.Column, this=this)
        +2735        elif not this:
        +2736            return self._parse_bracket(this)
        +2737        this = self._parse_bracket(this)
        +2738
        +2739        while self._match_set(self.COLUMN_OPERATORS):
        +2740            op_token = self._prev.token_type
        +2741            op = self.COLUMN_OPERATORS.get(op_token)
         2742
        -2743            if op:
        -2744                this = op(self, this, field)
        -2745            elif isinstance(this, exp.Column) and not this.args.get("catalog"):
        -2746                this = self.expression(
        -2747                    exp.Column,
        -2748                    this=field,
        -2749                    table=this.this,
        -2750                    db=this.args.get("table"),
        -2751                    catalog=this.args.get("db"),
        -2752                )
        -2753            else:
        -2754                this = self.expression(exp.Dot, this=this, expression=field)
        -2755            this = self._parse_bracket(this)
        -2756
        -2757        return this
        -2758
        -2759    def _parse_primary(self) -> t.Optional[exp.Expression]:
        -2760        if self._match_set(self.PRIMARY_PARSERS):
        -2761            token_type = self._prev.token_type
        -2762            primary = self.PRIMARY_PARSERS[token_type](self, self._prev)
        +2743            if op_token == TokenType.DCOLON:
        +2744                field = self._parse_types()
        +2745                if not field:
        +2746                    self.raise_error("Expected type")
        +2747            elif op:
        +2748                self._advance()
        +2749                value = self._prev.text
        +2750                field = (
        +2751                    exp.Literal.number(value)
        +2752                    if self._prev.token_type == TokenType.NUMBER
        +2753                    else exp.Literal.string(value)
        +2754                )
        +2755            else:
        +2756                field = self._parse_star() or self._parse_function() or self._parse_id_var()
        +2757
        +2758            if isinstance(field, exp.Func):
        +2759                # bigquery allows function calls like x.y.count(...)
        +2760                # SAFE.SUBSTR(...)
        +2761                # https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-reference#function_call_rules
        +2762                this = self._replace_columns_with_dots(this)
         2763
        -2764            if token_type == TokenType.STRING:
        -2765                expressions = [primary]
        -2766                while self._match(TokenType.STRING):
        -2767                    expressions.append(exp.Literal.string(self._prev.text))
        -2768                if len(expressions) > 1:
        -2769                    return self.expression(exp.Concat, expressions=expressions)
        -2770            return primary
        -2771
        -2772        if self._match_pair(TokenType.DOT, TokenType.NUMBER):
        -2773            return exp.Literal.number(f"0.{self._prev.text}")
        -2774
        -2775        if self._match(TokenType.L_PAREN):
        -2776            comments = self._prev_comments
        -2777            query = self._parse_select()
        -2778
        -2779            if query:
        -2780                expressions = [query]
        -2781            else:
        -2782                expressions = self._parse_csv(
        -2783                    lambda: self._parse_alias(self._parse_conjunction(), explicit=True)
        -2784                )
        -2785
        -2786            this = seq_get(expressions, 0)
        -2787            self._parse_query_modifiers(this)
        -2788            self._match_r_paren()
        -2789
        -2790            if isinstance(this, exp.Subqueryable):
        -2791                this = self._parse_set_operations(
        -2792                    self._parse_subquery(this=this, parse_alias=False)
        -2793                )
        -2794            elif len(expressions) > 1:
        -2795                this = self.expression(exp.Tuple, expressions=expressions)
        -2796            else:
        -2797                this = self.expression(exp.Paren, this=this)
        -2798
        -2799            if this and comments:
        -2800                this.comments = comments
        -2801
        -2802            return this
        -2803
        -2804        return None
        -2805
        -2806    def _parse_field(self, any_token: bool = False) -> t.Optional[exp.Expression]:
        -2807        return self._parse_primary() or self._parse_function() or self._parse_id_var(any_token)
        -2808
        -2809    def _parse_function(
        -2810        self, functions: t.Optional[t.Dict[str, t.Callable]] = None
        -2811    ) -> t.Optional[exp.Expression]:
        -2812        if not self._curr:
        -2813            return None
        -2814
        -2815        token_type = self._curr.token_type
        -2816
        -2817        if self._match_set(self.NO_PAREN_FUNCTION_PARSERS):
        -2818            return self.NO_PAREN_FUNCTION_PARSERS[token_type](self)
        -2819
        -2820        if not self._next or self._next.token_type != TokenType.L_PAREN:
        -2821            if token_type in self.NO_PAREN_FUNCTIONS:
        -2822                self._advance()
        -2823                return self.expression(self.NO_PAREN_FUNCTIONS[token_type])
        -2824
        -2825            return None
        -2826
        -2827        if token_type not in self.FUNC_TOKENS:
        -2828            return None
        -2829
        -2830        this = self._curr.text
        -2831        upper = this.upper()
        -2832        self._advance(2)
        -2833
        -2834        parser = self.FUNCTION_PARSERS.get(upper)
        -2835
        -2836        if parser:
        -2837            this = parser(self)
        -2838        else:
        -2839            subquery_predicate = self.SUBQUERY_PREDICATES.get(token_type)
        -2840
        -2841            if subquery_predicate and self._curr.token_type in (TokenType.SELECT, TokenType.WITH):
        -2842                this = self.expression(subquery_predicate, this=self._parse_select())
        -2843                self._match_r_paren()
        -2844                return this
        -2845
        -2846            if functions is None:
        -2847                functions = self.FUNCTIONS
        +2764            if op:
        +2765                this = op(self, this, field)
        +2766            elif isinstance(this, exp.Column) and not this.args.get("catalog"):
        +2767                this = self.expression(
        +2768                    exp.Column,
        +2769                    this=field,
        +2770                    table=this.this,
        +2771                    db=this.args.get("table"),
        +2772                    catalog=this.args.get("db"),
        +2773                )
        +2774            else:
        +2775                this = self.expression(exp.Dot, this=this, expression=field)
        +2776            this = self._parse_bracket(this)
        +2777
        +2778        return this
        +2779
        +2780    def _parse_primary(self) -> t.Optional[exp.Expression]:
        +2781        if self._match_set(self.PRIMARY_PARSERS):
        +2782            token_type = self._prev.token_type
        +2783            primary = self.PRIMARY_PARSERS[token_type](self, self._prev)
        +2784
        +2785            if token_type == TokenType.STRING:
        +2786                expressions = [primary]
        +2787                while self._match(TokenType.STRING):
        +2788                    expressions.append(exp.Literal.string(self._prev.text))
        +2789                if len(expressions) > 1:
        +2790                    return self.expression(exp.Concat, expressions=expressions)
        +2791            return primary
        +2792
        +2793        if self._match_pair(TokenType.DOT, TokenType.NUMBER):
        +2794            return exp.Literal.number(f"0.{self._prev.text}")
        +2795
        +2796        if self._match(TokenType.L_PAREN):
        +2797            comments = self._prev_comments
        +2798            query = self._parse_select()
        +2799
        +2800            if query:
        +2801                expressions = [query]
        +2802            else:
        +2803                expressions = self._parse_csv(
        +2804                    lambda: self._parse_alias(self._parse_conjunction(), explicit=True)
        +2805                )
        +2806
        +2807            this = seq_get(expressions, 0)
        +2808            self._parse_query_modifiers(this)
        +2809
        +2810            if isinstance(this, exp.Subqueryable):
        +2811                this = self._parse_set_operations(
        +2812                    self._parse_subquery(this=this, parse_alias=False)
        +2813                )
        +2814            elif len(expressions) > 1:
        +2815                this = self.expression(exp.Tuple, expressions=expressions)
        +2816            else:
        +2817                this = self.expression(exp.Paren, this=self._parse_set_operations(this))
        +2818
        +2819            self._match_r_paren()
        +2820
        +2821            if this and comments:
        +2822                this.comments = comments
        +2823
        +2824            return this
        +2825
        +2826        return None
        +2827
        +2828    def _parse_field(self, any_token: bool = False) -> t.Optional[exp.Expression]:
        +2829        return self._parse_primary() or self._parse_function() or self._parse_id_var(any_token)
        +2830
        +2831    def _parse_function(
        +2832        self, functions: t.Optional[t.Dict[str, t.Callable]] = None
        +2833    ) -> t.Optional[exp.Expression]:
        +2834        if not self._curr:
        +2835            return None
        +2836
        +2837        token_type = self._curr.token_type
        +2838
        +2839        if self._match_set(self.NO_PAREN_FUNCTION_PARSERS):
        +2840            return self.NO_PAREN_FUNCTION_PARSERS[token_type](self)
        +2841
        +2842        if not self._next or self._next.token_type != TokenType.L_PAREN:
        +2843            if token_type in self.NO_PAREN_FUNCTIONS:
        +2844                self._advance()
        +2845                return self.expression(self.NO_PAREN_FUNCTIONS[token_type])
        +2846
        +2847            return None
         2848
        -2849            function = functions.get(upper)
        -2850            args = self._parse_csv(self._parse_lambda)
        +2849        if token_type not in self.FUNC_TOKENS:
        +2850            return None
         2851
        -2852            if function:
        -2853                # Clickhouse supports function calls like foo(x, y)(z), so for these we need to also parse the
        -2854                # second parameter list (i.e. "(z)") and the corresponding function will receive both arg lists.
        -2855                if count_params(function) == 2:
        -2856                    params = None
        -2857                    if self._match_pair(TokenType.R_PAREN, TokenType.L_PAREN):
        -2858                        params = self._parse_csv(self._parse_lambda)
        -2859
        -2860                    this = function(args, params)
        -2861                else:
        -2862                    this = function(args)
        -2863
        -2864                self.validate_expression(this, args)
        -2865            else:
        -2866                this = self.expression(exp.Anonymous, this=this, expressions=args)
        +2852        this = self._curr.text
        +2853        upper = this.upper()
        +2854        self._advance(2)
        +2855
        +2856        parser = self.FUNCTION_PARSERS.get(upper)
        +2857
        +2858        if parser:
        +2859            this = parser(self)
        +2860        else:
        +2861            subquery_predicate = self.SUBQUERY_PREDICATES.get(token_type)
        +2862
        +2863            if subquery_predicate and self._curr.token_type in (TokenType.SELECT, TokenType.WITH):
        +2864                this = self.expression(subquery_predicate, this=self._parse_select())
        +2865                self._match_r_paren()
        +2866                return this
         2867
        -2868        self._match_r_paren(this)
        -2869        return self._parse_window(this)
        +2868            if functions is None:
        +2869                functions = self.FUNCTIONS
         2870
        -2871    def _parse_function_parameter(self) -> t.Optional[exp.Expression]:
        -2872        return self._parse_column_def(self._parse_id_var())
        +2871            function = functions.get(upper)
        +2872            args = self._parse_csv(self._parse_lambda)
         2873
        -2874    def _parse_user_defined_function(
        -2875        self, kind: t.Optional[TokenType] = None
        -2876    ) -> t.Optional[exp.Expression]:
        -2877        this = self._parse_id_var()
        -2878
        -2879        while self._match(TokenType.DOT):
        -2880            this = self.expression(exp.Dot, this=this, expression=self._parse_id_var())
        +2874            if function:
        +2875                # Clickhouse supports function calls like foo(x, y)(z), so for these we need to also parse the
        +2876                # second parameter list (i.e. "(z)") and the corresponding function will receive both arg lists.
        +2877                if count_params(function) == 2:
        +2878                    params = None
        +2879                    if self._match_pair(TokenType.R_PAREN, TokenType.L_PAREN):
        +2880                        params = self._parse_csv(self._parse_lambda)
         2881
        -2882        if not self._match(TokenType.L_PAREN):
        -2883            return this
        -2884
        -2885        expressions = self._parse_csv(self._parse_function_parameter)
        -2886        self._match_r_paren()
        -2887        return self.expression(
        -2888            exp.UserDefinedFunction, this=this, expressions=expressions, wrapped=True
        -2889        )
        -2890
        -2891    def _parse_introducer(self, token: Token) -> t.Optional[exp.Expression]:
        -2892        literal = self._parse_primary()
        -2893        if literal:
        -2894            return self.expression(exp.Introducer, this=token.text, expression=literal)
        +2882                    this = function(args, params)
        +2883                else:
        +2884                    this = function(args)
        +2885
        +2886                self.validate_expression(this, args)
        +2887            else:
        +2888                this = self.expression(exp.Anonymous, this=this, expressions=args)
        +2889
        +2890        self._match_r_paren(this)
        +2891        return self._parse_window(this)
        +2892
        +2893    def _parse_function_parameter(self) -> t.Optional[exp.Expression]:
        +2894        return self._parse_column_def(self._parse_id_var())
         2895
        -2896        return self.expression(exp.Identifier, this=token.text)
        -2897
        -2898    def _parse_national(self, token: Token) -> exp.Expression:
        -2899        return self.expression(exp.National, this=exp.Literal.string(token.text))
        +2896    def _parse_user_defined_function(
        +2897        self, kind: t.Optional[TokenType] = None
        +2898    ) -> t.Optional[exp.Expression]:
        +2899        this = self._parse_id_var()
         2900
        -2901    def _parse_session_parameter(self) -> exp.Expression:
        -2902        kind = None
        -2903        this = self._parse_id_var() or self._parse_primary()
        -2904
        -2905        if this and self._match(TokenType.DOT):
        -2906            kind = this.name
        -2907            this = self._parse_var() or self._parse_primary()
        -2908
        -2909        return self.expression(exp.SessionParameter, this=this, kind=kind)
        -2910
        -2911    def _parse_lambda(self) -> t.Optional[exp.Expression]:
        -2912        index = self._index
        -2913
        -2914        if self._match(TokenType.L_PAREN):
        -2915            expressions = self._parse_csv(self._parse_id_var)
        -2916
        -2917            if not self._match(TokenType.R_PAREN):
        -2918                self._retreat(index)
        -2919        else:
        -2920            expressions = [self._parse_id_var()]
        -2921
        -2922        if self._match_set(self.LAMBDAS):
        -2923            return self.LAMBDAS[self._prev.token_type](self, expressions)
        -2924
        -2925        self._retreat(index)
        +2901        while self._match(TokenType.DOT):
        +2902            this = self.expression(exp.Dot, this=this, expression=self._parse_id_var())
        +2903
        +2904        if not self._match(TokenType.L_PAREN):
        +2905            return this
        +2906
        +2907        expressions = self._parse_csv(self._parse_function_parameter)
        +2908        self._match_r_paren()
        +2909        return self.expression(
        +2910            exp.UserDefinedFunction, this=this, expressions=expressions, wrapped=True
        +2911        )
        +2912
        +2913    def _parse_introducer(self, token: Token) -> t.Optional[exp.Expression]:
        +2914        literal = self._parse_primary()
        +2915        if literal:
        +2916            return self.expression(exp.Introducer, this=token.text, expression=literal)
        +2917
        +2918        return self.expression(exp.Identifier, this=token.text)
        +2919
        +2920    def _parse_national(self, token: Token) -> exp.Expression:
        +2921        return self.expression(exp.National, this=exp.Literal.string(token.text))
        +2922
        +2923    def _parse_session_parameter(self) -> exp.Expression:
        +2924        kind = None
        +2925        this = self._parse_id_var() or self._parse_primary()
         2926
        -2927        this: t.Optional[exp.Expression]
        -2928
        -2929        if self._match(TokenType.DISTINCT):
        -2930            this = self.expression(
        -2931                exp.Distinct, expressions=self._parse_csv(self._parse_conjunction)
        -2932            )
        -2933        else:
        -2934            this = self._parse_select_or_expression()
        +2927        if this and self._match(TokenType.DOT):
        +2928            kind = this.name
        +2929            this = self._parse_var() or self._parse_primary()
        +2930
        +2931        return self.expression(exp.SessionParameter, this=this, kind=kind)
        +2932
        +2933    def _parse_lambda(self) -> t.Optional[exp.Expression]:
        +2934        index = self._index
         2935
        -2936        if self._match(TokenType.IGNORE_NULLS):
        -2937            this = self.expression(exp.IgnoreNulls, this=this)
        -2938        else:
        -2939            self._match(TokenType.RESPECT_NULLS)
        -2940
        -2941        return self._parse_limit(self._parse_order(this))
        -2942
        -2943    def _parse_schema(self, this: t.Optional[exp.Expression] = None) -> t.Optional[exp.Expression]:
        -2944        index = self._index
        -2945        if not self._match(TokenType.L_PAREN) or self._match(TokenType.SELECT):
        -2946            self._retreat(index)
        -2947            return this
        +2936        if self._match(TokenType.L_PAREN):
        +2937            expressions = self._parse_csv(self._parse_id_var)
        +2938
        +2939            if not self._match(TokenType.R_PAREN):
        +2940                self._retreat(index)
        +2941        else:
        +2942            expressions = [self._parse_id_var()]
        +2943
        +2944        if self._match_set(self.LAMBDAS):
        +2945            return self.LAMBDAS[self._prev.token_type](self, expressions)
        +2946
        +2947        self._retreat(index)
         2948
        -2949        args = self._parse_csv(
        -2950            lambda: self._parse_constraint()
        -2951            or self._parse_column_def(self._parse_field(any_token=True))
        -2952        )
        -2953        self._match_r_paren()
        -2954        return self.expression(exp.Schema, this=this, expressions=args)
        -2955
        -2956    def _parse_column_def(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
        -2957        kind = self._parse_types()
        -2958
        -2959        if self._match_text_seq("FOR", "ORDINALITY"):
        -2960            return self.expression(exp.ColumnDef, this=this, ordinality=True)
        -2961
        -2962        constraints = []
        -2963        while True:
        -2964            constraint = self._parse_column_constraint()
        -2965            if not constraint:
        -2966                break
        -2967            constraints.append(constraint)
        -2968
        -2969        if not kind and not constraints:
        -2970            return this
        -2971
        -2972        return self.expression(exp.ColumnDef, this=this, kind=kind, constraints=constraints)
        -2973
        -2974    def _parse_auto_increment(self) -> exp.Expression:
        -2975        start = None
        -2976        increment = None
        +2949        this: t.Optional[exp.Expression]
        +2950
        +2951        if self._match(TokenType.DISTINCT):
        +2952            this = self.expression(
        +2953                exp.Distinct, expressions=self._parse_csv(self._parse_conjunction)
        +2954            )
        +2955        else:
        +2956            this = self._parse_select_or_expression()
        +2957
        +2958        if self._match(TokenType.IGNORE_NULLS):
        +2959            this = self.expression(exp.IgnoreNulls, this=this)
        +2960        else:
        +2961            self._match(TokenType.RESPECT_NULLS)
        +2962
        +2963        return self._parse_limit(self._parse_order(this))
        +2964
        +2965    def _parse_schema(self, this: t.Optional[exp.Expression] = None) -> t.Optional[exp.Expression]:
        +2966        index = self._index
        +2967        if not self._match(TokenType.L_PAREN) or self._match(TokenType.SELECT):
        +2968            self._retreat(index)
        +2969            return this
        +2970
        +2971        args = self._parse_csv(
        +2972            lambda: self._parse_constraint()
        +2973            or self._parse_column_def(self._parse_field(any_token=True))
        +2974        )
        +2975        self._match_r_paren()
        +2976        return self.expression(exp.Schema, this=this, expressions=args)
         2977
        -2978        if self._match(TokenType.L_PAREN, advance=False):
        -2979            args = self._parse_wrapped_csv(self._parse_bitwise)
        -2980            start = seq_get(args, 0)
        -2981            increment = seq_get(args, 1)
        -2982        elif self._match_text_seq("START"):
        -2983            start = self._parse_bitwise()
        -2984            self._match_text_seq("INCREMENT")
        -2985            increment = self._parse_bitwise()
        -2986
        -2987        if start and increment:
        -2988            return exp.GeneratedAsIdentityColumnConstraint(start=start, increment=increment)
        -2989
        -2990        return exp.AutoIncrementColumnConstraint()
        -2991
        -2992    def _parse_compress(self) -> exp.Expression:
        -2993        if self._match(TokenType.L_PAREN, advance=False):
        -2994            return self.expression(
        -2995                exp.CompressColumnConstraint, this=self._parse_wrapped_csv(self._parse_bitwise)
        -2996            )
        -2997
        -2998        return self.expression(exp.CompressColumnConstraint, this=self._parse_bitwise())
        +2978    def _parse_column_def(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
        +2979        kind = self._parse_types()
        +2980
        +2981        if self._match_text_seq("FOR", "ORDINALITY"):
        +2982            return self.expression(exp.ColumnDef, this=this, ordinality=True)
        +2983
        +2984        constraints = []
        +2985        while True:
        +2986            constraint = self._parse_column_constraint()
        +2987            if not constraint:
        +2988                break
        +2989            constraints.append(constraint)
        +2990
        +2991        if not kind and not constraints:
        +2992            return this
        +2993
        +2994        return self.expression(exp.ColumnDef, this=this, kind=kind, constraints=constraints)
        +2995
        +2996    def _parse_auto_increment(self) -> exp.Expression:
        +2997        start = None
        +2998        increment = None
         2999
        -3000    def _parse_generated_as_identity(self) -> exp.Expression:
        -3001        if self._match(TokenType.BY_DEFAULT):
        -3002            this = self.expression(exp.GeneratedAsIdentityColumnConstraint, this=False)
        -3003        else:
        -3004            self._match_text_seq("ALWAYS")
        -3005            this = self.expression(exp.GeneratedAsIdentityColumnConstraint, this=True)
        -3006
        -3007        self._match_text_seq("AS", "IDENTITY")
        -3008        if self._match(TokenType.L_PAREN):
        -3009            if self._match_text_seq("START", "WITH"):
        -3010                this.set("start", self._parse_bitwise())
        -3011            if self._match_text_seq("INCREMENT", "BY"):
        -3012                this.set("increment", self._parse_bitwise())
        -3013            if self._match_text_seq("MINVALUE"):
        -3014                this.set("minvalue", self._parse_bitwise())
        -3015            if self._match_text_seq("MAXVALUE"):
        -3016                this.set("maxvalue", self._parse_bitwise())
        -3017
        -3018            if self._match_text_seq("CYCLE"):
        -3019                this.set("cycle", True)
        -3020            elif self._match_text_seq("NO", "CYCLE"):
        -3021                this.set("cycle", False)
        -3022
        -3023            self._match_r_paren()
        -3024
        -3025        return this
        -3026
        -3027    def _parse_inline(self) -> t.Optional[exp.Expression]:
        -3028        self._match_text_seq("LENGTH")
        -3029        return self.expression(exp.InlineLengthColumnConstraint, this=self._parse_bitwise())
        -3030
        -3031    def _parse_not_constraint(self) -> t.Optional[exp.Expression]:
        -3032        if self._match_text_seq("NULL"):
        -3033            return self.expression(exp.NotNullColumnConstraint)
        -3034        if self._match_text_seq("CASESPECIFIC"):
        -3035            return self.expression(exp.CaseSpecificColumnConstraint, not_=True)
        -3036        return None
        -3037
        -3038    def _parse_column_constraint(self) -> t.Optional[exp.Expression]:
        -3039        this = self._parse_references()
        -3040        if this:
        -3041            return this
        -3042
        -3043        if self._match(TokenType.CONSTRAINT):
        -3044            this = self._parse_id_var()
        -3045
        -3046        if self._match_texts(self.CONSTRAINT_PARSERS):
        -3047            return self.expression(
        -3048                exp.ColumnConstraint,
        -3049                this=this,
        -3050                kind=self.CONSTRAINT_PARSERS[self._prev.text.upper()](self),
        -3051            )
        +3000        if self._match(TokenType.L_PAREN, advance=False):
        +3001            args = self._parse_wrapped_csv(self._parse_bitwise)
        +3002            start = seq_get(args, 0)
        +3003            increment = seq_get(args, 1)
        +3004        elif self._match_text_seq("START"):
        +3005            start = self._parse_bitwise()
        +3006            self._match_text_seq("INCREMENT")
        +3007            increment = self._parse_bitwise()
        +3008
        +3009        if start and increment:
        +3010            return exp.GeneratedAsIdentityColumnConstraint(start=start, increment=increment)
        +3011
        +3012        return exp.AutoIncrementColumnConstraint()
        +3013
        +3014    def _parse_compress(self) -> exp.Expression:
        +3015        if self._match(TokenType.L_PAREN, advance=False):
        +3016            return self.expression(
        +3017                exp.CompressColumnConstraint, this=self._parse_wrapped_csv(self._parse_bitwise)
        +3018            )
        +3019
        +3020        return self.expression(exp.CompressColumnConstraint, this=self._parse_bitwise())
        +3021
        +3022    def _parse_generated_as_identity(self) -> exp.Expression:
        +3023        if self._match(TokenType.BY_DEFAULT):
        +3024            this = self.expression(exp.GeneratedAsIdentityColumnConstraint, this=False)
        +3025        else:
        +3026            self._match_text_seq("ALWAYS")
        +3027            this = self.expression(exp.GeneratedAsIdentityColumnConstraint, this=True)
        +3028
        +3029        self._match_text_seq("AS", "IDENTITY")
        +3030        if self._match(TokenType.L_PAREN):
        +3031            if self._match_text_seq("START", "WITH"):
        +3032                this.set("start", self._parse_bitwise())
        +3033            if self._match_text_seq("INCREMENT", "BY"):
        +3034                this.set("increment", self._parse_bitwise())
        +3035            if self._match_text_seq("MINVALUE"):
        +3036                this.set("minvalue", self._parse_bitwise())
        +3037            if self._match_text_seq("MAXVALUE"):
        +3038                this.set("maxvalue", self._parse_bitwise())
        +3039
        +3040            if self._match_text_seq("CYCLE"):
        +3041                this.set("cycle", True)
        +3042            elif self._match_text_seq("NO", "CYCLE"):
        +3043                this.set("cycle", False)
        +3044
        +3045            self._match_r_paren()
        +3046
        +3047        return this
        +3048
        +3049    def _parse_inline(self) -> t.Optional[exp.Expression]:
        +3050        self._match_text_seq("LENGTH")
        +3051        return self.expression(exp.InlineLengthColumnConstraint, this=self._parse_bitwise())
         3052
        -3053        return this
        -3054
        -3055    def _parse_constraint(self) -> t.Optional[exp.Expression]:
        -3056        if not self._match(TokenType.CONSTRAINT):
        -3057            return self._parse_unnamed_constraint(constraints=self.SCHEMA_UNNAMED_CONSTRAINTS)
        -3058
        -3059        this = self._parse_id_var()
        -3060        expressions = []
        -3061
        -3062        while True:
        -3063            constraint = self._parse_unnamed_constraint() or self._parse_function()
        -3064            if not constraint:
        -3065                break
        -3066            expressions.append(constraint)
        +3053    def _parse_not_constraint(self) -> t.Optional[exp.Expression]:
        +3054        if self._match_text_seq("NULL"):
        +3055            return self.expression(exp.NotNullColumnConstraint)
        +3056        if self._match_text_seq("CASESPECIFIC"):
        +3057            return self.expression(exp.CaseSpecificColumnConstraint, not_=True)
        +3058        return None
        +3059
        +3060    def _parse_column_constraint(self) -> t.Optional[exp.Expression]:
        +3061        this = self._parse_references()
        +3062        if this:
        +3063            return this
        +3064
        +3065        if self._match(TokenType.CONSTRAINT):
        +3066            this = self._parse_id_var()
         3067
        -3068        return self.expression(exp.Constraint, this=this, expressions=expressions)
        -3069
        -3070    def _parse_unnamed_constraint(
        -3071        self, constraints: t.Optional[t.Collection[str]] = None
        -3072    ) -> t.Optional[exp.Expression]:
        -3073        if not self._match_texts(constraints or self.CONSTRAINT_PARSERS):
        -3074            return None
        -3075
        -3076        constraint = self._prev.text.upper()
        -3077        if constraint not in self.CONSTRAINT_PARSERS:
        -3078            self.raise_error(f"No parser found for schema constraint {constraint}.")
        -3079
        -3080        return self.CONSTRAINT_PARSERS[constraint](self)
        -3081
        -3082    def _parse_unique(self) -> exp.Expression:
        -3083        if not self._match(TokenType.L_PAREN, advance=False):
        -3084            return self.expression(exp.UniqueColumnConstraint)
        -3085        return self.expression(exp.Unique, expressions=self._parse_wrapped_id_vars())
        -3086
        -3087    def _parse_key_constraint_options(self) -> t.List[str]:
        -3088        options = []
        -3089        while True:
        -3090            if not self._curr:
        -3091                break
        -3092
        -3093            if self._match(TokenType.ON):
        -3094                action = None
        -3095                on = self._advance_any() and self._prev.text
        -3096
        -3097                if self._match(TokenType.NO_ACTION):
        -3098                    action = "NO ACTION"
        -3099                elif self._match(TokenType.CASCADE):
        -3100                    action = "CASCADE"
        -3101                elif self._match_pair(TokenType.SET, TokenType.NULL):
        -3102                    action = "SET NULL"
        -3103                elif self._match_pair(TokenType.SET, TokenType.DEFAULT):
        -3104                    action = "SET DEFAULT"
        -3105                else:
        -3106                    self.raise_error("Invalid key constraint")
        -3107
        -3108                options.append(f"ON {on} {action}")
        -3109            elif self._match_text_seq("NOT", "ENFORCED"):
        -3110                options.append("NOT ENFORCED")
        -3111            elif self._match_text_seq("DEFERRABLE"):
        -3112                options.append("DEFERRABLE")
        -3113            elif self._match_text_seq("INITIALLY", "DEFERRED"):
        -3114                options.append("INITIALLY DEFERRED")
        -3115            elif self._match_text_seq("NORELY"):
        -3116                options.append("NORELY")
        -3117            elif self._match_text_seq("MATCH", "FULL"):
        -3118                options.append("MATCH FULL")
        -3119            else:
        -3120                break
        -3121
        -3122        return options
        -3123
        -3124    def _parse_references(self) -> t.Optional[exp.Expression]:
        -3125        if not self._match(TokenType.REFERENCES):
        -3126            return None
        -3127
        -3128        expressions = None
        -3129        this = self._parse_id_var()
        -3130
        -3131        if self._match(TokenType.L_PAREN, advance=False):
        -3132            expressions = self._parse_wrapped_id_vars()
        -3133
        -3134        options = self._parse_key_constraint_options()
        -3135        return self.expression(exp.Reference, this=this, expressions=expressions, options=options)
        -3136
        -3137    def _parse_foreign_key(self) -> exp.Expression:
        -3138        expressions = self._parse_wrapped_id_vars()
        -3139        reference = self._parse_references()
        -3140        options = {}
        -3141
        -3142        while self._match(TokenType.ON):
        -3143            if not self._match_set((TokenType.DELETE, TokenType.UPDATE)):
        -3144                self.raise_error("Expected DELETE or UPDATE")
        +3068        if self._match_texts(self.CONSTRAINT_PARSERS):
        +3069            return self.expression(
        +3070                exp.ColumnConstraint,
        +3071                this=this,
        +3072                kind=self.CONSTRAINT_PARSERS[self._prev.text.upper()](self),
        +3073            )
        +3074
        +3075        return this
        +3076
        +3077    def _parse_constraint(self) -> t.Optional[exp.Expression]:
        +3078        if not self._match(TokenType.CONSTRAINT):
        +3079            return self._parse_unnamed_constraint(constraints=self.SCHEMA_UNNAMED_CONSTRAINTS)
        +3080
        +3081        this = self._parse_id_var()
        +3082        expressions = []
        +3083
        +3084        while True:
        +3085            constraint = self._parse_unnamed_constraint() or self._parse_function()
        +3086            if not constraint:
        +3087                break
        +3088            expressions.append(constraint)
        +3089
        +3090        return self.expression(exp.Constraint, this=this, expressions=expressions)
        +3091
        +3092    def _parse_unnamed_constraint(
        +3093        self, constraints: t.Optional[t.Collection[str]] = None
        +3094    ) -> t.Optional[exp.Expression]:
        +3095        if not self._match_texts(constraints or self.CONSTRAINT_PARSERS):
        +3096            return None
        +3097
        +3098        constraint = self._prev.text.upper()
        +3099        if constraint not in self.CONSTRAINT_PARSERS:
        +3100            self.raise_error(f"No parser found for schema constraint {constraint}.")
        +3101
        +3102        return self.CONSTRAINT_PARSERS[constraint](self)
        +3103
        +3104    def _parse_unique(self) -> exp.Expression:
        +3105        if not self._match(TokenType.L_PAREN, advance=False):
        +3106            return self.expression(exp.UniqueColumnConstraint)
        +3107        return self.expression(exp.Unique, expressions=self._parse_wrapped_id_vars())
        +3108
        +3109    def _parse_key_constraint_options(self) -> t.List[str]:
        +3110        options = []
        +3111        while True:
        +3112            if not self._curr:
        +3113                break
        +3114
        +3115            if self._match(TokenType.ON):
        +3116                action = None
        +3117                on = self._advance_any() and self._prev.text
        +3118
        +3119                if self._match(TokenType.NO_ACTION):
        +3120                    action = "NO ACTION"
        +3121                elif self._match(TokenType.CASCADE):
        +3122                    action = "CASCADE"
        +3123                elif self._match_pair(TokenType.SET, TokenType.NULL):
        +3124                    action = "SET NULL"
        +3125                elif self._match_pair(TokenType.SET, TokenType.DEFAULT):
        +3126                    action = "SET DEFAULT"
        +3127                else:
        +3128                    self.raise_error("Invalid key constraint")
        +3129
        +3130                options.append(f"ON {on} {action}")
        +3131            elif self._match_text_seq("NOT", "ENFORCED"):
        +3132                options.append("NOT ENFORCED")
        +3133            elif self._match_text_seq("DEFERRABLE"):
        +3134                options.append("DEFERRABLE")
        +3135            elif self._match_text_seq("INITIALLY", "DEFERRED"):
        +3136                options.append("INITIALLY DEFERRED")
        +3137            elif self._match_text_seq("NORELY"):
        +3138                options.append("NORELY")
        +3139            elif self._match_text_seq("MATCH", "FULL"):
        +3140                options.append("MATCH FULL")
        +3141            else:
        +3142                break
        +3143
        +3144        return options
         3145
        -3146            kind = self._prev.text.lower()
        -3147
        -3148            if self._match(TokenType.NO_ACTION):
        -3149                action = "NO ACTION"
        -3150            elif self._match(TokenType.SET):
        -3151                self._match_set((TokenType.NULL, TokenType.DEFAULT))
        -3152                action = "SET " + self._prev.text.upper()
        -3153            else:
        -3154                self._advance()
        -3155                action = self._prev.text.upper()
        -3156
        -3157            options[kind] = action
        +3146    def _parse_references(self) -> t.Optional[exp.Expression]:
        +3147        if not self._match(TokenType.REFERENCES):
        +3148            return None
        +3149
        +3150        expressions = None
        +3151        this = self._parse_id_var()
        +3152
        +3153        if self._match(TokenType.L_PAREN, advance=False):
        +3154            expressions = self._parse_wrapped_id_vars()
        +3155
        +3156        options = self._parse_key_constraint_options()
        +3157        return self.expression(exp.Reference, this=this, expressions=expressions, options=options)
         3158
        -3159        return self.expression(
        -3160            exp.ForeignKey, expressions=expressions, reference=reference, **options  # type: ignore
        -3161        )
        -3162
        -3163    def _parse_primary_key(self) -> exp.Expression:
        -3164        desc = (
        -3165            self._match_set((TokenType.ASC, TokenType.DESC))
        -3166            and self._prev.token_type == TokenType.DESC
        -3167        )
        -3168
        -3169        if not self._match(TokenType.L_PAREN, advance=False):
        -3170            return self.expression(exp.PrimaryKeyColumnConstraint, desc=desc)
        -3171
        -3172        expressions = self._parse_wrapped_id_vars()
        -3173        options = self._parse_key_constraint_options()
        -3174        return self.expression(exp.PrimaryKey, expressions=expressions, options=options)
        -3175
        -3176    def _parse_bracket(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
        -3177        if not self._match_set((TokenType.L_BRACKET, TokenType.L_BRACE)):
        -3178            return this
        -3179
        -3180        bracket_kind = self._prev.token_type
        -3181        expressions: t.List[t.Optional[exp.Expression]]
        -3182
        -3183        if self._match(TokenType.COLON):
        -3184            expressions = [self.expression(exp.Slice, expression=self._parse_conjunction())]
        -3185        else:
        -3186            expressions = self._parse_csv(lambda: self._parse_slice(self._parse_conjunction()))
        -3187
        -3188        # https://duckdb.org/docs/sql/data_types/struct.html#creating-structs
        -3189        if bracket_kind == TokenType.L_BRACE:
        -3190            this = self.expression(exp.Struct, expressions=expressions)
        -3191        elif not this or this.name.upper() == "ARRAY":
        -3192            this = self.expression(exp.Array, expressions=expressions)
        -3193        else:
        -3194            expressions = apply_index_offset(expressions, -self.index_offset)
        -3195            this = self.expression(exp.Bracket, this=this, expressions=expressions)
        -3196
        -3197        if not self._match(TokenType.R_BRACKET) and bracket_kind == TokenType.L_BRACKET:
        -3198            self.raise_error("Expected ]")
        -3199        elif not self._match(TokenType.R_BRACE) and bracket_kind == TokenType.L_BRACE:
        -3200            self.raise_error("Expected }")
        +3159    def _parse_foreign_key(self) -> exp.Expression:
        +3160        expressions = self._parse_wrapped_id_vars()
        +3161        reference = self._parse_references()
        +3162        options = {}
        +3163
        +3164        while self._match(TokenType.ON):
        +3165            if not self._match_set((TokenType.DELETE, TokenType.UPDATE)):
        +3166                self.raise_error("Expected DELETE or UPDATE")
        +3167
        +3168            kind = self._prev.text.lower()
        +3169
        +3170            if self._match(TokenType.NO_ACTION):
        +3171                action = "NO ACTION"
        +3172            elif self._match(TokenType.SET):
        +3173                self._match_set((TokenType.NULL, TokenType.DEFAULT))
        +3174                action = "SET " + self._prev.text.upper()
        +3175            else:
        +3176                self._advance()
        +3177                action = self._prev.text.upper()
        +3178
        +3179            options[kind] = action
        +3180
        +3181        return self.expression(
        +3182            exp.ForeignKey, expressions=expressions, reference=reference, **options  # type: ignore
        +3183        )
        +3184
        +3185    def _parse_primary_key(self) -> exp.Expression:
        +3186        desc = (
        +3187            self._match_set((TokenType.ASC, TokenType.DESC))
        +3188            and self._prev.token_type == TokenType.DESC
        +3189        )
        +3190
        +3191        if not self._match(TokenType.L_PAREN, advance=False):
        +3192            return self.expression(exp.PrimaryKeyColumnConstraint, desc=desc)
        +3193
        +3194        expressions = self._parse_wrapped_id_vars()
        +3195        options = self._parse_key_constraint_options()
        +3196        return self.expression(exp.PrimaryKey, expressions=expressions, options=options)
        +3197
        +3198    def _parse_bracket(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
        +3199        if not self._match_set((TokenType.L_BRACKET, TokenType.L_BRACE)):
        +3200            return this
         3201
        -3202        this.comments = self._prev_comments
        -3203        return self._parse_bracket(this)
        +3202        bracket_kind = self._prev.token_type
        +3203        expressions: t.List[t.Optional[exp.Expression]]
         3204
        -3205    def _parse_slice(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
        -3206        if self._match(TokenType.COLON):
        -3207            return self.expression(exp.Slice, this=this, expression=self._parse_conjunction())
        -3208        return this
        +3205        if self._match(TokenType.COLON):
        +3206            expressions = [self.expression(exp.Slice, expression=self._parse_conjunction())]
        +3207        else:
        +3208            expressions = self._parse_csv(lambda: self._parse_slice(self._parse_conjunction()))
         3209
        -3210    def _parse_case(self) -> t.Optional[exp.Expression]:
        -3211        ifs = []
        -3212        default = None
        -3213
        -3214        expression = self._parse_conjunction()
        -3215
        -3216        while self._match(TokenType.WHEN):
        -3217            this = self._parse_conjunction()
        -3218            self._match(TokenType.THEN)
        -3219            then = self._parse_conjunction()
        -3220            ifs.append(self.expression(exp.If, this=this, true=then))
        -3221
        -3222        if self._match(TokenType.ELSE):
        -3223            default = self._parse_conjunction()
        -3224
        -3225        if not self._match(TokenType.END):
        -3226            self.raise_error("Expected END after CASE", self._prev)
        -3227
        -3228        return self._parse_window(
        -3229            self.expression(exp.Case, this=expression, ifs=ifs, default=default)
        -3230        )
        +3210        # https://duckdb.org/docs/sql/data_types/struct.html#creating-structs
        +3211        if bracket_kind == TokenType.L_BRACE:
        +3212            this = self.expression(exp.Struct, expressions=expressions)
        +3213        elif not this or this.name.upper() == "ARRAY":
        +3214            this = self.expression(exp.Array, expressions=expressions)
        +3215        else:
        +3216            expressions = apply_index_offset(expressions, -self.index_offset)
        +3217            this = self.expression(exp.Bracket, this=this, expressions=expressions)
        +3218
        +3219        if not self._match(TokenType.R_BRACKET) and bracket_kind == TokenType.L_BRACKET:
        +3220            self.raise_error("Expected ]")
        +3221        elif not self._match(TokenType.R_BRACE) and bracket_kind == TokenType.L_BRACE:
        +3222            self.raise_error("Expected }")
        +3223
        +3224        this.comments = self._prev_comments
        +3225        return self._parse_bracket(this)
        +3226
        +3227    def _parse_slice(self, this: t.Optional[exp.Expression]) -> t.Optional[exp.Expression]:
        +3228        if self._match(TokenType.COLON):
        +3229            return self.expression(exp.Slice, this=this, expression=self._parse_conjunction())
        +3230        return this
         3231
        -3232    def _parse_if(self) -> t.Optional[exp.Expression]:
        -3233        if self._match(TokenType.L_PAREN):
        -3234            args = self._parse_csv(self._parse_conjunction)
        -3235            this = exp.If.from_arg_list(args)
        -3236            self.validate_expression(this, args)
        -3237            self._match_r_paren()
        -3238        else:
        -3239            condition = self._parse_conjunction()
        +3232    def _parse_case(self) -> t.Optional[exp.Expression]:
        +3233        ifs = []
        +3234        default = None
        +3235
        +3236        expression = self._parse_conjunction()
        +3237
        +3238        while self._match(TokenType.WHEN):
        +3239            this = self._parse_conjunction()
         3240            self._match(TokenType.THEN)
        -3241            true = self._parse_conjunction()
        -3242            false = self._parse_conjunction() if self._match(TokenType.ELSE) else None
        -3243            self._match(TokenType.END)
        -3244            this = self.expression(exp.If, this=condition, true=true, false=false)
        -3245
        -3246        return self._parse_window(this)
        -3247
        -3248    def _parse_extract(self) -> exp.Expression:
        -3249        this = self._parse_function() or self._parse_var() or self._parse_type()
        -3250
        -3251        if self._match(TokenType.FROM):
        -3252            return self.expression(exp.Extract, this=this, expression=self._parse_bitwise())
        +3241            then = self._parse_conjunction()
        +3242            ifs.append(self.expression(exp.If, this=this, true=then))
        +3243
        +3244        if self._match(TokenType.ELSE):
        +3245            default = self._parse_conjunction()
        +3246
        +3247        if not self._match(TokenType.END):
        +3248            self.raise_error("Expected END after CASE", self._prev)
        +3249
        +3250        return self._parse_window(
        +3251            self.expression(exp.Case, this=expression, ifs=ifs, default=default)
        +3252        )
         3253
        -3254        if not self._match(TokenType.COMMA):
        -3255            self.raise_error("Expected FROM or comma after EXTRACT", self._prev)
        -3256
        -3257        return self.expression(exp.Extract, this=this, expression=self._parse_bitwise())
        -3258
        -3259    def _parse_cast(self, strict: bool) -> exp.Expression:
        -3260        this = self._parse_conjunction()
        -3261
        -3262        if not self._match(TokenType.ALIAS):
        -3263            self.raise_error("Expected AS after CAST")
        -3264
        -3265        to = self._parse_types()
        -3266
        -3267        if not to:
        -3268            self.raise_error("Expected TYPE after CAST")
        -3269        elif to.this == exp.DataType.Type.CHAR:
        -3270            if self._match(TokenType.CHARACTER_SET):
        -3271                to = self.expression(exp.CharacterSet, this=self._parse_var_or_string())
        +3254    def _parse_if(self) -> t.Optional[exp.Expression]:
        +3255        if self._match(TokenType.L_PAREN):
        +3256            args = self._parse_csv(self._parse_conjunction)
        +3257            this = exp.If.from_arg_list(args)
        +3258            self.validate_expression(this, args)
        +3259            self._match_r_paren()
        +3260        else:
        +3261            condition = self._parse_conjunction()
        +3262            self._match(TokenType.THEN)
        +3263            true = self._parse_conjunction()
        +3264            false = self._parse_conjunction() if self._match(TokenType.ELSE) else None
        +3265            self._match(TokenType.END)
        +3266            this = self.expression(exp.If, this=condition, true=true, false=false)
        +3267
        +3268        return self._parse_window(this)
        +3269
        +3270    def _parse_extract(self) -> exp.Expression:
        +3271        this = self._parse_function() or self._parse_var() or self._parse_type()
         3272
        -3273        return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to)
        -3274
        -3275    def _parse_string_agg(self) -> exp.Expression:
        -3276        expression: t.Optional[exp.Expression]
        -3277
        -3278        if self._match(TokenType.DISTINCT):
        -3279            args = self._parse_csv(self._parse_conjunction)
        -3280            expression = self.expression(exp.Distinct, expressions=[seq_get(args, 0)])
        -3281        else:
        -3282            args = self._parse_csv(self._parse_conjunction)
        -3283            expression = seq_get(args, 0)
        -3284
        -3285        index = self._index
        -3286        if not self._match(TokenType.R_PAREN):
        -3287            # postgres: STRING_AGG([DISTINCT] expression, separator [ORDER BY expression1 {ASC | DESC} [, ...]])
        -3288            order = self._parse_order(this=expression)
        -3289            return self.expression(exp.GroupConcat, this=order, separator=seq_get(args, 1))
        -3290
        -3291        # Checks if we can parse an order clause: WITHIN GROUP (ORDER BY <order_by_expression_list> [ASC | DESC]).
        -3292        # This is done "manually", instead of letting _parse_window parse it into an exp.WithinGroup node, so that
        -3293        # the STRING_AGG call is parsed like in MySQL / SQLite and can thus be transpiled more easily to them.
        -3294        if not self._match(TokenType.WITHIN_GROUP):
        -3295            self._retreat(index)
        -3296            this = exp.GroupConcat.from_arg_list(args)
        -3297            self.validate_expression(this, args)
        -3298            return this
        +3273        if self._match(TokenType.FROM):
        +3274            return self.expression(exp.Extract, this=this, expression=self._parse_bitwise())
        +3275
        +3276        if not self._match(TokenType.COMMA):
        +3277            self.raise_error("Expected FROM or comma after EXTRACT", self._prev)
        +3278
        +3279        return self.expression(exp.Extract, this=this, expression=self._parse_bitwise())
        +3280
        +3281    def _parse_cast(self, strict: bool) -> exp.Expression:
        +3282        this = self._parse_conjunction()
        +3283
        +3284        if not self._match(TokenType.ALIAS):
        +3285            self.raise_error("Expected AS after CAST")
        +3286
        +3287        to = self._parse_types()
        +3288
        +3289        if not to:
        +3290            self.raise_error("Expected TYPE after CAST")
        +3291        elif to.this == exp.DataType.Type.CHAR:
        +3292            if self._match(TokenType.CHARACTER_SET):
        +3293                to = self.expression(exp.CharacterSet, this=self._parse_var_or_string())
        +3294
        +3295        return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to)
        +3296
        +3297    def _parse_string_agg(self) -> exp.Expression:
        +3298        expression: t.Optional[exp.Expression]
         3299
        -3300        self._match_l_paren()  # The corresponding match_r_paren will be called in parse_function (caller)
        -3301        order = self._parse_order(this=expression)
        -3302        return self.expression(exp.GroupConcat, this=order, separator=seq_get(args, 1))
        -3303
        -3304    def _parse_convert(self, strict: bool) -> t.Optional[exp.Expression]:
        -3305        to: t.Optional[exp.Expression]
        -3306        this = self._parse_bitwise()
        -3307
        -3308        if self._match(TokenType.USING):
        -3309            to = self.expression(exp.CharacterSet, this=self._parse_var())
        -3310        elif self._match(TokenType.COMMA):
        -3311            to = self._parse_bitwise()
        -3312        else:
        -3313            to = None
        -3314
        -3315        # Swap the argument order if needed to produce the correct AST
        -3316        if self.CONVERT_TYPE_FIRST:
        -3317            this, to = to, this
        -3318
        -3319        return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to)
        -3320
        -3321    def _parse_position(self, haystack_first: bool = False) -> exp.Expression:
        -3322        args = self._parse_csv(self._parse_bitwise)
        -3323
        -3324        if self._match(TokenType.IN):
        -3325            return self.expression(
        -3326                exp.StrPosition, this=self._parse_bitwise(), substr=seq_get(args, 0)
        -3327            )
        -3328
        -3329        if haystack_first:
        -3330            haystack = seq_get(args, 0)
        -3331            needle = seq_get(args, 1)
        -3332        else:
        -3333            needle = seq_get(args, 0)
        -3334            haystack = seq_get(args, 1)
        -3335
        -3336        this = exp.StrPosition(this=haystack, substr=needle, position=seq_get(args, 2))
        -3337
        -3338        self.validate_expression(this, args)
        -3339
        -3340        return this
        -3341
        -3342    def _parse_join_hint(self, func_name: str) -> exp.Expression:
        -3343        args = self._parse_csv(self._parse_table)
        -3344        return exp.JoinHint(this=func_name.upper(), expressions=args)
        -3345
        -3346    def _parse_substring(self) -> exp.Expression:
        -3347        # Postgres supports the form: substring(string [from int] [for int])
        -3348        # https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6
        -3349
        -3350        args = self._parse_csv(self._parse_bitwise)
        -3351
        -3352        if self._match(TokenType.FROM):
        -3353            args.append(self._parse_bitwise())
        -3354            if self._match(TokenType.FOR):
        -3355                args.append(self._parse_bitwise())
        -3356
        -3357        this = exp.Substring.from_arg_list(args)
        -3358        self.validate_expression(this, args)
        -3359
        -3360        return this
        +3300        if self._match(TokenType.DISTINCT):
        +3301            args = self._parse_csv(self._parse_conjunction)
        +3302            expression = self.expression(exp.Distinct, expressions=[seq_get(args, 0)])
        +3303        else:
        +3304            args = self._parse_csv(self._parse_conjunction)
        +3305            expression = seq_get(args, 0)
        +3306
        +3307        index = self._index
        +3308        if not self._match(TokenType.R_PAREN):
        +3309            # postgres: STRING_AGG([DISTINCT] expression, separator [ORDER BY expression1 {ASC | DESC} [, ...]])
        +3310            order = self._parse_order(this=expression)
        +3311            return self.expression(exp.GroupConcat, this=order, separator=seq_get(args, 1))
        +3312
        +3313        # Checks if we can parse an order clause: WITHIN GROUP (ORDER BY <order_by_expression_list> [ASC | DESC]).
        +3314        # This is done "manually", instead of letting _parse_window parse it into an exp.WithinGroup node, so that
        +3315        # the STRING_AGG call is parsed like in MySQL / SQLite and can thus be transpiled more easily to them.
        +3316        if not self._match(TokenType.WITHIN_GROUP):
        +3317            self._retreat(index)
        +3318            this = exp.GroupConcat.from_arg_list(args)
        +3319            self.validate_expression(this, args)
        +3320            return this
        +3321
        +3322        self._match_l_paren()  # The corresponding match_r_paren will be called in parse_function (caller)
        +3323        order = self._parse_order(this=expression)
        +3324        return self.expression(exp.GroupConcat, this=order, separator=seq_get(args, 1))
        +3325
        +3326    def _parse_convert(self, strict: bool) -> t.Optional[exp.Expression]:
        +3327        to: t.Optional[exp.Expression]
        +3328        this = self._parse_bitwise()
        +3329
        +3330        if self._match(TokenType.USING):
        +3331            to = self.expression(exp.CharacterSet, this=self._parse_var())
        +3332        elif self._match(TokenType.COMMA):
        +3333            to = self._parse_bitwise()
        +3334        else:
        +3335            to = None
        +3336
        +3337        # Swap the argument order if needed to produce the correct AST
        +3338        if self.CONVERT_TYPE_FIRST:
        +3339            this, to = to, this
        +3340
        +3341        return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to)
        +3342
        +3343    def _parse_json_key_value(self) -> t.Optional[exp.Expression]:
        +3344        self._match_text_seq("KEY")
        +3345        key = self._parse_field()
        +3346        self._match(TokenType.COLON)
        +3347        self._match_text_seq("VALUE")
        +3348        value = self._parse_field()
        +3349        if not key and not value:
        +3350            return None
        +3351        return self.expression(exp.JSONKeyValue, this=key, expression=value)
        +3352
        +3353    def _parse_json_object(self) -> exp.Expression:
        +3354        expressions = self._parse_csv(self._parse_json_key_value)
        +3355
        +3356        null_handling = None
        +3357        if self._match_text_seq("NULL", "ON", "NULL"):
        +3358            null_handling = "NULL ON NULL"
        +3359        elif self._match_text_seq("ABSENT", "ON", "NULL"):
        +3360            null_handling = "ABSENT ON NULL"
         3361
        -3362    def _parse_trim(self) -> exp.Expression:
        -3363        # https://www.w3resource.com/sql/character-functions/trim.php
        -3364        # https://docs.oracle.com/javadb/10.8.3.0/ref/rreftrimfunc.html
        -3365
        -3366        position = None
        -3367        collation = None
        -3368
        -3369        if self._match_set(self.TRIM_TYPES):
        -3370            position = self._prev.text.upper()
        -3371
        -3372        expression = self._parse_term()
        -3373        if self._match_set((TokenType.FROM, TokenType.COMMA)):
        -3374            this = self._parse_term()
        -3375        else:
        -3376            this = expression
        -3377            expression = None
        -3378
        -3379        if self._match(TokenType.COLLATE):
        -3380            collation = self._parse_term()
        -3381
        -3382        return self.expression(
        -3383            exp.Trim,
        -3384            this=this,
        -3385            position=position,
        -3386            expression=expression,
        -3387            collation=collation,
        -3388        )
        -3389
        -3390    def _parse_window_clause(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]:
        -3391        return self._match(TokenType.WINDOW) and self._parse_csv(self._parse_named_window)
        -3392
        -3393    def _parse_named_window(self) -> t.Optional[exp.Expression]:
        -3394        return self._parse_window(self._parse_id_var(), alias=True)
        -3395
        -3396    def _parse_window(
        -3397        self, this: t.Optional[exp.Expression], alias: bool = False
        -3398    ) -> t.Optional[exp.Expression]:
        -3399        if self._match_pair(TokenType.FILTER, TokenType.L_PAREN):
        -3400            this = self.expression(exp.Filter, this=this, expression=self._parse_where())
        -3401            self._match_r_paren()
        +3362        unique_keys = None
        +3363        if self._match_text_seq("WITH", "UNIQUE"):
        +3364            unique_keys = True
        +3365        elif self._match_text_seq("WITHOUT", "UNIQUE"):
        +3366            unique_keys = False
        +3367
        +3368        self._match_text_seq("KEYS")
        +3369
        +3370        return_type = self._match_text_seq("RETURNING") and self._parse_type()
        +3371        format_json = self._match_text_seq("FORMAT", "JSON")
        +3372        encoding = self._match_text_seq("ENCODING") and self._parse_var()
        +3373
        +3374        return self.expression(
        +3375            exp.JSONObject,
        +3376            expressions=expressions,
        +3377            null_handling=null_handling,
        +3378            unique_keys=unique_keys,
        +3379            return_type=return_type,
        +3380            format_json=format_json,
        +3381            encoding=encoding,
        +3382        )
        +3383
        +3384    def _parse_position(self, haystack_first: bool = False) -> exp.Expression:
        +3385        args = self._parse_csv(self._parse_bitwise)
        +3386
        +3387        if self._match(TokenType.IN):
        +3388            return self.expression(
        +3389                exp.StrPosition, this=self._parse_bitwise(), substr=seq_get(args, 0)
        +3390            )
        +3391
        +3392        if haystack_first:
        +3393            haystack = seq_get(args, 0)
        +3394            needle = seq_get(args, 1)
        +3395        else:
        +3396            needle = seq_get(args, 0)
        +3397            haystack = seq_get(args, 1)
        +3398
        +3399        this = exp.StrPosition(this=haystack, substr=needle, position=seq_get(args, 2))
        +3400
        +3401        self.validate_expression(this, args)
         3402
        -3403        # T-SQL allows the OVER (...) syntax after WITHIN GROUP.
        -3404        # https://learn.microsoft.com/en-us/sql/t-sql/functions/percentile-disc-transact-sql?view=sql-server-ver16
        -3405        if self._match(TokenType.WITHIN_GROUP):
        -3406            order = self._parse_wrapped(self._parse_order)
        -3407            this = self.expression(exp.WithinGroup, this=this, expression=order)
        +3403        return this
        +3404
        +3405    def _parse_join_hint(self, func_name: str) -> exp.Expression:
        +3406        args = self._parse_csv(self._parse_table)
        +3407        return exp.JoinHint(this=func_name.upper(), expressions=args)
         3408
        -3409        # SQL spec defines an optional [ { IGNORE | RESPECT } NULLS ] OVER
        -3410        # Some dialects choose to implement and some do not.
        -3411        # https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html
        +3409    def _parse_substring(self) -> exp.Expression:
        +3410        # Postgres supports the form: substring(string [from int] [for int])
        +3411        # https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6
         3412
        -3413        # There is some code above in _parse_lambda that handles
        -3414        #   SELECT FIRST_VALUE(TABLE.COLUMN IGNORE|RESPECT NULLS) OVER ...
        -3415
        -3416        # The below changes handle
        -3417        #   SELECT FIRST_VALUE(TABLE.COLUMN) IGNORE|RESPECT NULLS OVER ...
        -3418
        -3419        # Oracle allows both formats
        -3420        #   (https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/img_text/first_value.html)
        -3421        #   and Snowflake chose to do the same for familiarity
        -3422        #   https://docs.snowflake.com/en/sql-reference/functions/first_value.html#usage-notes
        -3423        if self._match(TokenType.IGNORE_NULLS):
        -3424            this = self.expression(exp.IgnoreNulls, this=this)
        -3425        elif self._match(TokenType.RESPECT_NULLS):
        -3426            this = self.expression(exp.RespectNulls, this=this)
        -3427
        -3428        # bigquery select from window x AS (partition by ...)
        -3429        if alias:
        -3430            self._match(TokenType.ALIAS)
        -3431        elif not self._match(TokenType.OVER):
        -3432            return this
        -3433
        -3434        if not self._match(TokenType.L_PAREN):
        -3435            return self.expression(exp.Window, this=this, alias=self._parse_id_var(False))
        -3436
        -3437        window_alias = self._parse_id_var(any_token=False, tokens=self.WINDOW_ALIAS_TOKENS)
        -3438        partition = self._parse_partition_by()
        -3439        order = self._parse_order()
        -3440        kind = self._match_set((TokenType.ROWS, TokenType.RANGE)) and self._prev.text
        +3413        args = self._parse_csv(self._parse_bitwise)
        +3414
        +3415        if self._match(TokenType.FROM):
        +3416            args.append(self._parse_bitwise())
        +3417            if self._match(TokenType.FOR):
        +3418                args.append(self._parse_bitwise())
        +3419
        +3420        this = exp.Substring.from_arg_list(args)
        +3421        self.validate_expression(this, args)
        +3422
        +3423        return this
        +3424
        +3425    def _parse_trim(self) -> exp.Expression:
        +3426        # https://www.w3resource.com/sql/character-functions/trim.php
        +3427        # https://docs.oracle.com/javadb/10.8.3.0/ref/rreftrimfunc.html
        +3428
        +3429        position = None
        +3430        collation = None
        +3431
        +3432        if self._match_set(self.TRIM_TYPES):
        +3433            position = self._prev.text.upper()
        +3434
        +3435        expression = self._parse_term()
        +3436        if self._match_set((TokenType.FROM, TokenType.COMMA)):
        +3437            this = self._parse_term()
        +3438        else:
        +3439            this = expression
        +3440            expression = None
         3441
        -3442        if kind:
        -3443            self._match(TokenType.BETWEEN)
        -3444            start = self._parse_window_spec()
        -3445            self._match(TokenType.AND)
        -3446            end = self._parse_window_spec()
        -3447
        -3448            spec = self.expression(
        -3449                exp.WindowSpec,
        -3450                kind=kind,
        -3451                start=start["value"],
        -3452                start_side=start["side"],
        -3453                end=end["value"],
        -3454                end_side=end["side"],
        -3455            )
        -3456        else:
        -3457            spec = None
        +3442        if self._match(TokenType.COLLATE):
        +3443            collation = self._parse_term()
        +3444
        +3445        return self.expression(
        +3446            exp.Trim,
        +3447            this=this,
        +3448            position=position,
        +3449            expression=expression,
        +3450            collation=collation,
        +3451        )
        +3452
        +3453    def _parse_window_clause(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]:
        +3454        return self._match(TokenType.WINDOW) and self._parse_csv(self._parse_named_window)
        +3455
        +3456    def _parse_named_window(self) -> t.Optional[exp.Expression]:
        +3457        return self._parse_window(self._parse_id_var(), alias=True)
         3458
        -3459        self._match_r_paren()
        -3460
        -3461        return self.expression(
        -3462            exp.Window,
        -3463            this=this,
        -3464            partition_by=partition,
        -3465            order=order,
        -3466            spec=spec,
        -3467            alias=window_alias,
        -3468        )
        -3469
        -3470    def _parse_window_spec(self) -> t.Dict[str, t.Optional[str | exp.Expression]]:
        -3471        self._match(TokenType.BETWEEN)
        -3472
        -3473        return {
        -3474            "value": (
        -3475                self._match_set((TokenType.UNBOUNDED, TokenType.CURRENT_ROW)) and self._prev.text
        -3476            )
        -3477            or self._parse_bitwise(),
        -3478            "side": self._match_set((TokenType.PRECEDING, TokenType.FOLLOWING)) and self._prev.text,
        -3479        }
        -3480
        -3481    def _parse_alias(
        -3482        self, this: t.Optional[exp.Expression], explicit: bool = False
        -3483    ) -> t.Optional[exp.Expression]:
        -3484        any_token = self._match(TokenType.ALIAS)
        -3485
        -3486        if explicit and not any_token:
        -3487            return this
        -3488
        -3489        if self._match(TokenType.L_PAREN):
        -3490            aliases = self.expression(
        -3491                exp.Aliases,
        -3492                this=this,
        -3493                expressions=self._parse_csv(lambda: self._parse_id_var(any_token)),
        -3494            )
        -3495            self._match_r_paren(aliases)
        -3496            return aliases
        -3497
        -3498        alias = self._parse_id_var(any_token)
        +3459    def _parse_window(
        +3460        self, this: t.Optional[exp.Expression], alias: bool = False
        +3461    ) -> t.Optional[exp.Expression]:
        +3462        if self._match_pair(TokenType.FILTER, TokenType.L_PAREN):
        +3463            this = self.expression(exp.Filter, this=this, expression=self._parse_where())
        +3464            self._match_r_paren()
        +3465
        +3466        # T-SQL allows the OVER (...) syntax after WITHIN GROUP.
        +3467        # https://learn.microsoft.com/en-us/sql/t-sql/functions/percentile-disc-transact-sql?view=sql-server-ver16
        +3468        if self._match(TokenType.WITHIN_GROUP):
        +3469            order = self._parse_wrapped(self._parse_order)
        +3470            this = self.expression(exp.WithinGroup, this=this, expression=order)
        +3471
        +3472        # SQL spec defines an optional [ { IGNORE | RESPECT } NULLS ] OVER
        +3473        # Some dialects choose to implement and some do not.
        +3474        # https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html
        +3475
        +3476        # There is some code above in _parse_lambda that handles
        +3477        #   SELECT FIRST_VALUE(TABLE.COLUMN IGNORE|RESPECT NULLS) OVER ...
        +3478
        +3479        # The below changes handle
        +3480        #   SELECT FIRST_VALUE(TABLE.COLUMN) IGNORE|RESPECT NULLS OVER ...
        +3481
        +3482        # Oracle allows both formats
        +3483        #   (https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/img_text/first_value.html)
        +3484        #   and Snowflake chose to do the same for familiarity
        +3485        #   https://docs.snowflake.com/en/sql-reference/functions/first_value.html#usage-notes
        +3486        if self._match(TokenType.IGNORE_NULLS):
        +3487            this = self.expression(exp.IgnoreNulls, this=this)
        +3488        elif self._match(TokenType.RESPECT_NULLS):
        +3489            this = self.expression(exp.RespectNulls, this=this)
        +3490
        +3491        # bigquery select from window x AS (partition by ...)
        +3492        if alias:
        +3493            self._match(TokenType.ALIAS)
        +3494        elif not self._match(TokenType.OVER):
        +3495            return this
        +3496
        +3497        if not self._match(TokenType.L_PAREN):
        +3498            return self.expression(exp.Window, this=this, alias=self._parse_id_var(False))
         3499
        -3500        if alias:
        -3501            return self.expression(exp.Alias, this=this, alias=alias)
        -3502
        -3503        return this
        +3500        window_alias = self._parse_id_var(any_token=False, tokens=self.WINDOW_ALIAS_TOKENS)
        +3501        partition = self._parse_partition_by()
        +3502        order = self._parse_order()
        +3503        kind = self._match_set((TokenType.ROWS, TokenType.RANGE)) and self._prev.text
         3504
        -3505    def _parse_id_var(
        -3506        self,
        -3507        any_token: bool = True,
        -3508        tokens: t.Optional[t.Collection[TokenType]] = None,
        -3509        prefix_tokens: t.Optional[t.Collection[TokenType]] = None,
        -3510    ) -> t.Optional[exp.Expression]:
        -3511        identifier = self._parse_identifier()
        -3512
        -3513        if identifier:
        -3514            return identifier
        -3515
        -3516        prefix = ""
        -3517
        -3518        if prefix_tokens:
        -3519            while self._match_set(prefix_tokens):
        -3520                prefix += self._prev.text
        +3505        if kind:
        +3506            self._match(TokenType.BETWEEN)
        +3507            start = self._parse_window_spec()
        +3508            self._match(TokenType.AND)
        +3509            end = self._parse_window_spec()
        +3510
        +3511            spec = self.expression(
        +3512                exp.WindowSpec,
        +3513                kind=kind,
        +3514                start=start["value"],
        +3515                start_side=start["side"],
        +3516                end=end["value"],
        +3517                end_side=end["side"],
        +3518            )
        +3519        else:
        +3520            spec = None
         3521
        -3522        if (any_token and self._advance_any()) or self._match_set(tokens or self.ID_VAR_TOKENS):
        -3523            quoted = self._prev.token_type == TokenType.STRING
        -3524            return exp.Identifier(this=prefix + self._prev.text, quoted=quoted)
        -3525
        -3526        return None
        -3527
        -3528    def _parse_string(self) -> t.Optional[exp.Expression]:
        -3529        if self._match(TokenType.STRING):
        -3530            return self.PRIMARY_PARSERS[TokenType.STRING](self, self._prev)
        -3531        return self._parse_placeholder()
        +3522        self._match_r_paren()
        +3523
        +3524        return self.expression(
        +3525            exp.Window,
        +3526            this=this,
        +3527            partition_by=partition,
        +3528            order=order,
        +3529            spec=spec,
        +3530            alias=window_alias,
        +3531        )
         3532
        -3533    def _parse_string_as_identifier(self) -> t.Optional[exp.Expression]:
        -3534        return exp.to_identifier(self._match(TokenType.STRING) and self._prev.text, quoted=True)
        +3533    def _parse_window_spec(self) -> t.Dict[str, t.Optional[str | exp.Expression]]:
        +3534        self._match(TokenType.BETWEEN)
         3535
        -3536    def _parse_number(self) -> t.Optional[exp.Expression]:
        -3537        if self._match(TokenType.NUMBER):
        -3538            return self.PRIMARY_PARSERS[TokenType.NUMBER](self, self._prev)
        -3539        return self._parse_placeholder()
        -3540
        -3541    def _parse_identifier(self) -> t.Optional[exp.Expression]:
        -3542        if self._match(TokenType.IDENTIFIER):
        -3543            return self.expression(exp.Identifier, this=self._prev.text, quoted=True)
        -3544        return self._parse_placeholder()
        -3545
        -3546    def _parse_var(
        -3547        self, any_token: bool = False, tokens: t.Optional[t.Collection[TokenType]] = None
        -3548    ) -> t.Optional[exp.Expression]:
        -3549        if (
        -3550            (any_token and self._advance_any())
        -3551            or self._match(TokenType.VAR)
        -3552            or (self._match_set(tokens) if tokens else False)
        -3553        ):
        -3554            return self.expression(exp.Var, this=self._prev.text)
        -3555        return self._parse_placeholder()
        -3556
        -3557    def _advance_any(self) -> t.Optional[Token]:
        -3558        if self._curr and self._curr.token_type not in self.RESERVED_KEYWORDS:
        -3559            self._advance()
        -3560            return self._prev
        -3561        return None
        +3536        return {
        +3537            "value": (
        +3538                self._match_set((TokenType.UNBOUNDED, TokenType.CURRENT_ROW)) and self._prev.text
        +3539            )
        +3540            or self._parse_bitwise(),
        +3541            "side": self._match_set((TokenType.PRECEDING, TokenType.FOLLOWING)) and self._prev.text,
        +3542        }
        +3543
        +3544    def _parse_alias(
        +3545        self, this: t.Optional[exp.Expression], explicit: bool = False
        +3546    ) -> t.Optional[exp.Expression]:
        +3547        any_token = self._match(TokenType.ALIAS)
        +3548
        +3549        if explicit and not any_token:
        +3550            return this
        +3551
        +3552        if self._match(TokenType.L_PAREN):
        +3553            aliases = self.expression(
        +3554                exp.Aliases,
        +3555                this=this,
        +3556                expressions=self._parse_csv(lambda: self._parse_id_var(any_token)),
        +3557            )
        +3558            self._match_r_paren(aliases)
        +3559            return aliases
        +3560
        +3561        alias = self._parse_id_var(any_token)
         3562
        -3563    def _parse_var_or_string(self) -> t.Optional[exp.Expression]:
        -3564        return self._parse_var() or self._parse_string()
        +3563        if alias:
        +3564            return self.expression(exp.Alias, this=this, alias=alias)
         3565
        -3566    def _parse_null(self) -> t.Optional[exp.Expression]:
        -3567        if self._match(TokenType.NULL):
        -3568            return self.PRIMARY_PARSERS[TokenType.NULL](self, self._prev)
        -3569        return None
        -3570
        -3571    def _parse_boolean(self) -> t.Optional[exp.Expression]:
        -3572        if self._match(TokenType.TRUE):
        -3573            return self.PRIMARY_PARSERS[TokenType.TRUE](self, self._prev)
        -3574        if self._match(TokenType.FALSE):
        -3575            return self.PRIMARY_PARSERS[TokenType.FALSE](self, self._prev)
        -3576        return None
        -3577
        -3578    def _parse_star(self) -> t.Optional[exp.Expression]:
        -3579        if self._match(TokenType.STAR):
        -3580            return self.PRIMARY_PARSERS[TokenType.STAR](self, self._prev)
        -3581        return None
        -3582
        -3583    def _parse_parameter(self) -> exp.Expression:
        -3584        wrapped = self._match(TokenType.L_BRACE)
        -3585        this = self._parse_var() or self._parse_primary()
        -3586        self._match(TokenType.R_BRACE)
        -3587        return self.expression(exp.Parameter, this=this, wrapped=wrapped)
        +3566        return this
        +3567
        +3568    def _parse_id_var(
        +3569        self,
        +3570        any_token: bool = True,
        +3571        tokens: t.Optional[t.Collection[TokenType]] = None,
        +3572        prefix_tokens: t.Optional[t.Collection[TokenType]] = None,
        +3573    ) -> t.Optional[exp.Expression]:
        +3574        identifier = self._parse_identifier()
        +3575
        +3576        if identifier:
        +3577            return identifier
        +3578
        +3579        prefix = ""
        +3580
        +3581        if prefix_tokens:
        +3582            while self._match_set(prefix_tokens):
        +3583                prefix += self._prev.text
        +3584
        +3585        if (any_token and self._advance_any()) or self._match_set(tokens or self.ID_VAR_TOKENS):
        +3586            quoted = self._prev.token_type == TokenType.STRING
        +3587            return exp.Identifier(this=prefix + self._prev.text, quoted=quoted)
         3588
        -3589    def _parse_placeholder(self) -> t.Optional[exp.Expression]:
        -3590        if self._match_set(self.PLACEHOLDER_PARSERS):
        -3591            placeholder = self.PLACEHOLDER_PARSERS[self._prev.token_type](self)
        -3592            if placeholder:
        -3593                return placeholder
        -3594            self._advance(-1)
        -3595        return None
        -3596
        -3597    def _parse_except(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]:
        -3598        if not self._match(TokenType.EXCEPT):
        -3599            return None
        -3600        if self._match(TokenType.L_PAREN, advance=False):
        -3601            return self._parse_wrapped_csv(self._parse_column)
        -3602        return self._parse_csv(self._parse_column)
        +3589        return None
        +3590
        +3591    def _parse_string(self) -> t.Optional[exp.Expression]:
        +3592        if self._match(TokenType.STRING):
        +3593            return self.PRIMARY_PARSERS[TokenType.STRING](self, self._prev)
        +3594        return self._parse_placeholder()
        +3595
        +3596    def _parse_string_as_identifier(self) -> t.Optional[exp.Expression]:
        +3597        return exp.to_identifier(self._match(TokenType.STRING) and self._prev.text, quoted=True)
        +3598
        +3599    def _parse_number(self) -> t.Optional[exp.Expression]:
        +3600        if self._match(TokenType.NUMBER):
        +3601            return self.PRIMARY_PARSERS[TokenType.NUMBER](self, self._prev)
        +3602        return self._parse_placeholder()
         3603
        -3604    def _parse_replace(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]:
        -3605        if not self._match(TokenType.REPLACE):
        -3606            return None
        -3607        if self._match(TokenType.L_PAREN, advance=False):
        -3608            return self._parse_wrapped_csv(self._parse_expression)
        -3609        return self._parse_csv(self._parse_expression)
        -3610
        -3611    def _parse_csv(
        -3612        self, parse_method: t.Callable, sep: TokenType = TokenType.COMMA
        -3613    ) -> t.List[t.Optional[exp.Expression]]:
        -3614        parse_result = parse_method()
        -3615        items = [parse_result] if parse_result is not None else []
        -3616
        -3617        while self._match(sep):
        -3618            if parse_result and self._prev_comments:
        -3619                parse_result.comments = self._prev_comments
        -3620
        -3621            parse_result = parse_method()
        -3622            if parse_result is not None:
        -3623                items.append(parse_result)
        -3624
        -3625        return items
        -3626
        -3627    def _parse_tokens(
        -3628        self, parse_method: t.Callable, expressions: t.Dict
        -3629    ) -> t.Optional[exp.Expression]:
        -3630        this = parse_method()
        -3631
        -3632        while self._match_set(expressions):
        -3633            this = self.expression(
        -3634                expressions[self._prev.token_type],
        -3635                this=this,
        -3636                comments=self._prev_comments,
        -3637                expression=parse_method(),
        -3638            )
        -3639
        -3640        return this
        -3641
        -3642    def _parse_wrapped_id_vars(self) -> t.List[t.Optional[exp.Expression]]:
        -3643        return self._parse_wrapped_csv(self._parse_id_var)
        -3644
        -3645    def _parse_wrapped_csv(
        -3646        self, parse_method: t.Callable, sep: TokenType = TokenType.COMMA
        -3647    ) -> t.List[t.Optional[exp.Expression]]:
        -3648        return self._parse_wrapped(lambda: self._parse_csv(parse_method, sep=sep))
        -3649
        -3650    def _parse_wrapped(self, parse_method: t.Callable) -> t.Any:
        -3651        self._match_l_paren()
        -3652        parse_result = parse_method()
        -3653        self._match_r_paren()
        -3654        return parse_result
        -3655
        -3656    def _parse_select_or_expression(self) -> t.Optional[exp.Expression]:
        -3657        return self._parse_select() or self._parse_expression()
        -3658
        -3659    def _parse_ddl_select(self) -> t.Optional[exp.Expression]:
        -3660        return self._parse_set_operations(
        -3661            self._parse_select(nested=True, parse_subquery_alias=False)
        -3662        )
        -3663
        -3664    def _parse_transaction(self) -> exp.Expression:
        -3665        this = None
        -3666        if self._match_texts(self.TRANSACTION_KIND):
        -3667            this = self._prev.text
        -3668
        -3669        self._match_texts({"TRANSACTION", "WORK"})
        -3670
        -3671        modes = []
        -3672        while True:
        -3673            mode = []
        -3674            while self._match(TokenType.VAR):
        -3675                mode.append(self._prev.text)
        -3676
        -3677            if mode:
        -3678                modes.append(" ".join(mode))
        -3679            if not self._match(TokenType.COMMA):
        -3680                break
        -3681
        -3682        return self.expression(exp.Transaction, this=this, modes=modes)
        +3604    def _parse_identifier(self) -> t.Optional[exp.Expression]:
        +3605        if self._match(TokenType.IDENTIFIER):
        +3606            return self.expression(exp.Identifier, this=self._prev.text, quoted=True)
        +3607        return self._parse_placeholder()
        +3608
        +3609    def _parse_var(
        +3610        self, any_token: bool = False, tokens: t.Optional[t.Collection[TokenType]] = None
        +3611    ) -> t.Optional[exp.Expression]:
        +3612        if (
        +3613            (any_token and self._advance_any())
        +3614            or self._match(TokenType.VAR)
        +3615            or (self._match_set(tokens) if tokens else False)
        +3616        ):
        +3617            return self.expression(exp.Var, this=self._prev.text)
        +3618        return self._parse_placeholder()
        +3619
        +3620    def _advance_any(self) -> t.Optional[Token]:
        +3621        if self._curr and self._curr.token_type not in self.RESERVED_KEYWORDS:
        +3622            self._advance()
        +3623            return self._prev
        +3624        return None
        +3625
        +3626    def _parse_var_or_string(self) -> t.Optional[exp.Expression]:
        +3627        return self._parse_var() or self._parse_string()
        +3628
        +3629    def _parse_null(self) -> t.Optional[exp.Expression]:
        +3630        if self._match(TokenType.NULL):
        +3631            return self.PRIMARY_PARSERS[TokenType.NULL](self, self._prev)
        +3632        return None
        +3633
        +3634    def _parse_boolean(self) -> t.Optional[exp.Expression]:
        +3635        if self._match(TokenType.TRUE):
        +3636            return self.PRIMARY_PARSERS[TokenType.TRUE](self, self._prev)
        +3637        if self._match(TokenType.FALSE):
        +3638            return self.PRIMARY_PARSERS[TokenType.FALSE](self, self._prev)
        +3639        return None
        +3640
        +3641    def _parse_star(self) -> t.Optional[exp.Expression]:
        +3642        if self._match(TokenType.STAR):
        +3643            return self.PRIMARY_PARSERS[TokenType.STAR](self, self._prev)
        +3644        return None
        +3645
        +3646    def _parse_parameter(self) -> exp.Expression:
        +3647        wrapped = self._match(TokenType.L_BRACE)
        +3648        this = self._parse_var() or self._parse_primary()
        +3649        self._match(TokenType.R_BRACE)
        +3650        return self.expression(exp.Parameter, this=this, wrapped=wrapped)
        +3651
        +3652    def _parse_placeholder(self) -> t.Optional[exp.Expression]:
        +3653        if self._match_set(self.PLACEHOLDER_PARSERS):
        +3654            placeholder = self.PLACEHOLDER_PARSERS[self._prev.token_type](self)
        +3655            if placeholder:
        +3656                return placeholder
        +3657            self._advance(-1)
        +3658        return None
        +3659
        +3660    def _parse_except(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]:
        +3661        if not self._match(TokenType.EXCEPT):
        +3662            return None
        +3663        if self._match(TokenType.L_PAREN, advance=False):
        +3664            return self._parse_wrapped_csv(self._parse_column)
        +3665        return self._parse_csv(self._parse_column)
        +3666
        +3667    def _parse_replace(self) -> t.Optional[t.List[t.Optional[exp.Expression]]]:
        +3668        if not self._match(TokenType.REPLACE):
        +3669            return None
        +3670        if self._match(TokenType.L_PAREN, advance=False):
        +3671            return self._parse_wrapped_csv(self._parse_expression)
        +3672        return self._parse_csv(self._parse_expression)
        +3673
        +3674    def _parse_csv(
        +3675        self, parse_method: t.Callable, sep: TokenType = TokenType.COMMA
        +3676    ) -> t.List[t.Optional[exp.Expression]]:
        +3677        parse_result = parse_method()
        +3678        items = [parse_result] if parse_result is not None else []
        +3679
        +3680        while self._match(sep):
        +3681            if parse_result and self._prev_comments:
        +3682                parse_result.comments = self._prev_comments
         3683
        -3684    def _parse_commit_or_rollback(self) -> exp.Expression:
        -3685        chain = None
        -3686        savepoint = None
        -3687        is_rollback = self._prev.token_type == TokenType.ROLLBACK
        -3688
        -3689        self._match_texts({"TRANSACTION", "WORK"})
        -3690
        -3691        if self._match_text_seq("TO"):
        -3692            self._match_text_seq("SAVEPOINT")
        -3693            savepoint = self._parse_id_var()
        +3684            parse_result = parse_method()
        +3685            if parse_result is not None:
        +3686                items.append(parse_result)
        +3687
        +3688        return items
        +3689
        +3690    def _parse_tokens(
        +3691        self, parse_method: t.Callable, expressions: t.Dict
        +3692    ) -> t.Optional[exp.Expression]:
        +3693        this = parse_method()
         3694
        -3695        if self._match(TokenType.AND):
        -3696            chain = not self._match_text_seq("NO")
        -3697            self._match_text_seq("CHAIN")
        -3698
        -3699        if is_rollback:
        -3700            return self.expression(exp.Rollback, savepoint=savepoint)
        -3701        return self.expression(exp.Commit, chain=chain)
        +3695        while self._match_set(expressions):
        +3696            this = self.expression(
        +3697                expressions[self._prev.token_type],
        +3698                this=this,
        +3699                comments=self._prev_comments,
        +3700                expression=parse_method(),
        +3701            )
         3702
        -3703    def _parse_add_column(self) -> t.Optional[exp.Expression]:
        -3704        if not self._match_text_seq("ADD"):
        -3705            return None
        -3706
        -3707        self._match(TokenType.COLUMN)
        -3708        exists_column = self._parse_exists(not_=True)
        -3709        expression = self._parse_column_def(self._parse_field(any_token=True))
        -3710
        -3711        if expression:
        -3712            expression.set("exists", exists_column)
        -3713
        -3714        return expression
        -3715
        -3716    def _parse_drop_column(self) -> t.Optional[exp.Expression]:
        -3717        return self._match(TokenType.DROP) and self._parse_drop(default_kind="COLUMN")
        +3703        return this
        +3704
        +3705    def _parse_wrapped_id_vars(self) -> t.List[t.Optional[exp.Expression]]:
        +3706        return self._parse_wrapped_csv(self._parse_id_var)
        +3707
        +3708    def _parse_wrapped_csv(
        +3709        self, parse_method: t.Callable, sep: TokenType = TokenType.COMMA
        +3710    ) -> t.List[t.Optional[exp.Expression]]:
        +3711        return self._parse_wrapped(lambda: self._parse_csv(parse_method, sep=sep))
        +3712
        +3713    def _parse_wrapped(self, parse_method: t.Callable) -> t.Any:
        +3714        self._match_l_paren()
        +3715        parse_result = parse_method()
        +3716        self._match_r_paren()
        +3717        return parse_result
         3718
        -3719    # https://docs.aws.amazon.com/athena/latest/ug/alter-table-drop-partition.html
        -3720    def _parse_drop_partition(self, exists: t.Optional[bool] = None) -> exp.Expression:
        -3721        return self.expression(
        -3722            exp.DropPartition, expressions=self._parse_csv(self._parse_partition), exists=exists
        -3723        )
        -3724
        -3725    def _parse_add_constraint(self) -> t.Optional[exp.Expression]:
        -3726        this = None
        -3727        kind = self._prev.token_type
        -3728
        -3729        if kind == TokenType.CONSTRAINT:
        -3730            this = self._parse_id_var()
        +3719    def _parse_select_or_expression(self) -> t.Optional[exp.Expression]:
        +3720        return self._parse_select() or self._parse_set_operations(self._parse_expression())
        +3721
        +3722    def _parse_ddl_select(self) -> t.Optional[exp.Expression]:
        +3723        return self._parse_set_operations(
        +3724            self._parse_select(nested=True, parse_subquery_alias=False)
        +3725        )
        +3726
        +3727    def _parse_transaction(self) -> exp.Expression:
        +3728        this = None
        +3729        if self._match_texts(self.TRANSACTION_KIND):
        +3730            this = self._prev.text
         3731
        -3732            if self._match_text_seq("CHECK"):
        -3733                expression = self._parse_wrapped(self._parse_conjunction)
        -3734                enforced = self._match_text_seq("ENFORCED")
        -3735
        -3736                return self.expression(
        -3737                    exp.AddConstraint, this=this, expression=expression, enforced=enforced
        -3738                )
        +3732        self._match_texts({"TRANSACTION", "WORK"})
        +3733
        +3734        modes = []
        +3735        while True:
        +3736            mode = []
        +3737            while self._match(TokenType.VAR):
        +3738                mode.append(self._prev.text)
         3739
        -3740        if kind == TokenType.FOREIGN_KEY or self._match(TokenType.FOREIGN_KEY):
        -3741            expression = self._parse_foreign_key()
        -3742        elif kind == TokenType.PRIMARY_KEY or self._match(TokenType.PRIMARY_KEY):
        -3743            expression = self._parse_primary_key()
        +3740            if mode:
        +3741                modes.append(" ".join(mode))
        +3742            if not self._match(TokenType.COMMA):
        +3743                break
         3744
        -3745        return self.expression(exp.AddConstraint, this=this, expression=expression)
        +3745        return self.expression(exp.Transaction, this=this, modes=modes)
         3746
        -3747    def _parse_alter_table_add(self) -> t.List[t.Optional[exp.Expression]]:
        -3748        index = self._index - 1
        -3749
        -3750        if self._match_set(self.ADD_CONSTRAINT_TOKENS):
        -3751            return self._parse_csv(self._parse_add_constraint)
        -3752
        -3753        self._retreat(index)
        -3754        return self._parse_csv(self._parse_add_column)
        -3755
        -3756    def _parse_alter_table_alter(self) -> exp.Expression:
        -3757        self._match(TokenType.COLUMN)
        -3758        column = self._parse_field(any_token=True)
        -3759
        -3760        if self._match_pair(TokenType.DROP, TokenType.DEFAULT):
        -3761            return self.expression(exp.AlterColumn, this=column, drop=True)
        -3762        if self._match_pair(TokenType.SET, TokenType.DEFAULT):
        -3763            return self.expression(exp.AlterColumn, this=column, default=self._parse_conjunction())
        -3764
        -3765        self._match_text_seq("SET", "DATA")
        -3766        return self.expression(
        -3767            exp.AlterColumn,
        -3768            this=column,
        -3769            dtype=self._match_text_seq("TYPE") and self._parse_types(),
        -3770            collate=self._match(TokenType.COLLATE) and self._parse_term(),
        -3771            using=self._match(TokenType.USING) and self._parse_conjunction(),
        -3772        )
        +3747    def _parse_commit_or_rollback(self) -> exp.Expression:
        +3748        chain = None
        +3749        savepoint = None
        +3750        is_rollback = self._prev.token_type == TokenType.ROLLBACK
        +3751
        +3752        self._match_texts({"TRANSACTION", "WORK"})
        +3753
        +3754        if self._match_text_seq("TO"):
        +3755            self._match_text_seq("SAVEPOINT")
        +3756            savepoint = self._parse_id_var()
        +3757
        +3758        if self._match(TokenType.AND):
        +3759            chain = not self._match_text_seq("NO")
        +3760            self._match_text_seq("CHAIN")
        +3761
        +3762        if is_rollback:
        +3763            return self.expression(exp.Rollback, savepoint=savepoint)
        +3764        return self.expression(exp.Commit, chain=chain)
        +3765
        +3766    def _parse_add_column(self) -> t.Optional[exp.Expression]:
        +3767        if not self._match_text_seq("ADD"):
        +3768            return None
        +3769
        +3770        self._match(TokenType.COLUMN)
        +3771        exists_column = self._parse_exists(not_=True)
        +3772        expression = self._parse_column_def(self._parse_field(any_token=True))
         3773
        -3774    def _parse_alter_table_drop(self) -> t.List[t.Optional[exp.Expression]]:
        -3775        index = self._index - 1
        +3774        if expression:
        +3775            expression.set("exists", exists_column)
         3776
        -3777        partition_exists = self._parse_exists()
        -3778        if self._match(TokenType.PARTITION, advance=False):
        -3779            return self._parse_csv(lambda: self._parse_drop_partition(exists=partition_exists))
        -3780
        -3781        self._retreat(index)
        -3782        return self._parse_csv(self._parse_drop_column)
        -3783
        -3784    def _parse_alter_table_rename(self) -> exp.Expression:
        -3785        self._match_text_seq("TO")
        -3786        return self.expression(exp.RenameTable, this=self._parse_table(schema=True))
        +3777        return expression
        +3778
        +3779    def _parse_drop_column(self) -> t.Optional[exp.Expression]:
        +3780        return self._match(TokenType.DROP) and self._parse_drop(default_kind="COLUMN")
        +3781
        +3782    # https://docs.aws.amazon.com/athena/latest/ug/alter-table-drop-partition.html
        +3783    def _parse_drop_partition(self, exists: t.Optional[bool] = None) -> exp.Expression:
        +3784        return self.expression(
        +3785            exp.DropPartition, expressions=self._parse_csv(self._parse_partition), exists=exists
        +3786        )
         3787
        -3788    def _parse_alter(self) -> t.Optional[exp.Expression]:
        -3789        start = self._prev
        -3790
        -3791        if not self._match(TokenType.TABLE):
        -3792            return self._parse_as_command(start)
        -3793
        -3794        exists = self._parse_exists()
        -3795        this = self._parse_table(schema=True)
        -3796
        -3797        if self._next:
        -3798            self._advance()
        -3799        parser = self.ALTER_PARSERS.get(self._prev.text.upper()) if self._prev else None
        -3800
        -3801        if parser:
        -3802            return self.expression(
        -3803                exp.AlterTable,
        -3804                this=this,
        -3805                exists=exists,
        -3806                actions=ensure_list(parser(self)),
        -3807            )
        -3808        return self._parse_as_command(start)
        +3788    def _parse_add_constraint(self) -> t.Optional[exp.Expression]:
        +3789        this = None
        +3790        kind = self._prev.token_type
        +3791
        +3792        if kind == TokenType.CONSTRAINT:
        +3793            this = self._parse_id_var()
        +3794
        +3795            if self._match_text_seq("CHECK"):
        +3796                expression = self._parse_wrapped(self._parse_conjunction)
        +3797                enforced = self._match_text_seq("ENFORCED")
        +3798
        +3799                return self.expression(
        +3800                    exp.AddConstraint, this=this, expression=expression, enforced=enforced
        +3801                )
        +3802
        +3803        if kind == TokenType.FOREIGN_KEY or self._match(TokenType.FOREIGN_KEY):
        +3804            expression = self._parse_foreign_key()
        +3805        elif kind == TokenType.PRIMARY_KEY or self._match(TokenType.PRIMARY_KEY):
        +3806            expression = self._parse_primary_key()
        +3807
        +3808        return self.expression(exp.AddConstraint, this=this, expression=expression)
         3809
        -3810    def _parse_merge(self) -> exp.Expression:
        -3811        self._match(TokenType.INTO)
        -3812        target = self._parse_table()
        -3813
        -3814        self._match(TokenType.USING)
        -3815        using = self._parse_table()
        -3816
        -3817        self._match(TokenType.ON)
        -3818        on = self._parse_conjunction()
        -3819
        -3820        whens = []
        -3821        while self._match(TokenType.WHEN):
        -3822            matched = not self._match(TokenType.NOT)
        -3823            self._match_text_seq("MATCHED")
        -3824            source = (
        -3825                False
        -3826                if self._match_text_seq("BY", "TARGET")
        -3827                else self._match_text_seq("BY", "SOURCE")
        -3828            )
        -3829            condition = self._parse_conjunction() if self._match(TokenType.AND) else None
        -3830
        -3831            self._match(TokenType.THEN)
        -3832
        -3833            if self._match(TokenType.INSERT):
        -3834                _this = self._parse_star()
        -3835                if _this:
        -3836                    then = self.expression(exp.Insert, this=_this)
        -3837                else:
        -3838                    then = self.expression(
        -3839                        exp.Insert,
        -3840                        this=self._parse_value(),
        -3841                        expression=self._match(TokenType.VALUES) and self._parse_value(),
        -3842                    )
        -3843            elif self._match(TokenType.UPDATE):
        -3844                expressions = self._parse_star()
        -3845                if expressions:
        -3846                    then = self.expression(exp.Update, expressions=expressions)
        -3847                else:
        -3848                    then = self.expression(
        -3849                        exp.Update,
        -3850                        expressions=self._match(TokenType.SET)
        -3851                        and self._parse_csv(self._parse_equality),
        -3852                    )
        -3853            elif self._match(TokenType.DELETE):
        -3854                then = self.expression(exp.Var, this=self._prev.text)
        -3855            else:
        -3856                then = None
        -3857
        -3858            whens.append(
        -3859                self.expression(
        -3860                    exp.When,
        -3861                    matched=matched,
        -3862                    source=source,
        -3863                    condition=condition,
        -3864                    then=then,
        -3865                )
        -3866            )
        -3867
        -3868        return self.expression(
        -3869            exp.Merge,
        -3870            this=target,
        -3871            using=using,
        -3872            on=on,
        -3873            expressions=whens,
        -3874        )
        -3875
        -3876    def _parse_show(self) -> t.Optional[exp.Expression]:
        -3877        parser = self._find_parser(self.SHOW_PARSERS, self._show_trie)  # type: ignore
        -3878        if parser:
        -3879            return parser(self)
        -3880        self._advance()
        -3881        return self.expression(exp.Show, this=self._prev.text.upper())
        +3810    def _parse_alter_table_add(self) -> t.List[t.Optional[exp.Expression]]:
        +3811        index = self._index - 1
        +3812
        +3813        if self._match_set(self.ADD_CONSTRAINT_TOKENS):
        +3814            return self._parse_csv(self._parse_add_constraint)
        +3815
        +3816        self._retreat(index)
        +3817        return self._parse_csv(self._parse_add_column)
        +3818
        +3819    def _parse_alter_table_alter(self) -> exp.Expression:
        +3820        self._match(TokenType.COLUMN)
        +3821        column = self._parse_field(any_token=True)
        +3822
        +3823        if self._match_pair(TokenType.DROP, TokenType.DEFAULT):
        +3824            return self.expression(exp.AlterColumn, this=column, drop=True)
        +3825        if self._match_pair(TokenType.SET, TokenType.DEFAULT):
        +3826            return self.expression(exp.AlterColumn, this=column, default=self._parse_conjunction())
        +3827
        +3828        self._match_text_seq("SET", "DATA")
        +3829        return self.expression(
        +3830            exp.AlterColumn,
        +3831            this=column,
        +3832            dtype=self._match_text_seq("TYPE") and self._parse_types(),
        +3833            collate=self._match(TokenType.COLLATE) and self._parse_term(),
        +3834            using=self._match(TokenType.USING) and self._parse_conjunction(),
        +3835        )
        +3836
        +3837    def _parse_alter_table_drop(self) -> t.List[t.Optional[exp.Expression]]:
        +3838        index = self._index - 1
        +3839
        +3840        partition_exists = self._parse_exists()
        +3841        if self._match(TokenType.PARTITION, advance=False):
        +3842            return self._parse_csv(lambda: self._parse_drop_partition(exists=partition_exists))
        +3843
        +3844        self._retreat(index)
        +3845        return self._parse_csv(self._parse_drop_column)
        +3846
        +3847    def _parse_alter_table_rename(self) -> exp.Expression:
        +3848        self._match_text_seq("TO")
        +3849        return self.expression(exp.RenameTable, this=self._parse_table(schema=True))
        +3850
        +3851    def _parse_alter(self) -> t.Optional[exp.Expression]:
        +3852        start = self._prev
        +3853
        +3854        if not self._match(TokenType.TABLE):
        +3855            return self._parse_as_command(start)
        +3856
        +3857        exists = self._parse_exists()
        +3858        this = self._parse_table(schema=True)
        +3859
        +3860        if self._next:
        +3861            self._advance()
        +3862        parser = self.ALTER_PARSERS.get(self._prev.text.upper()) if self._prev else None
        +3863
        +3864        if parser:
        +3865            return self.expression(
        +3866                exp.AlterTable,
        +3867                this=this,
        +3868                exists=exists,
        +3869                actions=ensure_list(parser(self)),
        +3870            )
        +3871        return self._parse_as_command(start)
        +3872
        +3873    def _parse_merge(self) -> exp.Expression:
        +3874        self._match(TokenType.INTO)
        +3875        target = self._parse_table()
        +3876
        +3877        self._match(TokenType.USING)
        +3878        using = self._parse_table()
        +3879
        +3880        self._match(TokenType.ON)
        +3881        on = self._parse_conjunction()
         3882
        -3883    def _parse_set_item_assignment(
        -3884        self, kind: t.Optional[str] = None
        -3885    ) -> t.Optional[exp.Expression]:
        -3886        index = self._index
        -3887
        -3888        if kind in {"GLOBAL", "SESSION"} and self._match_text_seq("TRANSACTION"):
        -3889            return self._parse_set_transaction(global_=kind == "GLOBAL")
        -3890
        -3891        left = self._parse_primary() or self._parse_id_var()
        -3892
        -3893        if not self._match_texts(("=", "TO")):
        -3894            self._retreat(index)
        -3895            return None
        -3896
        -3897        right = self._parse_statement() or self._parse_id_var()
        -3898        this = self.expression(
        -3899            exp.EQ,
        -3900            this=left,
        -3901            expression=right,
        -3902        )
        -3903
        -3904        return self.expression(
        -3905            exp.SetItem,
        -3906            this=this,
        -3907            kind=kind,
        -3908        )
        -3909
        -3910    def _parse_set_transaction(self, global_: bool = False) -> exp.Expression:
        -3911        self._match_text_seq("TRANSACTION")
        -3912        characteristics = self._parse_csv(
        -3913            lambda: self._parse_var_from_options(self.TRANSACTION_CHARACTERISTICS)
        -3914        )
        -3915        return self.expression(
        -3916            exp.SetItem,
        -3917            expressions=characteristics,
        -3918            kind="TRANSACTION",
        -3919            **{"global": global_},  # type: ignore
        -3920        )
        -3921
        -3922    def _parse_set_item(self) -> t.Optional[exp.Expression]:
        -3923        parser = self._find_parser(self.SET_PARSERS, self._set_trie)  # type: ignore
        -3924        return parser(self) if parser else self._parse_set_item_assignment(kind=None)
        -3925
        -3926    def _parse_set(self) -> exp.Expression:
        -3927        index = self._index
        -3928        set_ = self.expression(exp.Set, expressions=self._parse_csv(self._parse_set_item))
        -3929
        -3930        if self._curr:
        -3931            self._retreat(index)
        -3932            return self._parse_as_command(self._prev)
        -3933
        -3934        return set_
        -3935
        -3936    def _parse_var_from_options(self, options: t.Collection[str]) -> t.Optional[exp.Expression]:
        -3937        for option in options:
        -3938            if self._match_text_seq(*option.split(" ")):
        -3939                return exp.Var(this=option)
        -3940        return None
        -3941
        -3942    def _parse_as_command(self, start: Token) -> exp.Command:
        -3943        while self._curr:
        -3944            self._advance()
        -3945        text = self._find_sql(start, self._prev)
        -3946        size = len(start.text)
        -3947        return exp.Command(this=text[:size], expression=text[size:])
        -3948
        -3949    def _find_parser(
        -3950        self, parsers: t.Dict[str, t.Callable], trie: t.Dict
        -3951    ) -> t.Optional[t.Callable]:
        -3952        if not self._curr:
        -3953            return None
        -3954
        -3955        index = self._index
        -3956        this = []
        -3957        while True:
        -3958            # The current token might be multiple words
        -3959            curr = self._curr.text.upper()
        -3960            key = curr.split(" ")
        -3961            this.append(curr)
        -3962            self._advance()
        -3963            result, trie = in_trie(trie, key)
        -3964            if result == 0:
        -3965                break
        -3966            if result == 2:
        -3967                subparser = parsers[" ".join(this)]
        -3968                return subparser
        -3969        self._retreat(index)
        -3970        return None
        -3971
        -3972    def _match(self, token_type, advance=True):
        -3973        if not self._curr:
        -3974            return None
        -3975
        -3976        if self._curr.token_type == token_type:
        -3977            if advance:
        -3978                self._advance()
        -3979            return True
        -3980
        -3981        return None
        -3982
        -3983    def _match_set(self, types, advance=True):
        -3984        if not self._curr:
        -3985            return None
        -3986
        -3987        if self._curr.token_type in types:
        -3988            if advance:
        -3989                self._advance()
        -3990            return True
        -3991
        -3992        return None
        -3993
        -3994    def _match_pair(self, token_type_a, token_type_b, advance=True):
        -3995        if not self._curr or not self._next:
        -3996            return None
        -3997
        -3998        if self._curr.token_type == token_type_a and self._next.token_type == token_type_b:
        -3999            if advance:
        -4000                self._advance(2)
        -4001            return True
        -4002
        +3883        whens = []
        +3884        while self._match(TokenType.WHEN):
        +3885            matched = not self._match(TokenType.NOT)
        +3886            self._match_text_seq("MATCHED")
        +3887            source = (
        +3888                False
        +3889                if self._match_text_seq("BY", "TARGET")
        +3890                else self._match_text_seq("BY", "SOURCE")
        +3891            )
        +3892            condition = self._parse_conjunction() if self._match(TokenType.AND) else None
        +3893
        +3894            self._match(TokenType.THEN)
        +3895
        +3896            if self._match(TokenType.INSERT):
        +3897                _this = self._parse_star()
        +3898                if _this:
        +3899                    then = self.expression(exp.Insert, this=_this)
        +3900                else:
        +3901                    then = self.expression(
        +3902                        exp.Insert,
        +3903                        this=self._parse_value(),
        +3904                        expression=self._match(TokenType.VALUES) and self._parse_value(),
        +3905                    )
        +3906            elif self._match(TokenType.UPDATE):
        +3907                expressions = self._parse_star()
        +3908                if expressions:
        +3909                    then = self.expression(exp.Update, expressions=expressions)
        +3910                else:
        +3911                    then = self.expression(
        +3912                        exp.Update,
        +3913                        expressions=self._match(TokenType.SET)
        +3914                        and self._parse_csv(self._parse_equality),
        +3915                    )
        +3916            elif self._match(TokenType.DELETE):
        +3917                then = self.expression(exp.Var, this=self._prev.text)
        +3918            else:
        +3919                then = None
        +3920
        +3921            whens.append(
        +3922                self.expression(
        +3923                    exp.When,
        +3924                    matched=matched,
        +3925                    source=source,
        +3926                    condition=condition,
        +3927                    then=then,
        +3928                )
        +3929            )
        +3930
        +3931        return self.expression(
        +3932            exp.Merge,
        +3933            this=target,
        +3934            using=using,
        +3935            on=on,
        +3936            expressions=whens,
        +3937        )
        +3938
        +3939    def _parse_show(self) -> t.Optional[exp.Expression]:
        +3940        parser = self._find_parser(self.SHOW_PARSERS, self._show_trie)  # type: ignore
        +3941        if parser:
        +3942            return parser(self)
        +3943        self._advance()
        +3944        return self.expression(exp.Show, this=self._prev.text.upper())
        +3945
        +3946    def _parse_set_item_assignment(
        +3947        self, kind: t.Optional[str] = None
        +3948    ) -> t.Optional[exp.Expression]:
        +3949        index = self._index
        +3950
        +3951        if kind in {"GLOBAL", "SESSION"} and self._match_text_seq("TRANSACTION"):
        +3952            return self._parse_set_transaction(global_=kind == "GLOBAL")
        +3953
        +3954        left = self._parse_primary() or self._parse_id_var()
        +3955
        +3956        if not self._match_texts(("=", "TO")):
        +3957            self._retreat(index)
        +3958            return None
        +3959
        +3960        right = self._parse_statement() or self._parse_id_var()
        +3961        this = self.expression(
        +3962            exp.EQ,
        +3963            this=left,
        +3964            expression=right,
        +3965        )
        +3966
        +3967        return self.expression(
        +3968            exp.SetItem,
        +3969            this=this,
        +3970            kind=kind,
        +3971        )
        +3972
        +3973    def _parse_set_transaction(self, global_: bool = False) -> exp.Expression:
        +3974        self._match_text_seq("TRANSACTION")
        +3975        characteristics = self._parse_csv(
        +3976            lambda: self._parse_var_from_options(self.TRANSACTION_CHARACTERISTICS)
        +3977        )
        +3978        return self.expression(
        +3979            exp.SetItem,
        +3980            expressions=characteristics,
        +3981            kind="TRANSACTION",
        +3982            **{"global": global_},  # type: ignore
        +3983        )
        +3984
        +3985    def _parse_set_item(self) -> t.Optional[exp.Expression]:
        +3986        parser = self._find_parser(self.SET_PARSERS, self._set_trie)  # type: ignore
        +3987        return parser(self) if parser else self._parse_set_item_assignment(kind=None)
        +3988
        +3989    def _parse_set(self) -> exp.Expression:
        +3990        index = self._index
        +3991        set_ = self.expression(exp.Set, expressions=self._parse_csv(self._parse_set_item))
        +3992
        +3993        if self._curr:
        +3994            self._retreat(index)
        +3995            return self._parse_as_command(self._prev)
        +3996
        +3997        return set_
        +3998
        +3999    def _parse_var_from_options(self, options: t.Collection[str]) -> t.Optional[exp.Expression]:
        +4000        for option in options:
        +4001            if self._match_text_seq(*option.split(" ")):
        +4002                return exp.Var(this=option)
         4003        return None
         4004
        -4005    def _match_l_paren(self, expression=None):
        -4006        if not self._match(TokenType.L_PAREN):
        -4007            self.raise_error("Expecting (")
        -4008        if expression and self._prev_comments:
        -4009            expression.comments = self._prev_comments
        -4010
        -4011    def _match_r_paren(self, expression=None):
        -4012        if not self._match(TokenType.R_PAREN):
        -4013            self.raise_error("Expecting )")
        -4014        if expression and self._prev_comments:
        -4015            expression.comments = self._prev_comments
        -4016
        -4017    def _match_texts(self, texts, advance=True):
        -4018        if self._curr and self._curr.text.upper() in texts:
        -4019            if advance:
        -4020                self._advance()
        -4021            return True
        -4022        return False
        -4023
        -4024    def _match_text_seq(self, *texts, advance=True):
        -4025        index = self._index
        -4026        for text in texts:
        -4027            if self._curr and self._curr.text.upper() == text:
        -4028                self._advance()
        -4029            else:
        -4030                self._retreat(index)
        -4031                return False
        -4032
        -4033        if not advance:
        -4034            self._retreat(index)
        -4035
        -4036        return True
        -4037
        -4038    def _replace_columns_with_dots(self, this):
        -4039        if isinstance(this, exp.Dot):
        -4040            exp.replace_children(this, self._replace_columns_with_dots)
        -4041        elif isinstance(this, exp.Column):
        -4042            exp.replace_children(this, self._replace_columns_with_dots)
        -4043            table = this.args.get("table")
        -4044            this = (
        -4045                self.expression(exp.Dot, this=table, expression=this.this)
        -4046                if table
        -4047                else self.expression(exp.Var, this=this.name)
        -4048            )
        -4049        elif isinstance(this, exp.Identifier):
        -4050            this = self.expression(exp.Var, this=this.name)
        -4051        return this
        -4052
        -4053    def _replace_lambda(self, node, lambda_variables):
        -4054        if isinstance(node, exp.Column):
        -4055            if node.name in lambda_variables:
        -4056                return node.this
        -4057        return node
        +4005    def _parse_as_command(self, start: Token) -> exp.Command:
        +4006        while self._curr:
        +4007            self._advance()
        +4008        text = self._find_sql(start, self._prev)
        +4009        size = len(start.text)
        +4010        return exp.Command(this=text[:size], expression=text[size:])
        +4011
        +4012    def _find_parser(
        +4013        self, parsers: t.Dict[str, t.Callable], trie: t.Dict
        +4014    ) -> t.Optional[t.Callable]:
        +4015        if not self._curr:
        +4016            return None
        +4017
        +4018        index = self._index
        +4019        this = []
        +4020        while True:
        +4021            # The current token might be multiple words
        +4022            curr = self._curr.text.upper()
        +4023            key = curr.split(" ")
        +4024            this.append(curr)
        +4025            self._advance()
        +4026            result, trie = in_trie(trie, key)
        +4027            if result == 0:
        +4028                break
        +4029            if result == 2:
        +4030                subparser = parsers[" ".join(this)]
        +4031                return subparser
        +4032        self._retreat(index)
        +4033        return None
        +4034
        +4035    def _match(self, token_type, advance=True):
        +4036        if not self._curr:
        +4037            return None
        +4038
        +4039        if self._curr.token_type == token_type:
        +4040            if advance:
        +4041                self._advance()
        +4042            return True
        +4043
        +4044        return None
        +4045
        +4046    def _match_set(self, types, advance=True):
        +4047        if not self._curr:
        +4048            return None
        +4049
        +4050        if self._curr.token_type in types:
        +4051            if advance:
        +4052                self._advance()
        +4053            return True
        +4054
        +4055        return None
        +4056
        +4057    def _match_pair(self, token_type_a, token_type_b, advance=True):
        +4058        if not self._curr or not self._next:
        +4059            return None
        +4060
        +4061        if self._curr.token_type == token_type_a and self._next.token_type == token_type_b:
        +4062            if advance:
        +4063                self._advance(2)
        +4064            return True
        +4065
        +4066        return None
        +4067
        +4068    def _match_l_paren(self, expression=None):
        +4069        if not self._match(TokenType.L_PAREN):
        +4070            self.raise_error("Expecting (")
        +4071        if expression and self._prev_comments:
        +4072            expression.comments = self._prev_comments
        +4073
        +4074    def _match_r_paren(self, expression=None):
        +4075        if not self._match(TokenType.R_PAREN):
        +4076            self.raise_error("Expecting )")
        +4077        if expression and self._prev_comments:
        +4078            expression.comments = self._prev_comments
        +4079
        +4080    def _match_texts(self, texts, advance=True):
        +4081        if self._curr and self._curr.text.upper() in texts:
        +4082            if advance:
        +4083                self._advance()
        +4084            return True
        +4085        return False
        +4086
        +4087    def _match_text_seq(self, *texts, advance=True):
        +4088        index = self._index
        +4089        for text in texts:
        +4090            if self._curr and self._curr.text.upper() == text:
        +4091                self._advance()
        +4092            else:
        +4093                self._retreat(index)
        +4094                return False
        +4095
        +4096        if not advance:
        +4097            self._retreat(index)
        +4098
        +4099        return True
        +4100
        +4101    def _replace_columns_with_dots(self, this):
        +4102        if isinstance(this, exp.Dot):
        +4103            exp.replace_children(this, self._replace_columns_with_dots)
        +4104        elif isinstance(this, exp.Column):
        +4105            exp.replace_children(this, self._replace_columns_with_dots)
        +4106            table = this.args.get("table")
        +4107            this = (
        +4108                self.expression(exp.Dot, this=table, expression=this.this)
        +4109                if table
        +4110                else self.expression(exp.Var, this=this.name)
        +4111            )
        +4112        elif isinstance(this, exp.Identifier):
        +4113            this = self.expression(exp.Var, this=this.name)
        +4114        return this
        +4115
        +4116    def _replace_lambda(self, node, lambda_variables):
        +4117        for column in node.find_all(exp.Column):
        +4118            if column.parts[0].name in lambda_variables:
        +4119                dot_or_id = column.to_dot() if column.table else column.this
        +4120                parent = column.parent
        +4121
        +4122                while isinstance(parent, exp.Dot):
        +4123                    if not isinstance(parent.parent, exp.Dot):
        +4124                        parent.replace(dot_or_id)
        +4125                        break
        +4126                    parent = parent.parent
        +4127                else:
        +4128                    column.replace(dot_or_id)
        +4129        return node
         
        @@ -8254,24 +8416,24 @@ Default: "nulls_are_small"
        -
        742    def __init__(
        -743        self,
        -744        error_level: t.Optional[ErrorLevel] = None,
        -745        error_message_context: int = 100,
        -746        index_offset: int = 0,
        -747        unnest_column_only: bool = False,
        -748        alias_post_tablesample: bool = False,
        -749        max_errors: int = 3,
        -750        null_ordering: t.Optional[str] = None,
        -751    ):
        -752        self.error_level = error_level or ErrorLevel.IMMEDIATE
        -753        self.error_message_context = error_message_context
        -754        self.index_offset = index_offset
        -755        self.unnest_column_only = unnest_column_only
        -756        self.alias_post_tablesample = alias_post_tablesample
        -757        self.max_errors = max_errors
        -758        self.null_ordering = null_ordering
        -759        self.reset()
        +            
        757    def __init__(
        +758        self,
        +759        error_level: t.Optional[ErrorLevel] = None,
        +760        error_message_context: int = 100,
        +761        index_offset: int = 0,
        +762        unnest_column_only: bool = False,
        +763        alias_post_tablesample: bool = False,
        +764        max_errors: int = 3,
        +765        null_ordering: t.Optional[str] = None,
        +766    ):
        +767        self.error_level = error_level or ErrorLevel.IMMEDIATE
        +768        self.error_message_context = error_message_context
        +769        self.index_offset = index_offset
        +770        self.unnest_column_only = unnest_column_only
        +771        self.alias_post_tablesample = alias_post_tablesample
        +772        self.max_errors = max_errors
        +773        self.null_ordering = null_ordering
        +774        self.reset()
         
        @@ -8289,15 +8451,15 @@ Default: "nulls_are_small"
        -
        761    def reset(self):
        -762        self.sql = ""
        -763        self.errors = []
        -764        self._tokens = []
        -765        self._index = 0
        -766        self._curr = None
        -767        self._next = None
        -768        self._prev = None
        -769        self._prev_comments = None
        +            
        776    def reset(self):
        +777        self.sql = ""
        +778        self.errors = []
        +779        self._tokens = []
        +780        self._index = 0
        +781        self._curr = None
        +782        self._next = None
        +783        self._prev = None
        +784        self._prev_comments = None
         
        @@ -8315,23 +8477,23 @@ Default: "nulls_are_small"
        -
        771    def parse(
        -772        self, raw_tokens: t.List[Token], sql: t.Optional[str] = None
        -773    ) -> t.List[t.Optional[exp.Expression]]:
        -774        """
        -775        Parses a list of tokens and returns a list of syntax trees, one tree
        -776        per parsed SQL statement.
        -777
        -778        Args:
        -779            raw_tokens: the list of tokens.
        -780            sql: the original SQL string, used to produce helpful debug messages.
        -781
        -782        Returns:
        -783            The list of syntax trees.
        -784        """
        -785        return self._parse(
        -786            parse_method=self.__class__._parse_statement, raw_tokens=raw_tokens, sql=sql
        -787        )
        +            
        786    def parse(
        +787        self, raw_tokens: t.List[Token], sql: t.Optional[str] = None
        +788    ) -> t.List[t.Optional[exp.Expression]]:
        +789        """
        +790        Parses a list of tokens and returns a list of syntax trees, one tree
        +791        per parsed SQL statement.
        +792
        +793        Args:
        +794            raw_tokens: the list of tokens.
        +795            sql: the original SQL string, used to produce helpful debug messages.
        +796
        +797        Returns:
        +798            The list of syntax trees.
        +799        """
        +800        return self._parse(
        +801            parse_method=self.__class__._parse_statement, raw_tokens=raw_tokens, sql=sql
        +802        )
         
        @@ -8365,39 +8527,39 @@ per parsed SQL statement.

        -
        789    def parse_into(
        -790        self,
        -791        expression_types: exp.IntoType,
        -792        raw_tokens: t.List[Token],
        -793        sql: t.Optional[str] = None,
        -794    ) -> t.List[t.Optional[exp.Expression]]:
        -795        """
        -796        Parses a list of tokens into a given Expression type. If a collection of Expression
        -797        types is given instead, this method will try to parse the token list into each one
        -798        of them, stopping at the first for which the parsing succeeds.
        -799
        -800        Args:
        -801            expression_types: the expression type(s) to try and parse the token list into.
        -802            raw_tokens: the list of tokens.
        -803            sql: the original SQL string, used to produce helpful debug messages.
        -804
        -805        Returns:
        -806            The target Expression.
        -807        """
        -808        errors = []
        -809        for expression_type in ensure_collection(expression_types):
        -810            parser = self.EXPRESSION_PARSERS.get(expression_type)
        -811            if not parser:
        -812                raise TypeError(f"No parser registered for {expression_type}")
        -813            try:
        -814                return self._parse(parser, raw_tokens, sql)
        -815            except ParseError as e:
        -816                e.errors[0]["into_expression"] = expression_type
        -817                errors.append(e)
        -818        raise ParseError(
        -819            f"Failed to parse into {expression_types}",
        -820            errors=merge_errors(errors),
        -821        ) from errors[-1]
        +            
        804    def parse_into(
        +805        self,
        +806        expression_types: exp.IntoType,
        +807        raw_tokens: t.List[Token],
        +808        sql: t.Optional[str] = None,
        +809    ) -> t.List[t.Optional[exp.Expression]]:
        +810        """
        +811        Parses a list of tokens into a given Expression type. If a collection of Expression
        +812        types is given instead, this method will try to parse the token list into each one
        +813        of them, stopping at the first for which the parsing succeeds.
        +814
        +815        Args:
        +816            expression_types: the expression type(s) to try and parse the token list into.
        +817            raw_tokens: the list of tokens.
        +818            sql: the original SQL string, used to produce helpful debug messages.
        +819
        +820        Returns:
        +821            The target Expression.
        +822        """
        +823        errors = []
        +824        for expression_type in ensure_collection(expression_types):
        +825            parser = self.EXPRESSION_PARSERS.get(expression_type)
        +826            if not parser:
        +827                raise TypeError(f"No parser registered for {expression_type}")
        +828            try:
        +829                return self._parse(parser, raw_tokens, sql)
        +830            except ParseError as e:
        +831                e.errors[0]["into_expression"] = expression_type
        +832                errors.append(e)
        +833        raise ParseError(
        +834            f"Failed to parse into {expression_types}",
        +835            errors=merge_errors(errors),
        +836        ) from errors[-1]
         
        @@ -8433,18 +8595,18 @@ of them, stopping at the first for which the parsing succeeds.

        -
        857    def check_errors(self) -> None:
        -858        """
        -859        Logs or raises any found errors, depending on the chosen error level setting.
        -860        """
        -861        if self.error_level == ErrorLevel.WARN:
        -862            for error in self.errors:
        -863                logger.error(str(error))
        -864        elif self.error_level == ErrorLevel.RAISE and self.errors:
        -865            raise ParseError(
        -866                concat_messages(self.errors, self.max_errors),
        -867                errors=merge_errors(self.errors),
        -868            )
        +            
        872    def check_errors(self) -> None:
        +873        """
        +874        Logs or raises any found errors, depending on the chosen error level setting.
        +875        """
        +876        if self.error_level == ErrorLevel.WARN:
        +877            for error in self.errors:
        +878                logger.error(str(error))
        +879        elif self.error_level == ErrorLevel.RAISE and self.errors:
        +880            raise ParseError(
        +881                concat_messages(self.errors, self.max_errors),
        +882                errors=merge_errors(self.errors),
        +883            )
         
        @@ -8464,33 +8626,33 @@ of them, stopping at the first for which the parsing succeeds.

        -
        870    def raise_error(self, message: str, token: t.Optional[Token] = None) -> None:
        -871        """
        -872        Appends an error in the list of recorded errors or raises it, depending on the chosen
        -873        error level setting.
        -874        """
        -875        token = token or self._curr or self._prev or Token.string("")
        -876        start = self._find_token(token)
        -877        end = start + len(token.text)
        -878        start_context = self.sql[max(start - self.error_message_context, 0) : start]
        -879        highlight = self.sql[start:end]
        -880        end_context = self.sql[end : end + self.error_message_context]
        -881
        -882        error = ParseError.new(
        -883            f"{message}. Line {token.line}, Col: {token.col}.\n"
        -884            f"  {start_context}\033[4m{highlight}\033[0m{end_context}",
        -885            description=message,
        -886            line=token.line,
        -887            col=token.col,
        -888            start_context=start_context,
        -889            highlight=highlight,
        -890            end_context=end_context,
        -891        )
        -892
        -893        if self.error_level == ErrorLevel.IMMEDIATE:
        -894            raise error
        -895
        -896        self.errors.append(error)
        +            
        885    def raise_error(self, message: str, token: t.Optional[Token] = None) -> None:
        +886        """
        +887        Appends an error in the list of recorded errors or raises it, depending on the chosen
        +888        error level setting.
        +889        """
        +890        token = token or self._curr or self._prev or Token.string("")
        +891        start = self._find_token(token)
        +892        end = start + len(token.text)
        +893        start_context = self.sql[max(start - self.error_message_context, 0) : start]
        +894        highlight = self.sql[start:end]
        +895        end_context = self.sql[end : end + self.error_message_context]
        +896
        +897        error = ParseError.new(
        +898            f"{message}. Line {token.line}, Col: {token.col}.\n"
        +899            f"  {start_context}\033[4m{highlight}\033[0m{end_context}",
        +900            description=message,
        +901            line=token.line,
        +902            col=token.col,
        +903            start_context=start_context,
        +904            highlight=highlight,
        +905            end_context=end_context,
        +906        )
        +907
        +908        if self.error_level == ErrorLevel.IMMEDIATE:
        +909            raise error
        +910
        +911        self.errors.append(error)
         
        @@ -8511,28 +8673,28 @@ error level setting.

        -
        898    def expression(
        -899        self, exp_class: t.Type[exp.Expression], comments: t.Optional[t.List[str]] = None, **kwargs
        -900    ) -> exp.Expression:
        -901        """
        -902        Creates a new, validated Expression.
        -903
        -904        Args:
        -905            exp_class: the expression class to instantiate.
        -906            comments: an optional list of comments to attach to the expression.
        -907            kwargs: the arguments to set for the expression along with their respective values.
        -908
        -909        Returns:
        -910            The target expression.
        -911        """
        -912        instance = exp_class(**kwargs)
        -913        if self._prev_comments:
        -914            instance.comments = self._prev_comments
        -915            self._prev_comments = None
        -916        if comments:
        -917            instance.comments = comments
        -918        self.validate_expression(instance)
        -919        return instance
        +            
        913    def expression(
        +914        self, exp_class: t.Type[exp.Expression], comments: t.Optional[t.List[str]] = None, **kwargs
        +915    ) -> exp.Expression:
        +916        """
        +917        Creates a new, validated Expression.
        +918
        +919        Args:
        +920            exp_class: the expression class to instantiate.
        +921            comments: an optional list of comments to attach to the expression.
        +922            kwargs: the arguments to set for the expression along with their respective values.
        +923
        +924        Returns:
        +925            The target expression.
        +926        """
        +927        instance = exp_class(**kwargs)
        +928        if self._prev_comments:
        +929            instance.comments = self._prev_comments
        +930            self._prev_comments = None
        +931        if comments:
        +932            instance.comments = comments
        +933        self.validate_expression(instance)
        +934        return instance
         
        @@ -8566,22 +8728,22 @@ error level setting.

        -
        921    def validate_expression(
        -922        self, expression: exp.Expression, args: t.Optional[t.List] = None
        -923    ) -> None:
        -924        """
        -925        Validates an already instantiated expression, making sure that all its mandatory arguments
        -926        are set.
        -927
        -928        Args:
        -929            expression: the expression to validate.
        -930            args: an optional list of items that was used to instantiate the expression, if it's a Func.
        -931        """
        -932        if self.error_level == ErrorLevel.IGNORE:
        -933            return
        -934
        -935        for error_message in expression.error_messages(args):
        -936            self.raise_error(error_message)
        +            
        936    def validate_expression(
        +937        self, expression: exp.Expression, args: t.Optional[t.List] = None
        +938    ) -> None:
        +939        """
        +940        Validates an already instantiated expression, making sure that all its mandatory arguments
        +941        are set.
        +942
        +943        Args:
        +944            expression: the expression to validate.
        +945            args: an optional list of items that was used to instantiate the expression, if it's a Func.
        +946        """
        +947        if self.error_level == ErrorLevel.IGNORE:
        +948            return
        +949
        +950        for error_message in expression.error_messages(args):
        +951            self.raise_error(error_message)
         
        diff --git a/docs/sqlglot/planner.html b/docs/sqlglot/planner.html index cfe613e..6ea09b9 100644 --- a/docs/sqlglot/planner.html +++ b/docs/sqlglot/planner.html @@ -3,7 +3,7 @@ - + sqlglot.planner API documentation @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • Plan
              @@ -296,7 +296,7 @@ 175 } 176 for projection in projections: 177 for i, e in aggregate.group.items(): -178 for child, _, _ in projection.walk(): +178 for child, *_ in projection.walk(): 179 if child == e: 180 child.replace(exp.column(i, step.name)) 181 aggregate.add_dependency(step) @@ -753,7 +753,7 @@ 176 } 177 for projection in projections: 178 for i, e in aggregate.group.items(): -179 for child, _, _ in projection.walk(): +179 for child, *_ in projection.walk(): 180 if child == e: 181 child.replace(exp.column(i, step.name)) 182 aggregate.add_dependency(step) @@ -998,7 +998,7 @@ 176 } 177 for projection in projections: 178 for i, e in aggregate.group.items(): -179 for child, _, _ in projection.walk(): +179 for child, *_ in projection.walk(): 180 if child == e: 181 child.replace(exp.column(i, step.name)) 182 aggregate.add_dependency(step) diff --git a/docs/sqlglot/schema.html b/docs/sqlglot/schema.html index c9d1b44..4875378 100644 --- a/docs/sqlglot/schema.html +++ b/docs/sqlglot/schema.html @@ -3,7 +3,7 @@ - + sqlglot.schema API documentation @@ -28,8 +28,8 @@ -

              API Documentation

              -
                +

                API Documentation

                +
                • Schema
                    @@ -427,11 +427,11 @@ 306 return self._type_mapping_cache[schema_type] 307 308 -309def ensure_schema(schema: t.Any) -> Schema: +309def ensure_schema(schema: t.Any, dialect: DialectType = None) -> Schema: 310 if isinstance(schema, Schema): 311 return schema 312 -313 return MappingSchema(schema) +313 return MappingSchema(schema, dialect=dialect) 314 315 316def ensure_column_mapping(mapping: t.Optional[ColumnMapping]): @@ -1358,17 +1358,17 @@ are assumed to be visible. The nesting should mirror that of the schema:
                    def - ensure_schema(schema: Any) -> sqlglot.schema.Schema: + ensure_schema( schema: Any, dialect: Union[str, sqlglot.dialects.dialect.Dialect, Type[sqlglot.dialects.dialect.Dialect], NoneType] = None) -> sqlglot.schema.Schema:
                    -
                    310def ensure_schema(schema: t.Any) -> Schema:
                    +            
                    310def ensure_schema(schema: t.Any, dialect: DialectType = None) -> Schema:
                     311    if isinstance(schema, Schema):
                     312        return schema
                     313
                    -314    return MappingSchema(schema)
                    +314    return MappingSchema(schema, dialect=dialect)
                     
                    diff --git a/docs/sqlglot/serde.html b/docs/sqlglot/serde.html index 2ab2b84..376bc97 100644 --- a/docs/sqlglot/serde.html +++ b/docs/sqlglot/serde.html @@ -3,7 +3,7 @@ - + sqlglot.serde API documentation @@ -28,8 +28,8 @@ -

                    API Documentation

                    -
                      +

                      API Documentation

                      +
                      • dump
                      • diff --git a/docs/sqlglot/time.html b/docs/sqlglot/time.html index 8882d05..51efe98 100644 --- a/docs/sqlglot/time.html +++ b/docs/sqlglot/time.html @@ -3,7 +3,7 @@ - + sqlglot.time API documentation @@ -28,8 +28,8 @@ -

                        API Documentation

                        -
                          +

                          API Documentation

                          +
                          • format_time
                          • diff --git a/docs/sqlglot/tokens.html b/docs/sqlglot/tokens.html index 125da50..5ec83ff 100644 --- a/docs/sqlglot/tokens.html +++ b/docs/sqlglot/tokens.html @@ -3,7 +3,7 @@ - + sqlglot.tokens API documentation @@ -28,8 +28,8 @@ -

                            API Documentation

                            -
                              +

                              API Documentation

                              +
                              • TokenType
                                  @@ -744,6 +744,9 @@
                                • PLACEHOLDER
                                • +
                                • + PRAGMA +
                                • PRECEDING
                                • @@ -1231,885 +1234,886 @@ 252 PERCENT = auto() 253 PIVOT = auto() 254 PLACEHOLDER = auto() - 255 PRECEDING = auto() - 256 PRIMARY_KEY = auto() - 257 PROCEDURE = auto() - 258 PROPERTIES = auto() - 259 PSEUDO_TYPE = auto() - 260 QUALIFY = auto() - 261 QUOTE = auto() - 262 RANGE = auto() - 263 RECURSIVE = auto() - 264 REPLACE = auto() - 265 RESPECT_NULLS = auto() - 266 RETURNING = auto() - 267 REFERENCES = auto() - 268 RIGHT = auto() - 269 RLIKE = auto() - 270 ROLLBACK = auto() - 271 ROLLUP = auto() - 272 ROW = auto() - 273 ROWS = auto() - 274 SEED = auto() - 275 SELECT = auto() - 276 SEMI = auto() - 277 SEPARATOR = auto() - 278 SERDE_PROPERTIES = auto() - 279 SET = auto() - 280 SHOW = auto() - 281 SIMILAR_TO = auto() - 282 SOME = auto() - 283 SORTKEY = auto() - 284 SORT_BY = auto() - 285 STRUCT = auto() - 286 TABLE_SAMPLE = auto() - 287 TEMPORARY = auto() - 288 TOP = auto() - 289 THEN = auto() - 290 TRAILING = auto() - 291 TRUE = auto() - 292 UNBOUNDED = auto() - 293 UNCACHE = auto() - 294 UNION = auto() - 295 UNLOGGED = auto() - 296 UNNEST = auto() - 297 UNPIVOT = auto() - 298 UPDATE = auto() - 299 USE = auto() - 300 USING = auto() - 301 VALUES = auto() - 302 VIEW = auto() - 303 VOLATILE = auto() - 304 WHEN = auto() - 305 WHERE = auto() - 306 WINDOW = auto() - 307 WITH = auto() - 308 WITH_TIME_ZONE = auto() - 309 WITH_LOCAL_TIME_ZONE = auto() - 310 WITHIN_GROUP = auto() - 311 WITHOUT_TIME_ZONE = auto() - 312 UNIQUE = auto() - 313 + 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 - 315class Token: - 316 __slots__ = ("token_type", "text", "line", "col", "comments") - 317 - 318 @classmethod - 319 def number(cls, number: int) -> Token: - 320 """Returns a NUMBER token with `number` as its text.""" - 321 return cls(TokenType.NUMBER, str(number)) - 322 - 323 @classmethod - 324 def string(cls, string: str) -> Token: - 325 """Returns a STRING token with `string` as its text.""" - 326 return cls(TokenType.STRING, string) - 327 - 328 @classmethod - 329 def identifier(cls, identifier: str) -> Token: - 330 """Returns an IDENTIFIER token with `identifier` as its text.""" - 331 return cls(TokenType.IDENTIFIER, identifier) - 332 - 333 @classmethod - 334 def var(cls, var: str) -> Token: - 335 """Returns an VAR token with `var` as its text.""" - 336 return cls(TokenType.VAR, var) - 337 - 338 def __init__( - 339 self, - 340 token_type: TokenType, - 341 text: str, - 342 line: int = 1, - 343 col: int = 1, - 344 comments: t.List[str] = [], - 345 ) -> None: - 346 self.token_type = token_type - 347 self.text = text - 348 self.line = line - 349 self.col = max(col - len(text), 1) - 350 self.comments = comments - 351 - 352 def __repr__(self) -> str: - 353 attributes = ", ".join(f"{k}: {getattr(self, k)}" for k in self.__slots__) - 354 return f"<Token {attributes}>" - 355 - 356 - 357class _Tokenizer(type): - 358 def __new__(cls, clsname, bases, attrs): # type: ignore - 359 klass = super().__new__(cls, clsname, bases, attrs) - 360 - 361 klass._QUOTES = { - 362 f"{prefix}{s}": e - 363 for s, e in cls._delimeter_list_to_dict(klass.QUOTES).items() - 364 for prefix in (("",) if s[0].isalpha() else ("", "n", "N")) - 365 } - 366 klass._BIT_STRINGS = cls._delimeter_list_to_dict(klass.BIT_STRINGS) - 367 klass._HEX_STRINGS = cls._delimeter_list_to_dict(klass.HEX_STRINGS) - 368 klass._BYTE_STRINGS = cls._delimeter_list_to_dict(klass.BYTE_STRINGS) - 369 klass._IDENTIFIERS = cls._delimeter_list_to_dict(klass.IDENTIFIERS) - 370 klass._STRING_ESCAPES = set(klass.STRING_ESCAPES) - 371 klass._IDENTIFIER_ESCAPES = set(klass.IDENTIFIER_ESCAPES) - 372 klass._COMMENTS = dict( - 373 (comment, None) if isinstance(comment, str) else (comment[0], comment[1]) - 374 for comment in klass.COMMENTS - 375 ) - 376 - 377 klass.KEYWORD_TRIE = new_trie( - 378 key.upper() - 379 for key in { - 380 **klass.KEYWORDS, - 381 **{comment: TokenType.COMMENT for comment in klass._COMMENTS}, - 382 **{quote: TokenType.QUOTE for quote in klass._QUOTES}, - 383 **{bit_string: TokenType.BIT_STRING for bit_string in klass._BIT_STRINGS}, - 384 **{hex_string: TokenType.HEX_STRING for hex_string in klass._HEX_STRINGS}, - 385 **{byte_string: TokenType.BYTE_STRING for byte_string in klass._BYTE_STRINGS}, - 386 } - 387 if " " in key or any(single in key for single in klass.SINGLE_TOKENS) - 388 ) - 389 - 390 return klass + 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}>" + 357 + 358 + 359class _Tokenizer(type): + 360 def __new__(cls, clsname, bases, attrs): # type: ignore + 361 klass = super().__new__(cls, clsname, bases, attrs) + 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 @staticmethod - 393 def _delimeter_list_to_dict(list: t.List[str | t.Tuple[str, str]]) -> t.Dict[str, str]: - 394 return dict((item, item) if isinstance(item, str) else (item[0], item[1]) for item in list) - 395 - 396 - 397class Tokenizer(metaclass=_Tokenizer): - 398 SINGLE_TOKENS = { - 399 "(": TokenType.L_PAREN, - 400 ")": TokenType.R_PAREN, - 401 "[": TokenType.L_BRACKET, - 402 "]": TokenType.R_BRACKET, - 403 "{": TokenType.L_BRACE, - 404 "}": TokenType.R_BRACE, - 405 "&": TokenType.AMP, - 406 "^": TokenType.CARET, - 407 ":": TokenType.COLON, - 408 ",": TokenType.COMMA, - 409 ".": TokenType.DOT, - 410 "-": TokenType.DASH, - 411 "=": TokenType.EQ, - 412 ">": TokenType.GT, - 413 "<": TokenType.LT, - 414 "%": TokenType.MOD, - 415 "!": TokenType.NOT, - 416 "|": TokenType.PIPE, - 417 "+": TokenType.PLUS, - 418 ";": TokenType.SEMICOLON, - 419 "/": TokenType.SLASH, - 420 "\\": TokenType.BACKSLASH, - 421 "*": TokenType.STAR, - 422 "~": TokenType.TILDA, - 423 "?": TokenType.PLACEHOLDER, - 424 "@": TokenType.PARAMETER, - 425 # used for breaking a var like x'y' but nothing else - 426 # the token type doesn't matter - 427 "'": TokenType.QUOTE, - 428 "`": TokenType.IDENTIFIER, - 429 '"': TokenType.IDENTIFIER, - 430 "#": TokenType.HASH, - 431 } - 432 - 433 QUOTES: t.List[t.Tuple[str, str] | str] = ["'"] + 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 BIT_STRINGS: t.List[str | t.Tuple[str, str]] = [] + 435 QUOTES: t.List[t.Tuple[str, str] | str] = ["'"] 436 - 437 HEX_STRINGS: t.List[str | t.Tuple[str, str]] = [] + 437 BIT_STRINGS: t.List[str | t.Tuple[str, str]] = [] 438 - 439 BYTE_STRINGS: t.List[str | t.Tuple[str, str]] = [] + 439 HEX_STRINGS: t.List[str | t.Tuple[str, str]] = [] 440 - 441 IDENTIFIERS: t.List[str | t.Tuple[str, str]] = ['"'] + 441 BYTE_STRINGS: t.List[str | t.Tuple[str, str]] = [] 442 - 443 STRING_ESCAPES = ["'"] + 443 IDENTIFIERS: t.List[str | t.Tuple[str, str]] = ['"'] 444 - 445 _STRING_ESCAPES: t.Set[str] = set() + 445 STRING_ESCAPES = ["'"] 446 - 447 IDENTIFIER_ESCAPES = ['"'] + 447 _STRING_ESCAPES: t.Set[str] = set() 448 - 449 _IDENTIFIER_ESCAPES: t.Set[str] = set() + 449 IDENTIFIER_ESCAPES = ['"'] 450 - 451 KEYWORDS = { - 452 **{f"{{%{postfix}": TokenType.BLOCK_START for postfix in ("", "+", "-")}, - 453 **{f"{prefix}%}}": TokenType.BLOCK_END for prefix in ("", "+", "-")}, - 454 "{{+": TokenType.BLOCK_START, - 455 "{{-": TokenType.BLOCK_START, - 456 "+}}": TokenType.BLOCK_END, - 457 "-}}": TokenType.BLOCK_END, - 458 "/*+": TokenType.HINT, - 459 "==": TokenType.EQ, - 460 "::": TokenType.DCOLON, - 461 "||": TokenType.DPIPE, - 462 ">=": TokenType.GTE, - 463 "<=": TokenType.LTE, - 464 "<>": TokenType.NEQ, - 465 "!=": TokenType.NEQ, - 466 "<=>": TokenType.NULLSAFE_EQ, - 467 "->": TokenType.ARROW, - 468 "->>": TokenType.DARROW, - 469 "=>": TokenType.FARROW, - 470 "#>": TokenType.HASH_ARROW, - 471 "#>>": TokenType.DHASH_ARROW, - 472 "<->": TokenType.LR_ARROW, - 473 "&&": TokenType.DAMP, - 474 "ALL": TokenType.ALL, - 475 "ALWAYS": TokenType.ALWAYS, - 476 "AND": TokenType.AND, - 477 "ANTI": TokenType.ANTI, - 478 "ANY": TokenType.ANY, - 479 "ASC": TokenType.ASC, - 480 "AS": TokenType.ALIAS, - 481 "AT TIME ZONE": TokenType.AT_TIME_ZONE, - 482 "AUTOINCREMENT": TokenType.AUTO_INCREMENT, - 483 "AUTO_INCREMENT": TokenType.AUTO_INCREMENT, - 484 "BEGIN": TokenType.BEGIN, - 485 "BETWEEN": TokenType.BETWEEN, - 486 "BOTH": TokenType.BOTH, - 487 "BUCKET": TokenType.BUCKET, - 488 "BY DEFAULT": TokenType.BY_DEFAULT, - 489 "CACHE": TokenType.CACHE, - 490 "UNCACHE": TokenType.UNCACHE, - 491 "CASE": TokenType.CASE, - 492 "CASCADE": TokenType.CASCADE, - 493 "CHARACTER SET": TokenType.CHARACTER_SET, - 494 "CLUSTER BY": TokenType.CLUSTER_BY, - 495 "COLLATE": TokenType.COLLATE, - 496 "COLUMN": TokenType.COLUMN, - 497 "COMMIT": TokenType.COMMIT, - 498 "COMPOUND": TokenType.COMPOUND, - 499 "CONSTRAINT": TokenType.CONSTRAINT, - 500 "CREATE": TokenType.CREATE, - 501 "CROSS": TokenType.CROSS, - 502 "CUBE": TokenType.CUBE, - 503 "CURRENT_DATE": TokenType.CURRENT_DATE, - 504 "CURRENT ROW": TokenType.CURRENT_ROW, - 505 "CURRENT_TIME": TokenType.CURRENT_TIME, - 506 "CURRENT_TIMESTAMP": TokenType.CURRENT_TIMESTAMP, - 507 "DATABASE": TokenType.DATABASE, - 508 "DEFAULT": TokenType.DEFAULT, - 509 "DELETE": TokenType.DELETE, - 510 "DESC": TokenType.DESC, - 511 "DESCRIBE": TokenType.DESCRIBE, - 512 "DISTINCT": TokenType.DISTINCT, - 513 "DISTINCT FROM": TokenType.DISTINCT_FROM, - 514 "DISTRIBUTE BY": TokenType.DISTRIBUTE_BY, - 515 "DIV": TokenType.DIV, - 516 "DROP": TokenType.DROP, - 517 "ELSE": TokenType.ELSE, - 518 "END": TokenType.END, - 519 "ESCAPE": TokenType.ESCAPE, - 520 "EXCEPT": TokenType.EXCEPT, - 521 "EXECUTE": TokenType.EXECUTE, - 522 "EXISTS": TokenType.EXISTS, - 523 "FALSE": TokenType.FALSE, - 524 "FETCH": TokenType.FETCH, - 525 "FILTER": TokenType.FILTER, - 526 "FIRST": TokenType.FIRST, - 527 "FULL": TokenType.FULL, - 528 "FUNCTION": TokenType.FUNCTION, - 529 "FOLLOWING": TokenType.FOLLOWING, - 530 "FOR": TokenType.FOR, - 531 "FOREIGN KEY": TokenType.FOREIGN_KEY, - 532 "FORMAT": TokenType.FORMAT, - 533 "FROM": TokenType.FROM, - 534 "GLOB": TokenType.GLOB, - 535 "GROUP BY": TokenType.GROUP_BY, - 536 "GROUPING SETS": TokenType.GROUPING_SETS, - 537 "HAVING": TokenType.HAVING, - 538 "IF": TokenType.IF, - 539 "ILIKE": TokenType.ILIKE, - 540 "IGNORE NULLS": TokenType.IGNORE_NULLS, - 541 "IN": TokenType.IN, - 542 "INDEX": TokenType.INDEX, - 543 "INET": TokenType.INET, - 544 "INNER": TokenType.INNER, - 545 "INSERT": TokenType.INSERT, - 546 "INTERVAL": TokenType.INTERVAL, - 547 "INTERSECT": TokenType.INTERSECT, - 548 "INTO": TokenType.INTO, - 549 "IS": TokenType.IS, - 550 "ISNULL": TokenType.ISNULL, - 551 "JOIN": TokenType.JOIN, - 552 "LATERAL": TokenType.LATERAL, - 553 "LAZY": TokenType.LAZY, - 554 "LEADING": TokenType.LEADING, - 555 "LEFT": TokenType.LEFT, - 556 "LIKE": TokenType.LIKE, - 557 "LIMIT": TokenType.LIMIT, - 558 "LOAD DATA": TokenType.LOAD_DATA, - 559 "LOCAL": TokenType.LOCAL, - 560 "MATERIALIZED": TokenType.MATERIALIZED, - 561 "MERGE": TokenType.MERGE, - 562 "NATURAL": TokenType.NATURAL, - 563 "NEXT": TokenType.NEXT, - 564 "NO ACTION": TokenType.NO_ACTION, - 565 "NOT": TokenType.NOT, - 566 "NOTNULL": TokenType.NOTNULL, - 567 "NULL": TokenType.NULL, - 568 "NULLS FIRST": TokenType.NULLS_FIRST, - 569 "NULLS LAST": TokenType.NULLS_LAST, - 570 "OBJECT": TokenType.OBJECT, - 571 "OFFSET": TokenType.OFFSET, - 572 "ON": TokenType.ON, - 573 "ONLY": TokenType.ONLY, - 574 "OPTIONS": TokenType.OPTIONS, - 575 "OR": TokenType.OR, - 576 "ORDER BY": TokenType.ORDER_BY, - 577 "ORDINALITY": TokenType.ORDINALITY, - 578 "OUTER": TokenType.OUTER, - 579 "OUT OF": TokenType.OUT_OF, - 580 "OVER": TokenType.OVER, - 581 "OVERLAPS": TokenType.OVERLAPS, - 582 "OVERWRITE": TokenType.OVERWRITE, - 583 "PARTITION": TokenType.PARTITION, - 584 "PARTITION BY": TokenType.PARTITION_BY, - 585 "PARTITIONED BY": TokenType.PARTITION_BY, - 586 "PARTITIONED_BY": TokenType.PARTITION_BY, - 587 "PERCENT": TokenType.PERCENT, - 588 "PIVOT": TokenType.PIVOT, - 589 "PRECEDING": TokenType.PRECEDING, - 590 "PRIMARY KEY": TokenType.PRIMARY_KEY, - 591 "PROCEDURE": TokenType.PROCEDURE, - 592 "QUALIFY": TokenType.QUALIFY, - 593 "RANGE": TokenType.RANGE, - 594 "RECURSIVE": TokenType.RECURSIVE, - 595 "REGEXP": TokenType.RLIKE, - 596 "REPLACE": TokenType.REPLACE, - 597 "RESPECT NULLS": TokenType.RESPECT_NULLS, - 598 "REFERENCES": TokenType.REFERENCES, - 599 "RIGHT": TokenType.RIGHT, - 600 "RLIKE": TokenType.RLIKE, - 601 "ROLLBACK": TokenType.ROLLBACK, - 602 "ROLLUP": TokenType.ROLLUP, - 603 "ROW": TokenType.ROW, - 604 "ROWS": TokenType.ROWS, - 605 "SCHEMA": TokenType.SCHEMA, - 606 "SEED": TokenType.SEED, - 607 "SELECT": TokenType.SELECT, - 608 "SEMI": TokenType.SEMI, - 609 "SET": TokenType.SET, - 610 "SHOW": TokenType.SHOW, - 611 "SIMILAR TO": TokenType.SIMILAR_TO, - 612 "SOME": TokenType.SOME, - 613 "SORTKEY": TokenType.SORTKEY, - 614 "SORT BY": TokenType.SORT_BY, - 615 "TABLE": TokenType.TABLE, - 616 "TABLESAMPLE": TokenType.TABLE_SAMPLE, - 617 "TEMP": TokenType.TEMPORARY, - 618 "TEMPORARY": TokenType.TEMPORARY, - 619 "THEN": TokenType.THEN, - 620 "TRUE": TokenType.TRUE, - 621 "TRAILING": TokenType.TRAILING, - 622 "UNBOUNDED": TokenType.UNBOUNDED, - 623 "UNION": TokenType.UNION, - 624 "UNLOGGED": TokenType.UNLOGGED, - 625 "UNNEST": TokenType.UNNEST, - 626 "UNPIVOT": TokenType.UNPIVOT, - 627 "UPDATE": TokenType.UPDATE, - 628 "USE": TokenType.USE, - 629 "USING": TokenType.USING, - 630 "VALUES": TokenType.VALUES, - 631 "VIEW": TokenType.VIEW, - 632 "VOLATILE": TokenType.VOLATILE, - 633 "WHEN": TokenType.WHEN, - 634 "WHERE": TokenType.WHERE, - 635 "WINDOW": TokenType.WINDOW, - 636 "WITH": TokenType.WITH, - 637 "WITH TIME ZONE": TokenType.WITH_TIME_ZONE, - 638 "WITH LOCAL TIME ZONE": TokenType.WITH_LOCAL_TIME_ZONE, - 639 "WITHIN GROUP": TokenType.WITHIN_GROUP, - 640 "WITHOUT TIME ZONE": TokenType.WITHOUT_TIME_ZONE, - 641 "APPLY": TokenType.APPLY, - 642 "ARRAY": TokenType.ARRAY, - 643 "BIT": TokenType.BIT, - 644 "BOOL": TokenType.BOOLEAN, - 645 "BOOLEAN": TokenType.BOOLEAN, - 646 "BYTE": TokenType.TINYINT, - 647 "TINYINT": TokenType.TINYINT, - 648 "SHORT": TokenType.SMALLINT, - 649 "SMALLINT": TokenType.SMALLINT, - 650 "INT2": TokenType.SMALLINT, - 651 "INTEGER": TokenType.INT, - 652 "INT": TokenType.INT, - 653 "INT4": TokenType.INT, - 654 "LONG": TokenType.BIGINT, - 655 "BIGINT": TokenType.BIGINT, - 656 "INT8": TokenType.BIGINT, - 657 "DECIMAL": TokenType.DECIMAL, - 658 "MAP": TokenType.MAP, - 659 "NULLABLE": TokenType.NULLABLE, - 660 "NUMBER": TokenType.DECIMAL, - 661 "NUMERIC": TokenType.DECIMAL, - 662 "FIXED": TokenType.DECIMAL, - 663 "REAL": TokenType.FLOAT, - 664 "FLOAT": TokenType.FLOAT, - 665 "FLOAT4": TokenType.FLOAT, - 666 "FLOAT8": TokenType.DOUBLE, - 667 "DOUBLE": TokenType.DOUBLE, - 668 "DOUBLE PRECISION": TokenType.DOUBLE, - 669 "JSON": TokenType.JSON, - 670 "CHAR": TokenType.CHAR, - 671 "CHARACTER": TokenType.CHAR, - 672 "NCHAR": TokenType.NCHAR, - 673 "VARCHAR": TokenType.VARCHAR, - 674 "VARCHAR2": TokenType.VARCHAR, - 675 "NVARCHAR": TokenType.NVARCHAR, - 676 "NVARCHAR2": TokenType.NVARCHAR, - 677 "STR": TokenType.TEXT, - 678 "STRING": TokenType.TEXT, - 679 "TEXT": TokenType.TEXT, - 680 "CLOB": TokenType.TEXT, - 681 "LONGVARCHAR": TokenType.TEXT, - 682 "BINARY": TokenType.BINARY, - 683 "BLOB": TokenType.VARBINARY, - 684 "BYTEA": TokenType.VARBINARY, - 685 "VARBINARY": TokenType.VARBINARY, - 686 "TIME": TokenType.TIME, - 687 "TIMESTAMP": TokenType.TIMESTAMP, - 688 "TIMESTAMPTZ": TokenType.TIMESTAMPTZ, - 689 "TIMESTAMPLTZ": TokenType.TIMESTAMPLTZ, - 690 "DATE": TokenType.DATE, - 691 "DATETIME": TokenType.DATETIME, - 692 "UNIQUE": TokenType.UNIQUE, - 693 "STRUCT": TokenType.STRUCT, - 694 "VARIANT": TokenType.VARIANT, - 695 "ALTER": TokenType.ALTER, - 696 "ALTER AGGREGATE": TokenType.COMMAND, - 697 "ALTER DEFAULT": TokenType.COMMAND, - 698 "ALTER DOMAIN": TokenType.COMMAND, - 699 "ALTER ROLE": TokenType.COMMAND, - 700 "ALTER RULE": TokenType.COMMAND, - 701 "ALTER SEQUENCE": TokenType.COMMAND, - 702 "ALTER TYPE": TokenType.COMMAND, - 703 "ALTER USER": TokenType.COMMAND, - 704 "ALTER VIEW": TokenType.COMMAND, - 705 "ANALYZE": TokenType.COMMAND, - 706 "CALL": TokenType.COMMAND, - 707 "COMMENT": TokenType.COMMENT, - 708 "COPY": TokenType.COMMAND, - 709 "EXPLAIN": TokenType.COMMAND, - 710 "GRANT": TokenType.COMMAND, - 711 "OPTIMIZE": TokenType.COMMAND, - 712 "PREPARE": TokenType.COMMAND, - 713 "TRUNCATE": TokenType.COMMAND, - 714 "VACUUM": TokenType.COMMAND, - 715 } - 716 - 717 WHITE_SPACE: t.Dict[str, TokenType] = { - 718 " ": TokenType.SPACE, - 719 "\t": TokenType.SPACE, - 720 "\n": TokenType.BREAK, - 721 "\r": TokenType.BREAK, - 722 "\r\n": TokenType.BREAK, - 723 } - 724 - 725 COMMANDS = { - 726 TokenType.COMMAND, - 727 TokenType.EXECUTE, - 728 TokenType.FETCH, - 729 TokenType.SHOW, - 730 } - 731 - 732 COMMAND_PREFIX_TOKENS = {TokenType.SEMICOLON, TokenType.BEGIN} - 733 - 734 # handle numeric literals like in hive (3L = BIGINT) - 735 NUMERIC_LITERALS: t.Dict[str, str] = {} - 736 ENCODE: t.Optional[str] = None + 451 _IDENTIFIER_ESCAPES: 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 COMMENTS = ["--", ("/*", "*/"), ("{#", "#}")] - 739 KEYWORD_TRIE = None # autofilled - 740 - 741 IDENTIFIER_CAN_START_WITH_DIGIT = False - 742 - 743 __slots__ = ( - 744 "sql", - 745 "size", - 746 "tokens", - 747 "_start", - 748 "_current", - 749 "_line", - 750 "_col", - 751 "_comments", - 752 "_char", - 753 "_end", - 754 "_peek", - 755 "_prev_token_line", - 756 "_prev_token_comments", - 757 "_prev_token_type", - 758 ) - 759 - 760 def __init__(self) -> None: - 761 self.reset() - 762 - 763 def reset(self) -> None: - 764 self.sql = "" - 765 self.size = 0 - 766 self.tokens: t.List[Token] = [] - 767 self._start = 0 - 768 self._current = 0 - 769 self._line = 1 - 770 self._col = 1 - 771 self._comments: t.List[str] = [] - 772 - 773 self._char = None - 774 self._end = None - 775 self._peek = None - 776 self._prev_token_line = -1 - 777 self._prev_token_comments: t.List[str] = [] - 778 self._prev_token_type = None - 779 - 780 def tokenize(self, sql: str) -> t.List[Token]: - 781 """Returns a list of tokens corresponding to the SQL string `sql`.""" - 782 self.reset() - 783 self.sql = sql - 784 self.size = len(sql) - 785 self._scan() - 786 return self.tokens - 787 - 788 def _scan(self, until: t.Optional[t.Callable] = None) -> None: - 789 while self.size and not self._end: - 790 self._start = self._current - 791 self._advance() - 792 - 793 if self._char is None: - 794 break - 795 - 796 if self._char not in self.WHITE_SPACE: - 797 if self._char.isdigit(): - 798 self._scan_number() - 799 elif self._char in self._IDENTIFIERS: - 800 self._scan_identifier(self._IDENTIFIERS[self._char]) - 801 else: - 802 self._scan_keywords() - 803 - 804 if until and until(): - 805 break - 806 - 807 def _chars(self, size: int) -> str: - 808 if size == 1: - 809 return self._char # type: ignore - 810 start = self._current - 1 - 811 end = start + size - 812 if end <= self.size: - 813 return self.sql[start:end] - 814 return "" - 815 - 816 def _line_break(self, char: t.Optional[str]) -> bool: - 817 return self.WHITE_SPACE.get(char) == TokenType.BREAK # type: ignore - 818 - 819 def _advance(self, i: int = 1) -> None: - 820 if self._line_break(self._char): - 821 self._set_new_line() - 822 - 823 self._col += i - 824 self._current += i - 825 self._end = self._current >= self.size # type: ignore - 826 self._char = self.sql[self._current - 1] # type: ignore - 827 self._peek = self.sql[self._current] if self._current < self.size else "" # type: ignore - 828 - 829 def _set_new_line(self) -> None: - 830 self._col = 1 - 831 self._line += 1 - 832 - 833 @property - 834 def _text(self) -> str: - 835 return self.sql[self._start : self._current] - 836 - 837 def _add(self, token_type: TokenType, text: t.Optional[str] = None) -> None: - 838 self._prev_token_line = self._line - 839 self._prev_token_comments = self._comments - 840 self._prev_token_type = token_type # type: ignore - 841 self.tokens.append( - 842 Token( - 843 token_type, - 844 self._text if text is None else text, - 845 self._line, - 846 self._col, - 847 self._comments, - 848 ) - 849 ) - 850 self._comments = [] - 851 - 852 # If we have either a semicolon or a begin token before the command's token, we'll parse - 853 # whatever follows the command's token as a string - 854 if ( - 855 token_type in self.COMMANDS - 856 and self._peek != ";" - 857 and (len(self.tokens) == 1 or self.tokens[-2].token_type in self.COMMAND_PREFIX_TOKENS) - 858 ): - 859 start = self._current - 860 tokens = len(self.tokens) - 861 self._scan(lambda: self._peek == ";") - 862 self.tokens = self.tokens[:tokens] - 863 text = self.sql[start : self._current].strip() - 864 if text: - 865 self._add(TokenType.STRING, text) - 866 - 867 def _scan_keywords(self) -> None: - 868 size = 0 - 869 word = None - 870 chars = self._text - 871 char = chars - 872 prev_space = False - 873 skip = False - 874 trie = self.KEYWORD_TRIE - 875 single_token = char in self.SINGLE_TOKENS - 876 - 877 while chars: - 878 if skip: - 879 result = 1 - 880 else: - 881 result, trie = in_trie(trie, char.upper()) # type: ignore - 882 - 883 if result == 0: - 884 break - 885 if result == 2: - 886 word = chars - 887 size += 1 - 888 end = self._current - 1 + size - 889 - 890 if end < self.size: - 891 char = self.sql[end] - 892 single_token = single_token or char in self.SINGLE_TOKENS - 893 is_space = char in self.WHITE_SPACE - 894 - 895 if not is_space or not prev_space: - 896 if is_space: - 897 char = " " - 898 chars += char - 899 prev_space = is_space - 900 skip = False - 901 else: - 902 skip = True - 903 else: - 904 chars = " " - 905 - 906 word = None if not single_token and chars[-1] not in self.WHITE_SPACE else word - 907 - 908 if not word: - 909 if self._char in self.SINGLE_TOKENS: - 910 self._add(self.SINGLE_TOKENS[self._char]) # type: ignore - 911 return - 912 self._scan_var() - 913 return - 914 - 915 if self._scan_string(word): - 916 return - 917 if self._scan_formatted_string(word): - 918 return - 919 if self._scan_comment(word): - 920 return - 921 - 922 self._advance(size - 1) - 923 self._add(self.KEYWORDS[word.upper()]) - 924 - 925 def _scan_comment(self, comment_start: str) -> bool: - 926 if comment_start not in self._COMMENTS: # type: ignore - 927 return False - 928 - 929 comment_start_line = self._line - 930 comment_start_size = len(comment_start) - 931 comment_end = self._COMMENTS[comment_start] # type: ignore - 932 - 933 if comment_end: - 934 comment_end_size = len(comment_end) - 935 - 936 while not self._end and self._chars(comment_end_size) != comment_end: - 937 self._advance() - 938 - 939 self._comments.append(self._text[comment_start_size : -comment_end_size + 1]) # type: ignore - 940 self._advance(comment_end_size - 1) - 941 else: - 942 while not self._end and not self._line_break(self._peek): - 943 self._advance() - 944 self._comments.append(self._text[comment_start_size:]) # type: ignore - 945 - 946 # Leading comment is attached to the succeeding token, whilst trailing comment to the preceding. - 947 # Multiple consecutive comments are preserved by appending them to the current comments list. - 948 if comment_start_line == self._prev_token_line: - 949 self.tokens[-1].comments.extend(self._comments) - 950 self._comments = [] - 951 self._prev_token_line = self._line - 952 - 953 return True - 954 - 955 def _scan_number(self) -> None: - 956 if self._char == "0": - 957 peek = self._peek.upper() # type: ignore - 958 if peek == "B": - 959 return self._scan_bits() - 960 elif peek == "X": - 961 return self._scan_hex() - 962 - 963 decimal = False - 964 scientific = 0 - 965 - 966 while True: - 967 if self._peek.isdigit(): # type: ignore - 968 self._advance() - 969 elif self._peek == "." and not decimal: - 970 decimal = True - 971 self._advance() - 972 elif self._peek in ("-", "+") and scientific == 1: - 973 scientific += 1 - 974 self._advance() - 975 elif self._peek.upper() == "E" and not scientific: # type: ignore - 976 scientific += 1 - 977 self._advance() - 978 elif self._peek.isidentifier(): # type: ignore - 979 number_text = self._text - 980 literal = [] - 981 - 982 while self._peek.strip() and self._peek not in self.SINGLE_TOKENS: # type: ignore - 983 literal.append(self._peek.upper()) # type: ignore - 984 self._advance() - 985 - 986 literal = "".join(literal) # type: ignore - 987 token_type = self.KEYWORDS.get(self.NUMERIC_LITERALS.get(literal)) # type: ignore - 988 - 989 if token_type: - 990 self._add(TokenType.NUMBER, number_text) - 991 self._add(TokenType.DCOLON, "::") - 992 return self._add(token_type, literal) # type: ignore - 993 elif self.IDENTIFIER_CAN_START_WITH_DIGIT: - 994 return self._add(TokenType.VAR) - 995 - 996 self._add(TokenType.NUMBER, number_text) - 997 return self._advance(-len(literal)) - 998 else: - 999 return self._add(TokenType.NUMBER) -1000 -1001 def _scan_bits(self) -> None: -1002 self._advance() -1003 value = self._extract_value() -1004 try: -1005 self._add(TokenType.BIT_STRING, f"{int(value, 2)}") -1006 except ValueError: -1007 self._add(TokenType.IDENTIFIER) -1008 -1009 def _scan_hex(self) -> None: -1010 self._advance() -1011 value = self._extract_value() -1012 try: -1013 self._add(TokenType.HEX_STRING, f"{int(value, 16)}") -1014 except ValueError: -1015 self._add(TokenType.IDENTIFIER) -1016 -1017 def _extract_value(self) -> str: -1018 while True: -1019 char = self._peek.strip() # type: ignore -1020 if char and char not in self.SINGLE_TOKENS: -1021 self._advance() -1022 else: -1023 break -1024 -1025 return self._text -1026 -1027 def _scan_string(self, quote: str) -> bool: -1028 quote_end = self._QUOTES.get(quote) # type: ignore -1029 if quote_end is None: -1030 return False -1031 -1032 self._advance(len(quote)) -1033 text = self._extract_string(quote_end) -1034 text = text.encode(self.ENCODE).decode(self.ENCODE) if self.ENCODE else text # type: ignore -1035 self._add(TokenType.NATIONAL if quote[0].upper() == "N" else TokenType.STRING, text) -1036 return True -1037 -1038 # X'1234, b'0110', E'\\\\\' etc. -1039 def _scan_formatted_string(self, string_start: str) -> bool: -1040 if string_start in self._HEX_STRINGS: # type: ignore -1041 delimiters = self._HEX_STRINGS # type: ignore -1042 token_type = TokenType.HEX_STRING -1043 base = 16 -1044 elif string_start in self._BIT_STRINGS: # type: ignore -1045 delimiters = self._BIT_STRINGS # type: ignore -1046 token_type = TokenType.BIT_STRING -1047 base = 2 -1048 elif string_start in self._BYTE_STRINGS: # type: ignore -1049 delimiters = self._BYTE_STRINGS # type: ignore -1050 token_type = TokenType.BYTE_STRING -1051 base = None -1052 else: -1053 return False -1054 -1055 self._advance(len(string_start)) -1056 string_end = delimiters.get(string_start) -1057 text = self._extract_string(string_end) -1058 -1059 if base is None: -1060 self._add(token_type, text) -1061 else: -1062 try: -1063 self._add(token_type, f"{int(text, base)}") -1064 except: -1065 raise RuntimeError( -1066 f"Numeric string contains invalid characters from {self._line}:{self._start}" -1067 ) -1068 -1069 return True -1070 -1071 def _scan_identifier(self, identifier_end: str) -> None: -1072 text = "" -1073 identifier_end_is_escape = identifier_end in self._IDENTIFIER_ESCAPES -1074 -1075 while True: -1076 if self._end: -1077 raise RuntimeError(f"Missing {identifier_end} from {self._line}:{self._start}") -1078 -1079 self._advance() -1080 if self._char == identifier_end: -1081 if identifier_end_is_escape and self._peek == identifier_end: -1082 text += identifier_end # type: ignore -1083 self._advance() -1084 continue -1085 -1086 break -1087 -1088 text += self._char # type: ignore -1089 -1090 self._add(TokenType.IDENTIFIER, text) -1091 -1092 def _scan_var(self) -> None: -1093 while True: -1094 char = self._peek.strip() # type: ignore -1095 if char and char not in self.SINGLE_TOKENS: -1096 self._advance() -1097 else: -1098 break -1099 self._add( -1100 TokenType.VAR -1101 if self._prev_token_type == TokenType.PARAMETER -1102 else self.KEYWORDS.get(self._text.upper(), TokenType.VAR) -1103 ) -1104 -1105 def _extract_string(self, delimiter: str) -> str: -1106 text = "" -1107 delim_size = len(delimiter) -1108 -1109 while True: -1110 if self._char in self._STRING_ESCAPES and ( -1111 self._peek == delimiter or self._peek in self._STRING_ESCAPES -1112 ): -1113 if self._peek == delimiter: -1114 text += self._peek # type: ignore -1115 else: -1116 text += self._char + self._peek # type: ignore -1117 -1118 if self._current + 1 < self.size: -1119 self._advance(2) -1120 else: -1121 raise RuntimeError(f"Missing {delimiter} from {self._line}:{self._current}") -1122 else: -1123 if self._chars(delim_size) == delimiter: -1124 if delim_size > 1: -1125 self._advance(delim_size - 1) -1126 break -1127 -1128 if self._end: -1129 raise RuntimeError(f"Missing {delimiter} from {self._line}:{self._start}") -1130 text += self._char # type: ignore -1131 self._advance() -1132 -1133 return text + 738 # handle numeric literals like in hive (3L = BIGINT) + 739 NUMERIC_LITERALS: t.Dict[str, str] = {} + 740 ENCODE: t.Optional[str] = None + 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] = [] + 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() + 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 + 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]) # 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 self._add(self.KEYWORDS[word.upper()]) + 925 + 926 def _scan_comment(self, comment_start: str) -> bool: + 927 if comment_start not in self._COMMENTS: # type: ignore + 928 return False + 929 + 930 comment_start_line = self._line + 931 comment_start_size = len(comment_start) + 932 comment_end = self._COMMENTS[comment_start] # type: ignore + 933 + 934 if comment_end: + 935 comment_end_size = len(comment_end) + 936 + 937 while not self._end and self._chars(comment_end_size) != comment_end: + 938 self._advance() + 939 + 940 self._comments.append(self._text[comment_start_size : -comment_end_size + 1]) # type: ignore + 941 self._advance(comment_end_size - 1) + 942 else: + 943 while not self._end and not self.WHITE_SPACE.get(self._peek) is TokenType.BREAK: + 944 self._advance() + 945 self._comments.append(self._text[comment_start_size:]) # type: ignore + 946 + 947 # Leading comment is attached to the succeeding token, whilst trailing comment to the preceding. + 948 # Multiple consecutive comments are preserved by appending them to the current comments list. + 949 if comment_start_line == self._prev_token_line: + 950 self.tokens[-1].comments.extend(self._comments) + 951 self._comments = [] + 952 self._prev_token_line = self._line + 953 + 954 return True + 955 + 956 def _scan_number(self) -> None: + 957 if self._char == "0": + 958 peek = self._peek.upper() # type: ignore + 959 if peek == "B": + 960 return self._scan_bits() + 961 elif peek == "X": + 962 return self._scan_hex() + 963 + 964 decimal = False + 965 scientific = 0 + 966 + 967 while True: + 968 if self._peek.isdigit(): # type: ignore + 969 self._advance() + 970 elif self._peek == "." and not decimal: + 971 decimal = True + 972 self._advance() + 973 elif self._peek in ("-", "+") and scientific == 1: + 974 scientific += 1 + 975 self._advance() + 976 elif self._peek.upper() == "E" and not scientific: # type: ignore + 977 scientific += 1 + 978 self._advance() + 979 elif self._peek.isidentifier(): # type: ignore + 980 number_text = self._text + 981 literal = [] + 982 + 983 while self._peek.strip() and self._peek not in self.SINGLE_TOKENS: # type: ignore + 984 literal.append(self._peek.upper()) # type: ignore + 985 self._advance() + 986 + 987 literal = "".join(literal) # type: ignore + 988 token_type = self.KEYWORDS.get(self.NUMERIC_LITERALS.get(literal)) # type: ignore + 989 + 990 if token_type: + 991 self._add(TokenType.NUMBER, number_text) + 992 self._add(TokenType.DCOLON, "::") + 993 return self._add(token_type, literal) # type: ignore + 994 elif self.IDENTIFIER_CAN_START_WITH_DIGIT: + 995 return self._add(TokenType.VAR) + 996 + 997 self._add(TokenType.NUMBER, number_text) + 998 return self._advance(-len(literal)) + 999 else: +1000 return self._add(TokenType.NUMBER) +1001 +1002 def _scan_bits(self) -> None: +1003 self._advance() +1004 value = self._extract_value() +1005 try: +1006 self._add(TokenType.BIT_STRING, f"{int(value, 2)}") +1007 except ValueError: +1008 self._add(TokenType.IDENTIFIER) +1009 +1010 def _scan_hex(self) -> None: +1011 self._advance() +1012 value = self._extract_value() +1013 try: +1014 self._add(TokenType.HEX_STRING, f"{int(value, 16)}") +1015 except ValueError: +1016 self._add(TokenType.IDENTIFIER) +1017 +1018 def _extract_value(self) -> str: +1019 while True: +1020 char = self._peek.strip() # type: ignore +1021 if char and char not in self.SINGLE_TOKENS: +1022 self._advance() +1023 else: +1024 break +1025 +1026 return self._text +1027 +1028 def _scan_string(self, quote: str) -> bool: +1029 quote_end = self._QUOTES.get(quote) # type: ignore +1030 if quote_end is None: +1031 return False +1032 +1033 self._advance(len(quote)) +1034 text = self._extract_string(quote_end) +1035 text = text.encode(self.ENCODE).decode(self.ENCODE) if self.ENCODE else text # type: ignore +1036 self._add(TokenType.NATIONAL if quote[0].upper() == "N" else TokenType.STRING, text) +1037 return True +1038 +1039 # X'1234, b'0110', E'\\\\\' etc. +1040 def _scan_formatted_string(self, string_start: str) -> bool: +1041 if string_start in self._HEX_STRINGS: # type: ignore +1042 delimiters = self._HEX_STRINGS # type: ignore +1043 token_type = TokenType.HEX_STRING +1044 base = 16 +1045 elif string_start in self._BIT_STRINGS: # type: ignore +1046 delimiters = self._BIT_STRINGS # type: ignore +1047 token_type = TokenType.BIT_STRING +1048 base = 2 +1049 elif string_start in self._BYTE_STRINGS: # type: ignore +1050 delimiters = self._BYTE_STRINGS # type: ignore +1051 token_type = TokenType.BYTE_STRING +1052 base = None +1053 else: +1054 return False +1055 +1056 self._advance(len(string_start)) +1057 string_end = delimiters.get(string_start) +1058 text = self._extract_string(string_end) +1059 +1060 if base is None: +1061 self._add(token_type, text) +1062 else: +1063 try: +1064 self._add(token_type, f"{int(text, base)}") +1065 except: +1066 raise RuntimeError( +1067 f"Numeric string contains invalid characters from {self._line}:{self._start}" +1068 ) +1069 +1070 return True +1071 +1072 def _scan_identifier(self, identifier_end: str) -> None: +1073 text = "" +1074 identifier_end_is_escape = identifier_end in self._IDENTIFIER_ESCAPES +1075 +1076 while True: +1077 if self._end: +1078 raise RuntimeError(f"Missing {identifier_end} from {self._line}:{self._start}") +1079 +1080 self._advance() +1081 if self._char == identifier_end: +1082 if identifier_end_is_escape and self._peek == identifier_end: +1083 text += identifier_end # type: ignore +1084 self._advance() +1085 continue +1086 +1087 break +1088 +1089 text += self._char # type: ignore +1090 +1091 self._add(TokenType.IDENTIFIER, text) +1092 +1093 def _scan_var(self) -> None: +1094 while True: +1095 char = self._peek.strip() # type: ignore +1096 if char and char not in self.SINGLE_TOKENS: +1097 self._advance() +1098 else: +1099 break +1100 self._add( +1101 TokenType.VAR +1102 if self._prev_token_type == TokenType.PARAMETER +1103 else self.KEYWORDS.get(self._text.upper(), TokenType.VAR) +1104 ) +1105 +1106 def _extract_string(self, delimiter: str) -> str: +1107 text = "" +1108 delim_size = len(delimiter) +1109 +1110 while True: +1111 if self._char in self._STRING_ESCAPES and ( +1112 self._peek == delimiter or self._peek in self._STRING_ESCAPES +1113 ): +1114 if self._peek == delimiter: +1115 text += self._peek # type: ignore +1116 else: +1117 text += self._char + self._peek # type: ignore +1118 +1119 if self._current + 1 < self.size: +1120 self._advance(2) +1121 else: +1122 raise RuntimeError(f"Missing {delimiter} from {self._line}:{self._current}") +1123 else: +1124 if self._chars(delim_size) == delimiter: +1125 if delim_size > 1: +1126 self._advance(delim_size - 1) +1127 break +1128 +1129 if self._end: +1130 raise RuntimeError(f"Missing {delimiter} from {self._line}:{self._start}") +1131 text += self._char # type: ignore +1132 self._advance() +1133 +1134 return text
                    @@ -2370,64 +2374,65 @@
                    253 PERCENT = auto() 254 PIVOT = auto() 255 PLACEHOLDER = 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() +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()
        @@ -5278,6 +5283,18 @@ + +
        +
        + PRAGMA = +<TokenType.PRAGMA: 'PRAGMA'> + + +
        + + + +
        @@ -5997,46 +6014,47 @@
        -
        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 = max(col - len(text), 1)
        -351        self.comments = comments
        -352
        -353    def __repr__(self) -> str:
        -354        attributes = ", ".join(f"{k}: {getattr(self, k)}" for k in self.__slots__)
        -355        return f"<Token {attributes}>"
        +            
        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}>"
         
        @@ -6052,19 +6070,20 @@
        -
        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 = max(col - len(text), 1)
        -351        self.comments = comments
        +            
        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
         
        @@ -6083,10 +6102,10 @@
        -
        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))
        +            
        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))
         
        @@ -6107,10 +6126,10 @@
        -
        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)
        +            
        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)
         
        @@ -6131,10 +6150,10 @@
        -
        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)
        +            
        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)
         
        @@ -6155,10 +6174,10 @@
        -
        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)
        +            
        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)
         
        @@ -6179,743 +6198,742 @@
        -
         398class Tokenizer(metaclass=_Tokenizer):
        - 399    SINGLE_TOKENS = {
        - 400        "(": TokenType.L_PAREN,
        - 401        ")": TokenType.R_PAREN,
        - 402        "[": TokenType.L_BRACKET,
        - 403        "]": TokenType.R_BRACKET,
        - 404        "{": TokenType.L_BRACE,
        - 405        "}": TokenType.R_BRACE,
        - 406        "&": TokenType.AMP,
        - 407        "^": TokenType.CARET,
        - 408        ":": TokenType.COLON,
        - 409        ",": TokenType.COMMA,
        - 410        ".": TokenType.DOT,
        - 411        "-": TokenType.DASH,
        - 412        "=": TokenType.EQ,
        - 413        ">": TokenType.GT,
        - 414        "<": TokenType.LT,
        - 415        "%": TokenType.MOD,
        - 416        "!": TokenType.NOT,
        - 417        "|": TokenType.PIPE,
        - 418        "+": TokenType.PLUS,
        - 419        ";": TokenType.SEMICOLON,
        - 420        "/": TokenType.SLASH,
        - 421        "\\": TokenType.BACKSLASH,
        - 422        "*": TokenType.STAR,
        - 423        "~": TokenType.TILDA,
        - 424        "?": TokenType.PLACEHOLDER,
        - 425        "@": TokenType.PARAMETER,
        - 426        # used for breaking a var like x'y' but nothing else
        - 427        # the token type doesn't matter
        - 428        "'": TokenType.QUOTE,
        - 429        "`": TokenType.IDENTIFIER,
        - 430        '"': TokenType.IDENTIFIER,
        - 431        "#": TokenType.HASH,
        - 432    }
        - 433
        - 434    QUOTES: t.List[t.Tuple[str, str] | str] = ["'"]
        +            
         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    BIT_STRINGS: t.List[str | t.Tuple[str, str]] = []
        + 436    QUOTES: t.List[t.Tuple[str, str] | str] = ["'"]
          437
        - 438    HEX_STRINGS: t.List[str | t.Tuple[str, str]] = []
        + 438    BIT_STRINGS: t.List[str | t.Tuple[str, str]] = []
          439
        - 440    BYTE_STRINGS: t.List[str | t.Tuple[str, str]] = []
        + 440    HEX_STRINGS: t.List[str | t.Tuple[str, str]] = []
          441
        - 442    IDENTIFIERS: t.List[str | t.Tuple[str, str]] = ['"']
        + 442    BYTE_STRINGS: t.List[str | t.Tuple[str, str]] = []
          443
        - 444    STRING_ESCAPES = ["'"]
        + 444    IDENTIFIERS: t.List[str | t.Tuple[str, str]] = ['"']
          445
        - 446    _STRING_ESCAPES: t.Set[str] = set()
        + 446    STRING_ESCAPES = ["'"]
          447
        - 448    IDENTIFIER_ESCAPES = ['"']
        + 448    _STRING_ESCAPES: t.Set[str] = set()
          449
        - 450    _IDENTIFIER_ESCAPES: t.Set[str] = set()
        + 450    IDENTIFIER_ESCAPES = ['"']
          451
        - 452    KEYWORDS = {
        - 453        **{f"{{%{postfix}": TokenType.BLOCK_START for postfix in ("", "+", "-")},
        - 454        **{f"{prefix}%}}": TokenType.BLOCK_END for prefix in ("", "+", "-")},
        - 455        "{{+": TokenType.BLOCK_START,
        - 456        "{{-": TokenType.BLOCK_START,
        - 457        "+}}": TokenType.BLOCK_END,
        - 458        "-}}": TokenType.BLOCK_END,
        - 459        "/*+": TokenType.HINT,
        - 460        "==": TokenType.EQ,
        - 461        "::": TokenType.DCOLON,
        - 462        "||": TokenType.DPIPE,
        - 463        ">=": TokenType.GTE,
        - 464        "<=": TokenType.LTE,
        - 465        "<>": TokenType.NEQ,
        - 466        "!=": TokenType.NEQ,
        - 467        "<=>": TokenType.NULLSAFE_EQ,
        - 468        "->": TokenType.ARROW,
        - 469        "->>": TokenType.DARROW,
        - 470        "=>": TokenType.FARROW,
        - 471        "#>": TokenType.HASH_ARROW,
        - 472        "#>>": TokenType.DHASH_ARROW,
        - 473        "<->": TokenType.LR_ARROW,
        - 474        "&&": TokenType.DAMP,
        - 475        "ALL": TokenType.ALL,
        - 476        "ALWAYS": TokenType.ALWAYS,
        - 477        "AND": TokenType.AND,
        - 478        "ANTI": TokenType.ANTI,
        - 479        "ANY": TokenType.ANY,
        - 480        "ASC": TokenType.ASC,
        - 481        "AS": TokenType.ALIAS,
        - 482        "AT TIME ZONE": TokenType.AT_TIME_ZONE,
        - 483        "AUTOINCREMENT": TokenType.AUTO_INCREMENT,
        - 484        "AUTO_INCREMENT": TokenType.AUTO_INCREMENT,
        - 485        "BEGIN": TokenType.BEGIN,
        - 486        "BETWEEN": TokenType.BETWEEN,
        - 487        "BOTH": TokenType.BOTH,
        - 488        "BUCKET": TokenType.BUCKET,
        - 489        "BY DEFAULT": TokenType.BY_DEFAULT,
        - 490        "CACHE": TokenType.CACHE,
        - 491        "UNCACHE": TokenType.UNCACHE,
        - 492        "CASE": TokenType.CASE,
        - 493        "CASCADE": TokenType.CASCADE,
        - 494        "CHARACTER SET": TokenType.CHARACTER_SET,
        - 495        "CLUSTER BY": TokenType.CLUSTER_BY,
        - 496        "COLLATE": TokenType.COLLATE,
        - 497        "COLUMN": TokenType.COLUMN,
        - 498        "COMMIT": TokenType.COMMIT,
        - 499        "COMPOUND": TokenType.COMPOUND,
        - 500        "CONSTRAINT": TokenType.CONSTRAINT,
        - 501        "CREATE": TokenType.CREATE,
        - 502        "CROSS": TokenType.CROSS,
        - 503        "CUBE": TokenType.CUBE,
        - 504        "CURRENT_DATE": TokenType.CURRENT_DATE,
        - 505        "CURRENT ROW": TokenType.CURRENT_ROW,
        - 506        "CURRENT_TIME": TokenType.CURRENT_TIME,
        - 507        "CURRENT_TIMESTAMP": TokenType.CURRENT_TIMESTAMP,
        - 508        "DATABASE": TokenType.DATABASE,
        - 509        "DEFAULT": TokenType.DEFAULT,
        - 510        "DELETE": TokenType.DELETE,
        - 511        "DESC": TokenType.DESC,
        - 512        "DESCRIBE": TokenType.DESCRIBE,
        - 513        "DISTINCT": TokenType.DISTINCT,
        - 514        "DISTINCT FROM": TokenType.DISTINCT_FROM,
        - 515        "DISTRIBUTE BY": TokenType.DISTRIBUTE_BY,
        - 516        "DIV": TokenType.DIV,
        - 517        "DROP": TokenType.DROP,
        - 518        "ELSE": TokenType.ELSE,
        - 519        "END": TokenType.END,
        - 520        "ESCAPE": TokenType.ESCAPE,
        - 521        "EXCEPT": TokenType.EXCEPT,
        - 522        "EXECUTE": TokenType.EXECUTE,
        - 523        "EXISTS": TokenType.EXISTS,
        - 524        "FALSE": TokenType.FALSE,
        - 525        "FETCH": TokenType.FETCH,
        - 526        "FILTER": TokenType.FILTER,
        - 527        "FIRST": TokenType.FIRST,
        - 528        "FULL": TokenType.FULL,
        - 529        "FUNCTION": TokenType.FUNCTION,
        - 530        "FOLLOWING": TokenType.FOLLOWING,
        - 531        "FOR": TokenType.FOR,
        - 532        "FOREIGN KEY": TokenType.FOREIGN_KEY,
        - 533        "FORMAT": TokenType.FORMAT,
        - 534        "FROM": TokenType.FROM,
        - 535        "GLOB": TokenType.GLOB,
        - 536        "GROUP BY": TokenType.GROUP_BY,
        - 537        "GROUPING SETS": TokenType.GROUPING_SETS,
        - 538        "HAVING": TokenType.HAVING,
        - 539        "IF": TokenType.IF,
        - 540        "ILIKE": TokenType.ILIKE,
        - 541        "IGNORE NULLS": TokenType.IGNORE_NULLS,
        - 542        "IN": TokenType.IN,
        - 543        "INDEX": TokenType.INDEX,
        - 544        "INET": TokenType.INET,
        - 545        "INNER": TokenType.INNER,
        - 546        "INSERT": TokenType.INSERT,
        - 547        "INTERVAL": TokenType.INTERVAL,
        - 548        "INTERSECT": TokenType.INTERSECT,
        - 549        "INTO": TokenType.INTO,
        - 550        "IS": TokenType.IS,
        - 551        "ISNULL": TokenType.ISNULL,
        - 552        "JOIN": TokenType.JOIN,
        - 553        "LATERAL": TokenType.LATERAL,
        - 554        "LAZY": TokenType.LAZY,
        - 555        "LEADING": TokenType.LEADING,
        - 556        "LEFT": TokenType.LEFT,
        - 557        "LIKE": TokenType.LIKE,
        - 558        "LIMIT": TokenType.LIMIT,
        - 559        "LOAD DATA": TokenType.LOAD_DATA,
        - 560        "LOCAL": TokenType.LOCAL,
        - 561        "MATERIALIZED": TokenType.MATERIALIZED,
        - 562        "MERGE": TokenType.MERGE,
        - 563        "NATURAL": TokenType.NATURAL,
        - 564        "NEXT": TokenType.NEXT,
        - 565        "NO ACTION": TokenType.NO_ACTION,
        - 566        "NOT": TokenType.NOT,
        - 567        "NOTNULL": TokenType.NOTNULL,
        - 568        "NULL": TokenType.NULL,
        - 569        "NULLS FIRST": TokenType.NULLS_FIRST,
        - 570        "NULLS LAST": TokenType.NULLS_LAST,
        - 571        "OBJECT": TokenType.OBJECT,
        - 572        "OFFSET": TokenType.OFFSET,
        - 573        "ON": TokenType.ON,
        - 574        "ONLY": TokenType.ONLY,
        - 575        "OPTIONS": TokenType.OPTIONS,
        - 576        "OR": TokenType.OR,
        - 577        "ORDER BY": TokenType.ORDER_BY,
        - 578        "ORDINALITY": TokenType.ORDINALITY,
        - 579        "OUTER": TokenType.OUTER,
        - 580        "OUT OF": TokenType.OUT_OF,
        - 581        "OVER": TokenType.OVER,
        - 582        "OVERLAPS": TokenType.OVERLAPS,
        - 583        "OVERWRITE": TokenType.OVERWRITE,
        - 584        "PARTITION": TokenType.PARTITION,
        - 585        "PARTITION BY": TokenType.PARTITION_BY,
        - 586        "PARTITIONED BY": TokenType.PARTITION_BY,
        - 587        "PARTITIONED_BY": TokenType.PARTITION_BY,
        - 588        "PERCENT": TokenType.PERCENT,
        - 589        "PIVOT": TokenType.PIVOT,
        - 590        "PRECEDING": TokenType.PRECEDING,
        - 591        "PRIMARY KEY": TokenType.PRIMARY_KEY,
        - 592        "PROCEDURE": TokenType.PROCEDURE,
        - 593        "QUALIFY": TokenType.QUALIFY,
        - 594        "RANGE": TokenType.RANGE,
        - 595        "RECURSIVE": TokenType.RECURSIVE,
        - 596        "REGEXP": TokenType.RLIKE,
        - 597        "REPLACE": TokenType.REPLACE,
        - 598        "RESPECT NULLS": TokenType.RESPECT_NULLS,
        - 599        "REFERENCES": TokenType.REFERENCES,
        - 600        "RIGHT": TokenType.RIGHT,
        - 601        "RLIKE": TokenType.RLIKE,
        - 602        "ROLLBACK": TokenType.ROLLBACK,
        - 603        "ROLLUP": TokenType.ROLLUP,
        - 604        "ROW": TokenType.ROW,
        - 605        "ROWS": TokenType.ROWS,
        - 606        "SCHEMA": TokenType.SCHEMA,
        - 607        "SEED": TokenType.SEED,
        - 608        "SELECT": TokenType.SELECT,
        - 609        "SEMI": TokenType.SEMI,
        - 610        "SET": TokenType.SET,
        - 611        "SHOW": TokenType.SHOW,
        - 612        "SIMILAR TO": TokenType.SIMILAR_TO,
        - 613        "SOME": TokenType.SOME,
        - 614        "SORTKEY": TokenType.SORTKEY,
        - 615        "SORT BY": TokenType.SORT_BY,
        - 616        "TABLE": TokenType.TABLE,
        - 617        "TABLESAMPLE": TokenType.TABLE_SAMPLE,
        - 618        "TEMP": TokenType.TEMPORARY,
        - 619        "TEMPORARY": TokenType.TEMPORARY,
        - 620        "THEN": TokenType.THEN,
        - 621        "TRUE": TokenType.TRUE,
        - 622        "TRAILING": TokenType.TRAILING,
        - 623        "UNBOUNDED": TokenType.UNBOUNDED,
        - 624        "UNION": TokenType.UNION,
        - 625        "UNLOGGED": TokenType.UNLOGGED,
        - 626        "UNNEST": TokenType.UNNEST,
        - 627        "UNPIVOT": TokenType.UNPIVOT,
        - 628        "UPDATE": TokenType.UPDATE,
        - 629        "USE": TokenType.USE,
        - 630        "USING": TokenType.USING,
        - 631        "VALUES": TokenType.VALUES,
        - 632        "VIEW": TokenType.VIEW,
        - 633        "VOLATILE": TokenType.VOLATILE,
        - 634        "WHEN": TokenType.WHEN,
        - 635        "WHERE": TokenType.WHERE,
        - 636        "WINDOW": TokenType.WINDOW,
        - 637        "WITH": TokenType.WITH,
        - 638        "WITH TIME ZONE": TokenType.WITH_TIME_ZONE,
        - 639        "WITH LOCAL TIME ZONE": TokenType.WITH_LOCAL_TIME_ZONE,
        - 640        "WITHIN GROUP": TokenType.WITHIN_GROUP,
        - 641        "WITHOUT TIME ZONE": TokenType.WITHOUT_TIME_ZONE,
        - 642        "APPLY": TokenType.APPLY,
        - 643        "ARRAY": TokenType.ARRAY,
        - 644        "BIT": TokenType.BIT,
        - 645        "BOOL": TokenType.BOOLEAN,
        - 646        "BOOLEAN": TokenType.BOOLEAN,
        - 647        "BYTE": TokenType.TINYINT,
        - 648        "TINYINT": TokenType.TINYINT,
        - 649        "SHORT": TokenType.SMALLINT,
        - 650        "SMALLINT": TokenType.SMALLINT,
        - 651        "INT2": TokenType.SMALLINT,
        - 652        "INTEGER": TokenType.INT,
        - 653        "INT": TokenType.INT,
        - 654        "INT4": TokenType.INT,
        - 655        "LONG": TokenType.BIGINT,
        - 656        "BIGINT": TokenType.BIGINT,
        - 657        "INT8": TokenType.BIGINT,
        - 658        "DECIMAL": TokenType.DECIMAL,
        - 659        "MAP": TokenType.MAP,
        - 660        "NULLABLE": TokenType.NULLABLE,
        - 661        "NUMBER": TokenType.DECIMAL,
        - 662        "NUMERIC": TokenType.DECIMAL,
        - 663        "FIXED": TokenType.DECIMAL,
        - 664        "REAL": TokenType.FLOAT,
        - 665        "FLOAT": TokenType.FLOAT,
        - 666        "FLOAT4": TokenType.FLOAT,
        - 667        "FLOAT8": TokenType.DOUBLE,
        - 668        "DOUBLE": TokenType.DOUBLE,
        - 669        "DOUBLE PRECISION": TokenType.DOUBLE,
        - 670        "JSON": TokenType.JSON,
        - 671        "CHAR": TokenType.CHAR,
        - 672        "CHARACTER": TokenType.CHAR,
        - 673        "NCHAR": TokenType.NCHAR,
        - 674        "VARCHAR": TokenType.VARCHAR,
        - 675        "VARCHAR2": TokenType.VARCHAR,
        - 676        "NVARCHAR": TokenType.NVARCHAR,
        - 677        "NVARCHAR2": TokenType.NVARCHAR,
        - 678        "STR": TokenType.TEXT,
        - 679        "STRING": TokenType.TEXT,
        - 680        "TEXT": TokenType.TEXT,
        - 681        "CLOB": TokenType.TEXT,
        - 682        "LONGVARCHAR": TokenType.TEXT,
        - 683        "BINARY": TokenType.BINARY,
        - 684        "BLOB": TokenType.VARBINARY,
        - 685        "BYTEA": TokenType.VARBINARY,
        - 686        "VARBINARY": TokenType.VARBINARY,
        - 687        "TIME": TokenType.TIME,
        - 688        "TIMESTAMP": TokenType.TIMESTAMP,
        - 689        "TIMESTAMPTZ": TokenType.TIMESTAMPTZ,
        - 690        "TIMESTAMPLTZ": TokenType.TIMESTAMPLTZ,
        - 691        "DATE": TokenType.DATE,
        - 692        "DATETIME": TokenType.DATETIME,
        - 693        "UNIQUE": TokenType.UNIQUE,
        - 694        "STRUCT": TokenType.STRUCT,
        - 695        "VARIANT": TokenType.VARIANT,
        - 696        "ALTER": TokenType.ALTER,
        - 697        "ALTER AGGREGATE": TokenType.COMMAND,
        - 698        "ALTER DEFAULT": TokenType.COMMAND,
        - 699        "ALTER DOMAIN": TokenType.COMMAND,
        - 700        "ALTER ROLE": TokenType.COMMAND,
        - 701        "ALTER RULE": TokenType.COMMAND,
        - 702        "ALTER SEQUENCE": TokenType.COMMAND,
        - 703        "ALTER TYPE": TokenType.COMMAND,
        - 704        "ALTER USER": TokenType.COMMAND,
        - 705        "ALTER VIEW": TokenType.COMMAND,
        - 706        "ANALYZE": TokenType.COMMAND,
        - 707        "CALL": TokenType.COMMAND,
        - 708        "COMMENT": TokenType.COMMENT,
        - 709        "COPY": TokenType.COMMAND,
        - 710        "EXPLAIN": TokenType.COMMAND,
        - 711        "GRANT": TokenType.COMMAND,
        - 712        "OPTIMIZE": TokenType.COMMAND,
        - 713        "PREPARE": TokenType.COMMAND,
        - 714        "TRUNCATE": TokenType.COMMAND,
        - 715        "VACUUM": TokenType.COMMAND,
        - 716    }
        - 717
        - 718    WHITE_SPACE: t.Dict[str, TokenType] = {
        - 719        " ": TokenType.SPACE,
        - 720        "\t": TokenType.SPACE,
        - 721        "\n": TokenType.BREAK,
        - 722        "\r": TokenType.BREAK,
        - 723        "\r\n": TokenType.BREAK,
        - 724    }
        - 725
        - 726    COMMANDS = {
        - 727        TokenType.COMMAND,
        - 728        TokenType.EXECUTE,
        - 729        TokenType.FETCH,
        - 730        TokenType.SHOW,
        - 731    }
        - 732
        - 733    COMMAND_PREFIX_TOKENS = {TokenType.SEMICOLON, TokenType.BEGIN}
        - 734
        - 735    # handle numeric literals like in hive (3L = BIGINT)
        - 736    NUMERIC_LITERALS: t.Dict[str, str] = {}
        - 737    ENCODE: t.Optional[str] = None
        + 452    _IDENTIFIER_ESCAPES: 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    COMMENTS = ["--", ("/*", "*/"), ("{#", "#}")]
        - 740    KEYWORD_TRIE = None  # autofilled
        - 741
        - 742    IDENTIFIER_CAN_START_WITH_DIGIT = False
        - 743
        - 744    __slots__ = (
        - 745        "sql",
        - 746        "size",
        - 747        "tokens",
        - 748        "_start",
        - 749        "_current",
        - 750        "_line",
        - 751        "_col",
        - 752        "_comments",
        - 753        "_char",
        - 754        "_end",
        - 755        "_peek",
        - 756        "_prev_token_line",
        - 757        "_prev_token_comments",
        - 758        "_prev_token_type",
        - 759    )
        - 760
        - 761    def __init__(self) -> None:
        - 762        self.reset()
        - 763
        - 764    def reset(self) -> None:
        - 765        self.sql = ""
        - 766        self.size = 0
        - 767        self.tokens: t.List[Token] = []
        - 768        self._start = 0
        - 769        self._current = 0
        - 770        self._line = 1
        - 771        self._col = 1
        - 772        self._comments: t.List[str] = []
        - 773
        - 774        self._char = None
        - 775        self._end = None
        - 776        self._peek = None
        - 777        self._prev_token_line = -1
        - 778        self._prev_token_comments: t.List[str] = []
        - 779        self._prev_token_type = None
        - 780
        - 781    def tokenize(self, sql: str) -> t.List[Token]:
        - 782        """Returns a list of tokens corresponding to the SQL string `sql`."""
        - 783        self.reset()
        - 784        self.sql = sql
        - 785        self.size = len(sql)
        - 786        self._scan()
        - 787        return self.tokens
        - 788
        - 789    def _scan(self, until: t.Optional[t.Callable] = None) -> None:
        - 790        while self.size and not self._end:
        - 791            self._start = self._current
        - 792            self._advance()
        - 793
        - 794            if self._char is None:
        - 795                break
        - 796
        - 797            if self._char not in self.WHITE_SPACE:
        - 798                if self._char.isdigit():
        - 799                    self._scan_number()
        - 800                elif self._char in self._IDENTIFIERS:
        - 801                    self._scan_identifier(self._IDENTIFIERS[self._char])
        - 802                else:
        - 803                    self._scan_keywords()
        - 804
        - 805            if until and until():
        - 806                break
        - 807
        - 808    def _chars(self, size: int) -> str:
        - 809        if size == 1:
        - 810            return self._char  # type: ignore
        - 811        start = self._current - 1
        - 812        end = start + size
        - 813        if end <= self.size:
        - 814            return self.sql[start:end]
        - 815        return ""
        - 816
        - 817    def _line_break(self, char: t.Optional[str]) -> bool:
        - 818        return self.WHITE_SPACE.get(char) == TokenType.BREAK  # type: ignore
        - 819
        - 820    def _advance(self, i: int = 1) -> None:
        - 821        if self._line_break(self._char):
        - 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
        - 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])  # 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        self._add(self.KEYWORDS[word.upper()])
        - 925
        - 926    def _scan_comment(self, comment_start: str) -> bool:
        - 927        if comment_start not in self._COMMENTS:  # type: ignore
        - 928            return False
        - 929
        - 930        comment_start_line = self._line
        - 931        comment_start_size = len(comment_start)
        - 932        comment_end = self._COMMENTS[comment_start]  # type: ignore
        - 933
        - 934        if comment_end:
        - 935            comment_end_size = len(comment_end)
        - 936
        - 937            while not self._end and self._chars(comment_end_size) != comment_end:
        - 938                self._advance()
        - 939
        - 940            self._comments.append(self._text[comment_start_size : -comment_end_size + 1])  # type: ignore
        - 941            self._advance(comment_end_size - 1)
        - 942        else:
        - 943            while not self._end and not self._line_break(self._peek):
        - 944                self._advance()
        - 945            self._comments.append(self._text[comment_start_size:])  # type: ignore
        - 946
        - 947        # Leading comment is attached to the succeeding token, whilst trailing comment to the preceding.
        - 948        # Multiple consecutive comments are preserved by appending them to the current comments list.
        - 949        if comment_start_line == self._prev_token_line:
        - 950            self.tokens[-1].comments.extend(self._comments)
        - 951            self._comments = []
        - 952            self._prev_token_line = self._line
        - 953
        - 954        return True
        - 955
        - 956    def _scan_number(self) -> None:
        - 957        if self._char == "0":
        - 958            peek = self._peek.upper()  # type: ignore
        - 959            if peek == "B":
        - 960                return self._scan_bits()
        - 961            elif peek == "X":
        - 962                return self._scan_hex()
        - 963
        - 964        decimal = False
        - 965        scientific = 0
        - 966
        - 967        while True:
        - 968            if self._peek.isdigit():  # type: ignore
        - 969                self._advance()
        - 970            elif self._peek == "." and not decimal:
        - 971                decimal = True
        - 972                self._advance()
        - 973            elif self._peek in ("-", "+") and scientific == 1:
        - 974                scientific += 1
        - 975                self._advance()
        - 976            elif self._peek.upper() == "E" and not scientific:  # type: ignore
        - 977                scientific += 1
        - 978                self._advance()
        - 979            elif self._peek.isidentifier():  # type: ignore
        - 980                number_text = self._text
        - 981                literal = []
        - 982
        - 983                while self._peek.strip() and self._peek not in self.SINGLE_TOKENS:  # type: ignore
        - 984                    literal.append(self._peek.upper())  # type: ignore
        - 985                    self._advance()
        - 986
        - 987                literal = "".join(literal)  # type: ignore
        - 988                token_type = self.KEYWORDS.get(self.NUMERIC_LITERALS.get(literal))  # type: ignore
        - 989
        - 990                if token_type:
        - 991                    self._add(TokenType.NUMBER, number_text)
        - 992                    self._add(TokenType.DCOLON, "::")
        - 993                    return self._add(token_type, literal)  # type: ignore
        - 994                elif self.IDENTIFIER_CAN_START_WITH_DIGIT:
        - 995                    return self._add(TokenType.VAR)
        - 996
        - 997                self._add(TokenType.NUMBER, number_text)
        - 998                return self._advance(-len(literal))
        - 999            else:
        -1000                return self._add(TokenType.NUMBER)
        -1001
        -1002    def _scan_bits(self) -> None:
        -1003        self._advance()
        -1004        value = self._extract_value()
        -1005        try:
        -1006            self._add(TokenType.BIT_STRING, f"{int(value, 2)}")
        -1007        except ValueError:
        -1008            self._add(TokenType.IDENTIFIER)
        -1009
        -1010    def _scan_hex(self) -> None:
        -1011        self._advance()
        -1012        value = self._extract_value()
        -1013        try:
        -1014            self._add(TokenType.HEX_STRING, f"{int(value, 16)}")
        -1015        except ValueError:
        -1016            self._add(TokenType.IDENTIFIER)
        -1017
        -1018    def _extract_value(self) -> str:
        -1019        while True:
        -1020            char = self._peek.strip()  # type: ignore
        -1021            if char and char not in self.SINGLE_TOKENS:
        -1022                self._advance()
        -1023            else:
        -1024                break
        -1025
        -1026        return self._text
        -1027
        -1028    def _scan_string(self, quote: str) -> bool:
        -1029        quote_end = self._QUOTES.get(quote)  # type: ignore
        -1030        if quote_end is None:
        -1031            return False
        -1032
        -1033        self._advance(len(quote))
        -1034        text = self._extract_string(quote_end)
        -1035        text = text.encode(self.ENCODE).decode(self.ENCODE) if self.ENCODE else text  # type: ignore
        -1036        self._add(TokenType.NATIONAL if quote[0].upper() == "N" else TokenType.STRING, text)
        -1037        return True
        -1038
        -1039    # X'1234, b'0110', E'\\\\\' etc.
        -1040    def _scan_formatted_string(self, string_start: str) -> bool:
        -1041        if string_start in self._HEX_STRINGS:  # type: ignore
        -1042            delimiters = self._HEX_STRINGS  # type: ignore
        -1043            token_type = TokenType.HEX_STRING
        -1044            base = 16
        -1045        elif string_start in self._BIT_STRINGS:  # type: ignore
        -1046            delimiters = self._BIT_STRINGS  # type: ignore
        -1047            token_type = TokenType.BIT_STRING
        -1048            base = 2
        -1049        elif string_start in self._BYTE_STRINGS:  # type: ignore
        -1050            delimiters = self._BYTE_STRINGS  # type: ignore
        -1051            token_type = TokenType.BYTE_STRING
        -1052            base = None
        -1053        else:
        -1054            return False
        -1055
        -1056        self._advance(len(string_start))
        -1057        string_end = delimiters.get(string_start)
        -1058        text = self._extract_string(string_end)
        -1059
        -1060        if base is None:
        -1061            self._add(token_type, text)
        -1062        else:
        -1063            try:
        -1064                self._add(token_type, f"{int(text, base)}")
        -1065            except:
        -1066                raise RuntimeError(
        -1067                    f"Numeric string contains invalid characters from {self._line}:{self._start}"
        -1068                )
        -1069
        -1070        return True
        -1071
        -1072    def _scan_identifier(self, identifier_end: str) -> None:
        -1073        text = ""
        -1074        identifier_end_is_escape = identifier_end in self._IDENTIFIER_ESCAPES
        -1075
        -1076        while True:
        -1077            if self._end:
        -1078                raise RuntimeError(f"Missing {identifier_end} from {self._line}:{self._start}")
        -1079
        -1080            self._advance()
        -1081            if self._char == identifier_end:
        -1082                if identifier_end_is_escape and self._peek == identifier_end:
        -1083                    text += identifier_end  # type: ignore
        -1084                    self._advance()
        -1085                    continue
        -1086
        -1087                break
        -1088
        -1089            text += self._char  # type: ignore
        -1090
        -1091        self._add(TokenType.IDENTIFIER, text)
        -1092
        -1093    def _scan_var(self) -> None:
        -1094        while True:
        -1095            char = self._peek.strip()  # type: ignore
        -1096            if char and char not in self.SINGLE_TOKENS:
        -1097                self._advance()
        -1098            else:
        -1099                break
        -1100        self._add(
        -1101            TokenType.VAR
        -1102            if self._prev_token_type == TokenType.PARAMETER
        -1103            else self.KEYWORDS.get(self._text.upper(), TokenType.VAR)
        -1104        )
        -1105
        -1106    def _extract_string(self, delimiter: str) -> str:
        -1107        text = ""
        -1108        delim_size = len(delimiter)
        -1109
        -1110        while True:
        -1111            if self._char in self._STRING_ESCAPES and (
        -1112                self._peek == delimiter or self._peek in self._STRING_ESCAPES
        -1113            ):
        -1114                if self._peek == delimiter:
        -1115                    text += self._peek  # type: ignore
        -1116                else:
        -1117                    text += self._char + self._peek  # type: ignore
        -1118
        -1119                if self._current + 1 < self.size:
        -1120                    self._advance(2)
        -1121                else:
        -1122                    raise RuntimeError(f"Missing {delimiter} from {self._line}:{self._current}")
        -1123            else:
        -1124                if self._chars(delim_size) == delimiter:
        -1125                    if delim_size > 1:
        -1126                        self._advance(delim_size - 1)
        -1127                    break
        -1128
        -1129                if self._end:
        -1130                    raise RuntimeError(f"Missing {delimiter} from {self._line}:{self._start}")
        -1131                text += self._char  # type: ignore
        -1132                self._advance()
        -1133
        -1134        return text
        + 739    # handle numeric literals like in hive (3L = BIGINT)
        + 740    NUMERIC_LITERALS: t.Dict[str, str] = {}
        + 741    ENCODE: t.Optional[str] = None
        + 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] = []
        + 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()
        + 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
        + 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])  # 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        self._add(self.KEYWORDS[word.upper()])
        + 926
        + 927    def _scan_comment(self, comment_start: str) -> bool:
        + 928        if comment_start not in self._COMMENTS:  # type: ignore
        + 929            return False
        + 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:
        + 951            self.tokens[-1].comments.extend(self._comments)
        + 952            self._comments = []
        + 953            self._prev_token_line = self._line
        + 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
        + 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}")
        +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
         
        @@ -6932,22 +6950,22 @@
        -
        764    def reset(self) -> None:
        -765        self.sql = ""
        -766        self.size = 0
        -767        self.tokens: t.List[Token] = []
        -768        self._start = 0
        -769        self._current = 0
        -770        self._line = 1
        -771        self._col = 1
        -772        self._comments: t.List[str] = []
        -773
        -774        self._char = None
        -775        self._end = None
        -776        self._peek = None
        -777        self._prev_token_line = -1
        -778        self._prev_token_comments: t.List[str] = []
        -779        self._prev_token_type = None
        +            
        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
         
        @@ -6965,13 +6983,13 @@
        -
        781    def tokenize(self, sql: str) -> t.List[Token]:
        -782        """Returns a list of tokens corresponding to the SQL string `sql`."""
        -783        self.reset()
        -784        self.sql = sql
        -785        self.size = len(sql)
        -786        self._scan()
        -787        return self.tokens
        +            
        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
         
        diff --git a/docs/sqlglot/transforms.html b/docs/sqlglot/transforms.html index e29c207..0cf0f63 100644 --- a/docs/sqlglot/transforms.html +++ b/docs/sqlglot/transforms.html @@ -3,7 +3,7 @@ - + sqlglot.transforms API documentation @@ -28,8 +28,8 @@ -

        API Documentation

        -
          +

          API Documentation

          +
          • unalias_group
          • diff --git a/docs/sqlglot/trie.html b/docs/sqlglot/trie.html index 6552853..94d934d 100644 --- a/docs/sqlglot/trie.html +++ b/docs/sqlglot/trie.html @@ -3,7 +3,7 @@ - + sqlglot.trie API documentation @@ -28,8 +28,8 @@ -

            API Documentation

            -
              +

              API Documentation

              +
              • new_trie
              • diff --git a/sqlglot.svg b/sqlglot.svg new file mode 100644 index 0000000..e57fe78 --- /dev/null +++ b/sqlglot.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sqlglot/__init__.py b/sqlglot/__init__.py index 10046d1..b53b261 100644 --- a/sqlglot/__init__.py +++ b/sqlglot/__init__.py @@ -47,7 +47,7 @@ if t.TYPE_CHECKING: T = t.TypeVar("T", bound=Expression) -__version__ = "11.4.1" +__version__ = "11.4.5" pretty = False """Whether to format generated SQL by default.""" diff --git a/sqlglot/dialects/bigquery.py b/sqlglot/dialects/bigquery.py index 6a43846..a3f9e6d 100644 --- a/sqlglot/dialects/bigquery.py +++ b/sqlglot/dialects/bigquery.py @@ -10,6 +10,7 @@ from sqlglot.dialects.dialect import ( Dialect, datestrtodate_sql, inline_array_sql, + max_or_greatest, min_or_least, no_ilike_sql, rename_func, @@ -212,6 +213,9 @@ class BigQuery(Dialect): ), } + LOG_BASE_FIRST = False + LOG_DEFAULTS_TO_LN = True + class Generator(generator.Generator): TRANSFORMS = { **generator.Generator.TRANSFORMS, # type: ignore @@ -227,6 +231,7 @@ class BigQuery(Dialect): exp.GroupConcat: rename_func("STRING_AGG"), exp.ILike: no_ilike_sql, exp.IntDiv: rename_func("DIV"), + exp.Max: max_or_greatest, exp.Min: min_or_least, exp.Select: transforms.preprocess( [_unqualify_unnest], transforms.delegate("select_sql") @@ -253,17 +258,19 @@ class BigQuery(Dialect): TYPE_MAPPING = { **generator.Generator.TYPE_MAPPING, # type: ignore - exp.DataType.Type.TINYINT: "INT64", - exp.DataType.Type.SMALLINT: "INT64", - exp.DataType.Type.INT: "INT64", exp.DataType.Type.BIGINT: "INT64", + exp.DataType.Type.BOOLEAN: "BOOL", + exp.DataType.Type.CHAR: "STRING", exp.DataType.Type.DECIMAL: "NUMERIC", - exp.DataType.Type.FLOAT: "FLOAT64", exp.DataType.Type.DOUBLE: "FLOAT64", - exp.DataType.Type.BOOLEAN: "BOOL", + exp.DataType.Type.FLOAT: "FLOAT64", + exp.DataType.Type.INT: "INT64", + exp.DataType.Type.NCHAR: "STRING", + exp.DataType.Type.NVARCHAR: "STRING", + exp.DataType.Type.SMALLINT: "INT64", exp.DataType.Type.TEXT: "STRING", + exp.DataType.Type.TINYINT: "INT64", exp.DataType.Type.VARCHAR: "STRING", - exp.DataType.Type.NVARCHAR: "STRING", } PROPERTIES_LOCATION = { **generator.Generator.PROPERTIES_LOCATION, # type: ignore @@ -271,6 +278,7 @@ class BigQuery(Dialect): } EXPLICIT_UNION = True + LIMIT_FETCH = "LIMIT" def array_sql(self, expression: exp.Array) -> str: first_arg = seq_get(expression.expressions, 0) diff --git a/sqlglot/dialects/clickhouse.py b/sqlglot/dialects/clickhouse.py index b54a77d..89e2296 100644 --- a/sqlglot/dialects/clickhouse.py +++ b/sqlglot/dialects/clickhouse.py @@ -68,6 +68,8 @@ class ClickHouse(Dialect): TABLE_ALIAS_TOKENS = {*parser.Parser.TABLE_ALIAS_TOKENS} - {TokenType.ANY} # type: ignore + LOG_DEFAULTS_TO_LN = True + def _parse_in( self, this: t.Optional[exp.Expression], is_global: bool = False ) -> exp.Expression: diff --git a/sqlglot/dialects/databricks.py b/sqlglot/dialects/databricks.py index 4268f1b..2f93ee7 100644 --- a/sqlglot/dialects/databricks.py +++ b/sqlglot/dialects/databricks.py @@ -16,6 +16,8 @@ class Databricks(Spark): "DATEDIFF": parse_date_delta(exp.DateDiff), } + LOG_DEFAULTS_TO_LN = True + class Generator(Spark.Generator): TRANSFORMS = { **Spark.Generator.TRANSFORMS, # type: ignore diff --git a/sqlglot/dialects/dialect.py b/sqlglot/dialects/dialect.py index b267521..839589d 100644 --- a/sqlglot/dialects/dialect.py +++ b/sqlglot/dialects/dialect.py @@ -430,6 +430,11 @@ def min_or_least(self: Generator, expression: exp.Min) -> str: return rename_func(name)(self, expression) +def max_or_greatest(self: Generator, expression: exp.Max) -> str: + name = "GREATEST" if expression.expressions else "MAX" + return rename_func(name)(self, expression) + + def count_if_to_sum(self: Generator, expression: exp.CountIf) -> str: cond = expression.this diff --git a/sqlglot/dialects/drill.py b/sqlglot/dialects/drill.py index dc0e519..a33aadc 100644 --- a/sqlglot/dialects/drill.py +++ b/sqlglot/dialects/drill.py @@ -1,6 +1,5 @@ from __future__ import annotations -import re import typing as t from sqlglot import exp, generator, parser, tokens @@ -102,6 +101,8 @@ class Drill(Dialect): "TO_CHAR": format_time_lambda(exp.TimeToStr, "drill"), } + LOG_DEFAULTS_TO_LN = True + class Generator(generator.Generator): TYPE_MAPPING = { **generator.Generator.TYPE_MAPPING, # type: ignore @@ -154,4 +155,4 @@ class Drill(Dialect): } def normalize_func(self, name: str) -> str: - return name if re.match(exp.SAFE_IDENTIFIER_RE, name) else f"`{name}`" + return name if exp.SAFE_IDENTIFIER_RE.match(name) else f"`{name}`" diff --git a/sqlglot/dialects/duckdb.py b/sqlglot/dialects/duckdb.py index f1d2266..c034208 100644 --- a/sqlglot/dialects/duckdb.py +++ b/sqlglot/dialects/duckdb.py @@ -80,6 +80,7 @@ class DuckDB(Dialect): class Tokenizer(tokens.Tokenizer): KEYWORDS = { **tokens.Tokenizer.KEYWORDS, + "~": TokenType.RLIKE, ":=": TokenType.EQ, "ATTACH": TokenType.COMMAND, "BINARY": TokenType.VARBINARY, @@ -212,5 +213,7 @@ class DuckDB(Dialect): "except": "EXCLUDE", } + LIMIT_FETCH = "LIMIT" + def tablesample_sql(self, expression: exp.TableSample, seed_prefix: str = "SEED") -> str: return super().tablesample_sql(expression, seed_prefix="REPEATABLE") diff --git a/sqlglot/dialects/hive.py b/sqlglot/dialects/hive.py index 0110eee..68137ae 100644 --- a/sqlglot/dialects/hive.py +++ b/sqlglot/dialects/hive.py @@ -10,6 +10,7 @@ from sqlglot.dialects.dialect import ( format_time_lambda, if_sql, locate_to_strposition, + max_or_greatest, min_or_least, no_ilike_sql, no_recursive_cte_sql, @@ -34,6 +35,13 @@ DATE_DELTA_INTERVAL = { "DAY": ("DATE_ADD", 1), } +TIME_DIFF_FACTOR = { + "MILLISECOND": " * 1000", + "SECOND": "", + "MINUTE": " / 60", + "HOUR": " / 3600", +} + DIFF_MONTH_SWITCH = ("YEAR", "QUARTER", "MONTH") @@ -51,6 +59,14 @@ def _add_date_sql(self: generator.Generator, expression: exp.DateAdd) -> str: def _date_diff_sql(self: generator.Generator, expression: exp.DateDiff) -> str: unit = expression.text("unit").upper() + + factor = TIME_DIFF_FACTOR.get(unit) + if factor is not None: + left = self.sql(expression, "this") + right = self.sql(expression, "expression") + sec_diff = f"UNIX_TIMESTAMP({left}) - UNIX_TIMESTAMP({right})" + return f"({sec_diff}){factor}" if factor else sec_diff + sql_func = "MONTHS_BETWEEN" if unit in DIFF_MONTH_SWITCH else "DATEDIFF" _, multiplier = DATE_DELTA_INTERVAL.get(unit, ("", 1)) multiplier_sql = f" / {multiplier}" if multiplier > 1 else "" @@ -237,11 +253,6 @@ class Hive(Dialect): "FROM_UNIXTIME": format_time_lambda(exp.UnixToStr, "hive", True), "GET_JSON_OBJECT": exp.JSONExtractScalar.from_arg_list, "LOCATE": locate_to_strposition, - "LOG": ( - lambda args: exp.Log.from_arg_list(args) - if len(args) > 1 - else exp.Ln.from_arg_list(args) - ), "MAP": parse_var_map, "MONTH": lambda args: exp.Month(this=exp.TsOrDsToDate.from_arg_list(args)), "PERCENTILE": exp.Quantile.from_arg_list, @@ -261,6 +272,8 @@ class Hive(Dialect): ), } + LOG_DEFAULTS_TO_LN = True + class Generator(generator.Generator): TYPE_MAPPING = { **generator.Generator.TYPE_MAPPING, # type: ignore @@ -293,6 +306,7 @@ class Hive(Dialect): exp.JSONExtract: rename_func("GET_JSON_OBJECT"), exp.JSONExtractScalar: rename_func("GET_JSON_OBJECT"), exp.Map: var_map_sql, + exp.Max: max_or_greatest, exp.Min: min_or_least, exp.VarMap: var_map_sql, exp.Create: create_with_partitions_sql, @@ -338,6 +352,8 @@ class Hive(Dialect): exp.TableFormatProperty: exp.Properties.Location.POST_SCHEMA, } + LIMIT_FETCH = "LIMIT" + def arrayagg_sql(self, expression: exp.ArrayAgg) -> str: return self.func( "COLLECT_LIST", diff --git a/sqlglot/dialects/mysql.py b/sqlglot/dialects/mysql.py index 1e2cfa3..5dfa811 100644 --- a/sqlglot/dialects/mysql.py +++ b/sqlglot/dialects/mysql.py @@ -3,7 +3,9 @@ from __future__ import annotations from sqlglot import exp, generator, parser, tokens from sqlglot.dialects.dialect import ( Dialect, + arrow_json_extract_scalar_sql, locate_to_strposition, + max_or_greatest, min_or_least, no_ilike_sql, no_paren_current_date_sql, @@ -288,6 +290,8 @@ class MySQL(Dialect): "SWAPS", } + LOG_DEFAULTS_TO_LN = True + def _parse_show_mysql(self, this, target=False, full=None, global_=None): if target: if isinstance(target, str): @@ -303,7 +307,13 @@ class MySQL(Dialect): db = None else: position = None - db = self._parse_id_var() if self._match_text_seq("FROM") else None + db = None + + if self._match(TokenType.FROM): + db = self._parse_id_var() + elif self._match(TokenType.DOT): + db = target_id + target_id = self._parse_id_var() channel = self._parse_id_var() if self._match_text_seq("FOR", "CHANNEL") else None @@ -384,6 +394,8 @@ class MySQL(Dialect): exp.CurrentDate: no_paren_current_date_sql, exp.CurrentTimestamp: lambda *_: "CURRENT_TIMESTAMP", exp.ILike: no_ilike_sql, + exp.JSONExtractScalar: arrow_json_extract_scalar_sql, + exp.Max: max_or_greatest, exp.Min: min_or_least, exp.TableSample: no_tablesample_sql, exp.TryCast: no_trycast_sql, @@ -415,6 +427,8 @@ class MySQL(Dialect): exp.TransientProperty: exp.Properties.Location.UNSUPPORTED, } + LIMIT_FETCH = "LIMIT" + def show_sql(self, expression): this = f" {expression.name}" full = " FULL" if expression.args.get("full") else "" diff --git a/sqlglot/dialects/oracle.py b/sqlglot/dialects/oracle.py index 7028a04..fad6c4a 100644 --- a/sqlglot/dialects/oracle.py +++ b/sqlglot/dialects/oracle.py @@ -4,7 +4,7 @@ import typing as t from sqlglot import exp, generator, parser, tokens, transforms from sqlglot.dialects.dialect import Dialect, no_ilike_sql, rename_func, trim_sql -from sqlglot.helper import csv, seq_get +from sqlglot.helper import seq_get from sqlglot.tokens import TokenType PASSING_TABLE_ALIAS_TOKENS = parser.Parser.TABLE_ALIAS_TOKENS - { @@ -13,10 +13,6 @@ PASSING_TABLE_ALIAS_TOKENS = parser.Parser.TABLE_ALIAS_TOKENS - { } -def _limit_sql(self, expression): - return self.fetch_sql(exp.Fetch(direction="FIRST", count=expression.expression)) - - def _parse_xml_table(self) -> exp.XMLTable: this = self._parse_string() @@ -89,6 +85,20 @@ class Oracle(Dialect): column.set("join_mark", self._match(TokenType.JOIN_MARKER)) return column + def _parse_hint(self) -> t.Optional[exp.Expression]: + if self._match(TokenType.HINT): + start = self._curr + while self._curr and not self._match_pair(TokenType.STAR, TokenType.SLASH): + self._advance() + + if not self._curr: + self.raise_error("Expected */ after HINT") + + end = self._tokens[self._index - 3] + return exp.Hint(expressions=[self._find_sql(start, end)]) + + return None + class Generator(generator.Generator): LOCKING_READS_SUPPORTED = True @@ -110,41 +120,20 @@ class Oracle(Dialect): TRANSFORMS = { **generator.Generator.TRANSFORMS, # type: ignore **transforms.UNALIAS_GROUP, # type: ignore + exp.Hint: lambda self, e: f" /*+ {self.expressions(e).strip()} */", exp.ILike: no_ilike_sql, - exp.Limit: _limit_sql, - exp.Trim: trim_sql, exp.Matches: rename_func("DECODE"), exp.StrToTime: lambda self, e: f"TO_TIMESTAMP({self.sql(e, 'this')}, {self.format_time(e)})", exp.Subquery: lambda self, e: self.subquery_sql(e, sep=" "), + exp.Substring: rename_func("SUBSTR"), exp.Table: lambda self, e: self.table_sql(e, sep=" "), exp.TimeToStr: lambda self, e: f"TO_CHAR({self.sql(e, 'this')}, {self.format_time(e)})", - exp.UnixToTime: lambda self, e: f"TO_DATE('1970-01-01','YYYY-MM-DD') + ({self.sql(e, 'this')} / 86400)", - exp.Substring: rename_func("SUBSTR"), exp.ToChar: lambda self, e: self.function_fallback_sql(e), + exp.Trim: trim_sql, + exp.UnixToTime: lambda self, e: f"TO_DATE('1970-01-01','YYYY-MM-DD') + ({self.sql(e, 'this')} / 86400)", } - def query_modifiers(self, expression: exp.Expression, *sqls: str) -> str: - return csv( - *sqls, - *[self.sql(sql) for sql in expression.args.get("joins") or []], - self.sql(expression, "match"), - *[self.sql(sql) for sql in expression.args.get("laterals") or []], - self.sql(expression, "where"), - self.sql(expression, "group"), - self.sql(expression, "having"), - self.sql(expression, "qualify"), - self.seg("WINDOW ") + self.expressions(expression, "windows", flat=True) - if expression.args.get("windows") - else "", - self.sql(expression, "distribute"), - self.sql(expression, "sort"), - self.sql(expression, "cluster"), - self.sql(expression, "order"), - self.sql(expression, "offset"), # offset before limit in oracle - self.sql(expression, "limit"), - self.sql(expression, "lock"), - sep="", - ) + LIMIT_FETCH = "FETCH" def offset_sql(self, expression: exp.Offset) -> str: return f"{super().offset_sql(expression)} ROWS" diff --git a/sqlglot/dialects/postgres.py b/sqlglot/dialects/postgres.py index 5f556a5..31b7e45 100644 --- a/sqlglot/dialects/postgres.py +++ b/sqlglot/dialects/postgres.py @@ -6,6 +6,7 @@ from sqlglot.dialects.dialect import ( arrow_json_extract_scalar_sql, arrow_json_extract_sql, format_time_lambda, + max_or_greatest, min_or_least, no_paren_current_date_sql, no_tablesample_sql, @@ -315,6 +316,7 @@ class Postgres(Dialect): exp.DateDiff: _date_diff_sql, exp.LogicalOr: rename_func("BOOL_OR"), exp.LogicalAnd: rename_func("BOOL_AND"), + exp.Max: max_or_greatest, exp.Min: min_or_least, exp.ArrayOverlaps: lambda self, e: self.binary(e, "&&"), exp.ArrayContains: lambda self, e: self.binary(e, "@>"), diff --git a/sqlglot/dialects/snowflake.py b/sqlglot/dialects/snowflake.py index 799e9a6..c50961c 100644 --- a/sqlglot/dialects/snowflake.py +++ b/sqlglot/dialects/snowflake.py @@ -9,6 +9,7 @@ from sqlglot.dialects.dialect import ( datestrtodate_sql, format_time_lambda, inline_array_sql, + max_or_greatest, min_or_least, rename_func, timestamptrunc_sql, @@ -275,6 +276,9 @@ class Snowflake(Dialect): exp.ArrayConcat: rename_func("ARRAY_CAT"), exp.ArrayJoin: rename_func("ARRAY_TO_STRING"), exp.DateAdd: lambda self, e: self.func("DATEADD", e.text("unit"), e.expression, e.this), + exp.DateDiff: lambda self, e: self.func( + "DATEDIFF", e.text("unit"), e.expression, e.this + ), exp.DateStrToDate: datestrtodate_sql, exp.DataType: _datatype_sql, exp.If: rename_func("IFF"), @@ -296,6 +300,7 @@ class Snowflake(Dialect): exp.TsOrDsToDate: ts_or_ds_to_date_sql("snowflake"), exp.UnixToTime: _unix_to_time_sql, exp.DayOfWeek: rename_func("DAYOFWEEK"), + exp.Max: max_or_greatest, exp.Min: min_or_least, } @@ -314,12 +319,6 @@ class Snowflake(Dialect): exp.SetProperty: exp.Properties.Location.UNSUPPORTED, } - def ilikeany_sql(self, expression: exp.ILikeAny) -> str: - return self.binary(expression, "ILIKE ANY") - - def likeany_sql(self, expression: exp.LikeAny) -> str: - return self.binary(expression, "LIKE ANY") - def except_op(self, expression): if not expression.args.get("distinct", False): self.unsupported("EXCEPT with All is not supported in Snowflake") diff --git a/sqlglot/dialects/sqlite.py b/sqlglot/dialects/sqlite.py index ab78b6e..4091dbb 100644 --- a/sqlglot/dialects/sqlite.py +++ b/sqlglot/dialects/sqlite.py @@ -82,6 +82,8 @@ class SQLite(Dialect): exp.TryCast: no_trycast_sql, } + LIMIT_FETCH = "LIMIT" + def cast_sql(self, expression: exp.Cast) -> str: if expression.to.this == exp.DataType.Type.DATE: return self.func("DATE", expression.this) @@ -115,9 +117,6 @@ class SQLite(Dialect): return f"CAST({sql} AS INTEGER)" - def fetch_sql(self, expression: exp.Fetch) -> str: - return self.limit_sql(exp.Limit(expression=expression.args.get("count"))) - # https://www.sqlite.org/lang_aggfunc.html#group_concat def groupconcat_sql(self, expression): this = expression.this diff --git a/sqlglot/dialects/teradata.py b/sqlglot/dialects/teradata.py index 8bd0a0c..3d43793 100644 --- a/sqlglot/dialects/teradata.py +++ b/sqlglot/dialects/teradata.py @@ -1,7 +1,7 @@ from __future__ import annotations from sqlglot import exp, generator, parser, tokens -from sqlglot.dialects.dialect import Dialect, min_or_least +from sqlglot.dialects.dialect import Dialect, max_or_greatest, min_or_least from sqlglot.tokens import TokenType @@ -128,6 +128,7 @@ class Teradata(Dialect): TRANSFORMS = { **generator.Generator.TRANSFORMS, + exp.Max: max_or_greatest, exp.Min: min_or_least, exp.ToChar: lambda self, e: self.function_fallback_sql(e), } diff --git a/sqlglot/dialects/tsql.py b/sqlglot/dialects/tsql.py index 7b52047..8e9b6c3 100644 --- a/sqlglot/dialects/tsql.py +++ b/sqlglot/dialects/tsql.py @@ -6,6 +6,7 @@ import typing as t from sqlglot import exp, generator, parser, tokens from sqlglot.dialects.dialect import ( Dialect, + max_or_greatest, min_or_least, parse_date_delta, rename_func, @@ -269,7 +270,6 @@ class TSQL(Dialect): # TSQL allows @, # to appear as a variable/identifier prefix SINGLE_TOKENS = tokens.Tokenizer.SINGLE_TOKENS.copy() - SINGLE_TOKENS.pop("@") SINGLE_TOKENS.pop("#") class Parser(parser.Parser): @@ -313,6 +313,9 @@ class TSQL(Dialect): TokenType.END: lambda self: self._parse_command(), } + LOG_BASE_FIRST = False + LOG_DEFAULTS_TO_LN = True + def _parse_system_time(self) -> t.Optional[exp.Expression]: if not self._match_text_seq("FOR", "SYSTEM_TIME"): return None @@ -435,11 +438,17 @@ class TSQL(Dialect): exp.NumberToStr: _format_sql, exp.TimeToStr: _format_sql, exp.GroupConcat: _string_agg_sql, + exp.Max: max_or_greatest, exp.Min: min_or_least, } TRANSFORMS.pop(exp.ReturnsProperty) + LIMIT_FETCH = "FETCH" + + def offset_sql(self, expression: exp.Offset) -> str: + return f"{super().offset_sql(expression)} ROWS" + def systemtime_sql(self, expression: exp.SystemTime) -> str: kind = expression.args["kind"] if kind == "ALL": diff --git a/sqlglot/diff.py b/sqlglot/diff.py index dddb9ad..86665e0 100644 --- a/sqlglot/diff.py +++ b/sqlglot/diff.py @@ -12,7 +12,7 @@ from dataclasses import dataclass from heapq import heappop, heappush from sqlglot import Dialect, expressions as exp -from sqlglot.helper import ensure_collection +from sqlglot.helper import ensure_list @dataclass(frozen=True) @@ -151,8 +151,8 @@ class ChangeDistiller: self._source = source self._target = target - self._source_index = {id(n[0]): n[0] for n in source.bfs()} - self._target_index = {id(n[0]): n[0] for n in target.bfs()} + self._source_index = {id(n): n for n, *_ in self._source.bfs()} + self._target_index = {id(n): n for n, *_ in self._target.bfs()} self._unmatched_source_nodes = set(self._source_index) - set(pre_matched_nodes) self._unmatched_target_nodes = set(self._target_index) - set(pre_matched_nodes.values()) self._bigram_histo_cache: t.Dict[int, t.DefaultDict[str, int]] = {} @@ -199,10 +199,10 @@ class ChangeDistiller: matching_set = leaves_matching_set.copy() ordered_unmatched_source_nodes = { - id(n[0]): None for n in self._source.bfs() if id(n[0]) in self._unmatched_source_nodes + id(n): None for n, *_ in self._source.bfs() if id(n) in self._unmatched_source_nodes } ordered_unmatched_target_nodes = { - id(n[0]): None for n in self._target.bfs() if id(n[0]) in self._unmatched_target_nodes + id(n): None for n, *_ in self._target.bfs() if id(n) in self._unmatched_target_nodes } for source_node_id in ordered_unmatched_source_nodes: @@ -304,18 +304,18 @@ class ChangeDistiller: def _get_leaves(expression: exp.Expression) -> t.Iterator[exp.Expression]: has_child_exprs = False - for a in expression.args.values(): - for node in ensure_collection(a): - if isinstance(node, exp.Expression): - has_child_exprs = True - yield from _get_leaves(node) + for _, node in expression.iter_expressions(): + has_child_exprs = True + yield from _get_leaves(node) if not has_child_exprs: yield expression def _is_same_type(source: exp.Expression, target: exp.Expression) -> bool: - if type(source) is type(target): + if type(source) is type(target) and ( + not isinstance(source, exp.Identifier) or type(source.parent) is type(target.parent) + ): if isinstance(source, exp.Join): return source.args.get("side") == target.args.get("side") @@ -331,7 +331,7 @@ def _expression_only_args(expression: exp.Expression) -> t.List[exp.Expression]: args: t.List[t.Union[exp.Expression, t.List]] = [] if expression: for a in expression.args.values(): - args.extend(ensure_collection(a)) + args.extend(ensure_list(a)) return [a for a in args if isinstance(a, exp.Expression)] diff --git a/sqlglot/executor/__init__.py b/sqlglot/executor/__init__.py index a676e7d..a67c155 100644 --- a/sqlglot/executor/__init__.py +++ b/sqlglot/executor/__init__.py @@ -57,7 +57,7 @@ def execute( for name, table in tables_.mapping.items() } - schema = ensure_schema(schema) + schema = ensure_schema(schema, dialect=read) if tables_.supported_table_args and tables_.supported_table_args != schema.supported_table_args: raise ExecuteError("Tables must support the same table args as schema") diff --git a/sqlglot/executor/python.py b/sqlglot/executor/python.py index d417328..b71cc6a 100644 --- a/sqlglot/executor/python.py +++ b/sqlglot/executor/python.py @@ -94,13 +94,10 @@ class PythonExecutor: if source and isinstance(source, exp.Expression): source = source.name or source.alias - condition = self.generate(step.condition) - projections = self.generate_tuple(step.projections) - if source is None: context, table_iter = self.static() elif source in context: - if not projections and not condition: + if not step.projections and not step.condition: return self.context({step.name: context.tables[source]}) table_iter = context.table_iter(source) elif isinstance(step.source, exp.Table) and isinstance(step.source.this, exp.ReadCSV): @@ -109,10 +106,12 @@ class PythonExecutor: else: context, table_iter = self.scan_table(step) - if projections: - sink = self.table(step.projections) - else: - sink = self.table(context.columns) + return self.context({step.name: self._project_and_filter(context, step, table_iter)}) + + def _project_and_filter(self, context, step, table_iter): + sink = self.table(step.projections if step.projections else context.columns) + condition = self.generate(step.condition) + projections = self.generate_tuple(step.projections) for reader in table_iter: if len(sink) >= step.limit: @@ -126,7 +125,7 @@ class PythonExecutor: else: sink.append(reader.row) - return self.context({step.name: sink}) + return sink def static(self): return self.context({}), [RowReader(())] @@ -185,27 +184,16 @@ class PythonExecutor: if condition: source_context.filter(condition) - condition = self.generate(step.condition) - projections = self.generate_tuple(step.projections) - - if not condition and not projections: + if not step.condition and not step.projections: return source_context - sink = self.table(step.projections if projections else source_context.columns) - - for reader, ctx in source_context: - if condition and not ctx.eval(condition): - continue - - if projections: - sink.append(ctx.eval_tuple(projections)) - else: - sink.append(reader.row) - - if len(sink) >= step.limit: - break + sink = self._project_and_filter( + source_context, + step, + (reader for reader, _ in iter(source_context)), + ) - if projections: + if step.projections: return self.context({step.name: sink}) else: return self.context( diff --git a/sqlglot/expressions.py b/sqlglot/expressions.py index b9da4cc..f4aae47 100644 --- a/sqlglot/expressions.py +++ b/sqlglot/expressions.py @@ -26,6 +26,7 @@ from sqlglot.helper import ( AutoName, camel_to_snake_case, ensure_collection, + ensure_list, seq_get, split_num_words, subclasses, @@ -84,7 +85,7 @@ class Expression(metaclass=_Expression): key = "expression" arg_types = {"this": True} - __slots__ = ("args", "parent", "arg_key", "comments", "_type", "_meta") + __slots__ = ("args", "parent", "arg_key", "comments", "_type", "_meta", "_hash") def __init__(self, **args: t.Any): self.args: t.Dict[str, t.Any] = args @@ -93,23 +94,31 @@ class Expression(metaclass=_Expression): self.comments: t.Optional[t.List[str]] = None self._type: t.Optional[DataType] = None self._meta: t.Optional[t.Dict[str, t.Any]] = None + self._hash: t.Optional[int] = None for arg_key, value in self.args.items(): self._set_parent(arg_key, value) def __eq__(self, other) -> bool: - return type(self) is type(other) and _norm_args(self) == _norm_args(other) + return type(self) is type(other) and hash(self) == hash(other) - def __hash__(self) -> int: - return hash( - ( - self.key, - tuple( - (k, tuple(v) if isinstance(v, list) else v) for k, v in _norm_args(self).items() - ), - ) + @property + def hashable_args(self) -> t.Any: + args = (self.args.get(k) for k in self.arg_types) + + return tuple( + (tuple(_norm_arg(a) for a in arg) if arg else None) + if type(arg) is list + else (_norm_arg(arg) if arg is not None and arg is not False else None) + for arg in args ) + def __hash__(self) -> int: + if self._hash is not None: + return self._hash + + return hash((self.__class__, self.hashable_args)) + @property def this(self): """ @@ -247,9 +256,6 @@ class Expression(metaclass=_Expression): """ new = deepcopy(self) new.parent = self.parent - for item, parent, _ in new.bfs(): - if isinstance(item, Expression) and parent: - item.parent = parent return new def append(self, arg_key, value): @@ -277,12 +283,12 @@ class Expression(metaclass=_Expression): self._set_parent(arg_key, value) def _set_parent(self, arg_key, value): - if isinstance(value, Expression): + if hasattr(value, "parent"): value.parent = self value.arg_key = arg_key - elif isinstance(value, list): + elif type(value) is list: for v in value: - if isinstance(v, Expression): + if hasattr(v, "parent"): v.parent = self v.arg_key = arg_key @@ -295,6 +301,17 @@ class Expression(metaclass=_Expression): return self.parent.depth + 1 return 0 + def iter_expressions(self) -> t.Iterator[t.Tuple[str, Expression]]: + """Yields the key and expression for all arguments, exploding list args.""" + for k, vs in self.args.items(): + if type(vs) is list: + for v in vs: + if hasattr(v, "parent"): + yield k, v + else: + if hasattr(vs, "parent"): + yield k, vs + def find(self, *expression_types: t.Type[E], bfs=True) -> E | None: """ Returns the first node in this tree which matches at least one of @@ -319,7 +336,7 @@ class Expression(metaclass=_Expression): Returns: The generator object. """ - for expression, _, _ in self.walk(bfs=bfs): + for expression, *_ in self.walk(bfs=bfs): if isinstance(expression, expression_types): yield expression @@ -345,6 +362,11 @@ class Expression(metaclass=_Expression): """ return self.find_ancestor(Select) + @property + def same_parent(self): + """Returns if the parent is the same class as itself.""" + return type(self.parent) is self.__class__ + def root(self) -> Expression: """ Returns the root expression of this tree. @@ -385,10 +407,8 @@ class Expression(metaclass=_Expression): if prune and prune(self, parent, key): return - for k, v in self.args.items(): - for node in ensure_collection(v): - if isinstance(node, Expression): - yield from node.dfs(self, k, prune) + for k, v in self.iter_expressions(): + yield from v.dfs(self, k, prune) def bfs(self, prune=None): """ @@ -407,18 +427,15 @@ class Expression(metaclass=_Expression): if prune and prune(item, parent, key): continue - if isinstance(item, Expression): - for k, v in item.args.items(): - for node in ensure_collection(v): - if isinstance(node, Expression): - queue.append((node, item, k)) + for k, v in item.iter_expressions(): + queue.append((v, item, k)) def unnest(self): """ Returns the first non parenthesis child or self. """ expression = self - while isinstance(expression, Paren): + while type(expression) is Paren: expression = expression.this return expression @@ -434,7 +451,7 @@ class Expression(metaclass=_Expression): """ Returns unnested operands as a tuple. """ - return tuple(arg.unnest() for arg in self.args.values() if arg) + return tuple(arg.unnest() for _, arg in self.iter_expressions()) def flatten(self, unnest=True): """ @@ -442,8 +459,8 @@ class Expression(metaclass=_Expression): A AND B AND C -> [A, B, C] """ - for node, _, _ in self.dfs(prune=lambda n, p, *_: p and not isinstance(n, self.__class__)): - if not isinstance(node, self.__class__): + for node, _, _ in self.dfs(prune=lambda n, p, *_: p and not type(n) is self.__class__): + if not type(node) is self.__class__: yield node.unnest() if unnest else node def __str__(self): @@ -477,7 +494,7 @@ class Expression(metaclass=_Expression): v._to_s(hide_missing=hide_missing, level=level + 1) if hasattr(v, "_to_s") else str(v) - for v in ensure_collection(vs) + for v in ensure_list(vs) if v is not None ) for k, vs in self.args.items() @@ -812,6 +829,10 @@ class Describe(Expression): arg_types = {"this": True, "kind": False} +class Pragma(Expression): + pass + + class Set(Expression): arg_types = {"expressions": False} @@ -1170,6 +1191,7 @@ class Drop(Expression): "temporary": False, "materialized": False, "cascade": False, + "constraints": False, } @@ -1232,11 +1254,11 @@ class Identifier(Expression): def quoted(self): return bool(self.args.get("quoted")) - def __eq__(self, other): - return isinstance(other, self.__class__) and _norm_arg(self.this) == _norm_arg(other.this) - - def __hash__(self): - return hash((self.key, self.this.lower())) + @property + def hashable_args(self) -> t.Any: + if self.quoted and any(char.isupper() for char in self.this): + return (self.this, self.quoted) + return self.this.lower() @property def output_name(self): @@ -1322,15 +1344,9 @@ class Limit(Expression): class Literal(Condition): arg_types = {"this": True, "is_string": True} - def __eq__(self, other): - return ( - isinstance(other, Literal) - and self.this == other.this - and self.args["is_string"] == other.args["is_string"] - ) - - def __hash__(self): - return hash((self.key, self.this, self.args["is_string"])) + @property + def hashable_args(self) -> t.Any: + return (self.this, self.args.get("is_string")) @classmethod def number(cls, number) -> Literal: @@ -1784,7 +1800,7 @@ class Subqueryable(Unionable): instance = _maybe_copy(self, copy) return Subquery( this=instance, - alias=TableAlias(this=to_identifier(alias)), + alias=TableAlias(this=to_identifier(alias)) if alias else None, ) def limit(self, expression, dialect=None, copy=True, **opts) -> Select: @@ -2058,6 +2074,7 @@ class Lock(Expression): class Select(Subqueryable): arg_types = { "with": False, + "kind": False, "expressions": False, "hint": False, "distinct": False, @@ -3595,6 +3612,21 @@ class Initcap(Func): pass +class JSONKeyValue(Expression): + arg_types = {"this": True, "expression": True} + + +class JSONObject(Func): + arg_types = { + "expressions": False, + "null_handling": False, + "unique_keys": False, + "return_type": False, + "format_json": False, + "encoding": False, + } + + class JSONBContains(Binary): _sql_names = ["JSONB_CONTAINS"] @@ -3766,8 +3798,10 @@ class RegexpILike(Func): arg_types = {"this": True, "expression": True, "flag": False} +# https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.functions.split.html +# limit is the number of times a pattern is applied class RegexpSplit(Func): - arg_types = {"this": True, "expression": True} + arg_types = {"this": True, "expression": True, "limit": False} class Repeat(Func): @@ -3967,25 +4001,8 @@ class When(Func): arg_types = {"matched": True, "source": False, "condition": False, "then": True} -def _norm_args(expression): - args = {} - - for k, arg in expression.args.items(): - if isinstance(arg, list): - arg = [_norm_arg(a) for a in arg] - if not arg: - arg = None - else: - arg = _norm_arg(arg) - - if arg is not None and arg is not False: - args[k] = arg - - return args - - def _norm_arg(arg): - return arg.lower() if isinstance(arg, str) else arg + return arg.lower() if type(arg) is str else arg ALL_FUNCTIONS = subclasses(__name__, Func, (AggFunc, Anonymous, Func)) @@ -4512,7 +4529,7 @@ def to_identifier(name, quoted=None): elif isinstance(name, str): identifier = Identifier( this=name, - quoted=not re.match(SAFE_IDENTIFIER_RE, name) if quoted is None else quoted, + quoted=not SAFE_IDENTIFIER_RE.match(name) if quoted is None else quoted, ) else: raise ValueError(f"Name needs to be a string or an Identifier, got: {name.__class__}") @@ -4586,8 +4603,7 @@ def to_column(sql_path: str | Column, **kwargs) -> Column: return sql_path if not isinstance(sql_path, str): raise ValueError(f"Invalid type provided for column: {type(sql_path)}") - table_name, column_name = (to_identifier(x) for x in split_num_words(sql_path, ".", 2)) - return Column(this=column_name, table=table_name, **kwargs) + return column(*reversed(sql_path.split(".")), **kwargs) # type: ignore def alias_( @@ -4672,7 +4688,8 @@ def subquery(expression, alias=None, dialect=None, **opts): def column( col: str | Identifier, table: t.Optional[str | Identifier] = None, - schema: t.Optional[str | Identifier] = None, + db: t.Optional[str | Identifier] = None, + catalog: t.Optional[str | Identifier] = None, quoted: t.Optional[bool] = None, ) -> Column: """ @@ -4681,7 +4698,8 @@ def column( Args: col: column name table: table name - schema: schema name + db: db name + catalog: catalog name quoted: whether or not to force quote each part Returns: Column: column instance @@ -4689,7 +4707,8 @@ def column( return Column( this=to_identifier(col, quoted=quoted), table=to_identifier(table, quoted=quoted), - schema=to_identifier(schema, quoted=quoted), + db=to_identifier(db, quoted=quoted), + catalog=to_identifier(catalog, quoted=quoted), ) @@ -4864,7 +4883,7 @@ def replace_children(expression, fun, *args, **kwargs): Replace children of an expression with the result of a lambda fun(child) -> exp. """ for k, v in expression.args.items(): - is_list_arg = isinstance(v, list) + is_list_arg = type(v) is list child_nodes = v if is_list_arg else [v] new_child_nodes = [] diff --git a/sqlglot/generator.py b/sqlglot/generator.py index a6f4772..6871dd8 100644 --- a/sqlglot/generator.py +++ b/sqlglot/generator.py @@ -110,6 +110,10 @@ class Generator: # Whether or not MERGE ... WHEN MATCHED BY SOURCE is allowed MATCHED_BY_SOURCE = True + # Whether or not limit and fetch are supported + # "ALL", "LIMIT", "FETCH" + LIMIT_FETCH = "ALL" + TYPE_MAPPING = { exp.DataType.Type.NCHAR: "CHAR", exp.DataType.Type.NVARCHAR: "VARCHAR", @@ -209,6 +213,7 @@ class Generator: "_leading_comma", "_max_text_width", "_comments", + "_cache", ) def __init__( @@ -265,19 +270,28 @@ class Generator: self._leading_comma = leading_comma self._max_text_width = max_text_width self._comments = comments + self._cache = None - def generate(self, expression: t.Optional[exp.Expression]) -> str: + def generate( + self, + expression: t.Optional[exp.Expression], + cache: t.Optional[t.Dict[int, str]] = None, + ) -> str: """ Generates a SQL string by interpreting the given syntax tree. Args expression: the syntax tree. + 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. Returns the SQL string. """ + if cache is not None: + self._cache = cache self.unsupported_messages = [] sql = self.sql(expression).strip() + self._cache = None if self.unsupported_level == ErrorLevel.IGNORE: return sql @@ -387,6 +401,12 @@ class Generator: if key: return self.sql(expression.args.get(key)) + if self._cache is not None: + expression_id = hash(expression) + + if expression_id in self._cache: + return self._cache[expression_id] + transform = self.TRANSFORMS.get(expression.__class__) if callable(transform): @@ -407,7 +427,11 @@ class Generator: else: raise ValueError(f"Expected an Expression. Received {type(expression)}: {expression}") - return self.maybe_comment(sql, expression) if self._comments and comment else sql + sql = self.maybe_comment(sql, expression) if self._comments and comment else sql + + if self._cache is not None: + self._cache[expression_id] = sql + return sql def uncache_sql(self, expression: exp.Uncache) -> str: table = self.sql(expression, "this") @@ -697,7 +721,8 @@ class Generator: temporary = " TEMPORARY" if expression.args.get("temporary") else "" materialized = " MATERIALIZED" if expression.args.get("materialized") else "" cascade = " CASCADE" if expression.args.get("cascade") else "" - return f"DROP{temporary}{materialized} {kind}{exists_sql}{this}{cascade}" + constraints = " CONSTRAINTS" if expression.args.get("constraints") else "" + return f"DROP{temporary}{materialized} {kind}{exists_sql}{this}{cascade}{constraints}" def except_sql(self, expression: exp.Except) -> str: return self.prepend_ctes( @@ -733,9 +758,9 @@ class Generator: def identifier_sql(self, expression: exp.Identifier) -> str: text = expression.name - text = text.lower() if self.normalize else text + text = text.lower() if self.normalize and not expression.quoted else text text = text.replace(self.identifier_end, self._escaped_identifier_end) - if expression.args.get("quoted") or should_identify(text, self.identify): + if expression.quoted or should_identify(text, self.identify): text = f"{self.identifier_start}{text}{self.identifier_end}" return text @@ -1191,6 +1216,9 @@ class Generator: ) return f"SET{expressions}" + def pragma_sql(self, expression: exp.Pragma) -> str: + return f"PRAGMA {self.sql(expression, 'this')}" + def lock_sql(self, expression: exp.Lock) -> str: if self.LOCKING_READS_SUPPORTED: lock_type = "UPDATE" if expression.args["update"] else "SHARE" @@ -1299,6 +1327,15 @@ class Generator: return f"{self.seg('MATCH_RECOGNIZE')} {self.wrap(body)}" def query_modifiers(self, expression: exp.Expression, *sqls: str) -> str: + limit = expression.args.get("limit") + + if self.LIMIT_FETCH == "LIMIT" and isinstance(limit, exp.Fetch): + limit = exp.Limit(expression=limit.args.get("count")) + elif self.LIMIT_FETCH == "FETCH" and isinstance(limit, exp.Limit): + limit = exp.Fetch(direction="FIRST", count=limit.expression) + + fetch = isinstance(limit, exp.Fetch) + return csv( *sqls, *[self.sql(sql) for sql in expression.args.get("joins") or []], @@ -1315,14 +1352,16 @@ class Generator: self.sql(expression, "sort"), self.sql(expression, "cluster"), self.sql(expression, "order"), - self.sql(expression, "limit"), - self.sql(expression, "offset"), + self.sql(expression, "offset") if fetch else self.sql(limit), + self.sql(limit) if fetch else self.sql(expression, "offset"), self.sql(expression, "lock"), self.sql(expression, "sample"), sep="", ) def select_sql(self, expression: exp.Select) -> str: + kind = expression.args.get("kind") + kind = f" AS {kind}" if kind else "" hint = self.sql(expression, "hint") distinct = self.sql(expression, "distinct") distinct = f" {distinct}" if distinct else "" @@ -1330,7 +1369,7 @@ class Generator: expressions = f"{self.sep()}{expressions}" if expressions else expressions sql = self.query_modifiers( expression, - f"SELECT{hint}{distinct}{expressions}", + f"SELECT{kind}{hint}{distinct}{expressions}", self.sql(expression, "into", comment=False), self.sql(expression, "from", comment=False), ) @@ -1552,6 +1591,25 @@ class Generator: exp.Case(ifs=[expression.copy()], default=expression.args.get("false")) ) + def jsonkeyvalue_sql(self, expression: exp.JSONKeyValue) -> str: + return f"{self.sql(expression, 'this')}: {self.sql(expression, 'expression')}" + + def jsonobject_sql(self, expression: exp.JSONObject) -> str: + expressions = self.expressions(expression) + null_handling = expression.args.get("null_handling") + null_handling = f" {null_handling}" if null_handling else "" + unique_keys = expression.args.get("unique_keys") + if unique_keys is not None: + unique_keys = f" {'WITH' if unique_keys else 'WITHOUT'} UNIQUE KEYS" + else: + unique_keys = "" + return_type = self.sql(expression, "return_type") + return_type = f" RETURNING {return_type}" if return_type else "" + format_json = " FORMAT JSON" if expression.args.get("format_json") else "" + encoding = self.sql(expression, "encoding") + encoding = f" ENCODING {encoding}" if encoding else "" + return f"JSON_OBJECT({expressions}{null_handling}{unique_keys}{return_type}{format_json}{encoding})" + def in_sql(self, expression: exp.In) -> str: query = expression.args.get("query") unnest = expression.args.get("unnest") @@ -1808,12 +1866,18 @@ class Generator: def ilike_sql(self, expression: exp.ILike) -> str: return self.binary(expression, "ILIKE") + def ilikeany_sql(self, expression: exp.ILikeAny) -> str: + return self.binary(expression, "ILIKE ANY") + def is_sql(self, expression: exp.Is) -> str: return self.binary(expression, "IS") def like_sql(self, expression: exp.Like) -> str: return self.binary(expression, "LIKE") + def likeany_sql(self, expression: exp.LikeAny) -> str: + return self.binary(expression, "LIKE ANY") + def similarto_sql(self, expression: exp.SimilarTo) -> str: return self.binary(expression, "SIMILAR TO") diff --git a/sqlglot/helper.py b/sqlglot/helper.py index 6eff974..d44d7dd 100644 --- a/sqlglot/helper.py +++ b/sqlglot/helper.py @@ -59,7 +59,7 @@ def ensure_list(value): """ if value is None: return [] - elif isinstance(value, (list, tuple)): + if isinstance(value, (list, tuple)): return list(value) return [value] @@ -162,9 +162,7 @@ def camel_to_snake_case(name: str) -> str: return CAMEL_CASE_PATTERN.sub("_", name).upper() -def while_changing( - expression: t.Optional[Expression], func: t.Callable[[t.Optional[Expression]], E] -) -> E: +def while_changing(expression: Expression, func: t.Callable[[Expression], E]) -> E: """ Applies a transformation to a given expression until a fix point is reached. @@ -176,8 +174,13 @@ def while_changing( The transformed expression. """ while True: + for n, *_ in reversed(tuple(expression.walk())): + n._hash = hash(n) start = hash(expression) expression = func(expression) + + for n, *_ in expression.walk(): + n._hash = None if start == hash(expression): break return expression diff --git a/sqlglot/optimizer/annotate_types.py b/sqlglot/optimizer/annotate_types.py index c2d6655..99888c6 100644 --- a/sqlglot/optimizer/annotate_types.py +++ b/sqlglot/optimizer/annotate_types.py @@ -1,5 +1,5 @@ from sqlglot import exp -from sqlglot.helper import ensure_collection, ensure_list, subclasses +from sqlglot.helper import ensure_list, subclasses from sqlglot.optimizer.scope import Scope, traverse_scope from sqlglot.schema import ensure_schema @@ -108,6 +108,7 @@ class TypeAnnotator: exp.If: lambda self, expr: self._annotate_by_args(expr, "true", "false"), exp.Coalesce: lambda self, expr: self._annotate_by_args(expr, "this", "expressions"), exp.IfNull: lambda self, expr: self._annotate_by_args(expr, "this", "expression"), + exp.Concat: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), exp.ConcatWs: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), exp.GroupConcat: lambda self, expr: self._annotate_with_type( expr, exp.DataType.Type.VARCHAR @@ -116,6 +117,7 @@ class TypeAnnotator: expr, exp.DataType.Type.VARCHAR ), exp.Initcap: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.VARCHAR), + exp.Interval: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INTERVAL), exp.Least: lambda self, expr: self._annotate_by_args(expr, "expressions"), exp.Length: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.BIGINT), exp.Levenshtein: lambda self, expr: self._annotate_with_type(expr, exp.DataType.Type.INT), @@ -296,9 +298,6 @@ class TypeAnnotator: return self._maybe_annotate(expression) # This takes care of non-traversable expressions def _maybe_annotate(self, expression): - if not isinstance(expression, exp.Expression): - return None - if expression.type: return expression # We've already inferred the expression's type @@ -311,9 +310,8 @@ class TypeAnnotator: ) def _annotate_args(self, expression): - for value in expression.args.values(): - for v in ensure_collection(value): - self._maybe_annotate(v) + for _, value in expression.iter_expressions(): + self._maybe_annotate(value) return expression diff --git a/sqlglot/optimizer/canonicalize.py b/sqlglot/optimizer/canonicalize.py index c5c780d..ef929ac 100644 --- a/sqlglot/optimizer/canonicalize.py +++ b/sqlglot/optimizer/canonicalize.py @@ -75,7 +75,7 @@ def _coerce_date(a: exp.Expression, b: exp.Expression) -> None: a.type and a.type.this == exp.DataType.Type.DATE and b.type - and b.type.this != exp.DataType.Type.DATE + and b.type.this not in (exp.DataType.Type.DATE, exp.DataType.Type.INTERVAL) ): _replace_cast(b, "date") diff --git a/sqlglot/optimizer/eliminate_joins.py b/sqlglot/optimizer/eliminate_joins.py index 8e6a520..e0ddfa2 100644 --- a/sqlglot/optimizer/eliminate_joins.py +++ b/sqlglot/optimizer/eliminate_joins.py @@ -1,7 +1,6 @@ from sqlglot import expressions as exp from sqlglot.optimizer.normalize import normalized from sqlglot.optimizer.scope import Scope, traverse_scope -from sqlglot.optimizer.simplify import simplify def eliminate_joins(expression): @@ -179,6 +178,4 @@ def join_condition(join): for condition in conditions: extract_condition(condition) - on = simplify(on) - remaining_condition = None if on == exp.true() else on - return source_key, join_key, remaining_condition + return source_key, join_key, on diff --git a/sqlglot/optimizer/eliminate_subqueries.py b/sqlglot/optimizer/eliminate_subqueries.py index 6f9db82..a39fe96 100644 --- a/sqlglot/optimizer/eliminate_subqueries.py +++ b/sqlglot/optimizer/eliminate_subqueries.py @@ -3,7 +3,6 @@ import itertools from sqlglot import expressions as exp from sqlglot.helper import find_new_name from sqlglot.optimizer.scope import build_scope -from sqlglot.optimizer.simplify import simplify def eliminate_subqueries(expression): @@ -31,7 +30,6 @@ def eliminate_subqueries(expression): eliminate_subqueries(expression.this) return expression - expression = simplify(expression) root = build_scope(expression) # Map of alias->Scope|Table diff --git a/sqlglot/optimizer/lower_identities.py b/sqlglot/optimizer/lower_identities.py index 1cc76cf..fae1726 100644 --- a/sqlglot/optimizer/lower_identities.py +++ b/sqlglot/optimizer/lower_identities.py @@ -1,5 +1,4 @@ from sqlglot import exp -from sqlglot.helper import ensure_collection def lower_identities(expression): @@ -40,13 +39,10 @@ def lower_identities(expression): lower_identities(expression.right) traversed |= {"this", "expression"} - for k, v in expression.args.items(): + for k, v in expression.iter_expressions(): if k in traversed: continue - - for child in ensure_collection(v): - if isinstance(child, exp.Expression): - child.transform(_lower, copy=False) + v.transform(_lower, copy=False) return expression diff --git a/sqlglot/optimizer/merge_subqueries.py b/sqlglot/optimizer/merge_subqueries.py index 70172f4..c3467b2 100644 --- a/sqlglot/optimizer/merge_subqueries.py +++ b/sqlglot/optimizer/merge_subqueries.py @@ -3,7 +3,6 @@ from collections import defaultdict from sqlglot import expressions as exp from sqlglot.helper import find_new_name from sqlglot.optimizer.scope import Scope, traverse_scope -from sqlglot.optimizer.simplify import simplify def merge_subqueries(expression, leave_tables_isolated=False): @@ -330,11 +329,11 @@ def _merge_where(outer_scope, inner_scope, from_or_join): if set(exp.column_table_names(where.this)) <= sources: from_or_join.on(where.this, copy=False) - from_or_join.set("on", simplify(from_or_join.args.get("on"))) + from_or_join.set("on", from_or_join.args.get("on")) return expression.where(where.this, copy=False) - expression.set("where", simplify(expression.args.get("where"))) + expression.set("where", expression.args.get("where")) def _merge_order(outer_scope, inner_scope): diff --git a/sqlglot/optimizer/normalize.py b/sqlglot/optimizer/normalize.py index f16f519..f2df230 100644 --- a/sqlglot/optimizer/normalize.py +++ b/sqlglot/optimizer/normalize.py @@ -1,29 +1,63 @@ +from __future__ import annotations + +import logging +import typing as t + from sqlglot import exp +from sqlglot.errors import OptimizeError from sqlglot.helper import while_changing -from sqlglot.optimizer.simplify import flatten, simplify, uniq_sort +from sqlglot.optimizer.simplify import flatten, uniq_sort + +logger = logging.getLogger("sqlglot") -def normalize(expression, dnf=False, max_distance=128): +def normalize(expression: exp.Expression, dnf: bool = False, max_distance: int = 128): """ - Rewrite sqlglot AST into conjunctive normal form. + Rewrite sqlglot AST into conjunctive normal form or disjunctive normal form. Example: >>> import sqlglot >>> expression = sqlglot.parse_one("(x AND y) OR z") - >>> normalize(expression).sql() + >>> normalize(expression, dnf=False).sql() '(x OR z) AND (y OR z)' Args: - expression (sqlglot.Expression): expression to normalize - dnf (bool): rewrite in disjunctive normal form instead - max_distance (int): the maximal estimated distance from cnf to attempt conversion + expression: expression to normalize + dnf: rewrite in disjunctive normal form instead. + max_distance (int): the maximal estimated distance from cnf/dnf to attempt conversion Returns: sqlglot.Expression: normalized expression """ - expression = simplify(expression) + cache: t.Dict[int, str] = {} + + for node, *_ in tuple(expression.walk(prune=lambda e, *_: isinstance(e, exp.Connector))): + if isinstance(node, exp.Connector): + if normalized(node, dnf=dnf): + continue + + distance = normalization_distance(node, dnf=dnf) + + if distance > max_distance: + logger.info( + f"Skipping normalization because distance {distance} exceeds max {max_distance}" + ) + return expression + + root = node is expression + original = node.copy() + try: + node = while_changing(node, lambda e: distributive_law(e, dnf, max_distance, cache)) + except OptimizeError as e: + logger.info(e) + node.replace(original) + if root: + return original + return expression + + if root: + expression = node - expression = while_changing(expression, lambda e: distributive_law(e, dnf, max_distance)) - return simplify(expression) + return expression def normalized(expression, dnf=False): @@ -51,7 +85,7 @@ def normalization_distance(expression, dnf=False): int: difference """ return sum(_predicate_lengths(expression, dnf)) - ( - len(list(expression.find_all(exp.Connector))) + 1 + sum(1 for _ in expression.find_all(exp.Connector)) + 1 ) @@ -64,29 +98,32 @@ def _predicate_lengths(expression, dnf): expression = expression.unnest() if not isinstance(expression, exp.Connector): - return [1] + return (1,) left, right = expression.args.values() if isinstance(expression, exp.And if dnf else exp.Or): - return [ + return tuple( a + b for a in _predicate_lengths(left, dnf) for b in _predicate_lengths(right, dnf) - ] + ) return _predicate_lengths(left, dnf) + _predicate_lengths(right, dnf) -def distributive_law(expression, dnf, max_distance): +def distributive_law(expression, dnf, max_distance, cache=None): """ x OR (y AND z) -> (x OR y) AND (x OR z) (x AND y) OR (y AND z) -> (x OR y) AND (x OR z) AND (y OR y) AND (y OR z) """ - if isinstance(expression.unnest(), exp.Connector): - if normalization_distance(expression, dnf) > max_distance: - return expression + if normalized(expression, dnf=dnf): + return expression - to_exp, from_exp = (exp.Or, exp.And) if dnf else (exp.And, exp.Or) + distance = normalization_distance(expression, dnf=dnf) - exp.replace_children(expression, lambda e: distributive_law(e, dnf, max_distance)) + if distance > max_distance: + raise OptimizeError(f"Normalization distance {distance} exceeds max {max_distance}") + + exp.replace_children(expression, lambda e: distributive_law(e, dnf, max_distance, cache)) + to_exp, from_exp = (exp.Or, exp.And) if dnf else (exp.And, exp.Or) if isinstance(expression, from_exp): a, b = expression.unnest_operands() @@ -96,32 +133,29 @@ def distributive_law(expression, dnf, max_distance): if isinstance(a, to_exp) and isinstance(b, to_exp): if len(tuple(a.find_all(exp.Connector))) > len(tuple(b.find_all(exp.Connector))): - return _distribute(a, b, from_func, to_func) - return _distribute(b, a, from_func, to_func) + return _distribute(a, b, from_func, to_func, cache) + return _distribute(b, a, from_func, to_func, cache) if isinstance(a, to_exp): - return _distribute(b, a, from_func, to_func) + return _distribute(b, a, from_func, to_func, cache) if isinstance(b, to_exp): - return _distribute(a, b, from_func, to_func) + return _distribute(a, b, from_func, to_func, cache) return expression -def _distribute(a, b, from_func, to_func): +def _distribute(a, b, from_func, to_func, cache): if isinstance(a, exp.Connector): exp.replace_children( a, lambda c: to_func( - exp.paren(from_func(c, b.left)), - exp.paren(from_func(c, b.right)), + uniq_sort(flatten(from_func(c, b.left)), cache), + uniq_sort(flatten(from_func(c, b.right)), cache), ), ) else: - a = to_func(from_func(a, b.left), from_func(a, b.right)) - - return _simplify(a) - + a = to_func( + uniq_sort(flatten(from_func(a, b.left)), cache), + uniq_sort(flatten(from_func(a, b.right)), cache), + ) -def _simplify(node): - node = uniq_sort(flatten(node)) - exp.replace_children(node, _simplify) - return node + return a diff --git a/sqlglot/optimizer/optimize_joins.py b/sqlglot/optimizer/optimize_joins.py index dc5ce44..8589657 100644 --- a/sqlglot/optimizer/optimize_joins.py +++ b/sqlglot/optimizer/optimize_joins.py @@ -1,6 +1,5 @@ from sqlglot import exp from sqlglot.helper import tsort -from sqlglot.optimizer.simplify import simplify def optimize_joins(expression): @@ -29,7 +28,6 @@ def optimize_joins(expression): for name, join in cross_joins: for dep in references.get(name, []): on = dep.args["on"] - on = on.replace(simplify(on)) if isinstance(on, exp.Connector): for predicate in on.flatten(): diff --git a/sqlglot/optimizer/optimizer.py b/sqlglot/optimizer/optimizer.py index d9d04be..62eb11e 100644 --- a/sqlglot/optimizer/optimizer.py +++ b/sqlglot/optimizer/optimizer.py @@ -21,6 +21,7 @@ from sqlglot.optimizer.pushdown_predicates import pushdown_predicates from sqlglot.optimizer.pushdown_projections import pushdown_projections from sqlglot.optimizer.qualify_columns import qualify_columns, validate_qualify_columns from sqlglot.optimizer.qualify_tables import qualify_tables +from sqlglot.optimizer.simplify import simplify from sqlglot.optimizer.unnest_subqueries import unnest_subqueries from sqlglot.schema import ensure_schema @@ -43,6 +44,7 @@ RULES = ( eliminate_ctes, annotate_types, canonicalize, + simplify, ) @@ -78,7 +80,7 @@ def optimize( Returns: sqlglot.Expression: optimized expression """ - schema = ensure_schema(schema or sqlglot.schema) + schema = ensure_schema(schema or sqlglot.schema, dialect=dialect) possible_kwargs = {"db": db, "catalog": catalog, "schema": schema, **kwargs} expression = exp.maybe_parse(expression, dialect=dialect, copy=True) for rule in rules: diff --git a/sqlglot/optimizer/qualify_columns.py b/sqlglot/optimizer/qualify_columns.py index 66b3170..5e40cf3 100644 --- a/sqlglot/optimizer/qualify_columns.py +++ b/sqlglot/optimizer/qualify_columns.py @@ -30,11 +30,12 @@ def qualify_columns(expression, schema): resolver = Resolver(scope, schema) _pop_table_column_aliases(scope.ctes) _pop_table_column_aliases(scope.derived_tables) - _expand_using(scope, resolver) + using_column_tables = _expand_using(scope, resolver) _qualify_columns(scope, resolver) if not isinstance(scope.expression, exp.UDTF): - _expand_stars(scope, resolver) + _expand_stars(scope, resolver, using_column_tables) _qualify_outputs(scope) + _expand_alias_refs(scope, resolver) _expand_group_by(scope, resolver) _expand_order_by(scope) @@ -69,11 +70,11 @@ def _pop_table_column_aliases(derived_tables): def _expand_using(scope, resolver): - joins = list(scope.expression.find_all(exp.Join)) + joins = list(scope.find_all(exp.Join)) names = {join.this.alias for join in joins} ordered = [key for key in scope.selected_sources if key not in names] - # Mapping of automatically joined column names to source names + # Mapping of automatically joined column names to an ordered set of source names (dict). column_tables = {} for join in joins: @@ -112,11 +113,12 @@ def _expand_using(scope, resolver): ) ) - tables = column_tables.setdefault(identifier, []) + # Set all values in the dict to None, because we only care about the key ordering + tables = column_tables.setdefault(identifier, {}) if table not in tables: - tables.append(table) + tables[table] = None if join_table not in tables: - tables.append(join_table) + tables[join_table] = None join.args.pop("using") join.set("on", exp.and_(*conditions)) @@ -134,11 +136,11 @@ def _expand_using(scope, resolver): scope.replace(column, replacement) + return column_tables -def _expand_group_by(scope, resolver): - group = scope.expression.args.get("group") - if not group: - return + +def _expand_alias_refs(scope, resolver): + selects = {} # Replace references to select aliases def transform(node, *_): @@ -150,9 +152,11 @@ def _expand_group_by(scope, resolver): node.set("table", table) return node - selects = {s.alias_or_name: s for s in scope.selects} - + if not selects: + for s in scope.selects: + selects[s.alias_or_name] = s select = selects.get(node.name) + if select: scope.clear_cache() if isinstance(select, exp.Alias): @@ -161,7 +165,21 @@ def _expand_group_by(scope, resolver): return node - group.transform(transform, copy=False) + for select in scope.expression.selects: + select.transform(transform, copy=False) + + for modifier in ("where", "group"): + part = scope.expression.args.get(modifier) + + if part: + part.transform(transform, copy=False) + + +def _expand_group_by(scope, resolver): + group = scope.expression.args.get("group") + if not group: + return + group.set("expressions", _expand_positional_references(scope, group.expressions)) scope.expression.set("group", group) @@ -231,18 +249,24 @@ def _qualify_columns(scope, resolver): column.replace(exp.Dot.build([exp.column(root, table=column_table), *parts])) columns_missing_from_scope = [] + # Determine whether each reference in the order by clause is to a column or an alias. - for ordered in scope.find_all(exp.Ordered): - for column in ordered.find_all(exp.Column): - if ( - not column.table - and column.parent is not ordered - and column.name in resolver.all_columns - ): - columns_missing_from_scope.append(column) + order = scope.expression.args.get("order") + + if order: + for ordered in order.expressions: + for column in ordered.find_all(exp.Column): + if ( + not column.table + and column.parent is not ordered + and column.name in resolver.all_columns + ): + columns_missing_from_scope.append(column) # Determine whether each reference in the having clause is to a column or an alias. - for having in scope.find_all(exp.Having): + having = scope.expression.args.get("having") + + if having: for column in having.find_all(exp.Column): if ( not column.table @@ -258,12 +282,13 @@ def _qualify_columns(scope, resolver): column.set("table", column_table) -def _expand_stars(scope, resolver): +def _expand_stars(scope, resolver, using_column_tables): """Expand stars to lists of column selections""" new_selections = [] except_columns = {} replace_columns = {} + coalesced_columns = set() for expression in scope.selects: if isinstance(expression, exp.Star): @@ -286,7 +311,20 @@ def _expand_stars(scope, resolver): if columns and "*" not in columns: table_id = id(table) for name in columns: - if name not in except_columns.get(table_id, set()): + if name in using_column_tables and table in using_column_tables[name]: + if name in coalesced_columns: + continue + + coalesced_columns.add(name) + tables = using_column_tables[name] + coalesce = [exp.column(name, table=table) for table in tables] + + new_selections.append( + exp.alias_( + exp.Coalesce(this=coalesce[0], expressions=coalesce[1:]), alias=name + ) + ) + elif name not in except_columns.get(table_id, set()): alias_ = replace_columns.get(table_id, {}).get(name, name) column = exp.column(name, table) new_selections.append(alias(column, alias_) if alias_ != name else column) diff --git a/sqlglot/optimizer/scope.py b/sqlglot/optimizer/scope.py index 9c0768c..b582eb0 100644 --- a/sqlglot/optimizer/scope.py +++ b/sqlglot/optimizer/scope.py @@ -160,7 +160,7 @@ class Scope: Yields: exp.Expression: nodes """ - for expression, _, _ in self.walk(bfs=bfs): + for expression, *_ in self.walk(bfs=bfs): if isinstance(expression, expression_types): yield expression diff --git a/sqlglot/optimizer/simplify.py b/sqlglot/optimizer/simplify.py index f80484d..1ed3ca2 100644 --- a/sqlglot/optimizer/simplify.py +++ b/sqlglot/optimizer/simplify.py @@ -5,11 +5,10 @@ from collections import deque from decimal import Decimal from sqlglot import exp -from sqlglot.expressions import FALSE, NULL, TRUE from sqlglot.generator import Generator from sqlglot.helper import first, while_changing -GENERATOR = Generator(normalize=True, identify=True) +GENERATOR = Generator(normalize=True, identify="safe") def simplify(expression): @@ -28,18 +27,20 @@ def simplify(expression): sqlglot.Expression: simplified expression """ + cache = {} + def _simplify(expression, root=True): node = expression node = rewrite_between(node) - node = uniq_sort(node) - node = absorb_and_eliminate(node) + node = uniq_sort(node, cache, root) + node = absorb_and_eliminate(node, root) exp.replace_children(node, lambda e: _simplify(e, False)) node = simplify_not(node) node = flatten(node) - node = simplify_connectors(node) - node = remove_compliments(node) + node = simplify_connectors(node, root) + node = remove_compliments(node, root) node.parent = expression.parent - node = simplify_literals(node) + node = simplify_literals(node, root) node = simplify_parens(node) if root: expression.replace(node) @@ -70,7 +71,7 @@ def simplify_not(expression): NOT (x AND y) -> NOT x OR NOT y """ if isinstance(expression, exp.Not): - if isinstance(expression.this, exp.Null): + if is_null(expression.this): return exp.null() if isinstance(expression.this, exp.Paren): condition = expression.this.unnest() @@ -78,11 +79,11 @@ def simplify_not(expression): return exp.or_(exp.not_(condition.left), exp.not_(condition.right)) if isinstance(condition, exp.Or): return exp.and_(exp.not_(condition.left), exp.not_(condition.right)) - if isinstance(condition, exp.Null): + if is_null(condition): return exp.null() if always_true(expression.this): return exp.false() - if expression.this == FALSE: + if is_false(expression.this): return exp.true() if isinstance(expression.this, exp.Not): # double negation @@ -104,42 +105,42 @@ def flatten(expression): return expression -def simplify_connectors(expression): +def simplify_connectors(expression, root=True): def _simplify_connectors(expression, left, right): - if isinstance(expression, exp.Connector): - if left == right: + if left == right: + return left + if isinstance(expression, exp.And): + if is_false(left) or is_false(right): + return exp.false() + if is_null(left) or is_null(right): + return exp.null() + if always_true(left) and always_true(right): + return exp.true() + if always_true(left): + return right + if always_true(right): return left - if isinstance(expression, exp.And): - if FALSE in (left, right): - return exp.false() - if NULL in (left, right): - return exp.null() - if always_true(left) and always_true(right): - return exp.true() - if always_true(left): - return right - if always_true(right): - return left - return _simplify_comparison(expression, left, right) - elif isinstance(expression, exp.Or): - if always_true(left) or always_true(right): - return exp.true() - if left == FALSE and right == FALSE: - return exp.false() - if ( - (left == NULL and right == NULL) - or (left == NULL and right == FALSE) - or (left == FALSE and right == NULL) - ): - return exp.null() - if left == FALSE: - return right - if right == FALSE: - return left - return _simplify_comparison(expression, left, right, or_=True) - return None + return _simplify_comparison(expression, left, right) + elif isinstance(expression, exp.Or): + if always_true(left) or always_true(right): + return exp.true() + if is_false(left) and is_false(right): + return exp.false() + if ( + (is_null(left) and is_null(right)) + or (is_null(left) and is_false(right)) + or (is_false(left) and is_null(right)) + ): + return exp.null() + if is_false(left): + return right + if is_false(right): + return left + return _simplify_comparison(expression, left, right, or_=True) - return _flat_simplify(expression, _simplify_connectors) + if isinstance(expression, exp.Connector): + return _flat_simplify(expression, _simplify_connectors, root) + return expression LT_LTE = (exp.LT, exp.LTE) @@ -220,14 +221,14 @@ def _simplify_comparison(expression, left, right, or_=False): return None -def remove_compliments(expression): +def remove_compliments(expression, root=True): """ Removing compliments. A AND NOT A -> FALSE A OR NOT A -> TRUE """ - if isinstance(expression, exp.Connector): + if isinstance(expression, exp.Connector) and (root or not expression.same_parent): compliment = exp.false() if isinstance(expression, exp.And) else exp.true() for a, b in itertools.permutations(expression.flatten(), 2): @@ -236,23 +237,23 @@ def remove_compliments(expression): return expression -def uniq_sort(expression): +def uniq_sort(expression, cache=None, root=True): """ Uniq and sort a connector. C AND A AND B AND B -> A AND B AND C """ - if isinstance(expression, exp.Connector): + if isinstance(expression, exp.Connector) and (root or not expression.same_parent): result_func = exp.and_ if isinstance(expression, exp.And) else exp.or_ flattened = tuple(expression.flatten()) - deduped = {GENERATOR.generate(e): e for e in flattened} + deduped = {GENERATOR.generate(e, cache): e for e in flattened} arr = tuple(deduped.items()) # check if the operands are already sorted, if not sort them # A AND C AND B -> A AND B AND C for i, (sql, e) in enumerate(arr[1:]): if sql < arr[i][0]: - expression = result_func(*(deduped[sql] for sql in sorted(deduped))) + expression = result_func(*(e for _, e in sorted(arr))) break else: # we didn't have to sort but maybe we need to dedup @@ -262,7 +263,7 @@ def uniq_sort(expression): return expression -def absorb_and_eliminate(expression): +def absorb_and_eliminate(expression, root=True): """ absorption: A AND (A OR B) -> A @@ -273,7 +274,7 @@ def absorb_and_eliminate(expression): (A AND B) OR (A AND NOT B) -> A (A OR B) AND (A OR NOT B) -> A """ - if isinstance(expression, exp.Connector): + if isinstance(expression, exp.Connector) and (root or not expression.same_parent): kind = exp.Or if isinstance(expression, exp.And) else exp.And for a, b in itertools.permutations(expression.flatten(), 2): @@ -302,9 +303,9 @@ def absorb_and_eliminate(expression): return expression -def simplify_literals(expression): - if isinstance(expression, exp.Binary): - return _flat_simplify(expression, _simplify_binary) +def simplify_literals(expression, root=True): + if isinstance(expression, exp.Binary) and not isinstance(expression, exp.Connector): + return _flat_simplify(expression, _simplify_binary, root) elif isinstance(expression, exp.Neg): this = expression.this if this.is_number: @@ -325,14 +326,14 @@ def _simplify_binary(expression, a, b): c = b not_ = False - if c == NULL: + if is_null(c): if isinstance(a, exp.Literal): return exp.true() if not_ else exp.false() - if a == NULL: + if is_null(a): return exp.false() if not_ else exp.true() elif isinstance(expression, (exp.NullSafeEQ, exp.NullSafeNEQ)): return None - elif NULL in (a, b): + elif is_null(a) or is_null(b): return exp.null() if a.is_number and b.is_number: @@ -355,7 +356,7 @@ def _simplify_binary(expression, a, b): if boolean: return boolean elif a.is_string and b.is_string: - boolean = eval_boolean(expression, a, b) + boolean = eval_boolean(expression, a.this, b.this) if boolean: return boolean @@ -381,7 +382,7 @@ def simplify_parens(expression): and not isinstance(expression.this, exp.Select) and ( not isinstance(expression.parent, (exp.Condition, exp.Binary)) - or isinstance(expression.this, (exp.Is, exp.Like)) + or isinstance(expression.this, exp.Predicate) or not isinstance(expression.this, exp.Binary) ) ): @@ -400,13 +401,23 @@ def remove_where_true(expression): def always_true(expression): - return expression == TRUE or isinstance(expression, exp.Literal) + return (isinstance(expression, exp.Boolean) and expression.this) or isinstance( + expression, exp.Literal + ) def is_complement(a, b): return isinstance(b, exp.Not) and b.this == a +def is_false(a: exp.Expression) -> bool: + return type(a) is exp.Boolean and not a.this + + +def is_null(a: exp.Expression) -> bool: + return type(a) is exp.Null + + def eval_boolean(expression, a, b): if isinstance(expression, (exp.EQ, exp.Is)): return boolean_literal(a == b) @@ -466,24 +477,27 @@ def boolean_literal(condition): return exp.true() if condition else exp.false() -def _flat_simplify(expression, simplifier): - operands = [] - queue = deque(expression.flatten(unnest=False)) - size = len(queue) +def _flat_simplify(expression, simplifier, root=True): + if root or not expression.same_parent: + operands = [] + queue = deque(expression.flatten(unnest=False)) + size = len(queue) - while queue: - a = queue.popleft() + while queue: + a = queue.popleft() - for b in queue: - result = simplifier(expression, a, b) + for b in queue: + result = simplifier(expression, a, b) - if result: - queue.remove(b) - queue.append(result) - break - else: - operands.append(a) + if result: + queue.remove(b) + queue.append(result) + break + else: + operands.append(a) - if len(operands) < size: - return functools.reduce(lambda a, b: expression.__class__(this=a, expression=b), operands) + if len(operands) < size: + return functools.reduce( + lambda a, b: expression.__class__(this=a, expression=b), operands + ) return expression diff --git a/sqlglot/parser.py b/sqlglot/parser.py index a36251e..8269525 100644 --- a/sqlglot/parser.py +++ b/sqlglot/parser.py @@ -19,7 +19,7 @@ from sqlglot.trie import in_trie, new_trie logger = logging.getLogger("sqlglot") -def parse_var_map(args): +def parse_var_map(args: t.Sequence) -> exp.Expression: keys = [] values = [] for i in range(0, len(args), 2): @@ -31,6 +31,11 @@ def parse_var_map(args): ) +def parse_like(args): + like = exp.Like(this=seq_get(args, 1), expression=seq_get(args, 0)) + return exp.Escape(this=like, expression=seq_get(args, 2)) if len(args) > 2 else like + + def binary_range_parser( expr_type: t.Type[exp.Expression], ) -> t.Callable[[Parser, t.Optional[exp.Expression]], t.Optional[exp.Expression]]: @@ -77,6 +82,9 @@ class Parser(metaclass=_Parser): this=seq_get(args, 0), to=exp.DataType(this=exp.DataType.Type.TEXT), ), + "GLOB": lambda args: exp.Glob(this=seq_get(args, 1), expression=seq_get(args, 0)), + "IFNULL": exp.Coalesce.from_arg_list, + "LIKE": parse_like, "TIME_TO_TIME_STR": lambda args: exp.Cast( this=seq_get(args, 0), to=exp.DataType(this=exp.DataType.Type.TEXT), @@ -90,7 +98,6 @@ class Parser(metaclass=_Parser): length=exp.Literal.number(10), ), "VAR_MAP": parse_var_map, - "IFNULL": exp.Coalesce.from_arg_list, } NO_PAREN_FUNCTIONS = { @@ -211,6 +218,7 @@ class Parser(metaclass=_Parser): TokenType.FILTER, TokenType.FOLLOWING, TokenType.FORMAT, + TokenType.FULL, TokenType.IF, TokenType.ISNULL, TokenType.INTERVAL, @@ -226,8 +234,10 @@ class Parser(metaclass=_Parser): TokenType.ONLY, TokenType.OPTIONS, TokenType.ORDINALITY, + TokenType.PARTITION, TokenType.PERCENT, TokenType.PIVOT, + TokenType.PRAGMA, TokenType.PRECEDING, TokenType.RANGE, TokenType.REFERENCES, @@ -257,6 +267,7 @@ class Parser(metaclass=_Parser): TABLE_ALIAS_TOKENS = ID_VAR_TOKENS - { TokenType.APPLY, + TokenType.FULL, TokenType.LEFT, TokenType.NATURAL, TokenType.OFFSET, @@ -277,6 +288,7 @@ class Parser(metaclass=_Parser): TokenType.FILTER, TokenType.FIRST, TokenType.FORMAT, + TokenType.GLOB, TokenType.IDENTIFIER, TokenType.INDEX, TokenType.ISNULL, @@ -461,6 +473,7 @@ class Parser(metaclass=_Parser): TokenType.INSERT: lambda self: self._parse_insert(), TokenType.LOAD_DATA: lambda self: self._parse_load_data(), TokenType.MERGE: lambda self: self._parse_merge(), + TokenType.PRAGMA: lambda self: self.expression(exp.Pragma, this=self._parse_expression()), TokenType.ROLLBACK: lambda self: self._parse_commit_or_rollback(), TokenType.SET: lambda self: self._parse_set(), TokenType.UNCACHE: lambda self: self._parse_uncache(), @@ -662,6 +675,8 @@ class Parser(metaclass=_Parser): "CAST": lambda self: self._parse_cast(self.STRICT_CAST), "CONVERT": lambda self: self._parse_convert(self.STRICT_CAST), "EXTRACT": lambda self: self._parse_extract(), + "JSON_OBJECT": lambda self: self._parse_json_object(), + "LOG": lambda self: self._parse_logarithm(), "POSITION": lambda self: self._parse_position(), "STRING_AGG": lambda self: self._parse_string_agg(), "SUBSTRING": lambda self: self._parse_substring(), @@ -719,6 +734,9 @@ class Parser(metaclass=_Parser): CONVERT_TYPE_FIRST = False + LOG_BASE_FIRST = True + LOG_DEFAULTS_TO_LN = False + __slots__ = ( "error_level", "error_message_context", @@ -1032,6 +1050,7 @@ class Parser(metaclass=_Parser): temporary=temporary, materialized=materialized, cascade=self._match(TokenType.CASCADE), + constraints=self._match_text_seq("CONSTRAINTS"), ) def _parse_exists(self, not_: bool = False) -> t.Optional[bool]: @@ -1221,7 +1240,7 @@ class Parser(metaclass=_Parser): if not identified_property: break - for p in ensure_collection(identified_property): + for p in ensure_list(identified_property): properties.append(p) if properties: @@ -1704,6 +1723,11 @@ class Parser(metaclass=_Parser): elif self._match(TokenType.SELECT): comments = self._prev_comments + kind = ( + self._match(TokenType.ALIAS) + and self._match_texts(("STRUCT", "VALUE")) + and self._prev.text + ) hint = self._parse_hint() all_ = self._match(TokenType.ALL) distinct = self._match(TokenType.DISTINCT) @@ -1722,6 +1746,7 @@ class Parser(metaclass=_Parser): this = self.expression( exp.Select, + kind=kind, hint=hint, distinct=distinct, expressions=expressions, @@ -2785,7 +2810,6 @@ class Parser(metaclass=_Parser): this = seq_get(expressions, 0) self._parse_query_modifiers(this) - self._match_r_paren() if isinstance(this, exp.Subqueryable): this = self._parse_set_operations( @@ -2794,7 +2818,9 @@ class Parser(metaclass=_Parser): elif len(expressions) > 1: this = self.expression(exp.Tuple, expressions=expressions) else: - this = self.expression(exp.Paren, this=this) + this = self.expression(exp.Paren, this=self._parse_set_operations(this)) + + self._match_r_paren() if this and comments: this.comments = comments @@ -3318,6 +3344,60 @@ class Parser(metaclass=_Parser): return self.expression(exp.Cast if strict else exp.TryCast, this=this, to=to) + def _parse_json_key_value(self) -> t.Optional[exp.Expression]: + self._match_text_seq("KEY") + key = self._parse_field() + self._match(TokenType.COLON) + self._match_text_seq("VALUE") + value = self._parse_field() + if not key and not value: + return None + return self.expression(exp.JSONKeyValue, this=key, expression=value) + + def _parse_json_object(self) -> exp.Expression: + expressions = self._parse_csv(self._parse_json_key_value) + + null_handling = None + if self._match_text_seq("NULL", "ON", "NULL"): + null_handling = "NULL ON NULL" + elif self._match_text_seq("ABSENT", "ON", "NULL"): + null_handling = "ABSENT ON NULL" + + unique_keys = None + if self._match_text_seq("WITH", "UNIQUE"): + unique_keys = True + elif self._match_text_seq("WITHOUT", "UNIQUE"): + unique_keys = False + + self._match_text_seq("KEYS") + + return_type = self._match_text_seq("RETURNING") and self._parse_type() + format_json = self._match_text_seq("FORMAT", "JSON") + encoding = self._match_text_seq("ENCODING") and self._parse_var() + + return self.expression( + exp.JSONObject, + expressions=expressions, + null_handling=null_handling, + unique_keys=unique_keys, + return_type=return_type, + format_json=format_json, + encoding=encoding, + ) + + def _parse_logarithm(self) -> exp.Expression: + # Default argument order is base, expression + args = self._parse_csv(self._parse_range) + + if len(args) > 1: + if not self.LOG_BASE_FIRST: + args.reverse() + return exp.Log.from_arg_list(args) + + return self.expression( + exp.Ln if self.LOG_DEFAULTS_TO_LN else exp.Log, this=seq_get(args, 0) + ) + def _parse_position(self, haystack_first: bool = False) -> exp.Expression: args = self._parse_csv(self._parse_bitwise) @@ -3654,7 +3734,7 @@ class Parser(metaclass=_Parser): return parse_result def _parse_select_or_expression(self) -> t.Optional[exp.Expression]: - return self._parse_select() or self._parse_expression() + return self._parse_select() or self._parse_set_operations(self._parse_expression()) def _parse_ddl_select(self) -> t.Optional[exp.Expression]: return self._parse_set_operations( @@ -3741,6 +3821,8 @@ class Parser(metaclass=_Parser): expression = self._parse_foreign_key() elif kind == TokenType.PRIMARY_KEY or self._match(TokenType.PRIMARY_KEY): expression = self._parse_primary_key() + else: + expression = None return self.expression(exp.AddConstraint, this=this, expression=expression) @@ -3799,12 +3881,15 @@ class Parser(metaclass=_Parser): parser = self.ALTER_PARSERS.get(self._prev.text.upper()) if self._prev else None if parser: - return self.expression( - exp.AlterTable, - this=this, - exists=exists, - actions=ensure_list(parser(self)), - ) + actions = ensure_list(parser(self)) + + if not self._curr: + return self.expression( + exp.AlterTable, + this=this, + exists=exists, + actions=actions, + ) return self._parse_as_command(start) def _parse_merge(self) -> exp.Expression: diff --git a/sqlglot/planner.py b/sqlglot/planner.py index 40df39f..5fd96ef 100644 --- a/sqlglot/planner.py +++ b/sqlglot/planner.py @@ -175,7 +175,7 @@ class Step: } for projection in projections: for i, e in aggregate.group.items(): - for child, _, _ in projection.walk(): + for child, *_ in projection.walk(): if child == e: child.replace(exp.column(i, step.name)) aggregate.add_dependency(step) diff --git a/sqlglot/schema.py b/sqlglot/schema.py index f5d9f2b..8e39c7f 100644 --- a/sqlglot/schema.py +++ b/sqlglot/schema.py @@ -306,11 +306,11 @@ class MappingSchema(AbstractMappingSchema[t.Dict[str, str]], Schema): return self._type_mapping_cache[schema_type] -def ensure_schema(schema: t.Any) -> Schema: +def ensure_schema(schema: t.Any, dialect: DialectType = None) -> Schema: if isinstance(schema, Schema): return schema - return MappingSchema(schema) + return MappingSchema(schema, dialect=dialect) def ensure_column_mapping(mapping: t.Optional[ColumnMapping]): diff --git a/sqlglot/tokens.py b/sqlglot/tokens.py index eb3c08f..e5b44e7 100644 --- a/sqlglot/tokens.py +++ b/sqlglot/tokens.py @@ -252,6 +252,7 @@ class TokenType(AutoName): PERCENT = auto() PIVOT = auto() PLACEHOLDER = auto() + PRAGMA = auto() PRECEDING = auto() PRIMARY_KEY = auto() PROCEDURE = auto() @@ -346,7 +347,8 @@ class Token: self.token_type = token_type self.text = text self.line = line - self.col = max(col - len(text), 1) + self.col = col - len(text) + self.col = self.col if self.col > 1 else 1 self.comments = comments def __repr__(self) -> str: @@ -586,6 +588,7 @@ class Tokenizer(metaclass=_Tokenizer): "PARTITIONED_BY": TokenType.PARTITION_BY, "PERCENT": TokenType.PERCENT, "PIVOT": TokenType.PIVOT, + "PRAGMA": TokenType.PRAGMA, "PRECEDING": TokenType.PRECEDING, "PRIMARY KEY": TokenType.PRIMARY_KEY, "PROCEDURE": TokenType.PROCEDURE, @@ -654,6 +657,7 @@ class Tokenizer(metaclass=_Tokenizer): "LONG": TokenType.BIGINT, "BIGINT": TokenType.BIGINT, "INT8": TokenType.BIGINT, + "DEC": TokenType.DECIMAL, "DECIMAL": TokenType.DECIMAL, "MAP": TokenType.MAP, "NULLABLE": TokenType.NULLABLE, @@ -714,7 +718,7 @@ class Tokenizer(metaclass=_Tokenizer): "VACUUM": TokenType.COMMAND, } - WHITE_SPACE: t.Dict[str, TokenType] = { + WHITE_SPACE: t.Dict[t.Optional[str], TokenType] = { " ": TokenType.SPACE, "\t": TokenType.SPACE, "\n": TokenType.BREAK, @@ -813,11 +817,8 @@ class Tokenizer(metaclass=_Tokenizer): return self.sql[start:end] return "" - def _line_break(self, char: t.Optional[str]) -> bool: - return self.WHITE_SPACE.get(char) == TokenType.BREAK # type: ignore - def _advance(self, i: int = 1) -> None: - if self._line_break(self._char): + if self.WHITE_SPACE.get(self._char) is TokenType.BREAK: self._set_new_line() self._col += i @@ -939,7 +940,7 @@ class Tokenizer(metaclass=_Tokenizer): self._comments.append(self._text[comment_start_size : -comment_end_size + 1]) # type: ignore self._advance(comment_end_size - 1) else: - while not self._end and not self._line_break(self._peek): + while not self._end and not self.WHITE_SPACE.get(self._peek) is TokenType.BREAK: self._advance() self._comments.append(self._text[comment_start_size:]) # type: ignore diff --git a/tests/dialects/test_bigquery.py b/tests/dialects/test_bigquery.py index e731b50..e210292 100644 --- a/tests/dialects/test_bigquery.py +++ b/tests/dialects/test_bigquery.py @@ -6,6 +6,8 @@ class TestBigQuery(Validator): dialect = "bigquery" def test_bigquery(self): + self.validate_identity("SELECT AS STRUCT 1 AS a, 2 AS b") + self.validate_identity("SELECT AS VALUE STRUCT(1 AS a, 2 AS b)") self.validate_identity("SELECT STRUCT>(['2023-01-17'])") self.validate_identity("SELECT * FROM q UNPIVOT(values FOR quarter IN (b, c))") self.validate_identity( @@ -13,6 +15,15 @@ class TestBigQuery(Validator): ) self.validate_all("LEAST(x, y)", read={"sqlite": "MIN(x, y)"}) + self.validate_all("CAST(x AS CHAR)", write={"bigquery": "CAST(x AS STRING)"}) + self.validate_all("CAST(x AS NCHAR)", write={"bigquery": "CAST(x AS STRING)"}) + self.validate_all("CAST(x AS NVARCHAR)", write={"bigquery": "CAST(x AS STRING)"}) + self.validate_all( + "SELECT ARRAY(SELECT AS STRUCT 1 a, 2 b)", + write={ + "bigquery": "SELECT ARRAY(SELECT AS STRUCT 1 AS a, 2 AS b)", + }, + ) self.validate_all( "REGEXP_CONTAINS('foo', '.*')", read={"bigquery": "REGEXP_CONTAINS('foo', '.*')"}, diff --git a/tests/dialects/test_dialect.py b/tests/dialects/test_dialect.py index 6214c43..0805e9c 100644 --- a/tests/dialects/test_dialect.py +++ b/tests/dialects/test_dialect.py @@ -812,11 +812,13 @@ class TestDialect(Validator): self.validate_all( "JSON_EXTRACT(x, 'y')", read={ + "mysql": "JSON_EXTRACT(x, 'y')", "postgres": "x->'y'", "presto": "JSON_EXTRACT(x, 'y')", "starrocks": "x -> 'y'", }, write={ + "mysql": "JSON_EXTRACT(x, 'y')", "oracle": "JSON_EXTRACT(x, 'y')", "postgres": "x -> 'y'", "presto": "JSON_EXTRACT(x, 'y')", @@ -834,6 +836,17 @@ class TestDialect(Validator): "presto": "JSON_EXTRACT_SCALAR(x, 'y')", }, ) + self.validate_all( + "JSON_EXTRACT_SCALAR(stream_data, '$.data.results')", + read={ + "hive": "GET_JSON_OBJECT(stream_data, '$.data.results')", + "mysql": "stream_data ->> '$.data.results'", + }, + write={ + "hive": "GET_JSON_OBJECT(stream_data, '$.data.results')", + "mysql": "stream_data ->> '$.data.results'", + }, + ) self.validate_all( "JSONB_EXTRACT(x, 'y')", read={ @@ -1000,6 +1013,7 @@ class TestDialect(Validator): self.validate_identity("some.column LIKE 'foo' || another.column || 'bar' || LOWER(x)") self.validate_identity("some.column LIKE 'foo' + another.column + 'bar'") + self.validate_all("LIKE(x, 'z')", write={"": "'z' LIKE x"}) self.validate_all( "x ILIKE '%y'", read={ @@ -1196,9 +1210,13 @@ class TestDialect(Validator): ) self.validate_all( "SELECT x FROM y LIMIT 10", + read={ + "tsql": "SELECT TOP 10 x FROM y", + }, write={ "sqlite": "SELECT x FROM y LIMIT 10", "oracle": "SELECT x FROM y FETCH FIRST 10 ROWS ONLY", + "tsql": "SELECT x FROM y FETCH FIRST 10 ROWS ONLY", }, ) self.validate_all( @@ -1493,6 +1511,46 @@ SELECT }, ) + def test_logarithm(self): + self.validate_all( + "LOG(x)", + read={ + "duckdb": "LOG(x)", + "postgres": "LOG(x)", + "redshift": "LOG(x)", + "sqlite": "LOG(x)", + "teradata": "LOG(x)", + }, + ) + self.validate_all( + "LN(x)", + read={ + "bigquery": "LOG(x)", + "clickhouse": "LOG(x)", + "databricks": "LOG(x)", + "drill": "LOG(x)", + "hive": "LOG(x)", + "mysql": "LOG(x)", + "tsql": "LOG(x)", + }, + ) + self.validate_all( + "LOG(b, n)", + read={ + "bigquery": "LOG(n, b)", + "databricks": "LOG(b, n)", + "drill": "LOG(b, n)", + "hive": "LOG(b, n)", + "mysql": "LOG(b, n)", + "oracle": "LOG(b, n)", + "postgres": "LOG(b, n)", + "snowflake": "LOG(b, n)", + "spark": "LOG(b, n)", + "sqlite": "LOG(b, n)", + "tsql": "LOG(n, b)", + }, + ) + def test_count_if(self): self.validate_identity("COUNT_IF(DISTINCT cond)") diff --git a/tests/dialects/test_duckdb.py b/tests/dialects/test_duckdb.py index 1cabade..a15e6b4 100644 --- a/tests/dialects/test_duckdb.py +++ b/tests/dialects/test_duckdb.py @@ -125,6 +125,7 @@ class TestDuckDB(Validator): "SELECT a['x space'] FROM (SELECT {'x space': 1, 'y': 2, 'z': 3} AS a)" ) + self.validate_all("x ~ y", write={"duckdb": "REGEXP_MATCHES(x, y)"}) self.validate_all("SELECT * FROM 'x.y'", write={"duckdb": 'SELECT * FROM "x.y"'}) self.validate_all( "WITH 'x' AS (SELECT 1) SELECT * FROM x", diff --git a/tests/dialects/test_hive.py b/tests/dialects/test_hive.py index 8484805..0161f1e 100644 --- a/tests/dialects/test_hive.py +++ b/tests/dialects/test_hive.py @@ -246,6 +246,30 @@ class TestHive(Validator): ) def test_time(self): + self.validate_all( + "(UNIX_TIMESTAMP(y) - UNIX_TIMESTAMP(x)) * 1000", + read={ + "presto": "DATE_DIFF('millisecond', x, y)", + }, + ) + self.validate_all( + "UNIX_TIMESTAMP(y) - UNIX_TIMESTAMP(x)", + read={ + "presto": "DATE_DIFF('second', x, y)", + }, + ) + self.validate_all( + "(UNIX_TIMESTAMP(y) - UNIX_TIMESTAMP(x)) / 60", + read={ + "presto": "DATE_DIFF('minute', x, y)", + }, + ) + self.validate_all( + "(UNIX_TIMESTAMP(y) - UNIX_TIMESTAMP(x)) / 3600", + read={ + "presto": "DATE_DIFF('hour', x, y)", + }, + ) self.validate_all( "DATEDIFF(a, b)", write={ diff --git a/tests/dialects/test_mysql.py b/tests/dialects/test_mysql.py index 5f8560a..5059d05 100644 --- a/tests/dialects/test_mysql.py +++ b/tests/dialects/test_mysql.py @@ -16,6 +16,7 @@ class TestMySQL(Validator): ) def test_identity(self): + self.validate_identity("x ->> '$.name'") self.validate_identity("SELECT CAST(`a`.`b` AS INT) FROM foo") self.validate_identity("SELECT TRIM(LEADING 'bla' FROM ' XXX ')") self.validate_identity("SELECT TRIM(TRAILING 'bla' FROM ' XXX ')") @@ -424,6 +425,10 @@ COMMENT='客户账户表'""" show = self.validate_identity("SHOW INDEX FROM foo FROM bar") self.assertEqual(show.text("db"), "bar") + self.validate_all( + "SHOW INDEX FROM bar.foo", write={"mysql": "SHOW INDEX FROM foo FROM bar"} + ) + def test_show_db_like_or_where_sql(self): for key in [ "OPEN TABLES", diff --git a/tests/dialects/test_oracle.py b/tests/dialects/test_oracle.py index 4dc3f1b..80fa0f1 100644 --- a/tests/dialects/test_oracle.py +++ b/tests/dialects/test_oracle.py @@ -12,6 +12,24 @@ class TestOracle(Validator): self.validate_identity("SELECT e1.x, e2.x FROM e e1, e e2 WHERE e1.y = e2.y (+)") self.validate_identity("SELECT e1.x, e2.x FROM e e1, e e2 WHERE e1.y (+) = e2.y (+)") + def test_hints(self): + self.validate_identity("SELECT /*+ USE_NL(A B) */ A.COL_TEST FROM TABLE_A A, TABLE_B B") + self.validate_identity( + "SELECT /*+ INDEX(v.j jhist_employee_ix (employee_id start_date)) */ * FROM v" + ) + self.validate_identity( + "SELECT /*+ USE_NL(A B C) */ A.COL_TEST FROM TABLE_A A, TABLE_B B, TABLE_C C" + ) + self.validate_identity( + "SELECT /*+ NO_INDEX(employees emp_empid) */ employee_id FROM employees WHERE employee_id > 200" + ) + self.validate_identity( + "SELECT /*+ NO_INDEX_FFS(items item_order_ix) */ order_id FROM order_items items" + ) + self.validate_identity( + "SELECT /*+ LEADING(e j) */ * FROM employees e, departments d, job_history j WHERE e.department_id = d.department_id AND e.hire_date = j.start_date" + ) + def test_xml_table(self): self.validate_identity("XMLTABLE('x')") self.validate_identity("XMLTABLE('x' RETURNING SEQUENCE BY REF)") diff --git a/tests/dialects/test_postgres.py b/tests/dialects/test_postgres.py index c8dea95..a89ae30 100644 --- a/tests/dialects/test_postgres.py +++ b/tests/dialects/test_postgres.py @@ -194,8 +194,9 @@ class TestPostgres(Validator): write={ "postgres": "SELECT * FROM x FETCH FIRST 1 ROWS ONLY", "presto": "SELECT * FROM x FETCH FIRST 1 ROWS ONLY", - "hive": "SELECT * FROM x FETCH FIRST 1 ROWS ONLY", - "spark": "SELECT * FROM x FETCH FIRST 1 ROWS ONLY", + "hive": "SELECT * FROM x LIMIT 1", + "spark": "SELECT * FROM x LIMIT 1", + "sqlite": "SELECT * FROM x LIMIT 1", }, ) self.validate_all( diff --git a/tests/dialects/test_presto.py b/tests/dialects/test_presto.py index 0a9111c..1762e7a 100644 --- a/tests/dialects/test_presto.py +++ b/tests/dialects/test_presto.py @@ -369,6 +369,12 @@ class TestPresto(Validator): self.validate_identity("START TRANSACTION ISOLATION LEVEL REPEATABLE READ") self.validate_identity("APPROX_PERCENTILE(a, b, c, d)") + self.validate_all( + "SELECT JSON_OBJECT(KEY 'key1' VALUE 1, KEY 'key2' VALUE TRUE)", + write={ + "presto": "SELECT JSON_OBJECT('key1': 1, 'key2': TRUE)", + }, + ) self.validate_all( "ARRAY_AGG(x ORDER BY y DESC)", write={ diff --git a/tests/dialects/test_snowflake.py b/tests/dialects/test_snowflake.py index 5f6efce..940fa50 100644 --- a/tests/dialects/test_snowflake.py +++ b/tests/dialects/test_snowflake.py @@ -530,6 +530,7 @@ class TestSnowflake(Validator): "snowflake": "DATEADD(DAY, 5, CAST('2008-12-25' AS DATE))", }, ) + self.validate_identity("DATEDIFF(DAY, 5, CAST('2008-12-25' AS DATE))") def test_semi_structured_types(self): self.validate_identity("SELECT CAST(a AS VARIANT)") @@ -814,6 +815,7 @@ FROM persons AS p, LATERAL FLATTEN(input => p.c, path => 'contact') AS f, LATERA self.assertIsInstance(like, exp.LikeAny) self.assertIsInstance(ilike, exp.ILikeAny) + like.sql() # check that this doesn't raise def test_match_recognize(self): for row in ( diff --git a/tests/dialects/test_spark.py b/tests/dialects/test_spark.py index 5b21349..b12f272 100644 --- a/tests/dialects/test_spark.py +++ b/tests/dialects/test_spark.py @@ -212,6 +212,7 @@ TBLPROPERTIES ( self.validate_identity("TRIM(BOTH 'SL' FROM 'SSparkSQLS')") self.validate_identity("TRIM(LEADING 'SL' FROM 'SSparkSQLS')") self.validate_identity("TRIM(TRAILING 'SL' FROM 'SSparkSQLS')") + self.validate_identity("SPLIT(str, pattern, lim)") self.validate_all( "CAST(x AS TIMESTAMP)", read={"trino": "CAST(x AS TIMESTAMP(6) WITH TIME ZONE)"} diff --git a/tests/dialects/test_sqlite.py b/tests/dialects/test_sqlite.py index 98c4a79..fd9e52b 100644 --- a/tests/dialects/test_sqlite.py +++ b/tests/dialects/test_sqlite.py @@ -56,6 +56,11 @@ class TestSQLite(Validator): ) def test_sqlite(self): + self.validate_all("SELECT LIKE(y, x)", write={"sqlite": "SELECT x LIKE y"}) + self.validate_all("SELECT GLOB('*y*', 'xyz')", write={"sqlite": "SELECT 'xyz' GLOB '*y*'"}) + self.validate_all( + "SELECT LIKE('%y%', 'xyz', '')", write={"sqlite": "SELECT 'xyz' LIKE '%y%' ESCAPE ''"} + ) self.validate_all( "CURRENT_DATE", read={ diff --git a/tests/dialects/test_tsql.py b/tests/dialects/test_tsql.py index 4224a1e..60867be 100644 --- a/tests/dialects/test_tsql.py +++ b/tests/dialects/test_tsql.py @@ -7,6 +7,7 @@ class TestTSQL(Validator): def test_tsql(self): self.validate_identity("SELECT CASE WHEN a > 1 THEN b END") + self.validate_identity("SELECT * FROM taxi ORDER BY 1 OFFSET 0 ROWS FETCH NEXT 3 ROWS ONLY") self.validate_identity("END") self.validate_identity("@x") self.validate_identity("#x") @@ -567,15 +568,21 @@ WHERE write={"spark": "LAST_DAY(ADD_MONTHS(CURRENT_TIMESTAMP(), -1))"}, ) - def test_variables(self): - # In TSQL @, # can be used as a prefix for variables/identifiers - expr = parse_one("@x", read="tsql") - self.assertIsInstance(expr, exp.Column) - self.assertIsInstance(expr.this, exp.Identifier) - + def test_identifier_prefixes(self): expr = parse_one("#x", read="tsql") self.assertIsInstance(expr, exp.Column) self.assertIsInstance(expr.this, exp.Identifier) + self.assertEqual(expr.sql("tsql"), "#x") + + expr = parse_one("@x", read="tsql") + self.assertIsInstance(expr, exp.Parameter) + self.assertIsInstance(expr.this, exp.Var) + self.assertEqual(expr.sql("tsql"), "@x") + + table = parse_one("select * from @x", read="tsql").args["from"].expressions[0] + self.assertIsInstance(table, exp.Table) + self.assertIsInstance(table.this, exp.Parameter) + self.assertIsInstance(table.this.this, exp.Var) def test_system_time(self): self.validate_all( diff --git a/tests/fixtures/identity.sql b/tests/fixtures/identity.sql index 3551423..5fab65b 100644 --- a/tests/fixtures/identity.sql +++ b/tests/fixtures/identity.sql @@ -74,6 +74,7 @@ a.b.INT(1.234) INT(x / 100) time * 100 int * 100 +dec + 1 x IN (-1, 1) x IN ('a', 'a''a') x IN ((1)) @@ -114,7 +115,6 @@ SPLIT(SPLIT(referrer, 'utm_source=')[OFFSET(1)], "&")[OFFSET(0)] x[ORDINAL(1)][SAFE_OFFSET(2)] x GLOB '??-*' x GLOB y -LIKE(x, 'z') ILIKE(x, 'z') x LIKE SUBSTR('abc', 1, 1) x LIKE y @@ -272,6 +272,7 @@ SELECT a FROM test WHERE TRUE OR NOT EXISTS(SELECT * FROM x) SELECT a AS any, b AS some, c AS all, d AS exists FROM test WHERE a = ANY (SELECT 1) SELECT a FROM test WHERE a > ALL (SELECT 1) SELECT a FROM test WHERE (a, b) IN (SELECT 1, 2) +SELECT X((SELECT 1) UNION (SELECT 2)) SELECT a FROM test ORDER BY a SELECT a FROM test ORDER BY a, b SELECT x FROM tests ORDER BY a DESC, b DESC, c @@ -646,6 +647,7 @@ DROP TABLE a.b DROP TABLE IF EXISTS a DROP TABLE IF EXISTS a.b DROP TABLE a CASCADE +DROP TABLE s_hajo CASCADE CONSTRAINTS DROP VIEW a DROP VIEW a.b DROP VIEW IF EXISTS a @@ -697,7 +699,7 @@ WITH a AS (SELECT * FROM b) DELETE FROM a WITH a AS (SELECT * FROM b) CACHE TABLE a SELECT ? AS ? FROM x WHERE b BETWEEN ? AND ? GROUP BY ?, 1 LIMIT ? SELECT :hello, ? FROM x LIMIT :my_limit -SELECT * FROM x FETCH NEXT @take ROWS ONLY OFFSET @skip +SELECT * FROM x OFFSET @skip FETCH NEXT @take ROWS ONLY WITH a AS ((SELECT b.foo AS foo, b.bar AS bar FROM b) UNION ALL (SELECT c.foo AS foo, c.bar AS bar FROM c)) SELECT * FROM a WITH a AS ((SELECT 1 AS b) UNION ALL (SELECT 1 AS b)) SELECT * FROM a SELECT (WITH x AS (SELECT 1 AS y) SELECT * FROM x) AS z @@ -762,11 +764,13 @@ ALTER TABLE pets ADD CONSTRAINT pets_persons_fk FOREIGN KEY (owner_first_name, o ALTER TABLE pets ADD CONSTRAINT pets_name_not_cute_chk CHECK (LENGTH(name) < 20) ALTER TABLE people10m ADD CONSTRAINT dateWithinRange CHECK (birthDate > '1900-01-01') ALTER TABLE people10m ADD CONSTRAINT validIds CHECK (id > 1 AND id < 99999999) ENFORCED +ALTER TABLE s_ut ADD CONSTRAINT s_ut_uq UNIQUE hajo ALTER TABLE baa ADD CONSTRAINT boo PRIMARY KEY (x, y) NOT ENFORCED DEFERRABLE INITIALLY DEFERRED NORELY ALTER TABLE baa ADD CONSTRAINT boo PRIMARY KEY (x, y) NOT ENFORCED DEFERRABLE INITIALLY DEFERRED NORELY ALTER TABLE baa ADD CONSTRAINT boo FOREIGN KEY (x, y) REFERENCES persons ON UPDATE NO ACTION ON DELETE NO ACTION MATCH FULL ALTER TABLE a ADD PRIMARY KEY (x, y) NOT ENFORCED ALTER TABLE a ADD FOREIGN KEY (x, y) REFERENCES bla +SELECT partition FROM a SELECT end FROM a SELECT id FROM b.a AS a QUALIFY ROW_NUMBER() OVER (PARTITION BY br ORDER BY sadf DESC) = 1 SELECT LEFT.FOO FROM BLA AS LEFT @@ -776,3 +780,23 @@ SELECT * FROM x WHERE name ILIKE ANY XXX('a', 'b') SELECT * FROM x WHERE name LIKE ANY XXX('a', 'b') a OVERLAPS b GRANT INSERT ON foo TO bla +PRAGMA quick_check +PRAGMA QUICK_CHECK(0) +PRAGMA QUICK_CHECK('sqlite_master') +PRAGMA schema.quick_check +PRAGMA schema.QUICK_CHECK(0) +PRAGMA schema.QUICK_CHECK('sqlite_master') +PRAGMA synchronous = 2 +PRAGMA synchronous = FULL +PRAGMA memory_limit = '1GB' +PRAGMA schema.synchronous = 2 +PRAGMA schema.synchronous = FULL +PRAGMA schema.memory_limit = '1GB' +JSON_OBJECT() +JSON_OBJECT('key1': 1, 'key2': TRUE) +JSON_OBJECT('id': '5', 'fld1': 'bla', 'fld2': 'bar') +JSON_OBJECT('x': NULL, 'y': 1 NULL ON NULL) +JSON_OBJECT('x': NULL, 'y': 1 WITH UNIQUE KEYS) +JSON_OBJECT('x': NULL, 'y': 1 ABSENT ON NULL WITH UNIQUE KEYS) +JSON_OBJECT('x': 1 RETURNING VARCHAR(100)) +JSON_OBJECT('x': 1 RETURNING VARBINARY FORMAT JSON ENCODING UTF8) diff --git a/tests/fixtures/optimizer/canonicalize.sql b/tests/fixtures/optimizer/canonicalize.sql index 50fee7f..7582f3a 100644 --- a/tests/fixtures/optimizer/canonicalize.sql +++ b/tests/fixtures/optimizer/canonicalize.sql @@ -10,6 +10,9 @@ SELECT CAST(1 AS VARCHAR) AS "a" FROM "w" AS "w"; SELECT CAST(1 + 3.2 AS DOUBLE) AS a FROM w AS w; SELECT 1 + 3.2 AS "a" FROM "w" AS "w"; +SELECT CAST("2022-01-01" AS DATE) + INTERVAL '1' day; +SELECT CAST("2022-01-01" AS DATE) + INTERVAL '1' "day" AS "_col_0"; + -------------------------------------- -- Ensure boolean predicates -------------------------------------- diff --git a/tests/fixtures/optimizer/optimizer.sql b/tests/fixtures/optimizer/optimizer.sql index 0b5504d..c5112b2 100644 --- a/tests/fixtures/optimizer/optimizer.sql +++ b/tests/fixtures/optimizer/optimizer.sql @@ -461,3 +461,43 @@ SELECT * FROM "db1"."tbl" AS "tbl" CROSS JOIN "db2"."tbl" AS "tbl_2"; + +SELECT +*, +IFF( + IFF( + uploaded_at >= '2022-06-16', + 'workday', + 'bamboohr' + ) = source_system, + 1, + 0 +) AS sort_order +FROM +unioned +WHERE +( + source_system = 'workday' + AND '9999-01-01' >= '2022-06-16' +) +OR ( + source_system = 'bamboohr' + AND '0001-01-01' < '2022-06-16' +) QUALIFY ROW_NUMBER() OVER ( + PARTITION BY unique_filter_key + ORDER BY + sort_order DESC, + 1 +) = 1; +SELECT + *, + IFF( + IFF("unioned"."uploaded_at" >= '2022-06-16', 'workday', 'bamboohr') = "unioned"."source_system", + 1, + 0 + ) AS "sort_order" +FROM "unioned" AS "unioned" +WHERE + "unioned"."source_system" = 'bamboohr' OR "unioned"."source_system" = 'workday' +QUALIFY + ROW_NUMBER() OVER (PARTITION BY "unioned"."unique_filter_key" ORDER BY "unioned"."sort_order" DESC, 1) = 1; diff --git a/tests/fixtures/optimizer/qualify_columns.sql b/tests/fixtures/optimizer/qualify_columns.sql index 46c576a..df65e65 100644 --- a/tests/fixtures/optimizer/qualify_columns.sql +++ b/tests/fixtures/optimizer/qualify_columns.sql @@ -92,6 +92,12 @@ SELECT SUM(x.a) AS c FROM x AS x JOIN y AS y ON x.b = y.b GROUP BY y.c; SELECT COALESCE(x.a) AS d FROM x JOIN y ON x.b = y.b GROUP BY d; SELECT COALESCE(x.a) AS d FROM x AS x JOIN y AS y ON x.b = y.b GROUP BY COALESCE(x.a); +SELECT a + 1 AS d FROM x WHERE d > 1; +SELECT x.a + 1 AS d FROM x AS x WHERE x.a + 1 > 1; + +SELECT a + 1 AS d, d + 2 FROM x; +SELECT x.a + 1 AS d, x.a + 1 + 2 AS _col_1 FROM x AS x; + SELECT a AS a, b FROM x ORDER BY a; SELECT x.a AS a, x.b AS b FROM x AS x ORDER BY a; @@ -282,6 +288,30 @@ SELECT COALESCE(x.b, y.b) AS b FROM x AS x JOIN y AS y ON x.b = y.b WHERE COALES SELECT b FROM x JOIN y USING (b) JOIN z USING (b); SELECT COALESCE(x.b, y.b, z.b) AS b FROM x AS x JOIN y AS y ON x.b = y.b JOIN z AS z ON x.b = z.b; +SELECT * FROM x JOIN y USING(b); +SELECT x.a AS a, COALESCE(x.b, y.b) AS b, y.c AS c FROM x AS x JOIN y AS y ON x.b = y.b; + +SELECT x.* FROM x JOIN y USING(b); +SELECT x.a AS a, COALESCE(x.b, y.b) AS b FROM x AS x JOIN y AS y ON x.b = y.b; + +SELECT * FROM x LEFT JOIN y USING(b); +SELECT x.a AS a, COALESCE(x.b, y.b) AS b, y.c AS c FROM x AS x LEFT JOIN y AS y ON x.b = y.b; + +SELECT b FROM x JOIN y USING(b); +SELECT COALESCE(x.b, y.b) AS b FROM x AS x JOIN y AS y ON x.b = y.b; + +SELECT b, c FROM x JOIN y USING(b); +SELECT COALESCE(x.b, y.b) AS b, y.c AS c FROM x AS x JOIN y AS y ON x.b = y.b; + +SELECT b, c FROM y JOIN z USING(b, c); +SELECT COALESCE(y.b, z.b) AS b, COALESCE(y.c, z.c) AS c FROM y AS y JOIN z AS z ON y.b = z.b AND y.c = z.c; + +SELECT * FROM y JOIN z USING(b, c); +SELECT COALESCE(y.b, z.b) AS b, COALESCE(y.c, z.c) AS c FROM y AS y JOIN z AS z ON y.b = z.b AND y.c = z.c; + +SELECT * FROM y JOIN z USING(b, c) WHERE b = 2 AND c = 3; +SELECT COALESCE(y.b, z.b) AS b, COALESCE(y.c, z.c) AS c FROM y AS y JOIN z AS z ON y.b = z.b AND y.c = z.c WHERE COALESCE(y.b, z.b) = 2 AND COALESCE(y.c, z.c) = 3; + -------------------------------------- -- Hint with table reference -------------------------------------- diff --git a/tests/fixtures/optimizer/simplify.sql b/tests/fixtures/optimizer/simplify.sql index 4e9e70c..08e8700 100644 --- a/tests/fixtures/optimizer/simplify.sql +++ b/tests/fixtures/optimizer/simplify.sql @@ -141,6 +141,9 @@ A OR C; (A OR C) AND (A OR B OR C); A OR C; +A AND (B AND C) AND (D AND E); +A AND B AND C AND D AND E; + -------------------------------------- -- Elimination -------------------------------------- @@ -249,6 +252,12 @@ x = x; (('a' = 'a') AND TRUE and NOT FALSE); TRUE; +(x = y) and z; +x = y AND z; + +x * (1 - y); +x * (1 - y); + -------------------------------------- -- Literals -------------------------------------- @@ -310,7 +319,7 @@ TRUE; 8.0; 6 - 2 + 4 * 2 + a; -12 + a; +a + 12; a + 1 + 1 + 2; a + 4; @@ -367,7 +376,7 @@ interval '1' year + date '1998-01-01'; CAST('1999-01-01' AS DATE); interval '1' year + date '1998-01-01' + 3 * 7 * 4; -CAST('1999-01-01' AS DATE) + 84; +84 + CAST('1999-01-01' AS DATE); date '1998-12-01' - interval '90' foo; CAST('1998-12-01' AS DATE) - INTERVAL '90' foo; @@ -554,3 +563,6 @@ x <= 10 AND x >= 9; 1 < x AND 3 < x; x > 3; + +'a' < 'b'; +TRUE; diff --git a/tests/fixtures/optimizer/tpc-ds/tpc-ds.sql b/tests/fixtures/optimizer/tpc-ds/tpc-ds.sql new file mode 100644 index 0000000..b92ad37 --- /dev/null +++ b/tests/fixtures/optimizer/tpc-ds/tpc-ds.sql @@ -0,0 +1,12613 @@ +-------------------------------------- +-- TPC-DS 1 +-------------------------------------- +WITH customer_total_return + AS (SELECT sr_customer_sk AS ctr_customer_sk, + sr_store_sk AS ctr_store_sk, + Sum(sr_return_amt) AS ctr_total_return + FROM store_returns, + date_dim + WHERE sr_returned_date_sk = d_date_sk + AND d_year = 2001 + GROUP BY sr_customer_sk, + sr_store_sk) +SELECT c_customer_id +FROM customer_total_return ctr1, + store, + customer +WHERE ctr1.ctr_total_return > (SELECT Avg(ctr_total_return) * 1.2 + FROM customer_total_return ctr2 + WHERE ctr1.ctr_store_sk = ctr2.ctr_store_sk) + AND s_store_sk = ctr1.ctr_store_sk + AND s_state = 'TN' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY c_customer_id +LIMIT 100; +WITH "customer_total_return" AS ( + SELECT + "store_returns"."sr_customer_sk" AS "ctr_customer_sk", + "store_returns"."sr_store_sk" AS "ctr_store_sk", + SUM("store_returns"."sr_return_amt") AS "ctr_total_return" + FROM "store_returns" AS "store_returns" + JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_year" = 2001 + AND "store_returns"."sr_returned_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "store_returns"."sr_customer_sk", + "store_returns"."sr_store_sk" +), "_u_0" AS ( + SELECT + AVG("ctr2"."ctr_total_return") * 1.2 AS "_col_0", + "ctr2"."ctr_store_sk" AS "_u_1" + FROM "customer_total_return" AS "ctr2" + GROUP BY + "ctr2"."ctr_store_sk" +) +SELECT + "customer"."c_customer_id" AS "c_customer_id" +FROM "customer_total_return" AS "ctr1" +LEFT JOIN "_u_0" AS "_u_0" + ON "ctr1"."ctr_store_sk" = "_u_0"."_u_1" +JOIN "store" AS "store" + ON "store"."s_state" = 'TN' AND "store"."s_store_sk" = "ctr1"."ctr_store_sk" +JOIN "customer" AS "customer" + ON "ctr1"."ctr_customer_sk" = "customer"."c_customer_sk" +WHERE + "ctr1"."ctr_total_return" > "_u_0"."_col_0" +ORDER BY + "c_customer_id" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 2 +-------------------------------------- +WITH wscs + AS (SELECT sold_date_sk, + sales_price + FROM (SELECT ws_sold_date_sk sold_date_sk, + ws_ext_sales_price sales_price + FROM web_sales) + UNION ALL + (SELECT cs_sold_date_sk sold_date_sk, + cs_ext_sales_price sales_price + FROM catalog_sales)), + wswscs + AS (SELECT d_week_seq, + Sum(CASE + WHEN ( d_day_name = 'Sunday' ) THEN sales_price + ELSE NULL + END) sun_sales, + Sum(CASE + WHEN ( d_day_name = 'Monday' ) THEN sales_price + ELSE NULL + END) mon_sales, + Sum(CASE + WHEN ( d_day_name = 'Tuesday' ) THEN sales_price + ELSE NULL + END) tue_sales, + Sum(CASE + WHEN ( d_day_name = 'Wednesday' ) THEN sales_price + ELSE NULL + END) wed_sales, + Sum(CASE + WHEN ( d_day_name = 'Thursday' ) THEN sales_price + ELSE NULL + END) thu_sales, + Sum(CASE + WHEN ( d_day_name = 'Friday' ) THEN sales_price + ELSE NULL + END) fri_sales, + Sum(CASE + WHEN ( d_day_name = 'Saturday' ) THEN sales_price + ELSE NULL + END) sat_sales + FROM wscs, + date_dim + WHERE d_date_sk = sold_date_sk + GROUP BY d_week_seq) +SELECT d_week_seq1, + Round(sun_sales1 / sun_sales2, 2), + Round(mon_sales1 / mon_sales2, 2), + Round(tue_sales1 / tue_sales2, 2), + Round(wed_sales1 / wed_sales2, 2), + Round(thu_sales1 / thu_sales2, 2), + Round(fri_sales1 / fri_sales2, 2), + Round(sat_sales1 / sat_sales2, 2) +FROM (SELECT wswscs.d_week_seq d_week_seq1, + sun_sales sun_sales1, + mon_sales mon_sales1, + tue_sales tue_sales1, + wed_sales wed_sales1, + thu_sales thu_sales1, + fri_sales fri_sales1, + sat_sales sat_sales1 + FROM wswscs, + date_dim + WHERE date_dim.d_week_seq = wswscs.d_week_seq + AND d_year = 1998) y, + (SELECT wswscs.d_week_seq d_week_seq2, + sun_sales sun_sales2, + mon_sales mon_sales2, + tue_sales tue_sales2, + wed_sales wed_sales2, + thu_sales thu_sales2, + fri_sales fri_sales2, + sat_sales sat_sales2 + FROM wswscs, + date_dim + WHERE date_dim.d_week_seq = wswscs.d_week_seq + AND d_year = 1998 + 1) z +WHERE d_week_seq1 = d_week_seq2 - 53 +ORDER BY d_week_seq1; +WITH "wscs" AS ( + SELECT + "web_sales"."ws_sold_date_sk" AS "sold_date_sk", + "web_sales"."ws_ext_sales_price" AS "sales_price" + FROM "web_sales" AS "web_sales" + UNION ALL + ( + SELECT + "catalog_sales"."cs_sold_date_sk" AS "sold_date_sk", + "catalog_sales"."cs_ext_sales_price" AS "sales_price" + FROM "catalog_sales" AS "catalog_sales" + ) +), "wswscs" AS ( + SELECT + "date_dim"."d_week_seq" AS "d_week_seq", + SUM( + CASE WHEN "date_dim"."d_day_name" = 'Sunday' THEN "wscs"."sales_price" ELSE NULL END + ) AS "sun_sales", + SUM( + CASE WHEN "date_dim"."d_day_name" = 'Monday' THEN "wscs"."sales_price" ELSE NULL END + ) AS "mon_sales", + SUM( + CASE + WHEN "date_dim"."d_day_name" = 'Tuesday' + THEN "wscs"."sales_price" + ELSE NULL + END + ) AS "tue_sales", + SUM( + CASE + WHEN "date_dim"."d_day_name" = 'Wednesday' + THEN "wscs"."sales_price" + ELSE NULL + END + ) AS "wed_sales", + SUM( + CASE + WHEN "date_dim"."d_day_name" = 'Thursday' + THEN "wscs"."sales_price" + ELSE NULL + END + ) AS "thu_sales", + SUM( + CASE WHEN "date_dim"."d_day_name" = 'Friday' THEN "wscs"."sales_price" ELSE NULL END + ) AS "fri_sales", + SUM( + CASE + WHEN "date_dim"."d_day_name" = 'Saturday' + THEN "wscs"."sales_price" + ELSE NULL + END + ) AS "sat_sales" + FROM "wscs" + JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_date_sk" = "wscs"."sold_date_sk" + GROUP BY + "date_dim"."d_week_seq" +) +SELECT + "wswscs"."d_week_seq" AS "d_week_seq1", + ROUND("wswscs"."sun_sales" / "wswscs_2"."sun_sales", 2) AS "_col_1", + ROUND("wswscs"."mon_sales" / "wswscs_2"."mon_sales", 2) AS "_col_2", + ROUND("wswscs"."tue_sales" / "wswscs_2"."tue_sales", 2) AS "_col_3", + ROUND("wswscs"."wed_sales" / "wswscs_2"."wed_sales", 2) AS "_col_4", + ROUND("wswscs"."thu_sales" / "wswscs_2"."thu_sales", 2) AS "_col_5", + ROUND("wswscs"."fri_sales" / "wswscs_2"."fri_sales", 2) AS "_col_6", + ROUND("wswscs"."sat_sales" / "wswscs_2"."sat_sales", 2) AS "_col_7" +FROM "wswscs" +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_week_seq" = "wswscs"."d_week_seq" AND "date_dim"."d_year" = 1998 +JOIN "wswscs" AS "wswscs_2" + ON "wswscs"."d_week_seq" = "wswscs_2"."d_week_seq" - 53 +CROSS JOIN "date_dim" AS "date_dim_2" +WHERE + "date_dim_2"."d_week_seq" = "wswscs_2"."d_week_seq" AND "date_dim_2"."d_year" = 1999 +ORDER BY + "d_week_seq1"; + +-------------------------------------- +-- TPC-DS 3 +-------------------------------------- +SELECT dt.d_year, + item.i_brand_id brand_id, + item.i_brand brand, + Sum(ss_ext_discount_amt) sum_agg +FROM date_dim dt, + store_sales, + item +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manufact_id = 427 + AND dt.d_moy = 11 +GROUP BY dt.d_year, + item.i_brand, + item.i_brand_id +ORDER BY dt.d_year, + sum_agg DESC, + brand_id +LIMIT 100; +SELECT + "date_dim"."d_year" AS "d_year", + "item"."i_brand_id" AS "brand_id", + "item"."i_brand" AS "brand", + SUM("store_sales"."ss_ext_discount_amt") AS "sum_agg" +FROM "date_dim" AS "date_dim" +JOIN "store_sales" AS "store_sales" + ON "date_dim"."d_date_sk" = "store_sales"."ss_sold_date_sk" +JOIN "item" AS "item" + ON "item"."i_manufact_id" = 427 AND "store_sales"."ss_item_sk" = "item"."i_item_sk" +WHERE + "date_dim"."d_moy" = 11 +GROUP BY + "date_dim"."d_year", + "item"."i_brand", + "item"."i_brand_id" +ORDER BY + "date_dim"."d_year", + "sum_agg" DESC, + "brand_id" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 4 +-------------------------------------- +WITH year_total + AS (SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag customer_preferred_cust_flag + , + c_birth_country + customer_birth_country, + c_login customer_login, + c_email_address customer_email_address, + d_year dyear, + Sum(( ( ss_ext_list_price - ss_ext_wholesale_cost + - ss_ext_discount_amt + ) + + + ss_ext_sales_price ) / 2) year_total, + 's' sale_type + FROM customer, + store_sales, + date_dim + WHERE c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL + SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag + customer_preferred_cust_flag, + c_birth_country customer_birth_country + , + c_login + customer_login, + c_email_address customer_email_address + , + d_year dyear + , + Sum(( ( ( cs_ext_list_price + - cs_ext_wholesale_cost + - cs_ext_discount_amt + ) + + cs_ext_sales_price ) / 2 )) year_total, + 'c' sale_type + FROM customer, + catalog_sales, + date_dim + WHERE c_customer_sk = cs_bill_customer_sk + AND cs_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL + SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + c_preferred_cust_flag + customer_preferred_cust_flag, + c_birth_country customer_birth_country + , + c_login + customer_login, + c_email_address customer_email_address + , + d_year dyear + , + Sum(( ( ( ws_ext_list_price + - ws_ext_wholesale_cost + - ws_ext_discount_amt + ) + + ws_ext_sales_price ) / 2 )) year_total, + 'w' sale_type + FROM customer, + web_sales, + date_dim + WHERE c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year) +SELECT t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name, + t_s_secyear.customer_preferred_cust_flag +FROM year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_c_firstyear, + year_total t_c_secyear, + year_total t_w_firstyear, + year_total t_w_secyear +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_c_secyear.customer_id + AND t_s_firstyear.customer_id = t_c_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_c_firstyear.sale_type = 'c' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_c_secyear.sale_type = 'c' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.dyear = 2001 + AND t_s_secyear.dyear = 2001 + 1 + AND t_c_firstyear.dyear = 2001 + AND t_c_secyear.dyear = 2001 + 1 + AND t_w_firstyear.dyear = 2001 + AND t_w_secyear.dyear = 2001 + 1 + AND t_s_firstyear.year_total > 0 + AND t_c_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_c_firstyear.year_total > 0 THEN t_c_secyear.year_total / + t_c_firstyear.year_total + ELSE NULL + END > CASE + WHEN t_s_firstyear.year_total > 0 THEN + t_s_secyear.year_total / + t_s_firstyear.year_total + ELSE NULL + END + AND CASE + WHEN t_c_firstyear.year_total > 0 THEN t_c_secyear.year_total / + t_c_firstyear.year_total + ELSE NULL + END > CASE + WHEN t_w_firstyear.year_total > 0 THEN + t_w_secyear.year_total / + t_w_firstyear.year_total + ELSE NULL + END +ORDER BY t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name, + t_s_secyear.customer_preferred_cust_flag +LIMIT 100; +WITH "customer_2" AS ( + SELECT + "customer"."c_customer_sk" AS "c_customer_sk", + "customer"."c_customer_id" AS "c_customer_id", + "customer"."c_first_name" AS "c_first_name", + "customer"."c_last_name" AS "c_last_name", + "customer"."c_preferred_cust_flag" AS "c_preferred_cust_flag", + "customer"."c_birth_country" AS "c_birth_country", + "customer"."c_login" AS "c_login", + "customer"."c_email_address" AS "c_email_address" + FROM "customer" AS "customer" +), "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_year" AS "d_year" + FROM "date_dim" AS "date_dim" +), "cte" AS ( + SELECT + "customer"."c_customer_id" AS "customer_id", + "customer"."c_first_name" AS "customer_first_name", + "customer"."c_last_name" AS "customer_last_name", + "customer"."c_preferred_cust_flag" AS "customer_preferred_cust_flag", + "date_dim"."d_year" AS "dyear", + SUM( + ( + ( + "store_sales"."ss_ext_list_price" - "store_sales"."ss_ext_wholesale_cost" - "store_sales"."ss_ext_discount_amt" + ) + "store_sales"."ss_ext_sales_price" + ) / 2 + ) AS "year_total", + 's' AS "sale_type" + FROM "customer_2" AS "customer" + JOIN "store_sales" AS "store_sales" + ON "customer"."c_customer_sk" = "store_sales"."ss_customer_sk" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "customer"."c_customer_id", + "customer"."c_first_name", + "customer"."c_last_name", + "customer"."c_preferred_cust_flag", + "customer"."c_birth_country", + "customer"."c_login", + "customer"."c_email_address", + "date_dim"."d_year" +), "cte_2" AS ( + SELECT + "customer"."c_customer_id" AS "customer_id", + "customer"."c_first_name" AS "customer_first_name", + "customer"."c_last_name" AS "customer_last_name", + "customer"."c_preferred_cust_flag" AS "customer_preferred_cust_flag", + "date_dim"."d_year" AS "dyear", + SUM( + ( + ( + ( + "catalog_sales"."cs_ext_list_price" - "catalog_sales"."cs_ext_wholesale_cost" - "catalog_sales"."cs_ext_discount_amt" + ) + "catalog_sales"."cs_ext_sales_price" + ) / 2 + ) + ) AS "year_total", + 'c' AS "sale_type" + FROM "customer_2" AS "customer" + JOIN "catalog_sales" AS "catalog_sales" + ON "customer"."c_customer_sk" = "catalog_sales"."cs_bill_customer_sk" + JOIN "date_dim_2" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "customer"."c_customer_id", + "customer"."c_first_name", + "customer"."c_last_name", + "customer"."c_preferred_cust_flag", + "customer"."c_birth_country", + "customer"."c_login", + "customer"."c_email_address", + "date_dim"."d_year" +), "cte_3" AS ( + SELECT + "customer"."c_customer_id" AS "customer_id", + "customer"."c_first_name" AS "customer_first_name", + "customer"."c_last_name" AS "customer_last_name", + "customer"."c_preferred_cust_flag" AS "customer_preferred_cust_flag", + "date_dim"."d_year" AS "dyear", + SUM( + ( + ( + ( + "web_sales"."ws_ext_list_price" - "web_sales"."ws_ext_wholesale_cost" - "web_sales"."ws_ext_discount_amt" + ) + "web_sales"."ws_ext_sales_price" + ) / 2 + ) + ) AS "year_total", + 'w' AS "sale_type" + FROM "customer_2" AS "customer" + JOIN "web_sales" AS "web_sales" + ON "customer"."c_customer_sk" = "web_sales"."ws_bill_customer_sk" + JOIN "date_dim_2" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "customer"."c_customer_id", + "customer"."c_first_name", + "customer"."c_last_name", + "customer"."c_preferred_cust_flag", + "customer"."c_birth_country", + "customer"."c_login", + "customer"."c_email_address", + "date_dim"."d_year" +), "cte_4" AS ( + SELECT + "cte_2"."customer_id" AS "customer_id", + "cte_2"."customer_first_name" AS "customer_first_name", + "cte_2"."customer_last_name" AS "customer_last_name", + "cte_2"."customer_preferred_cust_flag" AS "customer_preferred_cust_flag", + "cte_2"."dyear" AS "dyear", + "cte_2"."year_total" AS "year_total", + "cte_2"."sale_type" AS "sale_type" + FROM "cte_2" AS "cte_2" + UNION ALL + SELECT + "cte_3"."customer_id" AS "customer_id", + "cte_3"."customer_first_name" AS "customer_first_name", + "cte_3"."customer_last_name" AS "customer_last_name", + "cte_3"."customer_preferred_cust_flag" AS "customer_preferred_cust_flag", + "cte_3"."dyear" AS "dyear", + "cte_3"."year_total" AS "year_total", + "cte_3"."sale_type" AS "sale_type" + FROM "cte_3" AS "cte_3" +), "year_total" AS ( + SELECT + "cte"."customer_id" AS "customer_id", + "cte"."customer_first_name" AS "customer_first_name", + "cte"."customer_last_name" AS "customer_last_name", + "cte"."customer_preferred_cust_flag" AS "customer_preferred_cust_flag", + "cte"."dyear" AS "dyear", + "cte"."year_total" AS "year_total", + "cte"."sale_type" AS "sale_type" + FROM "cte" AS "cte" + UNION ALL + SELECT + "cte_4"."customer_id" AS "customer_id", + "cte_4"."customer_first_name" AS "customer_first_name", + "cte_4"."customer_last_name" AS "customer_last_name", + "cte_4"."customer_preferred_cust_flag" AS "customer_preferred_cust_flag", + "cte_4"."dyear" AS "dyear", + "cte_4"."year_total" AS "year_total", + "cte_4"."sale_type" AS "sale_type" + FROM "cte_4" AS "cte_4" +) +SELECT + "t_s_secyear"."customer_id" AS "customer_id", + "t_s_secyear"."customer_first_name" AS "customer_first_name", + "t_s_secyear"."customer_last_name" AS "customer_last_name", + "t_s_secyear"."customer_preferred_cust_flag" AS "customer_preferred_cust_flag" +FROM "year_total" AS "t_s_firstyear" +JOIN "year_total" AS "t_s_secyear" + ON "t_s_secyear"."customer_id" = "t_s_firstyear"."customer_id" + AND "t_s_secyear"."dyear" = 2002 + AND "t_s_secyear"."sale_type" = 's' +JOIN "year_total" AS "t_c_secyear" + ON "t_c_secyear"."dyear" = 2002 + AND "t_c_secyear"."sale_type" = 'c' + AND "t_s_firstyear"."customer_id" = "t_c_secyear"."customer_id" +JOIN "year_total" AS "t_w_firstyear" + ON "t_s_firstyear"."customer_id" = "t_w_firstyear"."customer_id" + AND "t_w_firstyear"."dyear" = 2001 + AND "t_w_firstyear"."sale_type" = 'w' + AND "t_w_firstyear"."year_total" > 0 +JOIN "year_total" AS "t_w_secyear" + ON "t_s_firstyear"."customer_id" = "t_w_secyear"."customer_id" + AND "t_w_secyear"."dyear" = 2002 + AND "t_w_secyear"."sale_type" = 'w' +JOIN "year_total" AS "t_c_firstyear" + ON "t_c_firstyear"."dyear" = 2001 + AND "t_c_firstyear"."sale_type" = 'c' + AND "t_c_firstyear"."year_total" > 0 + AND "t_s_firstyear"."customer_id" = "t_c_firstyear"."customer_id" + AND CASE + WHEN "t_c_firstyear"."year_total" > 0 + THEN "t_c_secyear"."year_total" / "t_c_firstyear"."year_total" + ELSE NULL + END > CASE + WHEN "t_s_firstyear"."year_total" > 0 + THEN "t_s_secyear"."year_total" / "t_s_firstyear"."year_total" + ELSE NULL + END + AND CASE + WHEN "t_c_firstyear"."year_total" > 0 + THEN "t_c_secyear"."year_total" / "t_c_firstyear"."year_total" + ELSE NULL + END > CASE + WHEN "t_w_firstyear"."year_total" > 0 + THEN "t_w_secyear"."year_total" / "t_w_firstyear"."year_total" + ELSE NULL + END +WHERE + "t_s_firstyear"."dyear" = 2001 + AND "t_s_firstyear"."sale_type" = 's' + AND "t_s_firstyear"."year_total" > 0 +ORDER BY + "t_s_secyear"."customer_id", + "t_s_secyear"."customer_first_name", + "t_s_secyear"."customer_last_name", + "t_s_secyear"."customer_preferred_cust_flag" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 5 +-------------------------------------- +WITH ssr AS +( + SELECT s_store_id, + Sum(sales_price) AS sales, + Sum(profit) AS profit, + Sum(return_amt) AS returns1, + Sum(net_loss) AS profit_loss + FROM ( + SELECT ss_store_sk AS store_sk, + ss_sold_date_sk AS date_sk, + ss_ext_sales_price AS sales_price, + ss_net_profit AS profit, + Cast(0 AS DECIMAL(7,2)) AS return_amt, + Cast(0 AS DECIMAL(7,2)) AS net_loss + FROM store_sales + UNION ALL + SELECT sr_store_sk AS store_sk, + sr_returned_date_sk AS date_sk, + Cast(0 AS DECIMAL(7,2)) AS sales_price, + Cast(0 AS DECIMAL(7,2)) AS profit, + sr_return_amt AS return_amt, + sr_net_loss AS net_loss + FROM store_returns ) salesreturns, + date_dim, + store + WHERE date_sk = d_date_sk + AND d_date BETWEEN Cast('2002-08-22' AS DATE) AND ( + Cast('2002-08-22' AS DATE) + INTERVAL '14' day) + AND store_sk = s_store_sk + GROUP BY s_store_id) , csr AS +( + SELECT cp_catalog_page_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS returns1, + sum(net_loss) AS profit_loss + FROM ( + SELECT cs_catalog_page_sk AS page_sk, + cs_sold_date_sk AS date_sk, + cs_ext_sales_price AS sales_price, + cs_net_profit AS profit, + cast(0 AS decimal(7,2)) AS return_amt, + cast(0 AS decimal(7,2)) AS net_loss + FROM catalog_sales + UNION ALL + SELECT cr_catalog_page_sk AS page_sk, + cr_returned_date_sk AS date_sk, + cast(0 AS decimal(7,2)) AS sales_price, + cast(0 AS decimal(7,2)) AS profit, + cr_return_amount AS return_amt, + cr_net_loss AS net_loss + FROM catalog_returns ) salesreturns, + date_dim, + catalog_page + WHERE date_sk = d_date_sk + AND d_date BETWEEN cast('2002-08-22' AS date) AND ( + cast('2002-08-22' AS date) + INTERVAL '14' day) + AND page_sk = cp_catalog_page_sk + GROUP BY cp_catalog_page_id) , wsr AS +( + SELECT web_site_id, + sum(sales_price) AS sales, + sum(profit) AS profit, + sum(return_amt) AS returns1, + sum(net_loss) AS profit_loss + FROM ( + SELECT ws_web_site_sk AS wsr_web_site_sk, + ws_sold_date_sk AS date_sk, + ws_ext_sales_price AS sales_price, + ws_net_profit AS profit, + cast(0 AS decimal(7,2)) AS return_amt, + cast(0 AS decimal(7,2)) AS net_loss + FROM web_sales + UNION ALL + SELECT ws_web_site_sk AS wsr_web_site_sk, + wr_returned_date_sk AS date_sk, + cast(0 AS decimal(7,2)) AS sales_price, + cast(0 AS decimal(7,2)) AS profit, + wr_return_amt AS return_amt, + wr_net_loss AS net_loss + FROM web_returns + LEFT OUTER JOIN web_sales + ON ( + wr_item_sk = ws_item_sk + AND wr_order_number = ws_order_number) ) salesreturns, + date_dim, + web_site + WHERE date_sk = d_date_sk + AND d_date BETWEEN cast('2002-08-22' AS date) AND ( + cast('2002-08-22' AS date) + INTERVAL '14' day) + AND wsr_web_site_sk = web_site_sk + GROUP BY web_site_id) +SELECT + channel , + id , + sum(sales) AS sales , + sum(returns1) AS returns1 , + sum(profit) AS profit +FROM ( + SELECT 'store channel' AS channel , + 'store' + || s_store_id AS id , + sales , + returns1 , + (profit - profit_loss) AS profit + FROM ssr + UNION ALL + SELECT 'catalog channel' AS channel , + 'catalog_page' + || cp_catalog_page_id AS id , + sales , + returns1 , + (profit - profit_loss) AS profit + FROM csr + UNION ALL + SELECT 'web channel' AS channel , + 'web_site' + || web_site_id AS id , + sales , + returns1 , + (profit - profit_loss) AS profit + FROM wsr ) x +GROUP BY rollup (channel, id) +ORDER BY channel , + id +LIMIT 100; +WITH "salesreturns" AS ( + SELECT + "store_sales"."ss_store_sk" AS "store_sk", + "store_sales"."ss_sold_date_sk" AS "date_sk", + "store_sales"."ss_ext_sales_price" AS "sales_price", + "store_sales"."ss_net_profit" AS "profit", + CAST(0 AS DECIMAL(7, 2)) AS "return_amt", + CAST(0 AS DECIMAL(7, 2)) AS "net_loss" + FROM "store_sales" AS "store_sales" + UNION ALL + SELECT + "store_returns"."sr_store_sk" AS "store_sk", + "store_returns"."sr_returned_date_sk" AS "date_sk", + CAST(0 AS DECIMAL(7, 2)) AS "sales_price", + CAST(0 AS DECIMAL(7, 2)) AS "profit", + "store_returns"."sr_return_amt" AS "return_amt", + "store_returns"."sr_net_loss" AS "net_loss" + FROM "store_returns" AS "store_returns" +), "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_date" AS "d_date" + FROM "date_dim" AS "date_dim" + WHERE + CAST("date_dim"."d_date" AS DATE) <= CAST('2002-09-05' AS DATE) + AND CAST("date_dim"."d_date" AS DATE) >= CAST('2002-08-22' AS DATE) +), "ssr" AS ( + SELECT + "store"."s_store_id" AS "s_store_id", + SUM("salesreturns"."sales_price") AS "sales", + SUM("salesreturns"."profit") AS "profit", + SUM("salesreturns"."return_amt") AS "returns1", + SUM("salesreturns"."net_loss") AS "profit_loss" + FROM "salesreturns" AS "salesreturns" + JOIN "date_dim_2" AS "date_dim" + ON "salesreturns"."date_sk" = "date_dim"."d_date_sk" + JOIN "store" AS "store" + ON "salesreturns"."store_sk" = "store"."s_store_sk" + GROUP BY + "store"."s_store_id" +), "salesreturns_2" AS ( + SELECT + "catalog_sales"."cs_catalog_page_sk" AS "page_sk", + "catalog_sales"."cs_sold_date_sk" AS "date_sk", + "catalog_sales"."cs_ext_sales_price" AS "sales_price", + "catalog_sales"."cs_net_profit" AS "profit", + CAST(0 AS DECIMAL(7, 2)) AS "return_amt", + CAST(0 AS DECIMAL(7, 2)) AS "net_loss" + FROM "catalog_sales" AS "catalog_sales" + UNION ALL + SELECT + "catalog_returns"."cr_catalog_page_sk" AS "page_sk", + "catalog_returns"."cr_returned_date_sk" AS "date_sk", + CAST(0 AS DECIMAL(7, 2)) AS "sales_price", + CAST(0 AS DECIMAL(7, 2)) AS "profit", + "catalog_returns"."cr_return_amount" AS "return_amt", + "catalog_returns"."cr_net_loss" AS "net_loss" + FROM "catalog_returns" AS "catalog_returns" +), "csr" AS ( + SELECT + "catalog_page"."cp_catalog_page_id" AS "cp_catalog_page_id", + SUM("salesreturns"."sales_price") AS "sales", + SUM("salesreturns"."profit") AS "profit", + SUM("salesreturns"."return_amt") AS "returns1", + SUM("salesreturns"."net_loss") AS "profit_loss" + FROM "salesreturns_2" AS "salesreturns" + JOIN "date_dim_2" AS "date_dim" + ON "salesreturns"."date_sk" = "date_dim"."d_date_sk" + JOIN "catalog_page" AS "catalog_page" + ON "salesreturns"."page_sk" = "catalog_page"."cp_catalog_page_sk" + GROUP BY + "catalog_page"."cp_catalog_page_id" +), "salesreturns_3" AS ( + SELECT + "web_sales"."ws_web_site_sk" AS "wsr_web_site_sk", + "web_sales"."ws_sold_date_sk" AS "date_sk", + "web_sales"."ws_ext_sales_price" AS "sales_price", + "web_sales"."ws_net_profit" AS "profit", + CAST(0 AS DECIMAL(7, 2)) AS "return_amt", + CAST(0 AS DECIMAL(7, 2)) AS "net_loss" + FROM "web_sales" AS "web_sales" + UNION ALL + SELECT + "web_sales"."ws_web_site_sk" AS "wsr_web_site_sk", + "web_returns"."wr_returned_date_sk" AS "date_sk", + CAST(0 AS DECIMAL(7, 2)) AS "sales_price", + CAST(0 AS DECIMAL(7, 2)) AS "profit", + "web_returns"."wr_return_amt" AS "return_amt", + "web_returns"."wr_net_loss" AS "net_loss" + FROM "web_returns" AS "web_returns" + LEFT JOIN "web_sales" AS "web_sales" + ON "web_returns"."wr_item_sk" = "web_sales"."ws_item_sk" + AND "web_returns"."wr_order_number" = "web_sales"."ws_order_number" +), "wsr" AS ( + SELECT + "web_site"."web_site_id" AS "web_site_id", + SUM("salesreturns"."sales_price") AS "sales", + SUM("salesreturns"."profit") AS "profit", + SUM("salesreturns"."return_amt") AS "returns1", + SUM("salesreturns"."net_loss") AS "profit_loss" + FROM "salesreturns_3" AS "salesreturns" + JOIN "date_dim_2" AS "date_dim" + ON "salesreturns"."date_sk" = "date_dim"."d_date_sk" + JOIN "web_site" AS "web_site" + ON "salesreturns"."wsr_web_site_sk" = "web_site"."web_site_sk" + GROUP BY + "web_site"."web_site_id" +), "cte_10" AS ( + SELECT + 'catalog channel' AS "channel", + 'catalog_page' || "csr"."cp_catalog_page_id" AS "id", + "csr"."sales" AS "sales", + "csr"."returns1" AS "returns1", + "csr"."profit" - "csr"."profit_loss" AS "profit" + FROM "csr" + UNION ALL + SELECT + 'web channel' AS "channel", + 'web_site' || "wsr"."web_site_id" AS "id", + "wsr"."sales" AS "sales", + "wsr"."returns1" AS "returns1", + "wsr"."profit" - "wsr"."profit_loss" AS "profit" + FROM "wsr" +), "x" AS ( + SELECT + 'store channel' AS "channel", + 'store' || "ssr"."s_store_id" AS "id", + "ssr"."sales" AS "sales", + "ssr"."returns1" AS "returns1", + "ssr"."profit" - "ssr"."profit_loss" AS "profit" + FROM "ssr" + UNION ALL + SELECT + "cte_10"."channel" AS "channel", + "cte_10"."id" AS "id", + "cte_10"."sales" AS "sales", + "cte_10"."returns1" AS "returns1", + "cte_10"."profit" AS "profit" + FROM "cte_10" AS "cte_10" +) +SELECT + "x"."channel" AS "channel", + "x"."id" AS "id", + SUM("x"."sales") AS "sales", + SUM("x"."returns1") AS "returns1", + SUM("x"."profit") AS "profit" +FROM "x" AS "x" +GROUP BY +ROLLUP ( + "x"."channel", + "x"."id" +) +ORDER BY + "channel", + "id" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 6 +-------------------------------------- +SELECT a.ca_state state, + Count(*) cnt +FROM customer_address a, + customer c, + store_sales s, + date_dim d, + item i +WHERE a.ca_address_sk = c.c_current_addr_sk + AND c.c_customer_sk = s.ss_customer_sk + AND s.ss_sold_date_sk = d.d_date_sk + AND s.ss_item_sk = i.i_item_sk + AND d.d_month_seq = (SELECT DISTINCT ( d_month_seq ) + FROM date_dim + WHERE d_year = 1998 + AND d_moy = 7) + AND i.i_current_price > 1.2 * (SELECT Avg(j.i_current_price) + FROM item j + WHERE j.i_category = i.i_category) +GROUP BY a.ca_state +HAVING Count(*) >= 10 +ORDER BY cnt +LIMIT 100; +WITH "_u_0" AS ( + SELECT DISTINCT + "date_dim"."d_month_seq" AS "_col_0" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_moy" = 7 AND "date_dim"."d_year" = 1998 +), "_u_1" AS ( + SELECT + AVG("j"."i_current_price") AS "_col_0", + "j"."i_category" AS "_u_2" + FROM "item" AS "j" + GROUP BY + "j"."i_category" +) +SELECT + "customer_address"."ca_state" AS "state", + COUNT(*) AS "cnt" +FROM "customer_address" AS "customer_address" +CROSS JOIN "_u_0" AS "_u_0" +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_month_seq" = "_u_0"."_col_0" +JOIN "store_sales" AS "store_sales" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" +JOIN "item" AS "item" + ON "store_sales"."ss_item_sk" = "item"."i_item_sk" +LEFT JOIN "_u_1" AS "_u_1" + ON "_u_1"."_u_2" = "item"."i_category" +JOIN "customer" AS "customer" + ON "customer"."c_customer_sk" = "store_sales"."ss_customer_sk" + AND "customer_address"."ca_address_sk" = "customer"."c_current_addr_sk" +WHERE + "item"."i_current_price" > 1.2 * "_u_1"."_col_0" +GROUP BY + "customer_address"."ca_state" +HAVING + COUNT(*) >= 10 +ORDER BY + "cnt" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 7 +-------------------------------------- +SELECT i_item_id, + Avg(ss_quantity) agg1, + Avg(ss_list_price) agg2, + Avg(ss_coupon_amt) agg3, + Avg(ss_sales_price) agg4 +FROM store_sales, + customer_demographics, + date_dim, + item, + promotion +WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND ss_cdemo_sk = cd_demo_sk + AND ss_promo_sk = p_promo_sk + AND cd_gender = 'F' + AND cd_marital_status = 'W' + AND cd_education_status = '2 yr Degree' + AND ( p_channel_email = 'N' + OR p_channel_event = 'N' ) + AND d_year = 1998 +GROUP BY i_item_id +ORDER BY i_item_id +LIMIT 100; +SELECT + "item"."i_item_id" AS "i_item_id", + AVG("store_sales"."ss_quantity") AS "agg1", + AVG("store_sales"."ss_list_price") AS "agg2", + AVG("store_sales"."ss_coupon_amt") AS "agg3", + AVG("store_sales"."ss_sales_price") AS "agg4" +FROM "store_sales" AS "store_sales" +JOIN "customer_demographics" AS "customer_demographics" + ON "customer_demographics"."cd_education_status" = '2 yr Degree' + AND "customer_demographics"."cd_gender" = 'F' + AND "customer_demographics"."cd_marital_status" = 'W' + AND "store_sales"."ss_cdemo_sk" = "customer_demographics"."cd_demo_sk" +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_year" = 1998 + AND "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" +JOIN "item" AS "item" + ON "store_sales"."ss_item_sk" = "item"."i_item_sk" +JOIN "promotion" AS "promotion" + ON ( + "promotion"."p_channel_email" = 'N' OR "promotion"."p_channel_event" = 'N' + ) + AND "store_sales"."ss_promo_sk" = "promotion"."p_promo_sk" +GROUP BY + "item"."i_item_id" +ORDER BY + "i_item_id" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 8 +-------------------------------------- +SELECT s_store_name, + Sum(ss_net_profit) +FROM store_sales, + date_dim, + store, + (SELECT ca_zip + FROM (SELECT Substr(ca_zip, 1, 5) ca_zip + FROM customer_address + WHERE Substr(ca_zip, 1, 5) IN ( '67436', '26121', '38443', + '63157', + '68856', '19485', '86425', + '26741', + '70991', '60899', '63573', + '47556', + '56193', '93314', '87827', + '62017', + '85067', '95390', '48091', + '10261', + '81845', '41790', '42853', + '24675', + '12840', '60065', '84430', + '57451', + '24021', '91735', '75335', + '71935', + '34482', '56943', '70695', + '52147', + '56251', '28411', '86653', + '23005', + '22478', '29031', '34398', + '15365', + '42460', '33337', '59433', + '73943', + '72477', '74081', '74430', + '64605', + '39006', '11226', '49057', + '97308', + '42663', '18187', '19768', + '43454', + '32147', '76637', '51975', + '11181', + '45630', '33129', '45995', + '64386', + '55522', '26697', '20963', + '35154', + '64587', '49752', '66386', + '30586', + '59286', '13177', '66646', + '84195', + '74316', '36853', '32927', + '12469', + '11904', '36269', '17724', + '55346', + '12595', '53988', '65439', + '28015', + '63268', '73590', '29216', + '82575', + '69267', '13805', '91678', + '79460', + '94152', '14961', '15419', + '48277', + '62588', '55493', '28360', + '14152', + '55225', '18007', '53705', + '56573', + '80245', '71769', '57348', + '36845', + '13039', '17270', '22363', + '83474', + '25294', '43269', '77666', + '15488', + '99146', '64441', '43338', + '38736', + '62754', '48556', '86057', + '23090', + '38114', '66061', '18910', + '84385', + '23600', '19975', '27883', + '65719', + '19933', '32085', '49731', + '40473', + '27190', '46192', '23949', + '44738', + '12436', '64794', '68741', + '15333', + '24282', '49085', '31844', + '71156', + '48441', '17100', '98207', + '44982', + '20277', '71496', '96299', + '37583', + '22206', '89174', '30589', + '61924', + '53079', '10976', '13104', + '42794', + '54772', '15809', '56434', + '39975', + '13874', '30753', '77598', + '78229', + '59478', '12345', '55547', + '57422', + '42600', '79444', '29074', + '29752', + '21676', '32096', '43044', + '39383', + '37296', '36295', '63077', + '16572', + '31275', '18701', '40197', + '48242', + '27219', '49865', '84175', + '30446', + '25165', '13807', '72142', + '70499', + '70464', '71429', '18111', + '70857', + '29545', '36425', '52706', + '36194', + '42963', '75068', '47921', + '74763', + '90990', '89456', '62073', + '88397', + '73963', '75885', '62657', + '12530', + '81146', '57434', '25099', + '41429', + '98441', '48713', '52552', + '31667', + '14072', '13903', '44709', + '85429', + '58017', '38295', '44875', + '73541', + '30091', '12707', '23762', + '62258', + '33247', '78722', '77431', + '14510', + '35656', '72428', '92082', + '35267', + '43759', '24354', '90952', + '11512', + '21242', '22579', '56114', + '32339', + '52282', '41791', '24484', + '95020', + '28408', '99710', '11899', + '43344', + '72915', '27644', '62708', + '74479', + '17177', '32619', '12351', + '91339', + '31169', '57081', '53522', + '16712', + '34419', '71779', '44187', + '46206', + '96099', '61910', '53664', + '12295', + '31837', '33096', '10813', + '63048', + '31732', '79118', '73084', + '72783', + '84952', '46965', '77956', + '39815', + '32311', '75329', '48156', + '30826', + '49661', '13736', '92076', + '74865', + '88149', '92397', '52777', + '68453', + '32012', '21222', '52721', + '24626', + '18210', '42177', '91791', + '75251', + '82075', '44372', '45542', + '20609', + '60115', '17362', '22750', + '90434', + '31852', '54071', '33762', + '14705', + '40718', '56433', '30996', + '40657', + '49056', '23585', '66455', + '41021', + '74736', '72151', '37007', + '21729', + '60177', '84558', '59027', + '93855', + '60022', '86443', '19541', + '86886', + '30532', '39062', '48532', + '34713', + '52077', '22564', '64638', + '15273', + '31677', '36138', '62367', + '60261', + '80213', '42818', '25113', + '72378', + '69802', '69096', '55443', + '28820', + '13848', '78258', '37490', + '30556', + '77380', '28447', '44550', + '26791', + '70609', '82182', '33306', + '43224', + '22322', '86959', '68519', + '14308', + '46501', '81131', '34056', + '61991', + '19896', '87804', '65774', + '92564' ) + INTERSECT + SELECT ca_zip + FROM (SELECT Substr(ca_zip, 1, 5) ca_zip, + Count(*) cnt + FROM customer_address, + customer + WHERE ca_address_sk = c_current_addr_sk + AND c_preferred_cust_flag = 'Y' + GROUP BY ca_zip + HAVING Count(*) > 10)A1)A2) V1 +WHERE ss_store_sk = s_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_qoy = 2 + AND d_year = 2000 + AND ( Substr(s_zip, 1, 2) = Substr(V1.ca_zip, 1, 2) ) +GROUP BY s_store_name +ORDER BY s_store_name +LIMIT 100; +WITH "a1" AS ( + SELECT + SUBSTR("customer_address"."ca_zip", 1, 5) AS "ca_zip" + FROM "customer_address" AS "customer_address", "customer" AS "customer" + WHERE + "customer"."c_preferred_cust_flag" = 'Y' + AND "customer_address"."ca_address_sk" = "customer"."c_current_addr_sk" + GROUP BY + "customer_address"."ca_zip" + HAVING + COUNT(*) > 10 +), "a2" AS ( + SELECT + SUBSTR("customer_address"."ca_zip", 1, 5) AS "ca_zip" + FROM "customer_address" AS "customer_address" + WHERE + SUBSTR("customer_address"."ca_zip", 1, 5) IN ('67436', '26121', '38443', '63157', '68856', '19485', '86425', '26741', '70991', '60899', '63573', '47556', '56193', '93314', '87827', '62017', '85067', '95390', '48091', '10261', '81845', '41790', '42853', '24675', '12840', '60065', '84430', '57451', '24021', '91735', '75335', '71935', '34482', '56943', '70695', '52147', '56251', '28411', '86653', '23005', '22478', '29031', '34398', '15365', '42460', '33337', '59433', '73943', '72477', '74081', '74430', '64605', '39006', '11226', '49057', '97308', '42663', '18187', '19768', '43454', '32147', '76637', '51975', '11181', '45630', '33129', '45995', '64386', '55522', '26697', '20963', '35154', '64587', '49752', '66386', '30586', '59286', '13177', '66646', '84195', '74316', '36853', '32927', '12469', '11904', '36269', '17724', '55346', '12595', '53988', '65439', '28015', '63268', '73590', '29216', '82575', '69267', '13805', '91678', '79460', '94152', '14961', '15419', '48277', '62588', '55493', '28360', '14152', '55225', '18007', '53705', '56573', '80245', '71769', '57348', '36845', '13039', '17270', '22363', '83474', '25294', '43269', '77666', '15488', '99146', '64441', '43338', '38736', '62754', '48556', '86057', '23090', '38114', '66061', '18910', '84385', '23600', '19975', '27883', '65719', '19933', '32085', '49731', '40473', '27190', '46192', '23949', '44738', '12436', '64794', '68741', '15333', '24282', '49085', '31844', '71156', '48441', '17100', '98207', '44982', '20277', '71496', '96299', '37583', '22206', '89174', '30589', '61924', '53079', '10976', '13104', '42794', '54772', '15809', '56434', '39975', '13874', '30753', '77598', '78229', '59478', '12345', '55547', '57422', '42600', '79444', '29074', '29752', '21676', '32096', '43044', '39383', '37296', '36295', '63077', '16572', '31275', '18701', '40197', '48242', '27219', '49865', '84175', '30446', '25165', '13807', '72142', '70499', '70464', '71429', '18111', '70857', '29545', '36425', '52706', '36194', '42963', '75068', '47921', '74763', '90990', '89456', '62073', '88397', '73963', '75885', '62657', '12530', '81146', '57434', '25099', '41429', '98441', '48713', '52552', '31667', '14072', '13903', '44709', '85429', '58017', '38295', '44875', '73541', '30091', '12707', '23762', '62258', '33247', '78722', '77431', '14510', '35656', '72428', '92082', '35267', '43759', '24354', '90952', '11512', '21242', '22579', '56114', '32339', '52282', '41791', '24484', '95020', '28408', '99710', '11899', '43344', '72915', '27644', '62708', '74479', '17177', '32619', '12351', '91339', '31169', '57081', '53522', '16712', '34419', '71779', '44187', '46206', '96099', '61910', '53664', '12295', '31837', '33096', '10813', '63048', '31732', '79118', '73084', '72783', '84952', '46965', '77956', '39815', '32311', '75329', '48156', '30826', '49661', '13736', '92076', '74865', '88149', '92397', '52777', '68453', '32012', '21222', '52721', '24626', '18210', '42177', '91791', '75251', '82075', '44372', '45542', '20609', '60115', '17362', '22750', '90434', '31852', '54071', '33762', '14705', '40718', '56433', '30996', '40657', '49056', '23585', '66455', '41021', '74736', '72151', '37007', '21729', '60177', '84558', '59027', '93855', '60022', '86443', '19541', '86886', '30532', '39062', '48532', '34713', '52077', '22564', '64638', '15273', '31677', '36138', '62367', '60261', '80213', '42818', '25113', '72378', '69802', '69096', '55443', '28820', '13848', '78258', '37490', '30556', '77380', '28447', '44550', '26791', '70609', '82182', '33306', '43224', '22322', '86959', '68519', '14308', '46501', '81131', '34056', '61991', '19896', '87804', '65774', '92564') + INTERSECT + SELECT + "a1"."ca_zip" AS "ca_zip" + FROM "a1" AS "a1" +) +SELECT + "store"."s_store_name" AS "s_store_name", + SUM("store_sales"."ss_net_profit") AS "_col_1" +FROM "store_sales" AS "store_sales" +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_qoy" = 2 + AND "date_dim"."d_year" = 2000 + AND "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" +JOIN "store" AS "store" + ON "store_sales"."ss_store_sk" = "store"."s_store_sk" +JOIN "a2" AS "a2" + ON SUBSTR("store"."s_zip", 1, 2) = SUBSTR("a2"."ca_zip", 1, 2) +GROUP BY + "store"."s_store_name" +ORDER BY + "s_store_name" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 9 +-------------------------------------- +SELECT CASE + WHEN (SELECT Count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 1 AND 20) > 3672 THEN + (SELECT Avg(ss_ext_list_price) + FROM store_sales + WHERE + ss_quantity BETWEEN 1 AND 20) + ELSE (SELECT Avg(ss_net_profit) + FROM store_sales + WHERE ss_quantity BETWEEN 1 AND 20) + END bucket1, + CASE + WHEN (SELECT Count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 40) > 3392 THEN + (SELECT Avg(ss_ext_list_price) + FROM store_sales + WHERE + ss_quantity BETWEEN 21 AND 40) + ELSE (SELECT Avg(ss_net_profit) + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 40) + END bucket2, + CASE + WHEN (SELECT Count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 41 AND 60) > 32784 THEN + (SELECT Avg(ss_ext_list_price) + FROM store_sales + WHERE + ss_quantity BETWEEN 41 AND 60) + ELSE (SELECT Avg(ss_net_profit) + FROM store_sales + WHERE ss_quantity BETWEEN 41 AND 60) + END bucket3, + CASE + WHEN (SELECT Count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 61 AND 80) > 26032 THEN + (SELECT Avg(ss_ext_list_price) + FROM store_sales + WHERE + ss_quantity BETWEEN 61 AND 80) + ELSE (SELECT Avg(ss_net_profit) + FROM store_sales + WHERE ss_quantity BETWEEN 61 AND 80) + END bucket4, + CASE + WHEN (SELECT Count(*) + FROM store_sales + WHERE ss_quantity BETWEEN 81 AND 100) > 23982 THEN + (SELECT Avg(ss_ext_list_price) + FROM store_sales + WHERE + ss_quantity BETWEEN 81 AND 100) + ELSE (SELECT Avg(ss_net_profit) + FROM store_sales + WHERE ss_quantity BETWEEN 81 AND 100) + END bucket5 +FROM reason +WHERE r_reason_sk = 1; +WITH "_u_0" AS ( + SELECT + COUNT(*) AS "_col_0" + FROM "store_sales" AS "store_sales" + WHERE + "store_sales"."ss_quantity" <= 20 AND "store_sales"."ss_quantity" >= 1 +), "_u_1" AS ( + SELECT + AVG("store_sales"."ss_ext_list_price") AS "_col_0" + FROM "store_sales" AS "store_sales" + WHERE + "store_sales"."ss_quantity" <= 20 AND "store_sales"."ss_quantity" >= 1 +), "_u_2" AS ( + SELECT + AVG("store_sales"."ss_net_profit") AS "_col_0" + FROM "store_sales" AS "store_sales" + WHERE + "store_sales"."ss_quantity" <= 20 AND "store_sales"."ss_quantity" >= 1 +), "_u_3" AS ( + SELECT + COUNT(*) AS "_col_0" + FROM "store_sales" AS "store_sales" + WHERE + "store_sales"."ss_quantity" <= 40 AND "store_sales"."ss_quantity" >= 21 +), "_u_4" AS ( + SELECT + AVG("store_sales"."ss_ext_list_price") AS "_col_0" + FROM "store_sales" AS "store_sales" + WHERE + "store_sales"."ss_quantity" <= 40 AND "store_sales"."ss_quantity" >= 21 +), "_u_5" AS ( + SELECT + AVG("store_sales"."ss_net_profit") AS "_col_0" + FROM "store_sales" AS "store_sales" + WHERE + "store_sales"."ss_quantity" <= 40 AND "store_sales"."ss_quantity" >= 21 +), "_u_6" AS ( + SELECT + COUNT(*) AS "_col_0" + FROM "store_sales" AS "store_sales" + WHERE + "store_sales"."ss_quantity" <= 60 AND "store_sales"."ss_quantity" >= 41 +), "_u_7" AS ( + SELECT + AVG("store_sales"."ss_ext_list_price") AS "_col_0" + FROM "store_sales" AS "store_sales" + WHERE + "store_sales"."ss_quantity" <= 60 AND "store_sales"."ss_quantity" >= 41 +), "_u_8" AS ( + SELECT + AVG("store_sales"."ss_net_profit") AS "_col_0" + FROM "store_sales" AS "store_sales" + WHERE + "store_sales"."ss_quantity" <= 60 AND "store_sales"."ss_quantity" >= 41 +), "_u_9" AS ( + SELECT + COUNT(*) AS "_col_0" + FROM "store_sales" AS "store_sales" + WHERE + "store_sales"."ss_quantity" <= 80 AND "store_sales"."ss_quantity" >= 61 +), "_u_10" AS ( + SELECT + AVG("store_sales"."ss_ext_list_price") AS "_col_0" + FROM "store_sales" AS "store_sales" + WHERE + "store_sales"."ss_quantity" <= 80 AND "store_sales"."ss_quantity" >= 61 +), "_u_11" AS ( + SELECT + AVG("store_sales"."ss_net_profit") AS "_col_0" + FROM "store_sales" AS "store_sales" + WHERE + "store_sales"."ss_quantity" <= 80 AND "store_sales"."ss_quantity" >= 61 +), "_u_12" AS ( + SELECT + COUNT(*) AS "_col_0" + FROM "store_sales" AS "store_sales" + WHERE + "store_sales"."ss_quantity" <= 100 AND "store_sales"."ss_quantity" >= 81 +), "_u_13" AS ( + SELECT + AVG("store_sales"."ss_ext_list_price") AS "_col_0" + FROM "store_sales" AS "store_sales" + WHERE + "store_sales"."ss_quantity" <= 100 AND "store_sales"."ss_quantity" >= 81 +), "_u_14" AS ( + SELECT + AVG("store_sales"."ss_net_profit") AS "_col_0" + FROM "store_sales" AS "store_sales" + WHERE + "store_sales"."ss_quantity" <= 100 AND "store_sales"."ss_quantity" >= 81 +) +SELECT + CASE WHEN "_u_0"."_col_0" > 3672 THEN "_u_1"."_col_0" ELSE "_u_2"."_col_0" END AS "bucket1", + CASE WHEN "_u_3"."_col_0" > 3392 THEN "_u_4"."_col_0" ELSE "_u_5"."_col_0" END AS "bucket2", + CASE WHEN "_u_6"."_col_0" > 32784 THEN "_u_7"."_col_0" ELSE "_u_8"."_col_0" END AS "bucket3", + CASE WHEN "_u_9"."_col_0" > 26032 THEN "_u_10"."_col_0" ELSE "_u_11"."_col_0" END AS "bucket4", + CASE WHEN "_u_12"."_col_0" > 23982 THEN "_u_13"."_col_0" ELSE "_u_14"."_col_0" END AS "bucket5" +FROM "reason" AS "reason" +CROSS JOIN "_u_0" AS "_u_0" +CROSS JOIN "_u_1" AS "_u_1" +CROSS JOIN "_u_2" AS "_u_2" +CROSS JOIN "_u_3" AS "_u_3" +CROSS JOIN "_u_4" AS "_u_4" +CROSS JOIN "_u_5" AS "_u_5" +CROSS JOIN "_u_6" AS "_u_6" +CROSS JOIN "_u_7" AS "_u_7" +CROSS JOIN "_u_8" AS "_u_8" +CROSS JOIN "_u_9" AS "_u_9" +CROSS JOIN "_u_10" AS "_u_10" +CROSS JOIN "_u_11" AS "_u_11" +CROSS JOIN "_u_12" AS "_u_12" +CROSS JOIN "_u_13" AS "_u_13" +CROSS JOIN "_u_14" AS "_u_14" +WHERE + "reason"."r_reason_sk" = 1; + +-------------------------------------- +-- TPC-DS 10 +-------------------------------------- +SELECT cd_gender, + cd_marital_status, + cd_education_status, + Count(*) cnt1, + cd_purchase_estimate, + Count(*) cnt2, + cd_credit_rating, + Count(*) cnt3, + cd_dep_count, + Count(*) cnt4, + cd_dep_employed_count, + Count(*) cnt5, + cd_dep_college_count, + Count(*) cnt6 +FROM customer c, + customer_address ca, + customer_demographics +WHERE c.c_current_addr_sk = ca.ca_address_sk + AND ca_county IN ( 'Lycoming County', 'Sheridan County', + 'Kandiyohi County', + 'Pike County', + 'Greene County' ) + AND cd_demo_sk = c.c_current_cdemo_sk + AND EXISTS (SELECT * + FROM store_sales, + date_dim + WHERE c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 4 AND 4 + 3) + AND ( EXISTS (SELECT * + FROM web_sales, + date_dim + WHERE c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 4 AND 4 + 3) + OR EXISTS (SELECT * + FROM catalog_sales, + date_dim + WHERE c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2002 + AND d_moy BETWEEN 4 AND 4 + 3) ) +GROUP BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +ORDER BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +LIMIT 100; +WITH "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_date_id" AS "d_date_id", + "date_dim"."d_date" AS "d_date", + "date_dim"."d_month_seq" AS "d_month_seq", + "date_dim"."d_week_seq" AS "d_week_seq", + "date_dim"."d_quarter_seq" AS "d_quarter_seq", + "date_dim"."d_year" AS "d_year", + "date_dim"."d_dow" AS "d_dow", + "date_dim"."d_moy" AS "d_moy", + "date_dim"."d_dom" AS "d_dom", + "date_dim"."d_qoy" AS "d_qoy", + "date_dim"."d_fy_year" AS "d_fy_year", + "date_dim"."d_fy_quarter_seq" AS "d_fy_quarter_seq", + "date_dim"."d_fy_week_seq" AS "d_fy_week_seq", + "date_dim"."d_day_name" AS "d_day_name", + "date_dim"."d_quarter_name" AS "d_quarter_name", + "date_dim"."d_holiday" AS "d_holiday", + "date_dim"."d_weekend" AS "d_weekend", + "date_dim"."d_following_holiday" AS "d_following_holiday", + "date_dim"."d_first_dom" AS "d_first_dom", + "date_dim"."d_last_dom" AS "d_last_dom", + "date_dim"."d_same_day_ly" AS "d_same_day_ly", + "date_dim"."d_same_day_lq" AS "d_same_day_lq", + "date_dim"."d_current_day" AS "d_current_day", + "date_dim"."d_current_week" AS "d_current_week", + "date_dim"."d_current_month" AS "d_current_month", + "date_dim"."d_current_quarter" AS "d_current_quarter", + "date_dim"."d_current_year" AS "d_current_year" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_moy" <= 7 AND "date_dim"."d_moy" >= 4 AND "date_dim"."d_year" = 2002 +), "_u_0" AS ( + SELECT + "store_sales"."ss_customer_sk" AS "_u_1" + FROM "store_sales" AS "store_sales" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "store_sales"."ss_customer_sk" +), "_u_2" AS ( + SELECT + "web_sales"."ws_bill_customer_sk" AS "_u_3" + FROM "web_sales" AS "web_sales" + JOIN "date_dim_2" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "web_sales"."ws_bill_customer_sk" +), "_u_4" AS ( + SELECT + "catalog_sales"."cs_ship_customer_sk" AS "_u_5" + FROM "catalog_sales" AS "catalog_sales" + JOIN "date_dim_2" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "catalog_sales"."cs_ship_customer_sk" +) +SELECT + "customer_demographics"."cd_gender" AS "cd_gender", + "customer_demographics"."cd_marital_status" AS "cd_marital_status", + "customer_demographics"."cd_education_status" AS "cd_education_status", + COUNT(*) AS "cnt1", + "customer_demographics"."cd_purchase_estimate" AS "cd_purchase_estimate", + COUNT(*) AS "cnt2", + "customer_demographics"."cd_credit_rating" AS "cd_credit_rating", + COUNT(*) AS "cnt3", + "customer_demographics"."cd_dep_count" AS "cd_dep_count", + COUNT(*) AS "cnt4", + "customer_demographics"."cd_dep_employed_count" AS "cd_dep_employed_count", + COUNT(*) AS "cnt5", + "customer_demographics"."cd_dep_college_count" AS "cd_dep_college_count", + COUNT(*) AS "cnt6" +FROM "customer" AS "customer" +LEFT JOIN "_u_0" AS "_u_0" + ON "customer"."c_customer_sk" = "_u_0"."_u_1" +LEFT JOIN "_u_2" AS "_u_2" + ON "customer"."c_customer_sk" = "_u_2"."_u_3" +LEFT JOIN "_u_4" AS "_u_4" + ON "customer"."c_customer_sk" = "_u_4"."_u_5" +JOIN "customer_address" AS "customer_address" + ON "customer"."c_current_addr_sk" = "customer_address"."ca_address_sk" + AND "customer_address"."ca_county" IN ('Lycoming County', 'Sheridan County', 'Kandiyohi County', 'Pike County', 'Greene County') +JOIN "customer_demographics" AS "customer_demographics" + ON "customer_demographics"."cd_demo_sk" = "customer"."c_current_cdemo_sk" +WHERE + NOT "_u_0"."_u_1" IS NULL + AND ( + NOT "_u_2"."_u_3" IS NULL OR NOT "_u_4"."_u_5" IS NULL + ) +GROUP BY + "customer_demographics"."cd_gender", + "customer_demographics"."cd_marital_status", + "customer_demographics"."cd_education_status", + "customer_demographics"."cd_purchase_estimate", + "customer_demographics"."cd_credit_rating", + "customer_demographics"."cd_dep_count", + "customer_demographics"."cd_dep_employed_count", + "customer_demographics"."cd_dep_college_count" +ORDER BY + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 11 +-------------------------------------- +WITH year_total + AS (SELECT c_customer_id customer_id, + c_first_name customer_first_name + , + c_last_name + customer_last_name, + c_preferred_cust_flag + customer_preferred_cust_flag + , + c_birth_country + customer_birth_country, + c_login customer_login, + c_email_address + customer_email_address, + d_year dyear, + Sum(ss_ext_list_price - ss_ext_discount_amt) year_total, + 's' sale_type + FROM customer, + store_sales, + date_dim + WHERE c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year + UNION ALL + SELECT c_customer_id customer_id, + c_first_name customer_first_name + , + c_last_name + customer_last_name, + c_preferred_cust_flag + customer_preferred_cust_flag + , + c_birth_country + customer_birth_country, + c_login customer_login, + c_email_address + customer_email_address, + d_year dyear, + Sum(ws_ext_list_price - ws_ext_discount_amt) year_total, + 'w' sale_type + FROM customer, + web_sales, + date_dim + WHERE c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + GROUP BY c_customer_id, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_country, + c_login, + c_email_address, + d_year) +SELECT t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name, + t_s_secyear.customer_birth_country +FROM year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_w_firstyear, + year_total t_w_secyear +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.dyear = 2001 + AND t_s_secyear.dyear = 2001 + 1 + AND t_w_firstyear.dyear = 2001 + AND t_w_secyear.dyear = 2001 + 1 + AND t_s_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_w_firstyear.year_total > 0 THEN t_w_secyear.year_total / + t_w_firstyear.year_total + ELSE 0.0 + END > CASE + WHEN t_s_firstyear.year_total > 0 THEN + t_s_secyear.year_total / + t_s_firstyear.year_total + ELSE 0.0 + END +ORDER BY t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name, + t_s_secyear.customer_birth_country +LIMIT 100; +WITH "customer_2" AS ( + SELECT + "customer"."c_customer_sk" AS "c_customer_sk", + "customer"."c_customer_id" AS "c_customer_id", + "customer"."c_first_name" AS "c_first_name", + "customer"."c_last_name" AS "c_last_name", + "customer"."c_preferred_cust_flag" AS "c_preferred_cust_flag", + "customer"."c_birth_country" AS "c_birth_country", + "customer"."c_login" AS "c_login", + "customer"."c_email_address" AS "c_email_address" + FROM "customer" AS "customer" +), "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_year" AS "d_year" + FROM "date_dim" AS "date_dim" +), "cte" AS ( + SELECT + "customer"."c_customer_id" AS "customer_id", + "customer"."c_first_name" AS "customer_first_name", + "customer"."c_last_name" AS "customer_last_name", + "customer"."c_birth_country" AS "customer_birth_country", + "date_dim"."d_year" AS "dyear", + SUM("store_sales"."ss_ext_list_price" - "store_sales"."ss_ext_discount_amt") AS "year_total", + 's' AS "sale_type" + FROM "customer_2" AS "customer" + JOIN "store_sales" AS "store_sales" + ON "customer"."c_customer_sk" = "store_sales"."ss_customer_sk" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "customer"."c_customer_id", + "customer"."c_first_name", + "customer"."c_last_name", + "customer"."c_preferred_cust_flag", + "customer"."c_birth_country", + "customer"."c_login", + "customer"."c_email_address", + "date_dim"."d_year" +), "cte_2" AS ( + SELECT + "customer"."c_customer_id" AS "customer_id", + "customer"."c_first_name" AS "customer_first_name", + "customer"."c_last_name" AS "customer_last_name", + "customer"."c_birth_country" AS "customer_birth_country", + "date_dim"."d_year" AS "dyear", + SUM("web_sales"."ws_ext_list_price" - "web_sales"."ws_ext_discount_amt") AS "year_total", + 'w' AS "sale_type" + FROM "customer_2" AS "customer" + JOIN "web_sales" AS "web_sales" + ON "customer"."c_customer_sk" = "web_sales"."ws_bill_customer_sk" + JOIN "date_dim_2" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "customer"."c_customer_id", + "customer"."c_first_name", + "customer"."c_last_name", + "customer"."c_preferred_cust_flag", + "customer"."c_birth_country", + "customer"."c_login", + "customer"."c_email_address", + "date_dim"."d_year" +), "year_total" AS ( + SELECT + "cte"."customer_id" AS "customer_id", + "cte"."customer_first_name" AS "customer_first_name", + "cte"."customer_last_name" AS "customer_last_name", + "cte"."customer_birth_country" AS "customer_birth_country", + "cte"."dyear" AS "dyear", + "cte"."year_total" AS "year_total", + "cte"."sale_type" AS "sale_type" + FROM "cte" AS "cte" + UNION ALL + SELECT + "cte_2"."customer_id" AS "customer_id", + "cte_2"."customer_first_name" AS "customer_first_name", + "cte_2"."customer_last_name" AS "customer_last_name", + "cte_2"."customer_birth_country" AS "customer_birth_country", + "cte_2"."dyear" AS "dyear", + "cte_2"."year_total" AS "year_total", + "cte_2"."sale_type" AS "sale_type" + FROM "cte_2" AS "cte_2" +) +SELECT + "t_s_secyear"."customer_id" AS "customer_id", + "t_s_secyear"."customer_first_name" AS "customer_first_name", + "t_s_secyear"."customer_last_name" AS "customer_last_name", + "t_s_secyear"."customer_birth_country" AS "customer_birth_country" +FROM "year_total" AS "t_s_firstyear" +JOIN "year_total" AS "t_s_secyear" + ON "t_s_secyear"."customer_id" = "t_s_firstyear"."customer_id" + AND "t_s_secyear"."dyear" = 2002 + AND "t_s_secyear"."sale_type" = 's' +JOIN "year_total" AS "t_w_secyear" + ON "t_s_firstyear"."customer_id" = "t_w_secyear"."customer_id" + AND "t_w_secyear"."dyear" = 2002 + AND "t_w_secyear"."sale_type" = 'w' +JOIN "year_total" AS "t_w_firstyear" + ON "t_s_firstyear"."customer_id" = "t_w_firstyear"."customer_id" + AND "t_w_firstyear"."dyear" = 2001 + AND "t_w_firstyear"."sale_type" = 'w' + AND "t_w_firstyear"."year_total" > 0 + AND CASE + WHEN "t_w_firstyear"."year_total" > 0 + THEN "t_w_secyear"."year_total" / "t_w_firstyear"."year_total" + ELSE 0.0 + END > CASE + WHEN "t_s_firstyear"."year_total" > 0 + THEN "t_s_secyear"."year_total" / "t_s_firstyear"."year_total" + ELSE 0.0 + END +WHERE + "t_s_firstyear"."dyear" = 2001 + AND "t_s_firstyear"."sale_type" = 's' + AND "t_s_firstyear"."year_total" > 0 +ORDER BY + "t_s_secyear"."customer_id", + "t_s_secyear"."customer_first_name", + "t_s_secyear"."customer_last_name", + "t_s_secyear"."customer_birth_country" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 12 +-------------------------------------- +SELECT + i_item_id , + i_item_desc , + i_category , + i_class , + i_current_price , + Sum(ws_ext_sales_price) AS itemrevenue , + Sum(ws_ext_sales_price)*100/Sum(Sum(ws_ext_sales_price)) OVER (partition BY i_class) AS revenueratio +FROM web_sales , + item , + date_dim +WHERE ws_item_sk = i_item_sk +AND i_category IN ('Home', + 'Men', + 'Women') +AND ws_sold_date_sk = d_date_sk +AND d_date BETWEEN Cast('2000-05-11' AS DATE) AND ( + Cast('2000-05-11' AS DATE) + INTERVAL '30' day) +GROUP BY i_item_id , + i_item_desc , + i_category , + i_class , + i_current_price +ORDER BY i_category , + i_class , + i_item_id , + i_item_desc , + revenueratio +LIMIT 100; +SELECT + "item"."i_item_id" AS "i_item_id", + "item"."i_item_desc" AS "i_item_desc", + "item"."i_category" AS "i_category", + "item"."i_class" AS "i_class", + "item"."i_current_price" AS "i_current_price", + SUM("web_sales"."ws_ext_sales_price") AS "itemrevenue", + SUM("web_sales"."ws_ext_sales_price") * 100 / SUM(SUM("web_sales"."ws_ext_sales_price")) OVER (PARTITION BY "item"."i_class") AS "revenueratio" +FROM "web_sales" AS "web_sales" +JOIN "item" AS "item" + ON "item"."i_category" IN ('Home', 'Men', 'Women') + AND "web_sales"."ws_item_sk" = "item"."i_item_sk" +JOIN "date_dim" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + AND CAST("date_dim"."d_date" AS DATE) <= CAST('2000-06-10' AS DATE) + AND CAST("date_dim"."d_date" AS DATE) >= CAST('2000-05-11' AS DATE) +GROUP BY + "item"."i_item_id", + "item"."i_item_desc", + "item"."i_category", + "item"."i_class", + "item"."i_current_price" +ORDER BY + "i_category", + "i_class", + "i_item_id", + "i_item_desc", + "revenueratio" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 13 +-------------------------------------- +SELECT Avg(ss_quantity), + Avg(ss_ext_sales_price), + Avg(ss_ext_wholesale_cost), + Sum(ss_ext_wholesale_cost) +FROM store_sales, + store, + customer_demographics, + household_demographics, + customer_address, + date_dim +WHERE s_store_sk = ss_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND ( ( ss_hdemo_sk = hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'U' + AND cd_education_status = 'Advanced Degree' + AND ss_sales_price BETWEEN 100.00 AND 150.00 + AND hd_dep_count = 3 ) + OR ( ss_hdemo_sk = hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'M' + AND cd_education_status = 'Primary' + AND ss_sales_price BETWEEN 50.00 AND 100.00 + AND hd_dep_count = 1 ) + OR ( ss_hdemo_sk = hd_demo_sk + AND cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'D' + AND cd_education_status = 'Secondary' + AND ss_sales_price BETWEEN 150.00 AND 200.00 + AND hd_dep_count = 1 ) ) + AND ( ( ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ( 'AZ', 'NE', 'IA' ) + AND ss_net_profit BETWEEN 100 AND 200 ) + OR ( ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ( 'MS', 'CA', 'NV' ) + AND ss_net_profit BETWEEN 150 AND 300 ) + OR ( ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ( 'GA', 'TX', 'NJ' ) + AND ss_net_profit BETWEEN 50 AND 250 ) ); +SELECT + AVG("store_sales"."ss_quantity") AS "_col_0", + AVG("store_sales"."ss_ext_sales_price") AS "_col_1", + AVG("store_sales"."ss_ext_wholesale_cost") AS "_col_2", + SUM("store_sales"."ss_ext_wholesale_cost") AS "_col_3" +FROM "store_sales" AS "store_sales" +JOIN "store" AS "store" + ON "store"."s_store_sk" = "store_sales"."ss_store_sk" +CROSS JOIN "household_demographics" AS "household_demographics" +JOIN "customer_demographics" AS "customer_demographics" + ON "customer_demographics"."cd_demo_sk" = "store_sales"."ss_cdemo_sk" + AND "customer_demographics"."cd_education_status" = 'Advanced Degree' + AND "customer_demographics"."cd_education_status" = 'Primary' + AND "customer_demographics"."cd_education_status" = 'Secondary' + AND "customer_demographics"."cd_marital_status" = 'D' + AND "customer_demographics"."cd_marital_status" = 'M' + AND "customer_demographics"."cd_marital_status" = 'U' + AND "household_demographics"."hd_dep_count" = 1 + AND "household_demographics"."hd_dep_count" = 3 + AND "store_sales"."ss_hdemo_sk" = "household_demographics"."hd_demo_sk" + AND "store_sales"."ss_sales_price" <= 100.00 + AND "store_sales"."ss_sales_price" >= 150.00 +JOIN "customer_address" AS "customer_address" + ON ( + "customer_address"."ca_country" = 'United States' + AND "customer_address"."ca_state" IN ('AZ', 'NE', 'IA') + AND "store_sales"."ss_addr_sk" = "customer_address"."ca_address_sk" + AND "store_sales"."ss_net_profit" <= 200 + AND "store_sales"."ss_net_profit" >= 100 + ) + OR ( + "customer_address"."ca_country" = 'United States' + AND "customer_address"."ca_state" IN ('GA', 'TX', 'NJ') + AND "store_sales"."ss_addr_sk" = "customer_address"."ca_address_sk" + AND "store_sales"."ss_net_profit" <= 250 + AND "store_sales"."ss_net_profit" >= 50 + ) + OR ( + "customer_address"."ca_country" = 'United States' + AND "customer_address"."ca_state" IN ('MS', 'CA', 'NV') + AND "store_sales"."ss_addr_sk" = "customer_address"."ca_address_sk" + AND "store_sales"."ss_net_profit" <= 300 + AND "store_sales"."ss_net_profit" >= 150 + ) +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_year" = 2001 + AND "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk"; + +-------------------------------------- +-- TPC-DS 14 +-------------------------------------- +WITH cross_items + AS (SELECT i_item_sk ss_item_sk + FROM item, + (SELECT iss.i_brand_id brand_id, + iss.i_class_id class_id, + iss.i_category_id category_id + FROM store_sales, + item iss, + date_dim d1 + WHERE ss_item_sk = iss.i_item_sk + AND ss_sold_date_sk = d1.d_date_sk + AND d1.d_year BETWEEN 1999 AND 1999 + 2 + INTERSECT + SELECT ics.i_brand_id, + ics.i_class_id, + ics.i_category_id + FROM catalog_sales, + item ics, + date_dim d2 + WHERE cs_item_sk = ics.i_item_sk + AND cs_sold_date_sk = d2.d_date_sk + AND d2.d_year BETWEEN 1999 AND 1999 + 2 + INTERSECT + SELECT iws.i_brand_id, + iws.i_class_id, + iws.i_category_id + FROM web_sales, + item iws, + date_dim d3 + WHERE ws_item_sk = iws.i_item_sk + AND ws_sold_date_sk = d3.d_date_sk + AND d3.d_year BETWEEN 1999 AND 1999 + 2) + WHERE i_brand_id = brand_id + AND i_class_id = class_id + AND i_category_id = category_id), + avg_sales + AS (SELECT Avg(quantity * list_price) average_sales + FROM (SELECT ss_quantity quantity, + ss_list_price list_price + FROM store_sales, + date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 1999 + 2 + UNION ALL + SELECT cs_quantity quantity, + cs_list_price list_price + FROM catalog_sales, + date_dim + WHERE cs_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 1999 + 2 + UNION ALL + SELECT ws_quantity quantity, + ws_list_price list_price + FROM web_sales, + date_dim + WHERE ws_sold_date_sk = d_date_sk + AND d_year BETWEEN 1999 AND 1999 + 2) x) +SELECT channel, + i_brand_id, + i_class_id, + i_category_id, + Sum(sales), + Sum(number_sales) +FROM (SELECT 'store' channel, + i_brand_id, + i_class_id, + i_category_id, + Sum(ss_quantity * ss_list_price) sales, + Count(*) number_sales + FROM store_sales, + item, + date_dim + WHERE ss_item_sk IN (SELECT ss_item_sk + FROM cross_items) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1999 + 2 + AND d_moy = 11 + GROUP BY i_brand_id, + i_class_id, + i_category_id + HAVING Sum(ss_quantity * ss_list_price) > (SELECT average_sales + FROM avg_sales) + UNION ALL + SELECT 'catalog' channel, + i_brand_id, + i_class_id, + i_category_id, + Sum(cs_quantity * cs_list_price) sales, + Count(*) number_sales + FROM catalog_sales, + item, + date_dim + WHERE cs_item_sk IN (SELECT ss_item_sk + FROM cross_items) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1999 + 2 + AND d_moy = 11 + GROUP BY i_brand_id, + i_class_id, + i_category_id + HAVING Sum(cs_quantity * cs_list_price) > (SELECT average_sales + FROM avg_sales) + UNION ALL + SELECT 'web' channel, + i_brand_id, + i_class_id, + i_category_id, + Sum(ws_quantity * ws_list_price) sales, + Count(*) number_sales + FROM web_sales, + item, + date_dim + WHERE ws_item_sk IN (SELECT ss_item_sk + FROM cross_items) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1999 + 2 + AND d_moy = 11 + GROUP BY i_brand_id, + i_class_id, + i_category_id + HAVING Sum(ws_quantity * ws_list_price) > (SELECT average_sales + FROM avg_sales)) y +GROUP BY rollup ( channel, i_brand_id, i_class_id, i_category_id ) +ORDER BY channel, + i_brand_id, + i_class_id, + i_category_id +LIMIT 100; +WITH "item_2" AS ( + SELECT + "item"."i_item_sk" AS "i_item_sk", + "item"."i_brand_id" AS "i_brand_id", + "item"."i_class_id" AS "i_class_id", + "item"."i_category_id" AS "i_category_id" + FROM "item" AS "item" +), "d1" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_year" AS "d_year" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_year" <= 2001 AND "date_dim"."d_year" >= 1999 +), "cte_4" AS ( + SELECT + "ics"."i_brand_id" AS "i_brand_id", + "ics"."i_class_id" AS "i_class_id", + "ics"."i_category_id" AS "i_category_id" + FROM "catalog_sales" AS "catalog_sales" + CROSS JOIN "item_2" AS "ics" + CROSS JOIN "d1" AS "d2" + WHERE + "catalog_sales"."cs_item_sk" = "ics"."i_item_sk" + AND "catalog_sales"."cs_sold_date_sk" = "d2"."d_date_sk" + INTERSECT + SELECT + "iws"."i_brand_id" AS "i_brand_id", + "iws"."i_class_id" AS "i_class_id", + "iws"."i_category_id" AS "i_category_id" + FROM "web_sales" AS "web_sales" + CROSS JOIN "item_2" AS "iws" + CROSS JOIN "d1" AS "d3" + WHERE + "web_sales"."ws_item_sk" = "iws"."i_item_sk" + AND "web_sales"."ws_sold_date_sk" = "d3"."d_date_sk" +), "_q_0" AS ( + SELECT + "iss"."i_brand_id" AS "brand_id", + "iss"."i_class_id" AS "class_id", + "iss"."i_category_id" AS "category_id" + FROM "store_sales" AS "store_sales" + CROSS JOIN "item_2" AS "iss" + CROSS JOIN "d1" AS "d1" + WHERE + "store_sales"."ss_item_sk" = "iss"."i_item_sk" + AND "store_sales"."ss_sold_date_sk" = "d1"."d_date_sk" + INTERSECT + SELECT + "cte_4"."i_brand_id" AS "i_brand_id", + "cte_4"."i_class_id" AS "i_class_id", + "cte_4"."i_category_id" AS "i_category_id" + FROM "cte_4" AS "cte_4" +), "cte_8" AS ( + SELECT + "catalog_sales"."cs_quantity" AS "quantity", + "catalog_sales"."cs_list_price" AS "list_price" + FROM "catalog_sales" AS "catalog_sales" + JOIN "d1" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + UNION ALL + SELECT + "web_sales"."ws_quantity" AS "quantity", + "web_sales"."ws_list_price" AS "list_price" + FROM "web_sales" AS "web_sales" + JOIN "d1" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" +), "x" AS ( + SELECT + "store_sales"."ss_quantity" AS "quantity", + "store_sales"."ss_list_price" AS "list_price" + FROM "store_sales" AS "store_sales" + JOIN "d1" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + UNION ALL + SELECT + "cte_8"."quantity" AS "quantity", + "cte_8"."list_price" AS "list_price" + FROM "cte_8" AS "cte_8" +), "avg_sales" AS ( + SELECT + AVG("x"."quantity" * "x"."list_price") AS "average_sales" + FROM "x" AS "x" +), "_u_0" AS ( + SELECT + "item"."i_item_sk" AS "ss_item_sk" + FROM "item_2" AS "item" + JOIN "_q_0" AS "_q_0" + ON "item"."i_brand_id" = "_q_0"."brand_id" + AND "item"."i_category_id" = "_q_0"."category_id" + AND "item"."i_class_id" = "_q_0"."class_id" + GROUP BY + "item"."i_item_sk" +), "_u_1" AS ( + SELECT + "avg_sales"."average_sales" AS "average_sales" + FROM "avg_sales" +), "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_year" AS "d_year", + "date_dim"."d_moy" AS "d_moy" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_moy" = 11 AND "date_dim"."d_year" = 2001 +), "cte_9" AS ( + SELECT + 'store' AS "channel", + "item"."i_brand_id" AS "i_brand_id", + "item"."i_class_id" AS "i_class_id", + "item"."i_category_id" AS "i_category_id", + SUM("store_sales"."ss_quantity" * "store_sales"."ss_list_price") AS "sales", + COUNT(*) AS "number_sales" + FROM "store_sales" AS "store_sales" + LEFT JOIN "_u_0" AS "_u_0" + ON "store_sales"."ss_item_sk" = "_u_0"."ss_item_sk" + CROSS JOIN "_u_1" AS "_u_1" + JOIN "item_2" AS "item" + ON "store_sales"."ss_item_sk" = "item"."i_item_sk" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + WHERE + NOT "_u_0"."ss_item_sk" IS NULL + GROUP BY + "item"."i_brand_id", + "item"."i_class_id", + "item"."i_category_id" + HAVING + SUM("store_sales"."ss_quantity" * "store_sales"."ss_list_price") > MAX("_u_1"."average_sales") +), "cte_10" AS ( + SELECT + 'catalog' AS "channel", + "item"."i_brand_id" AS "i_brand_id", + "item"."i_class_id" AS "i_class_id", + "item"."i_category_id" AS "i_category_id", + SUM("catalog_sales"."cs_quantity" * "catalog_sales"."cs_list_price") AS "sales", + COUNT(*) AS "number_sales" + FROM "catalog_sales" AS "catalog_sales" + LEFT JOIN "_u_0" AS "_u_2" + ON "catalog_sales"."cs_item_sk" = "_u_2"."ss_item_sk" + CROSS JOIN "_u_1" AS "_u_3" + JOIN "item_2" AS "item" + ON "catalog_sales"."cs_item_sk" = "item"."i_item_sk" + JOIN "date_dim_2" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + WHERE + NOT "_u_2"."ss_item_sk" IS NULL + GROUP BY + "item"."i_brand_id", + "item"."i_class_id", + "item"."i_category_id" + HAVING + SUM("catalog_sales"."cs_quantity" * "catalog_sales"."cs_list_price") > MAX("_u_3"."average_sales") +), "cte_11" AS ( + SELECT + 'web' AS "channel", + "item"."i_brand_id" AS "i_brand_id", + "item"."i_class_id" AS "i_class_id", + "item"."i_category_id" AS "i_category_id", + SUM("web_sales"."ws_quantity" * "web_sales"."ws_list_price") AS "sales", + COUNT(*) AS "number_sales" + FROM "web_sales" AS "web_sales" + LEFT JOIN "_u_0" AS "_u_4" + ON "web_sales"."ws_item_sk" = "_u_4"."ss_item_sk" + CROSS JOIN "_u_1" AS "_u_5" + JOIN "item_2" AS "item" + ON "web_sales"."ws_item_sk" = "item"."i_item_sk" + JOIN "date_dim_2" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + WHERE + NOT "_u_4"."ss_item_sk" IS NULL + GROUP BY + "item"."i_brand_id", + "item"."i_class_id", + "item"."i_category_id" + HAVING + SUM("web_sales"."ws_quantity" * "web_sales"."ws_list_price") > MAX("_u_5"."average_sales") +), "cte_12" AS ( + SELECT + "cte_10"."channel" AS "channel", + "cte_10"."i_brand_id" AS "i_brand_id", + "cte_10"."i_class_id" AS "i_class_id", + "cte_10"."i_category_id" AS "i_category_id", + "cte_10"."sales" AS "sales", + "cte_10"."number_sales" AS "number_sales" + FROM "cte_10" AS "cte_10" + UNION ALL + SELECT + "cte_11"."channel" AS "channel", + "cte_11"."i_brand_id" AS "i_brand_id", + "cte_11"."i_class_id" AS "i_class_id", + "cte_11"."i_category_id" AS "i_category_id", + "cte_11"."sales" AS "sales", + "cte_11"."number_sales" AS "number_sales" + FROM "cte_11" AS "cte_11" +), "y" AS ( + SELECT + "cte_9"."channel" AS "channel", + "cte_9"."i_brand_id" AS "i_brand_id", + "cte_9"."i_class_id" AS "i_class_id", + "cte_9"."i_category_id" AS "i_category_id", + "cte_9"."sales" AS "sales", + "cte_9"."number_sales" AS "number_sales" + FROM "cte_9" AS "cte_9" + UNION ALL + SELECT + "cte_12"."channel" AS "channel", + "cte_12"."i_brand_id" AS "i_brand_id", + "cte_12"."i_class_id" AS "i_class_id", + "cte_12"."i_category_id" AS "i_category_id", + "cte_12"."sales" AS "sales", + "cte_12"."number_sales" AS "number_sales" + FROM "cte_12" AS "cte_12" +) +SELECT + "y"."channel" AS "channel", + "y"."i_brand_id" AS "i_brand_id", + "y"."i_class_id" AS "i_class_id", + "y"."i_category_id" AS "i_category_id", + SUM("y"."sales") AS "_col_4", + SUM("y"."number_sales") AS "_col_5" +FROM "y" AS "y" +GROUP BY +ROLLUP ( + "y"."channel", + "y"."i_brand_id", + "y"."i_class_id", + "y"."i_category_id" +) +ORDER BY + "channel", + "i_brand_id", + "i_class_id", + "i_category_id" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 15 +-------------------------------------- +SELECT ca_zip, + Sum(cs_sales_price) +FROM catalog_sales, + customer, + customer_address, + date_dim +WHERE cs_bill_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND ( Substr(ca_zip, 1, 5) IN ( '85669', '86197', '88274', '83405', + '86475', '85392', '85460', '80348', + '81792' ) + OR ca_state IN ( 'CA', 'WA', 'GA' ) + OR cs_sales_price > 500 ) + AND cs_sold_date_sk = d_date_sk + AND d_qoy = 1 + AND d_year = 1998 +GROUP BY ca_zip +ORDER BY ca_zip +LIMIT 100; +SELECT + "customer_address"."ca_zip" AS "ca_zip", + SUM("catalog_sales"."cs_sales_price") AS "_col_1" +FROM "catalog_sales" AS "catalog_sales" +JOIN "customer_address" AS "customer_address" + ON "catalog_sales"."cs_sales_price" > 500 + OR "customer_address"."ca_state" IN ('CA', 'WA', 'GA') + OR SUBSTR("customer_address"."ca_zip", 1, 5) IN ('85669', '86197', '88274', '83405', '86475', '85392', '85460', '80348', '81792') +JOIN "customer" AS "customer" + ON "catalog_sales"."cs_bill_customer_sk" = "customer"."c_customer_sk" + AND "customer"."c_current_addr_sk" = "customer_address"."ca_address_sk" +JOIN "date_dim" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + AND "date_dim"."d_qoy" = 1 + AND "date_dim"."d_year" = 1998 +GROUP BY + "customer_address"."ca_zip" +ORDER BY + "ca_zip" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 16 +-------------------------------------- +SELECT + Count(DISTINCT cs_order_number) AS "order count" , + Sum(cs_ext_ship_cost) AS "total shipping cost" , + Sum(cs_net_profit) AS "total net profit" +FROM catalog_sales cs1 , + date_dim , + customer_address , + call_center +WHERE d_date BETWEEN '2002-3-01' AND ( + Cast('2002-3-01' AS DATE) + INTERVAL '60' day) +AND cs1.cs_ship_date_sk = d_date_sk +AND cs1.cs_ship_addr_sk = ca_address_sk +AND ca_state = 'IA' +AND cs1.cs_call_center_sk = cc_call_center_sk +AND cc_county IN ('Williamson County', + 'Williamson County', + 'Williamson County', + 'Williamson County', + 'Williamson County' ) +AND EXISTS + ( + SELECT * + FROM catalog_sales cs2 + WHERE cs1.cs_order_number = cs2.cs_order_number + AND cs1.cs_warehouse_sk <> cs2.cs_warehouse_sk) +AND NOT EXISTS + ( + SELECT * + FROM catalog_returns cr1 + WHERE cs1.cs_order_number = cr1.cr_order_number) +ORDER BY count(DISTINCT cs_order_number) +LIMIT 100; +WITH "_u_0" AS ( + SELECT + "cs2"."cs_order_number" AS "_u_1", + ARRAY_AGG("cs2"."cs_warehouse_sk") AS "_u_2" + FROM "catalog_sales" AS "cs2" + GROUP BY + "cs2"."cs_order_number" +), "_u_3" AS ( + SELECT + "cr1"."cr_order_number" AS "_u_4" + FROM "catalog_returns" AS "cr1" + GROUP BY + "cr1"."cr_order_number" +) +SELECT + COUNT(DISTINCT "catalog_sales"."cs_order_number") AS "order count", + SUM("catalog_sales"."cs_ext_ship_cost") AS "total shipping cost", + SUM("catalog_sales"."cs_net_profit") AS "total net profit" +FROM "catalog_sales" AS "catalog_sales" +LEFT JOIN "_u_0" AS "_u_0" + ON "catalog_sales"."cs_order_number" = "_u_0"."_u_1" +LEFT JOIN "_u_3" AS "_u_3" + ON "catalog_sales"."cs_order_number" = "_u_3"."_u_4" +JOIN "date_dim" AS "date_dim" + ON "catalog_sales"."cs_ship_date_sk" = "date_dim"."d_date_sk" + AND "date_dim"."d_date" >= '2002-3-01' + AND CAST("date_dim"."d_date" AS DATE) <= ( + CAST('2002-3-01' AS DATE) + INTERVAL '60' "day" + ) +JOIN "customer_address" AS "customer_address" + ON "catalog_sales"."cs_ship_addr_sk" = "customer_address"."ca_address_sk" + AND "customer_address"."ca_state" = 'IA' +JOIN "call_center" AS "call_center" + ON "call_center"."cc_county" IN ('Williamson County', 'Williamson County', 'Williamson County', 'Williamson County', 'Williamson County') + AND "catalog_sales"."cs_call_center_sk" = "call_center"."cc_call_center_sk" +WHERE + "_u_3"."_u_4" IS NULL + AND ARRAY_ANY("_u_0"."_u_2", "_x" -> "catalog_sales"."cs_warehouse_sk" <> "_x") + AND NOT "_u_0"."_u_1" IS NULL +ORDER BY + COUNT(DISTINCT "catalog_sales"."cs_order_number") +LIMIT 100; + +-------------------------------------- +-- TPC-DS 17 +-------------------------------------- +SELECT i_item_id, + i_item_desc, + s_state, + Count(ss_quantity) AS + store_sales_quantitycount, + Avg(ss_quantity) AS + store_sales_quantityave, + Stddev_samp(ss_quantity) AS + store_sales_quantitystdev, + Stddev_samp(ss_quantity) / Avg(ss_quantity) AS + store_sales_quantitycov, + Count(sr_return_quantity) AS + store_returns_quantitycount, + Avg(sr_return_quantity) AS + store_returns_quantityave, + Stddev_samp(sr_return_quantity) AS + store_returns_quantitystdev, + Stddev_samp(sr_return_quantity) / Avg(sr_return_quantity) AS + store_returns_quantitycov, + Count(cs_quantity) AS + catalog_sales_quantitycount, + Avg(cs_quantity) AS + catalog_sales_quantityave, + Stddev_samp(cs_quantity) / Avg(cs_quantity) AS + catalog_sales_quantitystdev, + Stddev_samp(cs_quantity) / Avg(cs_quantity) AS + catalog_sales_quantitycov +FROM store_sales, + store_returns, + catalog_sales, + date_dim d1, + date_dim d2, + date_dim d3, + store, + item +WHERE d1.d_quarter_name = '1999Q1' + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_quarter_name IN ( '1999Q1', '1999Q2', '1999Q3' ) + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_quarter_name IN ( '1999Q1', '1999Q2', '1999Q3' ) +GROUP BY i_item_id, + i_item_desc, + s_state +ORDER BY i_item_id, + i_item_desc, + s_state +LIMIT 100; +WITH "d3" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_quarter_name" AS "d_quarter_name" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_quarter_name" IN ('1999Q1', '1999Q2', '1999Q3') +) +SELECT + "item"."i_item_id" AS "i_item_id", + "item"."i_item_desc" AS "i_item_desc", + "store"."s_state" AS "s_state", + COUNT("store_sales"."ss_quantity") AS "store_sales_quantitycount", + AVG("store_sales"."ss_quantity") AS "store_sales_quantityave", + STDDEV_SAMP("store_sales"."ss_quantity") AS "store_sales_quantitystdev", + STDDEV_SAMP("store_sales"."ss_quantity") / AVG("store_sales"."ss_quantity") AS "store_sales_quantitycov", + COUNT("store_returns"."sr_return_quantity") AS "store_returns_quantitycount", + AVG("store_returns"."sr_return_quantity") AS "store_returns_quantityave", + STDDEV_SAMP("store_returns"."sr_return_quantity") AS "store_returns_quantitystdev", + STDDEV_SAMP("store_returns"."sr_return_quantity") / AVG("store_returns"."sr_return_quantity") AS "store_returns_quantitycov", + COUNT("catalog_sales"."cs_quantity") AS "catalog_sales_quantitycount", + AVG("catalog_sales"."cs_quantity") AS "catalog_sales_quantityave", + STDDEV_SAMP("catalog_sales"."cs_quantity") / AVG("catalog_sales"."cs_quantity") AS "catalog_sales_quantitystdev", + STDDEV_SAMP("catalog_sales"."cs_quantity") / AVG("catalog_sales"."cs_quantity") AS "catalog_sales_quantitycov" +FROM "store_sales" AS "store_sales" +CROSS JOIN "d3" AS "d3" +JOIN "catalog_sales" AS "catalog_sales" + ON "catalog_sales"."cs_sold_date_sk" = "d3"."d_date_sk" +JOIN "store_returns" AS "store_returns" + ON "store_returns"."sr_customer_sk" = "catalog_sales"."cs_bill_customer_sk" + AND "store_returns"."sr_item_sk" = "catalog_sales"."cs_item_sk" + AND "store_sales"."ss_customer_sk" = "store_returns"."sr_customer_sk" + AND "store_sales"."ss_item_sk" = "store_returns"."sr_item_sk" + AND "store_sales"."ss_ticket_number" = "store_returns"."sr_ticket_number" +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_date_sk" = "store_sales"."ss_sold_date_sk" + AND "date_dim"."d_quarter_name" = '1999Q1' +JOIN "d3" AS "d2" + ON "store_returns"."sr_returned_date_sk" = "d2"."d_date_sk" +JOIN "store" AS "store" + ON "store"."s_store_sk" = "store_sales"."ss_store_sk" +JOIN "item" AS "item" + ON "item"."i_item_sk" = "store_sales"."ss_item_sk" +GROUP BY + "item"."i_item_id", + "item"."i_item_desc", + "store"."s_state" +ORDER BY + "i_item_id", + "i_item_desc", + "s_state" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 18 +-------------------------------------- +SELECT i_item_id, + ca_country, + ca_state, + ca_county, + Avg(Cast(cs_quantity AS NUMERIC(12, 2))) agg1, + Avg(Cast(cs_list_price AS NUMERIC(12, 2))) agg2, + Avg(Cast(cs_coupon_amt AS NUMERIC(12, 2))) agg3, + Avg(Cast(cs_sales_price AS NUMERIC(12, 2))) agg4, + Avg(Cast(cs_net_profit AS NUMERIC(12, 2))) agg5, + Avg(Cast(c_birth_year AS NUMERIC(12, 2))) agg6, + Avg(Cast(cd1.cd_dep_count AS NUMERIC(12, 2))) agg7 +FROM catalog_sales, + customer_demographics cd1, + customer_demographics cd2, + customer, + customer_address, + date_dim, + item +WHERE cs_sold_date_sk = d_date_sk + AND cs_item_sk = i_item_sk + AND cs_bill_cdemo_sk = cd1.cd_demo_sk + AND cs_bill_customer_sk = c_customer_sk + AND cd1.cd_gender = 'F' + AND cd1.cd_education_status = 'Secondary' + AND c_current_cdemo_sk = cd2.cd_demo_sk + AND c_current_addr_sk = ca_address_sk + AND c_birth_month IN ( 8, 4, 2, 5, + 11, 9 ) + AND d_year = 2001 + AND ca_state IN ( 'KS', 'IA', 'AL', 'UT', + 'VA', 'NC', 'TX' ) +GROUP BY rollup ( i_item_id, ca_country, ca_state, ca_county ) +ORDER BY ca_country, + ca_state, + ca_county, + i_item_id +LIMIT 100; +SELECT + "item"."i_item_id" AS "i_item_id", + "customer_address"."ca_country" AS "ca_country", + "customer_address"."ca_state" AS "ca_state", + "customer_address"."ca_county" AS "ca_county", + AVG(CAST("catalog_sales"."cs_quantity" AS DECIMAL(12, 2))) AS "agg1", + AVG(CAST("catalog_sales"."cs_list_price" AS DECIMAL(12, 2))) AS "agg2", + AVG(CAST("catalog_sales"."cs_coupon_amt" AS DECIMAL(12, 2))) AS "agg3", + AVG(CAST("catalog_sales"."cs_sales_price" AS DECIMAL(12, 2))) AS "agg4", + AVG(CAST("catalog_sales"."cs_net_profit" AS DECIMAL(12, 2))) AS "agg5", + AVG(CAST("customer"."c_birth_year" AS DECIMAL(12, 2))) AS "agg6", + AVG(CAST("customer_demographics"."cd_dep_count" AS DECIMAL(12, 2))) AS "agg7" +FROM "catalog_sales" AS "catalog_sales" +JOIN "customer_demographics" AS "customer_demographics" + ON "catalog_sales"."cs_bill_cdemo_sk" = "customer_demographics"."cd_demo_sk" + AND "customer_demographics"."cd_education_status" = 'Secondary' + AND "customer_demographics"."cd_gender" = 'F' +JOIN "customer" AS "customer" + ON "catalog_sales"."cs_bill_customer_sk" = "customer"."c_customer_sk" + AND "customer"."c_birth_month" IN (8, 4, 2, 5, 11, 9) +JOIN "customer_demographics" AS "customer_demographics_2" + ON "customer"."c_current_cdemo_sk" = "customer_demographics_2"."cd_demo_sk" +JOIN "customer_address" AS "customer_address" + ON "customer"."c_current_addr_sk" = "customer_address"."ca_address_sk" + AND "customer_address"."ca_state" IN ('KS', 'IA', 'AL', 'UT', 'VA', 'NC', 'TX') +JOIN "date_dim" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + AND "date_dim"."d_year" = 2001 +JOIN "item" AS "item" + ON "catalog_sales"."cs_item_sk" = "item"."i_item_sk" +GROUP BY +ROLLUP ( + "item"."i_item_id", + "customer_address"."ca_country", + "customer_address"."ca_state", + "customer_address"."ca_county" +) +ORDER BY + "ca_country", + "ca_state", + "ca_county", + "i_item_id" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 20 +-------------------------------------- +SELECT + i_item_id , + i_item_desc , + i_category , + i_class , + i_current_price , + Sum(cs_ext_sales_price) AS itemrevenue , + Sum(cs_ext_sales_price)*100/Sum(Sum(cs_ext_sales_price)) OVER (partition BY i_class) AS revenueratio +FROM catalog_sales , + item , + date_dim +WHERE cs_item_sk = i_item_sk +AND i_category IN ('Children', + 'Women', + 'Electronics') +AND cs_sold_date_sk = d_date_sk +AND d_date BETWEEN Cast('2001-02-03' AS DATE) AND ( + Cast('2001-02-03' AS DATE) + INTERVAL '30' day) +GROUP BY i_item_id , + i_item_desc , + i_category , + i_class , + i_current_price +ORDER BY i_category , + i_class , + i_item_id , + i_item_desc , + revenueratio +LIMIT 100; +SELECT + "item"."i_item_id" AS "i_item_id", + "item"."i_item_desc" AS "i_item_desc", + "item"."i_category" AS "i_category", + "item"."i_class" AS "i_class", + "item"."i_current_price" AS "i_current_price", + SUM("catalog_sales"."cs_ext_sales_price") AS "itemrevenue", + SUM("catalog_sales"."cs_ext_sales_price") * 100 / SUM(SUM("catalog_sales"."cs_ext_sales_price")) OVER (PARTITION BY "item"."i_class") AS "revenueratio" +FROM "catalog_sales" AS "catalog_sales" +JOIN "item" AS "item" + ON "catalog_sales"."cs_item_sk" = "item"."i_item_sk" + AND "item"."i_category" IN ('Children', 'Women', 'Electronics') +JOIN "date_dim" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + AND CAST("date_dim"."d_date" AS DATE) <= CAST('2001-03-05' AS DATE) + AND CAST("date_dim"."d_date" AS DATE) >= CAST('2001-02-03' AS DATE) +GROUP BY + "item"."i_item_id", + "item"."i_item_desc", + "item"."i_category", + "item"."i_class", + "item"."i_current_price" +ORDER BY + "i_category", + "i_class", + "i_item_id", + "i_item_desc", + "revenueratio" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 21 +-------------------------------------- +SELECT + * +FROM ( + SELECT w_warehouse_name , + i_item_id , + Sum( + CASE + WHEN ( + Cast(d_date AS DATE) < Cast ('2000-05-13' AS DATE)) THEN inv_quantity_on_hand + ELSE 0 + END) AS inv_before , + Sum( + CASE + WHEN ( + Cast(d_date AS DATE) >= Cast ('2000-05-13' AS DATE)) THEN inv_quantity_on_hand + ELSE 0 + END) AS inv_after + FROM inventory , + warehouse , + item , + date_dim + WHERE i_current_price BETWEEN 0.99 AND 1.49 + AND i_item_sk = inv_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND inv_date_sk = d_date_sk + AND d_date BETWEEN (Cast ('2000-05-13' AS DATE) - INTERVAL '30' day) AND ( + cast ('2000-05-13' AS date) + INTERVAL '30' day) + GROUP BY w_warehouse_name, + i_item_id) x +WHERE ( + CASE + WHEN inv_before > 0 THEN inv_after / inv_before + ELSE NULL + END) BETWEEN 2.0/3.0 AND 3.0/2.0 +ORDER BY w_warehouse_name , + i_item_id +LIMIT 100; +WITH "x" AS ( + SELECT + "warehouse"."w_warehouse_name" AS "w_warehouse_name", + "item"."i_item_id" AS "i_item_id", + SUM( + CASE + WHEN CAST("date_dim"."d_date" AS DATE) < CAST('2000-05-13' AS DATE) + THEN "inventory"."inv_quantity_on_hand" + ELSE 0 + END + ) AS "inv_before", + SUM( + CASE + WHEN CAST("date_dim"."d_date" AS DATE) >= CAST('2000-05-13' AS DATE) + THEN "inventory"."inv_quantity_on_hand" + ELSE 0 + END + ) AS "inv_after" + FROM "inventory" AS "inventory" + JOIN "warehouse" AS "warehouse" + ON "inventory"."inv_warehouse_sk" = "warehouse"."w_warehouse_sk" + JOIN "item" AS "item" + ON "item"."i_current_price" <= 1.49 + AND "item"."i_current_price" >= 0.99 + AND "item"."i_item_sk" = "inventory"."inv_item_sk" + JOIN "date_dim" AS "date_dim" + ON "inventory"."inv_date_sk" = "date_dim"."d_date_sk" + AND CAST("date_dim"."d_date" AS DATE) <= CAST('2000-06-12' AS DATE) + AND CAST("date_dim"."d_date" AS DATE) >= CAST('2000-04-13' AS DATE) + GROUP BY + "warehouse"."w_warehouse_name", + "item"."i_item_id" +) +SELECT + "x"."w_warehouse_name" AS "w_warehouse_name", + "x"."i_item_id" AS "i_item_id", + "x"."inv_before" AS "inv_before", + "x"."inv_after" AS "inv_after" +FROM "x" AS "x" +WHERE + CASE WHEN "x"."inv_before" > 0 THEN "x"."inv_after" / "x"."inv_before" ELSE NULL END <= 1.5 + AND CASE WHEN "x"."inv_before" > 0 THEN "x"."inv_after" / "x"."inv_before" ELSE NULL END >= 0.6666666666666666666666666667 +ORDER BY + "x"."w_warehouse_name", + "x"."i_item_id" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 22 +-------------------------------------- +SELECT i_product_name, + i_brand, + i_class, + i_category, + Avg(inv_quantity_on_hand) qoh +FROM inventory, + date_dim, + item, + warehouse +WHERE inv_date_sk = d_date_sk + AND inv_item_sk = i_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND d_month_seq BETWEEN 1205 AND 1205 + 11 +GROUP BY rollup( i_product_name, i_brand, i_class, i_category ) +ORDER BY qoh, + i_product_name, + i_brand, + i_class, + i_category +LIMIT 100; +SELECT + "item"."i_product_name" AS "i_product_name", + "item"."i_brand" AS "i_brand", + "item"."i_class" AS "i_class", + "item"."i_category" AS "i_category", + AVG("inventory"."inv_quantity_on_hand") AS "qoh" +FROM "inventory" AS "inventory" +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_month_seq" <= 1216 + AND "date_dim"."d_month_seq" >= 1205 + AND "inventory"."inv_date_sk" = "date_dim"."d_date_sk" +JOIN "item" AS "item" + ON "inventory"."inv_item_sk" = "item"."i_item_sk" +JOIN "warehouse" AS "warehouse" + ON "inventory"."inv_warehouse_sk" = "warehouse"."w_warehouse_sk" +GROUP BY +ROLLUP ( + "item"."i_product_name", + "item"."i_brand", + "item"."i_class", + "item"."i_category" +) +ORDER BY + "qoh", + "i_product_name", + "i_brand", + "i_class", + "i_category" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 23 +-------------------------------------- +WITH frequent_ss_items + AS (SELECT Substr(i_item_desc, 1, 30) itemdesc, + i_item_sk item_sk, + d_date solddate, + Count(*) cnt + FROM store_sales, + date_dim, + item + WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND d_year IN ( 1998, 1998 + 1, 1998 + 2, 1998 + 3 ) + GROUP BY Substr(i_item_desc, 1, 30), + i_item_sk, + d_date + HAVING Count(*) > 4), + max_store_sales + AS (SELECT Max(csales) tpcds_cmax + FROM (SELECT c_customer_sk, + Sum(ss_quantity * ss_sales_price) csales + FROM store_sales, + customer, + date_dim + WHERE ss_customer_sk = c_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year IN ( 1998, 1998 + 1, 1998 + 2, 1998 + 3 ) + GROUP BY c_customer_sk)), + best_ss_customer + AS (SELECT c_customer_sk, + Sum(ss_quantity * ss_sales_price) ssales + FROM store_sales, + customer + WHERE ss_customer_sk = c_customer_sk + GROUP BY c_customer_sk + HAVING Sum(ss_quantity * ss_sales_price) > + ( 95 / 100.0 ) * (SELECT * + FROM max_store_sales)) +SELECT Sum(sales) +FROM (SELECT cs_quantity * cs_list_price sales + FROM catalog_sales, + date_dim + WHERE d_year = 1998 + AND d_moy = 6 + AND cs_sold_date_sk = d_date_sk + AND cs_item_sk IN (SELECT item_sk + FROM frequent_ss_items) + AND cs_bill_customer_sk IN (SELECT c_customer_sk + FROM best_ss_customer) + UNION ALL + SELECT ws_quantity * ws_list_price sales + FROM web_sales, + date_dim + WHERE d_year = 1998 + AND d_moy = 6 + AND ws_sold_date_sk = d_date_sk + AND ws_item_sk IN (SELECT item_sk + FROM frequent_ss_items) + AND ws_bill_customer_sk IN (SELECT c_customer_sk + FROM best_ss_customer)) LIMIT 100; +WITH "frequent_ss_items" AS ( + SELECT + "item"."i_item_sk" AS "item_sk" + FROM "store_sales" AS "store_sales" + JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_year" IN (1998, 1999, 2000, 2001) + AND "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "item" AS "item" + ON "store_sales"."ss_item_sk" = "item"."i_item_sk" + GROUP BY + SUBSTR("item"."i_item_desc", 1, 30), + "item"."i_item_sk", + "date_dim"."d_date" + HAVING + COUNT(*) > 4 +), "customer_2" AS ( + SELECT + "customer"."c_customer_sk" AS "c_customer_sk" + FROM "customer" AS "customer" +), "_q_0" AS ( + SELECT + SUM("store_sales"."ss_quantity" * "store_sales"."ss_sales_price") AS "csales" + FROM "store_sales" AS "store_sales" + JOIN "customer_2" AS "customer" + ON "store_sales"."ss_customer_sk" = "customer"."c_customer_sk" + JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_year" IN (1998, 1999, 2000, 2001) + AND "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "customer"."c_customer_sk" +), "max_store_sales" AS ( + SELECT + MAX("_q_0"."csales") AS "tpcds_cmax" + FROM "_q_0" AS "_q_0" +), "best_ss_customer" AS ( + SELECT + "customer"."c_customer_sk" AS "c_customer_sk" + FROM "store_sales" AS "store_sales" + CROSS JOIN "max_store_sales" + JOIN "customer_2" AS "customer" + ON "store_sales"."ss_customer_sk" = "customer"."c_customer_sk" + GROUP BY + "customer"."c_customer_sk" + HAVING + SUM("store_sales"."ss_quantity" * "store_sales"."ss_sales_price") > 0.95 * MAX("max_store_sales"."tpcds_cmax") +), "_u_1" AS ( + SELECT + "frequent_ss_items"."item_sk" AS "item_sk" + FROM "frequent_ss_items" + GROUP BY + "frequent_ss_items"."item_sk" +), "_u_2" AS ( + SELECT + "best_ss_customer"."c_customer_sk" AS "c_customer_sk" + FROM "best_ss_customer" + GROUP BY + "best_ss_customer"."c_customer_sk" +), "date_dim_4" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_year" AS "d_year", + "date_dim"."d_moy" AS "d_moy" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_moy" = 6 AND "date_dim"."d_year" = 1998 +), "_q_1" AS ( + SELECT + "catalog_sales"."cs_quantity" * "catalog_sales"."cs_list_price" AS "sales" + FROM "catalog_sales" AS "catalog_sales" + LEFT JOIN "_u_1" AS "_u_1" + ON "catalog_sales"."cs_item_sk" = "_u_1"."item_sk" + LEFT JOIN "_u_2" AS "_u_2" + ON "catalog_sales"."cs_bill_customer_sk" = "_u_2"."c_customer_sk" + JOIN "date_dim_4" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + WHERE + NOT "_u_1"."item_sk" IS NULL AND NOT "_u_2"."c_customer_sk" IS NULL + UNION ALL + SELECT + "web_sales"."ws_quantity" * "web_sales"."ws_list_price" AS "sales" + FROM "web_sales" AS "web_sales" + LEFT JOIN "_u_1" AS "_u_3" + ON "web_sales"."ws_item_sk" = "_u_3"."item_sk" + LEFT JOIN "_u_2" AS "_u_4" + ON "web_sales"."ws_bill_customer_sk" = "_u_4"."c_customer_sk" + JOIN "date_dim_4" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + WHERE + NOT "_u_3"."item_sk" IS NULL AND NOT "_u_4"."c_customer_sk" IS NULL +) +SELECT + SUM("_q_1"."sales") AS "_col_0" +FROM "_q_1" AS "_q_1" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 24 +-------------------------------------- +WITH ssales + AS (SELECT c_last_name, + c_first_name, + s_store_name, + ca_state, + s_state, + i_color, + i_current_price, + i_manager_id, + i_units, + i_size, + Sum(ss_net_profit) netpaid + FROM store_sales, + store_returns, + store, + item, + customer, + customer_address + WHERE ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk + AND ss_customer_sk = c_customer_sk + AND ss_item_sk = i_item_sk + AND ss_store_sk = s_store_sk + AND c_birth_country = Upper(ca_country) + AND s_zip = ca_zip + AND s_market_id = 6 + GROUP BY c_last_name, + c_first_name, + s_store_name, + ca_state, + s_state, + i_color, + i_current_price, + i_manager_id, + i_units, + i_size) +SELECT c_last_name, + c_first_name, + s_store_name, + Sum(netpaid) paid +FROM ssales +WHERE i_color = 'papaya' +GROUP BY c_last_name, + c_first_name, + s_store_name +HAVING Sum(netpaid) > (SELECT 0.05 * Avg(netpaid) + FROM ssales); +WITH "ssales" AS ( + SELECT + "customer"."c_last_name" AS "c_last_name", + "customer"."c_first_name" AS "c_first_name", + "store"."s_store_name" AS "s_store_name", + "item"."i_color" AS "i_color", + SUM("store_sales"."ss_net_profit") AS "netpaid" + FROM "store_sales" AS "store_sales" + JOIN "store_returns" AS "store_returns" + ON "store_sales"."ss_item_sk" = "store_returns"."sr_item_sk" + AND "store_sales"."ss_ticket_number" = "store_returns"."sr_ticket_number" + JOIN "store" AS "store" + ON "store"."s_market_id" = 6 AND "store_sales"."ss_store_sk" = "store"."s_store_sk" + JOIN "item" AS "item" + ON "store_sales"."ss_item_sk" = "item"."i_item_sk" + JOIN "customer" AS "customer" + ON "store_sales"."ss_customer_sk" = "customer"."c_customer_sk" + JOIN "customer_address" AS "customer_address" + ON "customer"."c_birth_country" = UPPER("customer_address"."ca_country") + AND "store"."s_zip" = "customer_address"."ca_zip" + GROUP BY + "customer"."c_last_name", + "customer"."c_first_name", + "store"."s_store_name", + "customer_address"."ca_state", + "store"."s_state", + "item"."i_color", + "item"."i_current_price", + "item"."i_manager_id", + "item"."i_units", + "item"."i_size" +), "_u_0" AS ( + SELECT + 0.05 * AVG("ssales"."netpaid") AS "_col_0" + FROM "ssales" +) +SELECT + "ssales"."c_last_name" AS "c_last_name", + "ssales"."c_first_name" AS "c_first_name", + "ssales"."s_store_name" AS "s_store_name", + SUM("ssales"."netpaid") AS "paid" +FROM "ssales" +CROSS JOIN "_u_0" AS "_u_0" +WHERE + "ssales"."i_color" = 'papaya' +GROUP BY + "ssales"."c_last_name", + "ssales"."c_first_name", + "ssales"."s_store_name" +HAVING + SUM("ssales"."netpaid") > MAX("_u_0"."_col_0"); + +-------------------------------------- +-- TPC-DS 25 +-------------------------------------- +SELECT i_item_id, + i_item_desc, + s_store_id, + s_store_name, + Max(ss_net_profit) AS store_sales_profit, + Max(sr_net_loss) AS store_returns_loss, + Max(cs_net_profit) AS catalog_sales_profit +FROM store_sales, + store_returns, + catalog_sales, + date_dim d1, + date_dim d2, + date_dim d3, + store, + item +WHERE d1.d_moy = 4 + AND d1.d_year = 2001 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_moy BETWEEN 4 AND 10 + AND d2.d_year = 2001 + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_moy BETWEEN 4 AND 10 + AND d3.d_year = 2001 +GROUP BY i_item_id, + i_item_desc, + s_store_id, + s_store_name +ORDER BY i_item_id, + i_item_desc, + s_store_id, + s_store_name +LIMIT 100; +WITH "d3" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_year" AS "d_year", + "date_dim"."d_moy" AS "d_moy" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_moy" <= 10 AND "date_dim"."d_moy" >= 4 AND "date_dim"."d_year" = 2001 +) +SELECT + "item"."i_item_id" AS "i_item_id", + "item"."i_item_desc" AS "i_item_desc", + "store"."s_store_id" AS "s_store_id", + "store"."s_store_name" AS "s_store_name", + MAX("store_sales"."ss_net_profit") AS "store_sales_profit", + MAX("store_returns"."sr_net_loss") AS "store_returns_loss", + MAX("catalog_sales"."cs_net_profit") AS "catalog_sales_profit" +FROM "store_sales" AS "store_sales" +CROSS JOIN "d3" AS "d3" +JOIN "catalog_sales" AS "catalog_sales" + ON "catalog_sales"."cs_sold_date_sk" = "d3"."d_date_sk" +JOIN "store_returns" AS "store_returns" + ON "store_returns"."sr_customer_sk" = "catalog_sales"."cs_bill_customer_sk" + AND "store_returns"."sr_item_sk" = "catalog_sales"."cs_item_sk" + AND "store_sales"."ss_customer_sk" = "store_returns"."sr_customer_sk" + AND "store_sales"."ss_item_sk" = "store_returns"."sr_item_sk" + AND "store_sales"."ss_ticket_number" = "store_returns"."sr_ticket_number" +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_date_sk" = "store_sales"."ss_sold_date_sk" + AND "date_dim"."d_moy" = 4 + AND "date_dim"."d_year" = 2001 +JOIN "d3" AS "d2" + ON "store_returns"."sr_returned_date_sk" = "d2"."d_date_sk" +JOIN "store" AS "store" + ON "store"."s_store_sk" = "store_sales"."ss_store_sk" +JOIN "item" AS "item" + ON "item"."i_item_sk" = "store_sales"."ss_item_sk" +GROUP BY + "item"."i_item_id", + "item"."i_item_desc", + "store"."s_store_id", + "store"."s_store_name" +ORDER BY + "i_item_id", + "i_item_desc", + "s_store_id", + "s_store_name" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 26 +-------------------------------------- +SELECT i_item_id, + Avg(cs_quantity) agg1, + Avg(cs_list_price) agg2, + Avg(cs_coupon_amt) agg3, + Avg(cs_sales_price) agg4 +FROM catalog_sales, + customer_demographics, + date_dim, + item, + promotion +WHERE cs_sold_date_sk = d_date_sk + AND cs_item_sk = i_item_sk + AND cs_bill_cdemo_sk = cd_demo_sk + AND cs_promo_sk = p_promo_sk + AND cd_gender = 'F' + AND cd_marital_status = 'W' + AND cd_education_status = 'Secondary' + AND ( p_channel_email = 'N' + OR p_channel_event = 'N' ) + AND d_year = 2000 +GROUP BY i_item_id +ORDER BY i_item_id +LIMIT 100; +SELECT + "item"."i_item_id" AS "i_item_id", + AVG("catalog_sales"."cs_quantity") AS "agg1", + AVG("catalog_sales"."cs_list_price") AS "agg2", + AVG("catalog_sales"."cs_coupon_amt") AS "agg3", + AVG("catalog_sales"."cs_sales_price") AS "agg4" +FROM "catalog_sales" AS "catalog_sales" +JOIN "customer_demographics" AS "customer_demographics" + ON "catalog_sales"."cs_bill_cdemo_sk" = "customer_demographics"."cd_demo_sk" + AND "customer_demographics"."cd_education_status" = 'Secondary' + AND "customer_demographics"."cd_gender" = 'F' + AND "customer_demographics"."cd_marital_status" = 'W' +JOIN "date_dim" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + AND "date_dim"."d_year" = 2000 +JOIN "item" AS "item" + ON "catalog_sales"."cs_item_sk" = "item"."i_item_sk" +JOIN "promotion" AS "promotion" + ON "catalog_sales"."cs_promo_sk" = "promotion"."p_promo_sk" + AND ( + "promotion"."p_channel_email" = 'N' OR "promotion"."p_channel_event" = 'N' + ) +GROUP BY + "item"."i_item_id" +ORDER BY + "i_item_id" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 27 +-------------------------------------- +SELECT i_item_id, + s_state, + Grouping(s_state) g_state, + Avg(ss_quantity) agg1, + Avg(ss_list_price) agg2, + Avg(ss_coupon_amt) agg3, + Avg(ss_sales_price) agg4 +FROM store_sales, + customer_demographics, + date_dim, + store, + item +WHERE ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + AND ss_store_sk = s_store_sk + AND ss_cdemo_sk = cd_demo_sk + AND cd_gender = 'M' + AND cd_marital_status = 'D' + AND cd_education_status = 'College' + AND d_year = 2000 + AND s_state IN ( 'TN', 'TN', 'TN', 'TN', + 'TN', 'TN' ) +GROUP BY rollup ( i_item_id, s_state ) +ORDER BY i_item_id, + s_state +LIMIT 100; +SELECT + "item"."i_item_id" AS "i_item_id", + "store"."s_state" AS "s_state", + GROUPING("store"."s_state") AS "g_state", + AVG("store_sales"."ss_quantity") AS "agg1", + AVG("store_sales"."ss_list_price") AS "agg2", + AVG("store_sales"."ss_coupon_amt") AS "agg3", + AVG("store_sales"."ss_sales_price") AS "agg4" +FROM "store_sales" AS "store_sales" +JOIN "customer_demographics" AS "customer_demographics" + ON "customer_demographics"."cd_education_status" = 'College' + AND "customer_demographics"."cd_gender" = 'M' + AND "customer_demographics"."cd_marital_status" = 'D' + AND "store_sales"."ss_cdemo_sk" = "customer_demographics"."cd_demo_sk" +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_year" = 2000 + AND "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" +JOIN "store" AS "store" + ON "store"."s_state" IN ('TN', 'TN', 'TN', 'TN', 'TN', 'TN') + AND "store_sales"."ss_store_sk" = "store"."s_store_sk" +JOIN "item" AS "item" + ON "store_sales"."ss_item_sk" = "item"."i_item_sk" +GROUP BY +ROLLUP ( + "item"."i_item_id", + "store"."s_state" +) +ORDER BY + "i_item_id", + "s_state" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 28 +-------------------------------------- +SELECT * +FROM (SELECT Avg(ss_list_price) B1_LP, + Count(ss_list_price) B1_CNT, + Count(DISTINCT ss_list_price) B1_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 0 AND 5 + AND ( ss_list_price BETWEEN 18 AND 18 + 10 + OR ss_coupon_amt BETWEEN 1939 AND 1939 + 1000 + OR ss_wholesale_cost BETWEEN 34 AND 34 + 20 )) B1, + (SELECT Avg(ss_list_price) B2_LP, + Count(ss_list_price) B2_CNT, + Count(DISTINCT ss_list_price) B2_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 6 AND 10 + AND ( ss_list_price BETWEEN 1 AND 1 + 10 + OR ss_coupon_amt BETWEEN 35 AND 35 + 1000 + OR ss_wholesale_cost BETWEEN 50 AND 50 + 20 )) B2, + (SELECT Avg(ss_list_price) B3_LP, + Count(ss_list_price) B3_CNT, + Count(DISTINCT ss_list_price) B3_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 11 AND 15 + AND ( ss_list_price BETWEEN 91 AND 91 + 10 + OR ss_coupon_amt BETWEEN 1412 AND 1412 + 1000 + OR ss_wholesale_cost BETWEEN 17 AND 17 + 20 )) B3, + (SELECT Avg(ss_list_price) B4_LP, + Count(ss_list_price) B4_CNT, + Count(DISTINCT ss_list_price) B4_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 16 AND 20 + AND ( ss_list_price BETWEEN 9 AND 9 + 10 + OR ss_coupon_amt BETWEEN 5270 AND 5270 + 1000 + OR ss_wholesale_cost BETWEEN 29 AND 29 + 20 )) B4, + (SELECT Avg(ss_list_price) B5_LP, + Count(ss_list_price) B5_CNT, + Count(DISTINCT ss_list_price) B5_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 21 AND 25 + AND ( ss_list_price BETWEEN 45 AND 45 + 10 + OR ss_coupon_amt BETWEEN 826 AND 826 + 1000 + OR ss_wholesale_cost BETWEEN 5 AND 5 + 20 )) B5, + (SELECT Avg(ss_list_price) B6_LP, + Count(ss_list_price) B6_CNT, + Count(DISTINCT ss_list_price) B6_CNTD + FROM store_sales + WHERE ss_quantity BETWEEN 26 AND 30 + AND ( ss_list_price BETWEEN 174 AND 174 + 10 + OR ss_coupon_amt BETWEEN 5548 AND 5548 + 1000 + OR ss_wholesale_cost BETWEEN 42 AND 42 + 20 )) B6 +LIMIT 100; +WITH "b1" AS ( + SELECT + AVG("store_sales"."ss_list_price") AS "b1_lp", + COUNT("store_sales"."ss_list_price") AS "b1_cnt", + COUNT(DISTINCT "store_sales"."ss_list_price") AS "b1_cntd" + FROM "store_sales" AS "store_sales" + WHERE + ( + "store_sales"."ss_coupon_amt" <= 2939 AND "store_sales"."ss_coupon_amt" >= 1939 + OR "store_sales"."ss_list_price" <= 28 AND "store_sales"."ss_list_price" >= 18 + OR "store_sales"."ss_wholesale_cost" <= 54 AND "store_sales"."ss_wholesale_cost" >= 34 + ) + AND "store_sales"."ss_quantity" <= 5 + AND "store_sales"."ss_quantity" >= 0 +), "b2" AS ( + SELECT + AVG("store_sales"."ss_list_price") AS "b2_lp", + COUNT("store_sales"."ss_list_price") AS "b2_cnt", + COUNT(DISTINCT "store_sales"."ss_list_price") AS "b2_cntd" + FROM "store_sales" AS "store_sales" + WHERE + ( + "store_sales"."ss_coupon_amt" <= 1035 AND "store_sales"."ss_coupon_amt" >= 35 + OR "store_sales"."ss_list_price" <= 11 AND "store_sales"."ss_list_price" >= 1 + OR "store_sales"."ss_wholesale_cost" <= 70 AND "store_sales"."ss_wholesale_cost" >= 50 + ) + AND "store_sales"."ss_quantity" <= 10 + AND "store_sales"."ss_quantity" >= 6 +), "b3" AS ( + SELECT + AVG("store_sales"."ss_list_price") AS "b3_lp", + COUNT("store_sales"."ss_list_price") AS "b3_cnt", + COUNT(DISTINCT "store_sales"."ss_list_price") AS "b3_cntd" + FROM "store_sales" AS "store_sales" + WHERE + ( + "store_sales"."ss_coupon_amt" <= 2412 AND "store_sales"."ss_coupon_amt" >= 1412 + OR "store_sales"."ss_list_price" <= 101 AND "store_sales"."ss_list_price" >= 91 + OR "store_sales"."ss_wholesale_cost" <= 37 AND "store_sales"."ss_wholesale_cost" >= 17 + ) + AND "store_sales"."ss_quantity" <= 15 + AND "store_sales"."ss_quantity" >= 11 +), "b4" AS ( + SELECT + AVG("store_sales"."ss_list_price") AS "b4_lp", + COUNT("store_sales"."ss_list_price") AS "b4_cnt", + COUNT(DISTINCT "store_sales"."ss_list_price") AS "b4_cntd" + FROM "store_sales" AS "store_sales" + WHERE + ( + "store_sales"."ss_coupon_amt" <= 6270 AND "store_sales"."ss_coupon_amt" >= 5270 + OR "store_sales"."ss_list_price" <= 19 AND "store_sales"."ss_list_price" >= 9 + OR "store_sales"."ss_wholesale_cost" <= 49 AND "store_sales"."ss_wholesale_cost" >= 29 + ) + AND "store_sales"."ss_quantity" <= 20 + AND "store_sales"."ss_quantity" >= 16 +), "b5" AS ( + SELECT + AVG("store_sales"."ss_list_price") AS "b5_lp", + COUNT("store_sales"."ss_list_price") AS "b5_cnt", + COUNT(DISTINCT "store_sales"."ss_list_price") AS "b5_cntd" + FROM "store_sales" AS "store_sales" + WHERE + ( + "store_sales"."ss_coupon_amt" <= 1826 AND "store_sales"."ss_coupon_amt" >= 826 + OR "store_sales"."ss_list_price" <= 55 AND "store_sales"."ss_list_price" >= 45 + OR "store_sales"."ss_wholesale_cost" <= 25 AND "store_sales"."ss_wholesale_cost" >= 5 + ) + AND "store_sales"."ss_quantity" <= 25 + AND "store_sales"."ss_quantity" >= 21 +), "b6" AS ( + SELECT + AVG("store_sales"."ss_list_price") AS "b6_lp", + COUNT("store_sales"."ss_list_price") AS "b6_cnt", + COUNT(DISTINCT "store_sales"."ss_list_price") AS "b6_cntd" + FROM "store_sales" AS "store_sales" + WHERE + ( + "store_sales"."ss_coupon_amt" <= 6548 AND "store_sales"."ss_coupon_amt" >= 5548 + OR "store_sales"."ss_list_price" <= 184 AND "store_sales"."ss_list_price" >= 174 + OR "store_sales"."ss_wholesale_cost" <= 62 AND "store_sales"."ss_wholesale_cost" >= 42 + ) + AND "store_sales"."ss_quantity" <= 30 + AND "store_sales"."ss_quantity" >= 26 +) +SELECT + "b1"."b1_lp" AS "b1_lp", + "b1"."b1_cnt" AS "b1_cnt", + "b1"."b1_cntd" AS "b1_cntd", + "b2"."b2_lp" AS "b2_lp", + "b2"."b2_cnt" AS "b2_cnt", + "b2"."b2_cntd" AS "b2_cntd", + "b3"."b3_lp" AS "b3_lp", + "b3"."b3_cnt" AS "b3_cnt", + "b3"."b3_cntd" AS "b3_cntd", + "b4"."b4_lp" AS "b4_lp", + "b4"."b4_cnt" AS "b4_cnt", + "b4"."b4_cntd" AS "b4_cntd", + "b5"."b5_lp" AS "b5_lp", + "b5"."b5_cnt" AS "b5_cnt", + "b5"."b5_cntd" AS "b5_cntd", + "b6"."b6_lp" AS "b6_lp", + "b6"."b6_cnt" AS "b6_cnt", + "b6"."b6_cntd" AS "b6_cntd" +FROM "b1" AS "b1" +CROSS JOIN "b2" AS "b2" +CROSS JOIN "b3" AS "b3" +CROSS JOIN "b4" AS "b4" +CROSS JOIN "b5" AS "b5" +CROSS JOIN "b6" AS "b6" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 29 +-------------------------------------- +SELECT i_item_id, + i_item_desc, + s_store_id, + s_store_name, + Avg(ss_quantity) AS store_sales_quantity, + Avg(sr_return_quantity) AS store_returns_quantity, + Avg(cs_quantity) AS catalog_sales_quantity +FROM store_sales, + store_returns, + catalog_sales, + date_dim d1, + date_dim d2, + date_dim d3, + store, + item +WHERE d1.d_moy = 4 + AND d1.d_year = 1998 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND ss_customer_sk = sr_customer_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND sr_returned_date_sk = d2.d_date_sk + AND d2.d_moy BETWEEN 4 AND 4 + 3 + AND d2.d_year = 1998 + AND sr_customer_sk = cs_bill_customer_sk + AND sr_item_sk = cs_item_sk + AND cs_sold_date_sk = d3.d_date_sk + AND d3.d_year IN ( 1998, 1998 + 1, 1998 + 2 ) +GROUP BY i_item_id, + i_item_desc, + s_store_id, + s_store_name +ORDER BY i_item_id, + i_item_desc, + s_store_id, + s_store_name +LIMIT 100; +SELECT + "item"."i_item_id" AS "i_item_id", + "item"."i_item_desc" AS "i_item_desc", + "store"."s_store_id" AS "s_store_id", + "store"."s_store_name" AS "s_store_name", + AVG("store_sales"."ss_quantity") AS "store_sales_quantity", + AVG("store_returns"."sr_return_quantity") AS "store_returns_quantity", + AVG("catalog_sales"."cs_quantity") AS "catalog_sales_quantity" +FROM "store_sales" AS "store_sales" +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_year" IN (1998, 1999, 2000) +JOIN "catalog_sales" AS "catalog_sales" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" +JOIN "store_returns" AS "store_returns" + ON "store_returns"."sr_customer_sk" = "catalog_sales"."cs_bill_customer_sk" + AND "store_returns"."sr_item_sk" = "catalog_sales"."cs_item_sk" + AND "store_sales"."ss_customer_sk" = "store_returns"."sr_customer_sk" + AND "store_sales"."ss_item_sk" = "store_returns"."sr_item_sk" + AND "store_sales"."ss_ticket_number" = "store_returns"."sr_ticket_number" +JOIN "date_dim" AS "date_dim_2" + ON "date_dim_2"."d_date_sk" = "store_sales"."ss_sold_date_sk" + AND "date_dim_2"."d_moy" = 4 + AND "date_dim_2"."d_year" = 1998 +JOIN "date_dim" AS "date_dim_3" + ON "date_dim_3"."d_moy" <= 7 + AND "date_dim_3"."d_moy" >= 4 + AND "date_dim_3"."d_year" = 1998 + AND "store_returns"."sr_returned_date_sk" = "date_dim_3"."d_date_sk" +JOIN "store" AS "store" + ON "store"."s_store_sk" = "store_sales"."ss_store_sk" +JOIN "item" AS "item" + ON "item"."i_item_sk" = "store_sales"."ss_item_sk" +GROUP BY + "item"."i_item_id", + "item"."i_item_desc", + "store"."s_store_id", + "store"."s_store_name" +ORDER BY + "i_item_id", + "i_item_desc", + "s_store_id", + "s_store_name" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 30 +-------------------------------------- +WITH customer_total_return + AS (SELECT wr_returning_customer_sk AS ctr_customer_sk, + ca_state AS ctr_state, + Sum(wr_return_amt) AS ctr_total_return + FROM web_returns, + date_dim, + customer_address + WHERE wr_returned_date_sk = d_date_sk + AND d_year = 2000 + AND wr_returning_addr_sk = ca_address_sk + GROUP BY wr_returning_customer_sk, + ca_state) +SELECT c_customer_id, + c_salutation, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_day, + c_birth_month, + c_birth_year, + c_birth_country, + c_login, + c_email_address, + c_last_review_date, + ctr_total_return +FROM customer_total_return ctr1, + customer_address, + customer +WHERE ctr1.ctr_total_return > (SELECT Avg(ctr_total_return) * 1.2 + FROM customer_total_return ctr2 + WHERE ctr1.ctr_state = ctr2.ctr_state) + AND ca_address_sk = c_current_addr_sk + AND ca_state = 'IN' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY c_customer_id, + c_salutation, + c_first_name, + c_last_name, + c_preferred_cust_flag, + c_birth_day, + c_birth_month, + c_birth_year, + c_birth_country, + c_login, + c_email_address, + c_last_review_date, + ctr_total_return +LIMIT 100; +WITH "customer_total_return" AS ( + SELECT + "web_returns"."wr_returning_customer_sk" AS "ctr_customer_sk", + "customer_address"."ca_state" AS "ctr_state", + SUM("web_returns"."wr_return_amt") AS "ctr_total_return" + FROM "web_returns" AS "web_returns" + JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_year" = 2000 + AND "web_returns"."wr_returned_date_sk" = "date_dim"."d_date_sk" + JOIN "customer_address" AS "customer_address" + ON "web_returns"."wr_returning_addr_sk" = "customer_address"."ca_address_sk" + GROUP BY + "web_returns"."wr_returning_customer_sk", + "customer_address"."ca_state" +), "_u_0" AS ( + SELECT + AVG("ctr2"."ctr_total_return") * 1.2 AS "_col_0", + "ctr2"."ctr_state" AS "_u_1" + FROM "customer_total_return" AS "ctr2" + GROUP BY + "ctr2"."ctr_state" +) +SELECT + "customer"."c_customer_id" AS "c_customer_id", + "customer"."c_salutation" AS "c_salutation", + "customer"."c_first_name" AS "c_first_name", + "customer"."c_last_name" AS "c_last_name", + "customer"."c_preferred_cust_flag" AS "c_preferred_cust_flag", + "customer"."c_birth_day" AS "c_birth_day", + "customer"."c_birth_month" AS "c_birth_month", + "customer"."c_birth_year" AS "c_birth_year", + "customer"."c_birth_country" AS "c_birth_country", + "customer"."c_login" AS "c_login", + "customer"."c_email_address" AS "c_email_address", + "customer"."c_last_review_date" AS "c_last_review_date", + "ctr1"."ctr_total_return" AS "ctr_total_return" +FROM "customer_total_return" AS "ctr1" +LEFT JOIN "_u_0" AS "_u_0" + ON "ctr1"."ctr_state" = "_u_0"."_u_1" +JOIN "customer" AS "customer" + ON "ctr1"."ctr_customer_sk" = "customer"."c_customer_sk" +JOIN "customer_address" AS "customer_address" + ON "customer_address"."ca_address_sk" = "customer"."c_current_addr_sk" + AND "customer_address"."ca_state" = 'IN' +WHERE + "ctr1"."ctr_total_return" > "_u_0"."_col_0" +ORDER BY + "c_customer_id", + "c_salutation", + "c_first_name", + "c_last_name", + "c_preferred_cust_flag", + "c_birth_day", + "c_birth_month", + "c_birth_year", + "c_birth_country", + "c_login", + "c_email_address", + "c_last_review_date", + "ctr_total_return" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 31 +-------------------------------------- +WITH ss + AS (SELECT ca_county, + d_qoy, + d_year, + Sum(ss_ext_sales_price) AS store_sales + FROM store_sales, + date_dim, + customer_address + WHERE ss_sold_date_sk = d_date_sk + AND ss_addr_sk = ca_address_sk + GROUP BY ca_county, + d_qoy, + d_year), + ws + AS (SELECT ca_county, + d_qoy, + d_year, + Sum(ws_ext_sales_price) AS web_sales + FROM web_sales, + date_dim, + customer_address + WHERE ws_sold_date_sk = d_date_sk + AND ws_bill_addr_sk = ca_address_sk + GROUP BY ca_county, + d_qoy, + d_year) +SELECT ss1.ca_county, + ss1.d_year, + ws2.web_sales / ws1.web_sales web_q1_q2_increase, + ss2.store_sales / ss1.store_sales store_q1_q2_increase, + ws3.web_sales / ws2.web_sales web_q2_q3_increase, + ss3.store_sales / ss2.store_sales store_q2_q3_increase +FROM ss ss1, + ss ss2, + ss ss3, + ws ws1, + ws ws2, + ws ws3 +WHERE ss1.d_qoy = 1 + AND ss1.d_year = 2001 + AND ss1.ca_county = ss2.ca_county + AND ss2.d_qoy = 2 + AND ss2.d_year = 2001 + AND ss2.ca_county = ss3.ca_county + AND ss3.d_qoy = 3 + AND ss3.d_year = 2001 + AND ss1.ca_county = ws1.ca_county + AND ws1.d_qoy = 1 + AND ws1.d_year = 2001 + AND ws1.ca_county = ws2.ca_county + AND ws2.d_qoy = 2 + AND ws2.d_year = 2001 + AND ws1.ca_county = ws3.ca_county + AND ws3.d_qoy = 3 + AND ws3.d_year = 2001 + AND CASE + WHEN ws1.web_sales > 0 THEN ws2.web_sales / ws1.web_sales + ELSE NULL + END > CASE + WHEN ss1.store_sales > 0 THEN + ss2.store_sales / ss1.store_sales + ELSE NULL + END + AND CASE + WHEN ws2.web_sales > 0 THEN ws3.web_sales / ws2.web_sales + ELSE NULL + END > CASE + WHEN ss2.store_sales > 0 THEN + ss3.store_sales / ss2.store_sales + ELSE NULL + END +ORDER BY ss1.d_year; +WITH "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_year" AS "d_year", + "date_dim"."d_qoy" AS "d_qoy" + FROM "date_dim" AS "date_dim" +), "customer_address_2" AS ( + SELECT + "customer_address"."ca_address_sk" AS "ca_address_sk", + "customer_address"."ca_county" AS "ca_county" + FROM "customer_address" AS "customer_address" +), "ss" AS ( + SELECT + "customer_address"."ca_county" AS "ca_county", + "date_dim"."d_qoy" AS "d_qoy", + "date_dim"."d_year" AS "d_year", + SUM("store_sales"."ss_ext_sales_price") AS "store_sales" + FROM "store_sales" AS "store_sales" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "customer_address_2" AS "customer_address" + ON "store_sales"."ss_addr_sk" = "customer_address"."ca_address_sk" + GROUP BY + "customer_address"."ca_county", + "date_dim"."d_qoy", + "date_dim"."d_year" +), "ws" AS ( + SELECT + "customer_address"."ca_county" AS "ca_county", + "date_dim"."d_qoy" AS "d_qoy", + "date_dim"."d_year" AS "d_year", + SUM("web_sales"."ws_ext_sales_price") AS "web_sales" + FROM "web_sales" AS "web_sales" + JOIN "date_dim_2" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "customer_address_2" AS "customer_address" + ON "web_sales"."ws_bill_addr_sk" = "customer_address"."ca_address_sk" + GROUP BY + "customer_address"."ca_county", + "date_dim"."d_qoy", + "date_dim"."d_year" +) +SELECT + "ss1"."ca_county" AS "ca_county", + "ss1"."d_year" AS "d_year", + "ws2"."web_sales" / "ws1"."web_sales" AS "web_q1_q2_increase", + "ss2"."store_sales" / "ss1"."store_sales" AS "store_q1_q2_increase", + "ws3"."web_sales" / "ws2"."web_sales" AS "web_q2_q3_increase", + "ss3"."store_sales" / "ss2"."store_sales" AS "store_q2_q3_increase" +FROM "ss" AS "ss1" +JOIN "ss" AS "ss2" + ON "ss1"."ca_county" = "ss2"."ca_county" AND "ss2"."d_qoy" = 2 AND "ss2"."d_year" = 2001 +JOIN "ws" AS "ws2" + ON "ws2"."d_qoy" = 2 AND "ws2"."d_year" = 2001 +JOIN "ws" AS "ws1" + ON "ss1"."ca_county" = "ws1"."ca_county" + AND "ws1"."ca_county" = "ws2"."ca_county" + AND "ws1"."d_qoy" = 1 + AND "ws1"."d_year" = 2001 + AND CASE + WHEN "ws1"."web_sales" > 0 + THEN "ws2"."web_sales" / "ws1"."web_sales" + ELSE NULL + END > CASE + WHEN "ss1"."store_sales" > 0 + THEN "ss2"."store_sales" / "ss1"."store_sales" + ELSE NULL + END +JOIN "ws" AS "ws3" + ON "ws1"."ca_county" = "ws3"."ca_county" AND "ws3"."d_qoy" = 3 AND "ws3"."d_year" = 2001 +JOIN "ss" AS "ss3" + ON "ss2"."ca_county" = "ss3"."ca_county" + AND "ss3"."d_qoy" = 3 + AND "ss3"."d_year" = 2001 + AND CASE + WHEN "ws2"."web_sales" > 0 + THEN "ws3"."web_sales" / "ws2"."web_sales" + ELSE NULL + END > CASE + WHEN "ss2"."store_sales" > 0 + THEN "ss3"."store_sales" / "ss2"."store_sales" + ELSE NULL + END +WHERE + "ss1"."d_qoy" = 1 AND "ss1"."d_year" = 2001 +ORDER BY + "ss1"."d_year"; + +-------------------------------------- +-- TPC-DS 32 +-------------------------------------- +SELECT + Sum(cs_ext_discount_amt) AS "excess discount amount" +FROM catalog_sales , + item , + date_dim +WHERE i_manufact_id = 610 +AND i_item_sk = cs_item_sk +AND d_date BETWEEN '2001-03-04' AND ( + Cast('2001-03-04' AS DATE) + INTERVAL '90' day) +AND d_date_sk = cs_sold_date_sk +AND cs_ext_discount_amt > + ( + SELECT 1.3 * avg(cs_ext_discount_amt) + FROM catalog_sales , + date_dim + WHERE cs_item_sk = i_item_sk + AND d_date BETWEEN '2001-03-04' AND ( + cast('2001-03-04' AS date) + INTERVAL '90' day) + AND d_date_sk = cs_sold_date_sk ) +LIMIT 100; +WITH "catalog_sales_2" AS ( + SELECT + "catalog_sales"."cs_sold_date_sk" AS "cs_sold_date_sk", + "catalog_sales"."cs_item_sk" AS "cs_item_sk", + "catalog_sales"."cs_ext_discount_amt" AS "cs_ext_discount_amt" + FROM "catalog_sales" AS "catalog_sales" +), "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_date" AS "d_date" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_date" >= '2001-03-04' + AND CAST("date_dim"."d_date" AS DATE) <= CAST('2001-06-02' AS DATE) +), "_u_0" AS ( + SELECT + 1.3 * AVG("catalog_sales"."cs_ext_discount_amt") AS "_col_0", + "catalog_sales"."cs_item_sk" AS "_u_1" + FROM "catalog_sales_2" AS "catalog_sales" + JOIN "date_dim_2" AS "date_dim" + ON "date_dim"."d_date_sk" = "catalog_sales"."cs_sold_date_sk" + GROUP BY + "catalog_sales"."cs_item_sk" +) +SELECT + SUM("catalog_sales"."cs_ext_discount_amt") AS "excess discount amount" +FROM "catalog_sales_2" AS "catalog_sales" +JOIN "item" AS "item" + ON "item"."i_item_sk" = "catalog_sales"."cs_item_sk" AND "item"."i_manufact_id" = 610 +LEFT JOIN "_u_0" AS "_u_0" + ON "_u_0"."_u_1" = "item"."i_item_sk" +JOIN "date_dim_2" AS "date_dim" + ON "date_dim"."d_date_sk" = "catalog_sales"."cs_sold_date_sk" +WHERE + "catalog_sales"."cs_ext_discount_amt" > "_u_0"."_col_0" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 33 +-------------------------------------- +WITH ss + AS (SELECT i_manufact_id, + Sum(ss_ext_sales_price) total_sales + FROM store_sales, + date_dim, + customer_address, + item + WHERE i_manufact_id IN (SELECT i_manufact_id + FROM item + WHERE i_category IN ( 'Books' )) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1999 + AND d_moy = 3 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id), + cs + AS (SELECT i_manufact_id, + Sum(cs_ext_sales_price) total_sales + FROM catalog_sales, + date_dim, + customer_address, + item + WHERE i_manufact_id IN (SELECT i_manufact_id + FROM item + WHERE i_category IN ( 'Books' )) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1999 + AND d_moy = 3 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id), + ws + AS (SELECT i_manufact_id, + Sum(ws_ext_sales_price) total_sales + FROM web_sales, + date_dim, + customer_address, + item + WHERE i_manufact_id IN (SELECT i_manufact_id + FROM item + WHERE i_category IN ( 'Books' )) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1999 + AND d_moy = 3 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -5 + GROUP BY i_manufact_id) +SELECT i_manufact_id, + Sum(total_sales) total_sales +FROM (SELECT * + FROM ss + UNION ALL + SELECT * + FROM cs + UNION ALL + SELECT * + FROM ws) tmp1 +GROUP BY i_manufact_id +ORDER BY total_sales +LIMIT 100; +WITH "item_2" AS ( + SELECT + "item"."i_item_sk" AS "i_item_sk", + "item"."i_manufact_id" AS "i_manufact_id" + FROM "item" AS "item" +), "_u_0" AS ( + SELECT + "item"."i_manufact_id" AS "i_manufact_id" + FROM "item" AS "item" + WHERE + "item"."i_category" IN ('Books') + GROUP BY + "item"."i_manufact_id" +), "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_year" AS "d_year", + "date_dim"."d_moy" AS "d_moy" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_moy" = 3 AND "date_dim"."d_year" = 1999 +), "customer_address_2" AS ( + SELECT + "customer_address"."ca_address_sk" AS "ca_address_sk", + "customer_address"."ca_gmt_offset" AS "ca_gmt_offset" + FROM "customer_address" AS "customer_address" + WHERE + "customer_address"."ca_gmt_offset" = -5 +), "ss" AS ( + SELECT + "item"."i_manufact_id" AS "i_manufact_id", + SUM("store_sales"."ss_ext_sales_price") AS "total_sales" + FROM "store_sales" AS "store_sales" + JOIN "item_2" AS "item" + ON "store_sales"."ss_item_sk" = "item"."i_item_sk" + LEFT JOIN "_u_0" AS "_u_0" + ON "item"."i_manufact_id" = "_u_0"."i_manufact_id" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "customer_address_2" AS "customer_address" + ON "store_sales"."ss_addr_sk" = "customer_address"."ca_address_sk" + WHERE + NOT "_u_0"."i_manufact_id" IS NULL + GROUP BY + "item"."i_manufact_id" +), "cs" AS ( + SELECT + "item"."i_manufact_id" AS "i_manufact_id", + SUM("catalog_sales"."cs_ext_sales_price") AS "total_sales" + FROM "catalog_sales" AS "catalog_sales" + JOIN "item_2" AS "item" + ON "catalog_sales"."cs_item_sk" = "item"."i_item_sk" + LEFT JOIN "_u_0" AS "_u_1" + ON "item"."i_manufact_id" = "_u_1"."i_manufact_id" + JOIN "date_dim_2" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "customer_address_2" AS "customer_address" + ON "catalog_sales"."cs_bill_addr_sk" = "customer_address"."ca_address_sk" + WHERE + NOT "_u_1"."i_manufact_id" IS NULL + GROUP BY + "item"."i_manufact_id" +), "ws" AS ( + SELECT + "item"."i_manufact_id" AS "i_manufact_id", + SUM("web_sales"."ws_ext_sales_price") AS "total_sales" + FROM "web_sales" AS "web_sales" + JOIN "item_2" AS "item" + ON "web_sales"."ws_item_sk" = "item"."i_item_sk" + LEFT JOIN "_u_0" AS "_u_2" + ON "item"."i_manufact_id" = "_u_2"."i_manufact_id" + JOIN "date_dim_2" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "customer_address_2" AS "customer_address" + ON "web_sales"."ws_bill_addr_sk" = "customer_address"."ca_address_sk" + WHERE + NOT "_u_2"."i_manufact_id" IS NULL + GROUP BY + "item"."i_manufact_id" +), "cte_4" AS ( + SELECT + "cs"."i_manufact_id" AS "i_manufact_id", + "cs"."total_sales" AS "total_sales" + FROM "cs" + UNION ALL + SELECT + "ws"."i_manufact_id" AS "i_manufact_id", + "ws"."total_sales" AS "total_sales" + FROM "ws" +), "tmp1" AS ( + SELECT + "ss"."i_manufact_id" AS "i_manufact_id", + "ss"."total_sales" AS "total_sales" + FROM "ss" + UNION ALL + SELECT + "cte_4"."i_manufact_id" AS "i_manufact_id", + "cte_4"."total_sales" AS "total_sales" + FROM "cte_4" AS "cte_4" +) +SELECT + "tmp1"."i_manufact_id" AS "i_manufact_id", + SUM("tmp1"."total_sales") AS "total_sales" +FROM "tmp1" AS "tmp1" +GROUP BY + "tmp1"."i_manufact_id" +ORDER BY + "total_sales" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 34 +-------------------------------------- +SELECT c_last_name, + c_first_name, + c_salutation, + c_preferred_cust_flag, + ss_ticket_number, + cnt +FROM (SELECT ss_ticket_number, + ss_customer_sk, + Count(*) cnt + FROM store_sales, + date_dim, + store, + household_demographics + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND ( date_dim.d_dom BETWEEN 1 AND 3 + OR date_dim.d_dom BETWEEN 25 AND 28 ) + AND ( household_demographics.hd_buy_potential = '>10000' + OR household_demographics.hd_buy_potential = 'unknown' ) + AND household_demographics.hd_vehicle_count > 0 + AND ( CASE + WHEN household_demographics.hd_vehicle_count > 0 THEN + household_demographics.hd_dep_count / + household_demographics.hd_vehicle_count + ELSE NULL + END ) > 1.2 + AND date_dim.d_year IN ( 1999, 1999 + 1, 1999 + 2 ) + AND store.s_county IN ( 'Williamson County', 'Williamson County', + 'Williamson County', + 'Williamson County' + , + 'Williamson County', 'Williamson County', + 'Williamson County', + 'Williamson County' + ) + GROUP BY ss_ticket_number, + ss_customer_sk) dn, + customer +WHERE ss_customer_sk = c_customer_sk + AND cnt BETWEEN 15 AND 20 +ORDER BY c_last_name, + c_first_name, + c_salutation, + c_preferred_cust_flag DESC; +WITH "dn" AS ( + SELECT + "store_sales"."ss_ticket_number" AS "ss_ticket_number", + "store_sales"."ss_customer_sk" AS "ss_customer_sk", + COUNT(*) AS "cnt" + FROM "store_sales" AS "store_sales" + JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_year" IN (1999, 2000, 2001) + AND "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + AND ( + ( + "date_dim"."d_dom" <= 28 AND "date_dim"."d_dom" >= 25 + ) + OR ( + "date_dim"."d_dom" <= 3 AND "date_dim"."d_dom" >= 1 + ) + ) + JOIN "store" AS "store" + ON "store"."s_county" IN ('Williamson County', 'Williamson County', 'Williamson County', 'Williamson County', 'Williamson County', 'Williamson County', 'Williamson County', 'Williamson County') + AND "store_sales"."ss_store_sk" = "store"."s_store_sk" + JOIN "household_demographics" AS "household_demographics" + ON ( + "household_demographics"."hd_buy_potential" = '>10000' + OR "household_demographics"."hd_buy_potential" = 'unknown' + ) + AND "household_demographics"."hd_vehicle_count" > 0 + AND "store_sales"."ss_hdemo_sk" = "household_demographics"."hd_demo_sk" + AND CASE + WHEN "household_demographics"."hd_vehicle_count" > 0 + THEN "household_demographics"."hd_dep_count" / "household_demographics"."hd_vehicle_count" + ELSE NULL + END > 1.2 + GROUP BY + "store_sales"."ss_ticket_number", + "store_sales"."ss_customer_sk" +) +SELECT + "customer"."c_last_name" AS "c_last_name", + "customer"."c_first_name" AS "c_first_name", + "customer"."c_salutation" AS "c_salutation", + "customer"."c_preferred_cust_flag" AS "c_preferred_cust_flag", + "dn"."ss_ticket_number" AS "ss_ticket_number", + "dn"."cnt" AS "cnt" +FROM "dn" AS "dn" +JOIN "customer" AS "customer" + ON "dn"."ss_customer_sk" = "customer"."c_customer_sk" +WHERE + "dn"."cnt" <= 20 AND "dn"."cnt" >= 15 +ORDER BY + "c_last_name", + "c_first_name", + "c_salutation", + "c_preferred_cust_flag" DESC; + +-------------------------------------- +-- TPC-DS 35 +-------------------------------------- +SELECT ca_state, + cd_gender, + cd_marital_status, + cd_dep_count, + Count(*) cnt1, + Stddev_samp(cd_dep_count), + Avg(cd_dep_count), + Max(cd_dep_count), + cd_dep_employed_count, + Count(*) cnt2, + Stddev_samp(cd_dep_employed_count), + Avg(cd_dep_employed_count), + Max(cd_dep_employed_count), + cd_dep_college_count, + Count(*) cnt3, + Stddev_samp(cd_dep_college_count), + Avg(cd_dep_college_count), + Max(cd_dep_college_count) +FROM customer c, + customer_address ca, + customer_demographics +WHERE c.c_current_addr_sk = ca.ca_address_sk + AND cd_demo_sk = c.c_current_cdemo_sk + AND EXISTS (SELECT * + FROM store_sales, + date_dim + WHERE c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_qoy < 4) + AND ( EXISTS (SELECT * + FROM web_sales, + date_dim + WHERE c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_qoy < 4) + OR EXISTS (SELECT * + FROM catalog_sales, + date_dim + WHERE c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2001 + AND d_qoy < 4) ) +GROUP BY ca_state, + cd_gender, + cd_marital_status, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +ORDER BY ca_state, + cd_gender, + cd_marital_status, + cd_dep_count, + cd_dep_employed_count, + cd_dep_college_count +LIMIT 100; +WITH "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_date_id" AS "d_date_id", + "date_dim"."d_date" AS "d_date", + "date_dim"."d_month_seq" AS "d_month_seq", + "date_dim"."d_week_seq" AS "d_week_seq", + "date_dim"."d_quarter_seq" AS "d_quarter_seq", + "date_dim"."d_year" AS "d_year", + "date_dim"."d_dow" AS "d_dow", + "date_dim"."d_moy" AS "d_moy", + "date_dim"."d_dom" AS "d_dom", + "date_dim"."d_qoy" AS "d_qoy", + "date_dim"."d_fy_year" AS "d_fy_year", + "date_dim"."d_fy_quarter_seq" AS "d_fy_quarter_seq", + "date_dim"."d_fy_week_seq" AS "d_fy_week_seq", + "date_dim"."d_day_name" AS "d_day_name", + "date_dim"."d_quarter_name" AS "d_quarter_name", + "date_dim"."d_holiday" AS "d_holiday", + "date_dim"."d_weekend" AS "d_weekend", + "date_dim"."d_following_holiday" AS "d_following_holiday", + "date_dim"."d_first_dom" AS "d_first_dom", + "date_dim"."d_last_dom" AS "d_last_dom", + "date_dim"."d_same_day_ly" AS "d_same_day_ly", + "date_dim"."d_same_day_lq" AS "d_same_day_lq", + "date_dim"."d_current_day" AS "d_current_day", + "date_dim"."d_current_week" AS "d_current_week", + "date_dim"."d_current_month" AS "d_current_month", + "date_dim"."d_current_quarter" AS "d_current_quarter", + "date_dim"."d_current_year" AS "d_current_year" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_qoy" < 4 AND "date_dim"."d_year" = 2001 +), "_u_0" AS ( + SELECT + "store_sales"."ss_customer_sk" AS "_u_1" + FROM "store_sales" AS "store_sales" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "store_sales"."ss_customer_sk" +), "_u_2" AS ( + SELECT + "web_sales"."ws_bill_customer_sk" AS "_u_3" + FROM "web_sales" AS "web_sales" + JOIN "date_dim_2" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "web_sales"."ws_bill_customer_sk" +), "_u_4" AS ( + SELECT + "catalog_sales"."cs_ship_customer_sk" AS "_u_5" + FROM "catalog_sales" AS "catalog_sales" + JOIN "date_dim_2" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "catalog_sales"."cs_ship_customer_sk" +) +SELECT + "customer_address"."ca_state" AS "ca_state", + "customer_demographics"."cd_gender" AS "cd_gender", + "customer_demographics"."cd_marital_status" AS "cd_marital_status", + "customer_demographics"."cd_dep_count" AS "cd_dep_count", + COUNT(*) AS "cnt1", + STDDEV_SAMP("customer_demographics"."cd_dep_count") AS "_col_5", + AVG("customer_demographics"."cd_dep_count") AS "_col_6", + MAX("customer_demographics"."cd_dep_count") AS "_col_7", + "customer_demographics"."cd_dep_employed_count" AS "cd_dep_employed_count", + COUNT(*) AS "cnt2", + STDDEV_SAMP("customer_demographics"."cd_dep_employed_count") AS "_col_10", + AVG("customer_demographics"."cd_dep_employed_count") AS "_col_11", + MAX("customer_demographics"."cd_dep_employed_count") AS "_col_12", + "customer_demographics"."cd_dep_college_count" AS "cd_dep_college_count", + COUNT(*) AS "cnt3", + STDDEV_SAMP("customer_demographics"."cd_dep_college_count") AS "_col_15", + AVG("customer_demographics"."cd_dep_college_count") AS "_col_16", + MAX("customer_demographics"."cd_dep_college_count") AS "_col_17" +FROM "customer" AS "customer" +LEFT JOIN "_u_0" AS "_u_0" + ON "customer"."c_customer_sk" = "_u_0"."_u_1" +LEFT JOIN "_u_2" AS "_u_2" + ON "customer"."c_customer_sk" = "_u_2"."_u_3" +LEFT JOIN "_u_4" AS "_u_4" + ON "customer"."c_customer_sk" = "_u_4"."_u_5" +JOIN "customer_address" AS "customer_address" + ON "customer"."c_current_addr_sk" = "customer_address"."ca_address_sk" +JOIN "customer_demographics" AS "customer_demographics" + ON "customer_demographics"."cd_demo_sk" = "customer"."c_current_cdemo_sk" +WHERE + NOT "_u_0"."_u_1" IS NULL + AND ( + NOT "_u_2"."_u_3" IS NULL OR NOT "_u_4"."_u_5" IS NULL + ) +GROUP BY + "customer_address"."ca_state", + "customer_demographics"."cd_gender", + "customer_demographics"."cd_marital_status", + "customer_demographics"."cd_dep_count", + "customer_demographics"."cd_dep_employed_count", + "customer_demographics"."cd_dep_college_count" +ORDER BY + "ca_state", + "cd_gender", + "cd_marital_status", + "cd_dep_count", + "cd_dep_employed_count", + "cd_dep_college_count" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 36 +-------------------------------------- +SELECT Sum(ss_net_profit) / Sum(ss_ext_sales_price) AS + gross_margin, + i_category, + i_class, + Grouping(i_category) + Grouping(i_class) AS + lochierarchy, + Rank() + OVER ( + partition BY Grouping(i_category)+Grouping(i_class), CASE + WHEN Grouping( + i_class) = 0 THEN i_category END + ORDER BY Sum(ss_net_profit)/Sum(ss_ext_sales_price) ASC) AS + rank_within_parent +FROM store_sales, + date_dim d1, + item, + store +WHERE d1.d_year = 2000 + AND d1.d_date_sk = ss_sold_date_sk + AND i_item_sk = ss_item_sk + AND s_store_sk = ss_store_sk + AND s_state IN ( 'TN', 'TN', 'TN', 'TN', + 'TN', 'TN', 'TN', 'TN' ) +GROUP BY rollup( i_category, i_class ) +ORDER BY lochierarchy DESC, + CASE + WHEN lochierarchy = 0 THEN i_category + END, + rank_within_parent +LIMIT 100; +SELECT + SUM("store_sales"."ss_net_profit") / SUM("store_sales"."ss_ext_sales_price") AS "gross_margin", + "item"."i_category" AS "i_category", + "item"."i_class" AS "i_class", + GROUPING("item"."i_category") + GROUPING("item"."i_class") AS "lochierarchy", + RANK() OVER (PARTITION BY GROUPING("item"."i_category") + GROUPING("item"."i_class"), CASE WHEN GROUPING("item"."i_class") = 0 THEN "item"."i_category" END ORDER BY SUM("store_sales"."ss_net_profit") / SUM("store_sales"."ss_ext_sales_price")) AS "rank_within_parent" +FROM "store_sales" AS "store_sales" +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_date_sk" = "store_sales"."ss_sold_date_sk" + AND "date_dim"."d_year" = 2000 +JOIN "item" AS "item" + ON "item"."i_item_sk" = "store_sales"."ss_item_sk" +JOIN "store" AS "store" + ON "store"."s_state" IN ('TN', 'TN', 'TN', 'TN', 'TN', 'TN', 'TN', 'TN') + AND "store"."s_store_sk" = "store_sales"."ss_store_sk" +GROUP BY +ROLLUP ( + "item"."i_category", + "item"."i_class" +) +ORDER BY + "lochierarchy" DESC, + CASE WHEN "lochierarchy" = 0 THEN "item"."i_category" END, + "rank_within_parent" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 37 +-------------------------------------- +SELECT + i_item_id , + i_item_desc , + i_current_price +FROM item, + inventory, + date_dim, + catalog_sales +WHERE i_current_price BETWEEN 20 AND 20 + 30 +AND inv_item_sk = i_item_sk +AND d_date_sk=inv_date_sk +AND d_date BETWEEN Cast('1999-03-06' AS DATE) AND ( + Cast('1999-03-06' AS DATE) + INTERVAL '60' day) +AND i_manufact_id IN (843,815,850,840) +AND inv_quantity_on_hand BETWEEN 100 AND 500 +AND cs_item_sk = i_item_sk +GROUP BY i_item_id, + i_item_desc, + i_current_price +ORDER BY i_item_id +LIMIT 100; +SELECT + "item"."i_item_id" AS "i_item_id", + "item"."i_item_desc" AS "i_item_desc", + "item"."i_current_price" AS "i_current_price" +FROM "item" AS "item" +JOIN "inventory" AS "inventory" + ON "inventory"."inv_item_sk" = "item"."i_item_sk" + AND "inventory"."inv_quantity_on_hand" <= 500 + AND "inventory"."inv_quantity_on_hand" >= 100 +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_date_sk" = "inventory"."inv_date_sk" + AND CAST("date_dim"."d_date" AS DATE) <= CAST('1999-05-05' AS DATE) + AND CAST("date_dim"."d_date" AS DATE) >= CAST('1999-03-06' AS DATE) +JOIN "catalog_sales" AS "catalog_sales" + ON "catalog_sales"."cs_item_sk" = "item"."i_item_sk" +WHERE + "item"."i_current_price" <= 50 + AND "item"."i_current_price" >= 20 + AND "item"."i_manufact_id" IN (843, 815, 850, 840) +GROUP BY + "item"."i_item_id", + "item"."i_item_desc", + "item"."i_current_price" +ORDER BY + "i_item_id" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 38 +-------------------------------------- +SELECT Count(*) +FROM (SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM store_sales, + date_dim, + customer + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1188 AND 1188 + 11 + INTERSECT + SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM catalog_sales, + date_dim, + customer + WHERE catalog_sales.cs_sold_date_sk = date_dim.d_date_sk + AND catalog_sales.cs_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1188 AND 1188 + 11 + INTERSECT + SELECT DISTINCT c_last_name, + c_first_name, + d_date + FROM web_sales, + date_dim, + customer + WHERE web_sales.ws_sold_date_sk = date_dim.d_date_sk + AND web_sales.ws_bill_customer_sk = customer.c_customer_sk + AND d_month_seq BETWEEN 1188 AND 1188 + 11) hot_cust +LIMIT 100; +WITH "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_date" AS "d_date", + "date_dim"."d_month_seq" AS "d_month_seq" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_month_seq" <= 1199 AND "date_dim"."d_month_seq" >= 1188 +), "customer_2" AS ( + SELECT + "customer"."c_customer_sk" AS "c_customer_sk", + "customer"."c_first_name" AS "c_first_name", + "customer"."c_last_name" AS "c_last_name" + FROM "customer" AS "customer" +), "cte" AS ( + SELECT DISTINCT + "customer"."c_last_name" AS "c_last_name", + "customer"."c_first_name" AS "c_first_name", + "date_dim"."d_date" AS "d_date" + FROM "store_sales" AS "store_sales" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "customer_2" AS "customer" + ON "store_sales"."ss_customer_sk" = "customer"."c_customer_sk" +), "cte_2" AS ( + SELECT DISTINCT + "customer"."c_last_name" AS "c_last_name", + "customer"."c_first_name" AS "c_first_name", + "date_dim"."d_date" AS "d_date" + FROM "catalog_sales" AS "catalog_sales" + JOIN "date_dim_2" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "customer_2" AS "customer" + ON "catalog_sales"."cs_bill_customer_sk" = "customer"."c_customer_sk" +), "cte_3" AS ( + SELECT DISTINCT + "customer"."c_last_name" AS "c_last_name", + "customer"."c_first_name" AS "c_first_name", + "date_dim"."d_date" AS "d_date" + FROM "web_sales" AS "web_sales" + JOIN "date_dim_2" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "customer_2" AS "customer" + ON "web_sales"."ws_bill_customer_sk" = "customer"."c_customer_sk" +), "cte_4" AS ( + SELECT + "cte_2"."c_last_name" AS "c_last_name", + "cte_2"."c_first_name" AS "c_first_name", + "cte_2"."d_date" AS "d_date" + FROM "cte_2" AS "cte_2" + INTERSECT + SELECT + "cte_3"."c_last_name" AS "c_last_name", + "cte_3"."c_first_name" AS "c_first_name", + "cte_3"."d_date" AS "d_date" + FROM "cte_3" AS "cte_3" +), "hot_cust" AS ( + SELECT + "cte"."c_last_name" AS "c_last_name", + "cte"."c_first_name" AS "c_first_name", + "cte"."d_date" AS "d_date" + FROM "cte" AS "cte" + INTERSECT + SELECT + "cte_4"."c_last_name" AS "c_last_name", + "cte_4"."c_first_name" AS "c_first_name", + "cte_4"."d_date" AS "d_date" + FROM "cte_4" AS "cte_4" +) +SELECT + COUNT(*) AS "_col_0" +FROM "hot_cust" AS "hot_cust" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 39 +-------------------------------------- +WITH inv + AS (SELECT w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy, + stdev, + mean, + CASE mean + WHEN 0 THEN NULL + ELSE stdev / mean + END cov + FROM (SELECT w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy, + Stddev_samp(inv_quantity_on_hand) stdev, + Avg(inv_quantity_on_hand) mean + FROM inventory, + item, + warehouse, + date_dim + WHERE inv_item_sk = i_item_sk + AND inv_warehouse_sk = w_warehouse_sk + AND inv_date_sk = d_date_sk + AND d_year = 2002 + GROUP BY w_warehouse_name, + w_warehouse_sk, + i_item_sk, + d_moy) foo + WHERE CASE mean + WHEN 0 THEN 0 + ELSE stdev / mean + END > 1) +SELECT inv1.w_warehouse_sk, + inv1.i_item_sk, + inv1.d_moy, + inv1.mean, + inv1.cov, + inv2.w_warehouse_sk, + inv2.i_item_sk, + inv2.d_moy, + inv2.mean, + inv2.cov +FROM inv inv1, + inv inv2 +WHERE inv1.i_item_sk = inv2.i_item_sk + AND inv1.w_warehouse_sk = inv2.w_warehouse_sk + AND inv1.d_moy = 1 + AND inv2.d_moy = 1 + 1 +ORDER BY inv1.w_warehouse_sk, + inv1.i_item_sk, + inv1.d_moy, + inv1.mean, + inv1.cov, + inv2.d_moy, + inv2.mean, + inv2.cov; +WITH "foo" AS ( + SELECT + "warehouse"."w_warehouse_sk" AS "w_warehouse_sk", + "item"."i_item_sk" AS "i_item_sk", + "date_dim"."d_moy" AS "d_moy", + STDDEV_SAMP("inventory"."inv_quantity_on_hand") AS "stdev", + AVG("inventory"."inv_quantity_on_hand") AS "mean" + FROM "inventory" AS "inventory" + JOIN "item" AS "item" + ON "inventory"."inv_item_sk" = "item"."i_item_sk" + JOIN "warehouse" AS "warehouse" + ON "inventory"."inv_warehouse_sk" = "warehouse"."w_warehouse_sk" + JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_year" = 2002 AND "inventory"."inv_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "warehouse"."w_warehouse_name", + "warehouse"."w_warehouse_sk", + "item"."i_item_sk", + "date_dim"."d_moy" +), "inv" AS ( + SELECT + "foo"."w_warehouse_sk" AS "w_warehouse_sk", + "foo"."i_item_sk" AS "i_item_sk", + "foo"."d_moy" AS "d_moy", + "foo"."mean" AS "mean", + CASE "foo"."mean" WHEN 0 THEN NULL ELSE "foo"."stdev" / "foo"."mean" END AS "cov" + FROM "foo" AS "foo" + WHERE + CASE "foo"."mean" WHEN 0 THEN 0 ELSE "foo"."stdev" / "foo"."mean" END > 1 +) +SELECT + "inv1"."w_warehouse_sk" AS "w_warehouse_sk", + "inv1"."i_item_sk" AS "i_item_sk", + "inv1"."d_moy" AS "d_moy", + "inv1"."mean" AS "mean", + "inv1"."cov" AS "cov", + "inv2"."w_warehouse_sk" AS "w_warehouse_sk", + "inv2"."i_item_sk" AS "i_item_sk", + "inv2"."d_moy" AS "d_moy", + "inv2"."mean" AS "mean", + "inv2"."cov" AS "cov" +FROM "inv" AS "inv1" +JOIN "inv" AS "inv2" + ON "inv1"."i_item_sk" = "inv2"."i_item_sk" + AND "inv1"."w_warehouse_sk" = "inv2"."w_warehouse_sk" + AND "inv2"."d_moy" = 2 +WHERE + "inv1"."d_moy" = 1 +ORDER BY + "inv1"."w_warehouse_sk", + "inv1"."i_item_sk", + "inv1"."d_moy", + "inv1"."mean", + "inv1"."cov", + "inv2"."d_moy", + "inv2"."mean", + "inv2"."cov"; + +-------------------------------------- +-- TPC-DS 40 +-------------------------------------- +SELECT + w_state , + i_item_id , + Sum( + CASE + WHEN ( + Cast(d_date AS DATE) < Cast ('2002-06-01' AS DATE)) THEN cs_sales_price - COALESCE(cr_refunded_cash,0) + ELSE 0 + END) AS sales_before , + Sum( + CASE + WHEN ( + Cast(d_date AS DATE) >= Cast ('2002-06-01' AS DATE)) THEN cs_sales_price - COALESCE(cr_refunded_cash,0) + ELSE 0 + END) AS sales_after +FROM catalog_sales +LEFT OUTER JOIN catalog_returns +ON ( + cs_order_number = cr_order_number + AND cs_item_sk = cr_item_sk) , + warehouse , + item , + date_dim +WHERE i_current_price BETWEEN 0.99 AND 1.49 +AND i_item_sk = cs_item_sk +AND cs_warehouse_sk = w_warehouse_sk +AND cs_sold_date_sk = d_date_sk +AND d_date BETWEEN (Cast ('2002-06-01' AS DATE) - INTERVAL '30' day) AND ( + cast ('2002-06-01' AS date) + INTERVAL '30' day) +GROUP BY w_state, + i_item_id +ORDER BY w_state, + i_item_id +LIMIT 100; +SELECT + "warehouse"."w_state" AS "w_state", + "item"."i_item_id" AS "i_item_id", + SUM( + CASE + WHEN CAST("date_dim"."d_date" AS DATE) < CAST('2002-06-01' AS DATE) + THEN "catalog_sales"."cs_sales_price" - COALESCE("catalog_returns"."cr_refunded_cash", 0) + ELSE 0 + END + ) AS "sales_before", + SUM( + CASE + WHEN CAST("date_dim"."d_date" AS DATE) >= CAST('2002-06-01' AS DATE) + THEN "catalog_sales"."cs_sales_price" - COALESCE("catalog_returns"."cr_refunded_cash", 0) + ELSE 0 + END + ) AS "sales_after" +FROM "catalog_sales" AS "catalog_sales" +LEFT JOIN "catalog_returns" AS "catalog_returns" + ON "catalog_sales"."cs_item_sk" = "catalog_returns"."cr_item_sk" + AND "catalog_sales"."cs_order_number" = "catalog_returns"."cr_order_number" +JOIN "warehouse" AS "warehouse" + ON "catalog_sales"."cs_warehouse_sk" = "warehouse"."w_warehouse_sk" +JOIN "item" AS "item" + ON "item"."i_current_price" <= 1.49 + AND "item"."i_current_price" >= 0.99 + AND "item"."i_item_sk" = "catalog_sales"."cs_item_sk" +JOIN "date_dim" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + AND CAST("date_dim"."d_date" AS DATE) <= CAST('2002-07-01' AS DATE) + AND CAST("date_dim"."d_date" AS DATE) >= CAST('2002-05-02' AS DATE) +GROUP BY + "warehouse"."w_state", + "item"."i_item_id" +ORDER BY + "w_state", + "i_item_id" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 41 +-------------------------------------- +SELECT Distinct(i_product_name) +FROM item i1 +WHERE i_manufact_id BETWEEN 765 AND 765 + 40 + AND (SELECT Count(*) AS item_cnt + FROM item + WHERE ( i_manufact = i1.i_manufact + AND ( ( i_category = 'Women' + AND ( i_color = 'dim' + OR i_color = 'green' ) + AND ( i_units = 'Gross' + OR i_units = 'Dozen' ) + AND ( i_size = 'economy' + OR i_size = 'petite' ) ) + OR ( i_category = 'Women' + AND ( i_color = 'navajo' + OR i_color = 'aquamarine' ) + AND ( i_units = 'Case' + OR i_units = 'Unknown' ) + AND ( i_size = 'large' + OR i_size = 'N/A' ) ) + OR ( i_category = 'Men' + AND ( i_color = 'indian' + OR i_color = 'dark' ) + AND ( i_units = 'Oz' + OR i_units = 'Lb' ) + AND ( i_size = 'extra large' + OR i_size = 'small' ) ) + OR ( i_category = 'Men' + AND ( i_color = 'peach' + OR i_color = 'purple' ) + AND ( i_units = 'Tbl' + OR i_units = 'Bunch' ) + AND ( i_size = 'economy' + OR i_size = 'petite' ) ) ) ) + OR ( i_manufact = i1.i_manufact + AND ( ( i_category = 'Women' + AND ( i_color = 'orchid' + OR i_color = 'peru' ) + AND ( i_units = 'Carton' + OR i_units = 'Cup' ) + AND ( i_size = 'economy' + OR i_size = 'petite' ) ) + OR ( i_category = 'Women' + AND ( i_color = 'violet' + OR i_color = 'papaya' ) + AND ( i_units = 'Ounce' + OR i_units = 'Box' ) + AND ( i_size = 'large' + OR i_size = 'N/A' ) ) + OR ( i_category = 'Men' + AND ( i_color = 'drab' + OR i_color = 'grey' ) + AND ( i_units = 'Each' + OR i_units = 'N/A' ) + AND ( i_size = 'extra large' + OR i_size = 'small' ) ) + OR ( i_category = 'Men' + AND ( i_color = 'chocolate' + OR i_color = 'antique' ) + AND ( i_units = 'Dram' + OR i_units = 'Gram' ) + AND ( i_size = 'economy' + OR i_size = 'petite' ) ) ) )) > 0 +ORDER BY i_product_name +LIMIT 100; +SELECT DISTINCT + "i1"."i_product_name" AS "_col_0" +FROM "item" AS "i1" +WHERE + "i1"."i_manufact_id" <= 805 + AND "i1"."i_manufact_id" >= 765 + AND ( + SELECT + COUNT(*) AS "item_cnt" + FROM "item" AS "item" + WHERE + ( + "item"."i_manufact" = "i1"."i_manufact" + AND ( + ( + "item"."i_category" = 'Men' + AND ( + "item"."i_color" = 'antique' OR "item"."i_color" = 'chocolate' + ) + AND ( + "item"."i_size" = 'economy' OR "item"."i_size" = 'petite' + ) + AND ( + "item"."i_units" = 'Dram' OR "item"."i_units" = 'Gram' + ) + ) + OR ( + "item"."i_category" = 'Men' + AND ( + "item"."i_color" = 'drab' OR "item"."i_color" = 'grey' + ) + AND ( + "item"."i_size" = 'extra large' OR "item"."i_size" = 'small' + ) + AND ( + "item"."i_units" = 'Each' OR "item"."i_units" = 'N/A' + ) + ) + OR ( + "item"."i_category" = 'Women' + AND ( + "item"."i_color" = 'orchid' OR "item"."i_color" = 'peru' + ) + AND ( + "item"."i_size" = 'economy' OR "item"."i_size" = 'petite' + ) + AND ( + "item"."i_units" = 'Carton' OR "item"."i_units" = 'Cup' + ) + ) + OR ( + "item"."i_category" = 'Women' + AND ( + "item"."i_color" = 'papaya' OR "item"."i_color" = 'violet' + ) + AND ( + "item"."i_size" = 'N/A' OR "item"."i_size" = 'large' + ) + AND ( + "item"."i_units" = 'Box' OR "item"."i_units" = 'Ounce' + ) + ) + ) + ) + OR ( + "item"."i_manufact" = "i1"."i_manufact" + AND ( + ( + "item"."i_category" = 'Men' + AND ( + "item"."i_color" = 'dark' OR "item"."i_color" = 'indian' + ) + AND ( + "item"."i_size" = 'extra large' OR "item"."i_size" = 'small' + ) + AND ( + "item"."i_units" = 'Lb' OR "item"."i_units" = 'Oz' + ) + ) + OR ( + "item"."i_category" = 'Men' + AND ( + "item"."i_color" = 'peach' OR "item"."i_color" = 'purple' + ) + AND ( + "item"."i_size" = 'economy' OR "item"."i_size" = 'petite' + ) + AND ( + "item"."i_units" = 'Bunch' OR "item"."i_units" = 'Tbl' + ) + ) + OR ( + "item"."i_category" = 'Women' + AND ( + "item"."i_color" = 'aquamarine' OR "item"."i_color" = 'navajo' + ) + AND ( + "item"."i_size" = 'N/A' OR "item"."i_size" = 'large' + ) + AND ( + "item"."i_units" = 'Case' OR "item"."i_units" = 'Unknown' + ) + ) + OR ( + "item"."i_category" = 'Women' + AND ( + "item"."i_color" = 'dim' OR "item"."i_color" = 'green' + ) + AND ( + "item"."i_size" = 'economy' OR "item"."i_size" = 'petite' + ) + AND ( + "item"."i_units" = 'Dozen' OR "item"."i_units" = 'Gross' + ) + ) + ) + ) + ) > 0 +ORDER BY + "i1"."i_product_name" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 42 +-------------------------------------- +SELECT dt.d_year, + item.i_category_id, + item.i_category, + Sum(ss_ext_sales_price) +FROM date_dim dt, + store_sales, + item +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manager_id = 1 + AND dt.d_moy = 12 + AND dt.d_year = 2000 +GROUP BY dt.d_year, + item.i_category_id, + item.i_category +ORDER BY Sum(ss_ext_sales_price) DESC, + dt.d_year, + item.i_category_id, + item.i_category +LIMIT 100; +SELECT + "date_dim"."d_year" AS "d_year", + "item"."i_category_id" AS "i_category_id", + "item"."i_category" AS "i_category", + SUM("store_sales"."ss_ext_sales_price") AS "_col_3" +FROM "date_dim" AS "date_dim" +JOIN "store_sales" AS "store_sales" + ON "date_dim"."d_date_sk" = "store_sales"."ss_sold_date_sk" +JOIN "item" AS "item" + ON "item"."i_manager_id" = 1 AND "store_sales"."ss_item_sk" = "item"."i_item_sk" +WHERE + "date_dim"."d_moy" = 12 AND "date_dim"."d_year" = 2000 +GROUP BY + "date_dim"."d_year", + "item"."i_category_id", + "item"."i_category" +ORDER BY + SUM("store_sales"."ss_ext_sales_price") DESC, + "date_dim"."d_year", + "item"."i_category_id", + "item"."i_category" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 43 +-------------------------------------- +SELECT s_store_name, + s_store_id, + Sum(CASE + WHEN ( d_day_name = 'Sunday' ) THEN ss_sales_price + ELSE NULL + END) sun_sales, + Sum(CASE + WHEN ( d_day_name = 'Monday' ) THEN ss_sales_price + ELSE NULL + END) mon_sales, + Sum(CASE + WHEN ( d_day_name = 'Tuesday' ) THEN ss_sales_price + ELSE NULL + END) tue_sales, + Sum(CASE + WHEN ( d_day_name = 'Wednesday' ) THEN ss_sales_price + ELSE NULL + END) wed_sales, + Sum(CASE + WHEN ( d_day_name = 'Thursday' ) THEN ss_sales_price + ELSE NULL + END) thu_sales, + Sum(CASE + WHEN ( d_day_name = 'Friday' ) THEN ss_sales_price + ELSE NULL + END) fri_sales, + Sum(CASE + WHEN ( d_day_name = 'Saturday' ) THEN ss_sales_price + ELSE NULL + END) sat_sales +FROM date_dim, + store_sales, + store +WHERE d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + AND s_gmt_offset = -5 + AND d_year = 2002 +GROUP BY s_store_name, + s_store_id +ORDER BY s_store_name, + s_store_id, + sun_sales, + mon_sales, + tue_sales, + wed_sales, + thu_sales, + fri_sales, + sat_sales +LIMIT 100; +SELECT + "store"."s_store_name" AS "s_store_name", + "store"."s_store_id" AS "s_store_id", + SUM( + CASE + WHEN "date_dim"."d_day_name" = 'Sunday' + THEN "store_sales"."ss_sales_price" + ELSE NULL + END + ) AS "sun_sales", + SUM( + CASE + WHEN "date_dim"."d_day_name" = 'Monday' + THEN "store_sales"."ss_sales_price" + ELSE NULL + END + ) AS "mon_sales", + SUM( + CASE + WHEN "date_dim"."d_day_name" = 'Tuesday' + THEN "store_sales"."ss_sales_price" + ELSE NULL + END + ) AS "tue_sales", + SUM( + CASE + WHEN "date_dim"."d_day_name" = 'Wednesday' + THEN "store_sales"."ss_sales_price" + ELSE NULL + END + ) AS "wed_sales", + SUM( + CASE + WHEN "date_dim"."d_day_name" = 'Thursday' + THEN "store_sales"."ss_sales_price" + ELSE NULL + END + ) AS "thu_sales", + SUM( + CASE + WHEN "date_dim"."d_day_name" = 'Friday' + THEN "store_sales"."ss_sales_price" + ELSE NULL + END + ) AS "fri_sales", + SUM( + CASE + WHEN "date_dim"."d_day_name" = 'Saturday' + THEN "store_sales"."ss_sales_price" + ELSE NULL + END + ) AS "sat_sales" +FROM "date_dim" AS "date_dim" +JOIN "store_sales" AS "store_sales" + ON "date_dim"."d_date_sk" = "store_sales"."ss_sold_date_sk" +JOIN "store" AS "store" + ON "store"."s_gmt_offset" = -5 AND "store"."s_store_sk" = "store_sales"."ss_store_sk" +WHERE + "date_dim"."d_year" = 2002 +GROUP BY + "store"."s_store_name", + "store"."s_store_id" +ORDER BY + "s_store_name", + "s_store_id", + "sun_sales", + "mon_sales", + "tue_sales", + "wed_sales", + "thu_sales", + "fri_sales", + "sat_sales" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 44 +-------------------------------------- +SELECT asceding.rnk, + i1.i_product_name best_performing, + i2.i_product_name worst_performing +FROM (SELECT * + FROM (SELECT item_sk, + Rank() + OVER ( + ORDER BY rank_col ASC) rnk + FROM (SELECT ss_item_sk item_sk, + Avg(ss_net_profit) rank_col + FROM store_sales ss1 + WHERE ss_store_sk = 4 + GROUP BY ss_item_sk + HAVING Avg(ss_net_profit) > 0.9 * + (SELECT Avg(ss_net_profit) + rank_col + FROM store_sales + WHERE ss_store_sk = 4 + AND ss_cdemo_sk IS + NULL + GROUP BY ss_store_sk))V1) + V11 + WHERE rnk < 11) asceding, + (SELECT * + FROM (SELECT item_sk, + Rank() + OVER ( + ORDER BY rank_col DESC) rnk + FROM (SELECT ss_item_sk item_sk, + Avg(ss_net_profit) rank_col + FROM store_sales ss1 + WHERE ss_store_sk = 4 + GROUP BY ss_item_sk + HAVING Avg(ss_net_profit) > 0.9 * + (SELECT Avg(ss_net_profit) + rank_col + FROM store_sales + WHERE ss_store_sk = 4 + AND ss_cdemo_sk IS + NULL + GROUP BY ss_store_sk))V2) + V21 + WHERE rnk < 11) descending, + item i1, + item i2 +WHERE asceding.rnk = descending.rnk + AND i1.i_item_sk = asceding.item_sk + AND i2.i_item_sk = descending.item_sk +ORDER BY asceding.rnk +LIMIT 100; +WITH "_u_0" AS ( + SELECT + AVG("store_sales"."ss_net_profit") AS "rank_col" + FROM "store_sales" AS "store_sales" + WHERE + "store_sales"."ss_cdemo_sk" IS NULL AND "store_sales"."ss_store_sk" = 4 + GROUP BY + "store_sales"."ss_store_sk" +), "v1" AS ( + SELECT + "ss1"."ss_item_sk" AS "item_sk", + AVG("ss1"."ss_net_profit") AS "rank_col" + FROM "store_sales" AS "ss1" + CROSS JOIN "_u_0" AS "_u_0" + WHERE + "ss1"."ss_store_sk" = 4 + GROUP BY + "ss1"."ss_item_sk" + HAVING + AVG("ss1"."ss_net_profit") > 0.9 * MAX("_u_0"."rank_col") +), "v11" AS ( + SELECT + "v1"."item_sk" AS "item_sk", + RANK() OVER (ORDER BY "v1"."rank_col") AS "rnk" + FROM "v1" AS "v1" +), "v2" AS ( + SELECT + "ss1"."ss_item_sk" AS "item_sk", + AVG("ss1"."ss_net_profit") AS "rank_col" + FROM "store_sales" AS "ss1" + CROSS JOIN "_u_0" AS "_u_1" + WHERE + "ss1"."ss_store_sk" = 4 + GROUP BY + "ss1"."ss_item_sk" + HAVING + AVG("ss1"."ss_net_profit") > 0.9 * MAX("_u_1"."rank_col") +), "v21" AS ( + SELECT + "v2"."item_sk" AS "item_sk", + RANK() OVER (ORDER BY "v2"."rank_col" DESC) AS "rnk" + FROM "v2" AS "v2" +), "i1" AS ( + SELECT + "item"."i_item_sk" AS "i_item_sk", + "item"."i_product_name" AS "i_product_name" + FROM "item" AS "item" +) +SELECT + "v11"."rnk" AS "rnk", + "i1"."i_product_name" AS "best_performing", + "i2"."i_product_name" AS "worst_performing" +FROM "v11" AS "v11" +JOIN "v21" AS "v21" + ON "v11"."rnk" = "v21"."rnk" AND "v21"."rnk" < 11 +JOIN "i1" AS "i1" + ON "i1"."i_item_sk" = "v11"."item_sk" +JOIN "i1" AS "i2" + ON "i2"."i_item_sk" = "v21"."item_sk" +WHERE + "v11"."rnk" < 11 +ORDER BY + "v11"."rnk" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 45 +-------------------------------------- +SELECT ca_zip, + ca_state, + Sum(ws_sales_price) +FROM web_sales, + customer, + customer_address, + date_dim, + item +WHERE ws_bill_customer_sk = c_customer_sk + AND c_current_addr_sk = ca_address_sk + AND ws_item_sk = i_item_sk + AND ( Substr(ca_zip, 1, 5) IN ( '85669', '86197', '88274', '83405', + '86475', '85392', '85460', '80348', + '81792' ) + OR i_item_id IN (SELECT i_item_id + FROM item + WHERE i_item_sk IN ( 2, 3, 5, 7, + 11, 13, 17, 19, + 23, 29 )) ) + AND ws_sold_date_sk = d_date_sk + AND d_qoy = 1 + AND d_year = 2000 +GROUP BY ca_zip, + ca_state +ORDER BY ca_zip, + ca_state +LIMIT 100; +WITH "_u_0" AS ( + SELECT + "item"."i_item_id" AS "i_item_id" + FROM "item" AS "item" + WHERE + "item"."i_item_sk" IN (2, 3, 5, 7, 11, 13, 17, 19, 23, 29) + GROUP BY + "item"."i_item_id" +) +SELECT + "customer_address"."ca_zip" AS "ca_zip", + "customer_address"."ca_state" AS "ca_state", + SUM("web_sales"."ws_sales_price") AS "_col_2" +FROM "web_sales" AS "web_sales" +JOIN "item" AS "item" + ON "web_sales"."ws_item_sk" = "item"."i_item_sk" +LEFT JOIN "_u_0" AS "_u_0" + ON "item"."i_item_id" = "_u_0"."i_item_id" +JOIN "customer" AS "customer" + ON "web_sales"."ws_bill_customer_sk" = "customer"."c_customer_sk" +JOIN "customer_address" AS "customer_address" + ON "customer"."c_current_addr_sk" = "customer_address"."ca_address_sk" +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_qoy" = 1 + AND "date_dim"."d_year" = 2000 + AND "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" +WHERE + NOT "_u_0"."i_item_id" IS NULL + OR SUBSTR("customer_address"."ca_zip", 1, 5) IN ('85669', '86197', '88274', '83405', '86475', '85392', '85460', '80348', '81792') +GROUP BY + "customer_address"."ca_zip", + "customer_address"."ca_state" +ORDER BY + "ca_zip", + "ca_state" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 46 +-------------------------------------- +SELECT c_last_name, + c_first_name, + ca_city, + bought_city, + ss_ticket_number, + amt, + profit +FROM (SELECT ss_ticket_number, + ss_customer_sk, + ca_city bought_city, + Sum(ss_coupon_amt) amt, + Sum(ss_net_profit) profit + FROM store_sales, + date_dim, + store, + household_demographics, + customer_address + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND store_sales.ss_addr_sk = customer_address.ca_address_sk + AND ( household_demographics.hd_dep_count = 6 + OR household_demographics.hd_vehicle_count = 0 ) + AND date_dim.d_dow IN ( 6, 0 ) + AND date_dim.d_year IN ( 2000, 2000 + 1, 2000 + 2 ) + AND store.s_city IN ( 'Midway', 'Fairview', 'Fairview', + 'Fairview', + 'Fairview' ) + GROUP BY ss_ticket_number, + ss_customer_sk, + ss_addr_sk, + ca_city) dn, + customer, + customer_address current_addr +WHERE ss_customer_sk = c_customer_sk + AND customer.c_current_addr_sk = current_addr.ca_address_sk + AND current_addr.ca_city <> bought_city +ORDER BY c_last_name, + c_first_name, + ca_city, + bought_city, + ss_ticket_number +LIMIT 100; +WITH "customer_address_2" AS ( + SELECT + "customer_address"."ca_address_sk" AS "ca_address_sk", + "customer_address"."ca_city" AS "ca_city" + FROM "customer_address" AS "customer_address" +), "dn" AS ( + SELECT + "store_sales"."ss_ticket_number" AS "ss_ticket_number", + "store_sales"."ss_customer_sk" AS "ss_customer_sk", + "customer_address"."ca_city" AS "bought_city", + SUM("store_sales"."ss_coupon_amt") AS "amt", + SUM("store_sales"."ss_net_profit") AS "profit" + FROM "store_sales" AS "store_sales" + JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_dow" IN (6, 0) + AND "date_dim"."d_year" IN (2000, 2001, 2002) + AND "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "store" AS "store" + ON "store"."s_city" IN ('Midway', 'Fairview', 'Fairview', 'Fairview', 'Fairview') + AND "store_sales"."ss_store_sk" = "store"."s_store_sk" + JOIN "household_demographics" AS "household_demographics" + ON ( + "household_demographics"."hd_dep_count" = 6 + OR "household_demographics"."hd_vehicle_count" = 0 + ) + AND "store_sales"."ss_hdemo_sk" = "household_demographics"."hd_demo_sk" + JOIN "customer_address_2" AS "customer_address" + ON "store_sales"."ss_addr_sk" = "customer_address"."ca_address_sk" + GROUP BY + "store_sales"."ss_ticket_number", + "store_sales"."ss_customer_sk", + "store_sales"."ss_addr_sk", + "customer_address"."ca_city" +) +SELECT + "customer"."c_last_name" AS "c_last_name", + "customer"."c_first_name" AS "c_first_name", + "current_addr"."ca_city" AS "ca_city", + "dn"."bought_city" AS "bought_city", + "dn"."ss_ticket_number" AS "ss_ticket_number", + "dn"."amt" AS "amt", + "dn"."profit" AS "profit" +FROM "dn" AS "dn" +JOIN "customer_address_2" AS "current_addr" + ON "current_addr"."ca_city" <> "dn"."bought_city" +JOIN "customer" AS "customer" + ON "customer"."c_current_addr_sk" = "current_addr"."ca_address_sk" + AND "dn"."ss_customer_sk" = "customer"."c_customer_sk" +ORDER BY + "c_last_name", + "c_first_name", + "ca_city", + "bought_city", + "ss_ticket_number" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 47 +-------------------------------------- +WITH v1 + AS (SELECT i_category, + i_brand, + s_store_name, + s_company_name, + d_year, + d_moy, + Sum(ss_sales_price) sum_sales, + Avg(Sum(ss_sales_price)) + OVER ( + partition BY i_category, i_brand, s_store_name, + s_company_name, + d_year) + avg_monthly_sales, + Rank() + OVER ( + partition BY i_category, i_brand, s_store_name, + s_company_name + ORDER BY d_year, d_moy) rn + FROM item, + store_sales, + date_dim, + store + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND ( d_year = 1999 + OR ( d_year = 1999 - 1 + AND d_moy = 12 ) + OR ( d_year = 1999 + 1 + AND d_moy = 1 ) ) + GROUP BY i_category, + i_brand, + s_store_name, + s_company_name, + d_year, + d_moy), + v2 + AS (SELECT v1.i_category, + v1.d_year, + v1.d_moy, + v1.avg_monthly_sales, + v1.sum_sales, + v1_lag.sum_sales psum, + v1_lead.sum_sales nsum + FROM v1, + v1 v1_lag, + v1 v1_lead + WHERE v1.i_category = v1_lag.i_category + AND v1.i_category = v1_lead.i_category + AND v1.i_brand = v1_lag.i_brand + AND v1.i_brand = v1_lead.i_brand + AND v1.s_store_name = v1_lag.s_store_name + AND v1.s_store_name = v1_lead.s_store_name + AND v1.s_company_name = v1_lag.s_company_name + AND v1.s_company_name = v1_lead.s_company_name + AND v1.rn = v1_lag.rn + 1 + AND v1.rn = v1_lead.rn - 1) +SELECT * +FROM v2 +WHERE d_year = 1999 + AND avg_monthly_sales > 0 + AND CASE + WHEN avg_monthly_sales > 0 THEN Abs(sum_sales - avg_monthly_sales) + / + avg_monthly_sales + ELSE NULL + END > 0.1 +ORDER BY sum_sales - avg_monthly_sales, + 3 +LIMIT 100; +WITH "v1" AS ( + SELECT + "item"."i_category" AS "i_category", + "item"."i_brand" AS "i_brand", + "store"."s_store_name" AS "s_store_name", + "store"."s_company_name" AS "s_company_name", + "date_dim"."d_year" AS "d_year", + "date_dim"."d_moy" AS "d_moy", + SUM("store_sales"."ss_sales_price") AS "sum_sales", + AVG(SUM("store_sales"."ss_sales_price")) OVER (PARTITION BY "item"."i_category", "item"."i_brand", "store"."s_store_name", "store"."s_company_name", "date_dim"."d_year") AS "avg_monthly_sales", + RANK() OVER (PARTITION BY "item"."i_category", "item"."i_brand", "store"."s_store_name", "store"."s_company_name" ORDER BY "date_dim"."d_year", "date_dim"."d_moy") AS "rn" + FROM "item" AS "item" + JOIN "store_sales" AS "store_sales" + ON "store_sales"."ss_item_sk" = "item"."i_item_sk" + JOIN "date_dim" AS "date_dim" + ON ( + "date_dim"."d_moy" = 1 OR "date_dim"."d_moy" = 12 OR "date_dim"."d_year" = 1999 + ) + AND ( + "date_dim"."d_moy" = 1 OR "date_dim"."d_year" = 1998 OR "date_dim"."d_year" = 1999 + ) + AND ( + "date_dim"."d_moy" = 12 OR "date_dim"."d_year" = 1999 OR "date_dim"."d_year" = 2000 + ) + AND ( + "date_dim"."d_year" = 1998 OR "date_dim"."d_year" = 1999 OR "date_dim"."d_year" = 2000 + ) + AND "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "store" AS "store" + ON "store_sales"."ss_store_sk" = "store"."s_store_sk" + GROUP BY + "item"."i_category", + "item"."i_brand", + "store"."s_store_name", + "store"."s_company_name", + "date_dim"."d_year", + "date_dim"."d_moy" +) +SELECT + "v1"."i_category" AS "i_category", + "v1"."d_year" AS "d_year", + "v1"."d_moy" AS "d_moy", + "v1"."avg_monthly_sales" AS "avg_monthly_sales", + "v1"."sum_sales" AS "sum_sales", + "v1_lag"."sum_sales" AS "psum", + "v1_lead"."sum_sales" AS "nsum" +FROM "v1" +JOIN "v1" AS "v1_lag" + ON "v1"."i_brand" = "v1_lag"."i_brand" + AND "v1"."i_category" = "v1_lag"."i_category" + AND "v1"."rn" = "v1_lag"."rn" + 1 + AND "v1"."s_company_name" = "v1_lag"."s_company_name" + AND "v1"."s_store_name" = "v1_lag"."s_store_name" +JOIN "v1" AS "v1_lead" + ON "v1"."i_brand" = "v1_lead"."i_brand" + AND "v1"."i_category" = "v1_lead"."i_category" + AND "v1"."rn" = "v1_lead"."rn" - 1 + AND "v1"."s_company_name" = "v1_lead"."s_company_name" + AND "v1"."s_store_name" = "v1_lead"."s_store_name" +WHERE + "v1"."avg_monthly_sales" > 0 + AND "v1"."d_year" = 1999 + AND CASE + WHEN "v1"."avg_monthly_sales" > 0 + THEN ABS("v1"."sum_sales" - "v1"."avg_monthly_sales") / "v1"."avg_monthly_sales" + ELSE NULL + END > 0.1 +ORDER BY + "v1"."sum_sales" - "v1"."avg_monthly_sales", + "v1"."d_moy" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 48 +-------------------------------------- +SELECT Sum (ss_quantity) +FROM store_sales, + store, + customer_demographics, + customer_address, + date_dim +WHERE s_store_sk = ss_store_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1999 + AND ( ( cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'W' + AND cd_education_status = 'Secondary' + AND ss_sales_price BETWEEN 100.00 AND 150.00 ) + OR ( cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'M' + AND cd_education_status = 'Advanced Degree' + AND ss_sales_price BETWEEN 50.00 AND 100.00 ) + OR ( cd_demo_sk = ss_cdemo_sk + AND cd_marital_status = 'D' + AND cd_education_status = '2 yr Degree' + AND ss_sales_price BETWEEN 150.00 AND 200.00 ) ) + AND ( ( ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ( 'TX', 'NE', 'MO' ) + AND ss_net_profit BETWEEN 0 AND 2000 ) + OR ( ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ( 'CO', 'TN', 'ND' ) + AND ss_net_profit BETWEEN 150 AND 3000 ) + OR ( ss_addr_sk = ca_address_sk + AND ca_country = 'United States' + AND ca_state IN ( 'OK', 'PA', 'CA' ) + AND ss_net_profit BETWEEN 50 AND 25000 ) ); +SELECT + SUM("store_sales"."ss_quantity") AS "_col_0" +FROM "store_sales" AS "store_sales" +JOIN "store" AS "store" + ON "store"."s_store_sk" = "store_sales"."ss_store_sk" +JOIN "customer_demographics" AS "customer_demographics" + ON ( + "customer_demographics"."cd_demo_sk" = "store_sales"."ss_cdemo_sk" + AND "customer_demographics"."cd_education_status" = '2 yr Degree' + AND "customer_demographics"."cd_marital_status" = 'D' + AND "store_sales"."ss_sales_price" <= 200.00 + AND "store_sales"."ss_sales_price" >= 150.00 + ) + OR ( + "customer_demographics"."cd_demo_sk" = "store_sales"."ss_cdemo_sk" + AND "customer_demographics"."cd_education_status" = 'Advanced Degree' + AND "customer_demographics"."cd_marital_status" = 'M' + AND "store_sales"."ss_sales_price" <= 100.00 + AND "store_sales"."ss_sales_price" >= 50.00 + ) + OR ( + "customer_demographics"."cd_demo_sk" = "store_sales"."ss_cdemo_sk" + AND "customer_demographics"."cd_education_status" = 'Secondary' + AND "customer_demographics"."cd_marital_status" = 'W' + AND "store_sales"."ss_sales_price" <= 150.00 + AND "store_sales"."ss_sales_price" >= 100.00 + ) +JOIN "customer_address" AS "customer_address" + ON ( + "customer_address"."ca_country" = 'United States' + AND "customer_address"."ca_state" IN ('CO', 'TN', 'ND') + AND "store_sales"."ss_addr_sk" = "customer_address"."ca_address_sk" + AND "store_sales"."ss_net_profit" <= 3000 + AND "store_sales"."ss_net_profit" >= 150 + ) + OR ( + "customer_address"."ca_country" = 'United States' + AND "customer_address"."ca_state" IN ('OK', 'PA', 'CA') + AND "store_sales"."ss_addr_sk" = "customer_address"."ca_address_sk" + AND "store_sales"."ss_net_profit" <= 25000 + AND "store_sales"."ss_net_profit" >= 50 + ) + OR ( + "customer_address"."ca_country" = 'United States' + AND "customer_address"."ca_state" IN ('TX', 'NE', 'MO') + AND "store_sales"."ss_addr_sk" = "customer_address"."ca_address_sk" + AND "store_sales"."ss_net_profit" <= 2000 + AND "store_sales"."ss_net_profit" >= 0 + ) +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_year" = 1999 + AND "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk"; + +-------------------------------------- +-- TPC-DS 49 +-------------------------------------- +SELECT 'web' AS channel, + web.item, + web.return_ratio, + web.return_rank, + web.currency_rank +FROM (SELECT item, + return_ratio, + currency_ratio, + Rank() + OVER ( + ORDER BY return_ratio) AS return_rank, + Rank() + OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM (SELECT ws.ws_item_sk AS + item, + ( Cast(Sum(COALESCE(wr.wr_return_quantity, 0)) AS DEC(15, + 4)) / + Cast( + Sum(COALESCE(ws.ws_quantity, 0)) AS DEC(15, 4)) ) AS + return_ratio, + ( Cast(Sum(COALESCE(wr.wr_return_amt, 0)) AS DEC(15, 4)) + / Cast( + Sum( + COALESCE(ws.ws_net_paid, 0)) AS DEC(15, + 4)) ) AS + currency_ratio + FROM web_sales ws + LEFT OUTER JOIN web_returns wr + ON ( ws.ws_order_number = wr.wr_order_number + AND ws.ws_item_sk = wr.wr_item_sk ), + date_dim + WHERE wr.wr_return_amt > 10000 + AND ws.ws_net_profit > 1 + AND ws.ws_net_paid > 0 + AND ws.ws_quantity > 0 + AND ws_sold_date_sk = d_date_sk + AND d_year = 1999 + AND d_moy = 12 + GROUP BY ws.ws_item_sk) in_web) web +WHERE ( web.return_rank <= 10 + OR web.currency_rank <= 10 ) +UNION +SELECT 'catalog' AS channel, + catalog.item, + catalog.return_ratio, + catalog.return_rank, + catalog.currency_rank +FROM (SELECT item, + return_ratio, + currency_ratio, + Rank() + OVER ( + ORDER BY return_ratio) AS return_rank, + Rank() + OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM (SELECT cs.cs_item_sk AS + item, + ( Cast(Sum(COALESCE(cr.cr_return_quantity, 0)) AS DEC(15, + 4)) / + Cast( + Sum(COALESCE(cs.cs_quantity, 0)) AS DEC(15, 4)) ) AS + return_ratio, + ( Cast(Sum(COALESCE(cr.cr_return_amount, 0)) AS DEC(15, 4 + )) / + Cast(Sum( + COALESCE(cs.cs_net_paid, 0)) AS DEC( + 15, 4)) ) AS + currency_ratio + FROM catalog_sales cs + LEFT OUTER JOIN catalog_returns cr + ON ( cs.cs_order_number = cr.cr_order_number + AND cs.cs_item_sk = cr.cr_item_sk ), + date_dim + WHERE cr.cr_return_amount > 10000 + AND cs.cs_net_profit > 1 + AND cs.cs_net_paid > 0 + AND cs.cs_quantity > 0 + AND cs_sold_date_sk = d_date_sk + AND d_year = 1999 + AND d_moy = 12 + GROUP BY cs.cs_item_sk) in_cat) catalog +WHERE ( catalog.return_rank <= 10 + OR catalog.currency_rank <= 10 ) +UNION +SELECT 'store' AS channel, + store.item, + store.return_ratio, + store.return_rank, + store.currency_rank +FROM (SELECT item, + return_ratio, + currency_ratio, + Rank() + OVER ( + ORDER BY return_ratio) AS return_rank, + Rank() + OVER ( + ORDER BY currency_ratio) AS currency_rank + FROM (SELECT sts.ss_item_sk AS + item, + ( Cast(Sum(COALESCE(sr.sr_return_quantity, 0)) AS DEC(15, + 4)) / + Cast( + Sum(COALESCE(sts.ss_quantity, 0)) AS DEC(15, 4)) ) AS + return_ratio, + ( Cast(Sum(COALESCE(sr.sr_return_amt, 0)) AS DEC(15, 4)) + / Cast( + Sum( + COALESCE(sts.ss_net_paid, 0)) AS DEC(15, 4)) ) AS + currency_ratio + FROM store_sales sts + LEFT OUTER JOIN store_returns sr + ON ( sts.ss_ticket_number = + sr.sr_ticket_number + AND sts.ss_item_sk = sr.sr_item_sk ), + date_dim + WHERE sr.sr_return_amt > 10000 + AND sts.ss_net_profit > 1 + AND sts.ss_net_paid > 0 + AND sts.ss_quantity > 0 + AND ss_sold_date_sk = d_date_sk + AND d_year = 1999 + AND d_moy = 12 + GROUP BY sts.ss_item_sk) in_store) store +WHERE ( store.return_rank <= 10 + OR store.currency_rank <= 10 ) +ORDER BY 1, + 4, + 5 +LIMIT 100; +WITH "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_year" AS "d_year", + "date_dim"."d_moy" AS "d_moy" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_moy" = 12 AND "date_dim"."d_year" = 1999 +), "in_web" AS ( + SELECT + "web_sales"."ws_item_sk" AS "item", + CAST(SUM(COALESCE("web_returns"."wr_return_quantity", 0)) AS DECIMAL(15, 4)) / CAST(SUM(COALESCE("web_sales"."ws_quantity", 0)) AS DECIMAL(15, 4)) AS "return_ratio", + CAST(SUM(COALESCE("web_returns"."wr_return_amt", 0)) AS DECIMAL(15, 4)) / CAST(SUM(COALESCE("web_sales"."ws_net_paid", 0)) AS DECIMAL(15, 4)) AS "currency_ratio" + FROM "web_sales" AS "web_sales" + LEFT JOIN "web_returns" AS "web_returns" + ON "web_sales"."ws_item_sk" = "web_returns"."wr_item_sk" + AND "web_sales"."ws_order_number" = "web_returns"."wr_order_number" + JOIN "date_dim_2" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + WHERE + "web_returns"."wr_return_amt" > 10000 + AND "web_sales"."ws_net_paid" > 0 + AND "web_sales"."ws_net_profit" > 1 + AND "web_sales"."ws_quantity" > 0 + GROUP BY + "web_sales"."ws_item_sk" +), "web" AS ( + SELECT + "in_web"."item" AS "item", + "in_web"."return_ratio" AS "return_ratio", + RANK() OVER (ORDER BY "in_web"."return_ratio") AS "return_rank", + RANK() OVER (ORDER BY "in_web"."currency_ratio") AS "currency_rank" + FROM "in_web" AS "in_web" +), "in_cat" AS ( + SELECT + "catalog_sales"."cs_item_sk" AS "item", + CAST(SUM(COALESCE("catalog_returns"."cr_return_quantity", 0)) AS DECIMAL(15, 4)) / CAST(SUM(COALESCE("catalog_sales"."cs_quantity", 0)) AS DECIMAL(15, 4)) AS "return_ratio", + CAST(SUM(COALESCE("catalog_returns"."cr_return_amount", 0)) AS DECIMAL(15, 4)) / CAST(SUM(COALESCE("catalog_sales"."cs_net_paid", 0)) AS DECIMAL(15, 4)) AS "currency_ratio" + FROM "catalog_sales" AS "catalog_sales" + LEFT JOIN "catalog_returns" AS "catalog_returns" + ON "catalog_sales"."cs_item_sk" = "catalog_returns"."cr_item_sk" + AND "catalog_sales"."cs_order_number" = "catalog_returns"."cr_order_number" + JOIN "date_dim_2" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + WHERE + "catalog_returns"."cr_return_amount" > 10000 + AND "catalog_sales"."cs_net_paid" > 0 + AND "catalog_sales"."cs_net_profit" > 1 + AND "catalog_sales"."cs_quantity" > 0 + GROUP BY + "catalog_sales"."cs_item_sk" +), "catalog" AS ( + SELECT + "in_cat"."item" AS "item", + "in_cat"."return_ratio" AS "return_ratio", + RANK() OVER (ORDER BY "in_cat"."return_ratio") AS "return_rank", + RANK() OVER (ORDER BY "in_cat"."currency_ratio") AS "currency_rank" + FROM "in_cat" AS "in_cat" +), "in_store" AS ( + SELECT + "store_sales"."ss_item_sk" AS "item", + CAST(SUM(COALESCE("store_returns"."sr_return_quantity", 0)) AS DECIMAL(15, 4)) / CAST(SUM(COALESCE("store_sales"."ss_quantity", 0)) AS DECIMAL(15, 4)) AS "return_ratio", + CAST(SUM(COALESCE("store_returns"."sr_return_amt", 0)) AS DECIMAL(15, 4)) / CAST(SUM(COALESCE("store_sales"."ss_net_paid", 0)) AS DECIMAL(15, 4)) AS "currency_ratio" + FROM "store_sales" AS "store_sales" + LEFT JOIN "store_returns" AS "store_returns" + ON "store_sales"."ss_item_sk" = "store_returns"."sr_item_sk" + AND "store_sales"."ss_ticket_number" = "store_returns"."sr_ticket_number" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + WHERE + "store_returns"."sr_return_amt" > 10000 + AND "store_sales"."ss_net_paid" > 0 + AND "store_sales"."ss_net_profit" > 1 + AND "store_sales"."ss_quantity" > 0 + GROUP BY + "store_sales"."ss_item_sk" +), "store" AS ( + SELECT + "in_store"."item" AS "item", + "in_store"."return_ratio" AS "return_ratio", + RANK() OVER (ORDER BY "in_store"."return_ratio") AS "return_rank", + RANK() OVER (ORDER BY "in_store"."currency_ratio") AS "currency_rank" + FROM "in_store" AS "in_store" +), "cte_3" AS ( + SELECT + 'store' AS "channel", + "store"."item" AS "item", + "store"."return_ratio" AS "return_ratio", + "store"."return_rank" AS "return_rank", + "store"."currency_rank" AS "currency_rank" + FROM "store" AS "store" + WHERE + "store"."currency_rank" <= 10 OR "store"."return_rank" <= 10 + ORDER BY + 'store', + "store"."return_rank", + "store"."currency_rank" + LIMIT 100 +), "cte_4" AS ( + SELECT + 'catalog' AS "channel", + "catalog"."item" AS "item", + "catalog"."return_ratio" AS "return_ratio", + "catalog"."return_rank" AS "return_rank", + "catalog"."currency_rank" AS "currency_rank" + FROM "catalog" AS "catalog" + WHERE + "catalog"."currency_rank" <= 10 OR "catalog"."return_rank" <= 10 + UNION + SELECT + "cte_3"."channel" AS "channel", + "cte_3"."item" AS "item", + "cte_3"."return_ratio" AS "return_ratio", + "cte_3"."return_rank" AS "return_rank", + "cte_3"."currency_rank" AS "currency_rank" + FROM "cte_3" AS "cte_3" +) +SELECT + 'web' AS "channel", + "web"."item" AS "item", + "web"."return_ratio" AS "return_ratio", + "web"."return_rank" AS "return_rank", + "web"."currency_rank" AS "currency_rank" +FROM "web" AS "web" +WHERE + "web"."currency_rank" <= 10 OR "web"."return_rank" <= 10 +UNION +SELECT + "cte_4"."channel" AS "channel", + "cte_4"."item" AS "item", + "cte_4"."return_ratio" AS "return_ratio", + "cte_4"."return_rank" AS "return_rank", + "cte_4"."currency_rank" AS "currency_rank" +FROM "cte_4" AS "cte_4"; + +-------------------------------------- +-- TPC-DS 50 +-------------------------------------- +SELECT s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip, + Sum(CASE + WHEN ( sr_returned_date_sk - ss_sold_date_sk <= 30 ) THEN 1 + ELSE 0 + END) AS "30 days", + Sum(CASE + WHEN ( sr_returned_date_sk - ss_sold_date_sk > 30 ) + AND ( sr_returned_date_sk - ss_sold_date_sk <= 60 ) + THEN 1 + ELSE 0 + END) AS "31-60 days", + Sum(CASE + WHEN ( sr_returned_date_sk - ss_sold_date_sk > 60 ) + AND ( sr_returned_date_sk - ss_sold_date_sk <= 90 ) + THEN 1 + ELSE 0 + END) AS "61-90 days", + Sum(CASE + WHEN ( sr_returned_date_sk - ss_sold_date_sk > 90 ) + AND ( sr_returned_date_sk - ss_sold_date_sk <= 120 ) + THEN 1 + ELSE 0 + END) AS "91-120 days", + Sum(CASE + WHEN ( sr_returned_date_sk - ss_sold_date_sk > 120 ) THEN 1 + ELSE 0 + END) AS ">120 days" +FROM store_sales, + store_returns, + store, + date_dim d1, + date_dim d2 +WHERE d2.d_year = 2002 + AND d2.d_moy = 9 + AND ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk + AND ss_sold_date_sk = d1.d_date_sk + AND sr_returned_date_sk = d2.d_date_sk + AND ss_customer_sk = sr_customer_sk + AND ss_store_sk = s_store_sk +GROUP BY s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip +ORDER BY s_store_name, + s_company_id, + s_street_number, + s_street_name, + s_street_type, + s_suite_number, + s_city, + s_county, + s_state, + s_zip +LIMIT 100; +SELECT + "store"."s_store_name" AS "s_store_name", + "store"."s_company_id" AS "s_company_id", + "store"."s_street_number" AS "s_street_number", + "store"."s_street_name" AS "s_street_name", + "store"."s_street_type" AS "s_street_type", + "store"."s_suite_number" AS "s_suite_number", + "store"."s_city" AS "s_city", + "store"."s_county" AS "s_county", + "store"."s_state" AS "s_state", + "store"."s_zip" AS "s_zip", + SUM( + CASE + WHEN "store_returns"."sr_returned_date_sk" - "store_sales"."ss_sold_date_sk" <= 30 + THEN 1 + ELSE 0 + END + ) AS "30 days", + SUM( + CASE + WHEN "store_returns"."sr_returned_date_sk" - "store_sales"."ss_sold_date_sk" <= 60 + AND "store_returns"."sr_returned_date_sk" - "store_sales"."ss_sold_date_sk" > 30 + THEN 1 + ELSE 0 + END + ) AS "31-60 days", + SUM( + CASE + WHEN "store_returns"."sr_returned_date_sk" - "store_sales"."ss_sold_date_sk" <= 90 + AND "store_returns"."sr_returned_date_sk" - "store_sales"."ss_sold_date_sk" > 60 + THEN 1 + ELSE 0 + END + ) AS "61-90 days", + SUM( + CASE + WHEN "store_returns"."sr_returned_date_sk" - "store_sales"."ss_sold_date_sk" <= 120 + AND "store_returns"."sr_returned_date_sk" - "store_sales"."ss_sold_date_sk" > 90 + THEN 1 + ELSE 0 + END + ) AS "91-120 days", + SUM( + CASE + WHEN "store_returns"."sr_returned_date_sk" - "store_sales"."ss_sold_date_sk" > 120 + THEN 1 + ELSE 0 + END + ) AS ">120 days" +FROM "store_sales" AS "store_sales" +JOIN "store_returns" AS "store_returns" + ON "store_sales"."ss_customer_sk" = "store_returns"."sr_customer_sk" + AND "store_sales"."ss_item_sk" = "store_returns"."sr_item_sk" + AND "store_sales"."ss_ticket_number" = "store_returns"."sr_ticket_number" +JOIN "store" AS "store" + ON "store_sales"."ss_store_sk" = "store"."s_store_sk" +JOIN "date_dim" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" +JOIN "date_dim" AS "date_dim_2" + ON "date_dim_2"."d_moy" = 9 + AND "date_dim_2"."d_year" = 2002 + AND "store_returns"."sr_returned_date_sk" = "date_dim_2"."d_date_sk" +GROUP BY + "store"."s_store_name", + "store"."s_company_id", + "store"."s_street_number", + "store"."s_street_name", + "store"."s_street_type", + "store"."s_suite_number", + "store"."s_city", + "store"."s_county", + "store"."s_state", + "store"."s_zip" +ORDER BY + "s_store_name", + "s_company_id", + "s_street_number", + "s_street_name", + "s_street_type", + "s_suite_number", + "s_city", + "s_county", + "s_state", + "s_zip" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 51 +-------------------------------------- +WITH web_v1 AS +( + SELECT ws_item_sk item_sk, + d_date, + sum(Sum(ws_sales_price)) OVER (partition BY ws_item_sk ORDER BY d_date rows BETWEEN UNBOUNDED PRECEDING AND CURRENT row) cume_sales + FROM web_sales , + date_dim + WHERE ws_sold_date_sk=d_date_sk + AND d_month_seq BETWEEN 1192 AND 1192+11 + AND ws_item_sk IS NOT NULL + GROUP BY ws_item_sk, + d_date), store_v1 AS +( + SELECT ss_item_sk item_sk, + d_date, + sum(sum(ss_sales_price)) OVER (partition BY ss_item_sk ORDER BY d_date rows BETWEEN UNBOUNDED PRECEDING AND CURRENT row) cume_sales + FROM store_sales , + date_dim + WHERE ss_sold_date_sk=d_date_sk + AND d_month_seq BETWEEN 1192 AND 1192+11 + AND ss_item_sk IS NOT NULL + GROUP BY ss_item_sk, + d_date) +SELECT + * +FROM ( + SELECT item_sk , + d_date , + web_sales , + store_sales , + max(web_sales) OVER (partition BY item_sk ORDER BY d_date rows BETWEEN UNBOUNDED PRECEDING AND CURRENT row) web_cumulative , + max(store_sales) OVER (partition BY item_sk ORDER BY d_date rows BETWEEN UNBOUNDED PRECEDING AND CURRENT row) store_cumulative + FROM ( + SELECT + CASE + WHEN web.item_sk IS NOT NULL THEN web.item_sk + ELSE store.item_sk + END item_sk , + CASE + WHEN web.d_date IS NOT NULL THEN web.d_date + ELSE store.d_date + END d_date , + web.cume_sales web_sales , + store.cume_sales store_sales + FROM web_v1 web + FULL OUTER JOIN store_v1 store + ON ( + web.item_sk = store.item_sk + AND web.d_date = store.d_date) )x )y +WHERE web_cumulative > store_cumulative +ORDER BY item_sk , + d_date +LIMIT 100; +WITH "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_date" AS "d_date", + "date_dim"."d_month_seq" AS "d_month_seq" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_month_seq" <= 1203 AND "date_dim"."d_month_seq" >= 1192 +), "web_v1" AS ( + SELECT + "web_sales"."ws_item_sk" AS "item_sk", + "date_dim"."d_date" AS "d_date", + SUM(SUM("web_sales"."ws_sales_price")) OVER (PARTITION BY "web_sales"."ws_item_sk" ORDER BY "date_dim"."d_date" rows BETWEEN UNBOUNDED PRECEDING AND CURRENT row) AS "cume_sales" + FROM "web_sales" AS "web_sales" + JOIN "date_dim_2" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + WHERE + NOT "web_sales"."ws_item_sk" IS NULL + GROUP BY + "web_sales"."ws_item_sk", + "date_dim"."d_date" +), "store_v1" AS ( + SELECT + "store_sales"."ss_item_sk" AS "item_sk", + "date_dim"."d_date" AS "d_date", + SUM(SUM("store_sales"."ss_sales_price")) OVER (PARTITION BY "store_sales"."ss_item_sk" ORDER BY "date_dim"."d_date" rows BETWEEN UNBOUNDED PRECEDING AND CURRENT row) AS "cume_sales" + FROM "store_sales" AS "store_sales" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + WHERE + NOT "store_sales"."ss_item_sk" IS NULL + GROUP BY + "store_sales"."ss_item_sk", + "date_dim"."d_date" +), "y" AS ( + SELECT + CASE + WHEN NOT "web"."item_sk" IS NULL + THEN "web"."item_sk" + ELSE "store"."item_sk" + END AS "item_sk", + CASE WHEN NOT "web"."d_date" IS NULL THEN "web"."d_date" ELSE "store"."d_date" END AS "d_date", + "web"."cume_sales" AS "web_sales", + "store"."cume_sales" AS "store_sales", + MAX("web"."cume_sales") OVER (PARTITION BY CASE + WHEN NOT "web"."item_sk" IS NULL + THEN "web"."item_sk" + ELSE "store"."item_sk" + END ORDER BY CASE WHEN NOT "web"."d_date" IS NULL THEN "web"."d_date" ELSE "store"."d_date" END rows BETWEEN UNBOUNDED PRECEDING AND CURRENT row) AS "web_cumulative", + MAX("store"."cume_sales") OVER (PARTITION BY CASE + WHEN NOT "web"."item_sk" IS NULL + THEN "web"."item_sk" + ELSE "store"."item_sk" + END ORDER BY CASE WHEN NOT "web"."d_date" IS NULL THEN "web"."d_date" ELSE "store"."d_date" END rows BETWEEN UNBOUNDED PRECEDING AND CURRENT row) AS "store_cumulative" + FROM "web_v1" AS "web" + FULL JOIN "store_v1" AS "store" + ON "web"."d_date" = "store"."d_date" AND "web"."item_sk" = "store"."item_sk" +) +SELECT + "y"."item_sk" AS "item_sk", + "y"."d_date" AS "d_date", + "y"."web_sales" AS "web_sales", + "y"."store_sales" AS "store_sales", + "y"."web_cumulative" AS "web_cumulative", + "y"."store_cumulative" AS "store_cumulative" +FROM "y" AS "y" +WHERE + "y"."web_cumulative" > "y"."store_cumulative" +ORDER BY + "y"."item_sk", + "y"."d_date" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 52 +-------------------------------------- +SELECT dt.d_year, + item.i_brand_id brand_id, + item.i_brand brand, + Sum(ss_ext_sales_price) ext_price +FROM date_dim dt, + store_sales, + item +WHERE dt.d_date_sk = store_sales.ss_sold_date_sk + AND store_sales.ss_item_sk = item.i_item_sk + AND item.i_manager_id = 1 + AND dt.d_moy = 11 + AND dt.d_year = 1999 +GROUP BY dt.d_year, + item.i_brand, + item.i_brand_id +ORDER BY dt.d_year, + ext_price DESC, + brand_id +LIMIT 100; +SELECT + "date_dim"."d_year" AS "d_year", + "item"."i_brand_id" AS "brand_id", + "item"."i_brand" AS "brand", + SUM("store_sales"."ss_ext_sales_price") AS "ext_price" +FROM "date_dim" AS "date_dim" +JOIN "store_sales" AS "store_sales" + ON "date_dim"."d_date_sk" = "store_sales"."ss_sold_date_sk" +JOIN "item" AS "item" + ON "item"."i_manager_id" = 1 AND "store_sales"."ss_item_sk" = "item"."i_item_sk" +WHERE + "date_dim"."d_moy" = 11 AND "date_dim"."d_year" = 1999 +GROUP BY + "date_dim"."d_year", + "item"."i_brand", + "item"."i_brand_id" +ORDER BY + "date_dim"."d_year", + "ext_price" DESC, + "brand_id" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 53 +-------------------------------------- +SELECT * +FROM (SELECT i_manufact_id, + Sum(ss_sales_price) sum_sales, + Avg(Sum(ss_sales_price)) + OVER ( + partition BY i_manufact_id) avg_quarterly_sales + FROM item, + store_sales, + date_dim, + store + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_month_seq IN ( 1199, 1199 + 1, 1199 + 2, 1199 + 3, + 1199 + 4, 1199 + 5, 1199 + 6, 1199 + 7, + 1199 + 8, 1199 + 9, 1199 + 10, 1199 + 11 ) + AND ( ( i_category IN ( 'Books', 'Children', 'Electronics' ) + AND i_class IN ( 'personal', 'portable', 'reference', + 'self-help' ) + AND i_brand IN ( 'scholaramalgamalg #14', + 'scholaramalgamalg #7' + , + 'exportiunivamalg #9', + 'scholaramalgamalg #9' ) + ) + OR ( i_category IN ( 'Women', 'Music', 'Men' ) + AND i_class IN ( 'accessories', 'classical', + 'fragrances', + 'pants' ) + AND i_brand IN ( 'amalgimporto #1', + 'edu packscholar #1', + 'exportiimporto #1', + 'importoamalg #1' ) ) ) + GROUP BY i_manufact_id, + d_qoy) tmp1 +WHERE CASE + WHEN avg_quarterly_sales > 0 THEN Abs (sum_sales - avg_quarterly_sales) + / + avg_quarterly_sales + ELSE NULL + END > 0.1 +ORDER BY avg_quarterly_sales, + sum_sales, + i_manufact_id +LIMIT 100; +WITH "tmp1" AS ( + SELECT + "item"."i_manufact_id" AS "i_manufact_id", + SUM("store_sales"."ss_sales_price") AS "sum_sales", + AVG(SUM("store_sales"."ss_sales_price")) OVER (PARTITION BY "item"."i_manufact_id") AS "avg_quarterly_sales" + FROM "item" AS "item" + JOIN "store_sales" AS "store_sales" + ON "store_sales"."ss_item_sk" = "item"."i_item_sk" + JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_month_seq" IN (1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210) + AND "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "store" AS "store" + ON "store_sales"."ss_store_sk" = "store"."s_store_sk" + WHERE + ( + "item"."i_brand" IN ('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'importoamalg #1') + OR "item"."i_brand" IN ('scholaramalgamalg #14', 'scholaramalgamalg #7', 'exportiunivamalg #9', 'scholaramalgamalg #9') + ) + AND ( + "item"."i_brand" IN ('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'importoamalg #1') + OR "item"."i_category" IN ('Books', 'Children', 'Electronics') + ) + AND ( + "item"."i_brand" IN ('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'importoamalg #1') + OR "item"."i_class" IN ('personal', 'portable', 'reference', 'self-help') + ) + AND ( + "item"."i_category" IN ('Books', 'Children', 'Electronics') + OR "item"."i_category" IN ('Women', 'Music', 'Men') + ) + AND ( + "item"."i_category" IN ('Books', 'Children', 'Electronics') + OR "item"."i_class" IN ('accessories', 'classical', 'fragrances', 'pants') + ) + AND ( + "item"."i_category" IN ('Women', 'Music', 'Men') + OR "item"."i_class" IN ('personal', 'portable', 'reference', 'self-help') + ) + AND ( + "item"."i_class" IN ('accessories', 'classical', 'fragrances', 'pants') + OR "item"."i_class" IN ('personal', 'portable', 'reference', 'self-help') + ) + GROUP BY + "item"."i_manufact_id", + "date_dim"."d_qoy" +) +SELECT + "tmp1"."i_manufact_id" AS "i_manufact_id", + "tmp1"."sum_sales" AS "sum_sales", + "tmp1"."avg_quarterly_sales" AS "avg_quarterly_sales" +FROM "tmp1" AS "tmp1" +WHERE + CASE + WHEN "tmp1"."avg_quarterly_sales" > 0 + THEN ABS("tmp1"."sum_sales" - "tmp1"."avg_quarterly_sales") / "tmp1"."avg_quarterly_sales" + ELSE NULL + END > 0.1 +ORDER BY + "tmp1"."avg_quarterly_sales", + "tmp1"."sum_sales", + "tmp1"."i_manufact_id" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 54 +-------------------------------------- +WITH my_customers + AS (SELECT DISTINCT c_customer_sk, + c_current_addr_sk + FROM (SELECT cs_sold_date_sk sold_date_sk, + cs_bill_customer_sk customer_sk, + cs_item_sk item_sk + FROM catalog_sales + UNION ALL + SELECT ws_sold_date_sk sold_date_sk, + ws_bill_customer_sk customer_sk, + ws_item_sk item_sk + FROM web_sales) cs_or_ws_sales, + item, + date_dim, + customer + WHERE sold_date_sk = d_date_sk + AND item_sk = i_item_sk + AND i_category = 'Sports' + AND i_class = 'fitness' + AND c_customer_sk = cs_or_ws_sales.customer_sk + AND d_moy = 5 + AND d_year = 2000), + my_revenue + AS (SELECT c_customer_sk, + Sum(ss_ext_sales_price) AS revenue + FROM my_customers, + store_sales, + customer_address, + store, + date_dim + WHERE c_current_addr_sk = ca_address_sk + AND ca_county = s_county + AND ca_state = s_state + AND ss_sold_date_sk = d_date_sk + AND c_customer_sk = ss_customer_sk + AND d_month_seq BETWEEN (SELECT DISTINCT d_month_seq + 1 + FROM date_dim + WHERE d_year = 2000 + AND d_moy = 5) AND + (SELECT DISTINCT + d_month_seq + 3 + FROM date_dim + WHERE d_year = 2000 + AND d_moy = 5) + GROUP BY c_customer_sk), + segments + AS (SELECT Cast(( revenue / 50 ) AS INT) AS segment + FROM my_revenue) +SELECT segment, + Count(*) AS num_customers, + segment * 50 AS segment_base +FROM segments +GROUP BY segment +ORDER BY segment, + num_customers +LIMIT 100; +WITH "cs_or_ws_sales" AS ( + SELECT + "catalog_sales"."cs_sold_date_sk" AS "sold_date_sk", + "catalog_sales"."cs_bill_customer_sk" AS "customer_sk", + "catalog_sales"."cs_item_sk" AS "item_sk" + FROM "catalog_sales" AS "catalog_sales" + UNION ALL + SELECT + "web_sales"."ws_sold_date_sk" AS "sold_date_sk", + "web_sales"."ws_bill_customer_sk" AS "customer_sk", + "web_sales"."ws_item_sk" AS "item_sk" + FROM "web_sales" AS "web_sales" +), "my_customers" AS ( + SELECT DISTINCT + "customer"."c_customer_sk" AS "c_customer_sk", + "customer"."c_current_addr_sk" AS "c_current_addr_sk" + FROM "cs_or_ws_sales" AS "cs_or_ws_sales" + JOIN "item" AS "item" + ON "cs_or_ws_sales"."item_sk" = "item"."i_item_sk" + AND "item"."i_category" = 'Sports' + AND "item"."i_class" = 'fitness' + JOIN "date_dim" AS "date_dim" + ON "cs_or_ws_sales"."sold_date_sk" = "date_dim"."d_date_sk" + AND "date_dim"."d_moy" = 5 + AND "date_dim"."d_year" = 2000 + JOIN "customer" AS "customer" + ON "customer"."c_customer_sk" = "cs_or_ws_sales"."customer_sk" +), "_u_0" AS ( + SELECT DISTINCT + "date_dim"."d_month_seq" + 1 AS "_col_0" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_moy" = 5 AND "date_dim"."d_year" = 2000 +), "_u_1" AS ( + SELECT DISTINCT + "date_dim"."d_month_seq" + 3 AS "_col_0" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_moy" = 5 AND "date_dim"."d_year" = 2000 +), "my_revenue" AS ( + SELECT + SUM("store_sales"."ss_ext_sales_price") AS "revenue" + FROM "my_customers" + CROSS JOIN "date_dim" AS "date_dim" + JOIN "_u_0" AS "_u_0" + ON "date_dim"."d_month_seq" >= "_u_0"."_col_0" + JOIN "_u_1" AS "_u_1" + ON "date_dim"."d_month_seq" <= "_u_1"."_col_0" + JOIN "store_sales" AS "store_sales" + ON "my_customers"."c_customer_sk" = "store_sales"."ss_customer_sk" + AND "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "customer_address" AS "customer_address" + ON "my_customers"."c_current_addr_sk" = "customer_address"."ca_address_sk" + JOIN "store" AS "store" + ON "customer_address"."ca_county" = "store"."s_county" + AND "customer_address"."ca_state" = "store"."s_state" + GROUP BY + "my_customers"."c_customer_sk" +) +SELECT + CAST(( + "my_revenue"."revenue" / 50 + ) AS INT) AS "segment", + COUNT(*) AS "num_customers", + CAST(( + "my_revenue"."revenue" / 50 + ) AS INT) * 50 AS "segment_base" +FROM "my_revenue" +GROUP BY + CAST(( + "my_revenue"."revenue" / 50 + ) AS INT) +ORDER BY + "segment", + "num_customers" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 55 +-------------------------------------- +SELECT i_brand_id brand_id, + i_brand brand, + Sum(ss_ext_sales_price) ext_price +FROM date_dim, + store_sales, + item +WHERE d_date_sk = ss_sold_date_sk + AND ss_item_sk = i_item_sk + AND i_manager_id = 33 + AND d_moy = 12 + AND d_year = 1998 +GROUP BY i_brand, + i_brand_id +ORDER BY ext_price DESC, + i_brand_id +LIMIT 100; +SELECT + "item"."i_brand_id" AS "brand_id", + "item"."i_brand" AS "brand", + SUM("store_sales"."ss_ext_sales_price") AS "ext_price" +FROM "date_dim" AS "date_dim" +JOIN "store_sales" AS "store_sales" + ON "date_dim"."d_date_sk" = "store_sales"."ss_sold_date_sk" +JOIN "item" AS "item" + ON "item"."i_manager_id" = 33 AND "store_sales"."ss_item_sk" = "item"."i_item_sk" +WHERE + "date_dim"."d_moy" = 12 AND "date_dim"."d_year" = 1998 +GROUP BY + "item"."i_brand", + "item"."i_brand_id" +ORDER BY + "ext_price" DESC, + "item"."i_brand_id" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 56 +-------------------------------------- +WITH ss + AS (SELECT i_item_id, + Sum(ss_ext_sales_price) total_sales + FROM store_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN (SELECT i_item_id + FROM item + WHERE i_color IN ( 'firebrick', 'rosy', 'white' ) + ) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 3 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -6 + GROUP BY i_item_id), + cs + AS (SELECT i_item_id, + Sum(cs_ext_sales_price) total_sales + FROM catalog_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN (SELECT i_item_id + FROM item + WHERE i_color IN ( 'firebrick', 'rosy', 'white' ) + ) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 3 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -6 + GROUP BY i_item_id), + ws + AS (SELECT i_item_id, + Sum(ws_ext_sales_price) total_sales + FROM web_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN (SELECT i_item_id + FROM item + WHERE i_color IN ( 'firebrick', 'rosy', 'white' ) + ) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1998 + AND d_moy = 3 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -6 + GROUP BY i_item_id) +SELECT i_item_id, + Sum(total_sales) total_sales +FROM (SELECT * + FROM ss + UNION ALL + SELECT * + FROM cs + UNION ALL + SELECT * + FROM ws) tmp1 +GROUP BY i_item_id +ORDER BY total_sales +LIMIT 100; +WITH "item_2" AS ( + SELECT + "item"."i_item_sk" AS "i_item_sk", + "item"."i_item_id" AS "i_item_id" + FROM "item" AS "item" +), "_u_0" AS ( + SELECT + "item"."i_item_id" AS "i_item_id" + FROM "item" AS "item" + WHERE + "item"."i_color" IN ('firebrick', 'rosy', 'white') + GROUP BY + "item"."i_item_id" +), "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_year" AS "d_year", + "date_dim"."d_moy" AS "d_moy" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_moy" = 3 AND "date_dim"."d_year" = 1998 +), "customer_address_2" AS ( + SELECT + "customer_address"."ca_address_sk" AS "ca_address_sk", + "customer_address"."ca_gmt_offset" AS "ca_gmt_offset" + FROM "customer_address" AS "customer_address" + WHERE + "customer_address"."ca_gmt_offset" = -6 +), "ss" AS ( + SELECT + "item"."i_item_id" AS "i_item_id", + SUM("store_sales"."ss_ext_sales_price") AS "total_sales" + FROM "store_sales" AS "store_sales" + JOIN "item_2" AS "item" + ON "store_sales"."ss_item_sk" = "item"."i_item_sk" + LEFT JOIN "_u_0" AS "_u_0" + ON "item"."i_item_id" = "_u_0"."i_item_id" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "customer_address_2" AS "customer_address" + ON "store_sales"."ss_addr_sk" = "customer_address"."ca_address_sk" + WHERE + NOT "_u_0"."i_item_id" IS NULL + GROUP BY + "item"."i_item_id" +), "cs" AS ( + SELECT + "item"."i_item_id" AS "i_item_id", + SUM("catalog_sales"."cs_ext_sales_price") AS "total_sales" + FROM "catalog_sales" AS "catalog_sales" + JOIN "item_2" AS "item" + ON "catalog_sales"."cs_item_sk" = "item"."i_item_sk" + LEFT JOIN "_u_0" AS "_u_1" + ON "item"."i_item_id" = "_u_1"."i_item_id" + JOIN "date_dim_2" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "customer_address_2" AS "customer_address" + ON "catalog_sales"."cs_bill_addr_sk" = "customer_address"."ca_address_sk" + WHERE + NOT "_u_1"."i_item_id" IS NULL + GROUP BY + "item"."i_item_id" +), "ws" AS ( + SELECT + "item"."i_item_id" AS "i_item_id", + SUM("web_sales"."ws_ext_sales_price") AS "total_sales" + FROM "web_sales" AS "web_sales" + JOIN "item_2" AS "item" + ON "web_sales"."ws_item_sk" = "item"."i_item_sk" + LEFT JOIN "_u_0" AS "_u_2" + ON "item"."i_item_id" = "_u_2"."i_item_id" + JOIN "date_dim_2" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "customer_address_2" AS "customer_address" + ON "web_sales"."ws_bill_addr_sk" = "customer_address"."ca_address_sk" + WHERE + NOT "_u_2"."i_item_id" IS NULL + GROUP BY + "item"."i_item_id" +), "cte_4" AS ( + SELECT + "cs"."i_item_id" AS "i_item_id", + "cs"."total_sales" AS "total_sales" + FROM "cs" + UNION ALL + SELECT + "ws"."i_item_id" AS "i_item_id", + "ws"."total_sales" AS "total_sales" + FROM "ws" +), "tmp1" AS ( + SELECT + "ss"."i_item_id" AS "i_item_id", + "ss"."total_sales" AS "total_sales" + FROM "ss" + UNION ALL + SELECT + "cte_4"."i_item_id" AS "i_item_id", + "cte_4"."total_sales" AS "total_sales" + FROM "cte_4" AS "cte_4" +) +SELECT + "tmp1"."i_item_id" AS "i_item_id", + SUM("tmp1"."total_sales") AS "total_sales" +FROM "tmp1" AS "tmp1" +GROUP BY + "tmp1"."i_item_id" +ORDER BY + "total_sales" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 57 +-------------------------------------- +WITH v1 + AS (SELECT i_category, + i_brand, + cc_name, + d_year, + d_moy, + Sum(cs_sales_price) sum_sales + , + Avg(Sum(cs_sales_price)) + OVER ( + partition BY i_category, i_brand, cc_name, d_year) + avg_monthly_sales + , + Rank() + OVER ( + partition BY i_category, i_brand, cc_name + ORDER BY d_year, d_moy) rn + FROM item, + catalog_sales, + date_dim, + call_center + WHERE cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND cc_call_center_sk = cs_call_center_sk + AND ( d_year = 2000 + OR ( d_year = 2000 - 1 + AND d_moy = 12 ) + OR ( d_year = 2000 + 1 + AND d_moy = 1 ) ) + GROUP BY i_category, + i_brand, + cc_name, + d_year, + d_moy), + v2 + AS (SELECT v1.i_brand, + v1.d_year, + v1.avg_monthly_sales, + v1.sum_sales, + v1_lag.sum_sales psum, + v1_lead.sum_sales nsum + FROM v1, + v1 v1_lag, + v1 v1_lead + WHERE v1.i_category = v1_lag.i_category + AND v1.i_category = v1_lead.i_category + AND v1.i_brand = v1_lag.i_brand + AND v1.i_brand = v1_lead.i_brand + AND v1. cc_name = v1_lag. cc_name + AND v1. cc_name = v1_lead. cc_name + AND v1.rn = v1_lag.rn + 1 + AND v1.rn = v1_lead.rn - 1) +SELECT * +FROM v2 +WHERE d_year = 2000 + AND avg_monthly_sales > 0 + AND CASE + WHEN avg_monthly_sales > 0 THEN Abs(sum_sales - avg_monthly_sales) + / + avg_monthly_sales + ELSE NULL + END > 0.1 +ORDER BY sum_sales - avg_monthly_sales, + 3 +LIMIT 100; +WITH "v1" AS ( + SELECT + "item"."i_category" AS "i_category", + "item"."i_brand" AS "i_brand", + "call_center"."cc_name" AS "cc_name", + "date_dim"."d_year" AS "d_year", + SUM("catalog_sales"."cs_sales_price") AS "sum_sales", + AVG(SUM("catalog_sales"."cs_sales_price")) OVER (PARTITION BY "item"."i_category", "item"."i_brand", "call_center"."cc_name", "date_dim"."d_year") AS "avg_monthly_sales", + RANK() OVER (PARTITION BY "item"."i_category", "item"."i_brand", "call_center"."cc_name" ORDER BY "date_dim"."d_year", "date_dim"."d_moy") AS "rn" + FROM "item" AS "item" + JOIN "catalog_sales" AS "catalog_sales" + ON "catalog_sales"."cs_item_sk" = "item"."i_item_sk" + JOIN "date_dim" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + AND ( + "date_dim"."d_moy" = 1 OR "date_dim"."d_moy" = 12 OR "date_dim"."d_year" = 2000 + ) + AND ( + "date_dim"."d_moy" = 1 OR "date_dim"."d_year" = 1999 OR "date_dim"."d_year" = 2000 + ) + AND ( + "date_dim"."d_moy" = 12 OR "date_dim"."d_year" = 2000 OR "date_dim"."d_year" = 2001 + ) + AND ( + "date_dim"."d_year" = 1999 OR "date_dim"."d_year" = 2000 OR "date_dim"."d_year" = 2001 + ) + JOIN "call_center" AS "call_center" + ON "call_center"."cc_call_center_sk" = "catalog_sales"."cs_call_center_sk" + GROUP BY + "item"."i_category", + "item"."i_brand", + "call_center"."cc_name", + "date_dim"."d_year", + "date_dim"."d_moy" +) +SELECT + "v1"."i_brand" AS "i_brand", + "v1"."d_year" AS "d_year", + "v1"."avg_monthly_sales" AS "avg_monthly_sales", + "v1"."sum_sales" AS "sum_sales", + "v1_lag"."sum_sales" AS "psum", + "v1_lead"."sum_sales" AS "nsum" +FROM "v1" +JOIN "v1" AS "v1_lag" + ON "v1"."cc_name" = "v1_lag"."cc_name" + AND "v1"."i_brand" = "v1_lag"."i_brand" + AND "v1"."i_category" = "v1_lag"."i_category" + AND "v1"."rn" = "v1_lag"."rn" + 1 +JOIN "v1" AS "v1_lead" + ON "v1"."cc_name" = "v1_lead"."cc_name" + AND "v1"."i_brand" = "v1_lead"."i_brand" + AND "v1"."i_category" = "v1_lead"."i_category" + AND "v1"."rn" = "v1_lead"."rn" - 1 +WHERE + "v1"."avg_monthly_sales" > 0 + AND "v1"."d_year" = 2000 + AND CASE + WHEN "v1"."avg_monthly_sales" > 0 + THEN ABS("v1"."sum_sales" - "v1"."avg_monthly_sales") / "v1"."avg_monthly_sales" + ELSE NULL + END > 0.1 +ORDER BY + "v1"."sum_sales" - "v1"."avg_monthly_sales", + "v1"."avg_monthly_sales" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 59 +-------------------------------------- +WITH wss + AS (SELECT d_week_seq, + ss_store_sk, + Sum(CASE + WHEN ( d_day_name = 'Sunday' ) THEN ss_sales_price + ELSE NULL + END) sun_sales, + Sum(CASE + WHEN ( d_day_name = 'Monday' ) THEN ss_sales_price + ELSE NULL + END) mon_sales, + Sum(CASE + WHEN ( d_day_name = 'Tuesday' ) THEN ss_sales_price + ELSE NULL + END) tue_sales, + Sum(CASE + WHEN ( d_day_name = 'Wednesday' ) THEN ss_sales_price + ELSE NULL + END) wed_sales, + Sum(CASE + WHEN ( d_day_name = 'Thursday' ) THEN ss_sales_price + ELSE NULL + END) thu_sales, + Sum(CASE + WHEN ( d_day_name = 'Friday' ) THEN ss_sales_price + ELSE NULL + END) fri_sales, + Sum(CASE + WHEN ( d_day_name = 'Saturday' ) THEN ss_sales_price + ELSE NULL + END) sat_sales + FROM store_sales, + date_dim + WHERE d_date_sk = ss_sold_date_sk + GROUP BY d_week_seq, + ss_store_sk) +SELECT s_store_name1, + s_store_id1, + d_week_seq1, + sun_sales1 / sun_sales2, + mon_sales1 / mon_sales2, + tue_sales1 / tue_sales2, + wed_sales1 / wed_sales2, + thu_sales1 / thu_sales2, + fri_sales1 / fri_sales2, + sat_sales1 / sat_sales2 +FROM (SELECT s_store_name s_store_name1, + wss.d_week_seq d_week_seq1, + s_store_id s_store_id1, + sun_sales sun_sales1, + mon_sales mon_sales1, + tue_sales tue_sales1, + wed_sales wed_sales1, + thu_sales thu_sales1, + fri_sales fri_sales1, + sat_sales sat_sales1 + FROM wss, + store, + date_dim d + WHERE d.d_week_seq = wss.d_week_seq + AND ss_store_sk = s_store_sk + AND d_month_seq BETWEEN 1196 AND 1196 + 11) y, + (SELECT s_store_name s_store_name2, + wss.d_week_seq d_week_seq2, + s_store_id s_store_id2, + sun_sales sun_sales2, + mon_sales mon_sales2, + tue_sales tue_sales2, + wed_sales wed_sales2, + thu_sales thu_sales2, + fri_sales fri_sales2, + sat_sales sat_sales2 + FROM wss, + store, + date_dim d + WHERE d.d_week_seq = wss.d_week_seq + AND ss_store_sk = s_store_sk + AND d_month_seq BETWEEN 1196 + 12 AND 1196 + 23) x +WHERE s_store_id1 = s_store_id2 + AND d_week_seq1 = d_week_seq2 - 52 +ORDER BY s_store_name1, + s_store_id1, + d_week_seq1 +LIMIT 100; +WITH "wss" AS ( + SELECT + "date_dim"."d_week_seq" AS "d_week_seq", + "store_sales"."ss_store_sk" AS "ss_store_sk", + SUM( + CASE + WHEN "date_dim"."d_day_name" = 'Sunday' + THEN "store_sales"."ss_sales_price" + ELSE NULL + END + ) AS "sun_sales", + SUM( + CASE + WHEN "date_dim"."d_day_name" = 'Monday' + THEN "store_sales"."ss_sales_price" + ELSE NULL + END + ) AS "mon_sales", + SUM( + CASE + WHEN "date_dim"."d_day_name" = 'Tuesday' + THEN "store_sales"."ss_sales_price" + ELSE NULL + END + ) AS "tue_sales", + SUM( + CASE + WHEN "date_dim"."d_day_name" = 'Wednesday' + THEN "store_sales"."ss_sales_price" + ELSE NULL + END + ) AS "wed_sales", + SUM( + CASE + WHEN "date_dim"."d_day_name" = 'Thursday' + THEN "store_sales"."ss_sales_price" + ELSE NULL + END + ) AS "thu_sales", + SUM( + CASE + WHEN "date_dim"."d_day_name" = 'Friday' + THEN "store_sales"."ss_sales_price" + ELSE NULL + END + ) AS "fri_sales", + SUM( + CASE + WHEN "date_dim"."d_day_name" = 'Saturday' + THEN "store_sales"."ss_sales_price" + ELSE NULL + END + ) AS "sat_sales" + FROM "store_sales" AS "store_sales" + JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_date_sk" = "store_sales"."ss_sold_date_sk" + GROUP BY + "date_dim"."d_week_seq", + "store_sales"."ss_store_sk" +), "x" AS ( + SELECT + "wss"."d_week_seq" AS "d_week_seq2", + "store"."s_store_id" AS "s_store_id2", + "wss"."sun_sales" AS "sun_sales2", + "wss"."mon_sales" AS "mon_sales2", + "wss"."tue_sales" AS "tue_sales2", + "wss"."wed_sales" AS "wed_sales2", + "wss"."thu_sales" AS "thu_sales2", + "wss"."fri_sales" AS "fri_sales2", + "wss"."sat_sales" AS "sat_sales2" + FROM "wss", "store" AS "store", "date_dim" AS "date_dim" + WHERE + "date_dim"."d_month_seq" <= 1219 + AND "date_dim"."d_month_seq" >= 1208 + AND "date_dim"."d_week_seq" = "wss"."d_week_seq" + AND "wss"."ss_store_sk" = "store"."s_store_sk" +) +SELECT + "store"."s_store_name" AS "s_store_name1", + "store"."s_store_id" AS "s_store_id1", + "wss"."d_week_seq" AS "d_week_seq1", + "wss"."sun_sales" / "x"."sun_sales2" AS "_col_3", + "wss"."mon_sales" / "x"."mon_sales2" AS "_col_4", + "wss"."tue_sales" / "x"."tue_sales2" AS "_col_5", + "wss"."wed_sales" / "x"."wed_sales2" AS "_col_6", + "wss"."thu_sales" / "x"."thu_sales2" AS "_col_7", + "wss"."fri_sales" / "x"."fri_sales2" AS "_col_8", + "wss"."sat_sales" / "x"."sat_sales2" AS "_col_9" +FROM "wss" +JOIN "store" AS "store" + ON "wss"."ss_store_sk" = "store"."s_store_sk" +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_month_seq" <= 1207 + AND "date_dim"."d_month_seq" >= 1196 + AND "date_dim"."d_week_seq" = "wss"."d_week_seq" +JOIN "x" AS "x" + ON "store"."s_store_id" = "x"."s_store_id2" + AND "wss"."d_week_seq" = "x"."d_week_seq2" - 52 +ORDER BY + "s_store_name1", + "s_store_id1", + "d_week_seq1" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 60 +-------------------------------------- +WITH ss + AS (SELECT i_item_id, + Sum(ss_ext_sales_price) total_sales + FROM store_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN (SELECT i_item_id + FROM item + WHERE i_category IN ( 'Jewelry' )) + AND ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 1999 + AND d_moy = 8 + AND ss_addr_sk = ca_address_sk + AND ca_gmt_offset = -6 + GROUP BY i_item_id), + cs + AS (SELECT i_item_id, + Sum(cs_ext_sales_price) total_sales + FROM catalog_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN (SELECT i_item_id + FROM item + WHERE i_category IN ( 'Jewelry' )) + AND cs_item_sk = i_item_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 1999 + AND d_moy = 8 + AND cs_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -6 + GROUP BY i_item_id), + ws + AS (SELECT i_item_id, + Sum(ws_ext_sales_price) total_sales + FROM web_sales, + date_dim, + customer_address, + item + WHERE i_item_id IN (SELECT i_item_id + FROM item + WHERE i_category IN ( 'Jewelry' )) + AND ws_item_sk = i_item_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 1999 + AND d_moy = 8 + AND ws_bill_addr_sk = ca_address_sk + AND ca_gmt_offset = -6 + GROUP BY i_item_id) +SELECT i_item_id, + Sum(total_sales) total_sales +FROM (SELECT * + FROM ss + UNION ALL + SELECT * + FROM cs + UNION ALL + SELECT * + FROM ws) tmp1 +GROUP BY i_item_id +ORDER BY i_item_id, + total_sales +LIMIT 100; +WITH "item_2" AS ( + SELECT + "item"."i_item_sk" AS "i_item_sk", + "item"."i_item_id" AS "i_item_id" + FROM "item" AS "item" +), "_u_0" AS ( + SELECT + "item"."i_item_id" AS "i_item_id" + FROM "item" AS "item" + WHERE + "item"."i_category" IN ('Jewelry') + GROUP BY + "item"."i_item_id" +), "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_year" AS "d_year", + "date_dim"."d_moy" AS "d_moy" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_moy" = 8 AND "date_dim"."d_year" = 1999 +), "customer_address_2" AS ( + SELECT + "customer_address"."ca_address_sk" AS "ca_address_sk", + "customer_address"."ca_gmt_offset" AS "ca_gmt_offset" + FROM "customer_address" AS "customer_address" + WHERE + "customer_address"."ca_gmt_offset" = -6 +), "ss" AS ( + SELECT + "item"."i_item_id" AS "i_item_id", + SUM("store_sales"."ss_ext_sales_price") AS "total_sales" + FROM "store_sales" AS "store_sales" + JOIN "item_2" AS "item" + ON "store_sales"."ss_item_sk" = "item"."i_item_sk" + LEFT JOIN "_u_0" AS "_u_0" + ON "item"."i_item_id" = "_u_0"."i_item_id" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "customer_address_2" AS "customer_address" + ON "store_sales"."ss_addr_sk" = "customer_address"."ca_address_sk" + WHERE + NOT "_u_0"."i_item_id" IS NULL + GROUP BY + "item"."i_item_id" +), "cs" AS ( + SELECT + "item"."i_item_id" AS "i_item_id", + SUM("catalog_sales"."cs_ext_sales_price") AS "total_sales" + FROM "catalog_sales" AS "catalog_sales" + JOIN "item_2" AS "item" + ON "catalog_sales"."cs_item_sk" = "item"."i_item_sk" + LEFT JOIN "_u_0" AS "_u_1" + ON "item"."i_item_id" = "_u_1"."i_item_id" + JOIN "date_dim_2" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "customer_address_2" AS "customer_address" + ON "catalog_sales"."cs_bill_addr_sk" = "customer_address"."ca_address_sk" + WHERE + NOT "_u_1"."i_item_id" IS NULL + GROUP BY + "item"."i_item_id" +), "ws" AS ( + SELECT + "item"."i_item_id" AS "i_item_id", + SUM("web_sales"."ws_ext_sales_price") AS "total_sales" + FROM "web_sales" AS "web_sales" + JOIN "item_2" AS "item" + ON "web_sales"."ws_item_sk" = "item"."i_item_sk" + LEFT JOIN "_u_0" AS "_u_2" + ON "item"."i_item_id" = "_u_2"."i_item_id" + JOIN "date_dim_2" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "customer_address_2" AS "customer_address" + ON "web_sales"."ws_bill_addr_sk" = "customer_address"."ca_address_sk" + WHERE + NOT "_u_2"."i_item_id" IS NULL + GROUP BY + "item"."i_item_id" +), "cte_4" AS ( + SELECT + "cs"."i_item_id" AS "i_item_id", + "cs"."total_sales" AS "total_sales" + FROM "cs" + UNION ALL + SELECT + "ws"."i_item_id" AS "i_item_id", + "ws"."total_sales" AS "total_sales" + FROM "ws" +), "tmp1" AS ( + SELECT + "ss"."i_item_id" AS "i_item_id", + "ss"."total_sales" AS "total_sales" + FROM "ss" + UNION ALL + SELECT + "cte_4"."i_item_id" AS "i_item_id", + "cte_4"."total_sales" AS "total_sales" + FROM "cte_4" AS "cte_4" +) +SELECT + "tmp1"."i_item_id" AS "i_item_id", + SUM("tmp1"."total_sales") AS "total_sales" +FROM "tmp1" AS "tmp1" +GROUP BY + "tmp1"."i_item_id" +ORDER BY + "i_item_id", + "total_sales" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 61 +-------------------------------------- +SELECT promotions, + total, + Cast(promotions AS DECIMAL(15, 4)) / + Cast(total AS DECIMAL(15, 4)) * 100 +FROM (SELECT Sum(ss_ext_sales_price) promotions + FROM store_sales, + store, + promotion, + date_dim, + customer, + customer_address, + item + WHERE ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND ss_promo_sk = p_promo_sk + AND ss_customer_sk = c_customer_sk + AND ca_address_sk = c_current_addr_sk + AND ss_item_sk = i_item_sk + AND ca_gmt_offset = -7 + AND i_category = 'Books' + AND ( p_channel_dmail = 'Y' + OR p_channel_email = 'Y' + OR p_channel_tv = 'Y' ) + AND s_gmt_offset = -7 + AND d_year = 2001 + AND d_moy = 12) promotional_sales, + (SELECT Sum(ss_ext_sales_price) total + FROM store_sales, + store, + date_dim, + customer, + customer_address, + item + WHERE ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND ss_customer_sk = c_customer_sk + AND ca_address_sk = c_current_addr_sk + AND ss_item_sk = i_item_sk + AND ca_gmt_offset = -7 + AND i_category = 'Books' + AND s_gmt_offset = -7 + AND d_year = 2001 + AND d_moy = 12) all_sales +ORDER BY promotions, + total +LIMIT 100; +WITH "store_2" AS ( + SELECT + "store"."s_store_sk" AS "s_store_sk", + "store"."s_gmt_offset" AS "s_gmt_offset" + FROM "store" AS "store" + WHERE + "store"."s_gmt_offset" = -7 +), "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_year" AS "d_year", + "date_dim"."d_moy" AS "d_moy" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_moy" = 12 AND "date_dim"."d_year" = 2001 +), "customer_2" AS ( + SELECT + "customer"."c_customer_sk" AS "c_customer_sk", + "customer"."c_current_addr_sk" AS "c_current_addr_sk" + FROM "customer" AS "customer" +), "customer_address_2" AS ( + SELECT + "customer_address"."ca_address_sk" AS "ca_address_sk", + "customer_address"."ca_gmt_offset" AS "ca_gmt_offset" + FROM "customer_address" AS "customer_address" + WHERE + "customer_address"."ca_gmt_offset" = -7 +), "item_2" AS ( + SELECT + "item"."i_item_sk" AS "i_item_sk", + "item"."i_category" AS "i_category" + FROM "item" AS "item" + WHERE + "item"."i_category" = 'Books' +), "promotional_sales" AS ( + SELECT + SUM("store_sales"."ss_ext_sales_price") AS "promotions" + FROM "store_sales" AS "store_sales" + JOIN "store_2" AS "store" + ON "store_sales"."ss_store_sk" = "store"."s_store_sk" + JOIN "promotion" AS "promotion" + ON ( + "promotion"."p_channel_dmail" = 'Y' + OR "promotion"."p_channel_email" = 'Y' + OR "promotion"."p_channel_tv" = 'Y' + ) + AND "store_sales"."ss_promo_sk" = "promotion"."p_promo_sk" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "customer_2" AS "customer" + ON "store_sales"."ss_customer_sk" = "customer"."c_customer_sk" + JOIN "customer_address_2" AS "customer_address" + ON "customer_address"."ca_address_sk" = "customer"."c_current_addr_sk" + JOIN "item_2" AS "item" + ON "store_sales"."ss_item_sk" = "item"."i_item_sk" +), "all_sales" AS ( + SELECT + SUM("store_sales"."ss_ext_sales_price") AS "total" + FROM "store_sales" AS "store_sales", "store_2" AS "store", "date_dim_2" AS "date_dim", "customer_2" AS "customer", "customer_address_2" AS "customer_address", "item_2" AS "item" + WHERE + "customer_address"."ca_address_sk" = "customer"."c_current_addr_sk" + AND "store_sales"."ss_customer_sk" = "customer"."c_customer_sk" + AND "store_sales"."ss_item_sk" = "item"."i_item_sk" + AND "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + AND "store_sales"."ss_store_sk" = "store"."s_store_sk" +) +SELECT + "promotional_sales"."promotions" AS "promotions", + "all_sales"."total" AS "total", + CAST("promotional_sales"."promotions" AS DECIMAL(15, 4)) / CAST("all_sales"."total" AS DECIMAL(15, 4)) * 100 AS "_col_2" +FROM "promotional_sales" AS "promotional_sales" +CROSS JOIN "all_sales" AS "all_sales" +ORDER BY + "promotions", + "total" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 62 +-------------------------------------- +SELECT Substr(w_warehouse_name, 1, 20), + sm_type, + web_name, + Sum(CASE + WHEN ( ws_ship_date_sk - ws_sold_date_sk <= 30 ) THEN 1 + ELSE 0 + END) AS "30 days", + Sum(CASE + WHEN ( ws_ship_date_sk - ws_sold_date_sk > 30 ) + AND ( ws_ship_date_sk - ws_sold_date_sk <= 60 ) THEN 1 + ELSE 0 + END) AS "31-60 days", + Sum(CASE + WHEN ( ws_ship_date_sk - ws_sold_date_sk > 60 ) + AND ( ws_ship_date_sk - ws_sold_date_sk <= 90 ) THEN 1 + ELSE 0 + END) AS "61-90 days", + Sum(CASE + WHEN ( ws_ship_date_sk - ws_sold_date_sk > 90 ) + AND ( ws_ship_date_sk - ws_sold_date_sk <= 120 ) THEN + 1 + ELSE 0 + END) AS "91-120 days", + Sum(CASE + WHEN ( ws_ship_date_sk - ws_sold_date_sk > 120 ) THEN 1 + ELSE 0 + END) AS ">120 days" +FROM web_sales, + warehouse, + ship_mode, + web_site, + date_dim +WHERE d_month_seq BETWEEN 1222 AND 1222 + 11 + AND ws_ship_date_sk = d_date_sk + AND ws_warehouse_sk = w_warehouse_sk + AND ws_ship_mode_sk = sm_ship_mode_sk + AND ws_web_site_sk = web_site_sk +GROUP BY Substr(w_warehouse_name, 1, 20), + sm_type, + web_name +ORDER BY Substr(w_warehouse_name, 1, 20), + sm_type, + web_name +LIMIT 100; +SELECT + SUBSTR("warehouse"."w_warehouse_name", 1, 20) AS "_col_0", + "ship_mode"."sm_type" AS "sm_type", + "web_site"."web_name" AS "web_name", + SUM( + CASE + WHEN "web_sales"."ws_ship_date_sk" - "web_sales"."ws_sold_date_sk" <= 30 + THEN 1 + ELSE 0 + END + ) AS "30 days", + SUM( + CASE + WHEN "web_sales"."ws_ship_date_sk" - "web_sales"."ws_sold_date_sk" <= 60 + AND "web_sales"."ws_ship_date_sk" - "web_sales"."ws_sold_date_sk" > 30 + THEN 1 + ELSE 0 + END + ) AS "31-60 days", + SUM( + CASE + WHEN "web_sales"."ws_ship_date_sk" - "web_sales"."ws_sold_date_sk" <= 90 + AND "web_sales"."ws_ship_date_sk" - "web_sales"."ws_sold_date_sk" > 60 + THEN 1 + ELSE 0 + END + ) AS "61-90 days", + SUM( + CASE + WHEN "web_sales"."ws_ship_date_sk" - "web_sales"."ws_sold_date_sk" <= 120 + AND "web_sales"."ws_ship_date_sk" - "web_sales"."ws_sold_date_sk" > 90 + THEN 1 + ELSE 0 + END + ) AS "91-120 days", + SUM( + CASE + WHEN "web_sales"."ws_ship_date_sk" - "web_sales"."ws_sold_date_sk" > 120 + THEN 1 + ELSE 0 + END + ) AS ">120 days" +FROM "web_sales" AS "web_sales" +JOIN "warehouse" AS "warehouse" + ON "web_sales"."ws_warehouse_sk" = "warehouse"."w_warehouse_sk" +JOIN "ship_mode" AS "ship_mode" + ON "web_sales"."ws_ship_mode_sk" = "ship_mode"."sm_ship_mode_sk" +JOIN "web_site" AS "web_site" + ON "web_sales"."ws_web_site_sk" = "web_site"."web_site_sk" +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_month_seq" <= 1233 + AND "date_dim"."d_month_seq" >= 1222 + AND "web_sales"."ws_ship_date_sk" = "date_dim"."d_date_sk" +GROUP BY + SUBSTR("warehouse"."w_warehouse_name", 1, 20), + "ship_mode"."sm_type", + "web_site"."web_name" +ORDER BY + SUBSTR("warehouse"."w_warehouse_name", 1, 20), + "sm_type", + "web_name" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 63 +-------------------------------------- +SELECT * +FROM (SELECT i_manager_id, + Sum(ss_sales_price) sum_sales, + Avg(Sum(ss_sales_price)) + OVER ( + partition BY i_manager_id) avg_monthly_sales + FROM item, + store_sales, + date_dim, + store + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_month_seq IN ( 1200, 1200 + 1, 1200 + 2, 1200 + 3, + 1200 + 4, 1200 + 5, 1200 + 6, 1200 + 7, + 1200 + 8, 1200 + 9, 1200 + 10, 1200 + 11 ) + AND ( ( i_category IN ( 'Books', 'Children', 'Electronics' ) + AND i_class IN ( 'personal', 'portable', 'reference', + 'self-help' ) + AND i_brand IN ( 'scholaramalgamalg #14', + 'scholaramalgamalg #7' + , + 'exportiunivamalg #9', + 'scholaramalgamalg #9' ) + ) + OR ( i_category IN ( 'Women', 'Music', 'Men' ) + AND i_class IN ( 'accessories', 'classical', + 'fragrances', + 'pants' ) + AND i_brand IN ( 'amalgimporto #1', + 'edu packscholar #1', + 'exportiimporto #1', + 'importoamalg #1' ) ) ) + GROUP BY i_manager_id, + d_moy) tmp1 +WHERE CASE + WHEN avg_monthly_sales > 0 THEN Abs (sum_sales - avg_monthly_sales) / + avg_monthly_sales + ELSE NULL + END > 0.1 +ORDER BY i_manager_id, + avg_monthly_sales, + sum_sales +LIMIT 100; +WITH "tmp1" AS ( + SELECT + "item"."i_manager_id" AS "i_manager_id", + SUM("store_sales"."ss_sales_price") AS "sum_sales", + AVG(SUM("store_sales"."ss_sales_price")) OVER (PARTITION BY "item"."i_manager_id") AS "avg_monthly_sales" + FROM "item" AS "item" + JOIN "store_sales" AS "store_sales" + ON "store_sales"."ss_item_sk" = "item"."i_item_sk" + JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_month_seq" IN (1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211) + AND "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "store" AS "store" + ON "store_sales"."ss_store_sk" = "store"."s_store_sk" + WHERE + ( + "item"."i_brand" IN ('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'importoamalg #1') + OR "item"."i_brand" IN ('scholaramalgamalg #14', 'scholaramalgamalg #7', 'exportiunivamalg #9', 'scholaramalgamalg #9') + ) + AND ( + "item"."i_brand" IN ('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'importoamalg #1') + OR "item"."i_category" IN ('Books', 'Children', 'Electronics') + ) + AND ( + "item"."i_brand" IN ('amalgimporto #1', 'edu packscholar #1', 'exportiimporto #1', 'importoamalg #1') + OR "item"."i_class" IN ('personal', 'portable', 'reference', 'self-help') + ) + AND ( + "item"."i_category" IN ('Books', 'Children', 'Electronics') + OR "item"."i_category" IN ('Women', 'Music', 'Men') + ) + AND ( + "item"."i_category" IN ('Books', 'Children', 'Electronics') + OR "item"."i_class" IN ('accessories', 'classical', 'fragrances', 'pants') + ) + AND ( + "item"."i_category" IN ('Women', 'Music', 'Men') + OR "item"."i_class" IN ('personal', 'portable', 'reference', 'self-help') + ) + AND ( + "item"."i_class" IN ('accessories', 'classical', 'fragrances', 'pants') + OR "item"."i_class" IN ('personal', 'portable', 'reference', 'self-help') + ) + GROUP BY + "item"."i_manager_id", + "date_dim"."d_moy" +) +SELECT + "tmp1"."i_manager_id" AS "i_manager_id", + "tmp1"."sum_sales" AS "sum_sales", + "tmp1"."avg_monthly_sales" AS "avg_monthly_sales" +FROM "tmp1" AS "tmp1" +WHERE + CASE + WHEN "tmp1"."avg_monthly_sales" > 0 + THEN ABS("tmp1"."sum_sales" - "tmp1"."avg_monthly_sales") / "tmp1"."avg_monthly_sales" + ELSE NULL + END > 0.1 +ORDER BY + "tmp1"."i_manager_id", + "tmp1"."avg_monthly_sales", + "tmp1"."sum_sales" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 64 +-------------------------------------- +WITH cs_ui + AS (SELECT cs_item_sk, + Sum(cs_ext_list_price) AS sale, + Sum(cr_refunded_cash + cr_reversed_charge + + cr_store_credit) AS refund + FROM catalog_sales, + catalog_returns + WHERE cs_item_sk = cr_item_sk + AND cs_order_number = cr_order_number + GROUP BY cs_item_sk + HAVING Sum(cs_ext_list_price) > 2 * Sum( + cr_refunded_cash + cr_reversed_charge + + cr_store_credit)), + cross_sales + AS (SELECT i_product_name product_name, + i_item_sk item_sk, + s_store_name store_name, + s_zip store_zip, + ad1.ca_street_number b_street_number, + ad1.ca_street_name b_streen_name, + ad1.ca_city b_city, + ad1.ca_zip b_zip, + ad2.ca_street_number c_street_number, + ad2.ca_street_name c_street_name, + ad2.ca_city c_city, + ad2.ca_zip c_zip, + d1.d_year AS syear, + d2.d_year AS fsyear, + d3.d_year s2year, + Count(*) cnt, + Sum(ss_wholesale_cost) s1, + Sum(ss_list_price) s2, + Sum(ss_coupon_amt) s3 + FROM store_sales, + store_returns, + cs_ui, + date_dim d1, + date_dim d2, + date_dim d3, + store, + customer, + customer_demographics cd1, + customer_demographics cd2, + promotion, + household_demographics hd1, + household_demographics hd2, + customer_address ad1, + customer_address ad2, + income_band ib1, + income_band ib2, + item + WHERE ss_store_sk = s_store_sk + AND ss_sold_date_sk = d1.d_date_sk + AND ss_customer_sk = c_customer_sk + AND ss_cdemo_sk = cd1.cd_demo_sk + AND ss_hdemo_sk = hd1.hd_demo_sk + AND ss_addr_sk = ad1.ca_address_sk + AND ss_item_sk = i_item_sk + AND ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number + AND ss_item_sk = cs_ui.cs_item_sk + AND c_current_cdemo_sk = cd2.cd_demo_sk + AND c_current_hdemo_sk = hd2.hd_demo_sk + AND c_current_addr_sk = ad2.ca_address_sk + AND c_first_sales_date_sk = d2.d_date_sk + AND c_first_shipto_date_sk = d3.d_date_sk + AND ss_promo_sk = p_promo_sk + AND hd1.hd_income_band_sk = ib1.ib_income_band_sk + AND hd2.hd_income_band_sk = ib2.ib_income_band_sk + AND cd1.cd_marital_status <> cd2.cd_marital_status + AND i_color IN ( 'cyan', 'peach', 'blush', 'frosted', + 'powder', 'orange' ) + AND i_current_price BETWEEN 58 AND 58 + 10 + AND i_current_price BETWEEN 58 + 1 AND 58 + 15 + GROUP BY i_product_name, + i_item_sk, + s_store_name, + s_zip, + ad1.ca_street_number, + ad1.ca_street_name, + ad1.ca_city, + ad1.ca_zip, + ad2.ca_street_number, + ad2.ca_street_name, + ad2.ca_city, + ad2.ca_zip, + d1.d_year, + d2.d_year, + d3.d_year) +SELECT cs1.product_name, + cs1.store_name, + cs1.store_zip, + cs1.b_street_number, + cs1.b_streen_name, + cs1.b_city, + cs1.b_zip, + cs1.c_street_number, + cs1.c_street_name, + cs1.c_city, + cs1.c_zip, + cs1.syear, + cs1.cnt, + cs1.s1, + cs1.s2, + cs1.s3, + cs2.s1, + cs2.s2, + cs2.s3, + cs2.syear, + cs2.cnt +FROM cross_sales cs1, + cross_sales cs2 +WHERE cs1.item_sk = cs2.item_sk + AND cs1.syear = 2001 + AND cs2.syear = 2001 + 1 + AND cs2.cnt <= cs1.cnt + AND cs1.store_name = cs2.store_name + AND cs1.store_zip = cs2.store_zip +ORDER BY cs1.product_name, + cs1.store_name, + cs2.cnt; +WITH "cs_ui" AS ( + SELECT + "catalog_sales"."cs_item_sk" AS "cs_item_sk" + FROM "catalog_sales" AS "catalog_sales" + JOIN "catalog_returns" AS "catalog_returns" + ON "catalog_sales"."cs_item_sk" = "catalog_returns"."cr_item_sk" + AND "catalog_sales"."cs_order_number" = "catalog_returns"."cr_order_number" + GROUP BY + "catalog_sales"."cs_item_sk" + HAVING + SUM("catalog_sales"."cs_ext_list_price") > 2 * SUM( + "catalog_returns"."cr_refunded_cash" + "catalog_returns"."cr_reversed_charge" + "catalog_returns"."cr_store_credit" + ) +), "d1" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_year" AS "d_year" + FROM "date_dim" AS "date_dim" +), "ib2" AS ( + SELECT + "income_band"."ib_income_band_sk" AS "ib_income_band_sk" + FROM "income_band" AS "income_band" +), "hd2" AS ( + SELECT + "household_demographics"."hd_demo_sk" AS "hd_demo_sk", + "household_demographics"."hd_income_band_sk" AS "hd_income_band_sk" + FROM "household_demographics" AS "household_demographics" +), "cd1" AS ( + SELECT + "customer_demographics"."cd_demo_sk" AS "cd_demo_sk", + "customer_demographics"."cd_marital_status" AS "cd_marital_status" + FROM "customer_demographics" AS "customer_demographics" +), "ad1" AS ( + SELECT + "customer_address"."ca_address_sk" AS "ca_address_sk", + "customer_address"."ca_street_number" AS "ca_street_number", + "customer_address"."ca_street_name" AS "ca_street_name", + "customer_address"."ca_city" AS "ca_city", + "customer_address"."ca_zip" AS "ca_zip" + FROM "customer_address" AS "customer_address" +), "cross_sales" AS ( + SELECT + "item"."i_product_name" AS "product_name", + "item"."i_item_sk" AS "item_sk", + "store"."s_store_name" AS "store_name", + "store"."s_zip" AS "store_zip", + "ad1"."ca_street_number" AS "b_street_number", + "ad1"."ca_street_name" AS "b_streen_name", + "ad1"."ca_city" AS "b_city", + "ad1"."ca_zip" AS "b_zip", + "ad2"."ca_street_number" AS "c_street_number", + "ad2"."ca_street_name" AS "c_street_name", + "ad2"."ca_city" AS "c_city", + "ad2"."ca_zip" AS "c_zip", + "d1"."d_year" AS "syear", + COUNT(*) AS "cnt", + SUM("store_sales"."ss_wholesale_cost") AS "s1", + SUM("store_sales"."ss_list_price") AS "s2", + SUM("store_sales"."ss_coupon_amt") AS "s3" + FROM "store_sales" AS "store_sales" + JOIN "store_returns" AS "store_returns" + ON "store_sales"."ss_item_sk" = "store_returns"."sr_item_sk" + AND "store_sales"."ss_ticket_number" = "store_returns"."sr_ticket_number" + JOIN "cs_ui" + ON "store_sales"."ss_item_sk" = "cs_ui"."cs_item_sk" + JOIN "d1" AS "d1" + ON "store_sales"."ss_sold_date_sk" = "d1"."d_date_sk" + CROSS JOIN "ib2" AS "ib2" + JOIN "hd2" AS "hd2" + ON "hd2"."hd_income_band_sk" = "ib2"."ib_income_band_sk" + JOIN "customer" AS "customer" + ON "customer"."c_current_hdemo_sk" = "hd2"."hd_demo_sk" + AND "store_sales"."ss_customer_sk" = "customer"."c_customer_sk" + JOIN "d1" AS "d2" + ON "customer"."c_first_sales_date_sk" = "d2"."d_date_sk" + JOIN "d1" AS "d3" + ON "customer"."c_first_shipto_date_sk" = "d3"."d_date_sk" + JOIN "store" AS "store" + ON "store_sales"."ss_store_sk" = "store"."s_store_sk" + JOIN "cd1" AS "cd1" + ON "store_sales"."ss_cdemo_sk" = "cd1"."cd_demo_sk" + JOIN "cd1" AS "cd2" + ON "cd1"."cd_marital_status" <> "cd2"."cd_marital_status" + AND "customer"."c_current_cdemo_sk" = "cd2"."cd_demo_sk" + JOIN "promotion" AS "promotion" + ON "store_sales"."ss_promo_sk" = "promotion"."p_promo_sk" + JOIN "hd2" AS "hd1" + ON "store_sales"."ss_hdemo_sk" = "hd1"."hd_demo_sk" + JOIN "ad1" AS "ad1" + ON "store_sales"."ss_addr_sk" = "ad1"."ca_address_sk" + JOIN "ad1" AS "ad2" + ON "customer"."c_current_addr_sk" = "ad2"."ca_address_sk" + JOIN "ib2" AS "ib1" + ON "hd1"."hd_income_band_sk" = "ib1"."ib_income_band_sk" + JOIN "item" AS "item" + ON "item"."i_color" IN ('cyan', 'peach', 'blush', 'frosted', 'powder', 'orange') + AND "item"."i_current_price" <= 68 + AND "item"."i_current_price" >= 59 + AND "store_sales"."ss_item_sk" = "item"."i_item_sk" + GROUP BY + "item"."i_product_name", + "item"."i_item_sk", + "store"."s_store_name", + "store"."s_zip", + "ad1"."ca_street_number", + "ad1"."ca_street_name", + "ad1"."ca_city", + "ad1"."ca_zip", + "ad2"."ca_street_number", + "ad2"."ca_street_name", + "ad2"."ca_city", + "ad2"."ca_zip", + "d1"."d_year", + "d2"."d_year", + "d3"."d_year" +) +SELECT + "cs1"."product_name" AS "product_name", + "cs1"."store_name" AS "store_name", + "cs1"."store_zip" AS "store_zip", + "cs1"."b_street_number" AS "b_street_number", + "cs1"."b_streen_name" AS "b_streen_name", + "cs1"."b_city" AS "b_city", + "cs1"."b_zip" AS "b_zip", + "cs1"."c_street_number" AS "c_street_number", + "cs1"."c_street_name" AS "c_street_name", + "cs1"."c_city" AS "c_city", + "cs1"."c_zip" AS "c_zip", + "cs1"."syear" AS "syear", + "cs1"."cnt" AS "cnt", + "cs1"."s1" AS "s1", + "cs1"."s2" AS "s2", + "cs1"."s3" AS "s3", + "cs2"."s1" AS "s1", + "cs2"."s2" AS "s2", + "cs2"."s3" AS "s3", + "cs2"."syear" AS "syear", + "cs2"."cnt" AS "cnt" +FROM "cross_sales" AS "cs1" +JOIN "cross_sales" AS "cs2" + ON "cs1"."item_sk" = "cs2"."item_sk" + AND "cs1"."store_name" = "cs2"."store_name" + AND "cs1"."store_zip" = "cs2"."store_zip" + AND "cs2"."cnt" <= "cs1"."cnt" + AND "cs2"."syear" = 2002 +WHERE + "cs1"."syear" = 2001 +ORDER BY + "cs1"."product_name", + "cs1"."store_name", + "cs2"."cnt"; + +-------------------------------------- +-- TPC-DS 66 +-------------------------------------- +SELECT w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + ship_carriers, + year1, + Sum(jan_sales) AS jan_sales, + Sum(feb_sales) AS feb_sales, + Sum(mar_sales) AS mar_sales, + Sum(apr_sales) AS apr_sales, + Sum(may_sales) AS may_sales, + Sum(jun_sales) AS jun_sales, + Sum(jul_sales) AS jul_sales, + Sum(aug_sales) AS aug_sales, + Sum(sep_sales) AS sep_sales, + Sum(oct_sales) AS oct_sales, + Sum(nov_sales) AS nov_sales, + Sum(dec_sales) AS dec_sales, + Sum(jan_sales / w_warehouse_sq_ft) AS jan_sales_per_sq_foot, + Sum(feb_sales / w_warehouse_sq_ft) AS feb_sales_per_sq_foot, + Sum(mar_sales / w_warehouse_sq_ft) AS mar_sales_per_sq_foot, + Sum(apr_sales / w_warehouse_sq_ft) AS apr_sales_per_sq_foot, + Sum(may_sales / w_warehouse_sq_ft) AS may_sales_per_sq_foot, + Sum(jun_sales / w_warehouse_sq_ft) AS jun_sales_per_sq_foot, + Sum(jul_sales / w_warehouse_sq_ft) AS jul_sales_per_sq_foot, + Sum(aug_sales / w_warehouse_sq_ft) AS aug_sales_per_sq_foot, + Sum(sep_sales / w_warehouse_sq_ft) AS sep_sales_per_sq_foot, + Sum(oct_sales / w_warehouse_sq_ft) AS oct_sales_per_sq_foot, + Sum(nov_sales / w_warehouse_sq_ft) AS nov_sales_per_sq_foot, + Sum(dec_sales / w_warehouse_sq_ft) AS dec_sales_per_sq_foot, + Sum(jan_net) AS jan_net, + Sum(feb_net) AS feb_net, + Sum(mar_net) AS mar_net, + Sum(apr_net) AS apr_net, + Sum(may_net) AS may_net, + Sum(jun_net) AS jun_net, + Sum(jul_net) AS jul_net, + Sum(aug_net) AS aug_net, + Sum(sep_net) AS sep_net, + Sum(oct_net) AS oct_net, + Sum(nov_net) AS nov_net, + Sum(dec_net) AS dec_net +FROM (SELECT w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + 'ZOUROS' + || ',' + || 'ZHOU' AS ship_carriers, + d_year AS year1, + Sum(CASE + WHEN d_moy = 1 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS jan_sales, + Sum(CASE + WHEN d_moy = 2 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS feb_sales, + Sum(CASE + WHEN d_moy = 3 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS mar_sales, + Sum(CASE + WHEN d_moy = 4 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS apr_sales, + Sum(CASE + WHEN d_moy = 5 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS may_sales, + Sum(CASE + WHEN d_moy = 6 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS jun_sales, + Sum(CASE + WHEN d_moy = 7 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS jul_sales, + Sum(CASE + WHEN d_moy = 8 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS aug_sales, + Sum(CASE + WHEN d_moy = 9 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS sep_sales, + Sum(CASE + WHEN d_moy = 10 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS oct_sales, + Sum(CASE + WHEN d_moy = 11 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS nov_sales, + Sum(CASE + WHEN d_moy = 12 THEN ws_ext_sales_price * ws_quantity + ELSE 0 + END) AS dec_sales, + Sum(CASE + WHEN d_moy = 1 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS jan_net, + Sum(CASE + WHEN d_moy = 2 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS feb_net, + Sum(CASE + WHEN d_moy = 3 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS mar_net, + Sum(CASE + WHEN d_moy = 4 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS apr_net, + Sum(CASE + WHEN d_moy = 5 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS may_net, + Sum(CASE + WHEN d_moy = 6 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS jun_net, + Sum(CASE + WHEN d_moy = 7 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS jul_net, + Sum(CASE + WHEN d_moy = 8 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS aug_net, + Sum(CASE + WHEN d_moy = 9 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS sep_net, + Sum(CASE + WHEN d_moy = 10 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS oct_net, + Sum(CASE + WHEN d_moy = 11 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS nov_net, + Sum(CASE + WHEN d_moy = 12 THEN ws_net_paid_inc_ship * ws_quantity + ELSE 0 + END) AS dec_net + FROM web_sales, + warehouse, + date_dim, + time_dim, + ship_mode + WHERE ws_warehouse_sk = w_warehouse_sk + AND ws_sold_date_sk = d_date_sk + AND ws_sold_time_sk = t_time_sk + AND ws_ship_mode_sk = sm_ship_mode_sk + AND d_year = 1998 + AND t_time BETWEEN 7249 AND 7249 + 28800 + AND sm_carrier IN ( 'ZOUROS', 'ZHOU' ) + GROUP BY w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + d_year + UNION ALL + SELECT w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + 'ZOUROS' + || ',' + || 'ZHOU' AS ship_carriers, + d_year AS year1, + Sum(CASE + WHEN d_moy = 1 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS jan_sales, + Sum(CASE + WHEN d_moy = 2 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS feb_sales, + Sum(CASE + WHEN d_moy = 3 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS mar_sales, + Sum(CASE + WHEN d_moy = 4 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS apr_sales, + Sum(CASE + WHEN d_moy = 5 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS may_sales, + Sum(CASE + WHEN d_moy = 6 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS jun_sales, + Sum(CASE + WHEN d_moy = 7 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS jul_sales, + Sum(CASE + WHEN d_moy = 8 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS aug_sales, + Sum(CASE + WHEN d_moy = 9 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS sep_sales, + Sum(CASE + WHEN d_moy = 10 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS oct_sales, + Sum(CASE + WHEN d_moy = 11 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS nov_sales, + Sum(CASE + WHEN d_moy = 12 THEN cs_ext_sales_price * cs_quantity + ELSE 0 + END) AS dec_sales, + Sum(CASE + WHEN d_moy = 1 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS jan_net, + Sum(CASE + WHEN d_moy = 2 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS feb_net, + Sum(CASE + WHEN d_moy = 3 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS mar_net, + Sum(CASE + WHEN d_moy = 4 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS apr_net, + Sum(CASE + WHEN d_moy = 5 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS may_net, + Sum(CASE + WHEN d_moy = 6 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS jun_net, + Sum(CASE + WHEN d_moy = 7 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS jul_net, + Sum(CASE + WHEN d_moy = 8 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS aug_net, + Sum(CASE + WHEN d_moy = 9 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS sep_net, + Sum(CASE + WHEN d_moy = 10 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS oct_net, + Sum(CASE + WHEN d_moy = 11 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS nov_net, + Sum(CASE + WHEN d_moy = 12 THEN cs_net_paid * cs_quantity + ELSE 0 + END) AS dec_net + FROM catalog_sales, + warehouse, + date_dim, + time_dim, + ship_mode + WHERE cs_warehouse_sk = w_warehouse_sk + AND cs_sold_date_sk = d_date_sk + AND cs_sold_time_sk = t_time_sk + AND cs_ship_mode_sk = sm_ship_mode_sk + AND d_year = 1998 + AND t_time BETWEEN 7249 AND 7249 + 28800 + AND sm_carrier IN ( 'ZOUROS', 'ZHOU' ) + GROUP BY w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + d_year) x +GROUP BY w_warehouse_name, + w_warehouse_sq_ft, + w_city, + w_county, + w_state, + w_country, + ship_carriers, + year1 +ORDER BY w_warehouse_name +LIMIT 100; +WITH "warehouse_2" AS ( + SELECT + "warehouse"."w_warehouse_sk" AS "w_warehouse_sk", + "warehouse"."w_warehouse_name" AS "w_warehouse_name", + "warehouse"."w_warehouse_sq_ft" AS "w_warehouse_sq_ft", + "warehouse"."w_city" AS "w_city", + "warehouse"."w_county" AS "w_county", + "warehouse"."w_state" AS "w_state", + "warehouse"."w_country" AS "w_country" + FROM "warehouse" AS "warehouse" +), "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_year" AS "d_year", + "date_dim"."d_moy" AS "d_moy" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_year" = 1998 +), "time_dim_2" AS ( + SELECT + "time_dim"."t_time_sk" AS "t_time_sk", + "time_dim"."t_time" AS "t_time" + FROM "time_dim" AS "time_dim" + WHERE + "time_dim"."t_time" <= 36049 AND "time_dim"."t_time" >= 7249 +), "ship_mode_2" AS ( + SELECT + "ship_mode"."sm_ship_mode_sk" AS "sm_ship_mode_sk", + "ship_mode"."sm_carrier" AS "sm_carrier" + FROM "ship_mode" AS "ship_mode" + WHERE + "ship_mode"."sm_carrier" IN ('ZOUROS', 'ZHOU') +), "cte" AS ( + SELECT + "warehouse"."w_warehouse_name" AS "w_warehouse_name", + "warehouse"."w_warehouse_sq_ft" AS "w_warehouse_sq_ft", + "warehouse"."w_city" AS "w_city", + "warehouse"."w_county" AS "w_county", + "warehouse"."w_state" AS "w_state", + "warehouse"."w_country" AS "w_country", + 'ZOUROS' || ',' || 'ZHOU' AS "ship_carriers", + "date_dim"."d_year" AS "year1", + SUM( + CASE + WHEN "date_dim"."d_moy" = 1 + THEN "web_sales"."ws_ext_sales_price" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "jan_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 2 + THEN "web_sales"."ws_ext_sales_price" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "feb_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 3 + THEN "web_sales"."ws_ext_sales_price" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "mar_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 4 + THEN "web_sales"."ws_ext_sales_price" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "apr_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 5 + THEN "web_sales"."ws_ext_sales_price" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "may_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 6 + THEN "web_sales"."ws_ext_sales_price" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "jun_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 7 + THEN "web_sales"."ws_ext_sales_price" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "jul_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 8 + THEN "web_sales"."ws_ext_sales_price" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "aug_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 9 + THEN "web_sales"."ws_ext_sales_price" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "sep_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 10 + THEN "web_sales"."ws_ext_sales_price" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "oct_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 11 + THEN "web_sales"."ws_ext_sales_price" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "nov_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 12 + THEN "web_sales"."ws_ext_sales_price" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "dec_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 1 + THEN "web_sales"."ws_net_paid_inc_ship" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "jan_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 2 + THEN "web_sales"."ws_net_paid_inc_ship" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "feb_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 3 + THEN "web_sales"."ws_net_paid_inc_ship" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "mar_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 4 + THEN "web_sales"."ws_net_paid_inc_ship" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "apr_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 5 + THEN "web_sales"."ws_net_paid_inc_ship" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "may_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 6 + THEN "web_sales"."ws_net_paid_inc_ship" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "jun_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 7 + THEN "web_sales"."ws_net_paid_inc_ship" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "jul_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 8 + THEN "web_sales"."ws_net_paid_inc_ship" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "aug_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 9 + THEN "web_sales"."ws_net_paid_inc_ship" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "sep_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 10 + THEN "web_sales"."ws_net_paid_inc_ship" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "oct_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 11 + THEN "web_sales"."ws_net_paid_inc_ship" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "nov_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 12 + THEN "web_sales"."ws_net_paid_inc_ship" * "web_sales"."ws_quantity" + ELSE 0 + END + ) AS "dec_net" + FROM "web_sales" AS "web_sales" + JOIN "warehouse_2" AS "warehouse" + ON "web_sales"."ws_warehouse_sk" = "warehouse"."w_warehouse_sk" + JOIN "date_dim_2" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "time_dim_2" AS "time_dim" + ON "web_sales"."ws_sold_time_sk" = "time_dim"."t_time_sk" + JOIN "ship_mode_2" AS "ship_mode" + ON "web_sales"."ws_ship_mode_sk" = "ship_mode"."sm_ship_mode_sk" + GROUP BY + "warehouse"."w_warehouse_name", + "warehouse"."w_warehouse_sq_ft", + "warehouse"."w_city", + "warehouse"."w_county", + "warehouse"."w_state", + "warehouse"."w_country", + "date_dim"."d_year" +), "cte_2" AS ( + SELECT + "warehouse"."w_warehouse_name" AS "w_warehouse_name", + "warehouse"."w_warehouse_sq_ft" AS "w_warehouse_sq_ft", + "warehouse"."w_city" AS "w_city", + "warehouse"."w_county" AS "w_county", + "warehouse"."w_state" AS "w_state", + "warehouse"."w_country" AS "w_country", + 'ZOUROS' || ',' || 'ZHOU' AS "ship_carriers", + "date_dim"."d_year" AS "year1", + SUM( + CASE + WHEN "date_dim"."d_moy" = 1 + THEN "catalog_sales"."cs_ext_sales_price" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "jan_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 2 + THEN "catalog_sales"."cs_ext_sales_price" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "feb_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 3 + THEN "catalog_sales"."cs_ext_sales_price" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "mar_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 4 + THEN "catalog_sales"."cs_ext_sales_price" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "apr_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 5 + THEN "catalog_sales"."cs_ext_sales_price" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "may_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 6 + THEN "catalog_sales"."cs_ext_sales_price" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "jun_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 7 + THEN "catalog_sales"."cs_ext_sales_price" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "jul_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 8 + THEN "catalog_sales"."cs_ext_sales_price" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "aug_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 9 + THEN "catalog_sales"."cs_ext_sales_price" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "sep_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 10 + THEN "catalog_sales"."cs_ext_sales_price" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "oct_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 11 + THEN "catalog_sales"."cs_ext_sales_price" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "nov_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 12 + THEN "catalog_sales"."cs_ext_sales_price" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "dec_sales", + SUM( + CASE + WHEN "date_dim"."d_moy" = 1 + THEN "catalog_sales"."cs_net_paid" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "jan_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 2 + THEN "catalog_sales"."cs_net_paid" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "feb_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 3 + THEN "catalog_sales"."cs_net_paid" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "mar_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 4 + THEN "catalog_sales"."cs_net_paid" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "apr_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 5 + THEN "catalog_sales"."cs_net_paid" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "may_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 6 + THEN "catalog_sales"."cs_net_paid" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "jun_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 7 + THEN "catalog_sales"."cs_net_paid" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "jul_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 8 + THEN "catalog_sales"."cs_net_paid" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "aug_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 9 + THEN "catalog_sales"."cs_net_paid" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "sep_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 10 + THEN "catalog_sales"."cs_net_paid" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "oct_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 11 + THEN "catalog_sales"."cs_net_paid" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "nov_net", + SUM( + CASE + WHEN "date_dim"."d_moy" = 12 + THEN "catalog_sales"."cs_net_paid" * "catalog_sales"."cs_quantity" + ELSE 0 + END + ) AS "dec_net" + FROM "catalog_sales" AS "catalog_sales" + JOIN "warehouse_2" AS "warehouse" + ON "catalog_sales"."cs_warehouse_sk" = "warehouse"."w_warehouse_sk" + JOIN "date_dim_2" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "time_dim_2" AS "time_dim" + ON "catalog_sales"."cs_sold_time_sk" = "time_dim"."t_time_sk" + JOIN "ship_mode_2" AS "ship_mode" + ON "catalog_sales"."cs_ship_mode_sk" = "ship_mode"."sm_ship_mode_sk" + GROUP BY + "warehouse"."w_warehouse_name", + "warehouse"."w_warehouse_sq_ft", + "warehouse"."w_city", + "warehouse"."w_county", + "warehouse"."w_state", + "warehouse"."w_country", + "date_dim"."d_year" +), "x" AS ( + SELECT + "cte"."w_warehouse_name" AS "w_warehouse_name", + "cte"."w_warehouse_sq_ft" AS "w_warehouse_sq_ft", + "cte"."w_city" AS "w_city", + "cte"."w_county" AS "w_county", + "cte"."w_state" AS "w_state", + "cte"."w_country" AS "w_country", + "cte"."ship_carriers" AS "ship_carriers", + "cte"."year1" AS "year1", + "cte"."jan_sales" AS "jan_sales", + "cte"."feb_sales" AS "feb_sales", + "cte"."mar_sales" AS "mar_sales", + "cte"."apr_sales" AS "apr_sales", + "cte"."may_sales" AS "may_sales", + "cte"."jun_sales" AS "jun_sales", + "cte"."jul_sales" AS "jul_sales", + "cte"."aug_sales" AS "aug_sales", + "cte"."sep_sales" AS "sep_sales", + "cte"."oct_sales" AS "oct_sales", + "cte"."nov_sales" AS "nov_sales", + "cte"."dec_sales" AS "dec_sales", + "cte"."jan_net" AS "jan_net", + "cte"."feb_net" AS "feb_net", + "cte"."mar_net" AS "mar_net", + "cte"."apr_net" AS "apr_net", + "cte"."may_net" AS "may_net", + "cte"."jun_net" AS "jun_net", + "cte"."jul_net" AS "jul_net", + "cte"."aug_net" AS "aug_net", + "cte"."sep_net" AS "sep_net", + "cte"."oct_net" AS "oct_net", + "cte"."nov_net" AS "nov_net", + "cte"."dec_net" AS "dec_net" + FROM "cte" AS "cte" + UNION ALL + SELECT + "cte_2"."w_warehouse_name" AS "w_warehouse_name", + "cte_2"."w_warehouse_sq_ft" AS "w_warehouse_sq_ft", + "cte_2"."w_city" AS "w_city", + "cte_2"."w_county" AS "w_county", + "cte_2"."w_state" AS "w_state", + "cte_2"."w_country" AS "w_country", + "cte_2"."ship_carriers" AS "ship_carriers", + "cte_2"."year1" AS "year1", + "cte_2"."jan_sales" AS "jan_sales", + "cte_2"."feb_sales" AS "feb_sales", + "cte_2"."mar_sales" AS "mar_sales", + "cte_2"."apr_sales" AS "apr_sales", + "cte_2"."may_sales" AS "may_sales", + "cte_2"."jun_sales" AS "jun_sales", + "cte_2"."jul_sales" AS "jul_sales", + "cte_2"."aug_sales" AS "aug_sales", + "cte_2"."sep_sales" AS "sep_sales", + "cte_2"."oct_sales" AS "oct_sales", + "cte_2"."nov_sales" AS "nov_sales", + "cte_2"."dec_sales" AS "dec_sales", + "cte_2"."jan_net" AS "jan_net", + "cte_2"."feb_net" AS "feb_net", + "cte_2"."mar_net" AS "mar_net", + "cte_2"."apr_net" AS "apr_net", + "cte_2"."may_net" AS "may_net", + "cte_2"."jun_net" AS "jun_net", + "cte_2"."jul_net" AS "jul_net", + "cte_2"."aug_net" AS "aug_net", + "cte_2"."sep_net" AS "sep_net", + "cte_2"."oct_net" AS "oct_net", + "cte_2"."nov_net" AS "nov_net", + "cte_2"."dec_net" AS "dec_net" + FROM "cte_2" AS "cte_2" +) +SELECT + "x"."w_warehouse_name" AS "w_warehouse_name", + "x"."w_warehouse_sq_ft" AS "w_warehouse_sq_ft", + "x"."w_city" AS "w_city", + "x"."w_county" AS "w_county", + "x"."w_state" AS "w_state", + "x"."w_country" AS "w_country", + "x"."ship_carriers" AS "ship_carriers", + "x"."year1" AS "year1", + SUM("x"."jan_sales") AS "jan_sales", + SUM("x"."feb_sales") AS "feb_sales", + SUM("x"."mar_sales") AS "mar_sales", + SUM("x"."apr_sales") AS "apr_sales", + SUM("x"."may_sales") AS "may_sales", + SUM("x"."jun_sales") AS "jun_sales", + SUM("x"."jul_sales") AS "jul_sales", + SUM("x"."aug_sales") AS "aug_sales", + SUM("x"."sep_sales") AS "sep_sales", + SUM("x"."oct_sales") AS "oct_sales", + SUM("x"."nov_sales") AS "nov_sales", + SUM("x"."dec_sales") AS "dec_sales", + SUM("x"."jan_sales" / "x"."w_warehouse_sq_ft") AS "jan_sales_per_sq_foot", + SUM("x"."feb_sales" / "x"."w_warehouse_sq_ft") AS "feb_sales_per_sq_foot", + SUM("x"."mar_sales" / "x"."w_warehouse_sq_ft") AS "mar_sales_per_sq_foot", + SUM("x"."apr_sales" / "x"."w_warehouse_sq_ft") AS "apr_sales_per_sq_foot", + SUM("x"."may_sales" / "x"."w_warehouse_sq_ft") AS "may_sales_per_sq_foot", + SUM("x"."jun_sales" / "x"."w_warehouse_sq_ft") AS "jun_sales_per_sq_foot", + SUM("x"."jul_sales" / "x"."w_warehouse_sq_ft") AS "jul_sales_per_sq_foot", + SUM("x"."aug_sales" / "x"."w_warehouse_sq_ft") AS "aug_sales_per_sq_foot", + SUM("x"."sep_sales" / "x"."w_warehouse_sq_ft") AS "sep_sales_per_sq_foot", + SUM("x"."oct_sales" / "x"."w_warehouse_sq_ft") AS "oct_sales_per_sq_foot", + SUM("x"."nov_sales" / "x"."w_warehouse_sq_ft") AS "nov_sales_per_sq_foot", + SUM("x"."dec_sales" / "x"."w_warehouse_sq_ft") AS "dec_sales_per_sq_foot", + SUM("x"."jan_net") AS "jan_net", + SUM("x"."feb_net") AS "feb_net", + SUM("x"."mar_net") AS "mar_net", + SUM("x"."apr_net") AS "apr_net", + SUM("x"."may_net") AS "may_net", + SUM("x"."jun_net") AS "jun_net", + SUM("x"."jul_net") AS "jul_net", + SUM("x"."aug_net") AS "aug_net", + SUM("x"."sep_net") AS "sep_net", + SUM("x"."oct_net") AS "oct_net", + SUM("x"."nov_net") AS "nov_net", + SUM("x"."dec_net") AS "dec_net" +FROM "x" AS "x" +GROUP BY + "x"."w_warehouse_name", + "x"."w_warehouse_sq_ft", + "x"."w_city", + "x"."w_county", + "x"."w_state", + "x"."w_country", + "x"."ship_carriers", + "x"."year1" +ORDER BY + "w_warehouse_name" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 67 +-------------------------------------- +select * +from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rank() over (partition by i_category order by sumsales desc) rk + from (select i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sum(coalesce(ss_sales_price*ss_quantity,0)) sumsales + from store_sales + ,date_dim + ,store + ,item + where ss_sold_date_sk=d_date_sk + and ss_item_sk=i_item_sk + and ss_store_sk = s_store_sk + and d_month_seq between 1181 and 1181+11 + group by rollup(i_category, i_class, i_brand, i_product_name, d_year, d_qoy, d_moy,s_store_id))dw1) dw2 +where rk <= 100 +order by i_category + ,i_class + ,i_brand + ,i_product_name + ,d_year + ,d_qoy + ,d_moy + ,s_store_id + ,sumsales + ,rk +limit 100 +; +WITH "dw1" AS ( + SELECT + "item"."i_category" AS "i_category", + "item"."i_class" AS "i_class", + "item"."i_brand" AS "i_brand", + "item"."i_product_name" AS "i_product_name", + "date_dim"."d_year" AS "d_year", + "date_dim"."d_qoy" AS "d_qoy", + "date_dim"."d_moy" AS "d_moy", + "store"."s_store_id" AS "s_store_id", + SUM(COALESCE("store_sales"."ss_sales_price" * "store_sales"."ss_quantity", 0)) AS "sumsales" + FROM "store_sales" AS "store_sales" + JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_month_seq" <= 1192 + AND "date_dim"."d_month_seq" >= 1181 + AND "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "store" AS "store" + ON "store_sales"."ss_store_sk" = "store"."s_store_sk" + JOIN "item" AS "item" + ON "store_sales"."ss_item_sk" = "item"."i_item_sk" + GROUP BY + ROLLUP ( + "item"."i_category", + "item"."i_class", + "item"."i_brand", + "item"."i_product_name", + "date_dim"."d_year", + "date_dim"."d_qoy", + "date_dim"."d_moy", + "store"."s_store_id" + ) +), "dw2" AS ( + SELECT + "dw1"."i_category" AS "i_category", + "dw1"."i_class" AS "i_class", + "dw1"."i_brand" AS "i_brand", + "dw1"."i_product_name" AS "i_product_name", + "dw1"."d_year" AS "d_year", + "dw1"."d_qoy" AS "d_qoy", + "dw1"."d_moy" AS "d_moy", + "dw1"."s_store_id" AS "s_store_id", + "dw1"."sumsales" AS "sumsales", + RANK() OVER (PARTITION BY "dw1"."i_category" ORDER BY "dw1"."sumsales" DESC) AS "rk" + FROM "dw1" AS "dw1" +) +SELECT + "dw2"."i_category" AS "i_category", + "dw2"."i_class" AS "i_class", + "dw2"."i_brand" AS "i_brand", + "dw2"."i_product_name" AS "i_product_name", + "dw2"."d_year" AS "d_year", + "dw2"."d_qoy" AS "d_qoy", + "dw2"."d_moy" AS "d_moy", + "dw2"."s_store_id" AS "s_store_id", + "dw2"."sumsales" AS "sumsales", + "dw2"."rk" AS "rk" +FROM "dw2" AS "dw2" +WHERE + "dw2"."rk" <= 100 +ORDER BY + "dw2"."i_category", + "dw2"."i_class", + "dw2"."i_brand", + "dw2"."i_product_name", + "dw2"."d_year", + "dw2"."d_qoy", + "dw2"."d_moy", + "dw2"."s_store_id", + "dw2"."sumsales", + "dw2"."rk" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 68 +-------------------------------------- +SELECT c_last_name, + c_first_name, + ca_city, + bought_city, + ss_ticket_number, + extended_price, + extended_tax, + list_price +FROM (SELECT ss_ticket_number, + ss_customer_sk, + ca_city bought_city, + Sum(ss_ext_sales_price) extended_price, + Sum(ss_ext_list_price) list_price, + Sum(ss_ext_tax) extended_tax + FROM store_sales, + date_dim, + store, + household_demographics, + customer_address + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND store_sales.ss_addr_sk = customer_address.ca_address_sk + AND date_dim.d_dom BETWEEN 1 AND 2 + AND ( household_demographics.hd_dep_count = 8 + OR household_demographics.hd_vehicle_count = 3 ) + AND date_dim.d_year IN ( 1998, 1998 + 1, 1998 + 2 ) + AND store.s_city IN ( 'Fairview', 'Midway' ) + GROUP BY ss_ticket_number, + ss_customer_sk, + ss_addr_sk, + ca_city) dn, + customer, + customer_address current_addr +WHERE ss_customer_sk = c_customer_sk + AND customer.c_current_addr_sk = current_addr.ca_address_sk + AND current_addr.ca_city <> bought_city +ORDER BY c_last_name, + ss_ticket_number +LIMIT 100; +WITH "customer_address_2" AS ( + SELECT + "customer_address"."ca_address_sk" AS "ca_address_sk", + "customer_address"."ca_city" AS "ca_city" + FROM "customer_address" AS "customer_address" +), "dn" AS ( + SELECT + "store_sales"."ss_ticket_number" AS "ss_ticket_number", + "store_sales"."ss_customer_sk" AS "ss_customer_sk", + "customer_address"."ca_city" AS "bought_city", + SUM("store_sales"."ss_ext_sales_price") AS "extended_price", + SUM("store_sales"."ss_ext_list_price") AS "list_price", + SUM("store_sales"."ss_ext_tax") AS "extended_tax" + FROM "store_sales" AS "store_sales" + JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_dom" <= 2 + AND "date_dim"."d_dom" >= 1 + AND "date_dim"."d_year" IN (1998, 1999, 2000) + AND "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "store" AS "store" + ON "store"."s_city" IN ('Fairview', 'Midway') + AND "store_sales"."ss_store_sk" = "store"."s_store_sk" + JOIN "household_demographics" AS "household_demographics" + ON ( + "household_demographics"."hd_dep_count" = 8 + OR "household_demographics"."hd_vehicle_count" = 3 + ) + AND "store_sales"."ss_hdemo_sk" = "household_demographics"."hd_demo_sk" + JOIN "customer_address_2" AS "customer_address" + ON "store_sales"."ss_addr_sk" = "customer_address"."ca_address_sk" + GROUP BY + "store_sales"."ss_ticket_number", + "store_sales"."ss_customer_sk", + "store_sales"."ss_addr_sk", + "customer_address"."ca_city" +) +SELECT + "customer"."c_last_name" AS "c_last_name", + "customer"."c_first_name" AS "c_first_name", + "current_addr"."ca_city" AS "ca_city", + "dn"."bought_city" AS "bought_city", + "dn"."ss_ticket_number" AS "ss_ticket_number", + "dn"."extended_price" AS "extended_price", + "dn"."extended_tax" AS "extended_tax", + "dn"."list_price" AS "list_price" +FROM "dn" AS "dn" +JOIN "customer_address_2" AS "current_addr" + ON "current_addr"."ca_city" <> "dn"."bought_city" +JOIN "customer" AS "customer" + ON "customer"."c_current_addr_sk" = "current_addr"."ca_address_sk" + AND "dn"."ss_customer_sk" = "customer"."c_customer_sk" +ORDER BY + "c_last_name", + "ss_ticket_number" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 69 +-------------------------------------- +SELECT cd_gender, + cd_marital_status, + cd_education_status, + Count(*) cnt1, + cd_purchase_estimate, + Count(*) cnt2, + cd_credit_rating, + Count(*) cnt3 +FROM customer c, + customer_address ca, + customer_demographics +WHERE c.c_current_addr_sk = ca.ca_address_sk + AND ca_state IN ( 'KS', 'AZ', 'NE' ) + AND cd_demo_sk = c.c_current_cdemo_sk + AND EXISTS (SELECT * + FROM store_sales, + date_dim + WHERE c.c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year = 2004 + AND d_moy BETWEEN 3 AND 3 + 2) + AND ( NOT EXISTS (SELECT * + FROM web_sales, + date_dim + WHERE c.c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year = 2004 + AND d_moy BETWEEN 3 AND 3 + 2) + AND NOT EXISTS (SELECT * + FROM catalog_sales, + date_dim + WHERE c.c_customer_sk = cs_ship_customer_sk + AND cs_sold_date_sk = d_date_sk + AND d_year = 2004 + AND d_moy BETWEEN 3 AND 3 + 2) ) +GROUP BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating +ORDER BY cd_gender, + cd_marital_status, + cd_education_status, + cd_purchase_estimate, + cd_credit_rating +LIMIT 100; +WITH "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_date_id" AS "d_date_id", + "date_dim"."d_date" AS "d_date", + "date_dim"."d_month_seq" AS "d_month_seq", + "date_dim"."d_week_seq" AS "d_week_seq", + "date_dim"."d_quarter_seq" AS "d_quarter_seq", + "date_dim"."d_year" AS "d_year", + "date_dim"."d_dow" AS "d_dow", + "date_dim"."d_moy" AS "d_moy", + "date_dim"."d_dom" AS "d_dom", + "date_dim"."d_qoy" AS "d_qoy", + "date_dim"."d_fy_year" AS "d_fy_year", + "date_dim"."d_fy_quarter_seq" AS "d_fy_quarter_seq", + "date_dim"."d_fy_week_seq" AS "d_fy_week_seq", + "date_dim"."d_day_name" AS "d_day_name", + "date_dim"."d_quarter_name" AS "d_quarter_name", + "date_dim"."d_holiday" AS "d_holiday", + "date_dim"."d_weekend" AS "d_weekend", + "date_dim"."d_following_holiday" AS "d_following_holiday", + "date_dim"."d_first_dom" AS "d_first_dom", + "date_dim"."d_last_dom" AS "d_last_dom", + "date_dim"."d_same_day_ly" AS "d_same_day_ly", + "date_dim"."d_same_day_lq" AS "d_same_day_lq", + "date_dim"."d_current_day" AS "d_current_day", + "date_dim"."d_current_week" AS "d_current_week", + "date_dim"."d_current_month" AS "d_current_month", + "date_dim"."d_current_quarter" AS "d_current_quarter", + "date_dim"."d_current_year" AS "d_current_year" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_moy" <= 5 AND "date_dim"."d_moy" >= 3 AND "date_dim"."d_year" = 2004 +), "_u_0" AS ( + SELECT + "store_sales"."ss_customer_sk" AS "_u_1" + FROM "store_sales" AS "store_sales" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "store_sales"."ss_customer_sk" +), "_u_2" AS ( + SELECT + "web_sales"."ws_bill_customer_sk" AS "_u_3" + FROM "web_sales" AS "web_sales" + JOIN "date_dim_2" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "web_sales"."ws_bill_customer_sk" +), "_u_4" AS ( + SELECT + "catalog_sales"."cs_ship_customer_sk" AS "_u_5" + FROM "catalog_sales" AS "catalog_sales" + JOIN "date_dim_2" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "catalog_sales"."cs_ship_customer_sk" +) +SELECT + "customer_demographics"."cd_gender" AS "cd_gender", + "customer_demographics"."cd_marital_status" AS "cd_marital_status", + "customer_demographics"."cd_education_status" AS "cd_education_status", + COUNT(*) AS "cnt1", + "customer_demographics"."cd_purchase_estimate" AS "cd_purchase_estimate", + COUNT(*) AS "cnt2", + "customer_demographics"."cd_credit_rating" AS "cd_credit_rating", + COUNT(*) AS "cnt3" +FROM "customer" AS "customer" +LEFT JOIN "_u_0" AS "_u_0" + ON "customer"."c_customer_sk" = "_u_0"."_u_1" +LEFT JOIN "_u_2" AS "_u_2" + ON "customer"."c_customer_sk" = "_u_2"."_u_3" +LEFT JOIN "_u_4" AS "_u_4" + ON "customer"."c_customer_sk" = "_u_4"."_u_5" +JOIN "customer_address" AS "customer_address" + ON "customer"."c_current_addr_sk" = "customer_address"."ca_address_sk" + AND "customer_address"."ca_state" IN ('KS', 'AZ', 'NE') +JOIN "customer_demographics" AS "customer_demographics" + ON "customer_demographics"."cd_demo_sk" = "customer"."c_current_cdemo_sk" +WHERE + "_u_2"."_u_3" IS NULL AND "_u_4"."_u_5" IS NULL AND NOT "_u_0"."_u_1" IS NULL +GROUP BY + "customer_demographics"."cd_gender", + "customer_demographics"."cd_marital_status", + "customer_demographics"."cd_education_status", + "customer_demographics"."cd_purchase_estimate", + "customer_demographics"."cd_credit_rating" +ORDER BY + "cd_gender", + "cd_marital_status", + "cd_education_status", + "cd_purchase_estimate", + "cd_credit_rating" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 70 +-------------------------------------- +SELECT Sum(ss_net_profit) AS total_sum, + s_state, + s_county, + Grouping(s_state) + Grouping(s_county) AS lochierarchy, + Rank() + OVER ( + partition BY Grouping(s_state)+Grouping(s_county), CASE WHEN + Grouping( + s_county) = 0 THEN s_state END + ORDER BY Sum(ss_net_profit) DESC) AS rank_within_parent +FROM store_sales, + date_dim d1, + store +WHERE d1.d_month_seq BETWEEN 1200 AND 1200 + 11 + AND d1.d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + AND s_state IN (SELECT s_state + FROM (SELECT s_state AS + s_state, + Rank() + OVER ( + partition BY s_state + ORDER BY Sum(ss_net_profit) DESC) AS + ranking + FROM store_sales, + store, + date_dim + WHERE d_month_seq BETWEEN 1200 AND 1200 + 11 + AND d_date_sk = ss_sold_date_sk + AND s_store_sk = ss_store_sk + GROUP BY s_state) tmp1 + WHERE ranking <= 5) +GROUP BY rollup( s_state, s_county ) +ORDER BY lochierarchy DESC, + CASE + WHEN lochierarchy = 0 THEN s_state + END, + rank_within_parent +LIMIT 100; +WITH "store_sales_2" AS ( + SELECT + "store_sales"."ss_sold_date_sk" AS "ss_sold_date_sk", + "store_sales"."ss_store_sk" AS "ss_store_sk", + "store_sales"."ss_net_profit" AS "ss_net_profit" + FROM "store_sales" AS "store_sales" +), "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_month_seq" AS "d_month_seq" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_month_seq" <= 1211 AND "date_dim"."d_month_seq" >= 1200 +), "tmp1" AS ( + SELECT + "store"."s_state" AS "s_state", + RANK() OVER (PARTITION BY "store"."s_state" ORDER BY SUM("store_sales"."ss_net_profit") DESC) AS "ranking" + FROM "store_sales_2" AS "store_sales" + JOIN "store" AS "store" + ON "store"."s_store_sk" = "store_sales"."ss_store_sk" + JOIN "date_dim_2" AS "date_dim" + ON "date_dim"."d_date_sk" = "store_sales"."ss_sold_date_sk" + GROUP BY + "store"."s_state" +), "_u_0" AS ( + SELECT + "tmp1"."s_state" AS "s_state" + FROM "tmp1" AS "tmp1" + WHERE + "tmp1"."ranking" <= 5 + GROUP BY + "tmp1"."s_state" +) +SELECT + SUM("store_sales"."ss_net_profit") AS "total_sum", + "store"."s_state" AS "s_state", + "store"."s_county" AS "s_county", + GROUPING("store"."s_state") + GROUPING("store"."s_county") AS "lochierarchy", + RANK() OVER (PARTITION BY GROUPING("store"."s_state") + GROUPING("store"."s_county"), CASE WHEN GROUPING("store"."s_county") = 0 THEN "store"."s_state" END ORDER BY SUM("store_sales"."ss_net_profit") DESC) AS "rank_within_parent" +FROM "store_sales_2" AS "store_sales" +JOIN "store" AS "store" + ON "store"."s_store_sk" = "store_sales"."ss_store_sk" +LEFT JOIN "_u_0" AS "_u_0" + ON "store"."s_state" = "_u_0"."s_state" +JOIN "date_dim_2" AS "d1" + ON "d1"."d_date_sk" = "store_sales"."ss_sold_date_sk" +WHERE + NOT "_u_0"."s_state" IS NULL +GROUP BY +ROLLUP ( + "store"."s_state", + "store"."s_county" +) +ORDER BY + "lochierarchy" DESC, + CASE WHEN "lochierarchy" = 0 THEN "store"."s_state" END, + "rank_within_parent" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 71 +-------------------------------------- +SELECT i_brand_id brand_id, + i_brand brand, + t_hour, + t_minute, + Sum(ext_price) ext_price +FROM item, + (SELECT ws_ext_sales_price AS ext_price, + ws_sold_date_sk AS sold_date_sk, + ws_item_sk AS sold_item_sk, + ws_sold_time_sk AS time_sk + FROM web_sales, + date_dim + WHERE d_date_sk = ws_sold_date_sk + AND d_moy = 11 + AND d_year = 2001 + UNION ALL + SELECT cs_ext_sales_price AS ext_price, + cs_sold_date_sk AS sold_date_sk, + cs_item_sk AS sold_item_sk, + cs_sold_time_sk AS time_sk + FROM catalog_sales, + date_dim + WHERE d_date_sk = cs_sold_date_sk + AND d_moy = 11 + AND d_year = 2001 + UNION ALL + SELECT ss_ext_sales_price AS ext_price, + ss_sold_date_sk AS sold_date_sk, + ss_item_sk AS sold_item_sk, + ss_sold_time_sk AS time_sk + FROM store_sales, + date_dim + WHERE d_date_sk = ss_sold_date_sk + AND d_moy = 11 + AND d_year = 2001) AS tmp, + time_dim +WHERE sold_item_sk = i_item_sk + AND i_manager_id = 1 + AND time_sk = t_time_sk + AND ( t_meal_time = 'breakfast' + OR t_meal_time = 'dinner' ) +GROUP BY i_brand, + i_brand_id, + t_hour, + t_minute +ORDER BY ext_price DESC, + i_brand_id; +WITH "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_year" AS "d_year", + "date_dim"."d_moy" AS "d_moy" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_moy" = 11 AND "date_dim"."d_year" = 2001 +), "cte_4" AS ( + SELECT + "catalog_sales"."cs_ext_sales_price" AS "ext_price", + "catalog_sales"."cs_item_sk" AS "sold_item_sk", + "catalog_sales"."cs_sold_time_sk" AS "time_sk" + FROM "catalog_sales" AS "catalog_sales" + CROSS JOIN "date_dim_2" AS "date_dim" + WHERE + "date_dim"."d_date_sk" = "catalog_sales"."cs_sold_date_sk" + UNION ALL + SELECT + "store_sales"."ss_ext_sales_price" AS "ext_price", + "store_sales"."ss_item_sk" AS "sold_item_sk", + "store_sales"."ss_sold_time_sk" AS "time_sk" + FROM "store_sales" AS "store_sales" + CROSS JOIN "date_dim_2" AS "date_dim" + WHERE + "date_dim"."d_date_sk" = "store_sales"."ss_sold_date_sk" +), "tmp" AS ( + SELECT + "web_sales"."ws_ext_sales_price" AS "ext_price", + "web_sales"."ws_item_sk" AS "sold_item_sk", + "web_sales"."ws_sold_time_sk" AS "time_sk" + FROM "web_sales" AS "web_sales" + CROSS JOIN "date_dim_2" AS "date_dim" + WHERE + "date_dim"."d_date_sk" = "web_sales"."ws_sold_date_sk" + UNION ALL + SELECT + "cte_4"."ext_price" AS "ext_price", + "cte_4"."sold_item_sk" AS "sold_item_sk", + "cte_4"."time_sk" AS "time_sk" + FROM "cte_4" AS "cte_4" +) +SELECT + "item"."i_brand_id" AS "brand_id", + "item"."i_brand" AS "brand", + "time_dim"."t_hour" AS "t_hour", + "time_dim"."t_minute" AS "t_minute", + SUM("tmp"."ext_price") AS "ext_price" +FROM "item" AS "item" +JOIN "tmp" AS "tmp" + ON "tmp"."sold_item_sk" = "item"."i_item_sk" +JOIN "time_dim" AS "time_dim" + ON ( + "time_dim"."t_meal_time" = 'breakfast' OR "time_dim"."t_meal_time" = 'dinner' + ) + AND "tmp"."time_sk" = "time_dim"."t_time_sk" +WHERE + "item"."i_manager_id" = 1 +GROUP BY + "item"."i_brand", + "item"."i_brand_id", + "time_dim"."t_hour", + "time_dim"."t_minute" +ORDER BY + "ext_price" DESC, + "item"."i_brand_id"; + +-------------------------------------- +-- TPC-DS 72 +-------------------------------------- +SELECT i_item_desc, + w_warehouse_name, + d1.d_week_seq, + Sum(CASE + WHEN p_promo_sk IS NULL THEN 1 + ELSE 0 + END) no_promo, + Sum(CASE + WHEN p_promo_sk IS NOT NULL THEN 1 + ELSE 0 + END) promo, + Count(*) total_cnt +FROM catalog_sales + JOIN inventory + ON ( cs_item_sk = inv_item_sk ) + JOIN warehouse + ON ( w_warehouse_sk = inv_warehouse_sk ) + JOIN item + ON ( i_item_sk = cs_item_sk ) + JOIN customer_demographics + ON ( cs_bill_cdemo_sk = cd_demo_sk ) + JOIN household_demographics + ON ( cs_bill_hdemo_sk = hd_demo_sk ) + JOIN date_dim d1 + ON ( cs_sold_date_sk = d1.d_date_sk ) + JOIN date_dim d2 + ON ( inv_date_sk = d2.d_date_sk ) + JOIN date_dim d3 + ON ( cs_ship_date_sk = d3.d_date_sk ) + LEFT OUTER JOIN promotion + ON ( cs_promo_sk = p_promo_sk ) + LEFT OUTER JOIN catalog_returns + ON ( cr_item_sk = cs_item_sk + AND cr_order_number = cs_order_number ) +WHERE d1.d_week_seq = d2.d_week_seq + AND inv_quantity_on_hand < cs_quantity + AND d3.d_date > d1.d_date + INTERVAL '5' day + AND hd_buy_potential = '501-1000' + AND d1.d_year = 2002 + AND cd_marital_status = 'M' +GROUP BY i_item_desc, + w_warehouse_name, + d1.d_week_seq +ORDER BY total_cnt DESC, + i_item_desc, + w_warehouse_name, + d_week_seq +LIMIT 100; +SELECT + "item"."i_item_desc" AS "i_item_desc", + "warehouse"."w_warehouse_name" AS "w_warehouse_name", + "date_dim_2"."d_week_seq" AS "d_week_seq", + SUM(CASE WHEN "promotion"."p_promo_sk" IS NULL THEN 1 ELSE 0 END) AS "no_promo", + SUM(CASE WHEN NOT "promotion"."p_promo_sk" IS NULL THEN 1 ELSE 0 END) AS "promo", + COUNT(*) AS "total_cnt" +FROM "catalog_sales" AS "catalog_sales" +JOIN "inventory" AS "inventory" + ON "catalog_sales"."cs_item_sk" = "inventory"."inv_item_sk" + AND "inventory"."inv_quantity_on_hand" < "catalog_sales"."cs_quantity" +JOIN "warehouse" AS "warehouse" + ON "warehouse"."w_warehouse_sk" = "inventory"."inv_warehouse_sk" +JOIN "item" AS "item" + ON "item"."i_item_sk" = "catalog_sales"."cs_item_sk" +JOIN "customer_demographics" AS "customer_demographics" + ON "catalog_sales"."cs_bill_cdemo_sk" = "customer_demographics"."cd_demo_sk" + AND "customer_demographics"."cd_marital_status" = 'M' +JOIN "household_demographics" AS "household_demographics" + ON "catalog_sales"."cs_bill_hdemo_sk" = "household_demographics"."hd_demo_sk" + AND "household_demographics"."hd_buy_potential" = '501-1000' +JOIN "date_dim" AS "date_dim" + ON "inventory"."inv_date_sk" = "date_dim"."d_date_sk" +JOIN "date_dim" AS "date_dim_2" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim_2"."d_date_sk" + AND "date_dim_2"."d_week_seq" = "date_dim"."d_week_seq" + AND "date_dim_2"."d_year" = 2002 +JOIN "date_dim" AS "date_dim_3" + ON "catalog_sales"."cs_ship_date_sk" = "date_dim_3"."d_date_sk" + AND "date_dim_3"."d_date" > CONCAT("date_dim_2"."d_date", INTERVAL '5' "day") +LEFT JOIN "promotion" AS "promotion" + ON "catalog_sales"."cs_promo_sk" = "promotion"."p_promo_sk" +LEFT JOIN "catalog_returns" AS "catalog_returns" + ON "catalog_returns"."cr_item_sk" = "catalog_sales"."cs_item_sk" + AND "catalog_returns"."cr_order_number" = "catalog_sales"."cs_order_number" +GROUP BY + "item"."i_item_desc", + "warehouse"."w_warehouse_name", + "date_dim_2"."d_week_seq" +ORDER BY + "total_cnt" DESC, + "i_item_desc", + "w_warehouse_name", + "d_week_seq" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 73 +-------------------------------------- +SELECT c_last_name, + c_first_name, + c_salutation, + c_preferred_cust_flag, + ss_ticket_number, + cnt +FROM (SELECT ss_ticket_number, + ss_customer_sk, + Count(*) cnt + FROM store_sales, + date_dim, + store, + household_demographics + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND date_dim.d_dom BETWEEN 1 AND 2 + AND ( household_demographics.hd_buy_potential = '>10000' + OR household_demographics.hd_buy_potential = '0-500' ) + AND household_demographics.hd_vehicle_count > 0 + AND CASE + WHEN household_demographics.hd_vehicle_count > 0 THEN + household_demographics.hd_dep_count / + household_demographics.hd_vehicle_count + ELSE NULL + END > 1 + AND date_dim.d_year IN ( 2000, 2000 + 1, 2000 + 2 ) + AND store.s_county IN ( 'Williamson County', 'Williamson County', + 'Williamson County', + 'Williamson County' + ) + GROUP BY ss_ticket_number, + ss_customer_sk) dj, + customer +WHERE ss_customer_sk = c_customer_sk + AND cnt BETWEEN 1 AND 5 +ORDER BY cnt DESC, + c_last_name ASC; +WITH "dj" AS ( + SELECT + "store_sales"."ss_ticket_number" AS "ss_ticket_number", + "store_sales"."ss_customer_sk" AS "ss_customer_sk", + COUNT(*) AS "cnt" + FROM "store_sales" AS "store_sales" + JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_dom" <= 2 + AND "date_dim"."d_dom" >= 1 + AND "date_dim"."d_year" IN (2000, 2001, 2002) + AND "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "store" AS "store" + ON "store"."s_county" IN ('Williamson County', 'Williamson County', 'Williamson County', 'Williamson County') + AND "store_sales"."ss_store_sk" = "store"."s_store_sk" + JOIN "household_demographics" AS "household_demographics" + ON ( + "household_demographics"."hd_buy_potential" = '0-500' + OR "household_demographics"."hd_buy_potential" = '>10000' + ) + AND "household_demographics"."hd_vehicle_count" > 0 + AND "store_sales"."ss_hdemo_sk" = "household_demographics"."hd_demo_sk" + AND CASE + WHEN "household_demographics"."hd_vehicle_count" > 0 + THEN "household_demographics"."hd_dep_count" / "household_demographics"."hd_vehicle_count" + ELSE NULL + END > 1 + GROUP BY + "store_sales"."ss_ticket_number", + "store_sales"."ss_customer_sk" +) +SELECT + "customer"."c_last_name" AS "c_last_name", + "customer"."c_first_name" AS "c_first_name", + "customer"."c_salutation" AS "c_salutation", + "customer"."c_preferred_cust_flag" AS "c_preferred_cust_flag", + "dj"."ss_ticket_number" AS "ss_ticket_number", + "dj"."cnt" AS "cnt" +FROM "dj" AS "dj" +JOIN "customer" AS "customer" + ON "dj"."ss_customer_sk" = "customer"."c_customer_sk" +WHERE + "dj"."cnt" <= 5 AND "dj"."cnt" >= 1 +ORDER BY + "cnt" DESC, + "c_last_name"; + +-------------------------------------- +-- TPC-DS 74 +-------------------------------------- +WITH year_total + AS (SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + d_year AS year1, + Sum(ss_net_paid) year_total, + 's' sale_type + FROM customer, + store_sales, + date_dim + WHERE c_customer_sk = ss_customer_sk + AND ss_sold_date_sk = d_date_sk + AND d_year IN ( 1999, 1999 + 1 ) + GROUP BY c_customer_id, + c_first_name, + c_last_name, + d_year + UNION ALL + SELECT c_customer_id customer_id, + c_first_name customer_first_name, + c_last_name customer_last_name, + d_year AS year1, + Sum(ws_net_paid) year_total, + 'w' sale_type + FROM customer, + web_sales, + date_dim + WHERE c_customer_sk = ws_bill_customer_sk + AND ws_sold_date_sk = d_date_sk + AND d_year IN ( 1999, 1999 + 1 ) + GROUP BY c_customer_id, + c_first_name, + c_last_name, + d_year) +SELECT t_s_secyear.customer_id, + t_s_secyear.customer_first_name, + t_s_secyear.customer_last_name +FROM year_total t_s_firstyear, + year_total t_s_secyear, + year_total t_w_firstyear, + year_total t_w_secyear +WHERE t_s_secyear.customer_id = t_s_firstyear.customer_id + AND t_s_firstyear.customer_id = t_w_secyear.customer_id + AND t_s_firstyear.customer_id = t_w_firstyear.customer_id + AND t_s_firstyear.sale_type = 's' + AND t_w_firstyear.sale_type = 'w' + AND t_s_secyear.sale_type = 's' + AND t_w_secyear.sale_type = 'w' + AND t_s_firstyear.year1 = 1999 + AND t_s_secyear.year1 = 1999 + 1 + AND t_w_firstyear.year1 = 1999 + AND t_w_secyear.year1 = 1999 + 1 + AND t_s_firstyear.year_total > 0 + AND t_w_firstyear.year_total > 0 + AND CASE + WHEN t_w_firstyear.year_total > 0 THEN t_w_secyear.year_total / + t_w_firstyear.year_total + ELSE NULL + END > CASE + WHEN t_s_firstyear.year_total > 0 THEN + t_s_secyear.year_total / + t_s_firstyear.year_total + ELSE NULL + END +ORDER BY 1, + 2, + 3 +LIMIT 100; +WITH "customer_2" AS ( + SELECT + "customer"."c_customer_sk" AS "c_customer_sk", + "customer"."c_customer_id" AS "c_customer_id", + "customer"."c_first_name" AS "c_first_name", + "customer"."c_last_name" AS "c_last_name" + FROM "customer" AS "customer" +), "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_year" AS "d_year" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_year" IN (1999, 2000) +), "cte" AS ( + SELECT + "customer"."c_customer_id" AS "customer_id", + "customer"."c_first_name" AS "customer_first_name", + "customer"."c_last_name" AS "customer_last_name", + "date_dim"."d_year" AS "year1", + SUM("store_sales"."ss_net_paid") AS "year_total", + 's' AS "sale_type" + FROM "customer_2" AS "customer" + JOIN "store_sales" AS "store_sales" + ON "customer"."c_customer_sk" = "store_sales"."ss_customer_sk" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "customer"."c_customer_id", + "customer"."c_first_name", + "customer"."c_last_name", + "date_dim"."d_year" +), "cte_2" AS ( + SELECT + "customer"."c_customer_id" AS "customer_id", + "customer"."c_first_name" AS "customer_first_name", + "customer"."c_last_name" AS "customer_last_name", + "date_dim"."d_year" AS "year1", + SUM("web_sales"."ws_net_paid") AS "year_total", + 'w' AS "sale_type" + FROM "customer_2" AS "customer" + JOIN "web_sales" AS "web_sales" + ON "customer"."c_customer_sk" = "web_sales"."ws_bill_customer_sk" + JOIN "date_dim_2" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "customer"."c_customer_id", + "customer"."c_first_name", + "customer"."c_last_name", + "date_dim"."d_year" +), "year_total" AS ( + SELECT + "cte"."customer_id" AS "customer_id", + "cte"."customer_first_name" AS "customer_first_name", + "cte"."customer_last_name" AS "customer_last_name", + "cte"."year1" AS "year1", + "cte"."year_total" AS "year_total", + "cte"."sale_type" AS "sale_type" + FROM "cte" AS "cte" + UNION ALL + SELECT + "cte_2"."customer_id" AS "customer_id", + "cte_2"."customer_first_name" AS "customer_first_name", + "cte_2"."customer_last_name" AS "customer_last_name", + "cte_2"."year1" AS "year1", + "cte_2"."year_total" AS "year_total", + "cte_2"."sale_type" AS "sale_type" + FROM "cte_2" AS "cte_2" +) +SELECT + "t_s_secyear"."customer_id" AS "customer_id", + "t_s_secyear"."customer_first_name" AS "customer_first_name", + "t_s_secyear"."customer_last_name" AS "customer_last_name" +FROM "year_total" AS "t_s_firstyear" +JOIN "year_total" AS "t_s_secyear" + ON "t_s_secyear"."customer_id" = "t_s_firstyear"."customer_id" + AND "t_s_secyear"."sale_type" = 's' + AND "t_s_secyear"."year1" = 2000 +JOIN "year_total" AS "t_w_secyear" + ON "t_s_firstyear"."customer_id" = "t_w_secyear"."customer_id" + AND "t_w_secyear"."sale_type" = 'w' + AND "t_w_secyear"."year1" = 2000 +JOIN "year_total" AS "t_w_firstyear" + ON "t_s_firstyear"."customer_id" = "t_w_firstyear"."customer_id" + AND "t_w_firstyear"."sale_type" = 'w' + AND "t_w_firstyear"."year1" = 1999 + AND "t_w_firstyear"."year_total" > 0 + AND CASE + WHEN "t_w_firstyear"."year_total" > 0 + THEN "t_w_secyear"."year_total" / "t_w_firstyear"."year_total" + ELSE NULL + END > CASE + WHEN "t_s_firstyear"."year_total" > 0 + THEN "t_s_secyear"."year_total" / "t_s_firstyear"."year_total" + ELSE NULL + END +WHERE + "t_s_firstyear"."sale_type" = 's' + AND "t_s_firstyear"."year1" = 1999 + AND "t_s_firstyear"."year_total" > 0 +ORDER BY + "t_s_secyear"."customer_id", + "t_s_secyear"."customer_first_name", + "t_s_secyear"."customer_last_name" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 75 +-------------------------------------- +WITH all_sales + AS (SELECT d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id, + Sum(sales_cnt) AS sales_cnt, + Sum(sales_amt) AS sales_amt + FROM (SELECT d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id, + cs_quantity - COALESCE(cr_return_quantity, 0) AS + sales_cnt, + cs_ext_sales_price - COALESCE(cr_return_amount, 0.0) AS + sales_amt + FROM catalog_sales + JOIN item + ON i_item_sk = cs_item_sk + JOIN date_dim + ON d_date_sk = cs_sold_date_sk + LEFT JOIN catalog_returns + ON ( cs_order_number = cr_order_number + AND cs_item_sk = cr_item_sk ) + WHERE i_category = 'Men' + UNION + SELECT d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id, + ss_quantity - COALESCE(sr_return_quantity, 0) AS + sales_cnt, + ss_ext_sales_price - COALESCE(sr_return_amt, 0.0) AS + sales_amt + FROM store_sales + JOIN item + ON i_item_sk = ss_item_sk + JOIN date_dim + ON d_date_sk = ss_sold_date_sk + LEFT JOIN store_returns + ON ( ss_ticket_number = sr_ticket_number + AND ss_item_sk = sr_item_sk ) + WHERE i_category = 'Men' + UNION + SELECT d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id, + ws_quantity - COALESCE(wr_return_quantity, 0) AS + sales_cnt, + ws_ext_sales_price - COALESCE(wr_return_amt, 0.0) AS + sales_amt + FROM web_sales + JOIN item + ON i_item_sk = ws_item_sk + JOIN date_dim + ON d_date_sk = ws_sold_date_sk + LEFT JOIN web_returns + ON ( ws_order_number = wr_order_number + AND ws_item_sk = wr_item_sk ) + WHERE i_category = 'Men') sales_detail + GROUP BY d_year, + i_brand_id, + i_class_id, + i_category_id, + i_manufact_id) +SELECT prev_yr.d_year AS prev_year, + curr_yr.d_year AS year1, + curr_yr.i_brand_id, + curr_yr.i_class_id, + curr_yr.i_category_id, + curr_yr.i_manufact_id, + prev_yr.sales_cnt AS prev_yr_cnt, + curr_yr.sales_cnt AS curr_yr_cnt, + curr_yr.sales_cnt - prev_yr.sales_cnt AS sales_cnt_diff, + curr_yr.sales_amt - prev_yr.sales_amt AS sales_amt_diff +FROM all_sales curr_yr, + all_sales prev_yr +WHERE curr_yr.i_brand_id = prev_yr.i_brand_id + AND curr_yr.i_class_id = prev_yr.i_class_id + AND curr_yr.i_category_id = prev_yr.i_category_id + AND curr_yr.i_manufact_id = prev_yr.i_manufact_id + AND curr_yr.d_year = 2002 + AND prev_yr.d_year = 2002 - 1 + AND Cast(curr_yr.sales_cnt AS DECIMAL(17, 2)) / Cast(prev_yr.sales_cnt AS + DECIMAL(17, 2)) + < 0.9 +ORDER BY sales_cnt_diff +LIMIT 100; +WITH "item_2" AS ( + SELECT + "item"."i_item_sk" AS "i_item_sk", + "item"."i_brand_id" AS "i_brand_id", + "item"."i_class_id" AS "i_class_id", + "item"."i_category_id" AS "i_category_id", + "item"."i_category" AS "i_category", + "item"."i_manufact_id" AS "i_manufact_id" + FROM "item" AS "item" + WHERE + "item"."i_category" = 'Men' +), "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_year" AS "d_year" + FROM "date_dim" AS "date_dim" +), "cte_4" AS ( + SELECT + "date_dim"."d_year" AS "d_year", + "item"."i_brand_id" AS "i_brand_id", + "item"."i_class_id" AS "i_class_id", + "item"."i_category_id" AS "i_category_id", + "item"."i_manufact_id" AS "i_manufact_id", + "store_sales"."ss_quantity" - COALESCE("store_returns"."sr_return_quantity", 0) AS "sales_cnt", + "store_sales"."ss_ext_sales_price" - COALESCE("store_returns"."sr_return_amt", 0.0) AS "sales_amt" + FROM "store_sales" AS "store_sales" + JOIN "item_2" AS "item" + ON "item"."i_item_sk" = "store_sales"."ss_item_sk" + JOIN "date_dim_2" AS "date_dim" + ON "date_dim"."d_date_sk" = "store_sales"."ss_sold_date_sk" + LEFT JOIN "store_returns" AS "store_returns" + ON "store_sales"."ss_item_sk" = "store_returns"."sr_item_sk" + AND "store_sales"."ss_ticket_number" = "store_returns"."sr_ticket_number" + UNION + SELECT + "date_dim"."d_year" AS "d_year", + "item"."i_brand_id" AS "i_brand_id", + "item"."i_class_id" AS "i_class_id", + "item"."i_category_id" AS "i_category_id", + "item"."i_manufact_id" AS "i_manufact_id", + "web_sales"."ws_quantity" - COALESCE("web_returns"."wr_return_quantity", 0) AS "sales_cnt", + "web_sales"."ws_ext_sales_price" - COALESCE("web_returns"."wr_return_amt", 0.0) AS "sales_amt" + FROM "web_sales" AS "web_sales" + JOIN "item_2" AS "item" + ON "item"."i_item_sk" = "web_sales"."ws_item_sk" + JOIN "date_dim_2" AS "date_dim" + ON "date_dim"."d_date_sk" = "web_sales"."ws_sold_date_sk" + LEFT JOIN "web_returns" AS "web_returns" + ON "web_sales"."ws_item_sk" = "web_returns"."wr_item_sk" + AND "web_sales"."ws_order_number" = "web_returns"."wr_order_number" +), "sales_detail" AS ( + SELECT + "date_dim"."d_year" AS "d_year", + "item"."i_brand_id" AS "i_brand_id", + "item"."i_class_id" AS "i_class_id", + "item"."i_category_id" AS "i_category_id", + "item"."i_manufact_id" AS "i_manufact_id", + "catalog_sales"."cs_quantity" - COALESCE("catalog_returns"."cr_return_quantity", 0) AS "sales_cnt", + "catalog_sales"."cs_ext_sales_price" - COALESCE("catalog_returns"."cr_return_amount", 0.0) AS "sales_amt" + FROM "catalog_sales" AS "catalog_sales" + JOIN "item_2" AS "item" + ON "item"."i_item_sk" = "catalog_sales"."cs_item_sk" + JOIN "date_dim_2" AS "date_dim" + ON "date_dim"."d_date_sk" = "catalog_sales"."cs_sold_date_sk" + LEFT JOIN "catalog_returns" AS "catalog_returns" + ON "catalog_sales"."cs_item_sk" = "catalog_returns"."cr_item_sk" + AND "catalog_sales"."cs_order_number" = "catalog_returns"."cr_order_number" + UNION + SELECT + "cte_4"."d_year" AS "d_year", + "cte_4"."i_brand_id" AS "i_brand_id", + "cte_4"."i_class_id" AS "i_class_id", + "cte_4"."i_category_id" AS "i_category_id", + "cte_4"."i_manufact_id" AS "i_manufact_id", + "cte_4"."sales_cnt" AS "sales_cnt", + "cte_4"."sales_amt" AS "sales_amt" + FROM "cte_4" AS "cte_4" +), "all_sales" AS ( + SELECT + "sales_detail"."d_year" AS "d_year", + "sales_detail"."i_brand_id" AS "i_brand_id", + "sales_detail"."i_class_id" AS "i_class_id", + "sales_detail"."i_category_id" AS "i_category_id", + "sales_detail"."i_manufact_id" AS "i_manufact_id", + SUM("sales_detail"."sales_cnt") AS "sales_cnt", + SUM("sales_detail"."sales_amt") AS "sales_amt" + FROM "sales_detail" AS "sales_detail" + GROUP BY + "sales_detail"."d_year", + "sales_detail"."i_brand_id", + "sales_detail"."i_class_id", + "sales_detail"."i_category_id", + "sales_detail"."i_manufact_id" +) +SELECT + "prev_yr"."d_year" AS "prev_year", + "curr_yr"."d_year" AS "year1", + "curr_yr"."i_brand_id" AS "i_brand_id", + "curr_yr"."i_class_id" AS "i_class_id", + "curr_yr"."i_category_id" AS "i_category_id", + "curr_yr"."i_manufact_id" AS "i_manufact_id", + "prev_yr"."sales_cnt" AS "prev_yr_cnt", + "curr_yr"."sales_cnt" AS "curr_yr_cnt", + "curr_yr"."sales_cnt" - "prev_yr"."sales_cnt" AS "sales_cnt_diff", + "curr_yr"."sales_amt" - "prev_yr"."sales_amt" AS "sales_amt_diff" +FROM "all_sales" AS "curr_yr" +JOIN "all_sales" AS "prev_yr" + ON "curr_yr"."i_brand_id" = "prev_yr"."i_brand_id" + AND "curr_yr"."i_category_id" = "prev_yr"."i_category_id" + AND "curr_yr"."i_class_id" = "prev_yr"."i_class_id" + AND "curr_yr"."i_manufact_id" = "prev_yr"."i_manufact_id" + AND "prev_yr"."d_year" = 2001 + AND CAST("curr_yr"."sales_cnt" AS DECIMAL(17, 2)) / CAST("prev_yr"."sales_cnt" AS DECIMAL(17, 2)) < 0.9 +WHERE + "curr_yr"."d_year" = 2002 +ORDER BY + "sales_cnt_diff" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 76 +-------------------------------------- +SELECT channel, + col_name, + d_year, + d_qoy, + i_category, + Count(*) sales_cnt, + Sum(ext_sales_price) sales_amt +FROM (SELECT 'store' AS channel, + 'ss_hdemo_sk' col_name, + d_year, + d_qoy, + i_category, + ss_ext_sales_price ext_sales_price + FROM store_sales, + item, + date_dim + WHERE ss_hdemo_sk IS NULL + AND ss_sold_date_sk = d_date_sk + AND ss_item_sk = i_item_sk + UNION ALL + SELECT 'web' AS channel, + 'ws_ship_hdemo_sk' col_name, + d_year, + d_qoy, + i_category, + ws_ext_sales_price ext_sales_price + FROM web_sales, + item, + date_dim + WHERE ws_ship_hdemo_sk IS NULL + AND ws_sold_date_sk = d_date_sk + AND ws_item_sk = i_item_sk + UNION ALL + SELECT 'catalog' AS channel, + 'cs_warehouse_sk' col_name, + d_year, + d_qoy, + i_category, + cs_ext_sales_price ext_sales_price + FROM catalog_sales, + item, + date_dim + WHERE cs_warehouse_sk IS NULL + AND cs_sold_date_sk = d_date_sk + AND cs_item_sk = i_item_sk) foo +GROUP BY channel, + col_name, + d_year, + d_qoy, + i_category +ORDER BY channel, + col_name, + d_year, + d_qoy, + i_category +LIMIT 100; +WITH "item_2" AS ( + SELECT + "item"."i_item_sk" AS "i_item_sk", + "item"."i_category" AS "i_category" + FROM "item" AS "item" +), "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_year" AS "d_year", + "date_dim"."d_qoy" AS "d_qoy" + FROM "date_dim" AS "date_dim" +), "cte_4" AS ( + SELECT + 'web' AS "channel", + 'ws_ship_hdemo_sk' AS "col_name", + "date_dim"."d_year" AS "d_year", + "date_dim"."d_qoy" AS "d_qoy", + "item"."i_category" AS "i_category", + "web_sales"."ws_ext_sales_price" AS "ext_sales_price" + FROM "web_sales" AS "web_sales" + JOIN "item_2" AS "item" + ON "web_sales"."ws_item_sk" = "item"."i_item_sk" + JOIN "date_dim_2" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + WHERE + "web_sales"."ws_ship_hdemo_sk" IS NULL + UNION ALL + SELECT + 'catalog' AS "channel", + 'cs_warehouse_sk' AS "col_name", + "date_dim"."d_year" AS "d_year", + "date_dim"."d_qoy" AS "d_qoy", + "item"."i_category" AS "i_category", + "catalog_sales"."cs_ext_sales_price" AS "ext_sales_price" + FROM "catalog_sales" AS "catalog_sales" + JOIN "item_2" AS "item" + ON "catalog_sales"."cs_item_sk" = "item"."i_item_sk" + JOIN "date_dim_2" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + WHERE + "catalog_sales"."cs_warehouse_sk" IS NULL +), "foo" AS ( + SELECT + 'store' AS "channel", + 'ss_hdemo_sk' AS "col_name", + "date_dim"."d_year" AS "d_year", + "date_dim"."d_qoy" AS "d_qoy", + "item"."i_category" AS "i_category", + "store_sales"."ss_ext_sales_price" AS "ext_sales_price" + FROM "store_sales" AS "store_sales" + JOIN "item_2" AS "item" + ON "store_sales"."ss_item_sk" = "item"."i_item_sk" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + WHERE + "store_sales"."ss_hdemo_sk" IS NULL + UNION ALL + SELECT + "cte_4"."channel" AS "channel", + "cte_4"."col_name" AS "col_name", + "cte_4"."d_year" AS "d_year", + "cte_4"."d_qoy" AS "d_qoy", + "cte_4"."i_category" AS "i_category", + "cte_4"."ext_sales_price" AS "ext_sales_price" + FROM "cte_4" AS "cte_4" +) +SELECT + "foo"."channel" AS "channel", + "foo"."col_name" AS "col_name", + "foo"."d_year" AS "d_year", + "foo"."d_qoy" AS "d_qoy", + "foo"."i_category" AS "i_category", + COUNT(*) AS "sales_cnt", + SUM("foo"."ext_sales_price") AS "sales_amt" +FROM "foo" AS "foo" +GROUP BY + "foo"."channel", + "foo"."col_name", + "foo"."d_year", + "foo"."d_qoy", + "foo"."i_category" +ORDER BY + "channel", + "col_name", + "d_year", + "d_qoy", + "i_category" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 77 +-------------------------------------- + +WITH ss AS +( + SELECT s_store_sk, + Sum(ss_ext_sales_price) AS sales, + Sum(ss_net_profit) AS profit + FROM store_sales, + date_dim, + store + WHERE ss_sold_date_sk = d_date_sk + AND d_date BETWEEN Cast('2001-08-16' AS DATE) AND ( + Cast('2001-08-16' AS DATE) + INTERVAL '30' day) + AND ss_store_sk = s_store_sk + GROUP BY s_store_sk) , sr AS +( + SELECT s_store_sk, + sum(sr_return_amt) AS returns1, + sum(sr_net_loss) AS profit_loss + FROM store_returns, + date_dim, + store + WHERE sr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2001-08-16' AS date) AND ( + cast('2001-08-16' AS date) + INTERVAL '30' day) + AND sr_store_sk = s_store_sk + GROUP BY s_store_sk), cs AS +( + SELECT cs_call_center_sk, + sum(cs_ext_sales_price) AS sales, + sum(cs_net_profit) AS profit + FROM catalog_sales, + date_dim + WHERE cs_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2001-08-16' AS date) AND ( + cast('2001-08-16' AS date) + INTERVAL '30' day) + GROUP BY cs_call_center_sk ), cr AS +( + SELECT cr_call_center_sk, + sum(cr_return_amount) AS returns1, + sum(cr_net_loss) AS profit_loss + FROM catalog_returns, + date_dim + WHERE cr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2001-08-16' AS date) AND ( + cast('2001-08-16' AS date) + INTERVAL '30' day) + GROUP BY cr_call_center_sk ), ws AS +( + SELECT wp_web_page_sk, + sum(ws_ext_sales_price) AS sales, + sum(ws_net_profit) AS profit + FROM web_sales, + date_dim, + web_page + WHERE ws_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2001-08-16' AS date) AND ( + cast('2001-08-16' AS date) + INTERVAL '30' day) + AND ws_web_page_sk = wp_web_page_sk + GROUP BY wp_web_page_sk), wr AS +( + SELECT wp_web_page_sk, + sum(wr_return_amt) AS returns1, + sum(wr_net_loss) AS profit_loss + FROM web_returns, + date_dim, + web_page + WHERE wr_returned_date_sk = d_date_sk + AND d_date BETWEEN cast('2001-08-16' AS date) AND ( + cast('2001-08-16' AS date) + INTERVAL '30' day) + AND wr_web_page_sk = wp_web_page_sk + GROUP BY wp_web_page_sk) +SELECT + channel , + id , + sum(sales) AS sales , + sum(returns1) AS returns1 , + sum(profit) AS profit +FROM ( + SELECT 'store channel' AS channel , + ss.s_store_sk AS id , + sales , + COALESCE(returns1, 0) AS returns1 , + (profit - COALESCE(profit_loss,0)) AS profit + FROM ss + LEFT JOIN sr + ON ss.s_store_sk = sr.s_store_sk + UNION ALL + SELECT 'catalog channel' AS channel , + cs_call_center_sk AS id , + sales , + returns1 , + (profit - profit_loss) AS profit + FROM cs , + cr + UNION ALL + SELECT 'web channel' AS channel , + ws.wp_web_page_sk AS id , + sales , + COALESCE(returns1, 0) returns1 , + (profit - COALESCE(profit_loss,0)) AS profit + FROM ws + LEFT JOIN wr + ON ws.wp_web_page_sk = wr.wp_web_page_sk ) x +GROUP BY rollup (channel, id) +ORDER BY channel , + id +LIMIT 100; +WITH "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_date" AS "d_date" + FROM "date_dim" AS "date_dim" + WHERE + CAST("date_dim"."d_date" AS DATE) <= CAST('2001-09-15' AS DATE) + AND CAST("date_dim"."d_date" AS DATE) >= CAST('2001-08-16' AS DATE) +), "store_2" AS ( + SELECT + "store"."s_store_sk" AS "s_store_sk" + FROM "store" AS "store" +), "ss" AS ( + SELECT + "store"."s_store_sk" AS "s_store_sk", + SUM("store_sales"."ss_ext_sales_price") AS "sales", + SUM("store_sales"."ss_net_profit") AS "profit" + FROM "store_sales" AS "store_sales" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "store_2" AS "store" + ON "store_sales"."ss_store_sk" = "store"."s_store_sk" + GROUP BY + "store"."s_store_sk" +), "sr" AS ( + SELECT + "store"."s_store_sk" AS "s_store_sk", + SUM("store_returns"."sr_return_amt") AS "returns1", + SUM("store_returns"."sr_net_loss") AS "profit_loss" + FROM "store_returns" AS "store_returns" + JOIN "date_dim_2" AS "date_dim" + ON "store_returns"."sr_returned_date_sk" = "date_dim"."d_date_sk" + JOIN "store_2" AS "store" + ON "store_returns"."sr_store_sk" = "store"."s_store_sk" + GROUP BY + "store"."s_store_sk" +), "cs" AS ( + SELECT + "catalog_sales"."cs_call_center_sk" AS "cs_call_center_sk", + SUM("catalog_sales"."cs_ext_sales_price") AS "sales", + SUM("catalog_sales"."cs_net_profit") AS "profit" + FROM "catalog_sales" AS "catalog_sales" + JOIN "date_dim_2" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "catalog_sales"."cs_call_center_sk" +), "cr" AS ( + SELECT + SUM("catalog_returns"."cr_return_amount") AS "returns1", + SUM("catalog_returns"."cr_net_loss") AS "profit_loss" + FROM "catalog_returns" AS "catalog_returns" + JOIN "date_dim_2" AS "date_dim" + ON "catalog_returns"."cr_returned_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "catalog_returns"."cr_call_center_sk" +), "web_page_2" AS ( + SELECT + "web_page"."wp_web_page_sk" AS "wp_web_page_sk" + FROM "web_page" AS "web_page" +), "ws" AS ( + SELECT + "web_page"."wp_web_page_sk" AS "wp_web_page_sk", + SUM("web_sales"."ws_ext_sales_price") AS "sales", + SUM("web_sales"."ws_net_profit") AS "profit" + FROM "web_sales" AS "web_sales" + JOIN "date_dim_2" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "web_page_2" AS "web_page" + ON "web_sales"."ws_web_page_sk" = "web_page"."wp_web_page_sk" + GROUP BY + "web_page"."wp_web_page_sk" +), "wr" AS ( + SELECT + "web_page"."wp_web_page_sk" AS "wp_web_page_sk", + SUM("web_returns"."wr_return_amt") AS "returns1", + SUM("web_returns"."wr_net_loss") AS "profit_loss" + FROM "web_returns" AS "web_returns" + JOIN "date_dim_2" AS "date_dim" + ON "web_returns"."wr_returned_date_sk" = "date_dim"."d_date_sk" + JOIN "web_page_2" AS "web_page" + ON "web_returns"."wr_web_page_sk" = "web_page"."wp_web_page_sk" + GROUP BY + "web_page"."wp_web_page_sk" +), "cte_4" AS ( + SELECT + 'catalog channel' AS "channel", + "cs"."cs_call_center_sk" AS "id", + "cs"."sales" AS "sales", + "cr"."returns1" AS "returns1", + "cs"."profit" - "cr"."profit_loss" AS "profit" + FROM "cs" + CROSS JOIN "cr" + UNION ALL + SELECT + 'web channel' AS "channel", + "ws"."wp_web_page_sk" AS "id", + "ws"."sales" AS "sales", + COALESCE("wr"."returns1", 0) AS "returns1", + "ws"."profit" - COALESCE("wr"."profit_loss", 0) AS "profit" + FROM "ws" + LEFT JOIN "wr" + ON "ws"."wp_web_page_sk" = "wr"."wp_web_page_sk" +), "x" AS ( + SELECT + 'store channel' AS "channel", + "ss"."s_store_sk" AS "id", + "ss"."sales" AS "sales", + COALESCE("sr"."returns1", 0) AS "returns1", + "ss"."profit" - COALESCE("sr"."profit_loss", 0) AS "profit" + FROM "ss" + LEFT JOIN "sr" + ON "ss"."s_store_sk" = "sr"."s_store_sk" + UNION ALL + SELECT + "cte_4"."channel" AS "channel", + "cte_4"."id" AS "id", + "cte_4"."sales" AS "sales", + "cte_4"."returns1" AS "returns1", + "cte_4"."profit" AS "profit" + FROM "cte_4" AS "cte_4" +) +SELECT + "x"."channel" AS "channel", + "x"."id" AS "id", + SUM("x"."sales") AS "sales", + SUM("x"."returns1") AS "returns1", + SUM("x"."profit") AS "profit" +FROM "x" AS "x" +GROUP BY +ROLLUP ( + "x"."channel", + "x"."id" +) +ORDER BY + "channel", + "id" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 78 +-------------------------------------- +WITH ws + AS (SELECT d_year AS ws_sold_year, + ws_item_sk, + ws_bill_customer_sk ws_customer_sk, + Sum(ws_quantity) ws_qty, + Sum(ws_wholesale_cost) ws_wc, + Sum(ws_sales_price) ws_sp + FROM web_sales + LEFT JOIN web_returns + ON wr_order_number = ws_order_number + AND ws_item_sk = wr_item_sk + JOIN date_dim + ON ws_sold_date_sk = d_date_sk + WHERE wr_order_number IS NULL + GROUP BY d_year, + ws_item_sk, + ws_bill_customer_sk), + cs + AS (SELECT d_year AS cs_sold_year, + cs_item_sk, + cs_bill_customer_sk cs_customer_sk, + Sum(cs_quantity) cs_qty, + Sum(cs_wholesale_cost) cs_wc, + Sum(cs_sales_price) cs_sp + FROM catalog_sales + LEFT JOIN catalog_returns + ON cr_order_number = cs_order_number + AND cs_item_sk = cr_item_sk + JOIN date_dim + ON cs_sold_date_sk = d_date_sk + WHERE cr_order_number IS NULL + GROUP BY d_year, + cs_item_sk, + cs_bill_customer_sk), + ss + AS (SELECT d_year AS ss_sold_year, + ss_item_sk, + ss_customer_sk, + Sum(ss_quantity) ss_qty, + Sum(ss_wholesale_cost) ss_wc, + Sum(ss_sales_price) ss_sp + FROM store_sales + LEFT JOIN store_returns + ON sr_ticket_number = ss_ticket_number + AND ss_item_sk = sr_item_sk + JOIN date_dim + ON ss_sold_date_sk = d_date_sk + WHERE sr_ticket_number IS NULL + GROUP BY d_year, + ss_item_sk, + ss_customer_sk) +SELECT ss_item_sk, + Round(ss_qty / ( COALESCE(ws_qty + cs_qty, 1) ), 2) ratio, + ss_qty store_qty, + ss_wc + store_wholesale_cost, + ss_sp + store_sales_price, + COALESCE(ws_qty, 0) + COALESCE(cs_qty, 0) + other_chan_qty, + COALESCE(ws_wc, 0) + COALESCE(cs_wc, 0) + other_chan_wholesale_cost, + COALESCE(ws_sp, 0) + COALESCE(cs_sp, 0) + other_chan_sales_price +FROM ss + LEFT JOIN ws + ON ( ws_sold_year = ss_sold_year + AND ws_item_sk = ss_item_sk + AND ws_customer_sk = ss_customer_sk ) + LEFT JOIN cs + ON ( cs_sold_year = ss_sold_year + AND cs_item_sk = cs_item_sk + AND cs_customer_sk = ss_customer_sk ) +WHERE COALESCE(ws_qty, 0) > 0 + AND COALESCE(cs_qty, 0) > 0 + AND ss_sold_year = 1999 +ORDER BY ss_item_sk, + ss_qty DESC, + ss_wc DESC, + ss_sp DESC, + other_chan_qty, + other_chan_wholesale_cost, + other_chan_sales_price, + Round(ss_qty / ( COALESCE(ws_qty + cs_qty, 1) ), 2) +LIMIT 100; +WITH "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_year" AS "d_year" + FROM "date_dim" AS "date_dim" +), "ws" AS ( + SELECT + "date_dim"."d_year" AS "ws_sold_year", + "web_sales"."ws_item_sk" AS "ws_item_sk", + "web_sales"."ws_bill_customer_sk" AS "ws_customer_sk", + SUM("web_sales"."ws_quantity") AS "ws_qty", + SUM("web_sales"."ws_wholesale_cost") AS "ws_wc", + SUM("web_sales"."ws_sales_price") AS "ws_sp" + FROM "web_sales" AS "web_sales" + LEFT JOIN "web_returns" AS "web_returns" + ON "web_returns"."wr_order_number" = "web_sales"."ws_order_number" + AND "web_sales"."ws_item_sk" = "web_returns"."wr_item_sk" + JOIN "date_dim_2" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + WHERE + "web_returns"."wr_order_number" IS NULL + GROUP BY + "date_dim"."d_year", + "web_sales"."ws_item_sk", + "web_sales"."ws_bill_customer_sk" +), "cs" AS ( + SELECT + "date_dim"."d_year" AS "cs_sold_year", + "catalog_sales"."cs_item_sk" AS "cs_item_sk", + "catalog_sales"."cs_bill_customer_sk" AS "cs_customer_sk", + SUM("catalog_sales"."cs_quantity") AS "cs_qty", + SUM("catalog_sales"."cs_wholesale_cost") AS "cs_wc", + SUM("catalog_sales"."cs_sales_price") AS "cs_sp" + FROM "catalog_sales" AS "catalog_sales" + LEFT JOIN "catalog_returns" AS "catalog_returns" + ON "catalog_returns"."cr_order_number" = "catalog_sales"."cs_order_number" + AND "catalog_sales"."cs_item_sk" = "catalog_returns"."cr_item_sk" + JOIN "date_dim_2" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + WHERE + "catalog_returns"."cr_order_number" IS NULL + GROUP BY + "date_dim"."d_year", + "catalog_sales"."cs_item_sk", + "catalog_sales"."cs_bill_customer_sk" +), "ss" AS ( + SELECT + "date_dim"."d_year" AS "ss_sold_year", + "store_sales"."ss_item_sk" AS "ss_item_sk", + "store_sales"."ss_customer_sk" AS "ss_customer_sk", + SUM("store_sales"."ss_quantity") AS "ss_qty", + SUM("store_sales"."ss_wholesale_cost") AS "ss_wc", + SUM("store_sales"."ss_sales_price") AS "ss_sp" + FROM "store_sales" AS "store_sales" + LEFT JOIN "store_returns" AS "store_returns" + ON "store_returns"."sr_ticket_number" = "store_sales"."ss_ticket_number" + AND "store_sales"."ss_item_sk" = "store_returns"."sr_item_sk" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + WHERE + "store_returns"."sr_ticket_number" IS NULL + GROUP BY + "date_dim"."d_year", + "store_sales"."ss_item_sk", + "store_sales"."ss_customer_sk" +) +SELECT + "ss"."ss_item_sk" AS "ss_item_sk", + ROUND("ss"."ss_qty" / COALESCE("ws"."ws_qty" + "cs"."cs_qty", 1), 2) AS "ratio", + "ss"."ss_qty" AS "store_qty", + "ss"."ss_wc" AS "store_wholesale_cost", + "ss"."ss_sp" AS "store_sales_price", + COALESCE("ws"."ws_qty", 0) + COALESCE("cs"."cs_qty", 0) AS "other_chan_qty", + COALESCE("ws"."ws_wc", 0) + COALESCE("cs"."cs_wc", 0) AS "other_chan_wholesale_cost", + COALESCE("ws"."ws_sp", 0) + COALESCE("cs"."cs_sp", 0) AS "other_chan_sales_price" +FROM "ss" +LEFT JOIN "ws" + ON "ws"."ws_customer_sk" = "ss"."ss_customer_sk" + AND "ws"."ws_item_sk" = "ss"."ss_item_sk" + AND "ws"."ws_sold_year" = "ss"."ss_sold_year" +LEFT JOIN "cs" + ON "cs"."cs_customer_sk" = "ss"."ss_customer_sk" + AND "cs"."cs_item_sk" = "cs"."cs_item_sk" + AND "cs"."cs_sold_year" = "ss"."ss_sold_year" +WHERE + "ss"."ss_sold_year" = 1999 + AND COALESCE("cs"."cs_qty", 0) > 0 + AND COALESCE("ws"."ws_qty", 0) > 0 +ORDER BY + "ss_item_sk", + "ss"."ss_qty" DESC, + "ss"."ss_wc" DESC, + "ss"."ss_sp" DESC, + "other_chan_qty", + "other_chan_wholesale_cost", + "other_chan_sales_price", + ROUND("ss"."ss_qty" / COALESCE("ws"."ws_qty" + "cs"."cs_qty", 1), 2) +LIMIT 100; + +-------------------------------------- +-- TPC-DS 79 +-------------------------------------- +SELECT c_last_name, + c_first_name, + Substr(s_city, 1, 30), + ss_ticket_number, + amt, + profit +FROM (SELECT ss_ticket_number, + ss_customer_sk, + store.s_city, + Sum(ss_coupon_amt) amt, + Sum(ss_net_profit) profit + FROM store_sales, + date_dim, + store, + household_demographics + WHERE store_sales.ss_sold_date_sk = date_dim.d_date_sk + AND store_sales.ss_store_sk = store.s_store_sk + AND store_sales.ss_hdemo_sk = household_demographics.hd_demo_sk + AND ( household_demographics.hd_dep_count = 8 + OR household_demographics.hd_vehicle_count > 4 ) + AND date_dim.d_dow = 1 + AND date_dim.d_year IN ( 2000, 2000 + 1, 2000 + 2 ) + AND store.s_number_employees BETWEEN 200 AND 295 + GROUP BY ss_ticket_number, + ss_customer_sk, + ss_addr_sk, + store.s_city) ms, + customer +WHERE ss_customer_sk = c_customer_sk +ORDER BY c_last_name, + c_first_name, + Substr(s_city, 1, 30), + profit +LIMIT 100; +WITH "ms" AS ( + SELECT + "store_sales"."ss_ticket_number" AS "ss_ticket_number", + "store_sales"."ss_customer_sk" AS "ss_customer_sk", + "store"."s_city" AS "s_city", + SUM("store_sales"."ss_coupon_amt") AS "amt", + SUM("store_sales"."ss_net_profit") AS "profit" + FROM "store_sales" AS "store_sales" + JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_dow" = 1 + AND "date_dim"."d_year" IN (2000, 2001, 2002) + AND "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "store" AS "store" + ON "store"."s_number_employees" <= 295 + AND "store"."s_number_employees" >= 200 + AND "store_sales"."ss_store_sk" = "store"."s_store_sk" + JOIN "household_demographics" AS "household_demographics" + ON ( + "household_demographics"."hd_dep_count" = 8 + OR "household_demographics"."hd_vehicle_count" > 4 + ) + AND "store_sales"."ss_hdemo_sk" = "household_demographics"."hd_demo_sk" + GROUP BY + "store_sales"."ss_ticket_number", + "store_sales"."ss_customer_sk", + "store_sales"."ss_addr_sk", + "store"."s_city" +) +SELECT + "customer"."c_last_name" AS "c_last_name", + "customer"."c_first_name" AS "c_first_name", + SUBSTR("ms"."s_city", 1, 30) AS "_col_2", + "ms"."ss_ticket_number" AS "ss_ticket_number", + "ms"."amt" AS "amt", + "ms"."profit" AS "profit" +FROM "ms" AS "ms" +JOIN "customer" AS "customer" + ON "ms"."ss_customer_sk" = "customer"."c_customer_sk" +ORDER BY + "c_last_name", + "c_first_name", + SUBSTR("ms"."s_city", 1, 30), + "profit" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 80 +-------------------------------------- +WITH ssr AS +( + SELECT s_store_id AS store_id, + Sum(ss_ext_sales_price) AS sales, + Sum(COALESCE(sr_return_amt, 0)) AS returns1, + Sum(ss_net_profit - COALESCE(sr_net_loss, 0)) AS profit + FROM store_sales + LEFT OUTER JOIN store_returns + ON ( + ss_item_sk = sr_item_sk + AND ss_ticket_number = sr_ticket_number), + date_dim, + store, + item, + promotion + WHERE ss_sold_date_sk = d_date_sk + AND d_date BETWEEN Cast('2000-08-26' AS DATE) AND ( + Cast('2000-08-26' AS DATE) + INTERVAL '30' day) + AND ss_store_sk = s_store_sk + AND ss_item_sk = i_item_sk + AND i_current_price > 50 + AND ss_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY s_store_id) , csr AS +( + SELECT cp_catalog_page_id AS catalog_page_id, + sum(cs_ext_sales_price) AS sales, + sum(COALESCE(cr_return_amount, 0)) AS returns1, + sum(cs_net_profit - COALESCE(cr_net_loss, 0)) AS profit + FROM catalog_sales + LEFT OUTER JOIN catalog_returns + ON ( + cs_item_sk = cr_item_sk + AND cs_order_number = cr_order_number), + date_dim, + catalog_page, + item, + promotion + WHERE cs_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-26' AS date) AND ( + cast('2000-08-26' AS date) + INTERVAL '30' day) + AND cs_catalog_page_sk = cp_catalog_page_sk + AND cs_item_sk = i_item_sk + AND i_current_price > 50 + AND cs_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY cp_catalog_page_id) , wsr AS +( + SELECT web_site_id, + sum(ws_ext_sales_price) AS sales, + sum(COALESCE(wr_return_amt, 0)) AS returns1, + sum(ws_net_profit - COALESCE(wr_net_loss, 0)) AS profit + FROM web_sales + LEFT OUTER JOIN web_returns + ON ( + ws_item_sk = wr_item_sk + AND ws_order_number = wr_order_number), + date_dim, + web_site, + item, + promotion + WHERE ws_sold_date_sk = d_date_sk + AND d_date BETWEEN cast('2000-08-26' AS date) AND ( + cast('2000-08-26' AS date) + INTERVAL '30' day) + AND ws_web_site_sk = web_site_sk + AND ws_item_sk = i_item_sk + AND i_current_price > 50 + AND ws_promo_sk = p_promo_sk + AND p_channel_tv = 'N' + GROUP BY web_site_id) +SELECT + channel , + id , + sum(sales) AS sales , + sum(returns1) AS returns1 , + sum(profit) AS profit +FROM ( + SELECT 'store channel' AS channel , + 'store' + || store_id AS id , + sales , + returns1 , + profit + FROM ssr + UNION ALL + SELECT 'catalog channel' AS channel , + 'catalog_page' + || catalog_page_id AS id , + sales , + returns1 , + profit + FROM csr + UNION ALL + SELECT 'web channel' AS channel , + 'web_site' + || web_site_id AS id , + sales , + returns1 , + profit + FROM wsr ) x +GROUP BY rollup (channel, id) +ORDER BY channel , + id +LIMIT 100; +WITH "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_date" AS "d_date" + FROM "date_dim" AS "date_dim" + WHERE + CAST("date_dim"."d_date" AS DATE) <= CAST('2000-09-25' AS DATE) + AND CAST("date_dim"."d_date" AS DATE) >= CAST('2000-08-26' AS DATE) +), "item_2" AS ( + SELECT + "item"."i_item_sk" AS "i_item_sk", + "item"."i_current_price" AS "i_current_price" + FROM "item" AS "item" + WHERE + "item"."i_current_price" > 50 +), "promotion_2" AS ( + SELECT + "promotion"."p_promo_sk" AS "p_promo_sk", + "promotion"."p_channel_tv" AS "p_channel_tv" + FROM "promotion" AS "promotion" + WHERE + "promotion"."p_channel_tv" = 'N' +), "ssr" AS ( + SELECT + "store"."s_store_id" AS "store_id", + SUM("store_sales"."ss_ext_sales_price") AS "sales", + SUM(COALESCE("store_returns"."sr_return_amt", 0)) AS "returns1", + SUM("store_sales"."ss_net_profit" - COALESCE("store_returns"."sr_net_loss", 0)) AS "profit" + FROM "store_sales" AS "store_sales" + LEFT JOIN "store_returns" AS "store_returns" + ON "store_sales"."ss_item_sk" = "store_returns"."sr_item_sk" + AND "store_sales"."ss_ticket_number" = "store_returns"."sr_ticket_number" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "store" AS "store" + ON "store_sales"."ss_store_sk" = "store"."s_store_sk" + JOIN "item_2" AS "item" + ON "store_sales"."ss_item_sk" = "item"."i_item_sk" + JOIN "promotion_2" AS "promotion" + ON "store_sales"."ss_promo_sk" = "promotion"."p_promo_sk" + GROUP BY + "store"."s_store_id" +), "csr" AS ( + SELECT + "catalog_page"."cp_catalog_page_id" AS "catalog_page_id", + SUM("catalog_sales"."cs_ext_sales_price") AS "sales", + SUM(COALESCE("catalog_returns"."cr_return_amount", 0)) AS "returns1", + SUM("catalog_sales"."cs_net_profit" - COALESCE("catalog_returns"."cr_net_loss", 0)) AS "profit" + FROM "catalog_sales" AS "catalog_sales" + LEFT JOIN "catalog_returns" AS "catalog_returns" + ON "catalog_sales"."cs_item_sk" = "catalog_returns"."cr_item_sk" + AND "catalog_sales"."cs_order_number" = "catalog_returns"."cr_order_number" + JOIN "date_dim_2" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "catalog_page" AS "catalog_page" + ON "catalog_sales"."cs_catalog_page_sk" = "catalog_page"."cp_catalog_page_sk" + JOIN "item_2" AS "item" + ON "catalog_sales"."cs_item_sk" = "item"."i_item_sk" + JOIN "promotion_2" AS "promotion" + ON "catalog_sales"."cs_promo_sk" = "promotion"."p_promo_sk" + GROUP BY + "catalog_page"."cp_catalog_page_id" +), "wsr" AS ( + SELECT + "web_site"."web_site_id" AS "web_site_id", + SUM("web_sales"."ws_ext_sales_price") AS "sales", + SUM(COALESCE("web_returns"."wr_return_amt", 0)) AS "returns1", + SUM("web_sales"."ws_net_profit" - COALESCE("web_returns"."wr_net_loss", 0)) AS "profit" + FROM "web_sales" AS "web_sales" + LEFT JOIN "web_returns" AS "web_returns" + ON "web_sales"."ws_item_sk" = "web_returns"."wr_item_sk" + AND "web_sales"."ws_order_number" = "web_returns"."wr_order_number" + JOIN "date_dim_2" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "web_site" AS "web_site" + ON "web_sales"."ws_web_site_sk" = "web_site"."web_site_sk" + JOIN "item_2" AS "item" + ON "web_sales"."ws_item_sk" = "item"."i_item_sk" + JOIN "promotion_2" AS "promotion" + ON "web_sales"."ws_promo_sk" = "promotion"."p_promo_sk" + GROUP BY + "web_site"."web_site_id" +), "cte_4" AS ( + SELECT + 'catalog channel' AS "channel", + 'catalog_page' || "csr"."catalog_page_id" AS "id", + "csr"."sales" AS "sales", + "csr"."returns1" AS "returns1", + "csr"."profit" AS "profit" + FROM "csr" + UNION ALL + SELECT + 'web channel' AS "channel", + 'web_site' || "wsr"."web_site_id" AS "id", + "wsr"."sales" AS "sales", + "wsr"."returns1" AS "returns1", + "wsr"."profit" AS "profit" + FROM "wsr" +), "x" AS ( + SELECT + 'store channel' AS "channel", + 'store' || "ssr"."store_id" AS "id", + "ssr"."sales" AS "sales", + "ssr"."returns1" AS "returns1", + "ssr"."profit" AS "profit" + FROM "ssr" + UNION ALL + SELECT + "cte_4"."channel" AS "channel", + "cte_4"."id" AS "id", + "cte_4"."sales" AS "sales", + "cte_4"."returns1" AS "returns1", + "cte_4"."profit" AS "profit" + FROM "cte_4" AS "cte_4" +) +SELECT + "x"."channel" AS "channel", + "x"."id" AS "id", + SUM("x"."sales") AS "sales", + SUM("x"."returns1") AS "returns1", + SUM("x"."profit") AS "profit" +FROM "x" AS "x" +GROUP BY +ROLLUP ( + "x"."channel", + "x"."id" +) +ORDER BY + "channel", + "id" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 81 +-------------------------------------- + +WITH customer_total_return + AS (SELECT cr_returning_customer_sk AS ctr_customer_sk, + ca_state AS ctr_state, + Sum(cr_return_amt_inc_tax) AS ctr_total_return + FROM catalog_returns, + date_dim, + customer_address + WHERE cr_returned_date_sk = d_date_sk + AND d_year = 1999 + AND cr_returning_addr_sk = ca_address_sk + GROUP BY cr_returning_customer_sk, + ca_state) +SELECT c_customer_id, + c_salutation, + c_first_name, + c_last_name, + ca_street_number, + ca_street_name, + ca_street_type, + ca_suite_number, + ca_city, + ca_county, + ca_state, + ca_zip, + ca_country, + ca_gmt_offset, + ca_location_type, + ctr_total_return +FROM customer_total_return ctr1, + customer_address, + customer +WHERE ctr1.ctr_total_return > (SELECT Avg(ctr_total_return) * 1.2 + FROM customer_total_return ctr2 + WHERE ctr1.ctr_state = ctr2.ctr_state) + AND ca_address_sk = c_current_addr_sk + AND ca_state = 'TX' + AND ctr1.ctr_customer_sk = c_customer_sk +ORDER BY c_customer_id, + c_salutation, + c_first_name, + c_last_name, + ca_street_number, + ca_street_name, + ca_street_type, + ca_suite_number, + ca_city, + ca_county, + ca_state, + ca_zip, + ca_country, + ca_gmt_offset, + ca_location_type, + ctr_total_return +LIMIT 100; +WITH "customer_total_return" AS ( + SELECT + "catalog_returns"."cr_returning_customer_sk" AS "ctr_customer_sk", + "customer_address"."ca_state" AS "ctr_state", + SUM("catalog_returns"."cr_return_amt_inc_tax") AS "ctr_total_return" + FROM "catalog_returns" AS "catalog_returns" + JOIN "date_dim" AS "date_dim" + ON "catalog_returns"."cr_returned_date_sk" = "date_dim"."d_date_sk" + AND "date_dim"."d_year" = 1999 + JOIN "customer_address" AS "customer_address" + ON "catalog_returns"."cr_returning_addr_sk" = "customer_address"."ca_address_sk" + GROUP BY + "catalog_returns"."cr_returning_customer_sk", + "customer_address"."ca_state" +), "_u_0" AS ( + SELECT + AVG("ctr2"."ctr_total_return") * 1.2 AS "_col_0", + "ctr2"."ctr_state" AS "_u_1" + FROM "customer_total_return" AS "ctr2" + GROUP BY + "ctr2"."ctr_state" +) +SELECT + "customer"."c_customer_id" AS "c_customer_id", + "customer"."c_salutation" AS "c_salutation", + "customer"."c_first_name" AS "c_first_name", + "customer"."c_last_name" AS "c_last_name", + "customer_address"."ca_street_number" AS "ca_street_number", + "customer_address"."ca_street_name" AS "ca_street_name", + "customer_address"."ca_street_type" AS "ca_street_type", + "customer_address"."ca_suite_number" AS "ca_suite_number", + "customer_address"."ca_city" AS "ca_city", + "customer_address"."ca_county" AS "ca_county", + "customer_address"."ca_state" AS "ca_state", + "customer_address"."ca_zip" AS "ca_zip", + "customer_address"."ca_country" AS "ca_country", + "customer_address"."ca_gmt_offset" AS "ca_gmt_offset", + "customer_address"."ca_location_type" AS "ca_location_type", + "ctr1"."ctr_total_return" AS "ctr_total_return" +FROM "customer_total_return" AS "ctr1" +LEFT JOIN "_u_0" AS "_u_0" + ON "ctr1"."ctr_state" = "_u_0"."_u_1" +JOIN "customer" AS "customer" + ON "ctr1"."ctr_customer_sk" = "customer"."c_customer_sk" +JOIN "customer_address" AS "customer_address" + ON "customer_address"."ca_address_sk" = "customer"."c_current_addr_sk" + AND "customer_address"."ca_state" = 'TX' +WHERE + "ctr1"."ctr_total_return" > "_u_0"."_col_0" +ORDER BY + "c_customer_id", + "c_salutation", + "c_first_name", + "c_last_name", + "ca_street_number", + "ca_street_name", + "ca_street_type", + "ca_suite_number", + "ca_city", + "ca_county", + "ca_state", + "ca_zip", + "ca_country", + "ca_gmt_offset", + "ca_location_type", + "ctr_total_return" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 82 +-------------------------------------- + +SELECT + i_item_id , + i_item_desc , + i_current_price +FROM item, + inventory, + date_dim, + store_sales +WHERE i_current_price BETWEEN 63 AND 63+30 +AND inv_item_sk = i_item_sk +AND d_date_sk=inv_date_sk +AND d_date BETWEEN Cast('1998-04-27' AS DATE) AND ( + Cast('1998-04-27' AS DATE) + INTERVAL '60' day) +AND i_manufact_id IN (57,293,427,320) +AND inv_quantity_on_hand BETWEEN 100 AND 500 +AND ss_item_sk = i_item_sk +GROUP BY i_item_id, + i_item_desc, + i_current_price +ORDER BY i_item_id +LIMIT 100; +SELECT + "item"."i_item_id" AS "i_item_id", + "item"."i_item_desc" AS "i_item_desc", + "item"."i_current_price" AS "i_current_price" +FROM "item" AS "item" +JOIN "inventory" AS "inventory" + ON "inventory"."inv_item_sk" = "item"."i_item_sk" + AND "inventory"."inv_quantity_on_hand" <= 500 + AND "inventory"."inv_quantity_on_hand" >= 100 +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_date_sk" = "inventory"."inv_date_sk" + AND CAST("date_dim"."d_date" AS DATE) <= CAST('1998-06-26' AS DATE) + AND CAST("date_dim"."d_date" AS DATE) >= CAST('1998-04-27' AS DATE) +JOIN "store_sales" AS "store_sales" + ON "store_sales"."ss_item_sk" = "item"."i_item_sk" +WHERE + "item"."i_current_price" <= 93 + AND "item"."i_current_price" >= 63 + AND "item"."i_manufact_id" IN (57, 293, 427, 320) +GROUP BY + "item"."i_item_id", + "item"."i_item_desc", + "item"."i_current_price" +ORDER BY + "i_item_id" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 83 +-------------------------------------- +WITH sr_items + AS (SELECT i_item_id item_id, + Sum(sr_return_quantity) sr_item_qty + FROM store_returns, + item, + date_dim + WHERE sr_item_sk = i_item_sk + AND d_date IN (SELECT d_date + FROM date_dim + WHERE d_week_seq IN (SELECT d_week_seq + FROM date_dim + WHERE + d_date IN ( '1999-06-30', + '1999-08-28', + '1999-11-18' + ))) + AND sr_returned_date_sk = d_date_sk + GROUP BY i_item_id), + cr_items + AS (SELECT i_item_id item_id, + Sum(cr_return_quantity) cr_item_qty + FROM catalog_returns, + item, + date_dim + WHERE cr_item_sk = i_item_sk + AND d_date IN (SELECT d_date + FROM date_dim + WHERE d_week_seq IN (SELECT d_week_seq + FROM date_dim + WHERE + d_date IN ( '1999-06-30', + '1999-08-28', + '1999-11-18' + ))) + AND cr_returned_date_sk = d_date_sk + GROUP BY i_item_id), + wr_items + AS (SELECT i_item_id item_id, + Sum(wr_return_quantity) wr_item_qty + FROM web_returns, + item, + date_dim + WHERE wr_item_sk = i_item_sk + AND d_date IN (SELECT d_date + FROM date_dim + WHERE d_week_seq IN (SELECT d_week_seq + FROM date_dim + WHERE + d_date IN ( '1999-06-30', + '1999-08-28', + '1999-11-18' + ))) + AND wr_returned_date_sk = d_date_sk + GROUP BY i_item_id) +SELECT sr_items.item_id, + sr_item_qty, + sr_item_qty / ( sr_item_qty + cr_item_qty + wr_item_qty ) / 3.0 * + 100 sr_dev, + cr_item_qty, + cr_item_qty / ( sr_item_qty + cr_item_qty + wr_item_qty ) / 3.0 * + 100 cr_dev, + wr_item_qty, + wr_item_qty / ( sr_item_qty + cr_item_qty + wr_item_qty ) / 3.0 * + 100 wr_dev, + ( sr_item_qty + cr_item_qty + wr_item_qty ) / 3.0 + average +FROM sr_items, + cr_items, + wr_items +WHERE sr_items.item_id = cr_items.item_id + AND sr_items.item_id = wr_items.item_id +ORDER BY sr_items.item_id, + sr_item_qty +LIMIT 100; +WITH "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_date" AS "d_date" + FROM "date_dim" AS "date_dim" +), "_u_0" AS ( + SELECT + "date_dim"."d_week_seq" AS "d_week_seq" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_date" IN ('1999-06-30', '1999-08-28', '1999-11-18') + GROUP BY + "date_dim"."d_week_seq" +), "_u_1" AS ( + SELECT + "date_dim"."d_date" AS "d_date" + FROM "date_dim" AS "date_dim" + LEFT JOIN "_u_0" AS "_u_0" + ON "date_dim"."d_week_seq" = "_u_0"."d_week_seq" + WHERE + NOT "_u_0"."d_week_seq" IS NULL + GROUP BY + "date_dim"."d_date" +), "item_2" AS ( + SELECT + "item"."i_item_sk" AS "i_item_sk", + "item"."i_item_id" AS "i_item_id" + FROM "item" AS "item" +), "sr_items" AS ( + SELECT + "item"."i_item_id" AS "item_id", + SUM("store_returns"."sr_return_quantity") AS "sr_item_qty" + FROM "store_returns" AS "store_returns" + JOIN "date_dim_2" AS "date_dim" + ON "store_returns"."sr_returned_date_sk" = "date_dim"."d_date_sk" + LEFT JOIN "_u_1" AS "_u_1" + ON "date_dim"."d_date" = "_u_1"."d_date" + JOIN "item_2" AS "item" + ON "store_returns"."sr_item_sk" = "item"."i_item_sk" + WHERE + NOT "_u_1"."d_date" IS NULL + GROUP BY + "item"."i_item_id" +), "_u_3" AS ( + SELECT + "date_dim"."d_date" AS "d_date" + FROM "date_dim" AS "date_dim" + LEFT JOIN "_u_0" AS "_u_2" + ON "date_dim"."d_week_seq" = "_u_2"."d_week_seq" + WHERE + NOT "_u_2"."d_week_seq" IS NULL + GROUP BY + "date_dim"."d_date" +), "cr_items" AS ( + SELECT + "item"."i_item_id" AS "item_id", + SUM("catalog_returns"."cr_return_quantity") AS "cr_item_qty" + FROM "catalog_returns" AS "catalog_returns" + JOIN "date_dim_2" AS "date_dim" + ON "catalog_returns"."cr_returned_date_sk" = "date_dim"."d_date_sk" + LEFT JOIN "_u_3" AS "_u_3" + ON "date_dim"."d_date" = "_u_3"."d_date" + JOIN "item_2" AS "item" + ON "catalog_returns"."cr_item_sk" = "item"."i_item_sk" + WHERE + NOT "_u_3"."d_date" IS NULL + GROUP BY + "item"."i_item_id" +), "_u_5" AS ( + SELECT + "date_dim"."d_date" AS "d_date" + FROM "date_dim" AS "date_dim" + LEFT JOIN "_u_0" AS "_u_4" + ON "date_dim"."d_week_seq" = "_u_4"."d_week_seq" + WHERE + NOT "_u_4"."d_week_seq" IS NULL + GROUP BY + "date_dim"."d_date" +), "wr_items" AS ( + SELECT + "item"."i_item_id" AS "item_id", + SUM("web_returns"."wr_return_quantity") AS "wr_item_qty" + FROM "web_returns" AS "web_returns" + JOIN "date_dim_2" AS "date_dim" + ON "web_returns"."wr_returned_date_sk" = "date_dim"."d_date_sk" + LEFT JOIN "_u_5" AS "_u_5" + ON "date_dim"."d_date" = "_u_5"."d_date" + JOIN "item_2" AS "item" + ON "web_returns"."wr_item_sk" = "item"."i_item_sk" + WHERE + NOT "_u_5"."d_date" IS NULL + GROUP BY + "item"."i_item_id" +) +SELECT + "sr_items"."item_id" AS "item_id", + "sr_items"."sr_item_qty" AS "sr_item_qty", + "sr_items"."sr_item_qty" / ( + "sr_items"."sr_item_qty" + "cr_items"."cr_item_qty" + "wr_items"."wr_item_qty" + ) / 3.0 * 100 AS "sr_dev", + "cr_items"."cr_item_qty" AS "cr_item_qty", + "cr_items"."cr_item_qty" / ( + "sr_items"."sr_item_qty" + "cr_items"."cr_item_qty" + "wr_items"."wr_item_qty" + ) / 3.0 * 100 AS "cr_dev", + "wr_items"."wr_item_qty" AS "wr_item_qty", + "wr_items"."wr_item_qty" / ( + "sr_items"."sr_item_qty" + "cr_items"."cr_item_qty" + "wr_items"."wr_item_qty" + ) / 3.0 * 100 AS "wr_dev", + ( + "sr_items"."sr_item_qty" + "cr_items"."cr_item_qty" + "wr_items"."wr_item_qty" + ) / 3.0 AS "average" +FROM "sr_items" +JOIN "cr_items" + ON "sr_items"."item_id" = "cr_items"."item_id" +JOIN "wr_items" + ON "sr_items"."item_id" = "wr_items"."item_id" +ORDER BY + "sr_items"."item_id", + "sr_item_qty" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 84 +-------------------------------------- +SELECT c_customer_id AS customer_id, + c_last_name + || ', ' + || c_first_name AS customername +FROM customer, + customer_address, + customer_demographics, + household_demographics, + income_band, + store_returns +WHERE ca_city = 'Green Acres' + AND c_current_addr_sk = ca_address_sk + AND ib_lower_bound >= 54986 + AND ib_upper_bound <= 54986 + 50000 + AND ib_income_band_sk = hd_income_band_sk + AND cd_demo_sk = c_current_cdemo_sk + AND hd_demo_sk = c_current_hdemo_sk + AND sr_cdemo_sk = cd_demo_sk +ORDER BY c_customer_id +LIMIT 100; +SELECT + "customer"."c_customer_id" AS "customer_id", + "customer"."c_last_name" || ', ' || "customer"."c_first_name" AS "customername" +FROM "customer" AS "customer" +JOIN "customer_address" AS "customer_address" + ON "customer"."c_current_addr_sk" = "customer_address"."ca_address_sk" + AND "customer_address"."ca_city" = 'Green Acres' +JOIN "customer_demographics" AS "customer_demographics" + ON "customer_demographics"."cd_demo_sk" = "customer"."c_current_cdemo_sk" +JOIN "household_demographics" AS "household_demographics" + ON "household_demographics"."hd_demo_sk" = "customer"."c_current_hdemo_sk" +JOIN "income_band" AS "income_band" + ON "income_band"."ib_income_band_sk" = "household_demographics"."hd_income_band_sk" + AND "income_band"."ib_lower_bound" >= 54986 + AND "income_band"."ib_upper_bound" <= 104986 +JOIN "store_returns" AS "store_returns" + ON "store_returns"."sr_cdemo_sk" = "customer_demographics"."cd_demo_sk" +ORDER BY + "customer"."c_customer_id" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 85 +-------------------------------------- +SELECT Substr(r_reason_desc, 1, 20), + Avg(ws_quantity), + Avg(wr_refunded_cash), + Avg(wr_fee) +FROM web_sales, + web_returns, + web_page, + customer_demographics cd1, + customer_demographics cd2, + customer_address, + date_dim, + reason +WHERE ws_web_page_sk = wp_web_page_sk + AND ws_item_sk = wr_item_sk + AND ws_order_number = wr_order_number + AND ws_sold_date_sk = d_date_sk + AND d_year = 2001 + AND cd1.cd_demo_sk = wr_refunded_cdemo_sk + AND cd2.cd_demo_sk = wr_returning_cdemo_sk + AND ca_address_sk = wr_refunded_addr_sk + AND r_reason_sk = wr_reason_sk + AND ( ( cd1.cd_marital_status = 'W' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = 'Primary' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 100.00 AND 150.00 ) + OR ( cd1.cd_marital_status = 'D' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = 'Secondary' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 50.00 AND 100.00 ) + OR ( cd1.cd_marital_status = 'M' + AND cd1.cd_marital_status = cd2.cd_marital_status + AND cd1.cd_education_status = 'Advanced Degree' + AND cd1.cd_education_status = cd2.cd_education_status + AND ws_sales_price BETWEEN 150.00 AND 200.00 ) ) + AND ( ( ca_country = 'United States' + AND ca_state IN ( 'KY', 'ME', 'IL' ) + AND ws_net_profit BETWEEN 100 AND 200 ) + OR ( ca_country = 'United States' + AND ca_state IN ( 'OK', 'NE', 'MN' ) + AND ws_net_profit BETWEEN 150 AND 300 ) + OR ( ca_country = 'United States' + AND ca_state IN ( 'FL', 'WI', 'KS' ) + AND ws_net_profit BETWEEN 50 AND 250 ) ) +GROUP BY r_reason_desc +ORDER BY Substr(r_reason_desc, 1, 20), + Avg(ws_quantity), + Avg(wr_refunded_cash), + Avg(wr_fee) +LIMIT 100; +WITH "cd2" AS ( + SELECT + "customer_demographics"."cd_demo_sk" AS "cd_demo_sk", + "customer_demographics"."cd_marital_status" AS "cd_marital_status", + "customer_demographics"."cd_education_status" AS "cd_education_status" + FROM "customer_demographics" AS "customer_demographics" +) +SELECT + SUBSTR("reason"."r_reason_desc", 1, 20) AS "_col_0", + AVG("web_sales"."ws_quantity") AS "_col_1", + AVG("web_returns"."wr_refunded_cash") AS "_col_2", + AVG("web_returns"."wr_fee") AS "_col_3" +FROM "web_sales" AS "web_sales" +JOIN "web_returns" AS "web_returns" + ON "web_sales"."ws_item_sk" = "web_returns"."wr_item_sk" + AND "web_sales"."ws_order_number" = "web_returns"."wr_order_number" +JOIN "web_page" AS "web_page" + ON "web_sales"."ws_web_page_sk" = "web_page"."wp_web_page_sk" +JOIN "cd2" AS "cd2" + ON "cd2"."cd_demo_sk" = "web_returns"."wr_returning_cdemo_sk" +JOIN "cd2" AS "cd1" + ON "cd1"."cd_demo_sk" = "web_returns"."wr_refunded_cdemo_sk" + AND ( + ( + "cd1"."cd_education_status" = "cd2"."cd_education_status" + AND "cd1"."cd_education_status" = 'Advanced Degree' + AND "cd1"."cd_marital_status" = "cd2"."cd_marital_status" + AND "cd1"."cd_marital_status" = 'M' + AND "web_sales"."ws_sales_price" <= 200.00 + AND "web_sales"."ws_sales_price" >= 150.00 + ) + OR ( + "cd1"."cd_education_status" = "cd2"."cd_education_status" + AND "cd1"."cd_education_status" = 'Primary' + AND "cd1"."cd_marital_status" = "cd2"."cd_marital_status" + AND "cd1"."cd_marital_status" = 'W' + AND "web_sales"."ws_sales_price" <= 150.00 + AND "web_sales"."ws_sales_price" >= 100.00 + ) + OR ( + "cd1"."cd_education_status" = "cd2"."cd_education_status" + AND "cd1"."cd_education_status" = 'Secondary' + AND "cd1"."cd_marital_status" = "cd2"."cd_marital_status" + AND "cd1"."cd_marital_status" = 'D' + AND "web_sales"."ws_sales_price" <= 100.00 + AND "web_sales"."ws_sales_price" >= 50.00 + ) + ) +JOIN "customer_address" AS "customer_address" + ON "customer_address"."ca_address_sk" = "web_returns"."wr_refunded_addr_sk" + AND ( + ( + "customer_address"."ca_country" = 'United States' + AND "customer_address"."ca_state" IN ('FL', 'WI', 'KS') + AND "web_sales"."ws_net_profit" <= 250 + AND "web_sales"."ws_net_profit" >= 50 + ) + OR ( + "customer_address"."ca_country" = 'United States' + AND "customer_address"."ca_state" IN ('KY', 'ME', 'IL') + AND "web_sales"."ws_net_profit" <= 200 + AND "web_sales"."ws_net_profit" >= 100 + ) + OR ( + "customer_address"."ca_country" = 'United States' + AND "customer_address"."ca_state" IN ('OK', 'NE', 'MN') + AND "web_sales"."ws_net_profit" <= 300 + AND "web_sales"."ws_net_profit" >= 150 + ) + ) +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_year" = 2001 AND "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" +JOIN "reason" AS "reason" + ON "reason"."r_reason_sk" = "web_returns"."wr_reason_sk" +GROUP BY + "reason"."r_reason_desc" +ORDER BY + SUBSTR("reason"."r_reason_desc", 1, 20), + AVG("web_sales"."ws_quantity"), + AVG("web_returns"."wr_refunded_cash"), + AVG("web_returns"."wr_fee") +LIMIT 100; + +-------------------------------------- +-- TPC-DS 86 +-------------------------------------- +SELECT Sum(ws_net_paid) AS total_sum, + i_category, + i_class, + Grouping(i_category) + Grouping(i_class) AS lochierarchy, + Rank() + OVER ( + partition BY Grouping(i_category)+Grouping(i_class), CASE + WHEN Grouping( + i_class) = 0 THEN i_category END + ORDER BY Sum(ws_net_paid) DESC) AS rank_within_parent +FROM web_sales, + date_dim d1, + item +WHERE d1.d_month_seq BETWEEN 1183 AND 1183 + 11 + AND d1.d_date_sk = ws_sold_date_sk + AND i_item_sk = ws_item_sk +GROUP BY rollup( i_category, i_class ) +ORDER BY lochierarchy DESC, + CASE + WHEN lochierarchy = 0 THEN i_category + END, + rank_within_parent +LIMIT 100; +SELECT + SUM("web_sales"."ws_net_paid") AS "total_sum", + "item"."i_category" AS "i_category", + "item"."i_class" AS "i_class", + GROUPING("item"."i_category") + GROUPING("item"."i_class") AS "lochierarchy", + RANK() OVER (PARTITION BY GROUPING("item"."i_category") + GROUPING("item"."i_class"), CASE WHEN GROUPING("item"."i_class") = 0 THEN "item"."i_category" END ORDER BY SUM("web_sales"."ws_net_paid") DESC) AS "rank_within_parent" +FROM "web_sales" AS "web_sales" +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_date_sk" = "web_sales"."ws_sold_date_sk" + AND "date_dim"."d_month_seq" <= 1194 + AND "date_dim"."d_month_seq" >= 1183 +JOIN "item" AS "item" + ON "item"."i_item_sk" = "web_sales"."ws_item_sk" +GROUP BY +ROLLUP ( + "item"."i_category", + "item"."i_class" +) +ORDER BY + "lochierarchy" DESC, + CASE WHEN "lochierarchy" = 0 THEN "item"."i_category" END, + "rank_within_parent" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 87 +-------------------------------------- +select count(*) +from ((select distinct c_last_name, c_first_name, d_date + from store_sales, date_dim, customer + where store_sales.ss_sold_date_sk = date_dim.d_date_sk + and store_sales.ss_customer_sk = customer.c_customer_sk + and d_month_seq between 1188 and 1188+11) + except + (select distinct c_last_name, c_first_name, d_date + from catalog_sales, date_dim, customer + where catalog_sales.cs_sold_date_sk = date_dim.d_date_sk + and catalog_sales.cs_bill_customer_sk = customer.c_customer_sk + and d_month_seq between 1188 and 1188+11) + except + (select distinct c_last_name, c_first_name, d_date + from web_sales, date_dim, customer + where web_sales.ws_sold_date_sk = date_dim.d_date_sk + and web_sales.ws_bill_customer_sk = customer.c_customer_sk + and d_month_seq between 1188 and 1188+11) +) cool_cust +; +WITH "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_date" AS "d_date", + "date_dim"."d_month_seq" AS "d_month_seq" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_month_seq" <= 1199 AND "date_dim"."d_month_seq" >= 1188 +), "customer_2" AS ( + SELECT + "customer"."c_customer_sk" AS "c_customer_sk", + "customer"."c_first_name" AS "c_first_name", + "customer"."c_last_name" AS "c_last_name" + FROM "customer" AS "customer" +), "cte" AS ( + SELECT DISTINCT + "customer"."c_last_name" AS "c_last_name", + "customer"."c_first_name" AS "c_first_name", + "date_dim"."d_date" AS "d_date" + FROM "store_sales" AS "store_sales" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "customer_2" AS "customer" + ON "store_sales"."ss_customer_sk" = "customer"."c_customer_sk" +), "cte_2" AS ( + SELECT DISTINCT + "customer"."c_last_name" AS "c_last_name", + "customer"."c_first_name" AS "c_first_name", + "date_dim"."d_date" AS "d_date" + FROM "catalog_sales" AS "catalog_sales" + JOIN "date_dim_2" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "customer_2" AS "customer" + ON "catalog_sales"."cs_bill_customer_sk" = "customer"."c_customer_sk" +), "cte_3" AS ( + SELECT DISTINCT + "customer"."c_last_name" AS "c_last_name", + "customer"."c_first_name" AS "c_first_name", + "date_dim"."d_date" AS "d_date" + FROM "web_sales" AS "web_sales" + JOIN "date_dim_2" AS "date_dim" + ON "web_sales"."ws_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "customer_2" AS "customer" + ON "web_sales"."ws_bill_customer_sk" = "customer"."c_customer_sk" +), "cte_4" AS ( + ( + SELECT + "cte_2"."c_last_name" AS "c_last_name", + "cte_2"."c_first_name" AS "c_first_name", + "cte_2"."d_date" AS "d_date" + FROM "cte_2" AS "cte_2" + ) + EXCEPT + ( + SELECT + "cte_3"."c_last_name" AS "c_last_name", + "cte_3"."c_first_name" AS "c_first_name", + "cte_3"."d_date" AS "d_date" + FROM "cte_3" AS "cte_3" + ) +), "cool_cust" AS ( + ( + SELECT + "cte"."c_last_name" AS "c_last_name", + "cte"."c_first_name" AS "c_first_name", + "cte"."d_date" AS "d_date" + FROM "cte" AS "cte" + ) + EXCEPT + SELECT + "cte_4"."c_last_name" AS "c_last_name", + "cte_4"."c_first_name" AS "c_first_name", + "cte_4"."d_date" AS "d_date" + FROM "cte_4" AS "cte_4" +) +SELECT + COUNT(*) AS "_col_0" +FROM "cool_cust" AS "cool_cust"; + +-------------------------------------- +-- TPC-DS 88 +-------------------------------------- +select * +from + (select count(*) h8_30_to_9 + from store_sales, household_demographics , time_dim, store + where ss_sold_time_sk = time_dim.t_time_sk + and ss_hdemo_sk = household_demographics.hd_demo_sk + and ss_store_sk = s_store_sk + and time_dim.t_hour = 8 + and time_dim.t_minute >= 30 + and ((household_demographics.hd_dep_count = -1 and household_demographics.hd_vehicle_count<=-1+2) or + (household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2) or + (household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2)) + and store.s_store_name = 'ese') s1, + (select count(*) h9_to_9_30 + from store_sales, household_demographics , time_dim, store + where ss_sold_time_sk = time_dim.t_time_sk + and ss_hdemo_sk = household_demographics.hd_demo_sk + and ss_store_sk = s_store_sk + and time_dim.t_hour = 9 + and time_dim.t_minute < 30 + and ((household_demographics.hd_dep_count = -1 and household_demographics.hd_vehicle_count<=-1+2) or + (household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2) or + (household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2)) + and store.s_store_name = 'ese') s2, + (select count(*) h9_30_to_10 + from store_sales, household_demographics , time_dim, store + where ss_sold_time_sk = time_dim.t_time_sk + and ss_hdemo_sk = household_demographics.hd_demo_sk + and ss_store_sk = s_store_sk + and time_dim.t_hour = 9 + and time_dim.t_minute >= 30 + and ((household_demographics.hd_dep_count = -1 and household_demographics.hd_vehicle_count<=-1+2) or + (household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2) or + (household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2)) + and store.s_store_name = 'ese') s3, + (select count(*) h10_to_10_30 + from store_sales, household_demographics , time_dim, store + where ss_sold_time_sk = time_dim.t_time_sk + and ss_hdemo_sk = household_demographics.hd_demo_sk + and ss_store_sk = s_store_sk + and time_dim.t_hour = 10 + and time_dim.t_minute < 30 + and ((household_demographics.hd_dep_count = -1 and household_demographics.hd_vehicle_count<=-1+2) or + (household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2) or + (household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2)) + and store.s_store_name = 'ese') s4, + (select count(*) h10_30_to_11 + from store_sales, household_demographics , time_dim, store + where ss_sold_time_sk = time_dim.t_time_sk + and ss_hdemo_sk = household_demographics.hd_demo_sk + and ss_store_sk = s_store_sk + and time_dim.t_hour = 10 + and time_dim.t_minute >= 30 + and ((household_demographics.hd_dep_count = -1 and household_demographics.hd_vehicle_count<=-1+2) or + (household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2) or + (household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2)) + and store.s_store_name = 'ese') s5, + (select count(*) h11_to_11_30 + from store_sales, household_demographics , time_dim, store + where ss_sold_time_sk = time_dim.t_time_sk + and ss_hdemo_sk = household_demographics.hd_demo_sk + and ss_store_sk = s_store_sk + and time_dim.t_hour = 11 + and time_dim.t_minute < 30 + and ((household_demographics.hd_dep_count = -1 and household_demographics.hd_vehicle_count<=-1+2) or + (household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2) or + (household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2)) + and store.s_store_name = 'ese') s6, + (select count(*) h11_30_to_12 + from store_sales, household_demographics , time_dim, store + where ss_sold_time_sk = time_dim.t_time_sk + and ss_hdemo_sk = household_demographics.hd_demo_sk + and ss_store_sk = s_store_sk + and time_dim.t_hour = 11 + and time_dim.t_minute >= 30 + and ((household_demographics.hd_dep_count = -1 and household_demographics.hd_vehicle_count<=-1+2) or + (household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2) or + (household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2)) + and store.s_store_name = 'ese') s7, + (select count(*) h12_to_12_30 + from store_sales, household_demographics , time_dim, store + where ss_sold_time_sk = time_dim.t_time_sk + and ss_hdemo_sk = household_demographics.hd_demo_sk + and ss_store_sk = s_store_sk + and time_dim.t_hour = 12 + and time_dim.t_minute < 30 + and ((household_demographics.hd_dep_count = -1 and household_demographics.hd_vehicle_count<=-1+2) or + (household_demographics.hd_dep_count = 2 and household_demographics.hd_vehicle_count<=2+2) or + (household_demographics.hd_dep_count = 3 and household_demographics.hd_vehicle_count<=3+2)) + and store.s_store_name = 'ese') s8 +; +WITH "store_sales_2" AS ( + SELECT + "store_sales"."ss_sold_time_sk" AS "ss_sold_time_sk", + "store_sales"."ss_hdemo_sk" AS "ss_hdemo_sk", + "store_sales"."ss_store_sk" AS "ss_store_sk" + FROM "store_sales" AS "store_sales" +), "household_demographics_2" AS ( + SELECT + "household_demographics"."hd_demo_sk" AS "hd_demo_sk", + "household_demographics"."hd_dep_count" AS "hd_dep_count", + "household_demographics"."hd_vehicle_count" AS "hd_vehicle_count" + FROM "household_demographics" AS "household_demographics" + WHERE + ( + "household_demographics"."hd_dep_count" = -1 + OR "household_demographics"."hd_dep_count" = 2 + OR "household_demographics"."hd_dep_count" = 3 + ) + AND ( + "household_demographics"."hd_dep_count" = 2 + OR "household_demographics"."hd_dep_count" = 3 + OR "household_demographics"."hd_vehicle_count" <= 1 + ) + AND ( + "household_demographics"."hd_dep_count" = 3 + OR "household_demographics"."hd_vehicle_count" <= 4 + ) + AND "household_demographics"."hd_vehicle_count" <= 5 +), "store_2" AS ( + SELECT + "store"."s_store_sk" AS "s_store_sk", + "store"."s_store_name" AS "s_store_name" + FROM "store" AS "store" + WHERE + "store"."s_store_name" = 'ese' +), "s1" AS ( + SELECT + COUNT(*) AS "h8_30_to_9" + FROM "store_sales_2" AS "store_sales" + JOIN "household_demographics_2" AS "household_demographics" + ON "store_sales"."ss_hdemo_sk" = "household_demographics"."hd_demo_sk" + JOIN "time_dim" AS "time_dim" + ON "store_sales"."ss_sold_time_sk" = "time_dim"."t_time_sk" + AND "time_dim"."t_hour" = 8 + AND "time_dim"."t_minute" >= 30 + JOIN "store_2" AS "store" + ON "store_sales"."ss_store_sk" = "store"."s_store_sk" +), "s2" AS ( + SELECT + COUNT(*) AS "h9_to_9_30" + FROM "store_sales_2" AS "store_sales", "household_demographics_2" AS "household_demographics", "time_dim" AS "time_dim", "store_2" AS "store" + WHERE + "store_sales"."ss_hdemo_sk" = "household_demographics"."hd_demo_sk" + AND "store_sales"."ss_sold_time_sk" = "time_dim"."t_time_sk" + AND "store_sales"."ss_store_sk" = "store"."s_store_sk" + AND "time_dim"."t_hour" = 9 + AND "time_dim"."t_minute" < 30 +), "s3" AS ( + SELECT + COUNT(*) AS "h9_30_to_10" + FROM "store_sales_2" AS "store_sales", "household_demographics_2" AS "household_demographics", "time_dim" AS "time_dim", "store_2" AS "store" + WHERE + "store_sales"."ss_hdemo_sk" = "household_demographics"."hd_demo_sk" + AND "store_sales"."ss_sold_time_sk" = "time_dim"."t_time_sk" + AND "store_sales"."ss_store_sk" = "store"."s_store_sk" + AND "time_dim"."t_hour" = 9 + AND "time_dim"."t_minute" >= 30 +), "s4" AS ( + SELECT + COUNT(*) AS "h10_to_10_30" + FROM "store_sales_2" AS "store_sales", "household_demographics_2" AS "household_demographics", "time_dim" AS "time_dim", "store_2" AS "store" + WHERE + "store_sales"."ss_hdemo_sk" = "household_demographics"."hd_demo_sk" + AND "store_sales"."ss_sold_time_sk" = "time_dim"."t_time_sk" + AND "store_sales"."ss_store_sk" = "store"."s_store_sk" + AND "time_dim"."t_hour" = 10 + AND "time_dim"."t_minute" < 30 +), "s5" AS ( + SELECT + COUNT(*) AS "h10_30_to_11" + FROM "store_sales_2" AS "store_sales", "household_demographics_2" AS "household_demographics", "time_dim" AS "time_dim", "store_2" AS "store" + WHERE + "store_sales"."ss_hdemo_sk" = "household_demographics"."hd_demo_sk" + AND "store_sales"."ss_sold_time_sk" = "time_dim"."t_time_sk" + AND "store_sales"."ss_store_sk" = "store"."s_store_sk" + AND "time_dim"."t_hour" = 10 + AND "time_dim"."t_minute" >= 30 +), "s6" AS ( + SELECT + COUNT(*) AS "h11_to_11_30" + FROM "store_sales_2" AS "store_sales", "household_demographics_2" AS "household_demographics", "time_dim" AS "time_dim", "store_2" AS "store" + WHERE + "store_sales"."ss_hdemo_sk" = "household_demographics"."hd_demo_sk" + AND "store_sales"."ss_sold_time_sk" = "time_dim"."t_time_sk" + AND "store_sales"."ss_store_sk" = "store"."s_store_sk" + AND "time_dim"."t_hour" = 11 + AND "time_dim"."t_minute" < 30 +), "s7" AS ( + SELECT + COUNT(*) AS "h11_30_to_12" + FROM "store_sales_2" AS "store_sales", "household_demographics_2" AS "household_demographics", "time_dim" AS "time_dim", "store_2" AS "store" + WHERE + "store_sales"."ss_hdemo_sk" = "household_demographics"."hd_demo_sk" + AND "store_sales"."ss_sold_time_sk" = "time_dim"."t_time_sk" + AND "store_sales"."ss_store_sk" = "store"."s_store_sk" + AND "time_dim"."t_hour" = 11 + AND "time_dim"."t_minute" >= 30 +), "s8" AS ( + SELECT + COUNT(*) AS "h12_to_12_30" + FROM "store_sales_2" AS "store_sales", "household_demographics_2" AS "household_demographics", "time_dim" AS "time_dim", "store_2" AS "store" + WHERE + "store_sales"."ss_hdemo_sk" = "household_demographics"."hd_demo_sk" + AND "store_sales"."ss_sold_time_sk" = "time_dim"."t_time_sk" + AND "store_sales"."ss_store_sk" = "store"."s_store_sk" + AND "time_dim"."t_hour" = 12 + AND "time_dim"."t_minute" < 30 +) +SELECT + "s1"."h8_30_to_9" AS "h8_30_to_9", + "s2"."h9_to_9_30" AS "h9_to_9_30", + "s3"."h9_30_to_10" AS "h9_30_to_10", + "s4"."h10_to_10_30" AS "h10_to_10_30", + "s5"."h10_30_to_11" AS "h10_30_to_11", + "s6"."h11_to_11_30" AS "h11_to_11_30", + "s7"."h11_30_to_12" AS "h11_30_to_12", + "s8"."h12_to_12_30" AS "h12_to_12_30" +FROM "s1" AS "s1" +CROSS JOIN "s2" AS "s2" +CROSS JOIN "s3" AS "s3" +CROSS JOIN "s4" AS "s4" +CROSS JOIN "s5" AS "s5" +CROSS JOIN "s6" AS "s6" +CROSS JOIN "s7" AS "s7" +CROSS JOIN "s8" AS "s8"; + +-------------------------------------- +-- TPC-DS 89 +-------------------------------------- +SELECT * +FROM (SELECT i_category, + i_class, + i_brand, + s_store_name, + s_company_name, + d_moy, + Sum(ss_sales_price) sum_sales, + Avg(Sum(ss_sales_price)) + OVER ( + partition BY i_category, i_brand, s_store_name, s_company_name + ) + avg_monthly_sales + FROM item, + store_sales, + date_dim, + store + WHERE ss_item_sk = i_item_sk + AND ss_sold_date_sk = d_date_sk + AND ss_store_sk = s_store_sk + AND d_year IN ( 2002 ) + AND ( ( i_category IN ( 'Home', 'Men', 'Sports' ) + AND i_class IN ( 'paint', 'accessories', 'fitness' ) ) + OR ( i_category IN ( 'Shoes', 'Jewelry', 'Women' ) + AND i_class IN ( 'mens', 'pendants', 'swimwear' ) ) ) + GROUP BY i_category, + i_class, + i_brand, + s_store_name, + s_company_name, + d_moy) tmp1 +WHERE CASE + WHEN ( avg_monthly_sales <> 0 ) THEN ( + Abs(sum_sales - avg_monthly_sales) / avg_monthly_sales ) + ELSE NULL + END > 0.1 +ORDER BY sum_sales - avg_monthly_sales, + s_store_name +LIMIT 100; +WITH "tmp1" AS ( + SELECT + "item"."i_category" AS "i_category", + "item"."i_class" AS "i_class", + "item"."i_brand" AS "i_brand", + "store"."s_store_name" AS "s_store_name", + "store"."s_company_name" AS "s_company_name", + "date_dim"."d_moy" AS "d_moy", + SUM("store_sales"."ss_sales_price") AS "sum_sales", + AVG(SUM("store_sales"."ss_sales_price")) OVER (PARTITION BY "item"."i_category", "item"."i_brand", "store"."s_store_name", "store"."s_company_name") AS "avg_monthly_sales" + FROM "item" AS "item" + JOIN "store_sales" AS "store_sales" + ON "store_sales"."ss_item_sk" = "item"."i_item_sk" + JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_year" IN (2002) + AND "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + JOIN "store" AS "store" + ON "store_sales"."ss_store_sk" = "store"."s_store_sk" + WHERE + ( + "item"."i_category" IN ('Home', 'Men', 'Sports') + OR "item"."i_category" IN ('Shoes', 'Jewelry', 'Women') + ) + AND ( + "item"."i_category" IN ('Home', 'Men', 'Sports') + OR "item"."i_class" IN ('mens', 'pendants', 'swimwear') + ) + AND ( + "item"."i_category" IN ('Shoes', 'Jewelry', 'Women') + OR "item"."i_class" IN ('paint', 'accessories', 'fitness') + ) + AND ( + "item"."i_class" IN ('mens', 'pendants', 'swimwear') + OR "item"."i_class" IN ('paint', 'accessories', 'fitness') + ) + GROUP BY + "item"."i_category", + "item"."i_class", + "item"."i_brand", + "store"."s_store_name", + "store"."s_company_name", + "date_dim"."d_moy" +) +SELECT + "tmp1"."i_category" AS "i_category", + "tmp1"."i_class" AS "i_class", + "tmp1"."i_brand" AS "i_brand", + "tmp1"."s_store_name" AS "s_store_name", + "tmp1"."s_company_name" AS "s_company_name", + "tmp1"."d_moy" AS "d_moy", + "tmp1"."sum_sales" AS "sum_sales", + "tmp1"."avg_monthly_sales" AS "avg_monthly_sales" +FROM "tmp1" AS "tmp1" +WHERE + CASE + WHEN "tmp1"."avg_monthly_sales" <> 0 + THEN ( + ABS("tmp1"."sum_sales" - "tmp1"."avg_monthly_sales") / "tmp1"."avg_monthly_sales" + ) + ELSE NULL + END > 0.1 +ORDER BY + "tmp1"."sum_sales" - "tmp1"."avg_monthly_sales", + "tmp1"."s_store_name" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 90 +-------------------------------------- + +SELECT Cast(amc AS DECIMAL(15, 4)) / Cast(pmc AS DECIMAL(15, 4)) + am_pm_ratio +FROM (SELECT Count(*) amc + FROM web_sales, + household_demographics, + time_dim, + web_page + WHERE ws_sold_time_sk = time_dim.t_time_sk + AND ws_ship_hdemo_sk = household_demographics.hd_demo_sk + AND ws_web_page_sk = web_page.wp_web_page_sk + AND time_dim.t_hour BETWEEN 12 AND 12 + 1 + AND household_demographics.hd_dep_count = 8 + AND web_page.wp_char_count BETWEEN 5000 AND 5200) at1, + (SELECT Count(*) pmc + FROM web_sales, + household_demographics, + time_dim, + web_page + WHERE ws_sold_time_sk = time_dim.t_time_sk + AND ws_ship_hdemo_sk = household_demographics.hd_demo_sk + AND ws_web_page_sk = web_page.wp_web_page_sk + AND time_dim.t_hour BETWEEN 20 AND 20 + 1 + AND household_demographics.hd_dep_count = 8 + AND web_page.wp_char_count BETWEEN 5000 AND 5200) pt +ORDER BY am_pm_ratio +LIMIT 100; +WITH "web_sales_2" AS ( + SELECT + "web_sales"."ws_sold_time_sk" AS "ws_sold_time_sk", + "web_sales"."ws_ship_hdemo_sk" AS "ws_ship_hdemo_sk", + "web_sales"."ws_web_page_sk" AS "ws_web_page_sk" + FROM "web_sales" AS "web_sales" +), "household_demographics_2" AS ( + SELECT + "household_demographics"."hd_demo_sk" AS "hd_demo_sk", + "household_demographics"."hd_dep_count" AS "hd_dep_count" + FROM "household_demographics" AS "household_demographics" + WHERE + "household_demographics"."hd_dep_count" = 8 +), "web_page_2" AS ( + SELECT + "web_page"."wp_web_page_sk" AS "wp_web_page_sk", + "web_page"."wp_char_count" AS "wp_char_count" + FROM "web_page" AS "web_page" + WHERE + "web_page"."wp_char_count" <= 5200 AND "web_page"."wp_char_count" >= 5000 +), "at1" AS ( + SELECT + COUNT(*) AS "amc" + FROM "web_sales_2" AS "web_sales" + JOIN "household_demographics_2" AS "household_demographics" + ON "web_sales"."ws_ship_hdemo_sk" = "household_demographics"."hd_demo_sk" + JOIN "time_dim" AS "time_dim" + ON "time_dim"."t_hour" <= 13 + AND "time_dim"."t_hour" >= 12 + AND "web_sales"."ws_sold_time_sk" = "time_dim"."t_time_sk" + JOIN "web_page_2" AS "web_page" + ON "web_sales"."ws_web_page_sk" = "web_page"."wp_web_page_sk" +), "pt" AS ( + SELECT + COUNT(*) AS "pmc" + FROM "web_sales_2" AS "web_sales", "household_demographics_2" AS "household_demographics", "time_dim" AS "time_dim", "web_page_2" AS "web_page" + WHERE + "time_dim"."t_hour" <= 21 + AND "time_dim"."t_hour" >= 20 + AND "web_sales"."ws_ship_hdemo_sk" = "household_demographics"."hd_demo_sk" + AND "web_sales"."ws_sold_time_sk" = "time_dim"."t_time_sk" + AND "web_sales"."ws_web_page_sk" = "web_page"."wp_web_page_sk" +) +SELECT + CAST("at1"."amc" AS DECIMAL(15, 4)) / CAST("pt"."pmc" AS DECIMAL(15, 4)) AS "am_pm_ratio" +FROM "at1" AS "at1" +CROSS JOIN "pt" AS "pt" +ORDER BY + "am_pm_ratio" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 91 +-------------------------------------- +SELECT cc_call_center_id Call_Center, + cc_name Call_Center_Name, + cc_manager Manager, + Sum(cr_net_loss) Returns_Loss +FROM call_center, + catalog_returns, + date_dim, + customer, + customer_address, + customer_demographics, + household_demographics +WHERE cr_call_center_sk = cc_call_center_sk + AND cr_returned_date_sk = d_date_sk + AND cr_returning_customer_sk = c_customer_sk + AND cd_demo_sk = c_current_cdemo_sk + AND hd_demo_sk = c_current_hdemo_sk + AND ca_address_sk = c_current_addr_sk + AND d_year = 1999 + AND d_moy = 12 + AND ( ( cd_marital_status = 'M' + AND cd_education_status = 'Unknown' ) + OR ( cd_marital_status = 'W' + AND cd_education_status = 'Advanced Degree' ) ) + AND hd_buy_potential LIKE 'Unknown%' + AND ca_gmt_offset = -7 +GROUP BY cc_call_center_id, + cc_name, + cc_manager, + cd_marital_status, + cd_education_status +ORDER BY Sum(cr_net_loss) DESC; +SELECT + "call_center"."cc_call_center_id" AS Call_Center, + "call_center"."cc_name" AS Call_Center_Name, + "call_center"."cc_manager" AS Manager, + SUM("catalog_returns"."cr_net_loss") AS Returns_Loss +FROM "call_center" AS "call_center" +JOIN "catalog_returns" AS "catalog_returns" + ON "catalog_returns"."cr_call_center_sk" = "call_center"."cc_call_center_sk" +JOIN "date_dim" AS "date_dim" + ON "catalog_returns"."cr_returned_date_sk" = "date_dim"."d_date_sk" + AND "date_dim"."d_moy" = 12 + AND "date_dim"."d_year" = 1999 +JOIN "household_demographics" AS "household_demographics" + ON "household_demographics"."hd_buy_potential" LIKE 'Unknown%' +JOIN "customer_demographics" AS "customer_demographics" + ON ( + "customer_demographics"."cd_education_status" = 'Advanced Degree' + OR "customer_demographics"."cd_education_status" = 'Unknown' + ) + AND ( + "customer_demographics"."cd_education_status" = 'Advanced Degree' + OR "customer_demographics"."cd_marital_status" = 'M' + ) + AND ( + "customer_demographics"."cd_education_status" = 'Unknown' + OR "customer_demographics"."cd_marital_status" = 'W' + ) + AND ( + "customer_demographics"."cd_marital_status" = 'M' + OR "customer_demographics"."cd_marital_status" = 'W' + ) +JOIN "customer_address" AS "customer_address" + ON "customer_address"."ca_gmt_offset" = -7 +JOIN "customer" AS "customer" + ON "catalog_returns"."cr_returning_customer_sk" = "customer"."c_customer_sk" + AND "customer_address"."ca_address_sk" = "customer"."c_current_addr_sk" + AND "customer_demographics"."cd_demo_sk" = "customer"."c_current_cdemo_sk" + AND "household_demographics"."hd_demo_sk" = "customer"."c_current_hdemo_sk" +GROUP BY + "call_center"."cc_call_center_id", + "call_center"."cc_name", + "call_center"."cc_manager", + "customer_demographics"."cd_marital_status", + "customer_demographics"."cd_education_status" +ORDER BY + SUM("catalog_returns"."cr_net_loss") DESC; + +-------------------------------------- +-- TPC-DS 92 +-------------------------------------- +SELECT + Sum(ws_ext_discount_amt) AS "Excess Discount Amount" +FROM web_sales , + item , + date_dim +WHERE i_manufact_id = 718 +AND i_item_sk = ws_item_sk +AND d_date BETWEEN '2002-03-29' AND ( + Cast('2002-03-29' AS DATE) + INTERVAL '90' day) +AND d_date_sk = ws_sold_date_sk +AND ws_ext_discount_amt > + ( + SELECT 1.3 * avg(ws_ext_discount_amt) + FROM web_sales , + date_dim + WHERE ws_item_sk = i_item_sk + AND d_date BETWEEN '2002-03-29' AND ( + cast('2002-03-29' AS date) + INTERVAL '90' day) + AND d_date_sk = ws_sold_date_sk ) +ORDER BY sum(ws_ext_discount_amt) +LIMIT 100; +WITH "web_sales_2" AS ( + SELECT + "web_sales"."ws_sold_date_sk" AS "ws_sold_date_sk", + "web_sales"."ws_item_sk" AS "ws_item_sk", + "web_sales"."ws_ext_discount_amt" AS "ws_ext_discount_amt" + FROM "web_sales" AS "web_sales" +), "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_date" AS "d_date" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_date" >= '2002-03-29' + AND CAST("date_dim"."d_date" AS DATE) <= CAST('2002-06-27' AS DATE) +), "_u_0" AS ( + SELECT + 1.3 * AVG("web_sales"."ws_ext_discount_amt") AS "_col_0", + "web_sales"."ws_item_sk" AS "_u_1" + FROM "web_sales_2" AS "web_sales" + JOIN "date_dim_2" AS "date_dim" + ON "date_dim"."d_date_sk" = "web_sales"."ws_sold_date_sk" + GROUP BY + "web_sales"."ws_item_sk" +) +SELECT + SUM("web_sales"."ws_ext_discount_amt") AS "Excess Discount Amount" +FROM "web_sales_2" AS "web_sales" +JOIN "item" AS "item" + ON "item"."i_item_sk" = "web_sales"."ws_item_sk" AND "item"."i_manufact_id" = 718 +LEFT JOIN "_u_0" AS "_u_0" + ON "_u_0"."_u_1" = "item"."i_item_sk" +JOIN "date_dim_2" AS "date_dim" + ON "date_dim"."d_date_sk" = "web_sales"."ws_sold_date_sk" +WHERE + "web_sales"."ws_ext_discount_amt" > "_u_0"."_col_0" +ORDER BY + SUM("web_sales"."ws_ext_discount_amt") +LIMIT 100; + +-------------------------------------- +-- TPC-DS 93 +-------------------------------------- +SELECT ss_customer_sk, + Sum(act_sales) sumsales +FROM (SELECT ss_item_sk, + ss_ticket_number, + ss_customer_sk, + CASE + WHEN sr_return_quantity IS NOT NULL THEN + ( ss_quantity - sr_return_quantity ) * ss_sales_price + ELSE ( ss_quantity * ss_sales_price ) + END act_sales + FROM store_sales + LEFT OUTER JOIN store_returns + ON ( sr_item_sk = ss_item_sk + AND sr_ticket_number = ss_ticket_number ), + reason + WHERE sr_reason_sk = r_reason_sk + AND r_reason_desc = 'reason 38') t +GROUP BY ss_customer_sk +ORDER BY sumsales, + ss_customer_sk +LIMIT 100; +SELECT + "store_sales"."ss_customer_sk" AS "ss_customer_sk", + SUM( + CASE + WHEN NOT "store_returns"."sr_return_quantity" IS NULL + THEN ( + "store_sales"."ss_quantity" - "store_returns"."sr_return_quantity" + ) * "store_sales"."ss_sales_price" + ELSE ( + "store_sales"."ss_quantity" * "store_sales"."ss_sales_price" + ) + END + ) AS "sumsales" +FROM "store_sales" AS "store_sales" +LEFT JOIN "store_returns" AS "store_returns" + ON "store_returns"."sr_item_sk" = "store_sales"."ss_item_sk" + AND "store_returns"."sr_ticket_number" = "store_sales"."ss_ticket_number" +JOIN "reason" AS "reason" + ON "reason"."r_reason_desc" = 'reason 38' +WHERE + "store_returns"."sr_reason_sk" = "reason"."r_reason_sk" +GROUP BY + "store_sales"."ss_customer_sk" +ORDER BY + "sumsales", + "ss_customer_sk" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 94 +-------------------------------------- +SELECT + Count(DISTINCT ws_order_number) AS "order count" , + Sum(ws_ext_ship_cost) AS "total shipping cost" , + Sum(ws_net_profit) AS "total net profit" +FROM web_sales ws1 , + date_dim , + customer_address , + web_site +WHERE d_date BETWEEN '2000-3-01' AND ( + Cast('2000-3-01' AS DATE) + INTERVAL '60' day) +AND ws1.ws_ship_date_sk = d_date_sk +AND ws1.ws_ship_addr_sk = ca_address_sk +AND ca_state = 'MT' +AND ws1.ws_web_site_sk = web_site_sk +AND web_company_name = 'pri' +AND EXISTS + ( + SELECT * + FROM web_sales ws2 + WHERE ws1.ws_order_number = ws2.ws_order_number + AND ws1.ws_warehouse_sk <> ws2.ws_warehouse_sk) +AND NOT EXISTS + ( + SELECT * + FROM web_returns wr1 + WHERE ws1.ws_order_number = wr1.wr_order_number) +ORDER BY count(DISTINCT ws_order_number) +LIMIT 100; +WITH "_u_0" AS ( + SELECT + "ws2"."ws_order_number" AS "_u_1", + ARRAY_AGG("ws2"."ws_warehouse_sk") AS "_u_2" + FROM "web_sales" AS "ws2" + GROUP BY + "ws2"."ws_order_number" +), "_u_3" AS ( + SELECT + "wr1"."wr_order_number" AS "_u_4" + FROM "web_returns" AS "wr1" + GROUP BY + "wr1"."wr_order_number" +) +SELECT + COUNT(DISTINCT "web_sales"."ws_order_number") AS "order count", + SUM("web_sales"."ws_ext_ship_cost") AS "total shipping cost", + SUM("web_sales"."ws_net_profit") AS "total net profit" +FROM "web_sales" AS "web_sales" +LEFT JOIN "_u_0" AS "_u_0" + ON "web_sales"."ws_order_number" = "_u_0"."_u_1" +LEFT JOIN "_u_3" AS "_u_3" + ON "web_sales"."ws_order_number" = "_u_3"."_u_4" +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_date" >= '2000-3-01' + AND "web_sales"."ws_ship_date_sk" = "date_dim"."d_date_sk" + AND CAST("date_dim"."d_date" AS DATE) <= ( + CAST('2000-3-01' AS DATE) + INTERVAL '60' "day" + ) +JOIN "customer_address" AS "customer_address" + ON "customer_address"."ca_state" = 'MT' + AND "web_sales"."ws_ship_addr_sk" = "customer_address"."ca_address_sk" +JOIN "web_site" AS "web_site" + ON "web_sales"."ws_web_site_sk" = "web_site"."web_site_sk" + AND "web_site"."web_company_name" = 'pri' +WHERE + "_u_3"."_u_4" IS NULL + AND ARRAY_ANY("_u_0"."_u_2", "_x" -> "web_sales"."ws_warehouse_sk" <> "_x") + AND NOT "_u_0"."_u_1" IS NULL +ORDER BY + COUNT(DISTINCT "web_sales"."ws_order_number") +LIMIT 100; + +-------------------------------------- +-- TPC-DS 95 +-------------------------------------- +WITH ws_wh AS +( + SELECT ws1.ws_order_number, + ws1.ws_warehouse_sk wh1, + ws2.ws_warehouse_sk wh2 + FROM web_sales ws1, + web_sales ws2 + WHERE ws1.ws_order_number = ws2.ws_order_number + AND ws1.ws_warehouse_sk <> ws2.ws_warehouse_sk) +SELECT + Count(DISTINCT ws_order_number) AS "order count" , + Sum(ws_ext_ship_cost) AS "total shipping cost" , + Sum(ws_net_profit) AS "total net profit" +FROM web_sales ws1 , + date_dim , + customer_address , + web_site +WHERE d_date BETWEEN '2000-4-01' AND ( + Cast('2000-4-01' AS DATE) + INTERVAL '60' day) +AND ws1.ws_ship_date_sk = d_date_sk +AND ws1.ws_ship_addr_sk = ca_address_sk +AND ca_state = 'IN' +AND ws1.ws_web_site_sk = web_site_sk +AND web_company_name = 'pri' +AND ws1.ws_order_number IN + ( + SELECT ws_order_number + FROM ws_wh) +AND ws1.ws_order_number IN + ( + SELECT wr_order_number + FROM web_returns, + ws_wh + WHERE wr_order_number = ws_wh.ws_order_number) +ORDER BY count(DISTINCT ws_order_number) +LIMIT 100; +WITH "ws1" AS ( + SELECT + "web_sales"."ws_warehouse_sk" AS "ws_warehouse_sk", + "web_sales"."ws_order_number" AS "ws_order_number" + FROM "web_sales" AS "web_sales" +), "ws_wh" AS ( + SELECT + "ws1"."ws_order_number" AS "ws_order_number" + FROM "ws1" AS "ws1" + JOIN "ws1" AS "ws2" + ON "ws1"."ws_order_number" = "ws2"."ws_order_number" + AND "ws1"."ws_warehouse_sk" <> "ws2"."ws_warehouse_sk" +), "_u_0" AS ( + SELECT + "ws_wh"."ws_order_number" AS "ws_order_number" + FROM "ws_wh" + GROUP BY + "ws_wh"."ws_order_number" +), "_u_1" AS ( + SELECT + "web_returns"."wr_order_number" AS "wr_order_number" + FROM "web_returns" AS "web_returns" + JOIN "ws_wh" + ON "web_returns"."wr_order_number" = "ws_wh"."ws_order_number" + GROUP BY + "web_returns"."wr_order_number" +) +SELECT + COUNT(DISTINCT "web_sales"."ws_order_number") AS "order count", + SUM("web_sales"."ws_ext_ship_cost") AS "total shipping cost", + SUM("web_sales"."ws_net_profit") AS "total net profit" +FROM "web_sales" AS "web_sales" +LEFT JOIN "_u_0" AS "_u_0" + ON "web_sales"."ws_order_number" = "_u_0"."ws_order_number" +LEFT JOIN "_u_1" AS "_u_1" + ON "web_sales"."ws_order_number" = "_u_1"."wr_order_number" +JOIN "date_dim" AS "date_dim" + ON "date_dim"."d_date" >= '2000-4-01' + AND "web_sales"."ws_ship_date_sk" = "date_dim"."d_date_sk" + AND CAST("date_dim"."d_date" AS DATE) <= ( + CAST('2000-4-01' AS DATE) + INTERVAL '60' "day" + ) +JOIN "customer_address" AS "customer_address" + ON "customer_address"."ca_state" = 'IN' + AND "web_sales"."ws_ship_addr_sk" = "customer_address"."ca_address_sk" +JOIN "web_site" AS "web_site" + ON "web_sales"."ws_web_site_sk" = "web_site"."web_site_sk" + AND "web_site"."web_company_name" = 'pri' +WHERE + NOT "_u_0"."ws_order_number" IS NULL AND NOT "_u_1"."wr_order_number" IS NULL +ORDER BY + COUNT(DISTINCT "web_sales"."ws_order_number") +LIMIT 100; + +-------------------------------------- +-- TPC-DS 96 +-------------------------------------- +SELECT Count(*) +FROM store_sales, + household_demographics, + time_dim, + store +WHERE ss_sold_time_sk = time_dim.t_time_sk + AND ss_hdemo_sk = household_demographics.hd_demo_sk + AND ss_store_sk = s_store_sk + AND time_dim.t_hour = 15 + AND time_dim.t_minute >= 30 + AND household_demographics.hd_dep_count = 7 + AND store.s_store_name = 'ese' +ORDER BY Count(*) +LIMIT 100; +SELECT + COUNT(*) AS "_col_0" +FROM "store_sales" AS "store_sales" +JOIN "household_demographics" AS "household_demographics" + ON "household_demographics"."hd_dep_count" = 7 + AND "store_sales"."ss_hdemo_sk" = "household_demographics"."hd_demo_sk" +JOIN "time_dim" AS "time_dim" + ON "store_sales"."ss_sold_time_sk" = "time_dim"."t_time_sk" + AND "time_dim"."t_hour" = 15 + AND "time_dim"."t_minute" >= 30 +JOIN "store" AS "store" + ON "store"."s_store_name" = 'ese' AND "store_sales"."ss_store_sk" = "store"."s_store_sk" +ORDER BY + COUNT(*) +LIMIT 100; + +-------------------------------------- +-- TPC-DS 97 +-------------------------------------- + +WITH ssci + AS (SELECT ss_customer_sk customer_sk, + ss_item_sk item_sk + FROM store_sales, + date_dim + WHERE ss_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1196 AND 1196 + 11 + GROUP BY ss_customer_sk, + ss_item_sk), + csci + AS (SELECT cs_bill_customer_sk customer_sk, + cs_item_sk item_sk + FROM catalog_sales, + date_dim + WHERE cs_sold_date_sk = d_date_sk + AND d_month_seq BETWEEN 1196 AND 1196 + 11 + GROUP BY cs_bill_customer_sk, + cs_item_sk) +SELECT Sum(CASE + WHEN ssci.customer_sk IS NOT NULL + AND csci.customer_sk IS NULL THEN 1 + ELSE 0 + END) store_only, + Sum(CASE + WHEN ssci.customer_sk IS NULL + AND csci.customer_sk IS NOT NULL THEN 1 + ELSE 0 + END) catalog_only, + Sum(CASE + WHEN ssci.customer_sk IS NOT NULL + AND csci.customer_sk IS NOT NULL THEN 1 + ELSE 0 + END) store_and_catalog +FROM ssci + FULL OUTER JOIN csci + ON ( ssci.customer_sk = csci.customer_sk + AND ssci.item_sk = csci.item_sk ) +LIMIT 100; +WITH "date_dim_2" AS ( + SELECT + "date_dim"."d_date_sk" AS "d_date_sk", + "date_dim"."d_month_seq" AS "d_month_seq" + FROM "date_dim" AS "date_dim" + WHERE + "date_dim"."d_month_seq" <= 1207 AND "date_dim"."d_month_seq" >= 1196 +), "ssci" AS ( + SELECT + "store_sales"."ss_customer_sk" AS "customer_sk", + "store_sales"."ss_item_sk" AS "item_sk" + FROM "store_sales" AS "store_sales" + JOIN "date_dim_2" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "store_sales"."ss_customer_sk", + "store_sales"."ss_item_sk" +), "csci" AS ( + SELECT + "catalog_sales"."cs_bill_customer_sk" AS "customer_sk", + "catalog_sales"."cs_item_sk" AS "item_sk" + FROM "catalog_sales" AS "catalog_sales" + JOIN "date_dim_2" AS "date_dim" + ON "catalog_sales"."cs_sold_date_sk" = "date_dim"."d_date_sk" + GROUP BY + "catalog_sales"."cs_bill_customer_sk", + "catalog_sales"."cs_item_sk" +) +SELECT + SUM( + CASE + WHEN "csci"."customer_sk" IS NULL AND NOT "ssci"."customer_sk" IS NULL + THEN 1 + ELSE 0 + END + ) AS "store_only", + SUM( + CASE + WHEN "ssci"."customer_sk" IS NULL AND NOT "csci"."customer_sk" IS NULL + THEN 1 + ELSE 0 + END + ) AS "catalog_only", + SUM( + CASE + WHEN NOT "csci"."customer_sk" IS NULL AND NOT "ssci"."customer_sk" IS NULL + THEN 1 + ELSE 0 + END + ) AS "store_and_catalog" +FROM "ssci" +FULL JOIN "csci" + ON "ssci"."customer_sk" = "csci"."customer_sk" AND "ssci"."item_sk" = "csci"."item_sk" +LIMIT 100; + +-------------------------------------- +-- TPC-DS 98 +-------------------------------------- + +SELECT i_item_id, + i_item_desc, + i_category, + i_class, + i_current_price, + Sum(ss_ext_sales_price) AS itemrevenue, + Sum(ss_ext_sales_price) * 100 / Sum(Sum(ss_ext_sales_price)) + OVER ( + PARTITION BY i_class) AS revenueratio +FROM store_sales, + item, + date_dim +WHERE ss_item_sk = i_item_sk + AND i_category IN ( 'Men', 'Home', 'Electronics' ) + AND ss_sold_date_sk = d_date_sk + AND d_date BETWEEN CAST('2000-05-18' AS DATE) AND ( + CAST('2000-05-18' AS DATE) + INTERVAL '30' DAY ) +GROUP BY i_item_id, + i_item_desc, + i_category, + i_class, + i_current_price +ORDER BY i_category, + i_class, + i_item_id, + i_item_desc, + revenueratio; +SELECT + "item"."i_item_id" AS "i_item_id", + "item"."i_item_desc" AS "i_item_desc", + "item"."i_category" AS "i_category", + "item"."i_class" AS "i_class", + "item"."i_current_price" AS "i_current_price", + SUM("store_sales"."ss_ext_sales_price") AS "itemrevenue", + SUM("store_sales"."ss_ext_sales_price") * 100 / SUM(SUM("store_sales"."ss_ext_sales_price")) OVER (PARTITION BY "item"."i_class") AS "revenueratio" +FROM "store_sales" AS "store_sales" +JOIN "item" AS "item" + ON "item"."i_category" IN ('Men', 'Home', 'Electronics') + AND "store_sales"."ss_item_sk" = "item"."i_item_sk" +JOIN "date_dim" AS "date_dim" + ON "store_sales"."ss_sold_date_sk" = "date_dim"."d_date_sk" + AND CAST("date_dim"."d_date" AS DATE) <= CAST('2000-06-17' AS DATE) + AND CAST("date_dim"."d_date" AS DATE) >= CAST('2000-05-18' AS DATE) +GROUP BY + "item"."i_item_id", + "item"."i_item_desc", + "item"."i_category", + "item"."i_class", + "item"."i_current_price" +ORDER BY + "i_category", + "i_class", + "i_item_id", + "i_item_desc", + "revenueratio"; + +-------------------------------------- +-- TPC-DS 99 +-------------------------------------- + + +SELECT Substr(w_warehouse_name, 1, 20), + sm_type, + cc_name, + Sum(CASE + WHEN ( cs_ship_date_sk - cs_sold_date_sk <= 30 ) THEN 1 + ELSE 0 + END) AS "30 days", + Sum(CASE + WHEN ( cs_ship_date_sk - cs_sold_date_sk > 30 ) + AND ( cs_ship_date_sk - cs_sold_date_sk <= 60 ) THEN 1 + ELSE 0 + END) AS "31-60 days", + Sum(CASE + WHEN ( cs_ship_date_sk - cs_sold_date_sk > 60 ) + AND ( cs_ship_date_sk - cs_sold_date_sk <= 90 ) THEN 1 + ELSE 0 + END) AS "61-90 days", + Sum(CASE + WHEN ( cs_ship_date_sk - cs_sold_date_sk > 90 ) + AND ( cs_ship_date_sk - cs_sold_date_sk <= 120 ) THEN + 1 + ELSE 0 + END) AS "91-120 days", + Sum(CASE + WHEN ( cs_ship_date_sk - cs_sold_date_sk > 120 ) THEN 1 + ELSE 0 + END) AS ">120 days" +FROM catalog_sales, + warehouse, + ship_mode, + call_center, + date_dim +WHERE d_month_seq BETWEEN 1200 AND 1200 + 11 + AND cs_ship_date_sk = d_date_sk + AND cs_warehouse_sk = w_warehouse_sk + AND cs_ship_mode_sk = sm_ship_mode_sk + AND cs_call_center_sk = cc_call_center_sk +GROUP BY Substr(w_warehouse_name, 1, 20), + sm_type, + cc_name +ORDER BY Substr(w_warehouse_name, 1, 20), + sm_type, + cc_name +LIMIT 100; +SELECT + SUBSTR("warehouse"."w_warehouse_name", 1, 20) AS "_col_0", + "ship_mode"."sm_type" AS "sm_type", + "call_center"."cc_name" AS "cc_name", + SUM( + CASE + WHEN "catalog_sales"."cs_ship_date_sk" - "catalog_sales"."cs_sold_date_sk" <= 30 + THEN 1 + ELSE 0 + END + ) AS "30 days", + SUM( + CASE + WHEN "catalog_sales"."cs_ship_date_sk" - "catalog_sales"."cs_sold_date_sk" <= 60 + AND "catalog_sales"."cs_ship_date_sk" - "catalog_sales"."cs_sold_date_sk" > 30 + THEN 1 + ELSE 0 + END + ) AS "31-60 days", + SUM( + CASE + WHEN "catalog_sales"."cs_ship_date_sk" - "catalog_sales"."cs_sold_date_sk" <= 90 + AND "catalog_sales"."cs_ship_date_sk" - "catalog_sales"."cs_sold_date_sk" > 60 + THEN 1 + ELSE 0 + END + ) AS "61-90 days", + SUM( + CASE + WHEN "catalog_sales"."cs_ship_date_sk" - "catalog_sales"."cs_sold_date_sk" <= 120 + AND "catalog_sales"."cs_ship_date_sk" - "catalog_sales"."cs_sold_date_sk" > 90 + THEN 1 + ELSE 0 + END + ) AS "91-120 days", + SUM( + CASE + WHEN "catalog_sales"."cs_ship_date_sk" - "catalog_sales"."cs_sold_date_sk" > 120 + THEN 1 + ELSE 0 + END + ) AS ">120 days" +FROM "catalog_sales" AS "catalog_sales" +JOIN "warehouse" AS "warehouse" + ON "catalog_sales"."cs_warehouse_sk" = "warehouse"."w_warehouse_sk" +JOIN "ship_mode" AS "ship_mode" + ON "catalog_sales"."cs_ship_mode_sk" = "ship_mode"."sm_ship_mode_sk" +JOIN "call_center" AS "call_center" + ON "catalog_sales"."cs_call_center_sk" = "call_center"."cc_call_center_sk" +JOIN "date_dim" AS "date_dim" + ON "catalog_sales"."cs_ship_date_sk" = "date_dim"."d_date_sk" + AND "date_dim"."d_month_seq" <= 1211 + AND "date_dim"."d_month_seq" >= 1200 +GROUP BY + SUBSTR("warehouse"."w_warehouse_name", 1, 20), + "ship_mode"."sm_type", + "call_center"."cc_name" +ORDER BY + SUBSTR("warehouse"."w_warehouse_name", 1, 20), + "sm_type", + "cc_name" +LIMIT 100; + diff --git a/tests/fixtures/optimizer/tpc-h/tpc-h.sql b/tests/fixtures/optimizer/tpc-h/tpc-h.sql index 272fb26..ae50f92 100644 --- a/tests/fixtures/optimizer/tpc-h/tpc-h.sql +++ b/tests/fixtures/optimizer/tpc-h/tpc-h.sql @@ -390,9 +390,9 @@ SELECT )) AS "revenue" FROM "supplier" AS "supplier" JOIN "lineitem" AS "lineitem" - ON CAST("lineitem"."l_shipdate" AS DATE) <= CAST('1996-12-31' AS DATE) + ON "supplier"."s_suppkey" = "lineitem"."l_suppkey" + AND CAST("lineitem"."l_shipdate" AS DATE) <= CAST('1996-12-31' AS DATE) AND CAST("lineitem"."l_shipdate" AS DATE) >= CAST('1995-01-01' AS DATE) - AND "supplier"."s_suppkey" = "lineitem"."l_suppkey" JOIN "orders" AS "orders" ON "orders"."o_orderkey" = "lineitem"."l_orderkey" JOIN "customer" AS "customer" @@ -743,11 +743,11 @@ SELECT FROM "orders" AS "orders" JOIN "lineitem" AS "lineitem" ON "lineitem"."l_commitdate" < "lineitem"."l_receiptdate" - AND CAST("lineitem"."l_receiptdate" AS DATE) < CAST('1995-01-01' AS DATE) - AND CAST("lineitem"."l_receiptdate" AS DATE) >= CAST('1994-01-01' AS DATE) AND "lineitem"."l_shipdate" < "lineitem"."l_commitdate" AND "lineitem"."l_shipmode" IN ('MAIL', 'SHIP') AND "orders"."o_orderkey" = "lineitem"."l_orderkey" + AND CAST("lineitem"."l_receiptdate" AS DATE) < CAST('1995-01-01' AS DATE) + AND CAST("lineitem"."l_receiptdate" AS DATE) >= CAST('1994-01-01' AS DATE) GROUP BY "lineitem"."l_shipmode" ORDER BY @@ -1224,10 +1224,18 @@ where order by s_name; WITH "_u_0" AS ( + SELECT + "part"."p_partkey" AS "p_partkey" + FROM "part" AS "part" + WHERE + "part"."p_name" LIKE 'forest%' + GROUP BY + "part"."p_partkey" +), "_u_1" AS ( SELECT 0.5 * SUM("lineitem"."l_quantity") AS "_col_0", - "lineitem"."l_partkey" AS "_u_1", - "lineitem"."l_suppkey" AS "_u_2" + "lineitem"."l_partkey" AS "_u_2", + "lineitem"."l_suppkey" AS "_u_3" FROM "lineitem" AS "lineitem" WHERE CAST("lineitem"."l_shipdate" AS DATE) < CAST('1995-01-01' AS DATE) @@ -1235,24 +1243,16 @@ WITH "_u_0" AS ( GROUP BY "lineitem"."l_partkey", "lineitem"."l_suppkey" -), "_u_3" AS ( - SELECT - "part"."p_partkey" AS "p_partkey" - FROM "part" AS "part" - WHERE - "part"."p_name" LIKE 'forest%' - GROUP BY - "part"."p_partkey" ), "_u_4" AS ( SELECT "partsupp"."ps_suppkey" AS "ps_suppkey" FROM "partsupp" AS "partsupp" LEFT JOIN "_u_0" AS "_u_0" - ON "_u_0"."_u_1" = "partsupp"."ps_partkey" AND "_u_0"."_u_2" = "partsupp"."ps_suppkey" - LEFT JOIN "_u_3" AS "_u_3" - ON "partsupp"."ps_partkey" = "_u_3"."p_partkey" + ON "partsupp"."ps_partkey" = "_u_0"."p_partkey" + LEFT JOIN "_u_1" AS "_u_1" + ON "_u_1"."_u_2" = "partsupp"."ps_partkey" AND "_u_1"."_u_3" = "partsupp"."ps_suppkey" WHERE - "partsupp"."ps_availqty" > "_u_0"."_col_0" AND NOT "_u_3"."p_partkey" IS NULL + "partsupp"."ps_availqty" > "_u_1"."_col_0" AND NOT "_u_0"."p_partkey" IS NULL GROUP BY "partsupp"."ps_suppkey" ) diff --git a/tests/helpers.py b/tests/helpers.py index bab4da0..30aeff7 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -133,3 +133,475 @@ TPCH_SCHEMA = { "r_comment": "string", }, } + +TPCDS_SCHEMA = { + "catalog_sales": { + "cs_sold_date_sk": "bigint", + "cs_sold_time_sk": "bigint", + "cs_ship_date_sk": "bigint", + "cs_bill_customer_sk": "bigint", + "cs_bill_cdemo_sk": "bigint", + "cs_bill_hdemo_sk": "bigint", + "cs_bill_addr_sk": "bigint", + "cs_ship_customer_sk": "bigint", + "cs_ship_cdemo_sk": "bigint", + "cs_ship_hdemo_sk": "bigint", + "cs_ship_addr_sk": "bigint", + "cs_call_center_sk": "bigint", + "cs_catalog_page_sk": "bigint", + "cs_ship_mode_sk": "bigint", + "cs_warehouse_sk": "bigint", + "cs_item_sk": "bigint", + "cs_promo_sk": "bigint", + "cs_order_number": "bigint", + "cs_quantity": "bigint", + "cs_wholesale_cost": "double", + "cs_list_price": "double", + "cs_sales_price": "double", + "cs_ext_discount_amt": "double", + "cs_ext_sales_price": "double", + "cs_ext_wholesale_cost": "double", + "cs_ext_list_price": "double", + "cs_ext_tax": "double", + "cs_coupon_amt": "double", + "cs_ext_ship_cost": "double", + "cs_net_paid": "double", + "cs_net_paid_inc_tax": "double", + "cs_net_paid_inc_ship": "double", + "cs_net_paid_inc_ship_tax": "double", + "cs_net_profit": "double", + }, + "catalog_returns": { + "cr_returned_date_sk": "bigint", + "cr_returned_time_sk": "bigint", + "cr_item_sk": "bigint", + "cr_refunded_customer_sk": "bigint", + "cr_refunded_cdemo_sk": "bigint", + "cr_refunded_hdemo_sk": "bigint", + "cr_refunded_addr_sk": "bigint", + "cr_returning_customer_sk": "bigint", + "cr_returning_cdemo_sk": "bigint", + "cr_returning_hdemo_sk": "bigint", + "cr_returning_addr_sk": "bigint", + "cr_call_center_sk": "bigint", + "cr_catalog_page_sk": "bigint", + "cr_ship_mode_sk": "bigint", + "cr_warehouse_sk": "bigint", + "cr_reason_sk": "bigint", + "cr_order_number": "bigint", + "cr_return_quantity": "bigint", + "cr_return_amount": "double", + "cr_return_tax": "double", + "cr_return_amt_inc_tax": "double", + "cr_fee": "double", + "cr_return_ship_cost": "double", + "cr_refunded_cash": "double", + "cr_reversed_charge": "double", + "cr_store_credit": "double", + "cr_net_loss": "double", + }, + "inventory": { + "inv_date_sk": "bigint", + "inv_item_sk": "bigint", + "inv_warehouse_sk": "bigint", + "inv_quantity_on_hand": "bigint", + }, + "store_sales": { + "ss_sold_date_sk": "bigint", + "ss_sold_time_sk": "bigint", + "ss_item_sk": "bigint", + "ss_customer_sk": "bigint", + "ss_cdemo_sk": "bigint", + "ss_hdemo_sk": "bigint", + "ss_addr_sk": "bigint", + "ss_store_sk": "bigint", + "ss_promo_sk": "bigint", + "ss_ticket_number": "bigint", + "ss_quantity": "bigint", + "ss_wholesale_cost": "double", + "ss_list_price": "double", + "ss_sales_price": "double", + "ss_ext_discount_amt": "double", + "ss_ext_sales_price": "double", + "ss_ext_wholesale_cost": "double", + "ss_ext_list_price": "double", + "ss_ext_tax": "double", + "ss_coupon_amt": "double", + "ss_net_paid": "double", + "ss_net_paid_inc_tax": "double", + "ss_net_profit": "double", + }, + "store_returns": { + "sr_returned_date_sk": "bigint", + "sr_return_time_sk": "bigint", + "sr_item_sk": "bigint", + "sr_customer_sk": "bigint", + "sr_cdemo_sk": "bigint", + "sr_hdemo_sk": "bigint", + "sr_addr_sk": "bigint", + "sr_store_sk": "bigint", + "sr_reason_sk": "bigint", + "sr_ticket_number": "bigint", + "sr_return_quantity": "bigint", + "sr_return_amt": "double", + "sr_return_tax": "double", + "sr_return_amt_inc_tax": "double", + "sr_fee": "double", + "sr_return_ship_cost": "double", + "sr_refunded_cash": "double", + "sr_reversed_charge": "double", + "sr_store_credit": "double", + "sr_net_loss": "double", + }, + "web_sales": { + "ws_sold_date_sk": "bigint", + "ws_sold_time_sk": "bigint", + "ws_ship_date_sk": "bigint", + "ws_item_sk": "bigint", + "ws_bill_customer_sk": "bigint", + "ws_bill_cdemo_sk": "bigint", + "ws_bill_hdemo_sk": "bigint", + "ws_bill_addr_sk": "bigint", + "ws_ship_customer_sk": "bigint", + "ws_ship_cdemo_sk": "bigint", + "ws_ship_hdemo_sk": "bigint", + "ws_ship_addr_sk": "bigint", + "ws_web_page_sk": "bigint", + "ws_web_site_sk": "bigint", + "ws_ship_mode_sk": "bigint", + "ws_warehouse_sk": "bigint", + "ws_promo_sk": "bigint", + "ws_order_number": "bigint", + "ws_quantity": "bigint", + "ws_wholesale_cost": "double", + "ws_list_price": "double", + "ws_sales_price": "double", + "ws_ext_discount_amt": "double", + "ws_ext_sales_price": "double", + "ws_ext_wholesale_cost": "double", + "ws_ext_list_price": "double", + "ws_ext_tax": "double", + "ws_coupon_amt": "double", + "ws_ext_ship_cost": "double", + "ws_net_paid": "double", + "ws_net_paid_inc_tax": "double", + "ws_net_paid_inc_ship": "double", + "ws_net_paid_inc_ship_tax": "double", + "ws_net_profit": "double", + }, + "web_returns": { + "wr_returned_date_sk": "bigint", + "wr_returned_time_sk": "bigint", + "wr_item_sk": "bigint", + "wr_refunded_customer_sk": "bigint", + "wr_refunded_cdemo_sk": "bigint", + "wr_refunded_hdemo_sk": "bigint", + "wr_refunded_addr_sk": "bigint", + "wr_returning_customer_sk": "bigint", + "wr_returning_cdemo_sk": "bigint", + "wr_returning_hdemo_sk": "bigint", + "wr_returning_addr_sk": "bigint", + "wr_web_page_sk": "bigint", + "wr_reason_sk": "bigint", + "wr_order_number": "bigint", + "wr_return_quantity": "bigint", + "wr_return_amt": "double", + "wr_return_tax": "double", + "wr_return_amt_inc_tax": "double", + "wr_fee": "double", + "wr_return_ship_cost": "double", + "wr_refunded_cash": "double", + "wr_reversed_charge": "double", + "wr_account_credit": "double", + "wr_net_loss": "double", + }, + "call_center": { + "cc_call_center_sk": "bigint", + "cc_call_center_id": "string", + "cc_rec_start_date": "string", + "cc_rec_end_date": "string", + "cc_closed_date_sk": "bigint", + "cc_open_date_sk": "bigint", + "cc_name": "string", + "cc_class": "string", + "cc_employees": "bigint", + "cc_sq_ft": "bigint", + "cc_hours": "string", + "cc_manager": "string", + "cc_mkt_id": "bigint", + "cc_mkt_class": "string", + "cc_mkt_desc": "string", + "cc_market_manager": "string", + "cc_division": "bigint", + "cc_division_name": "string", + "cc_company": "bigint", + "cc_company_name": "string", + "cc_street_number": "string", + "cc_street_name": "string", + "cc_street_type": "string", + "cc_suite_number": "string", + "cc_city": "string", + "cc_county": "string", + "cc_state": "string", + "cc_zip": "string", + "cc_country": "string", + "cc_gmt_offset": "double", + "cc_tax_percentage": "double", + }, + "catalog_page": { + "cp_catalog_page_sk": "bigint", + "cp_catalog_page_id": "string", + "cp_start_date_sk": "bigint", + "cp_end_date_sk": "bigint", + "cp_department": "string", + "cp_catalog_number": "bigint", + "cp_catalog_page_number": "bigint", + "cp_description": "string", + "cp_type": "string", + }, + "customer": { + "c_customer_sk": "bigint", + "c_customer_id": "string", + "c_current_cdemo_sk": "bigint", + "c_current_hdemo_sk": "bigint", + "c_current_addr_sk": "bigint", + "c_first_shipto_date_sk": "bigint", + "c_first_sales_date_sk": "bigint", + "c_salutation": "string", + "c_first_name": "string", + "c_last_name": "string", + "c_preferred_cust_flag": "string", + "c_birth_day": "bigint", + "c_birth_month": "bigint", + "c_birth_year": "bigint", + "c_birth_country": "string", + "c_login": "string", + "c_email_address": "string", + "c_last_review_date": "string", + }, + "customer_address": { + "ca_address_sk": "bigint", + "ca_address_id": "string", + "ca_street_number": "string", + "ca_street_name": "string", + "ca_street_type": "string", + "ca_suite_number": "string", + "ca_city": "string", + "ca_county": "string", + "ca_state": "string", + "ca_zip": "string", + "ca_country": "string", + "ca_gmt_offset": "double", + "ca_location_type": "string", + }, + "customer_demographics": { + "cd_demo_sk": "bigint", + "cd_gender": "string", + "cd_marital_status": "string", + "cd_education_status": "string", + "cd_purchase_estimate": "bigint", + "cd_credit_rating": "string", + "cd_dep_count": "bigint", + "cd_dep_employed_count": "bigint", + "cd_dep_college_count": "bigint", + }, + "date_dim": { + "d_date_sk": "bigint", + "d_date_id": "string", + "d_date": "string", + "d_month_seq": "bigint", + "d_week_seq": "bigint", + "d_quarter_seq": "bigint", + "d_year": "bigint", + "d_dow": "bigint", + "d_moy": "bigint", + "d_dom": "bigint", + "d_qoy": "bigint", + "d_fy_year": "bigint", + "d_fy_quarter_seq": "bigint", + "d_fy_week_seq": "bigint", + "d_day_name": "string", + "d_quarter_name": "string", + "d_holiday": "string", + "d_weekend": "string", + "d_following_holiday": "string", + "d_first_dom": "bigint", + "d_last_dom": "bigint", + "d_same_day_ly": "bigint", + "d_same_day_lq": "bigint", + "d_current_day": "string", + "d_current_week": "string", + "d_current_month": "string", + "d_current_quarter": "string", + "d_current_year": "string", + }, + "household_demographics": { + "hd_demo_sk": "bigint", + "hd_income_band_sk": "bigint", + "hd_buy_potential": "string", + "hd_dep_count": "bigint", + "hd_vehicle_count": "bigint", + }, + "income_band": { + "ib_income_band_sk": "bigint", + "ib_lower_bound": "bigint", + "ib_upper_bound": "bigint", + }, + "item": { + "i_item_sk": "bigint", + "i_item_id": "string", + "i_rec_start_date": "string", + "i_rec_end_date": "string", + "i_item_desc": "string", + "i_current_price": "double", + "i_wholesale_cost": "double", + "i_brand_id": "bigint", + "i_brand": "string", + "i_class_id": "bigint", + "i_class": "string", + "i_category_id": "bigint", + "i_category": "string", + "i_manufact_id": "bigint", + "i_manufact": "string", + "i_size": "string", + "i_formulation": "string", + "i_color": "string", + "i_units": "string", + "i_container": "string", + "i_manager_id": "bigint", + "i_product_name": "string", + }, + "promotion": { + "p_promo_sk": "bigint", + "p_promo_id": "string", + "p_start_date_sk": "bigint", + "p_end_date_sk": "bigint", + "p_item_sk": "bigint", + "p_cost": "double", + "p_response_target": "bigint", + "p_promo_name": "string", + "p_channel_dmail": "string", + "p_channel_email": "string", + "p_channel_catalog": "string", + "p_channel_tv": "string", + "p_channel_radio": "string", + "p_channel_press": "string", + "p_channel_event": "string", + "p_channel_demo": "string", + "p_channel_details": "string", + "p_purpose": "string", + "p_discount_active": "string", + }, + "reason": {"r_reason_sk": "bigint", "r_reason_id": "string", "r_reason_desc": "string"}, + "ship_mode": { + "sm_ship_mode_sk": "bigint", + "sm_ship_mode_id": "string", + "sm_type": "string", + "sm_code": "string", + "sm_carrier": "string", + "sm_contract": "string", + }, + "store": { + "s_store_sk": "bigint", + "s_store_id": "string", + "s_rec_start_date": "string", + "s_rec_end_date": "string", + "s_closed_date_sk": "bigint", + "s_store_name": "string", + "s_number_employees": "bigint", + "s_floor_space": "bigint", + "s_hours": "string", + "s_manager": "string", + "s_market_id": "bigint", + "s_geography_class": "string", + "s_market_desc": "string", + "s_market_manager": "string", + "s_division_id": "bigint", + "s_division_name": "string", + "s_company_id": "bigint", + "s_company_name": "string", + "s_street_number": "string", + "s_street_name": "string", + "s_street_type": "string", + "s_suite_number": "string", + "s_city": "string", + "s_county": "string", + "s_state": "string", + "s_zip": "string", + "s_country": "string", + "s_gmt_offset": "double", + "s_tax_precentage": "double", + }, + "time_dim": { + "t_time_sk": "bigint", + "t_time_id": "string", + "t_time": "bigint", + "t_hour": "bigint", + "t_minute": "bigint", + "t_second": "bigint", + "t_am_pm": "string", + "t_shift": "string", + "t_sub_shift": "string", + "t_meal_time": "string", + }, + "warehouse": { + "w_warehouse_sk": "bigint", + "w_warehouse_id": "string", + "w_warehouse_name": "string", + "w_warehouse_sq_ft": "bigint", + "w_street_number": "string", + "w_street_name": "string", + "w_street_type": "string", + "w_suite_number": "string", + "w_city": "string", + "w_county": "string", + "w_state": "string", + "w_zip": "string", + "w_country": "string", + "w_gmt_offset": "double", + }, + "web_page": { + "wp_web_page_sk": "bigint", + "wp_web_page_id": "string", + "wp_rec_start_date": "string", + "wp_rec_end_date": "string", + "wp_creation_date_sk": "bigint", + "wp_access_date_sk": "bigint", + "wp_autogen_flag": "string", + "wp_customer_sk": "bigint", + "wp_url": "string", + "wp_type": "string", + "wp_char_count": "bigint", + "wp_link_count": "bigint", + "wp_image_count": "bigint", + "wp_max_ad_count": "bigint", + }, + "web_site": { + "web_site_sk": "bigint", + "web_site_id": "string", + "web_rec_start_date": "string", + "web_rec_end_date": "string", + "web_name": "string", + "web_open_date_sk": "bigint", + "web_close_date_sk": "bigint", + "web_class": "string", + "web_manager": "string", + "web_mkt_id": "bigint", + "web_mkt_class": "string", + "web_mkt_desc": "string", + "web_market_manager": "string", + "web_company_id": "bigint", + "web_company_name": "string", + "web_street_number": "string", + "web_street_name": "string", + "web_street_type": "string", + "web_suite_number": "string", + "web_city": "string", + "web_county": "string", + "web_state": "string", + "web_zip": "string", + "web_country": "string", + "web_gmt_offset": "string", + "web_tax_percentage": "double", + }, +} diff --git a/tests/test_diff.py b/tests/test_diff.py index 372af70..d5fa163 100644 --- a/tests/test_diff.py +++ b/tests/test_diff.py @@ -155,6 +155,19 @@ class TestDiff(unittest.TestCase): with self.assertRaises(ValueError): diff(expr_src, expr_tgt, matchings=[(expr_src, expr_tgt), (expr_src, expr_tgt)]) + def test_identifier(self): + expr_src = parse_one("SELECT a FROM tbl") + expr_tgt = parse_one("SELECT a, tbl.b from tbl") + + self._validate_delta_only( + diff(expr_src, expr_tgt), + [ + Insert(expression=exp.to_identifier("b")), + Insert(expression=exp.to_column("tbl.b")), + Insert(expression=exp.to_identifier("tbl")), + ], + ) + def _validate_delta_only(self, actual_diff, expected_delta): actual_delta = _delta_only(actual_diff) self.assertEqual(set(actual_delta), set(expected_delta)) diff --git a/tests/test_executor.py b/tests/test_executor.py index 013ff34..c455f3a 100644 --- a/tests/test_executor.py +++ b/tests/test_executor.py @@ -401,6 +401,16 @@ class TestExecutor(unittest.TestCase): ], ) + table1_view = exp.Select().select("id", "sub_type").from_("table1").subquery() + select_from_sub_query = exp.Select().select("id AS id_alias", "sub_type").from_(table1_view) + expression = exp.Select().select("*").from_("cte1").with_("cte1", as_=select_from_sub_query) + + schema = {"table1": {"id": "str", "sub_type": "str"}} + executed = execute(expression, tables={t: [] for t in schema}, schema=schema) + + self.assertEqual(executed.rows, []) + self.assertEqual(executed.columns, ("id_alias", "sub_type")) + def test_correlated_count(self): tables = { "parts": [{"pnum": 0, "qoh": 1}], diff --git a/tests/test_expressions.py b/tests/test_expressions.py index 69e1d14..c22f13e 100644 --- a/tests/test_expressions.py +++ b/tests/test_expressions.py @@ -15,6 +15,20 @@ class TestExpressions(unittest.TestCase): self.assertEqual(parse_one("x(1)").find(exp.Literal).depth, 1) def test_eq(self): + self.assertEqual(exp.to_identifier("a"), exp.to_identifier("A")) + + self.assertEqual( + exp.Column(table=exp.to_identifier("b"), this=exp.to_identifier("b")), + exp.Column(this=exp.to_identifier("b"), table=exp.to_identifier("b")), + ) + + self.assertEqual(exp.to_identifier("a", quoted=True), exp.to_identifier("A")) + self.assertNotEqual(exp.to_identifier("A", quoted=True), exp.to_identifier("A")) + self.assertNotEqual( + exp.to_identifier("A", quoted=True), exp.to_identifier("a", quoted=True) + ) + self.assertNotEqual(parse_one("'x'"), parse_one("'X'")) + self.assertNotEqual(parse_one("'1'"), parse_one("1")) self.assertEqual(parse_one("`a`", read="hive"), parse_one('"a"')) self.assertEqual(parse_one("`a`", read="hive"), parse_one('"a" ')) self.assertEqual(parse_one("`a`.b", read="hive"), parse_one('"a"."b"')) @@ -330,6 +344,7 @@ class TestExpressions(unittest.TestCase): self.assertEqual(parse_one("x + y * 2").sql(), "x + y * 2") self.assertEqual(parse_one('select "x"').sql(dialect="hive", pretty=True), "SELECT\n `x`") self.assertEqual(parse_one("X + y").sql(identify=True, normalize=True), '"x" + "y"') + self.assertEqual(parse_one('"X" + Y').sql(identify=True, normalize=True), '"X" + "y"') self.assertEqual(parse_one("SUM(X)").sql(identify=True, normalize=True), 'SUM("x")') def test_transform_with_arguments(self): @@ -450,22 +465,28 @@ class TestExpressions(unittest.TestCase): self.assertIsInstance(parse_one("ARRAY_CONTAINS(a, 'a')"), exp.ArrayContains) self.assertIsInstance(parse_one("ARRAY_SIZE(a)"), exp.ArraySize) self.assertIsInstance(parse_one("AVG(a)"), exp.Avg) + self.assertIsInstance(parse_one("BEGIN DEFERRED TRANSACTION"), exp.Transaction) self.assertIsInstance(parse_one("CEIL(a)"), exp.Ceil) self.assertIsInstance(parse_one("CEILING(a)"), exp.Ceil) self.assertIsInstance(parse_one("COALESCE(a, b)"), exp.Coalesce) + self.assertIsInstance(parse_one("COMMIT"), exp.Commit) self.assertIsInstance(parse_one("COUNT(a)"), exp.Count) + self.assertIsInstance(parse_one("COUNT_IF(a > 0)"), exp.CountIf) self.assertIsInstance(parse_one("DATE_ADD(a, 1)"), exp.DateAdd) self.assertIsInstance(parse_one("DATE_DIFF(a, 2)"), exp.DateDiff) self.assertIsInstance(parse_one("DATE_STR_TO_DATE(a)"), exp.DateStrToDate) self.assertIsInstance(parse_one("DAY(a)"), exp.Day) self.assertIsInstance(parse_one("EXP(a)"), exp.Exp) self.assertIsInstance(parse_one("FLOOR(a)"), exp.Floor) + self.assertIsInstance(parse_one("GENERATE_SERIES(a, b, c)"), exp.GenerateSeries) + self.assertIsInstance(parse_one("GLOB(x, y)"), exp.Glob) self.assertIsInstance(parse_one("GREATEST(a, b)"), exp.Greatest) self.assertIsInstance(parse_one("IF(a, b, c)"), exp.If) self.assertIsInstance(parse_one("INITCAP(a)"), exp.Initcap) self.assertIsInstance(parse_one("JSON_EXTRACT(a, '$.name')"), exp.JSONExtract) self.assertIsInstance(parse_one("JSON_EXTRACT_SCALAR(a, '$.name')"), exp.JSONExtractScalar) self.assertIsInstance(parse_one("LEAST(a, b)"), exp.Least) + self.assertIsInstance(parse_one("LIKE(x, y)"), exp.Like) self.assertIsInstance(parse_one("LN(a)"), exp.Ln) self.assertIsInstance(parse_one("LOG10(a)"), exp.Log10) self.assertIsInstance(parse_one("MAX(a)"), exp.Max) @@ -477,6 +498,7 @@ class TestExpressions(unittest.TestCase): self.assertIsInstance(parse_one("QUANTILE(a, 0.90)"), exp.Quantile) self.assertIsInstance(parse_one("REGEXP_LIKE(a, 'test')"), exp.RegexpLike) self.assertIsInstance(parse_one("REGEXP_SPLIT(a, 'test')"), exp.RegexpSplit) + self.assertIsInstance(parse_one("ROLLBACK"), exp.Rollback) self.assertIsInstance(parse_one("ROUND(a)"), exp.Round) self.assertIsInstance(parse_one("ROUND(a, 2)"), exp.Round) self.assertIsInstance(parse_one("SPLIT(a, 'test')"), exp.Split) @@ -504,11 +526,6 @@ class TestExpressions(unittest.TestCase): self.assertIsInstance(parse_one("VARIANCE(a)"), exp.Variance) self.assertIsInstance(parse_one("VARIANCE_POP(a)"), exp.VariancePop) self.assertIsInstance(parse_one("YEAR(a)"), exp.Year) - self.assertIsInstance(parse_one("BEGIN DEFERRED TRANSACTION"), exp.Transaction) - self.assertIsInstance(parse_one("COMMIT"), exp.Commit) - self.assertIsInstance(parse_one("ROLLBACK"), exp.Rollback) - self.assertIsInstance(parse_one("GENERATE_SERIES(a, b, c)"), exp.GenerateSeries) - self.assertIsInstance(parse_one("COUNT_IF(a > 0)"), exp.CountIf) def test_column(self): column = parse_one("a.b.c.d") @@ -542,6 +559,7 @@ class TestExpressions(unittest.TestCase): self.assertEqual(column.table, "a") self.assertIsInstance(parse_one("*"), exp.Star) + self.assertEqual(exp.column("a", table="b", db="c", catalog="d"), exp.to_column("d.c.b.a")) def test_text(self): column = parse_one("a.b.c.d.e") diff --git a/tests/test_optimizer.py b/tests/test_optimizer.py index e10d05e..597fa6f 100644 --- a/tests/test_optimizer.py +++ b/tests/test_optimizer.py @@ -1,4 +1,5 @@ import unittest +from concurrent.futures import ProcessPoolExecutor, as_completed from functools import partial import duckdb @@ -11,6 +12,7 @@ from sqlglot.optimizer.annotate_types import annotate_types from sqlglot.optimizer.scope import build_scope, traverse_scope, walk_in_scope from sqlglot.schema import MappingSchema from tests.helpers import ( + TPCDS_SCHEMA, TPCH_SCHEMA, load_sql_fixture_pairs, load_sql_fixtures, @@ -18,6 +20,28 @@ from tests.helpers import ( ) +def parse_and_optimize(func, sql, dialect, **kwargs): + return func(parse_one(sql, read=dialect), **kwargs) + + +def qualify_columns(expression, **kwargs): + expression = optimizer.qualify_tables.qualify_tables(expression) + expression = optimizer.qualify_columns.qualify_columns(expression, **kwargs) + return expression + + +def pushdown_projections(expression, **kwargs): + expression = optimizer.qualify_tables.qualify_tables(expression) + expression = optimizer.qualify_columns.qualify_columns(expression, **kwargs) + expression = optimizer.pushdown_projections.pushdown_projections(expression, **kwargs) + return expression + + +def normalize(expression, **kwargs): + expression = optimizer.normalize.normalize(expression, dnf=False) + return optimizer.simplify.simplify(expression) + + class TestOptimizer(unittest.TestCase): maxDiff = None @@ -74,29 +98,35 @@ class TestOptimizer(unittest.TestCase): } def check_file(self, file, func, pretty=False, execute=False, **kwargs): - for i, (meta, sql, expected) in enumerate( - load_sql_fixture_pairs(f"optimizer/{file}.sql"), start=1 - ): - title = meta.get("title") or f"{i}, {sql}" - dialect = meta.get("dialect") - leave_tables_isolated = meta.get("leave_tables_isolated") + with ProcessPoolExecutor() as pool: + results = {} + + for i, (meta, sql, expected) in enumerate( + load_sql_fixture_pairs(f"optimizer/{file}.sql"), start=1 + ): + title = meta.get("title") or f"{i}, {sql}" + dialect = meta.get("dialect") + execute = execute if meta.get("execute") is None else False + leave_tables_isolated = meta.get("leave_tables_isolated") - func_kwargs = {**kwargs} - if leave_tables_isolated is not None: - func_kwargs["leave_tables_isolated"] = string_to_bool(leave_tables_isolated) + func_kwargs = {**kwargs} + if leave_tables_isolated is not None: + func_kwargs["leave_tables_isolated"] = string_to_bool(leave_tables_isolated) + + future = pool.submit(parse_and_optimize, func, sql, dialect, **func_kwargs) + results[future] = (sql, title, expected, dialect, execute) + + for future in as_completed(results): + optimized = future.result() + sql, title, expected, dialect, execute = results[future] with self.subTest(title): - optimized = func(parse_one(sql, read=dialect), **func_kwargs) self.assertEqual( expected, optimized.sql(pretty=pretty, dialect=dialect), ) - should_execute = meta.get("execute") - if should_execute is None: - should_execute = execute - - if string_to_bool(should_execute): + if string_to_bool(execute): with self.subTest(f"(execute) {title}"): df1 = self.conn.execute( sqlglot.transpile(sql, read=dialect, write="duckdb")[0] @@ -137,25 +167,19 @@ class TestOptimizer(unittest.TestCase): "(x AND y) OR (x AND z)", ) - self.check_file( - "normalize", - optimizer.normalize.normalize, + self.assertEqual( + optimizer.normalize.normalize( + parse_one("x AND (y OR z)"), + ).sql(), + "x AND (y OR z)", ) - def test_qualify_columns(self): - def qualify_columns(expression, **kwargs): - expression = optimizer.qualify_tables.qualify_tables(expression) - expression = optimizer.qualify_columns.qualify_columns(expression, **kwargs) - return expression + self.check_file("normalize", normalize) + def test_qualify_columns(self): self.check_file("qualify_columns", qualify_columns, execute=True, schema=self.schema) def test_qualify_columns__with_invisible(self): - def qualify_columns(expression, **kwargs): - expression = optimizer.qualify_tables.qualify_tables(expression) - expression = optimizer.qualify_columns.qualify_columns(expression, **kwargs) - return expression - schema = MappingSchema(self.schema, {"x": {"a"}, "y": {"b"}, "z": {"b"}}) self.check_file("qualify_columns__with_invisible", qualify_columns, schema=schema) @@ -172,17 +196,15 @@ class TestOptimizer(unittest.TestCase): self.check_file("lower_identities", optimizer.lower_identities.lower_identities) def test_pushdown_projection(self): - def pushdown_projections(expression, **kwargs): - expression = optimizer.qualify_tables.qualify_tables(expression) - expression = optimizer.qualify_columns.qualify_columns(expression, **kwargs) - expression = optimizer.pushdown_projections.pushdown_projections(expression, **kwargs) - return expression - self.check_file("pushdown_projections", pushdown_projections, schema=self.schema) def test_simplify(self): self.check_file("simplify", optimizer.simplify.simplify) + expression = parse_one("TRUE AND TRUE AND TRUE") + self.assertEqual(exp.true(), optimizer.simplify.simplify(expression)) + self.assertEqual(exp.true(), optimizer.simplify.simplify(expression.this)) + def test_unnest_subqueries(self): self.check_file( "unnest_subqueries", @@ -257,6 +279,9 @@ class TestOptimizer(unittest.TestCase): def test_tpch(self): self.check_file("tpc-h/tpc-h", optimizer.optimize, schema=TPCH_SCHEMA, pretty=True) + def test_tpcds(self): + self.check_file("tpc-ds/tpc-ds", optimizer.optimize, schema=TPCDS_SCHEMA, pretty=True) + def test_file_schema(self): expression = parse_one( """ @@ -578,6 +603,10 @@ FROM READ_CSV('tests/fixtures/optimizer/tpc-h/nation.csv.gz', 'delimiter', '|') ) self.assertEqual(expression.expressions[0].type.this, target_type) + def test_concat_annotation(self): + expression = annotate_types(parse_one("CONCAT('A', 'B')")) + self.assertEqual(expression.type.this, exp.DataType.Type.VARCHAR) + def test_recursive_cte(self): query = parse_one( """ diff --git a/tests/test_parser.py b/tests/test_parser.py index 861e47f..07a5fd7 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -79,6 +79,9 @@ class TestParser(unittest.TestCase): def test_union_order(self): self.assertIsInstance(parse_one("SELECT * FROM (SELECT 1) UNION SELECT 2"), exp.Union) + self.assertIsInstance( + parse_one("SELECT x FROM y HAVING x > (SELECT 1) UNION SELECT 2"), exp.Union + ) def test_select(self): self.assertIsNotNone(parse_one("select 1 natural")) @@ -357,7 +360,7 @@ class TestParser(unittest.TestCase): @patch("sqlglot.parser.logger") def test_create_table_error(self, logger): parse_one( - """CREATE TABLE PARTITION""", + """CREATE TABLE SELECT""", error_level=ErrorLevel.WARN, ) diff --git a/tests/test_transpile.py b/tests/test_transpile.py index 6355400..36e0aa6 100644 --- a/tests/test_transpile.py +++ b/tests/test_transpile.py @@ -507,14 +507,14 @@ FROM bar /* comment 5 */, tbl /* comment 6 */""", more_than_max_errors = "((((" expected_messages = ( - "Expecting ). Line 1, Col: 4.\n (((\033[4m(\033[0m\n\n" "Required keyword: 'this' missing for . Line 1, Col: 4.\n (((\033[4m(\033[0m\n\n" "Expecting ). Line 1, Col: 4.\n (((\033[4m(\033[0m\n\n" + "Expecting ). Line 1, Col: 4.\n (((\033[4m(\033[0m\n\n" "... and 2 more" ) expected_errors = [ { - "description": "Expecting )", + "description": "Required keyword: 'this' missing for ", "line": 1, "col": 4, "start_context": "(((", @@ -523,7 +523,7 @@ FROM bar /* comment 5 */, tbl /* comment 6 */""", "into_expression": None, }, { - "description": "Required keyword: 'this' missing for ", + "description": "Expecting )", "line": 1, "col": 4, "start_context": "(((", @@ -533,7 +533,7 @@ FROM bar /* comment 5 */, tbl /* comment 6 */""", }, ] # Also expect three trailing structured errors that match the first - expected_errors += [expected_errors[0]] * 3 + expected_errors += [expected_errors[1]] * 3 with self.assertRaises(ParseError) as ctx: transpile(more_than_max_errors, error_level=ErrorLevel.RAISE) diff --git a/tests/tpch.py b/tests/tpch.py new file mode 100644 index 0000000..0b6de63 --- /dev/null +++ b/tests/tpch.py @@ -0,0 +1,37 @@ +import time + +from sqlglot.optimizer import optimize + +INPUT = "" +OUTPUT = "" +NUM = 99 +SCHEMA = {} +KIND = "DS" + +with open(OUTPUT, "w", encoding="UTF-8") as fixture: + for i in range(NUM): + i = i + 1 + with open(INPUT.format(i=i), encoding="UTF-8") as file: + original = "\n".join( + line.rstrip() + for line in file.read().split(";")[0].split("\n") + if not line.startswith("--") + ) + original = original.replace("`", '"') + now = time.time() + try: + optimized = optimize(original, schema=SCHEMA) + except Exception as e: + print("****", i, e, "****") + continue + + fixture.write( + f"""-------------------------------------- +-- TPC-{KIND} {i} +-------------------------------------- +{original}; +{optimized.sql(pretty=True)}; + +""" + ) + print(i, time.time() - now) -- cgit v1.2.3