According to the documentation athttp://www.sqlite.org/c3ref/blob_open.html
“
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
a expired BLOB handle fail with an return code of SQLITE_ABORT.
”
 
However, it looks that handle can expire
when UPDATE is done on the column in the other unrelated to the blob table.
Read of the blob would return SQLITE_ABORT “not an error”(?!) and no data is 
read.
 
 
Is it a bug, a feature or the expected
behaviour? 
 
 
Thanks for your
attention.
 
 P.S
 
Searching the web I
found the following reference:
blob incremental i/o constraints
by Roger Binns Dec 02, 2007; 02:15am
Open a blob for reading.  Insert into the same table (not affecting the 
blob or its row).  On calling sqlite3_blob_read, I get SQLITE_ABORT 
returned and the errmsg is "not an error".  This also
happens if I do a 
few reads, and then the insert, on the next read.  (This also happens 
with blobs open for writing and doing read or write after the table is 
changed).


      __________________________________________________________________
Yahoo! Canada Toolbar: Search from anywhere on the web, and bookmark your 
favourite sites. Download it now
http://ca.toolbar.yahoo.com.
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to