v0.25.0
Changes
Improve SSL option compatibility in URIs
Add Pool methods to determine its min, max, current and idle size
Make it possible to specify a statement name in Connection.prepare()
Implement support for multirange types
Fixes
Make sure timeout callbacks always get cleaned up
Update __all__ statements to a simpler form that is better supported by typecheckers
Fix test_timetz_encoding on Python 3.10
Fix a bunch of ResourceWarnings in the test suite
Fix SSLContext deprecation warnings
Fix the description of the database argument to connect()
Fix parsing of IPv6 addresses in the connection URI
Improve diagnostics of invalid executemany() input
All checksums have been double-checked against existing RMD160 and
SHA512 hashes
The following distfiles could not be fetched (some may be only fetched
conditionally):
./databases/cstore/distinfo D6.data.ros.gz
./databases/cstore/distinfo cstore0.2.tar.gz
./databases/cstore/distinfo data4.tar.gz
v0.24.0
Changes
Drop support for Python 3.5
Add support for Python 3.10
Add support for asynchronous iterables to copy_records_to_table()
Add support for coroutine functions as listener callbacks
Add support for sslcert, sslkey and sslrootcert parameters to DSN
Add copy_ wrappers to Pool
Add issubset and issuperset methods to the Range type
Fixes
Break connection internal circular reference
Make Server Version Extraction More Flexible
v0.23.0
Fixes
Avoid TypeError in Transaction.__repr__
Feed memoryview to writelines()
Add sslmode=allow support and fix =prefer retry
Loosen message test in test_invalid_input
Support readonly and deferrable for non-serializable transactions
Fix asyncpg with Py_DEBUG mode
Fix docs/Makefile and docs/_static/theme_overrides.css missing from PyPI package
v0.22.0
A new asyncpg release is here.
Notable additions include Python 3.9 support, support for recently added
PostgreSQL types like jsonpath, and last but not least, vastly
improved executemany() performance. Importantly, executemany() is
also now atomic, which means that either all iterations succeed, or
none at all, whereas previously partial results would have remained in
place, unless executemany() was called in a transaction.
There is also the usual assortment of improvements and bugfixes, see the
details below.
This is the last release of asyncpg that supports Python 3.5, which has
reached EOL last September.
Improvements
Vastly speedup executemany by batching protocol messages
Allow using custom Record class
Add Python 3.9 support
Prefer SSL connections by default
Add codecs for a bunch of new builtin types
Expose Pool as asyncpg.Pool
Avoid unnecessary overhead during connection reset
asyncpg v0.21.0
Improvements
Add support for password functions (useful for RDS IAM auth)
Add support for connection termination listeners
Update CI matrix, aarch64 builds
Fixes
Fix possible uninitalized pointer access on unexpected array
message data (CVE-2020-17446)
Fix Connection class _copy_in private method
Bump pgproto to fix compilation issues
Improve pool documentation examples
Update usage.rst
Fix links in connection documentation
Fix usage documentation for hstore
Fix compiler warnings
asyncpg v0.20.0
Improvements
Support Python 3.8
Support PgBouncer by sending only a single SYNC message per query
Bug Fixes
Handle IP values with prefix in "inet" type as ipaddress.IPvXInterface
Close transport if connection times out
Use faster UUID codecs; make UUID decoding/encoding/operations 2-7x faster
Use loop.start_tls() to upgrade connections to SSL
Build
Bump Cython to 0.29.14
asyncpg v0.19.0
Improvements
Add support for SCRAM-SHA-256 authentication.
Add PostgreSQL 12 support
Bug Fixes
Remove preexec_fn hack from test cluster management
Fix DeprecationWarning in the docstring of copy_from_query()
Allow specifying the target version when generating the release log
Check for .flake8 after importing flake8
Include .flake8 in PyPI tarball
fix timezone type label in docs
Fix _StatementCache.clear() PS memory leak
fix for warning_callback not yet defined
Fix assertion fail on copy_records_to_table
Do not look for a port in a Unix socket domain path
Unquote connection string components properly
Remove superfluous transaction from a cursor example
asyncpg v0.18.2
Bug Fixes
* Revert "Stop treating ReadyForQuery as a universal result indicator"
to fix stability regression.
* Correctly ignore all incoming messages after the Terminate message
* Properly cleanup connections closed by remote
asyncpg v0.18.1:
Fix DSN parsing regression
asyncpg v0.18.0:
Improvements
Implement Record.get()
Internal asyncpg errors are now consistently raised as InternalClientError
Allow mappings as composite type input
Add BitString.to_int() and BitString.from_int()
Allow 'sslmode' in DSNs
Add support for specifying multiple host addresses when connecting
Low-level protocol implementation has been tweaked and
optimized for slightly better performance in certain scenarios
Queries with cached statements now generate fewer TCP packets
Allow aliasing builtin types by name in set_builtin_type_codec()
Factor out generic PostgreSQL protocol helpers into a separate package
Fix tests and enable CI for PostgreSQL 11
Bug Fixes
Handle and ignore permission errors when attempting to read .pgpass
Fix decoding of fractional timestamps before Postgres epoch
asyncpg v0.17.0:
Improvements
Official support for Python 3.7.
Bug Fixes
Fix garbage collection of connections and emit a ResourceWarning
if an unclosed connection is garbage collected.
Raise a clear error if there's a race in pool intialization.
Channel names in Connection.add_listener() and
Connection.remove_listener() are now quoted properly.
Fixed endianness detection on *BSD systems.
Fixed handling of large type OIDs.
asyncpg v0.16.0:
Behavior Changes
----------------
Pool.close() now waits until all acquired connections are released.
Hence, the below code will now hang indefinitely:
conn = await pool.acquire()
await pool.close()
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.
Improvements
------------
Add support for reading passwords from .pgpass
Add Connection.is_in_transaction()
Added codec for built-in type tid
Allow setting custom codecs on domains and enumerated types
Allow passing datetime.date instances as timestamp input
Implement support for pool connection rotation
Bug Fixes
---------
Prohibit non-iterable containers to be passed as array input
Decode numeric zeros with correct scale
Fix handling of OIDs >= 2**31
Make Pool.close() wait until all checked out connections are released
Fix type codec cache races
Raise a consistent exception on input encoding errors
asyncpg v0.15.0
Behavior Changes
asyncpg no longer uses the common statement cache for explicit
prepared statements, so Connection.prepare() always returns a
new prepared statement
Bug Fixes
Initialize statement codecs immediately after Prepare
Fix server version parsing when it contains trailing data
v0.14.0:
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.
Improvements:
Support timeouts in Connection.close() and Pool.release()
Invalidate type cache on schema changes affecting statement result.
A new Connection.reload_schema_state() method.
Add CrateDB detection
Bug Fixes:
Make prepared statement uid generator global
Document pgbouncer-related prepared statement breakage
Fix unaligned access issues in host-network byte I/O on ARM
Fix issues with timetz type I/O
Consistently use postgres/postgres as database/user pair in tests
Fix Range.__hash__()
Guard transaction methods against underlying connection release
v0.13.0
Backwards Incompatible Changes
------------------------------
Drop support for PostgreSQL 9.1
Remove the deprecated "binary" parameter from Connection.set_type_codec()
New Features
------------
Add support for PostgreSQL 10
Bug Fixes
---------
Document that single fetches can return None
Fix type introspection being very slow on large databases
Fix copy tests on PostgreSQL < 9.4
Fix DeprecationWarning in tests
Fix intermittent authentication failures against PostgreSQL 10 servers
Do not attempt to connect to Unix sockets on Windows when host is not set
Guard against incorrect use of resources associated with a connection
Warn when there are active listeners on a connection that is released
Add a test for cursors on a standby replica.
Clarify the argument/parameter count mismatch exception
Fix TypeError on get_attributes when result has no columns
protocol: Use try-finally explicitly every time we create a waiter
Call correct parent constructor in InterfaceWarning.__init__
Allow grabbing the version information programmatically.
Use the general statement cache for type introspection
Fix issues with inet type I/O
Handle inactive connection closes while stored in the pool