diff --git a/contrib/postgres_fdw/connection.c b/contrib/postgres_fdw/connection.c index 5dacfae6662416a24ac2cc239dfd4bef9bce48f5..be913ecf70157a73b4c57621579feaf699814378 100644 --- a/contrib/postgres_fdw/connection.c +++ b/contrib/postgres_fdw/connection.c @@ -743,17 +743,17 @@ pgfdw_xact_callback(XactEvent event, void *arg) case XACT_EVENT_PRE_PREPARE: /* - * We disallow remote transactions that modified anything, - * since it's not very reasonable to hold them open until - * the prepared transaction is committed. For the moment, - * throw error unconditionally; later we might allow - * read-only cases. Note that the error will cause us to - * come right back here with event == XACT_EVENT_ABORT, so - * we'll clean up the connection state at that point. + * We disallow any remote transactions, since it's not + * very reasonable to hold them open until the prepared + * transaction is committed. For the moment, throw error + * unconditionally; later we might allow read-only cases. + * Note that the error will cause us to come right back + * here with event == XACT_EVENT_ABORT, so we'll clean up + * the connection state at that point. */ ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), - errmsg("cannot prepare a transaction that modified remote tables"))); + errmsg("cannot PREPARE a transaction that has operated on postgres_fdw foreign tables"))); break; case XACT_EVENT_COMMIT: case XACT_EVENT_PREPARE: diff --git a/doc/src/sgml/postgres-fdw.sgml b/doc/src/sgml/postgres-fdw.sgml index ecf3b862f9e4cba2049ada2664741a6f72cdd86c..3733713eef85068b81754b9d53d69ae98847ca13 100644 --- a/doc/src/sgml/postgres-fdw.sgml +++ b/doc/src/sgml/postgres-fdw.sgml @@ -333,6 +333,12 @@ COMMITTED</> local transaction. A future <productname>PostgreSQL</productname> release might modify these rules. </para> + + <para> + Note that it is currently not supported by + <filename>postgres_fdw</filename> to prepare the remote transaction for + two-phase commit. + </para> </sect2> <sect2>