> On Sep 23, 2026, at 06:05, Devrim Gündüz <[email protected]> wrote:
>
> Hi,
>
> While poking at REPACK on v19 beta4 for my Chicago meetup talk, I
> noticed that the error message emitted when trying to REPACK a shared
> catalog with USING INDEX is misleading, since it makes it sound like
> REPACK itself is disallowed on shared catalogs, when only the USING
> INDEX form is:
>
> postgres=# REPACK pg_authid USING INDEX pg_authid_oid_index;
> ERROR: cannot execute REPACK on a shared catalog
>
> postgres=# REPACK pg_authid;
> REPACK
>
> The restriction is intentional in repack.c, but the errmsg() text
> doesn't convey that the restriction is specific to the USING INDEX form,
> so for a while I thought I found a bug.
>
> Attached patch tweaks the message to name USING INDEX specifically,
> and also includes the related comment in repack.c to an errdetail() so
> it's visible to the user, not just to someone reading the source:
>
> ERROR: cannot execute REPACK USING INDEX on a shared catalog
> DETAIL: Marking an index as clustered on a shared catalog would
> only take effect in the current database.
>
> Regards,
> --
> Devrim Gündüz
> Open Source Solution Architect, PostgreSQL Major Contributor
> BlueSky: @devrim.gunduz.org , @gunduz.org
> <repack_shared_catalog_errmsg.patch>
+1. The commend and the code have clearly shown that repacking on shared
catalogs are allowed, but USING INDEX is not allowed.
But I have concern with the change. cluster_rel() is used by both REPACK and
CLUSTER commands, but CLUSTER command, the syntax is CLUSTER … USING index-name.
Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/