From f6614aed6604d28387fc118ae70b20a2b058f571 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Tue, 25 Mar 2014 12:26:42 -0400 Subject: [PATCH] - Fixed regression caused by release 0.8.5 / 0.9.3's compatibility enhancements where index reflection on Postgresql versions specific to only the 8.1, 8.2 series again broke, surrounding the ever problematic int2vector type. While int2vector supports array operations as of 8.1, apparently it only supports CAST to a varchar as of 8.3. fix #3000 --- doc/build/changelog/changelog_08.rst | 12 ++++++++++++ lib/sqlalchemy/dialects/postgresql/base.py | 5 ++++- test/dialect/postgresql/test_reflection.py | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/doc/build/changelog/changelog_08.rst b/doc/build/changelog/changelog_08.rst index 79295f9605..f8f4232957 100644 --- a/doc/build/changelog/changelog_08.rst +++ b/doc/build/changelog/changelog_08.rst @@ -11,6 +11,18 @@ .. changelog:: :version: 0.8.6 + .. change:: + :tags: bug, postgresql + :tickets: 3000 + :versions: 0.9.4 + + Fixed regression caused by release 0.8.5 / 0.9.3's compatibility + enhancements where index reflection on Postgresql versions specific + to only the 8.1, 8.2 series again + broke, surrounding the ever problematic int2vector type. While + int2vector supports array operations as of 8.1, apparently it only + supports CAST to a varchar as of 8.3. + .. change:: :tags: bug, orm :tickets: 2995, diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py index c15e434171..2e2396b4d1 100644 --- a/lib/sqlalchemy/dialects/postgresql/base.py +++ b/lib/sqlalchemy/dialects/postgresql/base.py @@ -1968,7 +1968,10 @@ class PGDialect(default.DefaultDialect): t.relname, i.relname """ % ( - "::varchar" if self.server_version_info >= (8, 1) else "", + # version 8.3 here was based on observing the + # cast does not work in PG 8.2.4, does work in 8.3.0. + # nothing in PG changelogs regarding this. + "::varchar" if self.server_version_info >= (8, 3) else "", self._pg_index_any("a.attnum", "ix.indkey") ) diff --git a/test/dialect/postgresql/test_reflection.py b/test/dialect/postgresql/test_reflection.py index ea8a1a5e84..6c0f3ba20c 100644 --- a/test/dialect/postgresql/test_reflection.py +++ b/test/dialect/postgresql/test_reflection.py @@ -19,7 +19,7 @@ class DomainReflectionTest(fixtures.TestBase, AssertsExecutionResults): """Test PostgreSQL domains""" - __only_on__ = 'postgresql > 8.2' + __only_on__ = 'postgresql > 8.3' @classmethod def setup_class(cls): -- 2.47.2