sqlglot 27.18.0__py3-none-any.whl → 27.19.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 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.18.0'
32
- __version_tuple__ = version_tuple = (27, 18, 0)
31
+ __version__ = version = '27.19.0'
32
+ __version_tuple__ = version_tuple = (27, 19, 0)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -754,15 +754,31 @@ class BigQuery(Dialect):
754
754
  SUPPORTS_IMPLICIT_UNNEST = True
755
755
  JOINS_HAVE_EQUAL_PRECEDENCE = True
756
756
 
757
- # BigQuery does not allow ASC/DESC to be used as an identifier
758
- ID_VAR_TOKENS = parser.Parser.ID_VAR_TOKENS - {TokenType.ASC, TokenType.DESC}
759
- ALIAS_TOKENS = parser.Parser.ALIAS_TOKENS - {TokenType.ASC, TokenType.DESC}
760
- TABLE_ALIAS_TOKENS = parser.Parser.TABLE_ALIAS_TOKENS - {TokenType.ASC, TokenType.DESC}
761
- COMMENT_TABLE_ALIAS_TOKENS = parser.Parser.COMMENT_TABLE_ALIAS_TOKENS - {
762
- TokenType.ASC,
763
- TokenType.DESC,
764
- }
765
- UPDATE_ALIAS_TOKENS = parser.Parser.UPDATE_ALIAS_TOKENS - {TokenType.ASC, TokenType.DESC}
757
+ # BigQuery does not allow ASC/DESC to be used as an identifier, allows GRANT as an identifier
758
+ ID_VAR_TOKENS = {
759
+ *parser.Parser.ID_VAR_TOKENS,
760
+ TokenType.GRANT,
761
+ } - {TokenType.ASC, TokenType.DESC}
762
+
763
+ ALIAS_TOKENS = {
764
+ *parser.Parser.ALIAS_TOKENS,
765
+ TokenType.GRANT,
766
+ } - {TokenType.ASC, TokenType.DESC}
767
+
768
+ TABLE_ALIAS_TOKENS = {
769
+ *parser.Parser.TABLE_ALIAS_TOKENS,
770
+ TokenType.GRANT,
771
+ } - {TokenType.ASC, TokenType.DESC}
772
+
773
+ COMMENT_TABLE_ALIAS_TOKENS = {
774
+ *parser.Parser.COMMENT_TABLE_ALIAS_TOKENS,
775
+ TokenType.GRANT,
776
+ } - {TokenType.ASC, TokenType.DESC}
777
+
778
+ UPDATE_ALIAS_TOKENS = {
779
+ *parser.Parser.UPDATE_ALIAS_TOKENS,
780
+ TokenType.GRANT,
781
+ } - {TokenType.ASC, TokenType.DESC}
766
782
 
