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
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 |