In postgres_fdw, pgfdw_xact_callback() and pgfdw_subxact_callback() do almost the same thing to rollback remote toplevel- and sub-transaction. But their such rollback logics are implemented separately and in different way. Which would decrease the readability and maintainability, I think. So how about making the common function so that those callback functions can just use it? Patch attached.
Regards,
-- Fujii Masao Advanced Computing Technology Center Research and Development Headquarters NTT DATA CORPORATION