Single character does not match high value unicode character with collation 
TERRITORY_BASED
-------------------------------------------------------------------------------------------

                 Key: DERBY-2967
                 URL: https://issues.apache.org/jira/browse/DERBY-2967
             Project: Derby
          Issue Type: Bug
          Components: SQL
    Affects Versions: 10.4.0.0
            Reporter: Kathey Marsden


With TERRITORY_BASED collation '_' does not match  the character \uFA2D.  It is 
the same for english or norwegian. FOR collation UCS_BASIC it matches fine.  
Could you tell me if this is a bug?
Here is a program to reproduce.


import java.sql.*;

public class HighCharacter {

   public static void main(String args[]) throws Exception
   {
   System.out.println("\n Territory no_NO");
   Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
   Connection conn = 
DriverManager.getConnection("jdbc:derby:nordb;create=true;territory=no_NO;collation=TERRITORY_BASED");
   testLikeWithHighestValidCharacter(conn);
   conn.close();
   System.out.println("\n Territory en_US");
   conn = 
DriverManager.getConnection("jdbc:derby:endb;create=true;territory=en_US;collation=TERRITORY_BASED");
   testLikeWithHighestValidCharacter(conn);
   conn.close();
   System.out.println("\n Collation USC_BASIC");
   conn = DriverManager.getConnection("jdbc:derby:basicdb;create=true");
   testLikeWithHighestValidCharacter(conn);

   }


public static  void testLikeWithHighestValidCharacter(Connection conn) throws 
SQLException {
   Statement stmt = conn.createStatement();
   try {
   stmt.executeUpdate("drop table t1");
   }catch (SQLException se)
   {// drop failure ok.
   }
   stmt.executeUpdate("create table t1(c11 int)");
   stmt.executeUpdate("insert into t1 values 1");
 
   // \uFA2D - the highest valid character according to
   // Character.isDefined() of JDK 1.4;
   PreparedStatement ps =
   conn.prepareStatement("select 1 from t1 where '\uFA2D' like ?");
     String[] match = { "%", "_", "\uFA2D" };

   for (int i = 0; i < match.length; i++) {
   System.out.println("select 1 from t1 where '\\uFA2D' like " + match[i]);
   ps.setString(1, match[i]);
   ResultSet rs = ps.executeQuery();
   if( rs.next() && rs.getString(1).equals("1"))
       System.out.println("PASS");
   else          System.out.println("FAIL: no match");

   rs.close();
   }
  }
}



Mamta made some comments on this issue in the following thread:

http://www.nabble.com/Single-character-does-not-match-high-value-unicode-character-with-collation-TERRITORY_BASED.-Is-this-a-bug-tf4118767.html




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

Reply via email to