Fri Jun 12 15:42:15 PDT 2009
- Previous message: [Slony1-commit] slony1-engine/tests/testomitcopy README gen_weak_user.sh generate_dml.sh init_add_tables.ik init_cluster.ik init_create_set.ik init_data.sql init_schema.sql init_subscribe_set.ik schema.diff settings.ik
- Next message: [Slony1-commit] slony1-engine/doc/adminguide adminscripts.sgml
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Update of /home/cvsd/slony1/slony1-engine/tools
In directory main.slony.info:/tmp/cvs-serv1425/tools
Modified Files:
Tag: REL_2_0_STABLE
slonikconfdump.sh
Log Message:
Revised slonik dump script based on input from our DBA group...
It now uses tsort to determine the subscription ordering, so should
work even with fairly sophisticated cascaded subscriptions
Index: slonikconfdump.sh
===================================================================
RCS file: /home/cvsd/slony1/slony1-engine/tools/Attic/slonikconfdump.sh,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -C2 -d -r1.1.2.2 -r1.1.2.3
*** slonikconfdump.sh 10 Jun 2009 21:11:56 -0000 1.1.2.2
--- slonikconfdump.sh 12 Jun 2009 22:42:13 -0000 1.1.2.3
***************
*** 12,21 ****
echo "cluster name=${SLONYCLUSTER};"
! echo "include <admin-conninfos.slonik>; # Draw in ADMIN CONNINFO lines"
Q="select distinct pa_server from ${SS}.sl_path order by pa_server;"
! PATHS=`psql -qtA -F ":" -c "${Q}"`
for svr in `echo ${PATHS}`; do
SQ="select pa_conninfo from ${SS}.sl_path where pa_server=${svr} order by pa_client asc limit 1;"
! conninfo=`psql -qtA -F ":" -c "${SQ}"`
echo "node ${svr} admin conninfo='${conninfo}';"
done
--- 12,42 ----
echo "cluster name=${SLONYCLUSTER};"
! function RQ () {
! local QUERY=$1
! RESULTSET=`psql -qtA -F ":" -R " " -c "${QUERY}"`
! echo ${RESULTSET}
! }
! function argn () {
! local V=$1
! local n=$2
! local res=`echo ${V} | cut -d : -f ${n}`
! echo $res
! }
!
! function arg1 () {
! echo `argn "$1" 1`
! }
! function arg2 () {
! echo `argn "$1" 2`
! }
! function arg3 () {
! echo `argn "$1" 3`
! }
!
Q="select distinct pa_server from ${SS}.sl_path order by pa_server;"
! PATHS=`RQ "${Q}"`
for svr in `echo ${PATHS}`; do
SQ="select pa_conninfo from ${SS}.sl_path where pa_server=${svr} order by pa_client asc limit 1;"
! conninfo=`RQ "${SQ}"`
echo "node ${svr} admin conninfo='${conninfo}';"
done
***************
*** 23,81 ****
Q="select no_id, no_comment from ${SS}.sl_node order by no_id limit 1;"
! NODE1=`psql -qtA -F ":" -c "${Q}"`
! nn=`echo ${NODE1} | cut -d : -f 1`
! comment=`echo ${NODE1} | cut -d : -f 2-`
echo "init cluster (id=${nn}, comment='${comment}');"
Q="select no_id from ${SS}.sl_node order by no_id offset 1;"
! NODES=`psql -qtA -F ":" -c "${Q}"`
for node in `echo ${NODES}`; do
CQ="select no_comment from ${SS}.sl_node where no_id = ${node};"
! comment=`psql -qtA -c "${CQ}"`
echo "store node (id=${node}, comment='${comment}');"
done
- #slonyregress1=# select * from sl_path;
- # pa_server | pa_client | pa_conninfo | pa_connretry
- #-----------+-----------+----------------------------------------------------------+--------------
- # 2 | 1 | dbname=slonyregress2 host=localhost user=chris port=7083 | 10
- # 1 | 2 | dbname=slonyregress1 host=localhost user=chris port=7083 | 10
- #(2 rows)
-
Q="select pa_server, pa_client, pa_connretry from ${SS}.sl_path order by pa_server, pa_client;"
! PATHS=`psql -qtA -F ":" -R " " -c "${Q}"`
for sc in `echo $PATHS`; do
! server=`echo $sc | cut -d : -f 1`
! client=`echo $sc | cut -d : -f 2`
! retry=`echo $sc | cut -d : -f 3`
Q2="select pa_conninfo from ${SS}.sl_path where pa_server=${server} and pa_client=${client};"
! conninfo=`psql -qtA -c "${Q2}"`
echo "store path (server=${server}, client=${client}, conninfo='${conninfo}', connretry=${retry});"
done
Q="select set_id, set_origin from ${SS}.sl_set order by set_id;"
! SETS=`psql -qtA -F ":" -R " " -c "${Q}"`
for sc in `echo ${SETS}`; do
! set=`echo ${sc} | cut -d : -f 1`
! origin=`echo ${sc} | cut -d : -f 2`
Q2="select set_comment from ${SS}.sl_set where set_id=${set};"
! comment=`psql -qtA -c "${Q2}"`
echo "create set (id=${set}, origin=${origin}, comment='${comment}');"
done
Q="select tab_id,tab_set, set_origin from ${SS}.sl_table, ${SS}.sl_set where tab_set = set_id order by tab_id;"
! TABS=`psql -qtA -F ":" -R " " -c "${Q}"`
for tb in `echo ${TABS}`; do
! tab=`echo ${tb} | cut -d : -f 1`
! set=`echo ${tb} | cut -d : -f 2`
! origin=`echo ${tb} | cut -d : -f 3`
RQ="select tab_relname from ${SS}.sl_table where tab_id = ${tab};"
! relname=`psql -qtA -c "${RQ}"`
NSQ="select tab_nspname from ${SS}.sl_table where tab_id = ${tab};"
! nsp=`psql -qtA -c "${NSQ}"`
IDX="select tab_idxname from ${SS}.sl_table where tab_id = ${tab};"
! idx=`psql -qtA -c "${IDX}"`
COM="select tab_comment from ${SS}.sl_table where tab_id = ${tab};"
! comment=`psql -qtA -c "${COM}"`
echo "set add table (id=${tab}, set id=${set}, origin=${origin}, fully qualified name='\"${nsp}\".\"${relname}\"', comment='${comment}, key='${idx}');"
done
--- 44,95 ----
Q="select no_id, no_comment from ${SS}.sl_node order by no_id limit 1;"
! NODE1=`RQ "${Q}"`
! nn=`arg1 "${NODE1}"`
! comment=`arg2 ${NODE1}`
echo "init cluster (id=${nn}, comment='${comment}');"
Q="select no_id from ${SS}.sl_node order by no_id offset 1;"
! NODES=`RQ "${Q}"`
for node in `echo ${NODES}`; do
CQ="select no_comment from ${SS}.sl_node where no_id = ${node};"
! comment=`RQ "${CQ}"`
echo "store node (id=${node}, comment='${comment}');"
done
Q="select pa_server, pa_client, pa_connretry from ${SS}.sl_path order by pa_server, pa_client;"
! PATHS=`RQ "${Q}"`
for sc in `echo $PATHS`; do
! server=`arg1 $sc`
! client=`arg2 $sc`
! retry=`arg3 $sc`
Q2="select pa_conninfo from ${SS}.sl_path where pa_server=${server} and pa_client=${client};"
! conninfo=`RQ "${Q2}"`
echo "store path (server=${server}, client=${client}, conninfo='${conninfo}', connretry=${retry});"
done
Q="select set_id, set_origin from ${SS}.sl_set order by set_id;"
! SETS=`RQ "${Q}"`
for sc in `echo ${SETS}`; do
! set=`arg1 ${sc}`
! origin=`arg2 ${sc}`
Q2="select set_comment from ${SS}.sl_set where set_id=${set};"
! comment=`RQ "${Q2}"`
echo "create set (id=${set}, origin=${origin}, comment='${comment}');"
done
Q="select tab_id,tab_set, set_origin from ${SS}.sl_table, ${SS}.sl_set where tab_set = set_id order by tab_id;"
! TABS=`RQ "${Q}"`
for tb in `echo ${TABS}`; do
! tab=`arg1 ${tb}`
! set=`arg2 ${tb}`
! origin=`arg3 ${tb}`
RQ="select tab_relname from ${SS}.sl_table where tab_id = ${tab};"
! relname=`RQ "${RQ}"`
NSQ="select tab_nspname from ${SS}.sl_table where tab_id = ${tab};"
! nsp=`RQ "${NSQ}"`
IDX="select tab_idxname from ${SS}.sl_table where tab_id = ${tab};"
! idx=`RQ "${IDX}"`
COM="select tab_comment from ${SS}.sl_table where tab_id = ${tab};"
! comment=`RQ "${COM}"`
echo "set add table (id=${tab}, set id=${set}, origin=${origin}, fully qualified name='\"${nsp}\".\"${relname}\"', comment='${comment}, key='${idx}');"
done
***************
*** 83,107 ****
Q="select seq_id,seq_set,set_origin from ${SS}.sl_sequence, ${SS}.sl_set where seq_set = set_id order by seq_id;"
! SEQS=`psql -qtA -F ":" -R " " -c "${Q}"`
for sq in `echo ${SEQS}`; do
! seq=`echo ${sq} | cut -d : -f 1`
! set=`echo ${sq} | cut -d : -f 2`
! origin=`echo ${sq} | cut -d : -f 3`
! RQ="select seq_relname from ${SS}.sl_sequence where seq_id = ${seq};"
! relname=`psql -qtA -c "${RQ}"`
NSQ="select seq_nspname from ${SS}.sl_sequence where seq_id = ${seq};"
! nsp=`psql -qtA -c "${NSQ}"`
COM="select seq_comment from ${SS}.sl_sequence where seq_id = ${seq};"
! comment=`psql -qtA -c "${COM}"`
echo "set add sequence(id=${seq}, set id=${set}, origin=${origin}, fully qualified name='\"${nsp}\".\"${relname}\"', comment='${comment}');"
done
! Q="select sub_set,sub_provider,sub_receiver,case when sub_forward then 'YES' else 'NO' end from ${SS}.sl_subscribe order by sub_set, sub_provider, sub_receiver;"
! SUBS=`psql -qtA -F ":" -R " " -c "${Q}"`
! for sb in `echo ${SUBS}`; do
! set=`echo ${sb} | cut -d : -f 1`
! prov=`echo ${sb} | cut -d : -f 2`
! recv=`echo ${sb} | cut -d : -f 3`
! forw=`echo ${sb} | cut -d : -f 4`
! echo "subscribe set (id=${set}, provider=${prov}, receiver=${recv}, forward=${forw});"
done
--- 97,133 ----
Q="select seq_id,seq_set,set_origin from ${SS}.sl_sequence, ${SS}.sl_set where seq_set = set_id order by seq_id;"
! SEQS=`RQ "${Q}"`
for sq in `echo ${SEQS}`; do
! seq=`arg1 ${sq}`
! set=`arg2 ${sq}`
! origin=`arg3 ${sq}`
! RELQ="select seq_relname from ${SS}.sl_sequence where seq_id = ${seq};"
! relname=`RQ "${RELQ}"`
NSQ="select seq_nspname from ${SS}.sl_sequence where seq_id = ${seq};"
! nsp=`RQ "${NSQ}"`
COM="select seq_comment from ${SS}.sl_sequence where seq_id = ${seq};"
! comment=`RQ "${COM}"`
echo "set add sequence(id=${seq}, set id=${set}, origin=${origin}, fully qualified name='\"${nsp}\".\"${relname}\"', comment='${comment}');"
done
! Q="select set_id, set_origin from ${SS}.sl_set;"
! SETS=`RQ "${Q}"`
! for seti in `echo ${SETS}`; do
! set=`arg1 ${seti}`
! origins=`arg2 ${seti}`
! SUBQ="select sub_provider, sub_receiver from ${SS}.sl_subscribe where sub_set=${set};"
! # We use tsort to determine a feasible ordering for subscriptions
! SUBRES=`psql -qtA -F " " -c "${SUBQ}" | tsort | egrep -v "^${origin}\$"`
! for recv in `echo ${SUBRES}`; do
! SF="select sub_provider, sub_forward from ${SS}.sl_subscribe where sub_set=${set} and sub_receiver=${recv};"
! SR=`RQ "${SF}"`
! prov=`arg1 ${SR}`
! forw=`arg2 ${SR}`
! echo "subscribe set (id=${set}, provider=${prov}, receiver=${recv}, forward=${forw}, omit copy=true);"
! if [ $prov != $origin ]; then
! echo "wait for event (origin=$provider, confirmed=$origin, wait on=$provider, timeout=0);"
! fi
! echo "sync (id=$origin);"
! echo "wait for event (origin=$origin, confirmed=ALL, wait on=$origin, timeout=0);"
! done
done
- Previous message: [Slony1-commit] slony1-engine/tests/testomitcopy README gen_weak_user.sh generate_dml.sh init_add_tables.ik init_cluster.ik init_create_set.ik init_data.sql init_schema.sql init_subscribe_set.ik schema.diff settings.ik
- Next message: [Slony1-commit] slony1-engine/doc/adminguide adminscripts.sgml
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Slony1-commit mailing list