Django

Code

Changeset 6012

Show
Ignore:
Timestamp:
08/25/07 14:24:47 (1 year ago)
Author:
adrian
Message:

Changed postgresql and postgresql_psycopg2 backends NOT to do a SELECT version() for every connection, which was ludicrous. Now the version is only retrieved if it needs to be, via a lazy loader.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/db/backends/postgresql/base.py

    r5983 r6012  
    103103        cursor.execute("SET client_encoding to 'UNICODE'") 
    104104        cursor = UnicodeCursorWrapper(cursor, 'utf-8') 
    105         if self.ops.postgres_version is None: 
    106             cursor.execute("SELECT version()") 
    107             self.ops.postgres_version = [int(val) for val in cursor.fetchone()[0].split()[1].split('.')] 
    108105        return cursor 
    109106 
  • django/trunk/django/db/backends/postgresql/operations.py

    r6009 r6012  
    55 
    66class DatabaseOperations(BaseDatabaseOperations): 
    7     def __init__(self, postgres_version=None): 
    8         self.postgres_version = postgres_version 
     7    def __init__(self): 
     8        self._postgres_version = None 
     9 
     10    def _get_postgres_version(self): 
     11        if self._postgres_version is None: 
     12            from django.db import connection 
     13            cursor = connection.cursor() 
     14            cursor.execute("SELECT version()") 
     15            self._postgres_version = [int(val) for val in cursor.fetchone()[0].split()[1].split('.')] 
     16        return self._postgres_version 
     17    postgres_version = property(_get_postgres_version) 
    918 
    1019    def date_extract_sql(self, lookup_type, field_name): 
  • django/trunk/django/db/backends/postgresql_psycopg2/base.py

    r5983 r6012  
    6565        if set_tz: 
    6666            cursor.execute("SET TIME ZONE %s", [settings.TIME_ZONE]) 
    67         if self.ops.postgres_version is None: 
    68             cursor.execute("SELECT version()") 
    69             self.ops.postgres_version = [int(val) for val in cursor.fetchone()[0].split()[1].split('.')] 
    7067        return cursor