summaryrefslogtreecommitdiff
path: root/tests/backends/postgresql/test_compilation.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/backends/postgresql/test_compilation.py')
-rw-r--r--tests/backends/postgresql/test_compilation.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/backends/postgresql/test_compilation.py b/tests/backends/postgresql/test_compilation.py
new file mode 100644
index 0000000000..67fe893e35
--- /dev/null
+++ b/tests/backends/postgresql/test_compilation.py
@@ -0,0 +1,29 @@
+import unittest
+
+from django.db import connection
+from django.db.models.expressions import RawSQL
+from django.test import TestCase
+
+from ..models import Square
+
+
+@unittest.skipUnless(connection.vendor == "postgresql", "PostgreSQL tests")
+class BulkCreateUnnestTests(TestCase):
+ def test_single_object(self):
+ with self.assertNumQueries(1) as ctx:
+ Square.objects.bulk_create([Square(root=2, square=4)])
+ self.assertNotIn("UNNEST", ctx[0]["sql"])
+
+ def test_non_literal(self):
+ with self.assertNumQueries(1) as ctx:
+ Square.objects.bulk_create(
+ [Square(root=2, square=RawSQL("%s", (4,))), Square(root=3, square=9)]
+ )
+ self.assertNotIn("UNNEST", ctx[0]["sql"])
+
+ def test_unnest_eligible(self):
+ with self.assertNumQueries(1) as ctx:
+ Square.objects.bulk_create(
+ [Square(root=2, square=4), Square(root=3, square=9)]
+ )
+ self.assertIn("UNNEST", ctx[0]["sql"])