Thread: pgsql: Consider fractional paths in generate_orderedappend_paths

pgsql: Consider fractional paths in generate_orderedappend_paths

From
Tomas Vondra
Date:
Consider fractional paths in generate_orderedappend_paths

When building append paths, we've been looking only at startup and total
costs for the paths. When building fractional paths that may eliminate
the cheapest one, because it may be dominated by two separate paths (one
for startup, one for total cost).

This extends generate_orderedappend_paths() to also consider which paths
have lowest fractional cost. Currently we only consider paths matching
pathkeys - in the future this may be improved by also considering paths
that are only partially sorted, with an incremental sort on top.

Original report of an issue by Arne Roland, patch by me (based on a
suggestion by Tom Lane).

Reviewed-by: Arne Roland, Zhihong Yu
Discussion: https://postgr.es/m/e8f9ec90-546d-e948-acce-0525f3e92773%40enterprisedb.com
Discussion: https://postgr.es/m/1581042da8044e71ada2d6e3a51bf7bb%40index.de

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/6b94e7a6da2f1c6df1a42efe64251f32a444d174

Modified Files
--------------
src/backend/optimizer/path/allpaths.c        | 69 +++++++++++++++++++++++++++-
src/test/regress/expected/partition_join.out | 48 +++++++++++++++++++
src/test/regress/sql/partition_join.sql      | 25 ++++++++++
3 files changed, 141 insertions(+), 1 deletion(-)