From: Oleksandr Voytsekhovskyy <young.inbox@gmail.com>
To: pgsql-bugs@lists.postgresql.org
Subject: Cascade rules on INSERT wrong behaviour on 16.0
Date: Wed, 31 Jan 2024 14:44:22 +0100
Message-ID: <9753FA5E-5AC8-4446-B335-70A215447026@gmail.com> (raw)
Greetings to all
Here is the Structure:
———————————
CREATE TABLE first (
id uuid DEFAULT gen_random_uuid() PRIMARY KEY
);
CREATE TABLE second (
first_id uuid,
second_id uuid
);
CREATE TABLE third (
second_id uuid
);
CREATE RULE first_insert AS ON INSERT TO first DO ALSO
INSERT INTO second VALUES (NEW.id, gen_random_uuid());
CREATE RULE second_insert AS ON INSERT TO second DO ALSO
INSERT INTO third VALUES (NEW.second_id);
———————————
I am running:
———————————
test=# select version();
version
-----------------------------------------------------------------------------------------------------------------------------------
PostgreSQL 16.0 (Ubuntu 16.0-1.pgdg22.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, 64-bit
test=# insert into first values ('9ea8e702-421c-45d5-842f-a81dc3848022');
INSERT 0 1
test=# select * from second;
first_id | second_id
--------------------------------------+--------------------------------------
9ea8e702-421c-45d5-842f-a81dc3848022 | 8c601583-df70-47fd-b748-7dc4a5bc9f75
(1 row)
test=# select* from third;
second_id
--------------------------------------
848919c7-de3d-4635-bf3a-07d200cb2792
(1 row)
———————————
I expect that values of second_id from the table second and third will be the same, but in fact they are different.
If I do insert directly to second table everything is fine. The issue is happen only when I have a chains from 3+ tables.
If I change 1st rule to trigger the issue will be still there.
Thanks a lot. =
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-bugs@postgresql.org
Cc: young.inbox@gmail.com, pgsql-bugs@lists.postgresql.org
Subject: Re: Cascade rules on INSERT wrong behaviour on 16.0
In-Reply-To: <9753FA5E-5AC8-4446-B335-70A215447026@gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox