[ 
https://issues.apache.org/jira/browse/DERBY-6237?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13673912#comment-13673912
 ] 

Mamta A. Satoor commented on DERBY-6237:
----------------------------------------

The tests have been added to all the codelines. To summarize the behavior

1)setCharacterStream on VARCHAR columns work fine in all the releases for both 
one row and multi-row update through prepared statement. 
2)setCharacterStream on CLOB column when update touches more than one row has 
different behavior on different releases
a)works fine on 10.1 release for both embedded and network server
b)fails in embedded mode in 10.2. Test works fine in Network server environment
c)fails in both embedded and Network server environment in every release 
starting 10.3 through trunk.

                
> 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

Reply via email to