>it has never been the case that relhaspkey meant that the table *currently* has a primary key.
Hmmm, I guess it's a lot harder to fix "squishy semantics" from "True if the table has (or once had) a primary key" to "True if the table has a primary key after vacuum" rather than just dropping a column that has existed from version 7.2.
So now I guess the policy is break code instead of fix documention. That meakes sense...NOT!