Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wOxvT-000JZI-1R for pgsql-hackers@arkaria.postgresql.org; Mon, 18 May 2026 13:22:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wOxvR-002Rtk-0y for pgsql-hackers@arkaria.postgresql.org; Mon, 18 May 2026 13:22:30 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wOxvR-002Rtc-03 for pgsql-hackers@lists.postgresql.org; Mon, 18 May 2026 13:22:29 +0000 Received: from mail-oi1-x233.google.com ([2607:f8b0:4864:20::233]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wOxvP-00000000Azz-2Ksm for pgsql-hackers@lists.postgresql.org; Mon, 18 May 2026 13:22:29 +0000 Received: by mail-oi1-x233.google.com with SMTP id 5614622812f47-484cf882ce5so961434b6e.1 for ; Mon, 18 May 2026 06:22:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779110548; cv=none; d=google.com; s=arc-20240605; b=jBgwev4Sd2e4AdaRPXGRhtwv1H3vQih59MrvmZLuj1ddALdkGmLt8EjR2X6vRlW4DV 09dMUTUwuQk6freHU7GqicbOJEX6uiSrcIvvTXbuTTbtR+6nyGDB40+1+RKU6ahyerEv 3sl8vBkQZ97nKJbwbiG5dOCT9VEnLL5I8A3m0t1+NsDL8b5MU0ppeAxQpMpeVPEop/rC BwV9DzozI8LCWs8DgUJtB84QpDT8qfBQ3i0j4pB6bGZRBzruCG4WjbZ06BcB1pLmXGDD iWNlJbb/Ys3tLvykQ8mhyN1iIO3srCrUi5L9yiRhInuGM+zhjxfjWSfcXvP/HGrN7KkE 9dEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=YNSyajIqAw7u/zHWR+XZWBgenw92tdvvpd0FD5K+O+A=; fh=TZFQVuyX/dtLxQJhVF4l6vmT+RWcLxefmHQ9n+zF3XI=; b=gD46YziUz0LkWCcOXYYee1YZq2AtNTGM7/96tMx43T9RWmPb4Btjy/sIABifsVzdgo 8i8SGEfGcNMeJQ9WvVv1nCiwEoj54QHJ+FvHa3ZG30qPRLhfwZYWQvTLzNaYyU8wsZcB lA5qtdBiG+RbqPh+JGh58Ycx5z8FLZxFmoUXYa7xXCUdg4lyMWalntmOQeGgi7hZ+XO6 JnTFV3EIeA12u+XwkFK828isLk6Ts3dDZK8iBwHXAnWssyvk9LC0DIywNZRoIfWcYMQp 0NlKjLwlIgtKXRpDzHq2FFog8nSqGOK29XwEIbgL23EgBMLarYR7MXpUILMcdGPwVzSe 5CzQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779110548; x=1779715348; darn=lists.postgresql.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=YNSyajIqAw7u/zHWR+XZWBgenw92tdvvpd0FD5K+O+A=; b=GOVpo0QDR7SzZspqMYo9A9tM0UjlRAZbrUdAH7ZPgFyh5X/Me/FUBN1Ui7QV1PpTnZ dmzN00u/4fNX0x5Ck9OkhrwMeHsiyqpQdznp+ndsLjyH/iq7rfUxmgdMFRWh+EFp4Vhw U0gm6Z/jX4QktDnxjJOOadB9+XonaPJhzYv1mzFc3XgcvBtMUltgayavtN0E7l1y/PHe 62y8ncGKpyyV8xMhaIkd8IL7zhzv3hAv+Y9sv2T1eRsFBtKGVl8GvIJczqDFx6sFsRgD LM3wImKALPoImeLPSKeUMMRTzBshowkaAD1Gz7mFqC1RijbQFu1qu/CXL9ch2Oi9lrtC adPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779110548; x=1779715348; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=YNSyajIqAw7u/zHWR+XZWBgenw92tdvvpd0FD5K+O+A=; b=D1I29jTGsdaTlvOXFKkS0sorWuUWsy0pwMtdeW/woL7AE/W5WJ57c7UNipvO32RdI3 yBgfp4ACWQ5OufalAXBtBc+APWkLWG8KWOqdUV998Ls2phdPueuz1r5EfJkHUdTA1cN4 IU8mm4d2LhqFZOE6By76GUP5NOaRko4NxjNAFGPckSWQaTXIHKhpvduq7KTilieNWZX8 If6PQIIAJjNHWs/cpv/a4CE3E8saZi6BUhGrkJAPSbnRuYAdyfySf97cVjVjeP5F1pKj TmyIlGJ7wl2oG7m0LAOqWaFDFydIKnMaIl/2R2uUxpEByCGGi+PN5H65DhaEUkDweg7n f7Nw== X-Forwarded-Encrypted: i=1; AFNElJ9t081gWuhEraCPBWIlypgBcTelKQHEH3kAYSKnAVqVQJP4GFo38CJRlrcqsJeAqQRXl7Tl9I94y3sBlrMZ@lists.postgresql.org X-Gm-Message-State: AOJu0YzlKqHwJC90wXcvOzoc8t5W2LN5bDkGbXxvFLB5WlTQLPGoK/jD 9Qg+HejA9mf3zd3qYGEP5Oal7h9WEydlu4dAOAit1CFigdq54VkxK8pUxSeyNKGglGa7jLuCKmk 9lRRe6O8EMkgvgYJAUb1x7yiFi9LWRB4= X-Gm-Gg: Acq92OGP6p8qqSessUTQVE5WFD7nfwdHO25hzs0NaOFBlu+P7xtqZsIQYGZ+66qOTzU YbDvIKlKxPPVXe0gqPfwkSaUmUx68Mu8Ekyru154j1XbR3T/PamHOJNXBufieb6Xd6JuMfaq5+I gO+nVCToPxz18jXx0QI5SmQKir9/+V3Hp7LggoqluWDiec0fO2zKdgzUYFvQ1886FbuqyYplIrq Qt2G6XEv7haIiV92F8+txTZF6xOXHgf30LW9ALjsFuNDyUtG9xjFd2LG5SpGjaFw6QZA3Z8ug+4 fzP7tDk0eTjhpR2PDAmmRo9Rjep/wg+s00bAuyd+vg== X-Received: by 2002:a05:6820:f006:b0:67b:c7a0:e4fa with SMTP id 006d021491bc7-69c9429453amr9040181eaf.4.1779110547587; Mon, 18 May 2026 06:22:27 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Fujii Masao Date: Mon, 18 May 2026 22:22:13 +0900 X-Gm-Features: AVHnY4Ke53NV5YsfIrjst5aV2wu55Wmpxysg7QOFmMBBK5Iwjc1w7wz9bqYnbIU Message-ID: Subject: Re: COPY FROM ON_ERROR SET_NULL bypasses domain NOT NULL with partial column list To: jian he Cc: SATYANARAYANA NARLAPURAM , PostgreSQL Hackers Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Fri, Apr 17, 2026 at 12:59=E2=80=AFPM jian he wrote: > > On Fri, Apr 17, 2026 at 1:09=E2=80=AFAM SATYANARAYANA NARLAPURAM > 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, --=20 Fujii Masao