==========================
PyGreSQL future directions
==========================


To Do
-----

- Documentation for the pgdb module (everything specific to PyGreSQL).
- The large object and direct access functions need much more attention.
- The C module needs to be cleaned up and redundant code merged,
  and should get its own unit test module.
- The fetch method should use real cursors.
- What shall we do with the "tutorial" directory
  (it's rather a tutorial for Postgres/SQL than for PyGreSQL,
  it's using only the query method from the classic pg module and
  no other PyGreSQL functionality, it's rather a demo than a tutorial)?

Proposed Patches
----------------

- Notice handling with PQsetNoticeReceiver and PQsetNoticeProcessor
  (one possible implementation was already suggested by Dmitry Dvoinikov
  http://mailman.vex.net/pipermail/pygresql/2005-November/001530.html).
  Maybe also make notifications accessible via the optional cursor and
  connection attribute "messages" proposed in the DB-API specs.

Wish List
---------

- Make SQLSTATE error codes available.
- Make use of PQexecParams() and PQprepare(). This could speed up
  executemany() and allow retrieving binary data directly by setting
  the resultFormat parameter to one.
- Support optional "errorhandler" extension.
- Support optional cursor and connection attribute "messages".
- Connection as context manager (see http://tinyurl.com/6j9cef).
- Users should be able to register their own types with _pg.
- Let pg and pgdb support namedtuples (as available in Py 2.6).
  pg could get a new method namedresult(), and pgdb could provide
  a row factory for namedtuples (similar to sqlite3).
- New methods in the classic module, similar to getresult() and
  dictresult(), but returning dictionaries of rows instead of lists
  of rows (with primary key or oids as keys).
- Make PyGreSQL thread-safe on the connection level.
- The API documentation could be created with Epydoc.
- Write a tutorial for beginners and advanced use.
- More and better documented examples.
