Обсуждение: Bug - DatabaseMetaData.getCatalogs() was [Novice] Can't get list of databases with \list

Поиск
Список
Период
Сортировка

Bug - DatabaseMetaData.getCatalogs() was [Novice] Can't get list of databases with \list

От
Richard Broersma
Дата:
On Mon, Nov 2, 2009 at 1:05 PM, Christopher Frank <c.frank@gmail.com> wrote:

>> > As for JDBC, there may be something that gives equivalent information,
>> > but I
>> > couldn't find it.
>>
>> http://java.sun.com/javase/6/docs/api/java/sql/DatabaseMetaData.html
>>
>> getCatalogs()

> I had tried that but it only returned one database, the database to which I
> was already connected. There should have been 3 others.

I verified that the DatabaseMetaData.getCatalogs() only returns a
ResultSet with the currently connect database rather than all of the
databases in the PostgreSQL cluster.

I see there was a previous discussion on this topic, stating that
Databases and Catalogs are not the same, so only returning the
currently connected database is correct:

http://archives.postgresql.org/pgsql-jdbc/2007-02/msg00112.php

However, calling the DatabaseMetaData.getCatalogTerm() function states
that the PostgreSQL's equivalent to a Catalog is a "database".  For
this reason, it seems reasonable to me that getCatalogs() should
return a listing off all PostgreSQL databases.

If one really only wants the currently connected database,
Connection.getCatalog() will suffice.

--
Regards,
Richard Broersma Jr.

Visit the Los Angeles PostgreSQL Users Group (LAPUG)
http://pugs.postgresql.org/lapug

Re: Bug - DatabaseMetaData.getCatalogs() was [Novice] Can't get list of databases with \list

От
Michael Wood
Дата:
2009/11/3 Richard Broersma <richard.broersma@gmail.com>:
> On Mon, Nov 2, 2009 at 1:05 PM, Christopher Frank <c.frank@gmail.com> wrote:
>
>>> > As for JDBC, there may be something that gives equivalent information,
>>> > but I
>>> > couldn't find it.
>>>
>>> http://java.sun.com/javase/6/docs/api/java/sql/DatabaseMetaData.html
>>>
>>> getCatalogs()
>
>> I had tried that but it only returned one database, the database to which I
>> was already connected. There should have been 3 others.
>
> I verified that the DatabaseMetaData.getCatalogs() only returns a
> ResultSet with the currently connect database rather than all of the
> databases in the PostgreSQL cluster.

What does it do when you have multiple schemas (schemata?) in the database?

--
Michael Wood <esiotrot@gmail.com>

Re: Bug - DatabaseMetaData.getCatalogs() was [Novice] Can't get list of databases with \list

От
Richard Broersma
Дата:
On Tue, Nov 3, 2009 at 10:29 AM, Michael Wood <esiotrot@gmail.com> wrote:

> What does it do when you have multiple schemas (schemata?) in the database?

It returns a ResultSet listing all of the schemas:

Where is what I get when I tested it:

a
b
c
information_schema
pg_catalog
pg_toast_temp_1
public


--
Regards,
Richard Broersma Jr.

Visit the Los Angeles PostgreSQL Users Group (LAPUG)
http://pugs.postgresql.org/lapug

Re: Bug - DatabaseMetaData.getCatalogs() was [Novice] Can't get list of databases with \list

От
Francisco Leovey
Дата:
A simple query
 
  select datname from pg_database
 
will return all the database names
 
 


--- On Tue, 11/3/09, Richard Broersma <richard.broersma@gmail.com> wrote:

From: Richard Broersma <richard.broersma@gmail.com>
Subject: [NOVICE] Bug - DatabaseMetaData.getCatalogs() was [Novice] Can't get list of databases with \list
To: "Christopher Frank" <c.frank@gmail.com>
Cc: pgsql-novice@postgresql.org, "pgsql-jdbc" <pgsql-jdbc@postgresql.org>
Date: Tuesday, November 3, 2009, 3:36 PM

On Mon, Nov 2, 2009 at 1:05 PM, Christopher Frank <c.frank@gmail.com> wrote:

>> > As for JDBC, there may be something that gives equivalent information,
>> > but I
>> > couldn't find it.
>>
>> http://java.sun.com/javase/6/docs/api/java/sql/DatabaseMetaData.html
>>
>> getCatalogs()

> I had tried that but it only returned one database, the database to which I
> was already connected. There should have been 3 others.

I verified that the DatabaseMetaData.getCatalogs() only returns a
ResultSet with the currently connect database rather than all of the
databases in the PostgreSQL cluster.

I see there was a previous discussion on this topic, stating that
Databases and Catalogs are not the same, so only returning the
currently connected database is correct:

http://archives.postgresql.org/pgsql-jdbc/2007-02/msg00112.php

However, calling the DatabaseMetaData.getCatalogTerm() function states
that the PostgreSQL's equivalent to a Catalog is a "database".  For
this reason, it seems reasonable to me that getCatalogs() should
return a listing off all PostgreSQL databases.

If one really only wants the currently connected database,
Connection.getCatalog() will suffice.

--
Regards,
Richard Broersma Jr.

Visit the Los Angeles PostgreSQL Users Group (LAPUG)
http://pugs.postgresql.org/lapug

--
Sent via pgsql-novice mailing list (pgsql-novice@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-novice


On Tue, 3 Nov 2009, Richard Broersma wrote:

> I verified that the DatabaseMetaData.getCatalogs() only returns a
> ResultSet with the currently connect database rather than all of the
> databases in the PostgreSQL cluster.
>

The previous discussion to refer to is probably:

http://archives.postgresql.org/pgsql-jdbc/2004-01/msg00164.php

Crippling getCatalogs was the best proposed solution to the fact that no
other catalog based functionality existed (or could).

Kris Jurka