#!/bin/bash # This script verifies that the postgresql data directory has been correctly # initialized. We do not want to automatically initdb it, because that has # a risk of catastrophic failure (ie, overwriting a valuable database) in # corner cases, such as a remotely mounted database on a volume that's a # bit slow to mount. But we can at least emit a message advising newbies # what to do. if test -z "$1"; then echo "Maintainer error: $0 must be run with one argument" exit 1 fi service_name="$1" if [ -z "$PGDATA" ]; then echo $"You try to start '$service_name' service" echo $"but the required \$PGDATA environment variable is not set." echo $"You should use the @userunitsdir@/$service_name.service.d/ANYTHING.conf" echo $"configuration file to set \$PGDATA. For more info see" echo $"the @README_DIST@ file." exit 1 fi # Warn the user that the configuration should be adjusted via drop-in, in case # the $PGDATA variable is set different way (and non-default service name is # used). conf_dir="@userunitsdir@/$service_name.service.d" if [[ "$service_name" == *@* ]] && test ! -d "$conf_dir"; then echo >&2 $"WARNING: Note that the '$conf_dir'" echo >&2 $"directory does not exist while you are using non-default service" echo >&2 $"name '$service_name'. You are encouraged to use the" echo >&2 $"$conf_dir directory for systemd configuration according" echo >&2 $"to @README_DIST@ documentation." fi # Full PostgreSQL version, e.g. 9.0.2 PGVERSION=@PGVERSION@ # Major version of PostgreSQL, e.g. 9.0 PGMAJORVERSION=@PGMAJORVERSION@ # Previous major version, e.g., 8.4, for upgrades PREVMAJORVERSION=@PREVMAJORVERSION@ # Distribution README file README_DIST=@README_DIST@ # Check for the PGDATA structure if [ -f "$PGDATA/PG_VERSION" ] && [ -d "$PGDATA/base" ] then # Check version of existing PGDATA if [ x`cat "$PGDATA/PG_VERSION"` = x"$PGMAJORVERSION" ] then : A-OK elif [ x`cat "$PGDATA/PG_VERSION"` = x"$PREVMAJORVERSION" ] then echo $"An old version of the database format was found." echo $"Use \"postgresql-setup --upgrade\" to upgrade to version $PGMAJORVERSION." echo $"See $README_DIST for more information." exit 1 else echo $"An old version of the database format was found." echo $"You need to dump and reload before using PostgreSQL $PGMAJORVERSION." echo $"See $README_DIST for more information." exit 1 fi else # No existing PGDATA! Warn the user to initdb it. echo $"\"$PGDATA\" is missing or empty." echo $"Use \"postgresql-setup --initdb\" to initialize the database cluster." echo $"See $README_DIST for more information." exit 1 fi exit 0