DELETE/UPDATE FOR PORTION OF with rule system is not working - Mailing list pgsql-hackers

From jian he
Subject DELETE/UPDATE FOR PORTION OF with rule system is not working
Date
Msg-id CACJufxHs1Hs00EqsZ4NbuAjmYzMzjJyP1sAj12Ne=cBsEVmQOA@mail.gmail.com
Whole thread
Responses Re: DELETE/UPDATE FOR PORTION OF with rule system is not working
List pgsql-hackers
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.

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.



--
jian
https://www.enterprisedb.com/



pgsql-hackers by date:

Previous
From: "Shinoda, Noriyoshi (PSD Japan FSI)"
Date:
Subject: RE: [Proposal] Expose internal MultiXact member count function for efficient monitoring
Next
From: SATYANARAYANA NARLAPURAM
Date:
Subject: Bug: Rule actions see wrong values for generated columns (NEW.gen reads OLD value)