Re: Specifying both recovery_target_xid and recovery_target_time

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Specifying both recovery_target_xid and recovery_target_time
Дата
Msg-id 6321.1389195793@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Specifying both recovery_target_xid and recovery_target_time  (Heikki Linnakangas <hlinnakangas@vmware.com>)
Список pgsql-hackers
Heikki Linnakangas <hlinnakangas@vmware.com> writes:
> The docs say:
>> At most one of recovery_target_time, recovery_target_name or recovery_target_xid can be specified

> However, the code actually allows them all to be specified at the same time:

>> else if (strcmp(item->name, "recovery_target_name") == 0)
>> {
>> /*
>> * if recovery_target_xid specified, then this overrides
>> * recovery_target_name
>> */
>> if (recoveryTarget == RECOVERY_TARGET_XID)
>> continue;
>> recoveryTarget = RECOVERY_TARGET_NAME;

> The precedence is XID, time, name.

> I think the documented behavior would make more sense, ie. throw an 
> error if you try to specify multiple targets. Anyone remember if that 
> was intentional? Any objections to change the code to match the docs, in 
> master?

Hm.  I can see potential uses for specifying more than one if the behavior
were "OR", that is stop as soon as any of the specified conditions is
satisfied.

It looks like the actual behavior is to randomly choose one specified
mode and ignore the others, which I concur is bogus.  But maybe we
should try to do something useful instead of just throwing an error.
        regards, tom lane



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Heikki Linnakangas
Дата:
Сообщение: Specifying both recovery_target_xid and recovery_target_time
Следующее
От: Andres Freund
Дата:
Сообщение: Re: Changeset Extraction Interfaces