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 "Kathey Marsden (JIRA)" <de...@db.apache.org> on 2006/07/01 03:00:30 UTC
[jira] Commented: (DERBY-1368) EOFException when reading from
blob's binary stream
[ 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
Re: [jira] Commented: (DERBY-1368) EOFException when reading from
blob's binary stream
Posted by Sunitha Kambhampati <ks...@gmail.com>.
Kathey Marsden (JIRA) wrote:
> [ http://issues.apache.org/jira/browse/DERBY-1368?page=comments#action_12418747 ]
>So it does seem to be fixed but don't know exactly what fixed it.
>
>
I think this particular issue has been fixed as a result of the changes
that Dan made as part of Derby-438, possibly #394109.
Sunitha.