On Thu, May 28, 2020 at 06:11:39PM +0900, Kyotaro Horiguchi wrote: > Mmm. It is not the proper way to use physical replication and it's > totally accidental that that worked (or even it might be a bug). The > documentation is saying as the follows, as more-or-less the same for > all versions since 9.4. > > https://www.postgresql.org/docs/13/protocol-replication.html
+ if (am_db_walsender) + ereport(ERROR, + (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), + errmsg("cannot initiate physical replication on a logical replication connection"))); I don't agree with this change. The only restriction that we have in place now in walsender.c regarding MyDatabaseId not being set is to prevent the execution of SQL commands. Note that it is possible to start physical replication even if MyDatabaseId is set in a replication connection, so you could break cases that have been valid until now. I think that we actually should be much more careful with the initialization of the WAL reader used in the context of a WAL sender before calling WALRead() and attempting to read a new WAL page. -- Michael
signature.asc
Description: PGP signature