]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Disable the xfer optimization if "PRAGMA count_changes=1" is configured. Ticket ...
authordan <dan@noemail.net>
Fri, 30 Sep 2011 12:01:01 +0000 (12:01 +0000)
committerdan <dan@noemail.net>
Fri, 30 Sep 2011 12:01:01 +0000 (12:01 +0000)
FossilOrigin-Name: 9ddfe1e41300413bc9af7e5ce0ec9d1daf9136b1

manifest
manifest.uuid
src/insert.c
src/vacuum.c
test/tkt-c48d99d690.test [new file with mode: 0644]
test/vacuum.test

index f42ab64e8091be2ce12999f6d231d0f3b18a3437..1d18abb52264c3f3dd2f8c007a3aab77494d8558 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C In\sthe\sshell,\sallow\sarbitrary\stable\snames\son\sthe\s".import"\scommand.\nTicket\s[d1d84037b90a449].
-D 2011-09-28T01:10:00.323
+C Disable\sthe\sxfer\soptimization\sif\s"PRAGMA\scount_changes=1"\sis\sconfigured.\sTicket\s[c48d99d690].
+D 2011-09-30T12:01:01.579
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in a162fe39e249b8ed4a65ee947c30152786cfe897
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -141,7 +141,7 @@ F src/global.c e230227de13601714b29f9363028514aada5ae2f
 F src/hash.c 458488dcc159c301b8e7686280ab209f1fb915af
 F src/hash.h 2894c932d84d9f892d4b4023a75e501f83050970
 F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08
-F src/insert.c 3eea5a53d2644116fb865afaa4699fabe62b441c
+F src/insert.c ca18783512323f74aaf4ee74b46ffd75ec80d031
 F src/journal.c 552839e54d1bf76fb8f7abe51868b66acacf6a0e
 F src/legacy.c a199d7683d60cef73089e892409113e69c23a99f
 F src/lempar.c 7f026423f4d71d989e719a743f98a1cbd4e6d99e
@@ -237,7 +237,7 @@ F src/trigger.c 1cfb80e2290ef66ea89cb4e821caae65a02c0d56
 F src/update.c 74a6cfb34e9732c1e2a86278b229913b4b51eeec
 F src/utf.c c53eb7404b3eb5c1cbb5655c6a7a0e0ce6bd50f0
 F src/util.c 06302ffd2b80408d4f6c7af71f7090e0cf8d8ff7
-F src/vacuum.c 05513dca036a1e7848fe18d5ed1265ac0b32365e
+F src/vacuum.c 297f39745e05d7a6ed7def7929451474d570a31e
 F src/vdbe.c 60340bfb23f456ea0791cb28262a887363773371
 F src/vdbe.h f0725ee997db869ecae5bb70a71612aabeca7755
 F src/vdbeInt.h 693d6ac6810298fc6b4c503cfbe3f99a240f40af
@@ -739,6 +739,7 @@ F test/tkt-b1d3a2e531.test 610ef582413171b379652663111b1f996d9f8f78
 F test/tkt-b351d95f9.test d14a503c414c5c58fdde3e80f9a3cfef986498c0
 F test/tkt-b72787b1.test e6b62b2b2785c04d0d698d6a603507e384165049
 F test/tkt-bd484a090c.test 60460bf946f79a79712b71f202eda501ca99b898
+F test/tkt-c48d99d690.test bed446e3513ae10eec1b86fdd186ef750226c408
 F test/tkt-cbd054fa6b.test f14f97ea43662e6f70c9e63287081e8be5d9d589
 F test/tkt-d11f09d36e.test fb44f7961aa6d4b632fb7b9768239832210b5fc7
 F test/tkt-d635236375.test 9d37e988b47d87505bc9445be0ca447002df5d09
@@ -860,7 +861,7 @@ F test/unordered.test e81169ce2a8f31b2c6b66af691887e1376ab3ced
 F test/update.test 8bc86fd7ef1a00014f76dc6a6a7c974df4aef172
 F test/uri.test 0d289d32396bdbc491e9dc845f1a52e13f861e0b
 F test/utf16align.test 54cd35a27c005a9b6e7815d887718780b6a462ae
