On Fri, Jul 21, 2023 at 12:47 PM Garrett Thornburg <fil...@gmail.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.