^^^^^^^^^^^^^^^^^^^^^^^^
- Add support for integer, floating point, boolean `NumPy scalar types`__
(:ticket:`332`).
- Add `!timeout` and `!stop_after` parameters to `Connection.notifies()`
(:ticket:`340`).
- Add :ref:`raw-query-cursors` to execute queries using placeholders in
PostgreSQL format (`$1`, `$2`...) (:ticket:`560`).
- Add `psycopg.capabilities` object to :ref:`inspect the libpq capabilities
<capabilities>` (:ticket:`772`).
- Add `~rows.scalar_row` to return scalar values from a query (:ticket:`723`).
- Prepared statements are now :ref:`compatible with PgBouncer <pgbouncer>`.
(:ticket:`589`).
- Add `~Connection.set_autocommit()` on sync connections, and similar
transaction control methods available on the async connections.
- Add support for libpq functions to close prepared statements and portals
introduced in libpq v17 (:ticket:`603`).
- Add support for libpq encrypted and non-blocking query cancellation
functions introduced in libpq v17 (:ticket:`754`).
- The `!context` parameter of `sql` objects `~sql.Composable.as_string()` and
`~sql.Composable.as_bytes()` methods is now optional (:ticket:`716`).
- Disable receiving more than one result on the same cursor in pipeline mode,
to iterate through `~Cursor.nextset()`. The behaviour was different than
in non-pipeline mode and not totally reliable (:ticket:`604`).
The `Cursor` now only preserves the results set of the last
`~Cursor.execute()`, consistently with non-pipeline mode.
- Add `~Connection.cancel_safe()` for encrypted and non-blocking cancellation
If possible, use such method internally upon `KeyboardInterrupt` and `Copy`
termination (:ticket:`754`).
- Add support for libpq function to retrieve results in chunks introduced in
libpq v17 (:ticket:`793`).
.. __: https://numpy.org/doc/stable/reference/arrays.scalars.html#built-in-scalar-types
Current release
---------------