"Tomas Vondra" <tv@fuzzy.cz> writes:
> 2) Is there any particular reason why PlanForeignModify/BeginForeignModify
> require the fdw_private to be a List*, and not a generic pointer?
That data has to be copiable by copyObject(), which a generic void* is
not. We could perhaps have made it Node* instead, but that would only
work conveniently if there were infrastructure for plugins to create new
first-class Node types; which there isn't. A List is often the easiest
way to transport a few random values from plan time to execution time,
so it seemed best to declare fdw_private that way.
regards, tom lane