db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kathey Marsden (JIRA)" <derby-...@db.apache.org>
Subject [jira] Commented: (DERBY-1368) EOFException when reading from blob's binary stream
Date Sat, 01 Jul 2006 01:00:30 GMT
    [ http://issues.apache.org/jira/browse/DERBY-1368?page=comments#action_12418747 ] 

Kathey Marsden commented on DERBY-1368:
---------------------------------------

This issue was marked Fixed with no comments, but I verified the  program output on 10.2
$ java Derby1368
1) creating table...
2) adding row...
3) reading row...
4) Length: 1048576
 First Byte: 1
5) Length: 1048576
 First Byte: 1

So it does seem to be fixed but don't know exactly what fixed it.
Perhaps Tobias can close if the fix is ok.



> EOFException when reading from blob's binary stream
> ---------------------------------------------------
>
>          Key: DERBY-1368
>          URL: http://issues.apache.org/jira/browse/DERBY-1368
>      Project: Derby
>         Type: Bug

>     Versions: 10.1.2.1
>     Reporter: Tobias Bocanegra
>      Fix For: 10.2.0.0
>  Attachments: Derby1368.java
>
> reading the 'length()' of a blob reads a previously aquired binary stream.
> test case:
>     public static void main(String[] argv) throws Exception {
>         String driver = "org.apache.derby.jdbc.EmbeddedDriver";
>         String url = "jdbc:derby:derby/test;create=true";
>         Class.forName(driver);
>         Connection con = DriverManager.getConnection(url, "sa", "");
>         con.setAutoCommit(true);
>         // create table
>         System.out.println("1) creating table...");
>         Statement stmt = con.createStatement();
>         stmt.execute("create table T1 (ID char(32) PRIMARY KEY, DATA blob(2G) not null)");
>         stmt.close();
>         // add row
>         System.out.println("2) adding row...");
>         byte[] data = new byte[1024*1024*1];
>         data[0] = 1;
>         data[1] = 2;
>         PreparedStatement s = con.prepareStatement("insert into T1 (ID, DATA) values
(?, ?)");
>         s.setString(1, "id");
>         s.setBytes(2, data);
>         s.execute();
>         s.close();
>         // read row
>         System.out.println("3) reading row...");
>         s = con.prepareStatement("select DATA from T1 where ID = ?");
>         s.setString(1, "id");
>         s.execute();
>         ResultSet rs = s.getResultSet();
>         rs.next();
>         Blob b = rs.getBlob(1);
>         // test output
>         System.out.println("4) Length: " + b.length());
>         InputStream in = b.getBinaryStream();
>         System.out.println("   First Byte: " + in.read());
>         in.close();
>         in = b.getBinaryStream();
>         System.out.println("5) Length: " + b.length());
>         System.out.println("   First Byte: " + in.read());
>         in.close();
>         rs.close();
>         s.close();
>         con.close();
>     }
> gives:
> 1) creating table...
> 2) adding row...
> 3) reading row...
> 4) Length: 1048576
>    First Byte: 1
> 5) Length: 1048576
>    First Byte: -1
> imo, 5) is wrong.

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