]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Experimental changes toward making snapshots serializable.
authordrh <drh@noemail.net>
Tue, 15 Nov 2016 17:37:56 +0000 (17:37 +0000)
committerdrh <drh@noemail.net>
Tue, 15 Nov 2016 17:37:56 +0000 (17:37 +0000)
FossilOrigin-Name: b6a81fa1fc1fb78a65894129851a4ec3986640de

manifest
manifest.uuid
src/sqlite.h.in
src/wal.c

index ebd7485bf2626a2ae8b14ac2a26dea227f690cf3..9c806b3a89c89fbf913a41d6a8f1a9adfa9d49ce 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Change\sthe\sOP_Last\sopcode\sso\sthat\sit\sis\sa\sno-op\sif\sthe\scursor\sis\salready\npointing\sat\sthe\send\sof\sthe\sb-tree.
-D 2016-11-15T04:00:24.244
+C Experimental\schanges\stoward\smaking\ssnapshots\sserializable.
+D 2016-11-15T17:37:56.374
 F Makefile.in 6b572807415d3f0a379cebc9461416d8df4a12c8
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc bb4d970894abbbe0e88d00aac29bd52af8bc95f4
@@ -389,7 +389,7 @@ F src/resolve.c bb070cf5f23611c44ab7e4788803684e385fc3fb
 F src/rowset.c 7b7e7e479212e65b723bf40128c7b36dc5afdfac
 F src/select.c 672b1af237ad257149fc5189f3277dcbca036eeb
 F src/shell.c f04e4af75c5517735397d060ed0b4a874104bb41
-F src/sqlite.h.in 803f7050f69b2eea573fac219f3c92582c096027
+F src/sqlite.h.in dfe8c1b4ac66635495ec9a6a7205fcb0f27f4451
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
 F src/sqlite3ext.h 8648034aa702469afb553231677306cc6492a1ae
 F src/sqliteInt.h c471d791b10c0f2164c8b7a87adc338e703c09cc
@@ -465,7 +465,7 @@ F src/vdbesort.c 91fda3909326860382b0ca8aa251e609c6a9d62c
 F src/vdbetrace.c 41963d5376f0349842b5fc4aaaaacd7d9cdc0834
 F src/vtab.c e02cacb5c7ae742631edeb9ae9f53d399f093fd8
 F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
-F src/wal.c 7e8557314bcf867ffe3fff1d8ef2d207ace8e065
+F src/wal.c 88f8d8adcaecf6a225ae5098062fd151634fb672
 F src/wal.h bf03a23da3100ab25e5c0363450233cfee09cfc2
 F src/walker.c 91a6df7435827e41cff6bb7df50ea00934ee78b0
 F src/where.c 952f76e7a03727480b274b66ca6641b1657cd591
@@ -1534,7 +1534,10 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 5ed0bd387699a0f3b477d4f3cfcb460a6a44cb84
-R 666875522a5a69f5f9bb179805474981
+P 663473850c4274270445b3771911fa773a8c405f
+R 1784ed6bcadef61e22ad39533122ebea
+T *branch * serializable-snapshot
+T *sym-serializable-snapshot *
+T -sym-trunk *
 U drh
-Z 3c6d6cf804e5301c81a1f9af34f5b4ed
+Z 8a16f1f47c269929c7f968ee35b8cb55
index 53cf0857489cdf35c1a55e56f262e17117f0cfc7..5e74943d27a8e06ae669e191d3bec1e51d516c46 100644 (file)
@@ -1 +1 @@
-663473850c4274270445b3771911fa773a8c405f
\ No newline at end of file
+b6a81fa1fc1fb78a65894129851a4ec3986640de
\ No newline at end of file
index dd70407c1bcce5c50a7c6fe93828ee99686b385d..7987cfae5e003f55281aced5229d69c069de3f52 100644 (file)
@@ -8283,7 +8283,9 @@ int sqlite3_system_errno(sqlite3*);
 ** to an historical snapshot (if possible).  The destructor for 
 ** sqlite3_snapshot objects is [sqlite3_snapshot_free()].
 */
-typedef struct sqlite3_snapshot sqlite3_snapshot;
+typedef struct sqlite3_snapshot {
+  unsigned char hidden[48];
+} sqlite3_snapshot;
 
 /*
 ** CAPI3REF: Record A Database Snapshot
index d71ee81a51a3336d96f9767dd62e5f5295573626..669c428efa967c884bf542c473d5830adef0af84 100644 (file)
--- a/src/wal.c
+++ b/src/wal.c
@@ -3393,9 +3393,14 @@ int sqlite3WalHeapMemory(Wal *pWal){
 int sqlite3WalSnapshotGet(Wal *pWal, sqlite3_snapshot **ppSnapshot){
   int rc = SQLITE_OK;
   WalIndexHdr *pRet;
+  static const u32 aZero[4] = { 0, 0, 0, 0 };
 
   assert( pWal->readLock>=0 && pWal->writeLock==0 );
 
+  if( memcmp(&pWal->hdr.aFrameCksum[0],aZero,16)==0 ){
+    *ppSnapshot = 0;
+    return SQLITE_ERROR;
+  }
   pRet = (WalIndexHdr*)sqlite3_malloc(sizeof(WalIndexHdr));
   if( pRet==0 ){
     rc = SQLITE_NOMEM_BKPT;