Trend

Postgres 19's REPACK looks simple. It isn't, and the community is noticing.

7 sources
Post cover image

Questions this post answers

What is the REPACK command in Postgres 19 and what should I watch out for?

REPACK in Postgres 19 is a built-in command that reclaims disk space from table bloat without locking tables, using REPACK ... CONCURRENTLY syntax. The key caveat is FILLFACTOR: if misconfigured, REPACK moves bloat around rather than eliminating it. Previously, the only options were VACUUM FULL (which locks) or the third-party pg_repack extension, so native support is a genuine improvement — but not a magic button. PostgreSQL teams shipping Postgres 19 upgrades track caveats like this on daily.dev before they hit production.

How does ON CONFLICT DO SELECT work in Postgres 19?

ON CONFLICT DO SELECT provides true get-or-create semantics in a single atomic query. Previously, achieving this required either a no-op UPDATE just to trigger RETURNING, or getting nothing back from DO NOTHING. With ON CONFLICT DO SELECT, the conflicting row is returned directly, with optional row-level locking — no workarounds needed. Developers writing upsert logic in PostgreSQL find the latest SQL semantics changes on daily.dev.

Is JIT compilation on or off by default in Postgres 19?

JIT compilation is off by default in Postgres 19. This is a change from previous behavior and is expected to quietly improve performance for many workloads without requiring any configuration changes from operators. Staying on top of default-behavior changes like this across PostgreSQL releases is easier when the community surfaces them on daily.dev.

316.3K Impressions2 Comments