Postgres 17 shipped in September 2024. Six months after upgrading our larger projects, three features that entered practice.
1. JSON_TABLE
Postgres finally has standard SQL/JSON syntax to extract tables from JSON. For semi-structured data (logs, events, external API payloads), JSON_TABLE is the difference between "30 SQL lines" and "5".
SELECT * FROM JSON_TABLE(
events_data,
'$[*]'
COLUMNS (
user_id INT PATH '$.user.id',
action TEXT PATH '$.action',
ts TIMESTAMP PATH '$.timestamp'
)
);
2. Much faster vacuum
Postgres 17 internally changes the vacuum process: a new memory layout for dead tuples cuts I/O and CPU. On our biggest dbs (50+ GB) nightly vacuum went from 38 minutes to 14. On write-heavy tables, noticeable.
3. Improved COPY
New ON_ERROR and LOG_VERBOSITY options let you import data with corrupted rows without stopping the whole operation. For periodic CSV imports (ERP → Postgres), valuable.
Not yet in production
- Logical replication with failover: useful on multi-region scenarios, not urgent for us.
- Incremental backup (built-in, replacing some pgBackRest pieces): test before adopting.
Migration
16 to 17 broke nothing on our 12 projects. For those still on Postgres 14 or 15 (looming EOL): move within the year. The performance and feature delta justifies the work.