Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
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 16f535b37b65693eefece8245ca1bc4f94436eee..df02816ca7ac8c514ff04dfb10d5684f530c559b 100644 (file)
@@ -228,7 +228,7 @@ get_control_data(ClusterInfo *cluster, bool live_check)
                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)
@@ -478,11 +478,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);
@@ -496,7 +496,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)
@@ -524,9 +523,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 1222f63fd2e63ed6b4011cc6df66347ea367e0ac..1c6f8f0aa1c241fab5eb9e175abd437df94daef0 100644 (file)
@@ -193,7 +193,6 @@ typedef struct
    uint32      ctrl_ver;
    uint32      cat_ver;
    char        nextxlogfile[25];
-   uint32      chkpnt_tli;
    uint32      chkpnt_nxtxid;
    uint32      chkpnt_nxtepoch;
    uint32      chkpnt_nxtoid;