<sect1 id="release-4-6-6">
 <title>リリース 4.6.6</title>
 <note>
  <title>リリース日</title>
  <simpara>2026-02-26</simpara>
 </note>

 <sect2>
  <title>変更点</title>
  <itemizedlist>
   <listitem>
    <!--
    2026-01-29 [118f61932]
    -->
    <para>
     並列で<command>make</command>を実行できるようになりました。(Tatsuo Ishii)
    </para>
    <para>
     以前、<command>make</command>の並列実行は以下のように失敗していました。
     <programlisting>
In file included from parser.c:27:
../../src/include/parser/gramparse.h:33:10: fatal error: gram.h: No such file or directory
33 | #include "gram.h"
     </programlisting>
    </para>
    <para>
     anthonyrousselによってパッチが作成され、Tatsuo Ishiiによってレビューされました。
    </para>
    <para>
     ディスカッション: <ulink url="https://github.com/pgpool/pgpool2/pull/146">Fix parallel build</ulink>
    </para>
   </listitem>

   <listitem>
    <!--
    2026-01-26 [d638018ce]
    -->
    <para>
     <xref linkend="guc-backend-hostname">と<varname>primary_conninfo</varname>のホストが不一致であることを詳細にログに出力するようになりました。(Taiki Koshino)
    </para>
    <para>
     <filename>pgpool.conf</filename>に設定されている<xref linkend="guc-backend-hostname">と<productname>PostgreSQL</productname>の<varname>primary_conninfo</varname>のホスト設定が一致しない場合以下のようなログが出力されます。
     <programlisting>
sr_check_worker pid 25099: DETAIL: pgpool.conf backend_hostname: "pgpool0" does not match PostgreSQL primary_conninfo host: "pgpool_logtest"
     </programlisting>
    </para>
   </listitem>

   <listitem>
    <!--
    2025-12-24 [ef33aca38]
    -->
    <para>
     サポートされている最小のOpenSSLバージョンを明記しました。(Tatsuo Ishii)
    </para>
    <para>
     こちらは以下を使用したconfigure.acによって実現しています。
     <programlisting>
AC_DEFINE(OPENSSL_API_COMPAT, [0x10002000L],
          [Define to the OpenSSL API version in use. This avoids deprecation warnings from newer OpenSSL versions.])
     </programlisting>

     サポートされている最小バージョンは1.0.2で、これは現時点では<productname>PostgreSQL</productname>と同じです（実際にはAC_DEFINEは<productname>PostgreSQL</productname>から導入されています）。
     また、インストールされているOpenSSLが3.0などの新しいバージョンである場合、OpenSSLの非推奨警告を回避できる可能性があります。
     さらに、インストールドキュメントに、必要なOpenSSLの最小バージョンは1.0.2であることを記載しました。
    </para>
   </listitem>
  </itemizedlist>
 </sect2>

 <sect2>
  <title>不具合修正</title>
  <itemizedlist>
   <listitem>
    <!--
    2026-01-31 [55ee45801]
    -->
    <para>
     <function>check_transaction_state_and_abort()</function>の考慮不足を修正しました。(Tatsuo Ishii)
    </para>
    <para>
     この関数はフロントエンドがNULLアカウントであるケースを考慮していませんでした。
    </para>
    <para>
     この問題はCoverityによって発見されました。
    </para>
   </listitem>

   <listitem>
    <!--
    2026-01-22 [c0f2cb883]
    -->
    <para>
     <function>walker()</function>が早めに結果を返すように修正しました。(Tatsuo Ishii)
    </para>
    <para>
     以前、<function>walker()</function>は対象オブジェクトを見つけたときにfalseを返していましたが、
     trueを返すようにし処理をショートカットするようにしました。

     また<function>waker()</function>の設計意図が分かりやすいように<productname>PostgreSQL</productname>のコメントを移植しました。
    </para>
    <para>
     この問題はliujinyang-highgoによって報告され、Tatsuo Ishiiによってレビューされました。
    </para>
    <para>
     ディスカッション: <ulink url="https://github.com/pgpool/pgpool2/issues/143">Improper handling in the function view_walker().</ulink>
    </para>
   </listitem>

   <listitem>
    <!--
    2026-01-09 [7b00d24de]
    -->
    <para>
     <literal>scram-sha-256</literal>認証でのメモリリークを修正しました。(Tatsuo Ishii)
    </para>
    <para>
     この問題はCoverityによって発見されました。
    </para>
   </listitem>

   <listitem>
    <!--
    2026-01-07 [81e8d3ec6]
    -->
    <para>
     <function>malloc()</function>の返り値チェックを修正しました。(Tatsuo Ishii)
    </para>
    <para>
     <function>create_inet_domain_sockets()</function>はソケットのファイルディスクリプタ用メモリを割り当てている間に<function>malloc()</function>が返す値のチェックをしていませんでした。
    </para>
   </listitem>

   <listitem>
    <!--
    2026-01-06 [2218b5e56]
    -->
    <para>
     ヘルスチェックが開始しない問題を修正しました。(Tatsuo Ishii)
    </para>
    <para>
     以前、<productname>Pgpool-II</productname>はバックエンドノードがダウンしている場合ヘルスチェックを開始しませんでした。
     これは自動フェイルバックを阻害します。
     Pgpoolは<option>-D</option>を指定していない場合<filename>pool_status</filename>を読み込みます。
     もしpgpool_statusにダウンと記載されている場合はpgpoolはヘルスチェックを開始しませんでした。
     自動フェイルバックはヘルスチェックから引き起こされるため、ヘルスチェックが起動しないと自動フェイルバックも実行されずバックエンドノードが復帰できませんでした。
     この修正によりノードの状態にかかわらずヘルスチェックが起動するようになりました。
    </para>
    <para>
     この問題はMeng Feilongによって報告され、Tatsuo Ishiiによってレビューされました。
    </para>
    <para>
     ディスカッション: <ulink url="https://github.com/pgpool/pgpool2/issues/140">Nodes in the down state cannot failback </ulink>
    </para>
   </listitem>

   <listitem>
    <!--
    2025-12-24 [9acb78c01]
    -->
    <para>
     nodes.hに定義されているenum型のNodeTag値の重複を修正しました。(Tatsuo Ishii)
    </para>
    <para>
     <productname>PostgreSQL</productname>から取り込んだnodes.hのNodeTag定義とPgpool-II独自の定義で起きていた重複を解消しました。
    </para>
    <para>
     この問題はliujinyang-highgoによって報告・検討され、Tatsuo Ishiiによってレビューされました。
    </para>
    <para>
     ディスカッション: <ulink url="https://github.com/pgpool/pgpool2/issues/138">an issue about NodeTag definition.</ulink>
    </para>
   </listitem>

   <listitem>
    <!--
    2025-12-23 [77096f651]
    -->
    <para>
     <function>pcp_connect</function>でのメモリリークを修正しました。(Tatsuo Ishii)
    </para>
    <para>
     この関数は複数個所で<function>freeaddrinfo()</function>を呼び出していませんでした。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-12-23 [515d5fe85]
    -->
    <para>
     integer型のオーバーフローが起きる可能性がある問題を修正しました。(Tatsuo Ishii)
    </para>
    <para>
     <function>pool_write_flush()</function>と<function>pool_flus_it()</function>では<function>write(2)</function>が使用されています。
     <function>write(2)</function>はssize_tを返しますが、コード内には戻り値がint変数に代入されている箇所がいくつかありました。
     その結果、戻り値が負の値として評価され、エラーが発生する可能性がありました。
    </para>
   </listitem>
  </itemizedlist>
 </sect2>
