# PostgreSQL 17 → 18 GUC diff

> Core configuration parameters added, removed, or changed in boot default between PostgreSQL 17 and 18.
---

> [!NOTE]
> **Fact.** The measured inventory changes from 380 to 399 settings: 21 added, 5 boot-default changes, and 2 removed.

## Added parameters {#added}

| Parameter | Type | Context | Boot default | Category |
| --- | --- | --- | --- | --- |
| [`autovacuum_vacuum_max_threshold`](/parameters/autovacuum-vacuum-max-threshold/) | `integer` | `sighup` | `100000000` | Vacuuming / Automatic Vacuuming |
| [`autovacuum_worker_slots`](/parameters/autovacuum-worker-slots/) | `integer` | `postmaster` | `16` | Vacuuming / Automatic Vacuuming |
| [`enable_distinct_reordering`](/parameters/enable-distinct-reordering/) | `bool` | `user` | `on` | Query Tuning / Planner Method Configuration |
| [`enable_self_join_elimination`](/parameters/enable-self-join-elimination/) | `bool` | `user` | `on` | Query Tuning / Planner Method Configuration |
| [`extension_control_path`](/parameters/extension-control-path/) | `string` | `superuser` | `$system` | Client Connection Defaults / Other Defaults |
| [`file_copy_method`](/parameters/file-copy-method/) | `enum` | `user` | `copy` | Resource Usage / Disk |
| [`idle_replication_slot_timeout`](/parameters/idle-replication-slot-timeout/) | `integer` | `sighup` | `0 s` | Replication / Sending Servers |
| [`io_max_combine_limit`](/parameters/io-max-combine-limit/) | `integer` | `postmaster` | `16 8kB` (128 KiB (16 × 8kB)) | Resource Usage / I/O |
| [`io_max_concurrency`](/parameters/io-max-concurrency/) | `integer` | `postmaster` | `-1` | Resource Usage / I/O |
| [`io_method`](/parameters/io-method/) | `enum` | `postmaster` | `worker` | Resource Usage / I/O |
| [`io_workers`](/parameters/io-workers/) | `integer` | `sighup` | `3` | Resource Usage / I/O |
| [`log_lock_failures`](/parameters/log-lock-failures/) | `bool` | `superuser` | `off` | Reporting and Logging / What to Log |
| [`max_active_replication_origins`](/parameters/max-active-replication-origins/) | `integer` | `postmaster` | `10` | Replication / Subscribers |
| [`md5_password_warnings`](/parameters/md5-password-warnings/) | `bool` | `user` | `on` | Connections and Authentication / Authentication |
| [`num_os_semaphores`](/parameters/num-os-semaphores/) | `integer` | `internal` | `0` | Preset Options |
| [`oauth_validator_libraries`](/parameters/oauth-validator-libraries/) | `string` | `sighup` | `""` (empty string) | Connections and Authentication / Authentication |
| [`ssl_groups`](/parameters/ssl-groups/) | `string` | `sighup` | `X25519:prime256v1` | Connections and Authentication / SSL |
| [`ssl_tls13_ciphers`](/parameters/ssl-tls13-ciphers/) | `string` | `sighup` | `""` (empty string) | Connections and Authentication / SSL |
| [`track_cost_delay_timing`](/parameters/track-cost-delay-timing/) | `bool` | `superuser` | `off` | Statistics / Cumulative Query and Index Statistics |
| [`vacuum_max_eager_freeze_failure_rate`](/parameters/vacuum-max-eager-freeze-failure-rate/) | `real` | `user` | `0.03` | Vacuuming / Freezing |
| [`vacuum_truncate`](/parameters/vacuum-truncate/) | `bool` | `user` | `on` | Vacuuming / Default Behavior |
{.full-width}

## Boot-default changes {#default-changes}

| Parameter | PG17 | PG18 | Category |
| --- | --- | --- | --- |
| [`effective_io_concurrency`](/parameters/effective-io-concurrency/) | `1` | `16` | Resource Usage / I/O |
| [`log_connections`](/parameters/log-connections/) | `off` | `""` (empty string) | Reporting and Logging / What to Log |
| [`maintenance_io_concurrency`](/parameters/maintenance-io-concurrency/) | `10` | `16` | Resource Usage / I/O |
| [`server_version`](/parameters/server-version/) | `17.11 (Debian 17.11-1.pgdg13+2)` | `18.6 (Debian 18.6-1.pgdg13+2)` | Preset Options |
| [`server_version_num`](/parameters/server-version-num/) | `170011` | `180006` | Preset Options |
{.full-width}

## Removed parameters {#removed}

| Parameter | Last type | Context | Last boot default | Category |
| --- | --- | --- | --- | --- |
| [`extension_destdir`](/parameters/extension-destdir/) | `string` | `superuser` | `""` (empty string) | File Locations |
| [`ssl_ecdh_curve`](/parameters/ssl-ecdh-curve/) | `string` | `sighup` | `prime256v1` | Connections and Authentication / SSL |
{.full-width}

## Method {#method}

The three lists compare the pinned PG17 and PG18 `pg_settings` snapshots directly. A default change is a change in the `boot_val` plus `unit` pair; `setting` is excluded so an `initdb`-generated value is not mistaken for the compiled boot default.

- [Machine-readable diff data](/data/diffs.json)
- [Complete GUC JSONL](/data/guc.jsonl)
