今回は、PostgreSQL の開発者向けメーリングリストである pgsql-hackers で、2026年4月に行われた議論の中から、筆者が注目した話題を紹介します。網羅的なまとめではなく、筆者が追跡した範囲での内容となります。
PostgreSQL 19の主な話題
4月には PostgreSQL 19 のリリースノート案が公開されました。
主な新機能としては、テーブルを再編成して空き領域を回収する REPACK コマンド、ストリーミングレプリケーション環境で、プライマリ上の特定の変更がスタンバイに適用されるまで待機できる WAIT FOR 文、SQL標準で定義されたプロパティグラフ検索機能である SQL Property Graph Queries (SQL/PGQ) のサポートなどがあります。
運用面では、データチェックサムを再起動なしで有効化できるようになったほか、自動VACUUMで並列ワーカーを利用できるようになりました。また、自動 VACUUM の処理対象テーブルに優先順位を設定できるようになるなど、運用性の改善も進んでいます。
論理レプリケーションでは、シーケンス値のレプリケーションや、wal_level が replica の場合でも必要に応じて論理レプリケーションを自動的に有効化する機能が追加されました。
また、実行計画の安定性向上を目的とした拡張モジュールである pg_plan_advice や、プランアドバイスの自動適用を行う pg_stash_advice も PostgreSQL 19 に含まれています。
性能改善としては、外部キー参照処理の高速化も注目されます。従来は参照先テーブルの確認のために SQL を実行していましたが、適用可能なケースでは直接システムカタログを参照するようになり、オーバーヘッドが削減されています。
また、私が開発した機能として、拡張統計情報で仮想生成列を利用できるようになりました。
PostgreSQL 20以降に向けた議論
PostgreSQL 20以降に向けた話題として、大きなものの一つが論理レプリケーションにおけるDDLサポートです。PostgreSQL の論理レプリケーションでは現在DDLは自動的には伝播されないため、そのサポートは以前から要望されている機能の一つです。
これまでの提案では、DDLの内容をJSON形式で表現してWALへ記録し、レプリケーションする方式が検討されていました。しかし、JSONベースの実装では保守コストが高くなることが課題となっていました。これに対し、JSONではなくDDLを表現する専用の抽象データ型を導入し、それをWALへ格納する新しい方式が議論されました。また、現在提案されている DDL の内容をWALに記録するのに、イベントトリガを用いる方法の是非についての議論もありました。
また、現在私が提案している機能として、テーブルロックを取得できずにスキップされた VACUUM や ANALYZE を統計情報に記録する機能があります。Autovacuum が起動したにもかかわらず実際には VACUUM や ANALYZE が実行されていない状況は、現在の統計情報だけでは把握が困難です。この機能では、pg_stat_all_tables にスキップされた VACUUM/ANALYZE の回数や時刻を追加することで、そうした状況を利用者が把握しやすくすることを目的としています。
プランナ関連では、SLOPE と呼ばれる興味深い提案もありました。これは、単調増加または単調減少する関数を含むクエリに対する最適化手法です。例えば、timestamp 型のカラム ts にインデックスが作成されている場合、date_trunc(‘month’, ts) の順序も ts と同じ順序関係を保つため、、既存インデックスを活用しながらソート処理を省略できるケースが生まれます。これが実現すれば一部のクエリで性能向上が期待できそうです。