Re: BUG #17428: last_value incorrect for uninitialized sequence - Mailing list pgsql-bugs

From David G. Johnston
Subject Re: BUG #17428: last_value incorrect for uninitialized sequence
Date
Msg-id CAKFQuwZrRHHxf8UzP+QCE+TSAeuVTytQ8W5oOJrvtLvpdtZt7w@mail.gmail.com
Whole thread Raw
In response to Re: BUG #17428: last_value incorrect for uninitialized sequence  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-bugs
On Mon, Mar 7, 2022 at 8:23 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Glen Edmonds <glen.edmonds@gmail.com> writes:
> The problem really is that the two states of not initialized and post first
> usage are indistinguishable (both return 1), but the sequence next value is
> different.

They're not indistinguishable: if you look at the is_called flag
you'll see that it changes.

Correct, the boolean is a superior solution to defining null to mean something.  A bit more verbose but equally functional and easier to read.
 
> ie it’s a reasonable expectation that the next value is
> last_value + 1. IMHO violating this makes it a bug.

You can call it that if you like, but it's operating as designed
and documented.  I fear it's about twenty years too late to propose
a redesign.


And next_value isn't last_value + 1 in any case since we have a block caching feature.  One cannot predict (i.e., without consuming) the next_value from current state.

David J.

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: BUG #17428: last_value incorrect for uninitialized sequence
Next
From: Andrey Borodin
Date:
Subject: Re: BUG #17401: REINDEX TABLE CONCURRENTLY creates a race condition on a streaming replica