From: Mike Bayer Date: Sat, 24 May 2008 17:11:41 +0000 (+0000) Subject: merged r4809 from rel_0_4, oracle fix X-Git-Tag: rel_0_5beta1~26 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1b1b68a3376060782c99269a0f4ab2b3c9ed468e;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git merged r4809 from rel_0_4, oracle fix --- diff --git a/CHANGES b/CHANGES index 3eacec3288..f5ee3da0a9 100644 --- a/CHANGES +++ b/CHANGES @@ -70,6 +70,13 @@ user_defined_state - Added support for returning values from inserts (2.0+ only), updates and deletes (2.1+ only). +0.4.7 +===== +- oracle + - Oracle get_default_schema_name() "normalizes" the name + before returning, meaning it returns a lower-case name + when the identifier is detected as case insensitive. + 0.4.6 ===== - orm diff --git a/lib/sqlalchemy/databases/oracle.py b/lib/sqlalchemy/databases/oracle.py index 5a839ec7c6..ed1778a6f9 100644 --- a/lib/sqlalchemy/databases/oracle.py +++ b/lib/sqlalchemy/databases/oracle.py @@ -382,7 +382,7 @@ class OracleDialect(default.DefaultDialect): return name.encode(self.encoding) def get_default_schema_name(self, connection): - return connection.execute('SELECT USER FROM DUAL').scalar() + return self._normalize_name(connection.execute('SELECT USER FROM DUAL').scalar()) get_default_schema_name = base.connection_memoize( ('dialect', 'default_schema_name'))(get_default_schema_name) @@ -453,7 +453,7 @@ class OracleDialect(default.DefaultDialect): if not dblink: dblink = '' if not owner: - owner = self._denormalize_name(table.schema) or self.get_default_schema_name(connection) + owner = self._denormalize_name(table.schema or self.get_default_schema_name(connection)) c = connection.execute ("select COLUMN_NAME, DATA_TYPE, DATA_LENGTH, DATA_PRECISION, DATA_SCALE, NULLABLE, DATA_DEFAULT from ALL_TAB_COLUMNS%(dblink)s where TABLE_NAME = :table_name and OWNER = :owner" % {'dblink':dblink}, {'table_name':actual_name, 'owner':owner}) diff --git a/test/engine/reflection.py b/test/engine/reflection.py index 565e29b4f3..259733027e 100644 --- a/test/engine/reflection.py +++ b/test/engine/reflection.py @@ -679,7 +679,7 @@ class SchemaTest(TestBase): @testing.crashes('firebird', 'No schema support') @testing.fails_on('sqlite') # fixme: revisit these below. - @testing.fails_on('access', 'oracle', 'mssql', 'sybase') + @testing.fails_on('access', 'mssql', 'sybase') def test_explicit_default_schema(self): engine = testing.db