3.1.6 (hatsuiboshi) 2013/2/8

    * Version 3.1.6

      This is a bugfix release against pgpool-II 3.1.5

    * Bug fixes

    - Fix race condition when using md5 authentication. (Tatsuo Ishii)

      The file descriptor to pool_passwd is opened in pgpool main and pgpool
      child inherits it. When concurrent connections try to authenticate md5
      method, they call pool_get_passwd and seek the fd and cause random md5
      auth failure because underlying fd is shared. Fix is, let individual
      pgpool child open the file by calling pool_reopen_passwd_file.

      Problem reported and analyzed by Jason Slagle in pgpool-general:1141.

      [pgpool-general: 1141] Possible race condition in pool_get_passwd
      From: Jason Slagle
      Date: Sun, 28 Oct 2012 01:12:52 -0400
      http://www.sraoss.jp/pipermail/pgpool-general/2012-October/001160.html

    - Fix hung up while repeating pcp_attach_node and pcp_detatch_node
      (Tatsuo Ishii)
      
      When node status is changed by pcp_attach_node and pcp_detatch_node,
      failover() sends SIGUSR1 to pcp_child process expecting it exits to
      refresh node status. In this situation lots of pgpool children exit and
      produce SIGCHLD as well. The SIGCHLD handler reaper() tries catch all
      SIGCHLD but sometimes it fails depending on the system load and timing.
      If SIGCHLD produced by pcp child is not caught, the process becomes
      zombie and never restarted.

      This problem is reported in bug track #32 (by oleg_myrk) etc.

      #32 PGPool hangs on pcp_attach/detach
      Reporter: oleg_myrk 
    $B!!(BDate: 2012-10-24 00:01
      http://www.pgpool.net/mantisbt/view.php?id=32

    - Fix pool_send_severity_message() not to use uninitialized memory.
      (Tatsuo Ishii)

      It cause a segmentaion fault.
      Reported in Bug #33's attached valgrind output by dudee.

      #33 pgpool-II 3.2.1 segfault
      Reporter: dudee
      Date: 2012-10-30 19:16
      http://www.pgpool.net/mantisbt/view.php?id=33

    - Add a description about "-f" to help message. (Tatsuo Ishii)

    - Fix reaper() not to exit wait3() loop when catches pcp or worker child
      exit event. (Tatsuo Ishii)

      Otherwise reaper() mistakenly ignore some process exit event and make a
      risk of creating zombie process and forgetting to create new process.

      Problem reported and fix suggested by Goto in [pgpool-general-jp: 1123].
      http://www.sraoss.jp/pipermail/pgpool-general-jp/2012-November/001122.html
      (in Japanese)

    - Fix pool_search_relcache() to use MASTER or MASTER_NODE_ID macro, rather
      than REAL_MASTER_NODE_ID. (Tatsuo Ishii)

      In case node 0 fail back in streaming replication mode, pgpool does not
      restart child process.  So REAL_MASTER_NODE_ID looks for node 0 con info,
      which is not present until new connection to backend made. Thus referring
      to node con info results in segfault. MASTER or MASTER_NODE_ID are safe in
      this situation because they look at cached former master node id.

    - Fix long standing bug "portal not found" error when replication delay
      is too much in streaming replication mode. (Tatsuo Ishii)

      The bug had been there since the delay threshold was introduced.

      We changed destination DB node if delay threshold exceeds in bind,
      describe and execute. However, if parse sends to different node, bind,
      describe or execute will fail because no parsed statement or portal
      exists.  Solution is, not to send to different parse node even
      if delay threshold is too much.

    - Fix pg_md5 to output "\n" after user inputs password. (Yugo Nagata)

    - Fix child_exit() to not call send_frontend_exits() if there's no
      connection pool. (Tatsuo Ishii)
      
      Otherwise, it segfaults because send_frontend_exits() referes to objects
      pointed to by pool_connection_pool. Per bug track #44 by tuomas.

      #44 pgpool went haywire after slave shutdown triggering master failover
      Reporter: tuomas
      Date: 2012-12-11 00:33
      http://www.pgpool.net/mantisbt/view.php?id=4

    - Fix read_startup_packet() to reset alarm and free StartupPacket when
      pool_read() returns 0 which means incorrect packet length. (Nozomi Anzai)

      Previously, authentication timeout occurs when connected by a program
      monitoring the pgpool port.It is reported in bug track #35 by tuomas.

      #35 Authentication is timeout
      Reporter: tuomas 
      Date: 2012-11-20 11:54
      http://www.pgpool.net/mantisbt/view.php?id=3

    - Fix long standing bug with pool_open(). (Tatsuo Ishii)

      It initializes wrong buffer pointer. Actually this is harmless because the
      pointer is initialized by prior memset() call, though.

    - Modify documents to correct information of whether a certain parameter
      change requires restart. (Yugo Nagata)

    - Add pool_passwd option to pgpool.conf.sample*, and documents. (Yugo Nagata)

3.1.5 (hatsuiboshi) 2012/10/12

    * Version 3.1.5

      This is a bugfix release against pgpool-II 3.1.4

    * Bug fixes

    - Fix read_startup_packet. (Tatsuo Ishii)

      If packet length is lower than 0, it should
      have returned immediately. Otherwise it would cause memory allocation
      error later on.  per pgpool-general:886.
      Also add canceling alarm.

    - Add NOTICE message handling to s_do_auth. (Tatsuo Ishii)

      Without this, health check responses false alarm and causes failover.
      per bug track:
      http://www.pgpool.net/mantisbt/view.php?id=25
      Also allow to receive ready for query packet *not* right after backend
      keydata.  I'm not sure if this could happen in the real world but the
      protocol seems to allow this.

    - Remove unnecessary/confusing debug log from s_do_auth.(Tatsuo Ishii)

    - Fix inifinit loop in SSL mode. When there's pending data in SSL layer
      of frontend, pool_process_query() checks pending data in backend. 
      (Tatsuo Ishii)

      If there's non, it loops again and checks frontend/backend receive buffer
      by using is_cache_empty(). Unfortunately it first checks pending data
      in SSL layer of frontend, thus goes to backend data and checks again
      (infinite loop).
      The solution is, if there's pending data in SSL layer of frontend and
      query is not in progress, call ProcessFrontendResponse() to process new
      request from frontend.

    - Fix is_system_catalog to use pgpool_regclass if available.
      (Tatsuo Ishii)

    - Fix memory leak in pool_get_insert_table_name(). (Tatsuo Ishii)

      If session context's memory contex is used for nodeToString(), memory is
      not freed until session ends.

    - Fix possible memory leak in nodeToString(). (Tatsuo Ishii)

      Since the memory context could be session context, memory used for
      String object may be considerable if user session continues for hours or
      days.
      See bug track #24 for more details.

    - Fix long standing problem with do_query(). (Tatsuo Ishii)

      When 1) extended protocol used and 2)unnamed portal is used and 3) no
      explicit transaction is used, user's unnamed portal is removed by Sync
      message.
      This is because Sync message closes transaction and unnamed portal is
      removed. This leads to "portal "" does not exist" error.

      Fix is, use "Flush" message instead of Sync. Main difference between
      using Sync and Flush is, Flush does not return Ready for Query message.
      So do_query() does not return until all expected responses are returned.
      It seems the order of messages returned from backend is random, and
      do_query () manages it by using state bits.

