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 "Yun Lee (JIRA)" <ji...@apache.org> on 2010/07/09 14:41:50 UTC

[jira] Commented: (DERBY-3898) Blob.setBytes differs between embedded and client driver when the specified length is invalid

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

Yun Lee commented on DERBY-3898:
--------------------------------

When run org.apache.derbyTesting.functionTests.tests.jdbc4.BlobTest against Revision 962387, I have 7 errors on testFreeandMethodsAfterCallingFree(), testGetBinaryStreamLongLastByte(), testGetBinaryStreamLongDrain(), testSetBytesReturnValueLargeStateChange(), testLockingAfterFree(), testLockingAfterFreeWithRR() and testLockingAfterFreeWithDirtyReads(). They all are in NetworkServer mode, and throw the identifical java.lang.NoSuchMethodError: org.apache.derby.client.net.NetStatem
entRequest.writeScalarStream(ZZIILjava/io/InputStream;ZI)V. 

exception snippet is below:
4) testGetBinaryStreamLongLastByte(org.apache.derbyTesting.functionTests.tests.j
dbc4.BlobTest)java.lang.NoSuchMethodError: org.apache.derby.client.net.NetStatem
entRequest.writeScalarStream(ZZIILjava/io/InputStream;ZI)V
        at org.apache.derby.client.net.NetStatementRequest.buildEXTDTA(NetStatem
entRequest.java:983)
        at org.apache.derby.client.net.NetStatementRequest.writeExecute(NetState
mentRequest.java:152)
        at org.apache.derby.client.net.NetPreparedStatement.writeExecute_(NetPre
paredStatement.java:178)
        at org.apache.derby.client.am.PreparedStatement.writeExecute(PreparedSta
tement.java:1787)
        at org.apache.derby.client.am.PreparedStatement.flowExecute(PreparedStat
ement.java:2017)
        at org.apache.derby.client.am.PreparedStatement.executeX(PreparedStateme
nt.java:1580)
        at org.apache.derby.client.am.PreparedStatement.execute(PreparedStatemen
t.java:1565)
        at org.apache.derbyTesting.functionTests.tests.jdbc4.BlobTest.testGetBin
aryStreamLongLastByte(BlobTest.java:451)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:
109)
        at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
        at junit.extensions.TestSetup$1.protect(TestSetup.java:23)
        at junit.extensions.TestSetup.run(TestSetup.java:27)
        at org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57
)
        at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
        at junit.extensions.TestSetup$1.protect(TestSetup.java:23)
        at junit.extensions.TestSetup.run(TestSetup.java:27)
        at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
        at junit.extensions.TestSetup$1.protect(TestSetup.java:23)
        at junit.extensions.TestSetup.run(TestSetup.java:27)
        at org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57
)
        at junit.extensions.TestDecorator.basicRun(TestDecorator.java:24)
        at junit.extensions.TestSetup$1.protect(TestSetup.java:23)
        at junit.extensions.TestSetup.run(TestSetup.java:27)
        at org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57
)


But I have found writeScalarStream() method in NetStatementRequest actually. Is it OK on your computor, please?

> Blob.setBytes differs between embedded and client driver when the specified length is invalid
> ---------------------------------------------------------------------------------------------
>
>                 Key: DERBY-3898
>                 URL: https://issues.apache.org/jira/browse/DERBY-3898
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC
>    Affects Versions: 10.3.3.0, 10.4.2.0, 10.5.1.1, 10.6.1.0
>            Reporter: Kristian Waagan
>            Assignee: Yun Lee
>            Priority: Minor
>         Attachments: Derby3898.java
>
>
> Blob.setBytes behaves differently with the embedded driver and the client driver.
> Assume a 1 byte array and a specified length of 2: Blob.setBytes(1, new byte[] {0x69}, 0, 2)
> Embedded: IndexOutOfBoundsException (from java.io.RandomAccessFile.writeBytes or System.arraycopy)
> Client: succeeds, returns insertion count 1
> The behavior should be made consistent, but what is the correct behavior?
> From the Blob.setBytes JavaDoc:
> "Writes all or part of the given byte array to the BLOB value that this Blob object represents and returns the number of bytes written. Writing starts at position pos in the BLOB  value; len bytes from the given byte array are written. The array of bytes will overwrite the existing bytes in the Blob object starting at the position pos. If the end of the Blob value is reached while writing the array of bytes, then the length of the Blob value will be increased to accomodate the extra bytes."

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