On Sun, Apr 05, 2026 at 11:27:44PM +0000, Heikki Linnakangas wrote:
> Convert all remaining subsystems to use the new shmem allocation API
> 
> This removes all remaining uses of ShmemInitStruct() and
> ShmemInitHash() from built-in code.
>
> src/backend/utils/misc/injection_point.c           |  57 ++++---

drongo, that compiles without USE_INJECTION_POINTS, is complaining
about this bit around line 240:
const ShmemCallbacks InjectionPointShmemCallbacks = {
#ifdef USE_INJECTION_POINTS
    .request_fn = InjectionPointShmemRequest,
    .init_fn = InjectionPointShmemInit,
#endif
};

Link:
https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=drongo&dt=2026-04-06%2004%3A09%3A20
And the error:
../pgsql/src/backend/utils/misc/injection_point.c(240): error C2059: syntax 
error: '}'

Why not putting the whole InjectionPointShmemCallbacks inside a
USE_INJECTION_POINTS block?  We should not care about shmem
allocations when --enable-injection-points is not used.

subsystemlist.h expects the callbacks to always be defined, so your
intention is to have no ifdefs there.  Still, it seems a bit pointless
to me to define callbacks we are not going to use depending on the
build options evoked?  Attached is one idea, which I doubt you'll
like.  :)
--
Michael
diff --git a/src/include/storage/subsystemlist.h 
b/src/include/storage/subsystemlist.h
index 5e092552c725..9ad619080be2 100644
--- a/src/include/storage/subsystemlist.h
+++ b/src/include/storage/subsystemlist.h
@@ -79,7 +79,9 @@ PG_SHMEM_SUBSYSTEM(SyncScanShmemCallbacks)
 PG_SHMEM_SUBSYSTEM(AsyncShmemCallbacks)
 PG_SHMEM_SUBSYSTEM(StatsShmemCallbacks)
 PG_SHMEM_SUBSYSTEM(WaitEventCustomShmemCallbacks)
+#ifdef USE_INJECTION_POINTS
 PG_SHMEM_SUBSYSTEM(InjectionPointShmemCallbacks)
+#endif
 PG_SHMEM_SUBSYSTEM(WaitLSNShmemCallbacks)
 PG_SHMEM_SUBSYSTEM(LogicalDecodingCtlShmemCallbacks)
 PG_SHMEM_SUBSYSTEM(DataChecksumsShmemCallbacks)
diff --git a/src/backend/utils/misc/injection_point.c 
b/src/backend/utils/misc/injection_point.c
index a7c99e097ea4..aa455c62bcc0 100644
--- a/src/backend/utils/misc/injection_point.c
+++ b/src/backend/utils/misc/injection_point.c
@@ -230,19 +230,15 @@ injection_point_cache_get(const char *name)
 
        return NULL;
 }
-#endif                                                 /* USE_INJECTION_POINTS 
*/
 
 const ShmemCallbacks InjectionPointShmemCallbacks = {
-#ifdef USE_INJECTION_POINTS
        .request_fn = InjectionPointShmemRequest,
        .init_fn = InjectionPointShmemInit,
-#endif
 };
 
 /*
  * Reserve space for the dynamic shared hash table
  */
-#ifdef USE_INJECTION_POINTS
 static void
 InjectionPointShmemRequest(void *arg)
 {
@@ -259,7 +255,7 @@ InjectionPointShmemInit(void *arg)
        for (int i = 0; i < MAX_INJECTION_POINTS; i++)
                
pg_atomic_init_u64(&ActiveInjectionPoints->entries[i].generation, 0);
 }
-#endif
+#endif                                                 /* USE_INJECTION_POINTS 
*/
 
 /*
  * Attach a new injection point.

Attachment: signature.asc
Description: PGP signature

Reply via email to