* Support Python 3.8
(by 1st1 in 504)
* Support PgBouncer by sending only a single SYNC message per query
(by fvannee in b043fbd3)
* Handle IP values with prefix in "inet" type as `ipaddress.IPvXInterface`
(by elprans in 5a4daf71 for 497)
* Close transport if connection times out
(by hexrain in 926f4833 for 468)
* Use faster UUID codecs; make UUID decoding/encoding/operations 2-7x faster
(by 1st1 in edde3ff4)
* Use `loop.start_tls()` to upgrade connections to SSL
(by 1st1 in bdba7ce7)
* Bump Cython to 0.29.14
(by 1st1 in 7cb31bc6)
* Add support for SCRAM-SHA-256 authentication.
(by jkatz in 2d76f50d)
* Add PostgreSQL 12 support
(by elprans in 23261532)
* Remove preexec_fn hack from test cluster management
(by elprans in 36ed11d2)
* Fix DeprecationWarning in the docstring of copy_from_query()
(by elprans in 482a39ae)
* Allow specifying the target version when generating the release log
(by elprans in 43a7b213)
* Check for .flake8 after importing flake8
(by dotlambda in aaeb7076)
* Include .flake8 in PyPI tarball
(by dotlambda in 43c6b9ce)
* fix timezone type label in docs
(by claws in e91e4911)
* Fix _StatementCache.clear() PS memory leak
(by un-def in f4aa9bf4 for 416)
* fix for warning_callback not yet defined
(by samuelcolvin in 354d9be5)
* Fix assertion fail on copy_records_to_table
(by Petr Reznikov in ae5a89db)
* Do not look for a port in a Unix socket domain path
(by Lawouach in b773912d for 419)
* Unquote connection string components properly
(by elprans in 5513b9d3 for 418)
* Remove superfluous transaction from a cursor example
(by elprans in 32fccaad for 475)
* Revert "Stop treating ReadyForQuery as a universal result indicator"
to fix stability regression.
(by elprans in 04b67480)
* Correctly ignore all incoming messages after the Terminate message
(by elprans in 787317fb)
* Properly cleanup connections closed by remote
(by elprans in 4393a159 for 385)
* Fix DSN parsing regression
(by elprans in 8b98e7b4)
* Implement `Record.get()`
(by elprans in 2b93ee55 for 330)
* Internal asyncpg errors are now consistently raised as
`InternalClientError` (by elprans in 263de3ff)
* Allow mappings as composite type input
(by elprans in eaa2fa1a for 349)
* Add `BitString.to_int()` and `BitString.from_int()`
(by percontation in ffd134e8)
* Allow 'sslmode' in DSNs
(by percontation in 0304288e)
* Add support for specifying multiple host addresses when connecting
(by elprans in 1d650ed9 for 257)
* Low-level protocol implementation has been tweaked and
optimized for slightly better performance in certain scenarios
(by elprans in 7a816138 and cc053fe5)
* Queries with cached statements now generate fewer TCP packets
(by aleksey-mashanov in bf071996)
* Allow aliasing builtin types by name in `set_builtin_type_codec()`
(by elprans in 687127ed)
* Factor out generic PostgreSQL protocol helpers into a separate package
(by 1st1 in f0adefc7)
* Fix tests and enable CI for PostgreSQL 11
(by elprans in ddb0ec29 and 716fd9d3)
* Handle and ignore permission errors when attempting to read .pgpass
(by elprans in df7830f0 for 356)
* Fix decoding of fractional timestamps before Postgres epoch
(by elprans in a7eaf2b3 for 363)
Official support for Python 3.7.
* Fix garbage collection of connections and emit a `ResourceWarning`
if an unclosed connection is garbage collected.
(by 1st1 in d9a236e7 for 323)
* Raise a clear error if there's a race in pool intialization.
(by 1st1 in 3565ef8c for 320)
* Channel names in `Connection.add_listener()` and
`Connection.remove_listener()` are now quoted properly.
(by sqwishy in 3e6ade62)
* Fixed endianness detection on *BSD systems.
(by elprans in 8c83add4 for 313)
* Fixed handling of large type OIDs.
(by elprans in 2624bdb9 for 300)
`Pool.close()` now waits until all acquired connections are released.
Hence, the below code will now hang indefinitely:
conn = await pool.acquire()
Asyncpg will log a warning if `pool.close()` takes over 60 seconds to
complete. It is advisable to use `asyncio.wait_for()` to set a timeout.
* Add support for reading passwords from .pgpass
(by elprans in 55a372fc for 267)
* Add `Connection.is_in_transaction()` (297)
(by bcaudell95 in cf523be7 for 297)
* Added codec for built-in type tid
(by fantix in cddea9c1)
* Allow setting custom codecs on domains and enumerated types
(by elprans in 3139322a)
* Allow passing `datetime.date` instances as timestamp input
(by elprans in e8cc627a for 288)
* Implement support for pool connection rotation
(by elprans in 4d209b75 for 291)
* Prohibit non-iterable containers to be passed as array input
(by elprans in a2fa7b23)
* Decode numeric zeros with correct scale
(by Dmitriy Chugunov in 4124f7d2)
* Fix handling of OIDs >= 2**31
(by elprans in 8dd7a6cb for 279)
* Make `Pool.close()` wait until all checked out connections are released
(by elprans in 7a0585ac for 290)
* Fix type codec cache races
(by elprans in 482a1866 for 278)
* Raise a consistent exception on input encoding errors
(by elprans in 0ddfa466 for 260)
asyncpg no longer uses the common statement cache for explicit
prepared statements, so `Connection.prepare()` always returns a
new prepared statement (by vangheem in a19ce50f).
* Initialize statement codecs immediately after Prepare
(by elprans in 803c1155 for 241)
* Fix server version parsing when it contains trailing data
(by elprans in 05dce25f for 250)
Backwards Incompatible Changes
asyncpg now reports the server version as x.0.y for PostgreSQL 10.0 and later.
This is in alignment with how upstream is interpreting the "minor" version
component now. (elprans in 1fa12fe2)
* Support timeouts in `Connection.close()` and `Pool.release()`
(by elprans in bdfdd898 for 220)
* Invalidate type cache on schema changes affecting statement result.
A new `Connection.reload_schema_state()` method.
(by vitaly-burovoy in b04556e9)
* Add CrateDB detection
(by mfussenegger in afc1038f)
* Make prepared statement uid generator global
(by 1st1 in 3e43fcf5)
* Document pgbouncer-related prepared statement breakage
(by elprans in 4a3713f7 for 121)
* Fix unaligned access issues in host-network byte I/O on ARM
(by elprans in c04576db for 216)
* Fix issues with timetz type I/O
(by vitaly-burovoy in 7b6c0833)
* Consistently use postgres/postgres as database/user pair in tests
(by elprans in b4ce7403)
* Fix `Range.__hash__()`
(by eumiro in 46f468c9)
* Guard transaction methods against underlying connection release
(by elprans in 59e2878b for 232)
Backwards Incompatible Changes
* Drop support for PostgreSQL 9.1
(by elprans in eaf298b4)
* Remove the deprecated "binary" parameter from `Connection.set_type_codec()`
(by elprans in 9ad6625a)
* Add support for PostgreSQL 10
* Document that single fetches can return None
(by khazhyk in 23394c9d)
* Fix type introspection being very slow on large databases
(by elprans in e0c44ced for 186)
* Fix copy tests on PostgreSQL < 9.4
(by elprans in 327058f8)
* Fix DeprecationWarning in tests
(by elprans in 3f9523c2)
* Fix intermittent authentication failures against PostgreSQL 10 servers
(by elprans in 498213e6 for 158)
* Do not attempt to connect to Unix sockets on Windows when host is not set
(by elprans in 8a32fc4b for 184)
* Guard against incorrect use of resources associated with a connection
(by elprans in 089ac818, 93bf26f3 for 190)
* Warn when there are active listeners on a connection that is released
(by elprans in d085d2cc for 190)
* Add a test for cursors on a standby replica.
(by elprans in c484a470 for 66)
* Clarify the argument/parameter count mismatch exception
(by elprans in b6fe0186 for 178)
* Fix `TypeError` on `get_attributes` when result has no columns
(by fantix in f29de232)
* protocol: Use `try`-`finally` explicitly every time we create a waiter
(by 1st1 in 50edd8c8)
* Call correct parent constructor in `InterfaceWarning.__init__`
(by elprans in eec98b0b)
* Allow grabbing the version information programmatically.
(by s0undt3ch in fa6dbc46)
* Use the general statement cache for type introspection
(by elprans in 57c9ffdc for 198)
* Fix issues with inet type I/O
(by elprans in e54f02e6 for 37)
* Handle inactive connection closes while stored in the pool
(by AmatanHead in 9744adee)
* Implement `as_dict()` method for `PostgresMessage`.
(by vitaly-burovoy in 90725f1f)
* Add API for receiving log messages `connection.add_log_listener()`.
(by vitaly-burovoy and 1st1 in 1b1893df and f072f883 for 144)
* Add support for "tuple" exchange format for codec overrides.
(by elprans in 0453243b and d27dda72)
* Implement binary format codec for numeric type.
(by elprans in a5413eb0 for 157)
* Fix boundary checks for integers.
(by vitaly-burovoy in e0829104 and dfcf1356)
* Fix handling of `NULL`s in copy_records_to_table().
(by elprans in 991b1ae8 for 153)
* Raise an error when a binary `COPY FROM` is attempted w/o appropriate codec.
(by elprans in 7aac14e2 for 157)
* Fix `Record.items()` to support duplicate keys. See 28 for details.
(by 1st1 in 39b390c3 for 28)
* Fix `Record.keys()` to correctly return duplicate keys. See 28.
(by 1st1 in b06114de for 28)
* Call notifications listeners using `loop.call_soon()`.
(by 1st1 in 83d08bd8)
* Make `PoolConnectionProxy` more dynamic. Fixes 155.
(by 1st1 in 6ca1f28b for 155)
* Make sure `set_type_codec()` overrides core codec for all formats.
(by elprans in 9c32b86f for 140)
* New severity "V" field as "severity_en" attribute.
(by vitaly-burovoy in 35bce5a8)
* Make interval decoding logic match that of psycopg2.
(by elprans in 6b484433 for 150)
Backwards Incompatible Changes
* Make `timeout` param of `executemany()` a keyword-only kwarg.
(by 1st1 in bb326fc0)
* Prohibit passing non-string instances as text arguments to queries.
(by elprans in ccc5f7a5)
* `connect()` and `create_pool()` no longer accept arbitrary
keyword arguments for server settings. Use new `server_settings`
argument for that.
* Add support for COPY IN.
(by elprans in 10d95d43 for 123)
* Add support for COPY OUT.
(by elprans and 1st1 in 5662d9f5 for 21)
* Refactor args parsing and config management for `connect()` and
(by 1st1 in f280a566)
* support postgres-xl version
(by songjy in ffb89592)
* Fix erroneous codec cache invalidation on internal codec aliasing.
(by elprans in df64f554 for 133)
* Fix potential segfault in text array decoder.
(by elprans in bbd116be)
* Limit max number of arguments (closes 127).
(by 1st1 in 128910e4 for 127)
* Expand usage documentation, add FAQ.
(by elprans in e4bef17f)
* Add new Connection parameter: `max_cacheable_statement_size`.
(by 1st1 in b1f87ebe for 115)
* Require `command_timeout` argument of `connect()` be greater than 0.
(by 1st1 in 7b7ce990)
* Fix SSL support in connection pool.
(by elprans in b89fb458 for 119)
* Make timeout in connect() consistent.
(by 1st1 in 1d8f5cf1 for 117)
* Add support for SSL connections.
(by 1st1 in 5836a8fc for 25)
* Add `max_cached_statement_lifetime` parameter to `asyncpg.connect()`.
(by 1st1 in 10955fdd for 76)
* Add `max_inactive_connection_lifetime` parameter to `asyncpg.create_pool()`.
(by 1st1 in a2935aed)
* Expose some of `Connection` methods directly on the Pool object.
(by 1st1 in 1b3a847c for 39)
* Allow overriding codecs for builtin types on a connection.
(by elprans in 71de129b for 73)
* Add support for the text I/O fallback for arrays of unknown types.
(by elprans in a2e53ab0 for 82)
* Make the `Record` type available as `asyncpg.Record`.
(by elprans in d42608f9 for 93)
* pool: Track connections and prohibit using them after release.
(by 1st1 in 3bf6103e)
* Rollback any active transactions in `Connection.reset()`.
(by 1st1 in 0d19d962)
* Invalidate statement cache on schema changes affecting statement result.
(by elprans in 749d857a for 72)
* Use anonymous prepared statements when the cache is off.
(by 1st1 in a3e9cb45 for 76)
* Raise an error if connection is used after being closed.
(by 1st1 in 5ddd7fc9)
* Add Amazon Redshift detection.
(by elprans in 4fdc1dbc for 29)
* Add rudimentary server capability detection.
(by elprans in e8bb3dc0 for 87)
* Handle exceptions in generators passed to `Connection.executemany()`.
(by elprans in 8d17eccb for 85)
* Shield `Pool.release()` from task cancellation.
(by elprans in 537c8c9f for 97)
* Fix inclusion of `DETAIL` and `HINT` in Postgres messages.
(by elprans in 2e346c12)
* Implement conistent handling of timeouts.
(by elprans in 1674dece)
* Make `timeout` arg of `Connection.executemany()` a keyword-only arg.
(by 1st1 in 424760d3)
Elvis Pranskevichus (9):
- Increase pool.acquire timeout in tests to avoid failures on Travis
- Silence a few -Wmaybe-uninitialized warnings
- Increase test timeouts
- Attempt to fix spurious failures of test_auth_reject on Windows
- Use ssize_t for buffer sizes consistently
- Add infrastructure for multiformat data codecs
- Implement text array decoder (60)
- ci: Make sure wheel builds on macOS start from a clean slate (61)
Vitaly Burovoy (3):
- Make TYPEMAP be stable and avoid extra endline at the end of pgtypes.pxi
- Make error message be the same as in the "_get_array_shape" function.
- Add codec tests for "aclitem" type
Elvis Pranskevichus (7):
- Fix Connection.reset() on read-only connections (48)
- Add compatibility with PostgreSQL server versions 9.1-9.3
- travis: Test on all available PostgreSQL versions
- travis: Also build on Python 3.6
- Fix setup.py metadata and README rst issues
- ci: Switch to staged release process
- travis: Fix documentation deploy on tagged builds (52)
Lele Gaifax (1):
- Fix typo in API documentation
Yury Selivanov (2):
- cython: Make async def coroutines awaitable in cythonized coroutines
- connection: Fix waiter wakeup code in _cancel_current_command
Chris Lamb (1):
- Fix parsing pg_ctl output in some locales
Elvis Pranskevichus (9):
- Fix building of wheels on macOS
- setup.py: Support --cython-directives properly
- Decode arrays as lists, handle arrays of composite types (33)
- Ignore system and dropped attributes in composite types (43)
- Fix handling of CIDR input to "inet" data type (37)
- Implement the Connection.executemany() method (36)
Yury Selivanov (3):
- Allow empty Record objects.
- cluster: Fix how settings args are passed to 'init'
- Enable 'setup.py test'
Elvis Pranskevichus (5):
Merge pull request 24 from johnkingsley/master
Make it possible to override cluster connection parameters
Move compilation logic to setup.py
Add Windows support (31)
John Kingsley (1):
Fixed copy-and-paste error in Line type
- Fix timestamp codec on 32-bit systems
- Allow any non-trivial Container to be passed as an array argument
- Fix pool connection failure when a password is present (16)
- Various portability and robustness improvements