mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03: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
 | 
						|
 | 
						|
############################################################################
 |