Commit 1f91c8c
committed
Avoid planner crash/Assert failure with joins to unflattened subqueries.
examine_simple_variable supposed that any RTE_SUBQUERY rel it gets pointed
at must have been planned already. However, this isn't a safe assumption
because we must do selectivity estimation while generating indexscan paths,
and that code might look at join clauses involving a rel that the loop in
set_base_rel_sizes() hasn't reached yet. The simplest fix is to play dumb
in such a situation, that is give up trying to extract any stats for the
Var. This could possibly be improved by making a separate pass over the
RTE list to plan each unflattened subquery before we start the main
planning work --- but that would be pretty invasive and it doesn't seem
worth it, for now at least. (We couldn't just break set_base_rel_sizes()
into two loops: the prescan would need to handle all subquery rels in the
query, not only those in the current join subproblem.)
This bug was introduced in commit 1cb108e,
although I think that subsequent changes may have exposed it more than it
was originally. Per bug #7580 from Maxim Boguk.1 parent fe3b5eb commit 1f91c8c
1 file changed
+4
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4518 | 4518 | | |
4519 | 4519 | | |
4520 | 4520 | | |
4521 | | - | |
4522 | | - | |
| 4521 | + | |
| 4522 | + | |
| 4523 | + | |
| 4524 | + | |
4523 | 4525 | | |
4524 | 4526 | | |
4525 | 4527 | | |
| |||
0 commit comments