diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-12-06 17:41:19 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-12-06 17:41:19 -0500 |
| commit | 58e692d76bbea84667609a4ceb828dcf43571f6e (patch) | |
| tree | 3122a2f138907d5b84c7e1cd54bcee3897cf0739 /lib/sqlalchemy | |
| parent | 8ad65d0ee114970338c8b668c280f3e95534e744 (diff) | |
| download | sqlalchemy-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.py | 9 |
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): |
