Enable logical slots to follow timeline switches

Alvaro Herrera <alvherre@alvh.no-ip.org>

Commit: 24c5f1a103ce6656a5cb430d9a996c34e61ab2a5
Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
Date: 2016-03-30T23:07:05Z
Releases: 9.6.0
Enable logical slots to follow timeline switches

When decoding from a logical slot, it's necessary for xlog reading to be
able to read xlog from historical (i.e. not current) timelines;
otherwise, decoding fails after failover, because the archives are in
the historical timeline.  This is required to make "failover logical
slots" possible; it currently has no other use, although theoretically
it could be used by an extension that creates a slot on a standby and
continues to replay from the slot when the standby is promoted.

This commit includes a module in src/test/modules with functions to
manipulate the slots (which is not otherwise possible in SQL code) in
order to enable testing, and a new test in src/test/recovery to ensure
that the behavior is as expected.

Author: Craig Ringer
Reviewed-By: Oleksii Kliukin, Andres Freund, Petr Jelínek

Files