Release 3.5.10

Release Date: 2017-09-05

A.109.1. Bug fixes

  • Fix Pgpool-II hanging when error occurs in streaming replication mode and extended query. (Tatsuo Ishii)

    If backend returns ERROR, Pgpool-II reads message from frontend until a sync message is sent. Previous code assumed next message is sync . However it is possible that more message coming before the sync message, it's a low probability though. Fix it to continue reading messages until the sync message is read.

  • Fix wd_authkey bug in that a request to add new node to the cluster is rejected by master. (Yugo Nagata)

    This is a bug due to the implementation of 3.5.6 and 3.6.3.

    This changed the definition of tv_sec that is used to check wd_authkey so that this was affected by the clock of OS. So, if there is a lag between two nodes' clocks, the wd_authkey check fails.

  • Test: Fix load balance test driver. (Tatsuo Ishii)

    Some tests only for native replication mode was executed in streaming replication mode as well.

  • Fix not working slony mode in extended query. (Tatsuo Ishii)

    When response returned from backend, in progress flag was not reset in slony mode, which cause waiting for next message from backend in vain.

  • Fix ancient bug of stream write modules. (Tatsuo Ishii)

    Fix bug with pool_write_noerror() when requested length exceeds remaining write buffer size. This could lead to a buffer overrun problem.

    When write buffer is full, pool_flush_it() is called, which could write data to socket in the middle of message. To fix the problem directly write requested data if the write buffer is going to be full.

    Enhance performance of pool_unread() .

  • Test: Some miscellanies small fixes in regression test scripts. (Muhammad Usama)

  • Doc: Fix documentation about load-balancing. (Yugo Nagata)

  • Fix core dump and mishandling of temp tables. (Tatsuo Ishii)

  • Fix ancient bug of pool_unread() . (Tatsuo Ishii)

    When realloc() is called in pool_unread() , it did not update the buffer size. This could cause variety of memory corruption and unexpected data reading from backend. The reason why we did not found that is, probably recently Pgpool-II starts extensively to use pool_unread() .

  • Fix handling of empty queries. ( bug 328 ) (Tatsuo Ishii)

    When empty query (empty string or all comment query) is sent, command complete message was returned to frontend. This is not correct. An empty query response should be returned to frontend.

  • Fix query cache bug with streaming replication mode and extended query case. (Tatsuo Ishii)

  • Fix memory leak with streaming replication mode/extended query case. ( bug 324 ) (Tatsuo Ishii)

  • Test: Fix Java program in 005.regression test. (Tatsuo Ishii)

  • Fix for when failover is triggered by worker process, it is possible that wrong DB node could failover. ( bug 303 ) (Tatsuo Ishii)

    This is due to the db_node_id member in the POLL_CONNECTION structure is not initialized in the process (in child process the member is properly initialized). To solve the problem, add new function pool_set_db_node_id() to set the structure member variable and call it inside make_persistent_db_connection() .

  • Fix starting unnecessary transaction when SET command is issued. (Tatsuo Ishii)

  • Fix for [pgpool-general: 5621] Failover() function should be executed with health check alarm disabled. (Muhammad Usama)

  • Fix Pgpool-II hung up bug or other errors in error case in extended query in replication mode. (Tatsuo Ishii)

    And other fixes in this commit.

    1) Do not send intended error query to backend in streaming replication mode in ErrorResponse3() .

    2) Fix pool_virtual_master_db_node_id() to return the virtual_master_node_id only when query is in progress and query context exists.

  • Allow make dist to include pgpool.service . (Yugo Nagata)

A.109.2. Enhancements

  • Test: Redirect build log to a log file. (Tatsuo Ishii)

  • Test: Add more memory leak regression tests. (Tatsuo Ishii)