db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Holger Rehn (JIRA)" <derby-...@db.apache.org>
Subject [jira] Created: (DERBY-562) Derby incorrectly throws Exception when streaming to BLOB field
Date Tue, 13 Sep 2005 10:38:54 GMT
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


Mime
View raw message