diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-08-11 00:03:26 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-08-11 00:03:26 +0000 |
commit | 1391efea78d552fa81dd056c21e7570fba437bcf (patch) | |
tree | df7cd37efeefeb9048fff7b8bdf9fe1d75ce81d9 /lib/sqlalchemy/databases/oracle.py | |
parent | b852fcbce0204fb8edcb7fda9605824a1193e685 (diff) | |
download | sqlalchemy-1391efea78d552fa81dd056c21e7570fba437bcf.tar.gz |
repaired oracle savepoint implementation
Diffstat (limited to 'lib/sqlalchemy/databases/oracle.py')
-rw-r--r-- | lib/sqlalchemy/databases/oracle.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/sqlalchemy/databases/oracle.py b/lib/sqlalchemy/databases/oracle.py index 9b8bb2f9e..7bbc63fba 100644 --- a/lib/sqlalchemy/databases/oracle.py +++ b/lib/sqlalchemy/databases/oracle.py @@ -280,12 +280,19 @@ class OracleDialect(ansisql.ANSIDialect): else: return "rowid" + def do_release_savepoint(self, connection, name): + # Oracle does not support RELEASE SAVEPOINT + pass + def create_execution_context(self, *args, **kwargs): return OracleExecutionContext(self, *args, **kwargs) def compiler(self, statement, bindparams, **kwargs): return OracleCompiler(self, statement, bindparams, **kwargs) + def preparer(self): + return OracleIdentifierPreparer(self) + def schemagenerator(self, *args, **kwargs): return OracleSchemaGenerator(self, *args, **kwargs) @@ -662,4 +669,10 @@ class OracleDefaultRunner(ansisql.ANSIDefaultRunner): def visit_sequence(self, seq): return self.connection.execute("SELECT " + self.dialect.identifier_preparer.format_sequence(seq) + ".nextval FROM DUAL").scalar() +class OracleIdentifierPreparer(ansisql.ANSIIdentifierPreparer): + def format_savepoint(self, savepoint): + name = re.sub(r'^_+', '', savepoint.ident) + return super(OracleIdentifierPreparer, self).format_savepoint(savepoint, name) + + dialect = OracleDialect |