Re: Duplicate tables information through metadata queries - Mailing list pgsql-jdbc

From Andrew Dunstan
Subject Re: Duplicate tables information through metadata queries
Date
Msg-id c9188c85-a5f6-3afe-c737-ac8664764b5b@dunslane.net
Whole thread Raw
In response to Re: Duplicate tables information through metadata queries  (Dave Cramer <davecramer@postgres.rocks>)
Responses Re: Duplicate tables information through metadata queries  (Dave Cramer <davecramer@postgres.rocks>)
List pgsql-jdbc
On 9/8/21 6:45 PM, Dave Cramer wrote:
>
>
> On Wed, 8 Sept 2021 at 18:19, David G. Johnston
> <david.g.johnston@gmail.com <mailto:david.g.johnston@gmail.com>> wrote:
>
>     On Wednesday, September 8, 2021, Andrew Dunstan
>     <andrew@dunslane.net <mailto:andrew@dunslane.net>> wrote:
>
>
>         On 9/8/21 5:15 PM, ldh@laurent-hasson.com
>         <mailto:ldh@laurent-hasson.com> wrote:
>         >
>         > SELECT *
>         > FROM pg_catalog.pg_class c
>         >      LEFT JOIN pg_catalog.pg_namespace n ON n.oid =
>         c.relnamespace
>         >      LEFT JOIN pg_catalog.pg_description d ON (c.oid =
>         d.objoid AND d.objsubid = 0)
>         > WHERE c.relname = 'contact'
>
>
>
>         Umm, that doesn't look right. For queries against
>         pg_description you
>         need to specify the classoid (in this case
>         'pg_class'::regclass) as well
>         as the objoid (and possibly the objsubid). Remember, Oids are
>         not unique
>         across the whole catalog. I looks to me like here one rwo is
>         picking up
>         a description for an entry in some other catalog
>
>
>         See
>         https://www.postgresql.org/docs/devel/catalog-pg-description.html
>         <https://www.postgresql.org/docs/devel/catalog-pg-description.html>
>
>
>     Doh!  I knew I was forgetting something.  This is indeed a bug in
>     the JDBC driver.  In the query results a few messages above one is
>     in catalog 1255 and the other (correct one) is in 1259.
>
>
> The next line in the driver is
>
> + " LEFT JOIN pg_catalog.pg_class dc ON (d.classoid=dc.oid AND
> dc.relname='pg_class') "
>
>  
>
>

"LEFT" here surely defeats the purpose.  Far better than to have this
clause at all would be to add " and d.classoid = 'pg_class'::regclass"
to the previous join condition.


cheers


andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com




pgsql-jdbc by date:

Previous
From: Dave Cramer
Date:
Subject: [pgjdbc/pgjdbc] a70834: remove old changelog information from post. Incorr...
Next
From: Dave Cramer
Date:
Subject: Re: Duplicate tables information through metadata queries