]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/cats/create_postgresql_database.in
Big backport from Enterprise
[bacula/bacula] / bacula / src / cats / create_postgresql_database.in
index 896c2e6e0154005b498c889b1b5551af95dcfbf1..ac15d524e822a2658b3c8018b5c310ddd8e1d637 100644 (file)
@@ -1,16 +1,19 @@
 #!/bin/sh
 #
+# Copyright (C) 2000-2017 Kern Sibbald
+# License: BSD 2-Clause; see file LICENSE-FOSS
+#
 # shell script to create Bacula database(s)
 #
 
-bindir=@SQL_BINDIR@
-db_name=@db_name@
+PATH="@POSTGRESQL_BINDIR@:$PATH"
+db_name=${db_name:-@db_name@}
 
 #
 # use SQL_ASCII to be able to put any filename into
 #  the database even those created with unusual character sets
 
-PSQLVERSION=`$bindir/psql --version | head -n1 | cut -d ' ' -f 3 | cut -d '.' -f 1,2`
+PSQLVERSION=`psql -d template1 -c 'select version()' $* | awk '/PostgreSQL/ {print $2}' | cut -d '.' -f 1,2`
 
 #
 # Note, LC_COLLATE and LC_TYPE are needed on 8.4 and beyond, but are
@@ -18,10 +21,10 @@ PSQLVERSION=`$bindir/psql --version | head -n1      | cut -d ' ' -f 3 | cut -d '.' -f
 # This must be updated for future versions of PostgreSQL
 #
 case ${PSQLVERSION} in
-   "9.*")
+   9.*)
        ENCODING="ENCODING 'SQL_ASCII' LC_COLLATE 'C' LC_CTYPE 'C'"
    ;;
-   "8.[456789]")
+   8.[456789])
        ENCODING="ENCODING 'SQL_ASCII' LC_COLLATE 'C' LC_CTYPE 'C'"
     ;;
     *)
@@ -39,7 +42,7 @@ esac
 # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 #
 #
-if $bindir/psql -f - -d template1 $* <<END-OF-DATA
+if psql -f - -d template1 $* <<END-OF-DATA
 \set ON_ERROR_STOP on
 CREATE DATABASE ${db_name} $ENCODING TEMPLATE template0;
 ALTER DATABASE ${db_name} SET datestyle TO 'ISO, YMD';
@@ -51,11 +54,13 @@ else
    echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
    echo "!!!! Creation of ${db_name} database failed. !!!!"
    echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
+   exit 1
 fi
-if $bindir/psql -l ${dbname} | grep " ${db_name}.*SQL_ASCII" >/dev/null; then 
+if psql -l | grep " ${db_name}.*SQL_ASCII" >/dev/null; then 
    echo "Database encoding OK"
 else
    echo " "
    echo "Database encoding bad. Do not use this database"
    echo " "
+   exit 1
 fi