Thanks for your reply. The patch is exactly what I want.
My English name is Mark Zhao, which should be the current email name.


Thanks,
Mark Zhao




------------------ Original ------------------
From: &nbsp;"Amit Kapila";<amit.kapil...@gmail.com&gt;;
Send time:&nbsp;Monday, Jan 11, 2021 8:12 PM
To:&nbsp;"????"<875941...@qq.com&gt;; 
Cc:&nbsp;"Peter Eisentraut"<peter.eisentr...@2ndquadrant.com&gt;; "Amit 
Langote"<amitlangot...@gmail.com&gt;; "Petr Jelinek"<p...@2ndquadrant.com&gt;; 
"Rafia Sabih"<rafia.pghack...@gmail.com&gt;; 
"PostgreSQL-development"<pgsql-hack...@postgresql.org&gt;; 
Subject: &nbsp;Re: adding partitioned tables to publications



On Wed, Dec 30, 2020 at 8:03 PM ???? <875941...@qq.com&gt; wrote:
&gt;
&gt; The first file of Amit's patch can not only re-range the code, but also 
fix a hidden bug.
&gt; To make it easy to see, I attach another patch.
&gt; "RelationIdGetRelation" will increase ref on owner-&gt;relrefarr, without 
"RelationClose", the owner-&gt;relrefarr will enlarge and re-hash.
&gt; When the capacity of owner-&gt;relrefarr is over than 10 million, enlarge 
and re-hash takes serial hours. And what's worse, increase ref will also take 
minutes, as the hash collision resolution is based on looking up an array in 
order.
&gt; When we want to publish 10 billion data under one partition table, it 
takes serial days up to increase ref, enlarge and re-hash, and CPU is always 
99%.
&gt; After applying my patch, 10 billion will be published in 10 minutes.
&gt;

It is a clear relation descriptor leak. The proposed fix seems correct
to me. The patch wasn't getting applied to HEAD. So, I have prepared
the separate patches for HEAD and 13. There are minor modifications in
the patch like I have used RelationIsValid before closing the
relation. I have not added any test because I see that there is
already a test in src/test/subscription/t/013_partition.

Kindly let me know your English name so that I can give you credit as
a co-author?

-- 
With Regards,
Amit Kapila.

Reply via email to