Thread
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Use stack-allocated StringInfoDatas, where possible
- a63bbc811d41 19 (unreleased) cited
-
Avoid unnecessary StringInfo allocation in tablesync COPY buffer
Chao Li <li.evan.chao@gmail.com> — 2026-05-09T06:10:50Z
Hi, I found this issue while reviewing the patch [1] and was suggested use a separate thread for the issue. In tablesync.c, 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 patch 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. [1] https://postgr.es/m/CAOzEurQKuy3RiPkd=25PEwEzaqHuGvEOf=X7vaVzhgNjaukYzA@mail.gmail.com Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/
-
Re: Avoid unnecessary StringInfo allocation in tablesync COPY buffer
Álvaro Herrera <alvherre@kurilemu.de> — 2026-05-09T15:35:05Z
Hello, On 2026-May-09, Chao Li wrote: > I found this issue while reviewing the patch [1] and was suggested use > a separate thread for the issue. > > In tablesync.c, 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. I find this coding pattern weird and ugly and confusing. If what we need is three variables, shouldn't we have three variables instead of this strange misuse of the StringInfo abstraction? -- Álvaro Herrera PostgreSQL Developer — https://www.EnterpriseDB.com/ "We have labored long to build a heaven, only (Prof. Milton Glass) to find it populated with horrors" (Watchmen, Alan Moore)
-
Re: Avoid unnecessary StringInfo allocation in tablesync COPY buffer
Chao Li <li.evan.chao@gmail.com> — 2026-05-11T07:09:21Z
> On May 9, 2026, at 23:35, Álvaro Herrera <alvherre@kurilemu.de> wrote: > > Hello, > > On 2026-May-09, Chao Li wrote: > >> I found this issue while reviewing the patch [1] and was suggested use >> a separate thread for the issue. >> >> In tablesync.c, 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. > > I find this coding pattern weird and ugly and confusing. If what we > need is three variables, shouldn't we have three variables instead of > this strange misuse of the StringInfo abstraction? > Yep, I first considered adding a file-local structure, but decided to keep the changes minimal in the first version. In v2, I switched to using a small file-local CopyBuf structure. Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/