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 1wCDAx-001lVx-0L for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Apr 2026 09:01:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wCDAv-005mrT-17 for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Apr 2026 09:01:46 +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 1wCDAu-005mrL-32 for pgsql-hackers@lists.postgresql.org; Mon, 13 Apr 2026 09:01:45 +0000 Received: from mail-vk1-xa30.google.com ([2607:f8b0:4864:20::a30]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wCDAt-00000000lqd-2LPR for pgsql-hackers@postgresql.org; Mon, 13 Apr 2026 09:01:44 +0000 Received: by mail-vk1-xa30.google.com with SMTP id 71dfb90a1353d-56efdc96b05so2785736e0c.1 for ; Mon, 13 Apr 2026 02:01:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776070903; cv=none; d=google.com; s=arc-20240605; b=XK6FCyAZsqWM8LUluZxMTo4JbUeurwx8vLxLSJuIJE5YiKbt7GrkWHi6LLZkjG02ZP EX8GZ3lkjx3b0ElXEPiSnlOXny7/NWyVTyCwo0k91z2yz3Ezd+OZuoRuduceD0hjEDB8 zY1BQsqtoTXKDS5G0cWIEvpW9Sy936uVKTG4PrFNggwtFuhKFV7JDgWExze3mporlrvE HEYrucInYlVD2d2+rLi6hbfR3mYt4L4Xz1COzmPYHvDzqzMG6FTdJD/I5MNY20quobVs mSCWAYGcY0RXoKJ91hshXJvbS7NAGqADO+soaiVtnmui+XsJtw/Ouwwmf67YTRrGUlEA LHRA== 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=rZHPUEOqfd44nKzczV2gIYlmyS49CE9F7mpiIVjVAZY=; fh=sw/21JPvla4sxskv1z2VfgKPv0xOLdvkJvHBEvTYllE=; b=b5ljDCqeNc65DhWLaM/TG1K4yHfwNDL2UqL1E7tVAY0sf6yP7vXU/e4MAY2Byyqgpp +Y9SpW7NvTj9a4jtilKLsyY7qAOMyGWoKPPKxupIdbeyAwCbRAuTESZXjK4KCaV6ofIx xjfgHcQr9j2Ll9hiULANg0iZCNDRxhm7/hg9PVJKsmPqRzMuNnApTqDDNdui6l+CC63s cKg1HiLdx5CF7uYM2t2OopAnIXn1ltvGuXlmDw26WIOeL9z1jnJbf9R4MblWKDQuStY0 JlogXPh9EHlmV5D2XUxTepuILRwiTNMYHqHyqD38PqfrEb72FB2GoRmYRPT/b/KVLFoI kVGg==; darn=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=1776070903; x=1776675703; darn=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=rZHPUEOqfd44nKzczV2gIYlmyS49CE9F7mpiIVjVAZY=; b=XyAdfvJgjqRW63AJ+YyRuQ9Q+7DMNOElbgtL7ZKr6AKzGnBrpH4xsHn+TvWH0rs9iC sray9Kh/ygr6krMATT1PgYVzUnz7ViVL/wlMa1udrnPYsL4pTsvbigyNxtOvvFJP0l3k RK6NpvDVVnDSQH6RCpkYya1ik3FiJeZYJ2Iedkm7bG6x2Jq8Zy92MkexqWrueQmYHCWn qQwf+9Z2CgKyZ7scAj31ZQgZ0zqKJaEMPIN7dV5+wiwbYTy31g7uh/KbPmcuHLFFgyUc YwwjDc1pXlKnTb7Ln72NrdrH9hAfaSO4XleBsDN/yewPM3BwifSsLZe24S72X2XTeiWY as/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776070903; x=1776675703; 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=rZHPUEOqfd44nKzczV2gIYlmyS49CE9F7mpiIVjVAZY=; b=P+8BSt5qapibL8pN1X2J8rTsd1/lGtXFhAkg36u/iT7rAmukWutUpBq21mkrasn5Ih VSxxvBjjmGEZfiIDRbKHq4p1S7xXMxWNIIRZNRqzYS1DBvVCrFcp2gdYjaRZtqTb81mj l/kqbsLkXuKG+sC8xBicomwKyv27Ugu1+yPTlsOtLqBn/sS6nSFl2dLl9gMJw93Hb8f6 s73+QkU8mHYq3zGAyv+FrRtjRWiZQAw5bAeaXtMISPoryPLfSroYjbmzCeqvCh/jnl34 NAKr1RS7B/y7HlEsVAIL/Dx4+rSVPEe48QckYgqAMcCDbLy8RVKnDGRTWz/58OuHf3sm 31UA== X-Gm-Message-State: AOJu0YwOFvw/VHDIPbbIALUkKhuRjAb7Q2ZKzAfPbIe7sabdiO6NFBD5 GxkBMcH4P7hLwp289M8dGpANkcmfqU66SEvKNkvVBWR8TUV491+MoGQcmlQxX+PcyZlGIqEeQUx +EEFPbyuDmIFDNgy83He+G3r7ZCowxhAP3M9EJ8OrpA== X-Gm-Gg: AeBDievBeuowloaAdnd3G4iLqAl5wddka3vdGNNCn5JH818Aa4tagk+Q9hmSqLZlf+v wERpjhPhD4Zv6i0kZou0NNlfWuemNwdQptOIN3jpM4Ryd0A9gQ00g58loOncai2lyj1sCLln7pl Licgi2eei/RmmvtAG3wgIo4OPY+82zyp4F1eh2J6YrTXgnIcly+rsrAVQb2gR+LvXsvtQ/8DkU/ BJyqTcGihDrlfgiKyxuW313Fax2Lx3bjqAlnRxmjntEtQAJD5l/BTctplCkX1P2bfkmuF3RcKgs iX6v2iW6byqgVA/jrrslJTN7ZnSVZdPZQOc2ln/KXjkyaA+PJr+BjmpLGnY/o83YtsjPYhNhobQ 7NhMFDxayXfvuBQpr/sVurklGLmb0PtDMYG2TBXLpFdipKavmXQ2tkY6a7HpUMD0Fc2Z7ffjksF fQZNzw+7uhctobpsPgKvlj X-Received: by 2002:a05:6102:3f12:b0:603:273f:3576 with SMTP id ada2fe7eead31-609ff5cdf82mr5519543137.10.1776070902996; Mon, 13 Apr 2026 02:01:42 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: jian he Date: Mon, 13 Apr 2026 17:01:06 +0800 X-Gm-Features: AQROBzDhFbeDkjBlQKF7p5yuQahBDekFq5tbWjrVNvL3nqtepYNil_OvcNfEoSc Message-ID: Subject: Re: DELETE/UPDATE FOR PORTION OF with rule system is not working To: Kirill Reshke Cc: PostgreSQL-development , Paul A Jungwirth , Peter Eisentraut Content-Type: multipart/mixed; boundary="0000000000004522f5064f53bb15" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004522f5064f53bb15 Content-Type: text/plain; charset="UTF-8" hi. Actually it's supported. The issue mentioned in the first email is caused by: https://git.postgresql.org/cgit/postgresql.git/commit/?id=8e72d914c52876525a90b28444453de8085c866f https://git.postgresql.org/cgit/postgresql.git/diff/src/backend/nodes/nodeFuncs.c?id=8e72d914c52876525a90b28444453de8085c866f --- a/src/backend/nodes/nodeFuncs.c +++ b/src/backend/nodes/nodeFuncs.c @@ -2579,6 +2579,20 @@ expression_tree_walker_impl(Node *node, return true; } break; + case T_ForPortionOfExpr: + { + ForPortionOfExpr *forPortionOf = (ForPortionOfExpr *) node; + + if (WALK(forPortionOf->targetFrom)) + return true; + if (WALK(forPortionOf->targetTo)) + return true; + if (WALK(forPortionOf->targetRange)) + return true; + if (WALK(forPortionOf->overlapsExpr)) + return true; + } + break; We forgot to WALK (expression_tree_walker_impl) ForPortionOfExpr->rangeVar and ForPortionOfExpr->rangeTargetList. We need to WALK those two fields of ForPortionOfExpr in rewriteRuleAction (ChangeVarNodes, ReplaceVarsFromTargetList, etc.), and maybe elsewhere. i am surprised that nothing else has broken because of this. -- jian https://www.enterprisedb.com/ --0000000000004522f5064f53bb15 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0001-fix-DELETE-UPDATE-FOR-PORTION-OF-with-rule.patch" Content-Disposition: attachment; filename="v1-0001-fix-DELETE-UPDATE-FOR-PORTION-OF-with-rule.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnwyq5r90 RnJvbSBhMzc4ZjQ3MTg4NjQwMDgzMWFlZDhjN2RlYjRhZWFhMWE5MjgxMWIyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMTMgQXByIDIwMjYgMTY6NDQ6NDMgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx IDEvMV0gZml4IERFTEVURS9VUERBVEUgRk9SIFBPUlRJT04gT0Ygd2l0aCBydWxlCgpkaXNjdXNz aW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQ0p1ZnhIczFIczAwRXFzWjROYnVBam1Zek16akp5 UDFzQWoxMk5lPWNCc0VWbVFPQUBtYWlsLmdtYWlsLmNvbQpjb21taXRmZXN0IGVudHJ5OiBodHRw czovL2NvbW1pdGZlc3QucG9zdGdyZXNxbC5vcmcvcGF0Y2gvCi0tLQogc3JjL2JhY2tlbmQvbm9k ZXMvbm9kZUZ1bmNzLmMgICAgICAgICAgICAgICAgfCAgNCArKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQgfCA0MCArKysrKysrKysrKysrKysrKysrKwogc3Jj L3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsICAgICAgfCAyMiArKysrKysrKysr KwogMyBmaWxlcyBjaGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpp bmRleCBjMGI4ODBlYzIzMy4uN2VkYmQ1YjcyMjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25v ZGVzL25vZGVGdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCkBAIC0y NTgzLDYgKzI1ODMsOCBAQCBleHByZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwK IAkJCXsKIAkJCQlGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2YgPSAoRm9yUG9ydGlvbk9m RXhwciAqKSBub2RlOwogCisJCQkJaWYgKFdBTEsoZm9yUG9ydGlvbk9mLT5yYW5nZVZhcikpCisJ CQkJCXJldHVybiB0cnVlOwogCQkJCWlmIChXQUxLKGZvclBvcnRpb25PZi0+dGFyZ2V0RnJvbSkp CiAJCQkJCXJldHVybiB0cnVlOwogCQkJCWlmIChXQUxLKGZvclBvcnRpb25PZi0+dGFyZ2V0VG8p KQpAQCAtMjU5MSw2ICsyNTkzLDggQEAgZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUg Km5vZGUsCiAJCQkJCXJldHVybiB0cnVlOwogCQkJCWlmIChXQUxLKGZvclBvcnRpb25PZi0+b3Zl cmxhcHNFeHByKSkKIAkJCQkJcmV0dXJuIHRydWU7CisJCQkJaWYgKFdBTEsoZm9yUG9ydGlvbk9m LT5yYW5nZVRhcmdldExpc3QpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOwog CQljYXNlIFRfUGFydGl0aW9uUHJ1bmVTdGVwT3A6CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvZm9yX3BvcnRpb25fb2Yub3V0CmluZGV4IDMxZjc3MmM3MjNkLi4wOGUwZDk5YTljMyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKQEAgLTIwOTcs NCArMjA5Nyw0NCBAQCBTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgT1JERVIg QlkgaWQsIHZhbGlkX2F0OwogKDQgcm93cykKIAogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRp b25lZDsKKy0tIFVQREFURS9ERUxFVEUgRk9SIFBPUlRJT04gT0Ygd2l0aCBSVUxFcworQ1JFQVRF IFRBQkxFIGZwb19ydWxlIChmMSBiaWdpbnQsIGYyIGludDRyYW5nZSk7CitJTlNFUlQgSU5UTyBm cG9fcnVsZSBWQUxVRVMgKDEsICdbMSwgMTBdJyk7CitDUkVBVEUgUlVMRSBmcG9fcnVsZTEgQVMg T04gSU5TRVJUIFRPIGZwb19ydWxlIERPIElOU1RFQUQgVVBEQVRFIGZwb19ydWxlIEZPUiBQT1JU SU9OIE9GIGYyIEZST00gMSBUTyA0IFNFVCBmMSA9IDI7CitJTlNFUlQgSU5UTyBmcG9fcnVsZSBW QUxVRVMgKDEsICdbMSwgMTBdJyk7CitTRUxFQ1QgKiBGUk9NIGZwb19ydWxlIE9SREVSIEJZIGYx OworIGYxIHwgICBmMiAgIAorLS0tLSstLS0tLS0tLQorICAxIHwgWzQsMTEpCisgIDIgfCBbMSw0 KQorKDIgcm93cykKKworQ1JFQVRFIFJVTEUgZnBvX3J1bGUyIEFTIE9OIElOU0VSVCBUTyBmcG9f cnVsZSBETyBJTlNURUFEIERFTEVURSBGUk9NIGZwb19ydWxlIEZPUiBQT1JUSU9OIE9GIGYyIEZS T00gMSBUTyA0OworSU5TRVJUIElOVE8gZnBvX3J1bGUgVkFMVUVTICgxLCAnWzEsIDEwXScpOwor U0VMRUNUICogRlJPTSBmcG9fcnVsZSBPUkRFUiBCWSBmMTsKKyBmMSB8ICAgZjIgICAKKy0tLS0r LS0tLS0tLS0KKyAgMSB8IFs0LDExKQorKDEgcm93KQorCitDUkVBVEUgUlVMRSBmcG9fcnVsZTMg QVMgT04gREVMRVRFIFRPIGZwb19ydWxlIERPIElOU1RFQUQgVVBEQVRFIGZwb19ydWxlIEZPUiBQ T1JUSU9OIE9GIGYyIEZST00gMSBUTyA4IFNFVCBmMSA9IDI7CitERUxFVEUgRlJPTSBmcG9fcnVs ZSBGT1IgUE9SVElPTiBPRiBmMiBGUk9NIDEgVE8gNTsKK1NFTEVDVCAqIEZST00gZnBvX3J1bGUg T1JERVIgQlkgZjE7CisgZjEgfCAgIGYyICAgCistLS0tKy0tLS0tLS0tCisgIDEgfCBbOCwxMSkK KyAgMiB8IFs0LDgpCisoMiByb3dzKQorCitEUk9QIFJVTEUgZnBvX3J1bGUzIE9OIGZwb19ydWxl OworQ1JFQVRFIFJVTEUgZnBvX3J1bGU0IEFTIE9OIFVQREFURSBUTyBmcG9fcnVsZSBETyBJTlNU RUFEIERFTEVURSBGUk9NIGZwb19ydWxlIEZPUiBQT1JUSU9OIE9GIGYyIEZST00gNiBUTyA5Owor VVBEQVRFIGZwb19ydWxlIEZPUiBQT1JUSU9OIE9GIGYyIEZST00gNCBUTyA5IFNFVCBmMSA9IDEy OworU0VMRUNUICogRlJPTSBmcG9fcnVsZSBPUkRFUiBCWSBmMTsKKyBmMSB8ICAgZjIgICAKKy0t LS0rLS0tLS0tLS0KKyAgMSB8IFs5LDExKQorICAyIHwgWzQsNikKKygyIHJvd3MpCisKK0RST1Ag VEFCTEUgZnBvX3J1bGU7CiBSRVNFVCBkYXRlc3R5bGU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3Jf cG9ydGlvbl9vZi5zcWwKaW5kZXggZDQwNjJhY2YxZDEuLjUzYmZhNzA1ZTM5IDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsCkBAIC0xMzY1LDQgKzEzNjUsMjYgQEAgU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsK IAogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKIAorLS0gVVBEQVRFL0RFTEVURSBG T1IgUE9SVElPTiBPRiB3aXRoIFJVTEVzCitDUkVBVEUgVEFCTEUgZnBvX3J1bGUgKGYxIGJpZ2lu dCwgZjIgaW50NHJhbmdlKTsKK0lOU0VSVCBJTlRPIGZwb19ydWxlIFZBTFVFUyAoMSwgJ1sxLCAx MF0nKTsKKworQ1JFQVRFIFJVTEUgZnBvX3J1bGUxIEFTIE9OIElOU0VSVCBUTyBmcG9fcnVsZSBE TyBJTlNURUFEIFVQREFURSBmcG9fcnVsZSBGT1IgUE9SVElPTiBPRiBmMiBGUk9NIDEgVE8gNCBT RVQgZjEgPSAyOworSU5TRVJUIElOVE8gZnBvX3J1bGUgVkFMVUVTICgxLCAnWzEsIDEwXScpOwor U0VMRUNUICogRlJPTSBmcG9fcnVsZSBPUkRFUiBCWSBmMTsKKworQ1JFQVRFIFJVTEUgZnBvX3J1 bGUyIEFTIE9OIElOU0VSVCBUTyBmcG9fcnVsZSBETyBJTlNURUFEIERFTEVURSBGUk9NIGZwb19y dWxlIEZPUiBQT1JUSU9OIE9GIGYyIEZST00gMSBUTyA0OworSU5TRVJUIElOVE8gZnBvX3J1bGUg VkFMVUVTICgxLCAnWzEsIDEwXScpOworU0VMRUNUICogRlJPTSBmcG9fcnVsZSBPUkRFUiBCWSBm MTsKKworQ1JFQVRFIFJVTEUgZnBvX3J1bGUzIEFTIE9OIERFTEVURSBUTyBmcG9fcnVsZSBETyBJ TlNURUFEIFVQREFURSBmcG9fcnVsZSBGT1IgUE9SVElPTiBPRiBmMiBGUk9NIDEgVE8gOCBTRVQg ZjEgPSAyOworREVMRVRFIEZST00gZnBvX3J1bGUgRk9SIFBPUlRJT04gT0YgZjIgRlJPTSAxIFRP IDU7CitTRUxFQ1QgKiBGUk9NIGZwb19ydWxlIE9SREVSIEJZIGYxOworCitEUk9QIFJVTEUgZnBv X3J1bGUzIE9OIGZwb19ydWxlOworQ1JFQVRFIFJVTEUgZnBvX3J1bGU0IEFTIE9OIFVQREFURSBU TyBmcG9fcnVsZSBETyBJTlNURUFEIERFTEVURSBGUk9NIGZwb19ydWxlIEZPUiBQT1JUSU9OIE9G IGYyIEZST00gNiBUTyA5OworVVBEQVRFIGZwb19ydWxlIEZPUiBQT1JUSU9OIE9GIGYyIEZST00g NCBUTyA5IFNFVCBmMSA9IDEyOworU0VMRUNUICogRlJPTSBmcG9fcnVsZSBPUkRFUiBCWSBmMTsK K0RST1AgVEFCTEUgZnBvX3J1bGU7CisKIFJFU0VUIGRhdGVzdHlsZTsKLS0gCjIuMzQuMQoK --0000000000004522f5064f53bb15--