# PostgreSQL 12 → 13 GUC diff

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

> [!NOTE]
> **Fact.** The measured inventory changes from 317 to 332 settings: 16 added, 3 boot-default changes, and 1 removed.

## Added parameters {#added}

| Parameter | Type | Context | Boot default | Category |
| --- | --- | --- | --- | --- |
| [`autovacuum_vacuum_insert_scale_factor`](/parameters/autovacuum-vacuum-insert-scale-factor/) | `real` | `sighup` | `0.2` | Autovacuum |
| [`autovacuum_vacuum_insert_threshold`](/parameters/autovacuum-vacuum-insert-threshold/) | `integer` | `sighup` | `1000` | Autovacuum |
| [`backtrace_functions`](/parameters/backtrace-functions/) | `string` | `superuser` | `""` (empty string) | Developer Options |
| [`enable_incremental_sort`](/parameters/enable-incremental-sort/) | `bool` | `user` | `on` | Query Tuning / Planner Method Configuration |
| [`hash_mem_multiplier`](/parameters/hash-mem-multiplier/) | `real` | `user` | `1` | Resource Usage / Memory |
| [`ignore_invalid_pages`](/parameters/ignore-invalid-pages/) | `bool` | `postmaster` | `off` | Developer Options |
| [`log_min_duration_sample`](/parameters/log-min-duration-sample/) | `integer` | `superuser` | `-1 ms` | Reporting and Logging / When to Log |
| [`log_parameter_max_length`](/parameters/log-parameter-max-length/) | `integer` | `superuser` | `-1 B` | Reporting and Logging / What to Log |
| [`log_parameter_max_length_on_error`](/parameters/log-parameter-max-length-on-error/) | `integer` | `user` | `0 B` | Reporting and Logging / What to Log |
| [`log_statement_sample_rate`](/parameters/log-statement-sample-rate/) | `real` | `superuser` | `1` | Reporting and Logging / When to Log |
| [`logical_decoding_work_mem`](/parameters/logical-decoding-work-mem/) | `integer` | `user` | `65536 kB` (64 MiB) | Resource Usage / Memory |
| [`maintenance_io_concurrency`](/parameters/maintenance-io-concurrency/) | `integer` | `user` | `10` | Resource Usage / Asynchronous Behavior |
| [`max_slot_wal_keep_size`](/parameters/max-slot-wal-keep-size/) | `integer` | `sighup` | `-1 MB` | Replication / Sending Servers |
| [`wal_keep_size`](/parameters/wal-keep-size/) | `integer` | `sighup` | `0 MB` (0 B) | Replication / Sending Servers |
| [`wal_receiver_create_temp_slot`](/parameters/wal-receiver-create-temp-slot/) | `bool` | `sighup` | `off` | Replication / Standby Servers |
| [`wal_skip_threshold`](/parameters/wal-skip-threshold/) | `integer` | `user` | `2048 kB` (2 MiB) | Write-Ahead Log / Settings |
{.full-width}

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

| Parameter | PG12 | PG13 | Category |
| --- | --- | --- | --- |
| [`server_version`](/parameters/server-version/) | `12.22 (Debian 12.22-1.pgdg120+1)` | `13.23 (Debian 13.23-1.pgdg13+1)` | Preset Options |
| [`server_version_num`](/parameters/server-version-num/) | `120022` | `130023` | Preset Options |
| [`ssl_min_protocol_version`](/parameters/ssl-min-protocol-version/) | `TLSv1` | `TLSv1.2` | Connections and Authentication / SSL |
{.full-width}

## Removed parameters {#removed}

| Parameter | Last type | Context | Last boot default | Category |
| --- | --- | --- | --- | --- |
| [`wal_keep_segments`](/parameters/wal-keep-segments/) | `integer` | `sighup` | `0` | Replication / Sending Servers |
{.full-width}

## Method {#method}

The three lists compare the pinned PG12 and PG13 `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)
