Re: DatabaseMetaData.getTables problem - Mailing list pgsql-jdbc

From Kris Jurka
Subject Re: DatabaseMetaData.getTables problem
Date
Msg-id Pine.LNX.4.33.0211081325320.14247-100000@leary.csoft.net
Whole thread Raw
In response to Re: DatabaseMetaData.getTables problem  (Barry Lind <blind@xythos.com>)
Responses Re: DatabaseMetaData.getTables problem  (Kris Jurka <books@ejurka.com>)
Re: DatabaseMetaData.getTables problem  (snpe <snpe@snpe.co.yu>)
List pgsql-jdbc
The problem is that the join to retrieve the table's comment from
pg_description is not properly constrained.  A table's comment is
stored in pg_description with the objoid of the table's pg_class
oid and objsubid = 0.  A table's column's comments are stored with the
table's pg_class oid and objsubid of pg_attribute.attnum.  If any column
in the table has a comment then the query will not work properly
(retrieving extra rows).

Kris Jurka

On Fri, 8 Nov 2002, Barry Lind wrote:

> Can you also submit a test case?  I would like to add a regression test
> that tests for the problem being fixed here. (which I don't understand
> entirely)
>
> thanks,
> --Barry
>
>
> snpe wrote:
> > Hello,
> >   I am playing with DatabaseMetaData.getTables
> > I call getTables(null,null,"TABELA",null)
> >
> > ResultSet get (number of column of TABELA)+ 1 rows
> >
> > Patch for this problem is :
> > ---
> > /u2/postgrescvs/pgsql/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java
> > 2002-11-04 12:03:04.000000000 +0000
> > +++ org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java    2002-11-07
> > 22:11:11.000000000 +0000
> > @@ -1988,7 +1988,7 @@
> >              " END "+
> >              " AS TABLE_TYPE, d.description AS REMARKS "+
> >              " FROM pg_catalog.pg_namespace n, pg_catalog.pg_class c "+
> > -            " LEFT JOIN pg_catalog.pg_description d ON (c.oid = d.objoid) "+
> > +            " LEFT JOIN pg_catalog.pg_description d ON (c.oid = d.objoid and
> > d.objsubid = 0) "+
> >              " LEFT JOIN pg_catalog.pg_class dc ON (d.classoid=dc.oid AND
> > dc.relname='pg_class') "+
> >              " LEFT JOIN pg_catalog.pg_namespace dn ON (dn.oid=dc.relnamespace AND
> > dn.nspname='pg_catalog') "+
> >              " WHERE c.relnamespace = n.oid ";
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 2: you can get off all lists at once with the unregister command
> >     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
> >
>
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
>


pgsql-jdbc by date:

Previous
From: Barry Lind
Date:
Subject: Re: DatabaseMetaData.getTables problem
Next
From: "Josh Trutwin"
Date:
Subject: idle processes - pg_recvbuf