Re: [HACKERS] UPDATE of partition key
От | Amit Khandekar |
---|---|
Тема | Re: [HACKERS] UPDATE of partition key |
Дата | |
Msg-id | CAJ3gD9fh4aEESRTe7eaSEL2jiAh7y6SzZUXqFx-w7Hm_vFG-VA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [HACKERS] UPDATE of partition key (Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>) |
Ответы |
Re: [HACKERS] UPDATE of partition key
Re: [HACKERS] UPDATE of partition key |
Список | pgsql-hackers |
On 24 November 2017 at 10:52, Amit Langote <Langote_Amit_f8@lab.ntt.co.jp> wrote: > On 2017/11/23 21:57, Amit Khandekar wrote: >> If we collect the partition keys in expand_partitioned_rtentry(), we >> need to pass the root relation also, so that we can convert the >> partition key attributes to root rel descriptor. And the other thing >> is, may be, we can check beforehand (in expand_inherited_rtentry) >> whether the rootrte's updatedCols is empty, which I think implies that >> it's not an UPDATE operation. If yes, we can just skip collecting the >> partition keys. > > Yeah, it seems like a good idea after all to check in > expand_inherited_rtentry() whether the root RTE's updatedCols is non-empty > and if so check if any of the updatedCols are partition keys. If we find > some, then it will suffice to just set a simple flag in the > PartitionedChildRelInfo that will be created for the root table. That > should be done *after* we have visited all the tables in the partition > tree including some that might be partitioned and hence will provide their > partition keys. The following block in expand_inherited_rtentry() looks > like a good spot: > > if (rte->inh && partitioned_child_rels != NIL) > { > PartitionedChildRelInfo *pcinfo; > > pcinfo = makeNode(PartitionedChildRelInfo); Yes, I am thinking about something like that. Thanks. I am also working on your suggestion of moving the convert-to-root-descriptor logic from ExecInsert() to ExecUpdate(). So, in the upcoming patch version, I am intending to include the above two, and if possible, Robert's idea of re-using is_partition_attr() for pull_child_partition_columns(). -- Thanks, -Amit Khandekar EnterpriseDB Corporation The Postgres Database Company
В списке pgsql-hackers по дате отправления: