On Wed, Mar 6, 2024 at 12:07 PM Masahiko Sawada <sawada.m...@gmail.com> wrote: > > On Fri, Mar 1, 2024 at 3:22 PM Peter Smith <smithpb2...@gmail.com> wrote: > > > > On Fri, Mar 1, 2024 at 5:11 PM Masahiko Sawada <sawada.m...@gmail.com> > > wrote: > > > > > ... > > > + /* > > > + * "*" is not accepted as in that case primary will not be able > > > to know > > > + * for which all standbys to wait for. Even if we have physical > > > slots > > > + * info, there is no way to confirm whether there is any standby > > > + * configured for the known physical slots. > > > + */ > > > + if (strcmp(*newval, "*") == 0) > > > + { > > > + GUC_check_errdetail("\"*\" is not accepted for > > > standby_slot_names"); > > > + return false; > > > + } > > > > > > Why only '*' is checked aside from validate_standby_slots()? I think > > > that the doc doesn't mention anything about '*' and '*' cannot be used > > > as a replication slot name. So even if we don't have this check, it > > > might be no problem. > > > > > > > Hi, a while ago I asked this same question. See [1 #28] for the response.. > > Thanks. Quoting the response from the email: > > SplitIdentifierString() does not give error for '*' and '*' can be considered > as valid value which if accepted can mislead user that all the standbys's > slots > are now considered, which is not the case here. So we want to explicitly call > out this case i.e. '*' is not accepted as valid value for standby_slot_names. > > IIUC we're concerned with a case like where the user confused > standby_slot_names values with synchronous_standby_names values. Which > means we would need to keep thath check consistent with available > values of synchronous_standby_names. >
Both have different formats to specify. For example, for synchronous_standby_names we have the following kind of syntax to specify: [FIRST] num_sync ( standby_name [, ...] ) ANY num_sync ( standby_name [, ...] ) standby_name [, ...] I don't think we can have a common check for both of them as the specifications are different. In fact, I don't think we need a special check for '*'. The user will anyway get a WARNING at a later point that the replication slot with that name doesn't exist. -- With Regards, Amit Kapila.