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=x7vavzhgnjauk...@mail.gmail.com

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/




Attachment: v1-0001-Avoid-unnecessary-StringInfo-allocation-in-tables.patch
Description: Binary data

Reply via email to