Hi Tom,
The actual fix do the job for preventing coredump.
Effectively, reporting "" instead of (null) would be more consistent with the values found in pg_settings.
Another effect of the patch is that it become possible to start a cluster with external_pid_file='' in postgresql.conf
It would have that same behavior as many other parameters.
I started a 9.6 beta with the following lines in postgresql.conf and the only one that reported a problem is external_pid_file
external_pid_file = '' # write an extra PID file
unix_socket_group = '' # (change requires restart)
bonjour_name = '' # defaults to the computer name
ssl_ca_file = '' # (change requires restart)
ssl_crl_file = '' # (change requires restart)
krb_server_keyfile = ''
shared_preload_libraries = '' # (change requires restart)
synchronous_standby_names = '' # standby servers that provide sync rep
cluster_name = '' # added to process titles if nonempty
default_tablespace = '' # a tablespace name, '' uses the default
temp_tablespaces = '' # a list of tablespace names, '' uses
local_preload_libraries = ''
session_preload_libraries = ''
It seems to me that the general behavior it to consider an empty string as an unset parameter in postgresql.conf, why should external_pid_file be an exception ?
I would prefer postgresql -C to report an empty string to be consistent with pg_settings in a backport of the fix.
I also would prefer external_pid_file to behave as other parameters in the next versions.
Regards.
Alain