Re: PATCH: Add REINDEX tag to event triggers

From: jian he <jian(dot)universality(at)gmail(dot)com>
To: Garrett Thornburg <film42(at)gmail(dot)com>
Cc: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: PATCH: Add REINDEX tag to event triggers
Date: 2023-07-25 08:34:47
Message-ID: CACJufxErztdYqGnN5WPfG6PX+WL3hX9DaP2_9Z4sp--cEmWy-w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Fri, Jul 21, 2023 at 12:47 PM Garrett Thornburg <film42(at)gmail(dot)com> wrote:
>
> Added my v1 patch to add REINDEX to event triggers.
>
> I originally built this against pg15 but rebased to master for the patch to hopefully make it easier for maintainers to merge. The rebase was automatic so it should be easy to include into any recent version. I'd love for this to land in pg16 if possible.
>
> I added regression tests and they are passing. I also formatted the code using the project tools. Docs are included too.
>
> A few notes:
> 1. I tried to not touch the function parameters too much and opted to create a convenience function that makes it easy to attach index or table OIDs to the current event trigger list.
> 2. I made sure both concurrent and regular reindex of index, table, database work as expected.
> 3. The ddl end command will make available all indexes that were modified by the reindex command. This is a large list when you run "reindex database" but works really well. I debated returning records of the table or DB that were reindexed but that doesn't really make sense. Returning each index fits my use case of building an audit record around the index lifecycle (hence the motivation for the patch).
>
> Thanks for your time,
>
> Garrett Thornburg

main/postgres/src/backend/tcop/utility.c
535: /*
536: * standard_ProcessUtility itself deals only with utility commands for
537: * which we do not provide event trigger support. Commands that do have
538: * such support are passed down to ProcessUtilitySlow, which contains the
539: * necessary infrastructure for such triggers.
540: *
541: * This division is not just for performance: it's critical that the
542: * event trigger code not be invoked when doing START TRANSACTION for
543: * example, because we might need to refresh the event trigger cache,
544: * which requires being in a valid transaction.
545: */

so T_ReindexStmt should only be in ProcessUtilitySlow, if you want
to create an event trigger on reindex?

regression tests work fine. I even play with partitions.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Amit Kapila 2023-07-25 09:01:00 Logical walsenders don't process XLOG_CHECKPOINT_SHUTDOWN
Previous Message Anton A. Melnikov 2023-07-25 08:29:49 Re: [BUG] Crash on pgbench initialization.