mirror of
https://github.com/postgres/postgres.git
synced 2025-11-06 07:49:08 +03:00
Add pg_checkpointer predefined role for CHECKPOINT command.
Any user with the privileges of pg_checkpointer can issue a CHECKPOINT command. Reviewed-by: Stephen Frost Discussion: https://postgr.es/m/67a1d667e8ec228b5e07f232184c80348c5d93f4.camel%40j-davis.com
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
#include "catalog/catalog.h"
|
||||
#include "catalog/index.h"
|
||||
#include "catalog/namespace.h"
|
||||
#include "catalog/pg_authid.h"
|
||||
#include "catalog/pg_inherits.h"
|
||||
#include "catalog/toasting.h"
|
||||
#include "commands/alter.h"
|
||||
@@ -939,10 +940,10 @@ standard_ProcessUtility(PlannedStmt *pstmt,
|
||||
break;
|
||||
|
||||
case T_CheckPointStmt:
|
||||
if (!superuser())
|
||||
if (!has_privs_of_role(GetUserId(), ROLE_PG_CHECKPOINTER))
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
|
||||
errmsg("must be superuser to do CHECKPOINT")));
|
||||
errmsg("must be superuser or have privileges of pg_checkpointer to do CHECKPOINT")));
|
||||
|
||||
RequestCheckpoint(CHECKPOINT_IMMEDIATE | CHECKPOINT_WAIT |
|
||||
(RecoveryInProgress() ? 0 : CHECKPOINT_FORCE));
|
||||
|
||||
Reference in New Issue
Block a user