Re: pgsql: reindexdb: Add the index-level REINDEX with multiple jobs

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

From: Álvaro Herrera <alvherre@alvh.no-ip.org>
To: Alexander Korotkov <aekorotkov@gmail.com>
Cc: Alexander Korotkov <akorotkov@postgresql.org>, pgsql-hackers@lists.postgresql.org, Maxim Orlov <orlovmg@gmail.com>, Svetlana Derevyanko <s.derevyanko@postgrespro.ru>
Date: 2025-03-10T11:12:33Z
Lists: pgsql-hackers
On 2025-Mar-09, Alexander Korotkov wrote:

> After second thought it's not so hard to fix.  The attached patch does
> it by putting REINDEX commands related to the same table into a single
> SQL statement.  Possibly, that could be better than revert given we
> need to handle compatibility.  What do you think?

Oh, this is an egg of Columbus solution, I like it.  It seems to work as
intended on a quick test.  Please add some commentary to run_reindex_command.

Maybe another, possibly better way to do this would be to use libpq
pipeline mode, sending all the commands for a table in one pipeline
instead of a single command.  The advantage of this would be that
server-side log entries for each command would be separate, and they
wouldn't appear clumped together in pg_stat_activity and so on.
However, this would require more invasive changes, so it might be better
to leave that for a future project -- it's certainly a harder sell for
such a change to be backpatched.  So I'm +1 on your current patch for 17
and master.

-- 
Álvaro Herrera         PostgreSQL Developer  —  https://www.EnterpriseDB.com/
"Puedes vivir sólo una vez, pero si lo haces bien, una vez es suficiente"



Commits

  1. reindexdb: Fix the index-level REINDEX with multiple jobs

  2. reindexdb: Fix warning about uninitialized indices_tables_cell

  3. reindexdb: Add the index-level REINDEX with multiple jobs

  4. Rework logic and simplify syntax of REINDEX DATABASE/SYSTEM