</sect1>

<sect1 id="release-4-6-5">
 <title>リリース 4.6.5</title>
 <note>
  <title>リリース日</title>
  <simpara>2025-12-15</simpara>
 </note>

 <sect2>
  <title>変更点</title>
  <itemizedlist>
   <listitem>
    <!--
    2025-12-08 [5bd10177c]
    -->
    <para>
     pgpool_setupで非推奨の「egrep」の代わりに「grep -E」を使用するようにしました。(Bo Peng)
    </para>
    <para>
     新しいGNUのgrepバージョンでの廃止警告を回避するために、「egrep」を「grep -E」に置き換えました。
    </para>
   </listitem>
  </itemizedlist>
 </sect2>

 <sect2>
  <title>不具合修正</title>
  <itemizedlist>
   <listitem>
    <!--
    2025-12-08 [8deccc15e]
    -->
    <para>
     show pool_statusのバッファオーバーフローエラーを修正しました。(Tatsuo Ishii)
    </para>
    <para>
     SHOW POOL_STATUS、pgpool show、および pcp_pool_statusコマンドでバッファオーバーフローが発生する問題を修正しました。
     問題の原因は、backend_flagがALWAYS_PRIMARYに設定されている場合に、pool_flag_to_str()関数がbackend_flagを文字列化する際に静的バッファの末尾を越えて書き込んでしまうことでした。
    </para>
    <para>
     この問題はzam bakによって報告され、Bo Pengによってよって分析されました。
    </para>
    <para>
     ディスカッション: <ulink url="https://www.postgresql.org/message-id/20251202.140205.427777414210613577.ishii%40postgresql.org">Re: "buffer overflow detected" when running SHOW POOL_STATUS</ulink>
    </para>
   </listitem>

   <listitem>
    <!--
    2025-12-02 [c8865c703]
    -->
    <para>
     「show pool_status」に表示されるmemqcache_stats_start_timeの出力を修正しました。(Tatsuo Ishii)
    </para>
    <para>
     get_config()がctime()を使って時刻を文字列化していましたが、ctime()の戻り値の末尾には改行が含まれることを考慮していませんでした。
     その結果、memqcache_stats_start_timeの行に余計な改行が入り、さらに次の行が空欄として表示されてしまう問題が発生していました。
    </para>
    <para>
     ディスカッション: <ulink url="https://www.postgresql.org/message-id/20251130.102712.131456481338876013.ishii%40postgresql.org">Re: "buffer overflow detected" when running SHOW POOL_STATUS</ulink>
    </para>
   </listitem>
  </itemizedlist>
 </sect2>

 <sect2>
  <title>回帰テスト修正</title>
  <itemizedlist>
   <listitem>
    <!--
    2025-11-25 [0c45a1e01]
    -->
    <para>
     037.failover_sessionのテストを安定させました。(Tatsuo Ishii)
    </para>
    <para>
     特定の環境では、test1の後にshutdownallが終了しないことがありました。
     これは、テスト中のフェイルオーバー処理が、shutdownallからの終了シグナルを受け取れるようにしているシグナルハンドラの復元に失敗していることが原因と考えられます。
     shutdownall の前にsleep 5を追加することで、この問題が緩和されることを確認しました。
    </para>
   </listitem>
  </itemizedlist>
 </sect2>
</sect1>

