1
0
mirror of https://github.com/django/django.git synced 2024-12-22 17:16:24 +00:00

Fixed #21235 -- Disabled savepoints for old versions of SQLite.

Thanks Ramiro for the report.
This commit is contained in:
Aymeric Augustin 2013-10-07 10:47:50 +02:00
parent 8d75d1e1bc
commit 91547772e0

View File

@ -393,12 +393,16 @@ class DatabaseWrapper(BaseDatabaseWrapper):
BaseDatabaseWrapper.close(self) BaseDatabaseWrapper.close(self)
def _savepoint_allowed(self): def _savepoint_allowed(self):
# Two conditions are required here:
# - A sufficiently recent version of SQLite to support savepoints,
# - Being in a transaction, which can only happen inside 'atomic'.
# When 'isolation_level' is not None, sqlite3 commits before each # When 'isolation_level' is not None, sqlite3 commits before each
# savepoint; it's a bug. When it is None, savepoints don't make sense # savepoint; it's a bug. When it is None, savepoints don't make sense
# because autocommit is enabled. The only exception is inside atomic # because autocommit is enabled. The only exception is inside 'atomic'
# blocks. To work around that bug, on SQLite, atomic starts a # blocks. To work around that bug, on SQLite, 'atomic' starts a
# transaction explicitly rather than simply disable autocommit. # transaction explicitly rather than simply disable autocommit.
return self.in_atomic_block return self.features.uses_savepoints and self.in_atomic_block
def _set_autocommit(self, autocommit): def _set_autocommit(self, autocommit):
if autocommit: if autocommit: