db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kathey Marsden (JIRA)" <j...@apache.org>
Subject [jira] Created: (DERBY-4315) Attempt to reuse streams in client on insert gives protocol exception and inserts wrong data
Date Sat, 18 Jul 2009 01:10:14 GMT
Attempt to reuse streams in client on insert gives protocol exception and inserts wrong data
--------------------------------------------------------------------------------------------

                 Key: DERBY-4315
                 URL: https://issues.apache.org/jira/browse/DERBY-4315
             Project: Derby
          Issue Type: Bug
          Components: JDBC
    Affects Versions: 10.5.2.0, 10.6.0.0
            Reporter: Kathey Marsden


If a user attempts to reuse a stream set as a parameter to a prepared statement, the statement
execution should fail with SQL State XJ001.  Instead client fails with a protocol error and
inserts wrong data. See the attached java program ReproReuseStream.java for a reproduction.
[C:/kmarsden/repro/reusestream] java ReproReuseStream
Insert row 1
Try to insert row 2 with reused streams
java.sql.SQLException: Network protocol error: end of stream prematurely reached, parameter
#4.  Remaining data has been
 padded with 0x0.
        at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:96)
        at org.apache.derby.client.am.SqlException.getSQLException(SqlException.java:358)
        at org.apache.derby.client.am.PreparedStatement.executeUpdate(PreparedStatement.java:399)
        at ReproReuseStream.main(ReproReuseStream.java:41)
Caused by: org.apache.derby.client.am.SqlException: Network protocol error: end of stream
prematurely reached, parameter
 #4.  Remaining data has been padded with 0x0.
        at org.apache.derby.client.net.Request.writePlainScalarStream(Request.java:490)
        at org.apache.derby.client.net.Request.writeScalarStream(Request.java:264)
        at org.apache.derby.client.net.NetStatementRequest.buildEXTDTA(NetStatementRequest.java:951)
        at org.apache.derby.client.net.NetStatementRequest.writeExecute(NetStatementRequest.java:147)
        at org.apache.derby.client.net.NetPreparedStatement.writeExecute_(NetPreparedStatement.java:178)
        at org.apache.derby.client.am.PreparedStatement.writeExecute(PreparedStatement.java:1801)
        at org.apache.derby.client.am.PreparedStatement.flowExecute(PreparedStatement.java:2031)
        at org.apache.derby.client.am.PreparedStatement.executeUpdateX(PreparedStatement.java:404)
        at org.apache.derby.client.am.PreparedStatement.executeUpdate(PreparedStatement.java:390)
        ... 1 more
Go ahead and commit so we can see the wrong data.
ID         |MNAME
                    |MVALUE     |BYTEDATA
                                         |CHARDATA

------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------
1          |mname
                    |0          |636363636363636363636363636363636363636363636363636363636363636363636363636363636363636
3636363636363636363636363636363636363636&|cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
ccccccccccccccccccccccccccccccccccccccccccccccccc&
2          |mname
                    |0          |000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000&|
                                                 &

To workaround the issue users should not attempt to reuse streams but we should give a better
message and not insert wrong data.

The code was extracted from StreamingColumnTest testDerby500 but the commits were removed.


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


Mime
View raw message