767
783
  FUNCTIONS = {
768
784
  **parser.Parser.FUNCTIONS,
@@ -532,10 +532,13 @@ class Snowflake(Dialect):
532
532
  exp.DataType.Type.INT: {
533
533
  *Dialect.TYPE_TO_EXPRESSIONS[exp.DataType.Type.INT],
534
534
  exp.Ascii,
535
+ exp.ByteLength,
535
536
  exp.Length,
537
+ exp.RtrimmedLength,
536
538
  exp.BitLength,
537
539
  exp.Levenshtein,
538
540
  exp.JarowinklerSimilarity,
541
+ exp.StrPosition,
539
542
  },
540
543
  exp.DataType.Type.VARCHAR: {
541
544
  *Dialect.TYPE_TO_EXPRESSIONS[exp.DataType.Type.VARCHAR],
@@ -579,6 +582,10 @@ class Snowflake(Dialect):
579
582
  exp.DataType.Type.ARRAY: {
580
583
  exp.Split,
581
584
  },
585
+ exp.DataType.Type.OBJECT: {
586
+ exp.ParseUrl,
587
+ exp.ParseIp,
588
+ },
582
589
  }
583
590
 
584
591
  ANNOTATORS = {
@@ -732,6 +739,9 @@ class Snowflake(Dialect):
732
739
  "NULLIFZERO": _build_if_from_nullifzero,
733
740
  "OBJECT_CONSTRUCT": _build_object_construct,
734
741
  "OCTET_LENGTH": exp.ByteLength.from_arg_list,
742
+ "PARSE_URL": lambda args: exp.ParseUrl(
743
+ this=seq_get(args, 0), permissive=seq_get(args, 1)
744
+ ),
735
745
  "REGEXP_EXTRACT_ALL": _build_regexp_extract(exp.RegexpExtractAll),
736
746
  "REGEXP_REPLACE": _build_regexp_replace,
737
747
  "REGEXP_SUBSTR": _build_regexp_extract(exp.RegexpExtract),
sqlglot/expressions.py CHANGED
@@ -6888,6 +6888,16 @@ class ParseJSON(Func):
6888
6888
  arg_types = {"this": True, "expression": False, "safe": False}
6889
6889
 
6890
6890
 
6891
+ # Snowflake: https://docs.snowflake.com/en/sql-reference/functions/parse_url
6892
+ # Databricks: https://docs.databricks.com/aws/en/sql/language-manual/functions/parse_url
6893
+ class ParseUrl(Func):
6894
+ arg_types = {"this": True, "part_to_extract": False, "key": False, "permissive": False}
6895
+
6896
+
6897
+ class ParseIp(Func):
6898
+ arg_types = {"this": True, "type": True, "permissive": False}
6899
+
6900
+
6891
6901
  class ParseTime(Func):
6892
6902
  arg_types = {"this": True, "format": True}
6893
6903
 
@@ -6918,6 +6928,10 @@ class Length(Func):
6918
6928
  _sql_names = ["LENGTH", "LEN", "CHAR_LENGTH", "CHARACTER_LENGTH"]
6919
6929
 
6920
6930
 
6931
+ class RtrimmedLength(Func):
6932
+ pass
6933
+
6934
+
6921
6935
  class BitLength(Func):
6922
6936
  pass
6923
6937
 
sqlglot/parser.py CHANGED
@@ -809,6 +809,8 @@ class Parser(metaclass=_Parser):
809
809
  exp.DataType: lambda self: self._parse_types(allow_identifiers=False, schema=True),
810
810
  exp.Expression: lambda self: self._parse_expression(),
811
811
  exp.From: lambda self: self._parse_from(joins=True),
812
+ exp.GrantPrincipal: lambda self: self._parse_grant_principal(),
813
+ exp.GrantPrivilege: lambda self: self._parse_grant_privilege(),
812
814
  exp.Group: lambda self: self._parse_group(),
813
815
  exp.Having: lambda self: self._parse_having(),
814
816
  exp.Hint: lambda self: self._parse_hint_body(),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlglot
3
- Version: 27.18.0
3
+ Version: 27.19.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
@@ -1,15 +1,15 @@
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=7UxZQRE12m08A5rXKriqghWBW14eGYzdfIFlvSEPOcI,708
4
+ sqlglot/_version.py,sha256=wVbD9GMknBXDREyMG-Yx-Nw3OZVxyzYGofDpSiCozV4,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=KEMqwokmUV8udKzoUAQlkjZJXV-FkwAJLmSOIpGt4_k,258058
7
+ sqlglot/expressions.py,sha256=gR0XWI066giI1oStYhmswO7FY_pA0twxmc1P2XTo1tU,258468
8
8
  sqlglot/generator.py,sha256=ZHFzi6_EOJl5V-dnz71QJOIwtxj66oJdF6tUQoxBpck,226436
9
9
  sqlglot/helper.py,sha256=9nZjFVRBtMKFC3EdzpDQ6jkazFO19po6BF8xHiNGZIo,15111
10
10
  sqlglot/jsonpath.py,sha256=SQgaxzaEYBN7At9dkTK4N1Spk6xHxvHL6QtCIP6iM30,7905
11
11
  sqlglot/lineage.py,sha256=Qj5ykuDNcATppb9vOjoIKBqRVLbu3OMPiZk9f3iyv40,15312
12
- sqlglot/parser.py,sha256=wlw73WjzXAHC9AH7Ezkfyeh134P97HheLPueCgXk4Mc,337292
12
+ sqlglot/parser.py,sha256=4UXHIDwR9mdbN5C7PVMffheR-cj3ipVJqIIK8W-o5ac,337436
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
@@ -20,7 +20,7 @@ sqlglot/transforms.py,sha256=utNDsCBsA7hPUK3-aby3DDgiY_XVMAKQqeoLm1EyihI,41218
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
- sqlglot/dialects/bigquery.py,sha256=9Q-oCXcpa2vrT2eMgVGHWwEvECMm4RQeV1XkjJj0nPA,72483
23
+ sqlglot/dialects/bigquery.py,sha256=m3Tk_rieNds4i-t0v-dELB5MvLfIvJY3ozuU6FItXJ8,72758
24
24
  sqlglot/dialects/clickhouse.py,sha256=6kx1cm0YhtHbg5kvcY64Hau2KdeC7Y26SVlVHGLyPEA,58579
25
25
  sqlglot/dialects/databricks.py,sha256=H4QTq7gg6tJylKc_YWsGp6049KydoI_wlQUHM7iCJtI,4753
26
26
  sqlglot/dialects/dialect.py,sha256=KfBctpr7VdrCdHrP1Tk7CqAml53tRq9x-aDAkaN-9l0,73540
@@ -42,7 +42,7 @@ 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=BqWwW1iT_OIVMwfRamaww79snnBwIgCfr22Go-ggO68,3289
44
44
  sqlglot/dialects/singlestore.py,sha256=0QqNYOucNklPQuyeGcsisLI97qPGx_RfWKOFarJz2qw,61711
45
- sqlglot/dialects/snowflake.py,sha256=RqCEW6nMXlkJ-XqS3W4HA-ZPSQTHv_bc_CMBTmvZJOk,78425
45
+ sqlglot/dialects/snowflake.py,sha256=D9GlZtIDLU_aqHWvGQUC8AS-U94WPBS_qEzErIJIoWY,78746
46
46
  sqlglot/dialects/solr.py,sha256=pydnl4ml-3M1Fc4ALm6cMVO9h-5EtqZxPZH_91Nz1Ss,617
47
47
  sqlglot/dialects/spark.py,sha256=PzyhkelDzbCMgJ3RVHD6yyzLIFp9NdZfwVas5IymowM,10147
48
48
  sqlglot/dialects/spark2.py,sha256=qz36FT9k4iuiqboRpyG4VpKGkPR0P2fifmqgZ9gNUEU,14851
@@ -77,8 +77,8 @@ sqlglot/optimizer/qualify_tables.py,sha256=dA4ZazL7ShQh2JgBwpHuG-4c5lBw1TNzCnuN7
77
77
  sqlglot/optimizer/scope.py,sha256=UOTrbwqcTc5iRQf0WStgYWXpE24w6riZy-tJYA18yTw,31229
78
78
  sqlglot/optimizer/simplify.py,sha256=27IYsqbz1kyMlURSfRkm_ADSQJg-4805AOMFOjKKytU,51049
79
79
  sqlglot/optimizer/unnest_subqueries.py,sha256=kzWUVDlxs8z9nmRx-8U-pHXPtVZhEIwkKqmKhr2QLvc,10908
80
- sqlglot-27.18.0.dist-info/licenses/LICENSE,sha256=p1Yk0B4oa0l8Rh-_dYyy75d8spjPd_vTloXfz4FWxys,1065
81
- sqlglot-27.18.0.dist-info/METADATA,sha256=UxjiFljC-bu1PB4zuYgt_3aWXJu36fhzoq05oQnH8jU,20703
82
- sqlglot-27.18.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
83
- sqlglot-27.18.0.dist-info/top_level.txt,sha256=5kRskCGA_gVADF9rSfSzPdLHXqvfMusDYeHePfNY2nQ,8
84
- sqlglot-27.18.0.dist-info/RECORD,,
80
+ sqlglot-27.19.0.dist-info/licenses/LICENSE,sha256=p1Yk0B4oa0l8Rh-_dYyy75d8spjPd_vTloXfz4FWxys,1065
81
+ sqlglot-27.19.0.dist-info/METADATA,sha256=yaLkwFBKI3tGRmU2ayVsF3uEDoRgBLryVjdzeePUW4M,20703
82
+ sqlglot-27.19.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
83
+ sqlglot-27.19.0.dist-info/top_level.txt,sha256=5kRskCGA_gVADF9rSfSzPdLHXqvfMusDYeHePfNY2nQ,8
84
+ sqlglot-27.19.0.dist-info/RECORD,,