mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	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.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@6012 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -102,9 +102,6 @@ class DatabaseWrapper(BaseDatabaseWrapper): | |||||||
|             cursor.execute("SET TIME ZONE %s", [settings.TIME_ZONE]) |             cursor.execute("SET TIME ZONE %s", [settings.TIME_ZONE]) | ||||||
|         cursor.execute("SET client_encoding to 'UNICODE'") |         cursor.execute("SET client_encoding to 'UNICODE'") | ||||||
|         cursor = UnicodeCursorWrapper(cursor, 'utf-8') |         cursor = UnicodeCursorWrapper(cursor, 'utf-8') | ||||||
|         if self.ops.postgres_version is None: |  | ||||||
|             cursor.execute("SELECT version()") |  | ||||||
|             self.ops.postgres_version = [int(val) for val in cursor.fetchone()[0].split()[1].split('.')] |  | ||||||
|         return cursor |         return cursor | ||||||
|  |  | ||||||
| def typecast_string(s): | def typecast_string(s): | ||||||
|   | |||||||
| @@ -4,8 +4,17 @@ from django.db.backends import BaseDatabaseOperations | |||||||
| # used by both the 'postgresql' and 'postgresql_psycopg2' backends. | # used by both the 'postgresql' and 'postgresql_psycopg2' backends. | ||||||
|  |  | ||||||
| class DatabaseOperations(BaseDatabaseOperations): | class DatabaseOperations(BaseDatabaseOperations): | ||||||
|     def __init__(self, postgres_version=None): |     def __init__(self): | ||||||
|         self.postgres_version = postgres_version |         self._postgres_version = None | ||||||
|  |  | ||||||
|  |     def _get_postgres_version(self): | ||||||
|  |         if self._postgres_version is None: | ||||||
|  |             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('.')] | ||||||
|  |         return self._postgres_version | ||||||
|  |     postgres_version = property(_get_postgres_version) | ||||||
|  |  | ||||||
|     def date_extract_sql(self, lookup_type, field_name): |     def date_extract_sql(self, lookup_type, field_name): | ||||||
|         # http://www.postgresql.org/docs/8.0/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT |         # http://www.postgresql.org/docs/8.0/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT | ||||||
|   | |||||||
| @@ -64,7 +64,4 @@ class DatabaseWrapper(BaseDatabaseWrapper): | |||||||
|         cursor.tzinfo_factory = None |         cursor.tzinfo_factory = None | ||||||
|         if set_tz: |         if set_tz: | ||||||
|             cursor.execute("SET TIME ZONE %s", [settings.TIME_ZONE]) |             cursor.execute("SET TIME ZONE %s", [settings.TIME_ZONE]) | ||||||
|         if self.ops.postgres_version is None: |  | ||||||
|             cursor.execute("SELECT version()") |  | ||||||
|             self.ops.postgres_version = [int(val) for val in cursor.fetchone()[0].split()[1].split('.')] |  | ||||||
|         return cursor |         return cursor | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user