"K. Srinath" <k(dot)srinath(at)gmail(dot)com> writes:
> Why is this so?
Because we don't track inheritance state for attnotnull. There is no
way you can make it work right with marginal hacking on the ATExec
code, because there just isn't enough state.
The correct fix is probably the one alluded to in another thread today:
make NOT NULL constraints have pg_constraint entries like CHECK
constraints do. As of 8.4 there is enough info tracked for check
constraints (cf conislocal and coninhcount) to make inheritance handle
all these corner cases.
regards, tom lane