summaryrefslogtreecommitdiff
path: root/django/db/backends/postgresql/operations.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/db/backends/postgresql/operations.py')
-rw-r--r--django/db/backends/postgresql/operations.py17
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)