The PostgreSQL Global Development Group has released an update to all supported versions of PostgreSQL, including 17.6, 16.10, 15.14, 14.19, and 13.22, as well as the third beta release of PostgreSQL 18. This release fixes 3 security vulnerabilities and over 55 bugs reported over the last several months. If you previously created a BRIN index using the numeric_minmax_multi_ops operator class, please see the "Updating" section for additional instructions after upgrading your instance. For the full list of changes, please review the release notes. Build client with ZSTD default [1]. Support promote and logrotate commans in RC-script. [2] PR: 287225 [1], 288836 [2] Security: fc048b51-7909-11f0-90a2-6cc21735f730 Release notes: https://www.postgresql.org/about/news/postgresql-176-1610-1514-1419-1322-and-18-beta-3-released-3118/
127 lines
3.6 KiB
Bash
127 lines
3.6 KiB
Bash
#!/bin/sh
|
|
|
|
# PROVIDE: postgresql
|
|
# REQUIRE: DAEMON mountlate
|
|
# KEYWORD: shutdown
|
|
#
|
|
# Add the following line to /etc/rc.conf to enable PostgreSQL:
|
|
#
|
|
# postgresql_enable="YES"
|
|
# # optional
|
|
# postgresql_data="/var/db/%%PG_USER%%/data%%PG_VERSION%%"
|
|
# postgresql_flags="-w -s -m fast"
|
|
# postgresql_initdb_flags="--encoding=utf-8 --lc-collate=C"
|
|
# # leave empty to use the login class set in in /etc/passwd:
|
|
# postgresql_login_class="my_custom_login_class"
|
|
# postgresql_profiles=""
|
|
#
|
|
# See %%PREFIX%%/share/doc/postgresql/README-server for more info
|
|
#
|
|
# This scripts takes one of the following commands:
|
|
#
|
|
# start stop restart reload status initdb
|
|
#
|
|
# For postmaster startup options, edit ${postgresql_data}/postgresql.conf
|
|
|
|
command=%%PREFIX%%/bin/pg_ctl
|
|
|
|
. /etc/rc.subr
|
|
|
|
load_rc_config postgresql
|
|
|
|
# set defaults
|
|
: ${postgresql_enable:="NO"}
|
|
: ${postgresql_flags:="-w -s -m fast"}
|
|
: ${postgresql_user:="%%PG_USER%%"}
|
|
eval _pgdir="~${postgresql_user}/data%%PG_VERSION%%"
|
|
: ${postgresql_data:="${_pgdir}"}
|
|
: ${postgresql_login_class:=""}
|
|
: ${postgresql_initdb_flags:="--encoding=utf-8 --lc-collate=C"}
|
|
: ${postgresql_svcj_options:="net_basic"}
|
|
|
|
name=postgresql
|
|
rcvar=postgresql_enable
|
|
extra_commands="reload initdb promote logrotate"
|
|
|
|
start_cmd="postgresql_command start"
|
|
stop_cmd="postgresql_command stop"
|
|
restart_cmd="postgresql_command restart"
|
|
reload_cmd="postgresql_command reload"
|
|
status_cmd="postgresql_command status"
|
|
promote_cmd="postgresql_command promote"
|
|
logrotate_cmd="postgresql_command logrotate"
|
|
|
|
initdb_cmd="postgresql_initdb"
|
|
|
|
su_cmd="/usr/bin/su"
|
|
|
|
if [ -n "$2" ]; then
|
|
profile="$2"
|
|
if [ "x${postgresql_profiles}" != "x" ]; then
|
|
eval postgresql_data="\${postgresql_${profile}_data:-}"
|
|
if [ "x${postgresql_data}" = "x" ]; then
|
|
echo "You must define a data directory (postgresql_${profile}_data)"
|
|
exit 1
|
|
fi
|
|
eval postgresql_enable="\${postgresql_${profile}_enable:-${postgresql_enable}}"
|
|
eval postgresql_data="\${postgresql_${profile}_data:-${postgresql_data}}"
|
|
eval postgresql_flags="\${postgresql_${profile}_flags:-${postgresql_flags}}"
|
|
eval postgresql_login_class="\${postgresql_${profile}_login_class:-${postgresql_login_class}}"
|
|
eval postgresql_initdb_flags="\${postgresql_${profile}_initdb_flags:-${postgresql_initdb_flags}}"
|
|
fi
|
|
else
|
|
if [ "x${postgresql_profiles}" != "x" -a "x$1" != "x" ]; then
|
|
for profile in ${postgresql_profiles}; do
|
|
eval _enable="\${postgresql_${profile}_enable}"
|
|
case "x${_enable:-${postgresql_enable}}" in
|
|
x|x[Nn][Oo]|x[Nn][Oo][Nn][Ee])
|
|
continue
|
|
;;
|
|
x[Yy][Ee][Ss])
|
|
;;
|
|
*)
|
|
if test -z "$_enable"; then
|
|
_var=postgresql_enable
|
|
else
|
|
_var=postgresql_"${profile}"_enable
|
|
fi
|
|
echo "Bad value" \
|
|
"'${_enable:-${postgresql_enable}}'" \
|
|
"for ${_var}. " \
|
|
"Profile ${profile} skipped."
|
|
continue
|
|
;;
|
|
esac
|
|
echo "===> postgresql profile: ${profile}"
|
|
%%PREFIX%%/etc/rc.d/postgresql $1 ${profile}
|
|
retcode="$?"
|
|
if [ "0${retcode}" -ne 0 ]; then
|
|
failed="${profile} (${retcode}) ${failed:-}"
|
|
else
|
|
success="${profile} ${success:-}"
|
|
fi
|
|
done
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
command_args="-l /dev/null -D ${postgresql_data} ${postgresql_flags}"
|
|
|
|
postgresql_command()
|
|
{
|
|
echo "${rc_arg} ${name}"
|
|
${su_cmd} ${postgresql_login_class:+-c ${postgresql_login_class}} \
|
|
-l ${postgresql_user} \
|
|
-c "exec ${command} ${command_args} ${rc_arg}"
|
|
}
|
|
|
|
postgresql_initdb()
|
|
{
|
|
echo "${rc_arg} ${name}"
|
|
${su_cmd} ${postgresql_login_class:+-c ${postgresql_login_class}} \
|
|
-l ${postgresql_user} \
|
|
-c "exec %%PREFIX%%/bin/initdb ${postgresql_initdb_flags} -D ${postgresql_data} -U ${postgresql_user}"
|
|
}
|
|
|
|
run_rc_command "$1"
|