mirror of
https://github.com/postgres/postgres.git
synced 2025-04-27 22:56:53 +03:00
Add INSERT ON CONFLICT test on partitioned tables with transition table
This case was uncovered by existing tests, so breakage went undetected. Make sure it remains stable. Extracted from a larger patch by Author: David Rowley Reviewed-by: Amit Langote Discussion: https://postgr.es/m/CAKJS1f-aGCJ5H7_hiSs5PhWs6Obmj+vGARjGymqH1=o5PcrNnQ@mail.gmail.com
This commit is contained in:
parent
ecfd557956
commit
9079fe60b2
@ -904,4 +904,26 @@ select * from parted_conflict order by a;
|
|||||||
50 | cincuenta | 2
|
50 | cincuenta | 2
|
||||||
(1 row)
|
(1 row)
|
||||||
|
|
||||||
|
-- test with statement level triggers
|
||||||
|
create or replace function parted_conflict_update_func() returns trigger as $$
|
||||||
|
declare
|
||||||
|
r record;
|
||||||
|
begin
|
||||||
|
for r in select * from inserted loop
|
||||||
|
raise notice 'a = %, b = %, c = %', r.a, r.b, r.c;
|
||||||
|
end loop;
|
||||||
|
return new;
|
||||||
|
end;
|
||||||
|
$$ language plpgsql;
|
||||||
|
create trigger parted_conflict_update
|
||||||
|
after update on parted_conflict
|
||||||
|
referencing new table as inserted
|
||||||
|
for each statement
|
||||||
|
execute procedure parted_conflict_update_func();
|
||||||
|
truncate parted_conflict;
|
||||||
|
insert into parted_conflict values (0, 'cero', 1);
|
||||||
|
insert into parted_conflict values(0, 'cero', 1)
|
||||||
|
on conflict (a,b) do update set c = parted_conflict.c + 1;
|
||||||
|
NOTICE: a = 0, b = cero, c = 2
|
||||||
drop table parted_conflict;
|
drop table parted_conflict;
|
||||||
|
drop function parted_conflict_update_func();
|
||||||
|
@ -576,4 +576,30 @@ insert into parted_conflict values (50, 'cincuenta', 2)
|
|||||||
-- should see (50, 'cincuenta', 2)
|
-- should see (50, 'cincuenta', 2)
|
||||||
select * from parted_conflict order by a;
|
select * from parted_conflict order by a;
|
||||||
|
|
||||||
|
-- test with statement level triggers
|
||||||
|
create or replace function parted_conflict_update_func() returns trigger as $$
|
||||||
|
declare
|
||||||
|
r record;
|
||||||
|
begin
|
||||||
|
for r in select * from inserted loop
|
||||||
|
raise notice 'a = %, b = %, c = %', r.a, r.b, r.c;
|
||||||
|
end loop;
|
||||||
|
return new;
|
||||||
|
end;
|
||||||
|
$$ language plpgsql;
|
||||||
|
|
||||||
|
create trigger parted_conflict_update
|
||||||
|
after update on parted_conflict
|
||||||
|
referencing new table as inserted
|
||||||
|
for each statement
|
||||||
|
execute procedure parted_conflict_update_func();
|
||||||
|
|
||||||
|
truncate parted_conflict;
|
||||||
|
|
||||||
|
insert into parted_conflict values (0, 'cero', 1);
|
||||||
|
|
||||||
|
insert into parted_conflict values(0, 'cero', 1)
|
||||||
|
on conflict (a,b) do update set c = parted_conflict.c + 1;
|
||||||
|
|
||||||
drop table parted_conflict;
|
drop table parted_conflict;
|
||||||
|
drop function parted_conflict_update_func();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user