[ 
https://issues.apache.org/jira/browse/DERBY-2347?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Øystein Grøvlen updated DERBY-2347:
-----------------------------------

    Attachment: DERBY-2347.diff

The attached patch, DERBY-2347.diff, adds the necessary code for the
client to request locators to be sent instead of LOB values, and the
corresponding code for the network server to handle such requests.
This is achieved by using the DRDA OUTOVR (Output Override) command
with the the first CNTQRY command for a query.  It turned out that
much of the necessary code for generating and handling OUTOVR was
already there, and only few missing pieces were needed to get this to
work.

For now, the client will not request the use of locators since it is
not yet able to handle locators.  (This will be added in (several)
later patches.)

The DRDA spec also describes an outovropt parameter to the OPNQRY
command.  This can be used to specify whether an OUTOVR command will
only be sent with the first CNTQRY for the query, or it can be sent
with any CNTQRY.  As stated above, this implementation will only send
OUTOVR with the first CNTQRY, and since DRDA specifies this as the
default behavior, I have not used the outovropt parameter.  There is
currently nothing in the network server that rely on OUTOVR only being
used with the first CNTQRY, and no error is returned should later
CNTQRY countain OUTOVR.

Note that this patch is dependent on the patch for DERBY-2257 and
should not be committed until that is committed.I have run the junit
and derbyall test suites with this patch and the patch for DERBY-2257,
and no new errors was seen.

A more detailed explanation of the changes:

M      java/drda/org/apache/derby/impl/drda/DRDAResultSet.java

       If the client has requested an output type to be overridden,
       return the requested type.

M      java/drda/org/apache/derby/impl/drda/DRDAConnThread.java

       If the output type is a locator type, add the LOB reference to
       the locator-to-LOB-mapping of DERBY-2257, and write the
       returned locator as an integer.

M      java/client/org/apache/derby/client/net/CodePointNameTable.java

       Add tracing text for the DRDA OUTOVR command.  (This is for
       client, already existed in the server version of this file.)

M      java/client/org/apache/derby/client/net/NetResultSetRequest.java

       Replaced the no-op code of buildOUTOVR() with the code to
       actually build the command.  Only build it on the first CNTQRY
       command.  This code will remain disabled until the necessary
       changes is made to make the client able to handle locators.

M      java/client/org/apache/derby/client/net/NetStatementRequest.java

       In OUTOVR commands, the client will request locators for all
       LOB columns.  4 bytes will be used for locators.


> Add code to support request and return of locators over DRDA
> ------------------------------------------------------------
>
>                 Key: DERBY-2347
>                 URL: https://issues.apache.org/jira/browse/DERBY-2347
>             Project: Derby
>          Issue Type: Sub-task
>          Components: Network Client, Network Server
>            Reporter: Øystein Grøvlen
>         Assigned To: Øystein Grøvlen
>         Attachments: DERBY-2347.diff
>
>
> - Make the client able to send DRDA OUTOVR commands to request locators from 
>   Network Server.
> - Make the network server send locators instead of LOB values if locators has 
> been 
>   requested.
> This JIRA will not activate the code that request locators since the client 
> is not yet able to handle locators. 

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

Reply via email to