From 6309b40bc2a6c93506cef5ae0043743fb172acc1 Mon Sep 17 00:00:00 2001 From: Ian Kelly Date: Fri, 13 Mar 2009 16:57:26 +0000 Subject: [PATCH] Prevented InsertQuery from appending a 'RETURNING' clause when it's not actually interested in the result. This was causing some problems for Oracle. git-svn-id: http://code.djangoproject.com/svn/django/trunk@10047 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/models/sql/subqueries.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/django/db/models/sql/subqueries.py b/django/db/models/sql/subqueries.py index aabe34a4cabf4..4c62457c578e6 100644 --- a/django/db/models/sql/subqueries.py +++ b/django/db/models/sql/subqueries.py @@ -291,10 +291,11 @@ def __init__(self, *args, **kwargs): self.columns = [] self.values = [] self.params = () + self.return_id = False def clone(self, klass=None, **kwargs): extras = {'columns': self.columns[:], 'values': self.values[:], - 'params': self.params} + 'params': self.params, 'return_id': self.return_id} extras.update(kwargs) return super(InsertQuery, self).clone(klass, **extras) @@ -307,7 +308,7 @@ def as_sql(self): result.append('(%s)' % ', '.join([qn(c) for c in self.columns])) result.append('VALUES (%s)' % ', '.join(self.values)) params = self.params - if self.connection.features.can_return_id_from_insert: + if self.return_id and self.connection.features.can_return_id_from_insert: col = "%s.%s" % (qn(opts.db_table), qn(opts.pk.column)) r_fmt, r_params = self.connection.ops.return_insert_id() result.append(r_fmt % col) @@ -315,6 +316,7 @@ def as_sql(self): return ' '.join(result), params def execute_sql(self, return_id=False): + self.return_id = return_id cursor = super(InsertQuery, self).execute_sql(None) if not (return_id and cursor): return