[ 
http://issues.apache.org/jira/browse/DERBY-1321?page=comments#action_12383195 ] 

Øystein Grøvlen commented on DERBY-1321:
----------------------------------------

The problem seems to be that parameterMetaData_.clientParameterType is not 
copied when doing addBatch.  Hence, the parameter types are overwritten when 
setting the parameters for the next statement. This results in that during 
execution, the parameter types for the last statement will be used for all 
statements of the batch.

> ClassCastException in client for batched statements
> ---------------------------------------------------
>
>          Key: DERBY-1321
>          URL: http://issues.apache.org/jira/browse/DERBY-1321
>      Project: Derby
>         Type: Bug

>   Components: Network Client
>     Versions: 10.2.0.0
>  Environment: Solaris x86, trunk of March 31st
>     Reporter: Øystein Grøvlen
>  Attachments: RunDerby.java
>
> In a program using the client driver, I get a ClassCastException when 
> batching prepared statements.  The code that creates the problem is:
>             stmt = connection.createStatement();              
>             stmt.executeUpdate("CREATE TABLE LONGTESTTABLE ( LONG_VALUE 
> NUMERIC(20) )");
>             String sql = "insert into LONGTESTTABLE (LONG_VALUE) values ( ? 
> )";
>             PreparedStatement pstmt = connection.prepareStatement(sql);
>             pstmt.setLong(1, (long)10 ); // long value
>             pstmt.addBatch();
>             //pstmt.setNull(1, Types.BIGINT ); // THIS WORKS
>             pstmt.setNull(1, Types.INTEGER ); // THIS DOES NOT WORK
>             pstmt.addBatch();
>             int[] updateCounts = pstmt.executeBatch();
> If I add the second statement to the batch before the first one, it works.
> If I insert an executeBatch() between the statements, it works
> If I execute this with the embedded driver, it works
> The stack trace I get is:
> Exception in thread "main" java.lang.ClassCastException: java.lang.Long
>        at 
> org.apache.derby.client.net.NetStatementRequest.buildFDODTA(NetStatementRequest.java:692)
>     at 
> org.apache.derby.client.net.NetStatementRequest.buildSQLDTAcommandData(NetStatementRequest.java:530)
>  at 
> org.apache.derby.client.net.NetStatementRequest.writeExecute(NetStatementRequest.java:137)
>    at 
> org.apache.derby.client.net.NetPreparedStatement.writeExecute_(NetPreparedStatement.java:118)
>         at 
> org.apache.derby.client.am.PreparedStatement.writeExecute(PreparedStatement.java:1336)
>        at 
> org.apache.derby.client.am.PreparedStatement.executeBatchRequestX(PreparedStatement.java:1807)
>        at 
> org.apache.derby.client.am.PreparedStatement.executeBatchX(PreparedStatement.java:1731)
>       at 
> org.apache.derby.client.am.PreparedStatement.executeBatch(PreparedStatement.java:1184)
>        at RunDerby.main(RunDerby.java:81)

-- 
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

Reply via email to