diff --git a/collector.c b/collector.c index 237061f..2fa80c3 100644 --- a/collector.c +++ b/collector.c @@ -220,7 +220,7 @@ send_history(History *observations, shm_mq_handle *mqh) else count = observations->index; - mq_result = shm_mq_send(mqh, sizeof(count), &count, false); + mq_result = shm_mq_send_compat(mqh, sizeof(count), &count, false, true); if (mq_result == SHM_MQ_DETACHED) { ereport(WARNING, @@ -230,10 +230,11 @@ send_history(History *observations, shm_mq_handle *mqh) } for (i = 0; i < count; i++) { - mq_result = shm_mq_send(mqh, + mq_result = shm_mq_send_compat(mqh, sizeof(HistoryItem), &observations->items[i], - false); + false, + true); if (mq_result == SHM_MQ_DETACHED) { ereport(WARNING, @@ -255,7 +256,7 @@ send_profile(HTAB *profile_hash, shm_mq_handle *mqh) Size count = hash_get_num_entries(profile_hash); shm_mq_result mq_result; - mq_result = shm_mq_send(mqh, sizeof(count), &count, false); + mq_result = shm_mq_send_compat(mqh, sizeof(count), &count, false, true); if (mq_result == SHM_MQ_DETACHED) { ereport(WARNING, @@ -266,7 +267,8 @@ send_profile(HTAB *profile_hash, shm_mq_handle *mqh) hash_seq_init(&scan_status, profile_hash); while ((item = (ProfileItem *) hash_seq_search(&scan_status)) != NULL) { - mq_result = shm_mq_send(mqh, sizeof(ProfileItem), item, false); + mq_result = shm_mq_send_compat(mqh, sizeof(ProfileItem), item, false, + true); if (mq_result == SHM_MQ_DETACHED) { hash_seq_term(&scan_status); diff --git a/compat.c b/compat.c index 249a53a..7004d7e 100644 --- a/compat.c +++ b/compat.c @@ -13,6 +13,17 @@ shm_mq_detach_compat(shm_mq_handle *mqh, shm_mq *mq) #endif } +inline shm_mq_result +shm_mq_send_compat(shm_mq_handle *mqh, Size nbytes, const void *data, + bool nowait, bool force_flush) +{ +#if PG_VERSION_NUM >= 150000 + return shm_mq_send(mqh, nbytes, data, nowait, force_flush); +#else + return shm_mq_send(mqh, nbytes, data, nowait); +#endif +} + inline TupleDesc CreateTemplateTupleDescCompat(int nattrs, bool hasoid) { diff --git a/pg_wait_sampling.h b/pg_wait_sampling.h index 1001f6f..4c0ddac 100644 --- a/pg_wait_sampling.h +++ b/pg_wait_sampling.h @@ -84,6 +84,9 @@ extern void alloc_history(History *, int); extern void collector_main(Datum main_arg); extern void shm_mq_detach_compat(shm_mq_handle *mqh, shm_mq *mq); +extern shm_mq_result shm_mq_send_compat(shm_mq_handle *mqh, Size nbytes, + const void *data, bool nowait, + bool force_flush); extern TupleDesc CreateTemplateTupleDescCompat(int nattrs, bool hasoid); #endif