You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Rick Hillegas (JIRA)" <ji...@apache.org> on 2010/11/08 22:00:12 UTC

[jira] Updated: (DERBY-4890) Different string to boolean conversion on embedded and client

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

Rick Hillegas updated DERBY-4890:
---------------------------------

    Attachment: derby-4890-01-aa-setStringBoolean.diff

Attaching derby-4890-01-aa-setStringBoolean.diff. This patch fixes the bug. I am running tests now.

BOOLEAN needed to be added to the list of datatypes for which the network setString() method works.


Touches the following files:

-------------

M      java/client/org/apache/derby/client/am/PreparedStatement.java

Added BOOLEAN to the list of datatypes for which setString() works.

-------------

M      java/testing/org/apache/derbyTesting/functionTests/tests/lang/BooleanValuesTest.java

Added some test cases for this bug and for DERBY-4889.

-------------

M      java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/ParameterMappingTest.java

Removed code recently added to bypass this problem.


> Different string to boolean conversion on embedded and client
> -------------------------------------------------------------
>
>                 Key: DERBY-4890
>                 URL: https://issues.apache.org/jira/browse/DERBY-4890
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC
>    Affects Versions: 10.7.1.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Rick Hillegas
>         Attachments: derby-4890-01-aa-setStringBoolean.diff
>
>
> The following code fragment behaves differently on client and embedded:
>         PreparedStatement ps = c.prepareStatement("values cast(? as boolean)");
>         ps.setString(1, "TRUE");
>         ResultSet rs = ps.executeQuery();
>         rs.next();
>         System.out.println(rs.getBoolean(1));
> Embedded prints "true". Client raises an exception:
> Exception in thread "main" java.sql.SQLDataException: An attempt was made to get a data value of type 'VARCHAR' from a data value of type 'BOOLEAN'.
> 	at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:72)
> 	at org.apache.derby.client.am.SqlException.getSQLException(SqlException.java:358)
> 	at org.apache.derby.client.am.PreparedStatement.setString(PreparedStatement.java:884)
> 	at SetByte.main(SetByte.java:6)
> Caused by: org.apache.derby.client.am.SqlException: An attempt was made to get a data value of type 'VARCHAR' from a data value of type 'BOOLEAN'.
> 	at org.apache.derby.client.am.PreparedStatement$PossibleTypes.throw22005Exception(PreparedStatement.java:3069)
> 	at org.apache.derby.client.am.PreparedStatement.setString(PreparedStatement.java:874)
> 	... 1 more

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