<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/waiting-for-postgresql-19-add-concurrently-option-to-repack-select-from-depesz--6gxsmjeqb" -->

---
title: Waiting for PostgreSQL 19 – Add CONCURRENTLY option to...
description: PostgreSQL 19 is gaining a CONCURRENTLY option for the REPACK command, allowing table repacking (to reclaim bloat) without holding an access-exclusive lock for...
canonical: https://daily.dev/posts/waiting-for-postgresql-19-add-concurrently-option-to-repack-select-from-depesz--6gxsmjeqb
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Waiting for PostgreSQL 19 – Add CONCURRENTLY option to REPACK – select * from depesz; | daily.dev
og:description: PostgreSQL 19 is gaining a CONCURRENTLY option for the REPACK command, allowing table repacking (to reclaim bloat) without holding an access-exclusive lock for...
og:url: https://daily.dev/posts/waiting-for-postgresql-19-add-concurrently-option-to-repack-select-from-depesz--6gxsmjeqb
og:image: https://api.daily.dev/og/posts/6gxSMjEQb.png
og:image:alt: Waiting for PostgreSQL 19 – Add CONCURRENTLY option to REPACK – select * from depesz;
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Waiting for PostgreSQL 19 – Add CONCURRENTLY option to REPACK – select * from depesz;

**[depesz](https://daily.dev/sources/depesz)** · 4 min read · 19 upvotes · 0 comments

## Summary

PostgreSQL 19 is gaining a CONCURRENTLY option for the REPACK command, allowing table repacking (to reclaim bloat) without holding an access-exclusive lock for the entire operation. The lock is only needed at the final relfilenode swap. A practical test on a 200M-row table (19 GB with 80% bloat) showed the table shrinking to ~4 GB in about 65 seconds, with concurrent inserts experiencing only moderate slowdown (average latency rising from 1.5ms to 5.5ms) rather than being blocked entirely. Known limitations include replication slot consumption, only one concurrent REPACK at a time system-wide, and a deadlock risk during the final lock upgrade phase — all slated to be addressed in follow-up commits.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.depesz.com/2026/04/21/waiting-for-postgresql-19-add-concurrently-option-to-repack/>

## Similar posts on daily.dev

- [Waiting for PostgreSQL 19 – Introduce the REPACK command – select \* from depesz;](https://daily.dev/posts/waiting-for-postgresql-19-introduce-the-repack-command-select-from-depesz--naffqzlbk) · depesz · 27 upvotes · 0 comments

---

Tags: [#postgresql](https://daily.dev/tags/postgresql)

[View this post on daily.dev](https://daily.dev/posts/waiting-for-postgresql-19-add-concurrently-option-to-repack-select-from-depesz--6gxsmjeqb)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Waiting for PostgreSQL 19 – Add CONCURRENTLY option to REPACK – select * from depesz;","url":"https://daily.dev/posts/waiting-for-postgresql-19-add-concurrently-option-to-repack-select-from-depesz--6gxsmjeqb","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/waiting-for-postgresql-19-add-concurrently-option-to-repack-select-from-depesz--6gxsmjeqb"},"datePublished":"2026-04-21T10:44:03.033Z","dateModified":"2026-04-21T10:44:21.389Z","description":"PostgreSQL 19 is gaining a CONCURRENTLY option for the REPACK command, allowing table repacking (to reclaim bloat) without holding an access-exclusive lock for...","image":"https://media.daily.dev/image/upload/s--foaA6JGU--/f_auto/v1722860399/public/Placeholder%2004","thumbnailUrl":"https://media.daily.dev/image/upload/s--foaA6JGU--/f_auto/v1722860399/public/Placeholder%2004","isAccessibleForFree":true,"articleSection":"depesz","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"depesz","logo":"https://media.daily.dev/image/upload/s--ir7juGOi--/f_auto/v1758461024/logos/depesz","url":"https://daily.dev/sources/depesz"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/waiting-for-postgresql-19-add-concurrently-option-to-repack-select-from-depesz--6gxsmjeqb","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":19},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"postgresql","timeRequired":"PT4M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"depesz","item":"https://daily.dev/sources/depesz"},{"@type":"ListItem","position":3,"name":"Waiting for PostgreSQL 19 – Add CONCURRENTLY option to REPACK – select * from depesz;"}]}
```

