On Sun, Jun 23, 2024 at 11:52 AM Noah Misch <n...@leadboat.com> wrote: > > > +static char * > > +create_logical_replication_slot(PGconn *conn, struct LogicalRepInfo > > *dbinfo) > > +{ > > + PQExpBuffer str = createPQExpBuffer(); > > + PGresult *res = NULL; > > + const char *slot_name = dbinfo->replslotname; > > + char *slot_name_esc; > > + char *lsn = NULL; > > + > > + Assert(conn != NULL); > > + > > + pg_log_info("creating the replication slot \"%s\" on database \"%s\"", > > + slot_name, dbinfo->dbname); > > + > > + slot_name_esc = PQescapeLiteral(conn, slot_name, strlen(slot_name)); > > + > > + appendPQExpBuffer(str, > > + "SELECT lsn FROM > > pg_catalog.pg_create_logical_replication_slot(%s, 'pgoutput', false, false, > > false)", > > This is passing twophase=false, but the patch does not mention prepared > transactions. Is the intent to not support workloads containing prepared > transactions? If so, the documentation should say that, and the tool likely > should warn on startup if max_prepared_transactions != 0. >
The other point to note in this regard is that if we don't support two_phase in the beginning during subscription/slot setup, users won't be able to change it as we don't yet support changing it via alter subscription (though the patch to alter two_pc is proposed for PG18). -- With Regards, Amit Kapila.