Thread: Small run-time pruning doc fix
Before 5220bb7533f a note in ddl.sgml used to mention that run-time pruning was only implemented for Append. When we got MergeAppend support the commit updated this to mention MergeAppend is supported too. This is slightly weird as it's not all that obvious what exactly isn't supported when we mention: <para> Both of these behaviors are likely to be changed in a future release of <productname>PostgreSQL</productname>. </para> The attached patch updates this to mention that ModifyTable is unsupported which I think makes the above fragment make sense again. -- David Rowley http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
Attachment
On 08/10/2018 10:22, David Rowley wrote: > Before 5220bb7533f a note in ddl.sgml used to mention that run-time > pruning was only implemented for Append. When we got MergeAppend > support the commit updated this to mention MergeAppend is supported > too. This is slightly weird as it's not all that obvious what exactly > isn't supported when we mention: > > <para> > Both of these behaviors are likely to be changed in a future release > of <productname>PostgreSQL</productname>. > </para> > > The attached patch updates this to mention that ModifyTable is > unsupported which I think makes the above fragment make sense again. <para> - Execution-time partition pruning currently occurs for the + Execution-time partition pruning currently only occurs for the <literal>Append</literal> and <literal>MergeAppend</literal> node types. + It is not yet implemented for the <literal>ModifyTable</literal> node + type. </para> Isn't this implied by the preceding paragraph Currently, pruning of partitions during the planning of an UPDATE or DELETE command is implemented using the constraint exclusion method ? Also, could there be other node types that could benefit from partition pruning that are not implemented yet? Not sure we want to mention all of them. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Thanks for looking at this. On 2 November 2018 at 20:30, Peter Eisentraut <peter.eisentraut@2ndquadrant.com> wrote: > <para> > - Execution-time partition pruning currently occurs for the > + Execution-time partition pruning currently only occurs for the > <literal>Append</literal> and <literal>MergeAppend</literal> node > types. > + It is not yet implemented for the <literal>ModifyTable</literal> node > + type. > </para> > > Isn't this implied by the preceding paragraph > > Currently, pruning of partitions during the planning of an UPDATE or > DELETE command is implemented using the constraint exclusion method That paragraph is talking about plan-time partition pruning. The paragraph the patch changes is mentioning execution-time partition pruning. In PG11 we have plan-time partition pruning for Append and MergeAppend. UPDATE/DELETE does pruning, but it uses the constraint exclusion code which does not work for HASH partitioned tables. In PG11 we only have run-time partition pruning for Append. MergeAppend support was only added in 5220bb7533 (PG12). > Also, could there be other node types that could benefit from partition > pruning that are not implemented yet? Not sure we want to mention all > of them. I'm unsure what might exist in the future, but there are currently only 3 node types that take a list of subpaths. I think if we get the support for ModifyTable later, then likely the paragraph edited in this patch would disappear. In fact, the entire note would disappear as adding run-time pruning for ModifyTable will require the planner to use the new partition pruning code. There's a patch for that in [1], so maybe it'll all be a little less confusing in PG12. [1] https://commitfest.postgresql.org/20/1778/ -- David Rowley http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
On 04/11/2018 06:23, David Rowley wrote: > Thanks for looking at this. > > On 2 November 2018 at 20:30, Peter Eisentraut > <peter.eisentraut@2ndquadrant.com> wrote: >> <para> >> - Execution-time partition pruning currently occurs for the >> + Execution-time partition pruning currently only occurs for the >> <literal>Append</literal> and <literal>MergeAppend</literal> node >> types. >> + It is not yet implemented for the <literal>ModifyTable</literal> node >> + type. >> </para> >> >> Isn't this implied by the preceding paragraph >> >> Currently, pruning of partitions during the planning of an UPDATE or >> DELETE command is implemented using the constraint exclusion method > > That paragraph is talking about plan-time partition pruning. The > paragraph the patch changes is mentioning execution-time partition > pruning. In PG11 we have plan-time partition pruning for Append and > MergeAppend. UPDATE/DELETE does pruning, but it uses the constraint > exclusion code which does not work for HASH partitioned tables. In > PG11 we only have run-time partition pruning for Append. MergeAppend > support was only added in 5220bb7533 (PG12). I see now. The actual documentation change was separate in db72302b0a8. Committed your change. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
On 13 November 2018 at 02:46, Peter Eisentraut <peter.eisentraut@2ndquadrant.com> wrote: > Committed your change. Thanks. -- David Rowley http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services