3.1.4 (hatsuiboshi) 2012/08/06

      * Version 3.1.4

      This is a bugfix release against pgpool-II 3.1.3.

      * General

      - Adopt PostgreSQL 9.2. (Tatsuo Ishii)

      * Bug fixes

      - Fix pool_send_and_wait() to send or not to send COMMIT / ABORT
        depending on the transaction state on each node. (Tatsuo Ishii)

        It is possible that only primary is in an explicit transaction but
        standby is not in it if multi statement query has been sent.
        Per bug report [pgpool-general-jp: 1049].

      - Fix load balance in Solaris. (Tatsuo Ishii)

        Problem is, random() in using random() in Solaris results in strange
        load balancing calculation.
        Use srand()/rand() instead although they produce lesser quality random
        Problem reported at [pgpool-general: 396].

          [pgpool-general: 396] strange load balancing issue in Solaris
          http://www.pgpool.net/pipermail/pgpool-general/2012-April/000397.html

      - Add params to the result of "SHOW pool_status": backend_data_directory,
        ssl_ca_cert, ssl_ca_cert_dir. (Nozomi Anzai)

      - Fix segfault of pcp_systemdb_info not in parallel mode. (Nozomi Anzai)

      - Fix "unnamed prepared statment does not exist" error. (Tatsuo Ishii)

        This is caused by pgpool's internal query, which breaks client's
        unnamed statements. To fix this, if extended query is used, named
        statement/portal for internal are used for internal query.

      - Fix is_system_catalog(). Its relcach was accidently defined as
        "session local". (Tatsuo Ishii)

      - Fix hangup when query conflict occurs in Hot-Standby mode.
        (Yugo Nagata)

        Query example to reproduce:

            (S1) BEGIN;
            (S1) SELECT * FROM t;
            (S2) DELETE FROM t;
            (S2) VACUUM t;

      - Improve reading and writing pid_file. (Tatsuo Ishii)

      - Fix pool_process_query() bug reported in [pgpool-general: 672].
        (Tatsuo Ishii)

        This is caused by the function waits for primary node which does not
        have pending data, while standbys have pending data.

          [pgpool-general: 672] Transaction never finishes
          http://www.pgpool.net/pipermail/pgpool-general/2012-June/000676.html

      - Fix wait_for_query_response() not to send param status to frontend if
        frontend is NULL. (Tatsuo Ishii)

        This could happen while processing reset_query_list and occur crash.

      - Fix bug with treatment of BEGIN TRANSACTION in master/slave mode.
        (Tatsuo Ishii)

        Original complain is [pgpool-general: 714].
        From 3.1, pgpool-II sends BEGIN.. to all DB nodes. Of course we cannot
        send BEGIN TRANSACTION READ WRITE to standby nodes.
        Problem is, we did not check BEGIN WORK ISOLATION LEVEL SERIALIZABLE;
        and sent to standby nodes. Of course this is wrong, since it's not
        allowed to run transactions in serializable mode on standby nodes.
        So added check for BEGIN WORK ISOLATION LEVEL SERIALIZABLE case.

          [pgpool-general: 714]
          Load Balancing / Streaming Replication / Isolation Level serializable
          http://www.pgpool.net/pipermail/pgpool-general/2012-July/000719.html

      - Fix send_to_where() to send the query to only primary if the it is like
        SET TRANSACTION ISOLATION LEVELSERIALIZABLE etc. (Tatsuo Ishii)

        Case in streaming replication mode. Previously, it was sent to not only
        primary but also to standby and of course this causes an error.
        Similar SQLs are:

         SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL
         SERIALIZABLE or SET transaction_isolation TO 'serializable'
         SET default_transaction_isolation TO 'serializable'

        Original complain is [pgpool-general: 715].

          [pgpool-general: 715]
          Re: Load Balancing / Streaming Replication / Isolation Level
          serializable
          http://www.pgpool.net/pipermail/pgpool-general/2012-July/000720.html


3.1.3 (hatsuiboshi) 2012/04/23

      * Version 3.1.3

      This is a bugfix release against pgpool-II 3.1.2.

      * Bug fixes

      - Add m4 files. This should prevent compiling problem on older
        OS's. (Tatsuo Ishii)

      - Fix to handle failover properly in detect_postmaster_down_error().
        (Tatsuo Ishii)

        It is possible that it fails to read backend socket after detecting
        backend errors and before actually detaching the backend. 

      - Fix bug that the process exits before unlocking semaphore by a
        signal interrupt. (Tatsuo Ishii)

      - Fix a memory leak in case of reset_query. (Tatsuo Ishii)

      - Fix pool_ssl_read() to deal with large data reading. (Tatsuo Ishii)

        Original complain is here:
        http://www.pgpool.net/pipermail/pgpool-general/2012-March/000299.html

      - Fix deadlock by enabling log_destination = syslog. (Tatsuo Ishii)

        Reported in bug tracker http://www.pgpool.net/mantisbt/view.php?id=9.
        Patch provided by Gilles Darold.

      - Allow to use multi statement in master/slave mode. (Tatsuo Ishii)

        From 3.1 transactional statements such as "BEGIN" are sent to not only
        primary but also standbys. This brings an unfortunate side effect: if
        the multi statement is "BEGIN;DELETE FROM table;END", this will be
        sent to standy as well and cause an error because standby does notallow
        write SQL. So fix is, if a query is a multi statement one, then send it
        to primary only.

      - Allow to have private cache of master node id. (Tatsuo Ishii)

        When master goes down running pgpool children look into NULL pointer
        because the process does not connect to the new master yet. The private
        cache returns the old master node id and will avoid the situation.

        Per bug reported in http://www.pgpool.net/mantisbt/view.php?id=51

      - Fix pool_start_query() so that it uses my_master_node_id instead of 
        REAL_MASTER_NODE_ID for initial virtual_master_node_id. (Tatsuo Ishii)

        Real master node could be changed while pgpool is running in streaming
        replication mode. Previously it is assigned REAL_MASTER_NODE_ID, which
        could have no connections after fail over and cause segafult.

      - Fix pool_setall_node_to_be_sent() to use private_backend_status instead
        of BACKEND_INFO macro. (Tatsuo Ishii)

        It is possible that while processing, the node returned by BACKEND_INFO
        is not usable any more.

      - Fix failover(). (Tatsuo Ishii) 

        Before it only restarts worker child only when pgpool child do not need
        restart. This is wrong. We need to restart worker child in any case. 
        Otherwise it continues to send replication time lag check request to down
        the node.

      - Fix debug log message so that it does not contain null characters.
        (Toshihiro Kitagawa)

      - Fix SimpleQuery() so that it restores parser memory context when:
          1) Builtin show commands are used
          2) Parallel query mode
          3) Query cache is used
        (Tatsuo Ishii)

      - Fix hangup when PREPARE statement causes error. (Toshihiro Kitagawa)

        This issue was reported by Tomonari Katsumata:
        Subject: [pgpool-general: 121] question of pgpool's behavior

      - Add doc/pgpool-fr.html to Makefile.am. (Tatsuo Ishii)

        This had been forgotten when the doc was added.

      - Fix  hangup during md5 authentication that occurs in daemon mode
        and log_destination is 'syslog'. (Yugo Nagata)

        Reported in bug tracker http://www.pgpool.net/mantisbt/view.php?id=2.

