Re: no partition pruning when partitioning using array type
От | Amit Langote |
---|---|
Тема | Re: no partition pruning when partitioning using array type |
Дата | |
Msg-id | 65cbfee7-2577-624f-2063-cbe66915d6eb@lab.ntt.co.jp обсуждение исходный текст |
Ответ на | Re: no partition pruning when partitioning using array type (Robert Haas <robertmhaas@gmail.com>) |
Ответы |
Re: no partition pruning when partitioning using array type
|
Список | 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
Вложения
В списке pgsql-hackers по дате отправления: