Re: [HACKERS] fix possible optimizations in ATExecAttachPartition()
От | Amit Langote |
---|---|
Тема | Re: [HACKERS] fix possible optimizations in ATExecAttachPartition() |
Дата | |
Msg-id | 92a619a1-f05f-f527-d63b-486097e0990f@lab.ntt.co.jp обсуждение исходный текст |
Ответ на | [HACKERS] fix possible optimizations in ATExecAttachPartition() (Jeevan Ladhe <jeevan.ladhe@enterprisedb.com>) |
Ответы |
Re: [HACKERS] fix possible optimizations in ATExecAttachPartition()
|
Список | pgsql-hackers |
On 2017/06/13 18:08, Jeevan Ladhe wrote: > Hi, > > I was doing some testing for my default partitioning work, and I realized > that > there seem to be a some optimization possible (and I think we should really > have > this optimization) for logic around handling the "key IS NOT NULL" > constraints > followed by predicate_implied_by() call. > > 1. Consider, if predicate_implied_by() returns false, in that case > skip_validate > is left set to false, and we really do not want to do lots of stuff followed > this decision just to prove that the scan cannot be avoided(which is already > decided in this case) if there is no NOT NULL constraint on the partition > key > column. > > 2. Further, if we have already decided not to skip the scan, we should > really have > a break in following if block: > > if (!partition_accepts_null && > (partattno == 0 || > !bms_is_member(partattno, not_null_attrs))) > skip_validate = false; > > > I have made above changes in the attached patch. > PFA, and let me know if I am missing something here. Yeah, I was thinking the same while writing the patch posted on the thread "A bug in mapping attributes in ATExecAttachPartition()" [1]. That patch adds the break you mention in 2, but didn't do anything about point 1. In any case, +1 to your patch. I'll rebase if someone decides to commit it first. Thanks, Amit [1] https://www.postgresql.org/message-id/a5df1cf6-dc51-1720-2abe-7957502b2cf9%40lab.ntt.co.jp
В списке pgsql-hackers по дате отправления: