1428c218cSdan# 2012 August 6 2428c218cSdan# 3428c218cSdan# The author disclaims copyright to this source code. In place of 4428c218cSdan# a legal notice, here is a blessing: 5428c218cSdan# 6428c218cSdan# May you do good and not evil. 7428c218cSdan# May you find forgiveness for yourself and forgive others. 8428c218cSdan# May you share freely, never taking more than you give. 9428c218cSdan# 10428c218cSdan#*********************************************************************** 11428c218cSdan# 12428c218cSdan 13428c218cSdan 14428c218cSdanset testdir [file dirname $argv0] 15428c218cSdansource $testdir/tester.tcl 16428c218cSdanset ::testprefix index5 17428c218cSdan 18428c218cSdando_test 1.1 { 195bd8af7cSdan if {[permutation]=="memsubsys1"} { 205bd8af7cSdan execsql { PRAGMA auto_vacuum = 0; } 215bd8af7cSdan } 22428c218cSdan execsql { 23428c218cSdan PRAGMA page_size = 1024; 24428c218cSdan CREATE TABLE t1(x); 25428c218cSdan BEGIN; 26428c218cSdan } 27428c218cSdan for {set i 0} {$i < 100000} {incr i} { 28428c218cSdan execsql { INSERT INTO t1 VALUES(randstr(100,100)) } 29428c218cSdan } 30428c218cSdan execsql COMMIT 31428c218cSdan execsql { 32428c218cSdan CREATE INDEX i1 ON t1(x); 33428c218cSdan DROP INDEX I1; 34428c218cSdan PRAGMA main.page_size; 35428c218cSdan } 36428c218cSdan} {1024} 37428c218cSdan 38428c218cSdandb close 39428c218cSdantestvfs tvfs 40428c218cSdantvfs filter xWrite 41428c218cSdantvfs script write_cb 42132d9383Sdanproc write_cb {xCall file handle iOfst args} { 43428c218cSdan if {[file tail $file]=="test.db"} { 445bd8af7cSdan lappend ::write_list [expr $iOfst/1024 + 1] 45428c218cSdan } 46428c218cSdan} 47428c218cSdan 48428c218cSdando_test 1.2 { 49428c218cSdan sqlite3 db test.db -vfs tvfs 50428c218cSdan set ::write_list [list] 51428c218cSdan execsql { CREATE INDEX i1 ON t1(x) } 52428c218cSdan} {} 53428c218cSdan 54428c218cSdando_test 1.3 { 55428c218cSdan set nForward 0 56428c218cSdan set nBackward 0 57428c218cSdan set nNoncont 0 58428c218cSdan set iPrev [lindex $::write_list 0] 59428c218cSdan for {set i 1} {$i < [llength $::write_list]} {incr i} { 60428c218cSdan set iNext [lindex $::write_list $i] 61428c218cSdan if {$iNext==($iPrev+1)} { 62428c218cSdan incr nForward 63428c218cSdan } elseif {$iNext==($iPrev-1)} { 64428c218cSdan incr nBackward 65428c218cSdan } else { 66428c218cSdan incr nNoncont 67428c218cSdan } 68428c218cSdan set iPrev $iNext 69428c218cSdan } 70*7b96f2faSmistachkin if {0} { 71c6a67173Sdrh puts -nonewline \ 72c6a67173Sdrh " (forward=$nForward, back=$nBackward, noncontiguous=$nNoncont)" 73*7b96f2faSmistachkin } 74428c218cSdan 757015698bSdrh expr {$nForward > 2*($nBackward + $nNoncont)} 76428c218cSdan} {1} 77428c218cSdandb close 78428c218cSdantvfs delete 79428c218cSdan 80428c218cSdanfinish_test 81