Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update psycopg2 to 2.9.7 #114

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

pyup-bot
Copy link
Collaborator

@pyup-bot pyup-bot commented Aug 5, 2023

This PR updates psycopg2 from 2.4.5 to 2.9.7.

Changelog

2.9.7

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Fix propagation of exceptions raised during module initialization
(:ticket:`1598`).
- Fix building when pg_config returns an empty string (:ticket:`1599`).
- Wheel package compiled against OpenSSL 1.1.1v.

2.9.6

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Package manylinux 2014 for aarch64 and ppc64le platforms, in order to
include libpq 15 in the binary package (:ticket:`1396`).
- Wheel package compiled against OpenSSL 1.1.1t.

2.9.5

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Add support for Python 3.11.
- Add support for rowcount in MERGE statements in binary packages
(:ticket:`1497`).
- Wheel package compiled against OpenSSL 1.1.1r and PostgreSQL 15 libpq.

2.9.4

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Fix `~psycopg2.extras.register_composite()`,
`~psycopg2.extras.register_range()` with customized :sql:`search_path`
(:ticket:`1487`).
- Handle correctly composite types with names or in schemas requiring escape.
- Find ``pg_service.conf`` file in the ``/etc/postgresql-common`` directory in
binary packages (:ticket:`1365`).
- `~psycopg2.errorcodes` map and `~psycopg2.errors` classes updated to
PostgreSQL 15.
- Wheel package compiled against OpenSSL 1.1.1q and PostgreSQL 14.4 libpq.

2.9.3

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Alpine (musl) wheels now available (:ticket:`1392`).
- macOS arm64 (Apple M1) wheels now available (:ticket:`1482`).

2.9.2

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Raise `ValueError` for dates >= Y10k (:ticket:`1307`).
- `~psycopg2.errorcodes` map and `~psycopg2.errors` classes updated to
PostgreSQL 14.
- Add preliminary support for Python 3.11 (:tickets:`1376, 1386`).
- Wheel package compiled against OpenSSL 1.1.1l and PostgreSQL 14.1 libpq
(:ticket:`1388`).

2.9.1

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Fix regression with named `~psycopg2.sql.Placeholder` (:ticket:`1291`).

2.9

-------------------------

- ``with connection`` starts a transaction on autocommit transactions too
(:ticket:`941`).
- Timezones with fractional minutes are supported on Python 3.7 and following
(:ticket:`1272`).
- Escape table and column names in `~cursor.copy_from()` and
`~cursor.copy_to()`.
- Connection exceptions with sqlstate ``08XXX`` reclassified as
`~psycopg2.OperationalError` (a subclass of the previously used
`~psycopg2.DatabaseError`) (:ticket:`1148`).
- Include library dirs required from libpq to work around MacOS build problems
(:ticket:`1200`).

Other changes:

- Dropped support for Python 2.7, 3.4, 3.5 (:tickets:`1198, 1000, 1197`).
- Dropped support for mx.DateTime.
- Use `datetime.timezone` objects by default in datetime objects instead of
`~psycopg2.tz.FixedOffsetTimezone`.
- The `psycopg2.tz` module is deprecated and scheduled to be dropped in the
next major release.
- Provide :pep:`599` wheels packages (manylinux2014 tag) for i686 and x86_64
platforms.
- Provide :pep:`600` wheels packages (manylinux_2_24 tag) for aarch64 and
ppc64le platforms.
- Wheel package compiled against OpenSSL 1.1.1k and PostgreSQL 13.3 libpq.
- Build system for Linux/MacOS binary packages moved to GitHub Actions.

2.8.7

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Accept empty params as `~psycopg2.connect()` (:ticket:`1250`).
- Fix attributes refcount in `Column` initialisation (:ticket:`1252`).
- Allow re-initialisation of static variables in the C module (:ticket:`1267`).

2.8.6

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Fixed memory leak changing connection encoding to the current one
(:ticket:`1101`).
- Fixed search of mxDateTime headers in virtualenvs (:ticket:`996`).
- Added missing values from errorcodes (:ticket:`1133`).
- `cursor.query` reports the query of the last :sql:`COPY` operation too
(:ticket:`1141`).
- `~psycopg2.errorcodes` map and `~psycopg2.errors` classes updated to
PostgreSQL 13.
- Added wheel packages for ARM architecture (:ticket:`1125`).
- Wheel package compiled against OpenSSL 1.1.1g.

