summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2011-12-06 17:41:19 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2011-12-06 17:41:19 -0500
commit58e692d76bbea84667609a4ceb828dcf43571f6e (patch)
tree3122a2f138907d5b84c7e1cd54bcee3897cf0739 /lib/sqlalchemy
parent8ad65d0ee114970338c8b668c280f3e95534e744 (diff)
downloadsqlalchemy-58e692d76bbea84667609a4ceb828dcf43571f6e.tar.gz
- enable SAVEPOINT support fully, remove warning, [ticket:822].
It's not known what the potential "data loss" issues are, tests seem to pass.
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/dialects/mssql/base.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py
index bc50da5ad..5443a66cb 100644
--- a/lib/sqlalchemy/dialects/mssql/base.py
+++ b/lib/sqlalchemy/dialects/mssql/base.py
@@ -854,6 +854,9 @@ class MSSQLCompiler(compiler.SQLCompiler):
return 'DATEPART("%s", %s)' % \
(field, self.process(extract.expr, **kw))
+ def visit_savepoint(self, savepoint_stmt):
+ return "SAVE TRANSACTION %s" % self.preparer.format_savepoint(savepoint_stmt)
+
def visit_rollback_to_savepoint(self, savepoint_stmt):
return ("ROLLBACK TRANSACTION %s"
% self.preparer.format_savepoint(savepoint_stmt))
@@ -1115,12 +1118,12 @@ class MSDialect(default.DefaultDialect):
super(MSDialect, self).__init__(**opts)
def do_savepoint(self, connection, name):
- util.warn("Savepoint support in mssql is experimental and "
- "may lead to data loss.")
+ # give the DBAPI a push
connection.execute("IF @@TRANCOUNT = 0 BEGIN TRANSACTION")
- connection.execute("SAVE TRANSACTION %s" % name)
+ super(MSDialect, self).do_savepoint(connection, name)
def do_release_savepoint(self, connection, name):
+ # SQL Server does not support RELEASE SAVEPOINT
pass
def initialize(self, connection):