1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
#! /bin/bash
ROOTDIR=${ROOTDIR:-`bzr root`}
if [ ! -d "$ROOTDIR" ]; then
echo "ROOTDIR '$ROOTDIR' doesn't exist" >&2
exit 1
fi
DATABASES="
distinct
"
function setup_database() {
local TESTDIR=$1
echo "## Starting postgres in $TESTDIR ##"
mkdir -p "$TESTDIR/data"
chmod 700 "$TESTDIR/data"
export PGHOST="$TESTDIR"
export PGDATA="$TESTDIR/data"
if [ -d /usr/lib/postgresql/8.4 ]; then
export PGBINDIR=/usr/lib/postgresql/8.4/bin
elif [ -d /usr/lib/postgresql/8.3 ]; then
export PGBINDIR=/usr/lib/postgresql/8.3/bin
else
echo "Cannot find valid parent for PGBINDIR"
fi
$PGBINDIR/initdb -E UNICODE -D $PGDATA
# set up the database options file
if [ ! -e $PGDATA/postgresql.conf ]; then
echo "PostgreSQL data directory apparently didn't init"
else
(
cat <<EOF
search_path='\$user,public,ts2'
add_missing_from=false
log_statement='all'
log_line_prefix='[%m] %q%u@%d %c '
fsync = off
EOF
) > $PGDATA/postgresql.conf
fi
$PGBINDIR/initdb -A trust &>/dev/null
$PGBINDIR/pg_ctl start -w -D $TESTDIR/data -l $TESTDIR/postgres.log -o "-F -k $TESTDIR -h ''"
for db in $DATABASES; do
$PGBINDIR/createdb --encoding UNICODE "$db" &>/dev/null
$PGBINDIR/createlang plpgsql "$db"
done
$PGBINDIR/createuser --superuser --createdb "postgres" &>/dev/null
# create the additional users we need via a psql script
$PGBINDIR/psql -U postgres template1 <<EOF
CREATE ROLE client INHERIT;
CREATE USER client IN ROLE client;
EOF
echo "To set your environment so psql will connect to this DB instance type:"
echo " export PGHOST=$TESTDIR"
echo "## Done. ##"
echo -n host=$TESTDIR dbname=distinct > $ROOTDIR/tmp/pg.dsn
}
setup_database $ROOTDIR/tmp/db1
|