aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2014-01-08 22:26:39 +0200
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2014-01-08 22:26:39 +0200
commit815d71deed5df2a91b06da76edbe5bc64965bfea (patch)
treedfca497a76692fa085e4fb4464d247e7ae2ce577
parent847e46abc92333a5a948d8fa886604832c1db238 (diff)
downloadpostgresql-815d71deed5df2a91b06da76edbe5bc64965bfea.tar.gz
postgresql-815d71deed5df2a91b06da76edbe5bc64965bfea.zip
If multiple recovery_targets are specified, use the latest one.
The docs say that only one of recovery_target_xid, recovery_target_time, or recovery_target_name can be specified. But the code actually did something different, so that a name overrode time, and xid overrode both time and name. Now the target specified last takes effect, whether it's an xid, time or name. With this patch, we still accept multiple recovery_target settings, even though docs say that only one can be specified. It's a general property of the recovery.conf file parser that you if you specify the same option twice, the last one takes effect, like with postgresql.conf.
-rw-r--r--src/backend/access/transam/xlog.c13
1 files changed, 0 insertions, 13 deletions
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index f7746080a69..c2991300380 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -5402,13 +5402,6 @@ readRecoveryCommandFile(void)
}
else if (strcmp(item->name, "recovery_target_time") == 0)
{
- /*
- * if recovery_target_xid or recovery_target_name specified, then
- * this overrides recovery_target_time
- */
- if (recoveryTarget == RECOVERY_TARGET_XID ||
- recoveryTarget == RECOVERY_TARGET_NAME)
- continue;
recoveryTarget = RECOVERY_TARGET_TIME;
/*
@@ -5425,12 +5418,6 @@ readRecoveryCommandFile(void)
}
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;
recoveryTargetName = pstrdup(item->value);