mirror of
https://github.com/EnterpriseDB/repmgr.git
synced 2026-03-22 22:56:29 +00:00
shared library: update for PostgreSQL 15
Core commit 4f2400cb3f adds shmem_request_hook, meaning the memory initialization previously carried out in _PG_init() needs to be handled in that hook.
This commit is contained in:
36
repmgr.c
36
repmgr.c
@@ -80,12 +80,17 @@ typedef struct repmgrdSharedState
|
|||||||
|
|
||||||
static repmgrdSharedState *shared_state = NULL;
|
static repmgrdSharedState *shared_state = NULL;
|
||||||
|
|
||||||
|
#if (PG_VERSION_NUM >= 150000)
|
||||||
|
static shmem_request_hook_type prev_shmem_request_hook = NULL;
|
||||||
|
#endif
|
||||||
static shmem_startup_hook_type prev_shmem_startup_hook = NULL;
|
static shmem_startup_hook_type prev_shmem_startup_hook = NULL;
|
||||||
|
|
||||||
|
|
||||||
void _PG_init(void);
|
void _PG_init(void);
|
||||||
void _PG_fini(void);
|
void _PG_fini(void);
|
||||||
|
|
||||||
|
#if (PG_VERSION_NUM >= 150000)
|
||||||
|
static void repmgr_shmem_request(void);
|
||||||
|
#endif
|
||||||
static void repmgr_shmem_startup(void);
|
static void repmgr_shmem_startup(void);
|
||||||
|
|
||||||
PG_FUNCTION_INFO_V1(repmgr_set_local_node_id);
|
PG_FUNCTION_INFO_V1(repmgr_set_local_node_id);
|
||||||
@@ -117,19 +122,27 @@ _PG_init(void)
|
|||||||
if (!process_shared_preload_libraries_in_progress)
|
if (!process_shared_preload_libraries_in_progress)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
#if (PG_VERSION_NUM < 150000)
|
||||||
RequestAddinShmemSpace(MAXALIGN(sizeof(repmgrdSharedState)));
|
RequestAddinShmemSpace(MAXALIGN(sizeof(repmgrdSharedState)));
|
||||||
|
|
||||||
#if (PG_VERSION_NUM >= 90600)
|
#if (PG_VERSION_NUM >= 90600)
|
||||||
RequestNamedLWLockTranche(TRANCHE_NAME, 1);
|
RequestNamedLWLockTranche(TRANCHE_NAME, 1);
|
||||||
#else
|
#else
|
||||||
RequestAddinLWLocks(1);
|
RequestAddinLWLocks(1);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Install hooks.
|
* Install hooks.
|
||||||
*/
|
*/
|
||||||
|
#if (PG_VERSION_NUM >= 150000)
|
||||||
|
prev_shmem_request_hook = shmem_request_hook;
|
||||||
|
shmem_request_hook = repmgr_shmem_request;
|
||||||
|
#endif
|
||||||
|
|
||||||
prev_shmem_startup_hook = shmem_startup_hook;
|
prev_shmem_startup_hook = shmem_startup_hook;
|
||||||
shmem_startup_hook = repmgr_shmem_startup;
|
shmem_startup_hook = repmgr_shmem_startup;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -140,12 +153,31 @@ void
|
|||||||
_PG_fini(void)
|
_PG_fini(void)
|
||||||
{
|
{
|
||||||
/* Uninstall hook */
|
/* Uninstall hook */
|
||||||
|
#if (PG_VERSION_NUM >= 150000)
|
||||||
|
shmem_request_hook = prev_shmem_request_hook;
|
||||||
|
#endif
|
||||||
|
|
||||||
shmem_startup_hook = prev_shmem_startup_hook;
|
shmem_startup_hook = prev_shmem_startup_hook;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (PG_VERSION_NUM >= 150000)
|
||||||
|
/*
|
||||||
|
* shmem_requst_hook: request shared memory
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
repmgr_shmem_request(void)
|
||||||
|
{
|
||||||
|
if (prev_shmem_request_hook)
|
||||||
|
prev_shmem_request_hook();
|
||||||
|
|
||||||
|
RequestAddinShmemSpace(MAXALIGN(sizeof(repmgrdSharedState)));
|
||||||
|
|
||||||
|
RequestNamedLWLockTranche(TRANCHE_NAME, 1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* shmem_startup hook: allocate or attach to shared memory,
|
* shmem_ hook: allocate or attach to shared memory,
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
repmgr_shmem_startup(void)
|
repmgr_shmem_startup(void)
|
||||||
|
|||||||
Reference in New Issue
Block a user