<sect1 id="release-4-6-4">
 <title>リリース 4.6.4</title>
 <note>
  <title>リリース日</title>
  <simpara>2025-11-25</simpara>
 </note>

 <sect2>
  <title>変更点</title>
  <itemizedlist>
   <listitem>
    <!--
    2025-11-07 [4fabca331]
    -->
    <para>
     不要な<varname>application_name</varname>の処理を削除しました。（Tatsuo Ishii）
    </para>
    <para>
     以前のコミットで、既存接続を再利用する際に<varname>application_name</varname>を設定する処理が追加されました。
     しかしこれは不要です。DISCARD ALLにより接続再利用時に自動的に<varname>application_name</varname>がリセットされ、
     <function>send_params()</function>によってフロントエンドに必要なパラメータステータス（<varname>application_name</varname>を含む）が送信されます。
     この冗長な処理を削除することで、特に地理的に離れたバックエンドノードでのパフォーマンスが向上します。
    </para>
    <para>
     ディスカッション: <ulink url="https://github.com/pgpool/pgpool2/issues/130">Severely degraded performance of pgPool in geo-distributed configurations</ulink>
    </para>
   </listitem>

   <listitem>
    <!--
    2025-10-09 [f91abf862]
    -->
    <para>
     時間計算を常にlong longに変更しました。（Tatsuo Ishii）
    </para>
    <para>
     以前、<productname>Pgpool-II</productname> はtime_tを単なるlongとして扱っており、OpenBSDのようなシステムではコンパイル時警告が発生していました。
     計算をlong longにアップキャストするようにしてトランケーションを防ぎ、
     64ビットクリーンなtime_tシステムでもY2038問題後も正しく動作するようにしています。
     また、json_get_long_value_for_keyはjson_get_llong_value_for_keyに変更され、パラメータもlong longになりました。
     これにより_json_valueのint64型と整合性が取れ、32ビット環境でも大きな整数を正しく扱えるようになりました。
    </para>
    <para>
     この問題はTatsuo IshiiとGyorgy Sarvariによって分析されました。
    </para>
    <para>
     ディスカッション: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2025-May/004584.html">Fix time_t warnings on OpenBSD</ulink>
    </para>
    <para>
     ディスカッション: <ulink url="https://www.postgresql.org/message-id/20251003.211957.2067537305399895611.ishii%40postgresql.org">Fix time_t warnings on OpenBSD</ulink>
    </para>
    <para>
     ディスカッション: <ulink url="https://github.com/pgpool/pgpool2/issues/128">fix compiling issues for 32-bit targets</ulink>
    </para>
   </listitem>

   <listitem>
    <!--
    2025-08-31 [dced45a52]
    -->
    <para>
     GCC 15 (C23) でコンパイル可能にしました。（Tatsuo Ishii）
    </para>
    <para>
     Fedora 42 + GCC 15で<productname>Pgpool-II</productname>をコンパイルできるよう修正しました。
     pool_type.hをstdbool.hに変更し、TRUE/FALSEを (bool)1 / (bool)0と定義しました。
     関数ポインタの引数が呼び出し先プロトタイプと一致するよう修正され、
     <function>pool_create_relcache()</function>のプロトタイプも更新されました。
     <function>raw_expression_tree_walker()</function>内の<function>walker()</function>呼び出しは、WALKマクロを使い (Node *) キャストされるよう変更されました。
     OpenSSLに関する警告はまだ残っており、将来的に対応予定です。
    </para>
    <para>
     ディスカッション: <ulink url="https://github.com/pgpool/pgpool2/issues/124">4.6.X build issue against GCC 15</ulink>
    </para>
   </listitem>
  </itemizedlist>
 </sect2>

 <sect2>
  <title>不具合修正</title>
  <itemizedlist>
   <listitem>
    <!--
    2025-11-16 [b113027dd]
    -->
    <para>
     <command>CopyOut</command>でのセグメンテーションフォルトを修正しました。(Tatsuo Ishii)
    </para>
    <para>
     拡張プロトコルで<command>COPY relname TO STDOUT</command>が実行された場合、<productname>Pgpool-II</productname>がセグフォルトを起こしていました。
    </para>
    <para>
     この問題は<ulink url="https://github.com/tetesh">https://github.com/tetesh</ulink>によって報告されました。
    </para>
    <para>
     ディスカッション: <ulink url="https://github.com/pgpool/pgpool2/issues/133">datanymizer and pg-pool segmentation fault</ulink>
    </para>
   </listitem>
   <listitem>
    <!--
    2025-10-03 [b84553bf0]
    -->
    <para>
     Watchdogのスプリットブレイン回避するよう修正しました。（Tatsuo Ishii）
    </para>
    <para>
     Watchdogはビーコンメッセージとハートビートで通信します。
     ハートビートが有効でない場合、ビーコンが30秒以上届かないとスプリットブレインが発生することがあります。
     古いリーダーを無効化することで、同時に二人のリーダーが存在しないように修正しました。
     ノードがリーダーからのビーコンを2回以上見逃すと、リーダーはLOST状態となり、
     set_state(WD_JOINING) により新リーダー選出が開始されます。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-10-03 [ef8ccb9e7]
    -->
    <para>
     存在しないプリペアドステートメント使用時のFATALエラー防止するよう修正しました。（Tatsuo Ishii）
    </para>
    <para>
     以前は<function>Bind()</function>が存在しないプリペアドステートメントでFATALエラーを出していました。
     はステートメントの存在を確認し、存在しない場合はフロントエンドにERRORメッセージを送信するようになりました。ログは残りません。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-09-24 [59a359eef]
    -->
    <para>
     <xref linkend="pg-enc"> が -pと -P両方使用時に動作しない問題を修正しました。（Tatsuo Ishii）
    </para>
    <para>
     元の報告では、pg_enc -p -P実行時にパスワードと暗号キーを求められましたが、
     キーが提供されない場合に失敗していました。
    </para>
    <para>
     ディスカッション: <ulink url="https://www.postgresql.org/message-id/7f18c30b.237.1997555ca11.Coremail.liujy%40highgo.com">pg_enc</ulink>
    </para>
   </listitem>

   <listitem>
    <!--
    2025-09-18 [f20f7041c]
    -->
    <para>
     32ビット環境でのコンパイルの問題を修正しました。（Tatsuo Ishii）
    </para>
    <para>
     32ビットシステムでsrc/parser/snprintf.cをコンパイルすると<function>isnan()</function>や<function>isinf()</function>が未定義でエラーになりました。
     math.hをインクルードし、ヘッダーファイルの順序も整理しました。
     元々 PostgreSQLから取り込まれたファイルで、math.hは既に含まれていました。
     修正は <ulink url="https://github.com/pgpool/pgpool2/pull/128">fix compiling issues for 32-bit targets</ulink> のプルリクエストに記載してあります。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-09-10 [0a6868d40]
    -->
    <para>
     recovery_1st_stage.sampleでBashのディレクトリ削除を安全に行うよう修正しました。（Taiki Koshino）
    </para>
    <para>
     rmコマンドの変数をクォートし、意図しない削除を防止しました：
     <command>rm -rf "${DEST_NODE_PGDATA}"</command>
    </para>
   </listitem>

   <listitem>
    <!--
    2025-09-05 [1793db95f]
    -->
    <para>
     クエリキャッシュ無効化時の不要な警告が出ないよう修正しました。（Tatsuo Ishii）
    </para>
    <para>
     memcachedサポートが無効な場合、クエリキャッシュ無効化時に不要な警告が出ていました。
     これにより006.memcachedリグレッションテストが失敗していました。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-09-05 [441f338ab]
    -->
    <para>
     <option>--with-memcached</option>指定なしでコンパイルする際のエラーを修正しました。（Tatsuo Ishii）
    </para>
    <para>
     <option>--with-memcached</option>指定なしでコンパイルするとエラーが発生していました。
     対応として該当コードブロックを #ifdef USE_MEMCACHEDで囲みました。
    </para>
    <para>
     この問題はBo Pengによって報告されました。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-09-04 [9e0324575]
    -->
    <para>
     クエリキャッシュのロックファイルの取り扱い修正を修正しました。（Tatsuo Ishii）
    </para>
    <para>
     クエリキャッシュモジュールは並列制御のため<varname>logdir</varname>にロックファイルを作成しますが、
     メインプロセスがゴミファイルを作成したり、シャットダウン時に削除されない問題がありました。
    </para>
    <para>
     この問題はBo Pengによって報告・分析されました。
    </para>
   </listitem>
  </itemizedlist>
 </sect2>

 <sect2>
  <title>ドキュメント修正</title>
  <itemizedlist>
   <listitem>
    <!--
    2025-09-17 [1a975b539]
    -->
    <para>
     <ulink url="https://www.pgpool.net/docs/latest/ja/html/example-cluster.html">8.2. Pgpool-II + Watchdog Setup Example</ulink>の"PostgreSQLスタンバイ設定"ドキュメントを更新しました。（Taiki Koshino）
    </para>
    <para>
     オンラインリカバリなしでスタンバイを設定する場合、postgresql.auto.confに<varname>primary_conninfo</varname>を書き込まないよう注意を追加しました。
    </para>
    <para>
     ディスカッション: <ulink url="https://github.com/pgpool/pgpool2/issues/67">Follow primary command not fixing postgresql.auto.conf </ulink>
    </para>
   </listitem>

   <listitem>
    <!--
    2025-08-22 [5bd535792]
    -->
    <para>
     watchdog_setupのマニュアルを修正しました。（Tatsuo Ishii）
    </para>
    <para>
     heartbeartがwatchdog_setupに設定されていないと誤記されていた箇所を修正しました。
    </para>
   </listitem>
  </itemizedlist>
 </sect2>

 <sect2>
  <title>回帰テスト修正</title>
  <itemizedlist>
   <listitem>
    <!--
    2025-09-30 [3ddbc64f1]
    -->
    <para>
     023.ssl_connectionをPostgreSQL 18に対応するよう修正しました。（Tatsuo Ishii）
    </para>
    <para>
     PostgreSQL 18でpsqlの\conninfo出力形式が大幅に変更されたため、
     このテストが失敗していました。
     PostgreSQLバージョンに応じてテストスクリプトを修正しました。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-08-31 [3897b7afd]
    -->
    <para>
     039.log_backend_messagesを修正しました。（Tatsuo Ishii）
    </para>
    <para>
     同期コミットパラメータがpgpool.confに誤って設定されていました。
     正しいpostgresql.confに移動し、クラスタリングモードがストリーミングレプリケーションかを確認することでテストを修復しました。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-08-31 [0f19fc60a]
    -->
    <para>
     039.log_backend_messagesテストを安定化しました。（Tatsuo Ishii）
    </para>
    <para>
     テスト中、プライマリに行を挿入後、レプリケーション遅延によりスタンバイで行が見つからない場合がありました。
     <varname>remote_apply</varname>オプションを用いた同期レプリケーションを利用して問題を改善しました。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-08-29 [b4043e6c3]
    -->
    <para>
     010.rewrite_timestampのRubyスクリプトを修正しました。（Tatsuo Ishii）
    </para>
    <para>
     RubyのFile.existsは新しいバージョンで非推奨のため、File.existに置き換えました。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-08-29 [9c901e60a]
    -->
    <para>
     034と075のタイムアウトを調整しました。（Tatsuo Ishii）
    </para>
    <para>
     034.promote_nodeと075.detach_primary_left_down_nodeのスクリプト終了タイムアウトを60秒から120秒に変更し、
     誤エラーが発生する可能性を減らしました。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-08-27 [42b177614]
    -->
    <para>
     023.ssl_connectionにssl_ecdh_curveのテストを追加しました。（Tatsuo Ishii）
    </para>
    <para>
     023.ssl_connectionはssl_ecdh_curveのテストをカバーしていなかったため、
     不正なssl_ecdh_curveパラメータでフロントエンドとpgpool の接続が失敗するか確認しました。
    </para>
   </listitem>
  </itemizedlist>
 </sect2>