3.1.2 (hatsuiboshi) 2012/01/31

	  * Version 3.1.2

	  This is a bugfix release against pgpool-II 3.1.1.

	  * Bug fixes

      - Fix to recognize READ UNCOMMITTED and REPEATABLE READ of transaction
        isolation levels. (Tatsuo Ishii)

      - Fix infinite loop reported in this thread (Tatsuo Ishii):
        http://www.pgpool.net/pipermail/pgpool-general/2011-December/000099.html

        It was not considered the case that, when received buffer in primary was
        empty but the one in a standby was not, the standby spontaneously sent
        packet to pgpool.
        This could happen when, for example, reloading postgresql.conf.
        The fix is that such buffer in standby is discarded.

3.1.1 (hatsuiboshi) 2011/12/06

	  * Version 3.1.1

	  This is a bugfix release against pgpool-II 3.1.

	  * Bug fixes

	  - Fix add_regex_pattern(). It does not allocate enough memory
	   	for each black/white_function_list items. The function adds
	   	"^" and "$" to each function items which do not contain those
	   	characters. Unfortunately the function forgot to add extra 2
	   	bytes for those characters. This may lead to memory corruption
	   	errors when pgpool starting up.

	  - Fix error message of check_replication_time_lag(Tatsuo
	    Ishii). It emitted wrong error message when it failed to
	    connect to PostgreSQL while checking streaming replication
	    delay. Because it does not use health_check_user anymore.

      - Fix memory leak(Toshihiro Kitagawa). This is essentially same
      	as the fix made for 3.0.5(commit
      	19a4ea9215da0b61728741fc0da2271958b09238).

      - Major cleanup for strncpy(Tatsuo Ishii). There are several
      	places where strncpy() is used. Problem is some of them do not
      	consider the case when copy lengh == buffer size. In this case
      	copied buffer is not null terminated and may cause tons of
      	problems later.  To fix this, most of them are replaced by
      	strlcpy().

      - Update cached backend status whenever possible(Tatsuo Ishii).
      	This solves the problem of follow_master_command not being
      	able to lookup backend status correctly which was reported by
      	Jeff Frost: Subject: [Pgpool-general] diagnosing BackendError
      	from pcp_recovery_node To: pgpool-general@pgfoundry.org Date:
      	Wed, 05 Oct 2011 15:15:07 -0700

      - Fix buffer overrun problem when pcp password is longer than
        32(Tatsuo Ishii).

      - Remove PGDLLIMPORTI which is only neccessary for Windows
      	and cause a problem for non gcc. Patch contributed by Ibrar Ahmed.

3.1 (hatsuiboshi) 2011/09/08

	  * Version 3.1

	  This is the first version of pgpool-II 3.1 series.
	  That is, a "major version up" from 3.0 series.

	  * Incompatible changes

	  - Change the lock method of insert_lock. The previous insert_lock uses
		row locking against the sequence relation, but the current one uses
		row locking against pgpool_catalog.insert_lock table. The reason is
		that PostgreSQL core developers decided to disallow row locking
		against the sequence relation to avoid an internal error which it
		leads. So creating insert_lock table in all databases which are
		accessed via pgpool-II beforehand is required. If does not exist
		insert_lock table, pgpool-II locks the insert target table. This
		behavior is same as pgpool-II 2.2 and 2.3 series. If you want to use
		insert_lock which is compatible with older releases, you can specify
		lock method by configure options: --enable-sequence-lock,
		--enable-table-lock(Kitagawa)

	  - Deprecate backend_socket_dir. Instead, if backend_hostname starts
		with '/' it is regarded the as path to Unix domain. If backend_hostname
		is left empty, then default Unix domain path(/tmp) is used. This
		follows the convention of libpq interface. Patch contributed by
		Jehan-Guillaume (ioguix) de Rorthais.

	  - Now "pgpool_walrecrunning()" was not used. pgpool-II used to consider
		the node that is promoted a primary node using the function. Now,
		pgpool-II waits for completing of the promotion to primary node
		because it did not work as we intended. But we still have a problem
		that pgpool-II waits while recovery_timeout, when there is no primary
		node(Kitagawa)

	  - Add node_id to each PostgreSQL DB node info in the output of
		show pool_nodes(Jean-Paul Argudo)

	  - Change the handling of sequence functions(nextval, setval) so that
		they completely obey setting of black/white_function_list. They were
		always handled as write functions before(Kitagawa)

	  * New features

	  - Add syslog support. Patch contributed by Gilles Darold. Review and
		editing by Guillaume Lelarge.

	  - Adapt application_name introduced in PostgreSQL 9.0. When reusing
		connection, send application_name in the startup packet to backend
		and send parameter status to frontend(Tatsuo)

	  - Add relcache_expire directive to control the expiration of the
		internal system catalog cache. ALTER TABLE might make these
		cache values obsoleted and the new directive will make the risk
		lower(Tatsuo).

	  - Add follow_master_command directive. This directive specifies a
		command to run in master/slave streaming replication only after
		a master failover. Patch contributed by Gilles Darold.

	  - Add pcp_promote_node command. This command promotes a new master
		node to pgpool-II. This can use in master/slave streaming replication
		only. Patch contributed by Gilles Darold.

	  - Add pcp_pool_status command which produces similar output of show
		pool_status. Also C API for this command is added. Patch
		contributed by Jehan-Guillaume (ioguix) de Rorthais.

	  - Add new per backend directive "backend_flag". This controls per
		backend behavior. Currently "ALLOW_TO_FAILOVER" or
		"DISALLOW_TO_FAILOVER" are allowed(Tatsuo)

	  - Add health_check_password directive, but is not yet implemented
		(Nicolas Thauvin)

	  - Add sr_check_period, sr_check_user and sr_check_password directives.
		These are used for streaming replication delay checking and
		determining primary node(Tatsuo)

	  - Add --username(or -u) option to pg_md5 command. This allows to manage
		users which do not have UNIX accounts. Japanese document change by
		Tatsuo Ishii(Nicolas Thauvin)

	  - Add pgpool_adm functions to pgpool_adm/. These are user-defined
		functions written in C language which work like pcp commands
		(Jehan-Guillaume (ioguix) de Rorthais)

	  - Add Simplified Chinese version of documents(Huang Jian, Sun Peng)

	  - Add SQL files to uninstall functions to sql/(Nicolas Thauvin)

	  - In master/slave mode, SELECTs to unlogged table execute only on
		master/primary(Kitagawa)

	  * Bug fixes

	  - Fix bug which cannot use the cursors of JDBC driver on standby
		node. The transaction commands come to be sent to all nodes by
		this fix in master/slave mode(Kitagawa)

	  - Fix bug with the handling of empty queries. The empty queries
		come to be handled the same as SELECT queries. This fix allows
		load-balance after the empty query(Kitagawa)

	  - Fix insert_lock so that it works correctly even if the column
		definition such as "DEFAULT nextval(('"x_seq"'::text)::regclass)"
		(Kitagawa)

	  - Fix pcp_attach_node command so that it emits error message while
		doing failover(Kitagawa)

	  - Fix log message which is emitted when pgpool-II cannot parse the
		query in the extended query protocol so that it shows the query
		(Kitagawa)

	  - Fix description about backend_weight inpgpool-II manual. It can
		be changed by reloading pgpool.conf(Tatsuo)

	  - Fix and enhance wording in English tutorial document.
		Fix suggested by Huang Jian(Tatsuo)

	  - Fix bug which does not update the node status when reattaching the
		node in raw mode(Guillaume Lelarge)

	  - Fix incorrect calculation of the replication delay in streaming
		replication mode(Tatsuo)

	  - Replace wrong function name "notice_backend_error" with correct one
		"degenerate_backend_set" in the failover log message(Tatsuo)

	  - Remove unnecessary logging at the end of pgpool.conf parsing(Tatsuo)

	  - Fix possible crash of pgpool/worker child after attaching new backend.
		Fix suggested by Gurjeet Singh(Tatsuo)

	  - Fix bug that SELECTs which have subquery with FOR SHARE/UPDATE clause
		are sent to slave/standby(Tatsuo)

	  - Fix bug which rewriting timestamp of default value fails in PREPARE
		statements. This used to work but was broken in 3.0(Kitagawa)

	  - Fix fail to compile pcp commands on the environment without
		getopt_long()(Tatsuo)

	  - Fix crash of pgpool child when frontend connects if in raw mode,
		enable_hba is off and more than 2 backends(Kitagawa)

	  - Fix some memory leaks(Kitagawa)

	  * Enhancements

	  - Enhance online recovery in streaming replication mode.
		Now restarting pgpool-II children is avoided when recovery finished. So
		existing sessions can be continued while doing online recovery(Tatsuo)

	  - pcp_attach_node does not diconnect existing sessions in
        streaming replication mode. In other mode, pcp_attache_node
        still disconnects existing sessions(Tatsuo).

	  - Import PostgreSQL 9.0 parser. This allows to use CREATE INDEX with
		implicit index name, which is new in 9.0. Patch contributed by
		Akio Ishida.

	  - Allow to use regular expressions in black and white function list.
		Patch contributed by Gilles Darold. Patch reviewed by Guillaume Lelarge.

	  - Reorganize pgpool.conf sample files so that they are easier to read
		(Guillaume Lelarge)

	  - Add <a name="..."> tags into all parameters in the pgpool-II user
		manual(Haruka Takatsuka)

	  - Enhance online recovery documents in streaming replication(Tatsuo)

	  - Change the function to check the replication delay in streaming
		replication mode. Currently, pgpool uses
		pg_last_xlog_replay_location() instead of
		pg_last_xlog_receive_location(). Fix suggested by Anton Yuzhaninov
		(Tatsuo)

	  - Allow time stamp rewriting to work with arbitrary expression in
		default value of a column. Before we detected anything including
		now() then simply replaced it to now(). This will lead to wrong
		rewriting of default value. for example, timezone('utc'::text, now()).
		Note that, however, this only adopts to simple queries. Extended
		protocols(for example Java, PHP PDO) or SQL "PREPARE" still remain
		same(Tatsuo)

	  - Enhance the error message which is emitted when failed to check
		replication delay(Nicolas Thauvin)

	  - Change error message "do_md5: read_password_packet failed" into debug
		level(Kitagawa)

	  - Allow to compile pgpool-regclass() against PostgreSQL 9.1(Tatsuo)

	  - Update and sync pgpool-II manuals of English version and Japanese
		version(Tatsuo)

