Chris Browne cbbrowne at lists.slony.info
Thu Jun 18 09:52:24 PDT 2009
Update of /home/cvsd/slony1/slony1-engine/tools
In directory main.slony.info:/tmp/cvs-serv7258

Modified Files:
      Tag: REL_2_0_STABLE
	slonikconfdump.sh 
Log Message:
Cleanup of slonikconfdump.sh 
 - There were a couple bugs
 - Variables were quite badly named making it rather opaque


Index: slonikconfdump.sh
===================================================================
RCS file: /home/cvsd/slony1/slony1-engine/tools/Attic/slonikconfdump.sh,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -C2 -d -r1.1.2.3 -r1.1.2.4
*** slonikconfdump.sh	12 Jun 2009 22:42:13 -0000	1.1.2.3
--- slonikconfdump.sh	18 Jun 2009 16:52:22 -0000	1.1.2.4
***************
*** 12,16 ****
  echo "cluster name=${SLONYCLUSTER};"
  
! function RQ () {
      local QUERY=$1
      RESULTSET=`psql -qtA -F ":" -R " " -c "${QUERY}"`
--- 12,16 ----
  echo "cluster name=${SLONYCLUSTER};"
  
! function RUNQUERY () {
      local QUERY=$1
      RESULTSET=`psql -qtA -F ":" -R " " -c "${QUERY}"`
***************
*** 35,133 ****
  
  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
  
! 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
  
  
! 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
--- 35,132 ----
  
  Q="select distinct pa_server from ${SS}.sl_path order by pa_server;"
! PATHS=`RUNQUERY "${Q}"`
  for svr in `echo ${PATHS}`; do
!     CONNINFOQ="select pa_conninfo from ${SS}.sl_path where pa_server=${svr} order by pa_client asc limit 1;"
!     conninfo=`RUNQUERY "${CONNINFOQ}"`
      echo "node ${svr} admin conninfo='${conninfo}';"
  done
  
! FIRSTNODEQ="select no_id, no_comment from ${SS}.sl_node order by no_id limit 1;"
! NODE1=`RUNQUERY "${FIRSTNODEQ}"`
  nn=`arg1 "${NODE1}"`
  comment=`arg2 ${NODE1}`
  echo "init cluster (id=${nn}, comment='${comment}');"
  
! RESTOFNODESQ="select no_id from ${SS}.sl_node where no_id <> ${nn};"
! NODES=`RUNQUERY "${RESTOFNODESQ}"`
  for node in `echo ${NODES}`; do
!     NODECOMMENT="select no_comment from ${SS}.sl_node where no_id = ${node};"
!     comment=`RUNQUERY "${NODECOMMENT}"`
      echo "store node (id=${node}, comment='${comment}');"
  done
  
! PATHSQ="select pa_server, pa_client, pa_connretry from ${SS}.sl_path order by pa_server, pa_client;"
! PATHS=`RUNQUERY "${PATHSQ}"`
  for sc in `echo $PATHS`; do
      server=`arg1 $sc`
      client=`arg2 $sc`
      retry=`arg3 $sc`
!     PATHCONN="select pa_conninfo from ${SS}.sl_path where pa_server=${server} and pa_client=${client};"
!     conninfo=`RUNQUERY "${PATHCONN}"`
      echo "store path (server=${server}, client=${client}, conninfo='${conninfo}', connretry=${retry});"
  done
  
! SETSQ="select set_id, set_origin from ${SS}.sl_set order by set_id;"
! SETS=`RUNQUERY "${SETSQ}"`
  for sc in `echo ${SETS}`; do
      set=`arg1 ${sc}`
      origin=`arg2 ${sc}`
!     SETCOMMENT="select set_comment from ${SS}.sl_set where set_id=${set};"
!     comment=`RUNQUERY "${SETCOMMENT}"`
      echo "create set (id=${set}, origin=${origin}, comment='${comment}');"
  done
  
! TABLESOVERVIEW="select tab_id,tab_set, set_origin from ${SS}.sl_table, ${SS}.sl_set where tab_set = set_id order by tab_id;"
! TABIDS=`RUNQUERY "${TABLESOVERVIEW}"`
! for tablebase in `echo ${TABIDS}`; do
!     tab=`arg1 ${tablebase}`
!     set=`arg2 ${tablebase}`
!     origin=`arg3 ${tablebase}`
!     TABNAME="select tab_relname from ${SS}.sl_table where tab_id = ${tab};"
!     relname=`RUNQUERY "${TABNAME}"`
!     TABNSP="select tab_nspname from ${SS}.sl_table where tab_id = ${tab};"
!     nsp=`RUNQUERY "${TABNSP}"`
!     TABIDX="select tab_idxname from ${SS}.sl_table where tab_id = ${tab};"
!     idx=`RUNQUERY "${TABIDX}"`
!     TABCOMMENT="select tab_comment from ${SS}.sl_table where tab_id = ${tab};"
!     comment=`RUNQUERY "${TABCOMMENT}"`
      echo "set add table (id=${tab}, set id=${set}, origin=${origin}, fully qualified name='\"${nsp}\".\"${relname}\"', comment='${comment}, key='${idx}');"
  done
  
  
! SEQSQ="select seq_id,seq_set,set_origin from ${SS}.sl_sequence, ${SS}.sl_set where seq_set = set_id order by seq_id;"
! SEQS=`RUNQUERY "${SEQSQ}"`
  for sq in `echo ${SEQS}`; do
!     seqid=`arg1 ${sq}`
!     setid=`arg2 ${sq}`
      origin=`arg3 ${sq}`
!     RELQ="select seq_relname from ${SS}.sl_sequence where seq_id = ${seqid};"
!     relname=`RUNQUERY "${RELQ}"`
!     NSQ="select seq_nspname from ${SS}.sl_sequence where seq_id = ${seqid};"
!     nsp=`RUNQUERY "${NSQ}"`
!     COMQ="select seq_comment from ${SS}.sl_sequence where seq_id = ${seqid};"
!     comment=`RUNQUERY "${COMQ}"`
!     echo "set add sequence(id=${seqid}, set id=${setid}, origin=${origin}, fully qualified name='\"${nsp}\".\"${relname}\"', comment='${comment}');"
  done
  
  Q="select set_id, set_origin from ${SS}.sl_set;"
! SETS=`RUNQUERY "${Q}"`
! for setinfo in `echo ${SETS}`; do
!     set=`arg1 ${setinfo}`
!     origin=`arg2 ${setinfo}`
      SUBQ="select sub_provider, sub_receiver from ${SS}.sl_subscribe where sub_set=${set};"
!     # We use tsort to determine a feasible ordering for subscriptions, filter8ng out the origin node
      SUBRES=`psql -qtA -F " " -c "${SUBQ}" | tsort | egrep -v "^${origin}\$"`
      for recv in `echo ${SUBRES}`; do
! 	PROVIDERSQUERY="select sub_provider, sub_forward from ${SS}.sl_subscribe where sub_set=${set} and sub_receiver=${recv};"
! 	SUBSCRIPTIONS=`RUNQUERY "${PROVIDERSQUERY}"`
! 	prov=`arg1 ${SUBSCRIPTIONS}`
! 	forw=`arg2 ${SUBSCRIPTIONS}`
  	echo "subscribe set (id=${set}, provider=${prov}, receiver=${recv}, forward=${forw}, omit copy=true);"
  	if [ $prov != $origin ]; then
! 	    echo "wait for event (origin=${prov}, confirmed=${origin}, wait on=${prov}, timeout=0);"
  	fi
! 	echo "sync (id=${origin});"
! 	echo "wait for event (origin=${origin}, confirmed=ALL, wait on=${origin}, timeout=0);"
      done
  done



More information about the Slony1-commit mailing list