Fixed #1614 -- get_sql(), lookup_inner() and parse_lookup() no longer return a 'tables' parameter, because 'tables' was never getting assigned, anywhere.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@3317 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Adrian Holovaty 2006-07-11 02:32:53 +00:00
parent 4872e16d1c
commit b4b9edc5e5
1 changed files with 13 additions and 17 deletions

View File

@ -441,8 +441,7 @@ class QuerySet(object):
params = self._params[:] params = self._params[:]
# Convert self._filters into SQL. # Convert self._filters into SQL.
tables2, joins2, where2, params2 = self._filters.get_sql(opts) joins2, where2, params2 = self._filters.get_sql(opts)
tables.extend(tables2)
joins.update(joins2) joins.update(joins2)
where.extend(where2) where.extend(where2)
params.extend(params2) params.extend(params2)
@ -570,16 +569,15 @@ class QOperator(object):
self.args = args self.args = args
def get_sql(self, opts): def get_sql(self, opts):
tables, joins, where, params = [], SortedDict(), [], [] joins, where, params = SortedDict(), [], []
for val in self.args: for val in self.args:
tables2, joins2, where2, params2 = val.get_sql(opts) joins2, where2, params2 = val.get_sql(opts)
tables.extend(tables2)
joins.update(joins2) joins.update(joins2)
where.extend(where2) where.extend(where2)
params.extend(params2) params.extend(params2)
if where: if where:
return tables, joins, ['(%s)' % self.operator.join(where)], params return joins, ['(%s)' % self.operator.join(where)], params
return tables, joins, [], params return joins, [], params
class QAnd(QOperator): class QAnd(QOperator):
"Encapsulates a combined query that uses 'AND'." "Encapsulates a combined query that uses 'AND'."
@ -630,9 +628,9 @@ class QNot(Q):
self.q = q self.q = q
def get_sql(self, opts): def get_sql(self, opts):
tables, joins, where, params = self.q.get_sql(opts) joins, where, params = self.q.get_sql(opts)
where2 = ['(NOT (%s))' % " AND ".join(where)] where2 = ['(NOT (%s))' % " AND ".join(where)]
return tables, joins, where2, params return joins, where2, params
def get_where_clause(lookup_type, table_prefix, field_name, value): def get_where_clause(lookup_type, table_prefix, field_name, value):
if table_prefix.endswith('.'): if table_prefix.endswith('.'):
@ -706,7 +704,7 @@ def parse_lookup(kwarg_items, opts):
# At present, this method only every returns INNER JOINs; the option is # At present, this method only every returns INNER JOINs; the option is
# there for others to implement custom Q()s, etc that return other join # there for others to implement custom Q()s, etc that return other join
# types. # types.
tables, joins, where, params = [], SortedDict(), [], [] joins, where, params = SortedDict(), [], []
for kwarg, value in kwarg_items: for kwarg, value in kwarg_items:
if value is not None: if value is not None:
@ -733,12 +731,11 @@ def parse_lookup(kwarg_items, opts):
if len(path) < 1: if len(path) < 1:
raise TypeError, "Cannot parse keyword query %r" % kwarg raise TypeError, "Cannot parse keyword query %r" % kwarg
tables2, joins2, where2, params2 = lookup_inner(path, clause, value, opts, opts.db_table, None) joins2, where2, params2 = lookup_inner(path, clause, value, opts, opts.db_table, None)
tables.extend(tables2)
joins.update(joins2) joins.update(joins2)
where.extend(where2) where.extend(where2)
params.extend(params2) params.extend(params2)
return tables, joins, where, params return joins, where, params
class FieldFound(Exception): class FieldFound(Exception):
"Exception used to short circuit field-finding operations." "Exception used to short circuit field-finding operations."
@ -758,7 +755,7 @@ def find_field(name, field_list, related_query):
return matches[0] return matches[0]
def lookup_inner(path, clause, value, opts, table, column): def lookup_inner(path, clause, value, opts, table, column):
tables, joins, where, params = [], SortedDict(), [], [] joins, where, params = SortedDict(), [], []
current_opts = opts current_opts = opts
current_table = table current_table = table
current_column = column current_column = column
@ -878,9 +875,8 @@ def lookup_inner(path, clause, value, opts, table, column):
join_column = None join_column = None
# There are name queries remaining. Recurse deeper. # There are name queries remaining. Recurse deeper.
tables2, joins2, where2, params2 = lookup_inner(path, clause, value, new_opts, new_table, join_column) joins2, where2, params2 = lookup_inner(path, clause, value, new_opts, new_table, join_column)
tables.extend(tables2)
joins.update(joins2) joins.update(joins2)
where.extend(where2) where.extend(where2)
params.extend(params2) params.extend(params2)
@ -925,7 +921,7 @@ def lookup_inner(path, clause, value, opts, table, column):
where.append(get_where_clause(clause, current_table + '.', column, value)) where.append(get_where_clause(clause, current_table + '.', column, value))
params.extend(field.get_db_prep_lookup(clause, value)) params.extend(field.get_db_prep_lookup(clause, value))
return tables, joins, where, params return joins, where, params
def delete_objects(seen_objs): def delete_objects(seen_objs):
"Iterate through a list of seen classes, and remove any instances that are referred to" "Iterate through a list of seen classes, and remove any instances that are referred to"