Hi D. Richard Hipp, Thank you for quick response.
I did consider all options as it stands: 1) Skipping the lock bytes in our vfs. This becomes really messy very fast, as it is based on test_onefile vfs and both db and journal are part of the same file, and lock bytes may end up in any of 3 segments: db, free space, or journal. In addition we have logic to grow (during writes)/shrink (via PRAGMA) the file as necessary. Basically, really a lot of skipping logic in many places. And even if I'd go ahead and coded all this up, we'd end up breaking all our currently deployed applications for all our users, since the skipped offsets would contain valid pages. 2) Set new PENDING_BYTE via sqlite3_test_control(). This looked like an option at first, until I realized that the same value [sqlite3PendingByte] is used in both: in pager, and the os_* vfses. Since our VFS is based on test_onefile with db, free space, and journal all occupying one file, it becomes impossible to handle all 3 cases that could end up writing into the lock byte region. And again, modifying the PENDING_BYTE would break the application for all users, due to lock-byte page position change. 3) Which is what I considered as the most suitable solution in cases similar to ours (one file vfses), and the reason I decide to write to this list: To be able to set (via config), an offsets for pending byte region in os_* VFSes, but have no effect on the lock-byte page offset as seen by higher layers. Since os_* VFSes are pretty much generic and are used as auxilaries in many other "wrapper" VFSes, it would be logical to at least have an option to configure the pending byte region only for os_* VFSes. In our case, having an option such as (3), we could move the pending byte region into the head space (occurs before the database) of the file, which contains sufficient space to house all the lock bytes and that always exists. This would handle all possible scenarios with one config tweak, as well as not break any current deployments. For others, any custom VFS that allocates space before the database in file, and use os_* VFSes as auxilary, the same option can be used to add a shift to the pending byte region, aligning it correctly with the lock byte page offset used by pager. Ofcourse, I can patch a few lines in sqlite3 source that we use, but I just wanted to let you guys know of a situation we ran into and had no real simple way of going forward with, even though everything else seemed to be configurable and flexible. Thanks. -- Alexey _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users