!1772 修复在部分场景下,非sysadmin用户执行gs_dump失败的问题

Merge pull request !1772 from pengjiong/drop_ext
This commit is contained in:
opengauss-bot 2022-05-28 11:52:08 +00:00 committed by Gitee
commit 72f4d68de6
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
1 changed files with 11 additions and 10 deletions

View File

@ -4454,16 +4454,7 @@ void getSubscriptions(Archive *fout)
}
if (!isExecUserSuperRole(fout)) {
res = ExecuteSqlQuery(fout,
"SELECT count(*) FROM pg_subscription "
"WHERE subdbid = (SELECT oid FROM pg_catalog.pg_database"
" WHERE datname = current_database())",
PGRES_TUPLES_OK);
uint64 n = (res != NULL) ? strtoul(PQgetvalue(res, 0, 0), NULL, 10) : 0;
if (n > 0) {
write_msg(NULL, "WARNING: subscriptions not dumped because current user is not a superuser\n");
}
PQclear(res);
write_msg(NULL, "WARNING: subscriptions not dumped because current user is not a superuser\n");
return;
}
@ -10795,6 +10786,11 @@ static void dumpDirectory(Archive* fout)
char* dirpath = NULL;
char* diracl = NULL;
if (!isExecUserSuperRole(fout)) {
write_msg(NULL, "WARNING: directory not dumped because current user is not a superuser\n");
return;
}
/* Make sure we are in proper schema */
selectSourceSchema(fout, "pg_catalog");
@ -21404,6 +21400,11 @@ static void dumpSynonym(Archive* fout)
PQExpBuffer q;
PQExpBuffer delq;
if (!isExecUserSuperRole(fout)) {
write_msg(NULL, "WARNING: synonym not dumped because current user is not a superuser\n");
return;
}
selectSourceSchema(fout, "pg_catalog");
query = createPQExpBuffer();
printfPQExpBuffer(query,