Doc: add release notes.
authorBo Peng <pengbo@sraoss.co.jp>
Wed, 27 Nov 2024 05:01:54 +0000 (14:01 +0900)
committerBo Peng <pengbo@sraoss.co.jp>
Wed, 27 Nov 2024 05:02:32 +0000 (14:02 +0900)
doc.ja/src/sgml/release-4.1.sgml
doc.ja/src/sgml/release-4.2.sgml
doc.ja/src/sgml/release-4.3.sgml
doc.ja/src/sgml/release-4.4.sgml
doc.ja/src/sgml/release-4.5.sgml
doc/src/sgml/release-4.1.sgml
doc/src/sgml/release-4.2.sgml
doc/src/sgml/release-4.3.sgml
doc/src/sgml/release-4.4.sgml
doc/src/sgml/release-4.5.sgml

index 9d35a591959d86155b050566119274d24efc393d..82f482c88c76f3649b1eae2785eaef78b9ddc4f1 100644 (file)
@@ -1,6 +1,200 @@
 <!-- doc/src/sgml/release-4.1.sgml -->
 <!-- See header comment in release.sgml about typical markup -->
 
+<sect1 id="release-4-1-23">
+ <title>リリース 4.1.23</title>
+  <note>
+   <title>リリース日</title>
+   <simpara>2024-11-28</simpara>
+  </note>
+
+ <sect2>
+  <title>不具合修正</title>
+  <itemizedlist>
+
+   <listitem>
+    <!--
+    2024-11-26 [ff2cd9f]
+    -->
+    <para>
+     バックエンドがエラーメッセージを送信した場合に、SSLネゴシエーションを中止するよう修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     SSLネゴシエーションのクライアント側実装(pool_ssl_negotiate_clientserver())では、
+     中間者攻撃者がSSLネゴシエーションフェーズ中に長いエラーメッセージを送信することで、
+     <productname>Pgpool-II</productname>やクライアントを混乱させる可能性がありました。
+     このコミットでは、ネゴシエーションを直ちに拒否(FATALエラーを発行)し、
+     そのような攻撃を防ぐためにセッションを終了するよう修正しました。
+    </para>
+    <para>
+     これは、PostgreSQLのCVE-2024-10977に似ています。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-25 [19951e3]
+    -->
+    <para>
+     リロード処理がWatchdogプロセスに反映されない問題を修正しました。(Bo Peng)
+    </para>
+    <para>
+     <productname>Pgpool-II</productname>の
+     <function>reload_config()</function>関数は、
+     WatchdogププロセスにSIGHUPシグナルを送信する必要がありました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-15 [ec2af6d]
+    -->
+    <para>
+     <function>do_query</function>関数の不具合を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     htons/htonlの代わりにntohs/ntohlを使用するように<function>do_query</function>を修正しました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-13 [b2019c4]
+    -->
+    <para>
+     <filename>pool_passwd</filename>を更新してリロードした後の認証失敗問題を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     <filename>pool_hba.conf</filename>が無効になっている場合、<productname>Pgpool-II</productname>のリロードが実行されても、<productname>Pgpool-II</productname>の子プロセスは<filename>pool_passwd</filename>の更新を認識しませんでした。
+     リロード処理関数<function>check_config_reload()</function>は、<xref linkend="guc-enable-pool-hba">が有効な場合にのみ<filename>pool_passwd</filename>を再オープンする必要があると誤って判断していたことが原因でした。
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html">https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-11 [7a2e13d]
+    2024-11-12 [8a75761]
+    -->
+    <para>
+     <command>COPY</command>がハングする問題を修正しました。(<ulink url="https://github.com/pgpool/pgpool2/issues/79">#79</ulink>) (Tatsuo Ishii)
+    </para>
+    <para>
+     COPY IN状態(つまり、COPY FROM STDIN)中、フロントエンドはFlushまたはSyncメッセージを送信できます。
+     F/Bプロトコル仕様によると、これらは無視されるはずですが、<productname>Pgpool-II</productname>は無効なメッセージとして処理し、これが<command>COPY</command>のハングの原因でした。
+    </para>
+    <para>
+     リグレッションテストも追加しました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-10-26 [a769dc7]
+    -->
+    <para>
+     認証失敗による散発的なヘルスチェックの失敗を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     <xref linkend="guc-health-check-password">が空文字列の場合、ヘルスチェックプロセスは<filename>pool_passwd</filename>ファイルからパスワードを検索します。
+     問題は、このファイルのファイルディスクリプタが親pgpoolプロセスから継承されている点です。
+     pgpoolメインプロセスとヘルスチェックプロセス(複数存在する可能性あり)が同じディスクリプタを共有するため、さまざまな問題が発生していました。
+     この問題を解決するために、ヘルスチェックプロセスが開始される際にファイルを再度開き、
+     それぞれのヘルスチェックプロセスが独自のファイルディスクリプタを持つようにしました。
+    </para>
+    <para>
+     なお、pgpoolの子プロセス(フロントエンドセッションを担当)はすでにファイルディスクリプタを再度開く処理を行っており、これが今回の問題には関連していません。
+    </para>
+    <para>
+     この問題は、Emond Papegaaijによって報告され、分析されました。
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html">https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-10-23 [2acbbf4]
+    -->
+    <para>
+     <literal>ALTER ROLE</literal>のクエリキャッシュ無効化を最適化しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     コミット<ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89">6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89</ulink>は、<literal>ALTER ROLE/USER</literal>ステートメントが使用される際にクエリキャッシュを無効にしています。
+     しかし、実際にはこれが過剰です。
+     次のクエリはロールの権限に影響を与えないため、クエリキャッシュを無効にする必要はありません。
+    </para>
+    <programlisting>
+ALTER ROLE user WITH [ENCRYPTED] PASSWORD
+ALTER ROLE user WITH CONNECTION LIMIT
+    </programlisting>
+    <para>
+     したがって、これらのコマンドが使用される場合には、クエリキャッシュを無効にしないようにしました。
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html">https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [5ca0621]
+    -->
+    <para>
+     ネイティブレプリケーション/スナップショットアイソレーションモードモードのバグを修正しました。(<ulink url="https://github.com/pgpool/pgpool2/issues/69">#69</ulink>) (Tatsuo Ishii)
+    </para>
+    <para>
+     <command>INSERT</command>コマンドを受信すると、<productname>Pgpool-II</productname>はターゲットテーブルに対して自動的にテーブルLOCKコマンドを発行しますが、メインノード以外のノードにコマンドを送信し忘れていました。
+     この問題は拡張クエリモードの場合にのみ発生していました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [18bb82c]
+    -->
+    <para>
+     ネイティブレプリケーション/スナップショットアイソレーションモードモードの別のバグを修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     insert_lock()は、メインノード以外のノードに行ロックコマンド(lock_kind == 3 の場合)を送信するのを忘れていました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [1c0a4a1]
+    2024-09-10 [025373a]
+    -->
+    <para>
+     <filename>pool_memqcache.c</filename>のメモリリークを修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     この問題はコミット<ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=6fdba5c33">6fdba5c33</ulink>によって導入されました。
+    </para>
+   </listitem>
+
+  </itemizedlist>
+ </sect2>
+
+ <sect2>
+  <title>ドキュメント修正</title>
+  <itemizedlist>
+   <listitem>
+    <!--
+    2024-10-03 [bf46b3d]
+    -->
+    <para>
+     ドキュメントとサンプル設定ファイルのタイポを修正しました。(Bo Peng)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect2>
+</sect1>
+
 <sect1 id="release-4-1-22">
  <title>リリース 4.1.22</title>
   <note>
index c3d545841bbab2db49a9f5ff6ec5398f60ff89f5..ccb663317a0b65570a8c8363133ffe98188b916f 100644 (file)
@@ -1,6 +1,254 @@
 <!-- doc/src/sgml/release-4.2.sgml -->
 <!-- See header comment in release.sgml about typical markup -->
 
+<sect1 id="release-4-2-20">
+ <title>リリース 4.2.20</title>
+  <note>
+   <title>リリース日</title>
+   <simpara>2024-11-28</simpara>
+  </note>
+
+ <sect2>
+  <title>不具合修正</title>
+  <itemizedlist>
+
+   <listitem>
+    <!--
+    2024-11-26 [02712bc]
+    -->
+    <para>
+     バックエンドがエラーメッセージを送信した場合に、SSLネゴシエーションを中止するよう修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     SSLネゴシエーションのクライアント側実装(pool_ssl_negotiate_clientserver())では、
+     中間者攻撃者がSSLネゴシエーションフェーズ中に長いエラーメッセージを送信することで、
+     <productname>Pgpool-II</productname>やクライアントを混乱させる可能性がありました。
+     このコミットでは、ネゴシエーションを直ちに拒否(FATALエラーを発行)し、
+     そのような攻撃を防ぐためにセッションを終了するよう修正しました。
+    </para>
+    <para>
+     これは、PostgreSQLのCVE-2024-10977に似ています。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-25 [bc22810]
+    -->
+    <para>
+     リロード処理がWatchdogプロセスに反映されない問題を修正しました。(Bo Peng)
+    </para>
+    <para>
+     <productname>Pgpool-II</productname>の
+     <function>reload_config()</function>関数は、
+     WatchdogププロセスにSIGHUPシグナルを送信する必要がありました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-15 [4eb5505]
+    -->
+    <para>
+     <function>do_query</function>関数の不具合を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     htons/htonlの代わりにntohs/ntohlを使用するように<function>do_query</function>を修正しました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-13 [43940e9]
+    -->
+    <para>
+     <filename>pool_passwd</filename>を更新してリロードした後の認証失敗問題を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     <filename>pool_hba.conf</filename>が無効になっている場合、<productname>Pgpool-II</productname>のリロードが実行されても、<productname>Pgpool-II</productname>の子プロセスは<filename>pool_passwd</filename>の更新を認識しませんでした。
+     リロード処理関数<function>check_config_reload()</function>は、<xref linkend="guc-enable-pool-hba">が有効な場合にのみ<filename>pool_passwd</filename>を再オープンする必要があると誤って判断していたことが原因でした。
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html">https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-11 [3c9811c]
+    2024-11-12 [fab1574]
+    -->
+    <para>
+     <command>COPY</command>がハングする問題を修正しました。(<ulink url="https://github.com/pgpool/pgpool2/issues/79">#79</ulink>) (Tatsuo Ishii)
+    </para>
+    <para>
+     COPY IN状態(つまり、COPY FROM STDIN)中、フロントエンドはFlushまたはSyncメッセージを送信できます。
+     F/Bプロトコル仕様によると、これらは無視されるはずですが、<productname>Pgpool-II</productname>は無効なメッセージとして処理し、これが<command>COPY</command>のハングの原因でした。
+    </para>
+    <para>
+     リグレッションテストも追加しました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-09 [de8d00e]
+    -->
+    <para>
+     シャットダウン中に<productname>Pgpool-II</productname>の子プロセスがクラッシュする問題を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     実際のクラッシュは<function>close_all_backend_connections()</function>内で発生していました。
+     この関数は、<function>on_system_exit</function>が<function>child_will_go_down()</function>を登録するために呼び出されます。
+     この時点では、<productname>Pgpool-II</productname>子プロセスが起動し、<function>pool_init_cp()</function>を実行した直後であるようです。
+     接続プールオブジェクトが完全に初期化されていなかったため、クラッシュが発生していました。
+    </para>
+    <para>
+     この問題はEmond Papegaaijによって報告され、分析されました。
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html">https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-10-26 [5095d10]
+    -->
+    <para>
+     認証失敗による散発的なヘルスチェックの失敗を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     <xref linkend="guc-health-check-password">が空文字列の場合、ヘルスチェックプロセスは<filename>pool_passwd</filename>ファイルからパスワードを検索します。
+     問題は、このファイルのファイルディスクリプタが親pgpoolプロセスから継承されている点です。
+     pgpoolメインプロセスとヘルスチェックプロセス(複数存在する可能性あり)が同じディスクリプタを共有するため、さまざまな問題が発生していました。
+     この問題を解決するために、ヘルスチェックプロセスが開始される際にファイルを再度開き、
+     それぞれのヘルスチェックプロセスが独自のファイルディスクリプタを持つようにしました。
+    </para>
+    <para>
+     なお、pgpoolの子プロセス(フロントエンドセッションを担当)はすでにファイルディスクリプタを再度開く処理を行っており、これが今回の問題には関連していません。
+    </para>
+    <para>
+     この問題は、Emond Papegaaijによって報告され、分析されました。
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html">https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-10-23 [273901f]
+    -->
+    <para>
+     <literal>ALTER ROLE</literal>のクエリキャッシュ無効化を最適化しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     コミット<ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89">6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89</ulink>は、<literal>ALTER ROLE/USER</literal>ステートメントが使用される際にクエリキャッシュを無効にしています。
+     しかし、実際にはこれが過剰です。
+     次のクエリはロールの権限に影響を与えないため、クエリキャッシュを無効にする必要はありません。
+    </para>
+    <programlisting>
+ALTER ROLE user WITH [ENCRYPTED] PASSWORD
+ALTER ROLE user WITH CONNECTION LIMIT
+    </programlisting>
+    <para>
+     したがって、これらのコマンドが使用される場合には、クエリキャッシュを無効にしないようにしました。
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html">https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-18 [a06b7b1]
+    -->
+    <para>
+     <productname>Pgpool-II</productname>の子プロセスが終了したときに<productname>Pgpool-II</productname>がクラッシュする問題を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     <productname>Pgpool-II</productname>の子プロセスが終了すると、<function>close_all_backend_connections()</function>が呼び出され、接続プール内のすべてのバックエンド接続が閉じられます。
+     しかし、誤ってMAIN_CONNECTIONマクロが使用されていました。
+     このマクロは現在アクティブな接続には適していますが、接続プールが作成された時点でのメインノードが異なる可能性があるため、プールされた接続には適していませでした。
+     この問題を修正するために、代わりに<function>in_use_backend()</function>を使用するよう変更しました。
+    </para>
+    <para>
+     Emond Papegaaijによって報告されました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [db75470]
+    -->
+    <para>
+     ネイティブレプリケーション/スナップショットアイソレーションモードモードのバグを修正しました。(<ulink url="https://github.com/pgpool/pgpool2/issues/69">#69</ulink>) (Tatsuo Ishii)
+    </para>
+    <para>
+     <command>INSERT</command>コマンドを受信すると、<productname>Pgpool-II</productname>はターゲットテーブルに対して自動的にテーブルLOCKコマンドを発行しますが、メインノード以外のノードにコマンドを送信し忘れていました。
+     この問題は拡張クエリモードの場合にのみ発生していました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [7429499]
+    -->
+    <para>
+     ネイティブレプリケーション/スナップショットアイソレーションモードモードの別のバグを修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     insert_lock()は、メインノード以外のノードに行ロックコマンド(lock_kind == 3 の場合)を送信するのを忘れていました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [d69efa1]
+    2024-09-10 [3db8853]
+    -->
+    <para>
+     <filename>pool_memqcache.c</filename>のメモリリークを修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     この問題はコミット<ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=6fdba5c33">6fdba5c33</ulink>によって導入されました。
+    </para>
+   </listitem>
+
+  </itemizedlist>
+ </sect2>
+
+ <sect2>
+  <title>ドキュメント修正</title>
+  <itemizedlist>
+   <listitem>
+    <!--
+    2024-10-03 [bf46b3d]
+    -->
+    <para>
+     ドキュメントとサンプル設定ファイルのタイポを修正しました。(Bo Peng)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect2>
+
+ <sect2>
+  <title>回帰テスト修正</title>
+  <itemizedlist>
+   <listitem>
+    <!--
+    2024-11-25 [3e22ca6]
+    2024-11-25 [06a0fc2]
+    -->
+    <para>
+     テスト024.cert_authをOpenSSL 3.2に対応するよう修正しました。(Tatsuo Ishii)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect2>
+</sect1>
+
 <sect1 id="release-4-2-19">
  <title>リリース 4.2.19</title>
   <note>
index c48c02f5f53dae1431748e838ab26e83be5a05aa..1199d0324a45c1ea2b077a5d38ebdddc4ac9888d 100644 (file)
@@ -1,6 +1,254 @@
 <!-- doc/src/sgml/release-4.3.sgml -->
 <!-- See header comment in release.sgml about typical markup -->
 
+<sect1 id="release-4-3-13">
+ <title>リリース 4.3.13</title>
+  <note>
+   <title>リリース日</title>
+   <simpara>2024-11-28</simpara>
+  </note>
+
+ <sect2>
+  <title>不具合修正</title>
+  <itemizedlist>
+
+   <listitem>
+    <!--
+    2024-11-26 [7fdb872]
+    -->
+    <para>
+     バックエンドがエラーメッセージを送信した場合に、SSLネゴシエーションを中止するよう修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     SSLネゴシエーションのクライアント側実装(pool_ssl_negotiate_clientserver())では、
+     中間者攻撃者がSSLネゴシエーションフェーズ中に長いエラーメッセージを送信することで、
+     <productname>Pgpool-II</productname>やクライアントを混乱させる可能性がありました。
+     このコミットでは、ネゴシエーションを直ちに拒否(FATALエラーを発行)し、
+     そのような攻撃を防ぐためにセッションを終了するよう修正しました。
+    </para>
+    <para>
+     これは、PostgreSQLのCVE-2024-10977に似ています。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-25 [fe73dce]
+    -->
+    <para>
+     リロード処理がWatchdogプロセスに反映されない問題を修正しました。(Bo Peng)
+    </para>
+    <para>
+     <productname>Pgpool-II</productname>の
+     <function>reload_config()</function>関数は、
+     WatchdogププロセスにSIGHUPシグナルを送信する必要がありました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-15 [12fb6f4]
+    -->
+    <para>
+     <function>do_query</function>関数の不具合を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     htons/htonlの代わりにntohs/ntohlを使用するように<function>do_query</function>を修正しました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-13 [fe0517d]
+    -->
+    <para>
+     <filename>pool_passwd</filename>を更新してリロードした後の認証失敗問題を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     <filename>pool_hba.conf</filename>が無効になっている場合、<productname>Pgpool-II</productname>のリロードが実行されても、<productname>Pgpool-II</productname>の子プロセスは<filename>pool_passwd</filename>の更新を認識しませんでした。
+     リロード処理関数<function>check_config_reload()</function>は、<xref linkend="guc-enable-pool-hba">が有効な場合にのみ<filename>pool_passwd</filename>を再オープンする必要があると誤って判断していたことが原因でした。
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html">https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-11 [364d8c3]
+    2024-11-12 [e47fd4e]
+    -->
+    <para>
+     <command>COPY</command>がハングする問題を修正しました。(<ulink url="https://github.com/pgpool/pgpool2/issues/79">#79</ulink>) (Tatsuo Ishii)
+    </para>
+    <para>
+     COPY IN状態(つまり、COPY FROM STDIN)中、フロントエンドはFlushまたはSyncメッセージを送信できます。
+     F/Bプロトコル仕様によると、これらは無視されるはずですが、<productname>Pgpool-II</productname>は無効なメッセージとして処理し、これが<command>COPY</command>のハングの原因でした。
+    </para>
+    <para>
+     リグレッションテストも追加しました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-09 [18f6f4d]
+    -->
+    <para>
+     シャットダウン中に<productname>Pgpool-II</productname>の子プロセスがクラッシュする問題を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     実際のクラッシュは<function>close_all_backend_connections()</function>内で発生していました。
+     この関数は、<function>on_system_exit</function>が<function>child_will_go_down()</function>を登録するために呼び出されます。
+     この時点では、<productname>Pgpool-II</productname>子プロセスが起動し、<function>pool_init_cp()</function>を実行した直後であるようです。
+     接続プールオブジェクトが完全に初期化されていなかったため、クラッシュが発生していました。
+    </para>
+    <para>
+     この問題はEmond Papegaaijによって報告され、分析されました。
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html">https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-10-26 [748a427]
+    -->
+    <para>
+     認証失敗による散発的なヘルスチェックの失敗を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     <xref linkend="guc-health-check-password">が空文字列の場合、ヘルスチェックプロセスは<filename>pool_passwd</filename>ファイルからパスワードを検索します。
+     問題は、このファイルのファイルディスクリプタが親pgpoolプロセスから継承されている点です。
+     pgpoolメインプロセスとヘルスチェックプロセス(複数存在する可能性あり)が同じディスクリプタを共有するため、さまざまな問題が発生していました。
+     この問題を解決するために、ヘルスチェックプロセスが開始される際にファイルを再度開き、
+     それぞれのヘルスチェックプロセスが独自のファイルディスクリプタを持つようにしました。
+    </para>
+    <para>
+     なお、pgpoolの子プロセス(フロントエンドセッションを担当)はすでにファイルディスクリプタを再度開く処理を行っており、これが今回の問題には関連していません。
+    </para>
+    <para>
+     この問題は、Emond Papegaaijによって報告され、分析されました。
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html">https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-10-23 [506cb77]
+    -->
+    <para>
+     <literal>ALTER ROLE</literal>のクエリキャッシュ無効化を最適化しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     コミット<ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89">6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89</ulink>は、<literal>ALTER ROLE/USER</literal>ステートメントが使用される際にクエリキャッシュを無効にしています。
+     しかし、実際にはこれが過剰です。
+     次のクエリはロールの権限に影響を与えないため、クエリキャッシュを無効にする必要はありません。
+    </para>
+    <programlisting>
+ALTER ROLE user WITH [ENCRYPTED] PASSWORD
+ALTER ROLE user WITH CONNECTION LIMIT
+    </programlisting>
+    <para>
+     したがって、これらのコマンドが使用される場合には、クエリキャッシュを無効にしないようにしました。
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html">https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-18 [67a166f]
+    -->
+    <para>
+     <productname>Pgpool-II</productname>の子プロセスが終了したときに<productname>Pgpool-II</productname>がクラッシュする問題を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     <productname>Pgpool-II</productname>の子プロセスが終了すると、<function>close_all_backend_connections()</function>が呼び出され、接続プール内のすべてのバックエンド接続が閉じられます。
+     しかし、誤ってMAIN_CONNECTIONマクロが使用されていました。
+     このマクロは現在アクティブな接続には適していますが、接続プールが作成された時点でのメインノードが異なる可能性があるため、プールされた接続には適していませでした。
+     この問題を修正するために、代わりに<function>in_use_backend()</function>を使用するよう変更しました。
+    </para>
+    <para>
+     Emond Papegaaijによって報告されました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [badb44b]
+    -->
+    <para>
+     ネイティブレプリケーション/スナップショットアイソレーションモードモードのバグを修正しました。(<ulink url="https://github.com/pgpool/pgpool2/issues/69">#69</ulink>) (Tatsuo Ishii)
+    </para>
+    <para>
+     <command>INSERT</command>コマンドを受信すると、<productname>Pgpool-II</productname>はターゲットテーブルに対して自動的にテーブルLOCKコマンドを発行しますが、メインノード以外のノードにコマンドを送信し忘れていました。
+     この問題は拡張クエリモードの場合にのみ発生していました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [8084910]
+    -->
+    <para>
+     ネイティブレプリケーション/スナップショットアイソレーションモードモードの別のバグを修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     insert_lock()は、メインノード以外のノードに行ロックコマンド(lock_kind == 3 の場合)を送信するのを忘れていました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [f1f75d0]
+    2024-09-10 [992f4c6]
+    -->
+    <para>
+     <filename>pool_memqcache.c</filename>のメモリリークを修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     この問題はコミット<ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=6fdba5c33">6fdba5c33</ulink>によって導入されました。
+    </para>
+   </listitem>
+
+  </itemizedlist>
+ </sect2>
+
+ <sect2>
+  <title>ドキュメント修正</title>
+  <itemizedlist>
+   <listitem>
+    <!--
+    2024-10-03 [bf46b3d]
+    -->
+    <para>
+     ドキュメントとサンプル設定ファイルのタイポを修正しました。(Bo Peng)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect2>
+
+ <sect2>
+  <title>回帰テスト修正</title>
+  <itemizedlist>
+   <listitem>
+    <!--
+    2024-11-25 [3e22ca6]
+    2024-11-25 [06a0fc2]
+    -->
+    <para>
+     テスト024.cert_authをOpenSSL 3.2に対応するよう修正しました。(Tatsuo Ishii)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect2>
+</sect1>
+
 <sect1 id="release-4-3-12">
  <title>リリース 4.3.12</title>
   <note>
index 9397d031372fcd89ef0469d11280022c0d8b1d63..c6b55c8a697b8fb28d4ecf9bdada04cbf8e313ae 100644 (file)
@@ -1,6 +1,254 @@
 <!-- doc/src/sgml/release-4.4.sgml -->
 <!-- See header comment in release.sgml about typical markup -->
 
+<sect1 id="release-4-4-10">
+ <title>リリース 4.4.10</title>
+  <note>
+   <title>リリース日</title>
+   <simpara>2024-11-28</simpara>
+  </note>
+
+ <sect2>
+  <title>不具合修正</title>
+  <itemizedlist>
+
+   <listitem>
+    <!--
+    2024-11-26 [48502ce]
+    -->
+    <para>
+     バックエンドがエラーメッセージを送信した場合に、SSLネゴシエーションを中止するよう修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     SSLネゴシエーションのクライアント側実装(pool_ssl_negotiate_clientserver())では、
+     中間者攻撃者がSSLネゴシエーションフェーズ中に長いエラーメッセージを送信することで、
+     <productname>Pgpool-II</productname>やクライアントを混乱させる可能性がありました。
+     このコミットでは、ネゴシエーションを直ちに拒否(FATALエラーを発行)し、
+     そのような攻撃を防ぐためにセッションを終了するよう修正しました。
+    </para>
+    <para>
+     これは、PostgreSQLのCVE-2024-10977に似ています。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-25 [81ff539]
+    -->
+    <para>
+     リロード処理がWatchdogプロセスに反映されない問題を修正しました。(Bo Peng)
+    </para>
+    <para>
+     <productname>Pgpool-II</productname>の
+     <function>reload_config()</function>関数は、
+     WatchdogププロセスにSIGHUPシグナルを送信する必要がありました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-15 [ffabbed]
+    -->
+    <para>
+     <function>do_query</function>関数の不具合を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     htons/htonlの代わりにntohs/ntohlを使用するように<function>do_query</function>を修正しました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-13 [c81e354]
+    -->
+    <para>
+     <filename>pool_passwd</filename>を更新してリロードした後の認証失敗問題を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     <filename>pool_hba.conf</filename>が無効になっている場合、<productname>Pgpool-II</productname>のリロードが実行されても、<productname>Pgpool-II</productname>の子プロセスは<filename>pool_passwd</filename>の更新を認識しませんでした。
+     リロード処理関数<function>check_config_reload()</function>は、<xref linkend="guc-enable-pool-hba">が有効な場合にのみ<filename>pool_passwd</filename>を再オープンする必要があると誤って判断していたことが原因でした。
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html">https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-11 [f3a98a4]
+    2024-11-12 [897147b]
+    -->
+    <para>
+     <command>COPY</command>がハングする問題を修正しました。(<ulink url="https://github.com/pgpool/pgpool2/issues/79">#79</ulink>) (Tatsuo Ishii)
+    </para>
+    <para>
+     COPY IN状態(つまり、COPY FROM STDIN)中、フロントエンドはFlushまたはSyncメッセージを送信できます。
+     F/Bプロトコル仕様によると、これらは無視されるはずですが、<productname>Pgpool-II</productname>は無効なメッセージとして処理し、これが<command>COPY</command>のハングの原因でした。
+    </para>
+    <para>
+     リグレッションテストも追加しました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-09 [a690ce0]
+    -->
+    <para>
+     シャットダウン中に<productname>Pgpool-II</productname>の子プロセスがクラッシュする問題を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     実際のクラッシュは<function>close_all_backend_connections()</function>内で発生していました。
+     この関数は、<function>on_system_exit</function>が<function>child_will_go_down()</function>を登録するために呼び出されます。
+     この時点では、<productname>Pgpool-II</productname>子プロセスが起動し、<function>pool_init_cp()</function>を実行した直後であるようです。
+     接続プールオブジェクトが完全に初期化されていなかったため、クラッシュが発生していました。
+    </para>
+    <para>
+     この問題はEmond Papegaaijによって報告され、分析されました。
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html">https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-10-26 [33a2f2c]
+    -->
+    <para>
+     認証失敗による散発的なヘルスチェックの失敗を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     <xref linkend="guc-health-check-password">が空文字列の場合、ヘルスチェックプロセスは<filename>pool_passwd</filename>ファイルからパスワードを検索します。
+     問題は、このファイルのファイルディスクリプタが親pgpoolプロセスから継承されている点です。
+     pgpoolメインプロセスとヘルスチェックプロセス(複数存在する可能性あり)が同じディスクリプタを共有するため、さまざまな問題が発生していました。
+     この問題を解決するために、ヘルスチェックプロセスが開始される際にファイルを再度開き、
+     それぞれのヘルスチェックプロセスが独自のファイルディスクリプタを持つようにしました。
+    </para>
+    <para>
+     なお、pgpoolの子プロセス(フロントエンドセッションを担当)はすでにファイルディスクリプタを再度開く処理を行っており、これが今回の問題には関連していません。
+    </para>
+    <para>
+     この問題は、Emond Papegaaijによって報告され、分析されました。
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html">https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-10-23 [1a66900]
+    -->
+    <para>
+     <literal>ALTER ROLE</literal>のクエリキャッシュ無効化を最適化しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     コミット<ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89">6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89</ulink>は、<literal>ALTER ROLE/USER</literal>ステートメントが使用される際にクエリキャッシュを無効にしています。
+     しかし、実際にはこれが過剰です。
+     次のクエリはロールの権限に影響を与えないため、クエリキャッシュを無効にする必要はありません。
+    </para>
+    <programlisting>
+ALTER ROLE user WITH [ENCRYPTED] PASSWORD
+ALTER ROLE user WITH CONNECTION LIMIT
+    </programlisting>
+    <para>
+     したがって、これらのコマンドが使用される場合には、クエリキャッシュを無効にしないようにしました。
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html">https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-18 [04142b4]
+    -->
+    <para>
+     <productname>Pgpool-II</productname>の子プロセスが終了したときに<productname>Pgpool-II</productname>がクラッシュする問題を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     <productname>Pgpool-II</productname>の子プロセスが終了すると、<function>close_all_backend_connections()</function>が呼び出され、接続プール内のすべてのバックエンド接続が閉じられます。
+     しかし、誤ってMAIN_CONNECTIONマクロが使用されていました。
+     このマクロは現在アクティブな接続には適していますが、接続プールが作成された時点でのメインノードが異なる可能性があるため、プールされた接続には適していませでした。
+     この問題を修正するために、代わりに<function>in_use_backend()</function>を使用するよう変更しました。
+    </para>
+    <para>
+     Emond Papegaaijによって報告されました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [794adad]
+    -->
+    <para>
+     ネイティブレプリケーション/スナップショットアイソレーションモードモードのバグを修正しました。(<ulink url="https://github.com/pgpool/pgpool2/issues/69">#69</ulink>) (Tatsuo Ishii)
+    </para>
+    <para>
+     <command>INSERT</command>コマンドを受信すると、<productname>Pgpool-II</productname>はターゲットテーブルに対して自動的にテーブルLOCKコマンドを発行しますが、メインノード以外のノードにコマンドを送信し忘れていました。
+     この問題は拡張クエリモードの場合にのみ発生していました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [10333d5]
+    -->
+    <para>
+     ネイティブレプリケーション/スナップショットアイソレーションモードモードの別のバグを修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     insert_lock()は、メインノード以外のノードに行ロックコマンド(lock_kind == 3 の場合)を送信するのを忘れていました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [12e1b78]
+    2024-09-10 [f60aaf4]
+    -->
+    <para>
+     <filename>pool_memqcache.c</filename>のメモリリークを修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     この問題はコミット<ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=6fdba5c33">6fdba5c33</ulink>によって導入されました。
+    </para>
+   </listitem>
+
+  </itemizedlist>
+ </sect2>
+
+ <sect2>
+  <title>ドキュメント修正</title>
+  <itemizedlist>
+   <listitem>
+    <!--
+    2024-10-03 [bf46b3d]
+    -->
+    <para>
+     ドキュメントとサンプル設定ファイルのタイポを修正しました。(Bo Peng)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect2>
+
+ <sect2>
+  <title>回帰テスト修正</title>
+  <itemizedlist>
+   <listitem>
+    <!--
+    2024-11-25 [8b7af6a]
+    2024-11-25 [36100bd]
+    -->
+    <para>
+     テスト024.cert_authをOpenSSL 3.2に対応するよう修正しました。(Tatsuo Ishii)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect2>
+</sect1>
+
 <sect1 id="release-4-4-9">
  <title>リリース 4.4.9</title>
   <note>
index 71cd0d1a11936b91f50bc36567b20bab507cec8f..f4f26b22ae15c974060a0d5b405cf5dfa6baff5a 100644 (file)
@@ -1,6 +1,254 @@
 <!-- doc/src/sgml/release-4.5.sgml -->
 <!-- See header comment in release.sgml about typical markup -->
 
+<sect1 id="release-4-5-5">
+ <title>リリース 4.5.5</title>
+  <note>
+   <title>リリース日</title>
+   <simpara>2024-11-28</simpara>
+  </note>
+
+ <sect2>
+  <title>不具合修正</title>
+  <itemizedlist>
+
+   <listitem>
+    <!--
+    2024-11-26 [e3e5ba1]
+    -->
+    <para>
+     バックエンドがエラーメッセージを送信した場合に、SSLネゴシエーションを中止するよう修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     SSLネゴシエーションのクライアント側実装(pool_ssl_negotiate_clientserver())では、
+     中間者攻撃者がSSLネゴシエーションフェーズ中に長いエラーメッセージを送信することで、
+     <productname>Pgpool-II</productname>やクライアントを混乱させる可能性がありました。
+     このコミットでは、ネゴシエーションを直ちに拒否(FATALエラーを発行)し、
+     そのような攻撃を防ぐためにセッションを終了するよう修正しました。
+    </para>
+    <para>
+     これは、PostgreSQLのCVE-2024-10977に似ています。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-25 [c76f81f]
+    -->
+    <para>
+     リロード処理がWatchdogプロセスに反映されない問題を修正しました。(Bo Peng)
+    </para>
+    <para>
+     <productname>Pgpool-II</productname>の
+     <function>reload_config()</function>関数は、
+     WatchdogププロセスにSIGHUPシグナルを送信する必要がありました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-15 [e94ca4f]
+    -->
+    <para>
+     <function>do_query</function>関数の不具合を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     htons/htonlの代わりにntohs/ntohlを使用するように<function>do_query</function>を修正しました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-13 [4e379c9]
+    -->
+    <para>
+     <filename>pool_passwd</filename>を更新してリロードした後の認証失敗問題を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     <filename>pool_hba.conf</filename>が無効になっている場合、<productname>Pgpool-II</productname>のリロードが実行されても、<productname>Pgpool-II</productname>の子プロセスは<filename>pool_passwd</filename>の更新を認識しませんでした。
+     リロード処理関数<function>check_config_reload()</function>は、<xref linkend="guc-enable-pool-hba">が有効な場合にのみ<filename>pool_passwd</filename>を再オープンする必要があると誤って判断していたことが原因でした。
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html">https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-11 [e99a704]
+    2024-11-12 [bfa5af1]
+    -->
+    <para>
+     <command>COPY</command>がハングする問題を修正しました。(<ulink url="https://github.com/pgpool/pgpool2/issues/79">#79</ulink>) (Tatsuo Ishii)
+    </para>
+    <para>
+     COPY IN状態(つまり、COPY FROM STDIN)中、フロントエンドはFlushまたはSyncメッセージを送信できます。
+     F/Bプロトコル仕様によると、これらは無視されるはずですが、<productname>Pgpool-II</productname>は無効なメッセージとして処理し、これが<command>COPY</command>のハングの原因でした。
+    </para>
+    <para>
+     リグレッションテストも追加しました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-09 [a34244b]
+    -->
+    <para>
+     シャットダウン中に<productname>Pgpool-II</productname>の子プロセスがクラッシュする問題を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     実際のクラッシュは<function>close_all_backend_connections()</function>内で発生していました。
+     この関数は、<function>on_system_exit</function>が<function>child_will_go_down()</function>を登録するために呼び出されます。
+     この時点では、<productname>Pgpool-II</productname>子プロセスが起動し、<function>pool_init_cp()</function>を実行した直後であるようです。
+     接続プールオブジェクトが完全に初期化されていなかったため、クラッシュが発生していました。
+    </para>
+    <para>
+     この問題はEmond Papegaaijによって報告され、分析されました。
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html">https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-10-26 [3cdeb24]
+    -->
+    <para>
+     認証失敗による散発的なヘルスチェックの失敗を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     <xref linkend="guc-health-check-password">が空文字列の場合、ヘルスチェックプロセスは<filename>pool_passwd</filename>ファイルからパスワードを検索します。
+     問題は、このファイルのファイルディスクリプタが親pgpoolプロセスから継承されている点です。
+     pgpoolメインプロセスとヘルスチェックプロセス(複数存在する可能性あり)が同じディスクリプタを共有するため、さまざまな問題が発生していました。
+     この問題を解決するために、ヘルスチェックプロセスが開始される際にファイルを再度開き、
+     それぞれのヘルスチェックプロセスが独自のファイルディスクリプタを持つようにしました。
+    </para>
+    <para>
+     なお、pgpoolの子プロセス(フロントエンドセッションを担当)はすでにファイルディスクリプタを再度開く処理を行っており、これが今回の問題には関連していません。
+    </para>
+    <para>
+     この問題は、Emond Papegaaijによって報告され、分析されました。
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html">https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-10-23 [482a37c]
+    -->
+    <para>
+     <literal>ALTER ROLE</literal>のクエリキャッシュ無効化を最適化しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     コミット<ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89">6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89</ulink>は、<literal>ALTER ROLE/USER</literal>ステートメントが使用される際にクエリキャッシュを無効にしています。
+     しかし、実際にはこれが過剰です。
+     次のクエリはロールの権限に影響を与えないため、クエリキャッシュを無効にする必要はありません。
+    </para>
+    <programlisting>
+ALTER ROLE user WITH [ENCRYPTED] PASSWORD
+ALTER ROLE user WITH CONNECTION LIMIT
+    </programlisting>
+    <para>
+     したがって、これらのコマンドが使用される場合には、クエリキャッシュを無効にしないようにしました。
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html">https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-18 [2280851]
+    -->
+    <para>
+     <productname>Pgpool-II</productname>の子プロセスが終了したときに<productname>Pgpool-II</productname>がクラッシュする問題を修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     <productname>Pgpool-II</productname>の子プロセスが終了すると、<function>close_all_backend_connections()</function>が呼び出され、接続プール内のすべてのバックエンド接続が閉じられます。
+     しかし、誤ってMAIN_CONNECTIONマクロが使用されていました。
+     このマクロは現在アクティブな接続には適していますが、接続プールが作成された時点でのメインノードが異なる可能性があるため、プールされた接続には適していませでした。
+     この問題を修正するために、代わりに<function>in_use_backend()</function>を使用するよう変更しました。
+    </para>
+    <para>
+     Emond Papegaaijによって報告されました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [a4c15f4]
+    -->
+    <para>
+     ネイティブレプリケーション/スナップショットアイソレーションモードモードのバグを修正しました。(<ulink url="https://github.com/pgpool/pgpool2/issues/69">#69</ulink>) (Tatsuo Ishii)
+    </para>
+    <para>
+     <command>INSERT</command>コマンドを受信すると、<productname>Pgpool-II</productname>はターゲットテーブルに対して自動的にテーブルLOCKコマンドを発行しますが、メインノード以外のノードにコマンドを送信し忘れていました。
+     この問題は拡張クエリモードの場合にのみ発生していました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [48de423]
+    -->
+    <para>
+     ネイティブレプリケーション/スナップショットアイソレーションモードモードの別のバグを修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     insert_lock()は、メインノード以外のノードに行ロックコマンド(lock_kind == 3 の場合)を送信するのを忘れていました。
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [1a08999]
+    2024-09-10 [77d30e3]
+    -->
+    <para>
+     <filename>pool_memqcache.c</filename>のメモリリークを修正しました。(Tatsuo Ishii)
+    </para>
+    <para>
+     この問題はコミット<ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=6fdba5c33">6fdba5c33</ulink>によって導入されました。
+    </para>
+   </listitem>
+
+  </itemizedlist>
+ </sect2>
+
+ <sect2>
+  <title>ドキュメント修正</title>
+  <itemizedlist>
+   <listitem>
+    <!--
+    2024-10-03 [bf46b3d]
+    -->
+    <para>
+     ドキュメントとサンプル設定ファイルのタイポを修正しました。(Bo Peng)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect2>
+
+ <sect2>
+  <title>回帰テスト修正</title>
+  <itemizedlist>
+   <listitem>
+    <!--
+    2024-11-25 [8b7af6a]
+    2024-11-25 [36100bd]
+    -->
+    <para>
+     テスト024.cert_authをOpenSSL 3.2に対応するよう修正しました。(Tatsuo Ishii)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect2>
+</sect1>
+
 <sect1 id="release-4-5-4">
  <title>リリース 4.5.4</title>
   <note>
index 688de7aebb64f0e28a7aad03618e805df48818b4..d98786ca956cea2549d0f0d4fef882af56b36dff 100644 (file)
@@ -1,6 +1,218 @@
 <!-- doc/src/sgml/release-4.1.sgml -->
 <!-- See header comment in release.sgml about typical markup -->
 
+<sect1 id="release-4-1-23">
+ <title>Release 4.1.23</title>
+  <note>
+   <title>Release Date</title>
+   <simpara>2024-11-28</simpara>
+  </note>
+
+ <sect2>
+  <title>Bug fixes</title>
+  <itemizedlist>
+
+   <listitem>
+    <!--
+    2024-11-26 [ff2cd9f]
+    -->
+    <para>
+     Abort SSL negotiation if backend sends an error message. (Tatsuo Ishii)
+    </para>
+    <para>
+     In the client side implementation of SSL negotiation
+     (pool_ssl_negotiate_clientserver()), it was possible for a
+     man-in-the-middle attacker to send a long error message to confuse
+     Pgpool-II or client while in the SSL negotiation phase. This commit
+     rejects the negotiation immediately (issue a FATAL error) and exits
+     the session to prevent such an attack.
+    </para>
+    <para>
+     This resembles PostgreSQL's CVE-2024-10977.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-25 [19951e3]
+    -->
+    <para>
+     Fix the watchdog process not reloading configurations. (Bo Peng)
+    </para>
+    <para>
+     The <function>reload_config()</function> function
+     in <productname>Pgpool-II</productname> should send
+     a SIGHUP signal to the watchdog process.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-15 [ec2af6d]
+    -->
+    <para>
+     Fix bug in <function>do_query</function>. (Tatsuo Ishii)
+    </para>
+    <para>
+     Fix <function>do_query</function> to use ntohs/ntohl instead of htons/htonl.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-13 [b2019c4]
+    -->
+    <para>
+     Fix authentication failure after updating <filename>pool_passwd</filename> and reload. (Tatsuo Ishii)
+    </para>
+    <para>
+     If <filename>pool_hba.conf</filename> is disabled,
+     updating pool_passwd was not recognized
+     by <productname>Pgpool-II</productname> child process even
+     if <productname>Pgpool-II</productname> reload was performed.
+     The reload processing function check_config_reload() mistakenly assumed
+     that reopening pool_passwd was only necessary when
+     <xref linkend="guc-enable-pool-hba"> is on.
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html">https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html"</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-11 [7a2e13d]
+    2024-11-12 [8a75761]
+    -->
+    <para>
+     Fix <command>COPY</command> hangs. (<ulink url="https://github.com/pgpool/pgpool2/issues/79">#79</ulink>) (Tatsuo Ishii)
+    </para>
+    <para>
+     During COPY IN state (i.e. COPY FROM STDIN), frontend can send Flush
+     or Sync messages.  According to the F/B protocol specification, they
+     should be ignored but Pgpool-II treated as an invalid message and this
+     causes COPY hung.
+    </para>
+    <para>
+     Also a regression test is added for this issue.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-10-26 [a769dc7]
+    -->
+    <para>
+     Fix sporadic health check failures due to authentication failure. (Tatsuo Ishii)
+    </para>
+    <para>
+     When <xref linkend="guc-health-check-password"> is empty string,
+     health check process looks for the password from pool_passwd file.
+     Problem is, the file descriptor for the file is inherited from
+     parent pgpool process.
+     This means that pgpool main and health check process (possibly multiple
+     process) share the same descriptor, which causes various problem
+     including the issue reported here. To fix the problem, re-open the
+     file when health check process starts so that each health check
+     process owns its own file descriptor.
+    </para>
+    <para>
+     Note that pgpool child process (responsible for frontend sessions)
+     already re-opens the file descriptor and they are not related to the
+     issue.
+    </para>
+    <para>
+     Problem reported and analyzed by Emond Papegaaij.
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html">https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-10-23 [2acbbf4]
+    -->
+    <para>
+     Optimize query cache invalidation for <literal>ALTER ROLE</literal>. (Tatsuo Ishii)
+    </para>
+    <para>
+     Commit <ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89">6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89</ulink> invalidates query
+     cache if any <literal>ALTER ROLE/USER</literal> statement is used.
+     Actually this is an overkill.
+     Because following queries do not affect the privilege of the role.
+    </para>
+    <programlisting>
+ALTER ROLE user WITH [ENCRYPTED] PASSWORD
+ALTER ROLE user WITH CONNECTION LIMIT
+    </programlisting>
+    <para>
+     So do not invalidate query cache if those commands are used.
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html">https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [5ca0621]
+    -->
+    <para>
+     Fix bug in replication/snapshot isolation mode. (<ulink url="https://github.com/pgpool/pgpool2/issues/69">#69</ulink>) (Tatsuo Ishii)
+    </para>
+    <para>
+     When <command>INSERT</command> command is received,
+     pgpool automatically issues table LOCK command to the
+     target table but it forgot to send the command to
+     other than main nodes. This only happened in extended query mode.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [18bb82c]
+    -->
+    <para>
+     Fix another bug in native replication/snapshot isolation mode. (Tatsuo Ishii)
+    </para>
+    <para>
+     insert_lock() forgot to send row lock command (lock_kind == 3 case) to
+     other than main node.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [1c0a4a1]
+    2024-09-10 [025373a]
+    -->
+    <para>
+     Fix resource leaks in <filename>pool_memqcache.c</filename>. (Tatsuo Ishii)
+    </para>
+    <para>
+     These leaks were brought in by commit <ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=6fdba5c33">6fdba5c33</ulink>.
+    </para>
+   </listitem>
+
+  </itemizedlist>
+ </sect2>
+
+ <sect2>
+  <title>Documents</title>
+  <itemizedlist>
+   <listitem>
+    <!--
+    2024-10-03 [bf46b3d]
+    -->
+    <para>
+     Fix typos in the documentation and sample configuration files. (Bo Peng)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect2>
+</sect1>
+
 <sect1 id="release-4-1-22">
  <title>Release 4.1.22</title>
   <note>
index f8024356d181c9cb06492e77b35e104c0db58aa8..f532f20684dfc055abf72342bddc318879e5e19b 100644 (file)
@@ -1,6 +1,279 @@
 <!-- doc/src/sgml/release-4.2.sgml -->
 <!-- See header comment in release.sgml about typical markup -->
 
+<sect1 id="release-4-2-20">
+ <title>Release 4.2.20</title>
+  <note>
+   <title>Release Date</title>
+   <simpara>2024-11-28</simpara>
+  </note>
+
+ <sect2>
+  <title>Bug fixes</title>
+  <itemizedlist>
+
+   <listitem>
+    <!--
+    2024-11-26 [02712bc]
+    -->
+    <para>
+     Abort SSL negotiation if backend sends an error message. (Tatsuo Ishii)
+    </para>
+    <para>
+     In the client side implementation of SSL negotiation
+     (pool_ssl_negotiate_clientserver()), it was possible for a
+     man-in-the-middle attacker to send a long error message to confuse
+     Pgpool-II or client while in the SSL negotiation phase. This commit
+     rejects the negotiation immediately (issue a FATAL error) and exits
+     the session to prevent such an attack.
+    </para>
+    <para>
+     This resembles PostgreSQL's CVE-2024-10977.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-25 [bc22810]
+    -->
+    <para>
+     Fix the watchdog process not reloading configurations. (Bo Peng)
+    </para>
+    <para>
+     The <function>reload_config()</function> function
+     in <productname>Pgpool-II</productname> should send
+     a SIGHUP signal to the watchdog process.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-15 [4eb5505]
+    -->
+    <para>
+     Fix bug in <function>do_query</function>. (Tatsuo Ishii)
+    </para>
+    <para>
+     Fix <function>do_query</function> to use ntohs/ntohl instead of htons/htonl.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-13 [43940e9]
+    -->
+    <para>
+     Fix authentication failure after updating <filename>pool_passwd</filename> and reload. (Tatsuo Ishii)
+    </para>
+    <para>
+     If <filename>pool_hba.conf</filename> is disabled,
+     updating pool_passwd was not recognized
+     by <productname>Pgpool-II</productname> child process even
+     if <productname>Pgpool-II</productname> reload was performed.
+     The reload processing function check_config_reload() mistakenly assumed
+     that reopening pool_passwd was only necessary when
+     <xref linkend="guc-enable-pool-hba"> is on.
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html">https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html"</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-11 [3c9811c]
+    2024-11-12 [fab1574]
+    -->
+    <para>
+     Fix <command>COPY</command> hangs. (<ulink url="https://github.com/pgpool/pgpool2/issues/79">#79</ulink>) (Tatsuo Ishii)
+    </para>
+    <para>
+     During COPY IN state (i.e. COPY FROM STDIN), frontend can send Flush
+     or Sync messages.  According to the F/B protocol specification, they
+     should be ignored but Pgpool-II treated as an invalid message and this
+     causes COPY hung.
+    </para>
+    <para>
+     Also a regression test is added for this issue.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-09 [de8d00e]
+    -->
+    <para>
+     Fix <productname>Pgpool-II</productname> child process crash during shutdown. (Tatsuo Ishii)
+    </para>
+    <para>
+     The actual crash was in <function>close_all_backend_connections()</function>.
+     <function>close_all_backend_connections()</function> was
+     called because on_system_exit registers
+     <function>child_will_go_down()</function>.
+     At the moment it seems pgpool child had just started up and doing
+     <function>pool_init_cp()</function>. The connection pool
+     object had not been completely initialized, that's cause of the crash.
+    </para>
+    <para>
+     Problem reported and analyzed by Emond Papegaaij.
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html">https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-10-26 [5095d10]
+    -->
+    <para>
+     Fix sporadic health check failures due to authentication failure. (Tatsuo Ishii)
+    </para>
+    <para>
+     When <xref linkend="guc-health-check-password"> is empty string,
+     health check process looks for the password from pool_passwd file.
+     Problem is, the file descriptor for the file is inherited from
+     parent pgpool process.
+     This means that pgpool main and health check process (possibly multiple
+     process) share the same descriptor, which causes various problem
+     including the issue reported here. To fix the problem, re-open the
+     file when health check process starts so that each health check
+     process owns its own file descriptor.
+    </para>
+    <para>
+     Note that pgpool child process (responsible for frontend sessions)
+     already re-opens the file descriptor and they are not related to the
+     issue.
+    </para>
+    <para>
+     Problem reported and analyzed by Emond Papegaaij.
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html">https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-10-23 [273901f]
+    -->
+    <para>
+     Optimize query cache invalidation for <literal>ALTER ROLE</literal>. (Tatsuo Ishii)
+    </para>
+    <para>
+     Commit <ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89">6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89</ulink> invalidates query
+     cache if any <literal>ALTER ROLE/USER</literal> statement is used.
+     Actually this is an overkill.
+     Because following queries do not affect the privilege of the role.
+    </para>
+    <programlisting>
+ALTER ROLE user WITH [ENCRYPTED] PASSWORD
+ALTER ROLE user WITH CONNECTION LIMIT
+    </programlisting>
+    <para>
+     So do not invalidate query cache if those commands are used.
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html">https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-18 [a06b7b1]
+    -->
+    <para>
+     Fix <productname>Pgpool-II</productname> crash when pgpool child process exits. (Tatsuo Ishii)
+    </para>
+    <para>
+     When a pgpool child process exits,
+     <function>close_all_backend_connections()</function> is
+     called, which is responsible for closing all connections to backend in
+     the connection pool. It used mistakenly MAIN_CONNECTION macro, which
+     is fine for current active connections but is not good for pooled
+     connections because a main node could be different at the time when
+     the connection pool was created.
+     Fix is using <function>in_use_backend()</function> instead.
+    </para>
+    <para>
+     Reported-by: Emond Papegaaij
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [db75470]
+    -->
+    <para>
+     Fix bug in replication/snapshot isolation mode. (<ulink url="https://github.com/pgpool/pgpool2/issues/69">#69</ulink>) (Tatsuo Ishii)
+    </para>
+    <para>
+     When <command>INSERT</command> command is received,
+     pgpool automatically issues table LOCK command to the
+     target table but it forgot to send the command to
+     other than main nodes. This only happened in extended query mode.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [7429499]
+    -->
+    <para>
+     Fix another bug in native replication/snapshot isolation mode. (Tatsuo Ishii)
+    </para>
+    <para>
+     insert_lock() forgot to send row lock command (lock_kind == 3 case) to
+     other than main node.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [d69efa1]
+    2024-09-10 [3db8853]
+    -->
+    <para>
+     Fix resource leaks in <filename>pool_memqcache.c</filename>. (Tatsuo Ishii)
+    </para>
+    <para>
+     These leaks were brought in by commit <ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=6fdba5c33">6fdba5c33</ulink>.
+    </para>
+   </listitem>
+
+  </itemizedlist>
+ </sect2>
+
+ <sect2>
+  <title>Documents</title>
+  <itemizedlist>
+   <listitem>
+    <!--
+    2024-10-03 [bf46b3d]
+    -->
+    <para>
+     Fix typos in the documentation and sample configuration files. (Bo Peng)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect2>
+
+ <sect2>
+  <title>Regression Tests</title>
+  <itemizedlist>
+   <listitem>
+    <!--
+    2024-11-25 [3e22ca6]
+    2024-11-25 [06a0fc2]
+    -->
+    <para>
+     Adapt 024.cert_auth test to OpenSSL 3.2. (Tatsuo Ishii)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect2>
+</sect1>
+
 <sect1 id="release-4-2-19">
  <title>Release 4.2.19</title>
   <note>
index 9a8c745fa086787322196688154ffad3f212a8df..9b50e64a19b17f414ae0c4127c65c929bb29541e 100644 (file)
@@ -1,6 +1,279 @@
 <!-- doc/src/sgml/release-4.3.sgml -->
 <!-- See header comment in release.sgml about typical markup -->
 
+<sect1 id="release-4-3-13">
+ <title>Release 4.3.13</title>
+  <note>
+   <title>Release Date</title>
+   <simpara>2024-11-28</simpara>
+  </note>
+
+ <sect2>
+  <title>Bug fixes</title>
+  <itemizedlist>
+
+   <listitem>
+    <!--
+    2024-11-26 [7fdb872]
+    -->
+    <para>
+     Abort SSL negotiation if backend sends an error message. (Tatsuo Ishii)
+    </para>
+    <para>
+     In the client side implementation of SSL negotiation
+     (pool_ssl_negotiate_clientserver()), it was possible for a
+     man-in-the-middle attacker to send a long error message to confuse
+     Pgpool-II or client while in the SSL negotiation phase. This commit
+     rejects the negotiation immediately (issue a FATAL error) and exits
+     the session to prevent such an attack.
+    </para>
+    <para>
+     This resembles PostgreSQL's CVE-2024-10977.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-25 [fe73dce]
+    -->
+    <para>
+     Fix the watchdog process not reloading configurations. (Bo Peng)
+    </para>
+    <para>
+     The <function>reload_config()</function> function
+     in <productname>Pgpool-II</productname> should send
+     a SIGHUP signal to the watchdog process.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-15 [12fb6f4]
+    -->
+    <para>
+     Fix bug in <function>do_query</function>. (Tatsuo Ishii)
+    </para>
+    <para>
+     Fix <function>do_query</function> to use ntohs/ntohl instead of htons/htonl.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-13 [fe0517d]
+    -->
+    <para>
+     Fix authentication failure after updating <filename>pool_passwd</filename> and reload. (Tatsuo Ishii)
+    </para>
+    <para>
+     If <filename>pool_hba.conf</filename> is disabled,
+     updating pool_passwd was not recognized
+     by <productname>Pgpool-II</productname> child process even
+     if <productname>Pgpool-II</productname> reload was performed.
+     The reload processing function check_config_reload() mistakenly assumed
+     that reopening pool_passwd was only necessary when
+     <xref linkend="guc-enable-pool-hba"> is on.
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html">https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html"</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-11 [364d8c3]
+    2024-11-12 [e47fd4e]
+    -->
+    <para>
+     Fix <command>COPY</command> hangs. (<ulink url="https://github.com/pgpool/pgpool2/issues/79">#79</ulink>) (Tatsuo Ishii)
+    </para>
+    <para>
+     During COPY IN state (i.e. COPY FROM STDIN), frontend can send Flush
+     or Sync messages.  According to the F/B protocol specification, they
+     should be ignored but Pgpool-II treated as an invalid message and this
+     causes COPY hung.
+    </para>
+    <para>
+     Also a regression test is added for this issue.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-09 [18f6f4d]
+    -->
+    <para>
+     Fix <productname>Pgpool-II</productname> child process crash during shutdown. (Tatsuo Ishii)
+    </para>
+    <para>
+     The actual crash was in <function>close_all_backend_connections()</function>.
+     <function>close_all_backend_connections()</function> was
+     called because on_system_exit registers
+     <function>child_will_go_down()</function>.
+     At the moment it seems pgpool child had just started up and doing
+     <function>pool_init_cp()</function>. The connection pool
+     object had not been completely initialized, that's cause of the crash.
+    </para>
+    <para>
+     Problem reported and analyzed by Emond Papegaaij.
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html">https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-10-26 [748a427]
+    -->
+    <para>
+     Fix sporadic health check failures due to authentication failure. (Tatsuo Ishii)
+    </para>
+    <para>
+     When <xref linkend="guc-health-check-password"> is empty string,
+     health check process looks for the password from pool_passwd file.
+     Problem is, the file descriptor for the file is inherited from
+     parent pgpool process.
+     This means that pgpool main and health check process (possibly multiple
+     process) share the same descriptor, which causes various problem
+     including the issue reported here. To fix the problem, re-open the
+     file when health check process starts so that each health check
+     process owns its own file descriptor.
+    </para>
+    <para>
+     Note that pgpool child process (responsible for frontend sessions)
+     already re-opens the file descriptor and they are not related to the
+     issue.
+    </para>
+    <para>
+     Problem reported and analyzed by Emond Papegaaij.
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html">https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-10-23 [506cb77]
+    -->
+    <para>
+     Optimize query cache invalidation for <literal>ALTER ROLE</literal>. (Tatsuo Ishii)
+    </para>
+    <para>
+     Commit <ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89">6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89</ulink> invalidates query
+     cache if any <literal>ALTER ROLE/USER</literal> statement is used.
+     Actually this is an overkill.
+     Because following queries do not affect the privilege of the role.
+    </para>
+    <programlisting>
+ALTER ROLE user WITH [ENCRYPTED] PASSWORD
+ALTER ROLE user WITH CONNECTION LIMIT
+    </programlisting>
+    <para>
+     So do not invalidate query cache if those commands are used.
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html">https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-18 [67a166f]
+    -->
+    <para>
+     Fix <productname>Pgpool-II</productname> crash when pgpool child process exits. (Tatsuo Ishii)
+    </para>
+    <para>
+     When a pgpool child process exits,
+     <function>close_all_backend_connections()</function> is
+     called, which is responsible for closing all connections to backend in
+     the connection pool. It used mistakenly MAIN_CONNECTION macro, which
+     is fine for current active connections but is not good for pooled
+     connections because a main node could be different at the time when
+     the connection pool was created.
+     Fix is using <function>in_use_backend()</function> instead.
+    </para>
+    <para>
+     Reported-by: Emond Papegaaij
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [badb44b]
+    -->
+    <para>
+     Fix bug in replication/snapshot isolation mode. (<ulink url="https://github.com/pgpool/pgpool2/issues/69">#69</ulink>) (Tatsuo Ishii)
+    </para>
+    <para>
+     When <command>INSERT</command> command is received,
+     pgpool automatically issues table LOCK command to the
+     target table but it forgot to send the command to
+     other than main nodes. This only happened in extended query mode.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [8084910]
+    -->
+    <para>
+     Fix another bug in native replication/snapshot isolation mode. (Tatsuo Ishii)
+    </para>
+    <para>
+     insert_lock() forgot to send row lock command (lock_kind == 3 case) to
+     other than main node.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [f1f75d0]
+    2024-09-10 [992f4c6]
+    -->
+    <para>
+     Fix resource leaks in <filename>pool_memqcache.c</filename>. (Tatsuo Ishii)
+    </para>
+    <para>
+     These leaks were brought in by commit <ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=6fdba5c33">6fdba5c33</ulink>.
+    </para>
+   </listitem>
+
+  </itemizedlist>
+ </sect2>
+
+ <sect2>
+  <title>Documents</title>
+  <itemizedlist>
+   <listitem>
+    <!--
+    2024-10-03 [bf46b3d]
+    -->
+    <para>
+     Fix typos in the documentation and sample configuration files. (Bo Peng)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect2>
+
+ <sect2>
+  <title>Regression Tests</title>
+  <itemizedlist>
+   <listitem>
+    <!--
+    2024-11-25 [3e22ca6]
+    2024-11-25 [06a0fc2]
+    -->
+    <para>
+     Adapt 024.cert_auth test to OpenSSL 3.2. (Tatsuo Ishii)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect2>
+</sect1>
+
 <sect1 id="release-4-3-12">
  <title>Release 4.3.12</title>
   <note>
index 222640f1ecd70e661415260f1eccc2d72a03d9be..ac1e1b9fb4c1ed7cbaea8027cf292c8ef2d22f13 100644 (file)
@@ -1,6 +1,279 @@
 <!-- doc/src/sgml/release-4.4.sgml -->
 <!-- See header comment in release.sgml about typical markup -->
 
+<sect1 id="release-4-4-10">
+ <title>Release 4.4.10</title>
+  <note>
+   <title>Release Date</title>
+   <simpara>2024-11-28</simpara>
+  </note>
+
+ <sect2>
+  <title>Bug fixes</title>
+  <itemizedlist>
+
+   <listitem>
+    <!--
+    2024-11-26 [48502ce]
+    -->
+    <para>
+     Abort SSL negotiation if backend sends an error message. (Tatsuo Ishii)
+    </para>
+    <para>
+     In the client side implementation of SSL negotiation
+     (pool_ssl_negotiate_clientserver()), it was possible for a
+     man-in-the-middle attacker to send a long error message to confuse
+     Pgpool-II or client while in the SSL negotiation phase. This commit
+     rejects the negotiation immediately (issue a FATAL error) and exits
+     the session to prevent such an attack.
+    </para>
+    <para>
+     This resembles PostgreSQL's CVE-2024-10977.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-25 [81ff539]
+    -->
+    <para>
+     Fix the watchdog process not reloading configurations. (Bo Peng)
+    </para>
+    <para>
+     The <function>reload_config()</function> function
+     in <productname>Pgpool-II</productname> should send
+     a SIGHUP signal to the watchdog process.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-15 [ffabbed]
+    -->
+    <para>
+     Fix bug in <function>do_query</function>. (Tatsuo Ishii)
+    </para>
+    <para>
+     Fix <function>do_query</function> to use ntohs/ntohl instead of htons/htonl.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-13 [c81e354]
+    -->
+    <para>
+     Fix authentication failure after updating <filename>pool_passwd</filename> and reload. (Tatsuo Ishii)
+    </para>
+    <para>
+     If <filename>pool_hba.conf</filename> is disabled,
+     updating pool_passwd was not recognized
+     by <productname>Pgpool-II</productname> child process even
+     if <productname>Pgpool-II</productname> reload was performed.
+     The reload processing function check_config_reload() mistakenly assumed
+     that reopening pool_passwd was only necessary when
+     <xref linkend="guc-enable-pool-hba"> is on.
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html">https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html"</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-11 [f3a98a4]
+    2024-11-12 [897147b]
+    -->
+    <para>
+     Fix <command>COPY</command> hangs. (<ulink url="https://github.com/pgpool/pgpool2/issues/79">#79</ulink>) (Tatsuo Ishii)
+    </para>
+    <para>
+     During COPY IN state (i.e. COPY FROM STDIN), frontend can send Flush
+     or Sync messages.  According to the F/B protocol specification, they
+     should be ignored but Pgpool-II treated as an invalid message and this
+     causes COPY hung.
+    </para>
+    <para>
+     Also a regression test is added for this issue.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-09 [a690ce0]
+    -->
+    <para>
+     Fix <productname>Pgpool-II</productname> child process crash during shutdown. (Tatsuo Ishii)
+    </para>
+    <para>
+     The actual crash was in <function>close_all_backend_connections()</function>.
+     <function>close_all_backend_connections()</function> was
+     called because on_system_exit registers
+     <function>child_will_go_down()</function>.
+     At the moment it seems pgpool child had just started up and doing
+     <function>pool_init_cp()</function>. The connection pool
+     object had not been completely initialized, that's cause of the crash.
+    </para>
+    <para>
+     Problem reported and analyzed by Emond Papegaaij.
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html">https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-10-26 [33a2f2c]
+    -->
+    <para>
+     Fix sporadic health check failures due to authentication failure. (Tatsuo Ishii)
+    </para>
+    <para>
+     When <xref linkend="guc-health-check-password"> is empty string,
+     health check process looks for the password from pool_passwd file.
+     Problem is, the file descriptor for the file is inherited from
+     parent pgpool process.
+     This means that pgpool main and health check process (possibly multiple
+     process) share the same descriptor, which causes various problem
+     including the issue reported here. To fix the problem, re-open the
+     file when health check process starts so that each health check
+     process owns its own file descriptor.
+    </para>
+    <para>
+     Note that pgpool child process (responsible for frontend sessions)
+     already re-opens the file descriptor and they are not related to the
+     issue.
+    </para>
+    <para>
+     Problem reported and analyzed by Emond Papegaaij.
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html">https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-10-23 [1a66900]
+    -->
+    <para>
+     Optimize query cache invalidation for <literal>ALTER ROLE</literal>. (Tatsuo Ishii)
+    </para>
+    <para>
+     Commit <ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89">6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89</ulink> invalidates query
+     cache if any <literal>ALTER ROLE/USER</literal> statement is used.
+     Actually this is an overkill.
+     Because following queries do not affect the privilege of the role.
+    </para>
+    <programlisting>
+ALTER ROLE user WITH [ENCRYPTED] PASSWORD
+ALTER ROLE user WITH CONNECTION LIMIT
+    </programlisting>
+    <para>
+     So do not invalidate query cache if those commands are used.
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html">https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-18 [04142b4]
+    -->
+    <para>
+     Fix <productname>Pgpool-II</productname> crash when pgpool child process exits. (Tatsuo Ishii)
+    </para>
+    <para>
+     When a pgpool child process exits,
+     <function>close_all_backend_connections()</function> is
+     called, which is responsible for closing all connections to backend in
+     the connection pool. It used mistakenly MAIN_CONNECTION macro, which
+     is fine for current active connections but is not good for pooled
+     connections because a main node could be different at the time when
+     the connection pool was created.
+     Fix is using <function>in_use_backend()</function> instead.
+    </para>
+    <para>
+     Reported-by: Emond Papegaaij
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [794adad]
+    -->
+    <para>
+     Fix bug in replication/snapshot isolation mode. (<ulink url="https://github.com/pgpool/pgpool2/issues/69">#69</ulink>) (Tatsuo Ishii)
+    </para>
+    <para>
+     When <command>INSERT</command> command is received,
+     pgpool automatically issues table LOCK command to the
+     target table but it forgot to send the command to
+     other than main nodes. This only happened in extended query mode.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [10333d5]
+    -->
+    <para>
+     Fix another bug in native replication/snapshot isolation mode. (Tatsuo Ishii)
+    </para>
+    <para>
+     insert_lock() forgot to send row lock command (lock_kind == 3 case) to
+     other than main node.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [12e1b78]
+    2024-09-10 [f60aaf4]
+    -->
+    <para>
+     Fix resource leaks in <filename>pool_memqcache.c</filename>. (Tatsuo Ishii)
+    </para>
+    <para>
+     These leaks were brought in by commit <ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=6fdba5c33">6fdba5c33</ulink>.
+    </para>
+   </listitem>
+
+  </itemizedlist>
+ </sect2>
+
+ <sect2>
+  <title>Documents</title>
+  <itemizedlist>
+   <listitem>
+    <!--
+    2024-10-03 [bf46b3d]
+    -->
+    <para>
+     Fix typos in the documentation and sample configuration files. (Bo Peng)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect2>
+
+ <sect2>
+  <title>Regression Tests</title>
+  <itemizedlist>
+   <listitem>
+    <!--
+    2024-11-25 [8b7af6a]
+    2024-11-25 [36100bd]
+    -->
+    <para>
+     Adapt 024.cert_auth test to OpenSSL 3.2. (Tatsuo Ishii)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect2>
+</sect1>
+
 <sect1 id="release-4-4-9">
  <title>Release 4.4.9</title>
   <note>
index 3f086f31cfdab81caf65405b419e0d2ac68fce5b..a62fb21ab4a02bcbbcc71d43e2f1a8293b04561e 100644 (file)
@@ -1,3 +1,276 @@
+<sect1 id="release-4-5-5">
+ <title>Release 4.5.5</title>
+  <note>
+   <title>Release Date</title>
+   <simpara>2024-11-28</simpara>
+  </note>
+
+ <sect2>
+  <title>Bug fixes</title>
+  <itemizedlist>
+
+   <listitem>
+    <!--
+    2024-11-26 [e3e5ba1]
+    -->
+    <para>
+     Abort SSL negotiation if backend sends an error message. (Tatsuo Ishii)
+    </para>
+    <para>
+     In the client side implementation of SSL negotiation
+     (pool_ssl_negotiate_clientserver()), it was possible for a
+     man-in-the-middle attacker to send a long error message to confuse
+     Pgpool-II or client while in the SSL negotiation phase. This commit
+     rejects the negotiation immediately (issue a FATAL error) and exits
+     the session to prevent such an attack.
+    </para>
+    <para>
+     This resembles PostgreSQL's CVE-2024-10977.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-25 [c76f81f]
+    -->
+    <para>
+     Fix the watchdog process not reloading configurations. (Bo Peng)
+    </para>
+    <para>
+     The <function>reload_config()</function> function
+     in <productname>Pgpool-II</productname> should send
+     a SIGHUP signal to the watchdog process.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-15 [e94ca4f]
+    -->
+    <para>
+     Fix bug in <function>do_query</function>. (Tatsuo Ishii)
+    </para>
+    <para>
+     Fix <function>do_query</function> to use ntohs/ntohl instead of htons/htonl.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-13 [4e379c9]
+    -->
+    <para>
+     Fix authentication failure after updating <filename>pool_passwd</filename> and reload. (Tatsuo Ishii)
+    </para>
+    <para>
+     If <filename>pool_hba.conf</filename> is disabled,
+     updating pool_passwd was not recognized
+     by <productname>Pgpool-II</productname> child process even
+     if <productname>Pgpool-II</productname> reload was performed.
+     The reload processing function check_config_reload() mistakenly assumed
+     that reopening pool_passwd was only necessary when
+     <xref linkend="guc-enable-pool-hba"> is on.
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html">https://www.pgpool.net/pipermail/pgpool-general/2024-November/001944.html"</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-11 [e99a704]
+    2024-11-12 [bfa5af1]
+    -->
+    <para>
+     Fix <command>COPY</command> hangs. (<ulink url="https://github.com/pgpool/pgpool2/issues/79">#79</ulink>) (Tatsuo Ishii)
+    </para>
+    <para>
+     During COPY IN state (i.e. COPY FROM STDIN), frontend can send Flush
+     or Sync messages.  According to the F/B protocol specification, they
+     should be ignored but Pgpool-II treated as an invalid message and this
+     causes COPY hung.
+    </para>
+    <para>
+     Also a regression test is added for this issue.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-11-09 [a34244b]
+    -->
+    <para>
+     Fix <productname>Pgpool-II</productname> child process crash during shutdown. (Tatsuo Ishii)
+    </para>
+    <para>
+     The actual crash was in <function>close_all_backend_connections()</function>.
+     <function>close_all_backend_connections()</function> was
+     called because on_system_exit registers
+     <function>child_will_go_down()</function>.
+     At the moment it seems pgpool child had just started up and doing
+     <function>pool_init_cp()</function>. The connection pool
+     object had not been completely initialized, that's cause of the crash.
+    </para>
+    <para>
+     Problem reported and analyzed by Emond Papegaaij.
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html">https://www.pgpool.net/pipermail/pgpool-general/2024-November/001938.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-10-26 [3cdeb24]
+    -->
+    <para>
+     Fix sporadic health check failures due to authentication failure. (Tatsuo Ishii)
+    </para>
+    <para>
+     When <xref linkend="guc-health-check-password"> is empty string,
+     health check process looks for the password from pool_passwd file.
+     Problem is, the file descriptor for the file is inherited from
+     parent pgpool process.
+     This means that pgpool main and health check process (possibly multiple
+     process) share the same descriptor, which causes various problem
+     including the issue reported here. To fix the problem, re-open the
+     file when health check process starts so that each health check
+     process owns its own file descriptor.
+    </para>
+    <para>
+     Note that pgpool child process (responsible for frontend sessions)
+     already re-opens the file descriptor and they are not related to the
+     issue.
+    </para>
+    <para>
+     Problem reported and analyzed by Emond Papegaaij.
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html">https://www.pgpool.net/pipermail/pgpool-general/2024-October/001913.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-10-23 [482a37c]
+    -->
+    <para>
+     Optimize query cache invalidation for <literal>ALTER ROLE</literal>. (Tatsuo Ishii)
+    </para>
+    <para>
+     Commit <ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89">6b7d585eb1c693e4ffb5b8e6ed9aa0f067fa1b89</ulink> invalidates query
+     cache if any <literal>ALTER ROLE/USER</literal> statement is used.
+     Actually this is an overkill.
+     Because following queries do not affect the privilege of the role.
+    </para>
+    <programlisting>
+ALTER ROLE user WITH [ENCRYPTED] PASSWORD
+ALTER ROLE user WITH CONNECTION LIMIT
+    </programlisting>
+    <para>
+     So do not invalidate query cache if those commands are used.
+    </para>
+    <para>
+     Discussion: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html">https://www.pgpool.net/pipermail/pgpool-hackers/2024-October/004532.html</ulink>
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-18 [2280851]
+    -->
+    <para>
+     Fix <productname>Pgpool-II</productname> crash when pgpool child process exits. (Tatsuo Ishii)
+    </para>
+    <para>
+     When a pgpool child process exits,
+     <function>close_all_backend_connections()</function> is
+     called, which is responsible for closing all connections to backend in
+     the connection pool. It used mistakenly MAIN_CONNECTION macro, which
+     is fine for current active connections but is not good for pooled
+     connections because a main node could be different at the time when
+     the connection pool was created.
+     Fix is using <function>in_use_backend()</function> instead.
+    </para>
+    <para>
+     Reported-by: Emond Papegaaij
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [a4c15f4]
+    -->
+    <para>
+     Fix bug in replication/snapshot isolation mode. (<ulink url="https://github.com/pgpool/pgpool2/issues/69">#69</ulink>) (Tatsuo Ishii)
+    </para>
+    <para>
+     When <command>INSERT</command> command is received,
+     pgpool automatically issues table LOCK command to the
+     target table but it forgot to send the command to
+     other than main nodes. This only happened in extended query mode.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [48de423]
+    -->
+    <para>
+     Fix another bug in native replication/snapshot isolation mode. (Tatsuo Ishii)
+    </para>
+    <para>
+     insert_lock() forgot to send row lock command (lock_kind == 3 case) to
+     other than main node.
+    </para>
+   </listitem>
+
+   <listitem>
+    <!--
+    2024-09-14 [1a08999]
+    2024-09-10 [77d30e3]
+    -->
+    <para>
+     Fix resource leaks in <filename>pool_memqcache.c</filename>. (Tatsuo Ishii)
+    </para>
+    <para>
+     These leaks were brought in by commit <ulink url="https://git.postgresql.org/gitweb/?p=pgpool2.git;a=commit;h=6fdba5c33">6fdba5c33</ulink>.
+    </para>
+   </listitem>
+
+  </itemizedlist>
+ </sect2>
+
+ <sect2>
+  <title>Documents</title>
+  <itemizedlist>
+   <listitem>
+    <!--
+    2024-10-03 [bf46b3d]
+    -->
+    <para>
+     Fix typos in the documentation and sample configuration files. (Bo Peng)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect2>
+
+ <sect2>
+  <title>Regression Tests</title>
+  <itemizedlist>
+   <listitem>
+    <!--
+    2024-11-25 [8b7af6a]
+    2024-11-25 [36100bd]
+    -->
+    <para>
+     Adapt 024.cert_auth test to OpenSSL 3.2. (Tatsuo Ishii)
+    </para>
+   </listitem>
+  </itemizedlist>
+ </sect2>
+</sect1>
+
 <sect1 id="release-4-5-4">
  <title>Release 4.5.4</title>
   <note>