Re: Huge memory consumption on partitioned table with FKs

Поиск
Список
Период
Сортировка
От Amit Langote
Тема Re: Huge memory consumption on partitioned table with FKs
Дата
Msg-id CA+HiwqGEPOtwnsjiQGMVNuN0wkX8ja0u1pFhdRr8jPRELv_OLw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Huge memory consumption on partitioned table with FKs  (Amit Langote <amitlangote09@gmail.com>)
Ответы Re: Huge memory consumption on partitioned table with FKs  (Keisuke Kuroda <keisuke.kuroda.3862@gmail.com>)
Список pgsql-hackers
On Mon, Dec 7, 2020 at 11:01 PM Amit Langote <amitlangote09@gmail.com> wrote:
> On Fri, Dec 4, 2020 at 12:05 PM Kyotaro Horiguchi
> <horikyota.ntt@gmail.com> wrote:
> > > Also, the comment that was in RI_ConstraintInfo now appears in
> > > RI_ConstraintParam, and the new struct (RI_ConstraintInfo) is now
> > > undocumented.  What is the relationship between those two structs?  I
> > > see that they have pointers to each other, but I think the relationship
> > > should be documented more clearly.
> >
> > I'm not sure the footprint of this patch worth doing but here is a bit
> > more polished version.
>
> I noticed that the foreign_key test fails and it may have to do with
> the fact that a partition's param info remains attached to the
> parent's RI_ConstraintInfo even after it's detached from the parent
> table using DETACH PARTITION.

Just for (maybe not so distant) future reference, I managed to fix the
failure with this:

diff --git a/src/backend/utils/adt/ri_triggers.c
b/src/backend/utils/adt/ri_triggers.c
index 187884f..c67f2a6 100644
--- a/src/backend/utils/adt/ri_triggers.c
+++ b/src/backend/utils/adt/ri_triggers.c
@@ -1932,7 +1932,7 @@ ri_BuildQueryKey(RI_QueryKey *key, const
RI_ConstraintInfo *riinfo,
     * We assume struct RI_QueryKey contains no padding bytes, else we'd need
     * to use memset to clear them.
     */
-   key->constr_id = riinfo->param->query_key;
+   key->constr_id = riinfo->constraint_id;
    key->constr_queryno = constr_queryno;
 }

It seems the shareable part (param) is not properly invalidated after
a partition's constraint is detached, apparently leaving query_key in
it set to the parent's constraint id.

-- 
Amit Langote
EDB: http://www.enterprisedb.com



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Krunal Bauskar
Дата:
Сообщение: Re: Improving spin-lock implementation on ARM.
Следующее
От: vignesh C
Дата:
Сообщение: Re: Printing backtrace of postgres processes