I've reviewed patch 0004. It's clear enough and I think does what it's supposed.
One thing, in function signature
+bool (*tuple_is_current) (Relation rel, TupleTableSlot *slot);
there is a Relation agrument, which is unused in both existing heapam method. Also it's unused in OrioleDb implementation of tuple_is_current. For what goal it is needed in the interface?
No other objections around this patch.
I've also looked at 0005-0007. Although it is not a thorough review, they seem to depend on previous patch 0004.
Additionally changes in 0007 looks dependent from 0005. Does replacement of slot inside ExecInsert, that is already used in the code below the call of
>/* insert the tuple normally */
>- table_tuple_insert(resultRelationDesc, slot,
>- estate->es_output_cid,
>- 0, NULL);
could be done without side effects?
Kind regards,
Pavel.