SATYANARAYANA NARLAPURAM <[email protected]> 于2026年4月10日周五 02:43写道: > > Hi hackers, > > It appears the optimizer incorrectly simplifies old.<col> IS NULL to FALSE in > RETURNING clauses when the underlying column has a NOT NULL constraint. > > The issue is that var_is_nonnullable() in clauses.c doesn't check > Var.varreturningtype. It sees a NOT NULL column and concludes the Var can > never be NULL. > But this assumption is wrong for old.* and new.* references. Because the old > tuple doesn't exist on INSERT, and the new tuple doesn't exist on DELETE > I am not super familiar with this area, so I attempted to fix this as in the > patch attached.
Yes, the current var_is_nonnullable() ignores this case. The attached patch seems ok to me. Add Richard to the cc list. He may know more about this. -- Thanks, Tender Wang
