mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-28 11:55:03 +03:00 
			
		
		
		
	Draft release notes for 9.1.3, 9.0.7, 8.4.11, 8.3.18.
This commit is contained in:
		| @@ -1,6 +1,264 @@ | |||||||
| <!-- doc/src/sgml/release-8.3.sgml --> | <!-- doc/src/sgml/release-8.3.sgml --> | ||||||
| <!-- See header comment in release.sgml about typical markup --> | <!-- See header comment in release.sgml about typical markup --> | ||||||
|  |  | ||||||
|  |  <sect1 id="release-8-3-18"> | ||||||
|  |   <title>Release 8.3.18</title> | ||||||
|  |  | ||||||
|  |   <note> | ||||||
|  |   <title>Release Date</title> | ||||||
|  |   <simpara>2012-02-27</simpara> | ||||||
|  |   </note> | ||||||
|  |  | ||||||
|  |   <para> | ||||||
|  |    This release contains a variety of fixes from 8.3.17. | ||||||
|  |    For information about new features in the 8.3 major release, see | ||||||
|  |    <xref linkend="release-8-3">. | ||||||
|  |   </para> | ||||||
|  |  | ||||||
|  |   <sect2> | ||||||
|  |    <title>Migration to Version 8.3.18</title> | ||||||
|  |  | ||||||
|  |    <para> | ||||||
|  |     A dump/restore is not required for those running 8.3.X. | ||||||
|  |    </para> | ||||||
|  |  | ||||||
|  |    <para> | ||||||
|  |     However, if you are upgrading from a version earlier than 8.3.17, | ||||||
|  |     see the release notes for 8.3.17. | ||||||
|  |    </para> | ||||||
|  |  | ||||||
|  |   </sect2> | ||||||
|  |  | ||||||
|  |   <sect2> | ||||||
|  |    <title>Changes</title> | ||||||
|  |  | ||||||
|  |    <itemizedlist> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix btree index corruption from insertions concurrent with vacuuming | ||||||
|  |       (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       An index page split caused by an insertion could sometimes cause a | ||||||
|  |       concurrently-running <command>VACUUM</> to miss removing index entries | ||||||
|  |       that it should remove.  After the corresponding table rows are removed, | ||||||
|  |       the dangling index entries would cause errors (such as <quote>could not | ||||||
|  |       read block N in file ...</>) or worse, silently wrong query results | ||||||
|  |       after unrelated rows are re-inserted at the now-free table locations. | ||||||
|  |       This bug has been present since release 8.2, but occurs so infrequently | ||||||
|  |       that it was not diagnosed until now.  If you have reason to suspect | ||||||
|  |       that it has happened in your database, reindexing the affected index | ||||||
|  |       will fix things. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Allow non-existent values for some settings in <command>ALTER | ||||||
|  |       USER/DATABASE SET</> (Heikki Linnakangas) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Allow <varname>default_text_search_config</>, | ||||||
|  |       <varname>default_tablespace</>, and <varname>temp_tablespaces</> to be | ||||||
|  |       set to names that are not known.  This is because they might be known | ||||||
|  |       in another database where the setting is intended to be used, or for the | ||||||
|  |       tablespace cases because the tablespace might not be created yet.  The | ||||||
|  |       same issue was previously recognized for <varname>search_path</>, and | ||||||
|  |       these settings now act like that one. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Track the OID counter correctly during WAL replay, even when it wraps | ||||||
|  |       around (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Previously the OID counter would remain stuck at a high value until the | ||||||
|  |       system exited replay mode.  The practical consequences of that are | ||||||
|  |       usually nil, but there are scenarios wherein a standby server that's | ||||||
|  |       been promoted to master might take a long time to advance the OID | ||||||
|  |       counter to a reasonable value once values are needed. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix regular expression back-references with <literal>*</> attached | ||||||
|  |       (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Rather than enforcing an exact string match, the code would effectively | ||||||
|  |       accept any string that satisfies the pattern sub-expression referenced | ||||||
|  |       by the back-reference symbol. | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       A similar problem still afflicts back-references that are embedded in a | ||||||
|  |       larger quantified expression, rather than being the immediate subject | ||||||
|  |       of the quantifier.  This will be addressed in a future | ||||||
|  |       <productname>PostgreSQL</> release. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix recently-introduced memory leak in processing of | ||||||
|  |       <type>inet</>/<type>cidr</> values (Heikki Linnakangas) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       A patch in the December 2011 releases of <productname>PostgreSQL</> | ||||||
|  |       caused memory leakage in these operations, which could be significant | ||||||
|  |       in scenarios such as building a btree index on such a column. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Avoid double close of file handle in syslogger on Windows (MauMau) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Ordinarily this error was invisible, but it would cause an exception | ||||||
|  |       when running on a debug version of Windows. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix I/O-conversion-related memory leaks in plpgsql | ||||||
|  |       (Andres Freund, Jan Urbanski, Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Certain operations would leak memory until the end of the current | ||||||
|  |       function. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Improve <application>pg_dump</>'s handling of inherited table columns | ||||||
|  |       (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       <application>pg_dump</> mishandled situations where a child column has | ||||||
|  |       a different default expression than its parent column.  If the default | ||||||
|  |       is textually identical to the parent's default, but not actually the | ||||||
|  |       same (for instance, because of schema search path differences) it would | ||||||
|  |       not be recognized as different, so that after dump and restore the | ||||||
|  |       child would be allowed to inherit the parent's default.  Child columns | ||||||
|  |       that are <literal>NOT NULL</> where their parent is not could also be | ||||||
|  |       restored subtly incorrectly. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix <application>pg_restore</>'s direct-to-database mode for | ||||||
|  |       INSERT-style table data (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Direct-to-database restores from archive files made with | ||||||
|  |       <option>--inserts</> or <option>--column-inserts</> options fail when | ||||||
|  |       using <application>pg_restore</> from a release dated September or | ||||||
|  |       December 2011, as a result of an oversight in a fix for another | ||||||
|  |       problem.  The archive file itself is not at fault, and text-mode | ||||||
|  |       output is okay. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix error in <filename>contrib/intarray</>'s <literal>int[] & | ||||||
|  |       int[]</> operator (Guillaume Lelarge) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       If the smallest integer the two input arrays have in common is 1, | ||||||
|  |       and there are smaller values in either array, then 1 would be | ||||||
|  |       incorrectly omitted from the result. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix error detection in <filename>contrib/pgcrypto</>'s | ||||||
|  |       <function>encrypt_iv()</> and <function>decrypt_iv()</> | ||||||
|  |       (Marko Kreen) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       These functions failed to report certain types of invalid-input errors, | ||||||
|  |       and would instead return random garbage values for incorrect input. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix one-byte buffer overrun in <filename>contrib/test_parser</> | ||||||
|  |       (Paul Guyot) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       The code would try to read one more byte than it should, which would | ||||||
|  |       crash in corner cases. | ||||||
|  |       Since <filename>contrib/test_parser</> is only example code, this is | ||||||
|  |       not a security issue in itself, but bad example code is still bad. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Use <function>__sync_lock_test_and_set()</> for spinlocks on ARM, if | ||||||
|  |       available (Martin Pitt) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       This function replaces our previous use of the <literal>SWPB</> | ||||||
|  |       instruction, which is deprecated and not available on ARMv6 and later. | ||||||
|  |       Reports suggest that the old code doesn't fail in an obvious way on | ||||||
|  |       recent ARM boards, but simply doesn't interlock concurrent accesses, | ||||||
|  |       leading to bizarre failures in multiprocess operation. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Use <option>-fexcess-precision=standard</> option when building with | ||||||
|  |       gcc versions that accept it (Andrew Dunstan) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       This prevents assorted scenarios wherein recent versions of gcc will | ||||||
|  |       produce creative results. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Allow use of threaded Python on FreeBSD (Chris Rees) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Our configure script previously believed that this combination wouldn't | ||||||
|  |       work; but FreeBSD fixed the problem, so remove that error check. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |    </itemizedlist> | ||||||
|  |  | ||||||
|  |   </sect2> | ||||||
|  |  </sect1> | ||||||
|  |  | ||||||
|  <sect1 id="release-8-3-17"> |  <sect1 id="release-8-3-17"> | ||||||
|   <title>Release 8.3.17</title> |   <title>Release 8.3.17</title> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,6 +1,318 @@ | |||||||
| <!-- doc/src/sgml/release-8.4.sgml --> | <!-- doc/src/sgml/release-8.4.sgml --> | ||||||
| <!-- See header comment in release.sgml about typical markup --> | <!-- See header comment in release.sgml about typical markup --> | ||||||
|  |  | ||||||
|  |  <sect1 id="release-8-4-11"> | ||||||
|  |   <title>Release 8.4.11</title> | ||||||
|  |  | ||||||
|  |   <note> | ||||||
|  |   <title>Release Date</title> | ||||||
|  |   <simpara>2012-02-27</simpara> | ||||||
|  |   </note> | ||||||
|  |  | ||||||
|  |   <para> | ||||||
|  |    This release contains a variety of fixes from 8.4.10. | ||||||
|  |    For information about new features in the 8.4 major release, see | ||||||
|  |    <xref linkend="release-8-4">. | ||||||
|  |   </para> | ||||||
|  |  | ||||||
|  |   <sect2> | ||||||
|  |    <title>Migration to Version 8.4.11</title> | ||||||
|  |  | ||||||
|  |    <para> | ||||||
|  |     A dump/restore is not required for those running 8.4.X. | ||||||
|  |    </para> | ||||||
|  |  | ||||||
|  |    <para> | ||||||
|  |     However, if you are upgrading from a version earlier than 8.4.10, | ||||||
|  |     see the release notes for 8.4.10. | ||||||
|  |    </para> | ||||||
|  |  | ||||||
|  |   </sect2> | ||||||
|  |  | ||||||
|  |   <sect2> | ||||||
|  |    <title>Changes</title> | ||||||
|  |  | ||||||
|  |    <itemizedlist> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix btree index corruption from insertions concurrent with vacuuming | ||||||
|  |       (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       An index page split caused by an insertion could sometimes cause a | ||||||
|  |       concurrently-running <command>VACUUM</> to miss removing index entries | ||||||
|  |       that it should remove.  After the corresponding table rows are removed, | ||||||
|  |       the dangling index entries would cause errors (such as <quote>could not | ||||||
|  |       read block N in file ...</>) or worse, silently wrong query results | ||||||
|  |       after unrelated rows are re-inserted at the now-free table locations. | ||||||
|  |       This bug has been present since release 8.2, but occurs so infrequently | ||||||
|  |       that it was not diagnosed until now.  If you have reason to suspect | ||||||
|  |       that it has happened in your database, reindexing the affected index | ||||||
|  |       will fix things. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Update per-column permissions, not only per-table permissions, when | ||||||
|  |       changing table owner (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Failure to do this meant that any previously granted column permissions | ||||||
|  |       were still shown as having been granted by the old owner.  This meant | ||||||
|  |       that neither the new owner nor a superuser could revoke the | ||||||
|  |       now-untraceable-to-table-owner permissions. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Allow non-existent values for some settings in <command>ALTER | ||||||
|  |       USER/DATABASE SET</> (Heikki Linnakangas) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Allow <varname>default_text_search_config</>, | ||||||
|  |       <varname>default_tablespace</>, and <varname>temp_tablespaces</> to be | ||||||
|  |       set to names that are not known.  This is because they might be known | ||||||
|  |       in another database where the setting is intended to be used, or for the | ||||||
|  |       tablespace cases because the tablespace might not be created yet.  The | ||||||
|  |       same issue was previously recognized for <varname>search_path</>, and | ||||||
|  |       these settings now act like that one. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Avoid crashing when we have problems deleting table files post-commit | ||||||
|  |       (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Dropping a table should lead to deleting the underlying disk files only | ||||||
|  |       after the transaction commits.  In event of failure then (for instance, | ||||||
|  |       because of wrong file permissions) the code is supposed to just emit a | ||||||
|  |       warning message and go on, since it's too late to abort the | ||||||
|  |       transaction.  This logic got broken as of release 8.4, causing such | ||||||
|  |       situations to result in a PANIC and an unrestartable database. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Track the OID counter correctly during WAL replay, even when it wraps | ||||||
|  |       around (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Previously the OID counter would remain stuck at a high value until the | ||||||
|  |       system exited replay mode.  The practical consequences of that are | ||||||
|  |       usually nil, but there are scenarios wherein a standby server that's | ||||||
|  |       been promoted to master might take a long time to advance the OID | ||||||
|  |       counter to a reasonable value once values are needed. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix regular expression back-references with <literal>*</> attached | ||||||
|  |       (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Rather than enforcing an exact string match, the code would effectively | ||||||
|  |       accept any string that satisfies the pattern sub-expression referenced | ||||||
|  |       by the back-reference symbol. | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       A similar problem still afflicts back-references that are embedded in a | ||||||
|  |       larger quantified expression, rather than being the immediate subject | ||||||
|  |       of the quantifier.  This will be addressed in a future | ||||||
|  |       <productname>PostgreSQL</> release. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix recently-introduced memory leak in processing of | ||||||
|  |       <type>inet</>/<type>cidr</> values (Heikki Linnakangas) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       A patch in the December 2011 releases of <productname>PostgreSQL</> | ||||||
|  |       caused memory leakage in these operations, which could be significant | ||||||
|  |       in scenarios such as building a btree index on such a column. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix dangling pointer after <command>CREATE TABLE AS</>/<command>SELECT | ||||||
|  |       INTO</> in a SQL-language function (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       In most cases this only led to an assertion failure in assert-enabled | ||||||
|  |       builds, but worse consequences seem possible. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Avoid double close of file handle in syslogger on Windows (MauMau) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Ordinarily this error was invisible, but it would cause an exception | ||||||
|  |       when running on a debug version of Windows. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix I/O-conversion-related memory leaks in plpgsql | ||||||
|  |       (Andres Freund, Jan Urbanski, Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Certain operations would leak memory until the end of the current | ||||||
|  |       function. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Improve <application>pg_dump</>'s handling of inherited table columns | ||||||
|  |       (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       <application>pg_dump</> mishandled situations where a child column has | ||||||
|  |       a different default expression than its parent column.  If the default | ||||||
|  |       is textually identical to the parent's default, but not actually the | ||||||
|  |       same (for instance, because of schema search path differences) it would | ||||||
|  |       not be recognized as different, so that after dump and restore the | ||||||
|  |       child would be allowed to inherit the parent's default.  Child columns | ||||||
|  |       that are <literal>NOT NULL</> where their parent is not could also be | ||||||
|  |       restored subtly incorrectly. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix <application>pg_restore</>'s direct-to-database mode for | ||||||
|  |       INSERT-style table data (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Direct-to-database restores from archive files made with | ||||||
|  |       <option>--inserts</> or <option>--column-inserts</> options fail when | ||||||
|  |       using <application>pg_restore</> from a release dated September or | ||||||
|  |       December 2011, as a result of an oversight in a fix for another | ||||||
|  |       problem.  The archive file itself is not at fault, and text-mode | ||||||
|  |       output is okay. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Allow <literal>AT</> option in <application>ecpg</> | ||||||
|  |       <literal>DEALLOCATE</> statements (Michael Meskes) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       The infrastructure to support this has been there for awhile, but | ||||||
|  |       through an oversight there was still an error check rejecting the case. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix error in <filename>contrib/intarray</>'s <literal>int[] & | ||||||
|  |       int[]</> operator (Guillaume Lelarge) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       If the smallest integer the two input arrays have in common is 1, | ||||||
|  |       and there are smaller values in either array, then 1 would be | ||||||
|  |       incorrectly omitted from the result. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix error detection in <filename>contrib/pgcrypto</>'s | ||||||
|  |       <function>encrypt_iv()</> and <function>decrypt_iv()</> | ||||||
|  |       (Marko Kreen) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       These functions failed to report certain types of invalid-input errors, | ||||||
|  |       and would instead return random garbage values for incorrect input. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix one-byte buffer overrun in <filename>contrib/test_parser</> | ||||||
|  |       (Paul Guyot) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       The code would try to read one more byte than it should, which would | ||||||
|  |       crash in corner cases. | ||||||
|  |       Since <filename>contrib/test_parser</> is only example code, this is | ||||||
|  |       not a security issue in itself, but bad example code is still bad. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Use <function>__sync_lock_test_and_set()</> for spinlocks on ARM, if | ||||||
|  |       available (Martin Pitt) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       This function replaces our previous use of the <literal>SWPB</> | ||||||
|  |       instruction, which is deprecated and not available on ARMv6 and later. | ||||||
|  |       Reports suggest that the old code doesn't fail in an obvious way on | ||||||
|  |       recent ARM boards, but simply doesn't interlock concurrent accesses, | ||||||
|  |       leading to bizarre failures in multiprocess operation. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Use <option>-fexcess-precision=standard</> option when building with | ||||||
|  |       gcc versions that accept it (Andrew Dunstan) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       This prevents assorted scenarios wherein recent versions of gcc will | ||||||
|  |       produce creative results. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Allow use of threaded Python on FreeBSD (Chris Rees) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Our configure script previously believed that this combination wouldn't | ||||||
|  |       work; but FreeBSD fixed the problem, so remove that error check. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |    </itemizedlist> | ||||||
|  |  | ||||||
|  |   </sect2> | ||||||
|  |  </sect1> | ||||||
|  |  | ||||||
|  <sect1 id="release-8-4-10"> |  <sect1 id="release-8-4-10"> | ||||||
|   <title>Release 8.4.10</title> |   <title>Release 8.4.10</title> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,6 +1,472 @@ | |||||||
| <!-- doc/src/sgml/release-9.0.sgml --> | <!-- doc/src/sgml/release-9.0.sgml --> | ||||||
| <!-- See header comment in release.sgml about typical markup --> | <!-- See header comment in release.sgml about typical markup --> | ||||||
|  |  | ||||||
|  |  <sect1 id="release-9-0-7"> | ||||||
|  |   <title>Release 9.0.7</title> | ||||||
|  |  | ||||||
|  |   <note> | ||||||
|  |   <title>Release Date</title> | ||||||
|  |   <simpara>2012-02-27</simpara> | ||||||
|  |   </note> | ||||||
|  |  | ||||||
|  |   <para> | ||||||
|  |    This release contains a variety of fixes from 9.0.6. | ||||||
|  |    For information about new features in the 9.0 major release, see | ||||||
|  |    <xref linkend="release-9-0">. | ||||||
|  |   </para> | ||||||
|  |  | ||||||
|  |   <sect2> | ||||||
|  |    <title>Migration to Version 9.0.7</title> | ||||||
|  |  | ||||||
|  |    <para> | ||||||
|  |     A dump/restore is not required for those running 9.0.X. | ||||||
|  |    </para> | ||||||
|  |  | ||||||
|  |    <para> | ||||||
|  |     However, if you are upgrading from a version earlier than 9.0.6, | ||||||
|  |     see the release notes for 9.0.6. | ||||||
|  |    </para> | ||||||
|  |  | ||||||
|  |   </sect2> | ||||||
|  |  | ||||||
|  |   <sect2> | ||||||
|  |    <title>Changes</title> | ||||||
|  |  | ||||||
|  |    <itemizedlist> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix btree index corruption from insertions concurrent with vacuuming | ||||||
|  |       (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       An index page split caused by an insertion could sometimes cause a | ||||||
|  |       concurrently-running <command>VACUUM</> to miss removing index entries | ||||||
|  |       that it should remove.  After the corresponding table rows are removed, | ||||||
|  |       the dangling index entries would cause errors (such as <quote>could not | ||||||
|  |       read block N in file ...</>) or worse, silently wrong query results | ||||||
|  |       after unrelated rows are re-inserted at the now-free table locations. | ||||||
|  |       This bug has been present since release 8.2, but occurs so infrequently | ||||||
|  |       that it was not diagnosed until now.  If you have reason to suspect | ||||||
|  |       that it has happened in your database, reindexing the affected index | ||||||
|  |       will fix things. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix transient zeroing of shared buffers during WAL replay (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       The replay logic would sometimes zero and refill a shared buffer, so | ||||||
|  |       that the contents were transiently invalid.  In hot standby mode this | ||||||
|  |       can result in a query that's executing in parallel seeing garbage data. | ||||||
|  |       Various symptoms could result from that, but the most common one seems | ||||||
|  |       to be <quote>invalid memory alloc request size</>. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix postmaster to attempt restart after a hot-standby crash (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       A logic error caused the postmaster to terminate, rather than attempt | ||||||
|  |       to restart the cluster, if any backend process crashed while operating | ||||||
|  |       in hot standby mode. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix <command>CLUSTER</>/<command>VACUUM FULL</> handling of toast | ||||||
|  |       values owned by recently-updated rows (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       This oversight could lead to <quote>duplicate key value violates unique | ||||||
|  |       constraint</> errors being reported against the toast table's index | ||||||
|  |       during one of these commands. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Update per-column permissions, not only per-table permissions, when | ||||||
|  |       changing table owner (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Failure to do this meant that any previously granted column permissions | ||||||
|  |       were still shown as having been granted by the old owner.  This meant | ||||||
|  |       that neither the new owner nor a superuser could revoke the | ||||||
|  |       now-untraceable-to-table-owner permissions. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Support foreign data wrappers and foreign servers in | ||||||
|  |       <command>REASSIGN OWNED</> (Alvaro Herrera) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       This command failed with <quote>unexpected classid</> errors if | ||||||
|  |       it needed to change the ownership of any such objects. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Allow non-existent values for some settings in <command>ALTER | ||||||
|  |       USER/DATABASE SET</> (Heikki Linnakangas) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Allow <varname>default_text_search_config</>, | ||||||
|  |       <varname>default_tablespace</>, and <varname>temp_tablespaces</> to be | ||||||
|  |       set to names that are not known.  This is because they might be known | ||||||
|  |       in another database where the setting is intended to be used, or for the | ||||||
|  |       tablespace cases because the tablespace might not be created yet.  The | ||||||
|  |       same issue was previously recognized for <varname>search_path</>, and | ||||||
|  |       these settings now act like that one. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Avoid crashing when we have problems deleting table files post-commit | ||||||
|  |       (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Dropping a table should lead to deleting the underlying disk files only | ||||||
|  |       after the transaction commits.  In event of failure then (for instance, | ||||||
|  |       because of wrong file permissions) the code is supposed to just emit a | ||||||
|  |       warning message and go on, since it's too late to abort the | ||||||
|  |       transaction.  This logic got broken as of release 8.4, causing such | ||||||
|  |       situations to result in a PANIC and an unrestartable database. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Recover from errors occurring during WAL replay of <command>DROP | ||||||
|  |       TABLESPACE</> (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Replay will attempt to remove the tablespace's directories, but there | ||||||
|  |       are various reasons why this might fail (for example, incorrect | ||||||
|  |       ownership or permissions on those directories).  Formerly the replay | ||||||
|  |       code would panic, rendering the database unrestartable without manual | ||||||
|  |       intervention.  It seems better to log the problem and continue, since | ||||||
|  |       the only consequence of failure to remove the directories is some | ||||||
|  |       wasted disk space. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix race condition in logging AccessExclusiveLocks for hot standby | ||||||
|  |       (Simon Riggs) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Sometimes a lock would be logged as being held by <quote>transaction | ||||||
|  |       zero</>.  This is at least known to produce assertion failures on | ||||||
|  |       slave servers, and might be the cause of more serious problems. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Track the OID counter correctly during WAL replay, even when it wraps | ||||||
|  |       around (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Previously the OID counter would remain stuck at a high value until the | ||||||
|  |       system exited replay mode.  The practical consequences of that are | ||||||
|  |       usually nil, but there are scenarios wherein a standby server that's | ||||||
|  |       been promoted to master might take a long time to advance the OID | ||||||
|  |       counter to a reasonable value once values are needed. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Prevent emitting misleading <quote>consistent recovery state reached</> | ||||||
|  |       log message at the beginning of crash recovery (Heikki Linnakangas) | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix initial value of | ||||||
|  |       <structname>pg_stat_replication</>.<structfield>replay_location</> | ||||||
|  |       (Fujii Masao) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Previously, the value shown would be wrong until at least one WAL | ||||||
|  |       record had been replayed. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix regular expression back-references with <literal>*</> attached | ||||||
|  |       (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Rather than enforcing an exact string match, the code would effectively | ||||||
|  |       accept any string that satisfies the pattern sub-expression referenced | ||||||
|  |       by the back-reference symbol. | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       A similar problem still afflicts back-references that are embedded in a | ||||||
|  |       larger quantified expression, rather than being the immediate subject | ||||||
|  |       of the quantifier.  This will be addressed in a future | ||||||
|  |       <productname>PostgreSQL</> release. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix recently-introduced memory leak in processing of | ||||||
|  |       <type>inet</>/<type>cidr</> values (Heikki Linnakangas) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       A patch in the December 2011 releases of <productname>PostgreSQL</> | ||||||
|  |       caused memory leakage in these operations, which could be significant | ||||||
|  |       in scenarios such as building a btree index on such a column. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix dangling pointer after <command>CREATE TABLE AS</>/<command>SELECT | ||||||
|  |       INTO</> in a SQL-language function (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       In most cases this only led to an assertion failure in assert-enabled | ||||||
|  |       builds, but worse consequences seem possible. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Avoid double close of file handle in syslogger on Windows (MauMau) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Ordinarily this error was invisible, but it would cause an exception | ||||||
|  |       when running on a debug version of Windows. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix I/O-conversion-related memory leaks in plpgsql | ||||||
|  |       (Andres Freund, Jan Urbanski, Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Certain operations would leak memory until the end of the current | ||||||
|  |       function. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Improve <application>pg_dump</>'s handling of inherited table columns | ||||||
|  |       (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       <application>pg_dump</> mishandled situations where a child column has | ||||||
|  |       a different default expression than its parent column.  If the default | ||||||
|  |       is textually identical to the parent's default, but not actually the | ||||||
|  |       same (for instance, because of schema search path differences) it would | ||||||
|  |       not be recognized as different, so that after dump and restore the | ||||||
|  |       child would be allowed to inherit the parent's default.  Child columns | ||||||
|  |       that are <literal>NOT NULL</> where their parent is not could also be | ||||||
|  |       restored subtly incorrectly. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix <application>pg_restore</>'s direct-to-database mode for | ||||||
|  |       INSERT-style table data (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Direct-to-database restores from archive files made with | ||||||
|  |       <option>--inserts</> or <option>--column-inserts</> options fail when | ||||||
|  |       using <application>pg_restore</> from a release dated September or | ||||||
|  |       December 2011, as a result of an oversight in a fix for another | ||||||
|  |       problem.  The archive file itself is not at fault, and text-mode | ||||||
|  |       output is okay. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Allow <application>pg_upgrade</> to process tables containing | ||||||
|  |       <type>regclass</> columns (Bruce Momjian) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Since <application>pg_upgrade</> now takes care to preserve | ||||||
|  |       <structname>pg_class</> OIDs, there was no longer any reason for this | ||||||
|  |       restriction. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Make <application>libpq</> ignore <literal>ENOTDIR</> errors | ||||||
|  |       when looking for an SSL client certificate file | ||||||
|  |       (Magnus Hagander) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       This allows SSL connections to be established, though without a | ||||||
|  |       certificate, even when the user's home directory is set to something | ||||||
|  |       like <literal>/dev/null</>. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix some more field alignment issues in <application>ecpg</>'s SQLDA area | ||||||
|  |       (Zoltan Boszormenyi) | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Allow <literal>AT</> option in <application>ecpg</> | ||||||
|  |       <literal>DEALLOCATE</> statements (Michael Meskes) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       The infrastructure to support this has been there for awhile, but | ||||||
|  |       through an oversight there was still an error check rejecting the case. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Do not use the variable name when defining a varchar structure in ecpg | ||||||
|  |       (Michael Meskes) | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix <filename>contrib/auto_explain</>'s JSON output mode to produce | ||||||
|  |       valid JSON (Andrew Dunstan) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       The output used brackets at the top level, when it should have used | ||||||
|  |       braces. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix error in <filename>contrib/intarray</>'s <literal>int[] & | ||||||
|  |       int[]</> operator (Guillaume Lelarge) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       If the smallest integer the two input arrays have in common is 1, | ||||||
|  |       and there are smaller values in either array, then 1 would be | ||||||
|  |       incorrectly omitted from the result. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix error detection in <filename>contrib/pgcrypto</>'s | ||||||
|  |       <function>encrypt_iv()</> and <function>decrypt_iv()</> | ||||||
|  |       (Marko Kreen) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       These functions failed to report certain types of invalid-input errors, | ||||||
|  |       and would instead return random garbage values for incorrect input. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix one-byte buffer overrun in <filename>contrib/test_parser</> | ||||||
|  |       (Paul Guyot) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       The code would try to read one more byte than it should, which would | ||||||
|  |       crash in corner cases. | ||||||
|  |       Since <filename>contrib/test_parser</> is only example code, this is | ||||||
|  |       not a security issue in itself, but bad example code is still bad. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Use <function>__sync_lock_test_and_set()</> for spinlocks on ARM, if | ||||||
|  |       available (Martin Pitt) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       This function replaces our previous use of the <literal>SWPB</> | ||||||
|  |       instruction, which is deprecated and not available on ARMv6 and later. | ||||||
|  |       Reports suggest that the old code doesn't fail in an obvious way on | ||||||
|  |       recent ARM boards, but simply doesn't interlock concurrent accesses, | ||||||
|  |       leading to bizarre failures in multiprocess operation. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Use <option>-fexcess-precision=standard</> option when building with | ||||||
|  |       gcc versions that accept it (Andrew Dunstan) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       This prevents assorted scenarios wherein recent versions of gcc will | ||||||
|  |       produce creative results. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Allow use of threaded Python on FreeBSD (Chris Rees) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Our configure script previously believed that this combination wouldn't | ||||||
|  |       work; but FreeBSD fixed the problem, so remove that error check. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |    </itemizedlist> | ||||||
|  |  | ||||||
|  |   </sect2> | ||||||
|  |  </sect1> | ||||||
|  |  | ||||||
|  <sect1 id="release-9-0-6"> |  <sect1 id="release-9-0-6"> | ||||||
|   <title>Release 9.0.6</title> |   <title>Release 9.0.6</title> | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,6 +1,586 @@ | |||||||
| <!-- doc/src/sgml/release-9.1.sgml --> | <!-- doc/src/sgml/release-9.1.sgml --> | ||||||
| <!-- See header comment in release.sgml about typical markup --> | <!-- See header comment in release.sgml about typical markup --> | ||||||
|  |  | ||||||
|  |  <sect1 id="release-9-1-3"> | ||||||
|  |   <title>Release 9.1.3</title> | ||||||
|  |  | ||||||
|  |   <note> | ||||||
|  |   <title>Release Date</title> | ||||||
|  |   <simpara>2012-02-27</simpara> | ||||||
|  |   </note> | ||||||
|  |  | ||||||
|  |   <para> | ||||||
|  |    This release contains a variety of fixes from 9.1.2. | ||||||
|  |    For information about new features in the 9.1 major release, see | ||||||
|  |    <xref linkend="release-9-1">. | ||||||
|  |   </para> | ||||||
|  |  | ||||||
|  |   <sect2> | ||||||
|  |    <title>Migration to Version 9.1.3</title> | ||||||
|  |  | ||||||
|  |    <para> | ||||||
|  |     A dump/restore is not required for those running 9.1.X. | ||||||
|  |    </para> | ||||||
|  |  | ||||||
|  |    <para> | ||||||
|  |     However, if you are upgrading from a version earlier than 9.1.2, | ||||||
|  |     see the release notes for 9.1.2. | ||||||
|  |    </para> | ||||||
|  |  | ||||||
|  |   </sect2> | ||||||
|  |  | ||||||
|  |   <sect2> | ||||||
|  |    <title>Changes</title> | ||||||
|  |  | ||||||
|  |    <itemizedlist> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix btree index corruption from insertions concurrent with vacuuming | ||||||
|  |       (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       An index page split caused by an insertion could sometimes cause a | ||||||
|  |       concurrently-running <command>VACUUM</> to miss removing index entries | ||||||
|  |       that it should remove.  After the corresponding table rows are removed, | ||||||
|  |       the dangling index entries would cause errors (such as <quote>could not | ||||||
|  |       read block N in file ...</>) or worse, silently wrong query results | ||||||
|  |       after unrelated rows are re-inserted at the now-free table locations. | ||||||
|  |       This bug has been present since release 8.2, but occurs so infrequently | ||||||
|  |       that it was not diagnosed until now.  If you have reason to suspect | ||||||
|  |       that it has happened in your database, reindexing the affected index | ||||||
|  |       will fix things. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix transient zeroing of shared buffers during WAL replay (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       The replay logic would sometimes zero and refill a shared buffer, so | ||||||
|  |       that the contents were transiently invalid.  In hot standby mode this | ||||||
|  |       can result in a query that's executing in parallel seeing garbage data. | ||||||
|  |       Various symptoms could result from that, but the most common one seems | ||||||
|  |       to be <quote>invalid memory alloc request size</>. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix handling of data-modifying <literal>WITH</> subplans in | ||||||
|  |       <literal>READ COMMITTED</> rechecking (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       A <literal>WITH</> clause containing | ||||||
|  |       <command>INSERT</>/<command>UPDATE</>/<command>DELETE</> would crash | ||||||
|  |       if the parent <command>UPDATE</> or <command>DELETE</> command needed | ||||||
|  |       to be re-evaluated at one or more rows due to concurrent updates | ||||||
|  |       in <literal>READ COMMITTED</> mode. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix corner case in SSI transaction cleanup | ||||||
|  |       (Dan Ports) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       When finishing up a read-write serializable transaction, | ||||||
|  |       a crash could occur if all remaining active serializable transactions | ||||||
|  |       are read-only. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix postmaster to attempt restart after a hot-standby crash (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       A logic error caused the postmaster to terminate, rather than attempt | ||||||
|  |       to restart the cluster, if any backend process crashed while operating | ||||||
|  |       in hot standby mode. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix <command>CLUSTER</>/<command>VACUUM FULL</> handling of toast | ||||||
|  |       values owned by recently-updated rows (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       This oversight could lead to <quote>duplicate key value violates unique | ||||||
|  |       constraint</> errors being reported against the toast table's index | ||||||
|  |       during one of these commands. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Update per-column permissions, not only per-table permissions, when | ||||||
|  |       changing table owner (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Failure to do this meant that any previously granted column permissions | ||||||
|  |       were still shown as having been granted by the old owner.  This meant | ||||||
|  |       that neither the new owner nor a superuser could revoke the | ||||||
|  |       now-untraceable-to-table-owner permissions. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Support foreign data wrappers and foreign servers in | ||||||
|  |       <command>REASSIGN OWNED</> (Alvaro Herrera) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       This command failed with <quote>unexpected classid</> errors if | ||||||
|  |       it needed to change the ownership of any such objects. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Allow non-existent values for some settings in <command>ALTER | ||||||
|  |       USER/DATABASE SET</> (Heikki Linnakangas) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Allow <varname>default_text_search_config</>, | ||||||
|  |       <varname>default_tablespace</>, and <varname>temp_tablespaces</> to be | ||||||
|  |       set to names that are not known.  This is because they might be known | ||||||
|  |       in another database where the setting is intended to be used, or for the | ||||||
|  |       tablespace cases because the tablespace might not be created yet.  The | ||||||
|  |       same issue was previously recognized for <varname>search_path</>, and | ||||||
|  |       these settings now act like that one. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix <quote>unsupported node type</> error caused by <literal>COLLATE</> | ||||||
|  |       in an <command>INSERT</> expression (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Avoid crashing when we have problems deleting table files post-commit | ||||||
|  |       (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Dropping a table should lead to deleting the underlying disk files only | ||||||
|  |       after the transaction commits.  In event of failure then (for instance, | ||||||
|  |       because of wrong file permissions) the code is supposed to just emit a | ||||||
|  |       warning message and go on, since it's too late to abort the | ||||||
|  |       transaction.  This logic got broken as of release 8.4, causing such | ||||||
|  |       situations to result in a PANIC and an unrestartable database. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Recover from errors occurring during WAL replay of <command>DROP | ||||||
|  |       TABLESPACE</> (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Replay will attempt to remove the tablespace's directories, but there | ||||||
|  |       are various reasons why this might fail (for example, incorrect | ||||||
|  |       ownership or permissions on those directories).  Formerly the replay | ||||||
|  |       code would panic, rendering the database unrestartable without manual | ||||||
|  |       intervention.  It seems better to log the problem and continue, since | ||||||
|  |       the only consequence of failure to remove the directories is some | ||||||
|  |       wasted disk space. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix race condition in logging AccessExclusiveLocks for hot standby | ||||||
|  |       (Simon Riggs) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Sometimes a lock would be logged as being held by <quote>transaction | ||||||
|  |       zero</>.  This is at least known to produce assertion failures on | ||||||
|  |       slave servers, and might be the cause of more serious problems. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Track the OID counter correctly during WAL replay, even when it wraps | ||||||
|  |       around (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Previously the OID counter would remain stuck at a high value until the | ||||||
|  |       system exited replay mode.  The practical consequences of that are | ||||||
|  |       usually nil, but there are scenarios wherein a standby server that's | ||||||
|  |       been promoted to master might take a long time to advance the OID | ||||||
|  |       counter to a reasonable value once values are needed. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Prevent emitting misleading <quote>consistent recovery state reached</> | ||||||
|  |       log message at the beginning of crash recovery (Heikki Linnakangas) | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix initial value of | ||||||
|  |       <structname>pg_stat_replication</>.<structfield>replay_location</> | ||||||
|  |       (Fujii Masao) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Previously, the value shown would be wrong until at least one WAL | ||||||
|  |       record had been replayed. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix regular expression back-references with <literal>*</> attached | ||||||
|  |       (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Rather than enforcing an exact string match, the code would effectively | ||||||
|  |       accept any string that satisfies the pattern sub-expression referenced | ||||||
|  |       by the back-reference symbol. | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       A similar problem still afflicts back-references that are embedded in a | ||||||
|  |       larger quantified expression, rather than being the immediate subject | ||||||
|  |       of the quantifier.  This will be addressed in a future | ||||||
|  |       <productname>PostgreSQL</> release. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix recently-introduced memory leak in processing of | ||||||
|  |       <type>inet</>/<type>cidr</> values (Heikki Linnakangas) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       A patch in the December 2011 releases of <productname>PostgreSQL</> | ||||||
|  |       caused memory leakage in these operations, which could be significant | ||||||
|  |       in scenarios such as building a btree index on such a column. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix planner's ability to push down index-expression restrictions | ||||||
|  |       through <literal>UNION ALL</> (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       This type of optimization was inadvertently disabled by a fix for | ||||||
|  |       another problem in 9.1.2. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix planning of <literal>WITH</> clauses referenced in | ||||||
|  |       <command>UPDATE</>/<command>DELETE</> on an inherited table | ||||||
|  |       (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       This bug led to <quote>could not find plan for CTE</> failures. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix GIN cost estimation to handle <literal>column IN (...)</> | ||||||
|  |       index conditions (Marti Raudsepp) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       This oversight would usually lead to crashes if such a condition could | ||||||
|  |       be used with a GIN index. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Prevent assertion failure when exiting a session with an open, failed | ||||||
|  |       transaction (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       This bug has no impact on normal builds with asserts not enabled. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix dangling pointer after <command>CREATE TABLE AS</>/<command>SELECT | ||||||
|  |       INTO</> in a SQL-language function (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       In most cases this only led to an assertion failure in assert-enabled | ||||||
|  |       builds, but worse consequences seem possible. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Avoid double close of file handle in syslogger on Windows (MauMau) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Ordinarily this error was invisible, but it would cause an exception | ||||||
|  |       when running on a debug version of Windows. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix I/O-conversion-related memory leaks in plpgsql | ||||||
|  |       (Andres Freund, Jan Urbanski, Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Certain operations would leak memory until the end of the current | ||||||
|  |       function. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Work around bug in perl's SvPVutf8() function (Andrew Dunstan) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       This function crashes when handed a typeglob or certain read-only | ||||||
|  |       objects such as <literal>$^V</>.  Make plperl avoid passing those to | ||||||
|  |       it. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       In <application>pg_dump</>, don't dump contents of an extension's | ||||||
|  |       configuration tables if the extension itself is not being dumped | ||||||
|  |       (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Improve <application>pg_dump</>'s handling of inherited table columns | ||||||
|  |       (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       <application>pg_dump</> mishandled situations where a child column has | ||||||
|  |       a different default expression than its parent column.  If the default | ||||||
|  |       is textually identical to the parent's default, but not actually the | ||||||
|  |       same (for instance, because of schema search path differences) it would | ||||||
|  |       not be recognized as different, so that after dump and restore the | ||||||
|  |       child would be allowed to inherit the parent's default.  Child columns | ||||||
|  |       that are <literal>NOT NULL</> where their parent is not could also be | ||||||
|  |       restored subtly incorrectly. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix <application>pg_restore</>'s direct-to-database mode for | ||||||
|  |       INSERT-style table data (Tom Lane) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Direct-to-database restores from archive files made with | ||||||
|  |       <option>--inserts</> or <option>--column-inserts</> options fail when | ||||||
|  |       using <application>pg_restore</> from a release dated September or | ||||||
|  |       December 2011, as a result of an oversight in a fix for another | ||||||
|  |       problem.  The archive file itself is not at fault, and text-mode | ||||||
|  |       output is okay. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Teach <application>pg_upgrade</> to handle renaming of | ||||||
|  |       <application>plpython</>'s shared library (Bruce Momjian) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Upgrading a pre-9.1 database that included plpython would fail because | ||||||
|  |       of this oversight. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Allow <application>pg_upgrade</> to process tables containing | ||||||
|  |       <type>regclass</> columns (Bruce Momjian) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Since <application>pg_upgrade</> now takes care to preserve | ||||||
|  |       <structname>pg_class</> OIDs, there was no longer any reason for this | ||||||
|  |       restriction. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Make <application>libpq</> ignore <literal>ENOTDIR</> errors | ||||||
|  |       when looking for an SSL client certificate file | ||||||
|  |       (Magnus Hagander) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       This allows SSL connections to be established, though without a | ||||||
|  |       certificate, even when the user's home directory is set to something | ||||||
|  |       like <literal>/dev/null</>. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix some more field alignment issues in <application>ecpg</>'s SQLDA area | ||||||
|  |       (Zoltan Boszormenyi) | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Allow <literal>AT</> option in <application>ecpg</> | ||||||
|  |       <literal>DEALLOCATE</> statements (Michael Meskes) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       The infrastructure to support this has been there for awhile, but | ||||||
|  |       through an oversight there was still an error check rejecting the case. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Do not use the variable name when defining a varchar structure in ecpg | ||||||
|  |       (Michael Meskes) | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix <filename>contrib/auto_explain</>'s JSON output mode to produce | ||||||
|  |       valid JSON (Andrew Dunstan) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       The output used brackets at the top level, when it should have used | ||||||
|  |       braces. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix error in <filename>contrib/intarray</>'s <literal>int[] & | ||||||
|  |       int[]</> operator (Guillaume Lelarge) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       If the smallest integer the two input arrays have in common is 1, | ||||||
|  |       and there are smaller values in either array, then 1 would be | ||||||
|  |       incorrectly omitted from the result. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix error detection in <filename>contrib/pgcrypto</>'s | ||||||
|  |       <function>encrypt_iv()</> and <function>decrypt_iv()</> | ||||||
|  |       (Marko Kreen) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       These functions failed to report certain types of invalid-input errors, | ||||||
|  |       and would instead return random garbage values for incorrect input. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Fix one-byte buffer overrun in <filename>contrib/test_parser</> | ||||||
|  |       (Paul Guyot) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       The code would try to read one more byte than it should, which would | ||||||
|  |       crash in corner cases. | ||||||
|  |       Since <filename>contrib/test_parser</> is only example code, this is | ||||||
|  |       not a security issue in itself, but bad example code is still bad. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Use <function>__sync_lock_test_and_set()</> for spinlocks on ARM, if | ||||||
|  |       available (Martin Pitt) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       This function replaces our previous use of the <literal>SWPB</> | ||||||
|  |       instruction, which is deprecated and not available on ARMv6 and later. | ||||||
|  |       Reports suggest that the old code doesn't fail in an obvious way on | ||||||
|  |       recent ARM boards, but simply doesn't interlock concurrent accesses, | ||||||
|  |       leading to bizarre failures in multiprocess operation. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Use <option>-fexcess-precision=standard</> option when building with | ||||||
|  |       gcc versions that accept it (Andrew Dunstan) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       This prevents assorted scenarios wherein recent versions of gcc will | ||||||
|  |       produce creative results. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |     <listitem> | ||||||
|  |      <para> | ||||||
|  |       Allow use of threaded Python on FreeBSD (Chris Rees) | ||||||
|  |      </para> | ||||||
|  |  | ||||||
|  |      <para> | ||||||
|  |       Our configure script previously believed that this combination wouldn't | ||||||
|  |       work; but FreeBSD fixed the problem, so remove that error check. | ||||||
|  |      </para> | ||||||
|  |     </listitem> | ||||||
|  |  | ||||||
|  |    </itemizedlist> | ||||||
|  |  | ||||||
|  |   </sect2> | ||||||
|  |  </sect1> | ||||||
|  |  | ||||||
|  <sect1 id="release-9-1-2"> |  <sect1 id="release-9-1-2"> | ||||||
|   <title>Release 9.1.2</title> |   <title>Release 9.1.2</title> | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user