mirror of
https://github.com/django/django.git
synced 2026-02-09 02:49:25 +08:00
Fixed #36112 -- Added fallback in last_executed_query() on Oracle and PostgreSQL.
This commit is contained in:
committed by
Mariusz Felisiak
parent
6c2780ffe1
commit
da19b3897d
@@ -352,7 +352,11 @@ END;
|
||||
statement = statement.replace(
|
||||
key, force_str(params[key], errors="replace")
|
||||
)
|
||||
return statement
|
||||
return (
|
||||
super().last_executed_query(cursor, sql, params)
|
||||
if statement is None
|
||||
else statement
|
||||
)
|
||||
|
||||
def last_insert_id(self, cursor, table_name, pk_name):
|
||||
sq_name = self._get_sequence_name(cursor, strip_quotes(table_name), pk_name)
|
||||
|
||||
@@ -302,11 +302,11 @@ class DatabaseOperations(BaseDatabaseOperations):
|
||||
try:
|
||||
return self.compose_sql(sql, params)
|
||||
except errors.DataError:
|
||||
return None
|
||||
return super().last_executed_query(cursor, sql, params)
|
||||
else:
|
||||
if cursor._query and cursor._query.query is not None:
|
||||
return cursor._query.query.decode()
|
||||
return None
|
||||
return super().last_executed_query(cursor, sql, params)
|
||||
|
||||
else:
|
||||
|
||||
@@ -315,7 +315,7 @@ class DatabaseOperations(BaseDatabaseOperations):
|
||||
# The query attribute is a Psycopg extension to the DB API 2.0.
|
||||
if cursor.query is not None:
|
||||
return cursor.query.decode()
|
||||
return None
|
||||
return super().last_executed_query(cursor, sql, params)
|
||||
|
||||
if is_psycopg3:
|
||||
|
||||
|
||||
@@ -171,6 +171,19 @@ class DatabaseOperationTests(TestCase):
|
||||
def setUp(self):
|
||||
self.ops = BaseDatabaseOperations(connection=connection)
|
||||
|
||||
def test_last_executed_query_base_fallback(self):
|
||||
sql = "INVALID SQL"
|
||||
params = []
|
||||
with connection.cursor() as cursor:
|
||||
cursor.close()
|
||||
try:
|
||||
cursor.execute(sql, params)
|
||||
except connection.features.closed_cursor_error_class:
|
||||
pass
|
||||
self.assertIsNotNone(
|
||||
connection.ops.last_executed_query(cursor, sql, params),
|
||||
)
|
||||
|
||||
@skipIfDBFeature("can_distinct_on_fields")
|
||||
def test_distinct_on_fields(self):
|
||||
msg = "DISTINCT ON fields is not supported by this database backend"
|
||||
|
||||
Reference in New Issue
Block a user