E.154. Release 9.0.4
Release date: 2011-04-18
This release contains a variety of fixes from 9.0.3. For information about new features in the 9.0 major release, see Section E.158 .
E.154.1. Migration to Version 9.0.4
A dump/restore is not required for those running 9.0.X.
   However, if your installation was upgraded from a previous major
    release by running
   
    pg_upgrade
   
   , you should take
    action to prevent possible data loss due to a now-fixed bug in
   
    pg_upgrade
   
   .  The recommended solution is to run
   
    VACUUM FREEZE
   
   on all TOAST tables.
    More information is available at
   
    http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix
   
   .
  
E.154.2. Changes
- 
     
Fix pg_upgrade 's handling of TOAST tables (Bruce Momjian)
The
pg_class.relfrozenxidvalue for TOAST tables was not correctly copied into the new installation during pg_upgrade . This could later result inpg_clogfiles being discarded while they were still needed to validate tuples in the TOAST tables, leading to " could not access status of transaction " failures.This error poses a significant risk of data loss for installations that have been upgraded with pg_upgrade . This patch corrects the problem for future uses of pg_upgrade , but does not in itself cure the issue in installations that have been processed with a buggy version of pg_upgrade .
 - 
     
Suppress incorrect " PD_ALL_VISIBLE flag was incorrectly set " warning (Heikki Linnakangas)
VACUUMwould sometimes issue this warning in cases that are actually valid. - 
     
Use better SQLSTATE error codes for hot standby conflict cases (Tatsuo Ishii and Simon Riggs)
All retryable conflict errors now have an error code that indicates that a retry is possible. Also, session closure due to the database being dropped on the master is now reported as
ERRCODE_DATABASE_DROPPED, rather thanERRCODE_ADMIN_SHUTDOWN, so that connection poolers can handle the situation correctly. - 
     
Prevent intermittent hang in interactions of startup process with bgwriter process (Simon Riggs)
This affected recovery in non-hot-standby cases.
 - 
     
Disallow including a composite type in itself (Tom Lane)
This prevents scenarios wherein the server could recurse infinitely while processing the composite type. While there are some possible uses for such a structure, they don't seem compelling enough to justify the effort required to make sure it always works safely.
 - 
     
Avoid potential deadlock during catalog cache initialization (Nikhil Sontakke)
In some cases the cache loading code would acquire share lock on a system index before locking the index's catalog. This could deadlock against processes trying to acquire exclusive locks in the other, more standard order.
 - 
     
Fix dangling-pointer problem in
BEFORE ROW UPDATEtrigger handling when there was a concurrent update to the target tuple (Tom Lane)This bug has been observed to result in intermittent " cannot extract system attribute from virtual tuple " failures while trying to do
UPDATE RETURNING ctid. There is a very small probability of more serious errors, such as generating incorrect index entries for the updated tuple. - 
     
Disallow
DROP TABLEwhen there are pending deferred trigger events for the table (Tom Lane)Formerly the
DROPwould go through, leading to " could not open relation with OID nnn " errors when the triggers were eventually fired. - 
     
Allow " replication " as a user name in
pg_hba.conf(Andrew Dunstan)" replication " is special in the database name column, but it was mistakenly also treated as special in the user name column.
 - 
     
Prevent crash triggered by constant-false WHERE conditions during GEQO optimization (Tom Lane)
 - 
     
Improve planner's handling of semi-join and anti-join cases (Tom Lane)
 - 
     
Fix handling of
SELECT FOR UPDATEin a sub-SELECT (Tom Lane)This bug typically led to " cannot extract system attribute from virtual tuple " errors.
 - 
     
Fix selectivity estimation for text search to account for NULLs (Jesper Krogh)
 - 
     
Fix get_actual_variable_range() to support hypothetical indexes injected by an index adviser plugin (Gurjeet Singh)
 - 
     
Fix PL/Python memory leak involving array slices (Daniel Popowich)
 - 
     
Allow libpq 's SSL initialization to succeed when user's home directory is unavailable (Tom Lane)
If the SSL mode is such that a root certificate file is not required, there is no need to fail. This change restores the behavior to what it was in pre-9.0 releases.
 - 
     
Fix libpq to return a useful error message for errors detected in
conninfo_array_parse(Joseph Adams)A typo caused the library to return NULL, rather than the
PGconnstructure containing the error message, to the application. - 
     
Fix ecpg preprocessor's handling of float constants (Heikki Linnakangas)
 - 
     
Fix parallel pg_restore to handle comments on POST_DATA items correctly (Arnd Hannemann)
 - 
     
Fix pg_restore to cope with long lines (over 1KB) in TOC files (Tom Lane)
 - 
     
Put in more safeguards against crashing due to division-by-zero with overly enthusiastic compiler optimization (Aurelien Jarno)
 - 
     
Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane)
There was a hard-wired assumption that this system function was not available on MIPS hardware on these systems. Use a compile-time test instead, since more recent versions have it.
 - 
     
Fix compilation failures on HP-UX (Heikki Linnakangas)
 - 
     
Avoid crash when trying to write to the Windows console very early in process startup (Rushabh Lathia)
 - 
     
Support building with MinGW 64 bit compiler for Windows (Andrew Dunstan)
 - 
     
Fix version-incompatibility problem with libintl on Windows (Hiroshi Inoue)
 - 
     
Fix usage of xcopy in Windows build scripts to work correctly under Windows 7 (Andrew Dunstan)
This affects the build scripts only, not installation or usage.
 - 
     
Fix path separator used by pg_regress on Cygwin (Andrew Dunstan)
 - 
     
Update time zone data files to tzdata release 2011f for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa, and Turkey; also historical corrections for South Australia, Alaska, and Hawaii.