Thanks Zsolt for the review. I have tried to fix most of the edge cases. I added 12 new test cases. The v16 patch is ready for review. Note: Windows-MinGW-Meson builds are failing but not because of this patch.
I can confirm the previous issues fixed, however I also found one more with unique indexes on partitioned tables:
CREATE SCHEMA s; CREATE TABLE s.p (id int, region text) PARTITION BY LIST (region); CREATE TABLE s.p_a PARTITION OF s.p FOR VALUES IN ('a'); CREATE UNIQUE INDEX p_uidx ON s.p (id, region);
SELECT pg_get_table_ddl('s.p', owner => false); -- CREATE TABLE s.p (id integer, region text) PARTITION BY LIST (region); -- CREATE UNIQUE INDEX p_uidx ON s.p USING btree (id, region); -- CREATE TABLE s.p_a PARTITION OF s.p FOR VALUES IN ('a'); -- CREATE UNIQUE INDEX p_a_id_region_idx ON s.p_a USING btree (id, region); -- fails because index already exists