Forbid marking an identity column as nullable.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 12 Mar 2021 16:08:42 +0000 (11:08 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 12 Mar 2021 16:08:42 +0000 (11:08 -0500)
commit6c34f186c4c62ac93b8f5f7229b03301b02741c9
tree852e1855d0a486f53fc11b9af133b9612ece500d
parentddd4cc09a6e5d775822e0244e73ca9bb894dce42
Forbid marking an identity column as nullable.

GENERATED ALWAYS AS IDENTITY implies NOT NULL, but the code failed
to complain if you overrode that with "GENERATED ALWAYS AS IDENTITY
NULL".  One might think the old behavior was a feature, but it was
inconsistent because the outcome varied depending on the order of
the clauses, so it seems to have been just an oversight.

Per bug #16913 from Pavel Boev.  Back-patch to v10 where identity
columns were introduced.

Vik Fearing (minor tweaks by me)

Discussion: https://postgr.es/m/16913-3b5198410f67d8c6@postgresql.org
doc/src/sgml/ref/create_table.sgml
src/backend/parser/parse_utilcmd.c
src/test/regress/expected/identity.out
src/test/regress/sql/identity.sql