On Fri, Aug 13, 2010 at 8:28 AM, Robert Haas <robertmh...@gmail.com> wrote: > I've committed all of this except for the following, which I'm not > certain is correct:
Thanks for the commit. > --- a/src/backend/access/transam/clog.c > +++ b/src/backend/access/transam/clog.c > @@ -355,10 +355,10 @@ TransactionIdSetStatusBit(TransactionId xid, XidStatus > sta > /* > * Update the group LSN if the transaction completion LSN is higher. > * > - * Note: lsn will be invalid when supplied during InRecovery > processing, > - * so we don't need to do anything special to avoid LSN updates during > - * recovery. After recovery completes the next clog change will set > the > - * LSN correctly. > + * Note: lsn will be invalid when supplied while we're performing > + * recovery but hot standby is disabled, so we don't need to do > + * anything special to avoid LSN updates in that case. After recovery > + * completes the next clog change will set the LSN correctly. > */ > if (!XLogRecPtrIsInvalid(lsn)) > { > > TransactionIdSetStatusBit is called from TransactionIdSetPageStatus, > which seems to think that the validity of lsn is based on whether > we're doing an async commit. Your change may be correct, but I'm not > certain of it... Before 9.0, since xact_redo_commit always calls TransactionIdCommitTree, TransactionIdSetStatusBit always receives InvalidXLogRecPtr. In 9.0, xact_redo_commit calls TransactionIdCommitTree only when hot standby is disabled. OTOH, when hot standby is enabled, xact_redo_commit calls TransactionIdAsyncCommitTree, so TransactionIdSetStatusBit receives the valid lsn. Regards, PS. I'll be unable to read hackers from Aug 13th to 20th because of a vacation. -- Fujii Masao NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers