This release contains a variety of fixes from 8.3.7. For information about new features in the 8.3 major release, see Section E.67, « Version 8.3 ».
A dump/restore is not required for those running 8.3.X. However, if you have any hash indexes on interval columns, you must REINDEX them after updating to 8.3.8. Also, if you are upgrading from a version earlier than 8.3.5, see the release notes for 8.3.5.
Fix Windows shared-memory allocation code (Tsutomu Yamada, Magnus)
This bug led to the often-reported « could not reattach to shared memory » error message.
Force WAL segment switch during pg_start_backup() (Heikki)
This avoids corner cases that could render a base backup unusable.
Disallow RESET ROLE and RESET SESSION AUTHORIZATION inside security-definer functions (Tom, Heikki)
This covers a case that was missed in the previous patch that disallowed SET ROLE and SET SESSION AUTHORIZATION inside security-definer functions. (See CVE-2007-6600)
Make LOAD of an already-loaded loadable module into a no-op (Tom)
Formerly, LOAD would attempt to unload and re-load the module, but this is unsafe and not all that useful.
Disallow empty passwords during LDAP authentication (Magnus)
Fix handling of sub-SELECTs appearing in the arguments of an outer-level aggregate function (Tom)
Fix bugs associated with fetching a whole-row value from the output of a Sort or Materialize plan node (Tom)
Prevent synchronize_seqscans from changing the results of scrollable and WITH HOLD cursors (Tom)
Revert planner change that disabled partial-index and constraint exclusion optimizations when there were more than 100 clauses in an AND or OR list (Tom)
Fix hash calculation for data type interval (Tom)
This corrects wrong results for hash joins on interval values. It also changes the contents of hash indexes on interval columns. If you have any such indexes, you must REINDEX them after updating.
Treat to_char(..., 'TH') as an uppercase ordinal suffix with 'HH'/'HH12' (Heikki)
It was previously handled as 'th' (lowercase).
Fix overflow for INTERVAL 'x ms' when x is more than 2 million and integer datetimes are in use (Alex Hunsaker)
Fix calculation of distance between a point and a line segment (Tom)
This led to incorrect results from a number of geometric operators.
Fix money data type to work in locales where currency amounts have no fractional digits, e.g. Japan (Itagaki Takahiro)
Fix LIKE for case where pattern contains %_ (Tom)
Properly round datetime input like 00:12:57.9999999999999999999999999999 (Tom)
Fix memory leaks in XML operations (Tom)
Fix poor choice of page split point in GiST R-tree operator classes (Teodor)
Ensure that a « fast shutdown » request will forcibly terminate open sessions, even if a « smart shutdown » was already in progress (Fujii Masao)
Avoid performance degradation in bulk inserts into GIN indexes when the input values are (nearly) in sorted order (Tom)
Correctly enforce NOT NULL domain constraints in some contexts in PL/pgSQL (Tom)
Fix portability issues in plperl initialization (Andrew Dunstan)
Fix pg_ctl to not go into an infinite loop if postgresql.conf is empty (Jeff Davis)
Improve pg_dump's efficiency when there are many large objects (Tamas Vincze)
Use SIGUSR1, not SIGQUIT, as the failover signal for pg_standby (Heikki)
Make pg_standby's maxretries option behave as documented (Fujii Masao)
Make contrib/hstore throw an error when a key or value is too long to fit in its data structure, rather than silently truncating it (Andrew Gierth)
Fix contrib/xml2's xslt_process() to properly handle the maximum number of parameters (twenty) (Tom)
Improve robustness of libpq's code to recover from errors during COPY FROM STDIN (Tom)
Avoid including conflicting readline and editline header files when both libraries are installed (Zdenek Kotala)
Update time zone data files to tzdata release 2009l for DST law changes in Bangladesh, Egypt, Jordan, Pakistan, Argentina/San_Luis, Cuba, Jordan (historical correction only), Mauritius, Morocco, Palestine, Syria, Tunisia.