</sect1>

<sect1 id="release-4-6-3">
 <title>リリース 4.6.3</title>
 <note>
  <title>リリース日</title>
  <simpara>2025-08-21</simpara>
 </note>

 <sect2>
  <title>変更点</title>
  <itemizedlist>
   <listitem>
    <!--
    2025-06-13 [ebfd2423c]
    -->
    <para>
     バックエンドへの接続プロセスを強化しました。 (Tatsuo Ishii)
    </para>
    <para>
     特定の環境（特に k8s）では、DNS ルックアップが不安定になり、バックエンドプロセスへの接続に失敗します。これは、<function>connect_inet_domain_socket_by_port()</function> 内の <function>getaddrinfo()</function> の呼び出しで発生します。
     この状況を改善するために、<function>getaddrinfo()</function> が EAI_AGAIN で失敗した場合、最大 5 回まで再試行します（再試行ごとに 1 秒間スリープします）。
     <function>connect_inet_domain_socket_by_port()</function> が "retry" 引数を false に設定して呼び出された場合、再試行は行われないことに注意してください。
     ヘルスチェックは、再試行フラグを false に設定して <function>connect_inet_domain_socket_by_port()</function> を呼び出すため、再試行はヘルスチェック自身のパラメータによって制御されます。
    </para>
    <para>
     ディスカッション: <ulink url="https://github.com/pgpool/pgpool2/issues/104">A single DNS lookup failure will trigger backend failover</ulink>
    </para>
   </listitem>
  </itemizedlist>
 </sect2>

 <sect2>
  <title>不具合修正</title>
  <itemizedlist>
   <listitem>
    <!--
    2025-07-25 [75d905ff9]
    -->
    <para>
     watchdog が不適切な NOTICE メッセージを出力する問題を修正しました。 (Tatsuo Ishii)
    </para>
    <para>
     <function>read_ipc_socket_and_process()</function> は、IPCソケットへのコマンド書き込みのたびに、書き込みが成功した場合でも通知メッセージを出力していました。これを修正し、書き込みが失敗した場合にのみ通知メッセージを出力するようにしました。
     <varname>log_min_messages</varname> が notice 以上に設定されている場合にのみメッセージが表示されるため、このバグが発見されていませんでした。
    </para>
    <para>
     ディスカッション: <ulink url="https://github.com/pgpool/pgpool2/issues/121">pgpool IPC socket connection issue</ulink>
    </para>
   </listitem>

   <listitem>
    <!--
    2025-07-19 [d05de5c73]
    -->
    <!--
    2025-07-19 [ed57af34e]
    -->
    <para>
     スタートアップパケットを読んでいるときのメモリーリークを修正しました。(Tatsuo Ishii)
    </para>
    <para>
     pool_push_pending_data でのリソースリークを修正しました。
    </para>
   </listitem>
  </itemizedlist>

  <itemizedlist>
   <listitem>
    <!--
    2025-06-30 [bac455b2f]
    -->
    <para>
     ビッグエンディアンマシン上の scram-sha-256 認証の不具合を修正しました。(Tatsuo Ishii)
    </para>
    <para>
     <literal>scram-sha-256</literal> 認証を実行する際、ハッシュ関数 <function>pg_sha_256_final</function> が使用されます。
     これは <productname>PostgreSQL</productname> からインポートされたもので、プリプロセッサ定義 WORDS_BIGENDIAN を使用してホストマシンのエンディアンを判断します。
     WORDS_BIGENDIAN は configure 時に定義する必要がありますが、<function>pg_sha_256_final</function>（およびその他）が <productname>PostgreSQL</productname> からインポートされた際にこの部分が省略されていました。
     その結果、scram-sha-256 はリトルエンディアンマシンでのみ動作していました。
     configure.ac に AC_C_BIGENDIAN マクロを追加することでこの問題を修正しました。。
    </para>
    <para>
     この問題は Christoph Berg によって報告され、 pranavkaruvally によって分析されました。
    </para>
    <para>
     ディスカッション: <ulink url="https://github.com/pgpool/pgpool2/issues/106">4.6.1 fails on big-endian s390x: backend response with kind 'E' when expecting 'R'</ulink>
    </para>
   </listitem>

   <listitem>
    <!--
    2025-06-23 [2721c7b76]
    -->
    <para>
     ソースコードのタイプミスを修正しました。 (Bo Peng)
    </para>
   </listitem>

   <listitem>
    <!--
    2025-06-14 [f88b1c18f]
    -->
    <para>
     ハートビートデバイスの処理を修正しました。(Tatsuo Ishii)
    </para>
    <para>
     <function>wd_create_hb_recv_socket()</function> と <function>wd_create_hb_send_socket()</function> を修正しました。
     setsockopt(SO_BINDTODEVICE) に struct ifreq を誤って渡すのではなく、NULL で終了するデバイス名文字列を渡すようにしました。
    </para>
    <para>
     ディスカッション: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2025-May/004603.html">[pgpool-hackers: 4602] heartbeat and SO_BINDTODEVICE</ulink>
    </para>
   </listitem>

   <listitem>
    <!--
    2025-06-14 [73bcbd96e]
    -->
    <para>
     heartbeat receiver プロセスでのリソースリークを修正しました。 (Tatsuo Ishii)
    </para>
   </listitem>

   <listitem>
    <!--
    2025-06-09 [4305c42d6]
    -->
    <para>
     ハートビートデバイスの処理を修正しました。(Tatsuo Ishii)
    </para>
    <para>
     <filename>pgpool.conf</filename> の処理中に、<varname>heartbeat_device</varname> が誤って処理され、最初のデバイスが無視されていました。
    </para>
    <para>
     この問題は Bo Peng によって分析されました。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-06-05 [b249a118c]
    -->
    <para>
     hearbeat receiver プロセスが動作しない問題を修正しました。 (Tatsuo Ishii)
    </para>
    <para>
     ハートビートの IPv6 サポートはバージョン 4.6 で追加されましたが、heartbeat receiver プロセスが誤ってループバックアドレスのみにバインドされ、他のノードからの受信が妨げられていました。
     <function>getaddrinfo()</function> に AI_PASSIVE フラグを追加すると、すべてのネットワークインターフェースにバインドされるようになり、この問題は修正されました。
    </para>
    <para>
     この問題は Bo Peng によって分析されました。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-06-02 [06ba7dde4]
    -->
    <para>
     <filename>pgpool.conf</filename>のコメントのタイプミスを修正しました。 (Tatsuo Ishii)
    </para>
   </listitem>
  </itemizedlist>
 </sect2>

 <sect2>
  <title>ドキュメント修正</title>
  <itemizedlist>
   <listitem>
    <!--
    2025-08-15 [a54f5d1ad]
    -->
    <para>
     「8.3. ネイティブレプリケーション/スナップショットアイソレーションモードの構築の例」のドキュメントを改善しました。(Taiki Koshino)
    </para>
    <para>
     サンプルスクリプトのリンクと「事前設定」の説明を改善しました。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-08-04 [e2f24fec8]
    -->
    <para>
     リロードによって反映されないパラメータのドキュメントを修正しました。 (Taiki Koshino)
    </para>
    <para>
     <varname>authentication_timeout</varname> と <varname>memqcache_oiddir</varname> はリロードしても反映されません。
     ドキュメントが「このパラメータはサーバー起動時にのみ設定できます。」に変更されました。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-07-24 [bc5fa5e7e]
    -->
    <!--
    2025-07-23 [1e8963554]
    -->
    <para>
     watchdog リーダーの用語を統一しました。(Tatsuo Ishii)
    </para>
    <para>
     以前は「leader」「active」「coordinater」という用語が、watchdog のリーダーノードを指すために使用されていました。このコミットではこれらを「leader」に統一しました。
     advanced.sgml も修正しました。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-08-06 [31eee18d7]
    -->
    <!--
    2025-07-16 [34b07c2d5]
    -->
    <para>
     サンプルスクリプトを修正しました。(Taiki Koshino)
    </para>
    <para>
     「<ulink url="https://www.pgpool.net/docs/latest/ja/html/example-cluster.html">8.2. Pgpool-II + Watchdogの構築の例</ulink>」のサンプルスクリプトを修正しました。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-06-18 [f4ae9f39e]
    2025-06-18 [7a20dc419]
    -->
    <para>
     ロードバランスの説明で論理レプリケーションモードと Slony モードが抜けている問題を修正しました(Tatsuo Ishii)
    </para>
   </listitem>

   <listitem>
    <!--
    2025-06-18 [9d2e4e692]
    -->
    <para>
     <xref linkend="pcp-node-info">のドキュメントを改善しました。 (Bo Peng)
    </para>
    <para>
     「<varname>replication_state</varname>」と「<varname>replication_sync_state</varname>」を正しく表示するには、各 <varname>backend_application_nameX</varname> が <varname>primary_conninfo</varname> の <varname>application_name</varname> に指定された値と一致する必要があることを明確にしました。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-06-08 [59f9df005]
    -->
    <para>
     カーネルの資源に関するセクションを追加しました。 (Tatsuo Ishii)
    </para>
    <para>
     <productname>Pgpool-II</productname> は System V の共有メモリとセマフォを使用します。
     要件についてはドキュメントを参照することをお勧めします。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-06-07 [40617fd90]
    -->
    <para>
     configure の <option>--with-ldap</option> オプションの説明を追加しました。(Tatsuo Ishii)
    </para>
    <para>
     これは LDAPサポートがv4.2で導入されたときに見落としていました。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-06-05 [9ee9eb164]
    -->
    <para>
     $PGDATA をエスケープするよう、「8.2. <productname>Pgpool-II</productname> + Watchdogの構築の例」のコマンドを修正しました。(Bo Peng)
    </para>
   </listitem>

   <listitem>
    <!--
    2025-06-04 [ff60bf930]
    -->
    <para>
     <productname>Pgpool-II</productname> でサポートされているプラットフォームを明確にしました。 (Tatsuo Ishii)
    </para>
   </listitem>

   <listitem>
    <!--
    2025-06-03 [cc4da5979]
    -->
    <para>
     <xref linkend="guc-child-life-time"> のドキュメントを改善しました。 (Tatsuo Ishii)
    </para>
   </listitem>
  </itemizedlist>
 </sect2>

 <sect2>
  <title>回帰テスト修正</title>
  <itemizedlist>
   <listitem>
    <!--
    2025-06-08 [78e45decf]
    -->
    <para>
     029.cert_passphrase 回帰テストを安定化しました。 (Tatsuo Ishii)
    </para>
    <para>
     <varname>ssl_passphrase_command</varname> が有効でない場合、エラーメッセージは通常「bad decrypt」ですが、「wrong tag」となる場合もありました。
    </para>
   </listitem>
  </itemizedlist>
 </sect2>
