Bug in writeTimeLineHistory - Mailing list pgsql-hackers

From Fujii Masao
Subject Bug in writeTimeLineHistory
Date
Msg-id AANLkTi=hkcMwdLC1hyn9kZ4w1EawNOFbk360mRjmDoH4@mail.gmail.com
Whole thread Raw
Responses Re: Bug in writeTimeLineHistory
List pgsql-hackers
Hi,

--------------
    if (recoveryTarget == RECOVERY_TARGET_XID)
        snprintf(buffer, sizeof(buffer),
                 "%s%u\t%s\t%s transaction %u\n",
                 (srcfd < 0) ? "" : "\n",
                 parentTLI,
                 xlogfname,
                 recoveryStopAfter ? "after" : "before",
                 recoveryStopXid);
    if (recoveryTarget == RECOVERY_TARGET_TIME)
        snprintf(buffer, sizeof(buffer),
                 "%s%u\t%s\t%s %s\n",
                 (srcfd < 0) ? "" : "\n",
                 parentTLI,
                 xlogfname,
                 recoveryStopAfter ? "after" : "before",
                 timestamptz_to_str(recoveryStopTime));
    else
        snprintf(buffer, sizeof(buffer),
                 "%s%u\t%s\tno recovery target specified\n",
                 (srcfd < 0) ? "" : "\n",
                 parentTLI,
                 xlogfname);
--------------

In writeTimeLineHistory, the result of the above first snprintf is always
overwritten by the following snprintf wrongly. I guess we forgot putting
"else" in the second "if" statement. I attached the very simple patch.

Since this bug was introduced in v9.0, the patch needs to be backported
to 9.0.

Regards,

--
Fujii Masao
NIPPON TELEGRAPH AND TELEPHONE CORPORATION
NTT Open Source Software Center

Attachment

pgsql-hackers by date:

Previous
From: Magnus Hagander
Date:
Subject: Re: duplicate connection failure messages
Next
From: Fujii Masao
Date:
Subject: signal and startup process