ストリーミングレプリケーションの遅れのチェックのためにPostgreSQLに接続できなかった時に誤ったメッセージを出していました。health_check_userはこの目的のために使われていないので、これは誤りです。19a4ea9215da0b61728741fc0da2271958b09238)で行われた修正と同じものです。strncpy()が使われている箇所が複数あり、そこではコピー長とバッファサイズが同じであるケースが考慮されていません。このため、コピー後の文字列がNULL終端されていない可能性があり、多くの問題を後で引き起こすことになります。この問題を修正するために、ほとんどの箇所をstrlcpy()で置き換えました。Frostから以下のメールで報告された問題が解決されました。正しくバックエンドの状態を読み取れない問題です。-0700Windows環境でのみ必要なPGDLLIMPORTIを削除しました。これはgccを使わない環境で問題を引き起こします。Ahmedさんが提供しました。概要このバージョンは3.1系列の最初の版で、3.0系からの「メジャーバージョンアップ」にあたります。互換性のない変更insert_lockのロック方法を変更しました。以前のinsert_lockは、シーケンステーブルに対して行ロックを行いましたが、現在は、pgpool_catalog.insert_lockテーブルに対して行ロックを行います。その理由は、シーケンステーブルに対するロックが内部エラーを引き起こすため、PostgreSQLのコア開発者がそれを許可しないことを決定したためです。したがって、pgpool-II経由でアクセスするすべてのデータベースにinsert_lockテーブルをあらかじめ作成しておく必要があります。insert_lockテーブルが存在しない場合は、挿入対象のテーブルに対してロックを行います。2.2と2.3シリーズのinsert_lockと同じ動作です。過去のバージョンと互換性のあるinsert_lockを使用したい場合は、configureオプション(--enable-sequence-lock,--enable-table-lock)で設定できます(Kitagawa)backend_socket_dirパラメータを廃止しました。その代わりに、backend_hostnameが'/'で始まるならば、それをUNIXドメインへのパスとみなします。backend_hostnameが空ならば、デフォルトのUNIXドメインパス(/tmp)が使われます。これは、libpqインタフェースの規約に従います。Rorthaisさんから頂きました。フェイルオーバー時にpgpool_walrecrunning()を使用せず、プライマリノードへの昇格が完了するまで待つようになりました。関数を使用しない理由はプライマリノードを確実に見つけることができないためです。setval)の扱いをblack/white_function_listの設定に完全に従うように変更しました。以前、それらは常に書き込み関数として扱われていました(Kitagawa)新機能syslogに対応しました。Lelargeさんがレビューと編集をしました。9.0で導入されたapplication_nameに対応しました。コネクションが再利用されたときに、スタートアップパケットのapplication_nameをバックエンドへ送信し、パラメータステータスをフロントエンドに返します(Tatsuo)pgpool-II内部で使用するシステムカタログキャッシュの有効時間を、秒単位で指定できる設定項目relcache_expireが追加されました。TABLEによってテーブル定義が変更された際に、もはや有効でない結果を利用してしまうリスクが軽減されます。(Tatsuo)follow_master_commandパラメータを追加しました。このパラメータには、マスタースレーブモードのストリーミングレプリケーション構成においてマスタノードがフェイルオーバーした後に実行されるコマンドを指定します。Daroldさんから頂きました。pcp_promote_nodeコマンドを追加しました。このコマンドはpgpool-IIに対して新しいマスタノードへの昇格を行います。これは、マスタースレーブモードのストリーミングレプリケーション構成のみで使用できます。Daroldさんから頂きました。pcp_pool_statusコマンドを追加しました。APIも追加されています。Rorthaisさんから頂きました。バックエンドごとのパラメータ"backend_flag"を追加しました。これは、バックエンドごとの動作を制御します。今は"ALLOW_TO_FAILOVER"または"DISALLOW_TO_FAILOVER"が指定できます(Tatsuo)health_check_passwordパラメータを追加しました。Thauvin)sr_check_period、sr_check_user、sr_check_passwordパラメータを追加しました。これらは、ストリーミングレプリケーションの遅延チェックとプライマリノードの決定に使用されます(Tatsuo)pg_md5コマンドに--username(または-u)オプションを追加しました。これは、UNIXアカウントを持たないユーザの管理を可能にします。Thauvin)pgpool_adm関数をpgpool_adm/に追加しました。Thauvin)マスタースレーブモードにおいて、unloggedテーブルに対するSELECTは、常にマスター(primary)で実行されるようになりました(Kitagawa)バグ修正スタンバイノードでJDBCドライバのカーソルが使用できないバグを修正しました。この修正によって、マスタースレーブモードではトランザクションコマンドがすべてのノードに送られるようになります(Kitagawa)空のクエリの処理に関するバグを修正しました。空のクエリはSELECTクエリと同じ扱いになります。nextval(('"x_seq"'::text)::regclass)"のようになっていてもinsert_lockが正しく動作するように修正しました(Kitagawa)フェイルオーバー中はエラーメッセージを出力するようにpcp_attach_nodeコマンドを修正しました(Kitagawa)拡張問い合わせプロトコルでpgpool-IIがクエリを解析できないときに出力されるログメッセージがクエリを表示するよう修正しました(Kitagawa)pgpool-IIマニュアルのbackend_weightに関する説明を修正しました。それは、pgpool.confの再読み込みで変更できます(Tatsuo)英語のチュートリアルドキュメント内の表現の改善と修正を行いました。Lelarge)ストリーミングレプリケーションモードにおけるレプリケーション遅延の計算が間違っていたのを修正しました(Tatsuo)フェイルオーバーのログメッセージにおける誤った関数名"notice_backend_error"を、正しいもの"degenerate_backend_set"に置き換えました(Tatsuo)pgpool.conf解析後の不要なログ出力を削除しました(Tatsuo)バックエンドを新規追加した後に起こり得るpgpool/worker子プロセスのクラッシュを修正しました。SHARE/UPDATE句のあるサブクエリを含むSELECTがスレーブ(standby)に送られるバグを修正しました(Tatsuo)PREPARE文でデフォルト値のタイムスタンプ書き換えに失敗するバグを修正しました。これは以前は動作していましたが、3.0で動作しなくなっていました(Kitagawa)getopt_long()がない環境でpcpコマンドのコンパイルが失敗するのを修正しました(Tatsuo)rawモード、enable_hbaが無効、バックエンドが2台以上の場合にpgpool子プロセスがクラッシュするのを修正しました(Kitagawa)メモリリークをいくつか修正しました(Kitagawa)改良ストリーミングレプリケーション構成でのオンラインリカバリにおいて、リカバリ終了時に子プロセスを再起動しないようにしました。そのため、既存のセッションはオンラインリカバリ中も継続することができます(Tatsuo)ストリーミングレプリケーションモードにおいて、pcp_attache_nodeが既存のセッションを切断しなくなりました。ほかのモードでは依然としてセッションが切断されます(Tatsuo)。9.0のパーサを移植しました。INDEXが実行できるようになりました。パッチは石田さんから頂きました。black_function_listとwhite_function_listパラメータに正規表現が使えるようになりました。Lelargeさんがレビューしました。Takatsuka)pgpool-IIマニュアルのストリーミングレプリケーションにおけるオンラインリカバリの説明を改善しました(Tatsuo)ストリーミングレプリケーションモードにおけるレプリケーション遅延をチェックするための関数を変更しました。現在、pgpoolはpg_last_xlog_receive_location()の代わりにpg_last_xlog_replay_location()を使用します。Yuzhaninovさんの提案によるものです(Tatsuo)カラムのデフォルト値に任意の式を指定してもタイムスタンプ書き換えが動作するようにしました。以前は、now()が含まれているものを検知すると、単純にそれをnow()で置き換えてました。これは、デフォルト値の誤った書き換えを引き起こします。これは簡易プロトコルのみへの適用であることに注意してください。対するバグ修正リリースです。系の最終リリースです。なり、これ以上のメンテナンスやアップデートは行われません。ドキュメントのロードバランスに関する情報を修正しました。プライマリノードにのみ送られます。実行するようになりました。永続ストレージに保存され、システムクラッシュ時も情報が失われないことを保証します。関するドキュメントの誤った記述が修正されました。含む)が明示的なトランザクションの中で実行されたことを記憶し、それが「書き込みトランザクション」であることをマークします。これはストリーミングレプリケーション時のクエリの振り分け処理に影響します。そのマークの後、クエリをプライマリに送信するようになります。これは、ストリーミングレプリケーションで書き込みクエリの結果がスタンバイで遅れて現れるために、クエリはプライマリに送られが方がより安全だからです。データを変更しないので、例外として扱われるべきでした。エラーを修正しました。メインプロセスにより実際のバックエンド数に達するまでカウントアップされます。エラーの原因となっていました。ステートメント/ポータルが存在しない場合は、これらのクローズ要求を無視するよう修正しました。Ishii)この場合は単にクローズ完了メッセージをクライアントに返すだけとなります。修正された以下のコミットのバックポートです。対するバグ修正リリースです。エラーを修正しました。して古いシグネチャで関数を配置しようとしていました。チェックするクエリを送信しないようになりました。対するバグ修正リリースです。文字分不足していました。証明書チェーンに対応しました。ノードを切り離す際の問題を修正しました。は新しい接続のブロックと既存の接続の切断よりも前に行う必要があります。対するバグ修正リリースです。スレーブノードの数は1である必要でないことを明記しました。Ishii)未初期化の変数があったのを修正しました。前回のリリースで抜け落ちていたリリースノートを追記しました。範囲検査のバグを修正しました。未満である必要があります。以上の値はこの関数に渡されていなかったので、おそらく害はありませんでした。モードを無効にできるよう修正しました。対するバグ修正リリースです。タイポを修正しました。Nagata)プライマリバックエンドが存在しない場合に、ワーカー子プロセスが終了と再起動を繰り返すバグを修正しました。さんの貢献によります。スマートシャットダウンの実行時には受信用ソケットを閉じるように修正しました。子プロセスは受信用のポートを開いており、最終的に失敗するにもかからわずクライアントは接続要求を送信可能です。停止の検出を妨げます。よって解析され、パッチが提供されました。ドメインのソケットにも対応させました。よって、リカバリコマンドが終了させられる可能性を追記しました。現在は当てはまらない古い制限事項を削除しました。関数の返却値型を修正しました。Nagata)コンパイル時の警告の原因となっていました。デーモン化した際にファイル識別子が閉じられていなかったのを修正しました。メモリリークを修正しました。