Re: COPY FROM ON_ERROR SET_NULL bypasses domain NOT NULL with partial column list
jian he <jian.universality@gmail.com>
From: jian he <jian.universality@gmail.com>
To: SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-04-17T03:58:48Z
Lists: pgsql-hackers
Attachments
- v2-0001-Fix-COPY-FROM-ON_ERROR-SET_NULL-with-selective-column-list.patch (text/x-patch) patch v2-0001
On Fri, Apr 17, 2026 at 1:09 AM SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com> wrote: > > HI hackers, > > domain_with_constraint[] was allocated with list_length(attnumlist) > elements and indexed sequentially via foreach_current_index(), but > copyfromparse.c accesses it via attnum - 1 (physical attribute index). > With a partial column list targeting high-numbered columns, this caused > an out-of-bounds read that bypassed domain NOT NULL checks, silently > inserting NULL into NOT NULL domain columns. > > Fix by allocating with num_phys_attrs and indexing by attnum - 1, > consistent with all other per-column arrays in BeginCopyFrom(). > > Patch is attached, and added a new test case to cover this scenario. > The patch looks good to me. I simplified the tests. -- jian https://www.enterprisedb.com/
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix COPY FROM ON_ERROR SET_NULL with selective column list
- 1164a822729a 19 (unreleased) landed