diff options
| author | Chris Wesseling <chris@maykinmedia.nl> | 2025-11-20 15:01:14 +0100 |
|---|---|---|
| committer | Jacob Walls <jacobtylerwalls@gmail.com> | 2025-11-20 17:22:46 -0500 |
| commit | 5834643f43a767fe19f2c6d10217b204e7584ec8 (patch) | |
| tree | adbc0a865f9338296e984ba7a92ba868c4039458 /tests/postgres_tests | |
| parent | ff843bcbce1f7fc16fcc4d4810c221a2eb11c167 (diff) | |
Fixed #36748 -- Filtered non-standard placeholders from UNNEST queries.
Diffstat (limited to 'tests/postgres_tests')
| -rw-r--r-- | tests/postgres_tests/fields.py | 5 | ||||
| -rw-r--r-- | tests/postgres_tests/migrations/0002_create_test_models.py | 23 | ||||
| -rw-r--r-- | tests/postgres_tests/models.py | 5 | ||||
| -rw-r--r-- | tests/postgres_tests/test_bulk_update.py | 8 |
4 files changed, 41 insertions, 0 deletions
diff --git a/tests/postgres_tests/fields.py b/tests/postgres_tests/fields.py index c5dddf197f..d099effdd5 100644 --- a/tests/postgres_tests/fields.py +++ b/tests/postgres_tests/fields.py @@ -57,3 +57,8 @@ except ImportError: class EnumField(models.CharField): def get_prep_value(self, value): return value.value if isinstance(value, enum.Enum) else value + + +class OffByOneField(models.IntegerField): + def get_placeholder(self, value, compiler, connection): + return "(%s + 1)" diff --git a/tests/postgres_tests/migrations/0002_create_test_models.py b/tests/postgres_tests/migrations/0002_create_test_models.py index 859d45f29d..d2f9eceb99 100644 --- a/tests/postgres_tests/migrations/0002_create_test_models.py +++ b/tests/postgres_tests/migrations/0002_create_test_models.py @@ -9,6 +9,7 @@ from ..fields import ( EnumField, HStoreField, IntegerRangeField, + OffByOneField, SearchVectorField, ) from ..models import TagField @@ -565,4 +566,26 @@ class Migration(migrations.Migration): "required_db_vendor": "postgresql", }, ), + migrations.CreateModel( + name="OffByOneModel", + fields=[ + ( + "id", + models.BigAutoField( + verbose_name="ID", + serialize=False, + auto_created=True, + primary_key=True, + ), + ), + ( + "one_off", + OffByOneField(), + ), + ], + options={ + "required_db_vendor": "postgresql", + }, + bases=(models.Model,), + ), ] diff --git a/tests/postgres_tests/models.py b/tests/postgres_tests/models.py index 6a3d25a6af..ae9518f892 100644 --- a/tests/postgres_tests/models.py +++ b/tests/postgres_tests/models.py @@ -9,6 +9,7 @@ from .fields import ( EnumField, HStoreField, IntegerRangeField, + OffByOneField, SearchVectorField, ) @@ -207,3 +208,7 @@ class HotelReservation(PostgreSQLModel): end = models.DateTimeField() cancelled = models.BooleanField(default=False) requirements = models.JSONField(blank=True, null=True) + + +class OffByOneModel(PostgreSQLModel): + one_off = OffByOneField() diff --git a/tests/postgres_tests/test_bulk_update.py b/tests/postgres_tests/test_bulk_update.py index 85dfcedd09..f3e8ac8a40 100644 --- a/tests/postgres_tests/test_bulk_update.py +++ b/tests/postgres_tests/test_bulk_update.py @@ -6,6 +6,7 @@ from .models import ( IntegerArrayModel, NestedIntegerArrayModel, NullableIntegerArrayModel, + OffByOneModel, OtherTypesArrayModel, RangesModel, ) @@ -44,3 +45,10 @@ class BulkSaveTests(PostgreSQLTestCase): self.assertSequenceEqual( Model.objects.filter(**{field: new}), instances ) + + def test_bulk_create(self): + OffByOneModel.objects.bulk_create(OffByOneModel(one_off=0) for _ in range(20)) + + self.assertSequenceEqual( + [m.one_off for m in OffByOneModel.objects.all()], 20 * [1] + ) |
