E.178. Release 8.3.5

Release date: 2008-11-03

This release contains a variety of fixes from 8.3.4. For information about new features in the 8.3 major release, see Section E.183 .

E.178.1. Migration to Version 8.3.5

A dump/restore is not required for those running 8.3.X. However, if you are upgrading from a version earlier than 8.3.1, see Section E.182 . Also, if you were running a previous 8.3.X release, it is recommended to REINDEX all GiST indexes after the upgrade.

E.178.2. Changes

  • Fix GiST index corruption due to marking the wrong index entry " dead " after a deletion (Teodor)

    This would result in index searches failing to find rows they should have found. Corrupted indexes can be fixed with REINDEX .

  • Fix backend crash when the client encoding cannot represent a localized error message (Tom)

    We have addressed similar issues before, but it would still fail if the " character has no equivalent " message itself couldn't be converted. The fix is to disable localization and send the plain ASCII error message when we detect such a situation.

  • Fix possible crash in bytea -to-XML mapping (Michael McMaster)

  • Fix possible crash when deeply nested functions are invoked from a trigger (Tom)

  • Improve optimization of expression IN ( expression-list ) queries (Tom, per an idea from Robert Haas)

    Cases in which there are query variables on the right-hand side had been handled less efficiently in 8.2.x and 8.3.x than in prior versions. The fix restores 8.1 behavior for such cases.

  • Fix mis-expansion of rule queries when a sub- SELECT appears in a function call in FROM , a multi-row VALUES list, or a RETURNING list (Tom)

    The usual symptom of this problem is an " unrecognized node type " error.

  • Fix Assert failure during rescan of an IS NULL search of a GiST index (Teodor)

  • Fix memory leak during rescan of a hashed aggregation plan (Neil)

  • Ensure an error is reported when a newly-defined PL/pgSQL trigger function is invoked as a normal function (Tom)

  • Force a checkpoint before CREATE DATABASE starts to copy files (Heikki)

    This prevents a possible failure if files had recently been deleted in the source database.

  • Prevent possible collision of relfilenode numbers when moving a table to another tablespace with ALTER SET TABLESPACE (Heikki)

    The command tried to re-use the existing filename, instead of picking one that is known unused in the destination directory.

  • Fix incorrect text search headline generation when single query item matches first word of text (Sushant Sinha)

  • Fix improper display of fractional seconds in interval values when using a non-ISO datestyle in an --enable-integer-datetimes build (Ron Mayer)

  • Make ILIKE compare characters case-insensitively even when they're escaped (Andrew)

  • Ensure DISCARD is handled properly by statement logging (Tom)

  • Fix incorrect logging of last-completed-transaction time during PITR recovery (Tom)

  • Ensure SPI_getvalue and SPI_getbinval behave correctly when the passed tuple and tuple descriptor have different numbers of columns (Tom)

    This situation is normal when a table has had columns added or removed, but these two functions didn't handle it properly. The only likely consequence is an incorrect error indication.

  • Mark SessionReplicationRole as PGDLLIMPORT so it can be used by Slony on Windows (Magnus)

  • Fix small memory leak when using libpq 's gsslib parameter (Magnus)

    The space used by the parameter string was not freed at connection close.

  • Ensure libgssapi is linked into libpq if needed (Markus Schaaf)

  • Fix ecpg 's parsing of CREATE ROLE (Michael)

  • Fix recent breakage of pg_ctl restart (Tom)

  • Ensure pg_control is opened in binary mode (Itagaki Takahiro)

    pg_controldata and pg_resetxlog did this incorrectly, and so could fail on Windows.

  • Update time zone data files to tzdata release 2008i (for DST law changes in Argentina, Brazil, Mauritius, Syria)