I have committed this to the trunk with svn 219207.

Suresh Thalamati (JIRA) wrote:
     [ http://issues.apache.org/jira/browse/DERBY-437?page=all ]

Suresh Thalamati updated DERBY-437:
-----------------------------------

    Attachment: derby437.diff

Currently for compress procedure to work incase of case-sensitive table name , schema 
names, they  needs to be passed in quotes like (  call 
SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP' , '"Order"'  ,1) ;). This behaviour is 
not consitent with other procedures and the docs.
This patch makes compress procedure  parameters  for table names ,  schema name 
should be passed in the case-sensitive form  if they are quoted identfiers and 
in upper case if they are not quoted SQL identifiers, similar to other system 
procedures.  Compress procedure   generates   ALTER COMPRESS  statement.with 
quoted table name and  schema name.

Ran derbyall suite , all tests passed.


SYSCS_UTIL.SYSCS_COMPRESS_TABLE  does not work  on tables that are created with 
delimited identifier names.
-----------------------------------------------------------------------------------------------------------

        Key: DERBY-437
        URL: http://issues.apache.org/jira/browse/DERBY-437
    Project: Derby
       Type: Bug
 Components: SQL
   Versions: 10.0.2.2
   Reporter: Suresh Thalamati
   Assignee: Suresh Thalamati
    Fix For: 10.2.0.0
Attachments: derby437.diff

COMPRESS_TABLE procedure forms SQL statement undeneath,  so if  the user does 
not pass quoted names , it is not working with delimited table/schema names..
eg: create table "Order"(a int ) ;
ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP' , 'Order'  ,1) ;
ERROR 38000: The exception 'SQL Exception: Syntax error: Encountered "Order" at
line 1, column 17.' was thrown while evaluating an expression.
ERROR 42X01: Syntax error: Encountered "Order" at line 1, column 17.
With quoted names it works fine.
ij> call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP' , '"Order"'  ,1) ;
0 rows inserted/updated/deleted
If  it is  expected that  user to pass quoted names for 
SYSCS_UTIL.SYSCS_COMPRESS_TABLE, then it is ok.
But doc is not clear:
COMPRESS_TABLE doc in the reference manual:
TABLENAME
  An input argument of type VARCHAR(128) that specifies the table name
  of the table. The string must exactly match the case of the table
  name, and the argument of "Fred" will be passed to SQL as the
  delimited identifier 'Fred'. Passing a null will result in an error.
So either doc has to be fixed or code needs to be fixed to handle  quoted names 
for compress table.
I think the code has to fixed to be consistent with other system procedures. .  
i.e
If you  created a schema, table or column name as a non-delimited identifier, 
you must pass the name in all upper case. If you created a schema, table or 
column name as a delimited identifier, you must pass the name in the same case 
as it was created.
For example:
create table "Order"(a int ) ;
call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP' , 'Order'  ,1) ;
create table t1( a int ) call SYSCS_UTIL.SYSCS_COMPRESS_TABLE('APP' , 'T1' ,1) ;



Reply via email to