* Tue May 19 2020 Tomá? Chvátal <firstname.lastname@example.org>
- Sort out the syntax of the deps bsc#1171213
* Thu Apr 23 2020 Marcus Rueckert <email@example.com>
- update to 2.8.5
- Fixed use of connection_factory and cursor_factory together
- Added support for logging.LoggerAdapter in LoggingConnection
- Column objects in cursor.description can be sliced (ticket
- Added AIX support (ticket #1061).
- Fixed copy() of DictCursor rows (ticket #1073).
* Thu Mar 19 2020 Hans-Peter Jansen <firstname.lastname@example.org>
- fix postgresql build dependency: pg_config is in postgresql-server-devel (bsc#1167541)
* Fri Feb 28 2020 Dirk Mueller <email@example.com>
- update to 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
- 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
- Wheel package compiled against OpenSSL 1.1.1d and PostgreSQL at least 11.4.
* Mon Oct 14 2019 Matej Cepl <firstname.lastname@example.org>
- Replace %fdupes -s with plain %fdupes; hardlinks are better.
* Thu Jul 04 2019 Daniel Molkentin <email@example.com>
- Update to 2.8.4
* Added interval_status parameter to start_replication() method and other
facilities to send automatic replication keepalives at periodic intervals
* Fixed namedtuples caching introduced in 2.8 (ticket #928).
* Tue Jun 04 2019 Marketa Calabkova <firstname.lastname@example.org>
- Update to 2.8.3
* Added interval_status parameter to start_replication() method
and other facilities to send automatic replication keepalives
at periodic intervals
* Fixed RealDictCursor when there are repeated columns
* Fixed RealDictRow modifiability
* Fixed ?there?s no async cursor? error polling a connection with
* Added errors module. Every PostgreSQL error is converted into
a specific exception class
* Added encrypt_password() function
* Added BYTES adapter to manage databases with mixed encodings on
* Added table_oid and table_column attributes on cursor.description
* Added connection.info object to retrieve various PostgreSQL
* str() on Range produces a human-readable representation
* Fixed async communication blocking if results are returned in
* Fixed adaptation of numeric subclasses such as IntEnum
* Dropped support for Python 2.6, 3.2, 3.3.
* Dropped deprecated register_tstz_w_secs()
* Dropped deprecated PersistentConnectionPool. Use
* Binary packages no longer installed by default. The
?psycopg2-binary? package must be used explicitly.
* Dropped PSYCOPG_DISPLAY_SIZE build parameter.
* Tue Apr 02 2019 Todd R <email@example.com>
- Requires postgresql-server-devel on Factory now.
* Mon Mar 04 2019 Tomá? Chvátal <firstname.lastname@example.org>
- Update to 2.7.7:
* Cleanup of the cursor results assignment code, which might have solved
double free and inconsistencies in concurrent usage (:tickets:`#346, #384`).
* Close named cursors if exist, even if execute() wasn't called (ticket #746).
* Fixed building on modern FreeBSD versions with Python 3.7 (ticket #755).
* Fixed hang trying to COPY via execute() in asynchronous connections (ticket #781).
* Fixed adaptation of arrays of empty arrays (ticket #788).
* Fixed segfault accessing the connection.readonly and connection.deferrable attributes repeatedly (ticket #790).
* execute_values() accepts sql.Composable objects (ticket #794).
* errorcodes map updated to PostgreSQL 11.
* 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).
* Wed Mar 07 2018 email@example.com
- Allows Recommends and Suggest in Fedora
* Tue Feb 27 2018 firstname.lastname@example.org
- Suggests only for SUSE
* Thu Feb 22 2018 email@example.com
- update to version 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
- 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
- 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
- Fixed `~cursor.rowcount` after `~cursor.executemany()` with :sql:`RETURNING`
- 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).
- update to version 220.127.116.11:
- not relevant
- update to version 18.104.22.168:
- not relevant
* Tue Aug 08 2017 firstname.lastname@example.org
- update version to 2.7.3:
- Restored default :sql:`timestamptz` typecasting to Python `!datetime`.
Regression introduced in Psycopg 2.7.2 (:ticket:`#578`).
- 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`
- Dropped dependency on VC9 runtime on Windows binary packages
- Fixed segfault in `~connection.lobject()` when *mode*\=\ `!None`
- Fixed `~connection.lobject()` keyword argument *lobject_factory*
- Fixed `~psycopg2.extras.ReplicationCursor.consume_stream()`
* keepalive_interval* argument (:ticket:`#547`).
- Maybe fixed random import error on Python 3.6 in multiprocess
- Fixed random `!SystemError` upon receiving abort signal (:ticket:`#551`).
- Accept `~psycopg2.sql.Composable` objects in
- 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.
* Mon Jul 10 2017 email@example.com
- Trim filler wording from description.
* Fri Jun 23 2017 firstname.lastname@example.org
- convert to singlespec
- update to 2.7.1
* Added sql module to generate SQL dynamically (ticket #308).
* Added Replication protocol support (ticket #322). Main authors are
Oleksandr Shulgin and Craig Ringer, who deserve a huge thank you.
* Added parse_dsn() and make_dsn() functions (tickets #321, #363). connect()
now can take both dsn and keyword arguments, merging them together.
* Added __libpq_version__ and libpq_version() to inspect the version of the
libpq library the module was compiled/loaded with (tickets #35, #323).
* The attributes notices and 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 quote_ident() function (ticket #359).
* Added get_dsn_parameters() connection method (ticket #364).
* 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).
* executemany() slowness addressed by execute_batch() and execute_values()
* 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 default_transaction_* settings to control
the session characteristics as it may create problems with external
connection pools such as pgbouncer; use BEGIN options instead (ticket #503).
* isolation_level is now writable and entirely separated from autocommit;
added readonly, deferrable writable attributes.
* dropped support for python 2.5 and postgres client library < 9.1
* many bugs fixed
- drop doc subpackage, html docs available from http://pythonhosted.org/psycopg2/
* Wed Jun 21 2017 email@example.com
- Do not include unneccessary undeterministic environment.pickle in package to fix build-compare
* Mon Nov 14 2016 firstname.lastname@example.org
- update to 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 wait_select callback allows interrupting a long-running query in an interactive shell using Ctrl-C (ticket #333).
* Fixed PersistentConnectionPool on Python 3 (ticket #348).
* Fixed segfault on repr() of an uninitialized connection (ticket #361).
* Allow adapting bytes using 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).
* errorcodes map updated to PostgreSQL 9.5.
* 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).
* Wed Mar 09 2016 email@example.com
- use the year from source gzip header instead of current one
to make reproducible rpms
* Tue Feb 24 2015 firstname.lastname@example.org
- update to version 2.6:
- 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`).
- Json apapter's `!str()` returns the adapted content instead of the `!repr()`
- Named cursors used as context manager don't swallow the exception on exit
- `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`).
- 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
- Cursors :sql:`WITH HOLD` don't begin a new transaction upon move/fetch/close
- 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`).
- 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
- 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`
- 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
- Fixed handling of explicit default ``cursor_factory=None`` in
- Fixed possible segfault in named cursors creation.
- Fixed debug build on Windows, thanks to James Emerton.
- Add python-Sphinx as BuilrRequires to build documenation. Also adjust
the build process for html docs.
* Mon Jan 13 2014 email@example.com
- update to 2.5.2:
- Fixed segfault pickling the exception raised on connection error
- Meaningful connection errors report a meaningful message
- Manually creating `lobject` with the wrong parameter doesn't segfault
* Tue Jun 25 2013 firstname.lastname@example.org
- update to 2.5.1:
- Fixed build on Solaris 10 and 11 where the round() function is already
- 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.
* Tue Apr 16 2013 email@example.com
- Update to 2.5:
- Added JSON adaptation.
- Added support for PostgreSQL 9.2 range types.
- `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
- 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 customize casting of composite types into Python
objects other than namedtuples. Many thanks to Ronan Dunklau and Tobias
Oberstein for the feature development.
- `connection.reset()` implemented using `DISCARD ALL` on server versions
- 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).
- 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 <http://github.com/psycopg/ZPsycopgDA>.
- Changes from 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.
* Fri May 25 2012 firstname.lastname@example.org
- license update: LGPL-3.0+ and (LGPL-3.0+ or ZPL-2.0) and
See the COPYING file. There are GPL-2.0+ (with openssl linking exceptions
for pgsql) in the package. Also, the ZPL option is only available for one
particular subdirectory in the package
* Fri May 25 2012 email@example.com
- python3 package added
- minor spec improvement
* Fri Apr 06 2012 firstname.lastname@example.org
- Update to 2.4.5:
* The close() methods on connections and cursors don't raise exceptions
if called on already closed objects.
* Fixed fetchmany() with no argument in cursor subclasses
* Use lo_creat() instead of lo_create() when possible for better
interaction with pgpool-II (ticket #88).
* Error and its subclasses are picklable, useful for multiprocessing
interaction (ticket #90).
* Better efficiency and formatting of timezone offset objects thanks
to Menno Smits (tickets #94, #95).
* Fixed 'rownumber' during iteration on cursor subclasses.
Regression introduced in 2.4.4 (ticket #100).
* Added support for 'inet' arrays.
* Fixed 'commit()' concurrency problem (ticket #103).
* Codebase cleaned up using the GCC Python plugin's static analysis
tool, which has revealed several unchecked return values, possible
NULL dereferences, reference counting problems. Many thanks to David
Malcolm for the useful tool and the assistance provided using it.
* Tue Mar 27 2012 email@example.com
- Can't hurt to suggest postgresql-server
* Mon Mar 12 2012 firstname.lastname@example.org
- Simplify macro usage
- Remove outdated SUSE version checks
* Mon Feb 13 2012 email@example.com
- patch license to follow spdx.org standard
* Thu Jan 12 2012 firstname.lastname@example.org
- Update to 2.4.4:
* register_composite() also works with the types implicitly defined after a
table row, not only with the ones created by CREATE TYPE.
* Values for the isolation level symbolic constants restored to what they
were before release 2.4.2 to avoid breaking apps using the values instead
of the constants.
* Named DictCursor/RealDictCursor honour itersize (ticket #80).
* Fixed rollback on error on Zope (ticket #73).
* Raise DatabaseError instead of Error with empty libpq errors, consistently
with other disconnection-related errors: regression introduced in release
2.4.1 (ticket #82).
- Version 2.4.3:
* connect() supports all the keyword arguments supported by the database
* Added new_array_type() function for easy creation of array typecasters.
* Added support for arrays of hstores and composite types (ticket #66).
* Fixed segfault in case of transaction started with connection lost (and
possibly other events).
* Fixed adaptation of Decimal type in sub-interpreters, such as in certain
mod_wsgi configurations (ticket #52).
* Rollback connections in transaction or in error before putting them back
into a pool. Also discard broken connections (ticket #62).
* Lazy import of the slow uuid module, thanks to Marko Kreen.
* Fixed NamedTupleCursor.executemany() (ticket #65).
* Fixed --static-libpq setup option (ticket #64).
* Fixed interaction between RealDictCursor and named cursors (ticket #67).
* Dropped limit on the columns length in COPY operations (ticket #68).
* Fixed reference leak with arguments referenced more than once in queries
* Fixed typecasting of arrays containing consecutive backslashes.
* errorcodes map updated to PostgreSQL 9.1.