Re: no partition pruning when partitioning using array type - Mailing list pgsql-hackers

From Amit Langote
Subject Re: no partition pruning when partitioning using array type
Date
Msg-id 65cbfee7-2577-624f-2063-cbe66915d6eb@lab.ntt.co.jp
Whole thread Raw
In response to Re: no partition pruning when partitioning using array type  (Robert Haas <robertmhaas@gmail.com>)
Responses Re: no partition pruning when partitioning using array type
List pgsql-hackers
On 2018/02/02 0:20, Robert Haas wrote:
> On Thu, Feb 1, 2018 at 4:42 AM, Amit Langote
> <Langote_Amit_f8@lab.ntt.co.jp> wrote:
>>> I hope someone else chimes in as well. :)
>>
>> Bug #15042 [1] seems to be caused by this same problem.  There, a
>> RelabelType node is being slapped (by the partitioning code) on a Var node
>> of a partition key on enum.
>>
>> Attached updated patch.
> 
> Can I get anyone else to weigh in on whether this is likely to be
> safe?  Paging people who understand constraint exclusion...

Added this to CF (actually moved to the September one after first having
added it to the CF that is just getting started).

It seems to me that we don't need to go with my originally proposed
approach to teach predtest.c to strip RelabelType nodes.  Apparently, it's
only partition.c that's adding the RelableType node around partition key
nodes in such cases.  That is, in the case of having an array, record,
enum, and range type as the partition key.  No other part of the system
ends up adding one as far as I can see.  Parser's make_op(), for example,
that is used to generate an OpExpr for a qual involving the partition key,
won't put RelabelType around the partition key node if the operator in
question has "pseudo"-types listed as declared types of its left and right
arguments.

So I revised the patch to drop all the predtest.c changes and instead
modify get_partition_operator() to avoid generating RelabelType in such
cases.  Please find it attached.

Thanks,
Amit

Attachment

pgsql-hackers by date:

Previous
From: Michael Paquier
Date:
Subject: Re: 2018-03 Commitfest starts tomorrow
Next
From: Darafei "Komяpa" Praliaskouski
Date:
Subject: Re: Cast jsonb to numeric, int, float, bool