db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kathey Marsden <kmarsdende...@sbcglobal.net>
Subject Single character does not match high value unicode character with collation TERRITORY_BASED. Is this a bug
Date Fri, 20 Jul 2007 18:15:52 GMT
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.


Kathey


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();
    }
   
}
}



Mime
View raw message