Thread

  1. Bug in writeTimeLineHistory

    Fujii Masao <masao.fujii@gmail.com> — 2010-10-14T05:11:31Z

    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
    
  2. Re: Bug in writeTimeLineHistory

    Simon Riggs <simon@2ndquadrant.com> — 2010-10-14T18:17:35Z

    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.com
     PostgreSQL Development, 24x7 Support, Training and Services