sqlglot 27.25.2__py3-none-any.whl → 27.27.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- sqlglot/_version.py +2 -2
- sqlglot/dialects/clickhouse.py +3 -1
- sqlglot/dialects/dialect.py +3 -1
- sqlglot/dialects/duckdb.py +16 -3
- sqlglot/dialects/postgres.py +1 -1
- sqlglot/dialects/snowflake.py +6 -0
- sqlglot/dialects/tsql.py +7 -1
- sqlglot/expressions.py +16 -2
- sqlglot/generator.py +7 -3
- sqlglot/optimizer/qualify_columns.py +2 -2
- sqlglot/optimizer/qualify_tables.py +2 -1
- sqlglot/optimizer/unnest_subqueries.py +1 -1
- sqlglot/parser.py +13 -4
- sqlglot/transforms.py +2 -2
- {sqlglot-27.25.2.dist-info → sqlglot-27.27.0.dist-info}/METADATA +2 -2
- {sqlglot-27.25.2.dist-info → sqlglot-27.27.0.dist-info}/RECORD +19 -19
- {sqlglot-27.25.2.dist-info → sqlglot-27.27.0.dist-info}/WHEEL +0 -0
- {sqlglot-27.25.2.dist-info → sqlglot-27.27.0.dist-info}/licenses/LICENSE +0 -0
- {sqlglot-27.25.2.dist-info → sqlglot-27.27.0.dist-info}/top_level.txt +0 -0
sqlglot/_version.py
CHANGED
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '27.
|
|
32
|
-
__version_tuple__ = version_tuple = (27,
|
|
31
|
+
__version__ = version = '27.27.0'
|
|
32
|
+
__version_tuple__ = version_tuple = (27, 27, 0)
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
sqlglot/dialects/clickhouse.py
CHANGED
|
@@ -769,7 +769,9 @@ class ClickHouse(Dialect):
|
|
|
769
769
|
) -> t.Optional[exp.Join]:
|
|
770
770
|
join = super()._parse_join(skip_join_token=skip_join_token, parse_bracket=True)
|
|
771
771
|
if join:
|
|
772
|
-
|
|
772
|
+
method = join.args.get("method")
|
|
773
|
+
join.set("method", None)
|
|
774
|
+
join.set("global", method)
|
|
773
775
|
|
|
774
776
|
# tbl ARRAY JOIN arr <-- this should be a `Column` reference, not a `Table`
|
|
775
777
|
# https://clickhouse.com/docs/en/sql-reference/statements/select/array-join
|
sqlglot/dialects/dialect.py
CHANGED
|
@@ -721,8 +721,10 @@ class Dialect(metaclass=_Dialect):
|
|
|
721
721
|
exp.Exp,
|
|
722
722
|
exp.Ln,
|
|
723
723
|
exp.Log,
|
|
724
|
+
exp.Pi,
|
|
724
725
|
exp.Pow,
|
|
725
726
|
exp.Quantile,
|
|
727
|
+
exp.Radians,
|
|
726
728
|
exp.Round,
|
|
727
729
|
exp.SafeDivide,
|
|
728
730
|
exp.Sqrt,
|
|
@@ -1195,7 +1197,7 @@ def no_paren_current_date_sql(self: Generator, expression: exp.CurrentDate) -> s
|
|
|
1195
1197
|
def no_recursive_cte_sql(self: Generator, expression: exp.With) -> str:
|
|
1196
1198
|
if expression.args.get("recursive"):
|
|
1197
1199
|
self.unsupported("Recursive CTEs are unsupported")
|
|
1198
|
-
expression.
|
|
1200
|
+
expression.set("recursive", False)
|
|
1199
1201
|
return self.with_sql(expression)
|
|
1200
1202
|
|
|
1201
1203
|
|
sqlglot/dialects/duckdb.py
CHANGED
|
@@ -706,7 +706,6 @@ class DuckDB(Dialect):
|
|
|
706
706
|
exp.GenerateDateArray: _generate_datetime_array_sql,
|
|
707
707
|
exp.GenerateTimestampArray: _generate_datetime_array_sql,
|
|
708
708
|
exp.GroupConcat: lambda self, e: groupconcat_sql(self, e, within_group=False),
|
|
709
|
-
exp.HexString: lambda self, e: self.hexstring_sql(e, binary_function_repr="FROM_HEX"),
|
|
710
709
|
exp.Explode: rename_func("UNNEST"),
|
|
711
710
|
exp.IntDiv: lambda self, e: self.binary(e, "//"),
|
|
712
711
|
exp.IsInf: rename_func("ISINF"),
|
|
@@ -1039,8 +1038,8 @@ class DuckDB(Dialect):
|
|
|
1039
1038
|
if isinstance(expression.this, exp.Unnest):
|
|
1040
1039
|
return super().join_sql(expression.on(exp.true()))
|
|
1041
1040
|
|
|
1042
|
-
expression.
|
|
1043
|
-
expression.
|
|
1041
|
+
expression.set("side", None)
|
|
1042
|
+
expression.set("kind", None)
|
|
1044
1043
|
|
|
1045
1044
|
return super().join_sql(expression)
|
|
1046
1045
|
|
|
@@ -1301,3 +1300,17 @@ class DuckDB(Dialect):
|
|
|
1301
1300
|
return self.func("FORMAT", "'{}'", expression.expressions[0])
|
|
1302
1301
|
|
|
1303
1302
|
return self.function_fallback_sql(expression)
|
|
1303
|
+
|
|
1304
|
+
def hexstring_sql(
|
|
1305
|
+
self, expression: exp.HexString, binary_function_repr: t.Optional[str] = None
|
|
1306
|
+
) -> str:
|
|
1307
|
+
from_hex = super().hexstring_sql(expression, binary_function_repr="FROM_HEX")
|
|
1308
|
+
|
|
1309
|
+
if expression.args.get("is_integer"):
|
|
1310
|
+
return from_hex
|
|
1311
|
+
|
|
1312
|
+
# `from_hex` has transpiled x'ABCD' (BINARY) to DuckDB's '\xAB\xCD' (BINARY)
|
|
1313
|
+
# `to_hex` & CASTing transforms it to "ABCD" (BINARY) to match representation
|
|
1314
|
+
to_hex = exp.cast(self.func("TO_HEX", from_hex), exp.DataType.Type.BLOB)
|
|
1315
|
+
|
|
1316
|
+
return self.sql(to_hex)
|
sqlglot/dialects/postgres.py
CHANGED
|
@@ -67,7 +67,7 @@ def _date_add_sql(kind: str) -> t.Callable[[Postgres.Generator, DATE_ADD_OR_SUB]
|
|
|
67
67
|
|
|
68
68
|
e = self._simplify_unless_literal(expression.expression)
|
|
69
69
|
if isinstance(e, exp.Literal):
|
|
70
|
-
e.
|
|
70
|
+
e.set("is_string", True)
|
|
71
71
|
elif e.is_number:
|
|
72
72
|
e = exp.Literal.string(e.to_py())
|
|
73
73
|
else:
|
sqlglot/dialects/snowflake.py
CHANGED
|
@@ -571,8 +571,13 @@ class Snowflake(Dialect):
|
|
|
571
571
|
exp.Degrees,
|
|
572
572
|
exp.Exp,
|
|
573
573
|
exp.Sin,
|
|
574
|
+
exp.Sinh,
|
|
574
575
|
exp.Tan,
|
|
576
|
+
exp.Tanh,
|
|
575
577
|
exp.Asin,
|
|
578
|
+
exp.Asinh,
|
|
579
|
+
exp.Atan,
|
|
580
|
+
exp.Atan2,
|
|
576
581
|
exp.Atanh,
|
|
577
582
|
exp.Cbrt,
|
|
578
583
|
},
|
|
@@ -671,6 +676,7 @@ class Snowflake(Dialect):
|
|
|
671
676
|
exp.Stuff,
|
|
672
677
|
exp.Substring,
|
|
673
678
|
exp.Round,
|
|
679
|
+
exp.Ceil,
|
|
674
680
|
)
|
|
675
681
|
},
|
|
676
682
|
**{
|
sqlglot/dialects/tsql.py
CHANGED
|
@@ -412,6 +412,11 @@ class TSQL(Dialect):
|
|
|
412
412
|
|
|
413
413
|
TIME_FORMAT = "'yyyy-mm-dd hh:mm:ss'"
|
|
414
414
|
|
|
415
|
+
ANNOTATORS = {
|
|
416
|
+
**Dialect.ANNOTATORS,
|
|
417
|
+
exp.Radians: lambda self, e: self._annotate_by_args(e, "this"),
|
|
418
|
+
}
|
|
419
|
+
|
|
415
420
|
TIME_MAPPING = {
|
|
416
421
|
"year": "%Y",
|
|
417
422
|
"dayofyear": "%j",
|
|
@@ -1219,7 +1224,8 @@ class TSQL(Dialect):
|
|
|
1219
1224
|
|
|
1220
1225
|
def create_sql(self, expression: exp.Create) -> str:
|
|
1221
1226
|
kind = expression.kind
|
|
1222
|
-
exists = expression.args.
|
|
1227
|
+
exists = expression.args.get("exists")
|
|
1228
|
+
expression.set("exists", None)
|
|
1223
1229
|
|
|
1224
1230
|
like_property = expression.find(exp.LikeProperty)
|
|
1225
1231
|
if like_property:
|
sqlglot/expressions.py
CHANGED
|
@@ -1008,8 +1008,8 @@ class Expression(metaclass=_Expression):
|
|
|
1008
1008
|
|
|
1009
1009
|
def div(self, other: ExpOrStr, typed: bool = False, safe: bool = False) -> Div:
|
|
1010
1010
|
div = self._binop(Div, other)
|
|
1011
|
-
div.
|
|
1012
|
-
div.
|
|
1011
|
+
div.set("typed", typed)
|
|
1012
|
+
div.set("safe", safe)
|
|
1013
1013
|
return div
|
|
1014
1014
|
|
|
1015
1015
|
def asc(self, nulls_first: bool = True) -> Ordered:
|
|
@@ -1727,6 +1727,7 @@ class CTE(DerivedTable):
|
|
|
1727
1727
|
"alias": True,
|
|
1728
1728
|
"scalar": False,
|
|
1729
1729
|
"materialized": False,
|
|
1730
|
+
"key_expressions": False,
|
|
1730
1731
|
}
|
|
1731
1732
|
|
|
1732
1733
|
|
|
@@ -2386,6 +2387,7 @@ class Insert(DDL, DML):
|
|
|
2386
2387
|
"partition": False,
|
|
2387
2388
|
"settings": False,
|
|
2388
2389
|
"source": False,
|
|
2390
|
+
"default": False,
|
|
2389
2391
|
}
|
|
2390
2392
|
|
|
2391
2393
|
def with_(
|
|
@@ -5560,6 +5562,10 @@ class Tan(Func):
|
|
|
5560
5562
|
pass
|
|
5561
5563
|
|
|
5562
5564
|
|
|
5565
|
+
class Tanh(Func):
|
|
5566
|
+
pass
|
|
5567
|
+
|
|
5568
|
+
|
|
5563
5569
|
class Degrees(Func):
|
|
5564
5570
|
pass
|
|
5565
5571
|
|
|
@@ -7201,6 +7207,10 @@ class VectorSearch(Func):
|
|
|
7201
7207
|
}
|
|
7202
7208
|
|
|
7203
7209
|
|
|
7210
|
+
class Pi(Func):
|
|
7211
|
+
arg_types = {}
|
|
7212
|
+
|
|
7213
|
+
|
|
7204
7214
|
class Pow(Binary, Func):
|
|
7205
7215
|
_sql_names = ["POWER", "POW"]
|
|
7206
7216
|
|
|
@@ -7351,6 +7361,10 @@ class Replace(Func):
|
|
|
7351
7361
|
arg_types = {"this": True, "expression": True, "replacement": False}
|
|
7352
7362
|
|
|
7353
7363
|
|
|
7364
|
+
class Radians(Func):
|
|
7365
|
+
pass
|
|
7366
|
+
|
|
7367
|
+
|
|
7354
7368
|
# https://learn.microsoft.com/en-us/sql/t-sql/functions/round-transact-sql?view=sql-server-ver16
|
|
7355
7369
|
# tsql third argument function == trunctaion if not 0
|
|
7356
7370
|
class Round(Func):
|
sqlglot/generator.py
CHANGED
|
@@ -1332,7 +1332,10 @@ class Generator(metaclass=_Generator):
|
|
|
1332
1332
|
elif materialized:
|
|
1333
1333
|
materialized = "MATERIALIZED "
|
|
1334
1334
|
|
|
1335
|
-
|
|
1335
|
+
key_expressions = self.expressions(expression, key="key_expressions", flat=True)
|
|
1336
|
+
key_expressions = f" USING KEY ({key_expressions})" if key_expressions else ""
|
|
1337
|
+
|
|
1338
|
+
return f"{alias_sql}{key_expressions} AS {materialized or ''}{self.wrap(expression)}"
|
|
1336
1339
|
|
|
1337
1340
|
def tablealias_sql(self, expression: exp.TableAlias) -> str:
|
|
1338
1341
|
alias = self.sql(expression, "this")
|
|
@@ -1478,7 +1481,7 @@ class Generator(metaclass=_Generator):
|
|
|
1478
1481
|
def delete_sql(self, expression: exp.Delete) -> str:
|
|
1479
1482
|
this = self.sql(expression, "this")
|
|
1480
1483
|
this = f" FROM {this}" if this else ""
|
|
1481
|
-
using = self.
|
|
1484
|
+
using = self.expressions(expression, key="using")
|
|
1482
1485
|
using = f" USING {using}" if using else ""
|
|
1483
1486
|
cluster = self.sql(expression, "cluster")
|
|
1484
1487
|
cluster = f" {cluster}" if cluster else ""
|
|
@@ -1952,10 +1955,11 @@ class Generator(metaclass=_Generator):
|
|
|
1952
1955
|
on_conflict = self.sql(expression, "conflict")
|
|
1953
1956
|
on_conflict = f" {on_conflict}" if on_conflict else ""
|
|
1954
1957
|
by_name = " BY NAME" if expression.args.get("by_name") else ""
|
|
1958
|
+
default_values = "DEFAULT VALUES" if expression.args.get("default") else ""
|
|
1955
1959
|
returning = self.sql(expression, "returning")
|
|
1956
1960
|
|
|
1957
1961
|
if self.RETURNING_END:
|
|
1958
|
-
expression_sql = f"{expression_sql}{on_conflict}{returning}"
|
|
1962
|
+
expression_sql = f"{expression_sql}{on_conflict}{default_values}{returning}"
|
|
1959
1963
|
else:
|
|
1960
1964
|
expression_sql = f"{returning}{expression_sql}{on_conflict}"
|
|
1961
1965
|
|
|
@@ -162,7 +162,7 @@ def _pop_table_column_aliases(derived_tables: t.List[exp.CTE | exp.Subquery]) ->
|
|
|
162
162
|
continue
|
|
163
163
|
table_alias = derived_table.args.get("alias")
|
|
164
164
|
if table_alias:
|
|
165
|
-
table_alias.
|
|
165
|
+
table_alias.set("columns", None)
|
|
166
166
|
|
|
167
167
|
|
|
168
168
|
def _expand_using(scope: Scope, resolver: Resolver) -> t.Dict[str, t.Any]:
|
|
@@ -239,7 +239,7 @@ def _expand_using(scope: Scope, resolver: Resolver) -> t.Dict[str, t.Any]:
|
|
|
239
239
|
if join_table not in tables:
|
|
240
240
|
tables[join_table] = None
|
|
241
241
|
|
|
242
|
-
join.
|
|
242
|
+
join.set("using", None)
|
|
243
243
|
join.set("on", exp.and_(*conditions, copy=False))
|
|
244
244
|
|
|
245
245
|
if column_tables:
|
|
@@ -72,7 +72,8 @@ def qualify_tables(
|
|
|
72
72
|
if isinstance(derived_table, exp.Subquery):
|
|
73
73
|
unnested = derived_table.unnest()
|
|
74
74
|
if isinstance(unnested, exp.Table):
|
|
75
|
-
joins = unnested.args.
|
|
75
|
+
joins = unnested.args.get("joins")
|
|
76
|
+
unnested.set("joins", None)
|
|
76
77
|
derived_table.this.replace(exp.select("*").from_(unnested.copy(), copy=False))
|
|
77
78
|
derived_table.this.set("joins", joins)
|
|
78
79
|
|
|
@@ -189,7 +189,7 @@ def decorrelate(select, parent_select, external_columns, next_alias_name):
|
|
|
189
189
|
# exists queries should not have any selects as it only checks if there are any rows
|
|
190
190
|
# all selects will be added by the optimizer and only used for join keys
|
|
191
191
|
if isinstance(parent_predicate, exp.Exists):
|
|
192
|
-
select.
|
|
192
|
+
select.set("expressions", [])
|
|
193
193
|
|
|
194
194
|
for key, alias in key_aliases.items():
|
|
195
195
|
if key in group_by:
|
sqlglot/parser.py
CHANGED
|
@@ -805,6 +805,7 @@ class Parser(metaclass=_Parser):
|
|
|
805
805
|
EXPRESSION_PARSERS = {
|
|
806
806
|
exp.Cluster: lambda self: self._parse_sort(exp.Cluster, TokenType.CLUSTER_BY),
|
|
807
807
|
exp.Column: lambda self: self._parse_column(),
|
|
808
|
+
exp.ColumnDef: lambda self: self._parse_column_def(self._parse_column()),
|
|
808
809
|
exp.Condition: lambda self: self._parse_assignment(),
|
|
809
810
|
exp.DataType: lambda self: self._parse_types(allow_identifiers=False, schema=True),
|
|
810
811
|
exp.Expression: lambda self: self._parse_expression(),
|
|
@@ -2962,6 +2963,7 @@ class Parser(metaclass=_Parser):
|
|
|
2962
2963
|
where=self._match_pair(TokenType.REPLACE, TokenType.WHERE) and self._parse_assignment(),
|
|
2963
2964
|
partition=self._match(TokenType.PARTITION_BY) and self._parse_partitioned_by(),
|
|
2964
2965
|
settings=self._match_text_seq("SETTINGS") and self._parse_settings_property(),
|
|
2966
|
+
default=self._match_text_seq("DEFAULT", "VALUES"),
|
|
2965
2967
|
expression=self._parse_derived_table_values() or self._parse_ddl_select(),
|
|
2966
2968
|
conflict=self._parse_on_conflict(),
|
|
2967
2969
|
returning=returning or self._parse_returning(),
|
|
@@ -3110,7 +3112,8 @@ class Parser(metaclass=_Parser):
|
|
|
3110
3112
|
exp.Delete,
|
|
3111
3113
|
tables=tables,
|
|
3112
3114
|
this=self._match(TokenType.FROM) and self._parse_table(joins=True),
|
|
3113
|
-
using=self._match(TokenType.USING)
|
|
3115
|
+
using=self._match(TokenType.USING)
|
|
3116
|
+
and self._parse_csv(lambda: self._parse_table(joins=True)),
|
|
3114
3117
|
cluster=self._match(TokenType.ON) and self._parse_on_property(),
|
|
3115
3118
|
where=self._parse_where(),
|
|
3116
3119
|
returning=returning or self._parse_returning(),
|
|
@@ -3434,6 +3437,10 @@ class Parser(metaclass=_Parser):
|
|
|
3434
3437
|
if not alias or not alias.this:
|
|
3435
3438
|
self.raise_error("Expected CTE to have alias")
|
|
3436
3439
|
|
|
3440
|
+
key_expressions = (
|
|
3441
|
+
self._parse_wrapped_id_vars() if self._match_text_seq("USING", "KEY") else None
|
|
3442
|
+
)
|
|
3443
|
+
|
|
3437
3444
|
if not self._match(TokenType.ALIAS) and not self.OPTIONAL_ALIAS_TOKEN_CTE:
|
|
3438
3445
|
self._retreat(index)
|
|
3439
3446
|
return None
|
|
@@ -3452,6 +3459,7 @@ class Parser(metaclass=_Parser):
|
|
|
3452
3459
|
this=self._parse_wrapped(self._parse_statement),
|
|
3453
3460
|
alias=alias,
|
|
3454
3461
|
materialized=materialized,
|
|
3462
|
+
key_expressions=key_expressions,
|
|
3455
3463
|
comments=comments,
|
|
3456
3464
|
)
|
|
3457
3465
|
|
|
@@ -3566,7 +3574,8 @@ class Parser(metaclass=_Parser):
|
|
|
3566
3574
|
|
|
3567
3575
|
this.set(key, expression)
|
|
3568
3576
|
if key == "limit":
|
|
3569
|
-
offset = expression.args.
|
|
3577
|
+
offset = expression.args.get("offset")
|
|
3578
|
+
expression.set("offset", None)
|
|
3570
3579
|
|
|
3571
3580
|
if offset:
|
|
3572
3581
|
offset = exp.Offset(expression=offset)
|
|
@@ -5266,8 +5275,8 @@ class Parser(metaclass=_Parser):
|
|
|
5266
5275
|
this = self.expression(klass, this=this, comments=comments, expression=expression)
|
|
5267
5276
|
|
|
5268
5277
|
if isinstance(this, exp.Div):
|
|
5269
|
-
this.
|
|
5270
|
-
this.
|
|
5278
|
+
this.set("typed", self.dialect.TYPED_DIVISION)
|
|
5279
|
+
this.set("safe", self.dialect.SAFE_DIVISION)
|
|
5271
5280
|
|
|
5272
5281
|
return this
|
|
5273
5282
|
|
sqlglot/transforms.py
CHANGED
|
@@ -650,8 +650,8 @@ def eliminate_full_outer_join(expression: exp.Expression) -> exp.Expression:
|
|
|
650
650
|
anti_join_clause = exp.select("1").from_(expression.args["from"]).where(join_conditions)
|
|
651
651
|
expression_copy.args["joins"][index].set("side", "right")
|
|
652
652
|
expression_copy = expression_copy.where(exp.Exists(this=anti_join_clause).not_())
|
|
653
|
-
expression_copy.
|
|
654
|
-
expression.
|
|
653
|
+
expression_copy.set("with", None) # remove CTEs from RIGHT side
|
|
654
|
+
expression.set("order", None) # remove order by from LEFT side
|
|
655
655
|
|
|
656
656
|
return exp.union(expression, expression_copy, copy=False, distinct=False)
|
|
657
657
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sqlglot
|
|
3
|
-
Version: 27.
|
|
3
|
+
Version: 27.27.0
|
|
4
4
|
Summary: An easily customizable SQL parser and transpiler
|
|
5
5
|
Author-email: Toby Mao <toby.mao@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -33,7 +33,7 @@ Requires-Dist: typing_extensions; extra == "dev"
|
|
|
33
33
|
Requires-Dist: maturin<2.0,>=1.4; extra == "dev"
|
|
34
34
|
Requires-Dist: pyperf; extra == "dev"
|
|
35
35
|
Provides-Extra: rs
|
|
36
|
-
Requires-Dist: sqlglotrs==0.7.
|
|
36
|
+
Requires-Dist: sqlglotrs==0.7.3; extra == "rs"
|
|
37
37
|
Dynamic: license-file
|
|
38
38
|
Dynamic: provides-extra
|
|
39
39
|
|
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
sqlglot/__init__.py,sha256=za08rtdPh2v7dOpGdNomttlIVGgTrKja7rPd6sQwaTg,5391
|
|
2
2
|
sqlglot/__main__.py,sha256=022c173KqxsiABWTEpUIq_tJUxuNiW7a7ABsxBXqvu8,2069
|
|
3
3
|
sqlglot/_typing.py,sha256=-1HPyr3w5COlSJWqlgt8jhFk2dyMvBuvVBqIX1wyVCM,642
|
|
4
|
-
sqlglot/_version.py,sha256=
|
|
4
|
+
sqlglot/_version.py,sha256=DcL6qrG2tT7X1MpfROtPMQ08iOdQQhq3jUOUDiSxmm0,708
|
|
5
5
|
sqlglot/diff.py,sha256=PtOllQMQa1Sw1-V2Y8eypmDqGujXYPaTOp_WLsWkAWk,17314
|
|
6
6
|
sqlglot/errors.py,sha256=QNKMr-pzLUDR-tuMmn_GK6iMHUIVdb_YSJ_BhGEvuso,2126
|
|
7
|
-
sqlglot/expressions.py,sha256=
|
|
8
|
-
sqlglot/generator.py,sha256=
|
|
7
|
+
sqlglot/expressions.py,sha256=uon9D-UuY81594xYDRkxsCa5vUsLdzJhdNmxDEnMOwc,261799
|
|
8
|
+
sqlglot/generator.py,sha256=aXMzVK4vDjlUQg8i55BtOEgIfGIIa2C4An7NAY-TVQ8,227272
|
|
9
9
|
sqlglot/helper.py,sha256=OOt5_Mbmnl4Uy6WO6v7DR1iLPcb3v6ITybpq6usf3jw,14471
|
|
10
10
|
sqlglot/jsonpath.py,sha256=SQgaxzaEYBN7At9dkTK4N1Spk6xHxvHL6QtCIP6iM30,7905
|
|
11
11
|
sqlglot/lineage.py,sha256=Qj5ykuDNcATppb9vOjoIKBqRVLbu3OMPiZk9f3iyv40,15312
|
|
12
|
-
sqlglot/parser.py,sha256=
|
|
12
|
+
sqlglot/parser.py,sha256=fiY6bFbbU8fR4fu4oXcQwZWptTvRD30unXmDCZzs7DE,338623
|
|
13
13
|
sqlglot/planner.py,sha256=ql7Li-bWJRcyXzNaZy_n6bQ6B2ZfunEIB8Ztv2xaxq4,14634
|
|
14
14
|
sqlglot/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
15
|
sqlglot/schema.py,sha256=13H2qKQs27EKdTpDLOvcNnSTDAUbYNKjWtJs4aQCSOA,20509
|
|
16
16
|
sqlglot/serde.py,sha256=nWpBFUjwZh06Li4qBuNb0YRU_QyflzSVyWkFxujM0WM,3175
|
|
17
17
|
sqlglot/time.py,sha256=Q62gv6kL40OiRBF6BMESxKJcMVn7ZLNw7sv8H34z5FI,18400
|
|
18
18
|
sqlglot/tokens.py,sha256=46CMEmRhJOa3eNagIIK9ndm-_ZSwnaV-AqgZs-SHNro,49321
|
|
19
|
-
sqlglot/transforms.py,sha256=
|
|
19
|
+
sqlglot/transforms.py,sha256=14RbNbPBL3O4vOQPEbQlBTizK8L-Y85Lj47iguW8ucc,40165
|
|
20
20
|
sqlglot/trie.py,sha256=v27uXMrHfqrXlJ6GmeTSMovsB_3o0ctnlKhdNt7W6fI,2245
|
|
21
21
|
sqlglot/dialects/__init__.py,sha256=g3HRtyb32r3LooiHKTzuUNB0_rBO_RauuOegp42gB48,3811
|
|
22
22
|
sqlglot/dialects/athena.py,sha256=ofArmayYLev4qZQ15GM8mevG04qqR5WGFb2ZcuYm6x4,10966
|
|
23
23
|
sqlglot/dialects/bigquery.py,sha256=l_t70png3A83zEDWUBBsCbiM40HfKIP03Wuq3Zt9CUI,72889
|
|
24
|
-
sqlglot/dialects/clickhouse.py,sha256=
|
|
24
|
+
sqlglot/dialects/clickhouse.py,sha256=CTmBJRGVPm4EEy4mhz4nLUfPcqyQWvkyBjWn6pxAVfo,58646
|
|
25
25
|
sqlglot/dialects/databricks.py,sha256=H4QTq7gg6tJylKc_YWsGp6049KydoI_wlQUHM7iCJtI,4753
|
|
26
|
-
sqlglot/dialects/dialect.py,sha256=
|
|
26
|
+
sqlglot/dialects/dialect.py,sha256=2ReSGrvsJvZF0SnpZp-NFkcHqaiEPsRQEK4IvAGLqCk,74022
|
|
27
27
|
sqlglot/dialects/doris.py,sha256=CFnF955Oav3IjZWA80ickOI8tPpCjxk7BN5R4Z6pA1U,25263
|
|
28
28
|
sqlglot/dialects/dremio.py,sha256=nOMxu_4xVKSOmMGNSwdxXSPc243cNbbpb-xXzYdgdeg,8460
|
|
29
29
|
sqlglot/dialects/drill.py,sha256=FOh7_KjPx_77pv0DiHKZog0CcmzqeF9_PEmGnJ1ESSM,5825
|
|
30
30
|
sqlglot/dialects/druid.py,sha256=kh3snZtneehNOWqs3XcPjsrhNaRbkCQ8E4hHbWJ1fHM,690
|
|
31
|
-
sqlglot/dialects/duckdb.py,sha256=
|
|
31
|
+
sqlglot/dialects/duckdb.py,sha256=aOQ4gVhWIgC5mnoO-e-ibNvmpZfS3_S0_8FZye-j3aA,55157
|
|
32
32
|
sqlglot/dialects/dune.py,sha256=gALut-fFfN2qMsr8LvZ1NQK3F3W9z2f4PwMvTMXVVVg,375
|
|
33
33
|
sqlglot/dialects/exasol.py,sha256=ay3g_VyT5WvHTgNyJuCQu0nBt4bpllLZ9IdMBizEgYM,15761
|
|
34
34
|
sqlglot/dialects/fabric.py,sha256=BdkvzM8s-m5DIdBwdjEYskp32ub7aHCAex_xlhQn92I,10222
|
|
@@ -36,13 +36,13 @@ sqlglot/dialects/hive.py,sha256=Uw-7Y1LnYOdcv71jCIZXhMvJAWwU5AVcFlIuM-YArnY,3453
|
|
|
36
36
|
sqlglot/dialects/materialize.py,sha256=LD2q1kTRrCwkIu1BfoBvnjTGbupDtoQ8JQMDCIYAXHg,3533
|
|
37
37
|
sqlglot/dialects/mysql.py,sha256=xxVAR-pXMljYCUioavP3nROtOqKmK4kfdp4WWXX7X9g,50049
|
|
38
38
|
sqlglot/dialects/oracle.py,sha256=qB6Ga0Si2-TpVNqU_2COvWESIUYNL32rYk_BC9aiujE,15898
|
|
39
|
-
sqlglot/dialects/postgres.py,sha256=
|
|
39
|
+
sqlglot/dialects/postgres.py,sha256=DBnVQKXs8ZEapDB_fcM9k73dZO01byOWmbcReAIPwAw,34851
|
|
40
40
|
sqlglot/dialects/presto.py,sha256=5C6I_aDC-9CDrLfY97EFsUWymaS3B7aW_-h-mHleWIQ,33339
|
|
41
41
|
sqlglot/dialects/prql.py,sha256=fwN-SPEGx-drwf1K0U2MByN-PkW3C_rOgQ3xeJeychg,7908
|
|
42
42
|
sqlglot/dialects/redshift.py,sha256=FIwtP3yEg-way9pa32kxCJc6IaFkHVIvgYKZA-Ilmi0,15919
|
|
43
43
|
sqlglot/dialects/risingwave.py,sha256=Wd-I_Hbwl-6Rgf_NM0I_axliInY418k2kaAWRCmaqyE,3791
|
|
44
44
|
sqlglot/dialects/singlestore.py,sha256=0QqNYOucNklPQuyeGcsisLI97qPGx_RfWKOFarJz2qw,61711
|
|
45
|
-
sqlglot/dialects/snowflake.py,sha256=
|
|
45
|
+
sqlglot/dialects/snowflake.py,sha256=Ll13pf9n_P5b5ied2gDaci_g-dqoyoq9Po7T2hEKzZg,82277
|
|
46
46
|
sqlglot/dialects/solr.py,sha256=pydnl4ml-3M1Fc4ALm6cMVO9h-5EtqZxPZH_91Nz1Ss,617
|
|
47
47
|
sqlglot/dialects/spark.py,sha256=mt3Twh0_EJelYy_7HLinDEQ1Chj2EYMjeLCPLRzAJXY,10113
|
|
48
48
|
sqlglot/dialects/spark2.py,sha256=s4RTOGunYT1_HJt4KbhBWK_eOgmtzlpBCQCl60KEPAQ,15621
|
|
@@ -51,7 +51,7 @@ sqlglot/dialects/starrocks.py,sha256=-NWQa2gJbiMMfLauX-Jy9ciJ5DUzUOk2QkPbhglz5W4
|
|
|
51
51
|
sqlglot/dialects/tableau.py,sha256=oIawDzUITxGCWaEMB8OaNMPWhbC3U-2y09pYPm4eazc,2190
|
|
52
52
|
sqlglot/dialects/teradata.py,sha256=7LxCcRwP0Idd_OnCzA57NCdheVjHcKC2aFAKG5N49IU,18202
|
|
53
53
|
sqlglot/dialects/trino.py,sha256=Z7prRhCxIBh0KCxIQpWmVOIGHCJM9Xl5oRlqySxln4Y,4350
|
|
54
|
-
sqlglot/dialects/tsql.py,sha256=
|
|
54
|
+
sqlglot/dialects/tsql.py,sha256=oRyxKLpUzdb2dmoWtTkxrM1my2uEJGoxR89l_IFpzww,54948
|
|
55
55
|
sqlglot/executor/__init__.py,sha256=FslewzYQtQdDNg_0Ju2UaiP4vo4IMUgkfkmFsYUhcN0,2958
|
|
56
56
|
sqlglot/executor/context.py,sha256=WJHJdYQCOeVXwLw0uSSrWSc25eBMn5Ix108RCvdsKRQ,3386
|
|
57
57
|
sqlglot/executor/env.py,sha256=tQhU5PpTBMcxgZIFddFqxWMNPtHN0vOOz72voncY3KY,8276
|
|
@@ -72,13 +72,13 @@ sqlglot/optimizer/optimizer.py,sha256=vXEXDWHvbO-vJmSI7UqJuydM2WrD1xko7rETq2EtVJ
|
|
|
72
72
|
sqlglot/optimizer/pushdown_predicates.py,sha256=HGjs3Z4V3-X2d1VTfWhyByY3aL5SmKnVvt3aDXiiBM0,8414
|
|
73
73
|
sqlglot/optimizer/pushdown_projections.py,sha256=7NoK5NAUVYVhs0YnYyo6WuXfaO-BShSwS6lA8Y-ATQ4,6668
|
|
74
74
|
sqlglot/optimizer/qualify.py,sha256=oAPfwub7dEkrlCrsptcJWpLya4BgKhN6M5SwIs_86LY,4002
|
|
75
|
-
sqlglot/optimizer/qualify_columns.py,sha256=
|
|
76
|
-
sqlglot/optimizer/qualify_tables.py,sha256=
|
|
75
|
+
sqlglot/optimizer/qualify_columns.py,sha256=JPVASnK4X0HOGtr6fEhUsd-94yFiJdCSO-H6zx1n4UA,45294
|
|
76
|
+
sqlglot/optimizer/qualify_tables.py,sha256=asv18k_PXAett6xhCyjCBH4EycZk4WYSnNFLqoFfVQw,6687
|
|
77
77
|
sqlglot/optimizer/scope.py,sha256=UOTrbwqcTc5iRQf0WStgYWXpE24w6riZy-tJYA18yTw,31229
|
|
78
78
|
sqlglot/optimizer/simplify.py,sha256=27IYsqbz1kyMlURSfRkm_ADSQJg-4805AOMFOjKKytU,51049
|
|
79
|
-
sqlglot/optimizer/unnest_subqueries.py,sha256=
|
|
80
|
-
sqlglot-27.
|
|
81
|
-
sqlglot-27.
|
|
82
|
-
sqlglot-27.
|
|
83
|
-
sqlglot-27.
|
|
84
|
-
sqlglot-27.
|
|
79
|
+
sqlglot/optimizer/unnest_subqueries.py,sha256=zt5UFYGAfDBTDPbJCpzm4HbXDDia5GlyKZd3SdBXYEk,10906
|
|
80
|
+
sqlglot-27.27.0.dist-info/licenses/LICENSE,sha256=p1Yk0B4oa0l8Rh-_dYyy75d8spjPd_vTloXfz4FWxys,1065
|
|
81
|
+
sqlglot-27.27.0.dist-info/METADATA,sha256=nnaX1EICQuz87cROcK2_MHDB99y9dhtT--92vbUnrqQ,20825
|
|
82
|
+
sqlglot-27.27.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
83
|
+
sqlglot-27.27.0.dist-info/top_level.txt,sha256=5kRskCGA_gVADF9rSfSzPdLHXqvfMusDYeHePfNY2nQ,8
|
|
84
|
+
sqlglot-27.27.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|