From a1529090698c589b64ab3ed0f0ba62cd72617f5b Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Thu, 12 Mar 2009 05:32:00 +0000 Subject: [PATCH] Fixed #10467 -- Fixed generated INSERT SQL for PostgreSQL 8.1 and earlier. I introduced a bad regression in r10029, forgetting to check that some syntax was supported. For now, you can't use autocommit=True with 8.1 and earlier (it's still available for later versions). I'll fix the broader issue later and re-enable it for those versions, but I want to get the SQL regression for the default path out of the code right now. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10035 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/backends/postgresql_psycopg2/base.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/django/db/backends/postgresql_psycopg2/base.py b/django/db/backends/postgresql_psycopg2/base.py index 5972df3cb4d..ea2f9f41b18 100644 --- a/django/db/backends/postgresql_psycopg2/base.py +++ b/django/db/backends/postgresql_psycopg2/base.py @@ -105,6 +105,15 @@ class DatabaseWrapper(BaseDatabaseWrapper): 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: + # 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.") return cursor def _enter_transaction_management(self, managed):