db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Peter Davis (JIRA)" <j...@apache.org>
Subject [jira] [Created] (DERBY-5250) Blob is truncating data to 32k~
Date Sat, 28 May 2011 23:30:47 GMT
Blob is truncating data to 32k~
-------------------------------

                 Key: DERBY-5250
                 URL: https://issues.apache.org/jira/browse/DERBY-5250
             Project: Derby
          Issue Type: Bug
          Components: SQL
    Affects Versions: 10.8.1.2, 10.7.1.1
         Environment: Windows 7 amd64 running in eclipse using JDBC
            Reporter: Peter Davis


Please be gentle with me, its my first bug post

I have a curious problem that occurs in the following scenario.

Having obtained an OutputStream via connection.getBlob() and blob.setBinaryStream(1) the following
code is run before the transaction is commited

private int[] data = new int[1000000];

public void saveByteStream(OutputStream os) throws IOException {
        for (int i = 0; i < data.length; i++)
            data[i] = i;
        byte[] byte4 = new byte[4];
        ByteBuffer buf = ByteBuffer.wrap(byte4);

        for (int i = 0; i < data.length; i++) {
            buf.rewind();
            buf.putInt(data[i]);
            os.write(byte4);
        }
    }

The following is run after obtaining an InputStream from the a ResultSet "blob.getBinaryStream()"

    public void loadByteStream(InputStream is) throws IOException {
        byte[] byte4 = new byte[4];
        ByteBuffer buf = ByteBuffer.wrap(byte4);
        for (int i = 0; i < data.length; i++) {
            buf.rewind();
            is.read(byte4);
            data[i] = buf.getInt();
        }
    }

The array should contain 1000,000 integers each integer having the value of the index, unfortunately
after index 8166 the data is corrupted

When these routines are replaced by the following, the problem doesn't occur. All other code
remaining identical

    public void saveObjectStream(OutputStream os) throws IOException {
        for (int i = 0; i < data.length; i++)
            data[i] = i;
        ObjectOutputStream oos = new ObjectOutputStream(os);
        oos.writeObject(data);
    }

    private void loadObjectStream(InputStream is) throws IOException {
        ObjectInputStream ois = new ObjectInputStream(is);
        try {
            data = (int[]) ois.readObject();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

If I direct these routines to a file they both work.

I'm currently using   10.8.1.2 but have tried 10.7.1.1 with the same result

Sysinfo gives the following slightly sanitised output
------------------ Java Information ------------------
Java Version:    1.6.0_22
Java Vendor:     Sun Microsystems Inc.
Java home:       C:\Program Files\Java\jre6
OS name:         Windows 7
OS architecture: amd64
OS version:      6.1
java.specification.name: Java Platform API Specification
java.specification.version: 1.6
java.runtime.version: 1.6.0_22-b04
--------- Derby Information --------
JRE - JDBC: Java SE 6 - JDBC 4.0
[derby.jar] 10.8.1.2 - (1095077)
[derbytools.jar] 10.8.1.2 - (1095077)
[derbynet.jar] 10.8.1.2 - (1095077)
[derbyclient.jar] 10.8.1.2 - (1095077)
------------------------------------------------------
----------------- Locale Information -----------------
Current Locale :  [English/United Kingdom [en_GB]]
Found support for locale: [cs]
	 version: 10.8.1.2 - (1095077)
Found support for locale: [de_DE]
	 version: 10.8.1.2 - (1095077)
Found support for locale: [es]
	 version: 10.8.1.2 - (1095077)
Found support for locale: [fr]
	 version: 10.8.1.2 - (1095077)
Found support for locale: [hu]
	 version: 10.8.1.2 - (1095077)
Found support for locale: [it]
	 version: 10.8.1.2 - (1095077)
Found support for locale: [ja_JP]
	 version: 10.8.1.2 - (1095077)
Found support for locale: [ko_KR]
	 version: 10.8.1.2 - (1095077)
Found support for locale: [pl]
	 version: 10.8.1.2 - (1095077)
Found support for locale: [pt_BR]
	 version: 10.8.1.2 - (1095077)
Found support for locale: [ru]
	 version: 10.8.1.2 - (1095077)
Found support for locale: [zh_CN]
	 version: 10.8.1.2 - (1095077)
Found support for locale: [zh_TW]
	 version: 10.8.1.2 - (1095077)
------------------------------------------------------

I presume I'm doing something stupid, but for love nor life can I find it.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message