[
https://issues.apache.org/jira/browse/DERBY-4964?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Knut Anders Hatlen updated DERBY-4964:
--------------------------------------
Attachment: derby-4964-1a.diff
Attaching a patch to fix this bug. This patch contains more tests. All the new
test cases pass with no changes needed when run against the embedded driver.
With the fix applied, they also pass when run against the client driver.
ParameterMappingTest.java: Add testing of setObject(int,Object,int) for all
types (same as mapping-test.diff).
BooleanValuesTest.java: Add more specific tests for boolean with a wider range
of input values.
CrossConverters.java: Add separate cases for converting to boolean and stop
handling boolean conversions as integer conversions.
Types.java: Add handling of Types.BIT, so that error messages say "BOOLEAN"
instead of "<UNKNOWN>" when attempting invalid conversions like setObject(col,
"test", Types.BIT).
All the regression tests ran cleanly with the patch.
> Client driver fails to convert string to boolean with setObject(col, str,
> Types.BIT)
> ------------------------------------------------------------------------------------
>
> Key: DERBY-4964
> URL: https://issues.apache.org/jira/browse/DERBY-4964
> Project: Derby
> Issue Type: Bug
> Components: JDBC
> Affects Versions: 10.7.1.1
> Reporter: Knut Anders Hatlen
> Assignee: Knut Anders Hatlen
> Attachments: derby-4964-1a.diff, mapping-test.diff
>
>
> The following code
> PreparedStatement ps = c.prepareStatement("values cast(? as
> boolean)");
> ps.setObject(1, "true", Types.BIT);
> ResultSet rs = ps.executeQuery();
> rs.next();
> System.out.println(rs.getString(1));
> executes successfully using the embedded driver, but fails when using the
> client driver:
> Exception in thread "main" java.sql.SQLDataException: Invalid character
> string format for type INTEGER.
> at
> org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown
> Source)
> at org.apache.derby.client.am.SqlException.getSQLException(Unknown
> Source)
> at org.apache.derby.client.am.PreparedStatement.setObject(Unknown
> Source)
> at Test.main(Test.java:8)
> Caused by: org.apache.derby.client.am.SqlException: Invalid character string
> format for type INTEGER.
> at org.apache.derby.client.am.CrossConverters.setObject(Unknown Source)
> at org.apache.derby.client.am.CrossConverters.setObject(Unknown Source)
> at org.apache.derby.client.am.PreparedStatement.setObjectX(Unknown
> Source)
> ... 2 more
> Caused by: java.lang.NumberFormatException: For input string: "true"
> at
> java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
> at java.lang.Integer.parseInt(Integer.java:449)
> at java.lang.Integer.valueOf(Integer.java:554)
> ... 5 more
> This issue was found when running the Java EE CTS with Derby 10.7.1.1.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.