>On 12/13/2016 01:47 AM, Bob Friesenhahn wrote:
>> I am reworking code for a virtual table module and need to provide
>> proper error codes from the xColumn() and xRowid() callbacks for the
>> case where the row id does not exist, or the current row goes away.
>> This problem occurs because the current virtual table module
>> implementation does not lock for its entire access (a matter for
>> subsequent investigation).
>>
>> The documentation just says to "return an appropriate error code".
>>
>> Perhaps SQLITE_NOTFOUND is a correct return code, but the
>> documentation does not address return codes from virtual table modules.
>>
>> What is the correct code to return?  If a cursor is being navigated,
>> then I would prefer that the cursor continue to the next result row.
>
>If you want the query to continue, the virtual table methods must return 
>SQLITE_OK. Anything else will cause SQLite to abandon the query and return the 
>error to the user. Have the xColumn() method return NULL >in this case I guess.
>
>Or you could load all the column values into memory when your virtual table 
>cursor visits each row of the underlying data. Then you wouldn't have to 
>handle the current row disappearing on you.
>
I second this suggestion. Unless your underlying data store is (possibly 
shared) memory that may have already been clobbered, keeping a copy of the row 
"as seen when xFilter()/xNext() was called" avoids this problem.


___________________________________________
 Gunter Hick
Software Engineer
Scientific Games International GmbH
FN 157284 a, HG Wien
Klitschgasse 2-4, A-1130 Vienna, Austria
Tel: +43 1 80100 0
E-Mail: [email protected]

This communication (including any attachments) is intended for the use of the 
intended recipient(s) only and may contain information that is confidential, 
privileged or legally protected. Any unauthorized use or dissemination of this 
communication is strictly prohibited. If you have received this communication 
in error, please immediately notify the sender by return e-mail message and 
delete all copies of the original communication. Thank you for your cooperation.


_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to