]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Changing page size using VACUUM or backup is not allowed with a codec attached. see-testing
authordrh <drh@noemail.net>
Mon, 14 Mar 2016 20:49:24 +0000 (20:49 +0000)
committerdrh <drh@noemail.net>
Mon, 14 Mar 2016 20:49:24 +0000 (20:49 +0000)
FossilOrigin-Name: 92be06c1a828d56652fa5269a3029f8cb029b2cd

manifest
manifest.uuid
test/pager1.test
test/superlock.test

index 0391aaeca72e76dc83e7e7f422dd5d1147df292c..3b3c5f3c3b9335a624bb2926f7fbbc760c3a47d9 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Merge\stest\sscript\sfixes\sfrom\strunk.
-D 2016-03-14T18:42:04.674
+C Changing\spage\ssize\susing\sVACUUM\sor\sbackup\sis\snot\sallowed\swith\sa\scodec\sattached.
+D 2016-03-14T20:49:24.177
 F Makefile.in f53429fb2f313c099283659d0df6f20f932c861f
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc df0bf9ff7f8b3f4dd9fb4cc43f92fe58f6ec5c66
@@ -937,7 +937,7 @@ F test/orderby8.test 23ef1a5d72bd3adcc2f65561c654295d1b8047bd
 F test/orderby9.test 87fb9548debcc2cd141c5299002dd94672fa76a3
 F test/oserror.test b32dc34f2363ef18532e3a0a7358e3e7e321974f
 F test/ovfl.test 199c482696defceacee8c8e0e0ef36da62726b2f
-F test/pager1.test f49df1a8b0e38b9ee3a7dd2ab4d427507b7314ce
+F test/pager1.test 841868017e9dd3cb459b8d78862091a7d9cff21d
 F test/pager2.test 67b8f40ae98112bcdba1f2b2d03ea83266418c71
 F test/pager3.test 3856d9c80839be0668efee1b74811b1b7f7fc95f
 F test/pager4.test a122e9e6925d5b23b31e3dfef8c6a44bbf19590e
@@ -1072,7 +1072,7 @@ F test/subquery2.test 438f8a7da1457277b22e4176510f7659b286995f
 F test/subselect.test d24fd8757daf97dafd2e889c73ea4c4272dcf4e4
 F test/substr.test 18f57c4ca8a598805c4d64e304c418734d843c1a
 F test/subtype1.test 7fe09496352f97053af1437150751be2d0a0cae8
-F test/superlock.test 168011a6730aee70c28ea8d5e1c0592de4026f79
+F test/superlock.test ec94f0556b6488d97f71c79f9061ae08d9ab8f12
 F test/symlink.test c9ebe7330d228249e447038276bfc8a7b22f4849
 F test/sync.test 2f607e1821aa3af3c5c53b58835c05e511c95899
 F test/syscall.test f59ba4e25f7ba4a4c031026cc2ef8b6e4b4c639c
@@ -1456,7 +1456,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 99b9d7eef68fd6d5c9eecb5fbe3dfe002c1ca4a8 f7480e33eb82f2eae219d17ce46cd2d4edac07d2
-R a4b3be370b53beddc257d6f309680c72
+P ea1d2cddd59192251ee5fd912b190cded4959879
+R 24275616ba2669073b7ddeb77ba67682
 U drh
-Z 068814209d932469f07bb4748200130f
+Z 86d93a0053c6301f416af4041023113a
index 873981d4c550134cfbbcce3f686d4541e352c01e..ca6831f8bffbeeb17342f253b60edad7a22b764b 100644 (file)
@@ -1 +1 @@
-ea1d2cddd59192251ee5fd912b190cded4959879
\ No newline at end of file
+92be06c1a828d56652fa5269a3029f8cb029b2cd
\ No newline at end of file
index bc9ad83fd46541a1bd7214d3c6691b5e8213ab4c..c25c837b670b9cebb416b64d8f81b8468f1a0944 100644 (file)
@@ -1396,26 +1396,47 @@ do_test pager1-9.3.1 {
   execsql { PRAGMA page_size = 1024 }
   for {set ii 0} {$ii < 4} {incr ii} { execsql "CREATE TABLE t${ii}(a, b)" }
 } {}
