mirror of
https://github.com/postgres/postgres.git
synced 2025-04-24 10:47:04 +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
|
||||
(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 function parted_conflict_update_func();
|
||||
|
@ -576,4 +576,30 @@ insert into parted_conflict values (50, 'cincuenta', 2)
|
||||
-- should see (50, 'cincuenta', 2)
|
||||
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 function parted_conflict_update_func();
|
||||
|
Loading…
x
Reference in New Issue
Block a user