[ 
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

Reply via email to