Thread

  1. Re: error: could not find pg_class tuple for index 2662

    Tom Lane <tgl@sss.pgh.pa.us> — 2011-08-04T23:38:28Z

    Ahh ... you know what, never mind about stack traces, let's just see if
    the attached patch doesn't fix it.
    
    I still haven't reproduced the behavior here, but I think I see what
    must be happening: we are getting an sinval reset while attempting to
    open pg_class_oid_index.  The latter condition causes its refcount to
    be above 1, which will cause RelationClearRelation to directly call
    RelationReloadIndexInfo, which enables the following sequence of calls:
    RelationCacheInvalidate -> RelationClearRelation -> RelationReloadIndexInfo.
    And the problem is that RelationCacheInvalidate intentionally forces
    pg_class_oid_index to be updated first.  That was okay when the code was
    written, because the relcache entry for pg_class itself never really
    needed any updates.  Now it does, so we have to make sure pg_class gets
    updated first, *then* pg_class_oid_index (which might result in a
    seqscan of pg_class), then everything else (for which we'll try to use
    pg_class_oid_index to locate their pg_class tuples).
    
    			regards, tom lane