db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mike Matrigali (JIRA)" <j...@apache.org>
Subject [jira] Updated: (DERBY-2335) Compare character datatypes with different collation ordering.
Date Tue, 15 May 2007 19:13:16 GMT

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

Mike Matrigali updated DERBY-2335:

I'll try out the latest patch.  

A couple of quick comments:
looks like you included the import of ExpressionClassBuilder twice in TypeCompiler.

Also doesn't look like you updated javadoc to reflect the new parameter.

What exactly is the rule about including impl reference in interfaces defined in :
opensource/java/engine/org/apache/derby/iapi/sql/compile.  I see you added an include of 
TypeCompiler.java:import org.apache.derby.impl.sql.compile.ExpressionClassBuilder;

I see in this directory there are a couple of other examples, each with a comment about we
really should not do it, but went 
ahead and did it:
NodeFactory.java:/* Strictly speaking we shouldn't import classes under the impl
 hierarchy here
NodeFactory.java:import org.apache.derby.impl.sql.compile.QueryTreeNode;
NodeFactory.java:import org.apache.derby.impl.sql.compile.ResultColumnList;
NodeFactory.java:import org.apache.derby.impl.sql.compile.ResultSetNode;
Parser.java:/* Strictly speaking we shouldn't import classes under the impl hier
archy here
Parser.java:import org.apache.derby.impl.sql.compile.StatementNode;

When I looked at Dan's suggestion I also ran into this issue.  Your changes seemed the obvious
way to pass in the needed
info, but ran into this interface change that needed to reference an internal implementation.
 Longer term does this mean that
maybe the CLass builder should have an interface also?

> Compare character datatypes with different collation ordering.
> --------------------------------------------------------------
>                 Key: DERBY-2335
>                 URL: https://issues.apache.org/jira/browse/DERBY-2335
>             Project: Derby
>          Issue Type: Sub-task
>          Components: SQL
>    Affects Versions:
>            Reporter: Mamta A. Satoor
>         Assigned To: Mamta A. Satoor
>         Attachments: DERBY2335_correct_collation_for_constants_persistent_column_v1_diff.txt,
DERBY2335_correct_collation_for_constants_persistent_column_v1_stat.txt, DERBY2335_fix_stringCompare_Method_CollatorSQLxxx_classes_v1_diff.txt,
DERBY2335_fix_stringCompare_Method_CollatorSQLxxx_classes_v1_stat.txt, DERBY2335_More_tests_And_Fix_getNull_v1_diff.txt,
DERBY2335_More_tests_And_Fix_getNull_v1_stat.txt, DERBY2335_Use_LCC_in_ValueNode_v1_diff.txt,
DERBY2335_Use_LCC_in_ValueNode_v1_stat.txt, DERBY2335_Use_PushDataValueFactory_in_ExpressionClassBuilder_v1_diff.txt,
> The parent task DERBY-1478 will enable users to have a different collation order for
user-defined character datatypes compared to UNICODE based collation, UCS_BASIC, used by system
tables. This sub-task is added to handle the case where a comparison is made between character
datatypes with different collation order. 
> For instance 
> Let's say, a database is created to use a territory based collation for character types.
And say there is a userSchema schema in that database which has a table tableInfo with column
tablename defined as VARCHAR. This tableInfo.tablename will have territory based collation
assoicated with it. And say this column is then compared with a VARCHAR column in SYS schema,
then how will the comparison happen, since the 2 columns being compared have different collation
associated with them? 
> select * from sys.systables and userSchema.tableInfo where systables.tablename = tableInfo,tablename

> Thanks to Rick for taking the time out on this issue. He had following suggestion
> </Rick comment start>
> "As I read part 2 of the SQL Standard, it looks like you need a CAST in order to compare
2 strings which have different collations bound to them. Both string operands must have the
same collation--that is my reading of Syntax rule 3b in section 9.13. Sections 6.12 and 6.1
explain how to cast the operands so that you can compare them. I think you need to write an
expression like this: 
>    WHERE userStringCol = CAST ( systemStringCol AS VARCHAR COLLATE userStringColumnsCollation
> Here's an example I googled up: http://docs.openlinksw.com/virtuoso/sqlrefDATATYPES.html.
Hope this helps. 
> </Rick comment end>
> When this task is taken up, it would be good to explore Rick's suggestion.

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

View raw message