pgpool2.git / summary / log / commit / refs

commit    c3b2ee28fc8b86b1214b8cfb18a004bb3b43d9e8
Author:   Tatsuo Ishii <ishii at sraoss.co.jp>
Date:     Mon Dec 07 09:39:55 2009 +0000

    Prepare 2.3


ChangeLog | 1371 +++++++++++++++++++++++++++++++++++++++++++++++++--- NEWS | 227 +++++++++ doc/pgpool-en.html | 115 ++++- doc/pgpool-ja.html | 317 ++++++++++-- 4 files changed, 1907 insertions(+), 123 deletions(-) diff --git a/ChangeLog b/ChangeLog index b2ffa636d..0b4b8dcbe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,127 @@ +2009-12-07 18:38 t-ishii + + * NEWS, doc/pgpool-en.html, doc/pgpool-ja.html: Prepare 2.3 + +2009-12-07 17:11 t-ishii + + * pool_process_query.c: Allow to load balance EXPLAIN and EXPLAIN + ANALYZE (only if query is SELECT). This will prevent kind mismatch + errors when query plan are different among servers. + +2009-12-06 21:55 t-ishii + + * main.c, pool.h, pool_type.h: Restore backend status by using + pgpool_status file. + +2009-12-06 20:53 t-ishii + + * version.h: Change code name for pgpool-II 2.3 + +2009-12-06 18:57 t-ishii + + * pgpool.conf.sample-master-slave, pgpool.conf.sample-replication: + Add pgpool.conf sample for replication mode and master/slave mode + +2009-12-06 17:46 t-ishii + + * pgpool.conf.sample, pool.h, pool_config.c, pool_config.l, + pool_process_query.c, pool_process_reporting.c, pool_stream.c: + Add new configuration parameter fail_over_on_backend_error which + controls the behavior when write to backend socket fails. + + Also add pool_log when postmaster administrative shutdown detected. + +2009-12-06 16:52 t-ishii + + * pool_process_query.c, pool_proto_modules.c: Ignore error of + pool_flush(frontend). + +2009-12-06 16:46 t-ishii + + * pool_proto_modules.c: Optimization when num_init_children == 1. + In this case we don't need to wait for master returning a response + before sending a query to the other nodes. + +2009-12-06 16:43 t-ishii + + * Makefile.am, Makefile.in, pool_process_query.c, + pool_process_reporting.c: Teach process_reporting() about + log_per_node_statement. Also refactor pool_process_query.c to + remove process_reporting() and make a new source file + "pool_process_reporting.c" to hold the funtcion. Main reason for + this is, process_reporting() is now big enough to have a separate C + source file. + +2009-12-02 23:19 t-ishii + + * child.c, pool.h, pool_process_query.c: Enhance SIGINT handler. + +2009-12-02 23:11 t-ishii + + * pool_proto_modules.c: Fix ProcessFrontendResponse() handling of + Parse message in master/slave mode. If it's inside transaction, + enable master_slave_dml, which means execute parse on master only. + This will prevent unwanted parase executed on slave, which holds at + least AccessShareLock on tables until transaction commits. It seems + unamed statement does not release the lock until execute. + + Please note that, even with this fix, bind state will remain on + slave if JDBC issues parse with autocommit off. This is because + BEGIN parsed, bind on both master and slave but execute only on + master. However, this is not harmfull since parse/bind does not hold + any locks on tables. + + Also add some logging statemets. + +2009-12-01 22:05 t-ishii + + * ChangeLog: v2.2.6 + +2009-12-01 22:02 t-ishii + + * doc/pgpool-ja.html, NEWS: Add release note + +2009-11-29 20:56 t-ishii + + * pool_process_query.c: Fix is_select_query() not to allow cursor + statements. Close() should not allowed since hold cursor + update + may cause data inconsistency. + +2009-11-29 17:42 t-ishii + + * pool_process_query.c: Add logging by per_node_statement(). + +2009-11-29 17:29 t-ishii + + * pool_proto_modules.c: Fix ProcessFrontendResponse() handling of + Parse message in master/slave mode. If it's inside transaction, + enable master_slave_dml, which means execute parse on master only. + This will prevent unwanted parase executed on slave, which holds at + least AccessShareLock on tables until transaction commits. It seems + unamed statement does not release the lock until execute. + + Please note that, even with this fix, bind state will remain on + slave if JDBC issues parse with autocommit off. This is because + BEGIN parsed, bind on both master and slave but execute only on + master. However, this is not harmfull since parse/bind does not hold + any locks on tables. + +2009-11-18 15:55 t-ishii + + * config.h.in, configure, configure.in: Add -lcrypt for linking + commnad. Certain distribution ships libpq without linking to + libcrypt by some reasons which I don't know. + +2009-11-18 15:45 t-ishii + + * config.h.in, configure, configure.in: Add -lcrypt for linking + commnad. Certain distribution ships libpq without linking to + libcrypt by some reasons which I don't know. + +2009-11-15 20:16 t-ishii + + * ChangeLog: Run cvs2cl.pl -t --fsf -b -F trunk + 2009-11-15 17:27 t-ishii * pgpool.conf.sample, pool.h, pool_config.c, pool_config.l, @@ -20,6 +144,16 @@ Remove unnecessary argument of end_load_balance(). +2009-11-14 22:16 t-ishii + + * pool.h, pool_process_query.c, pool_proto_modules.c, + pool_proto_modules.h, child.c: Fix connection_cache = false case. + In this mode, if frontend exits abnormaly, some global state + variables are not reset. For this purpose, new function + reset_variables() added. + + Remove unnecessary argument of end_load_balance(). + 2009-11-14 20:41 t-ishii * pool_config.c: Update pool_config.l @@ -28,6 +162,14 @@ * pool_config.l: Allow to change weight with reloading pgpool.conf +2009-11-14 20:38 t-ishii + + * pool_config.c: Update pgpool_config.l + +2009-11-14 20:37 t-ishii + + * pool_config.l: Allow to change weight with reloading pgpool.conf + 2009-11-14 20:35 t-ishii * main.c: Limit listen(2)'s backlog parameter to @@ -81,6 +223,16 @@ * pool_relcache.c: Fix relcache replacement logic bug. Patches provided by Akio Ishida. +2009-11-05 13:12 t-ishii + + * parser/outfuncs.c, test/parser/expected/insert.out, + test/parser/expected/select.out, test/parser/input/insert.sql, + test/parser/input/select.sql: Fix nodeToString() bug. example + test case: If nodeToString() is given the parse tree of "insert into + r1 values(1,2), (3,4)", it returns "insert into r1 values(1,2), + values(3,4)", which is apparently wrong. Patch provided by Akio + Ishida. + 2009-11-05 12:43 t-ishii * ChangeLog, TODO, parser/outfuncs.c, @@ -109,6 +261,13 @@ unhelpfull "server closed the connection unexpectedly" message. Patch provided by Glyn Astill with minor tweak by Tatsuo Ishii. +2009-11-03 10:57 t-ishii + + * pool.h, pool_auth.c, pool_process_query.c: When authentication + fails, report to frontend proper error messages, rather than + unhelpfull "server closed the connection unexpectedly" message. + Patch provided by Glyn Astill with minor tweak by Tatsuo Ishii. + 2009-11-03 10:50 t-ishii * pool_stream.c: Fix pool_flush_it() so that it does not complain @@ -120,6 +279,11 @@ * pool_proto_modules.c: Allow is_temp_table to work with pre 8.4 PostgreSQL. +2009-10-30 14:01 t-ishii + + * pool_proto_modules.c: Allow is_temp_table to work with pre 8.4 + PostgreSQL. + 2009-10-29 22:44 t-ishii * Makefile.am, Makefile.in, child.c, configure, configure.in, @@ -136,15 +300,40 @@ used to control this. SELECT still needs /*NO LOAD BALANCE*/. It's hard to find all tables in a SELECT statement. +2009-10-29 21:58 t-ishii + + * child.c, pool.h, pool_process_query.c, Makefile.am, Makefile.in, + configure, configure.in, pool_proto_modules.c: Add + pool_relcache.c to Makefile.am. Refactor need_insert_lock to use + pool_search_relcache and friends. Add LocalSessionId to child.c + which manage per session counter of relcache. Allow to use temp + tables with master/slave mode. Parse() failed. since Parse() was + always sent to master and slave and slave does not have the temp + table. To fix this, is_temp_table() added to pool_proto_modules.c + which inquire particular table is a temporary one or not when + INSERT/UPDATE/DELETE. If it's a temporary table, parse message is + sent to only master. Note that /*NO LOAD BALANCE*/ directive can be + used to control this. SELECT still needs /*NO LOAD BALANCE*/. It's + hard to find all tables in a SELECT statement. + 2009-10-29 21:46 t-ishii * pool_relcache.c: Per process relation cache module +2009-10-29 21:42 t-ishii + + * pool_relcache.c: Per process relation cache module + 2009-10-25 16:19 t-ishii * test/jdbc/: CreateTempTableTest.java, expected/CreateTempTable, RunTest.java: Add temp table test +2009-10-25 16:14 t-ishii + + * test/jdbc/: CreateTempTableTest.java, expected/CreateTempTable: + Add temp table test + 2009-10-22 20:52 devrim * redhat/: pgpool.init, pgpool.sysconfig: Fix logging, per report @@ -166,12 +355,31 @@ * pgpool.8.in: Fix typo in man page. Patch provided by Rodolphe. +2009-10-12 11:19 t-ishii + + * pgpool.8.in: Fix typo in man pages. Patch provided by Rodolphe. + 2009-10-12 10:54 t-ishii * pool_process_query.c: REINDEX DATABASE or SYSTEM should not be executed in a transaction block. See [pgpool-general-jp: 623] for more details. +2009-10-12 10:41 t-ishii + + * pool_process_query.c: REINDEX DATABASE or SYSTEM should not be + executed in a transaction block. See [pgpool-general-jp: 623] for + more details. + +2009-10-06 00:13 devrim + + * pgpool.spec: + - Update to 2.2.5, for various fixes described at + + http://lists.pgfoundry.org/pipermail/pgpool-general/2009-October/002188.html + - Re-apply a fix for Red Hat Bugzilla #442372 + - Add 2 new docs, per Tatsuo. + 2009-10-06 00:12 devrim * pgpool.spec: @@ -186,20 +394,34 @@ - Re-apply a fix for Red Hat Bugzilla #442372 - Sync with Fedora spec. +2009-10-04 18:15 t-ishii + + * NEWS, configure.in, configure, ChangeLog (utags: V2_2_5): Prepare + 2.2.5 + +2009-10-04 18:15 t-ishii + + * doc/pgpool-ja.html (tags: V2_2_5): Add release note for 2.2.5 + 2009-10-04 08:52 t-ishii - * doc/: tutorial-en.html, tutorial-ja.html: Add sample to use - rotatelogs + * doc/: tutorial-en.html (tags: V2_2_5), tutorial-en.html, + tutorial-ja.html: Add sample to use rotatelogs + +2009-10-03 21:45 t-ishii + + * doc/tutorial-ja.html (tags: V2_2_5): Add sample to use rotatelogs 2009-10-03 21:39 t-ishii - * sample/pgpool_recovery_pitr: Enhance online recovery 2nd stage - script to sync sequence value + * sample/: pgpool_recovery_pitr (tags: V2_2_5), + pgpool_recovery_pitr: Enhance online recovery 2nd stage script to + sync sequence value 2009-10-03 20:55 t-ishii - * pool_proto_modules.h: Remove unnecessary declaration - "allow_close_transaction" + * pool_proto_modules.h (tags: V2_2_5), pool_proto_modules.h: Remove + unnecessary declaration "allow_close_transaction" 2009-10-02 17:00 t-ishii @@ -207,12 +429,13 @@ 2009-10-02 16:56 t-ishii - * pool_proto_modules.c: Fix Parse() to use - wait_for_query_response() instead of synchronize(). + * pool_proto_modules.c (tags: V2_2_5), pool_proto_modules.c: Fix + Parse() to use wait_for_query_response() instead of synchronize(). 2009-10-02 16:53 t-ishii - * pool_process_query.c: Fix comment + * pool_process_query.c (tags: V2_2_5), pool_process_query.c: Fix + comment 2009-09-26 18:14 t-ishii @@ -239,6 +462,26 @@ Patches by Xavier Noguer with minor tweak by Tatsuo Ishii. +2009-09-26 16:36 t-ishii + + * pool_process_query.c: Fix reset_backend to deal with DEALLOCATE + error. In this case prepared objects are not removed and + reset_backend is infinitely called. + + Fix do_command to guard against the case that after execution of an + SQL command, the backend does not return either N, E or C. This + should not happen but there was a report that it actually happend in + certain cases(maybe caused by asynchronized backend data?) + + See: + + Subject: Re: [Pgpool-general] pgpool 2.2.4: DEALLOCATED children + From: Xavier Noguer Date: Fri, 25 Sep 2009 03:35:57 -0400 + + For more details. + + Patches by Xavier Noguer with minor tweak by Tatsuo Ishii. + 2009-09-26 09:27 t-ishii * pool_process_query.c: Remove error checks for @@ -268,17 +511,42 @@ This patch was applied to only 2.2-STABLE tree by y-mori on 2009/09/08. +2009-09-25 23:36 t-ishii + + * pool_proto_modules.c: Make allow_close_transaction to static and + add comments. + + Let execute CREATAE TEMP TABLE on every nodes in master/slave mode. + If not, subsequent Parse or Bind to use the table will fail. At + this point this doen't work since MASTER_SLAVE set to 0 in + ProcessFrontendResponse. More analysis is needed... + 2009-09-25 16:35 t-ishii - * main.c: Fix write_pid_file. It forgot to write out NULL - termination of pid. Pgpool occasionally won't stop because of this - bug. + * main.c (tags: V2_2_5), main.c: Fix write_pid_file. It forgot to + write out NULL termination of pid. Pgpool occasionally won't stop + because of this bug. + +2009-09-23 20:39 t-ishii + + * pool_process_query.c: Remove error checks for + pool_write(frontend), pool_flush(frontend) in + SimpleForwardToFrontend. + + Check error for send_deallocate() in reset_backend. Otherwise + send_deallocate will be called infinitely. Per bug report from + Agustin Almonte Ferrada. See: + + Subject: Re: [Pgpool-general] pgpool 2.2.4: DEALLOCATED children + From: Agustin Almonte Ferrada <aalmonte@antica.cl> To: Tatsuo Ishii + <ishii@sraoss.co.jp> Cc: pgpool-general@pgfoundry.org Date: Wed, 23 + Sep 2009 01:55:54 -0400 2009-09-23 11:03 t-ishii - * pool_auth.c: Fix pool_read_kind and pool_read_int so that the - error message for kind is shown in hexadecimal. Other part of - pgpool-II already does this. + * pool_auth.c (tags: V2_2_5), pool_auth.c: Fix pool_read_kind and + pool_read_int so that the error message for kind is shown in + hexadecimal. Other part of pgpool-II already does this. 2009-09-17 20:32 t-ishii @@ -290,6 +558,16 @@ else. This patch should give a way insert_lock() to espcape from the situation. +2009-09-17 20:17 t-ishii + + * pool_process_query.c, pool_proto_modules.c, pool_proto_modules.h: + Teach do_command() to use wait_for_query_response(). insert_lock() + calls do_command() to issue LOCK TABLE to lock tables having SERIAL + column when insert_lock is true. Problem is, insert_lock() waits + forever in do_command() if the target table is locked by someone + else. This patch should give a way insert_lock() to espcape from the + situation. + 2009-09-06 12:56 t-ishii * child.c, pool.h: Fix connection_count_down() so that it does @@ -309,6 +587,54 @@ * pool_process_query.c: Undef #define SEND_NOTICE_ON_PROTO2, which was defined by mistake. +2009-09-06 12:52 t-ishii + + * child.c, pool.h (utags: V2_2_5): Fix connection_count_down() so + that it does decrement too much in some corner cases. If failed to + read a start up packet, or receive cancel request etc., + connection_count_down() is called and goes back to the onnection + accept loop. Problem is, at the very beginning of the connection + accept loop, if we have received a signal, we call child_exit() + which calls connection_count_down() again. Problem report by + Ryoichi TANABE. See [pgpool-general-jp: 616] for more details. + + Also unneccesary public declarations for connection_count_up() and + connection_count_down() are removed. + +2009-08-24 13:58 t-ishii + + * ChangeLog (tags: V2_2_4): Prepare 2.2.4 + +2009-08-24 13:55 t-ishii + + * NEWS, configure, doc/pgpool-ja.html (utags: V2_2_4): Prepare + 2.2.4 + +2009-08-24 13:53 t-ishii + + * configure.in (tags: V2_2_4): Prepare 2.2.4. + +2009-08-24 13:36 t-ishii + + * TODO (tags: V2_2_5, V2_2_4): Add a few items + +2009-08-22 13:19 t-ishii + + * child.c, main.c, md5.c (tags: V2_2_5), pcp_child.c (tags: + V2_2_5), pg_md5.c (tags: V2_2_5), pool_auth.c, pool_config.c + (tags: V2_2_5), pool_connection_pool.c (tags: V2_2_5), + pool_error.c (tags: V2_2_5), pool_hba.c (tags: V2_2_5), pool_ip.c + (tags: V2_2_5), pool_params.c (tags: V2_2_5), pool_path.c (tags: + V2_2_5), pool_process_query.c, pool_proto_modules.c, + pool_query_cache.c (tags: V2_2_5), pool_rewrite_outfuncs.c (tags: + V2_2_5), pool_rewrite_query.c (tags: V2_2_5), pool_sema.c (tags: + V2_2_5), pool_shmem.c (tags: V2_2_5), pool_signal.c (tags: + V2_2_5), pool_stream.c (tags: V2_2_5), pool_system.c (tags: + V2_2_5), ps_status.c (tags: V2_2_5), recovery.c (tags: V2_2_5), + strlcpy.c (tags: V2_2_5), pcp/md5.c (tags: V2_2_5) (utags: + V2_2_4): Remove unnecessary spaces and tabs at end of line. + Patch conributed by Jun Kuriyama. + 2009-08-22 13:04 t-ishii * child.c, main.c, md5.c, pcp_child.c, pg_md5.c, pool_auth.c, @@ -338,6 +664,16 @@ SEND_NOTICE_ON_PROTO2 around line 879 to enable this feature in version 2 protocol. +2009-08-18 17:38 t-ishii + + * pool_process_query.c, pool_proto_modules.c, pool_proto_modules.h + (tags: V2_2_4): Change wait_for_query_response() so that it sends + NOTICE message to frontend periodically. It appears that pgpool-II + 2.2.3 unconditionaly sends param packet to client even it uses + version 2 protocol, which is apparentlt wrong. Also tweak checking + period from 1 second to 30 seconds since 1 second seems too + aggressive. + 2009-08-18 17:30 t-ishii * child.c: Remove unneccessary call to send_frontend_exit() in @@ -354,11 +690,47 @@ before establish signal handler. See [pgpool-general-jp: 586] for more details. +2009-08-13 22:36 t-ishii + + * child.c: Remove unnessary call of send_frontend_exits() in die(). + +2009-08-13 22:34 t-ishii + + * main.c: Block signals before forking children rather after. + Otherwise parent will be killed by failover signal if it receives + before establish signal handler. See [pgpool-general-jp: 586] for + more details. + +2009-08-11 22:53 t-ishii + + * ChangeLog (tags: V2_2_3): Prepare 2.2.3. + +2009-08-11 22:52 t-ishii + + * configure.in, configure (utags: V2_2_3): Stamp 2.2.3. + +2009-08-11 22:48 t-ishii + + * doc/pgpool-ja.html (tags: V2_2_3): Fix description of parallel + query. Add release note for 2.2.3. + 2009-08-11 22:23 t-ishii - * pool_connection_pool.c: Fix new_connection() so that it does - leave garbage in POOL_CONNECTION_POOL->slot[i]. This caused segfault - in child_exit(). Bug report at [pgpool-general-jp: 586]. + * pool_connection_pool.c (tags: V2_2_3), pool_connection_pool.c: + Fix new_connection() so that it does leave garbage in + POOL_CONNECTION_POOL->slot[i]. This caused segfault in child_exit(). + Bug report at [pgpool-general-jp: 586]. + +2009-08-07 14:27 y-mori + + * pool_process_query.c, pool_rewrite_outfuncs.c (utags: V2_2_3): + FIX parallel query + + 1. Fix JOIN Expr + Subquery was used on larg or rarg. + Subquery was used on ON-Cluase. + Full OUTER JOIN was not optimized.   + 2. Fail_on_error=false was passed to the 3rd arguments of dblink. 2009-08-06 20:38 t-ishii @@ -371,9 +743,9 @@ 2009-08-06 16:55 t-ishii - * pool_proto_modules.c: Print last query for kind mismatch error - message even extended protocol is used. Patch contributed by Akio - Ishida. + * pool_proto_modules.c (tags: V2_2_3), pool_proto_modules.c: Print + last query for kind mismatch error message even extended protocol is + used. Patch contributed by Akio Ishida. 2009-08-06 16:46 t-ishii @@ -382,6 +754,13 @@ Takahiro Itagaki at [pgsql-jp: 39950]. Fix suggested by Akio Ishida at [pgsql-jp: 39952]. +2009-08-06 16:38 t-ishii + + * pool_process_query.c: Fix buffer overrun error which mangled kind + mismatch error message in pool_send_error_message(). Bug rpeort by + Takahiro Itagaki at [pgsql-jp: 39950]. Fix suggested by Akio Ishida + at [pgsql-jp: 39952]. + 2009-08-03 19:31 t-ishii * parser/: kwlist.h, kwlookup.c: Missing files for PostgreSQL 8.4 @@ -393,6 +772,13 @@ referring to sp. Current implementation may interrupt in the window, after setting p and before setting sp. +2009-08-01 20:40 t-ishii + + * child.c (tags: V2_2_3): Check MASTER_CONNECTION(p)->sp) is non 0 + before further referring to sp. Current implementation may interrupt + in the window, after setting p and before setting sp. Per bug report + from Jun Kuwamura. + 2009-08-01 20:34 t-ishii * pool_connection_pool.c: Fix pool_debug's mismatch between data @@ -423,6 +809,20 @@ test/parser/expected/select.out, test/parser/expected/update.out: Adopt PostgreSQL 8.4 parser. Patch contributed by Akio Ishida. +2009-07-30 16:46 t-ishii + + * pool_process_query.c: Fix typo in comment + +2009-07-28 14:52 y-mori + + * doc/: pgpool-en.html (tags: V2_2_5, V2_2_4, V2_2_3), + pgpool-ja.html: add restrictions for parallel mode + + -Natural Join + => not support + -USING CLAUSE at Join Expression + => auto convert to ON CLAUSE + 2009-07-28 09:34 t-ishii * pool_process_query.c: Fix typo in comment @@ -432,6 +832,11 @@ * pool_rewrite_outfuncs.c: Fix breakage by previous commit. Patch by Guillaume Lelarge. +2009-07-26 18:04 t-ishii + + * pool_rewrite_outfuncs.c: Fix breakage by previous commit. Patch + by Guillaume Lelarge. + 2009-07-26 12:09 t-ishii * pool_rewrite_outfuncs.c: fix: Join statment in parallel query @@ -454,8 +859,24 @@ 2009-07-26 11:57 t-ishii - * pool_sema.c: Fix various pool_error/log format errors. Patch - provided by Akio Ishida. + * pool_sema.c (tags: V2_2_3), pool_sema.c: Fix various + pool_error/log format errors. Patch provided by Akio Ishida. + +2009-07-24 21:30 y-mori + + * pool_rewrite_outfuncs.c: fix: Join statment in parallel query + + sample) + Accouts table is defined by dist_def, + the below query is executed as loadbalance. + + SELECT a.aid + FROM + accounts as a + JOIN + accounts as b + ON a.aid=b.aid + WHERE a.aid =1 or a.aid=2; 2009-07-22 17:51 t-ishii @@ -464,6 +885,13 @@ various pool_error/log format errors. Patch provided by Akio Ishida. +2009-07-22 17:46 t-ishii + + * child.c, main.c (tags: V2_2_3), pool.h (tags: V2_2_4, V2_2_3), + pool_process_query.c, pool_proto_modules.c, + pool_rewrite_outfuncs.c, pool_shmem.c (tags: V2_2_3): Fix various + pool_error/log format errors. Patch provided by Akio Ishida. + 2009-07-22 17:26 t-ishii * pool_process_query.c, pool_proto_modules.c, pool_proto_modules.h: @@ -487,6 +915,30 @@ Also refactor error detecting modules (detect_deadlock_error and so on). +2009-07-22 14:33 t-ishii + + * pool_process_query.c, pool_proto_modules.c, pool_proto_modules.h + (tags: V2_2_3): Query cancel by statement timeout does not + generate "kind mismatch" error any more. How to reproduce the test + case: + + Directory connect to PostgreSQL. T1: BEGIN; T1: LOCK TABLE t1; + + T2: SET statement_timeout TO 5000; T2: UPDATE t1 SET ... + + UPDATE query aborts and error message comes out on T2: ERROR: + canceling statement due to statement timeout + + A side effect of this is, statement timeout works correctly (rather + than statement timeout value * # of node). + + Note that to initiate T1 by directory connecting to slave node will + not work (still results in kind mismatch error). But I don't think + this could happend in the real world. + + Also refactor error detecting modules (detect_deadlock_error and so + on). + 2009-07-21 18:48 t-ishii * main.c: Check read(2) error in health_check(). This should detect @@ -497,6 +949,10 @@ To: pgpool-general@pgfoundry.org Date: Sun, 05 Jul 2009 18:01:18 +0000 +2009-07-21 12:59 t-ishii + + * ChangeLog: Update Change. We are getting closer to 2.2.3. + 2009-07-21 10:43 t-ishii * pool.h, pool_proto_modules.c: Check frontend connection while @@ -504,11 +960,23 @@ Replace synchronize() with wait_for_query_response(). Also tweak pool.h so that it includes cancel packet's mazic proto number. +2009-07-21 10:36 t-ishii + + * pool.h, pool_proto_modules.c: Check frontend connection while + waiting for response from backend for extended protocol (Execute()). + Replace sychronize() with wait_for_query_response(). Also tweak + pool.h so that it includes cancel packet's mazic proto number. + 2009-07-21 09:30 t-ishii * pool_process_query.c: Do not start transaction if the command is CLUSTER with no argument +2009-07-21 09:26 t-ishii + + * pool_process_query.c: Do not start transaction if the command is + CLUSTER with no argument + 2009-07-20 21:21 t-ishii * child.c, pool.h, pool_process_query.c, pool_proto_modules.c, @@ -559,6 +1027,18 @@ copy-in state if it receives ABORT (issued in reset_backend). It seems PostgreSQL is not implemented as stated in the doc... +2009-07-20 20:47 t-ishii + + * child.c, pool.h, pool_process_query.c, pool_proto_modules.c, + pool_proto_modules.h: Check frontend connection while waiting for + response from backend. This is done in wait_for_query_response() by + writing a dummy parameter status packet to pgpool client every 1 + second. If the write fails, a cancel packet is sent to backend to + free backend. This is usefull to prevent pgpool child from waiting + forever for backend response. Pgpool client will diconnect to pgpool + if the query takes too long. This is typical use case for Web + applications. + 2009-07-15 15:09 t-ishii * pool_process_query.c: Fix bug with prepared statement @@ -583,11 +1063,85 @@ Bug analysis and fix provided by Akio Ishida. +2009-07-15 14:14 t-ishii + + * pool_process_query.c: Fix bug with prepared statement + deallocation: + + Subject: [Pgpool-general] Pgpool probelms From: Nimesh Satam + <nimesh.satam@gmail.com> To: pgpool-general@pgfoundry.org Cc: Nimesh + Satam <nimesh.zedo@gmail.com> Date: Wed, 17 Jun 2009 11:31:37 +0530 + + This was caused a bug in reset_backend(). + + if (qcnt >= qn + prepared_list.cnt) { + reset_prepared_list(&prepared_list); + return 2; } send_deallocate(backend, &prepared_list, qcnt - qn); + return 1; + + Problem is, send_deallocate -> SimpleQuery("DEALLOCATE") calls + del_prepared_list, which will decrement prepared_list.cnt. In short, + incrementing of qcnt *and* decrementing of prepared_list.cnt happen + at the same time. So deallocate is only called 1/2 times than it + should be. + + Bug analysis and fix provided by Akio Ishida. + +2009-07-14 17:42 t-ishii + + * sql/pgpool-recovery/pgpool-recovery.c (tags: V2_2_5, V2_2_4, + V2_2_3): Update copyright year + 2009-07-14 17:39 t-ishii - * sql/pgpool-recovery/pgpool-recovery.c: PostgreSQL 8.4 needs to + * sql/pgpool-recovery/: pgpool-recovery.c: PostgreSQL 8.4 needs to include utils/binutils.h +2009-06-26 13:59 t-ishii + + * pool_process_query.c: Fix bug with SimpleForwardToFrontend(). + Clients using the extend protocol send 'H'(Flush) after each + command. Problem is, SimpleForwardToFrontend does not immediately + forward 'C'(Command Complete) packet to frontend. So the client + sends 'H' and wait for 'C'. On the other hand backend receives 'H' + but reply back nothing since Command complete has nothing to be + returned. Both side stuck. + + The fix is, forwarding 'C' packet immediately after receiving it + from backend. To prevent similar bugs happen in the future, I put + pool_flush(frontend) after calling SimpleForwardToFrontend in + pool_process_query() (other places already do this). + + The extra pool_flush() might harm performance. So I did some tests + using pgbench -S, and found nothing has been changed regarding + performance after patching. + + Bug report from Gavin Sherry along with patches for + SimpleForwardToFrontend(). + +2009-05-27 11:01 t-ishii + + * pool.h, pool_process_query.c: Add pool_set_timeout() to control + pool_check_fd()'s behavior. This can be used for various places. + The first user is reset_backend() to fix following scenario: Do + COPY_FROM(for example pgbench -i) Cancel pgbench pgpool waits for + response from backend while sending reset queries and hang. Backend + waits for data coming from pgpool forever. + + BTW, I don't think PostgreSQL's befaviro for COPY_FROM is quite + correct since the doc stats:"Receipt of any other non-copy message + type constitutes an error that will abort the copy-in state as + described above" If my understanding correct, COPY_FROM should abort + copy-in state if it receives ABORT (issued in reset_backend). It + seems PostgreSQL is not implemented as stated in the doc... + +2009-05-24 22:56 t-ishii + + * sql/pgpool-recovery/Makefile (tags: V2_2_5, V2_2_4, V2_2_3): + Support pre 8.0 PostgreSQL which does not have pg_config --pgxs + option. Patch provided by Enrico Pirozzi with slight modification + by Tatsuo Ishii + 2009-05-24 17:43 t-ishii * sql/pgpool-recovery/Makefile: Support pre 8.0 PostgreSQL which @@ -596,30 +1150,54 @@ 2009-05-12 10:01 t-ishii - * doc/pgpool-en.html: Fix description of client_idle_limit + * doc/: pgpool-en.html: Fix description of client_idle_limit + +2009-05-05 11:07 t-ishii + + * configure.in, configure, NEWS (tags: V2_2_3) (utags: V2_2_2): + prepare 2.2.2 + +2009-05-05 11:04 t-ishii + + * doc/pgpool-ja.html (tags: V2_2_2): Add 2.2.2 release note 2009-05-02 17:48 t-ishii - * pool_process_query.c: Fix is_select_query() to test "sql" - parameter is NULL. As of 2.2, pgpool sets Portal->sql_string to - NULL for SQL command PREPARE. Usually this is ok, since in most - cases SQL command EXECUTE follows anyway. Problem is, some - applications mix PREPARE with extended protocol command "EXECUTE" - and so on. Execute() seems to think this never happens but it is not - real. Someday we should extract actual query string from - PrepareStmt->query and set it to Portal->sql_string. + * pool_process_query.c, pool_process_query.c (tags: V2_2_2): Fix + is_select_query() to test "sql" parameter is NULL. As of 2.2, + pgpool sets Portal->sql_string to NULL for SQL command PREPARE. + Usually this is ok, since in most cases SQL command EXECUTE follows + anyway. Problem is, some applications mix PREPARE with extended + protocol command "EXECUTE" and so on. Execute() seems to think this + never happens but it is not real. Someday we should extract actual + query string from PrepareStmt->query and set it to + Portal->sql_string. 2009-05-02 17:45 t-ishii - * pool_stream.c: Fix pool_flush() so that it ignores error on - frontend connection. This is needed to continue processing with - backend, otherwise we risk data incositency. + * pool_stream.c (tags: V2_2_3, V2_2_2), pool_stream.c: Fix + pool_flush() so that it ignores error on frontend connection. This + is needed to continue processing with backend, otherwise we risk + data incositency. 2009-05-02 17:41 t-ishii - * child.c: Call pool_send_frontend_exits() before pool_discard_cp() - when resetting connection fails. This will avoid "unexpected EOF on - client connection" error on when pgpool client exits abnormaly + * child.c (tags: V2_2_2), child.c: Call pool_send_frontend_exits() + before pool_discard_cp() when resetting connection fails. This will + avoid "unexpected EOF on client connection" error on when pgpool + client exits abnormaly + +2009-05-01 09:39 t-ishii + + * pool_proto_modules.c (tags: V2_2_2): Add missing patches for + this: + + 2009-04-08 20:11 t-ishii + + * pool_proto_modules.c (V2_2_STABLE): In master slave mode, + sometimes DEALLOCATE fails. This is caused by that the first + PREPARE was not executed on the slave. Patch contributed by + Toshihiro Kitagawa. 2009-05-01 09:37 t-ishii @@ -630,11 +1208,33 @@ caused by that the first PREPARE was not executed on the slave. Patch contributed by Toshihiro Kitagawa. +2009-04-25 16:20 t-ishii + + * ChangeLog (tags: V2_2_2, V2_2_1): prepare for 2.2.1 + +2009-04-25 16:16 t-ishii + + * configure.in, configure (utags: V2_2_1): prepare for 2.2.1 + +2009-04-25 16:12 t-ishii + + * doc/pgpool-ja.html (tags: V2_2_1): Add 2.2.1 release note + +2009-04-25 16:05 t-ishii + + * NEWS (tags: V2_2_1): Prepare 2.2.1 + 2009-04-08 20:11 t-ishii - * pool_proto_modules.c: In master slave mode, sometimes DEALLOCATE - fails. This is caused by that the first PREPARE was not executed on - the slave. Patch contributed by Toshihiro Kitagawa. + * pool_proto_modules.c (tags: V2_2_1), pool_proto_modules.c: In + master slave mode, sometimes DEALLOCATE fails. This is caused by + that the first PREPARE was not executed on the slave. Patch + contributed by Toshihiro Kitagawa. + +2009-04-03 22:49 t-ishii + + * doc/: pgpool-en.html (tags: V2_2_2, V2_2_1), pgpool-ja.html: Add + documents about configuration reloading. 2009-04-03 22:43 t-ishii @@ -649,6 +1249,12 @@ happen with queries defined in reset_query_list. The bug had been there since 2.1 BTW. +2009-04-03 19:21 t-ishii + + * pgpool.spec, redhat/pgpool.conf.sample.patch, redhat/pgpool.init + (utags: V2_2_1, V2_2_2, V2_2_3, V2_2_4, V2_2_5): Merge changes + made on HEAD regarding RPM spec files + 2009-03-23 10:14 devrim * pgpool.spec, redhat/pgpool.init: @@ -668,21 +1274,32 @@ 2009-03-14 12:39 t-ishii - * pool_process_query.c: Fix need_insert_lock so that it returns - false if the protocol version is 2. insert_lock has not been working - for V2 protocol anyway, so this is ok. + * pool_process_query.c, pool_process_query.c (tags: V2_2_1): Fix + need_insert_lock so that it returns false if the protocol version is + 2. insert_lock has not been working for V2 protocol anyway, so this + is ok. 2009-03-09 00:00 gleu * main.c, pgpool.8.in, doc/pgpool-en.html: Update usage function, doc and man page. +2009-03-08 23:58 gleu + + * main.c, pgpool.8.in (tags: V2_2_5, V2_2_4, V2_2_3) (utags: + V2_2_1, V2_2_2): Update usage function and man page. + 2009-03-07 18:19 t-ishii * pool_process_query.c: Add a comment to need_insert_lock() if the query being used to check if the table has SERIAL column is valid for PostgreSQL 7.3 to 8.3. +2009-03-07 08:54 t-ishii + + * pool_process_query.c: Make excessive message level in + read_kind_from_backend from LOG to DEBUG. + 2009-03-07 08:49 t-ishii * pool_process_query.c: Make excessive message level in @@ -692,10 +1309,24 @@ * main.c: Add support for long options name in pgpool command. +2009-03-01 22:34 t-ishii + + * doc/pgpool-ja.html: Fix release note for 2.2 + 2009-03-01 22:22 t-ishii * doc/pgpool-ja.html: Fix release note for 2.2 +2009-02-28 15:33 t-ishii + + * Makefile.in (tags: V2_2_5, V2_2_4, V2_2_3, V2_2_2, V2_2_1, + V2_2_0): Update Makefile.am + +2009-02-28 15:33 t-ishii + + * Makefile.am (tags: V2_2_5, V2_2_4, V2_2_3, V2_2_2, V2_2_1, + V2_2_0): Add doc/load_balance.png, doc/load_balance.odp + 2009-02-28 15:29 t-ishii * Makefile.in: Update Makefile.am @@ -2138,6 +2769,10 @@ * pool_rewrite_query.c: FIX: INSERT statment in a parallel mode How to count the Value Clause list was wrong +2007-12-05 17:19 y-asaba + + * pool_stream.c: Improve buffering algorithm in pool_write(). + 2007-12-05 17:15 y-asaba * pool_stream.c: Improve buffering algorithm in pool_write(). @@ -2171,6 +2806,10 @@ ERROR: pgpool2 sql restriction DETAIL: cannot use SElectStmt in InserStmt +2007-11-29 14:50 y-asaba + + * ChangeLog: update. + 2007-11-24 22:04 t-ishii * doc/: pgpool-en.html, pgpool-ja.html: Fix english docs. Add a @@ -2213,6 +2852,11 @@ * pool_process_query.c: Send a syntax error query to a master node when master_slave is true. +2007-11-21 10:40 y-asaba + + * pool_process_query.c: Send a syntax error query to a master node + when master_slave is true. + 2007-11-16 14:29 y-mori * doc/: pgpool-en.html (tags: V2_0_1), pgpool-ja.html (utags: @@ -2220,8 +2864,8 @@ 2007-11-16 11:52 y-asaba - * pool_auth.c (tags: V2_0_1, V2_0_0): Fix segmentation fault in a - password authentication when a node is down. + * pool_auth.c (tags: V2_0_1, V2_0_0), pool_auth.c: Fix segmentation + fault in a password authentication when a node is down. 2007-11-16 10:56 y-asaba @@ -2358,6 +3002,15 @@ * pool_rewrite_outfuncs.c: fix: join rule for /*NOT*/SQL99 type join,CROSS JOIN and NATURAL JOIN +2007-11-06 16:22 y-asaba + + * pool_process_query.c: Fix insert lock with JDBC and the following + scenario. + + BEGIN; + INSERT INTO a ... <- get table lock. + INSERT INTO b ... <- don't get table lock. + 2007-11-06 16:07 y-asaba * test/jdbc/InsertTest.java (tags: V2_2_5, V2_2_4, V2_2_3, V2_2_2, @@ -2379,11 +3032,31 @@ V2_1_0_BETA1, V2_0_1, V2_0_0), Makefile.am: Add INSERT statement test. +2007-11-06 13:38 y-asaba + + * pool_process_query.c: Don't close internal transaction when + pgpool recieves Sync message. + +2007-11-05 16:26 y-asaba + + * pool_process_query.c: Send Sync message before calling + insert_lock(). + +2007-11-05 14:49 y-asaba + + * pool_process_query.c: Fix insert_lock with extended query + protocol. + 2007-11-05 14:26 y-asaba * pool_process_query.c: Fix insert_lock with extended query protocol. +2007-11-05 13:24 y-mori + + * pool_process_query.c: FIX: read wrong file descriptor in + pool_parallel_exec() + 2007-11-05 11:08 y-asaba * pool_process_query.c: Use FD_SETSIZE instead of 1024 at set_fd, @@ -2393,6 +3066,10 @@ * pool_process_query.c: Ignore white space in need_insert_lock(). +2007-11-05 10:35 y-asaba + + * pool_process_query.c: Ignore white space in need_insert_lock(). + 2007-11-02 18:20 y-mori * pool_process_query.c: Fix: compile error at FreeBSD4.1 @@ -2588,6 +3265,10 @@ * pool_process_query.c: Check return value of pool_flush(). +2007-10-26 16:27 y-asaba + + * pool_process_query.c: Check return value of pool_flush(). + 2007-10-23 16:32 y-asaba * sql/pgpool-recovery/pgpool-recovery.c: Change error message. @@ -2663,12 +3344,22 @@ * NEWS, doc/pgpool-ja.html: Merge from V1_STABLE branch. +2007-10-22 13:20 y-asaba + + * ChangeLog, NEWS, doc/pgpool-ja.html (utags: V1_3): Add a item + about fixing query cache. + +2007-10-18 21:41 t-ishii + + * Makefile.in, configure, parser/scan.c (utags: V1_3): Run autoconf + 2007-10-18 18:55 y-asaba - * pool_query_cache.c (tags: V2_0_1, V2_0_0, V2_0_0_BETA1): Although - the second argument of PQunescapeBytea() requires size_t which size - is 8 byte in 64bit machine, pgpool passed 4 byte variable. It - caused segfault. So fixed passing size_t variable. + * pool_query_cache.c (tags: V1_3), pool_query_cache.c (tags: + V2_0_1, V2_0_0, V2_0_0_BETA1): Although the second argument of + PQunescapeBytea() requires size_t which size is 8 byte in 64bit + machine, pgpool passed 4 byte variable. It caused segfault. So + fixed passing size_t variable. 2007-10-18 18:52 y-mori @@ -2697,6 +3388,11 @@ * pool_process_query.c: Fix compile warning on Solaris. +2007-10-18 11:49 y-asaba + + * pool_process_query.c (tags: V1_3): Fix compiler warning on + Solaris. + 2007-10-18 10:21 y-asaba * pool_config.c, pool_config.l: Set failback_command default value @@ -2709,18 +3405,72 @@ 2007-10-17 15:31 y-mori - * pool_rewrite_outfuncs.c: FIX: lost alias name of column in query - rewriting when it was used at GRUP BY CLAUSE..etc + * pool_rewrite_outfuncs.c: FIX: lost alias name of column in query + rewriting when it was used at GRUP BY CLAUSE..etc + +2007-10-17 13:13 devrim + + * pool_config.l (tags: V1_3): Fix typos in comments + +2007-10-17 13:03 devrim + + * pgpool.spec (tags: V1_3): + - Update to 1.3 + +2007-10-17 12:00 y-mori + + * pool.h, pool_process_query.c, pool_rewrite_outfuncs.c: Fix: + compiler's warning + +2007-10-17 11:50 y-asaba + + * NEWS: Release note for 1.3. + +2007-10-17 11:26 y-asaba + + * Makefile.am (tags: V1_3): Add redhat/* into EXTRA_DIST. + +2007-10-16 22:46 devrim + + * pgpool.spec: Sync with Fedora spec file Add init script and + sysconfig file + +2007-10-16 22:44 devrim + + * redhat/: pgpool.init, pgpool.sysconfig (utags: V1_3): RPM init + script and sysconfig file for Fedora / Red Hat + +2007-10-16 18:18 y-asaba + + * doc/pgpool-ja.html: Prepare for 1.3 + +2007-10-16 18:08 y-asaba + + * version.h (tags: V1_3): Prepare for 1.3 + +2007-10-16 17:18 y-asaba + + * configure.in (tags: V1_3): Prepare for 1.3. -2007-10-17 12:00 y-mori +2007-10-16 16:48 y-asaba - * pool.h, pool_process_query.c, pool_rewrite_outfuncs.c: Fix: - compiler's warning + * ChangeLog: update. 2007-10-16 12:44 y-asaba * pool_process_query.c: Fix hang up in load balancing mode. +2007-10-16 11:57 y-asaba + + * pool_process_query.c: Fix hang up in load balancing mode. + + BEGIN; + SELECT 1; + COMMIT; + SELECT 1; <-- hang up + + The bug was introduced in V1.2. Reported by Felix J. Ogris. + 2007-10-15 22:56 y-mori * pool_rewrite_outfuncs.c: fix Type Casting of Constant value was @@ -2766,11 +3516,30 @@ V2_0_1, V2_0_0, V2_0_0_BETA1), pool_type.h (tags: V2_0_1, V2_0_0, V2_0_0_BETA1): ADD query rewriting to main trunc +2007-10-15 15:51 y-asaba + + * pool_process_query.c: Fix typo. + +2007-10-15 15:38 y-asaba + + * pool_process_query.c, ChangeLog: Fix invalid memory access when + pgpool processed DEALLOCATE statement. + 2007-10-15 15:11 y-asaba * parser/pool_memory.c (tags: V2_0_1, V2_0_0, V2_0_0_BETA1): Fix core dump with a large SQL. +2007-10-15 14:45 y-asaba + + * pool_process_query.c: reset queries are replicated in + master/slave mode. + +2007-10-12 23:14 y-mori + + * pool_process_query.c, pool_rewrite_outfuncs.c, + pool_rewrite_query.c: ADD query rewriting + 2007-10-12 21:27 t-ishii * pgpool.conf.sample, pool.h, pool_config.c, pool_process_query.c, @@ -2779,12 +3548,12 @@ 2007-10-12 18:15 y-asaba - * pgpool.conf.sample: Add new directive "authentication_timeout" - into pgpool.conf.sample. + * pgpool.conf.sample (tags: V1_3), pgpool.conf.sample: Add new + directive "authentication_timeout" into pgpool.conf.sample. 2007-10-12 15:56 y-asaba - * doc/pgpool-ja.html: Add authentication_timeout. + * doc/: pgpool-ja.html: Add authentication_timeout. 2007-10-12 14:55 y-asaba @@ -2797,6 +3566,13 @@ scanner's error handling. If there was a unterminated double-quote identifier, scanner entered infinite-loop. +2007-10-12 14:20 y-asaba + + * ChangeLog, parser/parser.c (tags: V1_3), parser/pool_parser.h + (tags: V1_3), parser/scan.l (tags: V1_3): Fix scanner's error + handling. If there was a unterminated double-quote identifier, + scanner entered infinite-loop. + 2007-10-12 13:51 y-asaba * child.c (tags: V2_0_1, V2_0_0, V2_0_0_BETA1), pool.h, @@ -2834,10 +3610,18 @@ Need to work on show pool_status and docs. +2007-10-12 13:32 y-asaba + + * child.c (tags: V1_3), ChangeLog, pool.h (tags: V1_3), + pool_config.c (tags: V1_3), pool_config.l, pool_process_query.c: + Add new directive "authentication_timeout". The directive means the + maximum time in seconds to complete client authentication. The + default value is 60. + 2007-10-11 17:32 y-asaba - * child.c, pool.h: Check startup packet length. If the length is - greater than 10,000 byte, pgpool reject the connection. + * ChangeLog, child.c, pool.h: Check startup packet length. If the + length is greater than 10,000 byte, pgpool reject the connection. 2007-10-11 10:49 y-asaba @@ -3026,6 +3810,11 @@ * pgpool.conf.sample, pool_config.c, pool_config.l: The default value of ignore_leading_white_space is true in pgpool-II 2.x. +2007-09-28 10:39 y-asaba + + * NEWS, doc/pgpool-ja.html (utags: V1_2_1): SET, PREPARE and + DEALLOCATE statements are replicated in master/slave mode. + 2007-09-27 18:38 gleu * pool_process_query.c: Typo fix. @@ -3086,6 +3875,15 @@ detached because these don't belong to the group which master belongs to. +2007-09-26 14:01 y-asaba + + * NEWS, doc/pgpool-ja.html: Add item into V1.2.1 release note. + +2007-09-26 13:23 y-asaba + + * ChangeLog, pool_process_query.c (utags: V1_2_1): SET statements + are replicated in master/slave mode. + 2007-09-26 12:32 y-asaba * pool_sema.c (tags: V2_0_1, V2_0_0, V2_0_0_BETA1): Fix @@ -3135,6 +3933,32 @@ * child.c, pool.h, pool_process_query.c: Fix hang up when load balancing node was down. +2007-09-14 20:06 y-asaba + + * ChangeLog, child.c (tags: V1_2_1), pool.h (tags: V1_2_1), + pool_process_query.c: Fix hang up when load balancing node was + down. + +2007-09-12 13:43 y-asaba + + * NEWS: 1.2.1 release note. + +2007-09-12 13:31 y-asaba + + * doc/pgpool-ja.html: 1.2.1 release note in Japanese. + +2007-09-12 13:21 t-ishii + + * configure (tags: V1_2_1): Run autoconf + +2007-09-12 12:55 y-asaba + + * configure.in (tags: V1_2_1): Prepare for 1.2.1 + +2007-09-10 22:34 t-ishii + + * child.c: Fix misspell in a comment + 2007-09-10 22:29 t-ishii * pool_process_query.c: Modfify pool_send_error_message() so that @@ -3163,10 +3987,21 @@ - Reuse parser memory space in free_parser(). - Check node type before comparing with "show pool_status()". +2007-09-06 10:47 y-asaba + + * doc/pgpool-en.html (tags: V1_3, V1_2_1): Fix restricted query + section. + 2007-09-06 10:43 y-asaba * doc/pgpool-en.html: Fix restricted query section. +2007-08-29 19:03 y-mori + + * pool.h, pool_process_query.c, pool_rewrite_outfuncs.c, + pool_rewrite_query.c, pool_rewrite_query.h: implemented QUERY + ANALYZING (now in progress) + 2007-08-29 15:49 y-asaba * pool_query_cache.c, pcp/pcp.c (tags: V2_0_1, V2_0_0, @@ -3177,11 +4012,31 @@ * recovery.c: Fix compile error. +2007-08-29 15:40 y-asaba + + * pool_query_cache.c, pcp/pcp.c (tags: V1_3), pcp/pcp_stream.c + (tags: V1_3) (utags: V1_2_1): Fix compile error on FreeBSD 4.11. + 2007-08-29 15:01 y-asaba * pool_process_query.c: Read response messages in Parse() until receiving ParseComplete or ErrorResponse message. +2007-08-29 14:53 y-asaba + + * pool_process_query.c: Read response messages in Parse() until + receiving ParseComplete or ErrorResponse message. + +2007-08-29 11:16 y-asaba + + * ChangeLog, pool_process_query.c: + * Fix handling Parse message. Parse message including + INSERT/UPDATE/DELETE query acquires RowExclusiveLock. However pgpool + did not wait a response from each node. It was possible to occur + deadlock problem. + + * Fix memory leak in reset_prepared_list() + 2007-08-28 19:07 y-asaba * pool_process_query.c: Add checking deadlock error message in @@ -3197,6 +4052,10 @@ * Fix memory leak in reset_prepared_list() +2007-08-17 10:51 t-ishii + + * doc/pgpool-ja.html: Enhance documentation + 2007-08-17 10:50 t-ishii * TODO, doc/pgpool-ja.html: Enhance documentation. @@ -3213,6 +4072,10 @@ If it is false, pgpool only sends them to the master node. This is a current specification. +2007-08-13 06:37 t-ishii + + * pgpool.conf.sample (tags: V1_2_1): Fix typo in a comment + 2007-08-06 10:42 y-asaba * pool_process_query.c: Fix memory leak. @@ -3221,10 +4084,46 @@ * child.c: Remove compiler warning. +2007-08-01 13:26 y-asaba + + * child.c (tags: V1_2): Remove compiler warning + +2007-08-01 13:06 y-asaba + + * NEWS (tags: V1_2): Review release note. + +2007-08-01 13:03 y-asaba + + * pool_process_query.c (tags: V1_2): Fix SEGV when connection_cache + is true and replication_mode is false. + +2007-07-31 13:02 y-asaba + + * doc/pgpool-en.html (tags: V1_2): Add a description about + "replicate_select" directive. + +2007-07-27 21:09 y-mori + + * pool_process_query.c, pool_rewrite_outfuncs.c, + pool_rewrite_query.c, pool_rewrite_query.h, pool_system.c: add + query analyzing process before rewriting query + +2007-07-27 14:57 y-asaba + + * NEWS: Release note for 1.2 + +2007-07-27 11:45 y-asaba + + * doc/pgpool-ja.html (tags: V1_2): Update release note for v1.2 + 2007-07-27 10:19 y-asaba * doc/pgpool-ja.html: Merge from V1_STABLE branch +2007-07-26 19:24 y-asaba + + * ChangeLog (tags: V1_2): update. + 2007-07-26 19:15 y-asaba * child.c, pool.h, pool_connection_pool.c (tags: V2_0_1, V2_0_0, @@ -3232,11 +4131,51 @@ non-reentrant functions. We only set a flag in SIGALRM handler. Then we close expired connections in safe places. +2007-07-26 19:12 y-asaba + + * pool_connection_pool.c (tags: V1_3, V1_2_1, V1_2): Fix buffer + over run when connection_life_time is expired. + +2007-07-26 18:03 y-asaba + + * child.c, pool.h (tags: V1_2), pool_connection_pool.c: SIGALRM + handler didn't safe because it called non-reentrant functions. We + only set a flag in SIGALRM handler. Then we close expired + connections in safe places. + +2007-07-26 17:07 t-ishii + + * configure, pool_config.c (tags: V1_2_1) (utags: V1_2): Run + autoconf + +2007-07-26 16:53 y-asaba + + * doc/pgpool-ja.html: Add release note for 1.2 and description of + replicate_select parameter. + +2007-07-26 16:46 y-asaba + + * version.h (tags: V1_2_1, V1_2): Prepare for 1.2 + +2007-07-26 16:30 y-asaba + + * pool_process_query.c: Add replicate_select value to the result of + "SHOW pool_status" command. + 2007-07-26 14:15 y-asaba * pool_connection_pool.c: Fix memory leak when connection slot is full. +2007-07-26 14:12 y-asaba + + * ChangeLog: update. + +2007-07-26 14:11 y-asaba + + * pool_connection_pool.c: Fix memory leak when connection slot is + full. + 2007-07-26 11:28 t-ishii * aclocal.m4, configure, pool_config.c: Run autoconf @@ -3256,11 +4195,60 @@ If pgpool receives a warning message that is NoticeMessage('N') under the extended query protocol, it reads a next message. +2007-07-25 21:24 y-asaba + + * pool_process_query.c: Fix memory leak. + +2007-07-25 20:39 y-asaba + + * pool_process_query.c: Fix SEGV when pgpool received a Parse + message without a statement name. + 2007-07-24 18:02 y-asaba * pool.h, pool_process_query.c: Detect deadlock in do_command(). When insert_lock was true, kind mismatch error occured. +2007-07-24 17:41 y-asaba + + * ChangeLog, pool.h, pool_process_query.c: Detect deadlock in + do_command(). When insert_lock was true, kind mismatch error + occured. + +2007-07-24 10:57 y-asaba + + * child.c, pool_process_query.c, pool_type.h (tags: V1_3, V1_2_1, + V1_2): Load balancing node was chosen before sending "SELECT" + statement. But this way had the following problems. + + psql>\d accounts + Did not find any relation with OID XXX + + pgpool chooses it after receiving AuthenticationOK('R') message. So + pgpool load balance to the same node inside a same session. + + This fix isn't backported to pgpool. + +2007-07-24 10:39 y-asaba + + * pool_config.l (tags: V1_2_1, V1_2): Fixed compile error. + +2007-07-23 15:54 y-asaba + + * ChangeLog, pgpool.conf.sample (tags: V1_2), pool.h, + pool_config.l, pool_process_query.c: Add new parameter named + "replicate_select". Default value is 'false'. + + If it is true, pgpool replicates SELECT queries when load balancing + is disabled. This is a old specification which was V1.0. + + If it is false, pgpool only sends them to the master node. This is a + current specification. + +2007-07-23 15:30 y-asaba + + * configure.in (tags: V1_2): Prepare for 1.2 + 2007-07-23 14:32 y-asaba * pool_process_query.c: Fixed that start_internal_transaction() was @@ -3281,6 +4269,26 @@ Or you send SIGHUP signal to the pgpool parent process. +2007-07-19 15:01 y-mori + + * pool_process_query.c: BUGFIX: Occasionally, Bad file descripter + is read in parallel_query_mode + +2007-07-18 20:33 devrim + + * pgpool.spec (tags: V1_2_1, V1_2): Update to 1.2 + +2007-07-17 17:58 y-mori + + * pool_process_query.c, pool_rewrite_outfuncs.c, + pool_rewrite_query.c, pool_rewrite_query.h, pool_system.c, + pool_type.h: Unification of replication mode and parallel query + mode Now It's still working. + +2007-07-17 17:19 y-asaba + + * ChangeLog: update + 2007-07-17 15:04 y-asaba * pool_process_query.c: Fix hang up when backend node did fast or @@ -3294,11 +4302,47 @@ a message from them. when the error is sended, pgpool reads the message and degenerate. +2007-07-17 14:50 y-asaba + + * pool_process_query.c: Fix hang up when backend node did fast or + immediate shutdown. + + If shutdown occured, postgres send an error which error code is + "57P01" and error message is "terminating connection due to + administrator command". + + However, another nodes did not send any messages. pgpool waited for + a message from them. when the error is sended, pgpool reads the + message and degenerate. + 2007-07-17 11:33 y-asaba * pool_process_query.c (tags: ROOT_OF_V2_0_PARALLEL_UNSTABLE): Rearrange detect_deadlock_error(). +2007-07-17 11:26 y-asaba + + * pool_process_query.c: Rearrange detect_deadlock_error(). + +2007-07-11 11:15 y-asaba + + * pool.h, pool_process_query.c, pool_stream.c (tags: V1_3, V1_2_1, + V1_2): Fixed kind mismatch error when deadlock error occured. + The problem is the following senario. + + A: BEGIN: + B: BEGIN; + A: LOCK TABLE t1 IN SHARE ROW EXCLUSIVE MODE; + B: LOCK TABLE t2 IN SHARE ROW EXCLUSIVE MODE; + A: LOCK TABLE t2 IN SHARE ROW EXCLUSIVE MODE; + B: LOCK TABLE t1 IN SHARE ROW EXCLUSIVE MODE; + + Transaction "A" aborts on master node, but it completes on another + nodes. It causes wrong failover. + + So pgpool checks deadlock error(code == '40P01') and sends error + query to another nodes. + 2007-07-10 18:56 y-asaba * main.c (tags: ROOT_OF_V2_0_PARALLEL_UNSTABLE), pool.h (tags: @@ -3326,6 +4370,22 @@ * main.c: Add comments. +2007-07-09 14:17 y-asaba + + * ChangeLog: update. + +2007-07-09 14:00 y-asaba + + * config.h.in (tags: V1_3, V1_2_1, V1_2), configure.in, main.c + (tags: V1_3, V1_2_1, V1_2): Fix race condition between flag + checking and signal blocking. + + Normally, this case solve to call pselect(2). But Linux's pselect(2) + is emulated by select(2) and sigprocmask(2). It contains this race. + So pgpool archieves using the self-pipe trick. + + See 'man pselect' if you want to get more information. + 2007-07-09 13:23 y-asaba * main.c: Fix race condition between flag checking and signal @@ -3368,6 +4428,28 @@ pgpool chooses it after receiving AuthenticationOK('R') message. So pgpool load balance to the same node inside a same session. +2007-07-05 20:14 y-asaba + + * ChangeLog: Update ChangeLog. + +2007-07-05 19:58 y-asaba + + * pool_process_query.c: Fix the following bugs in master_slave mode + && load_balance mode. + + 1. We force to replicate PREPARE and DEALLOCATE statement because + of the case. + + PREPARE xx AS SELECT 1; + EXECUTE xx; + + If EXECUTE statement was load balanced, it occured the error. + + ERROR: prepared statement "xx" does not exist + + 2. pgpool didn't load balance a SELECT query using extended + protocol. + 2007-07-05 18:12 y-asaba * main.c: Improve signal handling. @@ -3426,6 +4508,17 @@ V2_0_1, V2_0_0, V2_0_0_BETA1, ROOT_OF_V2_0_PARALLEL_UNSTABLE): Fix checking the number of arguments. +2007-06-27 17:30 y-asaba + + * ChangeLog, pool.h, pool_process_query.c: Fix hang up when a + SELECT query has error inside transaction block. It occurs only in + simple query protocol. We reproduce the bug with the following + operation. + + BEGIN; + SELECT * FROM non_exist_table; <-- ERROR + SELECT 1; + 2007-06-26 10:35 y-asaba * pcp_child.c: Remove unused variable. @@ -4135,3 +5228,159 @@ pcp/pcp_proc_count.c, pcp/pcp_proc_info.c, pcp/pcp_stop_pgpool.c, pcp/pcp_systemdb_info.c: Initial revision +2006-09-08 12:35 t-ishii + + * README, configure.in, Makefile.am, aclocal.m4, Makefile.in, + config.h.in (tags: V1_0_1), AUTHORS (tags: V2_2_5, V2_2_4, + V2_2_3, V2_2_2, V2_2_1, V2_2_0, V2_2_0_RC2, V2_2_0_RC1, + V2_2_0_BETA2, V2_2_0_BETA1, V2_1_0, V2_1_0_RC1, V2_1_0_BETA2, + V2_1_0_BETA1, V2_0_1, V2_0_0, V2_0_0_BETA1, V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + configure, COPYING (tags: V1_0_1), ChangeLog, INSTALL (tags: + V2_2_5, V2_2_4, V2_2_3, V2_2_2, V2_2_1, V2_2_0, V2_2_0_RC2, + V2_2_0_RC1, V2_2_0_BETA2, V2_2_0_BETA1, V2_1_0, V2_1_0_RC1, + V2_1_0_BETA2, V2_1_0_BETA1, V2_0_1, V2_0_0, V2_0_0_BETA1, V1_3, + V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, + V1_0_2, V1_0_1), NEWS, TODO (tags: V1_0_1), config.guess (tags: + V1_3, V1_2_1, V1_2, V1_1_1, V1_1, V1_0_2, V1_0_1), config.sub + (tags: V1_3, V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, + V1_1_1, V1_1, V1_0_2, V1_0_1), depcomp (tags: V2_2_5, V2_2_4, + V2_2_3, V2_2_2, V2_2_1, V2_2_0, V2_2_0_RC2, V2_2_0_RC1, + V2_2_0_BETA2, V2_2_0_BETA1, V2_1_0, V2_1_0_RC1, V2_1_0_BETA2, + V2_1_0_BETA1, V2_0_1, V2_0_0, V2_0_0_BETA1, V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + install-sh (tags: V2_2_5, V2_2_4, V2_2_3, V2_2_2, V2_2_1, V2_2_0, + V2_2_0_RC2, V2_2_0_RC1, V2_2_0_BETA2, V2_2_0_BETA1, V2_1_0, + V2_1_0_RC1, V2_1_0_BETA2, V2_1_0_BETA1, V2_0_1, V2_0_0, + V2_0_0_BETA1, V1_3, V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, + V1_1_1, V1_1, V1_0_2, V1_0_1), ltmain.sh (tags: V1_3, V1_2_1, + V1_2, V1_1_1, V1_1, V1_0_2, V1_0_1), missing (tags: V2_2_5, + V2_2_4, V2_2_3, V2_2_2, V2_2_1, V2_2_0, V2_2_0_RC2, V2_2_0_RC1, + V2_2_0_BETA2, V2_2_0_BETA1, V2_1_0, V2_1_0_RC1, V2_1_0_BETA2, + V2_1_0_BETA1, V2_0_1, V2_0_0, V2_0_0_BETA1, V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + mkinstalldirs (tags: V2_2_5, V2_2_4, V2_2_3, V2_2_2, V2_2_1, + V2_2_0, V2_2_0_RC2, V2_2_0_RC1, V2_2_0_BETA2, V2_2_0_BETA1, + V2_1_0, V2_1_0_RC1, V2_1_0_BETA2, V2_1_0_BETA1, V2_0_1, V2_0_0, + V2_0_0_BETA1, V1_3, V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, + V1_1_1, V1_1, V1_0_2, V1_0_1), pg_md5.c (tags: V2_0_1, V2_0_0, + V2_0_0_BETA1, V1_3, V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, + V1_1_1, V1_1, V1_0_2, V1_0_1), pool_config.c, README.euc_jp, + main.c, md5.c (tags: V2_2_3, V2_2_2, V2_2_1, V2_2_0, V2_2_0_RC2, + V2_2_0_RC1, V2_2_0_BETA2, V2_2_0_BETA1, V2_1_0, V2_1_0_RC1, + V2_1_0_BETA2, V2_1_0_BETA1, V2_0_1, V2_0_0, V2_0_0_BETA1, V1_3, + V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, + V1_0_2, V1_0_1), md5.h (tags: V2_2_5, V2_2_4, V2_2_3, V2_2_2, + V2_2_1, V2_2_0, V2_2_0_RC2, V2_2_0_RC1, V2_2_0_BETA2, + V2_2_0_BETA1, V2_1_0, V2_1_0_RC1, V2_1_0_BETA2, V2_1_0_BETA1, + V2_0_1, V2_0_0, V2_0_0_BETA1, V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + pgpool.conf.sample (tags: V1_0_1), pgpool.spec (tags: V1_0_1), + pool.h, pool_type.h (tags: V1_0_1), version.h (tags: V1_0_2, + V1_0_1), child.c (tags: V1_0_1), pool_auth.c (tags: V1_0_1), + pool_config.l (tags: V1_0_1), pool_error.c (tags: V1_0_1), + pool_connection_pool.c (tags: V1_0_1), pool_params.c (tags: + V1_0_1), pool_process_query.c, pool_signal.c (tags: V1_0_1), + pool_signal.h (tags: V1_0_1), pool_stream.c (tags: V1_0_1), + pcp.conf.sample (tags: V2_2_5, V2_2_4, V2_2_3, V2_2_2, V2_2_1, + V2_2_0, V2_2_0_RC2, V2_2_0_RC1, V2_2_0_BETA2, V2_2_0_BETA1, + V2_1_0, V2_1_0_RC1, V2_1_0_BETA2, V2_1_0_BETA1, V2_0_1, V2_0_0, + V2_0_0_BETA1, V1_3, V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, + V1_1_1, V1_1, V1_0_2, V1_0_1), pcp_child.c (tags: V1_0_1), + pool_ipc.h (tags: V1_0_1), pool_sema.c (tags: V1_0_1), + pool_shmem.c (tags: V1_0_1), pool_system.c (tags: V1_0_1), + pool_rewrite_query.c (tags: V1_0_1), pool_rewrite_query.h (tags: + V1_0_1), pool_rewrite_outfuncs.c (tags: V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + pgpool.8.in (tags: V1_0_1), pool_query_cache.c (tags: V1_0_1), + doc/pgpool.html, doc/pgpool.html.en, doc/tutorial.html, + doc/tutorial.html.en, parser/Makefile.am (tags: V1_0_2, V1_0_1), + parser/Makefile.in, sample/dist_def_pgbench.sql (tags: V2_2_5, + V2_2_4, V2_2_3, V2_2_2, V2_2_1, V2_2_0, V2_2_0_RC2, V2_2_0_RC1, + V2_2_0_BETA2, V2_2_0_BETA1, V2_1_0, V2_1_0_RC1, V2_1_0_BETA2, + V2_1_0_BETA1, V2_0_1, V2_0_0, V2_0_0_BETA1, V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + sql/system_db.sql (tags: V2_0_0_BETA1, V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + parser/gram.c (tags: V1_0_2, V1_0_1), parser/gram.h (tags: + V1_0_2, V1_0_1), parser/gram.y (tags: V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + parser/gramparse.h (tags: V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + parser/list.c (tags: V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + parser/makefuncs.c (tags: V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + parser/makefuncs.h (tags: V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + parser/memnodes.h (tags: V2_0_1, V2_0_0, V2_0_0_BETA1, V1_3, + V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, + V1_0_2, V1_0_1), parser/nodes.c (tags: V2_0_1, V2_0_0, + V2_0_0_BETA1, V1_3, V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, + V1_1_1, V1_1, V1_0_2, V1_0_1), parser/nodes.h (tags: V1_3, + V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, + V1_0_2, V1_0_1), parser/parsenodes.h (tags: V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + parser/parser.c (tags: V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + parser/parser.h (tags: V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + parser/pg_list.h (tags: V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + parser/pool_memory.c (tags: V1_0_1), parser/pool_memory.h (tags: + V1_0_1), parser/pool_string.c (tags: V1_0_1), + parser/pool_string.h (tags: V1_0_1), parser/keywords.c (tags: + V1_3, V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, + V1_0_2, V1_0_1), parser/keywords.h (tags: V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + parser/pool_parser.h (tags: V1_0_2, V1_0_1), parser/primnodes.h + (tags: V1_3, V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, + V1_1_1, V1_1, V1_0_2, V1_0_1), parser/scansup.h (tags: V2_0_1, + V2_0_0, V2_0_0_BETA1, V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + parser/value.c (tags: V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + parser/value.h (tags: V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + parser/outfuncs.c (tags: V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + parser/scan.c, parser/scan.l (tags: V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + pcp/Makefile.am (tags: V1_3, V1_2_1, V1_2, V1_1_1, V1_1, V1_0_2, + V1_0_1), pcp/Makefile.in, pcp/md5.h (tags: V2_2_5, V2_2_4, + V2_2_3, V2_2_2, V2_2_1, V2_2_0, V2_2_0_RC2, V2_2_0_RC1, + V2_2_0_BETA2, V2_2_0_BETA1, V2_1_0, V2_1_0_RC1, V2_1_0_BETA2, + V2_1_0_BETA1, V2_0_1, V2_0_0, V2_0_0_BETA1, V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + pcp/pcp.h (tags: V1_3, V1_2_1, V1_2, V1_1_1, V1_1, V1_0_2, + V1_0_1), pcp/md5.c (tags: V2_2_3, V2_2_2, V2_2_1, V2_2_0, + V2_2_0_RC2, V2_2_0_RC1, V2_2_0_BETA2, V2_2_0_BETA1, V2_1_0, + V2_1_0_RC1, V2_1_0_BETA2, V2_1_0_BETA1, V2_0_1, V2_0_0, + V2_0_0_BETA1, V1_3, V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, + V1_1_1, V1_1, V1_0_2, V1_0_1), pcp/pcp.c (tags: V1_0_2, V1_0_1), + pcp/pcp_attach_node.c (tags: V2_0_1, V2_0_0, V2_0_0_BETA1, V1_3, + V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, + V1_0_2, V1_0_1), pcp/pcp_detach_node.c (tags: V2_0_1, V2_0_0, + V2_0_0_BETA1, V1_3, V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, + V1_1_1, V1_1, V1_0_2, V1_0_1), pcp/pcp_error.c (tags: V2_0_1, + V2_0_0, V2_0_0_BETA1, V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + pcp/pcp_node_count.c (tags: V2_0_1, V2_0_0, V2_0_0_BETA1, V1_3, + V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, + V1_0_2, V1_0_1), pcp/pcp_stream.c (tags: V1_0_2, V1_0_1), + pcp/pcp_stream.h (tags: V2_0_1, V2_0_0, V2_0_0_BETA1, V1_3, + V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, + V1_0_2, V1_0_1), pcp/pcp_node_info.c (tags: V2_0_1, V2_0_0, + V2_0_0_BETA1, V1_3, V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, + V1_1_1, V1_1, V1_0_2, V1_0_1), pcp/pcp_proc_count.c (tags: + V2_0_0_BETA1, V1_3, V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, + V1_1_1, V1_1, V1_0_2, V1_0_1), pcp/pcp_proc_info.c (tags: V2_0_1, + V2_0_0, V2_0_0_BETA1, V1_3, V1_2_1, V1_2, + ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, V1_0_2, V1_0_1), + pcp/pcp_stop_pgpool.c (tags: V2_0_1, V2_0_0, V2_0_0_BETA1, V1_3, + V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, V1_1_1, V1_1, + V1_0_2, V1_0_1), pcp/pcp_systemdb_info.c (tags: V2_0_1, V2_0_0, + V2_0_0_BETA1, V1_3, V1_2_1, V1_2, ROOT_OF_V2_0_PARALLEL_UNSTABLE, + V1_1_1, V1_1, V1_0_2, V1_0_1) (utags: V1_0_0): pgpool-II initial + release + diff --git a/NEWS b/NEWS index 3e6b99500..325e6b936 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,230 @@ +2.3 (tomiteboshi) 2009/12/07 + + * Version 2.3 + + This version enhances replication, especially CURRENT_TIMESTAMP, + CURRENT_DATE, now() etc. now can be properly replicated. Also + perforance of replication when num_init_children == 1 is + enhanced. Pgpool-II now records the status of down nodes, and + remember when it restarts to ensure that keep the node status as + before. Also some logs are enhanced and more fine fail over + controls are added. Please note that pgpool-II 2.3 includes all + of enhancements and fixes of pgpool-II 2.2.1 to 2.2.6. + + * Incompatibilities from 2.2.x + + - pgpool_status file is created under logdir. So you need to + give write permission to the directory so that pgpool-II can + read/write pgpool_status file. + + * Enhancements + + - Enable proper replication of results of temporal functions + (CURRENT_TIMESTAMP, CURRENT_DATE, now() etc.). Now + applications can execute INSERT/UPDATE tables which include + defaut values using those temporal functions. There are small + limitations. See restriction sections of docs for more + details (Akio Ishida) + + - Use PostgreSQL 8.4's SQL parser(Akio Ishida) + + - Enhance the performance 20% to 100% of replication when + num_init_children == 1(Tatsuo) + + - Add new directive log_per_node_statement which is similar to + log_statement except that prints info for each DB node to make + it easier which query is sent to which DB node(Tatsuo) + + - Add new directive fail_over_on_backend_error to control the + behaviro of fail over(Tatsuo) + + - Record DB node status and remember when pgpool-II restarts(Tatsuo) + + - EXPLAIN and EXPLAIN ANALYZE for SELECT query are now load + balanced. This will prevent unwanted kind mismatch errors when + EXPLAIN produces slightly different plan(Tatsuo) + + - Enhance CSS of pgpool-ja.html(Tatsuo) + + - Add sample configuration file for replication mode and + master/slave mode(Tatsuo) + + - Add test for temporal data(Akio Ishida) + +2.2.6 (urukiboshi) 2009/12/01 + + * Version 2.2.6 + + This version enhances handling of backend weight. Also it allows + to use temp tables in master/slave mode. It includes various + fixes for bugs in 2.2.5 or before as usual. + + * Bug fixes + + - Do not allow to load balance DECLARE, CLOSE, FETCH and + MOVE. If data gets updated and CLOSE issued after transaction + commit(i.e. holdbale cursor), this will cause data + inconsistency since CLOSE is executed one of the severs, + rather than all(Tatsuo) + + - In master/slave mode, execute Parse message on only master + node. In previous versions Parse executed on all nodes, which + grabbed unneccessary lock(Tatsuo) + + - Remove init script from all runlevels before uninstall(Devrim) + + - Fix pgpoo.spec(Devrim) + + - Do not execute REINDEX DATABASE or SYSTEM, CREATE/DROP TABLE + SPACE inside a transaction block(Tatsuo) + + * Enhancements + + - Allow to change weight by reloading pgool.conf. This will take + effect for next client sessions(Tatsuo) + + - Reply with usefull error messages, rather than "server closed + the connection unexpectedly" when authentication fails(Glyn + Astill) + + - Add info to logs when writing to sockets falis to know if it + was for backend or frontend(Tatsuo) + + - Do not complain when writing to socket of frontend + fails(Tatsuo) + + - Allow to use temp tables in master/slave + mode. INSERT/UPDATE/DELETE will automatically be sent to + master only. Still SELECT you need to add /*NO LOAD BALANCE*/ + comment(Tatsuo) + + - Add temp table test to test/jdbc(Tatsuo) + +2.2.5 (urukiboshi) 2009/10/4 + * Version 2.2.5 + + This version fixes various bugs in 2.2.4 or before. + + * Bug fixes + + - Fix connection_count_down(). It decrements the connection + counter too much in some corner cases and causes online + recover never completes(Tatsuo) + + - Detect frontend exiting while waiting for commands complete in + other cases such as internal locks are issued and Parse + (Tatsuo) + + - Fix inifinit loop in reset_backend(Xavier Noguer, Tatsuo) + + - Fix Parse() to print actual query when it detects kind + mismatch error(Tatsuo) + + - Document enhancements(Tatsuo) + +2.2.4 (urukiboshi) 2009/8/24 + * Version 2.2.4 + + This version fixes various bugs in 2.2.3 or before. + + * Bug fixes + + - Fix possible bug introduced in pgpool-II 2.2.2. Load balance + control variables may remain not be restored and subsequent + DML/DDL call might sent to only master node(Tatsuo) + + - Send NOTICE message to frontend periodically if V2 protocol is + used. This is ifdef out since it affectes visible change to + applications. 2.2.3 unconditionaly sends param packet to + client even it uses version 2 protocol, which is apparentlt + wrong. Also tweak checking period from 1 second to 30 seconds + since 1 second seems too aggressive(Tatsuo) + + - Block signals before forking children rather after. Otherwise + parent will be killed by failover signal if it receives a + signal before establishing signal handler(Tatsuo) + + - Remove unnecessary spaces and tabs at the end of line(Jun Kuriyama) + +2.2.3 (urukiboshi) 2009/8/11 + * Version 2.2.3 + + This version fixes various bugs in 2.2.2 or before. + + * Bug fixes + + - Fix child process death if one of backends is not available(Tatsuo). + + - Fix various parallel query bugs(Yoshiharu Mori) + + - Fix message corruption for kid mismatch error(Akio Ishida) + + - Now stetmemt_time works(Tatsuo) + + - Enhance health checking to detect postmaster stopping by + SIGSTOP(Tatsuo) + + - Detect frontend abnormal exiting while waiting for reply from + backend. This only works with V3 protocol(Tatsuo) + + - Do not start internal transaction if command is CLUSTER + without arguments(Tatsuo) + + - Fix bug with COPY FROM in that backend process remains after + COPY failed(Tatsuo) + + * Enhancements + + - Show last query for extended protocol(Akio Ishida) + + - Allow to compile sql/pgpool-recovery/pgpool-recovery.c with + PostgreSQL 8.4(Tatsuo) + +2.2.2 (urukiboshi) 2009/5/5 + * Version 2.2.2 + + This version fixes various bugs in 2.2.1 or before. Please note + that an importan fix is made to avoid data incositency risk, + which could happen when client does not exit gracely(without + sending "X" packet) while pgpool is trying to send data to + it. This could happen with all version of pgpool-II. + + * Bug fixes + + - Ignore write error on frontend connection. This is needed to + continue processing with backend, otherwise we risk data + incositency(Tatsuo) + + - Fix bug introduced in 2.2.1 (In master slave mode, sometimes + DEALLOCATE fails). If prepared statement reused, pgpool + hangs(Toshihiro) + + - Fix pgpool crash when SQL command PREPARE and protocol level + EXECUTE are mixed. The bug was introduced in 2.2(Tatsuo) + + - Avoid "unexpected EOF on client connection" error in PostgreSQL + when reset query fails(Tatsuo) + +2.2.1 (urukiboshi) 2009/4/25 + * Version 2.2.1 + + This version fixes various bugs in 2.2. + + * Bug fixes + + - In master slave mode, sometimes DEALLOCATE fails. This is + caused by that the first PREPARE was not executed on the + slave(Toshihiro) + + - Update pgpool.spec along with related files(Devrim) + + - Fix inser_lock so that it is ignored when protocol version is + 2(Tatsuo) + + - Remove excessive log messages regarding parameter change notice(Tatsuo) + + - Add missing files to doc(Tatsuo) + 2.2 (urukiboshi) 2009/2/28 * Version 2.2 diff --git a/doc/pgpool-en.html b/doc/pgpool-en.html index aa766d6f0..a9e017997 100644 --- a/doc/pgpool-en.html +++ b/doc/pgpool-en.html @@ -7,7 +7,7 @@ </head> <!-- hhmts start --> -Last modified: Tue May 12 10:00:04 JST 2009 +Last modified: Mon Dec 7 18:37:01 JST 2009 <!-- hhmts end --> <body bgcolor="#ffffff"> @@ -114,9 +114,10 @@ query, however, 7.4 and higher must be used.</p> <p> pgpool-II can be downloaded from <a href="http://pgfoundry.org/projects/pgpool/">pgpool Development page</a>. +Also packages are provided for various platforms including CentOS, RedHat Enterprise Linux, Fedora and Debian. </p> -<p>Installing pgpool-II requires gcc 2.9 or higher, and GNU +<p>Installing pgpool-II from source code requires gcc 2.9 or higher, and GNU make. Also, pgpool-II links libpq library, so it must be installed on a machine used to build pgpool-II.</p> @@ -202,15 +203,6 @@ control their behaviors.</p> <td align="center">(*)</td> </tr> - <tr> - <td>Degeneration</td> - <td align="center">X</td> - <td align="center">X</td> - <td align="center">O</td> - <td align="center">O</td> - <td align="center">X</td> - </tr> - <tr> <td>Failover</td> <td align="center">O</td> @@ -423,9 +415,7 @@ servers.</p> <dt>logdir</dt> <dd> - <p>The directory path of the logs. pgpool-II 2.2 or later does not - use this directive. In the future pgpool-II might implement its - own logging system and we leave this directive as it is. + <p>The directory path of the logs. pgpool_status is written under this directory. </p> </dd> @@ -448,7 +438,7 @@ servers.</p> <dt>connection_cache</dt> <dd> - <p>Caches connections when set to true. Default is + <p>Caches connections to backend when set to true. Default is true.</p> </dd> @@ -542,6 +532,18 @@ pgpool-II replaces special characters to backend information. You need to reload pgpool.conf if you change failback_command. </p> + <dt>fail_over_on_backend_error</dt> + <dd> + <p> +If true, trigger fail over when writing to the backend communication +socket fails. This is the same behavior of pgpool-II 2.2.x or +earlier. If set to false, pgpool will report an error and disconnect +the session. +Please note that, however, pgpool will do the fail over when connecting to backend fails or pgpool detects the administrative shutdown of postmaster. +You need to reload pgpool.conf if you change the value. +</p> +</dd> + <dt>ignore_leading_white_space</dt> <dd> <p>pgpool-II ignores white spaces at the beginning of SQL @@ -561,6 +563,14 @@ pgpool-II replaces special characters to backend information. </p> </dd> + <dt>log_per_node_statement</dt> + <dd> + <p>Similar to log_statement, except that it prints logs for each DB node separately. + It would be usefull if you want to make sure that replication is working or not, for example. + You need to reload pgpool.conf if you change the value. + </p> + </dd> + <dt>log_hostname</dt> <dd> <p> @@ -637,6 +647,9 @@ pgpool-II replaces special characters to backend information. This parameter can be added by reloading a configuration file. However, this cannot be updated so you must restart pgpool-II. + In pgpool-II 2.2.6/2.3 or later, you can change the value by re-loading the configuration file. + This will take effect on next newly connected client sesson. + This is usefull if you want to prevent any query sent to slaves to perform some administrative work in master/slave mode. </p> </dd> @@ -707,7 +720,7 @@ configuration parameters in the raw mode and below.</p> the following, but can be changed to suit your system. <pre> - reset_query_list = 'ABORT; RESET ALL; SET SESSION AUTHORIZATION DEFAULT' + reset_query_list = 'ABORT; DISCARD ALL' </pre> <p> @@ -723,8 +736,6 @@ configuration parameters in the raw mode and below.</p> </p> <ul> <li>"ABORT" is not issued when not in a transaction block for 7.4 or later. -<li>DISCARD ALL degrades performance since it aquires an exclusive lock on pg_listeners. -If there will be many concurrent sessions, you might not want to use DISCARD ALL, rather you specify each object using DISCARD command. </ul> <p> @@ -983,7 +994,7 @@ For the query to be load balanced, all the requirements below <li>it's not SELECT INTO <li>it's not SELECT FOR UPDATE nor FOR SHARE <li>start with "SELECT" (ignore_leading_white_space = true will - ignore leading white space) or one of COPY TO STDOUT, DECLARE..SELECT, FETCH, CLOSE + ignore leading white space) or one of COPY TO STDOUT, EXPLAIN, EXPLAIN ANALYZE SELECT... </ul> </p> <p> @@ -1023,6 +1034,9 @@ In addtion to that, set true. pgpool-II will send queries that need to be replicated to the Master DB, and others will be load balanced if possible.</p> +<p>In master/slave mode, DDL and DML for temporary table can be executed on master only. +SELECT should be executed on master only as well but for this you need to use comment /*NO LOAD BALANCE*/ before the SELECT statement.</p> + <p>In the master/slave mode, <code>replication_mode</code> must be set to false, and <code>master_slave_mode</code> to true.</p> @@ -1299,6 +1313,19 @@ pgpool [-f config_file][-F pcp_config_file] [-m {s[mart]|f[ast]|i[mmediate]}] st <tr><td><code>-m i[mmediate]</code><br/><code>--mode i[mmediate]</code></td> <td>the same as <code>'-m f'</code></td></tr> </table> </p> +<p> +pgpool records backend status into [logdir]/pgpool_status file. When pgpool restarts it reads the file and restore the backend status. This will prevent data difference among DB nodes which might be caused by following scenario: +<ol> +<li>One of backend suddenly stopps and pgpool execute fail over +<li>Update one of active DB through pgpool +<li>Our administrator decides to stop pgpool +<li>Someone decides to restart the stopping DB without letting our admin know +<li>Our poor administrator restarts pgpool +</ol> +</p> +<p> +If for some reason, for example, the stopping DB is synched with the active DB by hand, you could remove pgpool_status safely before starting pgpool. +</p> <h1>Reloading pgpool-II configuration files<a name="reload"></a></h1> <p>pgpool-II can reload configuration files without restarting it. @@ -1627,10 +1654,56 @@ pgmgt.conf.php. <p>There is no guarantee that the data, which returns different values each time even though the same query was executed (e.g. random number, -transaction ID, OID, SERIAL, sequence, CURRENT_TIMESTAMP), will be +transaction ID, OID, SERIAL, sequence), will be replicated correctly on multiple backends.</p> +<p>For SERIAL, enabling insert_lock will help replicating data. +insert_lock also helps SELECT setval() and SELECT nextval().</p> + +<p>In pgpool-II 2.3 or later, INSET/UPDATE using CURRENT_TIMESTAMP, +CURRENT_DATE, now() can be replicated. Also INSET/UPDATE for tables +using CURRENT_TIMESTAMP, CURRENT_DATE, now() as their DEFAULT values can +be replicated. +This is done by replacing those functions by constrants fetched from master at query execution time. +There are a few limitations however: +<ul> +<li>The calculation of temporal data in table default value is not accurate in some cases. For example, following table definition: +<pre> +CREATE TABLE rel1( + d1 date DEFAULT CURRENT_DATE + 1 +) +is treated same as: +CREATE TABLE rel1( + d1 date DEFAULT CURRENT_DATE +) +</pre> +<li>Suppose we have following table: +<pre> +CREATE TABLE rel1( + c1 int, + c2 timestamp default now() +) +</pre> +We can replicate +<pre> +INSERT INTO rel1(c1) VALUES(1) +</pre> +since this turn into +<pre> +INSERT INTO rel1(c1, c2) VALUES(1, '2009-01-01 23:59:59.123456+09') +</pre> +However, +<pre> +INSERT INTO rel1(c1) SELECT 1 +</pre> +cannot to be transformed thus cannot be properly replicated in the current implementation. +</ul> +</p> -<p>Tables created by <code>CREATE TEMP TABLE</code> will not be +<p>Tables created by <code>CREATE TEMP TABLE</code> will be delete at the end of +session by specifying DISCARD ALL in reset_query_list if you are using PostgreSQL 8.3 or later. +</p> +<p> +For 8.2.x or before <code>CREATE TEMP TABLE</code> will not be deleted after exitting a session. It is because of the connection pooling which, from the backend's point of view, seems that the session is still alive. To avoid this, you must explicitly drop the diff --git a/doc/pgpool-ja.html b/doc/pgpool-ja.html index c1a7b746c..6bc1e300a 100644 --- a/doc/pgpool-ja.html +++ b/doc/pgpool-ja.html @@ -2,13 +2,13 @@ <html> <head> <meta http-equiv="content-type" content="text/html;charset=iso-2022-jp"> -<link rel="stylesheet" href="./pgpool.css" type="text/css"> +<link rel="stylesheet" href="./pgpool-ja.css" type="text/css"> <title>pgpool-II $B%f!<%6%^%K%e%"%k(B</title> </head> <body> <!-- hhmts start --> -Last modified: Fri Apr 3 19:48:41 JST 2009 +Last modified: Mon Dec 7 18:08:47 JST 2009 <!-- hhmts end --> <body bgcolor="#ffffff"> @@ -93,6 +93,11 @@ pgpool-II$B$O!"(BLinux$B$r$O$8$a!"(BSolaris$B$d(BFreeBSD$B$J$I$N$[$H$s$I$ <h1>pgpool-II$B$N%$%s%9%H!<%k(B<a name="install"></a></h1> +<p> +Linux$BMQ$N(BRPM$B%Q%C%1!<%8$O!"(BCentOS$B!"(BFedora$BMQ$J$I$,Ds6!$5$l$F$$$^$9!#(B +$B3:Ev%j%]%8%H%j$r%A%'%C%/$7$F$_$F$/$@$5$$!#(B +</p> + <p> pgpool-II $B$N%=!<%9%3!<%I$O(B<a href="http://pgfoundry.org/projects/pgpool/">pgpool$B3+H/%Z!<%8(B</a> @@ -100,7 +105,7 @@ href="http://pgfoundry.org/projects/pgpool/">pgpool$B3+H/%Z!<%8(B</a> </p> <p> -pgpool-II$B$N%$%s%9%H!<%k$K$O!"(Bgcc 2.9$B0J>e!"$*$h$S(BGNU make$B$,I,MW$G$9!#(B +pgpool-II$B$N%=!<%9%3!<%I$+$i$N%$%s%9%H!<%k$K$O!"(Bgcc 2.9$B0J>e!"$*$h$S(BGNU make$B$,I,MW$G$9!#(B $B$^$?!"(Bpgpool-II$B$O(Blibpq(PostgreSQL$BIUB0$N%/%i%$%"%s%H%i%$%V%i%j(B)$B$r;HMQ$9$k$N$G!"%S%k%I$r9T$&%^%7%s>e$K(Blibpq$B$,%$%s%9%H!<%k$5$l$F$$$k$3$H$,I,MW$G$9!#(B </p> @@ -143,7 +148,7 @@ pgpool-II$B$N@_Dj%U%!%$%k$O%G%U%)%k%H$G$O(B/usr/local/etc/pgpool.conf$B$*$h$S /usr/local/etc/pcp.conf$B$G$9!#(Bpgpool-II$B$OF0:n%b!<%I$K$h$C$F;HMQ$G$-$k5!G=$H!"(B $BI,MW$J@_Dj9`L\$,0[$J$j$^$9!#(B </p> -<table border> +<table border width="800"> <tr> <th>$B;HMQ$G$-$k5!G=(B/$B%b!<%I(B</th> @@ -182,21 +187,12 @@ pgpool-II$B$N@_Dj%U%!%$%k$O%G%U%)%k%H$G$O(B/usr/local/etc/pgpool.conf$B$*$h$S </tr> <tr> -<td>$B=LB`1?E>(B</td> -<td align="center">$B!_(B</td> -<td align="center">$B!_(B</td> +<td>$B%U%'%$%k%*!<%P(B</td> <td align="center">$B!{(B</td> <td align="center">$B!{(B</td> -<td align="center">$B!_(B</td> -</tr> - -<tr> -<td>$B%U%'%$%k%*!<%P(B</td> <td align="center">$B!{(B</td> <td align="center">$B!{(B</td> <td align="center">$B!_(B</td> -<td align="center">$B!_(B</td> -<td align="center">$B!_(B</td> </tr> <tr> @@ -282,7 +278,7 @@ pgpool.conf$B$G$O6uGr9T$d(B#$B$G;O$^$k9T$O%3%a%s%H$H8+$J$5$l$^$9!#(B <h3>raw$B%b!<%I(B</h3> <p> -$BC1$K(Bpgpool-II$B$r7PM3$7$F@\B3$9$k$@$1$N%b!<%I$G$9!#C1$K(BPostgreSQL$B%5!<%P$X$N@\(B +$BC1$K(Bpgpool-II$B$r7PM3$7$F@\B3$9$k$@$1$N%b!<%I$G$9!#(BPostgreSQL$B%5!<%P$X$N@\(B $BB3%;%C%7%g%s?t$r@)8B$7$?$j!"(B2$BBf0J>e$N(BPostgreSQL$B%5!<%P$rMQ0U$7$F%U%'%$%k(B $B%*!<%PF0:n$r$5$;$?$$$H$-$KMxMQ$7$^$9!#(B </p> @@ -405,8 +401,8 @@ prefork$B$9$k(Bpgpool-II$B$N%5!<%P%W%m%;%9$N?t$G$9!#%G%U%)%k%HCM$O(B32$B$K$ <dt>logdir <dd> <p> - pgpool-II$B$N3F<o%m%0%U%!%$%k$r3JG<$9$k%G%#%l%/%H%j$G$9$,!"(Bpgpool-II 2.2$B0J9_$G$O;HMQ$5$l$F$$$^$;$s!#(B - $B>-MhFH<+$N%m%0%7%9%F%`$r<BAu$7$?:]$K;HMQ$5$l$k$+$b$7$l$J$$$N$G!"$3$N%(%s%H%j$O;D$7$F$"$j$^$9!#(B + pgpool-II$B$N3F<o%m%0%U%!%$%k$r3JG<$9$k%G%#%l%/%H%j$G$9!#(B + $B$3$N2<$K(BDB$B%N!<%I$N>uBV$r5-O?$9$k(Bpgpool_status$B%U%!%$%k$,=q$+$l$^$9!#(B </p> <dt>pid_file_name @@ -428,7 +424,7 @@ prefork$B$9$k(Bpgpool-II$B$N%5!<%P%W%m%;%9$N?t$G$9!#%G%U%)%k%HCM$O(B32$B$K$ <dt>connection_cache <dd> <p> - true$B$J$i%3%M%/%7%g%s$r%-%c%C%7%e$7$^$9!#%G%U%)%k%H$O(Btrue$B$G$9!#(B + true$B$J$i(BPostgreSQL$B$X$N%3%M%/%7%g%s$r%-%c%C%7%e$7$^$9!#%G%U%)%k%H$O(Btrue$B$G$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B </p> @@ -514,6 +510,17 @@ pgpool $B$,I,MW$J>pJs$KCV$-49$($F%3%^%s%I$r<B9T$7$^$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B </p> +<dt>fail_over_on_backend_error +<dd> +<p> + true$B$J$i$P!"%P%C%/%(%s%I$N%=%1%C%H$X$N=q$-9~$_$K<:GT$9$k$H%U%'%$%k%*!<%P$7$^$9!#(B + $B$3$l$O(Bpgpool-II 2.2.x$B$^$G$N5sF0$HF1$8$G$9!#(B +false$B$K$9$k$H!"%U%'%$%k%*!<%P$;$:!"C1$K%(%i!<$,%l%]!<%H$5$l$F%;%C%7%g%s$,@ZCG$5$l$^$9!#(B +$B$3$N%Q%i%a!<%?$r(Bfalse$B$K$9$k>l9g$K$O!"(Bhealth check$B$rM-8z$K$9$k$3$H$r$*4+$a$7$^$9!#(B +$B$J$*!"$3$N%Q%i%a!<%?$,(Bfalse$B$N>l9g$G$b!"%/%i%$%"%s%H$,(Bpgpool$B$K@\B3$9$k:]$K%P%C%/%(%s%I$X$N@\B3$K<:GT$7$?>l9g!"$"$k$$$O%P%C%/%(%s%I$,%7%c%C%H%@%&%s$5$l$?$3$H$r(Bpgpool-II$B$,8!CN$7$?>l9g$K$O%U%'%$%k%*!<%P$,5/$-$k$3$H$KCm0U$7$F$/$@$5$$!#(B +$B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B +</p> + <dt>ignore_leading_white_space <dd> <p> @@ -533,6 +540,13 @@ pgpool $B$,I,MW$J>pJs$KCV$-49$($F%3%^%s%I$r<B9T$7$^$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B </p> +<dt>log_per_node_statement +<dd> +<p> + log_statement$B$H;w$F$$$^$9$,!"(BDB$B%N!<%IC10L$G%m%0$,=PNO$5$l$k$N$G!"%l%W%j%1!<%7%g%s$dIi2YJ,;6$N3NG'$,MF0W$G$9!#(B +$B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O@_Dj%U%!%$%k$r:FFI$_9~$_$7$F$/$@$5$$!#(B +</p> + <dt>log_hostname <dd> <p> @@ -598,17 +612,16 @@ backend_port $B$O?7$7$/DI2C$7$?9T$r@_Dj%U%!%$%k:FFI$_9~$_$GDI2C$9$k(B <dt>backend_weight <dd> <p> -$B;HMQ$9$k(BPostgreSQL$B%5!<%P$KBP$9$kIi2YJ,;6$NHfN($r;XDj$7$^$9!#(B -$B<B:]$K$O!"(B"backend_weight"$B$N8e$K(BDB$B%N!<%I(BID$B$rIU2C$7$F;HMQ$9$kJ#?t(B -$B$N(BPostgreSQL$B$r6hJL$7$^$9!#(B1$BBf$7$+(BPostgreSQL$B$r;HMQ$7$J$$>l9g$O!"(B -"backend_weight0"$B$H$7$F$/$@$5$$!#(B +$B;HMQ$9$k(BPostgreSQL$B%5!<%P$KBP$9$kIi2YJ,;6$NHfN($r(B0$B0J>e$N@0?t$^$?$OIbF0>.?tE@$G;XDj$7$^$9!#(B +"backend_weight"$B$N8e$K$O!"(BDB$B%N!<%I(BID$B$rIU2C$7$F;HMQ$9$kJ#?t$N(BPostgreSQL$B$r6hJL$7$^$9!#(B +1$BBf$7$+(BPostgreSQL$B$r;HMQ$7$J$$>l9g$O!"(B"backend_weight0"$B$H$7$F$/$@$5$$!#(B $BIi2YJ,;6$r;HMQ$7$J$$>l9g$O!"!V(B1$B!W$r@_Dj$7$F$/$@$5$$!#(B </p> <p> -backend_weight $B$O?7$7$/DI2C$7$?9T$r@_Dj%U%!%$%k:FFI$_9~$_$GDI2C$9$k(B -$B$3$H$,$G$-$^$9!#$9$G$K$"$k>pJs$rESCf$GJQ99$9$k$3$H$O$G$-$^$;$s!#JQ99$9(B -$B$k>l9g$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B +backend_weight $B$O?7$7$/DI2C$7$?9T$r@_Dj%U%!%$%k:FFI$_9~$_$GDI2C$9$k$3$H$,$G$-$^$9!#(B +pgpool-II 2.2.6/2.3$B0J9_$G$O!"@_Dj%U%!%$%k$N:FFI9~$G(Bbackend_weight$BCM$rJQ99$G$-$^$9!#(B +$B?7$7$/@\B3$7$?%/%i%$%"%s%H%;%C%7%g%s$+$i!"$3$N?7$7$$(Bweight$BCM$,H?1G$5$l$^$9!#(B </p> <dt>backend_data_directory @@ -682,16 +695,16 @@ raw$B%b!<%I$K2C$(!"%3%M%/%7%g%s%W!<%j%s%0$,MxMQ$G$-$k$h$&$K$J$j$^$9!#(B $B$r!V(B;$B!W$G6h@Z$C$FNs5s$7$^$9!#%G%U%)%k%H$O0J2<$N$h$&$K$J$C$F$$$^$9$,!"(B $BG$0U$N(BSQL$BJ8$rDI2C$7$F$b9=$$$^$;$s!#(B <pre> - reset_query_list = 'ABORT; RESET ALL; SET SESSION AUTHORIZATION DEFAULT' + reset_query_list = 'ABORT; DISCARD ALL' </pre> <p> - PostgreSQL$B$N%P!<%8%g%s$K$h$C$F;HMQ$G$-$k(BSQL$B%3%^%s%I$,0c$$$^$9$,!"(B - $B3F%P!<%8%g%s$4$H$N$*4+$a@_Dj$O0J2<$G$9!#(B + PostgreSQL$B$N%P!<%8%g%s$K$h$C$F;HMQ$G$-$k(BSQL$B%3%^%s%I$,0c$$$^$9!#(B + $B3F%P!<%8%g%s$4$H$N$*4+$a@_Dj$O0J2<$G$9(B($B$?$@$7!"(B"ABORT"$B$OI,$:%3%^%s%I$K4^$a$F$/$@$5$$(B)$B!#(B </p> <p> <table border> -<tr><th>PostgreSQL$B%P!<%8%g%s(B</th><th>reset_query_list$B$N@_DjCM(B</th></tr> +<tr><th>PostgreSQL$B%P!<%8%g%s(B</th><th>reset_query_list$B$N?d>)@_DjCM(B</th></tr> <tr><td>7.1$B0JA0(B</td><td>ABORT</td></tr> <tr><td>7.2$B$+$i(B8.2</td><td>ABORT; RESET ALL; SET SESSION AUTHORIZATION DEFAULT</td></tr> <tr><td>8.3$B0J9_(B</td><td>ABORT; DISCARD ALL</td></tr> @@ -702,9 +715,6 @@ raw$B%b!<%I$K2C$(!"%3%M%/%7%g%s%W!<%j%s%0$,MxMQ$G$-$k$h$&$K$J$j$^$9!#(B <ul> <li>$B!V(BABORT$B!W$O!"(BPostgreSQL 7.4$B0J>e$G$O%H%i%s%6%/%7%g%s%V%m%C%/$NCf$K$$(B $B$J$$>l9g$K$OH/9T$5$l$^$;$s!#(B -<li>DISCARD ALL$B$O%7%9%F%`%F!<%V%k$N(Bpg_listener$B$KGSB>%m%C%/$r$+$1$k$?$a!"(B - $BF1;~<B9T%;%C%7%g%s$,B?$$$H$-$O@-G=Dc2<$r5/$7$^$9!#(B - $BF1;~<B9T%;%C%7%g%s$,B?$$>l9g$O!"LLE]$G$b(BDISCARD$B%3%^%s%I$GGK4~$7$?$$%*%V%8%'%/%H$r$$$A$$$A;XDj$9$k$3$H$r$*4+$a$7$^$9!#(B </ul> </p> @@ -739,8 +749,7 @@ raw$B%b!<%I!"%3%M%/%7%g%s%W!<%k%b!<%I$K2C$(!"0J2<$r@_Dj$7$^$9!#(B <dt>load_balance_mode <dd> <p> - true$B$r;XDj$9$k$H%l%W%j%1!<%7%g%s%b!<%I$N:]$K!"(BSELECT$BJ8$r%^%9%?$H%;(B - $B%+%s%@%j$N4V$G%m!<%I%P%i%s%9$7$^$9!#%G%U%)%k%HCM$O(Bfalse$B$G$9!#(B + true$B$r;XDj$9$k$H%l%W%j%1!<%7%g%s%b!<%I$^$?$O%^%9%?!<%9%l!<%V%b!<%I$N:]$K!"(BSELECT$BJ8$r%m!<%I%P%i%s%9$7$F8!:w@-G=$r8~>e$5$;$k$3$H$,$G$-$^$9!#%G%U%)%k%HCM$O(Bfalse$B$G$9!#(B $B$3$N%Q%i%a!<%?$rJQ99$7$?;~$K$O(B pgpool-II $B$r:F5/F0$7$F$/$@$5$$!#(B </p> @@ -930,7 +939,7 @@ replicate_select$B!"(Bload_balance_mode$B!"(BSELECT$BLd9g$o$;$,L@<(E*$J%H%i recovery_2nd_stage_command $B$r<B9T$7$F$$$k4V$O(B pgpool $B$G$O%/%i%$%"%s(B $B%H$+$i@\B3!";2>H!"99?7=hM}$r0l@Z(B<b>$B<u$1IU$1$^$;$s(B</b>$B!#$^$?!"%P%C%A(B $B=hM}$J$I$K$h$C$F@\B3$7$F$$$k%/%i%$%"%s%H$,D9;~4VB8:_$7$F$$$k>l9g$K$O(B - $B%3%^%s%I$r5/F0$7$^$;$s!#@\B3$r@)8B$7!"8=:_$N@\B3?t$,(B 0 $B$K$J$C$?;~E@(B + $B%3%^%s%I$r5/F0$7$^$;$s!#?7$?$J@\B3$r@)8B$7!"8=:_$N@\B3?t$,(B 0 $B$K$J$C$?;~E@(B $B$G%3%^%s%I$r5/F0$7$^$9!#(B </p> <p> @@ -976,10 +985,10 @@ load_balance_mode = true $B$r@_Dj$7$?>l9g!"0J2<$N>r7o$N$9$Y$F$rK~$?$7$?;~$K(BS <ul> <li>PostgreSQL$B$N%P!<%8%g%s$,(B7.4$B0J9_$G$"$k(B <li>$BLd$$9g$o$;$,L@<(E*$J%H%i%s%/%6%7%g%s%V%m%C%/$NFbB&$K$J$$(B($B$D$^$j!"(BBEGIN$B$rH/9T$7$F$$$J$$(B) -<li>SELECT$BJ8(B($B$?$@$7!"(BSELECT nextval $B$H(B SELECT setval $B$N>l9g$O=|$/(B)$B$^$?$O(BCOPY TO STDOUT, DECLARE..SELECT, FETCH, CLOSE$B$N$$$:$l$+$G$"$k(B +<li>SELECT$BJ8(B(WITH$BIU$b4^$`!#(BSELECT nextval $B$H(B SELECT setval $B$O=|$/(B)$B$^$?$O(BCOPY TO STDOUT, EXPLAIN, EXPLAIN ANALYZE SELECT... $B$N$$$:$l$+$G$"$k(B <li>SELECT INTO $BJ8$G$O$J$$(B <li>SELECT FOR UPDATE/SELECT FOR SHARE$BJ8$G$O$J$$(B -<li>$B%/%(%jJ8;zNs$,(B SELECT $B$G;O$^$k(B(ignore_leading_white_space = true$B$N>l9g$O6uGr$OL5;k$7$^$9(B) +<li>$B%/%(%jJ8;zNs$,(B SELECT$B$^$?$O(BWITH $B$G;O$^$k(B(ignore_leading_white_space = true$B$N>l9g$O6uGr$OL5;k$7$^$9(B) </ul> </p> <p> @@ -1035,6 +1044,10 @@ DELETE $B$N99?77o?t$,$9$Y$F$N%N!<%I$,F1$8$G$J$$>l9g!"0U?^E*$K9=J8%(%i!<$r5/$9( $B%m!<%I%P%i%s%9$N>r7o$O%l%W%j%1!<%7%g%s%b!<%I$HF1$8$G$9!#(B </p> +<p> +$B%^%9%?%9%l!<%V%b!<%I$G$O!"0l;~%F!<%V%k$N:n@.!"99?7$O%^%9%?%N!<%I$G$N$_<B9T$5$l$^$9!#(B +$B0l;~%F!<%V%k$X$N8!:w$O!"(BSELECT$BJ8$NA0$K(B/*NO LOAD BALANCE*/$B$H$$$&%3%a%s%H$r=q$/$3$H$K$h$C$F<B9T$G$-$^$9!#(B +</p> <p> $B%^%9%?!<%9%l!<%V%b!<%I$G$O!"(Bpgpool.conf$B$N(Breplication_mode$B$r(Bfalse$B$K!"(Bmaster_slave_mode $B$r(Btrue$B$K$7$^$9!#(B @@ -1384,6 +1397,25 @@ pgpool [-f config_file][-F pcp_config_file] [-m {s[mart]|f[ast]|i[mmediate]}] st </table> </p> +<p> +pgpool$B$,Dd;_$9$k$H!"(B[logdir]/pgpool_status$B$H$$$&%U%!%$%k$K%P%C%/%(%s%I$N>uBV$r=q$-9~$_$^$9!#(B +$B<!2s(Bpgpool$B$,5/F0$7$?$H$-$K$3$N%U%!%$%k$,B8:_$9$k$H!"%P%C%/%(%s%I$N>uBV$r$=$3$+$iI|85$7$^$9!#(B +$B$3$l$K$h$C$F!"(B +<ol> +<li>$B%P%C%/%(%s%I$,Dd;_$7$F%U%'%$%k%*!<%P(B +<li>pgpool$B7PM3$G@5>o$J(BDB$B$r99?7(B +<li>pgpool$B$rDd;_(B +<li>$BDd;_$7$F$$$?(BDB$B$r:F5/F0(B +<li>pgpool$B$r:F5/F0(B +</ol> +</p> +<p> +$B$H$$$&%7!<%1%s%9$G!"IT@09g$N$"$k(BDB$B$+$i%l%W%j%1!<%7%g%s>uBV$K0\9T$9$k$3$H$rKI$0$3$H$,$G$-$^$9!#(B +</p> +<p> +$B$b$7$b(BDB$B$N>uBV$KIT@09g$,$J$/$J$C$F$$$k!"$"$k$$$O(Bpgpool.conf$B$r=q$-49$($F@_Dj$rJQ$($F$7$^$C$?!"$H$$$&$H$-$O(Bpgpool_status$B$r:o=|$9$l$P%P%C%/%(%s%I$N>uBV$NI|85$r9T$$$^$;$s!#(B +</p> + <h1>pgpool-II$B$N@_Dj%U%!%$%k$N:FFI$_9~$_(B<a name="reload"></a></h1> <p> pgpool-II$B$N@_Dj%U%!%$%k$O!"(Bpgpool-II$B$r:F5/F0$9$k$3$H$J$/FI$_D>$9$3$H$,$G$-$^$9!#(B @@ -1719,12 +1751,51 @@ _PGPOOL2_PCP_TIMEOUT $B$rBg$-$/$7$F$/$@$5$$!#(B <h2>$B%l%W%j%1!<%7%g%s%b!<%I$GCm0U$,I,MW$J4X?t$J$I(B</h2> <p> pgpool-II$B$G$OF1$8Ld$$9g$o$;$rAw$C$F$b0[$J$k7k(B - $B2L$rJV$9$h$&$J%G!<%?!"$?$H$($PMp?t$d%H%i%s%6%/%7%g%s(BID$B!"(BOID$B!"(BSERIAL$B!"(B - $B%7!<%1%s%9!"(BCURRENT_TIMETSTAMP$B$N$h$&$J$b$N$K4X$7$F$O%l%W%j%1!<%7%g(B - $B%s$O$7$^$9$,!"(B2$BBf$N%[%9%H$G$^$C$?$/F1$8CM$,%3%T!<$5$l$kJ]>Z$O$"$j$^(B - $B$;$s!#(B + $B2L$rJV$9$h$&$J%G!<%?!"$?$H$($PMp?t$d%H%i%s%6%/%7%g%s(BID$B!"(BOID$B$N$h$&$J$b$N$K4X$7$F$O%l%W%j%1!<%7%g(B + $B%s$O$7$^$9$,!"(B2$BBf$N%[%9%H$G$^$C$?$/F1$8CM$,%3%T!<$5$l$kJ]>Z$O$"$j$^$;$s!#(B +</p> +<p> +$B%7%j%"%k7?$K4X$7$F$O!"(Binsert_lock$B$rM-8z$K$7$F$*$1$P%F!<%V%k%m%C%/$rMxMQ$7$FF14|$,<h$i$l$^$9!#(B +$B%7!<%1%s%9$r07$&4X?t$r(BSELECT setval()$B!"(BSELECT nextval()$B$G8F$S=P$7$F$$$k>l9g$O<+F0E*$K%l%W%j%1!<%7%g%s$5$l$k$N$GF14|$,<h$l$^$9!#(B +</p> +<p> +pgpool-II 2.3$B0J9_$G$O!"%F!<%V%k$N%G%U%)%k%HCM$G$NMxMQ$b4^$a!"(BCURRENT_TIMESTAMP, CURRENT_DATE, now()$B$O!"<+F0E*$K%^%9%?B&$+$i<hF@$7$?;~9oCM$KCV$-49$($k$3$H$K$h$C$F%l%W%j%1!<%7%g%s$G$-$k$h$&$K$J$C$F$$$^$9!#(B +$B$?$@$7!"0J2<$NE@$KCm0U$7$F$/$@$5$$!#(B +</p> +<p> +<ul> +<li>DEFAULT$B$K%?%$%`%9%?%s%W$rJV$9<0$,4^$^$l$F$$$k$+$I$&$+$NH=Dj$O@53N$G$O$"$j$^$;$s!#Nc$($P(B +<pre> +CREATE TABLE rel1( + d1 date DEFAULT CURRENT_DATE + 1 +) +</pre> +$B$N$h$&$J$b$N$b8=:_$N%?%$%`%9%?%s%W$H$7$F=q$-49$($r9T$$$^$9!#(B +<li>INSERT ... SELECT$B$G$O!"Ns$N(BDEFAULT$B$KBP$9$k=q$-49$($r9T$$$^$;$s!#Nc$($P!"(B +<pre> +CREATE TABLE rel1( + c1 int, + c2 timestamp default now() +) +</pre> +$B$N;~!"(B +<pre> +INSERT INTO rel1(c1) VALUES(1) +</pre> +$B$O(B +<pre> +INSERT INTO rel1(c1, c2) VALUES(1, '2009-01-01 23:59:59.123456+09') +</pre> +$B$N$h$&$K=q$-49$($i$l$^$9$,(B +<pre> +INSERT INTO rel1(c1) SELECT 1 +</pre> +$B$O=q$-49$($i$l$^$;$s!#(B +</ul> </p> + <p> +PostgreSQL 8.2$B$+$=$l$h$jA0$N(BPostgreSQL$B$r$*;H$$$N>l9g!"(B CREATE TEMP TABLE$B$G:n@.$5$l$?%F!<%V%k$O%U%m%s%H%(%s%I$,%;%C%7%g(B $B%s$r=*N;$7$F$b:o=|$5$l$^$;$s!#$3$l$O!"%3%M%/%7%g%s%W!<%k$N8z(B $B2L$G%P%C%/%(%s%I$+$i8+$k$H%;%C%7%g%s$,7QB3$7$F$$$k$h$&$K8+$((B @@ -1732,6 +1803,9 @@ CREATE TEMP TABLE$B$G:n@.$5$l$?%F!<%V%k$O%U%m%s%H%(%s%I$,%;%C%7%g(B $B%i%s%6%/%7%g%s%V%m%C%/$NCf$G(BCREATE TEMP TABLE ... ON COMMIT DROP$B$r$*;H$$2<$5$$!#(B </p> +<p> +PostgreSQL 8.3$B0J9_$G$O!"(Breset_query_list$B$K(BDISCARD ALL$B$r;XDj$9$l$P<+F0E*$K:o=|$5$l$k$N$GLdBj$"$j$^$;$s!#(B +</p> <h2>$B%/%(%j$K$D$$$F(B</h2> <p> @@ -2584,6 +2658,167 @@ pgpool-II$B$N%A%e!<%H%j%"%k$O(B<a href="tutorial-ja.html">$B$3$3(B<a/>$B$K$ <h1>$B%j%j!<%9%N!<%H(B<a name="release"></a></h1> +<h2>2.3 (tomiteboshi) 2009/12/06</h2> +<h3>$B35MW(B</h3> +<p> +$B$3$N%P!<%8%g%s$G$O!"%l%W%j%1!<%7%g%s5!G=$K2~NI$,2C$($i$l!";~9o%G!<%?(B(CURRENT_TIMESTAMP, CURRENT_DATE, now()$B$J$I(B)$B$r@5$7$/07$&$3$H$,$G$-$k$h$&$K$J$j$^$7$?!#(B +$B$^$?!"F1;~@\B3?t$,(B1(num_init_children$B$,(B1)$B$N$H$-$N%l%W%j%1!<%7%g%s@-G=8~>e$7$F$$$^$9!#(B +$B$^$?!"(Bpgpool-II$B:F5/F0;~$KA02s$N(BDB$B%N!<%I$N%@%&%s>uBV$r5-O?$7!"ITMQ0U$KI|5l%N!<%I$K%G!<%?$r=q$-9~$s$G%G!<%?$NIT@09g$,5/$-$k$3$H$rKI$0$3$H$,$G$-$k$h$&$K$J$j$^$7$?!#(B +$B$=$N$[$+!"%/%(%j%m%0$,2~NI$5$l$F(BDB$B%N!<%IC10L$N>u67$,GD0.$7$d$9$/$J$j!"$^$?%U%!%$%k%*!<%P$N5sF0$,:Y$+$/@)8f$G$-$k$h$&$K$J$j$^$7$?!#(B +$B$J$*!"(Bpgpool-II 2.3$B$K$O!"(Bpgpool-II 2.2.1$B$+$i(B2.2.6$B$^$G$N$9$Y$F$N%P%0=$@5!"2~NI$,4^$^$l$F$$$^$9!#(B +</p> + +<h3>pgpool-II 2.2.$B$+$i$NHs8_49@-(B</h3> +<ul> +<li>[logdir]$B$N2<$K(Bpgpool_status$B$H$$$&%U%!%$%k$,:n$i$l$k$N$G!"(Bpgpool$B$N<B9T%f!<%6$,FI$_=q$-$G$-$k8"8B$rM?$($F$*$$$F$/$@$5$$!#(B +</ul> + +<h3>$B2~NIE@(B</h3> +<ul> +<li>$B%l%W%j%1!<%7%g%s$K$*$$$F!";~9o%G!<%?(B(CURRENT_TIMESTAMP, CURRENT_DATE, now()$B$J$I(B)$B$r@5$7$/07$&$3$H$,$G$-$k$h$&$K$J$j$^$7$?!#FC$K%"%W%j%1!<%7%g%s$KJQ99$r2C$($k$3$H$J$/!"(BINSERT/UPDATE$BJ8!"%F!<%V%k$N%G%U%)%k%HCM$K$3$l$i$N;~9o4X?t$r4^$`%1!<%9$G$b@5$7$/%l%W%j%1!<%7%g%s$G$-$^$9(B($B$$$/$D$+@)8B;v9`$,$"$j$^$9!#>\:Y$O(B<a href="#restriction">$B@)8B;v9`(B</a>$B$r;2>H$7$F$/$@$5$$(B)$B!#(B(Akio Ishida) +<li>SQL$B%Q!<%5$r(BPostgreSQL 8.4$B$N$b$N$K%P!<%8%g%s%"%C%W$7$^$7$?(B(Akio Ishida) +<li>$BF1;~@\B3?t$,(B1(num_init_children$B$,(B1)$B$N$H$-$N%l%W%j%1!<%7%g%s@-G=$,(B20%$B$+$i(B100%$B8~>e$7$^$7$?(B(Tatsuo) +<li>$B?7$7$$%G%#%l%/%F%#%V(Blog_per_node_statement$B$,DI2C$5$l$^$7$?(B(Tatsuo) +log_statement$B$H;w$F$$$^$9$,!"(BDB$B%N!<%IC10L$G%m%0$,=PNO$5$l$k$N$G!"%l%W%j%1!<%7%g%s$dIi2YJ,;6$N3NG'$,MF0W$G$9!#(B +$B$^$?!"%P%C%/%(%s%I$N%W%m%;%9(BID$B$bI=<($5$l$k$N$G!"%P%C%/%(%s%I$N%m%0$HJ;$;$F$N2r@O$,MF0W$K$J$C$F$$$^$9!#(B +<li>$B?7$7$$%G%#%l%/%F%#%V(Bfail_over_on_backend_error$B$,DI2C$5$l!"%U%'%$%k%*!<%P$N5sF0$,$h$j:Y$+$/@)8f$G$-$k$h$&$K$J$j$^$7$?(B(Tatsuo) +<li>pgpool-II$BDd;_;~$K%@%&%s$7$?(BDB$B%N!<%I$N>pJs$r%9%F!<%?%9%U%!%$%k$K5-O?$7!"(Bpgpool-II$B$r5/F0$7$?$H$-$K$=$N>pJs$r%j%9%H%"$G$-$k$h$&$K$7$^$7$?(B(Tatsuo) +$B%9%F!<%?%9%U%!%$%k$O(B [logdir]/pgpoo_status $B$H$$$&%U%!%$%k$K=q$+$l$^$9!#(B +<li>EXPLAIN$B$H!"Ld$$9g$o$;$,(BSELECT$B$N$H$-$N(BEXPLAIN ANALYZE$B$,Ii2YJ,;6$5$l$k$h$&$K$J$j$^$7$?!#(B +$B$3$l$K$h$C$F!"(BDB$B%N!<%I$N4V$GBgI}$KLd$$9g$o$;%W%i%s$,0[$k$?$a$K!"(Bkind mismatch$B%(%i!<$,5/$-$k$N$rKI$0$3$H$,$G$-$^$9(B(Tatsuo) +<li>$BF|K\8l%I%-%e%a%s%H$NBN:[$r2~NI$7$^$7$?(B(Tatsuo) +<li>$B%l%W%j%1!<%7%g%s%b!<%I!"%^%9%?!<%9%l!<%V%b!<%IMQ$N%G%U%)%k%H(Bpgpoo.conf.sample$B$,JLESDI2C$5$l$^$7$?(B(Tatsuo) +<li>$B;~9o%G!<%?$N%F%9%H$,DI2C$5$l$^$7$?(B(Akio Ishida) +</ul> + +</p> + +<h2>2.2.6 (urukiboshi) 2009/12/01</h2> +<h3>$B35MW(B</h3> +<p> +$B$3$N%P!<%8%g%s$G$O!"%m!<%I%P%i%s%9$N=E$_%Q%i%a!<%?(Bweight$B$N07$$$,2~A1$5$l!"(B +$B$^$?0l;~%F!<%V%k$,%^%9%?!<!?%9%l!<%V%b!<%I$GMxMQ$G$-$k$h$&$K$J$j$^$7$?!#(B +$B$b$A$m$s$$$D$b$N$h$&$K(B2.2.5$B0JA0$N?'!9$J%P%0$,=$@5$5$l$F$$$^$9!#(B +</p> +<h3>$B%P%0=$@5(B</h3> +<ul> +<li>DECLARE, CLOSE, FETCH, MOVE$B$,%m!<%I%P%i%s%9$NBP>]$K$J$i$J$/$J$j$^$7$?!#(B +$B$b$7%G!<%?$,99?7$5$l!"%H%i%s%6%/%7%g%s$,%3%_%C%H$5$l$?8e$K(BCLOSE$B$,H/9T$5$l$k$H%G!<%?$N0l4S@-$,$J$/$J$k$+$i$G$9(B +($B$D$^$j!"(Bhold$B$G$-$k%+!<%=%k$N>l9g$N$3$H$r8@$C$F$$$^$9(B)(Tatsuo) +<li>$B%^%9%?!<!?%9%l!<%V%b!<%I$K$*$$$F!"3HD%%W%m%H%3%k$N(BParse$B$r%^%9%?!<>e$G$N$_<B9T$9$k$h$&$K$7$^$7$?!#(B +$B0JA0$O$9$Y$F$N%N!<%I$G(BParse$B$,<B9T$5$l$F$$$?$N$G$9$,!"$3$l$@$HITI,MW$J%m%C%/$,%9%l!<%V$G$b<h$i$l$F$7$^$$$^$9(B(Tatsuo) +<li>uninstall$B$NA0$K$9$Y$F$N%i%s%l%Y%k$+$i(Binit$B%9%/%j%W%H$r:o=|$9$k$h$&$K$7$^$7$?(B(Devrim) +<li>$BG'>Z$K<:GT$7$?$H$-$KE,@Z$J%(%i!<%a%C%;!<%8$r=P$9$h$&$K$7$^$7$?(B(Glyn Astill) +<li>$B%=%1%C%H$X$N=q$-9~$_$K<:GT$7$?$H$-$K%U%m%s%H%(%s%IMQ$J$N$+%P%C%/%(%s%IMQ$J$N$+$o$+$k$h$&$K$7$^$7$?(B(Tatsuo) +<li>$B%U%m%s%H%(%s%IMQ$N%=%1%C%H$K=q$-9~$_<:GT$7$?$H$-$K$$$A$$$A%(%i!<$r=P$5$J$$$h$&$K$7$^$7$?(B(Tatsuo) +<li>$B%^%9%?!<!?%9%l!<%V%b!<%I$G0l;~%F!<%V%k$,;H$($k$h$&$K$J$j$^$7$?!#(B +INSERT/UPDATE/DELETE$B$O<+F0E*$K%^%9%?$N$_$KAw$i$l$^$9!#(BSELECT$B$K4X$7$F$OL@<(E*$K%/%(%j$NA0$K(B +/*NO LOAD BALANCE*/$B$H$$$&%3%a%s%H$rIU$1$J$1$l$P$J$j$^$;$s(B(Tatsuo) +</ul> +</p> + +<h2>2.2.5 (urukiboshi) 2009/10/4</h2> +<h3>$B35MW(B</h3> +<p> +$B$3$N%P!<%8%g%s$G$O!"(B2.2.4$B0JA0$N?'!9$J%P%0$,=$@5$5$l$F$$$^$9!#(B +</p> +<h3>$B%P%0=$@5(B</h3> +<ul> +<li>$B%3%M%/%7%g%s?t$N%+%&%s%H$N%_%9$K$h$j!"%*%s%i%$%s%j%+%P%j$,=*$o$i$J$/$J$k%P%0$r=$@5$7$^$7$?(B(Tatsuo) +<li>$BFbItE*$K%m%C%/$rH/9T$9$k:]$K$b%U%m%s%H%(%s%I$,0[>o=*N;$7$?$3$H$r8!=P$7$F(BSQL$B%3%^%s%I$r%-%c%s%;%k$9$k$h$&$K$7$^$7$?(B(Tatsuo) +<li>$B@\B3$N=*N;=hM}$GL58B%k!<%W$K4Y$k$3$H$,$"$k%P%0$r=$@5$7$^$7$?(B(Xavier Noguer, Tatsuo) +<li>$B3HD%%W%m%H%3%k$N%Q!<%9=hM}$G(Bkind mismatch error$B$,5/$-$?:]$K@5$7$$(BSQL$BJ8$rI=<($9$k$h$&$K$7$^$7$?(B(Tatsuo) +<li>$B%I%-%e%a%s%H$r2~A1$7$^$7$?(B(Tatsuo) +</ul> +</p> + +<h2>2.2.4 (urukiboshi) 2009/8/24</h2> +<h3>$B35MW(B</h3> +<p> +$B$3$N%P!<%8%g%s$G$O!"(B2.2.3$B0JA0$N?'!9$J%P%0$,=$@5$5$l$F$$$^$9!#(B +</p> +<h3>$B%P%0=$@5(B</h3> +<ul> + <li>pgpool-II 2.2.2$B$GF~$C$F$7$^$C$?%P%0$r=$@5$7$^$7$?!#%U%m%s%H%(%s%I$,%"%\!<%H$9$k%?%$%_%s%0$K$h$C$F$O!"0J8eFbIt>uBV$,%j%;%C%H$5$l$:!"<!$N%;%C%7%g%s$G(BDML$B$d(BDDL$B$,%^%9%?!<%N!<%I$N$_Aw$i$l!"%N!<%I4V$G%G!<%?$NIT0lCW$,@8$8$k$3$H$,$"$j$^$7$?(B(Tatsuo) + <li>pgpool-II 2.2.3$B$G%P!<%8%g%s(B2$B%W%m%H%3%k$N%/%i%$%"%s%H$,F0$+$J$/$J$C$F$7$^$C$F$$$?$N$r=$@5$7$^$7$?!#(B + $B$^$?!";~4V$N$+$+$k%/%(%j$rBT$C$F$$$k4V$K%U%m%s%H%(%s%I$,0[>o=*N;$7$?$3$H$r8!CN$9$k4V3V$r(B1$BIC$+$i(B30$BIC$KJQ99$7$^$7$?!#$3$N%A%'%C%/$O!"(B2.2.4$B$G$O%W%m%H%3%k%P!<%8%g%s$,(B3$B$N$H$-$N$_M-8z$G$9(B(Tatsuo) + <li>$B;R%W%m%;%9$r5/F0$9$kA0$K%7%0%J%k$N%V%m%C%/$d%O%s%I%i$N@_Dj$r9T$J$&$h$&$K$7$^$7$?!#(B +$B$3$l$O!"(Bpgpool-II$B$r5/F0$7$?D>8e$K%U%!%$%k%*!<%P$J$I$N;v>]$,H/@8$7$F;R%W%m%;%9$+$i?F%W%m%;%9$K%7%0%J%k$,Aw$i$l$k$H!"(Bpgpool-II$B$N?F%W%m%;%9$,;`$s$G$7$^$&$3$H$,$"$k$+$i$G$9(B(Tatsuo) +</ul> +</p> + +<h2>2.2.3 (urukiboshi) 2009/8/11</h2> +<h3>$B35MW(B</h3> +<p> +$B$3$N%P!<%8%g%s$G$O!"(B2.2.2$B0JA0$N?'!9$J%P%0$,=$@5$5$l$F$$$^$9!#(B +</p> +<h3>$B%P%0=$@5(B</h3> +<ul> + <li>$B%P%C%/%(%s%I$K?7$7$$%3%M%/%7%g%s$rD%$k:]$K!"%P%C%/%(%s%I$N0l$D$,>c32$r5/$7$F$$$k%1!<%9$G!"8e=hM}$NCf$G(Bpgpool-II$B$N;R%W%m%;%9$,Mn$A$k$3$H$,$"$k%P%0$r=$@5$7$^$7$?(B(Tatsuo) + <li>$B%Q%i%l%k%/%(%j$N%P%0$r=$@5$7$^$7$?(B(Yoshiharu Mori) + <li>$B3HD%%W%m%H%3%k$N>l9g$K$b%(%i!<%a%C%;!<%8$NCf$G:G8e$K;HMQ$7$?%/%(%j$,I=<($G$-$k$h$&$K$J$j$^$7$?(B(Akio Ishida) + <li>kind mismatch error$B%a%C%;!<%8$N:n@.$G!"%a%C%;!<%8FbMF$,2u$l$k$3$H$,$"$k%P%0$r=$@5$7$^$7$?(B(Tatsuo, Akio Ishida) + <li>$B%P%C%/%(%s%I$X$N@\B35-=R;R$N;2>H%?%$%_%s%0$K$h$C$F$O(Bpgpool-II$B$N;R%W%m%;%9$,Mn$A$k$3$H$,$"$k%P%0$r=$@5$7$^$7$?(B(Tatsuo)$B!#(B + <li>pool_error$B$d(Bpool_log$B$N0z?t$,4V0c$C$F$$$?8D=j$r=$@5$7$^$7$?(B(Akio Ishida)$B!#(B + <li>statement_timeout$B$N%?%$%`%"%&%H$K$h$k%(%i!<=hM}$r2~NI$7$^$7$?!#<B:]$K$O%?%$%`%"%&%H$^$G$K(Bstatement_timeout$B$G@_Dj$7$?;~4V$NG\$+$+$C$F$$$?$N$rD>$7$^$7$?!#$^$?!"(Bmaster$B$@$1$,(Bstatement_timeout$B$rJV$7$?>l9g$K$bBP1~$G$-$k$h$&$K$7$^$7$?!#0JA0$O(Bkind mismatch$B%(%i!<$K$J$C$F$$$^$7$?(B(Tatsuo)$B!#(B +(master$B0J30$,(Bstatement_timeout$B$rJV$5$J$$%1!<%9$G$O(Bkind mismatch$B%(%i!<$K$J$j$^$9(B)$B!#(B + + <li>health check$B$r$h$j6/2=$7!"(Bpostmaster$B$,(BSIGSTOP$B$G;_$C$F$7$^$C$F$$$k>l9g$b>c328!CN$G$-$k$h$&$K$7$^$7$?!#(B + + <li>$B%P%C%/%(%s%I$K(BSQL$B$rEj$2!"$=$N1~Ez$rBT$C$F$$$k4V$K%/%i%$%"%s%H$,(Bpgpool$B$KBP$9$k%3%M%/%7%g%s$r@ZCG$7$?$3$H$,8!=P$G$-$k$h$&$K$J$j$^$7$?!#(B +$B$?$H$($P!"(BWeb$B%"%W%j%1!<%7%g%s$G$O(BDB$B$KBP$7$F%j%/%(%9%H$rEj$2$F!"1~Ez$,$J$$$H%-%c%s%;%k$9$k$h$&$J$3$H$,IQHK$K5/$j$^$9!#(B +$B$3$N>l9g!":#$^$G$O(Bpgpool$B$d(BPostgreSQL$B$N%W%m%;%9$,;D$C$F$7$^$$!"F1;~@\B3?t$,8O3i$7$?$j!"%m%C%/$r<h$C$?$^$^$N%H%i%s%6%/%7%g%s$,;D$k$J$I$7$F%7%9%F%`A4BN$K1F6A$rM?$($k$3$H$,$"$j$^$7$?!#(B +$B:#2s$N=$@5$K$h$j!"$3$&$7$?>u67$,8!=P$G$-$k$h$&$K$J$C$?$@$1$G$J$/!"(BSQL$B$N1~EzBT$A$N4V$K%/%i%$%"%s%H$,%3%M%/%7%g%s$r@ZCG$7$?:]$K$O!"(BSQL$B%3%^%s%I$N%-%c%s%;%k$r(Bpgpool$B$,9T$J$C$F!"%m%C%/BT$A$J$I$N%P%C%/%(%s%I%W%m%;%9$,;D$k$N$rKI$0$3$H$,$G$-$k$h$&$K$J$j$^$7$?(B(Tatsuo)$B!#(B + +<li>$B0z?t$J$7$N(BCLUSTER$B%3%^%s%I$O%H%i%s%6%/%7%g%s$NCf$G$O<B9T$G$-$J$$$N$G!"<+F0%H%i%s%6%/%7%g%s$r%9%?!<%H$7$J$$$h$&$K$7$^$7$?(B(Tatsuo)$B!#(B + +<li>$BJ#?t$N%W%j%Z%"%I%9%F!<%H%a%s%H$r;H$C$F$$$k:]$K!"%;%C%7%g%s$N=*$j$G$=$N0lIt$@$1$,2rJ|$5$l$k%P%0$r=$@5$7$^$7$?(B(Akio Ishida) +$B!#(B +<li>sql/pgpool-recovery/pgpool-recovery.c$B$,(BPostgreSQL 8.4$B$G%3%s%Q%$%k$G$-$k$h$&$K$7$^$7$?(B(Tatsuo)$B!#(B + +<li>$B3HD%%W%m%H%3%k$r;H$C$F$$$k>l9g$K!"%/%i%$%"%s%H$H(Bpgpool$B$N4V$G$*8_$$$KBT$A>uBV$K$J$C$F$7$^$&$3$H$,$"$k%P%0$r=$@5$7$^$7$?(B(Gavin Sherry)$B!#(B + +<li>COPY FROM$B$r<B9TCf$K%/%i%$%"%s%H$,=hM}$rCfCG$7$?>l9g$K!"%P%C%/%(%s%I%W%m%;%9$,;D$C$F$7$^$&%P%0$r=$@5$7$^$7$?(B(Tatsuo)$B!#(B + +</ul> + +<h2>2.2.2 (urukiboshi) 2009/5/5</h2> +<h3>$B35MW(B</h3> +<p> +$B$3$N%P!<%8%g%s$G$O!"(B2.2.1$B0JA0$N?'!9$J%P%0$,=$@5$5$l$F$$$^$9!#(B +$B$H$j$o$1!"(Bpgpool$B$,%/%i%$%"%s%H$H$N4V$G%G!<%?$N$d$j<h$j$r$7$F$$$k:GCf$K!"(Bpgpool$B$N%/%i%$%"%s%H$,=*N;(B(X)$B%Q%1%C%H$r(Bpgpool$B$KAw?.$;$:$K=*N;$7$?>l9g$K5/$k2DG=@-$,$"$j$^$9!#(B +$B$3$N%P%0$O2a5n$N$9$Y$F$N(Bpgpool$B$KB8:_$7$F$$$^$9!#(B +</p> +<h3>$B%P%0=$@5(B</h3> +<ul> + <li>$B%U%m%s%H%(%s%I$K(Bpgpool$B$,%G!<%?$rAw?.$9$k:]$N%(%i!<$rL5;k$9$k$h$&$K$7$^$7$?!#$3$l$K$h$C$F!"%P%C%/%(%s%I$H$N4V$GI,MW$J=hM}$,CfCG$5$l$J$$$h$&$K$J$j!"%P%C%/%(%s%I$N4V$G%G!<%?$N0l4S@-$,$J$/$J$kLdBj$,2sHr$5$l$k$h$&$K$J$j$^$7$?(B(Tatsuo)$B!#(B + + <li>$B%^%9%?!<%9%l!<%V%b!<%I$K4X$9$k(B2.2.1$B$N=$@5$N:]$K@8$8$?%P%0$r=$@5$7$^$7$?!#%W%j%Z%"%I%9%F!<%H%a%s%H$r;H$$2s$9$H%O%s%0%"%C%W$9$k2DG=@-$,$"$j$^$7$?(B(Toshihiro)$B!#(B + + <li>SQL$B%3%^%s%I$N(BPREPARE$B$H%W%m%H%3%k%l%Y%k$N(BEXECUTE$B$,:.:_$9$k$H%P%C%/%(%s%I$,%/%i%C%7%e$9$k%P%0$r=$@5$7$^$7$?!#$3$N%P%0$,!"(B2.2$B$G;}$A9~$^$l$?$b$N$G$9(B(Tatsuo)$B!#(B + + <li>$B%3%M%/%7%g%s$N%j%;%C%HMQ$NLd9g$o$;$r<B9TCf$K%(%i!<$,5/$-$?>l9g$K!"(BPostgreSQL$B$N%m%0$K(B"unexpected EOF on client connection"$B$,5-O?$5$l$kLdBj$r=$@5$7$^$7$?(B(Tatsuo)$B!#(B +</ul> + +<h2>2.2.1 (urukiboshi) 2009/4/25</h2> +<h3>$B35MW(B</h3> +<p> +$B$3$N%P!<%8%g%s$G$O!"(B2.2$B$N?'!9$J%P%0$,=$@5$5$l$F$$$^$9!#(B +</p> +<h3>$B%P%0=$@5(B</h3> +<ul> + <li>master/slave$B%b!<%I$G!"(BDEALLOCATE$B$,<:GT$9$k$3$H$,$"$kLdBj$r=$@5$7$^$7$?!#(B + $B$3$l$O!":G=i$N(BPREPARE$B$,(Bslave$B$G<B9T$5$l$J$$$3$H$K$h$k$b$N$G$9(B(Toshihiro) + + <li>pgpool.spec$B$J$I$r(B2.2$BBP1~$K$7$^$7$?(B(Devrim) + + <li>Version 2$B%W%m%H%3%k$G$O(Binsert_lock$B$,L5;k$5$l$k$h$&$K$7$^$7$?(B(Tatsuo) + + <li>$B%Q%i%a!<%?JQ99%a%C%;!<%8$,%P%C%/%(%s%I$+$iFO$/EY$K%m%0$,=PNO$5$l$k$N$r;_$a$^$7$?(B(Tatsuo) + + <li>$B%I%-%e%a%s%H$GDI2C$7K:$l$?%U%!%$%k$rEPO?$7$^$7$?(B(Tatsuo) +</ul> + <h2>2.2 (urukiboshi) 2009/2/28</h2> <h3>$B35MW(B</h3> <p> [parent: 6d4c43770307]