On 03/04/2017 00:08, Keith Medcalf wrote:
If the row that a BLOB handle points to is modified by an UPDATE, DELETE, or by ON 
CONFLICT side-effects then the BLOB handle is marked as "expired". This is true 
if any column of the row is changed, even a column other than the one the BLOB handle is 
open on. Calls to sqlite3_blob_read() and sqlite3_blob_write() for an expired BLOB handle 
fail with a return code of SQLITE_ABORT. Changes written into a BLOB prior to the BLOB 
expiring are not rolled back by the expiration of the BLOB. Such changes will eventually 
commit if the transaction continues to completion.

What is the reason to expire the blob handle when unrelated fields are modified? I just don't see how and why is this a reasonable behavior? Blob lives as a separate object, and the pointer to it should be able to stay valid unless its field is modified.

Another bug is that reopening the blob every time is incredibly slow. Why is opening/closing the blob is so much slower? It also seems to get slower with the size of the data in the blob.

Yuri
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to