1PgBouncer changelog
2===================
3
4PgBouncer 1.16.x
5----------------
6
7**2021-08-09  -  PgBouncer 1.16.0  -  "Fended off a jaguar"**
8
9- Features
10  * Support hot reloading of TLS settings.  When the configuration
11    file is reloaded, changed TLS settings automatically take effect.
12  * Add support for abstract Unix-domain sockets.  Prefix a
13    Unix-domain socket path with `@` to use a socket in the abstract
14    namespace.  This matches the corresponding PostgreSQL 14 feature.
15  * The maximum lengths of passwords and user names have been
16    increased to 996 and 128, respectively.  Various cloud services
17    require this.
18  * The minimum pool size can now be set per database, similar to the
19    regular pool size and the reserve pool size.
20  * The number of pending query cancellations is shown in `SHOW
21    POOLS`.
22
23- Fixes
24  * Configuration parsing now has tighter error handling in many
25    places.  Where previously it might have logged an error and
26    proceeded, those configuration errors would now result in startup
27    failures.  This is what always should have happened, but some code
28    didn't do this right.  Some users might discover that their
29    configurations have been faulty all along and will not work
30    anymore.
31  * Query cancel handling has been fixed.  Under some circumstances,
32    cancel requests would seemingly get stuck for a long time.  This
33    should no longer happen.  In fact, cancel requests can now exceed
34    the pool size by a factor of two, so they really shouldn't get
35    stuck
36    anymore. ([#542](https://github.com/pgbouncer/pgbouncer/pull/542),
37    [#543](https://github.com/pgbouncer/pgbouncer/pull/543))
38  * Mixed use of md5 and scram via hba has been fixed.
39  * The build with c-ares on Windows has been fixed.
40  * The dreaded "FIXME: query end, but query_start == 0" messages have
41    been fixed.  We now know why they happen, and you shouldn't see
42    them anymore. ([#565](https://github.com/pgbouncer/pgbouncer/pull/565))
43  * Fix reloading of `default_pool_size`, `min_pool_size`, and
44    `res_pool_size`.  Reloading these settings previously didn't work.
45
46- Cleanups
47  * Cirrus CI is now
48    [used](https://cirrus-ci.com/github/pgbouncer/pgbouncer) instead
49    of Travis CI.
50  * As usual, many tests have been added.
51  * The "unclean server" log message has been clarified a bit.  It now
52    says "client disconnect while server was not ready" or "client
53    disconnect before everything was sent to the server".  The former
54    can happen if the client connection is closed when the server has
55    a transaction block open, which confused some users.
56  * You can no longer use "pgbouncer" as a database name.  This name
57    is reserved for the admin console, and using it as a normal
58    database name never really worked right.  This is now explicitly
59    prohibited.
60  * Errors sent to clients before the connection is closed are now
61    labeled as FATAL instead of just ERROR.  Some clients were
62    confused
63    otherwise. ([#564](https://github.com/pgbouncer/pgbouncer/pull/564))
64  * Fix compiler warnings with GCC 11.
65    ([#623](https://github.com/pgbouncer/pgbouncer/issues/623))
66
67PgBouncer 1.15.x
68----------------
69
70**2020-11-19  -  PgBouncer 1.15.0  -  "Ich hab noch einen Koffer in Berlin"**
71
72- Features
73  * Improve authentication failure reporting.  The authentication
74    failure messages sent to the client now only state that
75    authentication failed but give no further details.  Details are
76    available in the PgBouncer log.  Also, if the requested user does
77    not exist, the authentication is still processed to the end and
78    will result in the same generic failure message.  All this
79    prevents clients from probing the PgBouncer instance for user
80    names and other authentication-related insights.  This is similar
81    to how PostgreSQL behaves.
82  * Don't log anything if client disconnects immediately.  This avoids
83    log spam when monitoring systems just open a TCP/IP connection but
84    don't send anything before disconnecting.
85  * Use systemd journal for logging when in use.  When we detect that
86    stderr is going to the systemd journal, we use systemd native
87    functions for log output.  This avoids printing duplicate
88    timestamp and pid, thus making the log a bit cleaner.  Also, this
89    adds metadata such as the severity to the logs, so that if the
90    journal gets sent on to syslog, the messages have useful metadata
91    attached.
92  * A subset of the test suite can now be run under Windows.
93  * `SHOW CONFIG` now also shows the default values of the settings.
94
95- Fixes
96  * Fix the `so_reuseport` option on FreeBSD.  The original code in
97    PgBouncer 1.12.0 didn't actually work on FreeBSD.
98    ([#504](https://github.com/pgbouncer/pgbouncer/pull/504))
99  * Repair compilation on systems with older systemd versions.  This
100    was broken in 1.14.0.
101    ([#505](https://github.com/pgbouncer/pgbouncer/issues/505))
102  * The makefile target to build Windows binary zip packages has been
103    repaired.
104  * Long command-line options now also work on Windows.
105  * Fix the behavior of the global `auth_user` setting.  The old
106    behavior was confusing and fragile as it depended on the order in
107    the configuration file.  This is no longer the
108    case. ([#391](https://github.com/pgbouncer/pgbouncer/issues/391),
109    [#393](https://github.com/pgbouncer/pgbouncer/issues/393))
110
111- Cleanups
112  * Improve test stability and portability.
113  * Modernize Autoconf-related code.
114  * Disable deprecation compiler warnings from OpenSSL 3.0.0.
115
116PgBouncer 1.14.x
117----------------
118
119**2020-06-11  -  PgBouncer 1.14.0  -  "La ritrovata magia"**
120
121- Features
122  * Add SCRAM authentication pass-through.  This allows using
123    encrypted SCRAM secrets in PgBouncer (either in `userlist.txt` or
124    from `auth_query`) for logging into servers.
125  * Add support for systemd socket activation.  This is especially
126    useful to let systemd handle the creation of the Unix-domain
127    sockets on systems where access to `/var/run/postgresql` is
128    restricted.
129  * Add support for Unix-domain sockets on Windows.
130
131- Cleanups
132  * Add an alternative smaller sample configuration file
133    `pgbouncer-minimal.ini` for testing or deployment.
134
135PgBouncer 1.13.x
136----------------
137
138**2020-04-27  -  PgBouncer 1.13.0  -  "My favourite game"**
139
140- Features
141  * Add configuration setting `tcp_user_timeout`, to set the
142    corresponding socket option.
143  * `client_tls_protocols` and `server_tls_protocols` now default to
144    `secure`, which means only TLS 1.2 and TLS 1.3 are enabled.  Older
145    versions are still supported, they are just not turned on by
146    default.
147  * Add support for systemd service notifications.  Right now, this
148    allows using `Type=notify` service units.  More integration is
149    planned for future versions.
150
151- Fixes
152  * Fix multiline log messages
153    ([libusual #24](https://github.com/libusual/libusual/pull/24))
154  * Handle null user names returned from `auth_query` properly
155    ([#340](https://github.com/pgbouncer/pgbouncer/pull/340))
156
157- Cleanups
158  * The Debian packaging files under `debian` have been removed.  It
159    is recommended to use the packages from https://apt.postgresql.org/.
160  * Numerous fixes and improvements in the test suite
161  * The tests no longer try to use sudo by default.  This can now be
162    activated explicitly by setting the environment variable
163    `USE_SUDO`.
164  * The libevent API use was updated to use version 2 style interfaces
165    and to no longer use deprecated interfaces from version 1.
166
167PgBouncer 1.12.x
168----------------
169
170**2019-10-17  -  PgBouncer 1.12.0  -  "It's about learning and getting better"**
171
172This release contains a variety of minor enhancements and fixes.
173
174- Features
175  * Add a setting to turn on the `SO_REUSEPORT` socket option.  On
176    some operating systems, this allows running multiple PgBouncer
177    instances on the same host listening on the same port and having
178    the kernel distribute the connections automatically.
179  * Add a setting to use a `resolv.conf` file separate from the
180    operating system.  This allows setting custom DNS servers and
181    perhaps other DNS options.
182  * Send the output of `SHOW VERSION` as a normal result row instead
183    of a NOTICE message.  This makes it easier to consume and is
184    consistent with other `SHOW` commands.
185
186- Fixes
187  * Send statistics columns as `numeric` instead of `bigint`.  This
188    avoids some client libraries failing on values that overflow the
189    `bigint`
190    range. ([#360](https://github.com/pgbouncer/pgbouncer/pull/360),
191    [#401](https://github.com/pgbouncer/pgbouncer/pull/401))
192  * Fix issue with PAM users losing their
193    password. ([#285](https://github.com/pgbouncer/pgbouncer/issues/285))
194  * Accept SCRAM channel binding enabled clients.  Previously, a
195    client supporting channel binding (that is, PostgreSQL 11+) would
196    get a connection failure when connecting to PgBouncer in certain
197    situations.  (PgBouncer does not support channel binding.  This
198    change just fixes support for clients that offer it.)
199  * Fix compilation with newer versions of musl-libc (used by Alpine
200    Linux).
201
202- Cleanups
203  * Add `make check` target.  This allows running all the tests from a
204    single command.
205  * Remove references to the PostgreSQL wiki.  All information is now
206    either in the PgBouncer documentation or on the web site.
207  * Remove support for Libevent version 1.x.  Libevent 2.x is now
208    required.  Libevent is now detected using pkg-config.
209  * Fix compiler warnings on macOS and Windows.  The build on these
210    platforms should now be free of warnings.
211  * Fix some warnings from LLVM scan-build.
212
213PgBouncer 1.11.x
214----------------
215
216**2019-08-27  -  PgBouncer 1.11.0  -  "Instinct for Greatness"**
217
218- Features
219  * Add support for SCRAM authentication for clients and servers.  A
220    new authentication type `scram-sha-256` is added.
221  * Handle `auth_type=password` when the stored password is md5, like
222    a PostgreSQL server
223    would. ([#129](https://github.com/pgbouncer/pgbouncer/pull/129))
224  * Add option `log_stats` to disable printing stats to
225    log. ([#287](https://github.com/pgbouncer/pgbouncer/pull/287))
226  * Add time zone to log timestamps.
227  * Put PID into [brackets] in log prefix.
228- Fixes
229  * Fix OpenSSL configure test when running against newer OpenSSL with
230    `-Werror`.
231  * Fix wait time computation with `auth_user`.  This would either
232    crash or report garbage values for wait
233    time. ([#393](https://github.com/pgbouncer/pgbouncer/pull/393))
234  * Handle GSSENCRequest packet, added in PostgreSQL 12.  It doesn't
235    do anything right now, but it avoids confusing error messages
236    about "bad packet header".
237- Cleanups
238  * Many improvements in the test suite and several new tests
239  * Fix several compiler warnings on Windows.
240  * Expand documentation of the `[users]` section and add to example
241    config
242    file. ([#330](https://github.com/pgbouncer/pgbouncer/pull/330))
243
244PgBouncer 1.10.x
245----------------
246
247**2019-07-01  -  PgBouncer 1.10.0  -  "Afraid of the World"**
248
249- Features
250  * Add support for enabling and disabling TLS 1.3.  (TLS 1.3 was
251    already supported, depending on the OpenSSL library, but now the
252    configuration settings to pick the TLS protocol versions also
253    support it.)
254- Fixes
255  * Fix TLS 1.3 support.  This was broken with OpenSSL 1.1.1 and
256    1.1.1a (but not before or after).
257  * Fix a rare crash in `SHOW FDS`
258    ([#311](https://github.com/pgbouncer/pgbouncer/issues/311)).
259  * Fix an issue that could lead to prolonged downtime if many cancel
260    requests arrive
261    ([#329](https://github.com/pgbouncer/pgbouncer/issues/329)).
262  * Avoid "unexpected response from login query" after a postgres
263    reload
264    ([#220](https://github.com/pgbouncer/pgbouncer/issues/220)).
265  * Fix `idle_transaction_timeout` calculation
266    ([#125](https://github.com/pgbouncer/pgbouncer/issues/125)).  The
267    bug would lead to premature timeouts in specific situations.
268- Cleanups
269  * Make various log and error messages more precise.
270  * Fix issues found by Coverity (none had a significant impact in
271    practice).
272  * Improve and document all test scripts.
273  * Add additional SHOW commands to the documentation.
274  * Convert the documentation from rst to Markdown.
275  * Python scripts in the source tree are all compatible with Python 3
276    now.
277
278PgBouncer 1.9.x
279---------------
280
281**2018-08-13  -  PgBouncer 1.9.0  -  "Chaos Survival"**
282
283- Features
284  * RECONNECT command
285  * WAIT_CLOSE command
286  * Fast close - Disconnect a server in session pool mode immediately if
287    it is in "close_needed" (reconnect) mode.
288  * Add close_needed column to SHOW SERVERS
289- Fixes
290  * Avoid double-free in parse_filename
291  * Avoid NULL pointer deref in parse_line
292- Cleanups
293  * Port mkauth.py to Python 3
294  * Improve signals documentation
295  * Improve quick start documentation
296  * Document SET command
297  * Correct list of required software
298  * Fix -Wimplicit-fallthrough warnings
299  * Add missing documentation for various SHOW fields
300  * Document reconnect behavior on reload and DNS change
301  * Document that KILL requires RESUME afterwards
302  * Clarify documentation of server_lifetime
303  * Typos and capitalization fixes in messages and docs
304  * Fix psql invocation in tests
305  * Various other test setup improvements
306
307PgBouncer 1.8.x
308---------------
309
310**2017-12-20  -  PgBouncer 1.8.1  -  "Ground-and-pound Mentality"**
311
312- Fixes
313  * Include file `include/pam.h` into distribution tarball.  This
314    prevented the 1.8 tarball from building at all.
315
316**2017-12-19  -  PgBouncer 1.8  -  "Confident at the Helm"**
317
318- Features
319  * Support PAM authentication.  (Enable with `--with-pam`.)
320  * Add `paused` and `disabled` fields to `SHOW DATABASES` output.
321  * Add `maxwait_us` field to `SHOW POOLS` output.
322  * Add `wait` and `wait_us` fields to `SHOW` commands output.
323  * Add new commands `SHOW STATS_TOTALS` and `SHOW STATS_AVERAGES`.
324  * Track queries and transactions separately in `SHOW STATS`.  The
325    fields `total_requests`, `avg_req`, and
326    `avg_query` have been replaced by new fields.
327  * Add `wait_time` to `SHOW STATS`.
328- Fixes
329  * Updated libusual supports OpenSSL 1.1.
330  * Do not attempt to use TLS on Unix sockets.
331  * When parsing `pg_hba.conf`, keep parsing after erroneous lines instead of rejecting the whole file.
332    ([#118](https://github.com/pgbouncer/pgbouncer/issues/118))
333  * Several other hba parsing fixes.
334  * Fix race condition when canceling query.
335    ([#141](https://github.com/pgbouncer/pgbouncer/issues/141))
336- Cleanups
337  * `auth_user` setting is now also allowed globally, not only per database.
338    ([#142](https://github.com/pgbouncer/pgbouncer/issues/142))
339  * Set console client and server encoding to `UTF8`.
340
341PgBouncer 1.7.x
342---------------
343
344**2016-02-26  -  PgBouncer 1.7.2  -  "Finally Airborne"**
345
346- Fixes
347  * Fix crash on stale pidfile removal.  Problem introduced in 1.7.1.
348  * Disable cleanup - it breaks takeover and is not useful
349    for production loads.  Problem introduced in 1.7.1.
350  * After takeover, wait until pidfile is gone before booting.
351    Slow shutdown due to memory cleanup exposed existing race.
352    ([#113](https://github.com/pgbouncer/pgbouncer/issues/113))
353- Cleanups
354  * Make build reproducible by dropping DBGVER handling.
355    ([#112](https://github.com/pgbouncer/pgbouncer/issues/112))
356  * Antimake: Sort file list from $(wildcard), newer gmake does not
357    sort it anymore.
358    ([#111](https://github.com/pgbouncer/pgbouncer/issues/111))
359  * Show libssl version in log.
360  * deb: Turn on full hardening.
361
362**2016-02-18  -  PgBouncer 1.7.1  -  "Forward To Five Friends Or Else"**
363
364WARNING: Since version 1.7, `server_reset_query` is not executed when
365database is in transaction-pooling mode.  Seems this was not highlighted
366enough in 1.7 announcement.  If your apps depend on that happening, use
367`server_reset_query_always` to restore previous behaviour.
368
369Otherwise main work of this release was to track down TLS-related memory
370leak, which turned out to not exist.  Instead there is libssl build in
371Debian/wheezy which has 600k overhead per connection (without leaking)
372instead expected 20-30k.  Something to keep an eye on when using TLS.
373
374- Fixes
375  * TLS: Rename sslmode "disabled" to "disable" as that is what
376    PostgreSQL uses.
377  * TLS: `client_tls_sslmode=verify-ca/-full` now reject
378    connections without client certificate.
379    ([#104](https://github.com/pgbouncer/pgbouncer/issues/104))
380  * TLS: `client_tls_sslmode=allow/require` do validate client
381    certificate if sent.  Previously they left cert validation
382    unconfigured so connections with client cert failed.
383    ([#105](https://github.com/pgbouncer/pgbouncer/issues/105))
384  * Fix memleak when freeing database.
385  * Fix potential memleak in tls_handshake().
386  * Fix EOF handling in tls_handshake().
387  * Fix too small memset in asn1_time_parse compat.
388  * Fix non-TLS (`--without-openssl`) build.
389    ([#101](https://github.com/pgbouncer/pgbouncer/issues/101))
390  * Fix various issues with Windows build.
391    ([#100](https://github.com/pgbouncer/pgbouncer/issues/100))
392- Cleanups
393  * TLS: Use SSL_MODE_RELEASE_BUFFERS to decrease memory usage
394    of inactive connections.
395  * Clean allocated memory on exit.  Helps to run memory-leak checkers.
396  * Improve `server_reset_query` documentation.
397    ([#110](https://github.com/pgbouncer/pgbouncer/issues/110))
398  * Add TLS options to sample config.
399
400**2015-12-18  -  PgBouncer 1.7  -  "Colors Vary After Resurrection"**
401
402- Features
403  * Support TLS connections.  OpenSSL/LibreSSL is used
404    as backend implementation.
405  * Support authentication via TLS client certificate.
406  * Support "peer" authentication on Unix sockets.
407  * Support Host Based Access control file, like
408    [pg_hba.conf](http://www.postgresql.org/docs/9.4/static/auth-pg-hba-conf.html)
409    in Postgres.  This allows to configure TLS for network connections and "peer"
410    authentication for local connections.
411- Cleanups
412  * Set `query_wait_timeout` to 120s by default.  Current default
413    (0) causes infinite queueing, which is not useful.  That
414    means if client has pending query and has not been
415    assigned to server connection, the client connection will
416    be dropped.
417  * Disable `server_reset_query_always` by default.  Now reset
418    query is used only in pools that are in session mode.
419  * Increase pkt_buf to 4096 bytes.  Improves performance with TLS.
420    The behaviour is probably load-specific, but it should be
421    safe to do as since v1.2 the packet buffers are split
422    from connections and used lazily from pool.
423  * Support pipelining count expected ReadyForQuery packets.
424    This avoids releasing server too early.  Fixes
425    [#52](https://github.com/pgbouncer/pgbouncer/issues/52).
426  * Improved sbuf_loopcnt logic - socket is guarateed to be
427    reprocessed even if there are no event from socket.
428    Required for TLS as it has it's own buffering.
429  * Adapt system tests to work with modern BSD and MacOS.
430    (Eric Radman)
431  * Remove **crypt** auth.  It's obsolete and not supported
432    by PostgreSQL since 8.4.
433  * Fix plain "--with-cares" configure option - without argument
434    it was broken.
435
436PgBouncer 1.6.x
437---------------
438
439**2015-09-03  -  PgBouncer 1.6.1  -  "Studio Audience Approves"**
440
441- Features
442  * New setting: `server_reset_query_always`.  When set,
443    disables `server_reset_query` use on non-session pools.
444    PgBouncer introduces per-pool pool_mode, but session-pooling
445    and transaction-pooling should not use same reset query.
446    In fact, transaction-pooling should not use any reset query.
447
448    It is set in 1.6.x, but will be disabled in 1.7.
449
450- Fixes
451  * [SECURITY]  Remove invalid assignment of `auth_user`. (#69)
452    When `auth_user` is set and client asks non-existing username,
453    client will log in as `auth_user`.  Not good.
454
455    [CVE-2015-6817](https://access.redhat.com/security/cve/cve-2015-6817)
456
457  * Skip NoticeResponce in handle_auth_response.  Otherwise verbose
458    log levels on server cause login failures.
459
460  * console: Fill `auth_user` when auth_type=any.  Otherwise
461    logging can crash (#67).
462
463  * Various portability fixes (OpenBSD, Solaris, OSX).
464
465**2015-08-01  -  PgBouncer 1.6  -  "Zombies of the future"**
466
467- Features
468
469  * Load user password hash from postgres database.
470    New parameters:
471
472    auth_user
473        user to use for connecting same db and fetching user info.
474        Can be set per-database too.
475
476    auth_query
477        SQL query to run under auth_user.
478        Default: "SELECT usename, passwd FROM pg_shadow WHERE usename=$1"
479
480    (Cody Cutrer)
481
482  * Pooling mode can be configured both per-database and per-user.
483    (Cody Cutrer)
484
485  * Per-database and per-user connection limits: max_db_connections and
486    max_user_connections.
487    (Cody Cutrer / Pavel Stehule)
488
489  * Add DISABLE/ENABLE commands to prevent new connections.
490    (William Grant)
491
492  * New DNS backend: c-ares.  Only DNS backend that supports all
493    interesting features:  /etc/hosts with refresh, SOA lookup,
494    large replies (via TCP/EDNS+UDP), IPv6.  It is the preferred
495    backend now, and probably will be **only** backend in the future,
496    as it's pointless to support zoo of inadequate libraries.
497
498    SNAFU: c-ares versions <= 1.10 have bug which breaks CNAME-s support
499    when IPv6 has been enabled.  (Fixed upstream.)  As a workaround,
500    c-ares <= 1.10 is used IPv4-only.  So PgBouncer will drop other backends
501    only when c-ares >1.10 (still unreleased) has been out some time...
502
503  * Show remote_pid in SHOW CLIENTS/SERVERS.  Available for clients that
504    connect over unix sockets and both tcp and unix socket server.
505    In case of tcp-server, the pid is taken from cancel key.
506
507  * Add separate config param (dns_nxdomain_ttl) for controlling
508    negative dns caching.
509    (Cody Cutrer)
510
511  * Add the client host IP address and port to application_name.
512    This is enabled by a config parameter application_name_add_host
513    which defaults to 'off'.
514    (Andrew Dunstan)
515
516  * Config files have '%include FILENAME' directive to allow configuration
517    to be split into several files.
518    (Andrew Dunstan)
519
520- Cleanups
521
522  * log: wrap ipv6 address with []
523  * log: On connect to server, show local ip and port
524  * win32: use gnu-style for long args: --foo
525  * Allow numbers in hostname, always try to parse with inet_pton
526  * Fix deallocate_all() in FAQ
527  * Fix incorrect keyword in example config file
528    (Magnus Hagander)
529  * Allow comments (with ';') in auth files.
530    (Guillaume Aubert)
531  * Fix spelling mistakes in log messages and comments.
532    (Dmitriy Olshevskiy)
533
534- Fixes
535
536  * fix launching new connections during maintenance
537    (Cody Cutrer)
538  * don't load auth file twice at boot
539    (Cody Cutrer)
540  * Proper invalidation for autodbs
541  * ipv6: Set IPV6_V6ONLY on listen socket.
542  * win32: Don't set SO_REUSEADDR on listen socket.
543  * Fix IPv6 address memcpy
544  * Fix cancellation of of waiting clients.
545    (Mathieu Fenniak)
546  * Small bug fix, must check calloc result
547    (Heikki Linnakangas)
548  * Add newline at the end of the PID file
549    (Peter Eisentraut)
550  * Don't allow new server connections when PAUSE <db> was issued.
551    (Petr Jelinek)
552  * Fix 'bad packet' during login when header is delayed.
553    (Michał Trojnara, Marko Kreen)
554  * Fix errors detected by Coverty.
555    (Euler Taveira)
556  * Disable server_idle_timeout when server count gets below min_pool (#60)
557    (Marko Kreen)
558
559PgBouncer 1.5.x
560---------------
561
562**2015-04-09  -  PgBouncer 1.5.5  -  "Play Dead To Win"**
563
564- Fixes
565  * Fix remote crash - invalid packet order causes lookup of NULL
566    pointer.  Not exploitable, just DoS.
567
568**2012-11-28  -  PgBouncer 1.5.4  -  "No Leaks, Potty-Training Successful"**
569
570- Fixes
571  * DNS: Fix memory leak in getaddrinfo_a() backend.
572  * DNS: Fix memory leak in udns backend.
573  * DNS: Fix stats calculation.
574  * DNS: Improve error message handling for getaddrinfo_a().
575  * Fix win32 compile.
576  * Fix compiler dependency support check in configure.
577  * Few documentation fixes.
578
579**2012-09-12  -  PgBouncer 1.5.3  -  "Quantum Toaster"**
580
581- Critical fix
582
583  * Too long database names can lead to crash, which
584    is remotely triggerable if autodbs are enabled.
585
586    The original checks assumed all names come from config files,
587    thus using fatal() was fine, but when autodbs are enabled
588    - by '*' in [databases] section - the database name can come
589    from network thus making remote shutdown possible.
590
591    [CVE-2012-4575](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-4575)
592
593- Minor Features
594
595  * max_packet_size - config parameter to tune maximum packet size
596    that is allowed through.  Default is kept same: (2G-1), but now
597    it can be made smaller.
598  * In case of unparseable packet header, show it in hex in log and
599    error message.
600
601- Fixes
602
603  * AntiMake: it used $(relpath) and $(abspath) to manupulate pathnames,
604    but the result was build failure when source tree path contained
605    symlinks.  The code is now changed to work on plain strings only.
606  * console: now SET can be used to set empty string values.
607  * config.txt: show that all timeouts can be set in floats.
608    This is well-hidden feature introduced in 1.4.
609
610**2012-05-29  -  PgBouncer 1.5.2  -  "Don't Chew, Just Swallow"**
611
612- Fixes
613  * Due to mistake, reserve_pool_timeout was taken in microseconds,
614    not seconds, effectively activating reserve pool immediately
615    when pool got full.  Now use it as seconds, as was intended.
616    (Noticed by Keyur Govande)
617
618**2012-04-17  -  PgBouncer 1.5.1  -  "Abort, Retry, Ignore?"**
619
620- Features
621  * Parameters to tune permissions on unix socket:
622    unix_socket_mode=0777, unix_socket_group=''.
623- Fixes
624  * Allow empty string for server-side variable - this is
625    needed to get "application_name" properly working, as it's
626    the only parameter that does not have server-side default.
627  * If connect string changes, require refresh of server parameters.
628    Previously PgBouncer continued with old parameters,
629    which breaks in case of Postgres upgrade.
630  * If autodb connect string changes, drop old connections.
631  * cf_setint: Use strtol() instead atoi() to parse integer config
632    parameters.  It allows hex, octal and better error detection.
633  * Use sigqueue() to detect union sigval existence - fixes
634    compilation on HPUX.
635  * Remove 'git' command from Makefile, it throws random errors
636    in case of plain-tarball build.
637  * Document stats_period parameter.  This tunes the period for
638    stats output.
639  * Require Asciidoc >= 8.4, seems docs are not compatible with
640    earlier versions anymore.
641  * Stop trying to retry on EINTR from close().
642
643**2012-01-05  -  PgBouncer 1.5  -  "Bouncing Satisified Clients Since 2007"**
644
645If you use more than 8 IPs behind one DNS name, you now need to
646use EDNS0 protocol to query.  Only getaddrinfo_a()/getaddrinfo()
647and UDNS backends support it, libevent 1.x/2.x does not.
648To enable it for libc, add 'options edns0' to /etc/resolv.conf.
649
650GNU Make 3.81+ is required for building.
651
652- Features
653  * Detect DNS reply changes and invalidate connections to IPs no longer
654    present in latest reply.
655    (Petr Jelinek)
656  * DNS zone serial based hostname invalidation.  When option
657    dns_zone_check_period is set, all DNS zones will be queried
658    for SOA, and when serial has changed, all hostnames
659    will be queried.  This is needed to get deterministic
660    connection invalidation, because invalidation on lookup
661    is useless when no lookups are performed.
662    Works only with new UDNS backend.
663  * New SHOW DNS_HOSTS, SHOW DNS_ZONES commands to examine DNS cache.
664  * New param: min_pool_size - avoids dropping all connections
665    when there is no load.
666    (Filip Rembiałkowski)
667  * idle_in_transaction_timeout - kill transaction if idle too long.
668    Not set by default.
669  * New libudns backend for DNS lookups.  More featureful than evdns.
670    Use --with-udns to activate.  Does not work with IPv6 yet.
671  * KILL command, to immediately kill all connections for one database.
672    (Michael Tharp)
673  * Move to Antimake build system to have better looking Makefiles.
674    Now GNU Make 3.81+ is required for building.
675- Fixes
676  * DNS now works with IPv6 hostnames.
677  * Don't change connection state when NOTIFY arrives from server.
678  * Various documentation fixes.
679    (Dan McGee)
680  * Console: Support ident quoting with "".  Originally we did not
681    have any commands that took database names, so no quoting was needed.
682  * Console: allow numbers at the stard of word regex.  Trying
683    to use strict parser makes things too complex here.
684  * Don't expire auto DBs that are paused.
685    (Michael Tharp)
686  * Create auto databases as needed when doing PAUSE.
687    (Michael Tharp)
688  * Fix wrong log message issued by RESUME command.
689    (Peter Eisentraut)
690  * When user= without password= is in database connect string,
691    password will be taken from userlist.
692  * Parse '*' properly in takeover code.
693  * autogen.sh: work with older autoconf/automake.
694  * Fix run-as-service crash on win32 due to bad basename() from
695    mingw/msvc runtime.  Now compat basename() is always used.
696
697PgBouncer 1.4.x
698---------------
699
700**2011-06-16  -  PgBouncer 1.4.2  -  "Strike-First Algorithm"**
701
702Affected OS-es: \*BSD, Solaris, Win32.
703
704- Portability Fixes
705  * Give CFLAGS to linker.  Needed when using pthread-based
706    getaddrinfo_a() fallback.
707  * lib/find_modules.sh: Replace split() with index()+substr().
708    This should make it work with older AWKs.
709  * <usual/endian.h>: Ignore system htoX/Xtoh defines.  There
710    may be only subset of macros defined.
711  * <usual/signal.h>: Separate compat sigval from compat sigevent
712  * <usual/socket.h>: Include <sys/uio.h> to get iovec
713  * <usual/time.h>: Better function autodetection on win32
714  * <usual/base_win32.h>: Remove duplicate sigval/sigevent declaration
715
716**2011-04-01  -  PgBouncer 1.4.1  -  "It Was All An Act"**
717
718- Features
719
720  * Support listening/connect for IPv6 addresses.
721    (Hannu Krosing)
722  * Multiple listen addresses in 'listen_addr'.  For each getaddrinfo()
723    is called, so names can also be used.
724  * console: Send PgBouncer version as 'server_version' to client.
725
726- Important Fixes
727
728  * Disable getaddrinfo_a() on glibc < 2.9 as it crashes on older versions.
729
730    Notable affected OS'es: RHEL/CentOS 5.x (glibc 2.5), Ubuntu 8.04 (glibc 2.7).
731    Also Debian/lenny (glibc 2.7) which has non-crashing getaddrinfo_a()
732    but we have no good way to detect it.
733
734    Please use libevent 2.x on such OS'es, fallback getaddrinfo_a() is not
735    meant for production systems.  And read new 'DNS lookup support' section
736    in README to see how DNS backend is picked.
737
738    (Hubert Depesz Lubaczewski, Dominique Hermsdorff, David Sommerseth)
739
740  * Default to --enable-evdns if libevent 2.x is used.
741
742  * Turn on tcp_keepalive by default, as that's what Postgres also does.
743    (Hubert Depesz Lubaczewski)
744
745  * Set default server_reset_query to DISCARD ALL to be compatible
746    with Postgres by default.
747
748  * win32: Fix crashes with NULL unix socket addr.
749    (Hiroshi Saito)
750
751  * Fix autodb cleanup: old cleanup code was mixing up databases and pools:
752    as soon as one empty pool was found, the database was tagged as 'idle',
753    potentially later killing database with active users.
754
755    Reported-By: Hubert Depesz Lubaczewski
756
757- Fixes
758
759  * Make compat getaddrinfo_a() non-blocking, by using single parallel
760    thread to do lookups.
761  * Enable pthread compilation if compat getaddrinfo_a is used.
762  * release_server missed setting ->last_lifetime_disconnect on lifetime disconnect.
763    (Emmanuel Courreges)
764  * win32: fix auth file on DOS line endings - load_file() did not take
765    account of file shringage when loading.
766    (Rich Schaaf)
767  * <usual/endian.h>: add autoconf detection for enc/dec functions
768    so it would not create conflicts on BSD.
769    (James Pye)
770  * Don't crash when config file does not exist.
771    (Lou Picciano)
772  * Don't crash on DNS lookup failure when logging on noise level (-v -v).
773    (Hubert Depesz Lubaczewski, Dominique Hermsdorff)
774  * Use backticks instead of $(cmd) in find_modules.sh to make it more portable.
775    (Lou Picciano)
776  * Use 'awk' instead of 'sed' in find_modules.sh to make it more portable.
777    (Giorgio Valoti)
778  * Log active async DNS backend info on startup.
779  * Fix --disable-evdns to mean 'no' instead 'yes'.
780  * Mention in docs that -R requires unix_socket_dir.
781  * Discuss server_reset_query in faq.txt.
782  * Restore lost memset in slab allocator
783  * Various minor portability fixes in libusual.
784
785**2011-01-11  -  PgBouncer 1.4  -  "Gore Code"**
786
787- Features
788
789  * Async DNS lookup - instead of resolving hostnames at reload time,
790    the names are now resolved at connect time, with configurable caching.
791    (See dns_max_ttl parameter.)
792
793    By default it uses getaddrinfo_a() (glibc) as backend, if it does not
794    exist, then getaddrinfo_a() is emulated via blocking(!) getaddrinfo().
795
796    When --enable-evdns argument to configure, libevent's evdns is used
797    as backend.  It is not used by default, because libevent 1.3/1.4
798    contain buggy implementation.  Only evdns in libevent 2.0 seems OK.
799
800  * New config var: syslog_ident, to tune syslog name.
801
802  * Proper support for `application_name` startup parameter.
803
804  * Command line long options (Guillaume Lelarge)
805
806  * Solaris portability fixes (Hubert Depesz Lubaczewski)
807
808  * New config var: disable_pqexec.  Highly-paranoid environments
809    can disable Simple Query Protocol with that.  Requires apps
810    that use only Extended Query Protocol.
811
812  * Postgres compat: if database name is empty in startup packet,
813    use user name as database.
814
815- Fixes
816
817  * DateStyle and TimeZone server params need to use exact case.
818  * Console: send datetime, timezone and stdstr server params to client.
819
820- Internal cleanups
821
822  * Use libusual library for low-level utility functions.
823  * Remove fixed-length limit from server params.
824
825PgBouncer 1.3.x
826---------------
827
828**2010-09-09  -  PgBouncer 1.3.4  -  "Bouncer is always right"**
829
830- Fixes
831  * Apply fast-fail logic at connect time.  So if server is failing,
832    the clients get error when connecting.
833  * Don't tag automatically generated databases for checking on reload time,
834    otherwise they get killed, because they don't exist in config.
835  * Ignore application_name parameter by default.  This avoids the need
836    for all Postgres 9.0 users to add it into ignore_startup_parameters=
837    themselves.
838  * Correct pg_auth quoting.  '\' is not used there.
839  * Better error reporting on console, show incoming query to user.
840  * Support OS'es (OpenBSD) where tv_sec is not time_t.
841  * Avoid too noisy warnings on gcc 4.5.
842
843**2010-05-10  -  PgBouncer 1.3.3  -  "NSFW"**
844
845- Improvements
846  * Make listen(2) argument configurable: listen_backlog.  This is
847    useful on OS'es, where system max allowed is configurable.
848  * Improve disconnect messages to show what username or dbname caused
849    login to fail.
850- Fixes
851  * Move fast-fail relaunch logic around.  Old one was annoying in case of
852    permanently broken databases or users, by trying to retry even if
853    there is no clients who want to login.
854  * Make logging functions keep old errno, otherwise pgbouncer may act funny
855    on higher loglevels and logging problems.
856  * Increase the size of various startup-related buffers to handle
857    EDB more noisy startup.
858  * Detect V2 protocol startup request and give clear reason for disconnect.
859
860**2010-03-15  -  PgBouncer 1.3.2  -  "Boomerang Bullet"**
861
862- Fixes
863
864  * New config var 'query_wait_timeout'.  If client does not get
865    server connection in this many seconds, it will be killed.
866
867  * If no server connection in pool and last connect failed, then
868    don't put client connections on hold but send error immediately.
869
870    This together with previous fix avoids unnecessary stalls if
871    a database has gone down.
872
873  * Track libevent state in sbuf.c to avoid double event_del().  Although
874    it usually is safe, it does not seem to work 100%.  Now we should always
875    know whether it has been called or not.
876
877  * Disable maintenance during SUSPEND.  Otherwise with short timeouts
878    the old bouncer could close few connections after sending them over.
879
880  * Apply client_login_timeout to clients waiting for welcome packet
881    (first server connection).  Otherwise they can stay waiting
882    infinitely, unless there is query_timeout set.
883
884  * win32: Add switch -U/-P to -regservice to let user pick account
885    to run service under.  Old automatic choice between Local Service and
886    Local System was not reliable enough.
887
888  * console: Remove \0 from end of text columns.  It was hard to notice,
889    as C clients were fine with it.
890
891  * Documentation improvements.  (Greg Sabino Mullane)
892
893  * Clarify few login-related log messages.
894
895  * Change logging level for pooler-sent errors (usually on disconnect) from INFO
896    to WARNING, as they signify problems.
897
898  * Change log message for query_timeout to "query timeout".
899
900**2009-07-06  -  PgBouncer 1.3.1  -  "Now fully conforming to NSA monitoring requirements"**
901
902- Fixes
903  * Fix problem with sbuf_loopcnt which could make connections hang.
904    If query or result length is nearby of multiple of (pktlen*sbuf_loopcnt)
905    [10k by default], it could stay waiting for more data which will not
906    appear.
907  * Make database reconfigure immediate.  Currently old connections
908    could be reused after SIGHUP.
909  * Fix SHOW DATABASES which was broken due to column addition.
910  * Console access was disabled when "auth_type=any" as pgbouncer dropped username.
911    Fix: if "auth_type=any", allow any user to console as admin.
912  * Fix bad CUSTOM_ALIGN macro.  Luckily it's unused if OS already
913    defines ALIGN macro thus seems the bug has not happened in wild.
914  * win32: call WSAStartup() always, not only in daemon mode
915    as config parsing wants to resolve hosts.
916  * win32: put quotes around config filename in service
917    cmdline to allow spaces in paths.  Executable path
918    does not seem to need it due to some win32 magic.
919  * Add STATS to SHOW HELP text.
920  * doc/usage.txt: the time units in console results are in
921    microseconds, not milliseconds.
922
923**2009-02-18  -  PgBouncer 1.3 -  "New Ki-Smash Finishing Move"**
924
925- Features
926
927  * IANA has assigned port 6432 to be official port for PgBouncer.
928    Thus the default port number has changed to 6432.  Existing
929    individual users do not need to change, but if you distribute
930    packages of PgBouncer, please change the package default
931    to official port.
932
933  * Dynamic database creation (David Galoyan)
934
935    Now you can define database with name "*".  If defined, it's connect
936    string will be used for all undefined databases.  Useful mostly
937    for test / dev environments.
938
939  * Windows support (Hiroshi Saito)
940
941    PgBouncer runs on Windows 2000+ now.  Command line usage stays same,
942    except it cannot run as daemon and cannot do online reboot.
943    To run as service, define parameter service_name in config. Then:
944
945        > pgbouncer.exe config.ini -regservice
946        > net start SERVICE_NAME
947
948    To stop and unregister:
949
950        > net stop SERVICE_NAME
951        > pgbouncer.exe config.ini -unregservice
952
953    To use Windows Event Log, event DLL needs to be registered first:
954
955        > regsrv32 pgbevent.dll
956
957    Afterwards you can set "syslog = 1" in config.
958
959- Minor features
960
961  * Database names in config file can now be quoted with standard SQL
962    ident quoting, to allow non-standard characters in db names.
963
964  * New tunables: 'reserve_pool_size' and 'reserve_pool_timeout'.
965    In case there are clients in pool that have waited more that
966    'reserve_pool_timeout' seconds, 'reserve_pool_size' specifies
967    the number of connections that can be added to pool.  It can also
968    set per-pool with 'reserve_pool' connection variable.
969
970  * New tunable 'sbuf_loopcnt' to limit time spent on one socket.
971
972    In some situations - eg SMP server, local Postgres and fast network -
973    pgbouncer can run recv()->send() loop many times without blocking
974    on either side.  But that means other connections will stall for
975    a long time.  To make processing more fair, limit the times
976    of doing recv()->send() one socket.  If count reaches limit,
977    just proceed processing other sockets.  The processing for
978    that socket will resume on next event loop.
979
980    Thanks to Alexander Schöcke for report and testing.
981
982  * crypt() authentication is now optional, as it was removed from Postgres.
983    If OS does not provide it, pgbouncer works fine without it.
984
985  * Add milliseconds to log timestamps.
986
987  * Replace old MD5 implementation with more compact one.
988
989  * Update ISC licence with the FSF clarification.
990
991- Fixes
992
993  * In case event_del() reports failure, just proceed with cleanup.
994    Previously pgbouncer retried it, in case the failure was due ENOMEM.
995    But this has caused log floods with inifinite repeats, so it seems
996    libevent does not like it.
997
998    Why event_del() report failure first time is still mystery.
999
1000  * --enable-debug now just toggles whether debug info is stripped from binary.
1001    It no longer plays with -fomit-frame-pointer as it's dangerous.
1002
1003  * Fix include order, as otherwise system includes could come before
1004    internal ones.  Was problem for new md5.h include file.
1005
1006  * Include COPYRIGHT file in .tgz...
1007
1008PgBouncer 1.2.x
1009---------------
1010
1011**2008-08-08  -  PgBouncer 1.2.3  -  "Carefully Selected Bytes"**
1012
1013- Fixes
1014  * Disable SO_ACCEPTFILTER code for BSDs which did not work.
1015  * Include example etc/userlist.txt in tgz.
1016  * Use '$(MAKE)' instead 'make' for recursion (Jørgen Austvik)
1017  * Define _GNU_SOURCE as glibc is useless otherwise.
1018  * Let the libevent 1.1 pass link test so we can later report "1.3b+ needed"
1019  * Detect stale pidfile and remove it.
1020
1021Thanks to Devrim GÜNDÜZ and Bjoern Metzdorf for problem reports and testing.
1022
1023**2008-08-06  -  PgBouncer 1.2.2  -  "Barf-bag Included"**
1024
1025- Fixes
1026  * Remove 'drop_on_error', it was a bad idea.  It was added as workaround
1027    for broken plan cache behaviour in Postgres, but can cause damage
1028    in common case when some queries always return error.
1029
1030**2008-08-04  -  PgBouncer 1.2.1  -  "Waterproof"**
1031
1032- Features
1033  * New parameter 'drop_on_error' - if server throws error the connection
1034    will not be reused but dropped after client finished with it.  This is
1035    needed to refresh plan cache.  Automatic refresh does not work even in 8.3.
1036    Defaults to 1.
1037- Fixes
1038  * SHOW SOCKETS/CLIENTS/SERVERS: Don't crash if socket has no buffer.
1039  * Fix infinite loop on SUSPEND if suspend_timeout triggers.
1040- Minor cleanups
1041  * Use <sys/uio.h> for 'struct iovec'.
1042  * Cancel shutdown (from SIGINT) on RESUME/SIGUSR2,
1043    otherwise it will trigger on next PAUSE.
1044  * Proper log message if console operation is canceled.
1045
1046**2008-07-29  -  PgBouncer 1.2  -  "Ordinary Magic Flute"**
1047
1048PgBouncer 1.2 now requires libevent version 1.3b or newer.
1049Older libevent versions crash with new restart code.
1050
1051- Features
1052
1053  * Command line option (-u) and config parameter (user=) to support user
1054    switching at startup.  Also now pgbouncer refuses to run as root.
1055
1056    (Jacob Coby)
1057
1058  * More descriptive usage text (-h).  (Jacob Coby)
1059
1060  * New database option: connect_query to allow run a query on new
1061    connections before they are taken into use.
1062
1063    (Teodor Sigaev)
1064
1065  * New config var 'ignore_startup_parameters' to allow and ignore
1066    extra parameters in startup packet.  By default only 'database'
1067    and 'user' are allowed, all others raise error.  This is needed
1068    to tolerate overenthusiastic JDBC wanting to unconditionally
1069    set 'extra_float_digits=2' in startup packet.
1070
1071  * Logging to syslog: new parameters syslog=0/1 and
1072    syslog_facility=daemon/user/local0.
1073
1074  * Less scary online restart (-R)
1075
1076    - Move FD loading before fork, so it logs to console and can be canceled by ^C
1077
1078    - Keep SHUTDOWN after fork, so ^C would be safe
1079
1080    - A connect() is attempted to unix socket to see if anyone is listening.
1081      Now -R can be used even when no previous process was running.  If there
1082      is previous process, but -R is not used, startup fails.
1083
1084  * New console commands:
1085
1086    - SHOW TOTALS that shows stats summary (as goes to log) plus mem usage.
1087
1088    - SHOW ACTIVE_SOCKETS - like show sockets; but filter only active ones.
1089
1090- Less visible features
1091
1092  * suspend_timeout - drop stalled conns and long logins. This brings
1093    additional safety to reboot.
1094
1095  * When remote database throws error on logging in, notify clients.
1096
1097  * Removing a database from config and reloading works - all connections
1098    are killed and the database is removed.
1099
1100  * Fake some parameters on console SHOW/SET commands to be more Postgres-like.
1101    That was needed to allow psycopg to connect to console.
1102    (client_encoding/default_transaction_isolation/datestyle/timezone)
1103
1104  * Make server_lifetime=0 disconnect server connection immediately
1105    after first use.  Previously "0" made PgBouncer ignore server age.
1106    As this behavior was undocumented, there should not be any users
1107    depending on it.
1108
1109  * Internal improvements:
1110
1111    - Packet buffers are allocated lazily and reused.  This should bring
1112      huge decrease in memory usage.  This also makes realistic to use
1113      big pktbuf with lot of connections.
1114
1115    - Lot's of error handling improvements, PgBouncer should now
1116      survive OOM situations gracefully.
1117
1118    - Use slab allocator for memory management.
1119
1120    - Lots of code cleanups.
1121
1122- Fixes
1123
1124  * Only single accept() was issued per event loop which could
1125    cause connection backlog when having high amount of connection
1126    attempts.  Now the listening socket is always drained fully,
1127    which should fix this.
1128  * Handle EINTR from connect().
1129  * Make configure.ac compatible with autoconf 2.59.
1130  * Solaris compatibility fixes (Magne Mæhre)
1131
1132PgBouncer 1.1.x
1133---------------
1134
1135**2007-12-10  -  PgBouncer 1.1.2  -  "The Hammer"**
1136
1137- Features
1138  * Disconnects because of server_lifetime are now separated by
1139    (server_lifetime / pool_size) seconds.  This avoids pgbouncer
1140    causing reconnect floods.
1141- Fixes
1142  * Online upgrade 1.0 -> 1.1 problems:
1143    - 1.0 does not track server parameters, so they stay NULL
1144      but 1.1 did not expect it and crashed.
1145    - If server params are unknown, but client ones are set,
1146      then issue a SET for them, instead complaining.
1147  * Remove temp debug statements that were accidentally left
1148    in code on INFO level, so they polluted logs.
1149  * Unbroke debian/changelog
1150- Cleanup
1151  * reorder struct SBuf fields to get better alignment for buffer.
1152
1153**2007-10-26  -  PgBouncer 1.1.1  -  "Breakdancing Bee"**
1154
1155- Fixes
1156  * Server parameter cache could stay uninitialized, which caused
1157    unnecessary SET of them.  This caused problem on 8.1 which
1158    does not allow touching standard_conforming_strings.
1159    (Thanks to Dimitri Fontaine for report & testing.)
1160  * Some doc fixes.
1161  * Include doc/fixman.py in .tgz.
1162
1163**2007-10-09  -  PgBouncer 1.1  -  "Mad-Hat Toolbox"**
1164
1165- Features
1166
1167  * Keep track of following server parameters:
1168
1169        client_encoding  datestyle, timezone, standard_conforming_strings
1170
1171  * Database connect string enhancements:
1172
1173    - Accept hostname in host=
1174    - Accept custom unix socket location in host=
1175    - Accept quoted values: password=' asd''foo'
1176
1177  * New config var: server_reset_query, to be sent immidiately after release
1178  * New config var: server_round_robin, to switch between LIFO and RR.
1179  * Cancel pkt sent for idle connection does not drop it anymore.
1180  * Cancel with ^C from psql works for SUSPEND / PAUSE.
1181  * Print FD limits on startup.
1182  * When suspending, try to hit packet boundary ASAP.
1183  * Add 'timezone' to database parameters.
1184  * Use longlived logfile fd.  Reopened on SIGHUP / RELOAD;
1185  * Local connection endpoint info in SHOW SERVERS/CLIENTS/SOCKETS.
1186
1187- Code cleanup
1188
1189  * More debug log messages include socket info.
1190  * Magic number removal and error message cleanup. (David Fetter)
1191  * Wrapper struct for current pkt info.  Removes lot of compexity.
1192
1193- Fixes
1194
1195  * Detect invalid pkt headers better.
1196  * auth_file modification check was broken, which made pgbouncer
1197    reload it too often.
1198
1199PgBouncer 1.0.x
1200---------------
1201
1202**2007-06-18  -  PgBouncer 1.0.8  -  "Undead Shovel Jutsu"**
1203
1204- Fixes
1205  * Fix crash in cancel packet handling. (^C from psql)
1206- Features
1207  * PAUSE <db>; RESUME <db>; works now.
1208  * Cleanup of console command parsing.
1209  * Disable expensive in-list assert check.
1210
1211**2007-04-19  -  PgBouncer 1.0.7  -  "With Vitamin A-Z"**
1212
1213- Fixes
1214  * Several error/notice packets with send() blocking between
1215    triggered assert.  Fix it by removing flushing logic altogether.
1216    As pgbouncer does not actively buffer anything, its not needed.
1217    It was a remnant from the time when buffering was pushed to
1218    kernel with MSG_MORE.
1219  * Additionally avoid calling recv() logic when sending unblocks.
1220  * List search code for admin_users and stats_users
1221    mishandled partial finds.  Fix it.
1222  * Standardise UNIX socket peer UID finding to getpeereid().
1223
1224**2007-04-12  -  PgBouncer 1.0.6  -  "Daily Dose"**
1225
1226- Fixes
1227  * The "Disable maintenance during the takeover" fix could
1228    disable maintenance altogether.  Fix it.
1229  * Compilation fix for FreeBSD, <sys/ucred.h> requires <sys/param.h> there.
1230    Thanks go to Robert Gogolok for report.
1231
1232**2007-04-11  -  PgBouncer 1.0.5  -  "Enough for today"**
1233
1234- Fixes
1235  * Fix online-restart bugs:
1236    - Set ->ready for idle servers.
1237    - Remove obsolete code from use_client_socket()
1238    - Disable maintenance during the takeover.
1239
1240**2007-04-11  -  PgBouncer 1.0.4  -  "Last 'last' bug"**
1241
1242- Fixes
1243  * Notice from idle server tagged server dirty.
1244    release_server() did not expect it.  Fix it
1245    by dropping them.
1246
1247**2007-04-11  -  PgBouncer 1.0.3  -  "Fearless Fork"**
1248
1249- Fixes
1250  * Some error handling was missing in login path, so dying
1251    connection there could trigger asserts.
1252  * Cleanup of asserts in sbuf.c to catch problems earlier.
1253  * Create core when Assert() triggers.
1254
1255- New stuff
1256  * New config vars: log_connections, log_disconnections,
1257    log_pooler_errors to turn on/off noise.
1258  * Config var: client_login_timeout to kill dead connections
1259    in login phase that could stall SUSPEND and thus online restart.
1260
1261**2007-03-28  -  PgBouncer 1.0.2  -  "Supersonic Spoon"**
1262
1263- Fixes
1264  * libevent may report a deleted event inside same loop.
1265    Avoid socket reuse for one loop.
1266  * release_server() from disconnect_client() didnt look
1267    it the packet was actually sent.
1268
1269**2007-03-15  -  PgBouncer 1.0.1  -  "Alien technology"**
1270
1271- Fixes
1272  * Mixed usage of cached and non-cached time, plus unsiged usec_t typedef
1273    created spurious query_timeout errors.
1274  * Fix rare case when socket woken up from send-wait could stay stalling.
1275  * More fair queueing of server connections.  Before, a new query could
1276    get a server connections before older one.
1277  * Delay server release until everything is guaranteed to be sent.
1278
1279- Features
1280  * SHOW SOCKETS command to have detailed info about state state.
1281  * Put PgSocket ptr to log, to help tracking one connection.
1282  * In console, allow SELECT in place of SHOW.
1283  * Various code cleanups.
1284
1285**2007-03-13  -  PgBouncer 1.0  -  "Tuunitud bemm"**
1286
1287- First public release.
1288