Skip to content

Commit c82f4b4

Browse files
yugo-nCommitfest Bot
authored andcommitted
vacuumdb: check SELECT privilege on pg_statitis or pg_statistic_ext_data
1 parent 0f59d89 commit c82f4b4

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

src/bin/scripts/vacuumdb.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -801,6 +801,30 @@ retrieve_objects(PGconn *conn, vacuumingOptions *vacopts,
801801
SimpleStringList *found_objs = palloc0(sizeof(SimpleStringList));
802802
bool objects_listed = false;
803803

804+
if (vacopts->missing_stats_only)
805+
{
806+
PQExpBufferData aclcheck;
807+
808+
initPQExpBuffer(&aclcheck);
809+
appendPQExpBufferStr(&aclcheck,
810+
"SELECT has_table_privilege('pg_catalog.pg_statistic', 'select'), "
811+
"has_table_privilege('pg_catalog.pg_statistic_ext_data', 'select')");
812+
res = executeQuery(conn, aclcheck.data, echo);
813+
termPQExpBuffer(&aclcheck);
814+
if (strcmp(PQgetvalue(res, 0, 0), "t") != 0)
815+
{
816+
PQfinish(conn);
817+
pg_fatal("--missing-stats-only requires SELECT privileges on pg_statistic");
818+
}
819+
else if (strcmp(PQgetvalue(res, 0, 1), "t") != 0)
820+
{
821+
PQfinish(conn);
822+
pg_fatal("--missing-stats-only requires SELECT privileges on pg_statistic_ext_data");
823+
}
824+
825+
termPQExpBuffer(&aclcheck);
826+
}
827+
804828
initPQExpBuffer(&catalog_query);
805829
for (cell = objects ? objects->head : NULL; cell; cell = cell->next)
806830
{

0 commit comments

Comments
 (0)