Re: Adding REPACK [concurrently]

Alvaro Herrera <alvherre@alvh.no-ip.org>

From: Alvaro Herrera <alvherre@alvh.no-ip.org>
To: Mihail Nikalayeu <mihailnikalayeu@gmail.com>
Cc: Srinath Reddy Sadipiralla <srinath2133@gmail.com>, Antonin Houska <ah@cybertec.at>, Matthias van de Meent <boekewurm+postgres@gmail.com>, Pg Hackers <pgsql-hackers@lists.postgresql.org>, Robert Treat <rob@xzilla.net>
Date: 2026-03-24T22:32:17Z
Lists: pgsql-hackers

Attachments

Hello,

On 2026-Mar-20, Mihail Nikalayeu wrote:

> Hello, everyone!
> 
> Some comments for v43:

Many thanks for the review.  I have applied fixes for these, so here's
v44.  Changes:

- 0001 now simply renames the existing function and adds the
"concurrently" flag, instead of adding a separate function.  I don't
think there's a reason to keep the previous function name.

- 0002 is unchanged.

- 0003 contains the fixes to the problems pointed out by Mihail;
  otherwise it's pretty much the same as in v43.

- 0004 is Antonin's bugfix from the crash reported by Srinath.

- 0005 to 0007 are my proposed changes on this round.  It's mostly just
  cosmetics.  I intend to squash these all into a single commit (0003 to
  at least 0007) when posting the next version.

- 0008 to 0010 are as posted by Antonin; they are unchanged, except for
  fixes for the problems pointed out by Mihail.  Antonin, I would
  appreciate it if you want to change the "reform" bit in 0007 as
  discussed.

For the next version I'll probably also rename the file cluster.c to
repack.c as well as assorted symbols therein, as well as studying the
coverage more closely.

Thanks,

-- 
Álvaro Herrera        Breisgau, Deutschland  —  https://www.EnterpriseDB.com/

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Allow old WAL recycling during REPACK CONCURRENTLY

  2. Advance restart_lsn more eagerly in LogicalConfirmReceivedLocation

  3. Remove unnecessary signal handler change

  4. Improve REPACK (CONCURRENTLY) error messages some more

  5. Revert "Allow logical replication snapshots to be database-specific"

  6. Move REPACK (CONCURRENTLY) test out of stock regression tests

  7. REPACK: do not require REPLICATION or LOGIN

  8. Add missing initialization

  9. Simplify declaration of memcpy target

  10. Reserve replication slots specifically for REPACK

  11. doc: Add an example of REPACK (CONCURRENTLY)

  12. Allow logical replication snapshots to be database-specific

  13. Avoid different-size pointer-to-integer cast

  14. Fix valgrind failure

  15. Add CONCURRENTLY option to REPACK

  16. Rename cluster.c to repack.c (and corresponding .h)

  17. Allow index_create to suppress index_build progress reporting

  18. Make index_concurrently_create_copy more general

  19. Document the 'command' column of pg_stat_progress_repack

  20. Introduce the REPACK command

  21. Toggle logical decoding dynamically based on logical slot presence.

  22. Split vacuumdb to create vacuuming.c/h

  23. Remove ReorderBufferTupleBuf structure.

  24. Revert changes to CONCURRENTLY that "sped up" Xmin advance

  25. VACUUM: ignore indexing operations with CONCURRENTLY