From 35afdedbed6345a3b078ebea0a105718109d7fda Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Sun, 13 Apr 2008 02:04:10 +0000 Subject: [PATCH] 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 --- django/db/backends/postgresql/operations.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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)