Calculate total_table_pages after set_base_rel_sizes()
David Rowley <david.rowley@2ndquadrant.com>
From: David Rowley <david.rowley@2ndquadrant.com>
To: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2018-08-20T07:45:35Z
Lists: pgsql-hackers
Attachments
- v1-0001-Calculate-total_table_pages-after-set_base_rel_si.patch (application/octet-stream) patch v1-0001
I believe that we should be delaying the PlannerInfo's total_table_pages calculation until after constraint exclusion and partition pruning have taken place. Doing this calculation before we determine which relations we don't need to scan can lead to incorrectly applying random_page_cost to too many pages processed during an Index Scan. We already don't count relations removed by join removals from this calculation, so counting pruned partitions seems like an omission. The attached patch moves the calculation to after set_base_rel_sizes() is called and before set_base_rel_pathlists() is called, where the information is actually used. I am considering this a bug fix, but I'm proposing this for PG12 only as I don't think destabilising plans in the back branches is a good idea. I'll add this to the September commitfest. -- David Rowley http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
Commits
-
Postpone calculating total_table_pages until after pruning/exclusion.
- c6e4133fae1f 12.0 landed