mmap3.test 2.4 KB

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