1 2015-09-03 - PgBouncer 1.6.1 - "Studio Audience Approves"
5 * New setting - server_reset_query_always. When set,
6 disables server_reset_query use on non-session pools.
7 PgBouncer introduces per-pool pool_mode, but session-pooling
8 and transaction-pooling should not use same reset query.
9 In fact, transaction-pooling should not use any reset query.
11 It is set in 1.6.x, but will be disabled in 1.7.
15 * [SECURITY] Remove invalid assignment of `auth_user`. (#69)
16 When `auth_user` is set and client asks non-existing username,
17 client will log in as `auth_user`. Not good.
19 * Skip NoticeResponce in handle_auth_response. Otherwise verbose
20 log levels on server cause login failures.
22 * console: Fill `auth_user` when auth_type=any. Otherwise
23 logging can crash (#67).
25 * Various portability fixes (OpenBSD, Solaris, OSX).
27 2015-08-01 - PgBouncer 1.6 - "Zombies of the future"
31 * Load user password hash from postgres database.
33 auth_user - user to use for connecting same db and fetching user info.
34 Can be set per-database too.
35 auth_query - SQL query to run under auth_user.
36 Default: "SELECT usename, passwd FROM pg_shadow WHERE usename=$1"
40 * Pooling mode can be configured both per-database and per-user.
43 * Per-database and per-user connection limits: max_db_connections and
45 (Cody Cutrer / Pavel Stehule)
47 * Add DISABLE/ENABLE commands to prevent new connections.
50 * New DNS backend: c-ares. Only DNS backend that supports all
51 interesting features: /etc/hosts with refresh, SOA lookup,
52 large replies (via TCP/EDNS+UDP), IPv6. It is the preferred
53 backend now, and probably will be *only* backend in the future,
54 as it's pointless to support zoo of inadequate libraries.
56 SNAFU: c-ares versions <= 1.10 have bug which breaks CNAME-s support
57 when IPv6 has been enabled. (Fixed upstream.) As a workaround,
58 c-ares <= 1.10 is used IPv4-only. So PgBouncer will drop other backends
59 only when c-ares >1.10 (still unreleased) has been out some time...
61 * Show remote_pid in SHOW CLIENTS/SERVERS. Available for clients that
62 connect over unix sockets and both tcp and unix socket server.
63 In case of tcp-server, the pid is taken from cancel key.
65 * Add separate config param (dns_nxdomain_ttl) for controlling
69 * Add the client host IP address and port to application_name.
70 This is enabled by a config parameter application_name_add_host
71 which defaults to 'off'.
74 * Config files have '%include FILENAME' directive to allow configuration
75 to be split into several files.
80 * log: wrap ipv6 address with []
82 * log: On connect to server, show local ip and port
84 * win32: use gnu-style for long args: --foo
86 * Allow numbers in hostname, always try to parse with inet_pton
88 * Fix deallocate_all() in FAQ
90 * Fix incorrect keyword in example config file
93 * Allow comments (with ';') in auth files.
96 * Fix spelling mistakes in log messages and comments.
101 * fix launching new connections during maintenance
104 * don't load auth file twice at boot
107 * Proper invalidation for autodbs
109 * ipv6: Set IPV6_V6ONLY on listen socket.
111 * win32: Don't set SO_REUSEADDR on listen socket.
113 * Fix IPv6 address memcpy
115 * Fix cancellation of of waiting clients.
118 * Small bug fix, must check calloc result
121 * Add newline at the end of the PID file
124 * Don't allow new server connections when PAUSE <db> was issued.
127 * Fix 'bad packet' during login when header is delayed.
128 (Michał Trojnara, Marko Kreen)
130 * Fix errors detected by Coverty.
133 * Disable server_idle_timeout when server count gets below min_pool (#60)
137 2012-11-28 - PgBouncer 1.5.4 - "No Leaks, Potty-Training Successful"
141 * DNS: Fix memory leak in getaddrinfo_a() backend.
143 * DNS: Fix memory leak in udns backend.
145 * DNS: Fix stats calculation.
147 * DNS: Improve error message handling for getaddrinfo_a().
151 * Fix compiler dependency support check in configure.
153 * Few documentation fixes.
155 2012-09-12 - PgBouncer 1.5.3 - "Quantum Toaster"
159 * Too long database names can lead to crash, which
160 is remotely triggerable if autodbs are enabled.
162 The original checks assumed all names come from config files,
163 thus using fatal() was fine, but when autodbs are enabled
164 - by '*' in [databases] section - the database name can come
165 from network thus making remote shutdown possible.
169 * max_packet_size - config parameter to tune maximum packet size
170 that is allowed through. Default is kept same: (2G-1), but now
171 it can be made smaller.
173 * In case of unparseable packet header, show it in hex in log and
178 * AntiMake: it used $(relpath) and $(abspath) to manupulate pathnames,
179 but the result was build failure when source tree path contained
180 symlinks. The code is now changed to work on plain strings only.
182 * console: now SET can be used to set empty string values.
184 * config.txt: show that all timeouts can be set in floats.
185 This is well-hidden feature introduced in 1.4.
187 2012-05-29 - PgBouncer 1.5.2 - "Don't Chew, Just Swallow"
191 * Due to mistake, reserve_pool_timeout was taken in microseconds,
192 not seconds, effectively activating reserve pool immediately
193 when pool got full. Now use it as seconds, as was intended.
194 (Noticed by Keyur Govande)
196 2012-04-17 - PgBouncer 1.5.1 - "Abort, Retry, Ignore?"
200 * Parameters to tune permissions on unix socket:
201 unix_socket_mode=0777, unix_socket_group=''.
205 * Allow empty string for server-side variable - this is
206 needed to get "application_name" properly working, as it's
207 the only parameter that does not have server-side default.
209 * If connect string changes, require refresh of server parameters.
210 Previously PgBouncer continued with old parameters,
211 which breaks in case of Postgres upgrade.
213 * If autodb connect string changes, drop old connections.
215 * cf_setint: Use strtol() instead atoi() to parse integer config
216 parameters. It allows hex, octal and better error detection.
218 * Use sigqueue() to detect union sigval existence - fixes
221 * Remove 'git' command from Makefile, it throws random errors
222 in case of plain-tarball build.
224 * Document stats_period parameter. This tunes the period for
227 * Require Asciidoc >= 8.4, seems docs are not compatible with
228 earlier versions anymore.
230 * Stop trying to retry on EINTR from close().
232 2012-01-05 - PgBouncer 1.5 - "Bouncing Satisified Clients Since 2007"
234 If you use more than 8 IPs behind one DNS name, you now need to
235 use EDNS0 protocol to query. Only getaddrinfo_a()/getaddrinfo()
236 and UDNS backends support it, libevent 1.x/2.x does not.
237 To enable it for libc, add 'options edns0' to /etc/resolv.conf.
239 GNU Make 3.81+ is required for building.
243 * Detect DNS reply changes and invalidate connections to IPs no longer
244 present in latest reply.
247 * DNS zone serial based hostname invalidation. When option
248 dns_zone_check_period is set, all DNS zones will be queried
249 for SOA, and when serial has changed, all hostnames
250 will be queried. This is needed to get deterministic
251 connection invalidation, because invalidation on lookup
252 is useless when no lookups are performed.
253 Works only with new UDNS backend.
255 * New SHOW DNS_HOSTS, SHOW DNS_ZONES commands to examine DNS cache.
257 * New param: min_pool_size - avoids dropping all connections
258 when there is no load.
259 (Filip Rembiałkowski)
261 * idle_in_transaction_timeout - kill transaction if idle too long.
264 * New libudns backend for DNS lookups. More featureful than evdns.
265 Use --with-udns to activate. Does not work with IPv6 yet.
267 * KILL command, to immediately kill all connections for one database.
270 * Move to Antimake build system to have better looking Makefiles.
271 Now GNU Make 3.81+ is required for building.
275 * DNS now works with IPv6 hostnames.
277 * Don't change connection state when NOTIFY arrives from server.
279 * Various documentation fixes.
282 * Console: Support ident quoting with "". Originally we did not
283 have any commands that took database names, so no quoting was needed.
285 * Console: allow numbers at the stard of word regex. Trying
286 to use strict parser makes things too complex here.
288 * Don't expire auto DBs that are paused.
291 * Create auto databases as needed when doing PAUSE.
294 * Fix wrong log message issued by RESUME command.
297 * When user= without password= is in database connect string,
298 password will be taken from userlist.
300 * Parse '*' properly in takeover code.
302 * autogen.sh: work with older autoconf/automake.
304 * Fix run-as-service crash on win32 due to bad basename() from
305 mingw/msvc runtime. Now compat basename() is always used.
307 2011-06-16 - PgBouncer 1.4.2 - "Strike-First Algorithm"
309 Affected OS-es: *BSD, Solaris, Win32.
311 = Portability Fixes =
313 * Give CFLAGS to linker. Needed when using pthread-based
314 getaddrinfo_a() fallback.
316 * lib/find_modules.sh: Replace split() with index()+substr().
317 This should make it work with older AWKs.
319 * <usual/endian.h>: Ignore system htoX/Xtoh defines. There
320 may be only subset of macros defined.
322 * <usual/signal.h>: Separate compat sigval from compat sigevent
324 * <usual/socket.h>: Include <sys/uio.h> to get iovec
326 * <usual/time.h>: Better function autodetection on win32
328 * <usual/base_win32.h>: Remove duplicate sigval/sigevent declaration
330 2011-04-01 - PgBouncer 1.4.1 - "It Was All An Act"
334 * Support listening/connect for IPv6 addresses.
337 * Multiple listen addresses in 'listen_addr'. For each getaddrinfo()
338 is called, so names can also be used.
340 * console: Send PgBouncer version as 'server_version' to client.
344 * Disable getaddrinfo_a() on glibc < 2.9 as it crashes on older versions.
346 Notable affected OS'es: RHEL/CentOS 5.x (glibc 2.5), Ubuntu 8.04 (glibc 2.7).
347 Also Debian/lenny (glibc 2.7) which has non-crashing getaddrinfo_a()
348 but we have no good way to detect it.
350 Please use libevent 2.x on such OS'es, fallback getaddrinfo_a() is not
351 meant for production systems. And read new 'DNS lookup support' section
352 in README to see how DNS backend is picked.
354 (Hubert Depesz Lubaczewski, Dominique Hermsdorff, David Sommerseth)
356 * Default to --enable-evdns if libevent 2.x is used.
358 * Turn on tcp_keepalive by default, as that's what Postgres also does.
359 (Hubert Depesz Lubaczewski)
361 * Set default server_reset_query to DISCARD ALL to be compatible
362 with Postgres by default.
364 * win32: Fix crashes with NULL unix socket addr.
367 * Fix autodb cleanup: old cleanup code was mixing up databases and pools
368 - as soon as one empty pool was found, the database was tagged as 'idle',
369 potentially later killing database with active users.
371 Reported-By: Hubert Depesz Lubaczewski
375 * Make compat getaddrinfo_a() non-blocking, by using single parallel
376 thread to do lookups.
378 * Enable pthread compilation if compat getaddrinfo_a is used.
380 * release_server missed setting ->last_lifetime_disconnect on lifetime disconnect.
383 * win32: fix auth file on DOS line endings - load_file() did not take
384 account of file shringage when loading.
387 * <usual/endian.h>: add autoconf detection for enc/dec functions
388 so it would not create conflicts on BSD.
391 * Don't crash when config file does not exist.
394 * Don't crash on DNS lookup failure when logging on noise level (-v -v).
395 (Hubert Depesz Lubaczewski, Dominique Hermsdorff)
397 * Use backticks instead of $(cmd) in find_modules.sh to make it more portable.
400 * Use 'awk' instead of 'sed' in find_modules.sh to make it more portable.
403 * Log active async DNS backend info on startup.
405 * Fix --disable-evdns to mean 'no' instead 'yes'.
407 * Mention in docs that -R requires unix_socket_dir.
409 * Discuss server_reset_query in faq.txt.
411 * Restore lost memset in slab allocator
413 * Various minor portability fixes in libusual.
415 2011-01-11 - PgBouncer 1.4 - "Gore Code"
419 * Async DNS lookup - instead of resolving hostnames at reload time,
420 the names are now resolved at connect time, with configurable caching.
421 (See dns_max_ttl parameter.)
423 By default it uses getaddrinfo_a() (glibc) as backend, if it does not
424 exist, then getaddrinfo_a() is emulated via blocking(!) getaddrinfo().
426 When --enable-evdns argument to configure, libevent's evdns is used
427 as backend. It is not used by default, because libevent 1.3/1.4
428 contain buggy implementation. Only evdns in libevent 2.0 seems OK.
430 * New config var: syslog_ident, to tune syslog name.
432 * Proper support for `application_name` startup parameter.
434 * Command line long options (Guillaume Lelarge)
436 * Solaris portability fixes (Hubert Depesz Lubaczewski)
438 * New config var: disable_pqexec. Highly-paranoid environments
439 can disable Simple Query Protocol with that. Requires apps
440 that use only Extended Query Protocol.
442 * Postgres compat: if database name is empty in startup packet,
443 use user name as database.
447 * DateStyle and TimeZone server params need to use exact case.
449 * Console: send datetime, timezone and stdstr server params to client.
451 = Internal cleanups =
453 * Use libusual library for low-level utility functions.
455 * Remove fixed-length limit from server params.
457 2010-09-09 - PgBouncer 1.3.4 - "Bouncer is always right"
461 * Apply fast-fail logic at connect time. So if server is failing,
462 the clients get error when connecting.
464 * Don't tag automatically generated databases for checking on reload time,
465 otherwise they get killed, because they don't exist in config.
467 * Ignore application_name parameter by default. This avoids the need
468 for all Postgres 9.0 users to add it into ignore_startup_parameters=
471 * Correct pg_auth quoting. '\' is not used there.
473 * Better error reporting on console, show incoming query to user.
475 * Support OS'es (OpenBSD) where tv_sec is not time_t.
477 * Avoid too noisy warnings on gcc 4.5.
479 2010-05-10 - PgBouncer 1.3.3 - "NSFW"
483 * Make listen(2) argument configurable: listen_backlog. This is
484 useful on OS'es, where system max allowed is configurable.
486 * Improve disconnect messages to show what username or dbname caused
491 * Move fast-fail relaunch logic around. Old one was annoying in case of
492 permanently broken databases or users, by trying to retry even if
493 there is no clients who want to login.
495 * Make logging functions keep old errno, otherwise pgbouncer may act funny
496 on higher loglevels and logging problems.
498 * Increase the size of various startup-related buffers to handle
499 EDB more noisy startup.
501 * Detect V2 protocol startup request and give clear reason for disconnect.
503 2010-03-15 - PgBouncer 1.3.2 - "Boomerang Bullet"
507 * New config var 'query_wait_timeout'. If client does not get
508 server connection in this many seconds, it will be killed.
510 * If no server connection in pool and last connect failed, then
511 don't put client connections on hold but send error immediately.
513 This together with previous fix avoids unnecessary stalls if
514 a database has gone down.
516 * Track libevent state in sbuf.c to avoid double event_del(). Although
517 it usually is safe, it does not seem to work 100%. Now we should always
518 know whether it has been called or not.
520 * Disable maintenance during SUSPEND. Otherwise with short timeouts
521 the old bouncer could close few connections after sending them over.
523 * Apply client_login_timeout to clients waiting for welcome packet
524 (first server connection). Otherwise they can stay waiting
525 infinitely, unless there is query_timeout set.
527 * win32: Add switch -U/-P to -regservice to let user pick account
528 to run service under. Old automatic choice between Local Service and
529 Local System was not reliable enough.
531 * console: Remove \0 from end of text columns. It was hard to notice,
532 as C clients were fine with it.
534 * Documentation improvements. (Greg Sabino Mullane)
536 * Clarify few login-related log messages.
538 * Change logging level for pooler-sent errors (usually on disconnect) from INFO
539 to WARNING, as they signify problems.
541 * Change log message for query_timeout to "query timeout".
543 2009-07-06 - PgBouncer 1.3.1 - "Now fully conforming to NSA monitoring requirements"
547 * Fix problem with sbuf_loopcnt which could make connections hang.
548 If query or result length is nearby of multiple of (pktlen*sbuf_loopcnt)
549 [10k by default], it could stay waiting for more data which will not
552 * Make database reconfigure immediate. Currently old connections
553 could be reused after SIGHUP.
555 * Fix SHOW DATABASES which was broken due to column addition.
557 * Console access was disabled when "auth_mode=any" as pgbouncer dropped username.
558 Fix: if "auth_mode=any", allow any user to console as admin.
560 * Fix bad CUSTOM_ALIGN macro. Luckily it's unused if OS already
561 defines ALIGN macro thus seems the bug has not happened in wild.
563 * win32: call WSAStartup() always, not only in daemon mode
564 as config parsing wants to resolve hosts.
566 * win32: put quotes around config filename in service
567 cmdline to allow spaces in paths. Executable path
568 does not seem to need it due to some win32 magic.
570 * Add STATS to SHOW HELP text.
572 * doc/usage.txt: the time units in console results are in
573 microseconds, not milliseconds.
575 2009-02-18 - PgBouncer 1.3 - "New Ki-Smash Finishing Move"
579 * IANA has assigned port 6432 to be official port for PgBouncer.
580 Thus the default port number has changed to 6432. Existing
581 individual users do not need to change, but if you distribute
582 packages of PgBouncer, please change the package default
585 * Dynamic database creation (David Galoyan)
587 Now you can define database with name "*". If defined, it's connect
588 string will be used for all undefined databases. Useful mostly
589 for test / dev environments.
591 * Windows support (Hiroshi Saito)
593 PgBouncer runs on Windows 2000+ now. Command line usage stays same,
594 except it cannot run as daemon and cannot do online reboot.
595 To run as service, define parameter service_name in config. Then:
597 > pgbouncer.exe config.ini -regservice
598 > net start SERVICE_NAME
600 To stop and unregister:
602 > net stop SERVICE_NAME
603 > pgbouncer.exe config.ini -unregservice
605 To use Windows Event Log, event DLL needs to be registered first:
607 > regsrv32 pgbevent.dll
609 Afterwards you can set "syslog = 1" in config.
613 * Database names in config file can now be quoted with standard SQL
614 ident quoting, to allow non-standard characters in db names.
616 * New tunables: 'reserve_pool_size' and 'reserve_pool_timeout'.
617 In case there are clients in pool that have waited more that
618 'reserve_pool_timeout' seconds, 'reserve_pool_size' specifies
619 the number of connections that can be added to pool. It can also
620 set per-pool with 'reserve_pool' connection variable.
622 * New tunable 'sbuf_loopcnt' to limit time spent on one socket.
624 In some situations - eg SMP server, local Postgres and fast network -
625 pgbouncer can run recv()->send() loop many times without blocking
626 on either side. But that means other connections will stall for
627 a long time. To make processing more fair, limit the times
628 of doing recv()->send() one socket. If count reaches limit,
629 just proceed processing other sockets. The processing for
630 that socket will resume on next event loop.
632 Thanks to Alexander Schöcke for report and testing.
634 * crypt() authentication is now optional, as it was removed from Postgres.
635 If OS does not provide it, pgbouncer works fine without it.
637 * Add milliseconds to log timestamps.
639 * Replace old MD5 implementation with more compact one.
641 * Update ISC licence with the FSF clarification.
645 * In case event_del() reports failure, just proceed with cleanup.
646 Previously pgbouncer retried it, in case the failure was due ENOMEM.
647 But this has caused log floods with inifinite repeats, so it seems
648 libevent does not like it.
650 Why event_del() report failure first time is still mystery.
652 * --enable-debug now just toggles whether debug info is stripped from binary.
653 It no longer plays with -fomit-frame-pointer as it's dangerous.
655 * Fix include order, as otherwise system includes could come before
656 internal ones. Was problem for new md5.h include file.
658 * Include COPYRIGHT file in .tgz...
660 2008-08-08 - PgBouncer 1.2.3 - "Carefully Selected Bytes"
662 * Disable SO_ACCEPTFILTER code for BSDs which did not work.
663 * Include example etc/userlist.txt in tgz.
664 * Use '$(MAKE)' instead 'make' for recursion (Jørgen Austvik)
665 * Define _GNU_SOURCE as glibc is useless otherwise.
666 * Let the libevent 1.1 pass link test so we can later report "1.3b+ needed"
667 * Detect stale pidfile and remove it.
669 Thanks to Devrim GÜNDÜZ and Bjoern Metzdorf for problem reports and testing.
671 2008-08-06 - PgBouncer 1.2.2 - "Barf-bag Included"
673 * Remove 'drop_on_error', it was a bad idea. It was added as workaround
674 for broken plan cache behaviour in Postgres, but can cause damage
675 in common case when some queries always return error.
677 2008-08-04 - PgBouncer 1.2.1 - "Waterproof"
681 * New parameter 'drop_on_error' - if server throws error the connection
682 will not be reused but dropped after client finished with it. This is
683 needed to refresh plan cache. Automatic refresh does not work even in 8.3.
688 * SHOW SOCKETS/CLIENTS/SERVERS: Don't crash if socket has no buffer.
689 * Fix infinite loop on SUSPEND if suspend_timeout triggers.
693 * Use <sys/uio.h> for 'struct iovec'.
694 * Cancel shutdown (from SIGINT) on RESUME/SIGUSR2,
695 otherwise it will trigger on next PAUSE.
696 * Proper log message if console operation is canceled.
698 2008-07-29 - PgBouncer 1.2 - "Ordinary Magic Flute"
700 PgBouncer 1.2 now requires libevent version 1.3b or newer.
701 Older libevent versions crash with new restart code.
705 * Command line option (-u) and config parameter (user=) to support user
706 switching at startup. Also now pgbouncer refuses to run as root.
708 * More descriptive usage text (-h). (Jacob Coby)
709 * New database option: connect_query to allow run a query on new
710 connections before they are taken into use. (Teodor Sigaev)
711 * New config var 'ignore_startup_parameters' to allow and ignore
712 extra parameters in startup packet. By default only 'database'
713 and 'user' are allowed, all others raise error. This is needed
714 to tolerate overenthusiastic JDBC wanting to unconditionally
715 set 'extra_float_digits=2' in startup packet.
716 * Logging to syslog: new parameters syslog=0/1 and
717 syslog_facility=daemon/user/local0.
718 * Less scary online restart (-R)
719 - Move FD loading before fork, so it logs to console and can be canceled by ^C
720 - Keep SHUTDOWN after fork, so ^C would be safe
721 - A connect() is attempted to unix socket to see if anyone is listening.
722 Now -R can be used even when no previous process was running. If there
723 is previous process, but -R is not used, startup fails.
724 * New console commands:
725 - SHOW TOTALS that shows stats summary (as goes to log) plus mem usage.
726 - SHOW ACTIVE_SOCKETS - like show sockets; but filter only active ones.
728 = Less visible features =
730 * suspend_timeout - drop stalled conns and long logins. This brings
731 additional safety to reboot.
732 * When remote database throws error on logging in, notify clients.
733 * Removing a database from config and reloading works - all connections
734 are killed and the database is removed.
735 * Fake some parameters on console SHOW/SET commands to be more Postgres-like.
736 That was needed to allow psycopg to connect to console.
737 (client_encoding/default_transaction_isolation/datestyle/timezone)
738 * Make server_lifetime=0 disconnect server connection immediately
739 after first use. Previously "0" made PgBouncer ignore server age.
740 As this behavior was undocumented, there should not be any users
742 * Internal improvements:
743 - Packet buffers are allocated lazily and reused. This should bring
744 huge decrease in memory usage. This also makes realistic to use
745 big pktbuf with lot of connections.
746 - Lot's of error handling improvements, PgBouncer should now
747 survive OOM situations gracefully.
748 - Use slab allocator for memory management.
749 - Lots of code cleanups.
753 * Only single accept() was issued per event loop which could
754 cause connection backlog when having high amount of connection
755 attempts. Now the listening socket is always drained fully,
756 which should fix this.
757 * Handle EINTR from connect().
758 * Make configure.ac compatible with autoconf 2.59.
759 * Solaris compatibility fixes (Magne Mæhre)
761 2007-12-10 - PgBouncer 1.1.2 - "The Hammer"
765 * Disconnects because of server_lifetime are now separated by
766 (server_lifetime / pool_size) seconds. This avoids pgbouncer
767 causing reconnect floods.
771 * Online upgrade 1.0 -> 1.1 problems:
772 - 1.0 does not track server parameters, so they stay NULL
773 but 1.1 did not expect it and crashed.
774 - If server params are unknown, but client ones are set,
775 then issue a SET for them, instead complaining.
776 * Remove temp debug statements that were accidentally left
777 in code on INFO level, so they polluted logs.
778 * Unbroke debian/changelog
782 * reorder struct SBuf fields to get better alignment for buffer.
784 2007-10-26 - PgBouncer 1.1.1 - "Breakdancing Bee"
788 * Server parameter cache could stay uninitialized, which caused
789 unnecessary SET of them. This caused problem on 8.1 which
790 does not allow touching standard_conforming_strings.
791 (Thanks to Dimitri Fontaine for report & testing.)
794 * Include doc/fixman.py in .tgz.
796 2007-10-09 - PgBouncer 1.1 - "Mad-Hat Toolbox"
800 * Keep track of following server parameters:
802 client_encoding datestyle, timezone, standard_conforming_strings
804 * Database connect string enhancements:
805 - Accept hostname in host=
806 - Accept custom unix socket location in host=
807 - Accept quoted values: password=' asd''foo'
809 * New config var: server_reset_query, to be sent immidiately after release
810 * New config var: server_round_robin, to switch between LIFO and RR.
811 * Cancel pkt sent for idle connection does not drop it anymore.
812 * Cancel with ^C from psql works for SUSPEND / PAUSE.
813 * Print FD limits on startup.
814 * When suspending, try to hit packet boundary ASAP.
815 * Add 'timezone' to database parameters.
816 * Use longlived logfile fd. Reopened on SIGHUP / RELOAD;
817 * Local connection endpoint info in SHOW SERVERS/CLIENTS/SOCKETS.
821 * More debug log messages include socket info.
822 * Magic number removal and error message cleanup. (David Fetter)
823 * Wrapper struct for current pkt info. Removes lot of compexity.
827 * Detect invalid pkt headers better.
828 * auth_file modification check was broken, which made pgbouncer
831 2007-06-18 - PgBouncer 1.0.8 - "Undead Shovel Jutsu"
835 * Fix crash in cancel packet handling. (^C from psql)
839 * PAUSE <db>; RESUME <db>; works now.
840 * Cleanup of console command parsing.
841 * Disable expensive in-list assert check.
843 2007-04-19 - PgBouncer 1.0.7 - "With Vitamin A-Z"
845 * Several error/notice packets with send() blocking between
846 triggered assert. Fix it by removing flushing logic altogether.
847 As pgbouncer does not actively buffer anything, its not needed.
848 It was a remnant from the time when buffering was pushed to
849 kernel with MSG_MORE.
850 * Additionally avoid calling recv() logic when sending unblocks.
851 * List search code for admin_users and stats_users
852 mishandled partial finds. Fix it.
853 * Standardise UNIX socket peer UID finding to getpeereid().
855 2007-04-12 - PgBouncer 1.0.6 - "Daily Dose"
857 * The "Disable maintenance during the takeover" fix could
858 disable maintenance altogether. Fix it.
859 * Compilation fix for FreeBSD, <sys/ucred.h> requires <sys/param.h> there.
860 Thanks go to Robert Gogolok for report.
862 2007-04-11 - PgBouncer 1.0.5 - "Enough for today"
864 * Fix online-restart bugs:
865 - Set ->ready for idle servers.
866 - Remove obsolete code from use_client_socket()
867 - Disable maintenance during the takeover.
869 2007-04-11 - PgBouncer 1.0.4 - "Last 'last' bug"
871 * Notice from idle server tagged server dirty.
872 release_server() did not expect it. Fix it
875 2007-04-11 - PgBouncer 1.0.3 - "Fearless Fork"
879 * Some error handling was missing in login path, so dying
880 connection there could trigger asserts.
881 * Cleanup of asserts in sbuf.c to catch problems earlier.
882 * Create core when Assert() triggers.
886 * New config vars: log_connections, log_disconnections,
887 log_pooler_errors to turn on/off noise.
888 * Config var: client_login_timeout to kill dead connections
889 in login phase that could stall SUSPEND and thus online restart.
891 2007-03-28 - PgBouncer 1.0.2 - "Supersonic Spoon"
893 * libevent may report a deleted event inside same loop.
894 Avoid socket reuse for one loop.
895 * release_server() from disconnect_client() didnt look
896 it the packet was actually sent.
898 2007-03-15 - PgBouncer 1.0.1 - "Alien technology"
902 * Mixed usage of cached and non-cached time, plus unsiged usec_t typedef
903 created spurious query_timeout errors.
904 * Fix rare case when socket woken up from send-wait could stay stalling.
905 * More fair queueing of server connections. Before, a new query could
906 get a server connections before older one.
907 * Delay server release until everything is guaranteed to be sent.
911 * SHOW SOCKETS command to have detailed info about state state.
912 * Put PgSocket ptr to log, to help tracking one connection.
913 * In console, allow SELECT in place of SHOW.
914 * Various code cleanups.
916 2007-03-13 - PgBouncer 1.0 - "Tuunitud bemm"
918 * First public release.