PostgreSQLの実行計画で利用する統計情報を固定化して実行計画を制御するツール
pg_dbms_stats13 から、pg_dbms_stats は Github に移行しました。 これ以降のバージョンに関する情報は Github を参照してください。 pg_dbms_stats12 以前に関する情報は OSDN を参照してください。
pg_dbms_stats : https://github.com/ossc-db/pg_dbms_stats
Fixed a bug that locked statistics won't be effective when accessing tables without select privilege via views. On the current implement, when planner requested the statistics for a column, pg_dbms_stats takes it from the dummy statistics tables via views which gives stats only of columns that the current user can SELECT.
Under that way it works, pg_dbms_stats cannot read the dummy statistics of objects invisible from the current user so accessing such objects via views will done using system statistics, even if their statistics are locked.
In order to resolve the problem, privileges for the dummy stats tables and the user under which pg_dbms_stats accesses them are changed.
RPM package for 9.4 is an interim release for beta 3.
Release 2 RPM files are based on older minor versions of PostgreSQL in order to avoid load failure on those versions. You can see the details in the log of this commit.
権限をもたないテーブルにアクセス可能なビューを通してアクセスした際に、そのテーブルの統計情報をロックしていてもシステムの統計情報が利用される問題を修正しています。
現在の実装ではプランナがカラムの統計情報を要求してきた際にpg_dbms_stats は現在のユーザがSELECT権限を持っているカラムについてのみ値を返すビューを通して統計情報を取得しているため、自身がSELECT 権限を持たないテーブルにビューを通してアクセスした場合は統計情報ロックが働きません。その解決のためダミー統計情報テーブルの権限とそこへのアクセスの仕方を変更しています。
なお、9.4用のRPMパッケージは beta 3 に対応した仮リリースです。
リリース2のRPMファイルはPostgreSQLの古いマイナーバージョンでのロードエラーを防ぐためそれらのバージョンのPostgreSQLに対してビルドされています。詳細はこのコミット のログを見てください。