test_custom_stats: Fail if loading module outside shared_preload_libraries

Previously, test_custom_var_stats and test_custom_fixed_stats silently
skipped pgstat_register_kind() when not loaded via
shared_preload_libraries, behavior inherited from injection_points.
This left the SQL functions callable without the kind registered,
leading to various issues on the backend side.

This code is not designed to work without the pgstats kinds registered.
pgstat_register_kind() gets now called when these libraries are loaded,
with or without shared_preload_libraries, letting the registration fail
if loading the modules at a later step than startup.  test_custom_rmgrs
does the same thing.

Author: Bertrand Drouvot <bertranddrouvot.pg@gmail.com>
Reviewed-by: Ewan Young <kdbase.hack@gmail.com>
Discussion: https://postgr.es/m/akS/ldidWeqG1FWk@bdtpg
Backpatch-through: 19
This commit is contained in:
Michael Paquier 2026-07-02 15:52:50 +09:00
parent 5bbc9b3000
commit 7838efe9a2
2 changed files with 0 additions and 8 deletions

View file

@ -72,10 +72,6 @@ static const PgStat_KindInfo custom_stats = {
void
_PG_init(void)
{
/* Must be loaded via shared_preload_libraries */
if (!process_shared_preload_libraries_in_progress)
return;
/* Register custom statistics kind */
pgstat_register_kind(PGSTAT_KIND_TEST_CUSTOM_FIXED_STATS, &custom_stats);
}

View file

@ -129,10 +129,6 @@ static const PgStat_KindInfo custom_stats = {
void
_PG_init(void)
{
/* Must be loaded via shared_preload_libraries */
if (!process_shared_preload_libraries_in_progress)
return;
/* Register custom statistics kind */
pgstat_register_kind(PGSTAT_KIND_TEST_CUSTOM_VAR_STATS, &custom_stats);
}