Hi Sawada San, I have a couple of comments on "v27-0002-Support-atomic-commit-among-multiple-foreign-ser.patch"
1- As part of the XLogReadRecord refactoring commit the signature of XLogReadRecord was changed, so the function call to XLogReadRecord() needs a small adjustment. i.e. In function XlogReadFdwXactData(XLogRecPtr lsn, char **buf, int *len) ... - record = XLogReadRecord(xlogreader, lsn, &errormsg); + XLogBeginRead(xlogreader, lsn) + record = XLogReadRecord(xlogreader, &errormsg); 2- In register_fdwxact(..) function you are setting the XACT_FLAGS_FDWNOPREPARE transaction flag when the register request comes in for foreign server that does not support two-phase commit regardless of the value of 'bool modified' argument. And later in the PreCommit_FdwXacts() you just error out when "foreign_twophase_commit" is set to 'required' only by looking at the XACT_FLAGS_FDWNOPREPARE flag. which I think is not correct. Since there is a possibility that the transaction might have only read from the foreign servers (not capable of handling transactions or two-phase commit) and all other servers where we require to do atomic commit are capable enough of doing so. If I am not missing something obvious here, then IMHO the XACT_FLAGS_FDWNOPREPARE flag should only be set when the transaction management/two-phase functionality is not available and "modified" argument is true in register_fdwxact() Thanks Best regards Muhammad Usama Highgo Software (Canada/China/Pakistan) The new status of this patch is: Waiting on Author