Re: DbVisualizer shows same tables for all DBs
| От | Barry Lind |
|---|---|
| Тема | Re: DbVisualizer shows same tables for all DBs |
| Дата | |
| Msg-id | 3E406A55.5050309@xythos.com обсуждение исходный текст |
| Ответ на | Re: DbVisualizer shows same tables for all DBs (Kris Jurka <books@ejurka.com>) |
| Ответы |
Re: DbVisualizer shows same tables for all DBs
|
| Список | pgsql-jdbc |
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. 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 which is clearly wrong. So I am suggesting that we return the following information: database1 - db1table1 - db1table2 database2 <empty> 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
В списке pgsql-jdbc по дате отправления: