File Release Notes and Changelog

Release Notes

Major release including new API calls. Removed
libpqtypes.so.0.0.0 and it is now just libpqtypes.so.
Biggest addition is full asynchronous type registration
support.

Change Log

Apr 11, 2011 v1.5.0
- Bumped version to 1.5.0 due to many API removals and additions.
- Added -avoid-version and -no-undefined to Makefile.am.
- Added PQinitTypes to replace PQtypesRegister. The new function
adds no new behavior, just a name change.
- Deprecated PQtypesRegister, use PQinitTypes in its place.
- PQclearTypes was added to allow one to clear all registered type handlers.
- Added an internal API pqt_cleartypes since clearing the type data
is now called from PQclearTypes and pqt_eventproc.
- Added a PQclearSpecs function that allows clearing all prepared specifiers
in a single call. Currently, specs can be cleared one at a time by
setting PQspecPrepare's 3rd 'format' argument to NULL. This is useful
but makes clearing all specs difficult because it is not always known
what specs have been prepared by all modules of an application.
- Removed "automatic" re-registering of types during PQresetXXX. This
fails miserably during asynchronous resets. Replaced with the
folowing call sequence: PQresetXXX, PQclearTypes, PQregisterTypes.
NOTE: It is not required to re-register type handlers after a PQresetXXX.
It is only useful if there is concern that registered types may have
gone stale.
WARNING: If an application is reliant upon automatic re-registration of
type handlers during a PQresetXXX, you will have to update your
code to manually do a PQclearTypes followed by PQregisterTypes just
after the reset call.
- Removed the orig_xxx members and regtype from PGtypeHandler structure.
These members were used by the reset event which was yanked.
- Finally 86'd PQregisterTypeHandler, which has been deprecated since
v1.4.0, around 18 months as of Apr 2011.
- Updated copyright date from 2009 to 2011, affected source code and
man pages.
- Updated AUTHORS file to include a list of maintainers and some verbage.
- Deprecated PQregisterSubClasses, PQregisterComposites and
PQregisterUserDefinedTypes in favor of PQregisterTypes. This new
function takes a 'which' argument that indicates if PQT_SUBCLASS,
PQT_COMPOSITE or PQT_USERDEFINED types are being registered. This
function provides full support for asynchronous type registration via
a simple 'async' boolean argument. The typical PQconsumeInput, PQisBusy
and PQgetResult should be used to obtain a result. After a result is
obtained, the new PQregisterResult function needs to be called
to complete the registration.
- Added PQregisterResult which registers the types found within
the result set. Added to support asynchronous type registration and
to avoid type lookups for every new connection by caching the PGresult
type data for use with this function.
- Add PQregisterTypes.3 man page and added it to the make system install.
- Add PQregisterResult.3 man page and added it to the make system install.
- Removed referneces in documentation and code examples to PQregisterSubClasses,
PQregisterComposites and PQregisterUserDefinedTypes. Replaced with
new PQregisterTypes call.
- Regression test now uses PQregisterTypes. NOTE: no regression test
for PQregisterResult or asynchronous type registration yet.
- Marked PQregisterSubClasses.3, PQregisterComposites.3 and
PQregisterUserDefinedTypes.3 man pages as deprecated. They are still
installed with a `make install` and will be until removed.
- Added PQparamDup, which given a PGparam will make an exact duplicate.
This is useful in cases where you want to queue qeuries to execute
at a later time, like a connection pooler. The problem is PGparamCreate
requires a connection object, which may not be available when attempting
to enqueue a query with its PGparam object. Instead, a PGparam object
can used for the sole purpose of creating duplicates while there are
no available PGconn objects.
- Updated PGparamCreate man page to include documentation about PGparamDup.