standby promote: fall back to "pg_ctl promote" if necessary

From PostgreSQL 12, the SQL-level function "pg_promote()" can be used
to promote a PostgreSQL instance, however usage is restricted to
superusers and users to whom explicit execution permission for this
function has been granted.

Therefore, if execution permission is not available, fall back to
"pg_ctl promote".
This commit is contained in:
Ian Barwick
2020-03-06 12:50:23 +09:00
parent 7c96afc6fb
commit fb5ce720f3
6 changed files with 111 additions and 42 deletions

View File

@@ -441,6 +441,7 @@ uint64 system_identifier(PGconn *conn);
TimeLineHistoryEntry *get_timeline_history(PGconn *repl_conn, TimeLineID tli);
/* user/role information functions */
bool can_execute_pg_promote(PGconn *conn);
bool connection_has_pg_settings(PGconn *conn);
bool is_replication_role(PGconn *conn, char *rolname);
bool is_superuser_connection(PGconn *conn, t_connection_user *userinfo);