-do_test pager1-9.3.2 {
-  sqlite3 db2 test.db2
-
-  execsql {
-    PRAGMA page_size = 4096;
-    PRAGMA synchronous = OFF;
-    CREATE TABLE t1(a, b);
-    CREATE TABLE t2(a, b);
-  } db2
-
-  sqlite3_backup B db2 main db main
-  B step 30
-  list [B step 10000] [B finish]
-} {SQLITE_DONE SQLITE_OK}
-do_test pager1-9.3.3 {
-  db2 close
-  db close
-  tv delete
-  file size test.db2
-} [file size test.db]
+if {[nonzero_reserved_bytes]} {
+  # backup with a page size changes is not possible with the codec
+  #
+  do_test pager1-9.3.2codec {
+    sqlite3 db2 test.db2
+    execsql {
+      PRAGMA page_size = 4096;
+      PRAGMA synchronous = OFF;
+      CREATE TABLE t1(a, b);
+      CREATE TABLE t2(a, b);
+    } db2
+    sqlite3_backup B db2 main db main
+    B step 30
+    list [B step 10000] [B finish]
+  } {SQLITE_READONLY SQLITE_READONLY}
+  do_test pager1-9.3.3codec {
+    db2 close
+    db close
+    tv delete
+    file size test.db2
+  } [file size test.db2]
+} else {
+  do_test pager1-9.3.2 {
+    sqlite3 db2 test.db2
+    execsql {
+      PRAGMA page_size = 4096;
+      PRAGMA synchronous = OFF;
+      CREATE TABLE t1(a, b);
+      CREATE TABLE t2(a, b);
+    } db2
+    sqlite3_backup B db2 main db main
+    B step 30
+    list [B step 10000] [B finish]
+  } {SQLITE_DONE SQLITE_OK}
+  do_test pager1-9.3.3 {
+    db2 close
+    db close
+    tv delete
+    file size test.db2
+  } [file size test.db]
+}
 
 do_test pager1-9.4.1 {
   faultsim_delete_and_reopen
@@ -2447,13 +2468,23 @@ do_test pager1-29.1 {
   }
   file size test.db
 } [expr 1024*3]
-do_test pager1-29.2 {
-  execsql {
-    PRAGMA page_size = 4096;
-    VACUUM;
-  }
-  file size test.db
-} [expr 4096*3]
+if {[nonzero_reserved_bytes]} {
+  # VACUUM with size changes is not possible with the codec.
+  do_test pager1-29.2 {
+    catchsql {
+      PRAGMA page_size = 4096;
+      VACUUM;
+    }
+  } {1 {attempt to write a readonly database}}
+} else {
+  do_test pager1-29.2 {
+    execsql {
+      PRAGMA page_size = 4096;
+      VACUUM;
+    }
+    file size test.db
+  } [expr 4096*3]
+}
 
 #-------------------------------------------------------------------------
 # Test that if an empty database file (size 0 bytes) is opened in 
index 1e4a4a78d985fe7c5462ac3a3b7eb5d426a4d8b0..704b0677a144b8b5dd1745a3f25d138c68097c16 100644 (file)
@@ -239,13 +239,23 @@ db_swap test.db2 test.db
 do_catchsql_test 6.9 { SELECT * FROM t1 } {0 {1 2 3 4}}
 do_catchsql_test 6.10 { SELECT * FROM t2 } {1 {no such table: t2}}
 
-do_execsql_test  6.11 { 
-  PRAGMA journal_mode = delete;
-  PRAGMA page_size = 512;
-  VACUUM;
-  PRAGMA journal_mode = wal;
-  INSERT INTO t1 VALUES(5, 6);
-} {delete wal}
+if {[nonzero_reserved_bytes]} {
+  # Vacuum with a size change is not allowed with the codec
+  do_execsql_test  6.11codec { 
+    PRAGMA journal_mode = delete;
+    VACUUM;
+    PRAGMA journal_mode = wal;
+    INSERT INTO t1 VALUES(5, 6);
+  } {delete wal}
+} else {
+  do_execsql_test  6.11 { 
+    PRAGMA journal_mode = delete;
+    PRAGMA page_size = 512;
+    VACUUM;
+    PRAGMA journal_mode = wal;
+    INSERT INTO t1 VALUES(5, 6);
+  } {delete wal}
+}
 
 db_swap test.db2 test.db
 do_catchsql_test 6.12 { SELECT * FROM t1 } {1 {no such table: t1}}