Bug in writeTimeLineHistory
Fujii Masao <masao.fujii@gmail.com>
From: Fujii Masao <masao.fujii@gmail.com>
To: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2010-10-14T05:11:31Z
Lists: pgsql-hackers
Attachments
- add_else_v1.patch (application/octet-stream) patch v1
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