xref: /sqlite-3.40.0/test/mmap3.test (revision 962f9669)
1# 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
15ifcapable !mmap||!vtab {
16  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
99