NEWS file reformatted to reST and included in the docs

This commit is contained in:
Daniele Varrazzo 2013-03-18 15:42:10 +00:00
parent 93928a7141
commit abb3027aa3
6 changed files with 532 additions and 465 deletions

350
NEWS
View File

@ -1,70 +1,80 @@
What's new in psycopg 2.5 What's new in psycopg 2.5
------------------------- -------------------------
- Added JSON adaptation. New features:
- Added support for PostgreSQL 9.2 range types.
- Added support for Python 3.3. - Added :ref:`JSON adaptation <adapt-json>`.
- 'connection' and 'cursor' objects can be used in 'with' statements - Added :ref:`support for PostgreSQL 9.2 range types <adapt-range>`.
as context managers as specified by recent DBAPI extension. - `connection` and `cursor` objects can be used in ``with`` statements
- Added Diagnostics object to get extended info from a database error. as context managers as specified by recent |DBAPI|_ extension.
Many thanks to Matthew Woodcraft for the implementation (ticket #149). - Added `~psycopg2.extensions.Diagnostics` object to get extended info
from a database error. Many thanks to Matthew Woodcraft for the
implementation (:ticket:`#149`).
- Added support for backward scrollable cursors. Thanks to Jon Nelson - Added support for backward scrollable cursors. Thanks to Jon Nelson
for the initial patch (ticket #108). for the initial patch (:ticket:`#108`).
- Added a simple way to customize casting of composite types into Python - Added a simple way to :ref:`customize casting of composite types
objects other than namedtuples. Many thanks to Ronan Dunklau and <adapt-composite>` into Python objects other than namedtuples.
Tobias Oberstein for the feature development. Many thanks to Ronan Dunklau and Tobias Oberstein for the feature
- connection.reset() implemented using DISCARD ALL on server versions development.
supporting it. - `connection.reset()` implemented using :sql:`DISCARD ALL` on server
- Properly cleanup memory of broken connections (ticket #142). versions supporting it.
- Fixed bad interaction of setup.py with other dependencies in
Distribute project on Python 3 (ticket #153). Bug fixes:
- 'errorcodes' map updated to PostgreSQL 9.2.
- Dropped Zope adapter from source repository. ZPsycopgDA can now be - Properly cleanup memory of broken connections (:ticket:`#142`).
found at <http://github.com/psycopg/ZPsycopgDA>. - 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.
- `~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>.
What's new in psycopg 2.4.6 What's new in psycopg 2.4.6
--------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Fixed 'cursor()' arguments propagation in connection subclasses - Fixed 'cursor()' arguments propagation in connection subclasses
and overriding of the 'cursor_factory' argument. Thanks to and overriding of the 'cursor_factory' argument. Thanks to
Corry Haines for the report and the initial patch (ticket #105). Corry Haines for the report and the initial patch (:ticket:`#105`).
- Dropped GIL release during string adaptation around a function call - Dropped GIL release during string adaptation around a function call
invoking a Python API function, which could cause interpreter crash. invoking a Python API function, which could cause interpreter crash.
Thanks to Manu Cupcic for the report (ticket #110). Thanks to Manu Cupcic for the report (:ticket:`#110`).
- Close a green connection if there is an error in the callback. - Close a green connection if there is an error in the callback.
Maybe a harsh solution but it leaves the program responsive Maybe a harsh solution but it leaves the program responsive
(ticket #113). (:ticket:`#113`).
- 'register_hstore()', 'register_composite()', 'tpc_recover()' work with - 'register_hstore()', 'register_composite()', 'tpc_recover()' work with
RealDictConnection and Cursor (ticket #114). RealDictConnection and Cursor (:ticket:`#114`).
- Fixed broken pool for Zope and connections re-init across ZSQL methods - Fixed broken pool for Zope and connections re-init across ZSQL methods
in the same request (tickets #123, #125, #142). in the same request (tickets #123, #125, #142).
- connect() raises an exception instead of swallowing keyword arguments - connect() raises an exception instead of swallowing keyword arguments
when a connection string is specified as well (ticket #131). when a connection string is specified as well (:ticket:`#131`).
- Discard any result produced by 'executemany()' (ticket #133). - Discard any result produced by 'executemany()' (:ticket:`#133`).
- Fixed pickling of FixedOffsetTimezone objects (ticket #135). - Fixed pickling of FixedOffsetTimezone objects (:ticket:`#135`).
- Release the GIL around PQgetResult calls after COPY (ticket #140). - Release the GIL around PQgetResult calls after COPY (:ticket:`#140`).
- Fixed empty strings handling in composite caster (ticket #141). - Fixed empty strings handling in composite caster (:ticket:`#141`).
- Fixed pickling of DictRow and RealDictRow objects. - Fixed pickling of DictRow and RealDictRow objects.
What's new in psycopg 2.4.5 What's new in psycopg 2.4.5
--------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
- The close() methods on connections and cursors don't raise exceptions - The close() methods on connections and cursors don't raise exceptions
if called on already closed objects. if called on already closed objects.
- Fixed fetchmany() with no argument in cursor subclasses - Fixed fetchmany() with no argument in cursor subclasses
(ticket #84). (:ticket:`#84`).
- Use lo_creat() instead of lo_create() when possible for better - Use lo_creat() instead of lo_create() when possible for better
interaction with pgpool-II (ticket #88). interaction with pgpool-II (:ticket:`#88`).
- Error and its subclasses are picklable, useful for multiprocessing - Error and its subclasses are picklable, useful for multiprocessing
interaction (ticket #90). interaction (:ticket:`#90`).
- Better efficiency and formatting of timezone offset objects thanks - Better efficiency and formatting of timezone offset objects thanks
to Menno Smits (tickets #94, #95). to Menno Smits (tickets #94, #95).
- Fixed 'rownumber' during iteration on cursor subclasses. - Fixed 'rownumber' during iteration on cursor subclasses.
Regression introduced in 2.4.4 (ticket #100). Regression introduced in 2.4.4 (:ticket:`#100`).
- Added support for 'inet' arrays. - Added support for 'inet' arrays.
- Fixed 'commit()' concurrency problem (ticket #103). - Fixed 'commit()' concurrency problem (:ticket:`#103`).
- Codebase cleaned up using the GCC Python plugin's static analysis - Codebase cleaned up using the GCC Python plugin's static analysis
tool, which has revealed several unchecked return values, possible tool, which has revealed several unchecked return values, possible
NULL dereferences, reference counting problems. Many thanks to David NULL dereferences, reference counting problems. Many thanks to David
@ -72,48 +82,48 @@ What's new in psycopg 2.4.5
What's new in psycopg 2.4.4 What's new in psycopg 2.4.4
--------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
- 'register_composite()' also works with the types implicitly defined - 'register_composite()' also works with the types implicitly defined
after a table row, not only with the ones created by 'CREATE TYPE'. after a table row, not only with the ones created by 'CREATE TYPE'.
- Values for the isolation level symbolic constants restored to what - Values for the isolation level symbolic constants restored to what
they were before release 2.4.2 to avoid breaking apps using the they were before release 2.4.2 to avoid breaking apps using the
values instead of the constants. values instead of the constants.
- Named DictCursor/RealDictCursor honour itersize (ticket #80). - Named DictCursor/RealDictCursor honour itersize (:ticket:`#80`).
- Fixed rollback on error on Zope (ticket #73). - Fixed rollback on error on Zope (:ticket:`#73`).
- Raise 'DatabaseError' instead of 'Error' with empty libpq errors, - Raise 'DatabaseError' instead of 'Error' with empty libpq errors,
consistently with other disconnection-related errors: regression consistently with other disconnection-related errors: regression
introduced in release 2.4.1 (ticket #82). introduced in release 2.4.1 (:ticket:`#82`).
What's new in psycopg 2.4.3 What's new in psycopg 2.4.3
--------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
- connect() supports all the keyword arguments supported by the - connect() supports all the keyword arguments supported by the
database database
- Added 'new_array_type()' function for easy creation of array - Added 'new_array_type()' function for easy creation of array
typecasters. typecasters.
- Added support for arrays of hstores and composite types (ticket #66). - Added support for arrays of hstores and composite types (:ticket:`#66`).
- Fixed segfault in case of transaction started with connection lost - Fixed segfault in case of transaction started with connection lost
(and possibly other events). (and possibly other events).
- Fixed adaptation of Decimal type in sub-interpreters, such as in - Fixed adaptation of Decimal type in sub-interpreters, such as in
certain mod_wsgi configurations (ticket #52). certain mod_wsgi configurations (:ticket:`#52`).
- Rollback connections in transaction or in error before putting them - Rollback connections in transaction or in error before putting them
back into a pool. Also discard broken connections (ticket #62). back into a pool. Also discard broken connections (:ticket:`#62`).
- Lazy import of the slow uuid module, thanks to Marko Kreen. - Lazy import of the slow uuid module, thanks to Marko Kreen.
- Fixed NamedTupleCursor.executemany() (ticket #65). - Fixed NamedTupleCursor.executemany() (:ticket:`#65`).
- Fixed --static-libpq setup option (ticket #64). - Fixed --static-libpq setup option (:ticket:`#64`).
- Fixed interaction between RealDictCursor and named cursors - Fixed interaction between RealDictCursor and named cursors
(ticket #67). (:ticket:`#67`).
- Dropped limit on the columns length in COPY operations (ticket #68). - Dropped limit on the columns length in COPY operations (:ticket:`#68`).
- Fixed reference leak with arguments referenced more than once - Fixed reference leak with arguments referenced more than once
in queries (ticket #81). in queries (:ticket:`#81`).
- Fixed typecasting of arrays containing consecutive backslashes. - Fixed typecasting of arrays containing consecutive backslashes.
- 'errorcodes' map updated to PostgreSQL 9.1. - 'errorcodes' map updated to PostgreSQL 9.1.
What's new in psycopg 2.4.2 What's new in psycopg 2.4.2
--------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Added 'set_session()' method and 'autocommit' property to the - Added 'set_session()' method and 'autocommit' property to the
connection. Added support for read-only sessions and, for PostgreSQL connection. Added support for read-only sessions and, for PostgreSQL
@ -122,13 +132,13 @@ What's new in psycopg 2.4.2
- Psycopg doesn't execute queries at connection time to find the - Psycopg doesn't execute queries at connection time to find the
default isolation level. default isolation level.
- Fixed bug with multithread code potentially causing loss of sync - Fixed bug with multithread code potentially causing loss of sync
with the server communication or lock of the client (ticket #55). with the server communication or lock of the client (:ticket:`#55`).
- Don't fail import if mx.DateTime module can't be found, even if its - Don't fail import if mx.DateTime module can't be found, even if its
support was built (ticket #53). support was built (:ticket:`#53`).
- Fixed escape for negative numbers prefixed by minus operator - Fixed escape for negative numbers prefixed by minus operator
(ticket #57). (:ticket:`#57`).
- Fixed refcount issue during copy. Reported and fixed by Dave - Fixed refcount issue during copy. Reported and fixed by Dave
Malcolm (ticket #58, Red Hat Bug 711095). Malcolm (:ticket:`#58`, Red Hat Bug 711095).
- Trying to execute concurrent operations on the same connection - Trying to execute concurrent operations on the same connection
through concurrent green thread results in an error instead of a through concurrent green thread results in an error instead of a
deadlock. deadlock.
@ -137,24 +147,24 @@ What's new in psycopg 2.4.2
What's new in psycopg 2.4.1 What's new in psycopg 2.4.1
--------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Use own parser for bytea output, not requiring anymore the libpq 9.0 - Use own parser for bytea output, not requiring anymore the libpq 9.0
to parse the hex format. to parse the hex format.
- Don't fail connection if the client encoding is a non-normalized - Don't fail connection if the client encoding is a non-normalized
variant. Issue reported by Peter Eisentraut. variant. Issue reported by Peter Eisentraut.
- Correctly detect an empty query sent to the backend (ticket #46). - Correctly detect an empty query sent to the backend (:ticket:`#46`).
- Fixed a SystemError clobbering libpq errors raised without SQLSTATE. - Fixed a SystemError clobbering libpq errors raised without SQLSTATE.
Bug vivisectioned by Eric Snow. Bug vivisectioned by Eric Snow.
- Fixed interaction between NamedTuple and server-side cursors. - Fixed interaction between NamedTuple and server-side cursors.
- Allow to specify --static-libpq on setup.py command line instead of - Allow to specify --static-libpq on setup.py command line instead of
just in 'setup.cfg'. Patch provided by Matthew Ryan (ticket #48). just in 'setup.cfg'. Patch provided by Matthew Ryan (:ticket:`#48`).
What's new in psycopg 2.4 What's new in psycopg 2.4
------------------------- -------------------------
* New features and changes: New features and changes:
- Added support for Python 3.1 and 3.2. The conversion has also - Added support for Python 3.1 and 3.2. The conversion has also
brought several improvements: brought several improvements:
@ -195,38 +205,38 @@ What's new in psycopg 2.4
found. found.
- Connections and cursors are weakly referenceable. - Connections and cursors are weakly referenceable.
* Bug fixes: Bug fixes:
- Fixed adaptation of None in composite types (ticket #26). Bug - Fixed adaptation of None in composite types (:ticket:`#26`). Bug
report by Karsten Hilbert. report by Karsten Hilbert.
- Fixed several reference leaks in less common code paths. - Fixed several reference leaks in less common code paths.
- Fixed segfault when a large object is closed and its connection no - Fixed segfault when a large object is closed and its connection no
more available. more available.
- Added missing icon to ZPsycopgDA package, not available in Zope - Added missing icon to ZPsycopgDA package, not available in Zope
2.12.9 (ticket #30). Bug report and patch by Pumukel. 2.12.9 (:ticket:`#30`). Bug report and patch by Pumukel.
- Fixed conversion of negative infinity (ticket #40). Bug report and - Fixed conversion of negative infinity (:ticket:`#40`). Bug report and
patch by Marti Raudsepp. patch by Marti Raudsepp.
What's new in psycopg 2.3.2 What's new in psycopg 2.3.2
--------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Fixed segfault with middleware not passing DateStyle to the client - Fixed segfault with middleware not passing DateStyle to the client
(ticket #24). Bug report and patch by Marti Raudsepp. (:ticket:`#24`). Bug report and patch by Marti Raudsepp.
What's new in psycopg 2.3.1 What's new in psycopg 2.3.1
--------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
- Fixed build problem on CentOS 5.5 x86_64 (ticket #23). - Fixed build problem on CentOS 5.5 x86_64 (:ticket:`#23`).
What's new in psycopg 2.3.0 What's new in psycopg 2.3
--------------------------- -------------------------
psycopg 2.3 aims to expose some new features introduced in PostgreSQL 9.0. psycopg 2.3 aims to expose some new features introduced in PostgreSQL 9.0.
* Main new features: Main new features:
- `dict` to `hstore` adapter and `hstore` to `dict` typecaster, using both - `dict` to `hstore` adapter and `hstore` to `dict` typecaster, using both
9.0 and pre-9.0 syntax. 9.0 and pre-9.0 syntax.
@ -235,7 +245,7 @@ psycopg 2.3 aims to expose some new features introduced in PostgreSQL 9.0.
- `namedtuple`-returning cursor. - `namedtuple`-returning cursor.
- Query execution cancel. - Query execution cancel.
* Other features and changes: Other features and changes:
- Dropped support for protocol 2: Psycopg 2.3 can only connect to PostgreSQL - Dropped support for protocol 2: Psycopg 2.3 can only connect to PostgreSQL
servers with version at least 7.4. servers with version at least 7.4.
@ -250,19 +260,19 @@ psycopg 2.3 aims to expose some new features introduced in PostgreSQL 9.0.
in release 2.2, but trying to send a command while being destroyed has been in release 2.2, but trying to send a command while being destroyed has been
considered not safe. considered not safe.
* Bug fixes: Bug fixes:
- Fixed use of `PQfreemem` instead of `free` in binary typecaster. - Fixed use of `PQfreemem` instead of `free` in binary typecaster.
- Fixed access to freed memory in `conn_get_isolation_level()`. - Fixed access to freed memory in `conn_get_isolation_level()`.
- Fixed crash during Decimal adaptation with a few 2.5.x Python versions - Fixed crash during Decimal adaptation with a few 2.5.x Python versions
(ticket #7). (:ticket:`#7`).
- Fixed notices order (ticket #9). - Fixed notices order (:ticket:`#9`).
What's new in psycopg 2.2.2 What's new in psycopg 2.2.2
--------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Bux fixes: Bux fixes:
- the call to logging.basicConfig() in pool.py has been dropped: it was - the call to logging.basicConfig() in pool.py has been dropped: it was
messing with some projects using logging (and a library should not messing with some projects using logging (and a library should not
@ -275,15 +285,15 @@ What's new in psycopg 2.2.2
What's new in psycopg 2.2.1 What's new in psycopg 2.2.1
--------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Bux fixes: Bux fixes:
- psycopg now builds again on MS Windows. - psycopg now builds again on MS Windows.
What's new in psycopg 2.2.0 What's new in psycopg 2.2
--------------------------- -------------------------
This is the first release of the new 2.2 series, supporting not just one but This is the first release of the new 2.2 series, supporting not just one but
two different ways of executing asynchronous queries, thanks to Jan and Daniele two different ways of executing asynchronous queries, thanks to Jan and Daniele
@ -294,7 +304,7 @@ psycopg now supports both classic select() loops and "green" coroutine
libraries. It is all in the documentation, so just point your browser to libraries. It is all in the documentation, so just point your browser to
doc/html/advanced.html. doc/html/advanced.html.
* Other new features: Other new features:
- truncate() method for lobjects. - truncate() method for lobjects.
- COPY functions are now a little bit faster. - COPY functions are now a little bit faster.
@ -306,7 +316,7 @@ doc/html/advanced.html.
- Better timezone support. - Better timezone support.
- Lots of documentation updates. - Lots of documentation updates.
* Bug fixes: Bug fixes:
- Fixed some gc/refcounting problems. - Fixed some gc/refcounting problems.
- Fixed reference leak in NOTIFY reception. - Fixed reference leak in NOTIFY reception.
@ -319,49 +329,55 @@ doc/html/advanced.html.
What's new in psycopg 2.0.14 What's new in psycopg 2.0.14
---------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
New features:
* New features:
- Support for adapting tuples to PostgreSQL arrays is now enabled by - Support for adapting tuples to PostgreSQL arrays is now enabled by
default and does not require importing psycopg2.extensions anymore. default and does not require importing psycopg2.extensions anymore.
- "can't adapt" error message now includes full type information. - "can't adapt" error message now includes full type information.
- Thank to Daniele Varrazzo (piro) psycopg2's source package now includes - Thank to Daniele Varrazzo (piro) psycopg2's source package now includes
full documentation in HTML and plain text format. full documentation in HTML and plain text format.
* Bug fixes: Bug fixes:
- No loss of precision when using floats anymore. - No loss of precision when using floats anymore.
- decimal.Decimal "nan" and "infinity" correctly converted to PostgreSQL - decimal.Decimal "nan" and "infinity" correctly converted to PostgreSQL
numeric NaN values (note that PostgreSQL numeric type does not support numeric NaN values (note that PostgreSQL numeric type does not support
infinity but just NaNs.) infinity but just NaNs.)
- psycopg2.extensions now includes Binary. - psycopg2.extensions now includes Binary.
* It seems we're good citizens of the free software ecosystem and that big It seems we're good citizens of the free software ecosystem and that big
big big companies and people ranting on the pgsql-hackers mailing list big big companies and people ranting on the pgsql-hackers mailing list
we'll now not dislike us. *g* (See LICENSE file for the details.) we'll now not dislike us. *g* (See LICENSE file for the details.)
What's new in psycopg 2.0.13 What's new in psycopg 2.0.13
---------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
New features:
* New features:
- Support for UUID arrays. - Support for UUID arrays.
- It is now possible to build psycopg linking to a static libpq - It is now possible to build psycopg linking to a static libpq
library. library.
* Bug fixes: Bug fixes:
- Fixed a deadlock related to using the same connection with - Fixed a deadlock related to using the same connection with
multiple cursors from different threads. multiple cursors from different threads.
- Builds again with MSVC. - Builds again with MSVC.
What's new in psycopg 2.0.12 What's new in psycopg 2.0.12
---------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
New features:
* New features:
- The connection object now has a reset() method that can be used to - The connection object now has a reset() method that can be used to
reset the connection to its default state. reset the connection to its default state.
* Bug fixes: Bug fixes:
- copy_to() and copy_from() now accept a much larger number of columns. - copy_to() and copy_from() now accept a much larger number of columns.
- Fixed PostgreSQL version detection. - Fixed PostgreSQL version detection.
- Fixed ZPsycopgDA version check. - Fixed ZPsycopgDA version check.
@ -372,23 +388,26 @@ What's new in psycopg 2.0.12
What's new in psycopg 2.0.11 What's new in psycopg 2.0.11
---------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
New features:
* New features:
- DictRow and RealDictRow now use less memory. If you inherit on them - DictRow and RealDictRow now use less memory. If you inherit on them
remember to set __slots__ for your new attributes or be prepare to remember to set __slots__ for your new attributes or be prepare to
go back to old memory usage. go back to old memory usage.
* Bug fixes: Bug fixes:
- Fixed exeception in setup.py. - Fixed exeception in setup.py.
- More robust detection of PostgreSQL development versions. - More robust detection of PostgreSQL development versions.
- Fixed exception in RealDictCursor, introduced in 2.0.10. - Fixed exception in RealDictCursor, introduced in 2.0.10.
What's new in psycopg 2.0.10 What's new in psycopg 2.0.10
---------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
New features:
* New features:
- A specialized type-caster that can parse time zones with seconds is - A specialized type-caster that can parse time zones with seconds is
now available. Note that after enabling it (see extras.py) "wrong" now available. Note that after enabling it (see extras.py) "wrong"
time zones will be parsed without raising an exception but the time zones will be parsed without raising an exception but the
@ -401,7 +420,8 @@ What's new in psycopg 2.0.10
- The connection object has a .get_parameter_status() methods that - The connection object has a .get_parameter_status() methods that
can be used to obtain useful information from the server. can be used to obtain useful information from the server.
* Bug fixes: Bug fixes:
- None is now correctly always adapted to NULL. - None is now correctly always adapted to NULL.
- Two double memory free errors provoked by multithreading and - Two double memory free errors provoked by multithreading and
garbage collection are now fixed. garbage collection are now fixed.
@ -415,22 +435,25 @@ What's new in psycopg 2.0.10
What's new in psycopg 2.0.9 What's new in psycopg 2.0.9
--------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
New features:
* New features:
- "import psycopg2.extras" to get some support for handling times - "import psycopg2.extras" to get some support for handling times
and timestamps with seconds in the time zone offset. and timestamps with seconds in the time zone offset.
- DictCursors can now be used as named cursors. - DictCursors can now be used as named cursors.
* Bug fixes: Bug fixes:
- register_type() now accept an explicit None as its second parameter. - register_type() now accept an explicit None as its second parameter.
- psycopg2 should build again on MSVC and Solaris. - psycopg2 should build again on MSVC and Solaris.
What's new in psycopg 2.0.9 What's new in psycopg 2.0.9
--------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
New features:
* New features:
- COPY TO/COPY FROM queries now can be of any size and psycopg will - COPY TO/COPY FROM queries now can be of any size and psycopg will
correctly quote separators. correctly quote separators.
- float values Inf and NaN are now correctly handled and can - float values Inf and NaN are now correctly handled and can
@ -443,30 +466,35 @@ What's new in psycopg 2.0.9
- copy_from() and copy_to() can now use quoted separators. - copy_from() and copy_to() can now use quoted separators.
- "import psycopg2.extras" to get UUID support. - "import psycopg2.extras" to get UUID support.
* Bug fixes: Bug fixes:
- register_type() now works on connection and cursor subclasses. - register_type() now works on connection and cursor subclasses.
- fixed a memory leak when using lobjects. - fixed a memory leak when using lobjects.
What's new in psycopg 2.0.8 What's new in psycopg 2.0.8
--------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
New features:
* New features:
- The connection object now has a get_backend_pid() method that - The connection object now has a get_backend_pid() method that
returns the current PostgreSQL connection backend process PID. returns the current PostgreSQL connection backend process PID.
- The PostgreSQL large object API has been exposed through the - The PostgreSQL large object API has been exposed through the
Cursor.lobject() method. Cursor.lobject() method.
* Bug fixes: Bug fixes:
- Some fixes to ZPsycopgDA have been merged from the Debian package. - Some fixes to ZPsycopgDA have been merged from the Debian package.
- A memory leak was fixed in Cursor.executemany(). - A memory leak was fixed in Cursor.executemany().
- A double free was fixed in pq_complete_error(), that caused crashes - A double free was fixed in pq_complete_error(), that caused crashes
under some error conditions. under some error conditions.
What's new in psycopg 2.0.7
---------------------------
* Improved error handling: What's new in psycopg 2.0.7
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Improved error handling:
- All instances of psycopg2.Error subclasses now have pgerror, - All instances of psycopg2.Error subclasses now have pgerror,
pgcode and cursor attributes. They will be set to None if no pgcode and cursor attributes. They will be set to None if no
value is available. value is available.
@ -480,14 +508,16 @@ What's new in psycopg 2.0.7
raised at that point rather than resulting in "ProgrammingError: raised at that point rather than resulting in "ProgrammingError:
no results to fetch" later on. (#186) no results to fetch" later on. (#186)
* Better PostgreSQL compatibility: Better PostgreSQL compatibility:
- If the server uses standard_conforming_strings, perform - If the server uses standard_conforming_strings, perform
appropriate quoting. appropriate quoting.
- BC dates are now handled if psycopg is compiled with mxDateTime - BC dates are now handled if psycopg is compiled with mxDateTime
support. If using datetime, an appropriate ValueError is support. If using datetime, an appropriate ValueError is
raised. (#203) raised. (#203)
* Other bug fixes: Other bug fixes:
- If multiple sub-interpreters are in use, do not share the Decimal - If multiple sub-interpreters are in use, do not share the Decimal
type between them. (#192) type between them. (#192)
- Buffer objects obtained from psycopg are now accepted by psycopg - Buffer objects obtained from psycopg are now accepted by psycopg
@ -495,7 +525,8 @@ What's new in psycopg 2.0.7
- A few small changes were made to improve DB-API compatibility. - A few small changes were made to improve DB-API compatibility.
All the dbapi20 tests now pass. All the dbapi20 tests now pass.
* Miscellaneous: Miscellaneous:
- The PSYCOPG_DISPLAY_SIZE option is now off by default. This means - The PSYCOPG_DISPLAY_SIZE option is now off by default. This means
that display size will always be set to "None" in that display size will always be set to "None" in
cursor.description. Calculating the display size was expensive, cursor.description. Calculating the display size was expensive,
@ -508,10 +539,12 @@ What's new in psycopg 2.0.7
to set the PSYCOPG_DEBUG environment variable to turn on debug to set the PSYCOPG_DEBUG environment variable to turn on debug
spew. spew.
What's new in psycopg 2.0.6
---------------------------
* Better support for PostgreSQL, Python and win32: What's new in psycopg 2.0.6
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Better support for PostgreSQL, Python and win32:
- full support for PostgreSQL 8.2, including NULLs in arrays - full support for PostgreSQL 8.2, including NULLs in arrays
- support for almost all existing PostgreSQL encodings - support for almost all existing PostgreSQL encodings
- full list of PostgreSQL error codes available by importing the - full list of PostgreSQL error codes available by importing the
@ -519,19 +552,20 @@ What's new in psycopg 2.0.6
- full support for Python 2.5 and 64 bit architectures - full support for Python 2.5 and 64 bit architectures
- better build support on win32 platform - better build support on win32 platform
* Support for per-connection type-casters (used by ZPsycopgDA too, this Support for per-connection type-casters (used by ZPsycopgDA too, this
fixes a long standing bug that made different connections use a random fixes a long standing bug that made different connections use a random
set of date/time type-casters instead of the configured one.) set of date/time type-casters instead of the configured one.)
* Better management of times and dates both from Python and in Zope. Better management of times and dates both from Python and in Zope.
* copy_to and copy_from now take an extra "columns" parameter. copy_to and copy_from now take an extra "columns" parameter.
* Python tuples are now adapted to SQL sequences that can be used with Python tuples are now adapted to SQL sequences that can be used with
the "IN" operator by default if the psycopg2.extensions module is the "IN" operator by default if the psycopg2.extensions module is
imported (i.e., the SQL_IN adapter was moved from extras to extensions.) imported (i.e., the SQL_IN adapter was moved from extras to extensions.)
* Fixed some small buglets and build glitches: Fixed some small buglets and build glitches:
- removed double mutex destroy - removed double mutex destroy
- removed all non-constant initializers - removed all non-constant initializers
- fixed PyObject_HEAD declarations to avoid memory corruption - fixed PyObject_HEAD declarations to avoid memory corruption
@ -541,15 +575,17 @@ What's new in psycopg 2.0.6
- now using more than one argument format raise an error instead of - now using more than one argument format raise an error instead of
a segfault a segfault
What's new in psycopg 2.0.5.1 What's new in psycopg 2.0.5.1
­---------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Now it really, really builds on MSVC and older gcc versions. * Now it really, really builds on MSVC and older gcc versions.
What's new in psycopg 2.0.5 What's new in psycopg 2.0.5
­-------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Fixed various buglets such as: * Fixed various buglets such as:
- segfault when passing an empty string to Binary() - segfault when passing an empty string to Binary()
- segfault on null queries - segfault on null queries
- segfault and bad keyword naming in .executemany() - segfault and bad keyword naming in .executemany()
@ -560,17 +596,17 @@ What's new in psycopg 2.0.5
* connect() now accept both integers and strings as port parameter * connect() now accept both integers and strings as port parameter
What's new in psycopg 2.0.4 What's new in psycopg 2.0.4
--------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Fixed float conversion bug introduced in 2.0.3. * Fixed float conversion bug introduced in 2.0.3.
What's new in psycopg 2.0.3 What's new in psycopg 2.0.3
--------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Fixed various buglets and a memory leak (see ChangeLog for details) * Fixed various buglets and a memory leak (see ChangeLog for details)
What's new in psycopg 2.0.2 What's new in psycopg 2.0.2
--------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Fixed a bug in array typecasting that sometimes made psycopg forget about * Fixed a bug in array typecasting that sometimes made psycopg forget about
the last element in the array. the last element in the array.
@ -581,7 +617,7 @@ What's new in psycopg 2.0.2
version is issued only if __GCC__ is defined.) version is issued only if __GCC__ is defined.)
What's new in psycopg 2.0.1 What's new in psycopg 2.0.1
--------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
* ZPsycopgDA now actually loads. * ZPsycopgDA now actually loads.
@ -597,7 +633,7 @@ What's new in psycopg 2.0
so that you all stop grumbling about psycopg 2 is still in beta.. :) so that you all stop grumbling about psycopg 2 is still in beta.. :)
What's new in psycopg 2.0 beta 7 What's new in psycopg 2.0 beta 7
-------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Ironed out last problems with times and date (should be quite solid now.) * Ironed out last problems with times and date (should be quite solid now.)
@ -616,7 +652,7 @@ What's new in psycopg 2.0 beta 7
* Documentation in the doc/ directory! (With many kudos to piro.) * Documentation in the doc/ directory! (With many kudos to piro.)
What's new in psycopg 2.0 beta 6 What's new in psycopg 2.0 beta 6
-------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Support for named cursors (see examples/fetch.py). * Support for named cursors (see examples/fetch.py).
@ -629,7 +665,7 @@ What's new in psycopg 2.0 beta 6
* The "decimal" module is now used if available under Python 2.3. * The "decimal" module is now used if available under Python 2.3.
What's new in psycopg 2.0 beta 5 What's new in psycopg 2.0 beta 5
-------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Fixed all known bugs. * Fixed all known bugs.
@ -651,7 +687,7 @@ What's new in psycopg 2.0 beta 5
* NOTIFY is correctly trapped (see examples/notify.py for example code.) * NOTIFY is correctly trapped (see examples/notify.py for example code.)
What's new in psycopg 2.0 beta 4 What's new in psycopg 2.0 beta 4
-------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* psycopg module is now named psycopg2. * psycopg module is now named psycopg2.
@ -667,14 +703,14 @@ What's new in psycopg 2.0 beta 4
* Fixed lots of small bugs, see ChangeLog for details. * Fixed lots of small bugs, see ChangeLog for details.
What's new in psycopg 2.0 beta 3 What's new in psycopg 2.0 beta 3
-------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* ZPsycopgDA now works (except table browsing.) * ZPsycopgDA now works (except table browsing.)
* psycopg build again on Python 2.2. * psycopg build again on Python 2.2.
What's new in psycopg 2.0 beta 2 What's new in psycopg 2.0 beta 2
-------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Fixed ZPsycopgDA version check (ZPsycopgDA can now be imported in * Fixed ZPsycopgDA version check (ZPsycopgDA can now be imported in
Zope.) Zope.)
@ -687,7 +723,7 @@ What's new in psycopg 2.0 beta 2
* Generic fixed and memory leaks plugs. * Generic fixed and memory leaks plugs.
What's new in psycopg 2.0 beta 1 What's new in psycopg 2.0 beta 1
-------------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Officially in beta (i.e., no new features will be added.) * Officially in beta (i.e., no new features will be added.)
@ -716,7 +752,7 @@ What's new in psycopg 2.0 beta 1
* A lot of bugfixes (binary, datetime, 64 bit arches, GIL, .executemany()) * A lot of bugfixes (binary, datetime, 64 bit arches, GIL, .executemany())
What's new in psycopg 1.99.13 What's new in psycopg 1.99.13
----------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Added missing .executemany() method. * Added missing .executemany() method.
@ -724,7 +760,7 @@ What's new in psycopg 1.99.13
faster than before.) faster than before.)
What's new in psycopg 1.99.12 What's new in psycopg 1.99.12
----------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* .rowcount should be ok and in sync with psycopg 1. * .rowcount should be ok and in sync with psycopg 1.
@ -737,7 +773,7 @@ What's new in psycopg 1.99.12
* getquoted() called for real by the mogrification code. * getquoted() called for real by the mogrification code.
What's new in psycopg 1.99.11 What's new in psycopg 1.99.11
----------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* 'cursor' argument in .cursor() connection method renamed to * 'cursor' argument in .cursor() connection method renamed to
'cursor_factory'. 'cursor_factory'.
@ -750,7 +786,7 @@ What's new in psycopg 1.99.11
* fixes to the async core. * fixes to the async core.
What's new in psycopg 1.99.10 What's new in psycopg 1.99.10
----------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* The adapt() function now fully supports the adaptation protocol * The adapt() function now fully supports the adaptation protocol
described in PEP 246. Note that the adapters registry now is indexed described in PEP 246. Note that the adapters registry now is indexed
@ -763,7 +799,7 @@ What's new in psycopg 1.99.10
fetching (.fetchXXX() methods.) fetching (.fetchXXX() methods.)
What's new in psycopg 1.99.9 What's new in psycopg 1.99.9
---------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* Added simple pooling code (psycopg.pool module); see the reworked * Added simple pooling code (psycopg.pool module); see the reworked
examples/threads.py for example code. examples/threads.py for example code.
@ -778,11 +814,10 @@ What's new in psycopg 1.99.9
* Isn't that enough? :) * Isn't that enough? :)
What's new in psycopg 1.99.8 What's new in psycopg 1.99.8
---------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* added support for UNICODE queries. * added support for UNICODE queries.
* added UNICODE typecaster; to activate it just do::
* added UNICODE typecaster; to activate it just do:
psycopg.extensions.register_type(psycopg.extensions.UNICODE) psycopg.extensions.register_type(psycopg.extensions.UNICODE)
@ -790,57 +825,43 @@ What's new in psycopg 1.99.8
not activated by default. not activated by default.
* cursors now really support the iterator protocol. * cursors now really support the iterator protocol.
* solved the rounding errors in time conversions. * solved the rounding errors in time conversions.
* now cursors support .fileno() and .isready() methods, to be used in * now cursors support .fileno() and .isready() methods, to be used in
select() calls. select() calls.
* .copy_from() and .copy_in() methods are back in (still using the old * .copy_from() and .copy_in() methods are back in (still using the old
protocol, will be updated to use new one in next releasae.) protocol, will be updated to use new one in next releasae.)
* fixed memory corruption bug reported on win32 platform. * fixed memory corruption bug reported on win32 platform.
What's new in psycopg 1.99.7 What's new in psycopg 1.99.7
---------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* added support for tuple factories in cursor objects (removed factory * added support for tuple factories in cursor objects (removed factory
argument in favor of a .tuple_factory attribute on the cursor object); argument in favor of a .tuple_factory attribute on the cursor object);
see the new module psycopg.extras for a cursor (DictCursor) that see the new module psycopg.extras for a cursor (DictCursor) that
return rows as objects that support indexing both by position and return rows as objects that support indexing both by position and
column name. column name.
* added support for tzinfo objects in datetime.timestamp objects: the * added support for tzinfo objects in datetime.timestamp objects: the
PostgreSQL type "timestamp with time zone" is converted to PostgreSQL type "timestamp with time zone" is converted to
datetime.timestamp with a FixedOffsetTimezone initialized as necessary. datetime.timestamp with a FixedOffsetTimezone initialized as necessary.
What's new in psycopg 1.99.6 What's new in psycopg 1.99.6
---------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* sslmode parameter from 1.1.x * sslmode parameter from 1.1.x
* various datetime conversion improvements. * various datetime conversion improvements.
* now psycopg should compile without mx or without native datetime * now psycopg should compile without mx or without native datetime
(not both, obviously.) (not both, obviously.)
* included various win32/MSVC fixes (pthread.h changes, winsock2 * included various win32/MSVC fixes (pthread.h changes, winsock2
library, include path in setup.py, etc.) library, include path in setup.py, etc.)
* ported interval fixes from 1.1.14/1.1.15. * ported interval fixes from 1.1.14/1.1.15.
* the last query executed by a cursor is now available in the * the last query executed by a cursor is now available in the
.query attribute. .query attribute.
* conversion of unicode strings to backend encoding now uses a table * conversion of unicode strings to backend encoding now uses a table
(that still need to be filled.) (that still need to be filled.)
* cursors now have a .mogrify() method that return the query string * cursors now have a .mogrify() method that return the query string
instead of executing it. instead of executing it.
* connection objects now have a .dsn read-only attribute that holds the * connection objects now have a .dsn read-only attribute that holds the
connection string. connection string.
* moved psycopg C module to _psycopg and made psycopg a python module: * moved psycopg C module to _psycopg and made psycopg a python module:
this allows for a neat separation of DBAPI-2.0 functionality and psycopg this allows for a neat separation of DBAPI-2.0 functionality and psycopg
extensions; the psycopg namespace will be also used to provide extensions; the psycopg namespace will be also used to provide
@ -848,36 +869,33 @@ What's new in psycopg 1.99.6
functions and the like.) functions and the like.)
What's new in psycopg 1.99.3 What's new in psycopg 1.99.3
---------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* added support for python 2.3 datetime types (both ways) and made datetime * added support for python 2.3 datetime types (both ways) and made datetime
the default set of typecasters when available. the default set of typecasters when available.
* added example: dt.py. * added example: dt.py.
What's new in psycopg 1.99.3 What's new in psycopg 1.99.3
---------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* initial working support for unicode bound variables: UTF-8 and latin-1 * initial working support for unicode bound variables: UTF-8 and latin-1
backend encodings are natively supported (and the encoding.py example even backend encodings are natively supported (and the encoding.py example even
works!) works!)
* added .set_client_encoding() method on the connection object. * added .set_client_encoding() method on the connection object.
* added examples: encoding.py, binary.py, lastrowid.py. * added examples: encoding.py, binary.py, lastrowid.py.
What's new in psycopg 1.99.2 What's new in psycopg 1.99.2
---------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* better typecasting: * better typecasting:
- DateTimeDelta used for postgresql TIME (merge from 1.1) - DateTimeDelta used for postgresql TIME (merge from 1.1)
- BYTEA now is converted to a real buffer object, not to a string - BYTEA now is converted to a real buffer object, not to a string
* buffer objects are now adapted into Binary objects automatically. * buffer objects are now adapted into Binary objects automatically.
* ported scroll method from 1.1 (DBAPI-2.0 extension for cursors) * ported scroll method from 1.1 (DBAPI-2.0 extension for cursors)
* initial support for some DBAPI-2.0 extensions: * initial support for some DBAPI-2.0 extensions:
- .rownumber attribute for cursors - .rownumber attribute for cursors
- .connection attribute for cursors - .connection attribute for cursors
- .next() and .__iter__() methods to have cursors support the iterator - .next() and .__iter__() methods to have cursors support the iterator
@ -885,7 +903,7 @@ What's new in psycopg 1.99.2
- all exception objects are exported to the connection object - all exception objects are exported to the connection object
What's new in psycopg 1.99.1 What's new in psycopg 1.99.1
---------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* implemented microprotocols to adapt arbitrary types to the interface used by * implemented microprotocols to adapt arbitrary types to the interface used by
psycopg to bind variables in execute; psycopg to bind variables in execute;
@ -895,7 +913,7 @@ What's new in psycopg 1.99.1
What's new in psycopg 1.99.0 What's new in psycopg 1.99.0
---------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* reorganized the whole source tree; * reorganized the whole source tree;

View File

@ -26,7 +26,7 @@ extensions = ['sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx.ext.ifconfig',
'sphinx.ext.doctest', 'sphinx.ext.intersphinx' ] 'sphinx.ext.doctest', 'sphinx.ext.intersphinx' ]
# Specific extensions for Psycopg documentation. # Specific extensions for Psycopg documentation.
extensions += [ 'dbapi_extension', 'sql_role' ] extensions += [ 'dbapi_extension', 'sql_role', 'ticket_role' ]
# Add any paths that contain templates here, relative to this directory. # Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates'] templates_path = ['_templates']
@ -65,6 +65,9 @@ intersphinx_mapping = {
'py3': ('http://docs.python.org/3.2', None), 'py3': ('http://docs.python.org/3.2', None),
} }
# Pattern to generate links to the bug tracker
ticket_url = 'http://psycopg.lighthouseapp.com/projects/62710/tickets/%s'
# The language for content autogenerated by Sphinx. Refer to documentation # The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages. # for a list of supported languages.
#language = None #language = None

View File

@ -373,6 +373,8 @@ requires no adapter registration.
List of component type oids of the type to be casted. List of component type oids of the type to be casted.
.. _adapt-range:
.. index:: .. index::
pair: range; Data types pair: range; Data types

View File

@ -54,6 +54,7 @@ Psycopg 2 is both Unicode and Python 3 friendly.
extras extras
errorcodes errorcodes
faq faq
news
.. ifconfig:: builder != 'text' .. ifconfig:: builder != 'text'

4
doc/src/news.rst Normal file
View File

@ -0,0 +1,4 @@
Release notes
=============
.. include:: ../../NEWS

View File

@ -0,0 +1,39 @@
# -*- coding: utf-8 -*-
"""
ticket role
~~~~~~~~~~~
An interpreted text role to link docs to lighthouse issues.
:copyright: Copyright 2013 by Daniele Varrazzo.
"""
from docutils import nodes, utils
from docutils.parsers.rst import roles
def ticket_role(name, rawtext, text, lineno, inliner, options={}, content=[]):
try:
num = int(text.replace('#', ''))
except ValueError:
msg = inliner.reporter.error(
"ticket number must be... a number, got '%s'" % text)
prb = inliner.problematic(rawtext, rawtext, msg)
return [prb], [msg]
url_pattern = inliner.document.settings.env.app.config.ticket_url
if url_pattern is None:
msg = inliner.reporter.warning(
"ticket not configured: please configure ticket_url in conf.py")
prb = inliner.problematic(rawtext, rawtext, msg)
return [prb], [msg]
url = url_pattern % num
roles.set_classes(options)
node = nodes.reference(rawtext, 'ticket ' + utils.unescape(text),
refuri=url, **options)
return [node], []
def setup(app):
app.add_config_value('ticket_url', None, 'env')
app.add_role('ticket', ticket_role)