Support retrieving value from any sequence

From: Thom Brown <thom(at)linux(dot)com>
To: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Support retrieving value from any sequence
Date: 2015-07-14 14:52:04
Message-ID: CAA-aLv5ntC3TOmduvEgLRH+R08r3GtZ8e3a3j5rcjwuwygDjzw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi all,

When using currval() to find the current value of all sequences, it chokes
on those that aren't initialised. This is expected and documented as
behaving in this manner. However, I think it would be useful to also
support retrieving the current value of a sequence, regardless of whether
it's been used. As this wouldn't be to get a sequence value for the
current session, but all sessions, this would ideally get the real current
value.

The use-case I have in mind is for finding out how close to the 32-bit
integer limit sequences have reached. At the moment, this isn't possible
without creating a custom function to go fetch the last_value from the
specified sequence.

So would it be desirable to have a function which accepts a sequence
regclass as a parameter, and returns the last_value from the sequence?

Effectively, the same result as what this provides:

CREATE FUNCTION lastval(tablename regclass) RETURNS bigint AS $$
DECLARE
last_value bigint;
BEGIN
EXECUTE format('SELECT last_value FROM %I ', tablename) INTO last_value
USING tablename;
RETURN last_value;
END
$$ LANGUAGE plpgsql;

Thom

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Simon Riggs 2015-07-14 14:55:22 Re: TABLESAMPLE patch is really in pretty sad shape
Previous Message Tom Lane 2015-07-14 14:32:07 Re: TABLESAMPLE patch is really in pretty sad shape