db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mike Matrigali (JIRA)" <derby-...@db.apache.org>
Subject [jira] Resolved: (DERBY-1368) EOFException when reading from blob's binary stream
Date Thu, 08 Jun 2006 22:54:30 GMT
     [ http://issues.apache.org/jira/browse/DERBY-1368?page=all ]
     
Mike Matrigali resolved DERBY-1368:
-----------------------------------

    Fix Version: 10.2.0.0
     Resolution: Fixed

This test passed against the trunk  as Dan supposed, the problem is fixed there.  Marking
it fixed against the trunk.  If it needs to get back ported, one will have to find the actual
change - 
there is no change associated with this jira.

> 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