I am using sqlite 3.7.8.

My custom VFS xDelete method returned SQLITE_NOTFOUND in a case when the file to be deleted was not found, and this worked fine for older versions (probably prior to 3.7.x where the write ahead log was introduced), particularly for 3.6.10.

But now the sqlite core system asks a VFS to delete the <db-name>.db-wal file at the start of the opening the database. When the VFS returns SQLITE_NOTFOUND error, the core system refuses opening the database.

I've patched my custom VFS to return SQLITE_OK in this case, but IMHO this is a bug, because returning SQLITE_NOTFOUND error is a normal way to report about this particular case - the file requested to be deleted is not found. I've looked briefly into previous logs and noticed that older sqlite subsystems used to check access to the file using xAccess method before trying to delete it. I think this is a most proper way to delete a file also in case of <db-name>.db-wal file.

I think that xDelete should be explained deeply in the documentation. I didn't find any description for xDelete-specific return values in the documentation, and examples are the only source introducing them.

Regards,
Vsevolod Novikov

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

Reply via email to