db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mike Matrigali <mikem_...@sbcglobal.net>
Subject Re: getColumns(...) and quoted table names ?
Date Thu, 23 Jun 2005 18:25:33 GMT
suresh, do you know yet if this is a problem with all the
system procedures which take a table name, or only those
that take the table name and build a query which it then
sends back to the parser?

Suresh Thalamati wrote:

> Thanks Francois,  your explanation  was  realy  helpful.
> 
> -suresh
> 
> Francois Orsini wrote:
> 
>> The quotes are there for the parser to treat the table object
>> (ansi-92) identifier as case sensitive and for the reason you
>> mentioned when dealing with objects that have reserved words as
>> identifiers...
>>
>> The metadata DatabaseMetaData.getColumns() method does not really take
>> a table name per-se (to be picky), but more like a table name
>> "pattern" following the JDBC pattern-matching format convention ('%'
>> and '_' characters can be used).
>>
>> I believe the way it is expressed currently in the getColumns() or
>> getTables() metadata calls is correct as underneath, system catalogs
>> get queried via an (internal) SQL statement which takes a
>> case-sensitive string as search predicate to select the matching
>> tuples - in your case matching the table name expressed in uppercase
>> will match the table you created (obviously).
>>
>> One thing you could also do is new'ing a DbTable object for the
>> qualifying resultset row that matches the table you are looking for
>> with a getTables() call (using a qualifying/restrictive pattern) and
>> then specificy the table name to use in the getColumns() call via a
>> DbTable.getTableName() call...you might want to do this if you want to
>> ensure you are dealing with a valid table satisfying your search
>> before returning the columns...
>>
>> Just some thoughts...
>>
>> --francois
>>
>> On 6/22/05, Suresh Thalamati <suresh.thalamati@gmail.com> wrote:
>>  
>>
>>> I have  a table that uses reserved word as name , so it is quoted like :
>>> create table "ORDER"(a int ) ;
>>> All  SQL queries seems to expect it as quoted name , except Database
>>> Metadata getColumns(..).
>>>
>>> DatabaseMetaData dmd = conn.getMetaData();
>>> ResultSet rs = dmd.getColumns(null, null , "\"ORDER\"" , null) ;
>>> does not return  any column information , where as
>>>
>>> ResultSet rs = dmd.getColumns(null, null , "ORDER"" , null) ;
>>> retunns the  "ORDER"  table columns Information.
>>>
>>> I am wondering what  is the correct usage here ,  i.e  does metadata
>>> calls suppose to
>>> expect   quoted tables names like SQL or  the  one without quotes ?
>>>
>>> Thanks
>>> -suresht
>>>
>>>
>>>
>>>
>>>   
>>
>>
>>  
>>
> 
> 
> 

Mime
View raw message