mirror of
https://git.freebsd.org/ports.git
synced 2025-04-28 17:46:38 -04:00
The PostgreSQL Global Development Group has released an update to all supported versions of PostgreSQL, including 17.4, 16.8, 15.12, 14.17, and 13.20. The issues listed below affect PostgreSQL 17. Some of these issues may also affect other supported versions of PostgreSQL. Improve behavior of quoting functions in libpq. The fix for CVE-2025-1094 caused the quoting functions to not honor their string length parameters and, in some cases, cause crashes. This problem could be noticeable from a PostgreSQL client library, based on how it is integrated with libpq. Fix small memory leak in pg_createsubscriber. Also fix a problem in the FreeBSD port, where the rc script wouldn't return properly, messing up orchestration tools like ansible. [1] PR: 272502 [1] Release notes: https://www.postgresql.org/docs/release/
125 lines
3.5 KiB
Bash
125 lines
3.5 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"
|
|
|
|
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"
|
|
|
|
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"
|