Release History
Version 1.09, 2012-01-03
- Added Two Phase Commit support, methods:
xid(),
tpc_begin(),
tpc_prepare(),
tpc_commit(),
tpc_rollback(), and
tpc_recover(), based on prior TPC
connection wrapper for psycopg2 developed originally for
pyreplica
- Added autocommit attribute to avoid
to send a BEGIN automatically. This is needed for some commands (e.g. CREATE
DATABASE, VACUUM...) that require to be run outside any transaction.
Thanks funkybob for the original patch (adapted from a method to a property
to be compatible with other python connectors)
- Fixed NUMERIC representation issue (truncation on string conversion).
Thanks zeha for the report and patch.
- Fixed “Empty array issue” that raised an exception when SELECTing an empty
array field (with any primitive type into).
Thanks franklx for the original patch (modified to return a true empty list)
- Fixed unicode issue in textout that caused an exception when using PostgreSQL
errors in non-English Locale and, in some cases, when using non ASCII chars.
Now, the text is encoded correctly using the client_encoding.
- Added server_version attribute as
reported by the backend.
Thanks Ulrich Petri for the patch, docs and test case.
- Added OID 194 mapping for “string representing an internal node tree”
to support sqlalchemy introspection with PostgreSQL 9.1.
Thanks dave42 for the original patch.
- Added OID 142 mapping for “xml” type basic support.
Thanks dahilia for the report.
- Fixed issue with python 2.5 missing ssl (no ssl support if package is not
installed)
- Added basic automatic test connection setup (using loged-in username)
- NOTE: this fork is maintained by Mariano Reingart at
pg8000.googlecode.com
Thanks to Mathieu Fenniak for the original version.
Version 1.08, 2010-06-08
- Removed usage of deprecated md5 module, replaced with hashlib.
Thanks to Gavin Sherry for the patch.
- Start transactions on execute or executemany, rather than immediately at the
end of previous transaction. Thanks to Ben Moran for the patch.
- Add encoding lookups where needed, to address usage of SQL_ASCII encoding.
Thanks to Benjamin Schweizer for the patch.
- Remove record type cache SQL query on every new pg8000 connection.
- Fix and test SSL connections.
- Handle out-of-band messages during authentication.
Version 1.07, 2009-01-06
- Added support for copy_to() and
copy_from() methods on cursor objects, to
allow the usage of the PostgreSQL COPY queries. Thanks to Bob Ippolito for
the original patch.
- Added the notifies and
notifies_lock attributes to DBAPI
connection objects to provide access to server-side event notifications.
Thanks again to Bob Ippolito for the original patch.
- Improved performance using buffered socket I/O.
- Added valid range checks for Interval attributes.
- Added binary transmission of Decimal values. This permits
full support for NUMERIC[] types, both send and receive.
- New Sphinx-based website and documentation.
Version 1.06, 2008-12-09
- pg8000-py3: a branch of pg8000 fully supporting Python 3.0.
- New Sphinx-based documentation.
- Support for PostgreSQL array types – INT2[], INT4[], INT8[], FLOAT[],
DOUBLE[], BOOL[], and TEXT[]. New support permits both sending and
receiving these values.
- Limited support for receiving RECORD types. If a record type is received,
it will be translated into a Python dict object.
- Fixed potential threading bug where the socket lock could be lost during
error handling.
Version 1.05, 2008-09-03
- Proper support for timestamptz field type:
- Reading a timestamptz field results in a datetime.datetime instance that
has a valid tzinfo property. tzinfo is always UTC.
- Sending a datetime.datetime instance with a tzinfo value will be
sent as a timestamptz type, with the appropriate tz conversions done.
- Map postgres < – > python text encodings correctly.
- Fix bug where underscores were not permitted in pyformat names.
- Support “%s” in a pyformat strin.
- Add cursor.connection DB-API extension.
- Add cursor.next and cursor.__iter__ DB-API extensions.
- DBAPI documentation improvements.
- Don’t attempt rollback in cursor.execute if a ConnectionClosedError occurs.
- Add warning for accessing exceptions as attributes on the connection object,
as per DB-API spec.
- Fix up open connection when an unexpected connection occurs, rather than
leaving the connection in an unusable state.
- Use setuptools/egg package format.
Version 1.04, 2008-05-12
- DBAPI 2.0 compatibility:
- rowcount returns rows affected when appropriate (eg. UPDATE, DELETE)
- Fix CursorWrapper.description to return a 7 element tuple, as per spec.
- Fix CursorWrapper.rowcount when using executemany.
- Fix CursorWrapper.fetchmany to return an empty sequence when no more
results are available.
- Add access to DBAPI exceptions through connection properties.
- Raise exception on closing a closed connection.
- Change DBAPI.STRING to varchar type.
- rowcount returns -1 when appropriate.
- DBAPI implementation now passes Stuart Bishop’s Python DB API 2.0 Anal
Compliance Unit Test.
- Make interface.Cursor class use unnamed prepared statement that binds to
parameter value types. This change increases the accuracy of PG’s query
plans by including parameter information, hence increasing performance in
some scenarios.
- Raise exception when reading from a cursor without a result set.
- Fix bug where a parse error may have rendered a connection unusable.
Version 1.03, 2008-05-09
- Separate pg8000.py into multiple python modules within the pg8000 package.
There should be no need for a client to change how pg8000 is imported.
- Fix bug in row_description property when query has not been completed.
- Fix bug in fetchmany dbapi method that did not properly deal with the end of
result sets.
- Add close methods to DB connections.
- Add callback event handlers for server notices, notifications, and runtime
configuration changes.
- Add boolean type output.
- Add date, time, and timestamp types in/out.
- Add recognition of “SQL_ASCII” client encoding, which maps to Python’s
“ascii” encoding.
- Add types.Interval class to represent PostgreSQL’s interval data type, and
appropriate wire send/receive methods.
- Remove unused type conversion methods.
Version 1.02, 2007-03-13
- Add complete DB-API 2.0 interface.
- Add basic SSL support via ssl connect bool.
- Rewrite pg8000_test.py to use Python’s unittest library.
- Add bytea type support.
- Add support for parameter output types: NULL value, timestamp value, python
long value.
- Add support for input parameter type oid.
Version 1.01, 2007-03-09
- Add support for writing floats and decimal objs up to PG backend.
- Add new error handling code and tests to make sure connection can recover
from a database error.
- Fixed bug where timestamp types were not always returned in the same binary
format from the PG backend. Text format is now being used to send
timestamps.
- Fixed bug where large packets from the server were not being read fully, due
to socket.read not always returning full read size requested. It was a
lazy-coding bug.
- Added locks to make most of the library thread-safe.
- Added UNIX socket support.
Version 1.00, 2007-03-08
- First public release. Although fully functional, this release is mostly
lacking in production testing and in type support.