]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Fix shared memory size of template code for custom fixed-sized pgstats
authorMichael Paquier <michael@paquier.xyz>
Mon, 6 Apr 2026 23:24:36 +0000 (08:24 +0900)
committerMichael Paquier <michael@paquier.xyz>
Mon, 6 Apr 2026 23:24:36 +0000 (08:24 +0900)
On HEAD, the template code for custom fixed-sized pgstats is in the test
module test_custom_stats.  On REL_18_STABLE, this code lives in the test
module injection_points.

Both cases were underestimating the size of the shared memory area
required for the storage of the stats data, using a single entry rather
than the whole area.  This underestimation meant that there was no
memory allocated for the LWLock required for the stats, and even more.
This problem would be also misleading for extension developers looking
at this code.

This issue has been noticed while digging into a different bug reported
by Heikki Linnakangas, showing that the underestimation was causing
failures in the TAP tests of the test modules for 32-bit builds.  The
other issue reported, related to the memory allocation of custom
fixed-sized pgstats, will be fixed in a follow-up commit.

Discussion: https://postgr.es/m/adMk_lWbnz3HDOA8@paquier.xyz
Backpatch-through: 18

src/test/modules/injection_points/injection_stats_fixed.c

index 74c35fcbfa711b546341102049fbbec1937957a8..666b305261feb3d765072a4e7c76874d41dc05a9 100644 (file)
@@ -52,7 +52,7 @@ static const PgStat_KindInfo injection_stats_fixed = {
        .fixed_amount = true,
        .write_to_file = true,
 
-       .shared_size = sizeof(PgStat_StatInjFixedEntry),
+       .shared_size = sizeof(PgStatShared_InjectionPointFixed),
        .shared_data_off = offsetof(PgStatShared_InjectionPointFixed, stats),
        .shared_data_len = sizeof(((PgStatShared_InjectionPointFixed *) 0)->stats),