🐘

PostgreSQLのリリースノートを調査する

2024/07/02に公開

はじめに

先日、PostgreSQL 17 Beta 2がリリースされ、恒例行事になりつつある「PostgreSQL 17のリリースノートと虎の巻でわいわい言う会」も開催されました。

この記事では自分がリリースノートをどのように調査しているかを書き留めておきたいと思います。新バージョンの調査や、バージョンアップ時の非互換性調査などに役立てば幸いです。

リンク集

  1. リリースノート(英語):https://www.postgresql.org/docs/release/
  2. リリースノート(英語、開発中):https://www.postgresql.org/docs/devel/release.html
  3. リリースノート(日本語):https://www.postgresql.jp/document/current/html/release.html
  4. 篠田虎の巻:https://github.com/nori-shinoda/documents/blob/main/README.md
  5. SRA OSS Tech Blog:https://www.sraoss.co.jp/tech-blog/pgsql/
  6. pgPedia:https://pgpedia.info/postgresql-versions/index.html
  7. Gitリポジトリ:https://git.postgresql.org/gitweb/?p=postgresql.git;a=summary
  8. Gitリポジトリ(ミラー):https://github.com/postgres/postgres

①PostgreSQL公式のリリースノートを読む

まずはPosgreSQL公式のリリースノートを読みます。何事も一次情報を当たることが大事ですね。
日本PostgreSQLユーザ会の有志が日本語ドキュメントを翻訳してくれています(いつもありがとうございます!)が、タイムラグがあるので最新版を読みたい場合は、英語のドキュメントを参照します。

以下のページから各メジャーバージョン、マイナーバージョンのリリースノートを見つけることができます。
https://www.postgresql.org/docs/release/

ここには正式リリースされたバージョンのリリースノートしかありませんが、ベータ版などの開発中のリリースノートも以下から見ることができます。
https://www.postgresql.org/docs/devel/release.html

ただ、リリースノートを読んでもさっぱりわからないこと多いです。

②篠田虎の巻を読む

篠田さん(@nori_shinoda)が毎年まとめている篠田虎の巻という、PostgreSQLの新機能についての検証文書を読みます。

リリースノートとは違い実行例が記載してあるので、どういった機能なのかがかなり理解しやすくなっています。ただし、以下の内容は含まれていないので、変更内容をすべて網羅するという用途というよりは、新機能の動作を知りたいというときに使うのがいいと思います。

  • バグ解消
  • 内部動作の変更によるパフォーマンス向上
  • レグレッション・テストの改善
  • psql コマンドのタブ入力による操作性改善
  • pgbench コマンドの改善
  • ドキュメントの改善、ソース内の Typo 修正
  • 動作に変更がないリファクタリング

参考:PostgreSQL 17 新機能検証結果 (Beta 1) 1.3. 本文書の範囲

また、篠田虎の巻はベータ版の時点でも公開されているので、ベータ版の試験をしたいときにもおすすめです。

澤田さん(@masahiko_sawada)、篠田さんを中心にPostgreSQL 15から「リリースノートと虎の巻でわいわい言う会」が開催されているので、参加するとPostgreSQLの最新機能をすべてチェックできます。おすすめです!
https://pgunconf.connpass.com/event/322756/

③SRA OSSさんの技術報告を読む

新バージョンの主要機能の説明と動作検証結果についての文書になります。主要機能の詳しい実行例があったり、篠田虎の巻ではカバーされていない性能検証の結果があるのが特徴です。
https://www.sraoss.co.jp/tech-blog/pgsql/

また、リリースノートをもとに解説を加えた文書もあります。特にマイナーバージョンアップの際の非互換性の調査などに重宝しています。

④pgPediaを読む

以下のような特徴をもつPostgreSQLドキュメントを補完することを目的としたpgPediaというページがあります。

  • 時間の経過に伴う機能の変化の詳細を含む「歴史的」視点を提供する
  • 一目でわかる例を提供する
  • 関連するコミットやメーリングリストのスレッドへの参照を含む、開発者向けのコンテキストを提供する
  • メインドキュメントでカバーされていないPostgreSQL関連のプロジェクトに関する情報を提供する
  • 第三者のブログやその他の情報ウェブサイトへのリンクを提供する

参考:About PgPediaの機械翻訳

以下のページにPostgreSQLの各バージョンごとの変更内容が随時更新されています。
https://pgpedia.info/postgresql-versions/index.html

また、特徴の1つ目に書いているように、機能についての変更履歴を見ることができます。例えば、以下のREINDEXのページのように各バージョンでの入った機能とそのコミットハッシュが記録されています。
pgPediaのスクリーンショット
https://pgpedia.info/r/reindex.html

⑤コミットメッセージを読む

リリースノートの概要を知るだけなら以上の文書だけで十分な場合もありますが、機能についての詳細や機能が入った経緯を知りたい場合は、コミットメッセージを読んだり、コミット内容を見るのがおすすめです。

コミットハッシュを特定する

篠田虎の巻やpgPediaには変更内容の当該コミットハッシュが記述されていますが、リリースノートにはコミットハッシュが記述されていないため、コミットハッシュを特定する必要があります。
そこで、リリースノートのソースコードを見てみると、以下のようにコメントとして関連するコミットのハッシュが記載されています。(他に簡単にコミットハッシュを特定する方法があれば教えてください)
https://github.com/postgres/postgres/blob/REL_17_BETA2/doc/src/sgml/release-17.sgml#L1390-L1401

コミットを検索する

特定したコミットハッシュをPostgreSQLのGitリポジトリから検索します。

個人的にはGitHubのほうが見やすいので、GitHubで検索しています。以下のような検索結果が得られるので、そこからコミットを見ることができます。

src/test/regressなどのリグレッションテストの変更内容を見ると、実際の使い方がわかるのでおすすめです。

⑥メーリングリストの議論を読む

コミットメッセージやコミット内容を見ても理解できなければ、メーリングリストの議論を読みます。先ほどのコミットメッセージの一番下に、そのコミットに関する議論を行ったメールへのリンクが貼ってあります。

Discussion: https://www.postgresql.org/message-id/CALj2ACUk700cYhx1ATRQyRw-fBM%2BaRo6auRAitKGff7XNmYfqQ%40mail.gmail.com

あとはメールの内容を読むだけです。が、議論が結構長いことが多くとても大変なのでAIに要約を頼んだりします。

「Whole Thread」をクリックするとスレッド全体を表示できるので、全体を要約したり、
メールヘッダ(Whole Tread)

「Message-ID」をクリックすると個々のメールを表示できるので、個別に要約したりしています。
メールヘッダ(Message-ID)

⑦有識者に聞く

ここまで調べても理解できなければ有識者に聞くのがいいと思います。幸いなことに、日本在住のPostgreSQLコミッタは6人くらい居るので、Xや日本PostgreSQLユーザ会のSlackで質問してみるといいと思います。たぶん、心優しく教えてくれると思います。

まとめ

私なりのPostgreSQLのリリースノートの調査方法についてまとめてみました。
公式のリリースノートを読むのも重要ですが、今回紹介した文書も活用してPostgreSQLの調査に役立てば幸いです。

Discussion