1 |
dpavlin |
237 |
#!/opt/isis/OpenIsis/tcl/bin/isish |
2 |
|
|
# vim:syntax=tcl |
3 |
|
|
# fully invert db using fsp |
4 |
|
|
# $Id: fullinv,v 1.2 2003/05/08 13:16:14 kripke Exp $ |
5 |
|
|
# |
6 |
|
|
|
7 |
|
|
package require openIsis 0.8 |
8 |
|
|
|
9 |
|
|
# TODO: use cmd line args |
10 |
|
|
set db test |
11 |
|
|
set v 0 |
12 |
|
|
set n 5 |
13 |
|
|
foreach arg {db v n} { |
14 |
|
|
catch {set $arg $env($arg)} |
15 |
|
|
} |
16 |
|
|
|
17 |
|
|
set isis [openIsis] ;# contact local server |
18 |
|
|
$isis add -syspath ../db/test -defaultdb $db |
19 |
|
|
$isis req -type open |
20 |
|
|
|
21 |
|
|
$isis req -type maxrow |
22 |
|
|
set max [$isis .res get rowid] |
23 |
|
|
set tot 0 |
24 |
|
|
|
25 |
|
|
$isis new ::openIsis::idx |
26 |
|
|
set fsp [source ../db/test/$db.fsp] |
27 |
|
|
|
28 |
|
|
|
29 |
|
|
proc ix {i {del 0}} { |
30 |
|
|
global isis db tot fsp |
31 |
|
|
$isis .req delete |
32 |
|
|
$isis req -type read -rowid $i |
33 |
|
|
$isis .res .rec clone rec |
34 |
|
|
|
35 |
|
|
::openIsis::idx delete |
36 |
|
|
::openIsis::idx add -1 "mfn\t$i" |
37 |
|
|
if $del { |
38 |
|
|
::openIsis::idx add -1 del ;# delete mode |
39 |
|
|
} |
40 |
|
|
if [catch { |
41 |
|
|
$fsp |
42 |
|
|
incr tot [expr [::openIsis::idx length] / 2] |
43 |
|
|
|
44 |
|
|
$isis .req delete |
45 |
|
|
$isis .req wrap -tag 926 ::openIsis::idx |
46 |
|
|
if $::v { |
47 |
|
|
::puts stderr [$isis .req serialize] |
48 |
|
|
} else { |
49 |
|
|
puts -nonewline "\r$i\t$tot"; flush stdout |
50 |
|
|
} |
51 |
|
|
$isis req -type insert |
52 |
|
|
}] { |
53 |
|
|
puts stderr "$i: $::errorInfo" |
54 |
|
|
} |
55 |
|
|
} |
56 |
|
|
|
57 |
|
|
|
58 |
|
|
switch -- [lindex $argv 0] \ |
59 |
|
|
del { # delete every nth |
60 |
|
|
for {set i 1} {$i <= $max} {incr i $n} { ix $i 1 } |
61 |
|
|
} \ |
62 |
|
|
add { # add every nth |
63 |
|
|
for {set i 1} {$i <= $max} {incr i $n} { ix $i } |
64 |
|
|
} \ |
65 |
|
|
test { # delete and reindex every nth |
66 |
|
|
for {set i 1} {$i <= $max} {incr i $n} { ix $i 1 } |
67 |
|
|
for {set i 1} {$i <= $max} {incr i $n} { ix $i } |
68 |
|
|
} \ |
69 |
|
|
default { # full inv |
70 |
|
|
for {set i 1} {$i <= $max} {incr i} { ix $i } |
71 |
|
|
} |
72 |
|
|
# puts "\n$tot entries" |