Re: [BUGS] Bug #613: Sequence values fall back to previously chec - Mailing list pgsql-hackers

From Mikheev, Vadim
Subject Re: [BUGS] Bug #613: Sequence values fall back to previously chec
Date
Msg-id 3705826352029646A3E91C53F7189E325184D6@sectorbase2.sectorbase.com
Whole thread Raw
List pgsql-hackers
> > It seems safe to do NOT write WAL record if sequence
> > LSN > system RedoRecPtr because of checkpoint started after our
> > check would finish only after writing to disk sequence buffer with
> > proper last_value and log_cnt (nextval keeps lock on 
> > sequence buffer).
> 
> Mmm ... maybe.  Is this safe if a checkpoint is currently in
> progress? Seems like you could look at RedoRecPtr and decide
> you are okay, but you really are not if checkpointer has already
> dumped sequence' disk buffer and will later set RedoRecPtr to a
> value beyond the old LSN.

CheckPointer updates system RedoRecPtr before doing anything else.
System RedoRecPtr was introduced to force data buffers backup
by future XLogInsert-s once CheckPointer started and it *must* be
updated *before* buffer flushing.

> In that case you should have emitted a WAL record ... but you didn't.
> 
> Considering that we've found two separate bugs in this stuff
> in the past week, I think that we ought to move in the direction
> of making it simpler and more reliable, not even-more-complicated.

Isn't it too late, considering we have fixes for both bugs already? -:)
(And it's not very-more-complicated - just simple check.)

> Is it really worth all this trouble to avoid making a WAL record
> for each nextval() call?

It's doable... why not do this?
(Though I have no strong objection.)

Vadim


pgsql-hackers by date:

Previous
From: mlw
Date:
Subject: Re: Transaction on start of session ?
Next
From: Greg Copeland
Date:
Subject: Bitmap indexes?