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 "Jørgen Løland (JIRA)" <ji...@apache.org> on 2007/04/25 10:04:15 UTC

[jira] Updated: (DERBY-2222) 'show indexes in SCHEMANAME' does not work with the client driver

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

Jørgen Løland updated DERBY-2222:
---------------------------------

    Attachment: ijMultipleResultSetResult.java
                DERBY-2222-1.stat
                DERBY-2222-1.diff

By fixing DERBY-1484, DatabaseMetaData#getIndexInfo will no longer allow null values for the table name. This breaks the "show indexes" functionality of ij in its current implementation. 

To remedy this, the "show index" functionality has been rewritten to something like:

---- code ---
ij.jj#showIndexes (schema, table){

if (table != null) return new ijResultSetResult(dbmd.getIndexInfo(schema, table))
else 
  dbmd.getTables(schema)
  for each tablename in schema 
     resultSetList.add(dbmd.getIndexInfo(schema, table))
  return new ijMultipleResultSetResult(resultSetList)
---- /code ---

The posted patch adds a new subclass of ijResultImpl (currently called ijMultipleResultSetResult) that effectively is a List of ResultSet. JDBCDisplayUtil is modified to handle this by showing the banner first, and then show all the rows in all resultsets in the ijMultipleResultSetResult object. 

I will apply the same fix to all ij functionality that uses methods in DatabaseMetaData where table = null is no longer allowed. See DERBY-1484 for details.

> 'show indexes in SCHEMANAME' does not work with the client driver
> -----------------------------------------------------------------
>
>                 Key: DERBY-2222
>                 URL: https://issues.apache.org/jira/browse/DERBY-2222
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Client, Tools
>    Affects Versions: 10.2.2.0, 10.3.0.0
>            Reporter: Kristian Waagan
>         Assigned To: Jørgen Løland
>         Attachments: DERBY-2222-1.diff, DERBY-2222-1.stat, ijMultipleResultSetResult.java
>
>
> The ij command 'show indexes in SCHEMANAME' does not work at all with the client driver.
> It does work with the embedded driver.
> Sample output from ij:
> ij> connect 'jdbc:derby://localhost/myDB;create=true';
> ij> create table test (id int primary key);
> 0 rows inserted/updated/deleted
> ij> show indexes in app;
> ERROR XJ103: Table name can not be null
> ij> show indexes from test;
> TABLE_NAME          |COLUMN_NAME         |NON_U&|TYPE|ASC&|CARDINA&|PAGES
> ----------------------------------------------------------------------------
> TEST                |ID                  |0     |3   |A   |NULL    |NULL
> 1 row selected
> ij> show indexes from app.test;
> TABLE_NAME          |COLUMN_NAME         |NON_U&|TYPE|ASC&|CARDINA&|PAGES
> ----------------------------------------------------------------------------
> TEST                |ID                  |0     |3   |A   |NULL    |NULL
> 1 row selected
> ij>
> Using delimited table and/or schema names does not work, but I think this is according to documentation.
> I.e.:
> ij> show indexes from "TEST";
> ERROR 42X01: Syntax error: Encountered "show" at line 1, column 1.
> ij> show indexes from "APP".test;
> ERROR 42X01: Syntax error: Encountered "show" at line 1, column 1.
> ij> show indexes from "APP"."TEST";
> ERROR 42X01: Syntax error: Encountered "show" at line 1, column 1.
> ij>

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