Stopped flipping the uses_savepoints feature at runtime.

This commit is contained in:
Aymeric Augustin 2013-03-03 15:32:14 +01:00
parent af9e9386eb
commit cd364efa00
2 changed files with 4 additions and 7 deletions

View File

@ -161,17 +161,17 @@ class BaseDatabaseWrapper(object):
##### Backend-specific savepoint management methods ##### ##### Backend-specific savepoint management methods #####
def _savepoint(self, sid): def _savepoint(self, sid):
if not self.features.uses_savepoints: if not self.features.uses_savepoints or self.autocommit:
return return
self.cursor().execute(self.ops.savepoint_create_sql(sid)) self.cursor().execute(self.ops.savepoint_create_sql(sid))
def _savepoint_rollback(self, sid): def _savepoint_rollback(self, sid):
if not self.features.uses_savepoints: if not self.features.uses_savepoints or self.autocommit:
return return
self.cursor().execute(self.ops.savepoint_rollback_sql(sid)) self.cursor().execute(self.ops.savepoint_rollback_sql(sid))
def _savepoint_commit(self, sid): def _savepoint_commit(self, sid):
if not self.features.uses_savepoints: if not self.features.uses_savepoints or self.autocommit:
return return
self.cursor().execute(self.ops.savepoint_commit_sql(sid)) self.cursor().execute(self.ops.savepoint_commit_sql(sid))

View File

@ -49,6 +49,7 @@ class DatabaseFeatures(BaseDatabaseFeatures):
has_select_for_update = True has_select_for_update = True
has_select_for_update_nowait = True has_select_for_update_nowait = True
has_bulk_insert = True has_bulk_insert = True
uses_savepoints = True
supports_tablespaces = True supports_tablespaces = True
supports_transactions = True supports_transactions = True
can_distinct_on_fields = True can_distinct_on_fields = True
@ -88,8 +89,6 @@ class DatabaseWrapper(BaseDatabaseWrapper):
self.introspection = DatabaseIntrospection(self) self.introspection = DatabaseIntrospection(self)
self.validation = BaseDatabaseValidation(self) self.validation = BaseDatabaseValidation(self)
self.features.uses_savepoints = False
def get_connection_params(self): def get_connection_params(self):
settings_dict = self.settings_dict settings_dict = self.settings_dict
if not settings_dict['NAME']: if not settings_dict['NAME']:
@ -174,7 +173,6 @@ class DatabaseWrapper(BaseDatabaseWrapper):
self.cursor().close() self.cursor().close()
if managed and self.autocommit: if managed and self.autocommit:
self.set_autocommit(False) self.set_autocommit(False)
self.features.uses_savepoints = True
def _leave_transaction_management(self, managed): def _leave_transaction_management(self, managed):
""" """
@ -186,7 +184,6 @@ class DatabaseWrapper(BaseDatabaseWrapper):
if not managed and not self.autocommit: if not managed and not self.autocommit:
self.rollback() # Must terminate transaction first. self.rollback() # Must terminate transaction first.
self.set_autocommit(True) self.set_autocommit(True)
self.features.uses_savepoints = False
def _set_isolation_level(self, isolation_level): def _set_isolation_level(self, isolation_level):
assert isolation_level in range(1, 5) # Use set_autocommit for level = 0 assert isolation_level in range(1, 5) # Use set_autocommit for level = 0