Commit e6689622 authored by Jorge C. Leitão's avatar Jorge C. Leitão
Browse files

Fixed #22826 -- Improved internal usage of Query.setup_joins.

parent bf743a4d
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -57,9 +57,9 @@ class SQLEvaluator(object):
            self.cols.append((node, query.aggregate_select[node.name]))
        else:
            try:
                field, sources, opts, join_list, path = query.setup_joins(
                    field_list, query.get_meta(),
                    query.get_initial_alias(), self.reuse)
                _, sources, _, join_list, path = query.setup_joins(
                    field_list, query.get_meta(), query.get_initial_alias(),
                    can_reuse=self.reuse)
                self._used_joins = join_list
                targets, _, join_list = query.trim_joins(sources, join_list, path)
                if self.reuse is not None:
+4 −5
Original line number Diff line number Diff line
@@ -1008,7 +1008,7 @@ class Query(object):

            # Join promotion note - we must not remove any rows here, so use
            # outer join if there isn't any existing join.
            field, sources, opts, join_list, path = self.setup_joins(
            _, sources, opts, join_list, path = self.setup_joins(
                field_list, opts, self.get_initial_alias())

            # Process the join chain to see if it can be trimmed
@@ -1158,7 +1158,7 @@ class Query(object):

        try:
            field, sources, opts, join_list, path = self.setup_joins(
                parts, opts, alias, can_reuse, allow_many)
                parts, opts, alias, can_reuse=can_reuse, allow_many=allow_many)
            # split_exclude() needs to know which joins were generated for the
            # lookup parts
            self._lookup_joins = join_list
@@ -1605,9 +1605,8 @@ class Query(object):
            for name in field_names:
                # Join promotion note - we must not remove any rows here, so
                # if there is no existing joins, use outer join.
                field, targets, u2, joins, path = self.setup_joins(
                    name.split(LOOKUP_SEP), opts, alias, can_reuse=None,
                    allow_many=allow_m2m)
                _, targets, _, joins, path = self.setup_joins(
                    name.split(LOOKUP_SEP), opts, alias, allow_many=allow_m2m)
                targets, final_alias, joins = self.trim_joins(targets, joins, path)
                for target in targets:
                    self.select.append(SelectInfo((final_alias, target.column), target))
+2 −3
Original line number Diff line number Diff line
@@ -215,7 +215,7 @@ class DateQuery(Query):
        Converts the query into an extraction query.
        """
        try:
            result = self.setup_joins(
            field, _, _, joins, _ = self.setup_joins(
                field_name.split(LOOKUP_SEP),
                self.get_meta(),
                self.get_initial_alias(),
@@ -224,9 +224,8 @@ class DateQuery(Query):
            raise FieldDoesNotExist("%s has no field named '%s'" % (
                self.get_meta().object_name, field_name
            ))
        field = result[0]
        self._check_field(field)                # overridden in DateTimeQuery
        alias = result[3][-1]
        alias = joins[-1]
        select = self._get_select((alias, field.column), lookup_type)
        self.clear_select_clause()
        self.select = [SelectInfo(select, None)]