Reporting back again. It seems I was actually right the first time - the C API's SQLITE_FCNTL_DATA_VERSION doesn't work cross connection. It is cached on each read - but if there aren't any reads (i.e. just polling SQLITE_FCNTL_DATA_VERSION) then it doesn't work.
PRAGMA data_version is pretty fast (1500ns with prepared statement) and doesn't have that issue.
Checking the wal-index is sub-nanosecond when mmapped but has slightly different behavior on Windows.
Here's the link to the thread on this, my scripts are all there.
PRAGMA data_version is pretty fast (1500ns with prepared statement) and doesn't have that issue.
Checking the wal-index is sub-nanosecond when mmapped but has slightly different behavior on Windows.
Here's the link to the thread on this, my scripts are all there.
https://github.com/russellromney/honker/issues/5