Django

Code

Ticket #6433: postgres-versions.diff

File postgres-versions.diff, 1.4 kB (added by jerickso, 8 months ago)

A new patch that works with RC/beta versions and Windows version strings

  • django/db/backends/postgresql/operations.py

    old new  
    11from django.db.backends import BaseDatabaseOperations 
     2import re 
    23 
    34# This DatabaseOperations class lives in here instead of base.py because it's 
    45# used by both the 'postgresql' and 'postgresql_psycopg2' backends. 
    56 
     7# re string to match the numerical portion of the version numbers of PostgreSQL 
     8# 
     9server_version_re = re.compile(r'PostgreSQL (\d{1,2})\.(\d{1,2})\.?(\d{1,2})?') 
     10 
    611class DatabaseOperations(BaseDatabaseOperations): 
    712    def __init__(self): 
    813        self._postgres_version = None 
     
    1217            from django.db import connection 
    1318            cursor = connection.cursor() 
    1419            cursor.execute("SELECT version()") 
    15             self._postgres_version = [int(val) for val in cursor.fetchone()[0].split()[1].split('.')] 
     20            version_string = cursor.fetchone()[0] 
     21            m = server_version_re.match(version_string) 
     22            if not m: 
     23                raise Exception('Unable to determine PostgreSQL version from version() function string: %r' % version_string) 
     24            self._postgres_version = [int(val) for val in m.groups() if val != None] 
    1625        return self._postgres_version 
    1726    postgres_version = property(_get_postgres_version) 
    1827