Hi,
> I find heapam_relation_copy_data() and index_copy_data() have the following code:
>
> dstrel = smgropen(*newrlocator, rel->rd_backend);
>
> ...
>
> RelationCreateStorage(*newrlocator, rel->rd_rel->relpersistence, true);
>
> The smgropen() is also called by RelationCreateStorage(), why should we call
> smgropen() explicitly here?
>
> I try to remove the smgropen(), and all tests passed.
That's a very good question. Note that the second argument of
smgropen() used to create dstrel changes after applying your patch.
I'm not 100% sure whether this is significant or not.
I added your patch to the nearest open commitfest so that we will not lose it:
https://commitfest.postgresql.org/47/4794/
--
Best regards,
Aleksander Alekseev