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.