BUG #19540: Inconsistent integer-to-octal formatting for permission GUCs in pg_settings (boot_val vs setting)
The following bug has been logged on the website:
Bug reference: 19540
Logged by: Jobin Augustine
Email address: jobinau@gmail.com
PostgreSQL version: 18.4
Operating system: All
Description:
This is more of an undocumented behavior in all PostgreSQL versions.
Steps to reproduce:
postgres=# SELECT name, setting, boot_val
FROM pg_settings
WHERE name IN ('data_directory_mode', 'log_file_mode',
'unix_socket_permissions');
Actual Result :
name | setting | boot_val
-------------------------+---------+----------
data_directory_mode | 0700 | 448
log_file_mode | 0600 | 384
unix_socket_permissions | 0777 | 511
(3 rows)
File/Directory permissions like 448,384 and 511 may not make a good sense
for a user. Either a decoded value or mentioning it in docs would be great.
Displaying the value consistent with "setting" column is most desirable from
a user perspective.
Thank you,
Jobin.
PG Bug reporting form <noreply@postgresql.org> writes:
Steps to reproduce:
postgres=# SELECT name, setting, boot_val
FROM pg_settings
WHERE name IN ('data_directory_mode', 'log_file_mode',
'unix_socket_permissions');
Actual Result :
name | setting | boot_val
-------------------------+---------+----------
data_directory_mode | 0700 | 448
log_file_mode | 0600 | 384
unix_socket_permissions | 0777 | 511
(3 rows)
Yeah, the min and max columns are confusing too. That's because
we entrust the formatting to the "show_hook" for those variables,
and those hooks are defined to show the current value only.
Looking through the existing show_hooks, all the other ones seem to
be used to account for situations where the effective value depends on
more than just the GUC variable itself. Maybe we should say that
a show_hook should be used only for that purpose and not for specially
formatting the value? We could deal with these cases by inventing a
new GUC flag, say GUC_SHOW_IN_OCTAL, that could be applied to all the
relevant values.
regards, tom lane