]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Cleanup to the OP_Checkpoint opcode.
authordrh <drh@noemail.net>
Mon, 7 Feb 2011 23:56:01 +0000 (23:56 +0000)
committerdrh <drh@noemail.net>
Mon, 7 Feb 2011 23:56:01 +0000 (23:56 +0000)
FossilOrigin-Name: f611a5a879b7dec1ed1d8bf32413c8a6b81c3172

manifest
manifest.uuid
src/pragma.c
src/vdbe.c

index c3c03e61975c836fd940a067332ece83a747e258..b7c52bccd9b33111fffe0afaf420741047ec4945 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,8 @@
-C Fix\ssome\stest\scases\sin\swalfault.test.\sExtend\sone\stest\scase\sto\srestore\scode\scoverage.\sAdd\swal5.test\sto\sthe\s"coverage-wal"\spermutation.
-D 2011-02-07T16:24:39.731
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+C Cleanup\sto\sthe\sOP_Checkpoint\sopcode.
+D 2011-02-07T23:56:01.776
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in de6498556d536ae60bb8bb10e8c1ba011448658c
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -169,7 +172,7 @@ F src/parse.y 12b7ebd61ea54f0e1b1083ff69cc2c8ce9353d58
 F src/pcache.c 09d38c44ab275db581f7a2f6ff8b9bc7f8c0faaa
 F src/pcache.h c683390d50f856d4cd8e24342ae62027d1bb6050
 F src/pcache1.c d548e31beafa792d1994b663a29a5303569efc4e
-F src/pragma.c 3d48a7f0a90bae8740adcc0d86e583b79da57f5b
+F src/pragma.c a83f320497aee18eda60fc8d854df5897906c2b1
 F src/prepare.c 395b3fab1b93f45b6aa194b23ebc201221c47b99
 F src/printf.c df2ff3bb5409e8958136933342c46464fbd017e7
 F src/random.c cd4a67b3953b88019f8cd4ccd81394a8ddfaba50
@@ -229,7 +232,7 @@ F src/update.c 227e6cd512108b84f69421fc6c7aa1b83d60d6e0
 F src/utf.c 1baeeac91707a4df97ccc6141ec0f808278af685
 F src/util.c ab1c92426494f499f42b9e307537b03e923d75c1
 F src/vacuum.c 924bd1bcee2dfb05376f79845bd3b4cec7b54b2f
-F src/vdbe.c 7f54982de40509458ee7ede8e356dccc19f5b161
+F src/vdbe.c 167432ac0db5820b886685a7a6ad8f39520db4fb
 F src/vdbe.h 4de0efb4b0fdaaa900cf419b35c458933ef1c6d2
 F src/vdbeInt.h 6e6f28e9bccc6c703dca1372fd661c57b5c15fb0
 F src/vdbeapi.c 8e9324fd35eb70d0b5904bd1af40f2598744dc4d
@@ -906,7 +909,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P 5a4b6652cf3780ffed6fe0fe669e8090b0b71e81
-R d8e3b7dc9ee829705f21f80baf365b1e
-U dan
-Z a9734195708d8a3e3714a424a8d821c7
+P f83b07ace340c9dd3e0cbe3cd3c106db003b0bd4
+R 9dff0923b368f38852a045e469f02e78
+U drh
+Z 6b35d5e6fad59de45e9947a1e34c052b
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.6 (GNU/Linux)
+
+iD8DBQFNUIaUoxKgR168RlERAlSZAJ0VEHxRU9y2VR34VGKpOjMwCIDtOwCZAc54
+Vv+GWj7csdaDbvii+wYkKCc=
+=OT7F
+-----END PGP SIGNATURE-----
index 9c7fc35a29fe6320b0909df99556d11bac454a87..0dbc82b56907381c6a77645c7eba3d291af6a91f 100644 (file)
@@ -1 +1 @@
-f83b07ace340c9dd3e0cbe3cd3c106db003b0bd4
\ No newline at end of file
+f611a5a879b7dec1ed1d8bf32413c8a6b81c3172
\ No newline at end of file
index 15e2bef59f989989c9f2c1ac32867ddbee8eb4b5..cbfe01f01466465f17e4fb2f93712f3e44f80f91 100644 (file)
@@ -1407,7 +1407,7 @@ void sqlite3Pragma(
     sqlite3VdbeSetColName(v, 1, COLNAME_NAME, "log", SQLITE_STATIC);
     sqlite3VdbeSetColName(v, 2, COLNAME_NAME, "checkpointed", SQLITE_STATIC);
 
-    sqlite3VdbeAddOp2(v, OP_Checkpoint, iBt, eMode);
+    sqlite3VdbeAddOp3(v, OP_Checkpoint, iBt, eMode, 1);
     sqlite3VdbeAddOp2(v, OP_ResultRow, 1, 3);
   }else
 
index 90e4065e74f6073c7d6551623067c7b1d1cf3497..c2237ebf97eb709d2f94fd624cf673558fa1fa4b 100644 (file)
@@ -5219,29 +5219,32 @@ case OP_AggFinal: {
 **
 ** Checkpoint database P1. This is a no-op if P1 is not currently in
 ** WAL mode. Parameter P2 is one of SQLITE_CHECKPOINT_PASSIVE, FULL
-** or RESTART.
+** or RESTART.  Write 1 or 0 into mem[P3] if the checkpoint returns
+** SQLITE_BUSY or not, respectively.  Write the number of pages in the
+** WAL after the checkpoint into mem[P3+1] and the number of pages
+** in the WAL that have been checkpointed after the checkpoint
+** completes into mem[P3+2].  However on an error, mem[P3+1] and
+** mem[P3+2] are initialized to -1.
 */
 case OP_Checkpoint: {
-  int nLog = -1;                  /* Number of pages in WAL log */
-  int nCkpt = -1;                 /* Number of checkpointed pages */
-  int bBusy = 0;
+  int i;                          /* Loop counter */
+  int aRes[3];                    /* Results */
+  Mem *pMem;                      /* Write results here */
+
+  aRes[0] = 0;
+  aRes[1] = aRes[2] = -1;
   assert( pOp->p2==SQLITE_CHECKPOINT_PASSIVE
        || pOp->p2==SQLITE_CHECKPOINT_FULL
        || pOp->p2==SQLITE_CHECKPOINT_RESTART
   );
-  rc = sqlite3Checkpoint(db, pOp->p1, pOp->p2, &nLog, &nCkpt);
+  rc = sqlite3Checkpoint(db, pOp->p1, pOp->p2, &aRes[1], &aRes[2]);
   if( rc==SQLITE_BUSY ){
     rc = SQLITE_OK;
-    bBusy = 1;
+    aRes[0] = 1;
   }
-
-  aMem[1].u.i = bBusy;
-  aMem[2].u.i = nLog;
-  aMem[3].u.i = nCkpt;
-  MemSetTypeFlag(&aMem[1], MEM_Int);
-  MemSetTypeFlag(&aMem[2], MEM_Int);
-  MemSetTypeFlag(&aMem[3], MEM_Int);
-
+  for(i=0, pMem = &aMem[pOp->p3]; i<3; i++, pMem++){
+    sqlite3VdbeMemSetInt64(pMem, (i64)aRes[i]);
+  }    
   break;
 };  
 #endif