Changing page size using VACUUM or backup is not allowed with a codec attached.

FossilOrigin-Name: 92be06c1a828d56652fa5269a3029f8cb029b2cd
This commit is contained in:
drh 2016-03-14 20:49:24 +00:00
parent 05586c3284
commit 4a8a646723
4 changed files with 83 additions and 42 deletions

View File

@ -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

View File

@ -1 +1 @@
ea1d2cddd59192251ee5fd912b190cded4959879
92be06c1a828d56652fa5269a3029f8cb029b2cd

View 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

View 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}}