There seems to be an extra palloc of 64KB of raw_buf for binary format files which is not required as copy logic for binary files don't use raw_buf, instead, attribute_buf is used in CopyReadBinaryAttribute.
+1
I looked at the patch and the changes looked good. Couple of comments;
1)
+ + /* For binary files raw_buf is not used, + * instead, attribute_buf is used in + * CopyReadBinaryAttribute. Hence, don't palloc + * raw_buf. + */
Not a PG style of commenting.
2) In non-binary mode, should assign NULL the raw_buf.
Attaching patch with those changes.
Attached is a patch, which places a check to avoid this unnecessary 64KB palloc.
Request the community to take this patch, if it is useful.