pgpool2.git / summary / log / commit / refs
commit 5584a2470bf6b5fe50777dfb191c65fb88d99151
Author: Nozomi Anzai <anzai@sraoss.co.jp>
Commit: Muhammad Usama <m.usama@gmail.com>
Date: Thu Nov 28 08:19:29 2013 +0000
Prepare 3.3.2
NEWS | 330 +++++++++++++++++++++++++++++++++++++++++++++++++++++
doc/pgpool-ja.html | 313 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 643 insertions(+)
diff --git a/NEWS b/NEWS
index 4d1185ee1..704ad1e76 100644
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,336 @@
3.3 Series (2013/07/30 - )
===============================================================================
+
+
+ 3.3.2 (tokakiboshi) 2013/11/29
+
+* Version 3.3.2
+
+ This is a bugfix release against pgpool-II 3.3.1.
+
+ __________________________________________________________________
+
+* Bug fixes
+
+ - Fix incorrect time stamp rewriting in replication mode for certain time
+ zones. (Tatsuo Ishii)
+
+ Time stamp rewriting calls "SELECT now()" to get current time.
+ Unfortunately the buffer for the current time is too small for certain
+ time zones such as "02:30". Note that non-30-minutes-time-zone such as
+ "0900" does not reveal the problem. This explains why we haven't the bug
+ report until today.
+
+ Bug reported in [pgpool-general: 2113] and fix provided by Sean Hogan.
+ http://www.sraoss.jp/pipermail/pgpool-general/2013-September/002142.html
+
+ - installer: Fix the way to specify pgpoolAdmin version in
+ redhat/rpm_installer/getsources.sh. (Yugo Nagata)
+
+ - Makefile: Replace pg_config by $(PG_CONFIG) in Makefiles so it can be
+ overridden at build time when compiling for different PG major versions.
+ (Tatsuo Ishii)
+
+ Patch contributed by Christoph Berg ([pgpool-general: 2127]).
+ http://www.sraoss.jp/pipermail/pgpool-general/2013-September/002156.html
+
+ - watchdog: Fix a warning/error when compiling with -Werror=format-security.
+ (Tatsuo Ishii)
+
+ Patch contributed by Christoph Berg ([pgpool-general: 2127]).
+ http://www.sraoss.jp/pipermail/pgpool-general/2013-September/002156.html
+
+ - configure: Remove -lcompat because it confuses FreeBSD per bug#15.
+ (Tatsuo Ishii)
+ http://www.pgpool.net/mantisbt/view.php?id=15
+
+ - Fix segfault when pgpool.conf does not set log_standby_delay.
+ (Tatsuo Ishii)
+
+ This is caused by wrong initialization for log_standby_delay in
+ pool_config.l.
+ Per bug#74. http://www.pgpool.net/mantisbt/view.php?id=74
+
+ - doc: Modify descriptions about restrictions of parallel mode
+ Muliple rows INSERT using VALUES are not supported in parallel mode.
+ (Yugo Nagata)
+
+ - Avoid calling find_primary_node_repeatedly() when standby node goes
+ down. (Tatsuo Ishii)
+
+ This will reduce the time to failover. Per bug #75, patch modified by
+ Tatsuo Ishii. http://www.pgpool.net/mantisbt/view.php?id=75
+
+ - Fix data inconsistency problem with native replication mode + extended
+ protocol case. (Tatsuo Ishii)
+
+ It is reported that concurrent INSERT using JDBC driver causes data
+ difference among database node. This only happens following conditions
+ are all met:
+
+ 1) Native replication mode
+ 2) Extended protocol used
+ 3) The portal created by parse message is reused by bind message
+ 4) autocommit is on
+ 5) SERIAL (sequence) is used
+
+ Pgpool-II's parse message function knows it has to lock the target
+ table when INSERT (plus #5) is issued by clients. Unfortunately bind
+ message function did not know it. Once parse/bind/execute finishes,
+ pgpool releases the lock obtained by parse because of #4. JDBC wants
+ to reuse the portal and starts the cycle from bind message, which does
+ not obtain lock. As as result, lock-free INSERT are floating around
+ which causes data inconsistency of course. The solution is, lock the
+ table in bind phase.
+
+ For this bind needs to issue LOCK in extended protocol. This was a little
+ bit hard because the module (do_command()) to issue internal SQL command
+ (other than SELECT) does not support extended protocol.
+ To solve the problem do_query() is modified so that it accepts other than
+ SELECT because it already accepts extended protocol.
+ The modification is minimum and is only tested for the case called from
+ insert_lock(). I do not recommend to replace every occurrence of
+ do_command () with do_query() at this point.
+
+ BTW the reason why the bug is not reported is, most users uses JDBC
+ with auto commit = off. In this case, the lock obtained by parse persists
+ until user explicitly issues commit or rollback.
+
+ Per bug report by Steve Kuekes in [pgpool-general: 2142].
+ http://www.sraoss.jp/pipermail/pgpool-general/2013-September/002171.html
+
+ - Fix memory allocation size bug in the code path of query cache.
+ (Tatsuo Ishii)
+
+ In execute() memory allocation size is too small incertain case. No bug
+ has been reported so far, but certainly this is a bug.
+
+ - Fix occasional segfault in query cache + extended protocol.
+ (Tatsuo Ishii)
+
+ When the query is not "cache safe", bind_msg->param_offset was not set
+ in Bind(). However, Execute() unconditionally uses bind_msg->param_offset
+ to convert bind parameters to string so that they can be added to the
+ cached query string and it causes segfault because bind_msg->param_offset
+ is a garbage. Also logic bug to calculate bind_msg->param_offset is
+ corrected.
+
+ Per bug#76. http://www.pgpool.net/mantisbt/view.php?id=76
+
+ - Avoid to run out free query cache hash index entry. (Tatsuo Ishii)
+
+ If hash index entries are run out, pgpool-II cannot reuse old cache
+ entry because pgpool-II always expects there's at least one empty hash
+ index entry. To mitigate the problem, if free hash index entries are run
+ out, look for victim cache block to reuse the hash index entry.
+
+ Per bug #70. http://www.pgpool.net/mantisbt/view.php?id=70
+
+ - installer: checkEnv() didn't do anything and always returned 0.
+ (Nozomi Anzai)
+
+ - Fix inappropriate shared memory allocation size for clock hand.
+ (Tatsuo Ishii)
+
+ The memory for clock hand was allocated as sizeof(pool_fsmm_clock_hand))
+ which is 8 bytes long because the variable is declared as:
+
+ static int *pool_fsmm_clock_hand;
+
+ This is plain wrong. The memory size actually needed is only 4 bytes,
+ which is sizeof(*pool_fsmm_clock_hand)). In other word, the bug allocated
+ unnecessary 4 bytes, which did nothing bd for the execution of program.
+ But a bug is a bug.
+
+ Per covery report "1111476 Wrong sizeof argument"
+
+ - Fix "show pool_status" always shows memqcache_auto_cache_invalidation as
+ 0. (Tatsuo Ishii)
+ Per bug #80. http://www.pgpool.net/mantisbt/view.php?id=80
+
+ - Fix error message in read_password_packet(). (Tatsuo Ishii)
+
+ - watchdog: Fix to pass big parameter by pointer instead of by value at
+ some function. (Yugo Nagata)
+
+ - Fix memory leak when SSL is requested. (Tatsuo Ishii)
+
+ When SSL is requested, pgpool child retries to read start up packet.
+ However it does not free the memory for previous start up packet.
+
+ Per Coverity report "1111443 Resource".
+
+ - Fix memory leak when do_query() fails in timestamp rewriting.
+ (Tatsuo Ishii)
+
+ For this purpose free_select_result() is changed to accept NULL argument.
+ Per Coverity report "1111454, 1111455 Resource leak".
+
+ - Fix load balance bug in replication mode. (Tatsuo Ishii)
+
+ When load_balance_mode = off, SELECTs including writing function
+ should be sent to all the DB nodes. Per [pgpool-general: 2221].
+ http://www.sraoss.jp/pipermail/pgpool-general/2013-October/002250.html
+
+ The bug was introduced in:
+ http://git.postgresql.org/gitweb/?p=pgpool2.git;a=commitdiff;h=1ac45a28258074ea4d9d902aca016f970d31f311
+ (3.3.1).
+
+ - watchdog: Fix to put null character at end of ping result string used in
+ watchdog. (Yugo Nagata)
+
+ - Fix target node selection logic when "DEALLOCATE portal|statement".
+ (Tatsuo Ishii)
+
+ When "DEALLOCATE portal|statement" is used and last prepared statement or
+ portal was not found, target node selection map is not set. Probably this
+ is not actually harmful because prepared statement or portal was not found
+ is an error case. The bug was there since day 0.
+
+ Per Coverity report "1111491 Structurally dead code".
+
+ - Fix range check bug of MAX_NUM_BACKENDS in corner case. (Tatsuo Ishii)
+
+ MAX_NUM_BACKENDS is the allowed max number of DB nodes (128, at this
+ point). In reality, probably no one ever tried more than 128 DB nodes
+ and that's the reason why nobody noticed.
+
+ Per Coverity report "1111429, 1111430 and 1111431 Out-of-bounds write".
+
+ - Do not set/unset fronted connection info for dead backend. (Tatsuo Ishii)
+
+ Per bug #82. http://www.pgpool.net/mantisbt/view.php?id=82
+
+ - Fix that the script forgets to allow public access to pgpool_catalog.
+ (Tatsuo Ishii)
+
+ The bug prevents inserting data into user tables if pgpool_catalog is
+ created in native replication mode. The bug was there from day 1. I
+ wonder why nobody noticed until today.
+ Per [pgpool-general-jp: 1229].
+ http://www.sraoss.jp/pipermail/pgpool-general-jp/2013-November/001228.html
+
+ - doc: Add description that it is recommended to specify multiple servers
+ to trusted_servers. (Yugo Nagata)
+
+ - Fix uninitialized variable in error case in pool_do_auth().
+ (Tatsuo Ishii)
+
+ If there's no valid backend, pgpool will return garbage pid to frontend in
+ auth phase. Actually because no backend is available, frontend will be
+ disconnected later on. So this is not harmless.
+ Per Coverity report "1127331 Uninitialized scalar variable".
+
+ - Fix to add node id range check when issue an error message using node
+ id. (Tatsuo Ishii)
+ Per Coverity report #1111433 "Out-of-bounds read".
+
+ - Fix buffer overrun bug and resource leak bug of parse_copy_data().
+ (Tatsuo Ishii)
+ Per Coverity report 1111427 "Out-of-bounds write" and 1111453 "Resource
+ leak".
+
+ - Fix possible segfault in CopyDataRaws(). (Tatsuo Ishii)
+ Coverity pointed out that if pool_get_id() returns an error, VALID_BACKEND
+ will access out of array.
+ Per Coverity report 1111413 "Memory - illegal accesses".
+
+ - Fix query cache is enabled and protocol version = 2 case. (Tatsuo Ishii)
+
+ When the protocol version = 2, we assume that session state is "idle".
+ This is not feasible but no way. I recommend to not use query cache
+ with protocol 2.
+ Per Coverity report 1111488 "Uninitialized scalar variable".
+
+ - Fix strftime() usage in pool_pools(). (Tatsuo Ishii)
+
+ The buffer is not large enough as expected by the second parameter. This
+ is not harmless because the format string will not produce longer result
+ string than the buffer.
+ Per Coverity report 1111426 "Out-of-bounds access".
+
+ - RPM: Improved to specify the versions of pgool-II and PostgreSQL in the.
+ spec file. (Nozomi Anzai)
+
+ - Fix resource leak in make_persistent_db_connection. (Tatsio Ishii)
+
+ For this pupose, new static function free_persisten_db_connection_memory
+ is added.
+ Per Coverity report #1111468.
+
+ - Fix a bug that connection check to trusted servers fails when the RTT
+ is very short. (Yugo Nagata)
+
+ - Fix several small bug fixes detected by Coverity. (Tatsuo Ishii)
+
+===============================================================================
+
+ 3.3.1 (tokakiboshi) 2013/09/06
+
+* Version 3.3.1
+
+ This is a bugfix release against pgpool-II 3.3.0.
+
+ __________________________________________________________________
+
+* Bug fixes
+
+ - Fix to add the regression test suite for making tar boll (Tatsuo Ishii)
+
+ This isn't included in the tar ball of 3.3.0 release.
+
+ - Fix watchdog test script in regression test (Tatsuo Ishii)
+
+ - Fix a memory overrun bug (Tatsuo Ishii)
+
+ This problem is pointed out in [pgpool-general: 1956] by Sean Hogan.
+
+ [pgpool-general: 1956] memory overrun bug?
+ http://www.sraoss.jp/pipermail/pgpool-general/2013-July/001984.html
+
+ - Fix a compile error (Yugo Nagata)
+
+ - Fix child process termination with sig abort when memory query cache
+ is enabled (Tatsuo Ishii)
+
+ This is due to double free bug that occurs when multiple bind/execute
+ messages come after a parse message. When a parse messages comes, query
+ context is created along with temp cache. The pointer to the temp cache
+ is added to the temp cache array when the query executed. Subsequent
+ bind messages uses the same temp cache pointer. This is the source of
+ double free bug when the cache array discarded.
+
+ This is reported in Bug track #68 by harukat.
+
+ #68: child process termination with sigabort when memory_cache_enabled = on
+ http://www.pgpool.net/mantisbt/view.php?id=68
+
+ - Add some test cases to regression test (Tatsuo Ishii)
+
+ - Fix typos of the document in installation of pgpool-recovery section.
+ (Tatsuo Ishii)
+
+ - Fix a typo of log message (Yugo Nagata)
+
+ - Fix typos of the japanese document (Yugo Nagata)
+
+ - Fix to send SELECT to master node only when load_balance_mode is off
+ in replication mode (Tatsuo Ishii)
+
+ When load_balance_mode is off in replication mode, SELECT queries
+ should be sent to master node only, rather than sent to all nodes in
+ an explicit transaction.
+
+ This problem is reported in [pgpool-general: 2038] by Rypl Lukas.
+
+ [pgpool-general: 2038] SELECT sent to both nodes in replication mode
+ http://www.sraoss.jp/pipermail/pgpool-general/2013-August/002066.html
+
+ - Fix pgpool_setup to work in standalone. (Tatsuo Ishii)
+
+===============================================================================
+
3.3 (tokakiboshi) 2013/07/30
* Version 3.3
diff --git a/doc/pgpool-ja.html b/doc/pgpool-ja.html
index 34eb3b58b..6f564c514 100644
--- a/doc/pgpool-ja.html
+++ b/doc/pgpool-ja.html
@@ -5867,6 +5867,319 @@ SELECTの最終実行ステータスとパフォーマンスのおおよその
<!-- ================================================================================ -->
<hr><a name="release3.3.x"></a>
+
+<!-- -------------------------------------------------------------------------------- -->
+<h2><a name="release3.3.2"></a>3.3.2 (tokakiboshi) 2013/11/29</h2>
+<!-- -------------------------------------------------------------------------------- -->
+
+<h3>概要</h3>
+<p>
+このバージョンは 3.3.1 に対するバグ修正リリースです。
+<h3>バグ修正</h3>
+<ul>
+
+<li>レプリケーションモード稼働時、一部のタイムゾーンでタイムスタンプの書き換えが誤っていました。(Tatsuo Ishii)
+<p>タイムスタンプの書き換え処理では、現在日時を取得するあめに "SELECT now()" を実行します。
+しかし一部のタイムゾーンにおいては、"02:30" のような場合に現在日時のためのバッファの大きさが
+十分ではありませんでした。"0900" のように 30 分刻みでのタイムゾーンでないときは、この問題は発生しません。
+そのため、これまでこの不具合が報告されたことはありませんでした。</p>
+<p>この不具合は <a href="http://www.sraoss.jp/pipermail/pgpool-general/2013-September/002142.html" target="_blank">[pgpool-general: 2113]</a> で報告され、Sean Hogan さんによって修正が提供されました。</p>
+</li>
+
+<li>installer: redhat/rpm_installer/getsources.sh での pgpoolAdmin の
+バージョン指定方法を修正しました。 (Yugo Nagata)
+</li>
+
+<li>Makefile: Makefiles 内の pg_config を $(PG_CONFIG) に置き換えました。
+したがって、PostgreSQL のメジャーバージョンが異なる場合には、コンパイル中で上書きされるようになります。(Tatsuo Ishii)
+<p>パッチは Christoph Berg さんから提供されました。(<a href="ttp://www.sraoss.jp/pipermail/pgpool-general/2013-September/002156.html" target="_blank">[pgpool-general: 2127]</a>)</p>
+</li>
+
+<li>watchdog: <code>-Werror=format-security</code> をつけてコンパイルしたときの、warning/error を修正しました。(Tatsuo Ishii)
+<p>パッチは Christoph Berg さんから提供されました。(<a href="ttp://www.sraoss.jp/pipermail/pgpool-general/2013-September/002156.html" target="_blank">[pgpool-general: 2127]</a>)</p>
+</li>
+
+<li>configure: FreeBSD で問題があったため、-lcompat を削除しました。(Tatsuo Ishii)
+<p><a href="http://www.pgpool.net/mantisbt/view.php?id=15">bug#15</a> で報告されました。</p>
+</li>
+
+<li>pgpool.conf で <a href="#LOG_STANDBY_DELAY">log_standby_delay</a> を設定してないときに
+segfault していたのを修正しました。(Tatsuo Ishii)
+<p>これは、pool_config.l での log_standby_delay の初期化が誤っていたためです。
+<a href="http://www.pgpool.net/mantisbt/view.php?id=74" target="_blank">bug#74</a> として報告されました。</p>
+</li>
+
+<li>doc: パラレルモードの制限事項を追記しました。VALUES 句を使った複数行の INSERT はパラレルモードではサポートされていません。(Yugo Nagata)</li>
+
+<li>スタンバイノードがダウンしようとしているときに find_primary_node_repeatedly() が
+呼ばれないようにしました。(Tatsuo Ishii)
+<p>これによってフェイルオーバの所要時間が短くなります。
+<a href="http://www.pgpool.net/mantisbt/view.php?id=75" target="_blank">bug#75</a> として報告され、
+パッチを Tatsuo Ishii が編集しました。</p>
+</li>
+
+<li>レプリケーションモードと拡張プロトコルを組み合わせた場合に、
+データ不整合があったのでこれを修正しました。(Tatsuo Ishii)
+<p>JDBC ドライバを使った同時 INSERT で、ノード間でのデータ不整合があるという報告がありました。
+この事象は以下の条件で必ず発生します。
+</p>
+<ol>
+ <li>レプリケーションモードを使用している</li>
+ <li>拡張プロトコルを使用している</li>
+ <li>parse で作成された portal が bind で再利用される</li>
+ <li>autocommit が on である</li>
+ <li>SERIAL(シーケンス)を使用している</li>
+</ol>
+
+<p>pgpool-II の parse 関数は、クライアントが INSERT (+ 5 の状態)を発行すると、対象テーブルをロックされていることを
+認識しています。しかし、bind 関数はそれを認識していませんでした。
+一度 parse / bind / execute が完了すると、pgpool は 4 の理由により parse で獲得したロックを解放します。
+そして JDBC は portal を再利用しようとし、ロックを獲得しないまま bind からのサイクルを開始してしまいます。
+その結果、ロックのない INSERT がノード間でのデータ不整合を引き起こします。
+この解決方法としては、bind でテーブルをロックするようにしました。
+</p>
+<p>この問題は、たいていのユーザは JDBC を autocommit = off で使っているために、
+今まで報告されることがありませんでした。off であれば、ユーザが commit / rollback を発行するまで、
+parse によるロックが残存するためです。</p>
+<p>この不具合は Steve Kuekes さんにより、<a href="http://www.sraoss.jp/pipermail/pgpool-gener" target="_blank">[pgpool-general: 2142]</a> で報告されました。</p>
+</li>
+
+<li>クエリキャッシュにおけるメモリ確保サイズの不具合を修正しました。(Tatsuo Ishii)
+<p>execute() において、メモリ確保サイズが一部の場合において小さすぎました。</p>
+</li>
+
+<li>クエリキャッシュ + 拡張プロトコルの組み合わせで使っている場合に、segfault する可能性があったのを
+修正しました。(Tatsuo Ishii)
+<p>クエリが "cache safe" でないときに、bind_msg->param_offset が Bind() でセットされていませんでした。
+しかし Execute() では無条件に bind_msg->param_offset を使おうとしていました。
+</p>
+<p>この不具合は <a href="http://www.pgpool.net/mantisbt/view.php?id=76" target="_blank">bug#76</a> で報告されました。</p>
+</li>
+
+<li>クエリキャッシュの hash index エントリがいっぱいにならないようにしました。(Tatsuo Ishii)
+<p>hash index エントリがいっぱいになると、pgpool-II は hash index の残りが少なくとも 1 つはある前提だったため、
+古いキャッシュエントリを再利用できませんでした。
+これを改善するために、hash index エントリがいっぱいになったら、再利用できるキャッシュブロックを
+探すようにしました。</p>
+<p>この不具合は <a href="http://www.pgpool.net/mantisbt/view.php?id=70" target="_blank">bug#70</a> で報告されました。</p>
+</li>
+
+<li>installer: checkEnv() が何もせず必ず 0(成功)を返していました。(Nozomi Anzai)</li>
+
+<li>clock hand の不適切なサイズの共有メモリ確保を修正しました。(Tatsuo Ishii)
+<p>clock hand のメモリは、sizeof(pool_fsmm_clock_hand) 分確保されており、
+この変数が「<code>static int *pool_fsmm_clock_hand</code>」と定義されていることから、8 バイトでした。</p>
+<p>しかしこれは誤りで、実際に必要なのは「<code>sizeof(*pool_fsmm_clock_hand)</code>」での 4 バイトでした。</p>
+<p>これは Coverity "1111476 Wrong sizeof argument" で発見されました。</p>
+</li>
+
+<li>"<a href="#pool_status">show pool_status</a>" で
+<a href="#MEMQCACHE_AUTO_CACHE_INVALIDATION">memqcache_auto_cache_invalidation</a> が常に
+0 と表示されていました。 (Tatsuo Ishii)
+<p>この不具合は <a href="http://www.pgpool.net/mantisbt/view.php?id=80" target="_blank">bug#80</a> で報告されました。</p>
+</li>
+
+<li>read_password_packet() のエラーメッセージを修正しました。(Tatsuo Ishii)</li>
+
+<li>watchdog: 一部関数で、引数を指定するのに大きな値そのものを渡さず、そのポインタを渡すようにしました。
+(Yugo Nagata)</li>
+
+<li>SSL 要求でのメモリリークを修正しました。(Tatsuo Ishii)
+<p>SSL での要求があったとき、pgpool 子プロセスは start up packet の読み込みをリトライしていました。
+しかし子プロセスは、以前の start up packet のメモリを解放していませんでした。</p>
+<p>これは Coverity "1111443 Resource" で発見されました。</p>
+</li>
+
+<li>do_query() がタイムスタンプの書き換えに失敗したとき、メモリリークしていました。(Tatsuo Ishii)
+<p>この修正のために、free_select_result() で NULL 引数を受け取れるようにしました。</p>
+<p>これは Coverity "1111454, 1111455 Resource leak" で発見されました。</p>
+</li>
+
+<li>レプリケーションモードでのロードバランスにおける不具合を修正しました。(Tatsuo Ishii)
+<p>load_balance_mode = off のとき、書き込みを関数を使った SELECT はすべての DB ノードに送られるべきでした。</p>
+<p>これは <a href="http://www.sraoss.jp/pipermail/pgpool-general/2013-October/002250.html" target="_blank">
+[pgpool-general: 2221]</a> で報告されました。
+また、この不具合は <a href="http://git.postgresql.org/gitweb/?p=pgpool2.git;a=commitdiff;h=1ac45a28258074ea4d9d902aca016f970d31f311" target="_blank">3.3.1</a> で混入しました。
+</p>
+</li>
+
+<li>watchdog: ping 結果を格納する文字列で、終端に NULL 文字を追加しました。(Yugo Nagata)</li>
+
+<li>"<code>DEALLOCATE portal|statement</code>" 実行時の対象ノードの選定ロジックを修正しました。(Tatsuo Ishii)
+<p>"<code>DEALLOCATE portal|statement</code>" 実行時、最後の prepared statement や portal が見つからない場合に、
+対象ノード選定マップがセットされていませんでした。
+おそらく、そうした場合はエラーなので、実際には問題ありません。</p>
+<p>これは Coverity "1111491 Structurally dead code" で発見されました。</p>
+</li>
+
+<li>MAX_NUM_BACKENDS の範囲チェックにおける不具合を修正しました。 (Tatsuo Ishii)
+<p>MAX_NUM_BACKENDS は DB ノードの最大数が限界値でした(現時点では 128)。
+実際には 128 の DB ノードで試す人がいなかったために、発見されなかった不具合のようです。</p>
+<p>これは Coverity "1111429, 1111430 and 1111431 Out-of-bounds write" で発見されました。</p>
+</li>
+
+<li>フロントエンド接続情報を、すでに無効なバックエンドについて set/unset しないようにしました。(Tatsuo Ishii)
+<p>この不具合は <a href="http://www.pgpool.net/mantisbt/view.php?id=82" target="_blank">bug#82</a> で報告されました。</p>
+</li>
+
+<li>pgpool_catalog への public access を許可していませんでした。
+<p>これは、pgpool_catalog がレプリケーションモードで作成されている場合に、
+ユーザテーブルにデータを INSERT すると発生します。</p>
+<p>この不具合は <a href="http://www.sraoss.jp/pipermail/pgpool-general-jp/2013-November/001228.htm" target="_blank">[pgpool-general-jp: 1229]</a> で報告されました。</p>
+</li>
+
+<li>doc: <a href="#TRUSTED_SERVERS">trusted_servers</a> に複数のサーバを指定すべきであることを記述しました。
+(Yugo Nagata)</li>
+
+<li>pool_do_auth() のエラーケースで変数を初期化していませんでした。 (Tatsuo Ishii)
+<p>有効なバックエンドがいないとき、pgpool は認証フェーズのフロントエンドにごみの pid を返していました。
+実際に、有効なバックエンドがいないために、フロントエンドは認証後に接続することができません。
+もちろんこれは問題あるものではありません。</p>
+<p>これは Coverity "1127331 Uninitialized scalar variable" で発見されました。</p>
+</li>
+
+<li>ノード ID を使ったエラーメッセージの発行時に、ノード ID の範囲チェックをするようにしました。
+(Tatsuo Ishii)
+<p>これは Coverity "1111433 "Out-of-bounds read" で発見されました。</p>
+</li>
+
+<li>parse_copy_data() でのバッファオーバーランとリソースリークを修正しました。 (Tatsuo Ishii)
+<p>これは Coverity "1111427 Out-of-bounds write"、"1111453 Resource leak" で発見されました。</p>
+</li>
+
+<li>CopyDataRaws() で segfault する可能性があったのを修正しました。(Tatsuo Ishii)
+<p>pool_get_id() がエラーを返した場合に VALID_BACKEND が配列外にアクセスしようとしていました。</p>
+<p>これは Coverity "1111433 Out-of-bounds read" で発見されました。</p>
+</li>
+
+<li>クエリキャッシュ有効 + プロトコルバージョン = 2 の組み合わせでの処理を修正しました。(Tatsuo Ishii)
+<p>プロトコルバージョンが 2 のとき、セッション状態が "idle" である前提でしたが、
+実際にはそうではありませんでした。
+プロトコルバージョンが 2 の場合はクエリキャッシュを使用しないことをおすすめします。</p>
+<p>これは Coverity "1111488 Uninitialized scalar variable" で発見されました。</p>
+</li>
+
+<li>pool_pools() での strftime() の用法を修正しました。(Tatsuo Ishii)
+<p>バッファが第 2 引数で期待する値にたいして十分な大きさではありませんでした。
+実際にはそのような長い値がわたることはなく、問題ないものです。</p>
+<p>これは Coverity "1111426 Out-of-bounds access" で発見されました。</p>
+</li>
+
+<li>RPM: spec ファイルで、pgpool-II と PostgreSQL のバージョンを指定できるようにしました。(Nozomi Anzai)</li>
+
+<li>make_persistent_db_connection のリソースリークを修正しました。(Tatsuo Ishii)
+<p>この修正ののために、新しく free_persisten_db_connection_memory 関数を追加しました。</p>
+<p>これは Coverity #1111468 で発見されました。</p>
+</li>
+
+<li>watchdog: RTT が非常に短いときに <a href=#TRUSTED_SERVERS">trusted servers</a> への
+コネクションチェックに失敗する不具合をを、修正しました。(Yugo Nagata)
+</li>
+
+<li>Coverity で見つかったさまざまな不具合を修正しました。(Tatsuo Ishii)</li>
+
+</ul>
+
+<!-- -------------------------------------------------------------------------------- -->
+<h2><a name="release3.3.1"></a>3.3.1 (tokakiboshi) 2013/09/06</h2>
+<!-- -------------------------------------------------------------------------------- -->
+
+<h3>概要</h3>
+<p>
+このバージョンは 3.3.0 に対するバグ修正リリースです。
+</p>
+
+<h3>バグ修正</h3>
+<ul>
+
+<li>
+ tar ball 作成時にレグレッションテストを含めるよう修正しました。(Tatsuo Ishii)
+ <p>
+ 3.3.0 リリースの tar ball にはレグレッションテストが含まれていませんでした。
+ </p>
+</li>
+
+<li>
+ レグレッションテストの watchdog テストスクリプトを修正しました。(Tatsuo Ishii)
+</li>
+
+<li>
+ メモリオーバーランを修正しました。(Tatsuo Ishii)
+ <p>
+ このバグは [pgpool-general: 1956] で Sean Hogan さんにより指摘されました。
+ </p>
+ <blockquote>
+ [pgpool-general: 1956] memory overrun bug?<br />
+ <a href="http://www.sraoss.jp/pipermail/pgpool-general/2013-July/001984.html">
+ http://www.sraoss.jp/pipermail/pgpool-general/2013-July/001984.html
+ </a>
+ </blockquote>
+</li>
+
+<li>
+ コンパイル時のエラーを修正しました。(Yugo Nagata)
+</li>
+
+<li>
+ オンメモリクエリキャッシュ使用時に子プロセスが sig abort で異常終了するバグを修正しました。
+ (Tatsuo Ishii)
+ <p>
+ parse メッセージの後に複数の bind/execute メッセージが来た場合に発生していた、メモリの二重開放がこのバグの原因です。
+ parse メッセージが来ると、クエリコンテキストと共に一時的なキャッシュが作成され、
+ クエリの実行時にこの一時キャッシュを指すポインタが配列に追加されます。そして、続く複数の bind
+ メッセージがこの同じポインタを使用することが、キャッシュ削除の際に二重開放を引き起こす原因となっていました。
+ </p>
+ <p>
+ このバグはバグトラック #68 にて harukat さんにより報告されました。
+ </p>
+ <blockquote>
+ #68: child process termination with sigabort when memory_cache_enabled = on<br />
+ <a href="http://www.pgpool.net/mantisbt/view.php?id=68">
+ http://www.pgpool.net/mantisbt/view.php?id=68
+ </a>
+ </blockquote>
+</li>
+
+<li>
+ いくつかのテストケースをレグレッションテストに追加しました。(Tatsuo Ishii)
+</li>
+
+<li>
+ ドキュメントの pgpool-recovery のインストールの節の typo を修正しました。(Tatsuo Ishii)
+</li>
+
+<li>
+ ログメッセージの typo を修正しました。 (Yugo Nagata)
+</li>
+
+<li>
+ 日本語ドキュメントの typo を修正しました。 (Yugo Nagata)
+</li>
+
+<li>
+ レプリケーションモードにてロードバランスモードが off の場合には、SELECT
+ クエリをマスターノードにのみ送信するよう修正しました。(Tatsuo Ishii)
+ <p>
+ レプリケーションモードでロードバランスモードが off の場合には、明示的なトランザクションの中で
+ SELECT クエリは、全てのノードにではなく、マスターノードにのみ送られなくてはなりません。
+ </p>
+ <p>
+ このバグは [pgpool-general: 2038] にて Rypl Lukas さんにより報告されました。
+ </p>
+ <blockquote>
+ [pgpool-general: 2038] SELECT sent to both nodes in replication mode<br />
+ <a href="http://www.sraoss.jp/pipermail/pgpool-general/2013-August/002066.html">
+ http://www.sraoss.jp/pipermail/pgpool-general/2013-August/002066.html
+ </a>
+ </blockquote>
+</li>
+
+<li>
+ pgpool_setup が単独で動作しなくなっていたのを修正しました。(Tatsuo Ishii)
+</li>
+
+</ul>
+
<!-- -------------------------------------------------------------------------------- -->
<h2><a name="release3.3.0"></a>3.3.0 (tokakiboshi) 2013/07/30</h2>
<!-- -------------------------------------------------------------------------------- -->
[parent: 9dac83f29ff0]