3.0.4 (umiyameboshi) 2011/06/01

	  * Version 3.0.4

	  This version fixes various bugs since 3.0.3.

	  * Incompatible changes

	  - In streaming replication, if delay_threshold is 0 or health
		checking is disabled, the delay checking is not performed. 
		This is the behaviour according to a description of the
		pgpool-II manual. But, so far the delay checking was performed
		even if health checking was disabled(Guillaume Lelarge)

	  * Bug fixes

	  - Fix pgpool-regclass() to be compiled in PostgreSQL 8.0 or later.
		7.4 still produces errors(Tatsuo)

	  - Fix possible hangup when using /*NO LOAD BALANCE*/ comment in
		streaming replication(Kitagawa)

	  - Fix hangup when received Flush(H) message or CloseComplete(C)
		message(Kitagawa)

	  - Fix possible hangup that happen for the receiving timing of
		ReadyForQuery(Z) message after pgpool-II connects to backends(Kitagawa)

	  - Add description about parameters for recovery_1st_stage_command
		and recovery_2nd_stage_command(Tatsuo)

	  - Increase size of the internal system catalog cache from 32 to 128.
		This has the effect of reducing "unnamed prepared statement does
		not exist" error(Tatsuo, Kitagawa)

	  - Fix bug with pcp_connect() which causes double free. Patch
		contributed by Jehan-Guillaume (ioguix) de Rorthais(Tatsuo)

	  - Fix bug with start_recoery() which is apparently wrong usage of
		PQfinish()(Tatsuo)

	  - Fix incorrect error message which is sent to the frontend when
		client idle time reached client_idle_limit(Tatsuo)

	  - Fix "backend status" variable name correctly in pool_status.
		Replace the space with a '_'(Guillaume Lelarge)

	  - Fix hangup when using md5 authentication method and running as
		daemon. Patch contributed by Nicolas Thauvin(Tatsuo)

	  - Fix log_per_node_statement so that it prints statements in the
		extended query protocol. This used to work but was broken in 3.0
		(Kitagawa)

	  * Enhancements

	  - Add currval() and lastval() to black_function_list of sample
		configuration files. If they are load balanced, currval() or
		lastval() may be called before the result of nextval() or setval()
		is propagated to slaves(Tatsuo)

