# PostgreSQL 9.6 → 10 GUC diff

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

> [!NOTE]
> **Fact.** The measured inventory changes from 263 to 272 settings: 11 added, 12 boot-default changes, and 2 removed.

## Added parameters {#added}

| Parameter | Type | Context | Boot default | Category |
| --- | --- | --- | --- | --- |
| [`allow_in_place_tablespaces`](/parameters/allow-in-place-tablespaces/) | `bool` | `superuser` | `off` | Developer Options |
| [`enable_gathermerge`](/parameters/enable-gathermerge/) | `bool` | `user` | `on` | Query Tuning / Planner Method Configuration |
| [`max_logical_replication_workers`](/parameters/max-logical-replication-workers/) | `integer` | `postmaster` | `4` | Replication / Subscribers |
| [`max_parallel_workers`](/parameters/max-parallel-workers/) | `integer` | `user` | `8` | Resource Usage / Asynchronous Behavior |
| [`max_pred_locks_per_page`](/parameters/max-pred-locks-per-page/) | `integer` | `sighup` | `2` | Lock Management |
| [`max_pred_locks_per_relation`](/parameters/max-pred-locks-per-relation/) | `integer` | `sighup` | `-2` | Lock Management |
| [`max_sync_workers_per_subscription`](/parameters/max-sync-workers-per-subscription/) | `integer` | `sighup` | `2` | Replication / Subscribers |
| [`min_parallel_index_scan_size`](/parameters/min-parallel-index-scan-size/) | `integer` | `user` | `64 8kB` (512 KiB (64 × 8kB)) | Query Tuning / Planner Cost Constants |
| [`min_parallel_table_scan_size`](/parameters/min-parallel-table-scan-size/) | `integer` | `user` | `1024 8kB` (8 MiB (1024 × 8kB)) | Query Tuning / Planner Cost Constants |
| [`ssl_dh_params_file`](/parameters/ssl-dh-params-file/) | `string` | `sighup` | `""` (empty string) | Connections and Authentication / Security and Authentication |
| [`wal_consistency_checking`](/parameters/wal-consistency-checking/) | `string` | `superuser` | `""` (empty string) | Developer Options |
{.full-width}

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

| Parameter | PG9.6 | PG10 | Category |
| --- | --- | --- | --- |
| [`hot_standby`](/parameters/hot-standby/) | `off` | `on` | Replication / Standby Servers |
| [`log_directory`](/parameters/log-directory/) | `pg_log` | `log` | Reporting and Logging / Where to Log |
| [`log_line_prefix`](/parameters/log-line-prefix/) | `""` (empty string) | `%m [%p] ` | Reporting and Logging / What to Log |
| [`max_parallel_workers_per_gather`](/parameters/max-parallel-workers-per-gather/) | `0` | `2` | Resource Usage / Asynchronous Behavior |
| [`max_replication_slots`](/parameters/max-replication-slots/) | `0` | `10` | Replication / Sending Servers |
| [`max_wal_senders`](/parameters/max-wal-senders/) | `0` | `10` | Replication / Sending Servers |
| [`max_wal_size`](/parameters/max-wal-size/) | `64 16MB` (1 GiB (64 × 16MB)) | `1024 MB` (1 GiB) | Write-Ahead Log / Checkpoints |
| [`min_wal_size`](/parameters/min-wal-size/) | `5 16MB` (80 MiB (5 × 16MB)) | `80 MB` (80 MiB) | Write-Ahead Log / Checkpoints |
| [`password_encryption`](/parameters/password-encryption/) | `on` | `md5` | Connections and Authentication / Security and Authentication |
| [`server_version`](/parameters/server-version/) | `9.6.24` | `10.23 (Debian 10.23-1.pgdg110+1)` | Preset Options |
| [`server_version_num`](/parameters/server-version-num/) | `90624` | `100023` | Preset Options |
| [`wal_level`](/parameters/wal-level/) | `minimal` | `replica` | Write-Ahead Log / Settings |
{.full-width}

## Removed parameters {#removed}

| Parameter | Last type | Context | Last boot default | Category |
| --- | --- | --- | --- | --- |
| [`min_parallel_relation_size`](/parameters/min-parallel-relation-size/) | `integer` | `user` | `1024 8kB` (8 MiB (1024 × 8kB)) | Query Tuning / Planner Cost Constants |
| [`sql_inheritance`](/parameters/sql-inheritance/) | `bool` | `user` | `on` | Version and Platform Compatibility / Previous PostgreSQL Versions |
{.full-width}

## Method {#method}

The three lists compare the pinned PG9.6 and PG10 `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)
