I was looking at pull_up_subqueries (backend/optimizer/prep/prepjointree.c 135) and I was wondering why the recursive optimization is only done on subqueries that can be optimized.
As in, why isn't the code like:
if (rte->rtekind == RTE_SUBQUERY) { subquery = copyObject(subquery); if (subquery->hasSubLinks) subquery->jointree->quals = pull_up_IN_clauses(subquery, subquery->jointree->quals); subquery->jointree = (FromExpr *) pull_up_subqueries(subquery, (Node *) subquery->jointree, false); if (is_simple_subquery(subquery) && (!below_outer_join || has_nullable_targetlist(subquery)) && !contain_whole_tuple_var((Node *) parse, varno, 0)) { //optimize the subquery up } }
-- Dennis
---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster