diff options
Diffstat (limited to 'django/db/backends/postgresql/operations.py')
-rw-r--r-- | django/db/backends/postgresql/operations.py | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/django/db/backends/postgresql/operations.py b/django/db/backends/postgresql/operations.py index 35824609b2..7b3a6c4413 100644 --- a/django/db/backends/postgresql/operations.py +++ b/django/db/backends/postgresql/operations.py @@ -2,8 +2,6 @@ import re from django.db.backends import BaseDatabaseOperations -server_version_re = re.compile(r'PostgreSQL (\d{1,2})\.(\d{1,2})\.?(\d{1,2})?') - # This DatabaseOperations class lives in here instead of base.py because it's # used by both the 'postgresql' and 'postgresql_psycopg2' backends. @@ -14,13 +12,9 @@ class DatabaseOperations(BaseDatabaseOperations): def _get_postgres_version(self): if self._postgres_version is None: from django.db import connection + from django.db.backends.postgresql.version import get_version cursor = connection.cursor() - cursor.execute("SELECT version()") - version_string = cursor.fetchone()[0] - m = server_version_re.match(version_string) - if not m: - raise Exception('Unable to determine PostgreSQL version from version() function string: %r' % version_string) - self._postgres_version = [int(val) for val in m.groups() if val] + self._postgres_version = get_version(cursor) return self._postgres_version postgres_version = property(_get_postgres_version) @@ -72,7 +66,7 @@ class DatabaseOperations(BaseDatabaseOperations): def sql_flush(self, style, tables, sequences): if tables: - if self.postgres_version[0] >= 8 and self.postgres_version[1] >= 1: + if self.postgres_version[0:2] >= [8,1]: # Postgres 8.1+ can do 'TRUNCATE x, y, z...;'. In fact, it *has to* # in order to be able to truncate tables referenced by a foreign # key in any other table. The result is a single SQL TRUNCATE @@ -157,5 +151,6 @@ class DatabaseOperations(BaseDatabaseOperations): NotImplementedError if this is the database in use. """ if aggregate.sql_function == 'STDDEV_POP' or aggregate.sql_function == 'VAR_POP': - if self.postgres_version[0] == 8 and self.postgres_version[1] == 2 and self.postgres_version[2] <= 4: - raise NotImplementedError('PostgreSQL 8.2 to 8.2.4 is known to have a faulty implementation of %s. Please upgrade your version of PostgreSQL.' % aggregate.sql_function) + if self.postgres_version[0:2] == [8,2]: + if self.postgres_version[2] is None or self.postgres_version[2] <= 4: + raise NotImplementedError('PostgreSQL 8.2 to 8.2.4 is known to have a faulty implementation of %s. Please upgrade your version of PostgreSQL.' % aggregate.sql_function) |