[ http://issues.apache.org/jira/browse/DERBY-614?page=comments#action_12358300 ]
Bryan Pendleton commented on DERBY-614: --------------------------------------- Hi Kathey & Francois (& others): I'm trying to write up a mini-design spec for changes to the DRDA implementation to resolve this issue. But during my research, I've gotten myself pretty confused, and could use some help. Can you consider the following questions and tell me what you think? thanks in advance, bryan 1) Does the LMTBLKPRC protocol apply to invocations of callable statements? That is, if we call a procedure, and it has output parameters, and the data in those parameters exceeds the blocksize, should we split the query data and await a CNTQRY? 2) When we are returning externalized data as part of the response to a query, are there any rules for the intermingling of the EXTDTA objects and the QRYDTA objects? Suppose, for example, that a particular QRYDTA object contains the end of row 4, the entire contents of rows 5 and 6, and the start of row 7. I believe that the EXTDTA for rows 5 and 6 should be sent after we send this QRYDTA, but I am not sure about the EXTDTA for rows 4 and 7. I guess what I am asking is: is the rule "we send the EXTDTA for a particular row after the QRYDTA which contains the *start* of this row", or is the rule: "we send the EXTDTA for a particular row after the QRYDTA which contains the *end* of this row"? 3) At the JDBC user level, what JDBC API calls cause the qryrtndta parameter to be set to FALSE. In the DRDA spec, I see: "The qryrtndta parameter specifies whether data is to be returned with the command. If FALSE is sent on the command, the result is that only a positioning fetch operation is performed." How does this situation actually arise in ordinary use? What sort of client program would I write that would cause qryrtndta to be set to false? 4) Do you think that we have any tests in the test suite which validate the behavior of the server when using both LMTBLKPRC protocol and QRYROWSET specification? I've been reading through the DRDA spec's discussion of QRYROWSET handling, and although it does provide some rules for how to handle the various combinations which arise, the rules are *extremely* complicated and I'm nervous about accidentally breaking this processing. > Execution failed because of a Distributed Protocol Error > -------------------------------------------------------- > > Key: DERBY-614 > URL: http://issues.apache.org/jira/browse/DERBY-614 > Project: Derby > Type: Bug > Components: Network Server > Versions: 10.1.1.0 > Environment: Linux 2.4, Sun JDK 1.4.2_07, full SYSINFO will be attached. > Reporter: Bryan Pendleton > Attachments: clientSideTrace.txt, clientStack.txt, derby-614.zip, > derbyTrace.txt, query.txt, serverSideTrace.txt, sysinfo.derby > > I am intermittently receiving Distributed Protocol Error exceptions in my > client code. Simultaneously, > my derby.log is recording Distributed Protocol Error exceptions on the server > side. > I cannot reliably reproduce this problem. > However, the problem always occurs in the same section of my application, so > I can at least > describe that section of my application. (I'll do so in an attachment). > Here is the error I receive on the server side. Sometimes, the CODPNT is 2116 > and the > Error Code Value is 1d, rather than 2114 and e. > 2005-10-05 02:10:23.663 GMT Thread[DRDAConnThread_2,5,main] (DATABASE = > BuildFar > m), (DRDAID = GA0A0026.P7E6-4182154075488704215{136532}), Execution failed > becau > se of a Distributed Protocol Error: DRDA_Proto_SYNTAXRM; CODPNT arg = 2114; > Er > ror Code Value = e > Execution failed because of a Distributed Protocol Error: > DRDA_Proto_SYNTAXRM; > CODPNT arg = 2114; Error Code Value = e > 2005-10-05 02:10:23.663 GMT Thread[DRDAConnThread_2,5,main] (DATABASE = > BuildFar > m), (DRDAID = GA0A0026.P7E6-4182154075488704215{136532}), null > null > org.apache.derby.impl.drda.DRDAProtocolException > at org.apache.derby.impl.drda.DRDAConnThread.throwSyntaxrm(Unknown > Sourc > e) > at org.apache.derby.impl.drda.DRDAConnThread.missingCodePoint(Unknown > So > urce) > at org.apache.derby.impl.drda.DRDAConnThread.parseCNTQRY(Unknown > Source) > at org.apache.derby.impl.drda.DRDAConnThread.splitQRYDTA(Unknown > Source) > at org.apache.derby.impl.drda.DRDAConnThread.writeFDODTA(Unknown > Source) > at org.apache.derby.impl.drda.DRDAConnThread.writeQRYDTA(Unknown > Source) > at org.apache.derby.impl.drda.DRDAConnThread.processCommands(Unknown > Sou > rce) > at org.apache.derby.impl.drda.DRDAConnThread.run(Unknown Source) -- 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
