blob: e369d75717e48e6b0c26cc618f85b7183618e548 [file] [log] [blame]
dan428c2182012-08-06 18:50:11 +00001# 2012 August 6
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
14set testdir [file dirname $argv0]
15source $testdir/tester.tcl
16set ::testprefix index5
17
18do_test 1.1 {
dan5bd8af72014-10-10 19:10:59 +000019 if {[permutation]=="memsubsys1"} {
20 execsql { PRAGMA auto_vacuum = 0; }
21 }
dan428c2182012-08-06 18:50:11 +000022 execsql {
23 PRAGMA page_size = 1024;
24 CREATE TABLE t1(x);
25 BEGIN;
26 }
27 for {set i 0} {$i < 100000} {incr i} {
28 execsql { INSERT INTO t1 VALUES(randstr(100,100)) }
29 }
30 execsql COMMIT
31 execsql {
32 CREATE INDEX i1 ON t1(x);
33 DROP INDEX I1;
34 PRAGMA main.page_size;
35 }
36} {1024}
37
38db close
39testvfs tvfs
40tvfs filter xWrite
41tvfs script write_cb
dan132d9382013-02-25 13:44:56 +000042proc write_cb {xCall file handle iOfst args} {
dan428c2182012-08-06 18:50:11 +000043 if {[file tail $file]=="test.db"} {
dan5bd8af72014-10-10 19:10:59 +000044 lappend ::write_list [expr $iOfst/1024 + 1]
dan428c2182012-08-06 18:50:11 +000045 }
dan428c2182012-08-06 18:50:11 +000046}
47
48do_test 1.2 {
49 sqlite3 db test.db -vfs tvfs
50 set ::write_list [list]
51 execsql { CREATE INDEX i1 ON t1(x) }
52} {}
53
54do_test 1.3 {
55 set nForward 0
56 set nBackward 0
57 set nNoncont 0
58 set iPrev [lindex $::write_list 0]
59 for {set i 1} {$i < [llength $::write_list]} {incr i} {
60 set iNext [lindex $::write_list $i]
61 if {$iNext==($iPrev+1)} {
62 incr nForward
63 } elseif {$iNext==($iPrev-1)} {
64 incr nBackward
65 } else {
66 incr nNoncont
67 }
68 set iPrev $iNext
69 }
drhc6a67172013-02-25 13:55:59 +000070 puts -nonewline \
71 " (forward=$nForward, back=$nBackward, noncontiguous=$nNoncont)"
dan428c2182012-08-06 18:50:11 +000072
drh70156982013-03-03 20:26:46 +000073 expr {$nForward > 2*($nBackward + $nNoncont)}
dan428c2182012-08-06 18:50:11 +000074} {1}
75db close
76tvfs delete
77
78finish_test