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 1wDaMb-0038nN-2K for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Apr 2026 03:59:30 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wDaMa-0082u8-2r for pgsql-hackers@arkaria.postgresql.org; Fri, 17 Apr 2026 03:59:28 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wDaMa-0082u0-1p for pgsql-hackers@lists.postgresql.org; Fri, 17 Apr 2026 03:59:28 +0000 Received: from mail-vs1-xe29.google.com ([2607:f8b0:4864:20::e29]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wDaMY-00000001Zy3-0VLj for pgsql-hackers@lists.postgresql.org; Fri, 17 Apr 2026 03:59:28 +0000 Received: by mail-vs1-xe29.google.com with SMTP id ada2fe7eead31-60591ade110so172698137.1 for ; Thu, 16 Apr 2026 20:59:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776398364; cv=none; d=google.com; s=arc-20240605; b=ktbEisKXtzVMDeZZpMjkTbGj4z5pmxBgijSoWQBB16Bp2TD9cuS+lqrC5HUXnauZ1F RJrJiQVVS0UKCLA1u+MvEfPPU9Q8N1gQeL3EwireZacawN/cDtSv1ZtFV+DekY3Mp6x2 A8R9adpbW/8aSUyi71G7ZT3l0A5Mjcd1Kb6kxy7fBQMDieyuvK1ZdxIy5t5pJ/t+j5wh fprAJJ7/aRvj6dU5lvRMVJAOf7er28tD/acnT9Q/t9ucW8iGcqk6589bYpKxwQuXHzSU K5XYASVSdxc4CtMZ5wCOyVuFw60ybRL7CRGlHhwnOZcXEurRL2KPQPYDIvs/losInTj2 nw3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=yx19IoTY7cSEOnhKZKkSPGsuvRxjFBVte5HGvRRdXaQ=; fh=PDhzRmLFhJQgKl2kpY6iqaoiggk+rKjB8rXL7ERgOws=; b=OtE7BM1c6mDQxKuHnrR+xWynuSH2dZF/zKbBqUS0VuzoAmirH0talxvoDisCB6+1ZB 0/QyuftpV0IrCmAo5qUke4jXMdsJQWQ7MT7QV9YkCwdx7GYMb0GtZfEFKVawYoX9Pe4w aZNRyo2+egggD7Be+4yoQP/CZHIFpd1EXvra/tb0+JbrXr8viPswgXdf8RxZUqhaeFGO YSrC3ZwSWqcT2BHdn3E2NmYM8r8lGKG7ZkNjvWw6cgdpDkYaMQaGBu9Ze2EITANzgEVM 0exl4IxZiGkmv+zQvJQbsD0eezPeUZ11SgWYajNbFhzVCQQ3DTSNtv1Xgi3H69Qy0iXN Mb7g==; 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=1776398364; x=1777003164; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=yx19IoTY7cSEOnhKZKkSPGsuvRxjFBVte5HGvRRdXaQ=; b=kEvgDxMt9KJldnk+MeNbzCFJcZiN1o/yJDudxvcVl8+eoiIBImxc2888bYvQ7mxS0j Ri+ndoIzr4GRidp7rYBL4IdzpVMow7/BhcABeJf3NtPY9j5BV/A9JgGGp3Bbdszd2mO+ lRPqfXsvO5gqRUmKB2NFHqDKQCECQoTNaleZjefd7GbBLr+LjCGemTnZayRJ4j/ISEIH GC6u5fCAmdbN5G7n43uTXpaVDIdRB8a9/dmr2zsqPK92w0qgWGveWUBGt1EeQ7eAA56V p2cmk9XWGK1OpcCL40OTC/HarWgL2CeQI0/lEqZWiZYvFD2NkMKOA8IMv/mySeWUqY3G /EKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776398364; x=1777003164; h=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=yx19IoTY7cSEOnhKZKkSPGsuvRxjFBVte5HGvRRdXaQ=; b=qH2AEo1ETsL+ZvD+Dnx3huLN+KVyoXiFKYfLxgMA040D0L2kmLJVzENffTzgXI3p/p BHIdSo5WNLlw26S9LCKB0LYM7spMIY0ujPPOK6xZf+gHCDQvcRR0o5FQpoTbi9KHJsXw 2RI7L5sclx6DvqAZ1MFW4ueMRrCsArM98mEmwc/QqU3npbNZUVjIbtwXXYTqZVZHfZu3 NKNYX4BBYt1LYVVHHamTyfUyMbrp3fYNuVsZnwbyvVVcMid61gcFpPJQYQGnkMAqXlAs cZ0pGYSZPKJWMKUKBIWeg8yIACfYEaKNd00u/4/8440AjR54QiB6ry0QTiy803nt38hC 8CKA== X-Gm-Message-State: AOJu0YwBbt4Ag16x1eE0wIvxZZY2zTOPk8/OgXPuDogDS9rZ8h3z1D4e azqudndheziSiKMfkxExCeup14arvZiXdChrRxvjdc5XWvdI1P7X/EKsBn+FN4nn+mT25Ne0DO/ IzmUZVj25GJurHtQTfOlKT2wfUP9ggvk= X-Gm-Gg: AeBDieuM75g/tHHrJ5dmmc/vynX60e369jIcIkMd0F5xrtX0ebUU9wNkPXNdEUKcS9f GaQbB5raukp5NLPdzRL/s+x7UX3WceHW/NlccfhZdNNpG6pUgfYlavuP3xGxd8ImMumadVBm8UZ 36vv5TVyEuawVi4TL7U12fgVl6XEW1k10ZhXJkVxI3kGqYx4SHHNuQN6H0JBXj8ONuIEgALrHEH G41AY32kiHwTIExw/5ffDGbpYB+P0uMAlf3hKe5PSk1ay2NFWl2LYYXdJpZCL8ZVbuuQh1sb5xb gx/1l/748xM92UpzwptIJLlIl50STfGlJaqif4T2A0v0EMczhNiJkbg48HylmyQSKoGs6s+8QCj dkmySSpLhrNJbTZKxxrjfRqgKzQy8rpIJMrHnlfnkfl//nyOS4/TTUQGWfJ0+ZC2365HK5Ku/nU ex7DX6IQAogWBjIkQSGdfHmATCsH0XIMJFXWoieZ4pAK4= X-Received: by 2002:a05:6102:14a8:b0:60f:c9ba:b99d with SMTP id ada2fe7eead31-616f772f7e0mr481186137.22.1776398364564; Thu, 16 Apr 2026 20:59:24 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: jian he Date: Fri, 17 Apr 2026 11:58:48 +0800 X-Gm-Features: AQROBzCQaG0w8W6YEVb56bo-9JIDN4oT5K2CrEy-vjuJ-BcXdLdnWOCqsdN5GAA Message-ID: Subject: Re: COPY FROM ON_ERROR SET_NULL bypasses domain NOT NULL with partial column list To: SATYANARAYANA NARLAPURAM Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000800397064f9ff9d5" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000800397064f9ff9d5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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. -- jian https://www.enterprisedb.com/ --000000000000800397064f9ff9d5 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-Fix-COPY-FROM-ON_ERROR-SET_NULL-with-selective-column-list.patch" Content-Disposition: attachment; filename="v2-0001-Fix-COPY-FROM-ON_ERROR-SET_NULL-with-selective-column-list.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mo2doyl10 RnJvbSBkZjdlZDg0NzY5MDcwZGNiNGM0N2I4ZjkwY2JkZjBmM2FjZjRkZGViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMTcgQXByIDIwMjYgMTA6MTk6MTUgKzA4MDAKU3ViamVjdDogW1BBVENIIHYy IDEvMV0gRml4IENPUFkgRlJPTSBPTl9FUlJPUiBTRVRfTlVMTCB3aXRoIHNlbGVjdGl2ZSBjb2x1 bW4KIGxpc3QKCldoZW4gdXNpbmcgQ09QWSBGUk9NIC4uLiBPTl9FUlJPUiBTRVRfTlVMTCB3aXRo IGEgc2VsZWN0aXZlIGNvbHVtbiBsaXN0LCB0aGUKZG9tYWluX3dpdGhfY29uc3RyYWludCBhcnJh eSB3YXMgaW5jb3JyZWN0bHkgYWxsb2NhdGVkIGJhc2VkIG9uIHRoZSBsZW5ndGggb2YKdGhlIHRh cmdldCBjb2x1bW4gbGlzdC4gV2hpbGUgdGhlIGFycmF5IHdhcyBwb3B1bGF0ZWQgc2VxdWVudGlh bGx5LApDb3B5RnJvbVRleHRMaWtlT25lUm93IGF0dGVtcHRlZCB0byBhY2Nlc3MgaXQgdXNpbmcg dGhlIHBoeXNpY2FsIGF0dHJpYnV0ZSBpbmRleAooYXR0bnVtIC0gMSkuClRoaXMgbWlzbWF0Y2gg Y2F1c2VkIG91dC1vZi1ib3VuZHMgcmVhZHMgd2hlbiB0YXJnZXRpbmcgaGlnaC1udW1iZXJlZCBj b2x1bW5zLAphbGxvd2luZyBOVUxMIHZhbHVlcyB0byBieXBhc3MgTk9UIE5VTEwgZG9tYWluIGNo ZWNrcyBhbmQgYmUgc2lsZW50bHkgaW5zZXJ0ZWQuCgpGaXggYnkgYWxsb2NhdGluZyB0aGUgYXJy YXkgdG8gbWF0Y2ggdGhlIHRvdGFsIG51bWJlciBvZiBwaHlzaWNhbCBhdHRyaWJ1dGVzCihudW1f cGh5c19hdHRycykgYW5kIGluZGV4aW5nIHZpYSBhdHRudW0gLSAxLCBicmluZ2luZyBpdCBpbnRv IGFsaWdubWVudCB3aXRoCm90aGVyIHBlci1jb2x1bW4gYXJyYXlzIGluIEJlZ2luQ29weUZyb20u CgpSZXBvcnRlZC1ieTogU0FUWUFOQVJBWUFOQSBOQVJMQVBVUkFNIDxzYXR5YW5hcmxhcHVyYW1A Z21haWwuY29tPgpBdXRob3I6IFNBVFlBTkFSQVlBTkEgTkFSTEFQVVJBTSA8c2F0eWFuYXJsYXB1 cmFtQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IGppYW4gaGUgPGppYW4udW5pdmVyc2FsaXR5QGdt YWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUhnK1FEZGVqMGMwZ1dK aTJGbmJpcnpoZ3p5Wk5QaVR3QzFQNUJfLWRTTkN6cS05MUFAbWFpbC5nbWFpbC5jb20KLS0tCiBz cmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAgICB8IDggKystLS0tLS0KIHNyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0IHwgNCArKysrCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9jb3B5Mi5zcWwgICAgICB8IDQgKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25z KCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHlmcm9tLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCmluZGV4IDY0YWMzMDYz YzYxLi4wMDg3NTg1YjJjNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZy b20uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCkBAIC0xNjM2LDggKzE2 MzYsNiBAQCBCZWdpbkNvcHlGcm9tKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAogCWlmIChjc3RhdGUt Pm9wdHMub25fZXJyb3IgPT0gQ09QWV9PTl9FUlJPUl9TRVRfTlVMTCkKIAl7Ci0JCWludAkJCWF0 dHJfY291bnQgPSBsaXN0X2xlbmd0aChjc3RhdGUtPmF0dG51bWxpc3QpOwotCiAJCS8qCiAJCSAq IFdoZW4gZGF0YSB0eXBlIGNvbnZlcnNpb24gZmFpbHMgYW5kIE9OX0VSUk9SIGlzIFNFVF9OVUxM LCB3ZSBuZWVkCiAJCSAqIGVuc3VyZSB0aGF0IHRoZSBpbnB1dCBjb2x1bW4gYWxsb3cgbnVsbCB2 YWx1ZXMuICBFeGVjQ29uc3RyYWludHMoKQpAQCAtMTY0NiwxNSArMTY0NCwxMyBAQCBCZWdpbkNv cHlGcm9tKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJICogY2hlY2sgbXVzdCBiZSBwZXJmb3JtZWQg ZHVyaW5nIHRoZSBpbml0aWFsIHN0cmluZy10by1kYXR1bQogCQkgKiBjb252ZXJzaW9uIChzZWUg Q29weUZyb21UZXh0TGlrZU9uZVJvdygpKS4KIAkJICovCi0JCWNzdGF0ZS0+ZG9tYWluX3dpdGhf Y29uc3RyYWludCA9IHBhbGxvYzBfYXJyYXkoYm9vbCwgYXR0cl9jb3VudCk7CisJCWNzdGF0ZS0+ ZG9tYWluX3dpdGhfY29uc3RyYWludCA9IHBhbGxvYzBfYXJyYXkoYm9vbCwgbnVtX3BoeXNfYXR0 cnMpOwogCiAJCWZvcmVhY2hfaW50KGF0dG5vLCBjc3RhdGUtPmF0dG51bWxpc3QpCiAJCXsKLQkJ CWludAkJCWkgPSBmb3JlYWNoX2N1cnJlbnRfaW5kZXgoYXR0bm8pOwotCiAJCQlGb3JtX3BnX2F0 dHJpYnV0ZSBhdHQgPSBUdXBsZURlc2NBdHRyKHR1cERlc2MsIGF0dG5vIC0gMSk7CiAKLQkJCWNz dGF0ZS0+ZG9tYWluX3dpdGhfY29uc3RyYWludFtpXSA9IERvbWFpbkhhc0NvbnN0cmFpbnRzKGF0 dC0+YXR0dHlwaWQsIE5VTEwpOworCQkJY3N0YXRlLT5kb21haW5fd2l0aF9jb25zdHJhaW50W2F0 dG5vIC0gMV0gPSBEb21haW5IYXNDb25zdHJhaW50cyhhdHQtPmF0dHR5cGlkLCBOVUxMKTsKIAkJ fQogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb3B5Mi5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dAppbmRleCA3NjAwZTUyMzlkMi4u OTE5ZWFiZDVmNzggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIu b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0CkBAIC04MDUsNiAr ODA1LDEwIEBAIENPUFkgdF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Ig c2V0X251bGwpOyAtLSBmYWlsCiBFUlJPUjogIGRvbWFpbiBkX2ludF9ub3RfbnVsbCBkb2VzIG5v dCBhbGxvdyBudWxsIHZhbHVlcwogREVUQUlMOiAgT05fRVJST1IgU0VUX05VTEwgY2Fubm90IGJl IGFwcGxpZWQgYmVjYXVzZSBjb2x1bW4gImEiIChkb21haW4gZF9pbnRfbm90X251bGwpIGRvZXMg bm90IGFjY2VwdCBudWxsIHZhbHVlcy4KIENPTlRFWFQ6ICBDT1BZIHRfb25fZXJyb3JfbnVsbCwg bGluZSAxLCBjb2x1bW4gYTogbnVsbCBpbnB1dAorQ09QWSB0X29uX2Vycm9yX251bGwoYywgYSkg RlJPTSBTVERJTiBXSVRIIChvbl9lcnJvciBzZXRfbnVsbCk7IC0tIGZhaWwKK0VSUk9SOiAgZG9t YWluIGRfaW50X25vdF9udWxsIGRvZXMgbm90IGFsbG93IG51bGwgdmFsdWVzCitERVRBSUw6ICBP Tl9FUlJPUiBTRVRfTlVMTCBjYW5ub3QgYmUgYXBwbGllZCBiZWNhdXNlIGNvbHVtbiAiYSIgKGRv bWFpbiBkX2ludF9ub3RfbnVsbCkgZG9lcyBub3QgYWNjZXB0IG51bGwgdmFsdWVzLgorQ09OVEVY VDogIENPUFkgdF9vbl9lcnJvcl9udWxsLCBsaW5lIDEsIGNvbHVtbiBhOiBudWxsIGlucHV0CiBD T1BZIHRfb25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF9udWxsKTsg LS0gZmFpbAogRVJST1I6ICBkb21haW4gZF9pbnRfbm90X251bGwgZG9lcyBub3QgYWxsb3cgbnVs bCB2YWx1ZXMKIERFVEFJTDogIE9OX0VSUk9SIFNFVF9OVUxMIGNhbm5vdCBiZSBhcHBsaWVkIGJl Y2F1c2UgY29sdW1uICJhIiAoZG9tYWluIGRfaW50X25vdF9udWxsKSBkb2VzIG5vdCBhY2NlcHQg bnVsbCB2YWx1ZXMuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwKaW5kZXggZTA4MTAxMDk0NzMuLmY4NTM0 OTkwMjFkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsCkBAIC01NTUsNiArNTU1LDEwIEBAIENPUFkg dF9vbl9lcnJvcl9udWxsIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Igc2V0X251bGwpOyAtLSBm YWlsCiBcTgkxMQkxMwogXC4KIAorQ09QWSB0X29uX2Vycm9yX251bGwoYywgYSkgRlJPTSBTVERJ TiBXSVRIIChvbl9lcnJvciBzZXRfbnVsbCk7IC0tIGZhaWwKKzExCVxOCitcLgorCiBDT1BZIHRf b25fZXJyb3JfbnVsbCBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9yIHNldF9udWxsKTsgLS0gZmFp bAogc3MJMTEJMTQKIFwuCi0tIAoyLjM0LjEKCg== --000000000000800397064f9ff9d5--