mirror of
https://github.com/postgres/postgres.git
synced 2025-11-06 07:49:08 +03:00
Aside from being queriable via SHOW, this value is sent to the client immediately at session startup, and again later on if the server gets promoted to primary during the session. The immediate report will be used in an upcoming patch to avoid an extra round trip when trying to connect to a primary server. Haribabu Kommi, Greg Nancarrow, Tom Lane; reviewed at various times by Laurenz Albe, Takayuki Tsunakawa, Peter Smith. Discussion: https://postgr.es/m/CAF3+xM+8-ztOkaV9gHiJ3wfgENTq97QcjXQt+rbFQ6F7oNzt9A@mail.gmail.com
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="debug_deadlocks in_hot_standby \
|
|
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_num \
|
|
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
|