File Release Notes and Changelog

Release Name: libpqtypes v1.4.0

Release Notes

Major release due to many new additions to the API, as well
as a deprecated function.

Added PQgetvf, PQregisterComposites,
PQregisterUserDefinedTypes, PQregisterSubClasses.

The new PQregisterXXX functions offer better performance
when registering many composites and/or user-defined types,
since they allow one to register multiple types in a single
backend call ... avoids many round trips.

Deprecated PQregisterTypeHandler, which is now a wrapper to
the other PQregisterXXX functions.

Added major performance improvement to type handler
duplication code, which runs whenever a PGresult/PGparam is

Several bug fixes.

Change Log

Nov 10, 2009 v1.4.0
- Added PQgetvf to compliment PQgetf.  PQgetf is now a light wrapper
  PQgetvf.  This did not change the behavior of PQgetf in any way.
- Fixed bug in IPv6 regression_test.  When AF_INET6 is available, the
  'hints' parameter to getaddrinfo should be supplied with the ai_family
  set to AF_INET6.
- 63% Performance improvement to the type handling duplication which occurs
  whenever a result is copied or a PGparam is created.  Previously, the
  type handlers contained allocated strings for the identifier names:
  like type and schema name.  When duplicating the handlers, the strdup
  cost added up to a noticeable amount of time (mostly seen during
  PQgetf(a_composite_or_array) which duplicates the handlers when generating
  a new PGresult).  These strings were changed to fixed length buffers
  65 bytes wide; 64 max char identifier plus terminating NUL.  The names
  no longer need to be deep copied, they are instead copied as part of a
  larger memcpy.  Additionally, the attDescs array now uses a fixed length
  buffer when the number of compsoite attrs is <= 16 (common case).  When
  larger, allocation is used.  'freeAttDescs' flag was added to the
  PGtypeHandler structure to indicate if the attDescs requires freeing.
  In total, these changes made type handling duplication 63% faster.
    This increased the size of PGtypeHandler by around 434 bytes.  The
    size of PGrecordAttDesc increased by 65 bytes.  This change modified
    2 public structures so please ensure your libpqtypes.h is current.
- Split PQregisterTypeHandler into three different functions:
  PQregisterComposites, PQregisterUserDefinedTypes and PQregisterSubClasses.
  This was done for two reasons: needed the ability to register multiple
  types at the same time, avoid round trip issues, and simplify the interface.
- PQregisterTypeHandler is now deprecated and should no longer be used.  It
  exists only for compatibility reasons.  It is a wrapper to
  PQregisterComposites, PQregisterUserDefinedTypes and PQregisterSubClasses.
- The PGEVT_REGISTER event was not be handled properly by libpqtypes.  It
  neglected to initialize the internal type formatting information.
- Error case in pqt_parse() was accessing a NULL pointer.
- Bug in network.c when getting text inet/cidr types.  Apparently, windows
  requires a few hints about the address family when using getaddrinfo:
  both IPv4 and IPv6.  This must be a recent Microsoft winsock update as
  this code used to work.
Powered By FusionForge