Add INJECTION_POINT_CACHED() to run injection points directly from cache
Michael Paquier <michael@paquier.xyz>
Add INJECTION_POINT_CACHED() to run injection points directly from cache This new macro is able to perform a direct lookup from the local cache of injection points (refreshed each time a point is loaded or run), without touching the shared memory state of injection points at all. This works in combination with INJECTION_POINT_LOAD(), and it is better than INJECTION_POINT() in a critical section due to the fact that it would avoid all memory allocations should a concurrent detach happen since a LOAD(), as it retrieves a callback from the backend-private memory. The documentation is updated to describe in more details how to use this new macro with a load. Some tests are added to the module injection_points based on a new SQL function that acts as a wrapper of INJECTION_POINT_CACHED(). Based on a suggestion from Heikki Linnakangas. Author: Heikki Linnakangas, Michael Paquier Discussion: https://postgr.es/m/58d588d0-e63f-432f-9181-bed29313dece@iki.fi
Files
| Path | Change | +/− |
|---|---|---|
| doc/src/sgml/xfunc.sgml | modified | +10 −7 |
| src/backend/utils/misc/injection_point.c | modified | +17 −0 |
| src/include/utils/injection_point.h | modified | +3 −0 |
| src/test/modules/injection_points/expected/injection_points.out | modified | +13 −0 |
| src/test/modules/injection_points/injection_points--1.0.sql | modified | +10 −0 |
| src/test/modules/injection_points/injection_points.c | modified | +14 −0 |
| src/test/modules/injection_points/sql/injection_points.sql | modified | +2 −0 |
Documentation touched
Discussion
- Injection points: preloading and runtime arguments 21 messages · 2024-05-20 → 2024-08-06