Re: BUG #9606: pg_class relhaspkey column not updated on removal of primary key - Mailing list pgsql-bugs

From Tom Lane
Subject Re: BUG #9606: pg_class relhaspkey column not updated on removal of primary key
Date
Msg-id 25726.1395082770@sss.pgh.pa.us
Whole thread Raw
In response to BUG #9606: pg_class relhaspkey column not updated on removal of primary key  (jeff@pgexperts.com)
Responses Re: BUG #9606: pg_class relhaspkey column not updated on removal of primary key  (Jeff Frost <jeff@pgexperts.com>)
List pgsql-bugs
jeff@pgexperts.com writes:
> [ $SUBJECT ]

This is not a bug; please read the description of pg_class:

relhaspkey    bool    True if the table has (or once had) a primary key

The note at the bottom of the page explains why:

Several of the Boolean flags in pg_class are maintained lazily: they are
guaranteed to be true if that's the correct state, but may not be reset to
false immediately when the condition is no longer true. For example,
relhasindex is set by CREATE INDEX, but it is never cleared by DROP
INDEX. Instead, VACUUM clears relhasindex if it finds the table has no
indexes. This arrangement avoids race conditions and improves concurrency.

            regards, tom lane

pgsql-bugs by date:

Previous
From: jeff@pgexperts.com
Date:
Subject: BUG #9606: pg_class relhaspkey column not updated on removal of primary key
Next
From: Jeff Frost
Date:
Subject: Re: BUG #9606: pg_class relhaspkey column not updated on removal of primary key