ページの先頭行へ戻る
Enterprise Postgres 17 リリース情報

2.3.53 pg_stats_extとpg_stats_ext_exprsエントリの可視性をテーブル所有者に制限

非互換

Fujitsu Enterprise Postgres 16では、pg_stats_extとpg_stats_ext_exprsエントリの可視性をテーブル所有者に制限しました。

[例]

準備(スーパーユーザで実施する):

CREATE USER regress_stats_user1;
RESET SESSION AUTHORIZATION;
CREATE TABLE stats_ext_tbl (id INT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY, col TEXT);
INSERT INTO stats_ext_tbl (col) VALUES ('secret'), ('secret'), ('very secret');
CREATE STATISTICS s_col ON id, col FROM stats_ext_tbl;
CREATE STATISTICS s_expr ON mod(id, 2), lower(col) FROM stats_ext_tbl;
ANALYZE stats_ext_tbl;
Fujitsu Enterprise Postgres 15以前の場合

テーブル所有者でなくても、pg_stats_extとpg_stats_ext_exprsからテーブルの情報を取得できます。

SET SESSION AUTHORIZATION regress_stats_user1;
SELECT statistics_name, most_common_vals FROM pg_stats_ext x
    WHERE tablename = 'stats_ext_tbl' ORDER BY ROW(x.*);
 statistics_name |             most_common_vals
-----------------+-------------------------------------------
 s_col           | {{1,secret},{2,secret},{3,"very secret"}}
 s_expr          | {{0,secret},{1,secret},{1,"very secret"}}
(2 rows)
SELECT statistics_name, most_common_vals FROM pg_stats_ext_exprs x
    WHERE tablename = 'stats_ext_tbl' ORDER BY ROW(x.*);
 statistics_name | most_common_vals
-----------------+------------------
 s_expr          | {secret}
 s_expr          | {1}
(2 rows)
Fujitsu Enterprise Postgres 16の場合

テーブル所有者でなければ、pg_stats_extとpg_stats_ext_exprsから他のユーザのテーブルの情報を取得できません。

SET SESSION AUTHORIZATION regress_stats_user1;
SELECT statistics_name, most_common_vals FROM pg_stats_ext x
    WHERE tablename = 'stats_ext_tbl' ORDER BY ROW(x.*);
 statistics_name | most_common_vals
-----------------+------------------
(0 rows)
SELECT statistics_name, most_common_vals FROM pg_stats_ext_exprs x
    WHERE tablename = 'stats_ext_tbl' ORDER BY ROW(x.*);
 statistics_name | most_common_vals
-----------------+------------------
(0 rows)

対処方法

ありません。