Commit 9079fe60 authored by Alvaro Herrera's avatar Alvaro Herrera

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
parent ecfd5579
...@@ -904,4 +904,26 @@ select * from parted_conflict order by a; ...@@ -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) ...@@ -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();
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment