]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
has_sequence() now takes the current "schema" argument into
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 3 Sep 2008 18:03:48 +0000 (18:03 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 3 Sep 2008 18:03:48 +0000 (18:03 +0000)
      account [ticket:1155]

lib/sqlalchemy/databases/oracle.py
lib/sqlalchemy/engine/base.py

index 4cbbaa9c5661e0a34248262f7458a04e1e3097ff..2c6f30eb3b8937c298663f6df600fe74c43ed9e1 100644 (file)
@@ -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()
 
index 583a02763824944407a2119d443c0cc366757077..f45644a8e6c996f7bd0c5ca22e98a7f74c1150db 100644 (file)
@@ -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: