Re: Odd behavior with 'currval' - Mailing list pgsql-general

From David G. Johnston
Subject Re: Odd behavior with 'currval'
Date
Msg-id CAKFQuwYOid4vqN6abpxS=VrrYnt3PBnmvSF+Lk317cuL_jW32w@mail.gmail.com
Whole thread Raw
In response to Re: Odd behavior with 'currval'  (Steven Hirsch <snhirsch@gmail.com>)
Responses Re: Odd behavior with 'currval'
List pgsql-general
On Thu, Feb 8, 2018 at 10:58 AM, Steven Hirsch <snhirsch@gmail.com> wrote:
On a hunch, I tried 'SELECT currval(NULL)' to see if it returned '0', but that too returns NULL.  So, where is the '0' coming from when I do:

SELECT currval( pg_get_serial_sequence('udm_asset_type_definition','def_id'))

? I've already established that the inner expression evaluates to NULL!

​This is indeed unusual...to be specific here pg_get_serial_sequence returns null in lieu of an error for being unable to locate the indicated sequence.  currval is returning null because it is defined "STRICT" and so given a null input it will always return null.  currval itself, when provided a non-null input, is going to error or provide a number (which should never be zero...).

I'm wondering whether someone didn't like the fact that currval errors and instead wrote a overriding function that instead returns zero?

David J.

pgsql-general by date:

Previous
From: Steven Hirsch
Date:
Subject: Re: Odd behavior with 'currval'
Next
From: Adrian Klaver
Date:
Subject: Re: Odd behavior with 'currval'