db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sunitha Kambhampati (JIRA)" <derby-...@db.apache.org>
Subject [jira] Commented: (DERBY-1335) The object names in SQLException messages are not in UTF-16
Date Fri, 19 May 2006 16:44:31 GMT
    [ http://issues.apache.org/jira/browse/DERBY-1335?page=comments#action_12412536 ] 

Sunitha Kambhampati commented on DERBY-1335:
--------------------------------------------

Recently, we fixed some encoding related issues in the client and server code in this area..
 These  fixes are not in the version that you used.  Can you try to pick up the jars from
the trunk or the latest snapshot  of 10.1 codeline  that is available which is 10.1.2.4 http://db.apache.org/derby/derby_downloads.html#Snapshot+Jars

and confirm that it solves your problem.   

I ran this program with jars from the trunk and it worked OK .

The  output is 
C:\TESTING>java MainDerby
Table name code point: 233
Exception message: 'é' cannot be a column of a primary key or unique key because it can contain
null values.
Table name code points in exception message: 233

> The object names in SQLException messages are not in UTF-16
> -----------------------------------------------------------
>
>          Key: DERBY-1335
>          URL: http://issues.apache.org/jira/browse/DERBY-1335
>      Project: Derby
>         Type: Bug

>   Components: Network Client
>     Versions: 10.1.2.1
>  Environment: Debian unstable, Linux 2.6.14.2, libc 2.3.5-8, Sun JDK 1.5.0_05-b05, Derby
10.1.2.1
>     Reporter: Andrei Badea
>     Priority: Minor

>
> The object names in SQLException messages are not in UTF-16, although they are sent to
the server in that encoding. For example, when adding a both NULL and UNIQUE column the resulting
exception message will contain the column name (like in "'é' cannot be a column of a primary
key or unique key because it can contain null values.'). If the column name contained characters
outside the range U+0000..U+007F these characters are not encoded in UTF-16 in the exception
message. Can only reproduce with the client driver, the embedded driver behaves as expected.
> Code to reproduce the issue (have a database called "sample" containing a table called
"TEST"):
> -----%<-----
> import java.sql.Connection;     
> import java.sql.DriverManager;
> import java.sql.SQLException;
> import java.sql.Statement;
> public class MainDerby {
>     public static void main(String[] args) throws Exception {
>         Class.forName("org.apache.derby.jdbc.ClientDriver");
>         
>         Connection conn = DriverManager.getConnection("jdbc:derby://localhost:1527/sample",
"app", "app");
>         try {
>             String tableName = "é";
>             System.out.println("Table name code point: " + (int)tableName.charAt(0));
>             Statement stmt = conn.createStatement();
>             stmt.executeUpdate("ALTER TABLE test ADD \"" + tableName + "\" INT UNIQUE");
>         } catch (SQLException e) {
>             String message = e.getMessage(); // '??' cannot be a column of a primary
key or unique key because it can contain null values.
>             System.out.println("Exception message: " + message);
>             System.out.print("Table name code points in exception message: ");
>             if (message.charAt(0) == '\'') { // 
>                 int i = 1;
>                 char ch = message.charAt(i);
>                 while (ch != '\'') {
>                     System.out.print((int)ch);
>                     System.out.print(" ");
>                     i++;
>                     ch = message.charAt(i);
>                 }
>             }
>             System.out.println();
>         } finally {
>             conn.close();
>         }
>     }
> }
> -----%<-----
> This program produces the following output:
> -----%<-----
> Table name code point: 233
> Exception message: '??' cannot be a column of a primary key or unique key because it
can contain null values.
> Table name code points in exception message: 258 352 
> -----%<-----
> Note "??" is the UTF-8 representation of "é".
> This was initially reported as NetBeans issue 76584 (http://www.netbeans.org/issues/show_bug.cgi?id=76584).

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message