2.8.5

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Fixed use of `!connection_factory` and `!cursor_factory` together
(:ticket:`1019`).
- Added support for `~logging.LoggerAdapter` in
`~psycopg2.extras.LoggingConnection` (:ticket:`1026`).
- `~psycopg2.extensions.Column` objects in `cursor.description` can be sliced
(:ticket:`1034`).
- Added AIX support (:ticket:`1061`).
- Fixed `~copy.copy()` of `~psycopg2.extras.DictCursor` rows (:ticket:`1073`).

2.8.4

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Fixed building with Python 3.8 (:ticket:`854`).
- Don't swallow keyboard interrupts on connect when a password is specified
in the connection string (:ticket:`898`).
- Don't advance replication cursor when the message wasn't confirmed
(:ticket:`940`).
- Fixed inclusion of ``time.h`` on linux (:ticket:`951`).
- Fixed int overflow for large values in `~psycopg2.extensions.Column.table_oid`
and `~psycopg2.extensions.Column.type_code` (:ticket:`961`).
- `~psycopg2.errorcodes` map and `~psycopg2.errors` classes updated to
PostgreSQL 12.
- Wheel package compiled against OpenSSL 1.1.1d and PostgreSQL at least 11.4.

2.8.3

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Added *interval_status* parameter to
`~psycopg2.extras.ReplicationCursor.start_replication()` method and other
facilities to send automatic replication keepalives at periodic intervals
(:ticket:`913`).
- Fixed namedtuples caching introduced in 2.8 (:ticket:`928`).

2.8.2

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Fixed `~psycopg2.extras.RealDictCursor` when there are repeated columns
(:ticket:`884`).
- Binary packages built with openssl 1.1.1b. Should fix concurrency problems
(:tickets:`543, 836`).

2.8.1

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Fixed `~psycopg2.extras.RealDictRow` modifiability (:ticket:`886`).
- Fixed "there's no async cursor" error polling a connection with no cursor
(:ticket:`887`).

2.8

-------------------------

New features:

- Added `~psycopg2.errors` module. Every PostgreSQL error is converted into
a specific exception class (:ticket:`682`).
- Added `~psycopg2.extensions.encrypt_password()` function (:ticket:`576`).
- Added `~psycopg2.extensions.BYTES` adapter to manage databases with mixed
encodings on Python 3 (:ticket:`835`).
- Added `~psycopg2.extensions.Column.table_oid` and
`~psycopg2.extensions.Column.table_column` attributes on `cursor.description`
items (:ticket:`661`).
- Added `connection.info` object to retrieve various PostgreSQL connection
information (:ticket:`726`).
- Added `~connection.get_native_connection()` to expose the raw ``PGconn``
structure to C extensions via Capsule (:ticket:`782`).
- Added `~connection.pgconn_ptr` and `~cursor.pgresult_ptr` to expose raw
C structures to Python and interact with libpq via ctypes (:ticket:`782`).
- `~psycopg2.sql.Identifier` can represent qualified names in SQL composition
(:ticket:`732`).
- Added `!ReplicationCursor`.\ `~psycopg2.extras.ReplicationCursor.wal_end`
attribute (:ticket:`800`).
- Added *fetch* parameter to `~psycopg2.extras.execute_values()` function
(:ticket:`813`).
- `!str()` on `~psycopg2.extras.Range` produces a human-readable representation
(:ticket:`773`).
- `~psycopg2.extras.DictCursor` and `~psycopg2.extras.RealDictCursor` rows
maintain columns order (:ticket:`177`).
- Added `~psycopg2.extensions.Diagnostics.severity_nonlocalized` attribute on
the `~psycopg2.extensions.Diagnostics` object (:ticket:`783`).
- More efficient `~psycopg2.extras.NamedTupleCursor` (:ticket:`838`).

Bug fixes:

- Fixed connections occasionally broken by the unrelated use of the
multiprocessing module (:ticket:`829`).
- Fixed async communication blocking if results are returned in different
chunks, e.g. with notices interspersed to the results (:ticket:`856`).
- Fixed adaptation of numeric subclasses such as `~enum.IntEnum`
(:ticket:`591`).

Other changes:

