Re: DbVisualizer shows same tables for all DBs

From: Daniel Serodio <daniel(at)checkforte(dot)com(dot)br>
To: Barry Lind <blind(at)xythos(dot)com>
Cc: Kris Jurka <books(at)ejurka(dot)com>, PostgreSQL JDBC List <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: DbVisualizer shows same tables for all DBs
Date: 2003-02-05 11:56:15
Message-ID: 1044446174.1407.30.camel@kelly.ckf
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)checkforte(dot)com(dot)br>
CheckForte

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Achilleus Mantzios 2003-02-05 13:11:31 Re: 7.3.1 UTF-8 bug(?) and 7.2.x Charset compatibility
Previous Message Dave Cramer 2003-02-05 11:19:30 Re: more insertRow() bugs and fixes