Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PostgreSQL INI files #548

Open
chriscroome opened this issue Mar 10, 2024 · 2 comments
Open

PostgreSQL INI files #548

chriscroome opened this issue Mar 10, 2024 · 2 comments

Comments

@chriscroome
Copy link
Contributor

An extract from the main PostgreSQL configuration file from Debian Bookworm, /etc/postgresql/15/main/postgresql.conf:

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

#listen_addresses = 'localhost'         # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
port = 5432                             # (change requires restart)
max_connections = 100                   # (change requires restart)
#superuser_reserved_connections = 3     # (change requires restart)
unix_socket_directories = '/var/run/postgresql' # comma-separated list of directories
                                        # (change requires restart)
#unix_socket_group = ''                 # (change requires restart)
#unix_socket_permissions = 0777         # begin with 0 to use octal notation
                                        # (change requires restart)
#bonjour = off                          # advertise server via Bonjour
                                        # (change requires restart)
#bonjour_name = ''                      # defaults to the computer name
                                        # (change requires restart)

The JC ini filter returns the following from the above:

{
  "port": "5432                             # (change requires restart)",
  "max_connections": "100                   # (change requires restart)",
  "unix_socket_directories": "'/var/run/postgresql' # comma-separated list of directories"
}

I wonder if this needs a special case, if values are not quoted assume that any white space (tabs in this case) and anything else after a # can be discarded? Or if the ini parser should be updated for this format?

@kellyjonbrazil
Copy link
Owner

This looks like it would need to be a separate parser, possibly reusing the INI parser with some pre-processing to remove inline comments. The INI parser documentation states that all comments must be on their own line.

@chriscroome
Copy link
Contributor Author

Thanks, I'd missed the fact that the existing parser doesn't allow inline comments, I'll use sed for now:

cat /etc/postgresql/15/main/postgresql.conf | sed 's/[#].*$//' | jc --ini -p
{
  "data_directory": "/var/lib/postgresql/15/main",
  "hba_file": "/etc/postgresql/15/main/pg_hba.conf",
  "ident_file": "/etc/postgresql/15/main/pg_ident.conf",
  "external_pid_file": "/var/run/postgresql/15-main.pid",
  "port": "5432",
  "max_connections": "100",
  "unix_socket_directories": "/var/run/postgresql",
  "ssl": "on",
  "ssl_cert_file": "/etc/ssl/certs/ssl-cert-snakeoil.pem",
  "ssl_key_file": "/etc/ssl/private/ssl-cert-snakeoil.key",
  "shared_buffers": "128MB",
  "dynamic_shared_memory_type": "posix",
  "max_wal_size": "1GB",
  "min_wal_size": "80MB",
  "log_line_prefix": "%m [%p] %q%u@%d ",
  "log_timezone": "Etc/UTC",
  "cluster_name": "15/main",
  "datestyle": "iso, dmy",
  "timezone": "Etc/UTC",
  "lc_messages": "en_GB.UTF-8",
  "lc_monetary": "en_GB.UTF-8",
  "lc_numeric": "en_GB.UTF-8",
  "lc_time": "en_GB.UTF-8",
  "default_text_search_config": "pg_catalog.english",
  "include_dir": "conf.d"
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants