1 |
#!./bin/isish |
2 |
# adds a key -> msgID mapping to the key index |
3 |
package require openIsis 0.8 |
4 |
|
5 |
proc usage {} { |
6 |
puts "usage: ./addmsgkey {msgid} {key}" |
7 |
exit |
8 |
} |
9 |
|
10 |
# check for args |
11 |
if { 2 != $argc } usage |
12 |
set key [lindex $argv 1 ] |
13 |
set mfn [lindex $argv 0 ] |
14 |
incr mfn 1 |
15 |
|
16 |
set stb [ openIsis ] |
17 |
$stb add \ |
18 |
syspath /opt/openisis/db |
19 |
|
20 |
set kdb "[ $stb get syspath ]/msg/key" |
21 |
|
22 |
$stb req type open db $kdb |
23 |
openIsis::prnres "open result: " $stb |
24 |
set db [$stb .res get db ] |
25 |
|
26 |
|
27 |
$stb req type query key $key mode 1 |
28 |
set size [$stb .res get size] |
29 |
if { $size } { |
30 |
puts "removing all $key -> xxx mappings" |
31 |
|
32 |
set mfns [$stb .res get {rowid {}}] |
33 |
puts "mfns: $mfns" |
34 |
set i $size |
35 |
while { $i } { |
36 |
set m [lindex $mfns [expr $i-1]] |
37 |
puts "removing mfn $m" |
38 |
set idx [ $stb .req .idx ] |
39 |
$idx add -1 "del" |
40 |
$idx add -1 "mfn\t$m" |
41 |
$idx add -1 "fields" |
42 |
$idx add 42 $key |
43 |
|
44 |
$stb .req wrap -tag 926 $idx |
45 |
$stb req type delete |
46 |
incr i -1 |
47 |
} |
48 |
|
49 |
} |
50 |
|
51 |
puts "try to add $key -> $mfn" |
52 |
|
53 |
set idx [ $stb .req .idx ] |
54 |
$idx add -1 "add" |
55 |
$idx add -1 "mfn\t$mfn" |
56 |
$idx add -1 "fields" |
57 |
$idx add 42 $key |
58 |
|
59 |
$stb .req wrap -tag 926 $idx |
60 |
$stb req type insert |
61 |
|
62 |
openIsis::prnres "result: " $stb |
63 |
|
64 |
puts "now try to get $key" |
65 |
|
66 |
$stb req type query key $key mode 1 |
67 |
|
68 |
set size [$stb .res get size] |
69 |
if { 1 == $size } { |
70 |
puts "ok." |
71 |
} else { |
72 |
puts "err. please inspect $kdb.oxi" |
73 |
} |