Hello, hackers
we witnessed this slightly misleading error in production and it took us a while to figure out what was taking place.
Below are reproduction steps:
-- setup
create table trun(cate int4);
-- session 1
begin;
truncate table trun;
-- session 2
grant insert on table trun to postgres;
-- session 1
end;
-- session 2:
ERROR: XX000: tuple concurrently updated
LOCATION: simple_heap_update, heapam.c:4474
Apparently the tuple in question is the pg_class entry of the table being truncated. I didn't look too deep into the cause, but I'm certain the error message could be improved at least.
Regards,
Nick.