Thread: Small run-time pruning doc fix

Small run-time pruning doc fix

From
David Rowley
Date:
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

Re: Small run-time pruning doc fix

From
Peter Eisentraut
Date:
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


Re: Small run-time pruning doc fix

From
David Rowley
Date:
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


Re: Small run-time pruning doc fix

From
Peter Eisentraut
Date:
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


Re: Small run-time pruning doc fix

From
David Rowley
Date:
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