#! /bin/sh
# Force to flush current value of sequences to xlog

master_dir=$1
dest_host=$2
dest_dir=$3

source /etc/pgpool-II/config_for_script

log=$PGPOOL_LOG_DIR/recovery.log

if [ $dest_host = $NODE0_HOST ]; then
  master_host=$NODE1_HOST
  master_port=$NODE1_PORT

elif [ $dest_host = $NODE1_HOST ]; then
  master_host=$NODE0_HOST
  master_port=$NODE0_PORT

else
  exit 1
fi

function doSQL()
{
    local _DB=$1
    local _SQL=$2

    $psql -p $master_port -U $PGSUPERUSER -d $_DB -t -c "$_SQL"
}

echo "----------------------------------------------------------------------" >> $log
date >> $log
echo "----------------------------------------------------------------------" >> $log
echo "" >> $log

# Get dbnames
doSQL template1 'SELECT datname FROM pg_database WHERE NOT datistemplate AND datallowconn'

# Force to flush current value of sequences to xlog
while read i
do
  if [ "$i" != "" ]; then
    doSQL $i "SELECT setval(oid, nextval(oid)) FROM pg_class WHERE relkind = 'S'"
  fi
done
doSQL template1 "SELECT pgpool_switch_xlog('$ARCHIVE_DIR')"
