pgsql: Expand partitioned tables in PartDesc order.

From: Robert Haas <rhaas(at)postgresql(dot)org>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Expand partitioned tables in PartDesc order.
Date: 2017-08-31 19:50:55
Message-ID: E1dnVUN-0005g7-TD@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Expand partitioned tables in PartDesc order.

Previously, we expanded the inheritance hierarchy in the order in
which find_all_inheritors had locked the tables, but that turns out
to block quite a bit of useful optimization. For example, a
partition-wise join can't count on two tables with matching bounds
to get expanded in the same order.

Where possible, this change results in expanding partitioned tables in
*bound* order. Bound order isn't well-defined for a list-partitioned
table with a null-accepting partition or for a list-partitioned table
where the bounds for a single partition are interleaved with other
partitions. However, when expansion in bound order is possible, it
opens up further opportunities for optimization, such as
strength-reducing MergeAppend to Append when the expansion order
matches the desired sort order.

Patch by me, with cosmetic revisions by Ashutosh Bapat.

Discussion: http://postgr.es/m/CA+TgmoZrKj7kEzcMSum3aXV4eyvvbh9WD=c6m=002WMheDyE3A@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/30833ba154e0c1106d61e3270242dc5999a3e4f3

Modified Files
--------------
src/backend/optimizer/prep/prepunion.c | 328 ++++++++++++++++++++++-----------
src/test/regress/expected/insert.out | 4 +-
2 files changed, 220 insertions(+), 112 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Robert Haas 2017-08-31 20:04:43 pgsql: Improve low-level backup documentation.
Previous Message Tom Lane 2017-08-31 19:10:35 pgsql: Clean up shm_mq cleanup.