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;

Reply via email to