+ parentRel = heap_open(parentOid, AccessExclusiveLock); In [2], Amit Langote has given a reason as to why heap_drop_with_catalog() should not heap_open() the parent relation. But this patch still calls heap_open() without giving any counter argument. Also I don't see get_default_partition_oid() using Relation anywhere. If you remove that heap_open() please remove following heap_close().
I think the patch 0004 exactly does what you have said here, i.e. it gets
rid of the heap_open() and heap_close().
The question might be why I kept the patch 0004 a separate one, and the
answer is I wanted to make it easier for review, and also keeping it that
way would make it bit easy to work on a different approach if needed.
About this: "Also I don't see get_default_partition_oid() using Relation anywhere."
The get_default_partition_oid() uses parent relation to retrieve PartitionDesc
from parent.
Kindly let me know if you think I am still missing anything.