Author: mtredinnick Date: 2009-03-15 19:34:58 -0500 (Sun, 15 Mar 2009) New Revision: 10065
Modified: django/trunk/django/db/backends/postgresql_psycopg2/base.py Log: More fixing of PostgreSQL < 8.2 problems with the psycopg2 backend. Affects the postgresql_psycopg2 backend only. We now don't use the "RETURNING" syntax in SQL INSERT statements unless it's required by the autocommit behaviour. This fixes an edge-case that could cause crashes with earlier PostgreSQL versions, but the broader problem remains to be fixed (which is #10509). Fixed #10467. Refs #10509. Modified: django/trunk/django/db/backends/postgresql_psycopg2/base.py =================================================================== --- django/trunk/django/db/backends/postgresql_psycopg2/base.py 2009-03-15 11:21:41 UTC (rev 10064) +++ django/trunk/django/db/backends/postgresql_psycopg2/base.py 2009-03-16 00:34:58 UTC (rev 10065) @@ -29,7 +29,7 @@ class DatabaseFeatures(BaseDatabaseFeatures): needs_datetime_string_cast = False - can_return_id_from_insert = True + can_return_id_from_insert = False class DatabaseOperations(PostgresqlDatabaseOperations): def last_executed_query(self, cursor, sql, params): @@ -105,15 +105,17 @@ if self._version < (8, 0): # No savepoint support for earlier version of PostgreSQL. self.features.uses_savepoints = False - if self._version < (8, 2): - # Cannot return the insert ID as part of an INSERT statement - # prior to version 8.2. - self.features.can_return_id_from_insert = False - if self.features.uses_autocommit: + if self.features.uses_autocommit: + if self._version < (8, 2): # FIXME: Needs extra code to do reliable model insert # handling, so we forbid it for now. from django.core.exceptions import ImproperlyConfigured raise ImproperlyConfigured("You cannot use autocommit=True with PostgreSQL prior to 8.2 at the moment.") + else: + # FIXME: Eventually we're enable this by default for + # versions that support it, but, right now, that's hard to + # do without breaking other things (#10509). + self.features.can_return_id_from_insert = True return cursor def _enter_transaction_management(self, managed): --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django updates" group. To post to this group, send email to django-updates@googlegroups.com To unsubscribe from this group, send email to django-updates+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-updates?hl=en -~----------~----~----~----~------~----~------~--~---