- Dropped support for Python 2.6, 3.2, 3.3.
- Dropped `psycopg1` module.
- Dropped deprecated `!register_tstz_w_secs()` (was previously a no-op).
- Dropped deprecated `!PersistentConnectionPool`. This pool class was mostly
designed to interact with Zope. Use `!ZPsycopgDA.pool` instead.
- Binary packages no longer installed by default. The 'psycopg2-binary'
package must be used explicitly.
- Dropped `!PSYCOPG_DISPLAY_SIZE` build parameter.
- Dropped support for mxDateTime as the default date and time adapter.
mxDatetime support continues to be available as an alternative to Python's
builtin datetime.
- No longer use 2to3 during installation for Python 2 & 3 compatibility. All
source files are now compatible with Python 2 & 3 as is.
- The `!psycopg2.test` package is no longer installed by ``python setup.py
install``.
- Wheel package compiled against OpenSSL 1.0.2r and PostgreSQL 11.2 libpq.

2.7.7

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Cleanup of the cursor results assignment code, which might have solved
double free and inconsistencies in concurrent usage (:tickets:`346, 384`).
- Wheel package compiled against OpenSSL 1.0.2q.

2.7.6.1

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Fixed binary package broken on OS X 10.12 (:ticket:`807`).
- Wheel package compiled against PostgreSQL 11.1 libpq.

2.7.6

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Close named cursors if exist, even if `~cursor.execute()` wasn't called
(:ticket:`746`).
- Fixed building on modern FreeBSD versions with Python 3.7 (:ticket:`755`).
- Fixed hang trying to :sql:`COPY` via `~cursor.execute()` in asynchronous
connections (:ticket:`781`).
- Fixed adaptation of arrays of empty arrays (:ticket:`788`).
- Fixed segfault accessing the connection's `~connection.readonly` and
`~connection.deferrable` attributes repeatedly (:ticket:`790`).
- `~psycopg2.extras.execute_values()` accepts `~psycopg2.sql.Composable`
objects (:ticket:`794`).
- `~psycopg2.errorcodes` map updated to PostgreSQL 11.
- Wheel package compiled against PostgreSQL 10.5 libpq and OpenSSL 1.0.2p.

2.7.5

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Allow non-ascii chars in namedtuple fields (regression introduced fixing
:ticket:`211`).
- Fixed adaptation of arrays of arrays of nulls (:ticket:`325`).
- Fixed building on Solaris 11 and derivatives such as SmartOS and illumos
(:ticket:`677`).
- Maybe fixed building on MSYS2 (as reported in :ticket:`658`).
- Allow string subclasses in connection and other places (:ticket:`679`).
- Don't raise an exception closing an unused named cursor (:ticket:`716`).
- Wheel package compiled against PostgreSQL 10.4 libpq and OpenSSL 1.0.2o.

2.7.4

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Moving away from installing the wheel package by default.
Packages installed from wheel raise a warning on import. Added package
``psycopg2-binary`` to install from wheel instead (:ticket:`543`).
- Convert fields names into valid Python identifiers in
`~psycopg2.extras.NamedTupleCursor` (:ticket:`211`).
- Fixed Solaris 10 support (:ticket:`532`).
- `cursor.mogrify()` can be called on closed cursors (:ticket:`579`).
- Fixed setting session characteristics in corner cases on autocommit
connections (:ticket:`580`).
- Fixed `~psycopg2.extras.MinTimeLoggingCursor` on Python 3 (:ticket:`609`).
- Fixed parsing of array of points as floats (:ticket:`613`).
- Fixed `~psycopg2.__libpq_version__` building with libpq >= 10.1
(:ticket:`632`).
- Fixed `~cursor.rowcount` after `~cursor.executemany()` with :sql:`RETURNING`
statements (:ticket:`633`).
- Fixed compatibility problem with pypy3 (:ticket:`649`).
- Wheel packages compiled against PostgreSQL 10.1 libpq and OpenSSL 1.0.2n.
- Wheel packages for Python 2.6 no more available (support dropped from
wheel building infrastructure).

2.7.3.2

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Wheel package compiled against PostgreSQL 10.0 libpq and OpenSSL 1.0.2l
(:tickets:`601, 602`).

2.7.3.1

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Dropped libresolv from wheel package to avoid incompatibility with
glibc 2.26 (wheels ticket 2).

2.7.3

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Restored default :sql:`timestamptz[]` typecasting to Python `!datetime`.
Regression introduced in Psycopg 2.7.2 (:ticket:`578`).

