summaryrefslogtreecommitdiff
path: root/django/db/backends/postgresql/operations.py
diff options
context:
space:
mode:
authorMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2008-04-13 02:04:10 +0000
committerMalcolm Tredinnick <malcolm.tredinnick@gmail.com>2008-04-13 02:04:10 +0000
commit35afdedbed6345a3b078ebea0a105718109d7fda (patch)
tree06558e3922c0ce9895dd4e1580b88f0d5d44b513 /django/db/backends/postgresql/operations.py
parent6dfe245f02d62ade0aa1135893e0f074de4e8eb1 (diff)
downloaddjango-35afdedbed6345a3b078ebea0a105718109d7fda.tar.gz
Fixed #6433 -- Handle some varied PostgreSQL version strings (beta versions and
Windows version strings). Patch from jerickso. git-svn-id: http://code.djangoproject.com/svn/django/trunk@7415 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/db/backends/postgresql/operations.py')
-rw-r--r--django/db/backends/postgresql/operations.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/django/db/backends/postgresql/operations.py b/django/db/backends/postgresql/operations.py
index 15ca957bac..cd46413453 100644
--- a/django/db/backends/postgresql/operations.py
+++ b/django/db/backends/postgresql/operations.py
@@ -1,5 +1,9 @@
+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.
@@ -12,7 +16,11 @@ class DatabaseOperations(BaseDatabaseOperations):
from django.db import connection
cursor = connection.cursor()
cursor.execute("SELECT version()")
- self._postgres_version = [int(val) for val in cursor.fetchone()[0].split()[1].split('.')]
+ 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]
return self._postgres_version
postgres_version = property(_get_postgres_version)