A conversation in pgsql-interfaces reminded me that it would be a good
idea for initdb to try to set attnotnull correctly for columns of the
system catalogs. Although we generally don't recommend that people
update catalogs directly, it's sometimes done anyway; having NOT NULL
constraints set on the columns that mustn't be null would help make
the system more robust.
It would be fairly easy to make bootstrap.c set attnotnull to true
for any column that's of a fixed-width datatype. That appears to
solve 99% of the problem with an appropriate amount of effort.
We could imagine inventing some BKI macro to explicitly label nullable
or not-nullable columns in the include/catalog headers, but I don't
think it's worth that much trouble.
Comments?
regards, tom lane