#!/opt/isis/OpenIsis/tcl/bin/isish # vim:syntax=tcl # fully invert db using fsp # $Id: fullinv,v 1.2 2003/05/08 13:16:14 kripke Exp $ # package require openIsis 0.8 # TODO: use cmd line args set db test set v 0 set n 5 foreach arg {db v n} { catch {set $arg $env($arg)} } set isis [openIsis] ;# contact local server $isis add -syspath ../db/test -defaultdb $db $isis req -type open $isis req -type maxrow set max [$isis .res get rowid] set tot 0 $isis new ::openIsis::idx set fsp [source ../db/test/$db.fsp] proc ix {i {del 0}} { global isis db tot fsp $isis .req delete $isis req -type read -rowid $i $isis .res .rec clone rec ::openIsis::idx delete ::openIsis::idx add -1 "mfn\t$i" if $del { ::openIsis::idx add -1 del ;# delete mode } if [catch { $fsp incr tot [expr [::openIsis::idx length] / 2] $isis .req delete $isis .req wrap -tag 926 ::openIsis::idx if $::v { ::puts stderr [$isis .req serialize] } else { puts -nonewline "\r$i\t$tot"; flush stdout } $isis req -type insert }] { puts stderr "$i: $::errorInfo" } } switch -- [lindex $argv 0] \ del { # delete every nth for {set i 1} {$i <= $max} {incr i $n} { ix $i 1 } } \ add { # add every nth for {set i 1} {$i <= $max} {incr i $n} { ix $i } } \ test { # delete and reindex every nth for {set i 1} {$i <= $max} {incr i $n} { ix $i 1 } for {set i 1} {$i <= $max} {incr i $n} { ix $i } } \ default { # full inv for {set i 1} {$i <= $max} {incr i} { ix $i } } # puts "\n$tot entries"