]> git.pld-linux.org Git - packages/postgresql.git/blobdiff - postgresql.init
- up to 9.0.2
[packages/postgresql.git] / postgresql.init
index 727c2751fcd77b6ed38d50d106775079005ab3b2..1a5f91bdc3a94e7a507c69349c4f041b73930e6f 100644 (file)
@@ -18,6 +18,8 @@ cd /
 # Get network config
 . /etc/sysconfig/network
 
+PG_INIT_LOCALE=C
+
 # Get service config
 if [ -f /etc/sysconfig/postgresql ]; then
        . /etc/sysconfig/postgresql
@@ -90,8 +92,9 @@ pgstatus() {
 # $1 - db cluster
 #
 pgstart() {
+       is_no "$RC_LOGGING" && fork=--fork
        msg_starting "PostgreSQL $1"
-       daemon --user postgres /usr/bin/pg_ctl -s -w -D $1 start
+       daemon $fork --user postgres /usr/bin/pg_ctl -s -w -D $1 start
 }
 
 #
@@ -164,6 +167,10 @@ stop() {
        pgsubsys
 }
 
+
+upstart_controlled --except status init
+
+RETVAL=0
 # See how we were called.
 # Every action is performed for all given (all configured by default)
 # db clusters.
@@ -191,23 +198,36 @@ case "$action" in
        stop
        start
        ;;
-  reload|force-reload)
+  reload|force-reload|try-restart)
+       if [ "$action" = "reload" ]; then
+               # "reload" must not restart service - so let it reload only what's possible
+               pgctlact="reload"
+       else
+               pgctlact="restart"
+       fi
        for pgdir in $DB_CLUSTERS; do
                pgstatus "$pgdir"
                if [ "$PG_STATUS" = "not running" ]; then
                        msg_not_running "PostgreSQL $pgdir"
+                       if [ "$action" != "try-restart" ]; then
+                               RETVAL=7
+                       fi
                else
                        msg_reloading "PostgreSQL $pgdir"
                        busy
                        # is postgresql really alive?
                        if ps -p "$PG_PID" >/dev/null; then
-                               TMPDIR=/tmp su postgres -c "/usr/bin/pg_ctl -D $pgdir restart 2>&1 >/dev/null"
+                               TMPDIR=/tmp su postgres -c "/usr/bin/pg_ctl -D $pgdir $pgctlact 2>&1 >/dev/null"
                                        pgstatus "$pgdir"
                                if [ "$PG_STATUS" = "running" ]; then
                                        ok
                                else
                                        fail
                                fi
+                       elif [ "$action" != "try-restart" ]; then
+                               # postgresql died and pg_ctl has misinformed us about
+                               # the status - i.e. service is actually not running
+                               RETVAL=7
                        else
                                # postgresql died and pg_ctl has misinformed us about
                                # the status; remove pid file and start it again
@@ -231,7 +251,7 @@ case "$action" in
                        mkdir -p $pgdir
                        chmod 700 $pgdir
                        chown postgres:postgres $pgdir
-                       TMPDIR=/tmp su postgres -s /bin/sh -c "initdb -E UNICODE -D $pgdir"
+                       LC_ALL=$PG_INIT_LOCALE TMPDIR=/tmp su postgres -s /bin/sh -c "initdb -E UNICODE -D $pgdir"
                fi
        done
        echo $(nls "REMEMBER to setup password for user \"postgres\"")'!'
@@ -241,4 +261,4 @@ case "$action" in
        exit 3
 esac
 
-exit 0
+exit $RETVAL
This page took 0.050992 seconds and 4 git commands to generate.