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.98.2) (envelope-from ) id 1xM8SI-00000001sHx-3Lqw for pgsql-hackers@arkaria.postgresql.org; Wed, 28 Oct 2026 18:32:59 +0000 Received: from localhost ([127.0.0.1]:51018 helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1xM8SF-00000000EfV-3QHy for pgsql-hackers@arkaria.postgresql.org; Wed, 28 Oct 2026 18:32:55 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]:36146) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1xM8SF-00000000EfN-1Q3x for pgsql-hackers@lists.postgresql.org; Wed, 28 Oct 2026 18:32:55 +0000 Received: from mail-vs1-xe36.google.com ([2607:f8b0:4864:20::e36]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1xM8SD-00000001P6X-0jcN for pgsql-hackers@lists.postgresql.org; Wed, 28 Oct 2026 18:32:54 +0000 Received: by mail-vs1-xe36.google.com with SMTP id ada2fe7eead31-7cc1848192fso97422137.1 for ; Wed, 28 Oct 2026 11:32:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20260707; t=1793212372; x=1793817172; darn=lists.postgresql.org; h=content-type:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to :content-type; bh=5QPB7e/sNG5ldUVvVMnFggfYN+b7+Sgd7fCI4rWid6Q=; b=VaduxaGYgVwsBbNP9bJgfbj2I9+jljeg2kJUGR6e8zEDDPfXhyHfBuHTjrmrnC1ZXc LYSek521HzL+DDsDzP6m2+ioQAIISmCfzTq16aDdVBSDjZKFEdYXoqrLR8u2GcGNMhWY 3PLkfnrwF0Eo84k5LIH+CrPXeSqRyjyot+KKXk7xUmm6DLgNC0EH6eUBV8qPJbjWahwh KQ+EFlOzE1gl9+7AAyKHHCDbQbi7UO6InIcVtgIzMLQi8Lbtt9hKhWnI9L9D183LieVn /ZkEO/DO27E5MiEETthnHwnEVSNEyMtln8JeLZrilENZZsKB0dzA/0V9VzTgR4n+dOxL QZZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1793212372; x=1793817172; h=content-type:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=5QPB7e/sNG5ldUVvVMnFggfYN+b7+Sgd7fCI4rWid6Q=; b=qyJW6qxc42ozRcUKY9JtjEPBs0+pNHLIbG8V5fg4nhYycuRdkBQpk0hcHjdXn2KsAX oTAmlMJGfigLc1354NDh/ttWdW6yNcpsYTbkkNbGyjd0nrDN/Zpk+HbhcJNd8TLdcGsz OxEePPuUcpSVeArXQAeZIsFlKfkoVODqD4G5o4YU9JwjiPcurAINj+4p57qoxzlQO+Fl AkfrXcBBl6PcYN+oim8JzlCll/M0t9BbHPh112ZSPdfkkQ997lMuYCfAJk0Keo9uRJOa 53Se3H1VDW5D90tBNm+1nul/XSKgaQ/7KQET7kD6mLi8ZXCFnAvtygXI0fe2x4SGHEyD xHLQ== X-Forwarded-Encrypted: i=1; AKwUvBxtWJK/4iT/TJNeeBbIDjEbk+KAEape7OvSL76GEHkwrsFBulsgXO7/ewbdIKtBRJ1den1CsWLN8+PJYXpC@lists.postgresql.org X-Gm-Message-State: AFq9FYLs6YaT+IMFMpVw9oV8B99/vbzvtx1/LQpakbPiVCtA2+vHqvPv wdeDuqtm1b64kmni6qnZaX8X0JZVIrCLQbEoOXrgJfHkh6w0BmVfEs+N X-Gm-Gg: AYBFou2ZIziJyeyPvQ+ODOVNjTO3B8Ig74vn6pWE1euIDbCLlFF7cmySvEoj8seplAZ 98TNN7TIJx91cLYP4uVzFyPYuJn2ndjtkXr3ufVk22BVYDVZZRrxx4HX++CeGJ0ayohOUAQRz8w c+BvAS29EAzy5iqZU8O3YsC0uXEgKpKaB8FUu0RhvpxMTRRskQi7X9YF6CRPsA4Vb78hyhSG6xF HIgcTd80GRlmkfOvSEyrbpqWl3j+JxpCi7ggxLAHjScHyBVX+USmGqJx8Xg4chksdXnLftSMExK CkddK9f97dmZbD2cS/nbfyv6qjDd3FCjoZLuvGx312pk4x/Q2+3N2zUDVEDBIFIHkISw/Av8ofe PkIxlB2RiSEBidFFwneG9mQNCLQL5nAccDYM4yAyiLSQ/SDTy1C+YpgAsofbryFjHV9HXlNfwcq NEeLIeRfrmUgZJc1ydt2Jk0DNm9COUeMstEa34jCbMuO0wULVBw/jRQHmGe9AQG2/iOexCo70bJ wmXohCrzTctnmChlW+PuJWPiwe0eq3Uxx9JoyNoJmPIMmnI/A1QGeBvj3B5sUVBg9yp3nX3WF2z zxUwfPi9zBiafQBRXWiokwd9CKThN+q810JoCeHPptRk/vPzefnX3pTbH5TrA+pbU4H1nbnxo+P pVhDNbermySmRScr+fuGTau7x//wXwnKnTcnwBlcUHAX5TzsGQ8EaPWht X-Received: by 2002:a05:6122:6b8c:20b0:5e6:589b:eeec with SMTP id 71dfb90a1353d-5ec4cca16b1mr1650201e0c.5.1793212372095; Wed, 28 Oct 2026 11:32:52 -0700 (PDT) Received: from 192.168.1.109 ([2803:3c90:cee:ea00:5c3c:7e70:29e3:7a55]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-5ec4f9855c3sm2516139e0c.14.2026.10.28.11.32.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Oct 2026 11:32:51 -0700 (PDT) From: Manu To: Jakub Wartak Cc: Ajit Awekar , Etsuro Fujita , Michael Paquier , shihao zhong , Nikita Malakhov , Jehan-Guillaume de Rorthais , pgsql-hackers@lists.postgresql.org, rhaas@postgresql.org Subject: Re: [(known) BUG] DELETE/UPDATE more than one row in partitioned foreign table Date: Wed, 28 Oct 2026 15:32:44 -0300 Message-ID: <179321236488.520440.320467809486544701@gmail.com> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============4290415659036867496==" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --===============4290415659036867496== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Hi Jakub, On Wed, Oct 28, 2026 at 10:12 AM Jakub Wartak wrote: > postgres=# DELETE FROM fbig WHERE fbig.* IS NULL AND random() <= 1; > ERROR: attribute 3 of type record has wrong type Confirmed with V4 on master 126976a8ffc and fcfd2456078, and V3 already had it; master gives no error. A DELETE whose local qual uses the whole row fails the same way without random() and on a foreign partition. UPDATE works on a plain foreign table, but on a foreign partition it fails with "record type has not been registered". The ForeignScan's fdw_scan_tlist gets two whole-row entries, one typed fbig and one RECORD: normalize_wholerow_vartype() retypes the qual's Var (postgres_fdw.c:1515 with V4), so it no longer equal()s the one from the reltarget and is appended (:1538). setrefs.c matches on varno/varattno only and takes the first, the fbig one. The comment at :1507 assumes core's RECORD Var is already there, which is true only for UPDATE or with row DELETE triggers; with an AFTER DELETE row trigger the RECORD entry comes first and the DELETE on the plain foreign table works (on the partition it then fails like UPDATE). Ajit, I'll set the entry to Ready for Committer once v5 covers this and passes the eight cases plus the attached case_i_whole_row.sql.txt. Regards, Manu --===============4290415659036867496== Content-Type: text/plain Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="case_i_whole_row.sql.txt" MIME-Version: 1.0 LS0gQ2FzZSBpOiB3aG9sZS1yb3cgcmVmZXJlbmNlIHRvIHRoZSBmb3JlaWduIHRhcmdldCBpbiBh IG5vbi1wdXNoZWQKLS0gVVBEQVRFL0RFTEVURSAoSmFrdWIgV2FydGFrLCAyMDI2LTEwLTI4KS4g IHJhbmRvbSgpIDw9IDEga2VlcHMgdGhlCi0tIFdIRVJFIGNsYXVzZSBsb2NhbCwgc28gdGhlIHNj YW4gbXVzdCByZXR1cm4gdGhlIHdob2xlIHJvdy4KLS0gTmVlZHMgcG9zdGdyZXNfZmR3IGFuZCBh IHNlcnZlciAibG9vcGJhY2siIHBvaW50aW5nIGF0IHRoaXMgZGF0YWJhc2UsCi0tIHNldCB1cCBh cyBpbiBjb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbC4KQ1JFQVRFIFRB QkxFIGJpZyAoaWQgaW50IHByaW1hcnkga2V5LCBhIGludCwgYiB0ZXh0KTsKSU5TRVJUIElOVE8g YmlnIFNFTEVDVCBzLCBzLCAneCd8fHMgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgczsKQU5B TFlaRSBiaWc7CkNSRUFURSBGT1JFSUdOIFRBQkxFIGZiaWcgKGlkIGludCwgYSBpbnQsIGIgdGV4 dCkKICAgU0VSVkVSIGxvb3BiYWNrIE9QVElPTlMgKHRhYmxlX25hbWUgJ2JpZycpOwoKLS0gaTE6 IEpha3ViJ3Mgc3RhdGVtZW50CkVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKREVMRVRFIEZS T00gZmJpZyBXSEVSRSBmYmlnLiogSVMgTlVMTCBBTkQgcmFuZG9tKCkgPD0gMTsKREVMRVRFIEZS T00gZmJpZyBXSEVSRSBmYmlnLiogSVMgTlVMTCBBTkQgcmFuZG9tKCkgPD0gMTsKLS0gaTI6IHNh bWUgd2l0aCBST1coLi4uKSBpbnN0ZWFkIG9mIGZiaWcuKgpERUxFVEUgRlJPTSBmYmlnIFdIRVJF IFJPVyhpZCwgYSwgYikgSVMgTlVMTCBBTkQgcmFuZG9tKCkgPD0gMTsKLS0gaTM6IFVQREFURQpF WFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpClVQREFURSBmYmlnIFNFVCBhID0gLWEgV0hFUkUg ZmJpZy4qIElTIE5VTEwgQU5EIHJhbmRvbSgpIDw9IDE7ClVQREFURSBmYmlnIFNFVCBhID0gLWEg V0hFUkUgZmJpZy4qIElTIE5VTEwgQU5EIHJhbmRvbSgpIDw9IDE7Ci0tIGk0OiByb3dzIHRoYXQg ZG8gbWF0Y2g6IG9uZSByb3cgbXVzdCBjaGFuZ2UsIG5vIG90aGVyCi0tIChyZWFkIHRocm91Z2gg dGhlIEZEVzogdGhlIGxvb3BiYWNrJ3MgcmVtb3RlIHRyYW5zYWN0aW9uIGlzIG5vdAotLSB2aXNp YmxlIHRvIGEgbG9jYWwgU0VMRUNUIG9uIGJpZyB1bnRpbCBjb21taXQpCkJFR0lOOwpERUxFVEUg RlJPTSBmYmlnIFdIRVJFIGZiaWcuKiBJUyBOT1QgTlVMTCBBTkQgaWQgPSAyIEFORCByYW5kb20o KSA8PSAxOwpTRUxFQ1QgKiBGUk9NIGZiaWcgV0hFUkUgaWQgPD0gMyBPUkRFUiBCWSBpZDsKUk9M TEJBQ0s7CkJFR0lOOwpVUERBVEUgZmJpZyBTRVQgYSA9IC1hIFdIRVJFIGZiaWcgSVMgTk9UIE5V TEwgQU5EIGlkID0gMyBBTkQgcmFuZG9tKCkgPD0gMTsKU0VMRUNUICogRlJPTSBmYmlnIFdIRVJF IGlkIDw9IDMgT1JERVIgQlkgaWQ7ClJPTExCQUNLOwotLSBpNTogd2hvbGUgcm93IG9ubHkgaW4g UkVUVVJOSU5HCkJFR0lOOwpVUERBVEUgZmJpZyBTRVQgYSA9IC1hIFdIRVJFIGlkID0gNCBBTkQg cmFuZG9tKCkgPD0gMSBSRVRVUk5JTkcgZmJpZzsKREVMRVRFIEZST00gZmJpZyBXSEVSRSBpZCA9 IDUgQU5EIHJhbmRvbSgpIDw9IDEgUkVUVVJOSU5HIGZiaWc7ClJPTExCQUNLOwotLSBpNjogbm8g cmFuZG9tKCk6IHdob2xlIHJvdyBpbiBXSEVSRQpFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp CkRFTEVURSBGUk9NIGZiaWcgV0hFUkUgZmJpZy4qIElTIE5VTEw7CkRFTEVURSBGUk9NIGZiaWcg V0hFUkUgZmJpZy4qIElTIE5VTEw7CgotLSBpNzogZm9yZWlnbiB0YWJsZSBhcyBhIHBhcnRpdGlv bgpDUkVBVEUgVEFCTEUgcjEgKGlkIGludCBwcmltYXJ5IGtleSwgYSBpbnQsIGIgdGV4dCk7CkNS RUFURSBUQUJMRSByMiAoaWQgaW50IHByaW1hcnkga2V5LCBhIGludCwgYiB0ZXh0KTsKSU5TRVJU IElOVE8gcjEgU0VMRUNUIHMsIHMsICd4J3x8cyBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDUpIHM7 CklOU0VSVCBJTlRPIHIyIFNFTEVDVCBzLCBzLCAneCd8fHMgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo NiwxMCkgczsKQ1JFQVRFIFRBQkxFIHB0IChpZCBpbnQsIGEgaW50LCBiIHRleHQpIFBBUlRJVElP TiBCWSBSQU5HRSAoaWQpOwpDUkVBVEUgRk9SRUlHTiBUQUJMRSBwdDEgUEFSVElUSU9OIE9GIHB0 IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDYpCiAgIFNFUlZFUiBsb29wYmFjayBPUFRJT05TICh0 YWJsZV9uYW1lICdyMScpOwpDUkVBVEUgRk9SRUlHTiBUQUJMRSBwdDIgUEFSVElUSU9OIE9GIHB0 IEZPUiBWQUxVRVMgRlJPTSAoNikgVE8gKDExKQogICBTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAo dGFibGVfbmFtZSAncjInKTsKQU5BTFlaRSBwdDsKRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KQpERUxFVEUgRlJPTSBwdCBXSEVSRSBwdC4qIElTIE5VTEwgQU5EIHJhbmRvbSgpIDw9IDE7CkRF TEVURSBGUk9NIHB0IFdIRVJFIHB0LiogSVMgTlVMTCBBTkQgcmFuZG9tKCkgPD0gMTsKRVhQTEFJ TiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQpVUERBVEUgcHQgU0VUIGEgPSAtYSBXSEVSRSBwdC4qIElT IE5VTEwgQU5EIHJhbmRvbSgpIDw9IDE7ClVQREFURSBwdCBTRVQgYSA9IC1hIFdIRVJFIHB0Liog SVMgTlVMTCBBTkQgcmFuZG9tKCkgPD0gMTsKQkVHSU47CkRFTEVURSBGUk9NIHB0IFdIRVJFIHB0 IElTIE5PVCBOVUxMIEFORCBpZCBJTiAoMiwgNykgQU5EIHJhbmRvbSgpIDw9IDE7ClNFTEVDVCAq IEZST00gcHQgV0hFUkUgaWQgSU4gKDIsIDMsIDcsIDgpIE9SREVSIEJZIGlkOwpST0xMQkFDSzsK QkVHSU47ClVQREFURSBwdCBTRVQgYSA9IC1hIFdIRVJFIHB0IElTIE5PVCBOVUxMIEFORCBpZCBJ TiAoMywgOCkKICAgQU5EIHJhbmRvbSgpIDw9IDEgUkVUVVJOSU5HIHB0OwpTRUxFQ1QgKiBGUk9N IHB0IFdIRVJFIGlkIElOICgyLCAzLCA3LCA4KSBPUkRFUiBCWSBpZDsKUk9MTEJBQ0s7CgotLSBp ODogc2FtZSBERUxFVEVzIG9uY2UgYSByb3cgREVMRVRFIHRyaWdnZXIgZXhpc3RzLCB3aGljaCBt YWtlcyBjb3JlCi0tIGFkZCBpdHMgb3duIFJFQ09SRCB3aG9sZS1yb3cgaWRlbnRpdHkgY29sdW1u IChhcyBpdCBhbHdheXMgZG9lcyBmb3IKLS0gVVBEQVRFKQpDUkVBVEUgRlVOQ1RJT04gdHJpZ19u b29wKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFIHBscGdzcWwKICAgQVMgJCQgQkVHSU4gUkVU VVJOIE9MRDsgRU5EICQkOwpDUkVBVEUgVFJJR0dFUiBmYmlnX2RlbCBBRlRFUiBERUxFVEUgT04g ZmJpZwogICBGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiB0cmlnX25vb3AoKTsKQ1JFQVRF IFRSSUdHRVIgcHQxX2RlbCBBRlRFUiBERUxFVEUgT04gcHQxCiAgIEZPUiBFQUNIIFJPVyBFWEVD VVRFIEZVTkNUSU9OIHRyaWdfbm9vcCgpOwpDUkVBVEUgVFJJR0dFUiBwdDJfZGVsIEFGVEVSIERF TEVURSBPTiBwdDIKICAgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gdHJpZ19ub29wKCk7 CkJFR0lOOwpERUxFVEUgRlJPTSBmYmlnIFdIRVJFIGZiaWcuKiBJUyBOVUxMIEFORCByYW5kb20o KSA8PSAxOwpERUxFVEUgRlJPTSBmYmlnIFdIRVJFIGZiaWcuKiBJUyBOT1QgTlVMTCBBTkQgaWQg PSAyIEFORCByYW5kb20oKSA8PSAxOwpTRUxFQ1QgKiBGUk9NIGZiaWcgV0hFUkUgaWQgPD0gMyBP UkRFUiBCWSBpZDsKUk9MTEJBQ0s7CkRFTEVURSBGUk9NIHB0IFdIRVJFIHB0LiogSVMgTlVMTCBB TkQgcmFuZG9tKCkgPD0gMTsK --===============4290415659036867496==--