3.0.3 (umiyameboshi) 2011/02/23

	  * Version 3.0.3

	  This version fixes various bugs since 3.0.1. Please note that
	  3.0.2 was canceled due to a packaging problem.

	  * Incompatible changes

	  - Now installing C function "pgpool_walrecrunning()" is recommended
		if you plan to use streaming replication mode.
		This is necessary for better use of online recovery in the mode.
		Also new variable "%P" can be used in the online recovery script.
		If you do not install the function, these functionalities cannot be used(Tatsuo).

	  - In raw mode if there's only one DB node and if a problem arises
		with the DB node, it will be brought to down status. However if
		the DB node goes into good condition again, you can use the DB
		node without restarting pgpool. This change has been included in
		3.0, but did not work(Tatsuo, Kitagawa)

	  * Bug fixes

	  - Fix non portable code in password authentication.
		Bug report from a FreeBSD user(Tatsuo)

	  - Fix bug that insert_lock locks all rows in user table
		(Tatsuo, Kitagawa)

	  - Fix bug with password authentication. If user name is 32 bytes
		long, pgpool child segfaults.(Tatsuo)

	  - Fix bug with md5 authentication. If raw mode or number of
		backend is 1, pgpool child segfaults. Patch contributed by
		Rob Shepherd(Tatsuo)

	  - Fix long standing bug with timestamp rewriting against array
		and complex types. Patch contributed by Akio Ishida(Tatsuo)

	  - Fix bug that debug_level directive doesn't work. Patch
		contributed by Gilles Darold(Tatsuo)

	  - Fix possible crash of pgpool child while doing failover(Kitagawa)

	  - Fix white/black_function_list so that it works correctly when user
		calls function with schema name(Tatsuo)

	  - Fix bug that DROP DATABASE fails by connection cache(Kitagawa)

	  - Fix bug that failover fails in raw mode(Kitagawa)

	  - Fix possible termination of pgpool child when both simple query
		protocol and extended query protocol are used in one session
		(Kitagawa)

	  - Fix possible hang up when an error occurs while using extended
		query protocol(Kitagawa)

	  - Fix pgpool-regclass() so that it doesn't use PG_TRY/CATCH.
		It appeared that using PG_TRY/CATCH is not safe, sometimes backend
		dies with PANIC:  ERRORDATA_STACK_SIZE exceeded.(Tatsuo)

	  - Fix bug that select query isn't sent to master node when it meets
		the following conditions(Kitagawa)
		- in MASTER/SLAVE mode
		- use extended query protocol
		- started transaction explicitly
		- after write queries

	  - Fix bug with load_balance that JDBC driver sends BEGIN to master node
		many times(Kitagawa)

	  - Fix pool_status so that failback_command and fail_over_on_backend_error
		show correct values(Kitagawa)

	  - Remove parameters from pool_status: recovery_password,
		system_db_password(Kitagawa)

	  - Fix online recovery problem in the streaming replication
		mode(Tatsuo). Consider following scenario. Suppose node 0 is
		the initial primary server and 1 is the initial standby
		server.

		1) Node 0 going down and node 1 promotes to new primary.
		2) Recover node 0 as new standby.
		3) pgpool-II assumes that node 0 is the new primary.

		This problem happens because pgpool-II regarded unconditionally
		the youngest node to be the primary. pgpool-II 3.0.3 now checks
		each node by using pgpool_walrecrunning() to see if it is a
		actually primary or not and is able to avoid the problem and
		regards node as standby correctly. Also you can use new
		variable "%P" to be used in the recovery script.  If you do
		not install the function, the above problem is not resolved.

	  - Fix backend complaining "unexpected EOF on client connection"
        while doing failover in streaming replication mode(Tatsuo)

	  - Fix pgpool crashes when all backends go down(Tatsuo)

	  - Fix replication delay checking so that it does not keep persistent
		connection to backends. Because the persistent connection may
		become bogus if a node down and then wake up between replication
		delay checking period(Tatsuo)

	  - Rewrite and review english document(Marc Cousin, Gleu)

	  * Enhancements

	  - Emit log if particular backend is down status while reading
		the status file(Tatsuo)

	  - Emit error message if an error occurred by the query that
		pgpool executed(Tatsuo)

	  - Add sql directories main Makefile(Tatsuo)

3.0.1 (umiyameboshi) 2010/10/19

	  * Version 3.0.1

	  This version fixes various bug in 3.0.

	  * Bug fixes

	  - Fix bug with md5 auth. If there's more than 1 servers to be
		authenticated, it segfaults(Tatsuo)

	  - Fix bug that a child process crashes when clients execute a query
		contains syntax error in extended query protocol(Kitagawa)

	  - Fix bug with handling of portal information, it terminates
		a child process(Kitagawa)

	  - Fix hungup when a query sent to one node caused an error
		in extended query protocol(Kitagawa)

	  - Fix typo in English doc. Patch contributed by Asaf Ohaion(Tatsuo)

3.0 (umiyameboshi) 2010/09/10

	  * Version 3.0

	  This is the first version of pgpool-II 3.0 series.
	  That is, a "major version up" from 2.2 or 2.3 series.

	  The biggest news is, this version adapts to PostgreSQL 9.0's new
	  feature: Streaming Replication/Hot Standby. Streaming
	  replication can be used as a sub mode of master slave
	  mode. Master slave mode itself heavily enhanced:

	  - SELECTs in explicit transactions can be load balanced

	  - In extended protocol, PARSE/BIND/DESCRIBE messages are sent to
        the node which execute EXECUTE message, not all node. This
        will reduce lock contentions.

	  - Auto start of transaction happens only when it needed.

	  - Temporary tables can be used safely.

	  - SELECT which calls functions possibly write to database
        executes on master(primary)
	  
	  Also many new features are added and major refactoring has been
	  made to the internal structure of pgpoo-II. For example, in
	  replication mode, SELECTs calling functions possibly write to
	  database will not allow to load balance.

	  * New features

	  - Online recovery can be used with master/slave/streaming
        replication mode(Tatsuo)

	  - New directive "delay_threshold" is added to monitor
        replication delay in master/slave/streaming replication
        mode. If replication delay is too much, SELECTs are not load
        balanced(Tatsuo)

	  - show pool_status shows replication delay in
        master/slave/streaming replication mode(Tatsuo)

	  - New directive "log_standby_delay" is added to control logging of
        replication delay in master/slave/streaming replication
        mode(Tatsuo)

	  - When insert_lock is enabled and the table includes SERIAL data
        type, issue row lock on the sequence table. Before we issues
        table lock. Problem is, the table lock conflicts with auto
        vacuum and sometimes caused excessive lock waiting(Tatsuo)

	  - Add support for more "SHOW" commands: pool_nodes,
		pool_processes, pool_pools, and pool_version(Guillaume Lelarge)

	  - Backend process id and whether frontend connects to this
        connection pool or not are added to pcp_proc_info's
        output(Tatsuo)

	  - "Gracefuly detach" option is added to pcp_detatch_node. With
        this option, pcp_detatch_node waits until all frontends
        disconnected(Tatsuo)

      - New directive "white_function_list" and "black_function_list"
        are added to register functions those do not or do write to
        database(Tatsuo)

      - In master/slave mode, SELECTs to system catalogs executes only
        on master/primary(Tatsuo)

      - In master/slave mode, SELECTs to temporary table executes only
        on master/primary(Tatsuo)

	  - In master/slave mode, write queries outside of explicit
        transactions no longer trigger to start internal
        transaction(Tatsuo)

	  - In master/slave mode, SELECTs inside explicit transactions are
        load balanced(Tatsuo, Kitagawa)

	  - In master/slave mode, commands are no longer sent to all DB
        nodes. This will prevent unnecessary locking(Tatsuo, Kitagawa)

	  - New command option adds to ignore the status file when
        starting up(Tatsuo)

	  - Supports PostgreSQL 9.0's new VACUUM syntax(Tatsuo)

	  - New directive "failover_if_affected_tuples_mismatch" controls
        the behavior when number of result rows of
        INSERT/UPDATE/DELETE are differ(Tatsuo)

	  - When number of result rows of INSERT/UPDATE/DELETE are
        differ, each number are logged(Tatsuo)

	  - md5 authentication is supported in replication mode and
        master/slave mode(Tatsuo)

	  - Allow to force to move to online recovery second stage even
        there are connecting frontends(Tatsuo)

	  - If there's only one DB node and it triggers failover,
        pgpool-II will automatically connects if the DB node coming
        up(Tatsuo)

	  - Pcp commands supports long options(Guillaume Lelarge)

	  - New directive "debug_level" added to control the debug message
        logging(Tatsuo)

	  - Allow to use various boolean representations as PostgreSQL in
        pgpool.conf(Kitagawa)

	  - New C language function pgpool_switch_xlog for online recovery
	    added(Kitagawa)

	  - New C language function pgpool_regclass added to avoid a trouble
	    about handling of duplicate table names in different schema(Tatsuo)

	  * Bug fixes

	  - Do not rewrite statement which accesses columns having now()
		etc. as the default value but the data type are not timestamp
		etc.  Otherwise we have an error in DMLs(Tatsuo)

	  - Fix timestamp rewriting not to omit schema qualification(Tatsuo)

	  - Fix bug with timeout handling in pcp commands(Tatsuo)

	  - Fix SSL hang when large amount of data transfered(Tatsuo)

	  - Fix failover when there's only one DB node(Tatsuo)

	  - Fix bug with postmaster start check in online recovery.
		Before it continued infinitely to try to connect to postmaster
		if the first attempt failed(Tatsuo)

