vacuum analyze on pg_type fails if bogus entries remain in pg_operator. Here is a sample script to reproduce the problem. drop table t1; create table t1(i int); drop function foo(t1,t1); create function foo(t1,t1) returns bool as 'select true' language 'sql'; create operator = ( leftarg = t1, rightarg = t1, commutator = =, procedure = foo ); drop table t1; vacuum analyze; To fix the problem I propose following patches. Comments? -- Tatsuo Ishii *** parse_coerce.c.orig Sat Feb 3 20:07:53 2001 --- parse_coerce.c Tue Feb 27 11:33:01 2001 *************** *** 190,195 **** --- 190,201 ---- Oid inputTypeId = input_typeids[i]; Oid targetTypeId = func_typeids[i]; + if (typeidIsValid(inputTypeId) == false) + return(false); + + if (typeidIsValid(targetTypeId) == false) + return(false); + /* no problem if same type */ if (inputTypeId == targetTypeId) continue;