sqlglot 27.13.0__py3-none-any.whl → 27.13.2__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.13.0'
32
- __version_tuple__ = version_tuple = (27, 13, 0)
31
+ __version__ = version = '27.13.2'
32
+ __version_tuple__ = version_tuple = (27, 13, 2)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -1161,7 +1161,6 @@ class Snowflake(Dialect):
1161
1161
  "RM": TokenType.COMMAND,
1162
1162
  "SAMPLE": TokenType.TABLE_SAMPLE,
1163
1163
  "SEMANTIC VIEW": TokenType.SEMANTIC_VIEW,
1164
- "SESSION": TokenType.SESSION,
1165
1164
  "SQL_DOUBLE": TokenType.DOUBLE,
1166
1165
  "SQL_VARCHAR": TokenType.VARCHAR,
1167
1166
  "STAGE": TokenType.STAGE,
sqlglot/generator.py CHANGED
@@ -5243,7 +5243,8 @@ class Generator(metaclass=_Generator):
5243
5243
  metrics = self.seg(f"METRICS {metrics}") if metrics else ""
5244
5244
  where = self.sql(expression, "where")
5245
5245
  where = self.seg(f"WHERE {where}") if where else ""
5246
- return f"SEMANTIC_VIEW({self.indent(this + metrics + dimensions + where)}{self.seg(')', sep='')}"
5246
+ body = self.indent(this + metrics + dimensions + where, skip_first=True)
5247
+ return f"SEMANTIC_VIEW({body}{self.seg(')', sep='')}"
5247
5248
 
5248
5249
  def getextract_sql(self, expression: exp.GetExtract) -> str:
5249
5250
  this = expression.this
sqlglot/parser.py CHANGED
@@ -569,6 +569,7 @@ class Parser(metaclass=_Parser):
569
569
  TokenType.USE,
570
570
  TokenType.VOLATILE,
571
571
  TokenType.WINDOW,
572
+ *ALTERABLES,
572
573
  *CREATABLES,
573
574
  *SUBQUERY_PREDICATES,
574
575
  *TYPE_TOKENS,
@@ -5397,7 +5398,7 @@ class Parser(metaclass=_Parser):
5397
5398
  if type_token == TokenType.VECTOR and len(expressions) == 2:
5398
5399
  expressions[0] = exp.DataType.build(expressions[0].name, dialect=self.dialect)
5399
5400
 
5400
- if not expressions or not self._match(TokenType.R_PAREN):
5401
+ if not self._match(TokenType.R_PAREN):
5401
5402
  self._retreat(index)
5402
5403
  return None
5403
5404
 
@@ -6464,6 +6465,11 @@ class Parser(metaclass=_Parser):
6464
6465
  return this
6465
6466
 
6466
6467
  def _parse_case(self) -> t.Optional[exp.Expression]:
6468
+ if self._match(TokenType.DOT, advance=False):
6469
+ # Avoid raising on valid expressions like case.*, supported by, e.g., spark & snowflake
6470
+ self._retreat(self._index - 1)
6471
+ return None
6472
+
6467
6473
  ifs = []
6468
6474
  default = None
6469
6475
 
@@ -7079,8 +7085,8 @@ class Parser(metaclass=_Parser):
7079
7085
  if kind:
7080
7086
  self._match(TokenType.BETWEEN)
7081
7087
  start = self._parse_window_spec()
7082
- self._match(TokenType.AND)
7083
- end = self._parse_window_spec()
7088
+
7089
+ end = self._parse_window_spec() if self._match(TokenType.AND) else {}
7084
7090
  exclude = (
7085
7091
  self._parse_var_from_options(self.WINDOW_EXCLUDE_OPTIONS)
7086
7092
  if self._match_text_seq("EXCLUDE")
@@ -7092,8 +7098,8 @@ class Parser(metaclass=_Parser):
7092
7098
  kind=kind,
7093
7099
  start=start["value"],
7094
7100
  start_side=start["side"],
7095
- end=end["value"],
7096
- end_side=end["side"],
7101
+ end=end.get("value"),
7102
+ end_side=end.get("side"),
7097
7103
  exclude=exclude,
7098
7104
  )
7099
7105
  else:
@@ -7131,7 +7137,7 @@ class Parser(metaclass=_Parser):
7131
7137
  "value": (
7132
7138
  (self._match_text_seq("UNBOUNDED") and "UNBOUNDED")
7133
7139
  or (self._match_text_seq("CURRENT", "ROW") and "CURRENT ROW")
7134
- or self._parse_bitwise()
7140
+ or self._parse_type()
7135
7141
  ),
7136
7142
  "side": self._match_texts(self.WINDOW_SIDES) and self._prev.text,
7137
7143
  }
sqlglot/tokens.py CHANGED
@@ -234,7 +234,6 @@ class TokenType(AutoName):
234
234
  # keywords
235
235
  ALIAS = auto()
236
236
  ALTER = auto()
237
- ALWAYS = auto()
238
237
  ALL = auto()
239
238
  ANTI = auto()
240
239
  ANY = auto()
@@ -713,7 +712,6 @@ class Tokenizer(metaclass=_Tokenizer):
713
712
  "~~*": TokenType.ILIKE,
714
713
  "~*": TokenType.IRLIKE,
715
714
  "ALL": TokenType.ALL,
716
- "ALWAYS": TokenType.ALWAYS,
717
715
  "AND": TokenType.AND,
718
716
  "ANTI": TokenType.ANTI,
719
717
  "ANY": TokenType.ANY,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlglot
