]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make sure the progress callback is invoked prior to an SQLITE_ROW return if
authordrh <drh@noemail.net>
Wed, 13 Nov 2013 23:48:46 +0000 (23:48 +0000)
committerdrh <drh@noemail.net>
Wed, 13 Nov 2013 23:48:46 +0000 (23:48 +0000)
it is overdue to be called.

FossilOrigin-Name: 21f59b04f74738d08ebad693646bbaea24dc45ef

manifest
manifest.uuid
src/vdbe.c

index 581e75d42aeaf7a0d36ac151a75f69beaa54d9b5..03e87575aee4049d63cbb8958ec8c49a24eda1e8 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Merge\sthe\sskip-scan\senhancement\sinto\strunk.
-D 2013-11-13T20:46:11.977
+C Make\ssure\sthe\sprogress\scallback\sis\sinvoked\sprior\sto\san\sSQLITE_ROW\sreturn\sif\nit\sis\soverdue\sto\sbe\scalled.
+D 2013-11-13T23:48:46.535
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 8a07bebafbfda0eb67728f4bd15a36201662d1a1
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -280,7 +280,7 @@ F src/update.c 3de7e657b98ac67338d775c114a4068faf732402
 F src/utf.c 6fc6c88d50448c469c5c196acf21617a24f90269
 F src/util.c 2fa6c821d28bbdbeec1b2a7b091a281c9ef8f918
 F src/vacuum.c 3728d74919d4fb1356f9e9a13e27773db60b7179
-F src/vdbe.c 3d73013b4ef54061e768443fb35a36b3dd289663
+F src/vdbe.c 0057612c2678b08812fc4a9d5019351cbeb9ee97
 F src/vdbe.h c06f0813f853566457ce9cfb1a4a4bc39a5da644
 F src/vdbeInt.h 62eb680327011f3a4b0336642b0ca9d6ecc6eb91
 F src/vdbeapi.c 93a22a9ba2abe292d5c2cf304d7eb2e894dde0ed
@@ -1139,7 +1139,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
-P e7d34ec6814ed4606a6d5d7f68c218ae4d25e666 f668616a29686f3ce532731c534b168e536adbb5
-R 0f42dd23f60246e0b55a84d51974156a
+P b0bb975c0986fe01f1184c1d4888fe397174ad0f
+R 51ebd76e04274e826e1e2a1145d2a6ab
 U drh
-Z e8f824146c4a7790bef9ac829b4cd088
+Z c57556eaf40c3f587321800fb5d2a1a5
index a213e48cb9fcdb5c0e8ec4547c3dd029ea15438b..4387c022e575f449b54afc402db11d3a9248b5ec 100644 (file)
@@ -1 +1 @@
-b0bb975c0986fe01f1184c1d4888fe397174ad0f
\ No newline at end of file
+21f59b04f74738d08ebad693646bbaea24dc45ef
\ No newline at end of file
index c73bf596390db9e3d8c8ad78d9c509c62e954a31..6c5735b77a1e987f7182428901af7b948185d114 100644 (file)
@@ -1186,6 +1186,18 @@ case OP_ResultRow: {
   assert( pOp->p1>0 );
   assert( pOp->p1+pOp->p2<=(p->nMem-p->nCursor)+1 );
 
+#ifndef SQLITE_OMIT_PROGRESS_CALLBACK
+  /* Run the progress counter just before returning.
+  */
+  if( db->xProgress!=0
+   && nVmStep>=nProgressLimit
+   && db->xProgress(db->pProgressArg)!=0
+  ){
+    rc = SQLITE_INTERRUPT;
+    goto vdbe_error_halt;
+  }
+#endif
+
   /* If this statement has violated immediate foreign key constraints, do
   ** not return the number of rows modified. And do not RELEASE the statement
   ** transaction. It needs to be rolled back.  */