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
This commit is contained in:
parent
a21770e914
commit
6309b40bc2
|
@ -291,10 +291,11 @@ class InsertQuery(Query):
|
||||||
self.columns = []
|
self.columns = []
|
||||||
self.values = []
|
self.values = []
|
||||||
self.params = ()
|
self.params = ()
|
||||||
|
self.return_id = False
|
||||||
|
|
||||||
def clone(self, klass=None, **kwargs):
|
def clone(self, klass=None, **kwargs):
|
||||||
extras = {'columns': self.columns[:], 'values': self.values[:],
|
extras = {'columns': self.columns[:], 'values': self.values[:],
|
||||||
'params': self.params}
|
'params': self.params, 'return_id': self.return_id}
|
||||||
extras.update(kwargs)
|
extras.update(kwargs)
|
||||||
return super(InsertQuery, self).clone(klass, **extras)
|
return super(InsertQuery, self).clone(klass, **extras)
|
||||||
|
|
||||||
|
@ -307,7 +308,7 @@ class InsertQuery(Query):
|
||||||
result.append('(%s)' % ', '.join([qn(c) for c in self.columns]))
|
result.append('(%s)' % ', '.join([qn(c) for c in self.columns]))
|
||||||
result.append('VALUES (%s)' % ', '.join(self.values))
|
result.append('VALUES (%s)' % ', '.join(self.values))
|
||||||
params = self.params
|
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))
|
col = "%s.%s" % (qn(opts.db_table), qn(opts.pk.column))
|
||||||
r_fmt, r_params = self.connection.ops.return_insert_id()
|
r_fmt, r_params = self.connection.ops.return_insert_id()
|
||||||
result.append(r_fmt % col)
|
result.append(r_fmt % col)
|
||||||
|
@ -315,6 +316,7 @@ class InsertQuery(Query):
|
||||||
return ' '.join(result), params
|
return ' '.join(result), params
|
||||||
|
|
||||||
def execute_sql(self, return_id=False):
|
def execute_sql(self, return_id=False):
|
||||||
|
self.return_id = return_id
|
||||||
cursor = super(InsertQuery, self).execute_sql(None)
|
cursor = super(InsertQuery, self).execute_sql(None)
|
||||||
if not (return_id and cursor):
|
if not (return_id and cursor):
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue