Re: BUG #15198: nextval() accepts tables/indexes when adding a default to a column

David G. Johnston <david.g.johnston@gmail.com>

From: "David G. Johnston" <david.g.johnston@gmail.com>
To: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Cc: feikesteenbergen@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2018-05-16T14:14:36Z
Lists: pgsql-bugs
On Wed, May 16, 2018 at 7:00 AM, Peter Eisentraut <
peter.eisentraut@2ndquadrant.com> wrote:

> > bugtest=# INSERT INTO demo (i, j) VALUES (1,1);
> > INSERT 0 1
> > bugtest=# INSERT INTO demo (i, j) VALUES (DEFAULT, DEFAULT);
> > ERROR:  42809: "demo" is not a sequence
> > LOCATION:  init_sequence, sequence.c:1139
>
> You are right that this is not optimal behavior.  I'm not sure if it's
> worth fixing, however.  (Introduce a regsequence type to use in place of
> regclass?)


​There is a big note on the functions-sequence page in the docs covering
late binding and text.  A addition like below is an acceptable solution for
me:

Additionally, since pg_class contains objects other than sequences it is
possible to specify a default that, at runtime, points to a non-sequence
object and provokes an error. (i.e., the type of the pointed to pg_class
record is not checked during the cast but during function evaluation).

David J.