-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdemo
executable file
·134 lines (112 loc) · 3.33 KB
/
demo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#export COMDB2_ROOT=/opt/bb
export COMDB2_ROOT=/bb/comdb2/akdb
export PATH=$COMDB2_ROOT/bin:$PATH
comdb2=$(which comdb2)
cdb2sql=$(which cdb2sql)
cdb2rcv=$(which cdb2rcv)
comdb2ar=$(which comdb2ar)
dbdir=$COMDB2_ROOT/var/cdb2
function read_key {
read -n 1 -s -r -p "Press a key to continue"
echo ""
}
function run_sql {
echo "Run SQL: $1"
read_key
$cdb2sql db1 "$1"
}
if [[ $(psef 'comdb2 db' | wc -l) -ne 1 ]]; then
echo 'dbs running'
psef 'comdb2 db'
exit 1
fi
tmux setw remain-on-exit on
rm -rf $dbdir/db1
figlet create db1
$comdb2 db1 --create > /dev/null 2>&1
tmux split-window -h -p 50 "figlet start db1; $comdb2 db1"
tmux select-pane -t :.0
$cdb2sql db1 "select 1" >/dev/null 2>&1
while [[ $? -ne 0 ]]; do
sleep 0.2
$cdb2sql db1 "select 1" >/dev/null 2>&1
done
figlet done
read_key
figlet create t
run_sql "create table t(i int, j int)"
figlet create audit
run_sql "create table audit(t datetime, event text)"
figlet create sps
read_key
$cdb2sql db1 "create procedure audit version 'demo-audit' { $(<audit.lua) }"
$cdb2sql db1 "put default procedure audit 'demo-audit'"
$cdb2sql db1 "create procedure cons version 'demo-cons' { $(<cons.lua) }"
$cdb2sql db1 "put default procedure cons 'demo-cons'"
figlet add trigger
run_sql "create lua trigger audit on (table t for insert and delete)"
figlet add consumer
run_sql "create lua consumer cons on (table t for insert and delete and update)"
figlet start consumer
read_key
tmux split-window -v -p 50 -t :.1 "figlet consumer; echo 'Run SQL: exec procedure cons()'; $cdb2sql db1 \"exec procedure cons()\""
tmux select-pane -t :.0
figlet insert
run_sql "insert into t select value, value * 10 from generate_series(1, 3)"
figlet update
run_sql "update t set i = 0 where i < 2"
figlet delete
run_sql "delete from t where i > 2"
figlet audit log
run_sql "select event from audit order by t"
figlet add replicant
run_sql "create lua replicant rep"
figlet done
read_key
figlet clone db1
$cdb2sql db1 "exec procedure sys.cmd.send('flush')" > /dev/null
sleep 1
rm -rf $dbdir/db2
mkdir -p $dbdir/db2 && cd $dbdir/db2 && $comdb2ar c $dbdir/db1/db1.lrl 2>/dev/null | tar x
mv $dbdir/db2/db1.lrl $dbdir/db2/db2.lrl
sed -i 's/db1/db2/' $dbdir/db2/db2.lrl
$comdb2 db2 -fullrecovery > /dev/null 2>&1
tmux new-window "$comdb2 db2"
tmux select-window -t 1
$cdb2sql db2 "select 1" >/dev/null 2>&1
while [[ $? -ne 0 ]]; do
sleep 0.2
$cdb2sql db2 "select 1" >/dev/null 2>&1
done
$cdb2sql db2 "drop lua consumer rep"
$cdb2sql db2 "drop lua consumer cons"
$cdb2sql db2 "drop lua consumer audit"
$cdb2sql db1 "exec procedure sys.cmd.send('flush')" > /dev/null
sleep 1
$cdb2sql db2 "exec procedure sys.cmd.send('exit')" > /dev/null
while [[ $? -eq 0 ]]; do
sleep 0.2
$cdb2sql db2 "select 1" >/dev/null 2>&1
done
tmux kill-window -t 2
sleep 2
tmux split-window -t :.1 -h -p 50 "figlet start db2; $comdb2 db2"
tmux select-pane -t :.0
$cdb2sql db2 "select 1" >/dev/null 2>&1
while [[ $? -ne 0 ]]; do
sleep 0.2
$cdb2sql db2 "select 1" >/dev/null 2>&1
done
figlet done
read_key
figlet 'start rep'
read_key
tmux split-window -t :.3 -v -p 50 "figlet cdb2rcv; echo 'Run SQL: exec procedure rep()'; $cdb2rcv -s db1@$HOSTNAME -d db2@$HOSTNAME rep"
tmux select-pane -t :.0
figlet 'done'
read_key
tmux split-window -t :.0 -v -p 50 "figlet db2; $cdb2sql db2"
tmux select-pane -t :.0
clear
figlet db1
$cdb2sql db1