2.7.2

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Fixed inconsistent state in externally closed connections
(:tickets:`263, 311, 443`). Was fixed in 2.6.2 but not included in
2.7 by mistake.
- Fixed Python exceptions propagation in green callback (:ticket:`410`).
- Don't display the password in `connection.dsn` when the connection
string is specified as an URI (:ticket:`528`).
- Return objects with timezone parsing "infinity" :sql:`timestamptz`
(:ticket:`536`).
- Dropped dependency on VC9 runtime on Windows binary packages
(:ticket:`541`).
- Fixed segfault in `~connection.lobject()` when *mode*\=\ `!None`
(:ticket:`544`).
- Fixed `~connection.lobject()` keyword argument *lobject_factory*
(:ticket:`545`).
- Fixed `~psycopg2.extras.ReplicationCursor.consume_stream()`
*keepalive_interval* argument (:ticket:`547`).
- Maybe fixed random import error on Python 3.6 in multiprocess
environment (:ticket:`550`).
- Fixed random `!SystemError` upon receiving abort signal (:ticket:`551`).
- Accept `~psycopg2.sql.Composable` objects in
`~psycopg2.extras.ReplicationCursor.start_replication_expert()`
(:ticket:`554`).
- Parse intervals returned as microseconds from Redshift (:ticket:`558`).
- Added `~psycopg2.extras.Json` `!prepare()` method to consider connection
params when adapting (:ticket:`562`).
- `~psycopg2.errorcodes` map updated to PostgreSQL 10 beta 1.

2.7.1

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Ignore `!None` arguments passed to `~psycopg2.connect()` and
`~psycopg2.extensions.make_dsn()` (:ticket:`517`).
- OpenSSL upgraded from major version 0.9.8 to 1.0.2 in the Linux wheel
packages (:ticket:`518`).
- Fixed build with libpq versions < 9.3 (:ticket:`520`).

2.7

-------------------------

New features:

- Added `~psycopg2.sql` module to generate SQL dynamically (:ticket:`308`).
- Added :ref:`replication-support` (:ticket:`322`). Main authors are
Oleksandr Shulgin and Craig Ringer, who deserve a huge thank you.
- Added `~psycopg2.extensions.parse_dsn()` and
`~psycopg2.extensions.make_dsn()` functions (:tickets:`321, 363`).
`~psycopg2.connect()` now can take both *dsn* and keyword arguments, merging
them together.
- Added `~psycopg2.__libpq_version__` and
`~psycopg2.extensions.libpq_version()` to inspect the version of the
``libpq`` library the module was compiled/loaded with
(:tickets:`35, 323`).
- The attributes `~connection.notices` and `~connection.notifies` can be
customized replacing them with any object exposing an `!append()` method
(:ticket:`326`).
- Adapt network types to `ipaddress` objects when available. When not
enabled, convert arrays of network types to lists by default. The old `!Inet`
adapter is deprecated (:tickets:`317, 343, 387`).
- Added `~psycopg2.extensions.quote_ident()` function (:ticket:`359`).
- Added `~connection.get_dsn_parameters()` connection method (:ticket:`364`).
- `~cursor.callproc()` now accepts a dictionary of parameters (:ticket:`381`).
- Give precedence to `!__conform__()` over superclasses to choose an object
adapter (:ticket:`456`).
- Using Python C API decoding functions and codecs caching for faster
unicode encoding/decoding (:ticket:`473`).
- `~cursor.executemany()` slowness addressed by
`~psycopg2.extras.execute_batch()` and `~psycopg2.extras.execute_values()`
(:ticket:`491`).
- Added ``async_`` as an alias for ``async`` to support Python 3.7 where
``async`` will become a keyword (:ticket:`495`).
- Unless in autocommit, do not use :sql:`default_transaction_*` settings to
control the session characteristics as it may create problems with external
connection pools such as pgbouncer; use :sql:`BEGIN` options instead
(:ticket:`503`).
- `~connection.isolation_level` is now writable and entirely separated from
`~connection.autocommit`; added `~connection.readonly`,
`~connection.deferrable` writable attributes.

Bug fixes:

- Throw an exception trying to pass ``NULL`` chars as parameters
(:ticket:`420`).
- Fixed error caused by missing decoding `~psycopg2.extras.LoggingConnection`
(:ticket:`483`).
- Fixed integer overflow in :sql:`interval` seconds (:ticket:`512`).
- Make `~psycopg2.extras.Range` objects picklable (:ticket:`462`).
- Fixed version parsing and building with PostgreSQL 10 (:ticket:`489`).

