Re: BUG #9606: pg_class relhaspkey column not updated on removal of primary key

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: jeff(at)pgexperts(dot)com
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #9606: pg_class relhaspkey column not updated on removal of primary key
Date: 2014-03-17 18:59:30
Message-ID: 25726.1395082770@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

jeff(at)pgexperts(dot)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

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Jeff Frost 2014-03-17 19:01:24 Re: BUG #9606: pg_class relhaspkey column not updated on removal of primary key
Previous Message jeff 2014-03-17 18:52:55 BUG #9606: pg_class relhaspkey column not updated on removal of primary key