diff options
| author | Sage Abdullah <me@laymonage.com> | 2025-05-08 09:10:44 +0200 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2025-05-08 11:37:11 +0100 |
| commit | 358fd21c47cdf7bda520ce73c5cfd82bba57827b (patch) | |
| tree | 12b5c91b138d9f22eafcbff98df0740a318f1a81 /tests/backends | |
| parent | 38660a612cd924199df83b93807604cadf6d5125 (diff) | |
Fixed #36143 -- Made max_query_params respect SQLITE_LIMIT_VARIABLE_NUMBER.
Co-authored-by: Xavier Frankline <xf.xavierfrank@gmail.com>
Diffstat (limited to 'tests/backends')
| -rw-r--r-- | tests/backends/sqlite/test_features.py | 12 | ||||
| -rw-r--r-- | tests/backends/sqlite/test_operations.py | 30 |
2 files changed, 42 insertions, 0 deletions
diff --git a/tests/backends/sqlite/test_features.py b/tests/backends/sqlite/test_features.py index 5bc891f5ee..95e060fbcc 100644 --- a/tests/backends/sqlite/test_features.py +++ b/tests/backends/sqlite/test_features.py @@ -1,3 +1,4 @@ +import sqlite3 from unittest import mock, skipUnless from django.db import OperationalError, connection @@ -17,3 +18,14 @@ class FeaturesTests(TestCase): ): with self.assertRaisesMessage(OperationalError, msg): connection.features.supports_json_field + + def test_max_query_params_respects_variable_limit(self): + limit_name = sqlite3.SQLITE_LIMIT_VARIABLE_NUMBER + current_limit = connection.features.max_query_params + new_limit = min(42, current_limit) + try: + connection.connection.setlimit(limit_name, new_limit) + self.assertEqual(connection.features.max_query_params, new_limit) + finally: + connection.connection.setlimit(limit_name, current_limit) + self.assertEqual(connection.features.max_query_params, current_limit) diff --git a/tests/backends/sqlite/test_operations.py b/tests/backends/sqlite/test_operations.py index 10cbffdf80..ab6efaa771 100644 --- a/tests/backends/sqlite/test_operations.py +++ b/tests/backends/sqlite/test_operations.py @@ -1,3 +1,4 @@ +import sqlite3 import unittest from django.core.management.color import no_style @@ -108,3 +109,32 @@ class SQLiteOperationsTests(TestCase): ), connection.features.max_query_params // 3, ) + + def test_bulk_batch_size_respects_variable_limit(self): + first_name_field = Person._meta.get_field("first_name") + last_name_field = Person._meta.get_field("last_name") + limit_name = sqlite3.SQLITE_LIMIT_VARIABLE_NUMBER + current_limit = connection.features.max_query_params + self.assertEqual( + connection.ops.bulk_batch_size( + [first_name_field, last_name_field], [Person()] + ), + current_limit // 2, + ) + new_limit = min(42, current_limit) + try: + connection.connection.setlimit(limit_name, new_limit) + self.assertEqual( + connection.ops.bulk_batch_size( + [first_name_field, last_name_field], [Person()] + ), + new_limit // 2, + ) + finally: + connection.connection.setlimit(limit_name, current_limit) + self.assertEqual( + connection.ops.bulk_batch_size( + [first_name_field, last_name_field], [Person()] + ), + current_limit // 2, + ) |
