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.
2) Make other DatabaseMetaData methods throw an SQLException if a catalog
other than Connection.getCatalog() is used.
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?
Kris Jurka