From: Mike Bayer Date: Sat, 24 May 2008 17:05:50 +0000 (+0000) Subject: get_default_identifier() normalizes the returned name so that it may X-Git-Tag: rel_0_4_7~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=20ee8f812341c2be6e31550f5aa9feacee01c6f4;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git get_default_identifier() normalizes the returned name so that it may by used as the "schema" argument on a Table. Fixes the reflection unit test that requires this. --- diff --git a/CHANGES b/CHANGES index df9120b64b..89dec92d9d 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,13 @@ CHANGES ======= +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 734ad58d10..cda39b4990 100644 --- a/lib/sqlalchemy/databases/oracle.py +++ b/lib/sqlalchemy/databases/oracle.py @@ -381,7 +381,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) @@ -452,7 +452,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 2ace3306a2..7deba3c4ce 100644 --- a/test/engine/reflection.py +++ b/test/engine/reflection.py @@ -668,7 +668,7 @@ class SchemaTest(TestBase): @testing.unsupported('sqlite', 'firebird') # fixme: revisit these below. - @testing.fails_on('oracle', 'mssql', 'sybase', 'access') + @testing.fails_on('mssql', 'sybase', 'access') def test_explicit_default_schema(self): engine = testing.db