Roll src/third_party/WebKit a3b4a2e:7441784 (svn 202551:202552)
[chromium-blink-merge.git] / third_party / sqlite / src / test / mmap3.test
blob07b5152968f8f4ab03cd36598ba744c36e360f42
1 # 2013-05-23
3 # The author disclaims copyright to this source code.  In place of
4 # a legal notice, here is a blessing:
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.
10 #***********************************************************************
13 set testdir [file dirname $argv0]
14 source $testdir/tester.tcl
15 ifcapable !mmap||!vtab {
16   finish_test
17   return
19 source $testdir/lock_common.tcl
20 set testprefix mmap3
22 do_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}
34 do_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}
43 do_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}
52 do_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}
61 do_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}
70 do_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}
79 do_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}
88 do_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}
98 finish_test