From: Mike Bayer Date: Wed, 3 Sep 2008 18:03:48 +0000 (+0000) Subject: has_sequence() now takes the current "schema" argument into X-Git-Tag: rel_0_4_8~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b79488fc6561cf3f879bfdd48aeca40f3d2e3849;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git has_sequence() now takes the current "schema" argument into account [ticket:1155] --- 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: