File: postgresql-startup.in

package info (click to toggle)
postgresql 7.2.1-2woody8
  • links: PTS
  • area: main
  • in suites: woody
  • size: 42,424 kB
  • ctags: 30,027
  • sloc: ansic: 290,568; java: 18,529; sh: 12,197; sql: 11,401; yacc: 11,189; tcl: 8,063; perl: 4,067; makefile: 3,332; xml: 2,874; lex: 2,799; python: 1,237; cpp: 845; pascal: 81; asm: 70; awk: 20; sed: 8
file content (165 lines) | stat: -rw-r--r-- 4,539 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
#! /bin/bash
#include <genscript.warning>
set -e
#
# Initialisation
#
# (This should set up values for POSTGRES_HOME and POSTGRES_DATA, which
# say where the library and database are.  It should also set up DATEFORMAT
# which governs whether the backend sends back dates in European or
# American format, and the logging options.)
# 
# This is NOT a configuration file.
# If you wish to change any values, the proper place to do so is in
# /etc/postgresql/postmaster.conf or /etc/postgresql/postgresql.conf.
# ANY CHANGES YOU MAKE TO THIS FILE WILL GET OVERWRITTEN BY THE NEXT
# INSTALLATION.
# To stop postgresql running, do
#   ln -sf /bin/false /usr/lib/postgresql/bin/can_i_run

check_version () {
	# compare the database format with the format expected by the software
	dbformat=`cat ${PGDATA}/PG_VERSION 2>/dev/null`
	if [ A${dbformat} != A${version} ]
	then
	    if [ -z "${dbformat}" ]
	    then
		echo The database framework has not yet been created. Use
		echo initdb to do this.
	    else
		   echo The database is in an older format that cannot be read by
		   echo version ${version} of PostgreSQL.
		   echo
		if [ -f /usr/lib/postgresql/dumpall/default_encoding ]
		then
		   echo "The postinstallation script should attempt to upgrade the database"
		   echo "automatically.  If it fails, it must be done by hand."
		else
		   echo Run postgresql-dump to dump the old database and to reload
		   echo it in the new format.
	       fi
	       echo "*** READ /usr/share/doc/postgresql/README.Debian.migration.gz FIRST! ***"
	    fi
	    echo
	    echo The version ${version} postmaster cannot be started until
	    echo this is done.
	    exit 255
	fi
}

obsolete_config () {
	echo "
	******************  Obsolete configuration files  *****************
	
	postmaster.init and pg_options in /etc/postgresql/ are obsolete.

	Please update your configuration files by integrating your site-
	specific changes with the new format in postmaster.conf and
   postgresql.conf and delete or rename the old configuration files.

   PostgreSQL cannot be started until you have done this.

	*******************************************************************
	"
   exit 1
}

# Refuse to proceed if the old config files are still there
if [ -f /etc/postgresql/postmaster.init -o -f /etc/postgresql/pg_options ]
then
	 obsolete_config
	 exit 1
fi

. /etc/postgresql/postmaster.conf

export LANG PGDATESTYLE

if [ -z "${PGDATESTYLE}" ]
then
	PGDATESTYLE=ISO,European
fi

PGDATA=${POSTGRES_DATA:-/var/lib/postgres/data}
PGLIB=/usr/lib/postgresql
export PGLIB PGDATA
POSTMASTER=${PGLIB}/bin/postmaster
version=%PG_VERSION%		# Note: this is not necessarily the same as the
			# software version.

# Give administrators a means of not allowing postgresql to start:
# Link /usr/lib/postgresql/bin/can_i_run to /bin/false
if [ -x /usr/lib/postgresql/bin/can_i_run -a "$1" != dump_schema ]
then
	if ! /usr/lib/postgresql/bin/can_i_run
	then
			echo PostgreSQL is temporarily disabled
			echo
			echo To enable it, remove /usr/lib/postgresql/bin/can_i_run \(or
			echo link it to /bin/true\) and run \`/etc/init.d/postgresql start\'
			echo
			exit 1
	fi
fi

if grep -qs '^local.*[ 	]*peer[ 	]' /etc/postgresql/pg_hba.conf
then
	echo "Invalid pg_hba.conf authentication spec.  Change all occurrences of
peer authentication to ident in /etc/postgresql/pg_hba.conf."
	exit 1
fi

# Make sure we have a database directory
if [ ! -d ${PGDATA} ]
then
    echo No readable database directory for postgresql
    exit 3
fi

if [ ! -d ${PGDATA}/base ]
then
    echo There is no PostgreSQL database framework in $PGDATA.
    echo Run initdb as the postgres user to create it
    exit 3
fi

# First, check that the database is the right version
check_version

# Make sure that we don't try to start if the executable is missing.
if [ ! -x ${POSTMASTER} ]
then
    echo No postmaster executable for postgresql
    exit 3
fi

OPTIONS=$POSTMASTER_OPTIONS
if [ -n "$PGPORT" ]
then
	OPTIONS="$OPTIONS -p$PGPORT"
fi

if [ -n "$OPTIONS" ]
then
	OPTIONS="-o '$OPTIONS'"
fi

# Make sure there is no UNIX-socket file lurking around; this socket
# can get left behind if there is a system crash.
if [ -S /var/run/postgresql/.s.PGSQL.${PGPORT:=5432} ]
then
	rm /var/run/postgresql/.s.PGSQL.${PGPORT}
fi

LOG_OPT="-l ${POSTGRES_LOG:=/var/log/postgres.log}"

# Ready to go: stand clear...
echo Starting PostgreSQL postmaster.
cd ${POSTGRES_HOME}
eval /usr/lib/postgresql/bin/pg_ctl start -D ${PGDATA} ${LOG_OPT} ${OPTIONS}

#  Give it a chance to get going
sleep 5

exit 0