Subject: [PATCH] ecpg: use memcpy in a few length-based copies

From: Haibo Yan <[email-masked]>
Date: Wed, 8 Jul 2026 12:24:22 -0700

Hi hackers,

I noticed a few places in ecpg that use strncpy() even though the code already
knows how many bytes to copy.

For example, some paths copy N bytes into a temporary buffer and then add the
terminating NUL explicitly.  There is also one small substring copy in
pgtypeslib/datetime.c.  memcpy() seems a better fit for those cases.

I did not try to replace all strncpy() calls in ecpg.  Some of them still need
the usual strncpy() behavior when the source string may be shorter than the
destination.

The patch also adds a small regression test for fixed-size char[] and VARCHAR
output around the exact-fit/truncation boundary.

Thanks,
Haibo

---

From: Peter Eisentraut <[email-masked]>
Date: Thu, 9 Jul 2026 09:04:54 +0200

> pgtypeslib/datetime.c.  memcpy() seems a better fit for those cases.

Why is it better?  At least strncpy() enforces that the target is a char 
array, which memcpy() doesn't.

At a quick glance, strlcpy() might be more suitable in some of the cases 
you found.