]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
When restarting (wrapping) a log file, set all unused aReadMark[] slots to READMARK_N...
authordan <dan@noemail.net>
Wed, 9 Jun 2010 16:58:49 +0000 (16:58 +0000)
committerdan <dan@noemail.net>
Wed, 9 Jun 2010 16:58:49 +0000 (16:58 +0000)
FossilOrigin-Name: 0797b10c0cc08ae38e26685d1f8331e37d428781

manifest
manifest.uuid
src/wal.c

index 060d41f9d9ce42c9bc54e61bb9e64e1398477630..0e689ca0c8e7537cbc78419bc605cd59061380c0 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sfor\sticket\s[f973c7ac31].
-D 2010-06-09T15:47:11
+C When\srestarting\s(wrapping)\sa\slog\sfile,\sset\sall\sunused\saReadMark[]\sslots\sto\sREADMARK_NOT_USED\sinstead\sof\s0.\sSetting\sthem\sto\s0\sdoes\snot\scause\sa\sproblem,\sbut\smay\scause\sSQLite\sto\sobtain\sand\srelease\sa\sfew\smore\sfile\slocks\sthan\swould\sotherwise\sbe\snecessary.
+D 2010-06-09T16:58:50
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in a5cad1f8f3e021356bfcc6c77dc16f6f1952bbc3
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -224,7 +224,7 @@ F src/vdbeblob.c 5327132a42a91e8b7acfb60b9d2c3b1c5c863e0e
 F src/vdbemem.c 2a82f455f6ca6f78b59fb312f96054c04ae0ead1
 F src/vdbetrace.c 864cef96919323482ebd9986f2132435115e9cc2
 F src/vtab.c a0f8a40274e4261696ef57aa806de2776ab72cda
-F src/wal.c 25ce19c8e175baf0c7d303243d38c0b2d4b1ba30
+F src/wal.c 2cdfea9a5e50e4dde48767e69e1fead2ff1781cd
 F src/wal.h 4ace25262452d17e7d3ec970c89ee17794004008
 F src/walker.c 3112bb3afe1d85dc52317cb1d752055e9a781f8f
 F src/where.c 1c895bef33d0dfc7ed90fb1f74120435d210ea56
@@ -818,7 +818,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P c576827d55c156572b76cf7063e9f253ca6e7403
-R b48b1a3c1b5bb2e514409ff77e6be7cf
+P 6eb058dda8d5f87b02378d8efd821fe64a525dcc
+R a79b3d9ec9cc5a465c33dfd4ba1930ca
 U dan
-Z f948595e6780591bfcc76536af294f11
+Z ad2df864c12e81459be20eda05356b43
index b4460a432346362137109d6f0c3e8e4293737b83..0f65205059299348043507062b53cbe3ac330989 100644 (file)
@@ -1 +1 @@
-6eb058dda8d5f87b02378d8efd821fe64a525dcc
\ No newline at end of file
+0797b10c0cc08ae38e26685d1f8331e37d428781
\ No newline at end of file
index 1b90d384f43b3892a6e4f5b01e69792ff5612de8..017b8449081c3b505c8348228212eeda3e53e984 100644 (file)
--- a/src/wal.c
+++ b/src/wal.c
@@ -2217,13 +2217,16 @@ static int walRestartLog(Wal *pWal){
         ** safe and means there is no special case for sqlite3WalUndo()
         ** to handle if this transaction is rolled back.
         */
+        int i;                    /* Loop counter */
         u32 *aSalt = pWal->hdr.aSalt;       /* Big-endian salt values */
         pWal->nCkpt++;
         pWal->hdr.mxFrame = 0;
         sqlite3Put4byte((u8*)&aSalt[0], 1 + sqlite3Get4byte((u8*)&aSalt[0]));
         sqlite3_randomness(4, &aSalt[1]);
         walIndexWriteHdr(pWal);
-        memset((void*)pInfo, 0, sizeof(*pInfo));
+        pInfo->nBackfill = 0;
+        for(i=1; i<WAL_NREADER; i++) pInfo->aReadMark[i] = READMARK_NOT_USED;
+        assert( pInfo->aReadMark[0]==0 );
         walUnlockExclusive(pWal, WAL_READ_LOCK(1), WAL_NREADER-1);
       }
     }