diff --git a/dba/create-database.sh b/dba/create-database.sh index d25f9d91..9a6c4f9e 100755 --- a/dba/create-database.sh +++ b/dba/create-database.sh @@ -38,20 +38,22 @@ fi export AWL_DBAUSER=davical_dba export AWL_APPUSER=davical_app +# set -x + # Get the major version for PostgreSQL -export DBVERSION="`psql -qXAt -c "SELECT version();" template1 | cut -f2 -d' ' | cut -f1-2 -d'.'`" +export DBVERSION="`psql -qXAt ${PSQLOPTS} -c "SELECT version();" template1 | cut -f2 -d' ' | cut -f1-2 -d'.'`" install_note() { cat >>"${INSTALL_NOTE_FN}" } db_users() { - psql -qXAt -c "SELECT usename FROM pg_user;" template1 + psql -qXAt ${PSQLOPTS} -c "SELECT usename FROM pg_user;" template1 } create_db_user() { if ! db_users | grep "^${1}$" >/dev/null ; then - psql -qXAt -c "CREATE USER ${1} NOCREATEDB NOCREATEROLE;" template1 + psql -qXAt ${PSQLOPTS} -c "CREATE USER ${1} NOCREATEDB NOCREATEROLE;" template1 cat </dev/null; then - createlang plpgsql "${DBNAME}" + if ! psql ${DBA} -qXAt ${PSQLOPTS} -c "SELECT lanname FROM pg_language;" "${DBNAME}" | grep "^plpgsql$" >/dev/null; then + createlang ${PSQLOPTS} plpgsql "${DBNAME}" fi } try_db_user() { - [ "XtestX`psql -U "${1}" -qXAt -c \"SELECT usename FROM pg_user;\" \"${DBNAME}\" 2>/dev/null`" != "XtestX" ] + [ "XtestX`psql -U "${1}" -qXAt ${PSQLOPTS} -c \"SELECT usename FROM pg_user;\" \"${DBNAME}\" 2>/dev/null`" != "XtestX" ] } # Hide all the annoying NOTICE... messages @@ -77,7 +79,7 @@ create_db_user "${AWL_DBAUSER}" create_db_user "${AWL_APPUSER}" # FIXME: Need to check that the database was actually created. -if ! createdb --encoding UTF8 --template template0 --owner "${AWL_DBAUSER}" "${DBNAME}" ; then +if ! createdb --encoding UTF8 --template template0 --owner "${AWL_DBAUSER}" ${PSQLOPTS} "${DBNAME}" ; then echo "Unable to create database" exit 1 fi @@ -122,16 +124,16 @@ create_plpgsql_language # # Load the AWL base tables and schema management tables -psql -qXAt ${DBA} -f "${AWLDIR}/dba/awl-tables.sql" "${DBNAME}" 2>&1 -psql -qXAt ${DBA} -f "${AWLDIR}/dba/schema-management.sql" "${DBNAME}" 2>&1 +psql -qXAt ${PSQLOPTS} ${DBA} -f "${AWLDIR}/dba/awl-tables.sql" "${DBNAME}" 2>&1 +psql -qXAt ${PSQLOPTS} ${DBA} -f "${AWLDIR}/dba/schema-management.sql" "${DBNAME}" 2>&1 # # Load the DAViCal tables -psql -qXAt ${DBA} -f "${DBADIR}/davical.sql" "${DBNAME}" 2>&1 +psql -qXAt ${PSQLOPTS} ${DBA} -f "${DBADIR}/davical.sql" "${DBNAME}" 2>&1 # # Set permissions for the application DB user on the database -if ! ${DBADIR}/update-davical-database --dbname "${DBNAME}" --appuser "${AWL_APPUSER}" --nopatch --owner "${AWL_DBAUSER}" ; then +if ! ${DBADIR}/update-davical-database ${DBAOPTS} --dbname "${DBNAME}" --appuser "${AWL_APPUSER}" --nopatch --owner "${AWL_DBAUSER}" ; then cat </dev/null ; then # Restart PGPool to ensure we can drop and recreate the database # FIXME: We should really drop everything *from* the database and create it # from that, so we don't need to do this. [ "${PGPOOL}" = "inactive" ] || sudo /etc/init.d/pgpool restart - dropdb $1 - if psql -ltA | cut -f1 -d'|' | grep "^$1$" >/dev/null ; then + dropdb $PSQLOPTS $1 + if psql -ltA $PSQLOPTS | cut -f1 -d'|' | grep "^$1$" >/dev/null ; then echo "Failed to drop $1 database" exit 1 fi @@ -108,15 +121,15 @@ restore_database() { drop_database ${DBNAME} TEST="Restore-Database" - createdb --owner davical_dba --encoding UTF8 ${DBNAME} >"${RESULTS}/${TEST}" 2>&1 - psql ${DBNAME} -q -f "${REGRESSION}/initial.dbdump" >>"${RESULTS}/${TEST}" 2>&1 + createdb --owner davical_dba --encoding UTF8 $PSQLOPTS ${DBNAME} >"${RESULTS}/${TEST}" 2>&1 + psql $PSQLOPTS ${DBNAME} -q -f "${REGRESSION}/initial.dbdump" >>"${RESULTS}/${TEST}" 2>&1 check_result "${TEST}" } dump_database() { TEST="Dump-Database" - pg_dump -Fp ${DBNAME} > "${REGRESSION}/initial.dbdump" 2>&1 + pg_dump -Fp $PSQLOPTS ${DBNAME} > "${REGRESSION}/initial.dbdump" 2>&1 } @@ -128,17 +141,17 @@ initialise_regression() { check_result "${TEST}" TEST="Upgrade-Database" - ../dba/update-davical-database --dbname=${DBNAME} --nopatch --appuser davical_app --owner davical_dba >"${RESULTS}/${TEST}" 2>&1 + ../dba/update-davical-database ${DBAOPTS} --dbname=${DBNAME} --nopatch --appuser davical_app --owner davical_dba >"${RESULTS}/${TEST}" 2>&1 check_result "${TEST}" if [ -f "${REGRESSION}/sample-data.sql" ]; then TEST="Load-Sample-Data" - psql -q -f "${REGRESSION}/sample-data.sql" "${DBNAME}" >"${RESULTS}/${TEST}" 2>&1 + psql -q -f "${REGRESSION}/sample-data.sql" $PSQLOPTS "${DBNAME}" >"${RESULTS}/${TEST}" 2>&1 check_result "${TEST}" fi TEST="Really-Upgrade-Database" - ../dba/update-davical-database --dbname=${DBNAME} --appuser davical_app --owner davical_dba >"${RESULTS}/${TEST}" 2>&1 + ../dba/update-davical-database ${DBAOPTS} --dbname=${DBNAME} --appuser davical_app --owner davical_dba >"${RESULTS}/${TEST}" 2>&1 check_result "${TEST}" }