gitlab.com/CoiaPrant/sqlite3@v1.19.1/testdata/tcl/mmap3.test (about)

     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  
    13  set testdir [file dirname $argv0]
    14  source $testdir/tester.tcl
    15  ifcapable !mmap||!vtab {
    16    finish_test
    17    return
    18  }
    19  source $testdir/lock_common.tcl
    20  set testprefix mmap3
    21  
    22  # A codec shuts down memory-mapped I/O
    23  if {[nonzero_reserved_bytes]} {finish_test; return;}
    24  
    25  do_test mmap3-1.0 {
    26    load_static_extension db wholenumber
    27    db eval {
    28      PRAGMA mmap_size=100000;
    29      CREATE TABLE t1(x, y);
    30      CREATE VIRTUAL TABLE nums USING wholenumber;
    31      INSERT INTO t1 SELECT value, randomblob(value) FROM nums
    32                      WHERE value BETWEEN 1 and 1000;
    33      SELECT sum(x), sum(length(y)) from t1;
    34      PRAGMA mmap_size;
    35    }
    36  } {100000 500500 500500 100000}
    37  do_test mmap3-1.2 {
    38    db eval {
    39      PRAGMA mmap_size=50000;
    40      CREATE TABLE t2(a,b);
    41      SELECT name FROM sqlite_master WHERE type='table' ORDER BY 1;
    42      PRAGMA quick_check;
    43      PRAGMA mmap_size;
    44    }
    45  } {50000 nums t1 t2 ok 50000}
    46  do_test mmap3-1.3 {
    47    db eval {
    48      PRAGMA mmap_size=250000;
    49      DROP TABLE t2;
    50      SELECT name FROM sqlite_master WHERE type='table' ORDER BY 1;
    51      PRAGMA quick_check;
    52      PRAGMA mmap_size;
    53    }
    54  } {250000 nums t1 ok 250000}
    55  do_test mmap3-1.4 {
    56    db eval {SELECT x FROM t1 WHERE +x BETWEEN 10 AND 15} {
    57      db eval {PRAGMA mmap_size=150000}
    58    }
    59    db eval {
    60      PRAGMA quick_check;
    61      PRAGMA mmap_size;
    62    }
    63  } {ok 250000}
    64  do_test mmap3-1.5 {
    65    db eval {SELECT x FROM t1 WHERE +x BETWEEN 10 AND 15} {
    66      db eval {PRAGMA mmap_size=0}
    67    }
    68    db eval {
    69      PRAGMA quick_check;
    70      PRAGMA mmap_size;
    71    }
    72  } {ok 250000}
    73  do_test mmap3-1.6 {
    74    db eval {SELECT x FROM t1 WHERE +x BETWEEN 10 AND 15} {
    75      set x [db one {PRAGMA mmap_size}]
    76    }
    77    set x [concat $x [db eval {
    78      PRAGMA quick_check;
    79      PRAGMA mmap_size;
    80    }]]
    81  } {250000 ok 250000}
    82  do_test mmap3-1.7 {
    83    db eval {
    84      PRAGMA mmap_size(0);
    85      CREATE TABLE t3(a,b,c);
    86      SELECT name FROM sqlite_master WHERE type='table' ORDER BY 1;
    87      PRAGMA quick_check;
    88      PRAGMA mmap_size;
    89    }
    90  } {0 nums t1 t3 ok 0}
    91  do_test mmap3-1.8 {
    92    db eval {SELECT x FROM t1 WHERE +x BETWEEN 10 AND 15} {
    93      db eval {PRAGMA mmap_size=75000}
    94    }
    95    db eval {
    96      PRAGMA quick_check;
    97      PRAGMA mmap_size;
    98    }
    99  } {ok 75000}
   100  
   101  finish_test