diff options
| author | Jacob Walls <jacobtylerwalls@gmail.com> | 2026-02-27 13:36:16 -0500 |
|---|---|---|
| committer | Jacob Walls <jacobtylerwalls@gmail.com> | 2026-02-27 17:06:46 -0500 |
| commit | e4372f1b5c8877bd0ed792606eb97641ca913368 (patch) | |
| tree | 3f5ab9514761efcd7a3a837c650c47919ca32533 | |
| parent | 97cab5fe6526ca175ae520711c61a25c4f8cbb11 (diff) | |
Refs #35972 -- Returned params in a tuple in further expressions.
| -rw-r--r-- | django/db/models/expressions.py | 20 | ||||
| -rw-r--r-- | tests/expressions/tests.py | 4 |
2 files changed, 12 insertions, 12 deletions
diff --git a/django/db/models/expressions.py b/django/db/models/expressions.py index 63d0c1802b..d0e91f13d2 100644 --- a/django/db/models/expressions.py +++ b/django/db/models/expressions.py @@ -769,7 +769,7 @@ class CombinedExpression(SQLiteNumericMixin, Expression): # order of precedence expression_wrapper = "(%s)" sql = connection.ops.combine_expression(self.connector, expressions) - return expression_wrapper % sql, expression_params + return expression_wrapper % sql, tuple(expression_params) def resolve_expression( self, query=None, allow_joins=True, reuse=None, summarize=False, for_save=False @@ -835,7 +835,7 @@ class DurationExpression(CombinedExpression): # order of precedence expression_wrapper = "(%s)" sql = connection.ops.combine_duration_expression(self.connector, expressions) - return expression_wrapper % sql, expression_params + return expression_wrapper % sql, tuple(expression_params) def as_sqlite(self, compiler, connection, **extra_context): sql, params = self.as_sql(compiler, connection, **extra_context) @@ -1179,8 +1179,8 @@ class Value(Expression): # oracledb does not always convert None to the appropriate # NULL type (like in case expressions using numbers), so we # use a literal SQL NULL - return "NULL", [] - return "%s", [val] + return "NULL", () + return "%s", (val,) def as_sqlite(self, compiler, connection, **extra_context): sql, params = self.as_sql(compiler, connection, **extra_context) @@ -1273,7 +1273,7 @@ class Star(Expression): return "'*'" def as_sql(self, compiler, connection): - return "*", [] + return "*", () class DatabaseDefault(Expression): @@ -1313,7 +1313,7 @@ class DatabaseDefault(Expression): def as_sql(self, compiler, connection): if not connection.features.supports_default_keyword_in_insert: return compiler.compile(self.expression) - return "DEFAULT", [] + return "DEFAULT", () class Col(Expression): @@ -1398,7 +1398,7 @@ class ColPairs(Expression): cols_sql.append(sql) cols_params.extend(params) - return ", ".join(cols_sql), cols_params + return ", ".join(cols_sql), tuple(cols_params) def relabeled_clone(self, relabels): return self.__class__( @@ -1447,7 +1447,7 @@ class Ref(Expression): return clone def as_sql(self, compiler, connection): - return connection.ops.quote_name(self.refs), [] + return connection.ops.quote_name(self.refs), () def get_group_by_cols(self): return [self] @@ -1764,7 +1764,7 @@ class Case(SQLiteNumericMixin, Expression): sql = template % template_params if self._output_field_or_none is not None: sql = connection.ops.unification_cast_sql(self.output_field) % sql - return sql, sql_params + return sql, tuple(sql_params) def get_group_by_cols(self): if not self.cases: @@ -2148,7 +2148,7 @@ class WindowFrame(Expression): "end": end, "exclude": self.get_exclusion(), }, - [], + (), ) def __repr__(self): diff --git a/tests/expressions/tests.py b/tests/expressions/tests.py index cb62d0fbd7..5effc8ac0d 100644 --- a/tests/expressions/tests.py +++ b/tests/expressions/tests.py @@ -2504,9 +2504,9 @@ class ValueTests(TestCase): # This test might need to be revisited later on if #25425 is enforced. compiler = Time.objects.all().query.get_compiler(connection=connection) value = Value("foo") - self.assertEqual(value.as_sql(compiler, connection), ("%s", ["foo"])) + self.assertEqual(value.as_sql(compiler, connection), ("%s", ("foo",))) value = Value("foo", output_field=CharField()) - self.assertEqual(value.as_sql(compiler, connection), ("%s", ["foo"])) + self.assertEqual(value.as_sql(compiler, connection), ("%s", ("foo",))) def test_output_field_decimalfield(self): Time.objects.create() |
