mirror of
https://github.com/EnterpriseDB/repmgr.git
synced 2026-03-22 22:56:29 +00:00
Add function is_replication_role()
This commit is contained in:
45
dbutils.c
45
dbutils.c
@@ -354,6 +354,51 @@ is_superuser_connection(PGconn *conn, t_connection_user *userinfo)
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
is_replication_role(PGconn *conn, char *rolname)
|
||||
{
|
||||
PQExpBufferData query;
|
||||
PGresult *res;
|
||||
bool is_replication_role = false;
|
||||
|
||||
initPQExpBuffer(&query);
|
||||
|
||||
appendPQExpBufferStr(&query,
|
||||
" SELECT rolreplication "
|
||||
" FROM pg_catalog.pg_authid "
|
||||
" WHERE rolname = ");
|
||||
|
||||
if (rolname != NULL)
|
||||
{
|
||||
appendPQExpBuffer(&query,
|
||||
"'%s'",
|
||||
rolname);
|
||||
}
|
||||
else
|
||||
{
|
||||
appendPQExpBufferStr(&query,
|
||||
"CURRENT_USER");
|
||||
}
|
||||
|
||||
res = PQexec(conn, query.data);
|
||||
|
||||
if (PQresultStatus(res) != PGRES_TUPLES_OK)
|
||||
{
|
||||
log_db_error(conn, query.data,
|
||||
_("is_replication_role(): unable to query user roles"));
|
||||
}
|
||||
else
|
||||
{
|
||||
is_replication_role = atobool(PQgetvalue(res, 0, 0));
|
||||
}
|
||||
|
||||
termPQExpBuffer(&query);
|
||||
PQclear(res);
|
||||
|
||||
return is_replication_role;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
connection_has_pg_settings(PGconn *conn)
|
||||
{
|
||||
|
||||
@@ -437,7 +437,8 @@ PGconn *establish_primary_db_connection(PGconn *conn,
|
||||
PGconn *get_primary_connection(PGconn *standby_conn, int *primary_id, char *primary_conninfo_out);
|
||||
PGconn *get_primary_connection_quiet(PGconn *standby_conn, int *primary_id, char *primary_conninfo_out);
|
||||
|
||||
bool is_superuser_connection(PGconn *conn, t_connection_user *userinfo);
|
||||
bool is_superuser_connection(PGconn *conn, t_connection_user *userinfo);\
|
||||
bool is_replication_role(PGconn *conn, char *rolname);
|
||||
bool connection_has_pg_settings(PGconn *conn);
|
||||
void close_connection(PGconn **conn);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user