]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Disable row counting on queries run while doing a VACUUM. vacuum-attached-db
authordrh <drh@noemail.net>
Fri, 19 Aug 2016 15:12:38 +0000 (15:12 +0000)
committerdrh <drh@noemail.net>
Fri, 19 Aug 2016 15:12:38 +0000 (15:12 +0000)
FossilOrigin-Name: ad35ef116296e5d6aaeb9ef260bf35bee3bd6d20

manifest
manifest.uuid
src/vacuum.c

index fea0d6a17b189d09e2a13435ef7e16a2c5f6b674..1f7557a84d48964be5657a6959eee7a64b7de570 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sthe\scapability\sto\sVACUUM\san\sattached\sdatabase\sby\sspecifying\sthe\sschema\nname\sas\san\sargument\sto\sthe\sVACUUM\scommand.\s\sSince\sversion\s2.0,\sVACUUM\shas\naccepted\san\sargument\swhich\swas\ssilently\signored.\s\sNow\sit\shas\smeaning.
-D 2016-08-19T14:20:56.900
+C Disable\srow\scounting\son\squeries\srun\swhile\sdoing\sa\sVACUUM.
+D 2016-08-19T15:12:38.157
 F Makefile.in cfd8fb987cd7a6af046daa87daa146d5aad0e088
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc d66d0395c38571aab3804f8db0fa20707ae4609a
@@ -449,7 +449,7 @@ F src/trigger.c 11e20b3b12c847b3b9055594c0f1631266bb53fc
 F src/update.c 8179e699dbd45b92934fd02d3d8e3732e8da8802
 F src/utf.c 699001c79f28e48e9bcdf8a463da029ea660540c
 F src/util.c 810ec3f22e2d1b62e66c30fe3621ebdedd23584d
-F src/vacuum.c 0fecf4ba5ae91a2f1d601345f976b028888803d4
+F src/vacuum.c 913970b9d86dd6c2b8063ef1af421880f1464ec3
 F src/vdbe.c 15376952b0c5dc0afbac6cd8791579dd19ff0a01
 F src/vdbe.h 67bc551f7faf04c33493892e4b378aada823ed10
 F src/vdbeInt.h c59381049af5c7751a83456c39b80d1a6fde1f9d
@@ -1511,10 +1511,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P cb9865e14db1c0076618f13400151112f84960cb
-R d22b71c0b6e2dcfd7355ff82dbeacb9a
-T *branch * vacuum-attached-db
-T *sym-vacuum-attached-db *
-T -sym-trunk *
+P 29d63059b4d2bb612523ac55ebfef040d054a64f
+R abd29f9f3d87c2af53d085425233b2a6
 U drh
-Z 9021190c8e1ac254dada8dc6dfa393f1
+Z 5800f169232e621dbe2100315fb2f1aa
index e1b549e940df7880d63e2249ee6fbef717628232..bc4fefd82a0bd3dcf53aa6f49a0183d085813198 100644 (file)
@@ -1 +1 @@
-29d63059b4d2bb612523ac55ebfef040d054a64f
\ No newline at end of file
+ad35ef116296e5d6aaeb9ef260bf35bee3bd6d20
\ No newline at end of file
index 56e74fdd1126b2e25700428b39fc00547f77e272..295beb6752da5b4aeacac724cc0499a0f0cab497 100644 (file)
 /*
 ** Execute zSql on database db.
 **
-** If zSql begins with 'S' (if it is a SELECT statement) then
-** take each row of result and call execSql() again recursively.
-** It is guaranteed that each row will have only one column that
-** does not begin with 'S'.
+** If zSql returns rows, then each row will have exactly one
+** column.  (This will only happen if zSql begins with "SELECT".)
+** Take each row of result and call execSql() again recursively.
 **
 ** The execSqlF() routine does the same thing, except it accepts
 ** a format string as its third argument
@@ -37,15 +36,17 @@ static int execSql(sqlite3 *db, char **pzErrMsg, const char *zSql){
   /* printf("SQL: [%s]\n", zSql); fflush(stdout); */
   rc = sqlite3_prepare_v2(db, zSql, -1, &pStmt, 0);
   if( rc!=SQLITE_OK ) return rc;
-  while( SQLITE_ROW==(rc = sqlite3_step(pStmt)) && zSql[0]=='S' ){
+  while( SQLITE_ROW==(rc = sqlite3_step(pStmt)) ){
     const char *zSubSql = (const char*)sqlite3_column_text(pStmt,0);
+    assert( sqlite3_strnicmp(zSql,"SELECT",6)==0 );
     if( zSubSql ){
       assert( zSubSql[0]!='S' );
       rc = execSql(db, pzErrMsg, zSubSql);
       if( rc!=SQLITE_OK ) break;
     }
   }
-  if( rc==SQLITE_ROW || rc==SQLITE_DONE ) rc = SQLITE_OK;
+  assert( rc!=SQLITE_ROW );
+  if( rc==SQLITE_DONE ) rc = SQLITE_OK;
   if( rc ){
     sqlite3SetString(pzErrMsg, db, sqlite3_errmsg(db));
   }
@@ -140,7 +141,7 @@ int sqlite3RunVacuum(char **pzErrMsg, sqlite3 *db, int iDb){
   saved_mTrace = db->mTrace;
   db->flags |= (SQLITE_WriteSchema | SQLITE_IgnoreChecks
                  | SQLITE_PreferBuiltin | SQLITE_Vacuum);
-  db->flags &= ~(SQLITE_ForeignKeys | SQLITE_ReverseOrder);
+  db->flags &= ~(SQLITE_ForeignKeys | SQLITE_ReverseOrder | SQLITE_CountRows);
   db->mTrace = 0;
 
   zDbMain = db->aDb[iDb].zDbSName;