#!/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