blob: 07b5152968f8f4ab03cd36598ba744c36e360f42 [file] [log] [blame]
drh34e258c2013-05-23 01:40:53 +00001# 2013-05-23
2#
3# The author disclaims copyright to this source code. In place of
4# a legal notice, here is a blessing:
5#
6# May you do good and not evil.
7# May you find forgiveness for yourself and forgive others.
8# May you share freely, never taking more than you give.
9#
10#***********************************************************************
11#
12
13set testdir [file dirname $argv0]
14source $testdir/tester.tcl
dand9031542013-07-05 16:54:30 +000015ifcapable !mmap||!vtab {
drh34e258c2013-05-23 01:40:53 +000016 finish_test
17 return
18}
19source $testdir/lock_common.tcl
20set testprefix mmap3
21
22do_test mmap3-1.0 {
23 load_static_extension db wholenumber
24 db eval {
25 PRAGMA mmap_size=100000;
26 CREATE TABLE t1(x, y);
27 CREATE VIRTUAL TABLE nums USING wholenumber;
28 INSERT INTO t1 SELECT value, randomblob(value) FROM nums
29 WHERE value BETWEEN 1 and 1000;
30 SELECT sum(x), sum(length(y)) from t1;
31 PRAGMA mmap_size;
32 }
33} {100000 500500 500500 100000}
34do_test mmap3-1.2 {
35 db eval {
36 PRAGMA mmap_size=50000;
37 CREATE TABLE t2(a,b);
38 SELECT name FROM sqlite_master WHERE type='table' ORDER BY 1;
39 PRAGMA quick_check;
40 PRAGMA mmap_size;
41 }
42} {50000 nums t1 t2 ok 50000}
43do_test mmap3-1.3 {
44 db eval {
45 PRAGMA mmap_size=250000;
46 DROP TABLE t2;
47 SELECT name FROM sqlite_master WHERE type='table' ORDER BY 1;
48 PRAGMA quick_check;
49 PRAGMA mmap_size;
50 }
51} {250000 nums t1 ok 250000}
52do_test mmap3-1.4 {
53 db eval {SELECT x FROM t1 WHERE +x BETWEEN 10 AND 15} {
54 db eval {PRAGMA mmap_size=150000}
55 }
56 db eval {
57 PRAGMA quick_check;
58 PRAGMA mmap_size;
59 }
60} {ok 250000}
61do_test mmap3-1.5 {
62 db eval {SELECT x FROM t1 WHERE +x BETWEEN 10 AND 15} {
63 db eval {PRAGMA mmap_size=0}
64 }
65 db eval {
66 PRAGMA quick_check;
67 PRAGMA mmap_size;
68 }
69} {ok 250000}
70do_test mmap3-1.6 {
71 db eval {SELECT x FROM t1 WHERE +x BETWEEN 10 AND 15} {
72 set x [db one {PRAGMA mmap_size}]
73 }
74 set x [concat $x [db eval {
75 PRAGMA quick_check;
76 PRAGMA mmap_size;
77 }]]
78} {250000 ok 250000}
79do_test mmap3-1.7 {
80 db eval {
81 PRAGMA mmap_size(0);
82 CREATE TABLE t3(a,b,c);
83 SELECT name FROM sqlite_master WHERE type='table' ORDER BY 1;
84 PRAGMA quick_check;
85 PRAGMA mmap_size;
86 }
87} {0 nums t1 t3 ok 0}
88do_test mmap3-1.8 {
89 db eval {SELECT x FROM t1 WHERE +x BETWEEN 10 AND 15} {
90 db eval {PRAGMA mmap_size=75000}
91 }
92 db eval {
93 PRAGMA quick_check;
94 PRAGMA mmap_size;
95 }
96} {ok 75000}
97
98finish_test