diff --git a/doc/xml/release.xml b/doc/xml/release.xml
index 800cbac7b..5fffea294 100644
--- a/doc/xml/release.xml
+++ b/doc/xml/release.xml
@@ -28,6 +28,15 @@
Fixed an issue where WAL was not expired on 10. This was caused by a faulty regex that expected all major versions to be X.X.
+
+
+
+
+
+
+
+ Fixed info command to eliminate "db (prior)"
output if no backups or archives exist for a prior version of the cluster.
+
diff --git a/lib/pgBackRest/Info.pm b/lib/pgBackRest/Info.pm
index 9224ccebd..e695287fe 100644
--- a/lib/pgBackRest/Info.pm
+++ b/lib/pgBackRest/Info.pm
@@ -201,38 +201,62 @@ sub formatText
# Loop through the DB history array for the stanza from newest to oldest
foreach my $hDbInfo (reverse @{$oStanzaInfo->{&INFO_BACKUP_SECTION_DB}})
{
- $strOutput .= $bDbCurrent ? "\n db (current)" : "\n db (prior)";
- $bDbCurrent = false;
+ if ($bDbCurrent)
+ {
+ $strOutput .= "\n db (current)";
+ }
# Get the archive information for the DB
+ my $strOutputArchive;
foreach my $hDbArchive (@{$oStanzaInfo->{&INFO_SECTION_ARCHIVE}})
{
if ($hDbArchive->{&INFO_SECTION_DB}{&INFO_HISTORY_ID} == $hDbInfo->{&INFO_HISTORY_ID})
{
# Output archive start / stop values
- $strOutput .= "\n wal archive min/max (" . $hDbArchive->{&INFO_KEY_ID} . "): ";
+ $strOutputArchive .= "\n wal archive min/max (" . $hDbArchive->{&INFO_KEY_ID} . "): ";
if (defined($hDbArchive->{&INFO_KEY_MIN}))
{
- $strOutput .= $hDbArchive->{&INFO_KEY_MIN} . ' / ' . $hDbArchive->{&INFO_KEY_MAX};
+ $strOutputArchive .= $hDbArchive->{&INFO_KEY_MIN} . ' / ' . $hDbArchive->{&INFO_KEY_MAX};
}
else
{
- $strOutput .= 'none present';
+ $strOutputArchive .= 'none present';
}
- $strOutput .= "\n";
+ $strOutputArchive .= "\n";
}
}
# Get information for each stanza backup for the DB, from oldest to newest
+ my $strOutputBackup;
foreach my $oBackupInfo (@{$$oStanzaInfo{&INFO_BACKUP_SECTION_BACKUP}})
{
if ($oBackupInfo->{&INFO_SECTION_DB}{&INFO_KEY_ID} == $hDbInfo->{&INFO_HISTORY_ID})
{
- $strOutput .= "\n" . $self->formatTextBackup($oBackupInfo) . "\n";
+ $strOutputBackup .= "\n" . $self->formatTextBackup($oBackupInfo) . "\n";
}
}
+
+ if (defined($strOutputArchive) || defined($strOutputBackup))
+ {
+ if (!$bDbCurrent)
+ {
+ $strOutput .= "\n db (prior)";
+ }
+
+ if (defined($strOutputArchive))
+ {
+ $strOutput .= $strOutputArchive;
+ }
+
+ if (defined($strOutputBackup))
+ {
+ $strOutput .= $strOutputBackup;
+ }
+ }
+
+ $bDbCurrent = false;
}
}
diff --git a/test/lib/pgBackRestTest/Module/Info/InfoUnitTest.pm b/test/lib/pgBackRestTest/Module/Info/InfoUnitTest.pm
index 51614007c..03f3dcfd5 100644
--- a/test/lib/pgBackRestTest/Module/Info/InfoUnitTest.pm
+++ b/test/lib/pgBackRestTest/Module/Info/InfoUnitTest.pm
@@ -15,6 +15,7 @@ use English '-no_match_vars';
use File::Basename qw(dirname);
use Storable qw(dclone);
+use pgBackRest::Backup::Common;
use pgBackRest::Backup::Info;
use pgBackRest::Common::Exception;
use pgBackRest::Common::Lock;
@@ -365,6 +366,36 @@ sub run
" repository size: 0B, repository backup size: 0B\n",
"formatText() multiple DB versions");
+ # Remove backup from db (prior)
+ #---------------------------------------------------------------------------------------------------------------------------
+ # Load the backup.info file
+ my $oBackupInfo = new pgBackRest::Backup::Info($self->{strBackupPath});
+ my @stryPath = $oBackupInfo->list(backupRegExpGet(true));
+
+ # Remove the db prior full backup from the info file and save it
+ $oBackupInfo->delete($stryPath[0]);
+ $oBackupInfo->save();
+
+ # Remove the backup directory
+ storageTest()->remove($self->{strBackupPath} . "/" . $stryPath[0], {bRecurse => true});
+
+ $hyStanza = $oInfo->stanzaList($self->stanza());
+ $self->testResult(sub {$oInfo->formatText($hyStanza)},
+ "stanza: db\n status: ok\n" .
+ "\n db (current)\n" .
+ " wal archive min/max (9.5-2): 000000010000000000000000 / 000000010000000000000003\n\n" .
+ " full backup: 20161207-155728F\n" .
+ " timestamp start/stop: 2016-12-07 15:57:28 / 2016-12-07 15:57:28\n" .
+ " wal start/stop: 000000010000000000000000 / 000000010000000000000000\n" .
+ " database size: 0B, backup size: 0B\n" .
+ " repository size: 0B, repository backup size: 0B\n\n" .
+ " diff backup: 20161207-155728F_20161208-155728D\n" .
+ " timestamp start/stop: 2016-12-08 15:57:28 / 2016-12-08 15:57:28\n" .
+ " wal start/stop: 000000010000000000000002 / 000000010000000000000002\n" .
+ " database size: 0B, backup size: 0B\n" .
+ " repository size: 0B, repository backup size: 0B\n",
+ "db (prior) removed");
+
# dbArchiveSection() -- with archive
#---------------------------------------------------------------------------------------------------------------------------
$hDbInfo->{&INFO_HISTORY_ID} = 2;