Skip to content

Commit d603694

Browse files
committed
PGPRO-1059: Add PG version into show output, save server_version in backup.control
1 parent 25117a7 commit d603694

File tree

5 files changed

+31
-6
lines changed

5 files changed

+31
-6
lines changed

src/backup.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ static PGconn *backup_conn_replication = NULL;
6060

6161
/* PostgreSQL server version from "backup_conn" */
6262
static int server_version = 0;
63+
static char server_version_str[100] = "";
6364

6465
static bool exclusive_backup = false;
6566
/* Is pg_start_backup() was executed */
@@ -782,6 +783,8 @@ do_backup(void)
782783
/* TODO fix it for remote backup*/
783784
if (!is_remote_backup)
784785
current.checksum_version = get_data_checksum_version(true);
786+
StrNCpy(current.server_version, server_version_str,
787+
sizeof(current.server_version));
785788
current.stream = stream_wal;
786789

787790
is_ptrack_support = pg_ptrack_support();
@@ -887,6 +890,8 @@ do_backup(void)
887890
static void
888891
check_server_version(void)
889892
{
893+
PGresult *res;
894+
890895
/* confirm server version */
891896
server_version = PQserverVersion(backup_conn);
892897

@@ -906,6 +911,11 @@ check_server_version(void)
906911

907912
/* Do exclusive backup only for PostgreSQL 9.5 */
908913
exclusive_backup = server_version < 90600;
914+
915+
/* Save server_version to use it in future */
916+
res = pgut_execute(backup_conn, "show server_version", 0, NULL);
917+
StrNCpy(server_version_str, PQgetvalue(res, 0, 0), sizeof(server_version_str));
918+
PQclear(res);
909919
}
910920

911921
/*

src/catalog.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,7 @@ pgBackupWriteControl(FILE *out, pgBackup *backup)
394394
fprintf(out, "block-size = %u\n", backup->block_size);
395395
fprintf(out, "xlog-block-size = %u\n", backup->wal_block_size);
396396
fprintf(out, "checksum-version = %u\n", backup->checksum_version);
397+
fprintf(out, "server-version = %s\n", backup->server_version);
397398

398399
fprintf(out, "\n#Result backup info\n");
399400
fprintf(out, "timelineid = %d\n", backup->tli);
@@ -475,6 +476,7 @@ readBackupControlFile(const char *path)
475476
char *status = NULL;
476477
char *parent_backup = NULL;
477478
char *compress_alg = NULL;
479+
char *server_version = NULL;
478480
int *compress_level;
479481
bool *from_replica;
480482

@@ -492,7 +494,8 @@ readBackupControlFile(const char *path)
492494
{'I', 0, "wal-bytes", &backup->wal_bytes, SOURCE_FILE_STRICT},
493495
{'u', 0, "block-size", &backup->block_size, SOURCE_FILE_STRICT},
494496
{'u', 0, "xlog-block-size", &backup->wal_block_size, SOURCE_FILE_STRICT},
495-
{'u', 0, "checksum_version", &backup->checksum_version, SOURCE_FILE_STRICT},
497+
{'u', 0, "checksum-version", &backup->checksum_version, SOURCE_FILE_STRICT},
498+
{'s', 0, "server-version", &server_version, SOURCE_FILE_STRICT},
496499
{'b', 0, "stream", &backup->stream, SOURCE_FILE_STRICT},
497500
{'s', 0, "status", &status, SOURCE_FILE_STRICT},
498501
{'s', 0, "parent-backup-id", &parent_backup, SOURCE_FILE_STRICT},
@@ -565,6 +568,13 @@ readBackupControlFile(const char *path)
565568
free(parent_backup);
566569
}
567570

571+
if (server_version)
572+
{
573+
StrNCpy(backup->server_version, server_version,
574+
sizeof(backup->server_version));
575+
pfree(server_version);
576+
}
577+
568578
return backup;
569579
}
570580

src/pg_probackup.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,8 @@ typedef struct pgBackup
211211
uint32 wal_block_size;
212212
uint32 checksum_version;
213213

214+
char server_version[100];
215+
214216
bool stream; /* Was this backup taken in stream mode?
215217
* i.e. does it include all needed WAL files? */
216218
time_t parent_backup; /* Identifier of the previous backup.

src/show.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -226,9 +226,9 @@ show_backup_list(FILE *out, parray *backup_list)
226226

227227
/* if you add new fields here, fix the header */
228228
/* show header */
229-
fputs("==================================================================================================================================\n", out);
230-
fputs(" Instance ID Recovery time Mode WAL Current/Parent TLI Time Data Start LSN Stop LSN Status\n", out);
231-
fputs("==================================================================================================================================\n", out);
229+
fputs("============================================================================================================================================\n", out);
230+
fputs(" Instance Version ID Recovery time Mode WAL Current/Parent TLI Time Data Start LSN Stop LSN Status \n", out);
231+
fputs("============================================================================================================================================\n", out);
232232

233233
for (i = 0; i < parray_num(backup_list); i++)
234234
{
@@ -257,8 +257,10 @@ show_backup_list(FILE *out, parray *backup_list)
257257
parent_tli = get_parent_tli(backup->tli);
258258
backup_id = base36enc(backup->start_time);
259259

260-
fprintf(out, " %-11s %-6s %-19s %-6s %-7s %3d / %-3d %5s %6s %2X/%-8X %2X/%-8X %-8s\n",
261-
instance_name, backup_id,
260+
fprintf(out, " %-11s %-8s %-6s %-19s %-6s %-7s %3d / %-3d %5s %6s %2X/%-8X %2X/%-8X %-8s\n",
261+
instance_name,
262+
(backup->server_version[0] ? backup->server_version : "----"),
263+
backup_id,
262264
timestamp,
263265
pgBackupGetBackupMode(backup),
264266
backup->stream ? "STREAM": "ARCHIVE",

src/util.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,4 +263,5 @@ pgBackup_init(pgBackup *backup)
263263
backup->wal_block_size = XLOG_BLCKSZ;
264264
backup->stream = false;
265265
backup->parent_backup = 0;
266+
backup->server_version[0] = '\0';
266267
}

0 commit comments

Comments
 (0)