summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Walls <jacobtylerwalls@gmail.com>2025-01-25 12:06:11 -0500
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2025-01-25 18:07:26 +0100
commite9576c0aa86186e25b92c3c4f6b1bd7f20799db9 (patch)
tree368dbc3d10671acbbafb07d6cf6c9eca7ec0e0ef
parent93e18a87dd66caee80d033ae97fde65eea26cf5a (diff)
[5.2.x] Fixed #36111 -- Fixed test --debug-sql crash on Oracle when no prior query has executed.
Backport of 330d89d4fe7832355535580383523f1749a3ee45 from main
-rw-r--r--django/db/backends/oracle/operations.py2
-rw-r--r--tests/backends/tests.py6
2 files changed, 7 insertions, 1 deletions
diff --git a/django/db/backends/oracle/operations.py b/django/db/backends/oracle/operations.py
index 79c6da994e..f66fa524b4 100644
--- a/django/db/backends/oracle/operations.py
+++ b/django/db/backends/oracle/operations.py
@@ -328,7 +328,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))
diff --git a/tests/backends/tests.py b/tests/backends/tests.py
index 2adfa51360..d0af6e49f0 100644
--- a/tests/backends/tests.py
+++ b/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):
list(Reporter.objects.filter(first_name="test"))