Re: Restore relhaspkey in PostgreSQL Version 11 Beta - Mailing list pgsql-general

From Adrian Klaver
Subject Re: Restore relhaspkey in PostgreSQL Version 11 Beta
Date
Msg-id 88987794-d874-733e-6a31-d10127581339@aklaver.com
Whole thread Raw
In response to Re: Restore relhaspkey in PostgreSQL Version 11 Beta  (Melvin Davidson <melvin6925@gmail.com>)
List pgsql-general
On 07/30/2018 07:42 AM, Melvin Davidson wrote:
> 
> 
> On Mon, Jul 30, 2018 at 10:31 AM, Tom Lane <tgl@sss.pgh.pa.us 
> <mailto:tgl@sss.pgh.pa.us>> wrote:
> 
>     Melvin Davidson <melvin6925@gmail.com <mailto:melvin6925@gmail.com>>
>     writes:
>     > In the release notes for Version 11 Beta, under changes, I see these scary
>     > remarks:
>     > Remove relhaspkey column from system table pg_class (Peter Eisentraut)
>     > Applications needing to check for a primary key should consult pg_index.
>     > 
>     > That absolutely breaks my code (and I'm guessing others), as I have a cron
>     > job that checks for tables that were created with no pkey.
> 
>     Well, I'd say your code was broken anyway, because it has never been the
>     case that relhaspkey meant that the table *currently* has a primary key.
>     We got rid of it on the grounds that its semantics were too squishy to
>     be useful.
> 
>     What you want is something like
> 
>     select relname from pg_class c where relkind = 'r' and
>        not exists (select 1 from pg_index where indrelid = c.oid and
>     indisprimary);
> 
>     which will give the right answer in all PG versions.
> 
>                              regards, tom lane
> 
> 
> it has never been the
> case that relhaspkey meant that the table *currently* has a primary key.
> 
> Tom,
> *
> *
> *>it has never been the case that relhaspkey meant that the table 
> *currently* has a primary key.
> *
> *
> *
> *That is a poor excuse, because that is exactly what I am looking for!*
> *squishy semantics or not, dropping columns from system catalogs is 
> ridiculous.
> *
> *It appears to me that the developers are going rogue. Why should I, and 
> others,
> *
> *I have to change my code ( which absolutely works ), simply because the 
> developers*
> *feel it's ok to drop columns from system catalogs based on semantics?*

Use the information_schema then:

https://www.postgresql.org/docs/10/static/infoschema-table-constraints.html

The system catalogs are going to change over time by addition and/or 
subtraction. That is a fact of life.

If you are interested in the reasons for the change then:

https://www.postgresql.org/message-id/flat/b1a24c6c-6913-f89c-674e-0704f0ed69db@2ndquadrant.com


> 
> 
> 
> 
> -- 
> *Melvin Davidson**

> Maj. Database & Exploration Specialist**
> Universe Exploration Command – UXC***
> Employment by invitation only!


-- 
Adrian Klaver
adrian.klaver@aklaver.com


pgsql-general by date:

Previous
From: Adrian Klaver
Date:
Subject: Re: alter table docs
Next
From: Melvin Davidson
Date:
Subject: Re: Restore relhaspkey in PostgreSQL Version 11 Beta