]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Allow "VACUUM INTO" to change the page_size of a database even if the
authordrh <>
Fri, 29 Oct 2021 13:10:02 +0000 (13:10 +0000)
committerdrh <>
Fri, 29 Oct 2021 13:10:02 +0000 (13:10 +0000)
original database is in WAL mode.  Enhancement suggested by
[forum:/forumpost/033f2c9d1f|forum post 033f2c9d1f].

FossilOrigin-Name: efc7e8c99a86e9d9eb81655ce96353847bd2cca64eb8f8d10e297f6f4d38e563

manifest
manifest.uuid
src/vacuum.c
test/vacuum-into.test

index 132a8fe6756175e03d9d1641f8e0ea94998de8d5..db89ae7616a980216bda7cadd5145ab564a5c2f3 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\spragmas\s"multiplex_enabled",\s"multiplex_chunksize",\sand\s"multiplex_filecount"\sto\sthe\smultiplexer\simplementation.
-D 2021-10-29T12:29:22.568
+C Allow\s"VACUUM\sINTO"\sto\schange\sthe\spage_size\sof\sa\sdatabase\seven\sif\sthe\noriginal\sdatabase\sis\sin\sWAL\smode.\s\sEnhancement\ssuggested\sby\n[forum:/forumpost/033f2c9d1f|forum\spost\s033f2c9d1f].
+D 2021-10-29T13:10:02.528
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -620,7 +620,7 @@ F src/update.c 69c4c10bc6873a80c0a77cb578f9fc60ee90003d03f9530bc3370fa24615772d
 F src/upsert.c 8789047a8f0a601ea42fa0256d1ba3190c13746b6ba940fe2d25643a7e991937
 F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0
 F src/util.c 30df8356e231dad33be10bb27897655002668343280004ba28c734489414a167
-F src/vacuum.c 454973a59fb20bb982efc2df568a098616db6328a0491b6e84e2e07f7333db45
+F src/vacuum.c 6c38ddc52f0619865c91dae9c441d4d48bf3040d7dc1bc5b22da1e45547ed0b3
 F src/vdbe.c daa876fbf9331a8b776696903877353bc352c9e30f5260c465386f2b29dfc4cf
 F src/vdbe.h 25dabb25c7e157b84e59260cfb5b466c3ac103ede9f36f4db371332c47601abe
 F src/vdbeInt.h 38206c8dd6b60ff03d9fd4f626b1b4fd0eef7cdc44f2fc2c1973b0f932a3f26b
@@ -1681,7 +1681,7 @@ F test/uri.test 3481026f00ade6dfe8adb7acb6e1e47b04369568
 F test/uri2.test 9d3ba7a53ee167572d53a298ee4a5d38ec4a8fb7
 F test/userauth01.test e740a2697a7b40d7c5003a7d7edaee16acd349a9
 F test/utf16align.test 54cd35a27c005a9b6e7815d887718780b6a462ae
-F test/vacuum-into.test 48f4cec354fb6f27c98ef58d2fe49a11b71ff131af0cd9140efacc9858b9f670
+F test/vacuum-into.test c4c25dcf8ca909e33c1f5f0bb0f54b990c2c1dcbee7a4995843e79e40681a894
 F test/vacuum.test ce91c39f7f91a4273bf620efad21086b5aa6ef1d
 F test/vacuum2.test 9fd45ce6ce29f5614c249e03938d3567c06a9e772d4f155949f8eafe2d8af520
 F test/vacuum3.test 77ecdd54592b45a0bcb133339f99f1ae0ae94d0d
@@ -1929,7 +1929,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 5374226df4a2c1b59258839532b67a399c447ac8ec1408fdf2dffb9c41e1349e
-R db79de1638e0749eebe4d5bf88ced051
+P 39c5e80dbf94ac3079b3e0c2c3e6608ac366e3f3de3cea4f4947addc3f52bc36
+R d68f81b39f86cb06b4a36b68798fdf37
 U drh
-Z ec23d72770cad137c5e9586cf56e39f9
+Z df8c8b91d90a62fffcb8772ebdcbd4b6
index 58c45a9c0cf7a617adb316b8c86f035ddf6867be..2db762f86774ff4d17ef2a9c95e80dedc17a28b0 100644 (file)
@@ -1 +1 @@
-39c5e80dbf94ac3079b3e0c2c3e6608ac366e3f3de3cea4f4947addc3f52bc36
\ No newline at end of file
+efc7e8c99a86e9d9eb81655ce96353847bd2cca64eb8f8d10e297f6f4d38e563
\ No newline at end of file
index be0e17535d5c9ef44d315d5e98a686c6519e17ea..bcab1de142deb6ea565781ec00adb657a80984db 100644 (file)
@@ -250,7 +250,9 @@ SQLITE_NOINLINE int sqlite3RunVacuum(
 
   /* Do not attempt to change the page size for a WAL database */
   if( sqlite3PagerGetJournalMode(sqlite3BtreePager(pMain))
-                                               ==PAGER_JOURNALMODE_WAL ){
+                                               ==PAGER_JOURNALMODE_WAL
+   && pOut==0
+  ){
     db->nextPagesize = 0;
   }
 
index cd1c57a26b4591b4571bb25ee835c0e4507e09c6..1207105e05468348b6b7f648f82b64d51d1fa04e 100644 (file)
@@ -100,4 +100,35 @@ do_test vacuum-into-510 {
 db2 close
 db close
 
+# Change the page-size on a VACUUM INTO even if the original
+# database is in WAL mode.
+#
+forcedelete test.db
+forcedelete test.db2
+do_test vacuum-into-600 {
+  sqlite3 db test.db
+  db eval {
+    PRAGMA page_size=4096;
+    PRAGMA journal_mode=WAL;
+    CREATE TABLE t1(a);
+    INSERT INTO t1 VALUES(19);
+    CREATE INDEX t1a ON t1(a);
+    PRAGMA integrity_check;
+  }
+} {wal ok}
+do_execsql_test vacuum-into-610 {
+  PRAGMA page_size;
+} {4096}
+do_execsql_test vacuum-into-620 {
+  PRAGMA page_size=1024;
+  VACUUM INTO 'test.db2';
+} {}
+do_test vacuum-into-630 {
+  sqlite3 db test.db2
+  db eval {
+    PRAGMA page_size;
+    PRAGMA integrity_check;
+  }
+} {1024 ok}
+
 finish_test