mirror of
https://github.com/EnterpriseDB/repmgr.git
synced 2026-03-26 16:46:28 +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
|
bool
|
||||||
connection_has_pg_settings(PGconn *conn)
|
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(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);
|
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);
|
bool connection_has_pg_settings(PGconn *conn);
|
||||||
void close_connection(PGconn **conn);
|
void close_connection(PGconn **conn);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user