Add function repmgr_get_primary_conninfo()

This commit is contained in:
Ian Barwick
2015-01-14 16:23:08 +09:00
parent 4b7fb70de3
commit fc6f5ddaa7
3 changed files with 39 additions and 0 deletions

View File

@@ -9,6 +9,7 @@
#include "fmgr.h"
#include "access/xlog.h"
#include "miscadmin.h"
#include "replication/walreceiver.h"
#include "storage/ipc.h"
#include "storage/lwlock.h"
#include "storage/procarray.h"
@@ -57,6 +58,8 @@ Datum repmgr_get_last_updated(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(repmgr_update_last_updated);
PG_FUNCTION_INFO_V1(repmgr_get_last_updated);
Datum repmgr_get_primary_conninfo(PG_FUNCTION_ARGS);
PG_FUNCTION_INFO_V1(repmgr_get_primary_conninfo);
/*
* Module load callback
@@ -230,3 +233,20 @@ repmgr_get_last_updated(PG_FUNCTION_ARGS)
PG_RETURN_TIMESTAMPTZ(last_updated);
}
/*
* get the `primary_conninfo` string used by walreceiver,
* which is the value parsed from recovery.conf at startup
*
* XXX is there a better way of doing this?
*/
Datum
repmgr_get_primary_conninfo(PG_FUNCTION_ARGS)
{
/* use volatile pointer to prevent code rearrangement */
volatile WalRcvData *walrcv = WalRcv;
PG_RETURN_TEXT_P(cstring_to_text((const char *)walrcv->conninfo));
}

View File

@@ -21,3 +21,7 @@ LANGUAGE C STRICT;
CREATE FUNCTION repmgr_get_last_updated() RETURNS TIMESTAMP WITH TIME ZONE
AS 'MODULE_PATHNAME', 'repmgr_get_last_updated'
LANGUAGE C STRICT;
CREATE FUNCTION repmgr_get_primary_conninfo() RETURNS TEXT
AS 'MODULE_PATHNAME', 'repmgr_get_primary_conninfo'
LANGUAGE C STRICT;