Re: pg_utility ?

From: Aleksander Alekseev <aleksander(at)tigerdata(dot)com>
To: Pg Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Cc: Álvaro Herrera <alvherre(at)kurilemu(dot)de>, Christoph Berg <myon(at)debian(dot)org>
Subject: Re: pg_utility ?
Date: 2025-11-20 13:28:06
Message-ID: CAJ7c6TPqyruPFi4jB2voY=q_HoTSeO39MoBQiWGcsUmdqr=5JA@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi Álvaro,

> One of the things that came up during the pgconf.eu talk about REPACK,
> proposed by Christoph Berg, is that adding another utility pg_repackdb
> to run it from the command line adds more noise to an already noisy tool
> neighbourhood. He asked, how about we instead add a generic tool to run
> utility commands? So the user would be able to do things such as
>
> pg_utility vacuum -t tab1 -t tab2 # what vacuumdb does
> pg_utility analyze -t tab1 -t tab2 # what vacuumdb -Z does
> pg_utility vacuum analyze -t tab1 -t tab2 # what vacuumdb -z does
> pg_utility cluster -t tab1 -t tab2 # what clusterdb does
> pg_utility reindex -t tab1 -t tab2 # what reindexdb does
>
> Each such tool would retain more or less its current behavior, i.e., its
> ability to run things in parallel, to discover tables to operate on
> based on circumstances, to silently ignore objects depending on the user
> lacking specific privilege bits, and so on.
>
> This way, instead of an entire pg_repackdb tool, we would add just a new
> mode to pg_utility:
>
> pg_utility repack -t tab1 -t tab2 # what pg_repackdb would do
>
> Christoph, can you please confirm that this is approximately what you
> had in mind? Other names are of course possible.
>
> I didn't immediately love this idea, but I'm not totally opposed to it
> either, and perhaps it makes things better rather than adding yet
> another very narrowly-focused tool. Also, pg_ctl already kinda has a
> somewhat similar facet with its "pg_ctl init" mode.

I'm not necessarily opposed to the idea in general, but I'm a bit
sceptical about the particular implementation. I fail to understand
the exact value of having "pg_utility (something)" instead of
"pg_(something)". To me it seems like we either end up supporting an
all-in-one utility, which will increase code complexity, or having an
additional utility which is going to be a wrapper for the existing
ones, which arguably has little value.

I get a feeling that the actual idea might be to refactor our CLI
tools to make the overall interface more consistent. Right now we have
several pg_* tools, and also tools like vacuumdb and createdb. Perhaps
what we might do instead is renaming/splitting the later ones into
pg_analyze, pg_vacuum, etc. Which of course is going to bring a
question about backward compatibility. I believe it can be provided by
symlinks or wrappers for several major releases.

--
Best regards,
Aleksander Alekseev

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Bertrand Drouvot 2025-11-20 13:33:51 Remove useless casts to (void *)
Previous Message Robert Haas 2025-11-20 13:17:58 Re: RFC: Logging plan of the running query