@@ -111,7 +111,15 @@ Oid get_mtm_node_status_pkey_oid(void)
111
111
112
112
bool check_mtm_compatibility (void )
113
113
{
114
- if (pg_dlsym (RTLD_DEFAULT , "MtmGetDisabledNodeMask" )) return true;
114
+ void * handler ;
115
+
116
+ handler = pg_dlopen (NULL );
117
+ if (pg_dlsym (handler , "MtmGetDisabledNodeMask" ))
118
+ {
119
+ pg_dlclose (handler );
120
+ return true;
121
+ }
122
+ pg_dlclose (handler );
115
123
elog (WARNING , "The version of multimaster extension found is not compatiable with pgpro_scheduler. Pgpro_scheduler is functional but with some issues. Consider to upgrade multimaster." );
116
124
return false;
117
125
}
@@ -179,9 +187,12 @@ set_state(PG_FUNCTION_ARGS)
179
187
nodemask_t call_MtmGetDisabledNodeMask (void )
180
188
{
181
189
void * ptr ;
190
+ void * handler ;
182
191
183
192
if (fptr_MtmGetDisabledNodeMask ) (* fptr_MtmGetDisabledNodeMask )();
184
- ptr = pg_dlsym (RTLD_DEFAULT , "MtmGetDisabledNodeMask" );
193
+ handler = pg_dlopen (NULL );
194
+ ptr = pg_dlsym (handler , "MtmGetDisabledNodeMask" );
195
+ pg_dlclose (handler );
185
196
if (ptr )
186
197
{
187
198
fptr_MtmGetDisabledNodeMask = (nodemask_t (* )(void ))ptr ;
@@ -196,9 +207,12 @@ nodemask_t call_MtmGetDisabledNodeMask(void)
196
207
MtmNodeStatus call_MtmGetCurrentStatus (void )
197
208
{
198
209
void * ptr ;
210
+ void * handler ;
199
211
200
212
if (fptr_MtmGetCurrentStatus ) (* fptr_MtmGetCurrentStatus )();
201
- ptr = pg_dlsym (RTLD_DEFAULT , "MtmGetCurrentStatus" );
213
+ handler = pg_dlopen (NULL );
214
+ ptr = pg_dlsym (handler , "MtmGetCurrentStatus" );
215
+ pg_dlclose (handler );
202
216
if (ptr )
203
217
{
204
218
fptr_MtmGetCurrentStatus = (MtmNodeStatus (* )(void ))ptr ;
@@ -215,9 +229,14 @@ MtmNodeStatus call_MtmGetCurrentStatus(void)
215
229
void call_MtmToggleDML (void )
216
230
{
217
231
void * ptr ;
232
+ void * handler ;
218
233
219
234
if (fptr_MtmToggleDML ) (* fptr_MtmToggleDML )();
220
- ptr = pg_dlsym (RTLD_DEFAULT , "MtmToggleDML" );
235
+
236
+ handler = pg_dlopen (NULL );
237
+ ptr = pg_dlsym (handler , "MtmToggleDML" );
238
+ pg_dlclose (handler );
239
+
221
240
if (ptr )
222
241
{
223
242
fptr_MtmToggleDML = (void (* )(void ))ptr ;
0 commit comments