aboutsummaryrefslogtreecommitdiff
path: root/src/wal.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2016-04-12 16:04:07 +0000
committerdrh <drh@noemail.net>2016-04-12 16:04:07 +0000
commit752b102e9ba06b39a81f80a19a9fd0026e77ae17 (patch)
tree1fd13b130da0e9156533af0a16d48548e8fdda3c /src/wal.c
parent70b8d6bbccc029d8c9a3ee9289b04f597acfd876 (diff)
parent745be369c799ab98c8c6798d92ec4f295bd54de9 (diff)
downloadsqlite-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.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/wal.c b/src/wal.c
index bbac1bd6d..98b46be80 100644
--- a/src/wal.c
+++ b/src/wal.c
@@ -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