構文の書き換えで発生する可能性があったクラッシュを修正しました。構文が使えるようになります。文のパースができるように修正しました。バックエンドの応答を待ち続けなくなります。モード、コネクションプールモードで発生していました。メッセージを送るようになります。シグナルを無視するように修正しました。再実行しようとするので、結果的にシグナルが無視されます。受け取っていないかチェックするように修正しました。さんからのバグ報告に基づきます。いうエラーメッセージを生成する際にクラッシュする可能性があったので、これを修正しました。以前は問題なかったのですが、2.3.2でエンバグしました。(Tatsuo)ヘルスチェックにおけるバグを修正しました。呼んでいる間はヘルスチェックが行なわれていませんでした。再試行していたためです。この修正では、上記の関数に対して再試行をコントロールするような引数を追加しています。さんのバグ報告と分析に基づく修正です。さんらの報告に基づきます。書き換えを修正しました。さんから提供いただいたパッチを取り込みました。使うように修正しました。2010/02/22概要このバージョンでは、2.3.xにおける様々なバグを修正しています。すべての2.3ユーザは早急にアップグレードすることをお勧めします。2010/02/07概要このバージョンでは、2.3.1の色々なバグが修正されています。2.3.1ユーザはなるべく早く2.3.2にアップグレードすることをお勧めします。2.3.2ではSSLサポート、ラージオブジェクトのレプリケーション機能が追加されています。Finney)ラージオブジェクトのレプリケーションがサポートされました(Tatsuo)ヘルスチェックとオンラインリカバリの際に可能であればpostgresデータベースを使うようにしました。postgresデータベースが存在しない場合はtemplate1が使われます(以前の動作と同じ)。DATABASEなどのコマンドがオンラインリカバリ中でも使えるようになりました(Tatsuo)問い合わせのパース処理でエラーが起きたときに、SQL文をログに出力するようにしました。2009/12/18概要このバージョンでは、2.3の色々なバグが修正されています。ある条件でDBに不正な数値が書き込まれるバグが修正されており、以下の示す条件に合致する使い方をしている2.3ユーザは至急バージョンアップすることをお勧めします。NOW());この例では、98887776655が32bit値にカットされて書き込まれます。pool_statusでクラッシュするバグを修正しました。pool_statusが実装されてからずっと存在していたものです。mismatch"メッセージが出た際に、kindがERRORまたはNOTICEならば、そのメッセージを表示するようにしました。now()など)を正しく扱うことができるようになりました。同時接続数が1(num_init_childrenが1)のときのレプリケーション性能向上しています。pgpool-II再起動時に前回のDBノードのダウン状態を記録し、不用意に復旧ノードにデータを書き込んでデータの不整合が起きることを防ぐことができるようになりました。そのほか、クエリログが改良されてDBノード単位の状況が把握しやすくなり、またフェイルオーバの挙動が細かく制御できるようになりました。2.2.1から2.2.6までのすべてのバグ修正、改良が含まれています。2.2.からの非互換性[logdir]の下にpgpool_statusというファイルが作られるので、pgpoolの実行ユーザが読み書きできる権限を与えておいてください。now()など)を正しく扱うことができるようになりました。アプリケーションに変更を加えることなく、INSERT/UPDATE文、テーブルのデフォルト値にこれらの時刻関数を含むケースでも正しくレプリケーションできます(いくつか制限事項があります。詳細は制限事項を参照してください)。log_statementと似ていますが、DBノード単位でログが出力されるので、レプリケーションや負荷分散の確認が容易です。バックエンドのプロセスIDも表示されるので、バックエンドのログと併せての解析が容易になっています。いうファイルに書かれます。ANALYZEが負荷分散されるようになりました。一時テーブルがマスター/スレーブモードで利用できるようになりました。いつものように2.2.5以前の色々なバグが修正されています。MOVEがロードバランスの対象にならなくなりました。(つまり、holdできるカーソルの場合のことを言っています)(Tatsuo)マスター/スレーブモードにおいて、拡張プロトコルのParseをマスター上でのみ実行するようにしました。Astill)ソケットへの書き込みに失敗したときにフロントエンド用なのかバックエンド用なのかわかるようにしました(Tatsuo)フロントエンド用のソケットに書き込み失敗したときにいちいちエラーを出さないようにしました(Tatsuo)マスター/スレーブモードで一時テーブルが使えるようになりました。INSERT/UPDATE/DELETEは自動的にマスタのみに送られます。2009/10/4概要このバージョンでは、2.2.4以前の色々なバグが修正されています。2009/8/24概要このバージョンでは、2.2.3以前の色々なバグが修正されています。2.2.2で入ってしまったバグを修正しました。2.2.3でバージョン2プロトコルのクライアントが動かなくなってしまっていたのを修正しました。時間のかかるクエリを待っている間にフロントエンドが異常終了したことを検知する間隔を1秒から30秒に変更しました。このチェックは、2.2.4ではプロトコルバージョンが3のときのみ有効です(Tatsuo)子プロセスを起動する前にシグナルのブロックやハンドラの設定を行なうようにしました。2009/8/11概要このバージョンでは、2.2.2以前の色々なバグが修正されています。Ishida)バックエンドへの接続記述子の参照タイミングによってはpgpool-IIの子プロセスが落ちることがあるバグを修正しました(Tatsuo)。statement_timeoutのタイムアウトによるエラー処理を改良しました。実際にはタイムアウトまでにstatement_timeoutで設定した時間の倍かかっていたのを直しました。masterだけがstatement_timeoutを返した場合にも対応できるようにしました。mismatchエラーになっていました(Tatsuo)。mismatchエラーになります)。checkをより強化し、postmasterがSIGSTOPで止ってしまっている場合も障害検知できるようにしました。バックエンドにSQLを投げ、その応答を待っている間にクライアントがpgpoolに対するコネクションを切断したことが検出できるようになりました。WebアプリケーションではDBに対してリクエストを投げて、応答がないとキャンセルするようなことが頻繁に起ります。この場合、今まではpgpoolやPostgreSQLのプロセスが残ってしまい、同時接続数が枯渇したり、ロックを取ったままのトランザクションが残るなどしてシステム全体に影響を与えることがありました。今回の修正により、こうした状況が検出できるようになっただけでなく、SQLの応答待ちの間にクライアントがコネクションを切断した際には、SQLコマンドのキャンセルをpgpoolが行なって、ロック待ちなどのバックエンドプロセスが残るのを防ぐことができるようになりました(Tatsuo)。引数なしのCLUSTERコマンドはトランザクションの中では実行できないので、自動トランザクションをスタートしないようにしました(Tatsuo)。8.4でコンパイルできるようにしました(Tatsuo)。FROMを実行中にクライアントが処理を中断した場合に、バックエンドプロセスが残ってしまうバグを修正しました(Tatsuo)。2009/5/5概要このバージョンでは、2.2.1以前の色々なバグが修正されています。pgpoolがクライアントとの間でデータのやり取りをしている最中に、pgpoolのクライアントが終了(X)パケットをpgpoolに送信せずに終了した場合に起る可能性があります。このバグは過去のすべてのpgpoolに存在しています。バグ修正フロントエンドにpgpoolがデータを送信する際のエラーを無視するようにしました。これによって、バックエンドとの間で必要な処理が中断されないようになり、バックエンドの間でデータの一貫性がなくなる問題が回避されるようになりました(Tatsuo)。マスタースレーブモードに関する2.2.1の修正の際に生じたバグを修正しました。プリペアドステートメントを使い回すとハングアップする可能性がありました(Toshihiro)。SQLコマンドのPREPAREとプロトコルレベルのEXECUTEが混在するとバックエンドがクラッシュするバグを修正しました。このバグが、2.2で持ち込まれたものです(Tatsuo)。connection"が記録される問題を修正しました(Tatsuo)。2009/4/25概要このバージョンでは、2.2の色々なバグが修正されています。バグ修正master/slaveモードで、DEALLOCATEが失敗することがある問題を修正しました。2009/2/28概要このバージョンでは、SERIALデータの扱いとオンラインリカバリに改良が行なわれています。トランザクション分離レベルがシリアライザブルの場合に、DBノード間でデータの一貫性がなくなる可能性がある問題、クエリのキャンセルができない問題が修正されました。新機能insert_lockが有効な場合、SERIAL型を持つテーブルだけがロックされるようになりました(Tatsuo)。設定項目client_idle_limit_in_recoveryが追加されました。オンラインリカバリが進行しなくなることを防ぐことができます(Tatsuo)。設定項目pid_file_nameが追加されました。これは、pgpool-IIのpidファイルを指定します。これにより、logdirは使用されなくなりました(Tatsuo)。CLOSEで負荷分散されるようになりました(Tatsuo)。mismatch"エラーの際に、原因となったクエリを表示するようにしました(Tatsuo)。互換性フェイルオーバ時に必ずpgpoolの子プロセスを再起動するようにしました。この結果、フェイルオーバ時には必ずpgpoolへのセッションが一端切れることになります。あるからです(Tatsuo)。設定項目logdirは使われなくなりました。代りに、pid_file_nameを使ってください(Tatsuo)。insert_lockのデフォルト値がtrueになりました(Tatsuo)。閉じるようにしました。すべてのDBノードのトランザクションをアボートするようにしました。しないと、DBノードの間でデータの不整合が起きることがあります(Tatsuo)。例を示します(Mはマスタ、Sはスレーブを示します)。inconsistent!rawモードでMD5認証が使えるようにしました。ドキュメント上では使えるはずでした(Tatsuo)。mimatch"エラーになることを防ぐようにしました(Tatsuo)。以下のシナリオで問題が発生します。errorが発生するのを修正しました(Tatsuo)PostgreSQLがたくさんのDEBUGメッセージを出力する場合に、誤ってエラーと見なすバグを修正しました(Tatsuo)クエリのキャンセルが動くようになりました(Tatsuo)オンラインリカバリの後クライアントからの接続を受け付けるタイミングが早すぎるバグを修正しました。DELETE以外のコマンドでも必要ならばトランザクションブロックの内側で実行するようにしました。これにより、エラー発生の際にロールバックしてノードの整合性を保つことができます(Tatsuo)オンラインリカバリ後、pgpool-IIの子プロセスがクラッシュすることがあるバグを修正しました。これは、オンラインリカバリの後、新しくアタッチされたノードに接続がないのに、そのノードに子プロセスが終了時に終了メッセージをバックエンドに送信しようとして起っていました(Tatsuo)PostgreSQLがpostgresql.confを再読み込みした際にpgpoolがエラーを検出してしまうバグを修正しました。