Release date: 2008-03-17
This release contains a variety of fixes from 8.3.0. For information about new features in the 8.3 major release, see Section E.193.
    A dump/restore is not required for those running 8.3.X.
    However, you might need to REINDEX indexes on textual
    columns after updating, if you are affected by the Windows locale
    issue described below.
   
Fix character string comparison for Windows locales that consider different character combinations as equal (Tom)
      This fix applies only on Windows and only when using UTF-8
      database encoding.  The same fix was made for all other cases
      over two years ago, but Windows with UTF-8 uses a separate code
      path that was not updated.  If you are using a locale that
      considers some non-identical strings as equal, you may need to
      REINDEX to fix existing indexes on textual columns.
     
      Repair corner-case bugs in VACUUM FULL (Tom)
     
      A potential deadlock between concurrent VACUUM FULL
      operations on different system catalogs was introduced in 8.2.
      This has now been corrected.  8.3 made this worse because the
      deadlock could occur within a critical code section, making it
      a PANIC rather than just ERROR condition.
     
      Also, a VACUUM FULL that failed partway through
      vacuuming a system catalog could result in cache corruption in
      concurrent database sessions.
     
      Another VACUUM FULL bug introduced in 8.3 could
      result in a crash or out-of-memory report when dealing with
      pages containing no live tuples.
     
      Fix misbehavior of foreign key checks involving character
      or bit columns (Tom)
     
      If the referencing column were of a different but compatible type
      (for instance varchar), the constraint was enforced incorrectly.
     
Avoid needless deadlock failures in no-op foreign-key checks (Stephan Szabo, Tom)
Fix possible core dump when re-planning a prepared query (Tom)
      This bug affected only protocol-level prepare operations, not
      SQL PREPARE, and so tended to be seen only with
      JDBC, DBI, and other client-side drivers that use prepared
      statements heavily.
     
Fix possible failure when re-planning a query that calls an SPI-using function (Tom)
Fix failure in row-wise comparisons involving columns of different datatypes (Tom)
      Fix longstanding LISTEN/NOTIFY
      race condition (Tom)
     
      In rare cases a session that had just executed a
      LISTEN might not get a notification, even though
      one would be expected because the concurrent transaction executing
      NOTIFY was observed to commit later.
     
      A side effect of the fix is that a transaction that has executed
      a not-yet-committed LISTEN command will not see any
      row in pg_listener for the LISTEN,
      should it choose to look; formerly it would have.  This behavior
      was never documented one way or the other, but it is possible that
      some applications depend on the old behavior.
     
      Disallow LISTEN and UNLISTEN within a
      prepared transaction (Tom)
     
      This was formerly allowed but trying to do it had various unpleasant
      consequences, notably that the originating backend could not exit
      as long as an UNLISTEN remained uncommitted.
     
Disallow dropping a temporary table within a prepared transaction (Heikki)
This was correctly disallowed by 8.1, but the check was inadvertently broken in 8.2 and 8.3.
Fix rare crash when an error occurs during a query using a hash index (Heikki)
      Fix incorrect comparison of tsquery values (Teodor)
     
      Fix incorrect behavior of LIKE with non-ASCII characters
      in single-byte encodings (Rolf Jentsch)
     
      Disable xmlvalidate (Tom)
     
This function should have been removed before 8.3 release, but was inadvertently left in the source code. It poses a small security risk since unprivileged users could use it to read the first few characters of any file accessible to the server.
Fix memory leaks in certain usages of set-returning functions (Neil)
      Make encode( convert all
      high-bit-set byte values into bytea, 'escape')\nnn octal
      escape sequences (Tom)
     
      This is necessary to avoid encoding problems when the database
      encoding is multi-byte.  This change could pose compatibility issues
      for applications that are expecting specific results from
      encode.
     
Fix input of datetime values for February 29 in years BC (Tom)
The former coding was mistaken about which years were leap years.
      Fix “unrecognized node type” error in some variants of
      ALTER OWNER (Tom)
     
      Avoid tablespace permissions errors in CREATE TABLE LIKE
      INCLUDING INDEXES (Tom)
     
      Ensure pg_stat_activity.waiting flag
      is cleared when a lock wait is aborted (Tom)
     
Fix handling of process permissions on Windows Vista (Dave, Magnus)
In particular, this fix allows starting the server as the Administrator user.
      Update time zone data files to tzdata release 2008a
      (in particular, recent Chile changes); adjust timezone abbreviation
      VET (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom)
     
Fix ecpg problems with arrays (Michael)
Fix pg_ctl to correctly extract the postmaster's port number from command-line options (Itagaki Takahiro, Tom)
      Previously, pg_ctl start -w could try to contact the
      postmaster on the wrong port, leading to bogus reports of startup
      failure.
     
      Use -fwrapv to defend against possible misoptimization
      in recent gcc versions (Tom)
     
This is known to be necessary when building PostgreSQL with gcc 4.3 or later.
      Enable building contrib/uuid-ossp with MSVC (Hiroshi Saito)