-F test/vacuum.test 9516f3a8e49be666f2dde28561e4be5ae5612de0
+F test/vacuum.test ce91c39f7f91a4273bf620efad21086b5aa6ef1d
 F test/vacuum2.test af432e6e3bfc0ea20a80cb86a03c7d9876d38324
 F test/vacuum3.test 77ecdd54592b45a0bcb133339f99f1ae0ae94d0d
 F test/vacuum4.test d3f8ecff345f166911568f397d2432c16d2867d9
@@ -964,7 +965,7 @@ F tool/symbols.sh caaf6ccc7300fd43353318b44524853e222557d5
 F tool/tostr.awk e75472c2f98dd76e06b8c9c1367f4ab07e122d06
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
 F tool/warnings.sh b7fdb2cc525f5ef4fa43c80e771636dd3690f9d2
-P 19b8eaaf70db82d401d33beb7fd36045d5e8326f
-R 435f0dc1b7e1759ce0909fde7c17ff57
-U drh
-Z 73ce79df8c2bde7f261efb2cafa35265
+P f4dd32d30ed54f847319664cf749fd0b92b4af3f
+R 712f892aa9e5f34289b214c1af3c2cef
+U dan
+Z 65613378c768fb62c70f2ad14b487bbd
index 7253c0cf03b4e1eee4b3789bbc1b4b5296000b62..604108eedb89844be0c137b1f7611fa45626ba83 100644 (file)
@@ -1 +1 @@
-f4dd32d30ed54f847319664cf749fd0b92b4af3f
\ No newline at end of file
+9ddfe1e41300413bc9af7e5ce0ec9d1daf9136b1
\ No newline at end of file
index 452939db942f2b41006374df75c9edd51b3abe00..277a852cc7ed551c7cd501b676f9d497fb0f3f64 100644 (file)
@@ -1747,6 +1747,9 @@ static int xferOptimization(
     return 0;
   }
 #endif
+  if( (pParse->db->flags & SQLITE_CountRows)!=0 ){
+    return 0;
+  }
 
   /* If we get this far, it means either:
   **
index 5a4ed32052c52ce6b0a24f70926440e77637c4b1..0e92f4fb0e2c441444c717b1f87dc789b7767b76 100644 (file)
@@ -45,7 +45,7 @@ static int execSql(sqlite3 *db, char **pzErrMsg, const char *zSql){
     return sqlite3_errcode(db);
   }
   VVA_ONLY( rc = ) sqlite3_step(pStmt);
-  assert( rc!=SQLITE_ROW );
+  assert( rc!=SQLITE_ROW || (db->flags&SQLITE_CountRows) );
   return vacuumFinalize(db, pStmt, pzErrMsg);
 }
 
diff --git a/test/tkt-c48d99d690.test b/test/tkt-c48d99d690.test
new file mode 100644 (file)
index 0000000..9b40579
--- /dev/null
@@ -0,0 +1,26 @@
+
+set testdir [file dirname $argv0]
+source $testdir/tester.tcl
+
+set ::testprefix tkt-c48d99d690
+
+do_test 1.0 {
+  execsql {
+    CREATE TABLE t1(a, b);
+    CREATE TABLE t2(a, b);
+    INSERT INTO t1 VALUES('one'  , 1);
+    INSERT INTO t1 VALUES('two'  , 5);
+    INSERT INTO t1 VALUES('two'  , 2);
+    INSERT INTO t1 VALUES('three', 3);
+    PRAGMA count_changes = 1;
+  }
+} {}
+
+do_test 1.1 {
+  execsql { INSERT INTO t2 SELECT * FROM t1 }
+} {4}
+
+do_test 1.2 { execsql VACUUM } {}
+
+finish_test
+
index 9e6f5b2379f2f54186c1204a2cd5186e19070d89..57429c29ea5f867d6e63c6272d3c05e15bd4cf14 100644 (file)
@@ -385,4 +385,20 @@ ifcapable {autoinc} {
 
 forcedelete {a'z.db}
 
+# Test that "PRAGMA count_changes" does not interfere with VACUUM or cause
+# it to return any rows to the user.
+#
+do_test vacuum-10.1 {
+  db close
+  forcedelete test.db
+  sqlite3 db test.db
+  execsql {
+    CREATE TABLE t8(a, b);
+    INSERT INTO t8 VALUES('a', 'b');
+    INSERT INTO t8 VALUES('c', 'd');
+    PRAGMA count_changes = 1;
+  }
+} {}
+do_test vacuum-10.2 { execsql VACUUM } {}
+
 finish_test