From 397ff3c84d28ded69154ceb546982407e5afe104 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Sat, 12 Jan 2013 19:52:26 -0500 Subject: [PATCH] Added a py3K conditional around unnecessary .decode() call in mssql information schema, fixes reflection in Py3K. [ticket:2638] --- doc/build/changelog/changelog_07.rst | 8 ++++++++ lib/sqlalchemy/dialects/mssql/information_schema.py | 2 ++ test/dialect/test_mssql.py | 7 +++++++ 3 files changed, 17 insertions(+) diff --git a/doc/build/changelog/changelog_07.rst b/doc/build/changelog/changelog_07.rst index aebe92bc5e..cf802353aa 100644 --- a/doc/build/changelog/changelog_07.rst +++ b/doc/build/changelog/changelog_07.rst @@ -27,6 +27,14 @@ to the MSSQL dialect's "schema rendering" logic's failure to take .key into account. + .. change:: + :tags: mssql, bug + :tickets: 2638 + + Added a Py3K conditional around unnecessary .decode() + call in mssql information schema, fixes reflection + in Py3k. + .. change:: :tags: orm, bug :tickets: 2650 diff --git a/lib/sqlalchemy/dialects/mssql/information_schema.py b/lib/sqlalchemy/dialects/mssql/information_schema.py index 53fcdb4eb0..0dcddae977 100644 --- a/lib/sqlalchemy/dialects/mssql/information_schema.py +++ b/lib/sqlalchemy/dialects/mssql/information_schema.py @@ -15,8 +15,10 @@ class CoerceUnicode(TypeDecorator): impl = Unicode def process_bind_param(self, value, dialect): + # Py2K if isinstance(value, str): value = value.decode(dialect.encoding) + # end Py2K return value schemata = Table("SCHEMATA", ischema, diff --git a/test/dialect/test_mssql.py b/test/dialect/test_mssql.py index 48d989d041..41312de20f 100644 --- a/test/dialect/test_mssql.py +++ b/test/dialect/test_mssql.py @@ -1899,6 +1899,13 @@ class BinaryTest(fixtures.TestBase, AssertsExecutionResults): fp.close() return stream +class InfoCoerceUnicodeTest(fixtures.TestBase): + def test_info_unicode_coercion(self): + from sqlalchemy.dialects.mssql.information_schema import CoerceUnicode + + dialect = mssql.dialect() + value = CoerceUnicode().bind_processor(dialect)('a string') + assert isinstance(value, unicode) class ReflectHugeViewTest(fixtures.TestBase): __only_on__ = 'mssql' -- 2.47.2