[ 
https://issues.apache.org/jira/browse/DERBY-2763?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12503899
 ] 

Rick Hillegas commented on DERBY-2763:
--------------------------------------

Thanks for the patch, Narayanan. I am reading it now. Here is an initial 
reaction:

It seems to me that the input stream's position is an offset from the start of 
the LOB. When the stream is recreated, the current position (offset from the 
start of the LOB) does not change. So it seems to me that Øystein's use-case is 
supported if the rewritten chunks do not change size. So, I am puzzled. To 
support that use case, is there any need to recreate the streams? It appears to 
me that the recreation of the streams supports some other use-case, in which 
the writer is writing bytes further on in the LOB, and not in the porition that 
has already been read.

Do we have a use-case in mind for this scenario? It would be nice to be able to 
argue to ourselves that we are building something that solves a customer 
problem here.


> In the Network Client InputStreams and Readers returned from LOB's should be 
> sensitive to underlying LOB data changes.
> ----------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-2763
>                 URL: https://issues.apache.org/jira/browse/DERBY-2763
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Client
>    Affects Versions: 10.3.0.0
>            Reporter: V.Narayanan
>            Assignee: V.Narayanan
>             Fix For: 10.3.0.0
>
>         Attachments: Approach_2.diff, Approach_2.stat, Approach_2.txt, 
> Approach_3.diff, Approach_3.stat, Approach_4.diff, Approach_4.stat, 
> LOBLengthPersists.java, UpdateSensitiveStreamsForClient_v1.diff, 
> UpdateSensitiveStreamsForClient_v1.stat
>
>
> Currently the Embedded and Network Client would differ 
> in behaviour when the following series of steps is 
> followed.
> a) Create an empty Blob
> b) get an InputStream using Blob.getBinaryStream()
> c) write data into this Blob
>    c.1) Get an OutputStream
>    c.2) Use OutputStream.write(byte [] b) to write
>         into this Blob.
> d) Now read from the InputStream obtained in step b)
>    and print the number of bytes read as output.
> The output of step d) differs in the client and in the Embedded side.
> In the Client
> -------------
> The number of bytes read would always be -1.
> In the Embedded
> ---------------
> The number of bytes would be the number of bytes we
> reflected.
> The above behaviour in the NetworkClient is because
> the length of the Blob is read once and stored in the 
> constructor of the locator Stream returned (in the 
> attribute maxPos).
> This instead should be read each time we use the streams.
> A similar issue exists for Clobs also.
> I will raise a seperate JIRA issue for this.

-- 
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