Em dom., 13 de abr. de 2025 às 21:36, Michael Paquier <michael@paquier.xyz> escreveu:
Hi all,
One thing that's been lacking in injection points is the possibility to look at the state of the injection points in shared memory through some SQL. This was on my tablets for some time, but I have not taken the time to do the actual legwork.
The attached patch adds a SRF that returns a set of tuples made of the name, library and function for all the injection points attached to the system. This implementation relies on a new function added in injection_point.c, called InjectionPointList(), that retrieves a palloc()'d array of the injection points, hiding from the callers the internals of what this stuff does with the shmem array lookup.
This is useful for monitoring or in tests, to make sure for example that nothing is left around at the end of a script. I have a different proposal planned for this area of the code, where this function would be good to have, but I am sending an independent patch as this stuff is useful on its own.
The patch includes a couple of tests and some documentation.
I think that it would be more productive to use the "int idx", to store *num_points,
avoiding counting inside the loop, no?
Function InjectionPointList:
+ uint32 max_inuse; + int idx;
+ for (idx = 0; idx < max_inuse; idx++)- (*num_points)++;
+ *num_points = idx; + return result;
The function *InjectionPointList* counts "int", but the function *pg_get_injection_points* expects uint32?