summaryrefslogtreecommitdiff
path: root/django/db/models/sql/compiler.py
diff options
context:
space:
mode:
authorBendeguz Csirmaz <csirmazbendeguz@gmail.com>2024-07-18 18:33:09 +0800
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2024-07-22 08:34:29 +0200
commitbdd538488c837edec74cbfd4b0064228373319a1 (patch)
tree1d434b5ab066d01a0064127e4af54d36beccc2b7 /django/db/models/sql/compiler.py
parentb21f6d7ee41ff09e1ff16d2bbb929464f6939d37 (diff)
Fixed #35614 -- Prevented SQLCompiler.as_subquery_condition() from mutating a query.
Diffstat (limited to 'django/db/models/sql/compiler.py')
-rw-r--r--django/db/models/sql/compiler.py9
1 files changed, 5 insertions, 4 deletions
diff --git a/django/db/models/sql/compiler.py b/django/db/models/sql/compiler.py
index 262d722dc1..1d426f49b6 100644
--- a/django/db/models/sql/compiler.py
+++ b/django/db/models/sql/compiler.py
@@ -1616,14 +1616,15 @@ class SQLCompiler:
def as_subquery_condition(self, alias, columns, compiler):
qn = compiler.quote_name_unless_alias
qn2 = self.connection.ops.quote_name
+ query = self.query.clone()
- for index, select_col in enumerate(self.query.select):
+ for index, select_col in enumerate(query.select):
lhs_sql, lhs_params = self.compile(select_col)
rhs = "%s.%s" % (qn(alias), qn2(columns[index]))
- self.query.where.add(RawSQL("%s = %s" % (lhs_sql, rhs), lhs_params), AND)
+ query.where.add(RawSQL("%s = %s" % (lhs_sql, rhs), lhs_params), AND)
- sql, params = self.as_sql()
- return "EXISTS (%s)" % sql, params
+ sql, params = query.as_sql(compiler, self.connection)
+ return "EXISTS %s" % sql, params
def explain_query(self):
result = list(self.execute_sql())