]> granicus.if.org Git - postgresql/commitdiff
Use an enum instead of two bools to indicate wal inclusion in base backups
authorMagnus Hagander <magnus@hagander.net>
Mon, 9 Jan 2017 15:03:47 +0000 (16:03 +0100)
committerMagnus Hagander <magnus@hagander.net>
Mon, 9 Jan 2017 15:03:47 +0000 (16:03 +0100)
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

index 3f83d87e506b0a883dce5a7a16e373274c0b9171..8ebf24e7717ed3ddee7a5bf0912500b1491d7cbb 100644 (file)
@@ -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"),