| Pgpool-II 4.7.2 文書 | |||
|---|---|---|---|
| 前のページ | 上に戻る | 付録 A. リリースノート | 次のページ |
リリース日: 2026-06-04
pgprotoで改行データを扱えるようにしました。(Tatsuo Ishii)
現在は\nが改行として認識されます。 これはCOPYに必要な修正です。
watchdogのリーダーノードが初期値-2を報告した場合にローカルのprimary_node_idを維持するようにしました。(Tatsuo Ishii)
すべてのpgpoolノードを同時に再起動した際に、スタンバイノードが有効なprimary_node_idを初期値-2値で上書きし、未初期化状態のままになる問題を修正しました。 この修正により、リーダーが初期値-2を報告した場合はローカルのprimary_node_idを維持するようになりました。
この問題はEmond PapegaaijとClaude Codeによって報告されました。
elog(DEBUG)内でpool_get_transaction_isolation()を呼び出さないように修正しました。(Tatsuo Ishii)
where_to_send_main_replica()およびwhere_to_send_native_replication()のDEBUGログ出力が原因で、アボート状態のトランザクションでFATALエラーが発生する問題を修正しました。
DEBUGログ内で呼び出していたpool_get_transaction_isolation()が、内部でdo_query()を実行していたことが原因です。
この修正によりDEBUGログからこれらの呼び出しを削除しました。
アボート状態のトランザクションでの空クエリ処理を修正しました。(Tatsuo Ishii)
アボート状態のトランザクションで空クエリが誤ってエラーになる問題を修正しました。
空クエリはアボート状態のトランザクションでも許可されるべきですが、以前のコミットによりcheck_transaction_state_and_abort()が空クエリを拒否していました。
この修正により、SimpleQuery()で空クエリを検出し、チェックを通さないようにしました。
この問題はRonaldo Raivilによって報告されました。
ssl_dh_params_fileの説明を修正しました。(Tatsuo Ishii)
パラメータが空の場合だけでなく、不正なパラメータが指定された場合も、組み込みのデフォルト値にフォールバックするようになっていました。
PCPのメインプロセスが再起動時に子プロセスのPIDを保持するように修正しました。(Tatsuo Ishii)
フェイルオーバー/フェイルバック時にPCPのメインプロセスが再起動すると、子PCPワーカープロセスのPID一覧を失ってしまう問題を修正しました。 その結果、pcp_promote_nodeなどのコマンドが無限にハングする可能性がありました。 この修正により、PCPワーカープロセスのPIDを共有メモリに保持し、PCPのメインプロセス再起動後も利用できるようにしました。
この問題はTaiki Koshinoによって報告されました。
ディスカッション: Problem with pcp process
MERGE文使用時にクエリキャッシュを無効化するように修正しました。(Tatsuo Ishii)
MERGEはPostgreSQL 15で導入され、Pgpool-II 4.4ではPostgreSQL 15のパーサを取り込んでいました。 しかしクエリキャッシュサブモジュールに考慮漏れがあり、MERGE文実行時にクエリキャッシュが無効化されていませんでした。
この問題はNadav Shatzによって報告されました。
ディスカッション: Re: Proposal: Recent mutated table tracking in memory
SSLモジュールでのメモリリークを修正しました。(Tatsuo Ishii)
不正なDHパラメータが指定された場合に、load_dh_file()でメモリリークが発生する問題を修正しました。
この関数はPEM_read_DHparams()が返したメモリを解放していませんでした。
また同じファイル内のコピーライト表示を修正し、元のPostgreSQLのコピーライトを保持するようにしました。
ディスカッション: Memory leak in SSL module
SET transaction_read_only = 0の誤ったルーティングを修正しました。(Bo Peng)
SET transaction_read_only = 0がstandbyノードに誤って送られ、クエリエラーが発生する問題を修正しました。 また、不適切なbool型のret = POOL_BOTHを適切なenum型に修正しました。
この問題はliujinyang-highgoによって報告されました。
ディスカッション: set command ‘set transaction_read_only = 0;‘ routed to standby node and execute failed.
where_to_send_main_replica()の不要なSTREAMチェックを削除しました。(Tatsuo Ishii)
このチェックは既にcheck_replication_delay()で行われています。
セッションローカルのリレーションのキャッシュの処理を修正しました。(Tatsuo Ishii)
pool_search_relcache()において、セッションローカルのリレーションのキャッシュが誤って共有リレーションのキャッシュに登録される問題を修正しました。
一時テーブル情報が共有リレーションのキャッシュに登録されることで、後続クエリが古いキャッシュ情報を使用し、クエリが誤ったノードにルーティングされる可能性がありました。
この修正により、セッションローカルのキャッシュの一時テーブル情報は共有リレーションのキャッシュに登録しないようにしました。
pool_search_relcache()のロック解放漏れを修正しました。(Tatsuo Ishii)
共有リレーションのキャッシュ更新時に、排他ロックを再取得した後のロック状態が正しく更新されず、共有メモリのロックが解放されない可能性がありました。 また、分かりづらい変数名lockedをlocked_by_othersに変更し、不要なper_node_statement_log出力も修正しました。
フォーク前に不要なリッスン中のソケットを閉じるようにしました。(Tatsuo Ishii)
フォークされた子プロセスが不要なpgpoolおよびPCPがリッスン中のソケットを継承してしまう問題を修正しました。
以前はpcpのメインプロセス、ヘルスチェックプロセス、ライフチェックプロセスなどが使用しないリッスン中のソケットを保持していました。
その結果、次回pgpool起動時にポートのバインドに失敗する可能性がありました。
この修正により、close_listening_sockets()を使用して、
フォーク後に不要なリッスン中のソケットを閉じるようにしました。
ディスカッション: Close listening socokets before forking
ignore_leading_white_spaceおよびallow_sql_commentsのドキュメントを修正しました。(Tatsuo Ishii)
デフォルト値の説明が不足していました。
以前のコミットに対する001.load_balanceテストを追加しました。(Tatsuo Ishii)