From b79488fc6561cf3f879bfdd48aeca40f3d2e3849 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Wed, 3 Sep 2008 18:03:48 +0000 Subject: [PATCH] has_sequence() now takes the current "schema" argument into account [ticket:1155] --- lib/sqlalchemy/databases/oracle.py | 11 +++++++---- lib/sqlalchemy/engine/base.py | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/sqlalchemy/databases/oracle.py b/lib/sqlalchemy/databases/oracle.py index 4cbbaa9c56..2c6f30eb3b 100644 --- a/lib/sqlalchemy/databases/oracle.py +++ b/lib/sqlalchemy/databases/oracle.py @@ -369,8 +369,11 @@ class OracleDialect(default.DefaultDialect): cursor = connection.execute("""select table_name from all_tables where table_name=:name and owner=:schema_name""", {'name':self._denormalize_name(table_name), 'schema_name':self._denormalize_name(schema)}) return bool( cursor.fetchone() is not None ) - def has_sequence(self, connection, sequence_name): - cursor = connection.execute("""select sequence_name from all_sequences where sequence_name=:name""", {'name':self._denormalize_name(sequence_name)}) + def has_sequence(self, connection, sequence_name, schema=None): + if not schema: + schema = self.get_default_schema_name(connection) + + cursor = connection.execute("""select sequence_name from all_sequences where sequence_name=:name and sequence_owner=:schema_name""", {'name':self._denormalize_name(sequence_name), 'schema_name':self._denormalize_name(schema)}) return bool( cursor.fetchone() is not None ) def _normalize_name(self, name): @@ -728,13 +731,13 @@ class OracleSchemaGenerator(compiler.SchemaGenerator): return colspec def visit_sequence(self, sequence): - if not self.checkfirst or not self.dialect.has_sequence(self.connection, sequence.name): + if not self.checkfirst or not self.dialect.has_sequence(self.connection, sequence.name, sequence.schema): self.append("CREATE SEQUENCE %s" % self.preparer.format_sequence(sequence)) self.execute() class OracleSchemaDropper(compiler.SchemaDropper): def visit_sequence(self, sequence): - if not self.checkfirst or self.dialect.has_sequence(self.connection, sequence.name): + if not self.checkfirst or self.dialect.has_sequence(self.connection, sequence.name, sequence.schema): self.append("DROP SEQUENCE %s" % self.preparer.format_sequence(sequence)) self.execute() diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py index 583a027638..f45644a8e6 100644 --- a/lib/sqlalchemy/engine/base.py +++ b/lib/sqlalchemy/engine/base.py @@ -1883,6 +1883,7 @@ def connection_memoize(key): assert spec[1:3] == (None, None) def decorated(self, connection): + connection = connection.connect() try: return connection.info[key] except KeyError: -- 2.47.3