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 1wC9PK-001i7d-1C for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Apr 2026 05:00:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wC9PH-004jQh-1q for pgsql-hackers@arkaria.postgresql.org; Mon, 13 Apr 2026 05:00:20 +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 1wC9PH-004jQZ-0s for pgsql-hackers@lists.postgresql.org; Mon, 13 Apr 2026 05:00:20 +0000 Received: from mail-qk1-x732.google.com ([2607:f8b0:4864:20::732]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wC9PF-00000000mSd-3pa4 for pgsql-hackers@postgresql.org; Mon, 13 Apr 2026 05:00:19 +0000 Received: by mail-qk1-x732.google.com with SMTP id af79cd13be357-8d933da14f0so436379285a.2 for ; Sun, 12 Apr 2026 22:00:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776056415; cv=none; d=google.com; s=arc-20240605; b=Pdj1b31fRF1bYDS5/HBFtI24rqLukFxAUv4gY7YUuZPwzMyOCbHaWFaoxXkeXuZExM iBWTaYIBMZiT2AcZGwa+2DgZuHIP8CykGK3CI7PKzkRTk7BTh91imC9lwrxGJNY32k8u 8pXfmgajSPZyAhHMIBSn1qM36ESRiXIV2kIdsx812zWXjOK153jqCwvmiKfRLneuyEjW EpbawBJlP5DKflJ7SS6N+GienXUTGgegcM8Zphilj+OcwCmQ+NX8ZsRO9PL/wnKorZYM sJIb1xOJQTlmikSos+NvfZT0M6dzYkoqRMmo0CTktstI5r4vCVYrXpyKNNnlTi2Hal71 PY0A== 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=BVjX0M0xsnwcCqtnZaevyIH0RYbOgzb1zGmga9VvH00=; fh=lXsrIfQmoV/vBWgETkjvSmc9ozHP6WKVZmpA6+BSdAA=; b=OmUdBGbco6zVVm10nK0W1KrnVSW/eIL32kOxit5SawwSfgSxsAv92lhlaRlYoLzfRE E6FoLpvuRALvTqCSp7bJFWWiC4P4uphyiyTrWn2gcqWijDvVcR/jUQhkZOfais9hmd7n yvfItiU4I8gSiYy26vMj7l2gUtBrIDEpniADcdJk1bi4XrPrnjsDQS5KJI+JZ8zC3m9o fOqo2YFzjbQHO6MHwpzjAModszP5iEWe+KHrUX4MD6cUzhNf+c6+K9XAZ8FkpJFcUxbJ NDfLY3YSJ3cg9uJR2RHgewz09VC/ETew843H7w15hkVX/A51QEwi7Pg2xAfzdN3CqstX nSsQ==; 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=1776056415; x=1776661215; 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=BVjX0M0xsnwcCqtnZaevyIH0RYbOgzb1zGmga9VvH00=; b=Ddx1ZHFyUAE6kAIzwzP0ngbJ/unwb4iNzZNCxr8o0wB/JY1wWNWakiAe0z5h7gxLg+ FkzLFcLQ3rIkEe6+ZLW3Y1Ut7TQIaW2hMr2uQ3uTI5CO/f3Vl8u+wVxGHo4F3NqWJnDU YWMJ8FDeIopALExvMiwbiN7phJ7UrHK+q94+jGGHmBKMijZomrIcT0U6jL4DhgAXWObI K72S0eBGyd12+K686Y6AS/LoYNrK49er1N4JYeUVZUknKJIfIwxbnwN/aJflThfaXD56 d8W0H5ajLdvX2/JEfmicNWY9lMhTrKL/fQ2xCmEqmdzdMUGWVh/voG1xF0LKpp82FmDe HfCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776056415; x=1776661215; 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=BVjX0M0xsnwcCqtnZaevyIH0RYbOgzb1zGmga9VvH00=; b=ZKq+fmlz5bYQU6DzWLJYgufPAjHr3yiVvs4xngnmhhP9p7VTUP/fspegBBkQHFw24L 12QNPmbl/87HSwaOzfMxcjThbUuHzfaQBkZShdpHhN+MJ7F/1hi1rbGlWFObmg6V6Q0F KLO4XlTqdusvjAYZuqXlKR7Xlk73oT1zr7O2iuBMY/zyrV0wm+T0WYRjsLVzHt3kB6Wb xgN6miVx/pLY9j7dx2Y6xIIZsKqhyDzHCaaQfKcGfHBjL5D1u1IiLxCQVaGDyEzroBka d4e/T+/L3gDCj2JJa8Vf5OfpbsCfDdEC+SDThliPkQq/wzm1uR0urI1Q8EmWzrqvHfQr RI3w== X-Gm-Message-State: AOJu0Yxp8qd+BLnkpOF/7Olkk2+U/AMFgpxv2S2InAx3nXc2Mhx/HT8D TCbVWRCHTWv4HladDB/1kMEYi5iSDbSXg8T4iafes3H+h0L/pSaIqeji1w7HmtxXlBkCzMQN/Jx UrxQC+X8NBAxf3IlgTbtciMSu1J9ippg= X-Gm-Gg: AeBDiesVV3BcLW++sHuSDa0IvKRXig0HWHVYJJzy1MOYQta8Lq12hQIs12OQ33ndfRJ kYzMhg7zzjlweRIwnvXlWgzQT/40FwX0il/Z5o6aHFwlRLabrVUI8ZiACDFnYrYbJIFbFETF1KW VO/R1VYQKxPShIfc/KXwlIBK8+yE+/4c58qYP9c2NsigXUeESXuwWD6cJ/0mrMxf3N3PxwRJrfD 9jN0zZwRBJ7i61i0VIoTikMEqJJNLEnPQ8OjZwIoQK0PlWOorEsSzBC2UdTqjfcU3L+l/9B/awy S5o1++5FEPDrAifqmc9W5Cs5rlGJMn3TblSa5cMofRl/vQZw8Oxo6crKDtX2z+9nCDqTPxLPzcU gduAgiQ== X-Received: by 2002:a05:622a:5e88:b0:50d:844f:3b34 with SMTP id d75a77b69052e-50dd5bc41ffmr176658321cf.51.1776056414654; Sun, 12 Apr 2026 22:00:14 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Kirill Reshke Date: Mon, 13 Apr 2026 10:00:03 +0500 X-Gm-Features: AQROBzAW1omXEyNs69vlT3YDKzmIIhqlfagRv-ir6P20ThN7CmtKAz7rmDWW2dE Message-ID: Subject: Re: DELETE/UPDATE FOR PORTION OF with rule system is not working To: jian he Cc: PostgreSQL-development , Paul A Jungwirth , Peter Eisentraut Content-Type: text/plain; charset="UTF-8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Mon, 13 Apr 2026 at 06:45, jian he wrote: > > Hi. > > https://git.postgresql.org/cgit/postgresql.git/commit/?id=8e72d914c52876525a90b28444453de8085c866f > DELETE/UPDATE FOR PORTION OF with rule system is not working, and > there are no RULE related regession tests. Thanks! +cc Paul & Peter as authors of [0] > in gram.y, RuleStmt, RuleActionList, RuleActionStmt > RuleActionStmt: > SelectStmt > | InsertStmt > | UpdateStmt > | DeleteStmt > | NotifyStmt > ; > > So far, I found 2 errors, and one crash. > There might be more bugs, I didn't try all the cases. > > drop table if exists fpo_rule; > create table fpo_rule (f1 bigint, f2 int4range); > INSERT INTO fpo_rule values (1, '[1, 10]'); > CREATE RULE rule3 AS ON INSERT TO fpo_rule DO INSTEAD UPDATE fpo_rule > FOR PORTION OF f2 FROM 1 to 4 SET F1 = 2; > > INSERT INTO fpo_rule values (2, '[2, 12]'); > ERROR: range types do not match > \errverbose > ERROR: XX000: range types do not match > LOCATION: range_minus_multi, rangetypes.c:1260 > > CREATE RULE rule4 AS ON DELETE TO fpo_rule DO INSTEAD UPDATE fpo_rule > FOR PORTION OF f2 FROM 1 to 4 SET F1 = 2; > DELETE FROM fpo_rule; > ERROR: no relation entry for relid 3 > \errverbose > ERROR: XX000: no relation entry for relid 3 > LOCATION: find_base_rel, relnode.c:556 > > DROP RULE rule4 ON fpo_rule; > CREATE RULE rule5 AS ON UPDATE TO fpo_rule DO INSTEAD DELETE FROM > fpo_rule FOR PORTION OF f2 FROM 1 to 4; > UPDATE fpo_rule FOR PORTION OF f2 FROM 1 to 4 SET F1 = 2; -- server crash > > As of now, we should try to ban CREATE ROLE with UPDATE/DELETE FOR PORTION OF. +1 for banning [0] https://git.postgresql.org/cgit/postgresql.git/commit/?id=8e72d914c52876525a90b28444453de8085c866f -- Best regards, Kirill Reshke