diff options
author | drh <drh@noemail.net> | 2016-04-12 16:04:07 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2016-04-12 16:04:07 +0000 |
commit | 752b102e9ba06b39a81f80a19a9fd0026e77ae17 (patch) | |
tree | 1fd13b130da0e9156533af0a16d48548e8fdda3c /src/wal.c | |
parent | 70b8d6bbccc029d8c9a3ee9289b04f597acfd876 (diff) | |
parent | 745be369c799ab98c8c6798d92ec4f295bd54de9 (diff) | |
download | sqlite-752b102e9ba06b39a81f80a19a9fd0026e77ae17.tar.gz sqlite-752b102e9ba06b39a81f80a19a9fd0026e77ae17.zip |
Add the sqlite3_snapshot_cmp() interface (available only with
SQLITE_ENABLE_SNAPSHOT).
FossilOrigin-Name: 7e7289655185e7643ead6d685922528bc4d9e0ae
Diffstat (limited to 'src/wal.c')
-rw-r--r-- | src/wal.c | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -3399,6 +3399,23 @@ int sqlite3WalSnapshotGet(Wal *pWal, sqlite3_snapshot **ppSnapshot){ void sqlite3WalSnapshotOpen(Wal *pWal, sqlite3_snapshot *pSnapshot){ pWal->pSnapshot = (WalIndexHdr*)pSnapshot; } + +/* +** Return a +ve value if snapshot p1 is newer than p2. A -ve value if +** p1 is older than p2 and zero if p1 and p2 are the same snapshot. +*/ +int sqlite3_snapshot_cmp(sqlite3_snapshot *p1, sqlite3_snapshot *p2){ + WalIndexHdr *pHdr1 = (WalIndexHdr*)p1; + WalIndexHdr *pHdr2 = (WalIndexHdr*)p2; + + /* aSalt[0] is a copy of the value stored in the wal file header. It + ** is incremented each time the wal file is restarted. */ + if( pHdr1->aSalt[0]<pHdr2->aSalt[0] ) return -1; + if( pHdr1->aSalt[0]>pHdr2->aSalt[0] ) return +1; + if( pHdr1->mxFrame<pHdr2->mxFrame ) return -1; + if( pHdr1->mxFrame>pHdr2->mxFrame ) return +1; + return 0; +} #endif /* SQLITE_ENABLE_SNAPSHOT */ #ifdef SQLITE_ENABLE_ZIPVFS |