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.
