OPTIMIZER/EXECUTOR IMPROVEMENTS
- Genetic Optimizer usage has been re-analyzed; geqo defaults have now
been set to more effective values which are expected to significantly
improve plan selection for complex multi-way joins (> 10-way).
geqo_effort setting now offers an easy 1..10 setting (like IBM DB2),
that allows this to be controlled realistically by user/DBA. New
heuristic added to significantly reduce number of join plans attempted
before geqo begins. (Tom)
- Avoid redundant unique-ification step on subqueries where the result
is already known to be unique (i.e. it is a SELECT DISTINCT ...
subquery, IN subqueries that use UNION/INTERSECT/EXCEPT (without ALL)).
Also set join_in_selectivity correctly. (Tom)
- Avoid redundant projection step when scanning a table that we need all
the columns from.| In case of SELECT INTO, we have to check that the
hasoids flag matches the desired output type, too. (Tom)
- Repair mis-estimation of indexscan CPU costs.| When an indexqual
contains a run-time key (that is, a nonconstant expression compared to
the index variable), the key is evaluated just once per scan, but we
were charging costs as though it were evaluated once per visited index
entry. (Tom)
- Avoid planner failure for cases involving Cartesian products inside IN
(sub-SELECT) constructs. (Tom)
