Skip to content

Commit 3c97d34

Browse files
authored
Fix!: parse right-hand side of <value> IN (<query>) as a Subquery (#3304)
* Fix!: parse right-hand side of <value> IN (<query>) as a Subquery * PR feedback
1 parent df0e318 commit 3c97d34

File tree

3 files changed

+7
-3
lines changed

3 files changed

+7
-3
lines changed

sqlglot/expressions.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -855,10 +855,14 @@ def isin(
855855
copy: bool = True,
856856
**opts,
857857
) -> In:
858+
subquery = maybe_parse(query, copy=copy, **opts) if query else None
859+
if subquery and not isinstance(subquery, Subquery):
860+
subquery = subquery.subquery(copy=False)
861+
858862
return In(
859863
this=maybe_copy(self, copy),
860864
expressions=[convert(e, copy=copy) for e in expressions],
861-
query=maybe_parse(query, copy=copy, **opts) if query else None,
865+
query=subquery,
862866
unnest=(
863867
Unnest(
864868
expressions=[

sqlglot/generator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2706,7 +2706,7 @@ def in_sql(self, expression: exp.In) -> str:
27062706
is_global = " GLOBAL" if expression.args.get("is_global") else ""
27072707

27082708
if query:
2709-
in_sql = self.wrap(self.sql(query))
2709+
in_sql = self.sql(query)
27102710
elif unnest:
27112711
in_sql = self.in_unnest_op(unnest)
27122712
elif field:

sqlglot/parser.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3835,7 +3835,7 @@ def _parse_in(self, this: t.Optional[exp.Expression], alias: bool = False) -> ex
38353835
expressions = self._parse_csv(lambda: self._parse_select_or_expression(alias=alias))
38363836

38373837
if len(expressions) == 1 and isinstance(expressions[0], exp.Query):
3838-
this = self.expression(exp.In, this=this, query=expressions[0])
3838+
this = self.expression(exp.In, this=this, query=expressions[0].subquery(copy=False))
38393839
else:
38403840
this = self.expression(exp.In, this=this, expressions=expressions)
38413841

0 commit comments

Comments
 (0)