Re: DbVisualizer shows same tables for all DBs - Mailing list pgsql-jdbc

From Daniel Serodio
Subject Re: DbVisualizer shows same tables for all DBs
Date
Msg-id 1044446174.1407.30.camel@kelly.ckf
Whole thread Raw
In response to Re: DbVisualizer shows same tables for all DBs  (Barry Lind <blind@xythos.com>)
List pgsql-jdbc
See comments below.

On Tue, 2003-02-04 at 23:35, Barry Lind wrote:
> Here is my take on what should be done:
>
> Kris Jurka wrote:
> >
> > On 28 Jan 2003, Daniel Serodio wrote:
> >
> >
> >>I know Postgresql doesn't allow changing DBs with the same Connection,
> >>but it should let tools know about this limitation via DatabaseMetadata.
> >>I'm not particularly familiar with the JDBC spec, so I don't know if the
> >>driver doesn't implement the spec correctly or if the spec doesn't cover
> >>this sutiation.
> >>
> >>The fact is, when I connect to a Postgresql DB using DbVisualizer Free
> >>3.1 (www.minq.se) and latest JDBC driver (build 106), I specify which DB
> >>I want to connect to in the connection URL (ie
> >>"jdbc:postgresql://localhost:5432/testdb"), and 3 DBs show up: testdb,
> >>template0 and template1. The weird thing is that template0 and template1
> >>seem to be exact copies of testdb. AFAIK, what's really happening is
> >>that the driver can't "see" other DBs besides the one I connected to
> >>(testdb), so it shows all DBs as if they were the same. IMHO, this
> >>behaviour is quite confusing.
> >
> >
> > The DatabaseMetaData.getCatalogs() method is called by DbVisualizer to get
> > the list of available databases.  When trying to display the tables in the
> > database it passes the desired catalog name into the getTables method, but
> > it is ignored.
> >
> > What could be done:
> >
> > 1) Make getCatalogs() only return the current catalog.
>
> I think the current functionality is fine, however I could be convinced
> otherwise.
>
> >
> > 2) Make other DatabaseMetaData methods throw an SQLException if a catalog
> > other than Connection.getCatalog() is used.
>
> I don't think an exception is necessary, as clients will not be
> expecting to see an exception.  For interoperability across different
> clients, I think the best that can be done here is to return nothing.

Agreed.

> So the way things work today, if you are using a client app to browse
> the objects you would see:
>
> database1
>    - db1table1
>    - db1table2
> database2
>    - db1table1
>    - db1table2

Exactly.

> which is clearly wrong.  So I am suggesting that we return the following
> information:
>
> database1
>    - db1table1
>    - db1table2
> database2
>    <empty>

I think this is the best option.

> or we could:
>
> database1
>    - db1table1
>    - db1table2
> <only one db shown>
>
> >
> > The getCatalogs() method's javadoc says "Gets the catalog names available
> > in this database."  Does that mean are available to this connection or to
> > the current user on another connection or another user on another
> > connection?
> >
>
> I don't know.
>
> > Kris Jurka

> Does anyone have any opinions on which way to go?
>
> thanks,
> --Barry

--
Daniel Serodio <daniel@checkforte.com.br>
CheckForte


pgsql-jdbc by date:

Previous
From: Dave Cramer
Date:
Subject: Re: more insertRow() bugs and fixes
Next
From: "Amit Kelkar"
Date:
Subject: how to unsubscribe