Mamta A. Satoor created DERBY-6237:
--------------------------------------
Summary: 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