Re: speeding up planning with partitions

From: Amit Langote <Langote_Amit_f8(at)lab(dot)ntt(dot)co(dot)jp>
To: "Imai, Yoshikazu" <imai(dot)yoshikazu(at)jp(dot)fujitsu(dot)com>, Amit Langote <amitlangote09(at)gmail(dot)com>
Cc: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, David Rowley <david(dot)rowley(at)2ndquadrant(dot)com>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: speeding up planning with partitions
Date: 2019-02-08 09:12:34
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers


Thanks for the comments.

On 2019/02/08 13:44, Imai, Yoshikazu wrote:
> 3.
> 0001: line 1919-1920
> - break; /* always try to exclude */
> CONSTRAINT_EXCLUSION_ON is no longer used, so should we remove it also from guc parameters?

Well, we haven't removed the "on" setting itself.

> 4.
> 0001:
> Can we remove enum InheritanceKind which is no longer used?

That we can do.

> I also see the patch from a perspective of separating codes from 0001 which are not essential of Overhaul inheritance update/delete planning. Although almost all of codes are related each other, but I found below two things can be moved to another patch.
> ---
> 0001: line 550-608
> This section seems to be just refinement of set_append_rel_size().
> So can we separate this from 0001 to another patch?
> ---
> 0001: line 812-841, 940-947, 1525-1536, 1938-1947
> These codes are related to removement of InheritanceKind from relation_excluded_by_constraints(), so I think it is something like cleaning of unneeded codes. Can we separate this to patch as some-code-clearnups-of-0001.patch? Of course, we can do that only if removing of these codes from 0001 would not bother success of "make check" of 0001.
> I also think that what I pointed out at above 3. and 4. can also be included in some-code-clearnups-of-0001.patch.

Okay, I've broken down those changes into separate patches, so that
cleanup hunks are not fixed with other complex changes.

0001 is now a patch to remove duplicate code from set_append_rel_size. It
combines multiple blocks that have the same body doing

0002 is the "overhaul inherited update/delete planning"

0003 is a cleanup patch that gets rid of some code that is rendered
useless due to 0002 (partitioned tables no longer use constraint exclusion)

I think 0001 can be committed on its own. 0002+0003 can be committed

0004-0006 are the patches that were previously 0002-0004.

The new version also contains a change to what was previously 0001 patch
(attached 0002) -- eq_classes is now copied right when the child subroot
is created, that is, in create_inherited_target_child_root(), no longer in
the loop in set_inherit_target_rel_sizes().


Attachment Content-Type Size
v21-0001-Reduce-code-duplication-in-set_append_rel_size.patch text/plain 2.9 KB
v21-0002-Overhaul-inheritance-update-delete-planning.patch text/plain 64.5 KB
v21-0003-Get-rid-of-some-useless-code.patch text/plain 8.5 KB
v21-0004-Lazy-creation-of-RTEs-for-inheritance-children.patch text/plain 94.6 KB
v21-0005-Teach-planner-to-only-process-unpruned-partition.patch text/plain 6.9 KB
v21-0006-Do-not-lock-all-partitions-at-the-beginning.patch text/plain 1.9 KB

In response to


Browse pgsql-hackers by date

  From Date Subject
Next Message Konstantin Knizhnik 2019-02-08 09:15:58 Re: libpq compression
Previous Message Rushabh Lathia 2019-02-08 09:05:03 Re: ON SELECT rule on a table without columns