Changes
=======

0.9.2 released on 2009-12-14
----------------------------

 * Alter protocol message type comparison method.
   In 0.9.1 and before, types were compared using 'is' because all
   message type objects were loaded from a tuple created by the
   postgresql.protocol.message_types module. In some environments,
   sys.modules is cleared. For pure-Python installations, this is unlikely
   to cause a problem, but when the optimized module is available, it will hold
   a reference to the "old" version of the message_types data. Subsequently, the
   use of the 'is' operator is then broken resulting in superfluous protocol
   errors. The fix is to use the '==' operator. This does not add any
   significant overhead, but use of 'is' may return if some permanent storage
   method becomes available. [Reported by Radomir Stevanovic]
 * Fix a bug revealed by a no route to host connection failure. Ended in an
   ambiguous KeyError due there being no message string for that particular
   errno. Add an appropriate message string, and fallback on a default message
   when a specific one doesn't exist.
 * Correct types.Array binary serialization (8.5 added extra checks)
 * Add more encoding name mapping entries.
 * Documentation improvements.
 * Fix slice() support in Row.__getitem__.
 * DEPRECATION: 2PC interfaces are being deprecated. Warnings in 1.0,
   removal in 1.1.

0.9.1 released on 2009-08-12
----------------------------

 * Fix misaligned reads in C extensions [Reported by Leonardo Francalanci]
 * Don't be strict about keys(field type) in Notice messages per specification:
   http://www.postgresql.org/docs/8.4/static/protocol-message-formats.html
 * Fix test_protocol on ubuntu linux systems.
 * Stop waiting for cluster startup on postgresql.exceptions.ProtocolError.
 * DEAD BRANCH: 0.8 is no longer supported.

0.9.0 released on 2009-06-13
----------------------------

 * Performance improvements.
 * Extend `postgresql.open` to take keyword arguments.
 * Implement query libraries and connection categories[#1010581 & #1010618].
 * Implement ``clone()`` on Connections, Statements, and Cursors.
 * Display the line and mark the location of the POSITION for syntax errors.
 * Refactor ``ps.load()`` into ``ps.load_chunks()`` and ``ps.load_rows()``.
 * Refactor `postgresql.api.InterfaceElement`.
 * Refactor driver.pq3.Connection to use protocol.client3.Connection.
 * Refactor driver.pq3.Cursor into types selected by PreparedStatements.
 * Fix memory leak due to circular references and __del__. [Reported by Valentine Gogichashvili]
   Additionally, try to avoid circular references at that level.
 * Correct StoredProcedure's statement production. It was falsely using a
   a mechanism that would use SQL predefined type names instead of
   qualified names. [Reported by Dallas Morisett]
 * Make DB-API connect() inherit defaults like postgresql.open()
 * Make DB-API extend PG-API so that DB-API connections will now have direct
   access to PG-API features.
 * Fix DB-API setting of rowcount after execute. [Reported by Mike Bayer; 1010643]
 * Document msghook attributes, and use postgresql.sys.errformat for
   postgresql.exceptions.Error.__str__.


0.8.2 released on 2009-06-13
----------------------------

 * Correct StoredProcedure's statement production. It was falsely using a
   a mechanism that would use SQL predefined type names instead of
   qualified names. [Reported by Dallas Morisett]
 * Fix DB-API setting of rowcount after execute. [Reported by Mike Bayer; 1010643]


0.8.1 released on 2009-04-30
----------------------------

 * Fix memory leak due to circular references and __del__. [Reported by Valentine Gogichashvili]
 * Fix encoding normalization. [Reported by Marc Silver]
 * Fix "method" decorator to return callable when val is None.
 * Fix startup of clusters in silent mode.

0.8.0 released on 2009-04-03
----------------------------

Differences from the original pg/python projects.

 * Integrate projects into a single package. Remove "codenames".
 * pg_greentrunk evolved into PG-API, postgresql.api.
 * Add new execution methods to statement objects: chunks, rows, declare.
 * Refactor connection negotiation code to use a generator. (xact3.Negotiation)
 * Remove sixbit confusion from postgresql.exceptions.
 * Integrate fcrypt module for crypt authentication.
 * Remove pytz dependency, always use UTC for timestamptz.
 * Remove netaddr dependency.
 * Improve DB-API interface by allowing subjective paramstyle. (psycopg2 compat)
 * Provide autocommit support on DB-API connections.
 * Add support for binary numeric.
 * Add proper support for sslmode and connect_timeout.
 * Conditionally DECLARE certain cursors WITH HOLD when outside of blocks.
 * Add typed support for fetches from db.cursor_from_id().
 * Change the test infrastructure to automatically create a cluster.
 * More improvements than I can remember.
