Обсуждение: Bug in writeTimeLineHistory
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
Вложения
Agreed, committed and backpatched. On Thu, 2010-10-14 at 14:11 +0900, Fujii Masao wrote: > 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, > -- Simon Riggs www.2ndQuadrant.comPostgreSQL Development, 24x7 Support, Training and Services