3
- Version: 27.13.0
3
+ Version: 27.13.2
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,21 +1,21 @@
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=rluv89UD57hyJpJketKgm-v1FgO0kt8reB1Qn-G8n-E,708
4
+ sqlglot/_version.py,sha256=Qfj_wDzloXYOzTK9Ff0q4plSvKrkjROgU8iPJJemDqA,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
7
  sqlglot/expressions.py,sha256=oestq-dQt-OC2XLgG0B-I3cDgg7DptuXmcUW7_uP6aQ,253755
8
- sqlglot/generator.py,sha256=jYYVwMaqFWEuBWCmjdA-cd2m5_3QzePcKv1U_s0wogE,224655
8
+ sqlglot/generator.py,sha256=cO2HdHWKlL8Y7zs81hSsR-mFcy7U5x0Wd3A27jkn3lk,224692
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=1FYhCQb6V_Oytucf671GJ6eD_gANaHrFkLlIbCP8t4w,333060
12
+ sqlglot/parser.py,sha256=wouCp_0fjj7xFqK6R3lt1LFVpk0f3qCsWQcvQnIWSQM,333289
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=DQVJ95WrIvhYfe02Ytb4NQug2aMwDCEwpMBW1LKDqzE,2031
17
17
  sqlglot/time.py,sha256=Q62gv6kL40OiRBF6BMESxKJcMVn7ZLNw7sv8H34z5FI,18400
18
- sqlglot/tokens.py,sha256=446Hfn6SDnma1WYz2O3snM2vKFn1y4MXIKbAs-rAh3s,49132
18
+ sqlglot/tokens.py,sha256=GuRPOipxixWdEJDxIat9ZLPAn3JhQ2cP94qvOelXogU,49076
19
19
  sqlglot/transforms.py,sha256=utNDsCBsA7hPUK3-aby3DDgiY_XVMAKQqeoLm1EyihI,41218
20
20
  sqlglot/trie.py,sha256=v27uXMrHfqrXlJ6GmeTSMovsB_3o0ctnlKhdNt7W6fI,2245
21
21
  sqlglot/dialects/__init__.py,sha256=e3K2NHrZO7oXfBzEpRsvgWAgJ_UCEyg7SlUCRqvnPj4,3799
@@ -42,7 +42,7 @@ sqlglot/dialects/prql.py,sha256=fwN-SPEGx-drwf1K0U2MByN-PkW3C_rOgQ3xeJeychg,7908
42
42
  sqlglot/dialects/redshift.py,sha256=_sQTom4CGozFDZXW9y6bHQcZ-KiQ7QJjjQqM5rVagSc,15889
43
43
  sqlglot/dialects/risingwave.py,sha256=BqWwW1iT_OIVMwfRamaww79snnBwIgCfr22Go-ggO68,3289
44
44
  sqlglot/dialects/singlestore.py,sha256=_42yJP-YYbHswIBCKO5qxP5Z_AVksLh3bMX394iivwQ,55764
45
- sqlglot/dialects/snowflake.py,sha256=xIftl1twnug9C-MW-jUncKskKVOwds3jpBvCDFmp5kM,72084
45
+ sqlglot/dialects/snowflake.py,sha256=A3k54EodIUxwTnnBazefDHO5mxon0zSg43mep-VG_7E,72042
46
46
  sqlglot/dialects/spark.py,sha256=PzyhkelDzbCMgJ3RVHD6yyzLIFp9NdZfwVas5IymowM,10147
47
47
  sqlglot/dialects/spark2.py,sha256=qz36FT9k4iuiqboRpyG4VpKGkPR0P2fifmqgZ9gNUEU,14851
48
48
  sqlglot/dialects/sqlite.py,sha256=UIQ66shIt2bQoLd7tYG4NVzh4HwCfERgAaLyukz8HjE,13231
@@ -76,8 +76,8 @@ sqlglot/optimizer/qualify_tables.py,sha256=dA4ZazL7ShQh2JgBwpHuG-4c5lBw1TNzCnuN7
76
76
  sqlglot/optimizer/scope.py,sha256=UOTrbwqcTc5iRQf0WStgYWXpE24w6riZy-tJYA18yTw,31229
77
77
  sqlglot/optimizer/simplify.py,sha256=-_yus42OYwqjQ9a2TSGhtG2G0pSkInUry1z7hEMz2pY,51062
78
78
  sqlglot/optimizer/unnest_subqueries.py,sha256=kzWUVDlxs8z9nmRx-8U-pHXPtVZhEIwkKqmKhr2QLvc,10908
79
- sqlglot-27.13.0.dist-info/licenses/LICENSE,sha256=p1Yk0B4oa0l8Rh-_dYyy75d8spjPd_vTloXfz4FWxys,1065
80
- sqlglot-27.13.0.dist-info/METADATA,sha256=4SxxpIW6OjBvvVK7v-l1ZTZkrygK-UJ4K6YEh7qEe_Y,20682
81
- sqlglot-27.13.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
82
- sqlglot-27.13.0.dist-info/top_level.txt,sha256=5kRskCGA_gVADF9rSfSzPdLHXqvfMusDYeHePfNY2nQ,8
83
- sqlglot-27.13.0.dist-info/RECORD,,
79
+ sqlglot-27.13.2.dist-info/licenses/LICENSE,sha256=p1Yk0B4oa0l8Rh-_dYyy75d8spjPd_vTloXfz4FWxys,1065
80
+ sqlglot-27.13.2.dist-info/METADATA,sha256=OL06yiI1dWjxy0Z_rIYYoKTcEzkYr1aCkOn-fvZ48Y4,20682
81
+ sqlglot-27.13.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
82
+ sqlglot-27.13.2.dist-info/top_level.txt,sha256=5kRskCGA_gVADF9rSfSzPdLHXqvfMusDYeHePfNY2nQ,8
83
+ sqlglot-27.13.2.dist-info/RECORD,,