The wordier message seem good to me. And is definitely better than what we have now.

Kathey Marsden (JIRA) wrote:
[ https://issues.apache.org/jira/browse/DERBY-2668?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12517658 ]
Kathey Marsden commented on DERBY-2668:
---------------------------------------

Here is an alternate, wordier message.  Would something with this level of 
detail be better?


ij> select * from sys.systables where tablename = 'T1';
ERROR 42818: Comparisons between 'VARCHAR (UCS_BASIC)' and 'CHAR 
(TERRITORY_BASED)' are not supported. Types must be comparable. String types 
must also have matching collation. If collation does not match, a possible 
solution is to cast operands to force them to the default collation (e.g. 
select tablename from sys.systables where CAST(tablename as VARCHAR(128)) = 
'T1')


At the time of compilation of a comparison operation, if the collation types of 
the operands do not match, then we should throw a meaningful error message.
-----------------------------------------------------------------------------------------------------------------------------------------------------------

                Key: DERBY-2668
                URL: https://issues.apache.org/jira/browse/DERBY-2668
            Project: Derby
         Issue Type: Improvement
         Components: SQL
   Affects Versions: 10.3.0.0
           Reporter: Mamta A. Satoor
           Assignee: Kathey Marsden
        Attachments: derby-2668_preview_diff.txt


In Derby 10.3, we are adding a new feature (DERBY-1478) which will allow character string 
types to have a territory based collation (except for persistent character string type 
columns from system schema). When 2 character types are compared, they should have the 
same collation type associated with them. If not then Derby 10.3 will throw an exception. 
Currently, in Derby 10.3 codeline, the exception thrown is something like "ERROR 
42818: Comparisons between 'VARCHAR' and 'CHAR' are not supported." but this error 
message is misleading. The error is really for collation mismatch. We should fix 
following error so it indicates the real reason behind the exception.
eg sql
ij> connect 'nodb;create=true;territory=no;collation=TERRITORY_BASED'; ij> select * from sys.systables where tablename = 'T1'; ERROR 42818: Comparisons between 'VARCHAR' and 'CHAR' are not supported.

Reply via email to