diff --git a/src/pl/plpgsql/enable_plpgsql b/src/pl/plpgsql/enable_plpgsql new file mode 100644 index 0000000000000000000000000000000000000000..efd2cf1973d4e8030d5d66ca19802634f59181a4 --- /dev/null +++ b/src/pl/plpgsql/enable_plpgsql @@ -0,0 +1,68 @@ +#!/bin/sh + +# Enable the PL procedural language for PostgreSQL in one or more +# existing databases. +# +# This script should be run by the PostgreSQL superuser + +enable_database() { + if ! psql -d $1 -qtc "select count(*) from pg_language where lanname='plpgsql'" >$TMPFIL2 2>&1 + then + echo "Cannot connect to $1" + exit 2 + fi + if [ `cat $TMPFIL2` -eq 0 ] + then + if ! psql -d $1 <$sqlfile + then + echo "Failed to add PL to $1" + exit 2 + fi + echo "PL added to $1" + else + echo "PL is already enabled in $1" + fi + +} + +# Execution starts here + +TMPFILE=`mktemp /tmp/enable_pgpl.XXXXXX` +TMPFIL2=`mktemp /tmp/enable_pgpl.XXXXXX` +trap "rm $TMPFILE $TMPFIL2" EXIT + +sqlfile=${PGLIB:=/usr/local/pgsql/lib}/mklang_pl.sql +if [ ! -f $sqlfile ] +then + echo "Cannot find mklang_pl.sql" + exit 2 +fi + +if [ -z "$1" ] +then + echo "Syntax: $0 --all | database ..." + exit 1 +fi + +if [ $1 = "--all" ] +then + if ! psql -t -c "select datname from pg_database order by datname" >$TMPFILE + then + echo Cannot select databases + exit 2 + fi + for db in `cat $TMPFILE` + do + enable_database $db + done +else + while [ -n "$1" ] + do + db=$1 + enable_database $db + shift + done +fi + + +