You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Sylvain Leroux (JIRA)" <ji...@apache.org> on 2009/11/08 01:50:32 UTC

[jira] Updated: (DERBY-4430) Make ij's SHOW and DESCRIBE commands more db agnostic

     [ https://issues.apache.org/jira/browse/DERBY-4430?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Sylvain Leroux updated DERBY-4430:
----------------------------------

    Attachment: DERBY-4430.ij.out
                DERBY-4430.sql
                DERBY-4430.patch

Hi,

Here is a first fix for this issue.
As Knut suggested, it uses 'stores{Upper,Lower}CaseIdentifiers'. However, I'm not sure it's very efficient to call getMetaData each time an identifier is encountered.

The other two attachments are:
- DERBY-4430.sql: the SQL file I used to manually test that patch against Postgre8.3
- DERBY-4430.ij.out: the output of ij when running this file

I've added a test in ij7 to ensure that lower case identifiers are still converted to upper case when we are running ij against Derby. 
This test passed - but only after I removed two white lines at the top of ij7.sql ???

One thing I was wondering: why using the ENGLISH locale when converting an identifier to upper/lower case?


> Make ij's SHOW and DESCRIBE commands more db agnostic
> -----------------------------------------------------
>
>                 Key: DERBY-4430
>                 URL: https://issues.apache.org/jira/browse/DERBY-4430
>             Project: Derby
>          Issue Type: Improvement
>          Components: Tools
>    Affects Versions: 10.6.0.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Sylvain Leroux
>            Priority: Minor
>         Attachments: DERBY-4430.ij.out, DERBY-4430.patch, DERBY-4430.sql
>
>
> ij's SHOW and DESCRIBE commands use DatabaseMetaData in order to be portable to other databases than Derby, and in many cases they work fine with other databases. However, the variants of the commands that take a table name or a schema name assume that unquoted identifiers are converted to and stored in upper case internally. This is not true for all databases, and since these commands don't accept quoted identifiers, there's currently no way to access tables/schemas that are not all upper case.
> One possible fix is to make the identifier() method in ij.jj use the DatabaseMetaData methods storesLowerCaseIdentifiers(), storesMixedCaseIdentifiers() and storesUpperCaseIdentifiers() to decide whether it should convert the identifier to lower case, keep it unchanged, or convert it to upper case. Currently, that method always converts the identifiers to upper case.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.