1 2.2.5 (urukiboshi) 2009/10/4
4 This version fixes various bugs in 2.2.4 or before.
8 - Fix connection_count_down(). It decrements the connection
9 counter too much in some corner cases and causes online
10 recover never completes(Tatsuo)
12 - Detect frontend exiting while waiting for commands complete in
13 other cases such as internal locks are issued and Parse
16 - Fix inifinit loop in reset_backend(Xavier Noguer, Tatsuo)
18 - Fix Parse() to print actual query when it detects kind
19 mismatch error(Tatsuo)
21 - Document enhancements(Tatsuo)
23 2.2.4 (urukiboshi) 2009/8/24
26 This version fixes various bugs in 2.2.3 or before.
30 - Fix possible bug introduced in pgpool-II 2.2.2. Load balance
31 control variables may remain not be restored and subsequent
32 DML/DDL call might sent to only master node(Tatsuo)
34 - Send NOTICE message to frontend periodically if V2 protocol is
35 used. This is ifdef out since it affectes visible change to
36 applications. 2.2.3 unconditionaly sends param packet to
37 client even it uses version 2 protocol, which is apparentlt
38 wrong. Also tweak checking period from 1 second to 30 seconds
39 since 1 second seems too aggressive(Tatsuo)
41 - Block signals before forking children rather after. Otherwise
42 parent will be killed by failover signal if it receives a
43 signal before establishing signal handler(Tatsuo)
45 - Remove unnecessary spaces and tabs at the end of line(Jun Kuriyama)
47 2.2.3 (urukiboshi) 2009/8/11
50 This version fixes various bugs in 2.2.2 or before.
54 - Fix child process death if one of backends is not available(Tatsuo).
56 - Fix various parallel query bugs(Yoshiharu Mori)
58 - Fix message corruption for kid mismatch error(Akio Ishida)
60 - Now stetmemt_time works(Tatsuo)
62 - Enhance health checking to detect postmaster stopping by
65 - Detect frontend abnormal exiting while waiting for reply from
66 backend. This only works with V3 protocol(Tatsuo)
68 - Do not start internal transaction if command is CLUSTER
69 without arguments(Tatsuo)
71 - Fix bug with COPY FROM in that backend process remains after
76 - Show last query for extended protocol(Akio Ishida)
78 - Allow to compile sql/pgpool-recovery/pgpool-recovery.c with
79 PostgreSQL 8.4(Tatsuo)
81 2.2.2 (urukiboshi) 2009/5/5
84 This version fixes various bugs in 2.2.1 or before. Please note
85 that an importan fix is made to avoid data incositency risk,
86 which could happen when client does not exit gracely(without
87 sending "X" packet) while pgpool is trying to send data to
88 it. This could happen with all version of pgpool-II.
92 - Ignore write error on frontend connection. This is needed to
93 continue processing with backend, otherwise we risk data
96 - Fix bug introduced in 2.2.1 (In master slave mode, sometimes
97 DEALLOCATE fails). If prepared statement reused, pgpool
100 - Fix pgpool crash when SQL command PREPARE and protocol level
101 EXECUTE are mixed. The bug was introduced in 2.2(Tatsuo)
103 - Avoid "unexpected EOF on client connection" error in PostgreSQL
104 when reset query fails(Tatsuo)
106 2.2.1 (urukiboshi) 2009/4/25
109 This version fixes various bugs in 2.2.
113 - In master slave mode, sometimes DEALLOCATE fails. This is
114 caused by that the first PREPARE was not executed on the
117 - Update pgpool.spec along with related files(Devrim)
119 - Fix inser_lock so that it is ignored when protocol version is
122 - Remove excessive log messages regarding parameter change notice(Tatsuo)
124 - Add missing files to doc(Tatsuo)
126 2.2 (urukiboshi) 2009/2/28
129 This version enhances SERIAL data type handling and on line
130 recovery. Also an important bug, serializable transactions could
131 cause data inconsistency among DB nodes, is fixed. Query
132 cancelation, which never worked since pgpool-II was born, is
135 * New features/enhancements
137 - With insert_lock, now a table is locked only if it has
138 SERIAL data type and now the default value for insert_lock
141 - Start internal transaction other than INSERT, UPDATE, DELETE
142 and SELECT to keep node consistency(Tatsuo)
144 - Add client_idle_limit_in_recovery directive. This will
145 prevent 2nd stage of on line recovery from not going forward
146 by idle clients sitting forever(Tatsuo)
148 - Add pid_file_name directive which specifies a path to the
149 file containing pgpool process id. "logdir" is no more used(Tatsuo)
151 - Allow to load balance DECLARE, FETCH and CLOSE(Tatsuo)
153 - Add -d option to pcp commands(Jun Kuriyama)
155 - Enahnce kind mismatch error message to include originarl
160 - Close all file descriptors when running in daemon mode.
161 Otherwise we inherit sockets from apache when it's
162 started by pgpoolAdmin. This results in that port 80 is
163 occupied for example. Patch provided by Akio
164 Ishida. Also add chdir("/"). This is always good for
165 daemon programs(Tatsuo)
167 - Allow MD5 authentication in raw mode as stated in docs(Tatsuo)
169 - Check transaction serialization failure error in
170 serializable mode and abort all nodes if so. Otherwise
171 we allow data inconsistency among DB nodes(Tatsuo).
173 See following scenario: (M:master, S:slave)
179 M:S1:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
180 M:S2:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
181 S:S1:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
182 S:S2:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
183 M:S1:UPDATE t1 SET i = i + 1;
184 S:S1:UPDATE t1 SET i = i + 1;
185 M:S2:UPDATE t1 SET i = i + 1; <-- blocked
188 M:S2:ERROR: could not serialize access due to concurrent update
189 S:S2:UPDATE t1 SET i = i + 1; <-- success in UPDATE and data becomes inconsistent!
191 - avoid kind mismatch error caused by "SET TRANSACTION
192 ISOLATION LEVEL must be called before any query"(Tatsuo).
194 This could happen in following scenario:
198 M:S1:SELECT 1; <-- only sent to MASTER
199 M:S1:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
200 S:S1:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
202 S: <-- ok since no previous SELECT is sent. kind mismatch error occurs!
204 - Process status display has extra space on FreeeBSD(Jun Kuriyama)
206 - Fix incorrect kind mismatch detection case. e.g: BEGIN;
209 - If PostgreSQL sends lots of DEBUG message, sometimes pgpool
211 2008-11-08 22:41:53 ERROR: pid 23744: do_command: backend does not
212 return ReadyForQuery. This due to a wrong assumption for the
213 client/server protocol(Tatsuo)
215 - Fix the case when sending an erronous query to abort
216 transaction. It assumed that after sending an error query,
217 always ReadyForQuery came right after that. If some
218 debugging or logging verboseness is set, PostgreSQL might
219 sends NOTICE before ReadyForQuery(Tatsuo)
221 - Query cancelation now works. It never worked since pgpool-II
224 - Fix online recovery to wait for failback done before
225 allowing to accept connections from clients. It was supposed
226 to work like this but actually was not since the day 0 when
227 online recovery was born. Without the fix there could be
228 potential data inconsistency among DB nodes(Tatsuo)
230 - Fix pgpool-II crash after on line recovery. This happens
231 after the failback process adds a recovered node which has
232 no connection to the node(Tatsuo)
234 - Fix pgpool-II errors when postgresql.conf is reloaded. This
235 was caused by parameter status packet sent asynchronously
236 from backend, which indicates the internal setting of
237 backend has been changed(Tatsuo)
239 * Incompatible changes
241 - Always fail over and restart all children. Before we do
242 restart only if master has not been changed. This is
243 wrong. If we have trouble with network cable or something,
244 TCP/IP stack keeps on retrying for long time and the only
245 way to prevent it is restarting process(Tatsuo)
247 - "logdir" is no more used. Instead use
248 "pid_file_name"(Tatsuo)
250 - Default value for insert_lock is now true(Tatsuo)
252 2.1 (inamiboshi) 2008/7/25
256 - Add '%m' format to failover_command and failback_command to
257 obtain new master node ID. (Yoshiyuki)
258 - Add '%m' format to failover_command and failback_command to
259 obtain old master node ID. (Yoshiyuki)
260 - Add new directive "recovery_timeout" to specify recovery
261 timeout in second. (Taiki)
262 - Add optino '-v' to print pgpool version. (Yoshiyuki)
265 - Restrict pgpool_recovery() and pgpool_remote_start()
266 functions to superusers. (Yoshiyuki)
267 - Do not create a connection pool to standby node in raw
269 - Remove "replication_timeout" parameter. (Yoshiyuki)
270 - This enabled if replication_strict was false. However,
271 replication_strict was already removed.
272 - Ignore timeout argument of pcp commands. (Taiki)
273 - Do not replicate "COPY TO STDOUT" when replicate_select is
278 - Fix crash when CloseComplete message was
279 received. (Yoshiyuki)
280 - Improve network I/O routine. (Yoshiyuki)
281 - Fix compile errors on Solaris 10. (Yoshiyuki)
282 - Improve log messages of health check and recovery. (Tatsuo)
283 - Change error level of the "failed to read kind from
284 frontend" message from ERROR to LOG. (Yoshiyuki)
285 - Fix failover failure in raw mode. (Taiki)
286 - Fix zombie process bug. (Yoshiyuki)
287 - Fix health_check_timeout to work correctly. (Kenichi Sawada)
288 - Support ps status on FreeBSD. (ISHIDA Akio)
289 - Improve bind(2) failure report. (Jun Kuriyama)
290 - Improve error message when client authentication
294 - Fix replicate_select to work correctly. (Tatsuo)
295 - Fix a wrong rollback bug with extended query. (Yoshiyuki)
296 - Fix a bug with asynchronous query. (Yoshiyuki)
297 - Fix hint clause handling like /*REPLICATION*/ with extended
299 - Fix crash of "DEALLOCATE ALL". (Yoshiyuki)
300 - Fix hang up when a backend node does immediate
301 shutdown. (Yoshiyuki)
302 - Fix hang up online recovery in high load. (Yoshiyuki)
303 - Fix hang up with extended query protocol when SELECT is
304 failed inside a transaction block. (Yoshiyuki)
307 - Fix load balancing to work correctly. (Yoshiyuki)
308 - Fix crash if SET, PREPARE or DEALLOCATE is executed inside a
309 transaction block. (Yoshiyuki)
312 - Fix INSERT failure. (Yoshiharu)
313 - Fix syntax error when a query contains "AS" in FROM
315 - Fix Hung up when two or more statment was executed
316 in parallel mode (Yoshiharu)
317 - Fix Query rewriting of Join Expression and DISTINCT ON
320 2.0.1 (hikitsuboshi) 2007/11/21
322 * Fix process down with UPDATE or DELETE query.(Yoshiyuki)
323 * Send a syntax query only to a master node if master_slave is
326 2.0 (hikitsuboshi) 2007/11/16
329 * Incompatibility since pgpool-II 1.x
330 - the default value for ignore_leading_white_space is now
332 - replicate_strict is removed. The value is always
336 - Allow to reload pgpool.conf(Yoshiyuki)
337 - The paraser is now compatible with PostgreSQL 8.3(Yoshiyuki)
338 - Add new directive "failover_command" to specify command when
339 a node is detached(Yoshiyuki)
340 - Add new directive "client_idle_limit" to specify the time out since
341 the last command is arrived from a client(Tatsuo)
344 - Always start a new transaction even if the query is not in
345 an explicit transaction to enhance the reliabilty of
346 replication(Yoshiyuki)
347 - Enhance the performance of replication for write
348 queries. Now the worst case is 1/2 compared with single DB
349 node regardless the number of DB nodes. Previous release
350 tends to degrade according to the numer of DB
352 - Add "online recovery" which allows to add a DB node and sync
353 with other DB nodes without stopping the pgpool
355 - Abort a transaction if INSERT, UPDATE and DELETE reports
356 different number of result rows(Yoshiyuki)
358 x=# update t set a = a + 1;
359 ERROR: pgpool detected difference of the number of update tuples
360 HINT: check data consistency between master and other db node
362 - If the results from DB nodes do not match, select the
363 possible correct result by "decide by majority". Previous
364 release always trust the result of the master DB
366 - Allow load balance in V2 frontend/backend protocol(Yoshiyuki)
369 - Allow "partial replication" to enhance the performance of
370 the parallel query(Yoshiharu)
372 1.3 (sohiboshi) 2007/10/23
374 * Add new "authentication_timeout" directive, being the default
375 value is 60. (Yoshiyuki)
376 - Maximum time in seconds to complete client authentication.
377 * Reject a connection when startup packet length is greater than
378 10,000 byte. (Yoshiyuki)
379 * Fix invalid memory access when pgpool processed DEALLOCATE
380 statement. (Yoshiyuki)
381 * Fix hang up in load balance mode. (Yoshiyuki)
382 - This was introduced in V1.2.
383 * Fix segmentation fault in 64-bit environment when query cache
384 is enable. (Yoshiyuki)
386 1.2.1 (tomoboshi) 2007/09/28
388 * Fix deadlock while processing Parse message. (Yoshiyuki)
389 * Fix memory leak in reset_prepared_list(). (Yoshiyuki)
390 * Fix compile error on FreeBSD 4.11. (Yoshiyuki)
391 * SET, PREPARE and DEALLOCATE statements are replicated in
392 master/slave mode. (Yoshiyuki)
394 1.2 (tomoboshi) 2007/08/01
396 * Add new "replicate_select" directive, being the default value
397 is false. (Yoshiyuki)
398 - If it is true, SELECT query is replicated. This behavior is
399 same as V3.2 or earlier.
400 * Improve signal handling. (Yoshiyuki)
401 - Occasionaly, zombie processes were remained. Or processes
403 * Fix hang up when SELECT was error inside a transaction
404 block. The bug was introduced in V3.3. (Yoshiyuki)
405 * Fix PREPARE/EXECUTE handling in master slave mode. (Yoshiyuki)
406 * Fix "kind mismatch error" when deadlock error
407 * Fix hang up and SEGV in extended query protocol when a warning
408 SQL like "SELECT '\'';" executed. (Yoshiyuki)
409 * Fix hang up when postmaster did fast or immediate
410 shutdown. (Yoshiyuki)
411 * Fix memory leak when connection cache was full. (Yoshiyuki)
412 * Load balancing node is selected when a session
414 * Fix buffer overrun if connection_life_time was
417 1.1.1 (amiboshi) 2007/6/15
419 * Fix "kind mismatch" bug when load_balance_mode is true
420 introduced in 1.1 (Yoshiyuki)
421 * Fix deadlock with extended query protocol(Yoshiyuki)
422 * Fix numerous bugs with protocol V2(Yoshiyuki)
424 1.1 (amiboshi) 2007/5/25
426 * Support HBA authentication(Taiki)
427 * Support log_connections(Taiki)
428 * Support log_hostname(Taiki)
429 * Show pgpool status in ps command(Taiki)
430 * Fix compile error on MacOS X(Yoshiyuki)
431 * Allow load balancing with extended protocol(Yoshiyuki)
432 * Improve replication. SELECT nextval() and SELECT setval() are
433 now replicated. (Yoshiyuki)
434 * Change SELECT query is only sent to the master node. (Yoshiyuki)
435 - Use /*REPLICATION*/ comment to repliate a SELECT query.
436 * Fix unexpected failover error due to receiving an interrupt
437 signal while connecting to the backend. (Yoshiyuki)
438 * Add "pgpool.pam" file, for PAM configuration file, to be
439 installed under "$PREFIX/share/pgpool-II/". (Taiki)
440 * Fix core dump when executing large SQL. (Yoshiyuki)
442 1.0.2 (suboshi) 2007/02/12
444 * Fix bug when executing large SQL to prevent pgpool goes into
445 infinite loop(Yoshiyuki)
446 * Fix bug with extended protocol handling(Yoshiyuki)
447 * Enhance log for failover and failback(Tatsuo)
448 * Add backend status info to show pool_status(Tatsuo)
449 * Fix UPDATE/DELETE returns wrong number of rows(Tatsuo)
450 * Fix configure fails to link libpq when used with older
451 version of gcc(Yoshiyuki)
452 * Fix DEALLOCATE treatment when used with PHP:PDO DBD-Pg(Yoshiyuki)
453 * Do not load balance SELECT FOR UPDATE, SELECT INTO and SELECT
454 with comments. This behavior is compatible with
456 * Obtain path to libpq using pg_config. --with-pgsql will be
457 removed in next version(Yoshiyuki)
458 * When reusing connection pool, reconnect to backend if the
459 socket is broken(Yoshiyuki)
460 * Fix error with configure when used with PostgreSQL
463 1.0.1 (suboshi) 2006/09/22
465 * This version fixes bugs including master/slave not being
466 working, deadlock problem in COPY FROM STDIN. Also documents
469 1.0.0 (suboshi) 2006/09/08