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

Sunitha Kambhampati commented on DERBY-562:
-------------------------------------------

As Dan also pointed out in the earlier comment, Derby  behavior is correct 
according to what the jdbc spec says ( in this case the tutorial book).  

e.g.   ps.setBinaryStream(pos,stream, streamLength)
Right now, even if you pass a stream with length greater than streamLength , 
derby throws an exception with the following message 
"Input stream held less data than requested length" 

I think the message must be changed to correctly say  - 
"Input stream did not have the exact amount of data as the requested length."

I will submit a patch for this. 

> Derby incorrectly throws Exception when streaming to BLOB field
> ---------------------------------------------------------------
>
>          Key: DERBY-562
>          URL: http://issues.apache.org/jira/browse/DERBY-562
>      Project: Derby
>         Type: Bug
>     Versions: 10.1.1.0
>     Reporter: Holger Rehn

>
> Derby incorrectly throws an Exception when streaming to a BLOB in case the 
> used InputStream actually could provide more data than I want to write to the 
> BLOB field.
>    PreparedStatement statement = connection.prepareStatement( "insert into 
> FOO(ID,DATA) values(?, ?)" );
>    statement.setLong( 1, someValue );
>    statement.setBinaryStream( 2, someInputStream, amountOfData ); // 
> amountOfData < amount of data readable from someInputStream
>    statement.executeUpdate();
> executeUpdate() throws an SQLException with detail message: "Input stream 
> held less data than requested length.: java.io.IOException"
> In my case this was first caused by writing an internal buffer (byte[]) to 
> the data base through a ByteArrayInputStream while not limiting the 
> ByteArrayInputStream to the useful data within the buffer but setting 
> amountOfData to the number of useful bytes. So the 2 problems are:
> 1. the error text is definitly incorrect since I provide more data than 
> neccessary, not less
> 2. in my opinion this shouldn't throw an exception at all (I checked against 
> 4 other DBMS, all of them worked as intended)

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