2.3.3 (tomiteboshi) 2010/04/23

	  * Version 2.3.3

	  This version fixes various bugs since 2.3.2.2.

	  * Incompatible changes

	  - Please note that this version of pgpool consumes more shared
		memory than before. If you encounter problems when starting up
		pgpool, please look into pgpool log. If you find messages
		something like "could not create shared memory segment: Cannot
		allocate memory", please increase the shared memory on your
		system.

	  - Now parallel mode requires replication mode turned
        on. parallel mode without replication mode turned on has been
        broken since pgpool-II was born anyway(Kitagawa)

	  - Change default value for insert_lock to false since there's no
		point in turning this on in master/slave mode. Fix suggested by
		Fujii Masao(Tatsuo)

	  * Newly added documents

	  - README.online-recovery, which is an internal document of
        online recovery, added(Tatsuo)

	  * Bug fixes

	  - Fix long standing bug since pgpool-II 1.0 which causes
		segfault of pgpool child process.  This was caused by
		miscalculation of shmem size in pgpool parent. Bug analysis by
		Kitagawa patch created by Tatsuo

	  - Add restriction for parallel mode(Kitagawa)
		- The Natural Join is not supported
		- The USING CLAUSE is converted to ON CLAUSE by query rewrite
		  process

	  - Fix possible crash during rewriting JOIN syntax that have
        USING in parallel query mode(Kitagawa)

		This fix is supporting such as following JOIN syntax.

		 example:
		 - SELECT * FROM a JOIN b USING (aid) JOIN c USING (cid);
		 - SELECT * FROM a JOIN b USING (aid) JOIN c USING (cid) JOIN d USING (did)

	  - Fix parallel query so that it can parse INSERT statements that
		have current_time before a partitioning key column(Kitagawa)

	  - Fix SimpleForwardToBackend() so that pgpool doesn't keep
		waiting for reply from a backend, when clients using the
		extended query protocol cause a command error such as bind
		error. This bug occur in master/slave, raw, and connection
		pool mode.  This fix is, sending SYNC message to recover error
		after command error(Kiatagawa)

	  - Fix SIGINT/SIGQUIT is ignored if pgpool child is in
		select(). In this case pgpool retries select() thus the signal
		is ignored(Tatsuo)

	  - Fix connect_inet_domain_socket_by_port/
		connect_unix_domain_socket_by_port so that they check if
		SIGTERM/SIGINT/SIGQUIT signal has been delivered.  Per bug
		report from Daniel Codina(Tatsuo)

	  - Fix possible crash during creating "kind mismatch" error
		message. This used to work but was broken in 2.3.2(Tatsuo)

	  - Fix bug with healh checking. If a network problem such as
		unplugged wire happens while calling connect(), health
		checking does not work since
		connect_unix_domain_socket()/connect_inet_domain_socket() do
		retry if connect() is interrupted by ALARM signal. Added new
		retry argument which controls the retrying behavior to those
		functions.  Per bug report and problem analysis by Daniel
		Codina(Tatsuo)

	  - Fix enbug in 2.3.2.2 with time stamp rewriting in
		SimpleForwardToBackend. Per bug report from Bugtrack #1010771.
		Report from Peter Pramberge(Tatsuo)

	  - Fix rewriting "*" in paralell query.  Patch conributed by
        sho-san(Kitagawa)

	  - Fix connect_inet_domain_socket_by_port() so that it print out
		error message by using hstrerror(), rather than
		strerror()(Tatsuo)

2.3.2.2 (tomiteboshi) 2010/02/22

	  * Version 2.3.2.2

	  This version fixes various bug in 2.3.x.

	  - When rewriting timestamp in extended query, it allocated less
        than what it actually needed. This causes random problematic
        behavior, typically "message: invalid string in message" error
        in backend(Tatsuo).

	  - In extended query, if one of parameters contains NULL, ppool
        crashes(Tatsuo).

	  - If in previous status file all nodes were marked down status,
		it is regarded that this file is bogus. This will prevent "all
		node down" syndrome(Tatsuo).

2.3.2.1 (tomiteboshi) 2010/02/11

	  * Version 2.3.2.1

	  This version fixes bug in 2.3.x. It is identfied that
	  pgpool-II 2.3.x has a problem with erroneous query
	  processing(Akio Ishida).

2.3.2 (tomiteboshi) 2010/02/07

	  * Version 2.3.2

	  This version includes various fixes for bugs in 2.3.1 or before.
	  All 2.3.x users are encouraged to upgrade to 2.3.2 as soon as
	  possible.

	  Also this version enables long awaited SSL support and large
	  object replication support.

	  * Enhancements

	  - SSL support(Sean Finney)

	  - Large object replication support. You need PostgreSQL 8.1 or
        later, however(Tatsuo)

	  - Emit statement log when error or notice message comes from
		query parsing process. This is usefull because PostgreSQL does
		not log particular statement if the error was detected
		*before* raw parser get executed.  This typlically happens
		when encoding error was found(Tatsuo)

	  - Display original query to log if kind mismatch error was
        caused by DEALLOCATE(Tatsuo)

	  - While health checking and recovery use postgres database if
		possible.  If postgres database does not exist, use template1
		as it stands now.  While connecting template1, certain
		commands, for example DROP DATABASE cannot used. Using postgres
		database allows to use these commands while recovery(Tatsuo)

	  * Bug fixes

	  - Fix errors in timestamp rewriting which occasionaly cause
		broken packet sentto slave nodes(Tatsuo)

	  - Fix errors when timestamp rewriting is used with V2
        protocol(Toshihiro Kitagawa)

	  - Propagate Bind, Describe and Close messages to only master
        node if running in master/slave and in transaction (Tatsuo)

	  - Fix do_child() so that check_stop_request() exits immediately
		when smart shutdown signal has been sent.  This has been used
		to work in 2.2(Toshihiro Kitagawa)

	  - Fix ProcessFrontendResponse not to accept invalid frotend
        packet(Xavier Noguer)

	  - Use %dz for sizeof in fprintf for more portability(Tatsuo)

	  - Fix compiler warnings(Tatsuo)

	  - Do not force replication of DEALLOCATE if operated in
		master/slave mode. Now that pgpool do not execute PARSE in all
		nodes, this was pointless and caused problem (kind mismatch
		when executing DEALLOCATE)(Tatuso)

