diff options
author | Ramiro Morales <cramm0@gmail.com> | 2011-06-19 18:00:09 +0000 |
---|---|---|
committer | Ramiro Morales <cramm0@gmail.com> | 2011-06-19 18:00:09 +0000 |
commit | f2dca72afd89160580454abe5a90e0b4c6be196e (patch) | |
tree | c97ea3617af2165c6d7b93050a831dbf7335a928 /django/db/backends/postgresql_psycopg2/operations.py | |
parent | 656360c24044e06c881baa648f2aad9d671c3bd8 (diff) | |
download | django-f2dca72afd89160580454abe5a90e0b4c6be196e.tar.gz |
Fixed #11065, #11285 -- Streamlined PostgreSQL version detection, fixing incompatibility with multi-db. Thanks findepi for the report.
Changed our internal representation of the PostgreSQL version from tuples to
integers as used by libpq and psycopg2. This simplifies version comparison
operations.
Also, using the associated libpq/psycopg2 API allows to remove the need for
manually issuing in-band ``SELECT version()`` SQL queries to obtain the server
version (or at least reduce its number if version of psycopg2 in use is older
than 2.0.12). Refs #10509.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16439 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/db/backends/postgresql_psycopg2/operations.py')
-rw-r--r-- | django/db/backends/postgresql_psycopg2/operations.py | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/django/db/backends/postgresql_psycopg2/operations.py b/django/db/backends/postgresql_psycopg2/operations.py index ecd0dde1c6..fe021b5fc6 100644 --- a/django/db/backends/postgresql_psycopg2/operations.py +++ b/django/db/backends/postgresql_psycopg2/operations.py @@ -6,15 +6,6 @@ from django.db.backends import BaseDatabaseOperations class DatabaseOperations(BaseDatabaseOperations): def __init__(self, connection): super(DatabaseOperations, self).__init__(connection) - self._postgres_version = None - - def _get_postgres_version(self): - if self._postgres_version is None: - from django.db.backends.postgresql_psycopg2.version import get_version - cursor = self.connection.cursor() - self._postgres_version = get_version(cursor) - return self._postgres_version - postgres_version = property(_get_postgres_version) def date_extract_sql(self, lookup_type, field_name): # http://www.postgresql.org/docs/8.0/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT @@ -166,9 +157,9 @@ class DatabaseOperations(BaseDatabaseOperations): NotImplementedError if this is the database in use. """ if aggregate.sql_function in ('STDDEV_POP', 'VAR_POP'): - 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) + pg_version = self.connection.pg_version + if pg_version >= 80200 and pg_version <= 80204: + 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) def max_name_length(self): """ |