diff options
Diffstat (limited to 'src/backend/access')
-rw-r--r-- | src/backend/access/transam/xlogbackup.c | 10 | ||||
-rw-r--r-- | src/backend/access/transam/xlogrecovery.c | 6 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/backend/access/transam/xlogbackup.c b/src/backend/access/transam/xlogbackup.c index 21d68133ae1..f51d4282bb8 100644 --- a/src/backend/access/transam/xlogbackup.c +++ b/src/backend/access/transam/xlogbackup.c @@ -77,6 +77,16 @@ build_backup_content(BackupState *state, bool ishistoryfile) appendStringInfo(result, "STOP TIMELINE: %u\n", state->stoptli); } + /* either both istartpoint and istarttli should be set, or neither */ + Assert(XLogRecPtrIsInvalid(state->istartpoint) == (state->istarttli == 0)); + if (!XLogRecPtrIsInvalid(state->istartpoint)) + { + appendStringInfo(result, "INCREMENTAL FROM LSN: %X/%X\n", + LSN_FORMAT_ARGS(state->istartpoint)); + appendStringInfo(result, "INCREMENTAL FROM TLI: %u\n", + state->istarttli); + } + data = result->data; pfree(result); diff --git a/src/backend/access/transam/xlogrecovery.c b/src/backend/access/transam/xlogrecovery.c index a2c8fa3981c..6f4f81f9927 100644 --- a/src/backend/access/transam/xlogrecovery.c +++ b/src/backend/access/transam/xlogrecovery.c @@ -1295,6 +1295,12 @@ read_backup_label(XLogRecPtr *checkPointLoc, TimeLineID *backupLabelTLI, tli_from_file, BACKUP_LABEL_FILE))); } + if (fscanf(lfp, "INCREMENTAL FROM LSN: %X/%X\n", &hi, &lo) > 0) + ereport(FATAL, + (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), + errmsg("this is an incremental backup, not a data directory"), + errhint("Use pg_combinebackup to reconstruct a valid data directory."))); + if (ferror(lfp) || FreeFile(lfp)) ereport(FATAL, (errcode_for_file_access(), |