From 534b6f3ef29a11d19deeef6cef3bc8d4984de3c8 Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Mon, 9 Jan 2017 16:03:47 +0100 Subject: [PATCH] Use an enum instead of two bools to indicate wal inclusion in base backups This makes the code easier to read as it becomes more explicit what the different allowed combinations really are. Suggested by Michael Paquier --- src/bin/pg_basebackup/pg_basebackup.c | 38 ++++++++++++++++----------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/src/bin/pg_basebackup/pg_basebackup.c b/src/bin/pg_basebackup/pg_basebackup.c index 3f83d87e50..8ebf24e771 100644 --- a/src/bin/pg_basebackup/pg_basebackup.c +++ b/src/bin/pg_basebackup/pg_basebackup.c @@ -61,6 +61,16 @@ typedef struct TablespaceList */ #define MINIMUM_VERSION_FOR_PG_WAL 100000 +/* + * Different ways to include WAL + */ +typedef enum +{ + NO_WAL, + FETCH_WAL, + STREAM_WAL +} IncludeWal; + /* Global options */ static char *basedir = NULL; static TablespaceList tablespace_dirs = {NULL, NULL}; @@ -71,8 +81,7 @@ static bool noclean = false; static bool showprogress = false; static int verbose = 0; static int compresslevel = 0; -static bool includewal = true; -static bool streamwal = true; +static IncludeWal includewal = STREAM_WAL; static bool fastcheckpoint = false; static bool writerecoveryconf = false; static bool do_sync = true; @@ -1697,7 +1706,7 @@ BaseBackup(void) * If WAL streaming was requested, also check that the server is new * enough for that. */ - if (streamwal && !CheckServerVersionForStreaming(conn)) + if (includewal == STREAM_WAL && !CheckServerVersionForStreaming(conn)) { /* * Error message already written in CheckServerVersionForStreaming(), @@ -1731,9 +1740,9 @@ BaseBackup(void) psprintf("BASE_BACKUP LABEL '%s' %s %s %s %s %s %s", escaped_label, showprogress ? "PROGRESS" : "", - includewal && !streamwal ? "WAL" : "", + includewal == FETCH_WAL ? "WAL" : "", fastcheckpoint ? "FAST" : "", - includewal ? "NOWAIT" : "", + includewal == NO_WAL ? "" : "NOWAIT", maxrate_clause ? maxrate_clause : "", format == 't' ? "TABLESPACE_MAP" : ""); @@ -1776,7 +1785,7 @@ BaseBackup(void) PQclear(res); MemSet(xlogend, 0, sizeof(xlogend)); - if (verbose && includewal) + if (verbose && includewal != NO_WAL) fprintf(stderr, _("transaction log start point: %s on timeline %u\n"), xlogstart, starttli); @@ -1833,7 +1842,7 @@ BaseBackup(void) * If we're streaming WAL, start the streaming session before we start * receiving the actual data chunks. */ - if (streamwal) + if (includewal == STREAM_WAL) { if (verbose) fprintf(stderr, _("%s: starting background WAL receiver\n"), @@ -1879,7 +1888,7 @@ BaseBackup(void) disconnect_and_exit(1); } strlcpy(xlogend, PQgetvalue(res, 0, 0), sizeof(xlogend)); - if (verbose && includewal) + if (verbose && includewal != NO_WAL) fprintf(stderr, "transaction log end point: %s\n", xlogend); PQclear(res); @@ -2117,20 +2126,17 @@ main(int argc, char **argv) if (strcmp(optarg, "n") == 0 || strcmp(optarg, "none") == 0) { - includewal = false; - streamwal = false; + includewal = NO_WAL; } else if (strcmp(optarg, "f") == 0 || strcmp(optarg, "fetch") == 0) { - includewal = true; - streamwal = false; + includewal = FETCH_WAL; } else if (strcmp(optarg, "s") == 0 || strcmp(optarg, "stream") == 0) { - includewal = true; - streamwal = true; + includewal = STREAM_WAL; } else { @@ -2261,7 +2267,7 @@ main(int argc, char **argv) exit(1); } - if (format == 't' && streamwal && strcmp(basedir, "-") == 0) + if (format == 't' && includewal == STREAM_WAL && strcmp(basedir, "-") == 0) { fprintf(stderr, _("%s: cannot stream transaction logs in tar mode to stdout\n"), @@ -2271,7 +2277,7 @@ main(int argc, char **argv) exit(1); } - if (replication_slot && !streamwal) + if (replication_slot && includewal != STREAM_WAL) { fprintf(stderr, _("%s: replication slots can only be used with WAL streaming\n"), -- 2.40.0