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