Hi Michael, Thank you for the information!
> On Dec 11, 2018, at 9:55 PM, Michael Paquier <mich...@paquier.xyz> wrote: > > Well, the conninfo and slot name accessible to the user are the values > available only once the information of the WAL receiver in shared memory > is ready to be displayed. Relying more on the GUC context has the > advantage to never have in shared memory the original string and only > store the clobbered one, which actually simplifies what's stored in > shared memory because you can entirely remove ready_to_display (I forgot > to remove that in the patch actually). If those parameters become > reloadable, you actually rely only on what the param context has, and > not on what the shared memory context may have or not. I wonder why do we need to have this addition? src/backend/replication/walreceiver.c + memset(walrcv->slotname, 0, NAMEDATALEN); + if (PrimarySlotName) + strlcpy((char *) walrcv->slotname, PrimarySlotName, NAMEDATALEN); src/backend/replication/walreceiver.c 288: PrimaryConnInfo == NULL || PrimaryConnInfo[0] == '\0' 291: errmsg("cannot connect to the primary server as \"primary_conninfo\" is not defined"))); 392: PrimarySlotName && PrimarySlotName[0] != '\0' src/backend/access/transam/xlog.c 11824: * If primary_conninfo is set, launch walreceiver to try 11833: PrimaryConnInfo && strcmp(PrimaryConnInfo, "") != 0 I notice these patterns appear in different places. Maybe it will be better to have a common method such as pg_str_empty()? Regards, Donald Dong