Other changes:

- Dropped support for Python 2.5 and 3.1.
- Dropped support for client library older than PostgreSQL 9.1 (but older
server versions are still supported).
- `~connection.isolation_level` doesn't read from the database but will return
`~psycopg2.extensions.ISOLATION_LEVEL_DEFAULT` if no value was set on the
connection.
- Empty arrays no more converted into lists if they don't have a type attached
(:ticket:`506`)

2.6.2

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Fixed inconsistent state in externally closed connections
(:tickets:`263, 311, 443`).
- Report the server response status on errors (such as :ticket:`281`).
- Raise `!NotSupportedError` on unhandled server response status
(:ticket:`352`).
- Allow overriding string adapter encoding with no connection (:ticket:`331`).
- The `~psycopg2.extras.wait_select` callback allows interrupting a
long-running query in an interactive shell using :kbd:`Ctrl-C`
(:ticket:`333`).
- Fixed `!PersistentConnectionPool` on Python 3 (:ticket:`348`).
- Fixed segfault on `repr()` of an unitialized connection (:ticket:`361`).
- Allow adapting bytes using `~psycopg2.extensions.QuotedString` on Python 3
(:ticket:`365`).
- Added support for setuptools/wheel (:ticket:`370`).
- Fix build on Windows with Python 3.5, VS 2015 (:ticket:`380`).
- Fixed `!errorcodes.lookup` initialization thread-safety (:ticket:`382`).
- Fixed `!read()` exception propagation in copy_from (:ticket:`412`).
- Fixed possible NULL TZ decref  (:ticket:`424`).
- `~psycopg2.errorcodes` map updated to PostgreSQL 9.5.

2.6.1

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Lists consisting of only `None` are escaped correctly (:ticket:`285`).
- Fixed deadlock in multithread programs using OpenSSL (:ticket:`290`).
- Correctly unlock the connection after error in flush (:ticket:`294`).
- Fixed `!MinTimeLoggingCursor.callproc()` (:ticket:`309`).
- Added support for MSVC 2015 compiler (:ticket:`350`).

2.6

-------------------------

New features:

- Added support for large objects larger than 2GB. Many thanks to Blake Rouse
and the MAAS Team for the feature development.
- Python `time` objects with a tzinfo specified and PostgreSQL :sql:`timetz`
data are converted into each other (:ticket:`272`).

Bug fixes:

- Json adapter's `!str()` returns the adapted content instead of the `!repr()`
(:ticket:`191`).

2.5.5

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Named cursors used as context manager don't swallow the exception on exit
(:ticket:`262`).
- `cursor.description` can be pickled (:ticket:`265`).
- Propagate read error messages in COPY FROM (:ticket:`270`).
- PostgreSQL time 24:00 is converted to Python 00:00 (:ticket:`278`).

2.5.4

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Added :sql:`jsonb` support for PostgreSQL 9.4 (:ticket:`226`).
- Fixed segfault if COPY statements are passed to `~cursor.execute()` instead
of using the proper methods (:ticket:`219`).
- Force conversion of pool arguments to integer to avoid potentially unbounded
pools (:ticket:`220`).
- Cursors :sql:`WITH HOLD` don't begin a new transaction upon move/fetch/close
(:ticket:`228`).
- Cursors :sql:`WITH HOLD` can be used in autocommit (:ticket:`229`).
- `~cursor.callproc()` doesn't silently ignore an argument without a length.
- Fixed memory leak with large objects (:ticket:`256`).
- Make sure the internal ``_psycopg.so`` module can be imported stand-alone (to
allow modules juggling such as the one described in :ticket:`201`).

