sqlglot 27.13.0__py3-none-any.whl → 27.13.1__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.1'
32
+ __version_tuple__ = version_tuple = (27, 13, 1)
33
33
 
34
34
  __commit_id__ = commit_id = None
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
@@ -5397,7 +5397,7 @@ class Parser(metaclass=_Parser):
5397
5397
  if type_token == TokenType.VECTOR and len(expressions) == 2:
5398
5398
  expressions[0] = exp.DataType.build(expressions[0].name, dialect=self.dialect)
5399
5399
 
5400
- if not expressions or not self._match(TokenType.R_PAREN):
5400
+ if not self._match(TokenType.R_PAREN):
5401
5401
  self._retreat(index)
5402
5402
  return None
5403
5403
 
@@ -6464,6 +6464,11 @@ class Parser(metaclass=_Parser):
6464
6464
  return this
6465
6465
 
6466
6466
  def _parse_case(self) -> t.Optional[exp.Expression]:
6467
+ if self._match(TokenType.DOT, advance=False):
6468
+ # Avoid raising on valid expressions like case.*, supported by, e.g., spark & snowflake
6469
+ self._retreat(self._index - 1)
6470
+ return None
6471
+
6467
6472
  ifs = []
6468
6473
  default = None
6469
6474
 
@@ -7079,8 +7084,8 @@ class Parser(metaclass=_Parser):
7079
7084
  if kind:
7080
7085
  self._match(TokenType.BETWEEN)
7081
7086
  start = self._parse_window_spec()
7082
- self._match(TokenType.AND)
7083
- end = self._parse_window_spec()
7087
+
7088
+ end = self._parse_window_spec() if self._match(TokenType.AND) else {}
7084
7089
  exclude = (
7085
7090
  self._parse_var_from_options(self.WINDOW_EXCLUDE_OPTIONS)
7086
7091
  if self._match_text_seq("EXCLUDE")
@@ -7092,8 +7097,8 @@ class Parser(metaclass=_Parser):
7092
7097
  kind=kind,
7093
7098
  start=start["value"],
7094
7099
  start_side=start["side"],
7095
- end=end["value"],
7096
- end_side=end["side"],
7100
+ end=end.get("value"),
7101
+ end_side=end.get("side"),
7097
7102
  exclude=exclude,
7098
7103
  )
7099
7104
  else:
@@ -7131,7 +7136,7 @@ class Parser(metaclass=_Parser):
7131
7136
  "value": (
7132
7137
  (self._match_text_seq("UNBOUNDED") and "UNBOUNDED")
7133
7138
  or (self._match_text_seq("CURRENT", "ROW") and "CURRENT ROW")
7134
- or self._parse_bitwise()
7139
+ or self._parse_type()
7135
7140
  ),
7136
7141
  "side": self._match_texts(self.WINDOW_SIDES) and self._prev.text,
7137
7142
  }
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.1
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=ou5bykwli5rw5_qblbMze4DFs75loRI8NxexhmePC64,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=6QMiFaVbl7LJX-YMaZvJT_g28de2k3G5V-uDAx3zWTg,333268
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
@@ -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.1.dist-info/licenses/LICENSE,sha256=p1Yk0B4oa0l8Rh-_dYyy75d8spjPd_vTloXfz4FWxys,1065
80
+ sqlglot-27.13.1.dist-info/METADATA,sha256=rnD1jn-fbRMKBZZGZWvzMgUuE3KzqbHgqXMzDSnwIcw,20682
81
+ sqlglot-27.13.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
82
+ sqlglot-27.13.1.dist-info/top_level.txt,sha256=5kRskCGA_gVADF9rSfSzPdLHXqvfMusDYeHePfNY2nQ,8
83
+ sqlglot-27.13.1.dist-info/RECORD,,