This if-block is misplaced:
> case RECOVERY_TARGET_STOP_IMMEDIATE:
> case RECOVERY_TARGET_STOP_XID:
> case RECOVERY_TARGET_STOP_TIME:
> paused = false;
> break;
>
> /*
> * If we're paused, and mode has changed reset to allow new settings
> * to apply and maybe allow us to continue.
> */
> if (paused && prevRecoveryTargetMode != recoveryTargetMode)
> paused = false;
>
> case RECOVERY_TARGET_PAUSE_XID:
Where was that supposed to go?
In advance-mode, we will merrilly skip over a WAL record that's a
recovery stop target. Is that a bug or a feature?
If you pause recovery, and then continue, we reset to "target none"
mode, even if a stopping point was set previously. That doesn't seem
right to me.
-- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com