]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
pg_upgrade: properly handle timeline variables
authorBruce Momjian <bruce@momjian.us>
Sat, 16 May 2015 19:16:28 +0000 (15:16 -0400)
committerBruce Momjian <bruce@momjian.us>
Sat, 16 May 2015 19:16:28 +0000 (15:16 -0400)
There is no behavior change here as we now always set the timeline to
one.

Report by Tom Lane

Backpatch to 9.3 and 9.4

contrib/pg_upgrade/controldata.c
contrib/pg_upgrade/pg_upgrade.h

index b0da994c14114f9dad46b0536ddf7995e06a95b4..2a4b636245fa6b480ca5c1a63c3123b0faeb4f38 100644 (file)
@@ -229,7 +229,7 @@ get_control_data(ClusterInfo *cluster, bool live_check)
                                pg_log(PG_FATAL, "%d: controldata retrieval problem\n", __LINE__);
 
                        p++;                            /* removing ':' char */
-                       cluster->controldata.chkpnt_tli = str2uint(p);
+                       tli = str2uint(p);
                        got_tli = true;
                }
                else if ((p = strstr(bufin, "Latest checkpoint's NextXID:")) != NULL)
@@ -479,11 +479,11 @@ get_control_data(ClusterInfo *cluster, bool live_check)
         * Before 9.3, pg_resetxlog reported the xlogid and segno of the first log
         * file after reset as separate lines. Starting with 9.3, it reports the
         * WAL file name. If the old cluster is older than 9.3, we construct the
-        * WAL file name from the xlogid and segno.
+        * WAL file name from the tli, xlogid, and segno.
         */
        if (GET_MAJOR_VERSION(cluster->major_version) <= 902)
        {
-               if (got_log_id && got_log_seg)
+               if (got_tli && got_log_id && got_log_seg)
                {
                        snprintf(cluster->controldata.nextxlogfile, 25, "%08X%08X%08X",
                                         tli, logid, segno);
@@ -497,7 +497,6 @@ get_control_data(ClusterInfo *cluster, bool live_check)
                (!got_oldestmulti &&
                 cluster->controldata.cat_ver >= MULTIXACT_FORMATCHANGE_CAT_VER) ||
                (!live_check && !got_nextxlogfile) ||
-               !got_tli ||
                !got_align || !got_blocksz || !got_largesz || !got_walsz ||
                !got_walseg || !got_ident || !got_index || !got_toast ||
                !got_date_is_int || !got_float8_pass_by_value || !got_data_checksum_version)
@@ -525,9 +524,6 @@ get_control_data(ClusterInfo *cluster, bool live_check)
                if (!live_check && !got_nextxlogfile)
                        pg_log(PG_REPORT, "  first WAL segment after reset\n");
 
-               if (!got_tli)
-                       pg_log(PG_REPORT, "  latest checkpoint timeline ID\n");
-
                if (!got_align)
                        pg_log(PG_REPORT, "  maximum alignment\n");
 
index f50388fedbd70a40ceefcc98de37efc27b61fe37..85c737932dfe56b03f7fdf27626f7b2329b63ff6 100644 (file)
@@ -186,7 +186,6 @@ typedef struct
        uint32          ctrl_ver;
        uint32          cat_ver;
        char            nextxlogfile[25];
-       uint32          chkpnt_tli;
        uint32          chkpnt_nxtxid;
        uint32          chkpnt_nxtepoch;
        uint32          chkpnt_nxtoid;