2.5.3

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Work around `pip issue 1630 <https://github.com/pypa/pip/issues/1630>`__
making installation via ``pip -e git+url`` impossible (:ticket:`18`).
- Copy operations correctly set the `cursor.rowcount` attribute
(:ticket:`180`).
- It is now possible to call `get_transaction_status()` on closed connections.
- Fixed unsafe access to object names causing assertion failures in
Python 3 debug builds (:ticket:`188`).
- Mark the connection closed if found broken on `poll()` (from :ticket:`192`
discussion)
- Fixed handling of dsn and closed attributes in connection subclasses
failing to connect (from :ticket:`192` discussion).
- Added arbitrary but stable order to `Range` objects, thanks to
Chris Withers (:ticket:`193`).
- Avoid blocking async connections on connect (:ticket:`194`). Thanks to
Adam Petrovich for the bug report and diagnosis.
- Don't segfault using poorly defined cursor subclasses which forgot to call
the superclass init (:ticket:`195`).
- Mark the connection closed when a Socket connection is broken, as it
happens for TCP connections instead (:ticket:`196`).
- Fixed overflow opening a lobject with an oid not fitting in a signed int
(:ticket:`203`).
- Fixed handling of explicit default ``cursor_factory=None`` in
`connection.cursor()` (:ticket:`210`).
- Fixed possible segfault in named cursors creation.
- Fixed debug build on Windows, thanks to James Emerton.

2.5.2

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Fixed segfault pickling the exception raised on connection error
(:ticket:`170`).
- Meaningful connection errors report a meaningful message, thanks to
Alexey Borzenkov (:ticket:`173`).
- Manually creating `lobject` with the wrong parameter doesn't segfault
(:ticket:`187`).

2.5.1

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Fixed build on Solaris 10 and 11 where the round() function is already
declared (:ticket:`146`).
- Fixed comparison of `Range` with non-range objects (:ticket:`164`).
Thanks to Chris Withers for the patch.
- Fixed double-free on connection dealloc (:ticket:`166`). Thanks to
Gangadharan S.A. for the report and fix suggestion.

2.5

-------------------------

New features:

- Added :ref:`JSON adaptation <adapt-json>`.
- Added :ref:`support for PostgreSQL 9.2 range types <adapt-range>`.
- `connection` and `cursor` objects can be used in ``with`` statements
as context managers as specified by recent |DBAPI|_ extension.
- Added `~psycopg2.extensions.Diagnostics` object to get extended info
from a database error.  Many thanks to Matthew Woodcraft for the
implementation (:ticket:`149`).
- Added `connection.cursor_factory` attribute to customize the default
object returned by `~connection.cursor()`.
- Added support for backward scrollable cursors. Thanks to Jon Nelson
for the initial patch (:ticket:`108`).
- Added a simple way to :ref:`customize casting of composite types
<adapt-composite>` into Python objects other than namedtuples.
Many thanks to Ronan Dunklau and Tobias Oberstein for the feature
development.
- `connection.reset()` implemented using :sql:`DISCARD ALL` on server
versions supporting it.

Bug fixes:

- Properly cleanup memory of broken connections (:ticket:`148`).
- Fixed bad interaction of ``setup.py`` with other dependencies in
Distribute projects on Python 3 (:ticket:`153`).

Other changes:

- Added support for Python 3.3.
- Dropped support for Python 2.4. Please use Psycopg 2.4.x if you need it.
- `~psycopg2.errorcodes` map updated to PostgreSQL 9.2.
- Dropped Zope adapter from source repository. ZPsycopgDA now has its own
project at <https://github.com/psycopg/ZPsycopgDA>.

2.4.6

^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Fixed 'cursor()' arguments propagation in connection subclasses
and overriding of the 'cursor_factory' argument.  Thanks to
Corry Haines for the report and the initial patch (:ticket:`105`).
- Dropped GIL release during string adaptation around a function call
invoking a Python API function, which could cause interpreter crash.
Thanks to Manu Cupcic for the report (:ticket:`110`).
- Close a green connection if there is an error in the callback.
Maybe a harsh solution but it leaves the program responsive
(:ticket:`113`).
- 'register_hstore()', 'register_composite()', 'tpc_recover()' work with
RealDictConnection and Cursor (:ticket:`114`).
- Fixed broken pool for Zope and connections re-init across ZSQL methods
in the same request (:tickets:`123, 125, 142`).
- connect() raises an exception instead of swallowing keyword arguments
when a connection string is specified as well (:ticket:`131`).
- Discard any result produced by 'executemany()' (:ticket:`133`).
- Fixed pickling of FixedOffsetTimezone objects (:ticket:`135`).
- Release the GIL around PQgetResult calls after COPY (:ticket:`140`).
- Fixed empty strings handling in composite caster (:ticket:`141`).
- Fixed pickling of DictRow and RealDictRow objects.
Links

@pyup-bot pyup-bot mentioned this pull request Aug 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant