On 2013-09-05 14:37:01 -0400, Tom Lane wrote:
> Andres Freund <andres@2ndquadrant.com> writes:
> > On 2013-09-05 14:21:33 -0400, Tom Lane wrote:
> >> Ideally I'd have made InvalidCommandId = 0 and FirstCommandId = 1,
> >> but I suppose we can't have that without an on-disk compatibility break.
>
> > The patch actually does change it exactly that way.
>
> Oh. I hadn't looked at the patch, but I had (mis)read what Robert said
> to think that you were proposing introducing InvalidCommandId = 0xFFFFFFFF
> while leaving FirstCommandId alone. That would make more sense to me as
> (1) it doesn't change the interpretation of anything that's (likely to be)
> on disk; (2) it allows the check for overflow in CommandCounterIncrement
> to not involve recovering from an *actual* overflow. With the horsing
> around we've been seeing from the gcc boys lately
Ok, I can do it that way. LCR obviously shouldn't care.
> I don't have a warm
> feeling about whether they won't break that test someday on the grounds
> that "overflow is undefined behavior".
Unsigned overflow is pretty strictly defined, so I don't see much danger
there. Also, we'd feel the pain pretty definitely with xids...
Greetings,
Andres Freund
-- Andres Freund http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training &
Services