db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Van Couvering" <da...@vancouvering.com>
Subject Re: Connection.getCatalog() returns null and DMD.getCatalogs() returns empty result set
Date Thu, 11 Dec 2008 04:48:58 GMT
Thanks, Rick, makes sense, we have found a way to handle a database where
getCatalogs() returns an empty result set.

David

On Fri, Dec 5, 2008 at 6:30 AM, Rick Hillegas <Richard.Hillegas@sun.com>wrote:

> Hi David,
>
> "Catalog" is an undefined term for Derby. In contrast, for another open
> source database, MySQL, "catalog" means "database". MySQL seems to have a
> concept of "databases managed by this server". Derby does not.
>
> A Derby database can live anywhere in the file system and can be managed by
> any Derby engine running on the machine. You could speak of "databases
> potentially managed by this engine". Computing that list might mean scanning
> the entire file system which the engine has permission to read--and even
> looking inside all of the visible jar files since a read-only Derby database
> can be stored in a jar file. We might be able to give a well-defined meaning
> to "databases potentially managed by Derby", but I suspect that the devil is
> in the details.
>
> You could also speak about "databases currently managed by this engine".
> That could mean all of the databases currently booted by a given Derby
> engine. That meaning seems limited and well-defined to me but I don't think
> it maps exactly to what another RDBMS might mean by "catalog".
>
> What would you like "catalog" to mean for Derby?
>
> Here are the results of the getCatalogs() and getCatalogTerm() calls for a
> Derby engine and a MySQL server. Here I am using the DBMDWrapper functions
> attached to DERBY-3973:
>
> ij> -- Derby's list of catalogs
> select * from table( getCatalogs() ) s;
> TABLE_CAT
>
>
> --------------------------------------------------------------------------------------------------------------------------------
>
> 0 rows selected
> ij> -- Derby's preferred term for catalog
> values ( getCatalogTerm() );
> 1
>
>
> --------------------------------------------------------------------------------------------------------------------------------
> CATALOG
>
>
> 1 row selected
> ij> -- now ask MySQL the same questions
> call setDatabaseURL( 'com.mysql.jdbc.Driver',
> 'jdbc:mysql://localhost/world?user=root&password=' );
> 0 rows inserted/updated/deleted
> ij> -- MySQL's list of catalogs
> select * from table( getCatalogs() ) s;
> TABLE_CAT
>
>
> --------------------------------------------------------------------------------------------------------------------------------
> information_schema
>
> mysql
>
> test
>
> world
>
>
> 4 rows selected
> ij> -- MySQL's preferred term for catalog
> values ( getCatalogTerm() );
> 1
>
>
> --------------------------------------------------------------------------------------------------------------------------------
> database
>
>
> 1 row selected
> ij> -- release the MySQL connection
> call setDatabaseURL( '', '' );
> 0 rows inserted/updated/deleted
>
> Hope this helps,
> -Rick
>
> Lance J. Andersen wrote:
>
>> Depends on the concept in Derby of what a catalog is as your mileage can
>> vary between databases.
>> Some vendors treat it as the database name, others do not.
>>
>> Null is allowed to be returned if the concept of catalog is not applicable
>> to a given database
>>
>> Regards
>> Lance
>>
>> David Van Couvering wrote:
>>
>>> Shouldn't Connection.getCatalog() return the name of the database you are
>>> connected to, and shouldn't DMD.getCatalogs() return a result set with one
>>> row, representing the database you're connected to?
>>>
>>> This is causing us a bit of a headache when we're trying to inspect a
>>> Derby database in NetBeans...
>>>
>>> Thanks,
>>>
>>> David
>>> --
>>> David W. Van Couvering
>>> http://davidvancouvering.blogspot.com
>>>
>>
>


-- 
David W. Van Couvering
http://davidvancouvering.blogspot.com

Mime
View raw message