mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-27 08:39:28 +08:00
260 lines
5.0 KiB
Bash
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
|
|
|
|
############################################################################
|