[
https://issues.apache.org/jira/browse/DERBY-5317?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13765535#comment-13765535
]
Dyre Tjeldvoll commented on DERBY-5317:
---------------------------------------
I have concluded that identifying Locator-based Readers/Streams is not really
possible since the argument passed to setX() may be wrapped in any number of
non-Locator Streams/Readers. So I think we must allow such values to be set,
and instead intercept their use when generating the DRDA commands for executing
the PS. To me it looks like we can trap this situation in Request.initialize()
by detecting an un-ended writeChain for which data has been sent to the server.
But as we are using the Stream interface we cannot signal this in any way other
than throwing an exception. It is not really feasible to use a checked
exception for this as it will be wrapped in SqlExceptions and IOExceptions on
its way up the callstack, so I plan to throw a (new) subclass of Error and then
catching that at the point where we read the Lob-parameter from the top-level
stream and then throw a more informative checked exception.
> NullPointerException in org.apache.derby.client.net.Request.sendBytes()
> with client
> -------------------------------------------------------------------------------------
>
> Key: DERBY-5317
> URL: https://issues.apache.org/jira/browse/DERBY-5317
> Project: Derby
> Issue Type: Bug
> Components: Network Client
> Affects Versions: 10.9.1.0
> Reporter: Kathey Marsden
> Labels: derby_triage10_11
> Attachments: Repro5317.java, Repro5317.java, traces_10_2and10_9.zip
>
>
> Investigating DERBY-5308, I found that the LobLimits.java test run with
> client fails with a NullPointerException.
>
> END setup
> ========================================
> START ClobTest #1 -insertClob of size = 2147483647
> Rows inserted with clob of size (2147483647) = 2
> ========================================
> ========================================
> START ClobTest #2 - SELECT CLOB of size = 2147483647
> Matched rows selected with clob of size(2147483647) =1
> ========================================
> ========================================
> START ClobTest #3 - SELECT CLOB of size = 2147483647
> Matched rows selected with clob of size(2147483647) =1
> ========================================
> ========================================
> START ClobTest #4 - select and then update clob of size= 2147483647 - Uses
> setClob api
> FAIL -- Unexpected exception:
> java.lang.NullPointerException
> at org.apache.derby.client.net.Request.sendBytes(Unknown Source)
> at
> org.apache.derby.client.net.Request.flushScalarStreamSegment(Unknown Source)
> at
> org.apache.derby.client.net.Request.padScalarStreamForError(Unknown Source)
> at org.apache.derby.client.net.Request.writePlainScalarStream(Unknown
> Source)
> at org.apache.derby.client.net.Request.writeScalarStream(Unknown
> Source)
> at org.apache.derby.client.net.Request.writeScalarStream(Unknown
> Source)
> at
> org.apache.derby.client.net.NetStatementRequest.buildEXTDTA(Unknown Source)
> at
> org.apache.derby.client.net.NetStatementRequest.writeExecute(Unknown Source)
> at
> org.apache.derby.client.net.NetPreparedStatement.writeExecute_(Unknown Source)
> at org.apache.derby.client.am.PreparedStatement.writeExecute(Unknown
> Source)
> at org.apache.derby.client.am.PreparedStatement.flowExecute(Unknown
> Source)
> at
> org.apache.derby.client.am.PreparedStatement.executeUpdateX(Unknown Source)
> at org.apache.derby.client.am.PreparedStatement.executeUpdate(Unknown
> Source)
> at
> org.apache.derbyTesting.functionTests.tests.largedata.LobLimits.selectUpdateClob(LobLimits.java:115
> 7)
> at
> org.apache.derbyTesting.functionTests.tests.largedata.LobLimits.clobTests(LobLimits.java:313)
> at
> org.apache.derbyTesting.functionTests.tests.largedata.LobLimits.runTests(LobLimits.java:177)
> at
> org.apache.derbyTesting.functionTests.tests.largedata.LobLimits.main(LobLimits.java:151)
> ========================================
> START ClobTest #12.1 -insertClob of size = 104857600
> NEGATIVE TEST - Expected Exception:
> EXPECTED SQL Exception: (08003) No current connection.
> ========================================
> START ClobTest #12.2 - SELECT CLOB of size = 104857600
> FAIL -- Unexpected exception:
> java.sql.SQLNonTransientConnectionException: No current connection.
> 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.setInt(Unknown Source)
> at
> org.apache.derbyTesting.functionTests.tests.largedata.LobLimits.selectClob(LobLimits.java:1007)
> In the derby.log I see
> derby.system.home=/local0/kmarsden/repro/largeData/testtrunkdnc/DerbyNetClient/LobLimits
> Database Class Loader started - derby.database.classpath=''
> Tue Jul 05 17:50:01 PDT 2011 Thread[DRDAConnThread_11,5,main] (DATABASE =
> wombat), (DRDAID = .-580681567053183
> 269{2}), Execution failed because of a Distributed Protocol Error:
> DRDA_Proto_SYNTAXRM; CODPNT arg = 200d; E
> rror Code Value = 1d. Plaintext connection attempt from an SSL enabled client?
> Tue Jul 05 17:50:01 PDT 2011 : Execution failed because of a Distributed
> Protocol Error: DRDA_Proto_SYNTAXRM;
> CODPNT arg = 200d; Error Code Value = 1d. Plaintext connection attempt from
> an SSL enabled client?
> org.apache.derby.impl.drda.DRDAProtocolException: Execution failed because of
> a Distributed Protocol Error: D
> RDA_Proto_SYNTAXRM; CODPNT arg = 200d; Error Code Value = 1d. Plaintext
> connection attempt from an SSL enable
> d client?
> at org.apache.derby.impl.drda.DRDAConnThread.throwSyntaxrm(Unknown
> Source)
> at org.apache.derby.impl.drda.DRDAConnThread.invalidCodePoint(Unknown
> Source)
> at
> org.apache.derby.impl.drda.DRDAConnThread.parseEXCSQLSTTobjects(Unknown
> Source)
> at org.apache.derby.impl.drda.DRDAConnThread.parseEXCSQLSTT(Unknown
> Source)
> at org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown
> Source)
> at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source)
> Tue Jul 05 17:50:01 PDT 2011 Thread[DRDAConnThread_11,5,main] (DATABASE =
> wombat), (DRDAID = .-580681567053183
> 269{2}), Execution failed because of a Distributed Protocol Error:
> DRDA_Proto_SYNTAXRM; CODPNT arg = 200d; E
> rror Code Value = 1d. Plaintext connection attempt from an SSL enabled client?
> Tue Jul 05 17:50:01 PDT 2011 : Execution failed because of a Distributed
> Protocol Error: DRDA_Proto_SYNTAXRM;
> CODPNT arg = 200d; Error Code Value = 1d. Plaintext connection attempt from
> an SSL enabled client?
> org.apache.derby.impl.drda.DRDAProtocolException: Execution failed because of
> a Distributed Protocol Error: D
> RDA_Proto_SYNTAXRM; CODPNT arg = 200d; Error Code Value = 1d. Plaintext
> connection attempt from an SSL enable
> d client?
> at org.apache.derby.impl.drda.DRDAConnThread.throwSyntaxrm(Unknown
> Source)
> at org.apache.derby.impl.drda.DRDAConnThread.invalidCodePoint(Unknown
> Source)
> at
> org.apache.derby.impl.drda.DRDAConnThread.parseEXCSQLSTTobjects(Unknown
> Source)
> at org.apache.derby.impl.drda.DRDAConnThread.parseEXCSQLSTT(Unknown
> Source)
> at org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown
> Source)
> at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source)
> ----------------------------------------------------------------
> Tue Jul 05 17:50:07 PDT 2011: Shutting down Derby engine
> ----------------------------------------------------------------
> Tue Jul 05 17:50:07 PDT 2011:
> To run the test, you have to remove largeData from DerbyNetClient.exclude and
> run
> java -Dframework=DerbyNetClient
> org.apache.derbyTesting.functionTests.harness.RunTest
> org.apache.derbyTesting.functionTests.tests.lageData.LobLimits.
> It took about 3.5 hours to occur.
> I will work on a smaller reproduction.
>
> 5,9 36%
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira