currval and DISCARD ALL

From: Nigel Heron <nigel(at)psycode(dot)com>
To: pgsql-general(at)postgresql(dot)org
Subject: currval and DISCARD ALL
Date: 2013-04-15 21:42:17
Message-ID: 516C7439.7040008@psycode.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-hackers

Hi,
is there a way to clear the session state of sequence values fetched by
currval(regclass)? "DISCARD ALL" doesn't seem to do it.

eg. (w/ pg 9.2.4)
test=# CREATE SEQUENCE foo_seq;
CREATE SEQUENCE
test=# SELECT nextval('foo_seq');
-[ RECORD 1 ]
nextval | 1

test=# SELECT currval('foo_seq');
-[ RECORD 1 ]
currval | 1

test=# DISCARD ALL;
DISCARD ALL
test=# SELECT currval('foo_seq');
-[ RECORD 1 ]
currval | 1

I'm trying to migrate a large web app to work with pgbouncer's
transaction pool mode and it would be easier to identify issues if
currval() would return the usual "ERROR: currval of sequence "foo_seq"
is not yet defined in this session" if nextval() wasn't called in the
same pgbouncer session instead of getting old numbers from past
transactions.

thanks,
-nigel.

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Adrian Klaver 2013-04-15 21:57:12 Re: currval and DISCARD ALL
Previous Message Tom Lane 2013-04-15 16:40:27 Re: Role Authentication Failure

Browse pgsql-hackers by date

  From Date Subject
Next Message Adrian Klaver 2013-04-15 21:57:12 Re: currval and DISCARD ALL
Previous Message anarazel@anarazel.de 2013-04-15 21:06:42 Re: Why are JSON extraction functions STABLE and not IMMUTABLE?