By the time getResultSet() returns a ResultSet object, a transaction is
normally completed, and all rows are buffered on the client side.

So there is no copy-on-write type logic necessary for normal rows.

However....

Blobs are different. For LOBs we just send the client a kind of pointer in
the ResultSet. When you call rs.getInputStream() or rs.getBlob(), the
client sends that pointer to the server and starts requesting blocks of
data.

So it is possible for a LOB to be deleted from under a client. Which is why
we do a manual copy-on-write and a kind of timeout thing so we know when a
client is done  with processing a specific LOB.

All of this happens above the level of the MVStore MVCC stuff and is
completely separate.

-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/h2-database.
For more options, visit https://groups.google.com/d/optout.

Reply via email to