[
https://issues.apache.org/jira/browse/DERBY-6237?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13672219#comment-13672219
]
Mamta A. Satoor commented on DERBY-6237:
----------------------------------------
Commited a test into 10.2 with revision 1488453 with following comments
***********************************************
This commit adds test case for updating more than one row with
setCharacterStream to update VARCHAR column in the underlying table. The test
is commented out at this point since it does not work in 10.2. Once this jira
is fixed in 10.2, we should uncomment these tests. This test case works fine in
10.1
***********************************************
> PreparedStatement.execute() fails starting 10.2 when multiple rows are
> updated and PreparedStatement.setCharacterStream(int, Reader, int) is used
> -------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: DERBY-6237
> URL: https://issues.apache.org/jira/browse/DERBY-6237
> Project: Derby
> Issue Type: Bug
> Components: JDBC
> Affects Versions: 10.2.2.1, 10.3.3.1, 10.4.2.1
> Reporter: Mamta A. Satoor
>
> PreparedStatement.execute() worked on 10.1(both embedded and network server)
> when multiple rows are updated and PreparedStatement.setCharacterStream(int,
> Reader, int) is used. In 10.2, the embedded case stopped working for
> multi-row update using a prepared statement which used
> PreparedStatement.setCharacterStream(int, Reader, int) with exception
> java.io.EOFException: Stream has already been read and end-of-file reached
> and cannot be re-used.
> at
> org.apache.derby.iapi.types.ReaderToUTF8Stream.read(ReaderToUTF8Stream.java:185)
> at
> org.apache.derby.impl.store.raw.data.MemByteHolder.write(MemByteHolder.java:146)
> at
> org.apache.derby.impl.store.raw.data.RememberBytesInputStream.fillBuf(RememberBytesInputStream.java:135)
> at
> org.apache.derby.impl.store.raw.data.StoredPage.logColumn(StoredPage.java:6167)
> at
> org.apache.derby.impl.store.raw.data.StoredPage.logRow(StoredPage.java:3971)
> at
> org.apache.derby.impl.store.raw.data.UpdateOperation.writeOptionalDataToBuffer(UpdateOperation.java:255)
> at
> org.apache.derby.impl.store.raw.data.UpdateOperation.<init>(UpdateOperation.java:106)
> at
> org.apache.derby.impl.store.raw.data.LoggableActions.actionUpdate(LoggableActions.java:80)
> at
> org.apache.derby.impl.store.raw.data.StoredPage.doUpdateAtSlot(StoredPage.java:8549)
> at
> org.apache.derby.impl.store.raw.data.BasePage.updateAtSlot(BasePage.java:1178)
> at
> org.apache.derby.impl.store.access.conglomerate.GenericConglomerateController.replace(GenericConglomerateController.java:479)
> at
> org.apache.derby.impl.sql.execute.RowChangerImpl.updateRow(RowChangerImpl.java:523)
> at
> org.apache.derby.impl.sql.execute.UpdateResultSet.collectAffectedRows(UpdateResultSet.java:579)
> at
> org.apache.derby.impl.sql.execute.UpdateResultSet.open(UpdateResultSet.java:273)
> at
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:358)
> at
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1182)
> at
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1635)
> at
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(EmbedPreparedStatement.java:1304)
> at
> org.apache.derbyTesting.functionTests.tests.lang.MamtaJDBC.main(MamtaJDBC.java:91)
> In 10.3 and 10.4, both the embedded and network server cases are broken for
> multi-row update using a prepared statement which used
> PreparedStatement.setCharacterStream(int, Reader, int).I still need to test
> 10.5 and higher. I will also add junit test cases for each of these releases
> on incremental basis.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira