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



Sun, 07 Jul 2002 12:46:08 -0400
Tom Lane <tgl@sss.pgh.pa.us>
Most system catalog columns should be NOT NULL
Tom Lane wrote:
> 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?

Yep, should be done.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026



Sun, 7 Jul 2002 19:35:43 -0400 (EDT)
Bruce Momjian <pgman@candle.pha.pa.us>
Re: Most system catalog columns should be NOT NULL