diff --git a/src/gausskernel/optimizer/commands/tablecmds.cpp b/src/gausskernel/optimizer/commands/tablecmds.cpp index 2e6f4eeaf..3f4606f6f 100755 --- a/src/gausskernel/optimizer/commands/tablecmds.cpp +++ b/src/gausskernel/optimizer/commands/tablecmds.cpp @@ -32407,6 +32407,15 @@ void ExecutePurge(PurgeStmt *stmt) break; } case PURGE_RECYCLEBIN: { + Oid userId = GetUserId(); + /* + * Superusers bypass all permission checking. + * Database Security: Support seperation of privilege. + */ + if (!(superuser_arg(userId) || systemDBA_arg(userId))) { + ereport(ERROR, + (errmsg("Only superuser can do purge recyclebin operation."))); + } RbCltPurgeRecyclebin(); break; }