Re: Call EndCopyFrom() after initial table sync in logical replication
Chao Li <li.evan.chao@gmail.com>
From: Chao Li <li.evan.chao@gmail.com>
To: Shinya Kato <shinya11.kato@gmail.com>
Cc: Fujii Masao <masao.fujii@gmail.com>,
cca5507 <cca5507@qq.com>,
PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2026-05-09T05:57:10Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix stale COPY progress during logical replication table sync
- e3c4e374648e 14 (unreleased) landed
- b5f7e7569c09 15 (unreleased) landed
- d140237dab87 16 (unreleased) landed
- f2acab53482c 17 (unreleased) landed
- d9cd9b4d7e14 18 (unreleased) landed
- 422e54e3092a 19 (unreleased) landed
-
Use stack-allocated StringInfoDatas, where possible
- a63bbc811d41 19 (unreleased) cited
> On May 9, 2026, at 02:05, Shinya Kato <shinya11.kato@gmail.com> wrote: > > > > On Fri, May 8, 2026, 14:10 Chao Li <li.evan.chao@gmail.com> wrote: > > I don’t think this is a serious leak. In this path, pstate and attnamelist are allocated in CurTransactionContext, and the transaction is committed immediately after copy_table() finishes, so that memory is reclaimed at transaction end. Explicitly freeing them would be mostly for code readability, not to fix a memory leak. So, I am okay to not free them. > > I agree that no additional memory cleanup is needed here. > > > While tracing the code, I noticed another issue that is probably more worth addressing. copy_table() currently does: > ``` > copybuf = makeStringInfo(); > ``` > > But copybuf is only used by copy_read_data(), and there it's really just acting as a small state holder for data, len, and cursor, rather than as a normal growable StringInfo. That means we do not need to allocate a StringInfo object or its backing buffer at all. > > It would be cleaner to use a plain StringInfoData and simply reinitialize or zero it in copy_table(). See the attached diff for the proposed change. > > David Rowley has made several cleanup changes in this area to prefer stack-allocated StringInfoData, for example a63bbc811d41b3567eb37fe2636e660a852dbbf2. This change seems consistent with that direction. > > Thanks for the suggestion. > > The copybuf change looks worthwhile, but perhaps it’s better discussed in a separate thread. > Sound fair. Let me post it to a separate thread. Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/