#!/bin/sh
#
+# Copyright (C) 2000-2017 Kern Sibbald
+# License: BSD 2-Clause; see file LICENSE-FOSS
+#
# This routine alters the appropriately configured
-# Bacula tables for PostgreSQL, MySQL, or SQLite.
+# Bacula tables for PostgreSQL, Ingres, MySQL, or SQLite.
+#
+
+# can be used to change the current user with su
+pre_command="sh -c"
+
+default_db_type=@DEFAULT_DB_TYPE@
+
+#
+# See if the first argument is a valid backend name.
+# If so the user overrides the default database backend.
#
-if test xsqlite = x@DB_NAME@ ; then
- echo "Altering SQLite tables"
- . ./update_sqlite_tables
+if [ $# -gt 0 ]; then
+ case $1 in
+ sqlite3)
+ db_type=$1
+ shift
+ ;;
+ mysql)
+ db_type=$1
+ shift
+ ;;
+ postgresql)
+ db_type=$1
+ shift
+ ;;
+ *)
+ ;;
+ esac
fi
-if test xmysql = x@DB_NAME@ ; then
- echo "Altering MySQL tables"
- . ./update_mysql_tables
+
+#
+# If no new db_type is gives use the default db_type.
+#
+if [ -z "${db_type}" ]; then
+ db_type="${default_db_type}"
fi
-if test xpostgresql = x@DB_NAME@ ; then
- echo "Altering PostgreSQL tables"
- # we need the bacula datbase name in here... Should not be hardcoded
- . ./update_postgresql_tables bacula
+
+if [ $db_type = postgresql -a "$UID" = 0 ]; then
+ pre_command="su - postgres -c"
fi
+
+echo "Altering ${db_type} tables"
+$pre_command "@scriptdir@/update_${db_type}_tables $*"