summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Walls <jacobtylerwalls@gmail.com>2025-10-27 12:27:30 -0400
committerJacob Walls <jacobtylerwalls@gmail.com>2025-10-29 07:38:20 -0400
commit787cc96ef6197d73c7d4ad96f25500910c399603 (patch)
tree22ee4920cb919b1e2528041f14603aa8cc152cd6
parent43933a1dca07047e95ec990d9289d0212668009e (diff)
Refs #35972 -- Returned params in a tuple in further lookups.
-rw-r--r--django/contrib/gis/db/models/lookups.py2
-rw-r--r--django/db/models/fields/json.py6
-rw-r--r--django/db/models/lookups.py6
-rw-r--r--django/db/models/sql/compiler.py4
-rw-r--r--tests/custom_lookups/tests.py2
5 files changed, 10 insertions, 10 deletions
diff --git a/django/contrib/gis/db/models/lookups.py b/django/contrib/gis/db/models/lookups.py
index b9e5e47b27..c0cb80ea70 100644
--- a/django/contrib/gis/db/models/lookups.py
+++ b/django/contrib/gis/db/models/lookups.py
@@ -19,7 +19,7 @@ class GISLookup(Lookup):
band_lhs = None
def __init__(self, lhs, rhs):
- rhs, *self.rhs_params = rhs if isinstance(rhs, (list, tuple)) else [rhs]
+ rhs, *self.rhs_params = rhs if isinstance(rhs, (list, tuple)) else (rhs,)
super().__init__(lhs, rhs)
self.template_params = {}
self.process_rhs_params()
diff --git a/django/db/models/fields/json.py b/django/db/models/fields/json.py
index e0aa5c622b..af5ec4c8b0 100644
--- a/django/db/models/fields/json.py
+++ b/django/db/models/fields/json.py
@@ -316,8 +316,8 @@ class JSONExact(lookups.Exact):
def process_rhs(self, compiler, connection):
rhs, rhs_params = super().process_rhs(compiler, connection)
# Treat None lookup values as null.
- if rhs == "%s" and rhs_params == [None]:
- rhs_params = ["null"]
+ if rhs == "%s" and (*rhs_params,) == (None,):
+ rhs_params = ("null",)
if connection.vendor == "mysql":
func = ["JSON_EXTRACT(%s, '$')"] * len(rhs_params)
rhs %= tuple(func)
@@ -552,7 +552,7 @@ class KeyTransformExact(JSONExact):
def as_oracle(self, compiler, connection):
rhs, rhs_params = super().process_rhs(compiler, connection)
- if rhs_params == ["null"]:
+ if rhs_params and (*rhs_params,) == ("null",):
# Field has key and it's NULL.
has_key_expr = HasKeyOrArrayIndex(self.lhs.lhs, self.lhs.key_name)
has_key_sql, has_key_params = has_key_expr.as_oracle(compiler, connection)
diff --git a/django/db/models/lookups.py b/django/db/models/lookups.py
index 65128732fd..f15147a60b 100644
--- a/django/db/models/lookups.py
+++ b/django/db/models/lookups.py
@@ -232,12 +232,12 @@ class BuiltinLookup(Lookup):
lhs_sql = (
connection.ops.lookup_cast(self.lookup_name, field_internal_type) % lhs_sql
)
- return lhs_sql, list(params)
+ return lhs_sql, tuple(params)
def as_sql(self, compiler, connection):
lhs_sql, params = self.process_lhs(compiler, connection)
rhs_sql, rhs_params = self.process_rhs(compiler, connection)
- params.extend(rhs_params)
+ params = (*params, *rhs_params)
rhs_sql = self.get_rhs_op(connection, rhs_sql)
return "%s %s" % (lhs_sql, rhs_sql), params
@@ -725,7 +725,7 @@ class YearLookup(Lookup):
rhs_sql, _ = self.process_rhs(compiler, connection)
rhs_sql = self.get_direct_rhs_sql(connection, rhs_sql)
start, finish = self.year_lookup_bounds(connection, self.rhs)
- params.extend(self.get_bound_params(start, finish))
+ params = (*params, *self.get_bound_params(start, finish))
return "%s %s" % (lhs_sql, rhs_sql), params
return super().as_sql(compiler, connection)
diff --git a/django/db/models/sql/compiler.py b/django/db/models/sql/compiler.py
index 14603d5773..20f06ad168 100644
--- a/django/db/models/sql/compiler.py
+++ b/django/db/models/sql/compiler.py
@@ -1703,8 +1703,8 @@ class SQLInsertCompiler(SQLCompiler):
sql, params = "%s", [val]
# The following hook is only used by Oracle Spatial, which sometimes
- # needs to yield 'NULL' and [] as its placeholder and params instead
- # of '%s' and [None]. The 'NULL' placeholder is produced earlier by
+ # needs to yield 'NULL' and () as its placeholder and params instead
+ # of '%s' and (None,). The 'NULL' placeholder is produced earlier by
# OracleOperations.get_geom_placeholder(). The following line removes
# the corresponding None parameter. See ticket #10888.
params = self.connection.ops.modify_insert_params(sql, params)
diff --git a/tests/custom_lookups/tests.py b/tests/custom_lookups/tests.py
index db985240d7..1be289b18a 100644
--- a/tests/custom_lookups/tests.py
+++ b/tests/custom_lookups/tests.py
@@ -119,7 +119,7 @@ class YearLte(models.lookups.LessThanOrEqual):
real_lhs = self.lhs.lhs
lhs_sql, params = self.process_lhs(compiler, connection, real_lhs)
rhs_sql, rhs_params = self.process_rhs(compiler, connection)
- params.extend(rhs_params)
+ params = (*params, *rhs_params)
# Build SQL where the integer year is concatenated with last month
# and day, then convert that to date. (We try to have SQL like:
# WHERE somecol <= '2013-12-31')