postgresql/contrib/rserv/InitRservTest.in
2000-12-20 17:22:35 +00:00

260 lines
5.0 KiB
Bash

#!/bin/sh
# InitRservTest
# erServer demonstration implementation
# (c) 2000 Vadim Mikheev, PostgreSQL Inc.
[ -n "$RSERV_PERL" ] || RSERV_PERL=@LIBDIR@
[ -n "$RSERV_SQL" ] || RSERV_SQL=@SQLDIR@
[ -n "$RSERV_BIN" ] || RSERV_BIN=@BINDIR@
export RSERV_PERL
export RSERV_SQL
export RSERV_BIN
pargs=
while [[ $1 == -* ]]; do
case "$1" in
--user)
shift
pargs="$pargs -U $1"
;;
--host)
shift
pargs="$pargs -h $1"
;;
*)
echo "Usage: $0 --user name --host name masterdb slavedb"
exit 1
;;
esac
shift
done
masterdb=$1
slavedb=$2
[ "${masterdb}" != "" ] || masterdb=master
[ "${slavedb}" != "" ] || slavedb=slave
echo "Master -> $masterdb"
echo "Slave -> $slavedb"
############################################################################
fill()
{
table="create table test (i text, k int, l int);
copy test from stdin;
Line: 1 1 1
Line: 2 2 2
Line: 3 3 3
Line: 4 4 4
Line: 5 5 5
Line: 6 6 6
Line: 7 7 7
Line: 8 8 8
Line: 9 9 9
Line: 10 10 10
Line: 11 11 11
Line: 12 12 12
Line: 13 13 13
Line: 14 14 14
Line: 15 15 15
Line: 16 16 16
Line: 17 17 17
Line: 18 18 18
Line: 19 19 19
Line: 20 20 20
Line: 21 21 21
Line: 22 22 22
Line: 23 23 23
Line: 24 24 24
Line: 25 25 25
Line: 26 26 26
Line: 27 27 27
Line: 28 28 28
Line: 29 29 29
Line: 30 30 30
Line: 31 31 31
Line: 32 32 32
Line: 33 33 33
Line: 34 34 34
Line: 35 35 35
Line: 36 36 36
Line: 37 37 37
Line: 38 38 38
Line: 39 39 39
Line: 40 40 40
Line: 41 41 41
Line: 42 42 42
Line: 43 43 43
Line: 44 44 44
Line: 45 45 45
Line: 46 46 46
Line: 47 47 47
Line: 48 48 48
Line: 49 49 49
Line: 50 50 50
Line: 51 51 51
Line: 52 52 52
Line: 53 53 53
Line: 54 54 54
Line: 55 55 55
Line: 56 56 56
Line: 57 57 57
Line: 58 58 58
Line: 59 59 59
Line: 60 60 60
Line: 61 61 61
Line: 62 62 62
Line: 63 63 63
Line: 64 64 64
Line: 65 65 65
Line: 66 66 66
Line: 67 67 67
Line: 68 68 68
Line: 69 69 69
Line: 70 70 70
Line: 71 71 71
Line: 72 72 72
Line: 73 73 73
Line: 74 74 74
Line: 75 75 75
Line: 76 76 76
Line: 77 77 77
Line: 78 78 78
Line: 79 79 79
Line: 80 80 80
Line: 81 81 81
Line: 82 82 82
Line: 83 83 83
Line: 84 84 84
Line: 85 85 85
Line: 86 86 86
Line: 87 87 87
Line: 88 88 88
Line: 89 89 89
Line: 90 90 90
Line: 91 91 91
Line: 92 92 92
Line: 93 93 93
Line: 94 94 94
Line: 95 95 95
Line: 96 96 96
Line: 97 97 97
Line: 98 98 98
Line: 99 99 99
Line: 100 100 100
\\.";
echo "$table" | psql $pargs $1 || exit
if [ "$1" = "$masterdb" ]
then
rm -rf __tmpf__
psql $pargs -c "select * into table testoid from test" $1 || exit
psql $pargs -c "copy testoid with oids to '`pwd`/__tmpf__'" $1 || exit
psql $pargs -c "select * into table teststr from test" $1 || exit
else
psql $pargs -c "select * into table testoid from test where k < 0" $1 || exit
psql $pargs -c "copy testoid with oids from '`pwd`/__tmpf__'" $1 || exit
psql $pargs -c "select * into table teststr from test" $1 || exit
rm -rf __tmpf__
fi
psql $pargs -c "create unique index i_test on test (k)" $1 || exit
psql $pargs -c "create unique index i_testoid on testoid (oid)" $1 || exit
psql $pargs -c "create unique index i_teststr on teststr (i)" $1 || exit
psql $pargs -c vacuum $1 || exit
}
############################################################################
echo
echo
echo ' ATTENTION'
echo
echo This script will destroy databases with names MASTER and SLAVE
echo
echo -n "Are you going to continue ? [Y/N] "
read answ
case $answ in
Y*|y*)
;;
*)
exit
;;
esac
echo
echo
sql="drop database $masterdb"
echo $sql
psql $pargs -c "$sql" template1
sql="create database $masterdb"
echo $sql
psql $pargs -c "$sql" template1 || exit
echo Setup master system
psql $pargs $masterdb < $RSERV_SQL/master.sql || exit
echo Wait for template1 to become available...
sleep 1
sql="drop database $slavedb"
echo $sql
psql $pargs -c "$sql" template1
sql="create database $slavedb"
echo $sql
psql $pargs -c "$sql" template1 || exit
echo Setup slave system
psql $pargs $slavedb < $RSERV_SQL/slave.sql || exit
echo Create and fill test, testoid and teststr tables in master db
fill $masterdb
echo
echo Register test, testoid and teststr tables for replication on master
echo
$RSERV_BIN/MasterAddTable $masterdb test k
$RSERV_BIN/MasterAddTable $masterdb testoid oid
$RSERV_BIN/MasterAddTable $masterdb teststr i
echo Create and fill test, testoid and teststr tables in slave db
fill $slavedb
echo
echo Register test, testoid and teststr tables for replication on slave
echo
$RSERV_BIN/SlaveAddTable $slavedb test k
$RSERV_BIN/SlaveAddTable $slavedb testoid oid
$RSERV_BIN/SlaveAddTable $slavedb teststr i
echo
echo
echo
echo
echo
echo
echo
echo
echo " Now make changes in $masterdb db and run"
echo
echo " Replicate $masterdb $slavedb"
echo
echo " to replicate the master on the slave."
echo
echo " You may also use the RservTest tcl utility"
echo " to demonstrate this functionality."
echo
echo
echo
echo
echo
echo
echo
echo
exit
############################################################################