Thread
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
-
COPY FROM ON_ERROR SET_NULL bypasses domain NOT NULL with partial column list
SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com> — 2026-04-16T17:09:40Z
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. Repro: CREATE DOMAIN d_notnull_int AS int NOT NULL; CREATE TABLE t ( c1 text, c2 text, c3 text, c4 text, c5 text, c6 text, c7 text, c8 text, c9 text, c10 d_notnull_int ); COPY t(c1, c10) FROM stdin WITH (on_error set_null); hello bad \. SELECT c10 IS NULL FROM t; Thanks, Satya -
Re: COPY FROM ON_ERROR SET_NULL bypasses domain NOT NULL with partial column list
jian he <jian.universality@gmail.com> — 2026-04-17T03:58:48Z
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/
-
Re: COPY FROM ON_ERROR SET_NULL bypasses domain NOT NULL with partial column list
Fujii Masao <masao.fujii@gmail.com> — 2026-05-18T13:22:13Z
On Fri, Apr 17, 2026 at 12:59 PM jian he <jian.universality@gmail.com> wrote: > > 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. The patch looks good to me. Barring any objections, I will commit it. Regards, -- Fujii Masao
-
Re: COPY FROM ON_ERROR SET_NULL bypasses domain NOT NULL with partial column list
Chao Li <li.evan.chao@gmail.com> — 2026-05-18T22:27:54Z
> On May 18, 2026, at 21:22, Fujii Masao <masao.fujii@gmail.com> wrote: > > On Fri, Apr 17, 2026 at 12:59 PM jian he <jian.universality@gmail.com> wrote: >> >> 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. > > The patch looks good to me. Barring any objections, I will commit it. > > Regards, > > -- > Fujii Masao I also found this bug and reported it here [1]. I just reviewed v2, the code change of the fix itself is exactly the same as my version in [1]. The new test is slightly different from my version, but I think that also works. [1] https://www.postgresql.org/message-id/8A72720A-55AC-4D41-B9DF-5610307600E6%40gmail.com Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/
-
Re: COPY FROM ON_ERROR SET_NULL bypasses domain NOT NULL with partial column list
Fujii Masao <masao.fujii@gmail.com> — 2026-05-19T01:13:22Z
On Tue, May 19, 2026 at 7:28 AM Chao Li <li.evan.chao@gmail.com> wrote: > I also found this bug and reported it here [1]. I just reviewed v2, the code change of the fix itself is exactly the same as my version in [1]. The new test is slightly different from my version, but I think that also works. Thanks for the review! I've pushed the patch. Regards, -- Fujii Masao