瀏覽代碼

Fixed #36111 -- Fixed test --debug-sql crash on Oracle when no prior query has executed.

Jacob Walls 2 月之前
父節點
當前提交
330d89d4fe
共有 2 個文件被更改,包括 7 次插入1 次删除
  1. 1 1
      django/db/backends/oracle/operations.py
  2. 6 0
      tests/backends/tests.py

+ 1 - 1
django/db/backends/oracle/operations.py

@@ -319,7 +319,7 @@ END;
         # Unlike Psycopg's `query` and MySQLdb`'s `_executed`, oracledb's
         # `statement` doesn't contain the query parameters. Substitute
         # parameters manually.
-        if params:
+        if statement and params:
             if isinstance(params, (tuple, list)):
                 params = {
                     f":arg{i}": param for i, param in enumerate(dict.fromkeys(params))

+ 6 - 0
tests/backends/tests.py

@@ -73,8 +73,14 @@ class LastExecutedQueryTest(TestCase):
         last_executed_query should not raise an exception even if no previous
         query has been run.
         """
+        suffix = connection.features.bare_select_suffix
         with connection.cursor() as cursor:
+            if connection.vendor == "oracle":
+                cursor.statement = None
+            # No previous query has been run.
             connection.ops.last_executed_query(cursor, "", ())
+            # Previous query crashed.
+            connection.ops.last_executed_query(cursor, "SELECT %s" + suffix, (1,))
 
     def test_debug_sql(self):
         qs = Reporter.objects.filter(first_name="test")