attached patch allows pg_rewind to work when target timeline was switched. Actually, this patch fixes TODO from pg_rewind comments.
/*
* Trace the history backwards, until we hit the target timeline.
*
* TODO: This assumes that there are no timeline switches on the target
* cluster after the fork.
*/
This patch allows pg_rewind to handle data directory synchronization is much more general way. For instance, user can return promoted standby to old master.
In this patch target timeline history is exposed as global variable. Index in target timeline history is used in function interfaces instead of specifying TLI directly. Thus, SimpleXLogPageRead() can easily start reading XLOGs from next timeline when current timeline ends.
------ Alexander Korotkov Postgres Professional: http://www.postgrespro.com The Russian Postgres Company