Re: Adding REPACK [concurrently]
Antonin Houska <ah@cybertec.at>
From: Antonin Houska <ah@cybertec.at>
To: Mihail Nikalayeu <mihailnikalayeu@gmail.com>
Cc: Alvaro Herrera <alvherre@alvh.no-ip.org>,
Pg Hackers <pgsql-hackers@lists.postgresql.org>,
Robert Treat <rob@xzilla.net>
Date: 2025-11-03T07:56:40Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Improve REPACK (CONCURRENTLY) error messages some more
- 378dffaf8c80 19 (unreleased) landed
-
Add CONCURRENTLY option to REPACK
- 28d534e2ae0a 19 (unreleased) landed
-
Make index_concurrently_create_copy more general
- 33bf7318f94c 19 (unreleased) landed
-
Document the 'command' column of pg_stat_progress_repack
- a630ac5c2016 19 (unreleased) landed
-
Introduce the REPACK command
- ac58465e0618 19 (unreleased) landed
-
Split vacuumdb to create vacuuming.c/h
- c4067383cb2c 19 (unreleased) landed
-
Revert changes to CONCURRENTLY that "sped up" Xmin advance
- 042b584c7f7d 14.4 cited
Mihail Nikalayeu <mihailnikalayeu@gmail.com> wrote: > Hello! > > On Fri, Oct 31, 2025 at 12:17 AM Alvaro Herrera <alvherre@alvh.no-ip.org> wrote: > > Here's a new installment of this series, v25, including the CONCURRENTLY > > part, which required some conflict fixes on top of the much-changed > > v24-0001 patch. > > > * cluster.c > > * CLUSTER a table on an index. This is now also used for VACUUM FULL. ok > Should we add something about repack here? > > > ii_ExclusinOps > typo here. ok > > * index is inserted into catalogs and needs to be built later on. > Now it is only in case concurrently == true ok > > * Build the index information for the new index. Note that rebuild of > > * indexes with exclusion constraints is not supported, hence there is no > > * need to fill all the ii_Exclusion* fields. > > Now the function supports its in !concurrently mode. Should we fill > ii_Exclusion? Also, it says > > > If !concurrently, ii_ExclusinOps is currently not needed. > But it is not clear - why not? Right, makeIndexInfo() needs to be adjusted. > > > newInfo = makeIndexInfo(oldInfo->ii_NumIndexAttrs, > > oldInfo->ii_NumIndexKeyAttrs, > > oldInfo->ii_Am, > > indexExprs, > > indexPreds, > > oldInfo->ii_Unique, > > oldInfo->ii_NullsNotDistinct, > > false, /* not ready for inserts */ > > true, > > indexRelation->rd_indam->amsummarizing, > > oldInfo->ii_WithoutOverlaps); > > Is it ok we pass isready == false if !concurrent? > Also, we pass concurrent == true even if concurrently == false - feels > strange and probably wrong. You're right, both arguments are wrong. > > This difference does has no impact on XidInMVCCSnapshot(). > Should it be "This difference has no impact"? ok > > * pgoutput_cluster.c > > * src/backend/replication/pgoutput_cluster/pgoutput_cluster.c > it is pgoutput_trepack.c :) ok I'll fix all the problems in the next version. Thanks! -- Antonin Houska Web: https://www.cybertec-postgresql.com