</sect1>

<sect1 id="release-4-6-2">
 <title>リリース 4.6.2</title>
 <note>
  <title>リリース日</title>
  <simpara>2025-05-30</simpara>
 </note>

 <sect2>
  <title>変更点</title>
  <itemizedlist>
   <listitem>
    <!--
    2025-05-17 [2c84c4358]
    -->
    <para>
     認証失敗時に不要な情報を表示しないように修正しました。(Tatsuo Ishii)
    </para>
    <para>
     以前は、クライアント認証に失敗した際に「password size does not match」というメッセージが表示されていました。
     これは攻撃者がパスワードを推測する手助けとなる可能性がありました。
     このメッセージを「password does not match」に変更しました。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-05-15 [f49d239a4]
    -->
    <para>
     pcpクライアントがIPv6アドレスに接続できるようなりました。(Tatsuo Ishii)
    </para>
    <para>
     すでにpcpサーバはIPv6アドレスへの接続を許可していましたが、これまでpcpクライアントは接続できませんでした。
     今回の変更により、pcpクライアントもIPv6アドレスへ接続可能になります。
    </para>
    <para>
     ディスカッション: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2025-May/009484.html">[pgpool-general: 9481] Does pgpool 4.6.0 support pure ipv6 configuration?</ulink>
    </para>
   </listitem>
  </itemizedlist>
 </sect2>

 <sect2>
  <title>不具合修正</title>
  <itemizedlist>
   <listitem>
    <!--
    2025-05-27 [61223a1e4]
    -->
    <para>
     IPv6が無効化されている環境におけるwatchdog受信用ソケット作成に関する不具合を修正しました。(<ulink url="https://github.com/pgpool/pgpool2/issues/99">#99</ulink>) (Tatsuo Ishii)
    </para>
    <para>
     IPv6ネットワークが利用できない場合、watchdogプロセスが起動しない問題がありました。
     従来、<function>wd_create_recv_socket()</function>関数はIPv6ソケットの作成や処理に失敗するとelog(ERROR)を発行していました。
     しかし、<function>wd_create_recv_socket()</function>が呼ばれる時点では例外スタックが確立されておらず、elogは<literal>ERROR</literal>を<literal>FATAL</literal>に変換してしまいます。
     これによりwatchdogプロセスが終了し、その結果pgpoolプロセスも終了してしまいました。
     この問題を修正するために、elog(ERROR)の呼び出しをelog(LOG)に変更しました。
    </para>
   </listitem>
  </itemizedlist>
 </sect2>
</sect1>

<sect1 id="release-4-6-1">
 <title>リリース 4.6.1</title>
 <note>
  <title>リリース日</title>
  <simpara>2025-05-15</simpara>
 </note>

 <sect2>
  <title>概要</title>
  <para>
   このリリースには、セキュリティ修正が含まれています。
  </para>
  <para>
   <productname>Pgpool-II</productname>のクライアント認証メカニズムには認証バイパスの脆弱性があります。
   本来であれば認証が必要な場合でも、認証処理がスキップされてしまう可能性があります。
   この脆弱性を悪用することで、攻撃者が任意のユーザとしてログインし、データベース内の情報を参照・改ざんしたり、データベースを停止させたりすることができる可能性があります。(CVE-2025-46801)
  </para>
  <para>
   なお、本脆弱性の影響を受けるのは、下記のパターン1から3いずれかの条件を満たす場合に限られます。
  </para>
  <itemizedlist>
   <listitem>
    <para>
     パターン 1：次の条件をすべて満たす場合、本脆弱性の影響を受ける可能性があります。
    </para>
    <itemizedlist>
     <listitem>
      <para>
       <filename>pool_hba.conf</filename>で<literal>password</literal>認証方式を使用している
      </para>
     </listitem>
     <listitem>
      <para>
       allow_clear_text_frontend_auth = off
      </para>
     </listitem>
     <listitem>
      <para>
       <filename>pool_passwd</filename>に対象ユーザのパスワードが設定されていない
      </para>
     </listitem>
     <listitem>
      <para>
       <filename>pg_hba.conf</filename>で<literal>scram-sha-256</literal>または<literal>md5</literal>認証方式を使用している
      </para>
     </listitem>
    </itemizedlist>
   </listitem>

   <listitem>
    <para>
     パターン 2：次の条件をすべて満たす場合、本脆弱性の影響を受ける可能性があります。
    </para>
    <itemizedlist>
     <listitem>
      <para>
       enable_pool_hba = off
      </para>
     </listitem>
     <listitem>
      <para>
       <filename>pg_hba.conf</filename>で<literal>password</literal>、<literal>pam</literal>、<literal>ldap</literal>のいずれかの認証方式を使用している
      </para>
     </listitem>
    </itemizedlist>
   </listitem>

   <listitem>
    <para>
     パターン 3：次の条件をすべて満たす場合、本脆弱性の影響を受ける可能性があります。
    </para>
    <itemizedlist>
     <listitem>
      <para>
       rawモードを使用している (backend_clustering_mode = 'raw')
      </para>
     </listitem>
     <listitem>
      <para>
       <filename>pool_hba.conf</filename>で<literal>md5</literal>認証方式を使用している
      </para>
     </listitem>
     <listitem>
      <para>
       allow_clear_text_frontend_auth = off
      </para>
     </listitem>
     <listitem>
      <para>
       <filename>pool_passwd</filename>に対象ユーザのパスワードがテキストまたはAES形式で登録されている
      </para>
     </listitem>
     <listitem>
      <para>
       <filename>pg_hba.conf</filename>で<literal>password</literal>、<literal>pam</literal>、<literal>ldap</literal>のいずれかの認証方式を使用している
      </para>
     </listitem>
    </itemizedlist>
   </listitem>
  </itemizedlist>
  <para>
   この脆弱性の影響を受けるのは、<productname>Pgpool-II</productname> 4.0系および4.1系のすべてのバージョン、4.2.0-4.2.21、4.3.0-4.3.14、4.4.0-4.4.11、4.5.0-4.5.6、4.6.0です。
   <productname>Pgpool-II</productname> 4.6.1、4.5.7、4.4.12、4.3.15、4.2.22以降へのアップグレードを強くお勧めします。
   それができない場合は、発生条件パターンに当てはまらない設定の組み合わせに変更してください。
  </para>
 </sect2>

 <sect2>
  <title>変更点</title>
  <itemizedlist>
   <listitem>
    <!--
    2025-05-02 [32dee13dd]
    -->
    <para>
     設定ファイルにメジャーバージョンを追加しました。 (Bo Peng)
    </para>
   </listitem>
  </itemizedlist>
 </sect2>

 <sect2>
  <title>不具合修正</title>
  <itemizedlist>
   <listitem>
    <!--
    2025-05-13 [d92a7e2c1]
    -->
    <para>
     クライアント認証が正しく実行されない場合があるのを修正しました。(Tatsuo Ishii)
    </para>
    <para>
     enable_pool_hbaがonで、auth methodが"password"、pool_passwdにパスワードが登録されておらず、pg_hba.confの認証方式が"scram-sha-256"か"md5"の場合、クライアントが最初にpgpoolに接続したときには認証が期待通りに実行されます。
     しかし、クライアントがキャッシュされたコネクションに接続すると、任意のパスワードが通ってしまいます。
    </para>
    <para>
     また、enable_pool_hba = offのいくつかのケースでは、本来パスワードが聞かれるはずが、最初からパスワードが聞かれない、あるいはキャッシュされたコネクションに接続した時にはパスワードが聞かれないことがありました。
    </para>
    <para>
     上記を修正するのに加え、以下の変更を行いました。
    </para>
    <itemizedlist>
     <listitem>
      <para>
       認証コードを単純化するために、PostgreSQLが1台の時のコードパスを削除しました。
      </para>
     </listitem>
     <listitem>
      <para>
       crypt認証のサポートをフロントエンドとバックエンドから削除しました。
       この機能はドキュメントに書かれておらず、テストもされていませんでした。
       また、crypt認証はPostgreSQLではだいぶ以前(8.4, 2009)に削除されています。
      </para>
     </listitem>
     <listitem>
      <para>
       新しい回帰テストの"040.client_auth"を追加しました。
       このテストは、CSV形式のテスト設定ファイルを使って、包括的なクライアント認証のテストを実施します。
      </para>
     </listitem>
    </itemizedlist>
   </listitem>
   <listitem>
    <!--
    2025-05-08 [e3451b560]
    -->
    <para>
     クエリキャッシュにおける、古くからあるバインド時のバグを修正しました。(Tatsuo Ishii)
    </para>
    <para>
     名前付きステートメントを準備すると、バインド後にパースメッセージなしで実行することが可能です。
     問題は、実行時またはCOMMIT時にクエリキャッシュを無効化するために必要なテーブルOIDが、パースメッセージ処理（Parse()）でのみ収集されていたことです。
     そのため、前回の実行後にパースなしでバインドを実行すると、テーブルOIDが収集されず、pgpoolはクエリキャッシュの無効化に失敗していました。
     バインド時にもテーブルOIDを収集するよう修正しました。
     006.memqcacheに回帰テストを追加しました。
    </para>
    <para>
     この問題はEmond Achilleas Mantziosによって報告され、テストプログラムが提供されました。
    </para>
    <para>
     ディスカッション: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2025-April/009430.html">[pgpool-general: 9427] Clarification on query results cache visibility</ulink>
    </para>
   </listitem>

   <listitem>
    <!--
    2025-05-02 [1dfacffed]
    -->
    <para>
     クエリキャッシュの無効化に失敗する問題を修正しました。 (Tatsuo Ishii)
    </para>
    <para>
     実行メッセージを受信すると、pgpoolは最大行数パラメータをチェックします。この値が0でない場合、pgpoolはpool_handle_query_cache()にクエリキャッシュを作成しないよう指示するために、"partial_fetch"フラグを設定します。
     問題は、コミット2a99aa5d1が、INSERT/UPDATE/DELETEであっても実行メッセージパラメータが0以外（ほとんどの場合1）に設定されpgpoolがSELECT以外の場合でもこのフラグを設定することを見落としていることです。
     この結果、このフラグがtrueの場合、pool_handle_query_cache()内の後続のコードでキャッシュの無効化がスキップされるため、クエリキャッシュの無効化に失敗していました。
     フラグを設定する前にクエリが読み取り専用のSELECTであるかどうかを確認するようにExecute()を修正しました。
    </para>
    <para>
     この問題はEmond Achilleas Mantziosによって報告され、テストプログラムが提供されました。
    </para>
    <para>
     ディスカッション: <ulink url="https://www.pgpool.net/pipermail/pgpool-general/2025-April/009430.html">[pgpool-general: 9427] Clarification on query results cache visibility</ulink>
    </para>
   </listitem>

   <listitem>
    <!--
    2025-05-05 [5947ba418]
    -->
    <para>
     OpenBSDへ移植する際の問題を修正しました。 (Tatsuo Ishii)
    </para>
    <para>
     ディスカッション: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2025-May/004583.html">[pgpool-hackers: 4582] Make pgpool build on OpenBSD</ulink>
    </para>
    <para>
     このパッチはMartijn van Durenによって作成されました。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-05-01 [14c94473b]
    -->
    <para>
     json_writerが特殊文字を正確にエンコードできない問題を修正しました。(Bo Peng)
    </para>
    <para>
     <xref linkend="guc-wd-authkey">が特殊文字を含んでいる状態でwatchdogを起動すると<productname>Pgpool-II</productname>がクラッシュしていました。
    </para>
    <para>
     このパッチはMartijn van Durenによって作成され、Bo Pengによって微修正されました。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-03-04 [e1e32536f]
    -->
    <para>
     リロード時に<xref linkend="guc-pool-passwd">を開くようにストリーミングレプリケーションチェックとヘルスチェックプロセスを修正しました。(Tatsuo Ishii)
    </para>
    <para>
     ストリーミングレプリケーションチェックとヘルスチェックはリロード前に<xref linkend="guc-pool-passwd">を開いていませんでした。
     もし<xref linkend="guc-sr-check-password">か<xref linkend="guc-health-check-password">が空文字列の時は、<xref linkend="guc-pool-passwd">からパスワードを得ます。
     そのためこれらのプロセスはリロード時に<xref linkend="guc-pool-passwd">の古いコンテンツを読み取ります。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-04-27 [5f4d2d683]
    -->
    <para>
     IPv6が無効化されている環境におけるハートビート処理の不具合を修正しました。(<ulink url="https://github.com/pgpool/pgpool2/issues/99">#99</ulink>) (Tatsuo Ishii)
    </para>
    <para>
     <productname>Pgpool-II</productname> 4.6.0からは、ハートビートプロセスはIPv6受信機ソケットに対応しています。
     しかし、IPv6が機能していないときこれらのプロセスは機能しません。
     <productname>Pgpool-II</productname>のメインプロセスや<productname>PostgreSQL</productname>のように、IPv4でも通常通り稼働するべきです。
    </para>
    <para>
     ディスカッション: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2025-April/004579.html">[pgpool-hackers: 4578] Fix IPv6 in heatbeat</ulink>
    </para>
   </listitem>
  </itemizedlist>
 </sect2>

 <sect2>
  <title>ドキュメント修正</title>
  <itemizedlist>
   <listitem>
    <!--
    2025-05-09 [057e1131c]
    -->
    <para>
     クエリキャッシュのドキュメントをを改善しました。(Tatsuo Ishii)
    </para>
    <para>
     Pgpool は、TIMESTAMP WITH TIMEZONE、TIME WITH TIMEZONEを返す関数を呼び出すクエリのキャッシュを拒否します。
     同じ名前の関数が複数あり、そのうちの 1 つがTIMESTAMP WITH TIMEZONE、TIME WITH TIMEZONEを返す場合、たとえそのうちの 1 つがこれらのデータ型を返さなくても、Pgpoolはキャッシュを拒否します。
     そのため、この問題に関するメモと回避策を追加しました。
    </para>
   </listitem>

   <listitem>
    <!--
    2025-04-24 [e50114280]
    -->
    <para>
     <xref linkend="guc-connection-life-time">の説明を改善しました。(Tatsuo Ishii)
    </para>
    <para>
     <xref linkend="guc-connection-life-time">が計算されるタイミングは、接続キャッシュを保持しているプロセスからクライアントが切断されたときであることを追記しました。
    </para>
    <para>
      ディスカッション: <ulink url="https://www.pgpool.net/pipermail/pgpool-hackers/2025-April/004578.html">[pgpool-hackers: 4577] Doc: enhance the description on connection_life_time</ulink>
    </para>
   </listitem>

   <listitem>
    <!--
    2025-03-05 [a3086943f]
    -->
    <para>
     <xref linkend="guc-sr-check-user">についての説明を改善しました。 (Tatsuo Ishii)
    </para>
    <para>
     スーパーユーザーか<literal>pg_monitor</literal>グループであるべきです。
    </para>
   </listitem>
  </itemizedlist>
 </sect2>

 <sect2>
  <title>回帰テスト修正</title>
  <itemizedlist>
   <listitem>
    <!--
    2025-04-01 [7969146b7]
    2025-03-27 [05a727e8d]
    -->
    <para>
     回帰テストで複数のソケットディレクトリを使用できるように修正しました。(Taiki Koshino, Tatsuo Ishii, Bo Peng)
    </para>
   </listitem>
  </itemizedlist>
 </sect2>
</sect1>

<sect1 id="release-4-6-0">
 <title>リリース 4.6.0</title>
 <note>
  <title>リリース日</title>
  <simpara>2025-02-28</simpara>
 </note>

 <sect2>
  <title>概要</title>
  <para>
   このリリースでは、ログ取得や<productname>Pgpool-II</productname>の管理のための便利な機能を追加しました。
   新しいPCPコマンドを使って、<productname>Pgpool-II</productname>を再起動したり、シグナルを送ることなくログをローテートできます。
   <xref linkend="guc-logging-collector">関連のパラメータが設定ファイルの再読込で変更できるようになりました。
   また、<productname>Pgpool-II</productname>を再起動せずにクエリキャッシュを削除するための新しいPCPコマンドが追加されました。
   他の新しいクエリキャッシュの機能としては、クエリキャッシュのエントリを強制的に作成すること、指定したクエリキャッシュのエントリを削除できるようになりました。
   新しい設定パラメータの<xref linkend="guc-log-backend-messages">により、<productname>Pgpool-II</productname>と<productname>PostgreSQL</productname>の間の通信を容易に分析することができるようになりました。
   SQLパーサは、<productname>PostgreSQL 17</productname>バージョンと同期していつものように更新されました。
   最後に、watchdogのhostnameとheartbeat_hostname設定パラメータでIPv6が使えるようになりました。
  </para>

  <para>
   主な機能の改良は以下の通りです。
  </para>

  <itemizedlist>

   <listitem>
    <para>
     ログのローテーションを指示する<link linkend="pcp-log-rotate">新しいPCPコマンド</link>
    </para>
   </listitem>

   <listitem>
    <para>
     リロードによる<xref linkend="guc-logging-collector">関連のパラメータの変更
    </para>
   </listitem>

   <listitem>
    <para>
     クエリキャッシュを削除する<link linkend="pcp-invalidate-query-cache">新しいPCPコマンド</link>
    </para>
   </listitem>

   <listitem>
    <para>
     <link linkend="runtime-in-memory-query-cache">クエリキャッシュ</link>の強制的な作成
    </para>
   </listitem>

   <listitem>
    <para>
     新しい<link linkend="sql-pgpool-set-cache">PGPOOL SET CACHE DELETE</link>コマンド
    </para>
   </listitem>

   <listitem>
    <para>
     新しい設定パラメータ<xref linkend="guc-log-backend-messages">
    </para>
   </listitem>

   <listitem>
    <para>
     PostgreSQL 17のSQLパーサの導入
    </para>
   </listitem>

   <listitem>
    <para>
     watchdogの<xref linkend="guc-hostname">と<xref linkend="guc-heartbeat-hostname">パラメータのIPv6対応
    </para>
   </listitem>

  </itemizedlist>
 </sect2>

 <sect2 id="migration-4-6-0">
  <title>バージョン4.6への移行</title>
  <itemizedlist>

   <listitem>
    <para>
     <xref linkend="guc-health-check-user">、<xref linkend="guc-recovery-user">、<xref linkend="guc-sr-check-user">、<xref linkend="guc-wd-lifecheck-user">のデフォルト値が'nobody'から''(空文字)に変更されました。
     4.6ではそれらに適切な値をセットする必要があります。さもなければエラーが生じます。
    </para>
   </listitem>

   <listitem>
    <para>
     文字列型の設定パラメータ、たとえば<xref linkend="guc-unix-socket-directories">や<xref linkend="guc-pcp-socket-dir">で、先頭/末尾の空白を無視するようにしました。
    </para>
   </listitem>

   <listitem>
    <para>
     <xref linkend="guc-child-life-time">や<xref linkend="guc-child-max-connections">を設定していると以下のログメッセージが記録されました。これらは正常時のメッセージであるため、DEBUG1にダウングレードされました。
     <programlisting>
  reaper handler
  reaper handler: exiting normally
     </programlisting>
    </para>
   </listitem>

  </itemizedlist>
 </sect2>

 <sect2>
  <title>変更点</title>
  <itemizedlist>

   <listitem>
    <!--
    2024-08-05 [55036fd6c]
    -->
    <para>
     ログをローテートする<xref linkend="pcp-log-rotate">を追加しました。(Bo Peng)
    </para>
   </listitem>

   <listitem>
    <!--
    2024-12-16 [5752de991]
    -->
    <para>
     <productname>Pgpool-II</productname>の設定を再ロードすることにより、<xref linkend="guc-logging-collector">関連のパラメータを変更できるようにしました。 (Bo Peng)
    </para>
    <para>
     以下の<xref linkend="guc-logging-collector">関連のパラメータは再ロードで変更できます。
     <itemizedlist>
      <listitem>
       <para>
	log_truncate_on_rotation
       </para>
      </listitem>
      <listitem>
       <para>
	log_directory
       </para>
      </listitem>
      <listitem>
       <para>
	log_filename
       </para>
      </listitem>
      <listitem>
       <para>
	log_rotation_age
       </para>
      </listitem>
      <listitem>
       <para>
	log_rotation_size
       </para>
      </listitem>
      <listitem>
       <para>
	log_file_mode
       </para>
      </listitem>
     </itemizedlist>
    </para>
   </listitem>

   <listitem>
    <!--
    2024-10-14 [09d4e59c5]
    -->
    <para>
     クエリキャッシュを削除する<xref linkend="pcp-invalidate-query-cache">を追加しました。 (Tatsuo Ishii)
    </para>
   </listitem>

   <listitem>
    <!--
    2024-10-21 [c5c1ca6b3]
    -->
    <para>
     指定のクエリキャッシュを削除する<link linkend="sql-pgpool-set-cache">PGPOOL SET CACHE DELETE</link>コマンドを追加しました。(Tatsuo Ishii)
    </para>
   </listitem>

   <listitem>
    <!--
    2024-11-25 [6d4106f9c]
    -->
    <para>
     バックエンドからのプロトコルメッセージをログする新しい設定パラメータの<xref linkend="guc-log-backend-messages">を追加しました。(Tatsuo Ishii)
    </para>
   </listitem>

   <listitem>
    <!--
    2024-10-21 [b58a3c630]
    -->
    <para>
     <productname>PostgreSQL</productname> 17の新しいパーサを取り込みました。(Bo Peng)
    </para>
    <para>
     <productname>PostgreSQL</productname> 17パーサの変更点には以下のものがあります。

     <programlisting>
- MERGEでNOT MATCHED BY SOURCEとRETURNING句が使えるようになりました。

    MERGE INTO ... WHEN NOT MATCHED BY SOURCE ...
    MERGE INTO ... RETURNING ...

- 新しいCOPYオプションのON_ERROR ignoreとLOG_VERBOSITYが追加されました。

  COPY ... WITH (ON_ERROR ignore);
  COPY ... WITH (LOG_VERBOSITY verbose);

- すべての列に対して'*'を使ってCOPY FROMオプションのFORCE_NOT_NULLとFORCE_NULLが指定できるようになりました。

  COPY ... WITH (FORCE_NOT_NULL *);
  COPY ... WITH (FORCE_NULL *);

- EXPLAINにオプションのSERIALIZEとMEMORYが追加されました。

  EXPLAIN (MEMORY) ...
  EXPLAIN (ANALYZE, SERIALIZE ...) ...

- ALTER TABLEでSET STATISTICS DEFAULTを使って指定の列をデフォルトの統計上情報ターゲットにできるようになりました。

  ALTER TABLE ... ALTER COLUMN ... SET STATISTICS DEFAULT;

- ALTER TABLEで列の生成式を変更できるようになりました。

  ALTER TABLE ... ALTER COLUMN ... SET EXPRESSION;

- ALTER TABLEで .. SET ACCESS METHODのデフォルトを指定できるようになりました。

  ALTER TABLE ... SET ACCESS METHOD new_access_method DEFAULT;

- イベントトリガでログインイベントを扱えるようになりました。

  CREATE EVENT TRIGGER ... ON login ...

- イベントトリガでREINDEXを扱えるようになりました。
     </programlisting>
    </para>
   </listitem>

   <listitem>
    <!--
    2024-08-27 [65dbbe7a0]
    -->
    <para>
     パラメータの<xref linkend="guc-hostname">と<xref linkend="guc-heartbeat-hostname">でIPv6をサポートしました。(Kwangwon Seo)
    </para>
   </listitem>

   <listitem>
    <!--
    2024-05-09 [7c5ef8d09]
    -->
    <para>
     文字列型の設定パラメータで、先頭/末尾の空白を無視するようにしました。(Bo Peng)
    </para>
    <para>
     文字列型のパラメータ（たとえば<xref linkend="guc-unix-socket-directories">や<xref linkend="guc-pcp-socket-dir">）に空白が含まれると、起動に失敗することがありました。
    </para>
   </listitem>

   <listitem>
    <!--
    2024-08-05 [2cde5031a]
    -->
    <para>
     reaper handlerのログをダウングレードしました。(Bo Peng)
    </para>
    <para>
     以下のメッセージは、たとえばchild_life_timeやchild_max_connectionsの設定で子プロセスが終了する時に現れます。
     これらは正常なメッセージなので、DEBUG1にダウングレードしました。
     <programlisting>
  reaper handler
  reaper handler: exiting normally
     </programlisting>
    </para>
   </listitem>

   <listitem>
    <!--
    2024-06-12 [a9d1df446]
    -->
    <para>
     拡張問い合わせプロトコルを処理する時の不必要なメモリ獲得を防ぐようにしました。(Tatsuo Ishii)
     これは、ストリーミングレプリケーションモードに対してのみ関係します。
    </para>
   </listitem>

  </itemizedlist>
 </sect2>

 <sect2>
  <title>バグ修正</title>
  <itemizedlist>
   <listitem>
    <para>
     このリリースでは、他のマイナーリリースと同じバグ修正がすでに適用されています。
     これらの修正の詳細については、<xref linkend="release">を参照してください。
    </para>
   </listitem>
  </itemizedlist>
 </sect2>

</sect1>
