We use this code in order to automatically create new partitions for a partitioned table (Postgres 10.6):
begin
insert into <partitioned_table>;
exception when undefined_table then
begin
<create_unexistent_partition>
-- A concurrent txn has created the new partition
exception when others then end;
-- Insert data into the new partition
insert into <partitioned_table>;
end;
end;
As far as I understand we should always have a new partition created either in current or in concurrent transaction but today we faced the problem when we failed to insert data due to a partition nonexistence for a small period of time. Have I missed something?
Thank you.
—
With best regards, Andrei Zhidenkov.