mirror of
https://github.com/postgres/postgres.git
synced 2025-04-25 21:42:33 +03:00
Normally, we automatically restart after a backend crash, but in some cases when PostgreSQL is invoked by clusterware it may be desirable to suppress this behavior, so we provide an option which does this. Since no existing GUC group quite fits, create a new group called "error handling options" for this and the previously undocumented GUC exit_on_error, which is now documented. Review by Fujii Masao.
79 lines
2.6 KiB
Bash
Executable File
79 lines
2.6 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
## currently, this script makes a lot of assumptions:
|
|
## in postgresql.conf.sample:
|
|
## 1) the valid config settings may be preceded by a '#', but NOT '# '
|
|
## (we use this to skip comments)
|
|
## 2) the valid config settings will be followed immediately by ' ='
|
|
## (at least one space preceding the '=')
|
|
## in guc.c:
|
|
## 3) the options have PGC_ on the same line as the option
|
|
## 4) the options have '{' on the same line as the option
|
|
|
|
## Problems
|
|
## 1) Don't know what to do with TRANSACTION ISOLATION LEVEL
|
|
|
|
## if an option is valid but shows up in only one file (guc.c but not
|
|
## postgresql.conf.sample), it should be listed here so that it
|
|
## can be ignored
|
|
INTENTIONALLY_NOT_INCLUDED="autocommit debug_deadlocks \
|
|
is_superuser lc_collate lc_ctype lc_messages lc_monetary lc_numeric lc_time \
|
|
pre_auth_delay role seed server_encoding server_version server_version_int \
|
|
session_authorization trace_lock_oidmin trace_lock_table trace_locks trace_lwlocks \
|
|
trace_notify trace_userlocks transaction_isolation transaction_read_only \
|
|
zero_damaged_pages"
|
|
|
|
### What options are listed in postgresql.conf.sample, but don't appear
|
|
### in guc.c?
|
|
|
|
# grab everything that looks like a setting and convert it to lower case
|
|
SETTINGS=`grep ' =' postgresql.conf.sample |
|
|
grep -v '^# ' | # strip comments
|
|
sed -e 's/^#//' |
|
|
awk '{print $1}'`
|
|
|
|
SETTINGS=`echo "$SETTINGS" | tr 'A-Z' 'a-z'`
|
|
|
|
for i in $SETTINGS ; do
|
|
hidden=0
|
|
## it sure would be nice to replace this with an sql "not in" statement
|
|
## it doesn't seem to make sense to have things in .sample and not in guc.c
|
|
# for hidethis in $INTENTIONALLY_NOT_INCLUDED ; do
|
|
# if [ "$hidethis" = "$i" ] ; then
|
|
# hidden=1
|
|
# fi
|
|
# done
|
|
if [ "$hidden" -eq 0 ] ; then
|
|
grep -i '"'$i'"' guc.c > /dev/null
|
|
if [ $? -ne 0 ] ; then
|
|
echo "$i seems to be missing from guc.c";
|
|
fi;
|
|
fi
|
|
done
|
|
|
|
### What options are listed in guc.c, but don't appear
|
|
### in postgresql.conf.sample?
|
|
|
|
# grab everything that looks like a setting and convert it to lower case
|
|
|
|
SETTINGS=`grep '{.* PGC_' guc.c | awk '{print $1}' | \
|
|
sed -e 's/{//g' -e 's/"//g' -e 's/,//'`
|
|
|
|
SETTINGS=`echo "$SETTINGS" | tr 'A-Z' 'a-z'`
|
|
|
|
for i in $SETTINGS ; do
|
|
hidden=0
|
|
## it sure would be nice to replace this with an sql "not in" statement
|
|
for hidethis in $INTENTIONALLY_NOT_INCLUDED ; do
|
|
if [ "$hidethis" = "$i" ] ; then
|
|
hidden=1
|
|
fi
|
|
done
|
|
if [ "$hidden" -eq 0 ] ; then
|
|
grep -i '#'$i' ' postgresql.conf.sample > /dev/null
|
|
if [ $? -ne 0 ] ; then
|
|
echo "$i seems to be missing from postgresql.conf.sample";
|
|
fi
|
|
fi
|
|
done
|