mirror of
https://github.com/postgrespro/pg_probackup.git
synced 2025-02-09 14:33:17 +02:00
PGPRO-533: Reformat json output, add program-version to backup.control
This commit is contained in:
parent
6df8c2aaec
commit
733354c40f
@ -395,6 +395,7 @@ pgBackupWriteControl(FILE *out, pgBackup *backup)
|
||||
fprintf(out, "block-size = %u\n", backup->block_size);
|
||||
fprintf(out, "xlog-block-size = %u\n", backup->wal_block_size);
|
||||
fprintf(out, "checksum-version = %u\n", backup->checksum_version);
|
||||
fprintf(out, "program-version = %s\n", PROGRAM_VERSION);
|
||||
if (backup->server_version[0] != '\0')
|
||||
fprintf(out, "server-version = %s\n", backup->server_version);
|
||||
|
||||
@ -476,6 +477,7 @@ readBackupControlFile(const char *path)
|
||||
char *stop_lsn = NULL;
|
||||
char *status = NULL;
|
||||
char *parent_backup = NULL;
|
||||
char *program_version = NULL;
|
||||
char *server_version = NULL;
|
||||
char *compress_alg = NULL;
|
||||
|
||||
@ -494,6 +496,7 @@ readBackupControlFile(const char *path)
|
||||
{'u', 0, "block-size", &backup->block_size, SOURCE_FILE_STRICT},
|
||||
{'u', 0, "xlog-block-size", &backup->wal_block_size, SOURCE_FILE_STRICT},
|
||||
{'u', 0, "checksum-version", &backup->checksum_version, SOURCE_FILE_STRICT},
|
||||
{'s', 0, "program-version", &program_version, SOURCE_FILE_STRICT},
|
||||
{'s', 0, "server-version", &server_version, SOURCE_FILE_STRICT},
|
||||
{'b', 0, "stream", &backup->stream, SOURCE_FILE_STRICT},
|
||||
{'s', 0, "status", &status, SOURCE_FILE_STRICT},
|
||||
@ -570,6 +573,13 @@ readBackupControlFile(const char *path)
|
||||
free(parent_backup);
|
||||
}
|
||||
|
||||
if (program_version)
|
||||
{
|
||||
StrNCpy(backup->program_version, program_version,
|
||||
sizeof(backup->program_version));
|
||||
pfree(program_version);
|
||||
}
|
||||
|
||||
if (server_version)
|
||||
{
|
||||
StrNCpy(backup->server_version, server_version,
|
||||
|
@ -228,6 +228,7 @@ typedef struct pgBackup
|
||||
uint32 wal_block_size;
|
||||
uint32 checksum_version;
|
||||
|
||||
char program_version[100];
|
||||
char server_version[100];
|
||||
|
||||
bool stream; /* Was this backup taken in stream mode?
|
||||
|
58
src/show.c
58
src/show.c
@ -26,6 +26,21 @@ static int show_backup(time_t requested_backup_id);
|
||||
static void show_instance_plain(parray *backup_list, bool show_name);
|
||||
static void show_instance_json(parray *backup_list);
|
||||
|
||||
/* Json output functions */
|
||||
|
||||
typedef enum
|
||||
{
|
||||
JT_BEGIN_ARRAY,
|
||||
JT_END_ARRAY,
|
||||
JT_BEGIN_OBJECT,
|
||||
JT_END_OBJECT
|
||||
} JsonToken;
|
||||
|
||||
static void json_add(PQExpBuffer buf, JsonToken type);
|
||||
static void json_add_key(PQExpBuffer buf, const char *name, bool add_comma);
|
||||
static void json_add_value(PQExpBuffer buf, const char *name, const char *value,
|
||||
bool add_comma);
|
||||
|
||||
static PQExpBufferData show_buf;
|
||||
static bool first_instance = true;
|
||||
static uint8 json_level = 0;
|
||||
@ -219,8 +234,9 @@ show_instance_start(void)
|
||||
first_instance = true;
|
||||
json_level = 0;
|
||||
|
||||
appendPQExpBufferChar(&show_buf, '[');
|
||||
json_level++;
|
||||
json_add(&show_buf, JT_BEGIN_OBJECT);
|
||||
json_add_key(&show_buf, "instances", false);
|
||||
json_add(&show_buf, JT_BEGIN_ARRAY);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -230,7 +246,11 @@ static void
|
||||
show_instance_end(void)
|
||||
{
|
||||
if (show_format == SHOW_JSON)
|
||||
appendPQExpBufferStr(&show_buf, "\n]\n");
|
||||
{
|
||||
json_add(&show_buf, JT_END_ARRAY);
|
||||
json_add(&show_buf, JT_END_OBJECT);
|
||||
appendPQExpBufferChar(&show_buf, '\n');
|
||||
}
|
||||
|
||||
fputs(show_buf.data, stdout);
|
||||
termPQExpBuffer(&show_buf);
|
||||
@ -375,14 +395,6 @@ json_add_indent(PQExpBuffer buf)
|
||||
appendPQExpBufferStr(buf, " ");
|
||||
}
|
||||
|
||||
typedef enum
|
||||
{
|
||||
JT_BEGIN_ARRAY,
|
||||
JT_END_ARRAY,
|
||||
JT_BEGIN_OBJECT,
|
||||
JT_END_OBJECT
|
||||
} JsonToken;
|
||||
|
||||
static void
|
||||
json_add(PQExpBuffer buf, JsonToken type)
|
||||
{
|
||||
@ -493,10 +505,10 @@ show_instance_json(parray *backup_list)
|
||||
|
||||
/* Begin of instance object */
|
||||
json_add(buf, JT_BEGIN_OBJECT);
|
||||
json_add_key(buf, instance_name, false);
|
||||
|
||||
json_add_value(buf, "instance", instance_name, false);
|
||||
|
||||
json_add_key(buf, "backups", true);
|
||||
json_add(buf, JT_BEGIN_OBJECT);
|
||||
json_add_key(buf, "backups", false);
|
||||
|
||||
/*
|
||||
* List backups.
|
||||
@ -516,14 +528,19 @@ show_instance_json(parray *backup_list)
|
||||
appendPQExpBufferChar(buf, ',');
|
||||
|
||||
json_add(buf, JT_BEGIN_OBJECT);
|
||||
json_add_key(buf, base36enc(backup->start_time), false);
|
||||
|
||||
json_add_value(buf, "id", base36enc(backup->start_time), false);
|
||||
/* Show backup attributes */
|
||||
json_add(buf, JT_BEGIN_OBJECT);
|
||||
|
||||
if (backup->parent_backup != 0)
|
||||
{
|
||||
json_add_value(buf, "parent-backup-id",
|
||||
base36enc(backup->parent_backup), true);
|
||||
|
||||
json_add_value(buf, "backup-mode", pgBackupGetBackupMode(backup), true);
|
||||
base36enc(backup->parent_backup), false);
|
||||
json_add_value(buf, "backup-mode", pgBackupGetBackupMode(backup), true);
|
||||
}
|
||||
else
|
||||
json_add_value(buf, "backup-mode", pgBackupGetBackupMode(backup), false);
|
||||
|
||||
json_add_value(buf, "wal", backup->stream ? "STREAM": "ARCHIVE", true);
|
||||
|
||||
@ -545,6 +562,7 @@ show_instance_json(parray *backup_list)
|
||||
json_add_key(buf, "checksum-version", true);
|
||||
appendPQExpBuffer(buf, "%u", backup->checksum_version);
|
||||
|
||||
json_add_value(buf, "program-version", backup->program_version, true);
|
||||
json_add_value(buf, "server-version", backup->server_version, true);
|
||||
|
||||
json_add_key(buf, "current-tli", true);
|
||||
@ -594,11 +612,15 @@ show_instance_json(parray *backup_list)
|
||||
|
||||
json_add_value(buf, "status", status2str(backup->status), true);
|
||||
|
||||
json_add(buf, JT_END_OBJECT);
|
||||
/* End of backup attributes */
|
||||
|
||||
json_add(buf, JT_END_OBJECT);
|
||||
}
|
||||
|
||||
/* End of backups */
|
||||
json_add(buf, JT_END_ARRAY);
|
||||
json_add(buf, JT_END_OBJECT);
|
||||
|
||||
/* End of instance object */
|
||||
json_add(buf, JT_END_OBJECT);
|
||||
|
@ -325,5 +325,6 @@ pgBackup_init(pgBackup *backup)
|
||||
backup->from_replica = false;
|
||||
backup->parent_backup = 0;
|
||||
backup->primary_conninfo = NULL;
|
||||
backup->program_version[0] = '\0';
|
||||
backup->server_version[0] = '\0';
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user