zubkov-andrei / pg_profile

Postgres historic workload reports
Other
228 stars 33 forks source link

ошибка на 9.6 #26

Closed glushakov closed 2 years ago

glushakov commented 2 years ago

Добрый день На 9.6 возникает ошибка: permission denied for tablespace pg_global + while executing query on dblink connection named ""server_connection"" + SQL statement ""INSERT INTO last_stat_tablespaces( + server_id, + sample_id, + tablespaceid, + tablespacename, + tablespacepath, + size, + size_delta + ) + SELECT + sserver_id, + s_id, + dbl.tablespaceid, + dbl.tablespacename, + dbl.tablespacepath, + dbl.size AS size, + dbl.size_delta AS size_delta + FROM dblink('server_connection', server_query) + AS dbl ( + tablespaceid oid, + tablespacename name, + tablespacepath text, + size bigint, + size_delta bigint + )"" + PL/pgSQL function take_sample(integer,boolean) line 594 at SQL statement + PL/pgSQL function take_sample_subset(integer,integer) line 27 at assignment+ SQL function ""take_sample"" statement 1 + Полагаю из за ограничений в pg_catalog.pg_tablespace_size https://postgrespro.com/list/thread-id/1703015 Руками проблема так же воспроизводится: psql (9.6.19) Type "help" for help. postgres=# set role profile_user ; SET postgres=> select pg_catalog.pg_tablespace_size(1664); ERROR: permission denied for tablespace pg_global

Пока не нашёл как обойти это, кроме выдачи суперюзера :disappointed:

zubkov-andrei commented 2 years ago

Добрый день!

У меня получилось обойти эту проблему выдачей гранта create на табличное пространство. Но тут есть ньюанс. Точнее два: во-первых, так придется поступить с каждым ТП, а во-вторых, в версии 9.6 нет возможности получить непривилигированным пользователем текст выражения из _pg_statstatements, так что применение pg_profile получается довольно ограниченным.

glushakov commented 2 years ago

Действительно, даже queryid не показывает :( Спасибо.