From 0e2649fdf40cedc5be7e2c0e5f7711f315e36b84 Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Mon, 16 Jan 2023 10:22:02 +0100 Subject: Fixed #34255 -- Made PostgreSQL backend use client-side parameters binding with psycopg version 3. Thanks Guillaume Andreu Sabater for the report. Co-authored-by: Florian Apolloner --- tests/backends/postgresql/tests.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'tests/backends/postgresql') diff --git a/tests/backends/postgresql/tests.py b/tests/backends/postgresql/tests.py index 7b0e0bfb52..ab66e7ab0e 100644 --- a/tests/backends/postgresql/tests.py +++ b/tests/backends/postgresql/tests.py @@ -277,6 +277,25 @@ class Tests(TestCase): finally: new_connection.close() + @unittest.skipUnless(is_psycopg3, "psycopg3 specific test") + def test_connect_server_side_binding(self): + """ + The server-side parameters binding role can be enabled with DATABASES + ["OPTIONS"]["server_side_binding"]. + """ + from django.db.backends.postgresql.base import ServerBindingCursor + + new_connection = connection.copy() + new_connection.settings_dict["OPTIONS"]["server_side_binding"] = True + try: + new_connection.connect() + self.assertEqual( + new_connection.connection.cursor_factory, + ServerBindingCursor, + ) + finally: + new_connection.close() + def test_connect_no_is_usable_checks(self): new_connection = connection.copy() try: -- cgit v1.2.1