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)" <ji...@apache.org> on 2007/09/26 19:19:50 UTC

[jira] Commented: (DERBY-3085) Fails to handle BLOB fields with a PreparedStatement with size >32750 bytes

    [ https://issues.apache.org/jira/browse/DERBY-3085?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12530492 ] 

Kathey Marsden commented on DERBY-3085:
---------------------------------------

I think the problem is not the warning itself.  I changed the embedded code to not add the warning and saw the same protocol error even though the warning was not sent. I tend to think the trouble is that in the even there are no matching rows, The entire stream is not consumed, since it is not needed to update the row. This leaves the DDMReader pointing to the middle of the parameter data when it is ready to read the next DSS.


> Fails to handle BLOB fields with a PreparedStatement with size >32750 bytes
> ---------------------------------------------------------------------------
>
>                 Key: DERBY-3085
>                 URL: https://issues.apache.org/jira/browse/DERBY-3085
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC, Network Client
>    Affects Versions: 10.2.1.6, 10.2.2.0, 10.3.1.4
>         Environment: Windows XP SP2
>            Reporter: Mikael Aronsson
>         Attachments: TestBlob.java, trace.out.norows, trace.out.withrow
>
>
> Java Version:    1.6.0_02
> Java Vendor:     Sun Microsystems Inc.
> Java home:       C:\Program Files\Java\jre1.6.0_02
> Java classpath:  derbytools.jar
> OS name:         Windows XP
> OS architecture: x86
> OS version:      5.1
> Java user name:  Ma
> Java user home:  C:\Documents and Settings\ma
> Java user dir:   c:\tools\derby\lib
> java.specification.name: Java Platform API Specification
> java.specification.version: 1.6
> --------- Derby Information --------
> JRE - JDBC: Java SE 6 - JDBC 4.0
> [C:\tools\derby\lib\derbytools.jar] 10.3.1.4 - (561794)
> The following code fails:
>     // Data is a byte[] vector
>     ByteArrayInputStream is = new ByteArrayInputStream( data);    
>     String sql = "UPDATE MyTable SET FContents=? WHERE FName='" + name + "'";
>     PreparedStatement ps = conn.prepareStatement( sql);
>     ps.setBinaryStream( 1, is, data.length);
>     
>     if( ps.executeUpdate() == 0)
>     {
>         // it throws an exception here if the data array us larger then around 32750 bytes!!!
>     }
> It look's like when the size of the data[] vector is > 32750 bytes or so it throws an exception like this:
> java.sql.SQLException: A network protocol error was encountered and the connection has been terminated: A PROTOCOL Data Stream Syntax Error was detected.  Reason: 0x0. Plaintext connection attempt to an SSL enabled server?
>         at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
>         at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
>         at org.apache.derby.client.am.PreparedStatement.executeUpdate(Unknown Source)
> The table is defined as:
>     CREATE TABLE MyTable (FName varchar(300) NOT NULL,FContents BLOB(16M) NOT NULL)
> It does loook like this only happens with the NetWork client driver, the embedded driver works fine.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.