I tried to define two additional callbacks to support CustomScan on readfuncs.c.
First of all, we need to pay attention how to treat output of TextOutCustomScan when additional text output is generated. Only custom-scan provider knows what shall be displayed, so all we can do is invoke a new callback: TextReadCustomScan(). Because private fields shall be displayed next to the common field of CustomScan, this callback is invoked once pg_strtok pointer reached to the last field of CustomScan. Then, custom scan provider allocates CustomScan or a structure embedding CustomScan; only CSP knows exact size to be allocated. It can fetch some tokens using pg_strtok and reconstruct its private fields, but no need to restore the common field because it shall be done by _readCustomScan.
So will the specification of TextReadCustomScan() and
TextOutCustomScan() ensures that they don't access the common
fields (like custom_private or others) of CustomScan?
If they change/overwrite them in some way, then I think _readCustomScan()
won't work because it doesn't take into account that common fields could