On Marko Kreen's detailed suggestion, I've implemented a restartable
recovery mode for archive recovery (aka PITR). Restart points are known
as recovery checkpoints and are normally taken every 100 checkpoints in
the log to ensure good recovery performance.
An additional mode
standby_mode = 'true'
can also be specified, which ensures that a recovery checkpoint occurs
for each checkpoint in the logs.
Some other code refactorings, though all changes isolated to xlog.c and
to pg_control.h; code comments welcome.
Applies cleanly to cvstip, passes make check.
Further details testing is very desirable. I've tested restarting a
recovery twice and things work successfully.
--
Simon Riggs
EnterpriseDB http://www.enterprisedb.com