2.3.1 (tomiteboshi) 2009/12/18

	  * Version 2.3.1

	  This version includes various fixes for bugs in 2.3 or before.
	  All 2.3 users are encouraged to upgrade to 2.3.1 as soon as
	  possible.

	  * Bug fixes

	  - If all of following conditions met, incorrect data is written
        to DB(Tatsuo)

		- pgpool is running in replication mode
		- pgpool is running on 64bit OS
		- INSERT or UPDATE are used which explicitly include now(),
		- CURRENT_TIMESTAMP, CURRENT_DATE, CURRENT_TIME. Or the target
		- Table's default value use above functions
	    - The SQL statement inclludes out of 32bit
		  integer value(-2147483648 to 2147483647 in decimal)

		Example SQL: INSERT INTO t1(id, regdate) VALUES(98887776655,
		NOW());

	  - Fix crush in case of more than 18 DB nodes are used(Tatsuo)

	  - Enhance kind mismatch error message. If kind is ERROR or
        NOTICE, the error or notice message from PostgreSQL will be printed(Tatsuo)

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

	  This version enhances SERIAL data type handling and on line
	  recovery. Also an important bug, serializable transactions could
	  cause data inconsistency among DB nodes, is fixed. Query
	  cancelation, which never worked since pgpool-II was born, is
	  finally fixed.

	  * New features/enhancements

		- With insert_lock, now a table is locked only if it has
          SERIAL data type and now the default value for insert_lock
          is true(Tatsuo)

		- Start internal transaction other than INSERT, UPDATE, DELETE
          and SELECT to keep node consistency(Tatsuo)

		- Add client_idle_limit_in_recovery directive. This will
		  prevent 2nd stage of on line recovery from not going forward
		  by idle clients sitting forever(Tatsuo)

		- Add pid_file_name directive which specifies a path to the
		  file containing pgpool process id. "logdir" is no more used(Tatsuo)

		- Allow to load balance DECLARE, FETCH and CLOSE(Tatsuo)

		- Add -d option to pcp commands(Jun Kuriyama)

		- Enahnce kind mismatch error message to include originarl
          query string(Tatsuo)

	  * Bug fixes

	    - Close all file descriptors when running in daemon mode.
	      Otherwise we inherit sockets from apache when it's
	      started by pgpoolAdmin. This results in that port 80 is
	      occupied for example.  Patch provided by Akio
	      Ishida. Also add chdir("/"). This is always good for
	      daemon programs(Tatsuo)

	    - Allow MD5 authentication in raw mode as stated in docs(Tatsuo)

	    - Check transaction serialization failure error in
	      serializable mode and abort all nodes if so. Otherwise
	      we allow data inconsistency among DB nodes(Tatsuo).

	      See following scenario: (M:master, S:slave)

		  	M:S1:BEGIN;
			M:S2:BEGIN;
			S:S1:BEGIN;
			S:S2:BEGIN;
			M:S1:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
			M:S2:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
			S:S1:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
			S:S2:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
			M:S1:UPDATE t1 SET i = i + 1;
			S:S1:UPDATE t1 SET i = i + 1;
			M:S2:UPDATE t1 SET i = i + 1; <-- blocked
			S:S1:COMMIT;
			M:S1:COMMIT;
			M:S2:ERROR:  could not serialize access due to concurrent update
			S:S2:UPDATE t1 SET i = i + 1; <-- success in UPDATE and data becomes inconsistent!

		- avoid kind mismatch error caused by "SET TRANSACTION
		  ISOLATION LEVEL must be called before any query"(Tatsuo).

		   This could happen in following scenario:

	        M:S1:BEGIN;
            S:S1:BEGIN;
			M:S1:SELECT 1; <-- only sent to MASTER
			M:S1:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
			S:S1:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
			M: <-- error
			S: <-- ok since no previous SELECT is sent. kind mismatch error occurs!

		- Process status display has extra space on FreeeBSD(Jun Kuriyama)

		- Fix incorrect kind mismatch detection case. e.g: BEGIN;
		  BEGIN; (Tatsuo)

	    - If PostgreSQL sends lots of DEBUG message, sometimes pgpool
	      complains:
		  2008-11-08 22:41:53 ERROR: pid 23744: do_command: backend does not
		  return ReadyForQuery. This due to a wrong assumption for the
		  client/server protocol(Tatsuo)

		- Fix the case when sending an erronous query to abort
          transaction. It assumed that after sending an error query,
          always ReadyForQuery came right after that. If some
          debugging or logging verboseness is set, PostgreSQL might
          sends NOTICE before ReadyForQuery(Tatsuo)

		- Query cancelation now works. It never worked since pgpool-II
          was born(Tatsuo)

		- Fix online recovery to wait for failback done before
          allowing to accept connections from clients. It was supposed
          to work like this but actually was not since the day 0 when
          online recovery was born. Without the fix there could be
          potential data inconsistency among DB nodes(Tatsuo)

		- Fix pgpool-II crash after on line recovery. This happens
          after the failback process adds a recovered node which has
          no connection to the node(Tatsuo)

		- Fix pgpool-II errors when postgresql.conf is reloaded. This
          was caused by parameter status packet sent asynchronously
          from backend, which indicates the internal setting of
          backend has been changed(Tatsuo)

	  * Incompatible changes

		- Always fail over and restart all children. Before we do
		  restart only if master has not been changed. This is
		  wrong. If we have trouble with network cable or something,
		  TCP/IP stack keeps on retrying for long time and the only
		  way to prevent it is restarting process(Tatsuo)

		- "logdir" is no more used. Instead use
          "pid_file_name"(Tatsuo)

		- Default value for insert_lock is now true(Tatsuo)

2.1 (inamiboshi) 2008/7/25
      * Version 2.1

      * New feature
        - Add '%m' format to failover_command and failback_command to
          obtain new master node ID. (Yoshiyuki)
        - Add '%m' format to failover_command and failback_command to
          obtain old master node ID. (Yoshiyuki)
        - Add new directive "recovery_timeout" to specify recovery
          timeout in second. (Taiki)
        - Add optino '-v' to print pgpool version. (Yoshiyuki)

      * Incompatibility
        - Restrict pgpool_recovery() and pgpool_remote_start()
          functions to superusers. (Yoshiyuki)
        - Do not create a connection pool to standby node in raw
          mode. (Yoshiyuki)
        - Remove "replication_timeout" parameter. (Yoshiyuki)
          - This enabled if replication_strict was false. However,
            replication_strict was already removed.
        - Ignore timeout argument of pcp commands. (Taiki)
        - Do not replicate "COPY TO STDOUT" when replicate_select is
          false. (Yoshiyuki)

      * Bug fix
      ** General
        - Fix crash when CloseComplete message was
          received. (Yoshiyuki)
        - Improve network I/O routine. (Yoshiyuki)
        - Fix compile errors on Solaris 10. (Yoshiyuki)
        - Improve log messages of health check and recovery. (Tatsuo)
        - Change error level of the "failed to read kind from
          frontend" message from ERROR to LOG. (Yoshiyuki)
        - Fix failover failure in raw mode. (Taiki)
        - Fix zombie process bug. (Yoshiyuki)
        - Fix health_check_timeout to work correctly. (Kenichi Sawada)
        - Support ps status on FreeBSD. (ISHIDA Akio)
        - Improve bind(2) failure report. (Jun Kuriyama)
        - Improve error message when client authentication
          failed. (Tatsuo)

      ** Replication
        - Fix replicate_select to work correctly. (Tatsuo)
        - Fix a wrong rollback bug with extended query. (Yoshiyuki)
        - Fix a bug with asynchronous query. (Yoshiyuki)
        - Fix hint clause handling like /*REPLICATION*/ with extended
          query. (Yoshiyuki)
        - Fix crash of "DEALLOCATE ALL". (Yoshiyuki)
        - Fix hang up when a backend node does immediate
          shutdown. (Yoshiyuki)
        - Fix hang up online recovery in high load. (Yoshiyuki)
        - Fix hang up with extended query protocol when SELECT is
          failed inside a transaction block. (Yoshiyuki)

      ** Master Slave
        - Fix load balancing to work correctly. (Yoshiyuki)
        - Fix crash if SET, PREPARE or DEALLOCATE is executed inside a
          transaction block. (Yoshiyuki)

      ** Parallel query
        - Fix INSERT failure. (Yoshiharu)
        - Fix syntax error when a query contains "AS" in FROM
          clause. (sho)
        - Fix Hung up when two or more statment was executed 
          in parallel mode (Yoshiharu)
        - Fix Query rewriting of Join Expression and DISTINCT ON
          (Yoshiharu)

