Nathan Bossart <[email protected]> wrote: > On Thu, Aug 27, 2026 at 10:11:45AM -0500, Nathan Bossart wrote: > > The REPACK grammar accepts ONLY and a trailing * like VACUUM does, but it's > > neither documented nor handled in the REPACK code. From a v19 perspective, > > it might be best to just reject that syntax for now, but that does mean it > > won't be able to do everything VACUUM (FULL) can. > > Bringing REPACK in line with its documentation looks pretty simple. This > is probably the way to go for v19, as proper support for ONLY and trailing > * seems to require more invasive changes. > > diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y > index a33c3aaeeb2..2df39a48fc6 100644 > --- a/src/backend/parser/gram.y > +++ b/src/backend/parser/gram.y > @@ -12543,25 +12543,25 @@ CreateConversionStmt: > > *****************************************************************************/ > > RepackStmt: > - REPACK opt_utility_option_list vacuum_relation USING INDEX name > + REPACK opt_utility_option_list qualified_name opt_name_list > USING INDEX name > { > RepackStmt *n = makeNode(RepackStmt); > > n->command = REPACK_COMMAND_REPACK; > - n->relation = (VacuumRelation *) $3; > - n->indexname = $6; > + n->relation = makeVacuumRelation($3, InvalidOid, $4); > + n->indexname = $7; > n->usingindex = true; > n->params = $2; > $$ = (Node *) n; > } > - | REPACK opt_utility_option_list vacuum_relation opt_usingindex > + | REPACK opt_utility_option_list qualified_name opt_name_list > opt_usingindex > { > RepackStmt *n = makeNode(RepackStmt); > > n->command = REPACK_COMMAND_REPACK; > - n->relation = (VacuumRelation *) $3; > + n->relation = makeVacuumRelation($3, InvalidOid, $4); > n->indexname = NULL; > - n->usingindex = $4; > + n->usingindex = $5; > n->params = $2; > $$ = (Node *) n; > }
At the moment, I can't think of other reason for using the 'vacuum_relation' rule than the effort to replace both CLUSTER and VACUUM FULL. Unfortunately it appears that the difference in the command arguments was missed. What you propose LGTM, thanks. -- Antonin Houska Web: https://www.cybertec-postgresql.com
