summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2010-01-21 03:41:35 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2010-01-21 03:41:35 +0000
commitcd70a420072a736f57d8f0e1f07067a0aa9d1fe3 (patch)
treee3db1edd3366441bf1f74dcc6ad74f9a9f099306 /lib/sqlalchemy
parentda21efabb4ed3aaa180349b7d1d53cb1d9d59a50 (diff)
downloadsqlalchemy-cd70a420072a736f57d8f0e1f07067a0aa9d1fe3.tar.gz
base supports_native_enum on 8.3 or greater
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/dialects/postgresql/base.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py
index 2c8f896e9..bc5459f3a 100644
--- a/lib/sqlalchemy/dialects/postgresql/base.py
+++ b/lib/sqlalchemy/dialects/postgresql/base.py
@@ -450,7 +450,7 @@ class PGTypeCompiler(compiler.GenericTypeCompiler):
return self.visit_TIMESTAMP(type_)
def visit_enum(self, type_):
- if not type_.native_enum:
+ if not type_.native_enum or not self.dialect.supports_native_enum:
return super(PGTypeCompiler, self).visit_enum(type_)
else:
return self.visit_ENUM(type_)
@@ -589,7 +589,11 @@ class PGDialect(default.DefaultDialect):
super(PGDialect, self).initialize(connection)
self.implicit_returning = self.server_version_info > (8, 2) and \
self.__dict__.get('implicit_returning', True)
-
+ self.supports_native_enum = self.server_version_info >= (8, 3)
+ if not self.supports_native_enum:
+ self.colspecs = self.colspecs.copy()
+ del self.colspecs[ENUM]
+
def visit_pool(self, pool):
if self.isolation_level is not None:
class SetIsolationLevel(object):
@@ -1047,6 +1051,9 @@ class PGDialect(default.DefaultDialect):
return indexes
def _load_enums(self, connection):
+ if not self.supports_native_enum:
+ return {}
+
## Load data types for enums:
SQL_ENUMS = """
SELECT t.typname as "name",