From 3a8f52fbc6fe2ff646a2da4165497d82117e4a92 Mon Sep 17 00:00:00 2001 From: Anthony Joseph Date: Wed, 23 Oct 2024 22:13:18 +1100 Subject: Fixed #35856 -- Added QuerySet.explain() support for MEMORY/SERIALIZE option on PostgreSQL 17+. --- tests/queries/test_explain.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/queries/test_explain.py b/tests/queries/test_explain.py index 67440cb502..95ca913cfc 100644 --- a/tests/queries/test_explain.py +++ b/tests/queries/test_explain.py @@ -90,13 +90,24 @@ class ExplainTests(TestCase): ] if connection.features.is_postgresql_16: test_options.append({"generic_plan": True}) + if connection.features.is_postgresql_17: + test_options.append({"memory": True}) + test_options.append({"serialize": "TEXT", "analyze": True}) + test_options.append({"serialize": "text", "analyze": True}) + test_options.append({"serialize": "BINARY", "analyze": True}) + test_options.append({"serialize": "binary", "analyze": True}) for options in test_options: with self.subTest(**options), transaction.atomic(): with CaptureQueriesContext(connection) as captured_queries: qs.explain(format="text", **options) self.assertEqual(len(captured_queries), 1) for name, value in options.items(): - option = "{} {}".format(name.upper(), "true" if value else "false") + if isinstance(value, str): + option = "{} {}".format(name.upper(), value.upper()) + else: + option = "{} {}".format( + name.upper(), "true" if value else "false" + ) self.assertIn(option, captured_queries[0]["sql"]) @skipUnlessDBFeature("supports_select_union") -- cgit v1.3