2.0.1 (hikitsuboshi) 2007/11/21
      * Version 2.0.1
      * Fix process down with UPDATE or DELETE query.(Yoshiyuki)
      * Send a syntax query only to a master node if master_slave is
        true.(Yoshiyuki)

2.0 (hikitsuboshi) 2007/11/16
      * Version 2.0

      * Incompatibility since pgpool-II 1.x
        - the default value for ignore_leading_white_space is now
          true(Yoshiyuki) 
        - replicate_strict is removed. The value is always
          true(Yoshiyuki)

      * General
        - Allow to reload pgpool.conf(Yoshiyuki)
        - The paraser is now compatible with PostgreSQL 8.3(Yoshiyuki)
        - Add new directive "failover_command" to specify command when
          a node is detached(Yoshiyuki)
        - Add new directive "client_idle_limit" to specify the time out since
          the last command is arrived from a client(Tatsuo)
  
      * Replication
        - Always start a new transaction even if the query is not in
          an explicit transaction to enhance the reliabilty of
          replication(Yoshiyuki)
        - Enhance the performance of replication for write
          queries. Now the worst case is 1/2 compared with single DB
          node regardless the number of DB nodes. Previous release
          tends to degrade according to the numer of DB
          nodes(Yoshiyuki)
        - Add "online recovery" which allows to add a DB node and sync
          with other DB nodes without stopping the pgpool
          server(Yoshiyuki)
        - Abort a transaction if INSERT, UPDATE and DELETE reports
          different number of result rows(Yoshiyuki)

          x=# update t set a = a + 1;
          ERROR:  pgpool detected difference of the number of update tuples
          HINT:  check data consistency between master and other db node

        - If the results from DB nodes do not match, select the
          possible correct result by "decide by majority". Previous
          release always trust the result of the master DB
          node(Yoshiyuki)
        - Allow load balance in V2 frontend/backend protocol(Yoshiyuki)

      * Parallel query
        - Allow "partial replication" to enhance the performance of
          the parallel query(Yoshiharu)

1.3 (sohiboshi) 2007/10/23
      * Version 1.3
      * Add new "authentication_timeout" directive, being the default
        value is 60. (Yoshiyuki)
        - Maximum time in seconds to complete client authentication.
      * Reject a connection when startup packet length is greater than
        10,000 byte. (Yoshiyuki)
      * Fix invalid memory access when pgpool processed DEALLOCATE
        statement. (Yoshiyuki)
      * Fix hang up in load balance mode. (Yoshiyuki)
        - This was introduced in V1.2.
      * Fix segmentation fault in 64-bit environment when query cache
        is enable. (Yoshiyuki)

1.2.1 (tomoboshi) 2007/09/28
      * Version 1.2.1
      * Fix deadlock while processing Parse message. (Yoshiyuki)
      * Fix memory leak in reset_prepared_list(). (Yoshiyuki)
      * Fix compile error on FreeBSD 4.11. (Yoshiyuki)
      * SET, PREPARE and DEALLOCATE statements are replicated in
        master/slave mode. (Yoshiyuki)

1.2 (tomoboshi) 2007/08/01
      * Version 1.2
      * Add new "replicate_select" directive, being the default value
        is false. (Yoshiyuki) 
        - If it is true, SELECT query is replicated. This behavior is
          same as V3.2 or earlier.
      * Improve signal handling. (Yoshiyuki)
        - Occasionaly, zombie processes were remained. Or processes
          were unstable.
      * Fix hang up when SELECT was error inside a transaction
        block. The bug was introduced in V3.3. (Yoshiyuki)
      * Fix PREPARE/EXECUTE handling in master slave mode. (Yoshiyuki)
      * Fix "kind mismatch error" when deadlock error 
      * Fix hang up and SEGV in extended query protocol when a warning
        SQL like "SELECT '\'';" executed. (Yoshiyuki)
      * Fix hang up when postmaster did fast or immediate
        shutdown. (Yoshiyuki)
      * Fix memory leak when connection cache was full. (Yoshiyuki)
      * Load balancing node is selected when a session
        starts. (Yoshiyuki)
      * Fix buffer overrun if connection_life_time was
        set. (Yoshiyuki)

1.1.1 (amiboshi) 2007/6/15
      * Version 1.1.1
      * Fix "kind mismatch" bug when load_balance_mode is true
        introduced in 1.1 (Yoshiyuki)
      * Fix deadlock with extended query protocol(Yoshiyuki)
      * Fix numerous bugs with protocol V2(Yoshiyuki)

1.1 (amiboshi) 2007/5/25
      * Version 1.1
      * Support HBA authentication(Taiki)
      * Support log_connections(Taiki)
      * Support log_hostname(Taiki)
      * Show pgpool status in ps command(Taiki)
      * Fix compile error on MacOS X(Yoshiyuki)
      * Allow load balancing with extended protocol(Yoshiyuki)
      * Improve replication. SELECT nextval() and SELECT setval() are
        now replicated. (Yoshiyuki)
      * Change SELECT query is only sent to the master node. (Yoshiyuki)
        - Use /*REPLICATION*/ comment to repliate a SELECT query.
      * Fix unexpected failover error due to receiving an interrupt
        signal while connecting to the backend. (Yoshiyuki)
      * Add "pgpool.pam" file, for PAM configuration file, to be
        installed under "$PREFIX/share/pgpool-II/". (Taiki)
      * Fix core dump when executing large SQL. (Yoshiyuki)

1.0.2 (suboshi) 2007/02/12
      * Version 1.0.2
      * Fix bug when executing large SQL to prevent pgpool goes into
        infinite loop(Yoshiyuki)
      * Fix bug with extended protocol handling(Yoshiyuki)
      * Enhance log for failover and failback(Tatsuo)
      * Add backend status info to show pool_status(Tatsuo)
      * Fix UPDATE/DELETE returns wrong number of rows(Tatsuo)
      * Fix configure fails to link libpq when used with older
        version of gcc(Yoshiyuki)
      * Fix DEALLOCATE treatment when used with PHP:PDO DBD-Pg(Yoshiyuki)
      * Do not load balance SELECT FOR UPDATE, SELECT INTO and SELECT
        with comments. This behavior is compatible with
        pgpool-I(Yoshiyuki)
      * Obtain path to libpq using pg_config. --with-pgsql will be
        removed in next version(Yoshiyuki) 
      * When reusing connection pool, reconnect to backend if the
        socket is broken(Yoshiyuki)
      * Fix error with configure when used with PostgreSQL
        7.4(Yoshiyuki)

1.0.1 (suboshi) 2006/09/22
      * Version 1.0.1
      * This version fixes bugs including master/slave not being
        working, deadlock problem in COPY FROM STDIN. Also documents
        are improved.

1.0.0 (suboshi) 2006/09/08
      * Initial release

Local Variables:
mode: outline
End:
