On 3/9/20, Alexey Alyaev <alex7691...@yandex.ru> wrote: > > I have been working on a custom VFS project since 2017.... > > would it not be reasonable to allow setting a different > lock byte offset just in windows/unix VFS, while keeping the lock-byte page > position untouched? > > This would allow VFSes such as ours to move the lock-byte region used by > default OS VFS, outside of the database segment, say into the head space > which we have allocated and reserved for meta.
In the default implementation, the location of the PENDING_BYTE is set by a global variable sqlite3PendingByte. If you want to change that global variable, you can. Be warned, however, that changing the location of the pendingByte results in an incompatible file format. You will also run into severe problems (assertion-faults and/or segfaults) if you set the pendingByte to some value that is not a multiple of the page size or that overlaps with page 1 of the database file. Aside: The PENDING_BYTE location can be adjusted in this way for testing purposes. Even release builds are able to move the PENDING_BYTE (using the sqlite3_test_control() interface) since our dogma is "fly what you test and test what you fly." Maybe a better solution for you would be to modify your custom xRead() and xWrite() routines so that the skip over the bytes in the range of 0x40000000 through 0x40000200. If the offset is greater than or equal to 0x40000000 just add 512 to the offset before continuing. Depending on your circumstances, I suppose you would also have to do something similar with xTruncate() and xFileSize(). -- D. Richard Hipp d...@sqlite.org _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users