"D'Arcy J.M. Cain" <darcy@druid.net> writes:
> Somehow I created two rows for each type in the pg_opclass table, one
> correct and one with NULL entries in opcnamespace and opcowner.
> Should those fields be NOT NULL to protect against this?
They are. But 7.3 has a bug that keeps it from enforcing NOT NULL on
certain system catalogs. Did you make the bogus row by means of a
manual INSERT into pg_opclass? If so, you're just seeing that bug.
If you were able to cause CREATE OPERATOR CLASS to make such a broken
entry, I'd be real interested to see how.
regards, tom lane
PS: you'd best take another look at the RESTRICT and JOIN entries for
your operators...