aboutsummaryrefslogtreecommitdiff
path: root/doc/src/sgml/release-9.3.sgml
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/sgml/release-9.3.sgml')
-rw-r--r--doc/src/sgml/release-9.3.sgml14551
1 files changed, 0 insertions, 14551 deletions
diff --git a/doc/src/sgml/release-9.3.sgml b/doc/src/sgml/release-9.3.sgml
deleted file mode 100644
index 0c1498015ba..00000000000
--- a/doc/src/sgml/release-9.3.sgml
+++ /dev/null
@@ -1,14551 +0,0 @@
-<!-- doc/src/sgml/release-9.3.sgml -->
-<!-- See header comment in release.sgml about typical markup -->
-
- <sect1 id="release-9-3-25">
- <title>Release 9.3.25</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-11-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.24.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <para>
- This is expected to be the last <productname>PostgreSQL</productname>
- release in the 9.3.X series. Users are encouraged to update to a newer
- release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.25</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.23,
- see <xref linkend="release-9-3-23"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix corner-case failures
- in <function>has_<replaceable>foo</replaceable>_privilege()</function>
- family of functions (Tom Lane)
- </para>
-
- <para>
- Return NULL rather than throwing an error when an invalid object OID
- is provided. Some of these functions got that right already, but not
- all. <function>has_column_privilege()</function> was additionally
- capable of crashing on some platforms.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid O(N^2) slowdown in regular expression match/split functions on
- long strings (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid O(N^3) slowdown in lexer for long strings
- of <literal>+</literal> or <literal>-</literal> characters
- (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mis-execution of SubPlans when the outer query is being scanned
- backwards (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure of <command>UPDATE/DELETE ... WHERE CURRENT OF ...</command>
- after rewinding the referenced cursor (Tom Lane)
- </para>
-
- <para>
- A cursor that scans multiple relations (particularly an inheritance
- tree) could produce wrong behavior if rewound to an earlier relation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>EvalPlanQual</function> to handle conditionally-executed
- InitPlans properly (Andrew Gierth, Tom Lane)
- </para>
-
- <para>
- This resulted in hard-to-reproduce crashes or wrong answers in
- concurrent updates, if they contained code such as an uncorrelated
- sub-<literal>SELECT</literal> inside a <literal>CASE</literal>
- construct.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix character-class checks to not fail on Windows for Unicode
- characters above U+FFFF (Tom Lane, Kenji Uno)
- </para>
-
- <para>
- This bug affected full-text-search operations, as well
- as <filename>contrib/ltree</filename>
- and <filename>contrib/pg_trgm</filename>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that sequences owned by a foreign table are processed
- by <literal>ALTER OWNER</literal> on the table (Peter Eisentraut)
- </para>
-
- <para>
- The ownership change should propagate to such sequences as well, but
- this was missed for foreign tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix over-allocation of space for <function>array_out()</function>'s
- result string (Keiichi Hirobe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak in repeated SP-GiST index scans (Tom Lane)
- </para>
-
- <para>
- This is only known to amount to anything significant in cases where
- an exclusion constraint using SP-GiST receives many new index entries
- in a single command.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crash if a utility command causes infinite recursion (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- When initializing a hot standby, cope with duplicate XIDs caused by
- two-phase transactions on the master
- (Michael Paquier, Konstantin Knizhnik)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Randomize the <function>random()</function> seed in bootstrap and
- standalone backends, and in <application>initdb</application>
- (Noah Misch)
- </para>
-
- <para>
- The main practical effect of this change is that it avoids a scenario
- where <application>initdb</application> might mistakenly conclude that
- POSIX shared memory is not available, due to name collisions caused by
- always using the same random seed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that hot standby processes use the correct WAL consistency
- point (Alexander Kukushkin, Michael Paquier)
- </para>
-
- <para>
- This prevents possible misbehavior just after a standby server has
- reached a consistent database state during WAL replay.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't run atexit callbacks when servicing <literal>SIGQUIT</literal>
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't record foreign-server user mappings as members of extensions
- (Tom Lane)
- </para>
-
- <para>
- If <command>CREATE USER MAPPING</command> is executed in an extension
- script, an extension dependency was created for the user mapping,
- which is unexpected. Roles can't be extension members, so user
- mappings shouldn't be either.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make syslogger more robust against failures in opening CSV log files
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible inconsistency in <application>pg_dump</application>'s
- sorting of dissimilar object names (Jacob Champion)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <application>pg_restore</application> will schema-qualify
- the table name when
- emitting <literal>DISABLE</literal>/<literal>ENABLE TRIGGER</literal>
- commands (Tom Lane)
- </para>
-
- <para>
- This avoids failures due to the new policy of running restores with
- restrictive search path.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to handle event triggers in
- extensions correctly (Haribabu Kommi)
- </para>
-
- <para>
- <application>pg_upgrade</application> failed to preserve an event
- trigger's extension-membership status.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application>'s cluster state check to
- work correctly on a standby server (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enforce type <type>cube</type>'s dimension limit in
- all <filename>contrib/cube</filename> functions (Andrey Borodin)
- </para>
-
- <para>
- Previously, some cube-related functions could construct values that
- would be rejected by <function>cube_in()</function>, leading to
- dump/reload failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/unaccent</filename>'s
- <function>unaccent()</function> function to use
- the <literal>unaccent</literal> text search dictionary that is in the
- same schema as the function (Tom Lane)
- </para>
-
- <para>
- Previously it tried to look up the dictionary using the search path,
- which could fail if the search path has a restrictive value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix build problems on macOS 10.14 (Mojave) (Tom Lane)
- </para>
-
- <para>
- Adjust <application>configure</application> to add
- an <option>-isysroot</option> switch to <varname>CPPFLAGS</varname>;
- without this, PL/Perl and PL/Tcl fail to configure or build on macOS
- 10.14. The specific sysroot used can be overridden at configure time
- or build time by setting the <varname>PG_SYSROOT</varname> variable in
- the arguments of <application>configure</application>
- or <application>make</application>.
- </para>
-
- <para>
- It is now recommended that Perl-related extensions
- write <literal>$(perl_includespec)</literal> rather
- than <literal>-I$(perl_archlibexp)/CORE</literal> in their compiler
- flags. The latter continues to work on most platforms, but not recent
- macOS.
- </para>
-
- <para>
- Also, it should no longer be necessary to
- specify <option>--with-tclconfig</option> manually to get PL/Tcl to
- build on recent macOS releases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix MSVC build and regression-test scripts to work on recent Perl
- versions (Andrew Dunstan)
- </para>
-
- <para>
- Perl no longer includes the current directory in its search path
- by default; work around that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support building on Windows with Visual Studio 2015 or Visual Studio 2017
- (Michael Paquier, Haribabu Kommi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow btree comparison functions to return <literal>INT_MIN</literal>
- (Tom Lane)
- </para>
-
- <para>
- Up to now, we've forbidden datatype-specific comparison functions from
- returning <literal>INT_MIN</literal>, which allows callers to invert
- the sort order just by negating the comparison result. However, this
- was never safe for comparison functions that directly return the
- result of <function>memcmp()</function>, <function>strcmp()</function>,
- etc, as POSIX doesn't place any such restriction on those functions.
- At least some recent versions of <function>memcmp()</function> can
- return <literal>INT_MIN</literal>, causing incorrect sort ordering.
- Hence, we've removed this restriction. Callers must now use
- the <literal>INVERT_COMPARE_RESULT()</literal> macro if they wish to
- invert the sort order.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix recursion hazard in shared-invalidation message processing
- (Tom Lane)
- </para>
-
- <para>
- This error could, for example, result in failure to access a system
- catalog or index that had just been processed by <command>VACUUM
- FULL</command>.
- </para>
-
- <para>
- This change adds a new result code
- for <function>LockAcquire</function>, which might possibly affect
- external callers of that function, though only very unusual usage
- patterns would have an issue with it. The API
- of <function>LockAcquireExtended</function> is also changed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Save and restore SPI's global variables
- during <function>SPI_connect()</function>
- and <function>SPI_finish()</function> (Chapman Flack, Tom Lane)
- </para>
-
- <para>
- This prevents possible interference when one SPI-using function calls
- another.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide <literal>ALLOCSET_DEFAULT_SIZES</literal> and sibling macros
- in back branches (Tom Lane)
- </para>
-
- <para>
- These macros have existed since 9.6, but there were requests to add
- them to older branches to allow extensions to rely on them without
- branch-specific coding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid using potentially-under-aligned page buffers (Tom Lane)
- </para>
-
- <para>
- Invent new union types <type>PGAlignedBlock</type>
- and <type>PGAlignedXLogBlock</type>, and use these in place of plain
- char arrays, ensuring that the compiler can't place the buffer at a
- misaligned start address. This fixes potential core dumps on
- alignment-picky platforms, and may improve performance even on
- platforms that allow misalignment.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>src/port/snprintf.c</filename> follow the C99
- standard's definition of <function>snprintf()</function>'s result
- value (Tom Lane)
- </para>
-
- <para>
- On platforms where this code is used (mostly Windows), its pre-C99
- behavior could lead to failure to detect buffer overrun, if the
- calling code assumed C99 semantics.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When building on i386 with the <application>clang</application>
- compiler, require <option>-msse2</option> to be used (Andres Freund)
- </para>
-
- <para>
- This avoids problems with missed floating point overflow checks.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>configure</application>'s detection of the result
- type of <function>strerror_r()</function> (Tom Lane)
- </para>
-
- <para>
- The previous coding got the wrong answer when building
- with <application>icc</application> on Linux (and perhaps in other
- cases), leading to <application>libpq</application> not returning
- useful error messages for system-reported errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018g for DST law changes in Chile, Fiji, Morocco, and Russia
- (Volgograd), plus historical corrections for China, Hawaii, Japan,
- Macau, and North Korea.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-24">
- <title>Release 9.3.24</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-08-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.23.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <para>
- The <productname>PostgreSQL</productname> community will stop releasing
- updates for the 9.3.X release series shortly after September 2018.
- Users are encouraged to update to a newer release branch soon.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.24</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.23,
- see <xref linkend="release-9-3-23"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix failure to reset <application>libpq</application>'s state fully
- between connection attempts (Tom Lane)
- </para>
-
- <para>
- An unprivileged user of <filename>dblink</filename>
- or <filename>postgres_fdw</filename> could bypass the checks intended
- to prevent use of server-side credentials, such as
- a <filename>~/.pgpass</filename> file owned by the operating-system
- user running the server. Servers allowing peer authentication on
- local connections are particularly vulnerable. Other attacks such
- as SQL injection into a <filename>postgres_fdw</filename> session
- are also possible.
- Attacking <filename>postgres_fdw</filename> in this way requires the
- ability to create a foreign server object with selected connection
- parameters, but any user with access to <filename>dblink</filename>
- could exploit the problem.
- In general, an attacker with the ability to select the connection
- parameters for a <application>libpq</application>-using application
- could cause mischief, though other plausible attack scenarios are
- harder to think of.
- Our thanks to Andrew Krasichkov for reporting this issue.
- (CVE-2018-10915)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that updates to the <structfield>relfrozenxid</structfield>
- and <structfield>relminmxid</structfield> values
- for <quote>nailed</quote> system catalogs are processed in a timely
- fashion (Andres Freund)
- </para>
-
- <para>
- Overoptimistic caching rules could prevent these updates from being
- seen by other sessions, leading to spurious errors and/or data
- corruption. The problem was significantly worse for shared catalogs,
- such as <structname>pg_authid</structname>, because the stale cache
- data could persist into new sessions as well as existing ones.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix case where a freshly-promoted standby crashes before having
- completed its first post-recovery checkpoint (Michael Paquier, Kyotaro
- Horiguchi, Pavan Deolasee, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This led to a situation where the server did not think it had reached
- a consistent database state during subsequent WAL replay, preventing
- restart.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid emitting a bogus WAL record when recycling an all-zero btree
- page (Amit Kapila)
- </para>
-
- <para>
- This mistake has been seen to cause assertion failures, and
- potentially it could result in unnecessary query cancellations on hot
- standby servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of WAL replay for transactions that drop many
- relations (Fujii Masao)
- </para>
-
- <para>
- This change reduces the number of times that shared buffers are
- scanned, so that it is of most benefit when that setting is large.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of lock releasing in standby server WAL replay
- (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure a table's cached index list is correctly rebuilt after an index
- creation fails partway through (Peter Geoghegan)
- </para>
-
- <para>
- Previously, the failed index's OID could remain in the list, causing
- problems later in the same session.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misoptimization of equivalence classes involving composite-type
- columns (Tom Lane)
- </para>
-
- <para>
- This resulted in failure to recognize that an index on a composite
- column could provide the sort order needed for a mergejoin on that
- column.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix SQL-standard <literal>FETCH FIRST</literal> syntax to allow
- parameters (<literal>$<replaceable>n</replaceable></literal>), as the
- standard expects (Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to schema-qualify some object names
- in <function>getObjectDescription</function> output
- (Kyotaro Horiguchi, Tom Lane)
- </para>
-
- <para>
- Names of collations, conversions, and text search objects
- were not schema-qualified when they should be.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Widen <command>COPY FROM</command>'s current-line-number counter
- from 32 to 64 bits (David Rowley)
- </para>
-
- <para>
- This avoids two problems with input exceeding 4G lines: <literal>COPY
- FROM WITH HEADER</literal> would drop a line every 4G lines, not only
- the first line, and error reports could show a wrong line number.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a string freeing function
- to <application>ecpg</application>'s <filename>pgtypes</filename>
- library, so that cross-module memory management problems can be
- avoided on Windows (Takayuki Tsunakawa)
- </para>
-
- <para>
- On Windows, crashes can ensue if the <function>free</function> call
- for a given chunk of memory is not made from the same DLL
- that <function>malloc</function>'ed the memory.
- The <filename>pgtypes</filename> library sometimes returns strings
- that it expects the caller to free, making it impossible to follow
- this rule. Add a <function>PGTYPESchar_free()</function> function
- that just wraps <function>free</function>, allowing applications
- to follow this rule.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s support for <type>long
- long</type> variables on Windows, as well as other platforms that
- declare <function>strtoll</function>/<function>strtoull</function>
- nonstandardly or not at all (Dang Minh Huong, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misidentification of SQL statement type in PL/pgSQL, when a rule
- change causes a change in the semantics of a statement intra-session
- (Tom Lane)
- </para>
-
- <para>
- This error led to assertion failures, or in rare cases, failure to
- enforce the <literal>INTO STRICT</literal> option as expected.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix password prompting in client programs so that echo is properly
- disabled on Windows when <literal>stdin</literal> is not the
- terminal (Matthew Stickney)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Further fix mis-quoting of values for list-valued GUC variables in
- dumps (Tom Lane)
- </para>
-
- <para>
- The previous fix for quoting of <varname>search_path</varname> and
- other list-valued variables in <application>pg_dump</application>
- output turned out to misbehave for empty-string list elements, and it
- risked truncation of long file paths.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_upgrade</application> check that the old server
- was shut down cleanly (Bruce Momjian)
- </para>
-
- <para>
- The previous check could be fooled by an immediate-mode shutdown.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash in <filename>contrib/ltree</filename>'s
- <function>lca()</function> function when the input array is empty
- (Pierre Ducroquet)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix various error-handling code paths in which an incorrect error code
- might be reported (Michael Paquier, Tom Lane, Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rearrange makefiles to ensure that programs link to freshly-built
- libraries (such as <filename>libpq.so</filename>) rather than ones
- that might exist in the system library directories (Tom Lane)
- </para>
-
- <para>
- This avoids problems when building on platforms that supply old copies
- of <productname>PostgreSQL</productname> libraries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018e for DST law changes in North Korea, plus historical
- corrections for Czechoslovakia.
- </para>
-
- <para>
- This update includes a redefinition of <quote>daylight savings</quote>
- in Ireland, as well as for some past years in Namibia and
- Czechoslovakia. In those jurisdictions, legally standard time is
- observed in summer, and daylight savings time in winter, so that the
- daylight savings offset is one hour behind standard time not one hour
- ahead. This does not affect either the actual UTC offset or the
- timezone abbreviations in use; the only known effect is that
- the <structfield>is_dst</structfield> column in
- the <structname>pg_timezone_names</structname> view will now be true
- in winter and false in summer in these cases.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-23">
- <title>Release 9.3.23</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-05-10</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.22.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.23</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if the function marking mistakes mentioned in the first
- changelog entry below affect you, you will want to take steps to
- correct your database catalogs.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.22,
- see <xref linkend="release-9-3-22"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix incorrect volatility markings on a few built-in functions
- (Thomas Munro, Tom Lane)
- </para>
-
- <para>
- The functions
- <function>query_to_xml</function>,
- <function>cursor_to_xml</function>,
- <function>cursor_to_xmlschema</function>,
- <function>query_to_xmlschema</function>, and
- <function>query_to_xml_and_xmlschema</function>
- should be marked volatile because they execute user-supplied queries
- that might contain volatile operations. They were not, leading to a
- risk of incorrect query optimization. This has been repaired for new
- installations by correcting the initial catalog data, but existing
- installations will continue to contain the incorrect markings.
- Practical use of these functions seems to pose little hazard, but in
- case of trouble, it can be fixed by manually updating these
- functions' <structname>pg_proc</structname> entries, for example
- <literal>ALTER FUNCTION pg_catalog.query_to_xml(text, boolean,
- boolean, text) VOLATILE</literal>. (Note that that will need to be
- done in each database of the installation.) Another option is
- to <application>pg_upgrade</application> the database to a version
- containing the corrected initial data.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid re-using TOAST value OIDs that match dead-but-not-yet-vacuumed
- TOAST entries (Pavan Deolasee)
- </para>
-
- <para>
- Once the OID counter has wrapped around, it's possible to assign a
- TOAST value whose OID matches a previously deleted entry in the same
- TOAST table. If that entry were not yet vacuumed away, this resulted
- in <quote>unexpected chunk number 0 (expected 1) for toast
- value <replaceable>nnnnn</replaceable></quote> errors, which would
- persist until the dead entry was removed
- by <command>VACUUM</command>. Fix by not selecting such OIDs when
- creating a new TOAST entry.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <command>ANALYZE</command>'s algorithm for updating
- <structname>pg_class</structname>.<structfield>reltuples</structfield>
- (David Gould)
- </para>
-
- <para>
- Previously, pages not actually scanned by <command>ANALYZE</command>
- were assumed to retain their old tuple density. In a large table
- where <command>ANALYZE</command> samples only a small fraction of the
- pages, this meant that the overall tuple density estimate could not
- change very much, so that <structfield>reltuples</structfield> would
- change nearly proportionally to changes in the table's physical size
- (<structfield>relpages</structfield>) regardless of what was actually
- happening in the table. This has been observed to result
- in <structfield>reltuples</structfield> becoming so much larger than
- reality as to effectively shut off autovacuuming. To fix, assume
- that <command>ANALYZE</command>'s sample is a statistically unbiased
- sample of the table (as it should be), and just extrapolate the
- density observed within those pages to the whole table.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>UPDATE/DELETE ... WHERE CURRENT OF</literal> to not fail
- when the referenced cursor uses an index-only-scan plan (Yugo Nagata,
- Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect planning of join clauses pushed into parameterized
- paths (Andrew Gierth, Tom Lane)
- </para>
-
- <para>
- This error could result in misclassifying a condition as
- a <quote>join filter</quote> for an outer join when it should be a
- plain <quote>filter</quote> condition, leading to incorrect join
- output.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misoptimization of <literal>CHECK</literal> constraints having
- provably-NULL subclauses of
- top-level <literal>AND</literal>/<literal>OR</literal> conditions
- (Tom Lane, Dean Rasheed)
- </para>
-
- <para>
- This could, for example, allow constraint exclusion to exclude a
- child table that should not be excluded from a query.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid failure if a query-cancel or session-termination interrupt
- occurs while committing a prepared transaction (Stas Kelvich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix query-lifespan memory leakage in repeatedly executed hash joins
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix overly strict sanity check
- in <function>heap_prepare_freeze_tuple</function>
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- This could result in incorrect <quote>cannot freeze committed
- xmax</quote> failures in databases that have
- been <application>pg_upgrade</application>'d from 9.2 or earlier.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent dangling-pointer dereference when a C-coded before-update row
- trigger returns the <quote>old</quote> tuple (Rushabh Lathia)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce locking during autovacuum worker scheduling (Jeff Janes)
- </para>
-
- <para>
- The previous behavior caused drastic loss of potential worker
- concurrency in databases with many tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure client hostname is copied while copying
- <structname>pg_stat_activity</structname> data to local memory
- (Edmund Horner)
- </para>
-
- <para>
- Previously the supposedly-local snapshot contained a pointer into
- shared memory, allowing the client hostname column to change
- unexpectedly if any existing session disconnected.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect processing of multiple compound affixes
- in <literal>ispell</literal> dictionaries (Arthur Zakirov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix collation-aware searches (that is, indexscans using inequality
- operators) in SP-GiST indexes on text columns (Tom Lane)
- </para>
-
- <para>
- Such searches would return the wrong set of rows in most non-C
- locales.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Count the number of index tuples correctly during initial build of an
- SP-GiST index (Tomas Vondra)
- </para>
-
- <para>
- Previously, the tuple count was reported to be the same as that of
- the underlying table, which is wrong if the index is partial.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Count the number of index tuples correctly during vacuuming of a
- GiST index (Andrey Borodin)
- </para>
-
- <para>
- Previously it reported the estimated number of heap tuples,
- which might be inaccurate, and is certainly wrong if the
- index is partial.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <function>scalarltsel</function>
- and <function>scalargtsel</function> to be used on non-core datatypes
- (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce <application>libpq</application>'s memory consumption when a
- server error is reported after a large amount of query output has
- been collected (Tom Lane)
- </para>
-
- <para>
- Discard the previous output before, not after, processing the error
- message. On some platforms, notably Linux, this can make a
- difference in the application's subsequent memory footprint.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix double-free crashes in <application>ecpg</application>
- (Patrick Krecker, Jeevan Ladhe)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application> to handle <type>long long
- int</type> variables correctly in MSVC builds (Michael Meskes,
- Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mis-quoting of values for list-valued GUC variables in dumps
- (Michael Paquier, Tom Lane)
- </para>
-
- <para>
- The <varname>local_preload_libraries</varname>,
- <varname>session_preload_libraries</varname>,
- <varname>shared_preload_libraries</varname>,
- and <varname>temp_tablespaces</varname> variables were not correctly
- quoted in <application>pg_dump</application> output. This would
- cause problems if settings for these variables appeared in
- <command>CREATE FUNCTION ... SET</command> or <command>ALTER
- DATABASE/ROLE ... SET</command> clauses.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix overflow handling in <application>PL/pgSQL</application>
- integer <command>FOR</command> loops (Tom Lane)
- </para>
-
- <para>
- The previous coding failed to detect overflow of the loop variable
- on some non-gcc compilers, leading to an infinite loop.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Adjust <application>PL/Python</application> regression tests to pass
- under Python 3.7 (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support testing <application>PL/Python</application> and related
- modules when building with Python 3 and MSVC (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rename internal <function>b64_encode</function>
- and <function>b64_decode</function> functions to avoid conflict with
- Solaris 11.4 built-in functions (Rainer Orth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync our copy of the timezone library with IANA tzcode release 2018e
- (Tom Lane)
- </para>
-
- <para>
- This fixes the <application>zic</application> timezone data compiler
- to cope with negative daylight-savings offsets. While
- the <productname>PostgreSQL</productname> project will not
- immediately ship such timezone data, <application>zic</application>
- might be used with timezone data obtained directly from IANA, so it
- seems prudent to update <application>zic</application> now.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018d for DST law changes in Palestine and Antarctica (Casey
- Station), plus historical corrections for Portugal and its colonies,
- as well as Enderbury, Jamaica, Turks &amp; Caicos Islands, and
- Uruguay.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-22">
- <title>Release 9.3.22</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-03-01</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.21.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.22</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you run an installation in which not all users are mutually
- trusting, or if you maintain an application or extension that is
- intended for use in arbitrary situations, it is strongly recommended
- that you read the documentation changes described in the first changelog
- entry below, and take suitable steps to ensure that your installation or
- code is secure.
- </para>
-
- <para>
- Also, the changes described in the second changelog entry below may
- cause functions used in index expressions or materialized views to fail
- during auto-analyze, or when reloading from a dump. After upgrading,
- monitor the server logs for such problems, and fix affected functions.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.18,
- see <xref linkend="release-9-3-18"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Document how to configure installations and applications to guard
- against search-path-dependent trojan-horse attacks from other users
- (Noah Misch)
- </para>
-
- <para>
- Using a <varname>search_path</varname> setting that includes any
- schemas writable by a hostile user enables that user to capture
- control of queries and then run arbitrary SQL code with the
- permissions of the attacked user. While it is possible to write
- queries that are proof against such hijacking, it is notationally
- tedious, and it's very easy to overlook holes. Therefore, we now
- recommend configurations in which no untrusted schemas appear in
- one's search path. Relevant documentation appears in
- <xref linkend="ddl-schemas-patterns"/> (for database administrators and users),
- <xref linkend="libpq-connect"/> (for application authors),
- <xref linkend="extend-extensions-style"/> (for extension authors), and
- <xref linkend="sql-createfunction"/> (for authors
- of <literal>SECURITY DEFINER</literal> functions).
- (CVE-2018-1058)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid use of insecure <varname>search_path</varname> settings
- in <application>pg_dump</application> and other client programs
- (Noah Misch, Tom Lane)
- </para>
-
- <para>
- <application>pg_dump</application>,
- <application>pg_upgrade</application>,
- <application>vacuumdb</application> and
- other <productname>PostgreSQL</productname>-provided applications were
- themselves vulnerable to the type of hijacking described in the previous
- changelog entry; since these applications are commonly run by
- superusers, they present particularly attractive targets. To make them
- secure whether or not the installation as a whole has been secured,
- modify them to include only the <structname>pg_catalog</structname>
- schema in their <varname>search_path</varname> settings.
- Autovacuum worker processes now do the same, as well.
- </para>
-
- <para>
- In cases where user-provided functions are indirectly executed by
- these programs &mdash; for example, user-provided functions in index
- expressions &mdash; the tighter <varname>search_path</varname> may
- result in errors, which will need to be corrected by adjusting those
- user-provided functions to not assume anything about what search path
- they are invoked under. That has always been good practice, but now
- it will be necessary for correct behavior.
- (CVE-2018-1058)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misbehavior of concurrent-update rechecks with CTE references
- appearing in subplans (Tom Lane)
- </para>
-
- <para>
- If a CTE (<literal>WITH</literal> clause reference) is used in an
- InitPlan or SubPlan, and the query requires a recheck due to trying
- to update or lock a concurrently-updated row, incorrect results could
- be obtained.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner failures with overlapping mergejoin clauses in an outer
- join (Tom Lane)
- </para>
-
- <para>
- These mistakes led to <quote>left and right pathkeys do not match in
- mergejoin</quote> or <quote>outer pathkeys do not match
- mergeclauses</quote> planner errors in corner cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Repair <application>pg_upgrade</application>'s failure to
- preserve <structfield>relfrozenxid</structfield> for materialized
- views (Tom Lane, Andres Freund)
- </para>
-
- <para>
- This oversight could lead to data corruption in materialized views
- after an upgrade, manifesting as <quote>could not access status of
- transaction</quote> or <quote>found xmin from before
- relfrozenxid</quote> errors. The problem would be more likely to
- occur in seldom-refreshed materialized views, or ones that were
- maintained only with <command>REFRESH MATERIALIZED VIEW
- CONCURRENTLY</command>.
- </para>
-
- <para>
- If such corruption is observed, it can be repaired by refreshing the
- materialized view (without <literal>CONCURRENTLY</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect reporting of PL/Python function names in
- error <literal>CONTEXT</literal> stacks (Tom Lane)
- </para>
-
- <para>
- An error occurring within a nested PL/Python function call (that is,
- one reached via a SPI query from another PL/Python function) would
- result in a stack trace showing the inner function's name twice,
- rather than the expected results. Also, an error in a nested
- PL/Python <literal>DO</literal> block could result in a null pointer
- dereference crash on some platforms.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <filename>contrib/auto_explain</filename>'s
- <varname>log_min_duration</varname> setting to range up
- to <literal>INT_MAX</literal>, or about 24 days instead of 35 minutes
- (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-21">
- <title>Release 9.3.21</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2018-02-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.20.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.21</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.18,
- see <xref linkend="release-9-3-18"/>.
- </para>
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Ensure that all temporary files made
- by <application>pg_upgrade</application> are non-world-readable
- (Tom Lane, Noah Misch)
- </para>
-
- <para>
- <application>pg_upgrade</application> normally restricts its
- temporary files to be readable and writable only by the calling user.
- But the temporary file containing <literal>pg_dumpall -g</literal>
- output would be group- or world-readable, or even writable, if the
- user's <literal>umask</literal> setting allows. In typical usage on
- multi-user machines, the <literal>umask</literal> and/or the working
- directory's permissions would be tight enough to prevent problems;
- but there may be people using <application>pg_upgrade</application>
- in scenarios where this oversight would permit disclosure of database
- passwords to unfriendly eyes.
- (CVE-2018-1053)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix vacuuming of tuples that were updated while key-share locked
- (Andres Freund, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- In some cases <command>VACUUM</command> would fail to remove such
- tuples even though they are now dead, leading to assorted data
- corruption scenarios.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix inadequate buffer locking in some LSN fetches (Jacob Champion,
- Asim Praveen, Ashwin Agrawal)
- </para>
-
- <para>
- These errors could result in misbehavior under concurrent load.
- The potential consequences have not been characterized fully.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unnecessary failure in a query on an inheritance tree that
- occurs concurrently with some child table being removed from the tree
- by <command>ALTER TABLE NO INHERIT</command> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Repair failure with correlated sub-<literal>SELECT</literal>
- inside <literal>VALUES</literal> inside a <literal>LATERAL</literal>
- subquery (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>could not devise a query plan for the given query</quote>
- planner failure for some cases involving nested <literal>UNION
- ALL</literal> inside a lateral subquery (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>has_sequence_privilege()</function> to
- support <literal>WITH GRANT OPTION</literal> tests,
- as other privilege-testing functions do (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In databases using UTF8 encoding, ignore any XML declaration that
- asserts a different encoding (Pavel Stehule, Noah Misch)
- </para>
-
- <para>
- We always store XML strings in the database encoding, so allowing
- libxml to act on a declaration of another encoding gave wrong results.
- In encodings other than UTF8, we don't promise to support non-ASCII
- XML data anyway, so retain the previous behavior for bug compatibility.
- This change affects only <function>xpath()</function> and related
- functions; other XML code paths already acted this way.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide for forward compatibility with future minor protocol versions
- (Robert Haas, Badrul Chowdhury)
- </para>
-
- <para>
- Up to now, <productname>PostgreSQL</productname> servers simply
- rejected requests to use protocol versions newer than 3.0, so that
- there was no functional difference between the major and minor parts
- of the protocol version number. Allow clients to request versions 3.x
- without failing, sending back a message showing that the server only
- understands 3.0. This makes no difference at the moment, but
- back-patching this change should allow speedier introduction of future
- minor protocol upgrades.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent stack-overflow crashes when planning extremely deeply
- nested set operations
- (<literal>UNION</literal>/<literal>INTERSECT</literal>/<literal>EXCEPT</literal>)
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix null-pointer crashes for some types of LDAP URLs appearing
- in <filename>pg_hba.conf</filename> (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix sample <function>INSTR()</function> functions in the PL/pgSQL
- documentation (Yugo Nagata, Tom Lane)
- </para>
-
- <para>
- These functions are stated to
- be <trademark class="registered">Oracle</trademark> compatible, but
- they weren't exactly. In particular, there was a discrepancy in the
- interpretation of a negative third parameter: Oracle thinks that a
- negative value indicates the last place where the target substring can
- begin, whereas our functions took it as the last place where the
- target can end. Also, Oracle throws an error for a zero or negative
- fourth parameter, whereas our functions returned zero.
- </para>
-
- <para>
- The sample code has been adjusted to match Oracle's behavior more
- precisely. Users who have copied this code into their applications
- may wish to update their copies.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to make ACL (permissions),
- comment, and security label entries reliably identifiable in archive
- output formats (Tom Lane)
- </para>
-
- <para>
- The <quote>tag</quote> portion of an ACL archive entry was usually
- just the name of the associated object. Make it start with the object
- type instead, bringing ACLs into line with the convention already used
- for comment and security label archive entries. Also, fix the
- comment and security label entries for the whole database, if present,
- to make their tags start with <literal>DATABASE</literal> so that they
- also follow this convention. This prevents false matches in code that
- tries to identify large-object-related entries by seeing if the tag
- starts with <literal>LARGE OBJECT</literal>. That could have resulted
- in misclassifying entries as data rather than schema, with undesirable
- results in a schema-only or data-only dump.
- </para>
-
- <para>
- Note that this change has user-visible results in the output
- of <command>pg_restore --list</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>ecpg</application>, detect indicator arrays that do
- not have the correct length and report an error (David Rader)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid triggering a libc assertion
- in <filename>contrib/hstore</filename>, due to use
- of <function>memcpy()</function> with equal source and destination
- pointers (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide modern examples of how to auto-start Postgres on macOS
- (Tom Lane)
- </para>
-
- <para>
- The scripts in <filename>contrib/start-scripts/osx</filename> use
- infrastructure that's been deprecated for over a decade, and which no
- longer works at all in macOS releases of the last couple of years.
- Add a new subdirectory <filename>contrib/start-scripts/macos</filename>
- containing scripts that use the newer <application>launchd</application>
- infrastructure.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect selection of configuration-specific libraries for
- OpenSSL on Windows (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support linking to MinGW-built versions of libperl (Noah Misch)
- </para>
-
- <para>
- This allows building PL/Perl with some common Perl distributions for
- Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix MSVC build to test whether 32-bit libperl
- needs <literal>-D_USE_32BIT_TIME_T</literal> (Noah Misch)
- </para>
-
- <para>
- Available Perl distributions are inconsistent about what they expect,
- and lack any reliable means of reporting it, so resort to a build-time
- test on what the library being used actually does.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, install the crash dump handler earlier in postmaster
- startup (Takayuki Tsunakawa)
- </para>
-
- <para>
- This may allow collection of a core dump for some early-startup
- failures that did not produce a dump before.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, avoid encoding-conversion-related crashes when emitting
- messages very early in postmaster startup (Takayuki Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use our existing Motorola 68K spinlock code on OpenBSD as
- well as NetBSD (David Carlier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for spinlocks on Motorola 88K (David Carlier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2018c for DST law changes in Brazil, Sao Tome and Principe,
- plus historical corrections for Bolivia, Japan, and South Sudan.
- The <literal>US/Pacific-New</literal> zone has been removed (it was
- only an alias for <literal>America/Los_Angeles</literal> anyway).
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-20">
- <title>Release 9.3.20</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-11-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.19.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.20</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.18,
- see <xref linkend="release-9-3-18"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix crash due to rowtype mismatch
- in <function>json{b}_populate_recordset()</function>
- (Michael Paquier, Tom Lane)
- </para>
-
- <para>
- These functions used the result rowtype specified in the <literal>FROM
- ... AS</literal> clause without checking that it matched the actual
- rowtype of the supplied tuple value. If it didn't, that would usually
- result in a crash, though disclosure of server memory contents seems
- possible as well.
- (CVE-2017-15098)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix sample server-start scripts to become <literal>$PGUSER</literal>
- before opening <literal>$PGLOG</literal> (Noah Misch)
- </para>
-
- <para>
- Previously, the postmaster log file was opened while still running as
- root. The database owner could therefore mount an attack against
- another system user by making <literal>$PGLOG</literal> be a symbolic
- link to some other file, which would then become corrupted by appending
- log messages.
- </para>
-
- <para>
- By default, these scripts are not installed anywhere. Users who have
- made use of them will need to manually recopy them, or apply the same
- changes to their modified versions. If the
- existing <literal>$PGLOG</literal> file is root-owned, it will need to
- be removed or renamed out of the way before restarting the server with
- the corrected script.
- (CVE-2017-12172)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly reject attempts to convert infinite float values to
- type <type>numeric</type> (Tom Lane, KaiGai Kohei)
- </para>
-
- <para>
- Previously the behavior was platform-dependent.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner-case crashes when columns have been added to the end of a
- view (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Record proper dependencies when a view or rule
- contains <structname>FieldSelect</structname>
- or <structname>FieldStore</structname> expression nodes (Tom Lane)
- </para>
-
- <para>
- Lack of these dependencies could allow a column or data
- type <command>DROP</command> to go through when it ought to fail,
- thereby causing later uses of the view or rule to get errors.
- This patch does not do anything to protect existing views/rules,
- only ones created in the future.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly detect hashability of range data types (Tom Lane)
- </para>
-
- <para>
- The planner mistakenly assumed that any range type could be hashed
- for use in hash joins or hash aggregation, but actually it must check
- whether the range's subtype has hash support. This does not affect any
- of the built-in range types, since they're all hashable anyway.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-probability loss of <command>NOTIFY</command> messages due to
- XID wraparound (Marko Tiikkaja, Tom Lane)
- </para>
-
- <para>
- If a session executed no queries, but merely listened for
- notifications, for more than 2 billion transactions, it started to miss
- some notifications from concurrently-committing transactions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent low-probability crash in processing of nested trigger firings
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly restore the umask setting when file creation fails
- in <command>COPY</command> or <function>lo_export()</function>
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Give a better error message for duplicate column names
- in <command>ANALYZE</command> (Nathan Bossart)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix mis-parsing of the last line in a
- non-newline-terminated <filename>pg_hba.conf</filename> file
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application> to not require user's home
- directory to exist (Tom Lane)
- </para>
-
- <para>
- In v10, failure to find the home directory while trying to
- read <filename>~/.pgpass</filename> was treated as a hard error,
- but it should just cause that file to not be found. Both v10 and
- previous release branches made the same mistake when
- reading <filename>~/.pg_service.conf</filename>, though this was less
- obvious since that file is not sought unless a service name is
- specified.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>libpq</application> to guard against integer
- overflow in the row count of a <structname>PGresult</structname>
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s handling of out-of-scope cursor
- declarations with pointer or array variables (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make ecpglib's Informix-compatibility mode ignore fractional digits in
- integer input strings, as expected (Gao Zengqi, Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync our copy of the timezone library with IANA release tzcode2017c
- (Tom Lane)
- </para>
-
- <para>
- This fixes various issues; the only one likely to be user-visible
- is that the default DST rules for a POSIX-style zone name, if
- no <filename>posixrules</filename> file exists in the timezone data
- directory, now match current US law rather than what it was a dozen
- years ago.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application>
- release 2017c for DST law changes in Fiji, Namibia, Northern Cyprus,
- Sudan, Tonga, and Turks &amp; Caicos Islands, plus historical
- corrections for Alaska, Apia, Burma, Calcutta, Detroit, Ireland,
- Namibia, and Pago Pago.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-19">
- <title>Release 9.3.19</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-08-31</para>
- </formalpara>
-
- <para>
- This release contains a small number of fixes from 9.3.18.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.19</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.18,
- see <xref linkend="release-9-3-18"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Show foreign tables
- in <structname>information_schema</structname>.<structname>table_privileges</structname>
- view (Peter Eisentraut)
- </para>
-
- <para>
- All other relevant <structname>information_schema</structname> views include
- foreign tables, but this one ignored them.
- </para>
-
- <para>
- Since this view definition is installed by <application>initdb</application>,
- merely upgrading will not fix the problem. If you need to fix this
- in an existing installation, you can, as a superuser, do this
- in <application>psql</application>:
-<programlisting>
-SET search_path TO information_schema;
-CREATE OR REPLACE VIEW table_privileges AS
- SELECT CAST(u_grantor.rolname AS sql_identifier) AS grantor,
- CAST(grantee.rolname AS sql_identifier) AS grantee,
- CAST(current_database() AS sql_identifier) AS table_catalog,
- CAST(nc.nspname AS sql_identifier) AS table_schema,
- CAST(c.relname AS sql_identifier) AS table_name,
- CAST(c.prtype AS character_data) AS privilege_type,
- CAST(
- CASE WHEN
- -- object owner always has grant options
- pg_has_role(grantee.oid, c.relowner, 'USAGE')
- OR c.grantable
- THEN 'YES' ELSE 'NO' END AS yes_or_no) AS is_grantable,
- CAST(CASE WHEN c.prtype = 'SELECT' THEN 'YES' ELSE 'NO' END AS yes_or_no) AS with_hierarchy
-
- FROM (
- SELECT oid, relname, relnamespace, relkind, relowner, (aclexplode(coalesce(relacl, acldefault('r', relowner)))).* FROM pg_class
- ) AS c (oid, relname, relnamespace, relkind, relowner, grantor, grantee, prtype, grantable),
- pg_namespace nc,
- pg_authid u_grantor,
- (
- SELECT oid, rolname FROM pg_authid
- UNION ALL
- SELECT 0::oid, 'PUBLIC'
- ) AS grantee (oid, rolname)
-
- WHERE c.relnamespace = nc.oid
- AND c.relkind IN ('r', 'v', 'f')
- AND c.grantee = grantee.oid
- AND c.grantor = u_grantor.oid
- AND c.prtype IN ('INSERT', 'SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'REFERENCES', 'TRIGGER')
- AND (pg_has_role(u_grantor.oid, 'USAGE')
- OR pg_has_role(grantee.oid, 'USAGE')
- OR grantee.rolname = 'PUBLIC');
-</programlisting>
- This must be repeated in each database to be fixed,
- including <literal>template0</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Clean up handling of a fatal exit (e.g., due to receipt
- of <systemitem>SIGTERM</systemitem>) that occurs while trying to execute
- a <command>ROLLBACK</command> of a failed transaction (Tom Lane)
- </para>
-
- <para>
- This situation could result in an assertion failure. In production
- builds, the exit would still occur, but it would log an unexpected
- message about <quote>cannot drop active portal</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove assertion that could trigger during a fatal exit (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly identify columns that are of a range type or domain type over
- a composite type or domain type being searched for (Tom Lane)
- </para>
-
- <para>
- Certain <command>ALTER</command> commands that change the definition of a
- composite type or domain type are supposed to fail if there are any
- stored values of that type in the database, because they lack the
- infrastructure needed to update or check such values. Previously,
- these checks could miss relevant values that are wrapped inside range
- types or sub-domains, possibly allowing the database to become
- inconsistent.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash in <application>pg_restore</application> when using parallel mode and
- using a list file to select a subset of items to restore
- (Fabr&iacute;zio de Royes Mello)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change <application>ecpg</application>'s parser to allow <literal>RETURNING</literal>
- clauses without attached C variables (Michael Meskes)
- </para>
-
- <para>
- This allows <application>ecpg</application> programs to contain SQL constructs
- that use <literal>RETURNING</literal> internally (for example, inside a CTE)
- rather than using it to define values to be returned to the client.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve selection of compiler flags for PL/Perl on Windows (Tom Lane)
- </para>
-
- <para>
- This fix avoids possible crashes of PL/Perl due to inconsistent
- assumptions about the width of <type>time_t</type> values.
- A side-effect that may be visible to extension developers is
- that <literal>_USE_32BIT_TIME_T</literal> is no longer defined globally
- in <productname>PostgreSQL</productname> Windows builds. This is not expected
- to cause problems, because type <type>time_t</type> is not used
- in any <productname>PostgreSQL</productname> API definitions.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-18">
- <title>Release 9.3.18</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-08-10</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.17.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.18</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you use foreign data servers that make use of user
- passwords for authentication, see the first changelog entry below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.16,
- see <xref linkend="release-9-3-16"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Further restrict visibility
- of <structname>pg_user_mappings</structname>.<structfield>umoptions</structfield>, to
- protect passwords stored as user mapping options
- (Noah Misch)
- </para>
-
- <para>
- The fix for CVE-2017-7486 was incorrect: it allowed a user
- to see the options in her own user mapping, even if she did not
- have <literal>USAGE</literal> permission on the associated foreign server.
- Such options might include a password that had been provided by the
- server owner rather than the user herself.
- Since <structname>information_schema.user_mapping_options</structname> does not
- show the options in such cases, <structname>pg_user_mappings</structname>
- should not either.
- (CVE-2017-7547)
- </para>
-
- <para>
- By itself, this patch will only fix the behavior in newly initdb'd
- databases. If you wish to apply this change in an existing database,
- you will need to do the following:
- </para>
-
- <procedure>
- <step>
- <para>
- Restart the postmaster after adding <literal>allow_system_table_mods
- = true</literal> to <filename>postgresql.conf</filename>. (In versions
- supporting <command>ALTER SYSTEM</command>, you can use that to make the
- configuration change, but you'll still need a restart.)
- </para>
- </step>
-
- <step>
- <para>
- In <emphasis>each</emphasis> database of the cluster,
- run the following commands as superuser:
-<programlisting>
-SET search_path = pg_catalog;
-CREATE OR REPLACE VIEW pg_user_mappings AS
- SELECT
- U.oid AS umid,
- S.oid AS srvid,
- S.srvname AS srvname,
- U.umuser AS umuser,
- CASE WHEN U.umuser = 0 THEN
- 'public'
- ELSE
- A.rolname
- END AS usename,
- CASE WHEN (U.umuser &lt;&gt; 0 AND A.rolname = current_user
- AND (pg_has_role(S.srvowner, 'USAGE')
- OR has_server_privilege(S.oid, 'USAGE')))
- OR (U.umuser = 0 AND pg_has_role(S.srvowner, 'USAGE'))
- OR (SELECT rolsuper FROM pg_authid WHERE rolname = current_user)
- THEN U.umoptions
- ELSE NULL END AS umoptions
- FROM pg_user_mapping U
- LEFT JOIN pg_authid A ON (A.oid = U.umuser) JOIN
- pg_foreign_server S ON (U.umserver = S.oid);
-</programlisting>
- </para>
- </step>
-
- <step>
- <para>
- Do not forget to include the <literal>template0</literal>
- and <literal>template1</literal> databases, or the vulnerability will still
- exist in databases you create later. To fix <literal>template0</literal>,
- you'll need to temporarily make it accept connections.
- In <productname>PostgreSQL</productname> 9.5 and later, you can use
-<programlisting>
-ALTER DATABASE template0 WITH ALLOW_CONNECTIONS true;
-</programlisting>
- and then after fixing <literal>template0</literal>, undo that with
-<programlisting>
-ALTER DATABASE template0 WITH ALLOW_CONNECTIONS false;
-</programlisting>
- In prior versions, instead use
-<programlisting>
-UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
-UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
-</programlisting>
- </para>
- </step>
-
- <step>
- <para>
- Finally, remove the <literal>allow_system_table_mods</literal> configuration
- setting, and again restart the postmaster.
- </para>
- </step>
- </procedure>
- </listitem>
-
- <listitem>
- <para>
- Disallow empty passwords in all password-based authentication methods
- (Heikki Linnakangas)
- </para>
-
- <para>
- <application>libpq</application> ignores empty password specifications, and does
- not transmit them to the server. So, if a user's password has been
- set to the empty string, it's impossible to log in with that password
- via <application>psql</application> or other <application>libpq</application>-based
- clients. An administrator might therefore believe that setting the
- password to empty is equivalent to disabling password login.
- However, with a modified or non-<application>libpq</application>-based client,
- logging in could be possible, depending on which authentication
- method is configured. In particular the most common
- method, <literal>md5</literal>, accepted empty passwords.
- Change the server to reject empty passwords in all cases.
- (CVE-2017-7546)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix concurrent locking of tuple update chains (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- If several sessions concurrently lock a tuple update chain with
- nonconflicting lock modes using an old snapshot, and they all
- succeed, it was possible for some of them to nonetheless fail (and
- conclude there is no live tuple version) due to a race condition.
- This had consequences such as foreign-key checks failing to see a
- tuple that definitely exists but is being updated concurrently.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential data corruption when freezing a tuple whose XMAX is a
- multixact with exactly one still-interesting member (Teodor Sigaev)
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, retry process creation if we fail to reserve the address
- range for our shared memory in the new process (Tom Lane, Amit
- Kapila)
- </para>
-
- <para>
- This is expected to fix infrequent child-process-launch failures that
- are probably due to interference from antivirus products.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-probability corruption of shared predicate-lock hash table
- in Windows builds (Thomas Munro, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid logging clean closure of an SSL connection as though
- it were a connection reset (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent sending SSL session tickets to clients (Tom Lane)
- </para>
-
- <para>
- This fix prevents reconnection failures with ticket-aware client-side
- SSL code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix code for setting <xref linkend="guc-tcp-keepalives-idle"/> on
- Solaris (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix statistics collector to honor inquiry messages issued just after
- a postmaster shutdown and immediate restart (Tom Lane)
- </para>
-
- <para>
- Statistics inquiries issued within half a second of the previous
- postmaster shutdown were effectively ignored.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that the statistics collector's receive buffer size is at
- least 100KB (Tom Lane)
- </para>
-
- <para>
- This reduces the risk of dropped statistics data on older platforms
- whose default receive buffer size is less than that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible creation of an invalid WAL segment when a standby is
- promoted just after it processes an <literal>XLOG_SWITCH</literal> WAL
- record (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <systemitem>SIGHUP</systemitem> and <systemitem>SIGUSR1</systemitem> handling in
- walsender processes (Petr Jelinek, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unnecessarily slow restarts of <application>walreceiver</application>
- processes due to race condition in postmaster (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix cases where an <command>INSERT</command> or <command>UPDATE</command> assigns
- to more than one element of a column that is of domain-over-array
- type (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow window functions to be used in sub-<literal>SELECT</literal>s that
- are within the arguments of an aggregate function (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Move autogenerated array types out of the way during
- <command>ALTER ... RENAME</command> (Vik Fearing)
- </para>
-
- <para>
- Previously, we would rename a conflicting autogenerated array type
- out of the way during <command>CREATE</command>; this fix extends that
- behavior to renaming operations.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <command>ALTER USER ... SET</command> accepts all the syntax
- variants that <command>ALTER ROLE ... SET</command> does (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly update dependency info when changing a datatype I/O
- function's argument or return type from <type>opaque</type> to the
- correct type (Heikki Linnakangas)
- </para>
-
- <para>
- <command>CREATE TYPE</command> updates I/O functions declared in this
- long-obsolete style, but it forgot to record a dependency on the
- type, allowing a subsequent <command>DROP TYPE</command> to leave broken
- function definitions behind.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce memory usage when <command>ANALYZE</command> processes
- a <type>tsvector</type> column (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unnecessary precision loss and sloppy rounding when multiplying
- or dividing <type>money</type> values by integers or floats (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Tighten checks for whitespace in functions that parse identifiers,
- such as <function>regprocedurein()</function> (Tom Lane)
- </para>
-
- <para>
- Depending on the prevailing locale, these functions could
- misinterpret fragments of multibyte characters as whitespace.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use relevant <literal>#define</literal> symbols from Perl while
- compiling <application>PL/Perl</application> (Ashutosh Sharma, Tom Lane)
- </para>
-
- <para>
- This avoids portability problems, typically manifesting as
- a <quote>handshake</quote> mismatch during library load, when working with
- recent Perl versions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>libpq</application>, reset GSS/SASL and SSPI authentication
- state properly after a failed connection attempt (Michael Paquier)
- </para>
-
- <para>
- Failure to do this meant that when falling back from SSL to non-SSL
- connections, a GSS/SASL failure in the SSL attempt would always cause
- the non-SSL attempt to fail. SSPI did not fail, but it leaked memory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>, fix failure when <command>COPY FROM STDIN</command>
- is ended with a keyboard EOF signal and then another <command>COPY
- FROM STDIN</command> is attempted (Thomas Munro)
- </para>
-
- <para>
- This misbehavior was observed on BSD-derived platforms (including
- macOS), but not on most others.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> and <application>pg_restore</application> to
- emit <command>REFRESH MATERIALIZED VIEW</command> commands last (Tom Lane)
- </para>
-
- <para>
- This prevents errors during dump/restore when a materialized view
- refers to tables owned by a different user.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> with the <option>--clean</option> option to
- drop event triggers as expected (Tom Lane)
- </para>
-
- <para>
- It also now correctly assigns ownership of event triggers; before,
- they were restored as being owned by the superuser running the
- restore script.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to not emit invalid SQL for an empty
- operator class (Daniel Gustafsson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> output to stdout on Windows (Kuntal Ghosh)
- </para>
-
- <para>
- A compressed plain-text dump written to stdout would contain corrupt
- data due to failure to put the file descriptor into binary mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pg_get_ruledef()</function> to print correct output for
- the <literal>ON SELECT</literal> rule of a view whose columns have been
- renamed (Tom Lane)
- </para>
-
- <para>
- In some corner cases, <application>pg_dump</application> relies
- on <function>pg_get_ruledef()</function> to dump views, so that this error
- could result in dump/reload failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of outer joins with empty constraints, such as the result
- of a <literal>NATURAL LEFT JOIN</literal> with no common columns (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of function expressions in the <literal>FROM</literal> clause in
- cases where the expression does not deparse into something that looks
- like a function call (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_basebackup</application> output to stdout on Windows
- (Haribabu Kommi)
- </para>
-
- <para>
- A backup written to stdout would contain corrupt data due to failure
- to put the file descriptor into binary mode.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to ensure that the ending WAL record
- does not have <xref linkend="guc-wal-level"/> = <literal>minimum</literal>
- (Bruce Momjian)
- </para>
-
- <para>
- This condition could prevent upgraded standby servers from
- reconnecting.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>postgres_fdw</filename>, re-establish connections to remote
- servers after <command>ALTER SERVER</command> or <command>ALTER USER
- MAPPING</command> commands (Kyotaro Horiguchi)
- </para>
-
- <para>
- This ensures that option changes affecting connection parameters will
- be applied promptly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>postgres_fdw</filename>, allow cancellation of remote
- transaction control commands (Robert Haas, Rafia Sabih)
- </para>
-
- <para>
- This change allows us to quickly escape a wait for an unresponsive
- remote server in many more cases than previously.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Always use <option>-fPIC</option>, not <option>-fpic</option>, when building
- shared libraries with gcc (Tom Lane)
- </para>
-
- <para>
- This supports larger extension libraries on platforms where it makes
- a difference.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix unescaped-braces issue in our build scripts for Microsoft MSVC,
- to avoid a warning or error from recent Perl versions (Andrew
- Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In MSVC builds, handle the case where the <application>OpenSSL</application>
- library is not within a <filename>VC</filename> subdirectory (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In MSVC builds, add proper include path for <application>libxml2</application>
- header files (Andrew Dunstan)
- </para>
-
- <para>
- This fixes a former need to move things around in standard Windows
- installations of <application>libxml2</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In MSVC builds, recognize a Tcl library that is
- named <filename>tcl86.lib</filename> (Noah Misch)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-17">
- <title>Release 9.3.17</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-05-11</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.16.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.17</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you use foreign data servers that make use of user
- passwords for authentication, see the first changelog entry below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.16,
- see <xref linkend="release-9-3-16"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Restrict visibility
- of <structname>pg_user_mappings</structname>.<structfield>umoptions</structfield>, to
- protect passwords stored as user mapping options
- (Michael Paquier, Feike Steenbergen)
- </para>
-
- <para>
- The previous coding allowed the owner of a foreign server object,
- or anyone he has granted server <literal>USAGE</literal> permission to,
- to see the options for all user mappings associated with that server.
- This might well include passwords for other users.
- Adjust the view definition to match the behavior of
- <structname>information_schema.user_mapping_options</structname>, namely that
- these options are visible to the user being mapped, or if the mapping
- is for <literal>PUBLIC</literal> and the current user is the server
- owner, or if the current user is a superuser.
- (CVE-2017-7486)
- </para>
-
- <para>
- By itself, this patch will only fix the behavior in newly initdb'd
- databases. If you wish to apply this change in an existing database,
- follow the corrected procedure shown in the changelog entry for
- CVE-2017-7547, in <xref linkend="release-9-3-18"/>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent exposure of statistical information via leaky operators
- (Peter Eisentraut)
- </para>
-
- <para>
- Some selectivity estimation functions in the planner will apply
- user-defined operators to values obtained
- from <structname>pg_statistic</structname>, such as most common values and
- histogram entries. This occurs before table permissions are checked,
- so a nefarious user could exploit the behavior to obtain these values
- for table columns he does not have permission to read. To fix,
- fall back to a default estimate if the operator's implementation
- function is not certified leak-proof and the calling user does not have
- permission to read the table column whose statistics are needed.
- At least one of these criteria is satisfied in most cases in practice.
- (CVE-2017-7484)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Restore <application>libpq</application>'s recognition of
- the <envar>PGREQUIRESSL</envar> environment variable (Daniel Gustafsson)
- </para>
-
- <para>
- Processing of this environment variable was unintentionally dropped
- in <productname>PostgreSQL</productname> 9.3, but its documentation remained.
- This creates a security hazard, since users might be relying on the
- environment variable to force SSL-encrypted connections, but that
- would no longer be guaranteed. Restore handling of the variable,
- but give it lower priority than <envar>PGSSLMODE</envar>, to avoid
- breaking configurations that work correctly with post-9.3 code.
- (CVE-2017-7485)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible corruption of <quote>init forks</quote> of unlogged indexes
- (Robert Haas, Michael Paquier)
- </para>
-
- <para>
- This could result in an unlogged index being set to an invalid state
- after a crash and restart. Such a problem would persist until the
- index was dropped and rebuilt.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect reconstruction of <structname>pg_subtrans</structname> entries
- when a standby server replays a prepared but uncommitted two-phase
- transaction (Tom Lane)
- </para>
-
- <para>
- In most cases this turned out to have no visible ill effects, but in
- corner cases it could result in circular references
- in <structname>pg_subtrans</structname>, potentially causing infinite loops
- in queries that examine rows modified by the two-phase transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure parsing of queries in extension scripts sees the results of
- immediately-preceding DDL (Julien Rouhaud, Tom Lane)
- </para>
-
- <para>
- Due to lack of a cache flush step between commands in an extension
- script file, non-utility queries might not see the effects of an
- immediately preceding catalog change, such as <command>ALTER TABLE
- ... RENAME</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Skip tablespace privilege checks when <command>ALTER TABLE ... ALTER
- COLUMN TYPE</command> rebuilds an existing index (Noah Misch)
- </para>
-
- <para>
- The command failed if the calling user did not currently have
- <literal>CREATE</literal> privilege for the tablespace containing the index.
- That behavior seems unhelpful, so skip the check, allowing the
- index to be rebuilt where it is.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ALTER TABLE ... VALIDATE CONSTRAINT</command> to not recurse
- to child tables when the constraint is marked <literal>NO INHERIT</literal>
- (Amit Langote)
- </para>
-
- <para>
- This fix prevents unwanted <quote>constraint does not exist</quote> failures
- when no matching constraint is present in the child tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>VACUUM</command> to account properly for pages that could not
- be scanned due to conflicting page pins (Andrew Gierth)
- </para>
-
- <para>
- This tended to lead to underestimation of the number of tuples in
- the table. In the worst case of a small heavily-contended
- table, <command>VACUUM</command> could incorrectly report that the table
- contained no tuples, leading to very bad planning choices.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that bulk-tuple-transfer loops within a hash join are
- interruptible by query cancel requests (Tom Lane, Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>cursor_to_xml()</function> to produce valid output
- with <replaceable>tableforest</replaceable> = false
- (Thomas Munro, Peter Eisentraut)
- </para>
-
- <para>
- Previously it failed to produce a wrapping <literal>&lt;table&gt;</literal>
- element.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of <structname>pg_timezone_names</structname> view
- (Tom Lane, David Rowley)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix sloppy handling of corner-case errors from <function>lseek()</function>
- and <function>close()</function> (Tom Lane)
- </para>
-
- <para>
- Neither of these system calls are likely to fail in typical situations,
- but if they did, <filename>fd.c</filename> could get quite confused.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect check for whether postmaster is running as a Windows
- service (Michael Paquier)
- </para>
-
- <para>
- This could result in attempting to write to the event log when that
- isn't accessible, so that no logging happens at all.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application> to support <command>COMMIT PREPARED</command>
- and <command>ROLLBACK PREPARED</command> (Masahiko Sawada)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix a double-free error when processing dollar-quoted string literals
- in <application>ecpg</application> (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application>, fix incorrect schema and owner marking for
- comments and security labels of some types of database objects
- (Giuseppe Broccolo, Tom Lane)
- </para>
-
- <para>
- In simple cases this caused no ill effects; but for example, a
- schema-selective restore might omit comments it should include, because
- they were not marked as belonging to the schema of their associated
- object.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid emitting an invalid list file in <literal>pg_restore -l</literal>
- when SQL object names contain newlines (Tom Lane)
- </para>
-
- <para>
- Replace newlines by spaces, which is sufficient to make the output
- valid for <literal>pg_restore -L</literal>'s purposes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to transfer comments and security labels
- attached to <quote>large objects</quote> (blobs) (Stephen Frost)
- </para>
-
- <para>
- Previously, blobs were correctly transferred to the new database, but
- any comments or security labels attached to them were lost.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve error handling
- in <filename>contrib/adminpack</filename>'s <function>pg_file_write()</function>
- function (Noah Misch)
- </para>
-
- <para>
- Notably, it failed to detect errors reported
- by <function>fclose()</function>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/dblink</filename>, avoid leaking the previous unnamed
- connection when establishing a new unnamed connection (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/pg_trgm</filename>'s extraction of trigrams from regular
- expressions (Tom Lane)
- </para>
-
- <para>
- In some cases it would produce a broken data structure that could never
- match anything, leading to GIN or GiST indexscans that use a trigram
- index not finding any matches to the regular expression.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/postgres_fdw</filename>,
- transmit query cancellation requests to the remote server
- (Michael Paquier, Etsuro Fujita)
- </para>
-
- <para>
- Previously, a local query cancellation request did not cause an
- already-sent remote query to terminate early. This is a back-patch
- of work originally done for 9.6.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support OpenSSL 1.1.0 (Heikki Linnakangas, Andreas Karlsson, Tom Lane)
- </para>
-
- <para>
- This is a back-patch of work previously done in newer branches;
- it's needed since many platforms are adopting newer OpenSSL versions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support Tcl 8.6 in MSVC builds (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync our copy of the timezone library with IANA release tzcode2017b
- (Tom Lane)
- </para>
-
- <para>
- This fixes a bug affecting some DST transitions in January 2038.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2017b
- for DST law changes in Chile, Haiti, and Mongolia, plus historical
- corrections for Ecuador, Kazakhstan, Liberia, and Spain.
- Switch to numeric abbreviations for numerous time zones in South
- America, the Pacific and Indian oceans, and some Asian and Middle
- Eastern countries.
- </para>
-
- <para>
- The IANA time zone database previously provided textual abbreviations
- for all time zones, sometimes making up abbreviations that have little
- or no currency among the local population. They are in process of
- reversing that policy in favor of using numeric UTC offsets in zones
- where there is no evidence of real-world use of an English
- abbreviation. At least for the time being, <productname>PostgreSQL</productname>
- will continue to accept such removed abbreviations for timestamp input.
- But they will not be shown in the <structname>pg_timezone_names</structname>
- view nor used for output.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use correct daylight-savings rules for POSIX-style time zone names
- in MSVC builds (David Rowley)
- </para>
-
- <para>
- The Microsoft MSVC build scripts neglected to install
- the <filename>posixrules</filename> file in the timezone directory tree.
- This resulted in the timezone code falling back to its built-in
- rule about what DST behavior to assume for a POSIX-style time zone
- name. For historical reasons that still corresponds to the DST rules
- the USA was using before 2007 (i.e., change on first Sunday in April
- and last Sunday in October). With this fix, a POSIX-style zone name
- will use the current and historical DST transition dates of
- the <literal>US/Eastern</literal> zone. If you don't want that, remove
- the <filename>posixrules</filename> file, or replace it with a copy of some
- other zone file (see <xref linkend="datatype-timezones"/>). Note that
- due to caching, you may need to restart the server to get such changes
- to take effect.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-16">
- <title>Release 9.3.16</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2017-02-09</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.15.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.16</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if your installation has been affected by the bug described in
- the first changelog entry below, then after updating you may need
- to take action to repair corrupted indexes.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.15,
- see <xref linkend="release-9-3-15"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix a race condition that could cause indexes built
- with <command>CREATE INDEX CONCURRENTLY</command> to be corrupt
- (Pavan Deolasee, Tom Lane)
- </para>
-
- <para>
- If <command>CREATE INDEX CONCURRENTLY</command> was used to build an index
- that depends on a column not previously indexed, then rows
- updated by transactions that ran concurrently with
- the <command>CREATE INDEX</command> command could have received incorrect
- index entries. If you suspect this may have happened, the most
- reliable solution is to rebuild affected indexes after installing
- this update.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Unconditionally WAL-log creation of the <quote>init fork</quote> for an
- unlogged table (Michael Paquier)
- </para>
-
- <para>
- Previously, this was skipped when <xref linkend="guc-wal-level"/>
- = <literal>minimal</literal>, but actually it's necessary even in that case
- to ensure that the unlogged table is properly reset to empty after a
- crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- If the stats collector dies during hot standby, restart it (Takayuki
- Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that hot standby feedback works correctly when it's enabled at
- standby server start (Ants Aasma, Craig Ringer)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check for interrupts while hot standby is waiting for a conflicting
- query (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid constantly respawning the autovacuum launcher in a corner case
- (Amit Khandekar)
- </para>
-
- <para>
- This fix avoids problems when autovacuum is nominally off and there
- are some tables that require freezing, but all such tables are
- already being processed by autovacuum workers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix check for when an extension member object can be dropped (Tom Lane)
- </para>
-
- <para>
- Extension upgrade scripts should be able to drop member objects,
- but this was disallowed for serial-column sequences, and possibly
- other cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make sure <command>ALTER TABLE</command> preserves index tablespace
- assignments when rebuilding indexes (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- Previously, non-default settings
- of <xref linkend="guc-default-tablespace"/> could result in broken
- indexes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent dropping a foreign-key constraint if there are pending
- trigger events for the referenced relation (Tom Lane)
- </para>
-
- <para>
- This avoids <quote>could not find trigger <replaceable>NNN</replaceable></quote>
- or <quote>relation <replaceable>NNN</replaceable> has no triggers</quote> errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix processing of OID column when a table with OIDs is associated to
- a parent with OIDs via <command>ALTER TABLE ... INHERIT</command> (Amit
- Langote)
- </para>
-
- <para>
- The OID column should be treated the same as regular user columns in
- this case, but it wasn't, leading to odd behavior in later
- inheritance changes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Report correct object identity during <command>ALTER TEXT SEARCH
- CONFIGURATION</command> (Artur Zakirov)
- </para>
-
- <para>
- The wrong catalog OID was reported to extensions such as logical
- decoding.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check for serializability conflicts before reporting
- constraint-violation failures (Thomas Munro)
- </para>
-
- <para>
- When using serializable transaction isolation, it is desirable
- that any error due to concurrent transactions should manifest
- as a serialization failure, thereby cueing the application that
- a retry might succeed. Unfortunately, this does not reliably
- happen for duplicate-key failures caused by concurrent insertions.
- This change ensures that such an error will be reported as a
- serialization error if the application explicitly checked for
- the presence of a conflicting key (and did not find it) earlier
- in the transaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent multicolumn expansion of <replaceable>foo</replaceable><literal>.*</literal> in
- an <command>UPDATE</command> source expression (Tom Lane)
- </para>
-
- <para>
- This led to <quote>UPDATE target count mismatch --- internal
- error</quote>. Now the syntax is understood as a whole-row variable,
- as it would be in other contexts.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that column typmods are determined accurately for
- multi-row <literal>VALUES</literal> constructs (Tom Lane)
- </para>
-
- <para>
- This fixes problems occurring when the first value in a column has a
- determinable typmod (e.g., length for a <type>varchar</type> value) but
- later values don't share the same limit.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Throw error for an unfinished Unicode surrogate pair at the end of a
- Unicode string (Tom Lane)
- </para>
-
- <para>
- Normally, a Unicode surrogate leading character must be followed by a
- Unicode surrogate trailing character, but the check for this was
- missed if the leading character was the last character in a Unicode
- string literal (<literal>U&amp;'...'</literal>) or Unicode identifier
- (<literal>U&amp;"..."</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that a purely negative text search query, such
- as <literal>!foo</literal>, matches empty <type>tsvector</type>s (Tom Dunstan)
- </para>
-
- <para>
- Such matches were found by GIN index searches, but not by sequential
- scans or GiST index searches.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash when <function>ts_rewrite()</function> replaces a non-top-level
- subtree with an empty query (Artur Zakirov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix performance problems in <function>ts_rewrite()</function> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>ts_rewrite()</function>'s handling of nested NOT operators
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>array_fill()</function> to handle empty arrays properly (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix one-byte buffer overrun in <function>quote_literal_cstr()</function>
- (Heikki Linnakangas)
- </para>
-
- <para>
- The overrun occurred only if the input consisted entirely of single
- quotes and/or backslashes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent multiple calls of <function>pg_start_backup()</function>
- and <function>pg_stop_backup()</function> from running concurrently (Michael
- Paquier)
- </para>
-
- <para>
- This avoids an assertion failure, and possibly worse things, if
- someone tries to run these functions in parallel.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid discarding <type>interval</type>-to-<type>interval</type> casts
- that aren't really no-ops (Tom Lane)
- </para>
-
- <para>
- In some cases, a cast that should result in zeroing out
- low-order <type>interval</type> fields was mistakenly deemed to be a
- no-op and discarded. An example is that casting from <type>INTERVAL
- MONTH</type> to <type>INTERVAL YEAR</type> failed to clear the months field.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that cached plans are invalidated by changes in foreign-table
- options (Amit Langote, Etsuro Fujita, Ashutosh Bapat)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to dump user-defined casts and transforms
- that use built-in functions (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible <application>pg_basebackup</application> failure on standby
- server when including WAL files (Amit Kapila, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that the Python exception objects we create for PL/Python are
- properly reference-counted (Rafa de la Torre, Tom Lane)
- </para>
-
- <para>
- This avoids failures if the objects are used after a Python garbage
- collection cycle has occurred.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix PL/Tcl to support triggers on tables that have <literal>.tupno</literal>
- as a column name (Tom Lane)
- </para>
-
- <para>
- This matches the (previously undocumented) behavior of
- PL/Tcl's <command>spi_exec</command> and <command>spi_execp</command> commands,
- namely that a magic <literal>.tupno</literal> column is inserted only if
- there isn't a real column named that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow DOS-style line endings in <filename>~/.pgpass</filename> files,
- even on Unix (Vik Fearing)
- </para>
-
- <para>
- This change simplifies use of the same password file across Unix and
- Windows machines.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix one-byte buffer overrun if <application>ecpg</application> is given a file
- name that ends with a dot (Takayuki Tsunakawa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s tab completion for <command>ALTER DEFAULT
- PRIVILEGES</command> (Gilles Darold, Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>, treat an empty or all-blank setting of
- the <envar>PAGER</envar> environment variable as meaning <quote>no
- pager</quote> (Tom Lane)
- </para>
-
- <para>
- Previously, such a setting caused output intended for the pager to
- vanish entirely.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <filename>contrib/dblink</filename>'s reporting of
- low-level <application>libpq</application> errors, such as out-of-memory
- (Joe Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Teach <filename>contrib/dblink</filename> to ignore irrelevant server options
- when it uses a <filename>contrib/postgres_fdw</filename> foreign server as
- the source of connection options (Corey Huinker)
- </para>
-
- <para>
- Previously, if the foreign server object had options that were not
- also <application>libpq</application> connection options, an error occurred.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, ensure that environment variable changes are propagated
- to DLLs built with debug options (Christian Ullrich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Sync our copy of the timezone library with IANA release tzcode2016j
- (Tom Lane)
- </para>
-
- <para>
- This fixes various issues, most notably that timezone data
- installation failed if the target directory didn't support hard
- links.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016j
- for DST law changes in northern Cyprus (adding a new zone
- Asia/Famagusta), Russia (adding a new zone Europe/Saratov), Tonga,
- and Antarctica/Casey.
- Historical corrections for Italy, Kazakhstan, Malta, and Palestine.
- Switch to preferring numeric zone abbreviations for Tonga.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-15">
- <title>Release 9.3.15</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-10-27</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.14.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.15</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if your installation has been affected by the bug described in
- the first changelog entry below, then after updating you may need
- to take action to repair corrupted free space maps.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.9,
- see <xref linkend="release-9-3-9"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix WAL-logging of truncation of relation free space maps and
- visibility maps (Pavan Deolasee, Heikki Linnakangas)
- </para>
-
- <para>
- It was possible for these files to not be correctly restored during
- crash recovery, or to be written incorrectly on a standby server.
- Bogus entries in a free space map could lead to attempts to access
- pages that have been truncated away from the relation itself, typically
- producing errors like <quote>could not read block <replaceable>XXX</replaceable>:
- read only 0 of 8192 bytes</quote>. Checksum failures in the
- visibility map are also possible, if checksumming is enabled.
- </para>
-
- <para>
- Procedures for determining whether there is a problem and repairing it
- if so are discussed at
- <ulink url="https://wiki.postgresql.org/wiki/Free_Space_Map_Problems"></ulink>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>SELECT FOR UPDATE/SHARE</command> to correctly lock tuples that
- have been updated by a subsequently-aborted transaction
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- In 9.5 and later, the <command>SELECT</command> would sometimes fail to
- return such tuples at all. A failure has not been proven to occur in
- earlier releases, but might be possible with concurrent updates.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix EvalPlanQual rechecks involving CTE scans (Tom Lane)
- </para>
-
- <para>
- The recheck would always see the CTE as returning no rows, typically
- leading to failure to update rows that were recently updated.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix improper repetition of previous results from hashed aggregation in
- a subquery (Andrew Gierth)
- </para>
-
- <para>
- The test to see if we can reuse a previously-computed hash table of
- the aggregate state values neglected the possibility of an outer query
- reference appearing in an aggregate argument expression. A change in
- the value of such a reference should lead to recalculating the hash
- table, but did not.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>EXPLAIN</command> to emit valid XML when
- <xref linkend="guc-track-io-timing"/> is on (Markus Winand)
- </para>
-
- <para>
- Previously the XML output-format option produced syntactically invalid
- tags such as <literal>&lt;I/O-Read-Time&gt;</literal>. That is now
- rendered as <literal>&lt;I-O-Read-Time&gt;</literal>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress printing of zeroes for unmeasured times
- in <command>EXPLAIN</command> (Maksim Milyutin)
- </para>
-
- <para>
- Certain option combinations resulted in printing zero values for times
- that actually aren't ever measured in that combination. Our general
- policy in <command>EXPLAIN</command> is not to print such fields at all, so
- do that consistently in all cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix timeout length when <command>VACUUM</command> is waiting for exclusive
- table lock so that it can truncate the table (Simon Riggs)
- </para>
-
- <para>
- The timeout was meant to be 50 milliseconds, but it was actually only
- 50 microseconds, causing <command>VACUUM</command> to give up on truncation
- much more easily than intended. Set it to the intended value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix bugs in merging inherited <literal>CHECK</literal> constraints while
- creating or altering a table (Tom Lane, Amit Langote)
- </para>
-
- <para>
- Allow identical <literal>CHECK</literal> constraints to be added to a parent
- and child table in either order. Prevent merging of a valid
- constraint from the parent table with a <literal>NOT VALID</literal>
- constraint on the child. Likewise, prevent merging of a <literal>NO
- INHERIT</literal> child constraint with an inherited constraint.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove artificial restrictions on the values accepted
- by <function>numeric_in()</function> and <function>numeric_recv()</function>
- (Tom Lane)
- </para>
-
- <para>
- We allow numeric values up to the limit of the storage format (more
- than <literal>1e100000</literal>), so it seems fairly pointless
- that <function>numeric_in()</function> rejected scientific-notation exponents
- above 1000. Likewise, it was silly for <function>numeric_recv()</function> to
- reject more than 1000 digits in an input value.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid very-low-probability data corruption due to testing tuple
- visibility without holding buffer lock (Thomas Munro, Peter Geoghegan,
- Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix file descriptor leakage when truncating a temporary relation of
- more than 1GB (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disallow starting a standalone backend with <literal>standby_mode</literal>
- turned on (Michael Paquier)
- </para>
-
- <para>
- This can't do anything useful, since there will be no WAL receiver
- process to fetch more WAL data; and it could result in misbehavior
- in code that wasn't designed with this situation in mind.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't try to share SSL contexts across multiple connections
- in <application>libpq</application> (Heikki Linnakangas)
- </para>
-
- <para>
- This led to assorted corner-case bugs, particularly when trying to use
- different SSL parameters for different connections.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid corner-case memory leak in <application>libpq</application> (Tom Lane)
- </para>
-
- <para>
- The reported problem involved leaking an error report
- during <function>PQreset()</function>, but there might be related cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>ecpg</application>'s <option>--help</option> and <option>--version</option>
- options work consistently with our other executables (Haribabu Kommi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application>, never dump range constructor functions
- (Tom Lane)
- </para>
-
- <para>
- This oversight led to <application>pg_upgrade</application> failures with
- extensions containing range types, due to duplicate creation of the
- constructor functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_xlogdump</application>, retry opening new WAL segments when
- using <option>--follow</option> option (Magnus Hagander)
- </para>
-
- <para>
- This allows for a possible delay in the server's creation of the next
- segment.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_xlogdump</application> to cope with a WAL file that begins
- with a continuation record spanning more than one page (Pavan
- Deolasee)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/intarray/bench/bench.pl</filename> to print the results
- of the <command>EXPLAIN</command> it does when given the <option>-e</option> option
- (Daniel Gustafsson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update Windows time zone mapping to recognize some time zone names
- added in recent Windows versions (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent failure of obsolete dynamic time zone abbreviations (Tom Lane)
- </para>
-
- <para>
- If a dynamic time zone abbreviation does not match any entry in the
- referenced time zone, treat it as equivalent to the time zone name.
- This avoids unexpected failures when IANA removes abbreviations from
- their time zone database, as they did in <application>tzdata</application>
- release 2016f and seem likely to do again in the future. The
- consequences were not limited to not recognizing the individual
- abbreviation; any mismatch caused
- the <structname>pg_timezone_abbrevs</structname> view to fail altogether.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016h
- for DST law changes in Palestine and Turkey, plus historical
- corrections for Turkey and some regions of Russia.
- Switch to numeric abbreviations for some time zones in Antarctica,
- the former Soviet Union, and Sri Lanka.
- </para>
-
- <para>
- The IANA time zone database previously provided textual abbreviations
- for all time zones, sometimes making up abbreviations that have little
- or no currency among the local population. They are in process of
- reversing that policy in favor of using numeric UTC offsets in zones
- where there is no evidence of real-world use of an English
- abbreviation. At least for the time being, <productname>PostgreSQL</productname>
- will continue to accept such removed abbreviations for timestamp input.
- But they will not be shown in the <structname>pg_timezone_names</structname>
- view nor used for output.
- </para>
-
- <para>
- In this update, <literal>AMT</literal> is no longer shown as being in use to
- mean Armenia Time. Therefore, we have changed the <literal>Default</literal>
- abbreviation set to interpret it as Amazon Time, thus UTC-4 not UTC+4.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-14">
- <title>Release 9.3.14</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-08-11</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.13.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.14</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.9,
- see <xref linkend="release-9-3-9"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix possible mis-evaluation of
- nested <literal>CASE</literal>-<literal>WHEN</literal> expressions (Heikki
- Linnakangas, Michael Paquier, Tom Lane)
- </para>
-
- <para>
- A <literal>CASE</literal> expression appearing within the test value
- subexpression of another <literal>CASE</literal> could become confused about
- whether its own test value was null or not. Also, inlining of a SQL
- function implementing the equality operator used by
- a <literal>CASE</literal> expression could result in passing the wrong test
- value to functions called within a <literal>CASE</literal> expression in the
- SQL function's body. If the test values were of different data
- types, a crash might result; moreover such situations could be abused
- to allow disclosure of portions of server memory. (CVE-2016-5423)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix client programs' handling of special characters in database and
- role names (Noah Misch, Nathan Bossart, Michael Paquier)
- </para>
-
- <para>
- Numerous places in <application>vacuumdb</application> and other client programs
- could become confused by database and role names containing double
- quotes or backslashes. Tighten up quoting rules to make that safe.
- Also, ensure that when a conninfo string is used as a database name
- parameter to these programs, it is correctly treated as such throughout.
- </para>
-
- <para>
- Fix handling of paired double quotes
- in <application>psql</application>'s <command>\connect</command>
- and <command>\password</command> commands to match the documentation.
- </para>
-
- <para>
- Introduce a new <option>-reuse-previous</option> option
- in <application>psql</application>'s <command>\connect</command> command to allow
- explicit control of whether to re-use connection parameters from a
- previous connection. (Without this, the choice is based on whether
- the database name looks like a conninfo string, as before.) This
- allows secure handling of database names containing special
- characters in <application>pg_dumpall</application> scripts.
- </para>
-
- <para>
- <application>pg_dumpall</application> now refuses to deal with database and role
- names containing carriage returns or newlines, as it seems impractical
- to quote those characters safely on Windows. In future we may reject
- such names on the server side, but that step has not been taken yet.
- </para>
-
- <para>
- These are considered security fixes because crafted object names
- containing special characters could have been used to execute
- commands with superuser privileges the next time a superuser
- executes <application>pg_dumpall</application> or other routine maintenance
- operations. (CVE-2016-5424)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner-case misbehaviors for <literal>IS NULL</literal>/<literal>IS NOT
- NULL</literal> applied to nested composite values (Andrew Gierth, Tom Lane)
- </para>
-
- <para>
- The SQL standard specifies that <literal>IS NULL</literal> should return
- TRUE for a row of all null values (thus <literal>ROW(NULL,NULL) IS
- NULL</literal> yields TRUE), but this is not meant to apply recursively
- (thus <literal>ROW(NULL, ROW(NULL,NULL)) IS NULL</literal> yields FALSE).
- The core executor got this right, but certain planner optimizations
- treated the test as recursive (thus producing TRUE in both cases),
- and <filename>contrib/postgres_fdw</filename> could produce remote queries
- that misbehaved similarly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the <type>inet</type> and <type>cidr</type> data types properly reject
- IPv6 addresses with too many colon-separated fields (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash in <function>close_ps()</function>
- (the <type>point</type> <literal>##</literal> <type>lseg</type> operator)
- for NaN input coordinates (Tom Lane)
- </para>
-
- <para>
- Make it return NULL instead of crashing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible crash in <function>pg_get_expr()</function> when inconsistent
- values are passed to it (Michael Paquier, Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix several one-byte buffer over-reads in <function>to_number()</function>
- (Peter Eisentraut)
- </para>
-
- <para>
- In several cases the <function>to_number()</function> function would read one
- more character than it should from the input string. There is a
- small chance of a crash, if the input happens to be adjacent to the
- end of memory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not run the planner on the query contained in <literal>CREATE
- MATERIALIZED VIEW</literal> or <literal>CREATE TABLE AS</literal>
- when <literal>WITH NO DATA</literal> is specified (Michael Paquier,
- Tom Lane)
- </para>
-
- <para>
- This avoids some unnecessary failure conditions, for example if a
- stable function invoked by the materialized view depends on a table
- that doesn't exist yet.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unsafe intermediate state during expensive paths
- through <function>heap_update()</function> (Masahiko Sawada, Andres Freund)
- </para>
-
- <para>
- Previously, these cases locked the target tuple (by setting its XMAX)
- but did not WAL-log that action, thus risking data integrity problems
- if the page were spilled to disk and then a database crash occurred
- before the tuple update could be completed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix hint bit update during WAL replay of row locking operations
- (Andres Freund)
- </para>
-
- <para>
- The only known consequence of this problem is that row locks held by
- a prepared, but uncommitted, transaction might fail to be enforced
- after a crash and restart.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unnecessary <quote>could not serialize access</quote> errors when
- acquiring <literal>FOR KEY SHARE</literal> row locks in serializable mode
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid crash in <literal>postgres -C</literal> when the specified variable
- has a null string value (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that backends see up-to-date statistics for shared catalogs
- (Tom Lane)
- </para>
-
- <para>
- The statistics collector failed to update the statistics file for
- shared catalogs after a request from a regular backend. This problem
- was partially masked because the autovacuum launcher regularly makes
- requests that did cause such updates; however, it became obvious with
- autovacuum disabled.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid redundant writes of the statistics files when multiple
- backends request updates close together (Tom Lane, Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid consuming a transaction ID during <command>VACUUM</command>
- (Alexander Korotkov)
- </para>
-
- <para>
- Some cases in <command>VACUUM</command> unnecessarily caused an XID to be
- assigned to the current transaction. Normally this is negligible,
- but if one is up against the XID wraparound limit, consuming more
- XIDs during anti-wraparound vacuums is a very bad thing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid canceling hot-standby queries during <command>VACUUM FREEZE</command>
- (Simon Riggs, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- <command>VACUUM FREEZE</command> on an otherwise-idle master server could
- result in unnecessary cancellations of queries on its standby
- servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible failure when vacuuming multixact IDs in an
- installation that has been pg_upgrade'd from pre-9.3 (Andrew Gierth,
- &Aacute;lvaro Herrera)
- </para>
-
- <para>
- The usual symptom of this bug is errors
- like <quote>MultiXactId <replaceable>NNN</replaceable> has not been created
- yet -- apparent wraparound</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- When a manual <command>ANALYZE</command> specifies a column list, don't
- reset the table's <literal>changes_since_analyze</literal> counter
- (Tom Lane)
- </para>
-
- <para>
- If we're only analyzing some columns, we should not prevent routine
- auto-analyze from happening for the other columns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ANALYZE</command>'s overestimation of <literal>n_distinct</literal>
- for a unique or nearly-unique column with many null entries (Tom
- Lane)
- </para>
-
- <para>
- The nulls could get counted as though they were themselves distinct
- values, leading to serious planner misestimates in some types of
- queries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent autovacuum from starting multiple workers for the same shared
- catalog (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- Normally this isn't much of a problem because the vacuum doesn't take
- long anyway; but in the case of a severely bloated catalog, it could
- result in all but one worker uselessly waiting instead of doing
- useful work on other tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent infinite loop in GiST index build for geometric columns
- containing NaN component values (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/btree_gin</filename> to handle the smallest
- possible <type>bigint</type> value correctly (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Teach libpq to correctly decode server version from future servers
- (Peter Eisentraut)
- </para>
-
- <para>
- It's planned to switch to two-part instead of three-part server
- version numbers for releases after 9.6. Make sure
- that <function>PQserverVersion()</function> returns the correct value for
- such cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s code for <literal>unsigned long long</literal>
- array elements (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application> with both <option>-c</option> and <option>-C</option>
- options, avoid emitting an unwanted <literal>CREATE SCHEMA public</literal>
- command (David Johnston, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve handling of <systemitem>SIGTERM</systemitem>/control-C in
- parallel <application>pg_dump</application> and <application>pg_restore</application> (Tom
- Lane)
- </para>
-
- <para>
- Make sure that the worker processes will exit promptly, and also arrange
- to send query-cancel requests to the connected backends, in case they
- are doing something long-running such as a <command>CREATE INDEX</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix error reporting in parallel <application>pg_dump</application>
- and <application>pg_restore</application> (Tom Lane)
- </para>
-
- <para>
- Previously, errors reported by <application>pg_dump</application>
- or <application>pg_restore</application> worker processes might never make it to
- the user's console, because the messages went through the master
- process, and there were various deadlock scenarios that would prevent
- the master process from passing on the messages. Instead, just print
- everything to <literal>stderr</literal>. In some cases this will result in
- duplicate messages (for instance, if all the workers report a server
- shutdown), but that seems better than no message.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that parallel <application>pg_dump</application>
- or <application>pg_restore</application> on Windows will shut down properly
- after an error (Kyotaro Horiguchi)
- </para>
-
- <para>
- Previously, it would report the error, but then just sit until
- manually stopped by the user.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> behave better when built without zlib
- support (Kyotaro Horiguchi)
- </para>
-
- <para>
- It didn't work right for parallel dumps, and emitted some rather
- pointless warnings in other cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_basebackup</application> accept <literal>-Z 0</literal> as
- specifying no compression (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix makefiles' rule for building AIX shared libraries to be safe for
- parallel make (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix TAP tests and MSVC scripts to work when build directory's path
- name contains spaces (Michael Paquier, Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Be more predictable about reporting <quote>statement timeout</quote>
- versus <quote>lock timeout</quote> (Tom Lane)
- </para>
-
- <para>
- On heavily loaded machines, the regression tests sometimes failed due
- to reporting <quote>lock timeout</quote> even though the statement timeout
- should have occurred first.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make regression tests safe for Danish and Welsh locales (Jeff Janes,
- Tom Lane)
- </para>
-
- <para>
- Change some test data that triggered the unusual sorting rules of
- these locales.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update our copy of the timezone code to match
- IANA's <application>tzcode</application> release 2016c (Tom Lane)
- </para>
-
- <para>
- This is needed to cope with anticipated future changes in the time
- zone data files. It also fixes some corner-case bugs in coping with
- unusual time zones.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016f
- for DST law changes in Kemerovo and Novosibirsk, plus historical
- corrections for Azerbaijan, Belarus, and Morocco.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-13">
- <title>Release 9.3.13</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-05-12</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.12.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.13</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.9,
- see <xref linkend="release-9-3-9"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Clear the OpenSSL error queue before OpenSSL calls, rather than
- assuming it's clear already; and make sure we leave it clear
- afterwards (Peter Geoghegan, Dave Vitek, Peter Eisentraut)
- </para>
-
- <para>
- This change prevents problems when there are multiple connections
- using OpenSSL within a single process and not all the code involved
- follows the same rules for when to clear the error queue.
- Failures have been reported specifically when a client application
- uses SSL connections in <application>libpq</application> concurrently with
- SSL connections using the PHP, Python, or Ruby wrappers for OpenSSL.
- It's possible for similar problems to arise within the server as well,
- if an extension module establishes an outgoing SSL connection.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>failed to build any <replaceable>N</replaceable>-way joins</quote>
- planner error with a full join enclosed in the right-hand side of a
- left join (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect handling of equivalence-class tests in multilevel
- nestloop plans (Tom Lane)
- </para>
-
- <para>
- Given a three-or-more-way equivalence class of variables, such
- as <literal>X.X = Y.Y = Z.Z</literal>, it was possible for the planner to omit
- some of the tests needed to enforce that all the variables are actually
- equal, leading to join rows being output that didn't satisfy
- the <literal>WHERE</literal> clauses. For various reasons, erroneous plans
- were seldom selected in practice, so that this bug has gone undetected
- for a long time.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible misbehavior of <literal>TH</literal>, <literal>th</literal>,
- and <literal>Y,YYY</literal> format codes in <function>to_timestamp()</function>
- (Tom Lane)
- </para>
-
- <para>
- These could advance off the end of the input string, causing subsequent
- format codes to read garbage.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of rules and views in which the <replaceable>array</replaceable>
- argument of a <literal><replaceable>value</replaceable> <replaceable>operator</replaceable>
- ANY (<replaceable>array</replaceable>)</literal> construct is a sub-SELECT
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_regress</application> use a startup timeout from the
- <envar>PGCTLTIMEOUT</envar> environment variable, if that's set (Tom Lane)
- </para>
-
- <para>
- This is for consistency with a behavior recently added
- to <application>pg_ctl</application>; it eases automated testing on slow machines.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to correctly restore extension
- membership for operator families containing only one operator class
- (Tom Lane)
- </para>
-
- <para>
- In such a case, the operator family was restored into the new database,
- but it was no longer marked as part of the extension. This had no
- immediate ill effects, but would cause later <application>pg_dump</application>
- runs to emit output that would cause (harmless) errors on restore.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> to not fail when new-cluster TOAST rules
- differ from old (Tom Lane)
- </para>
-
- <para>
- <application>pg_upgrade</application> had special-case code to handle the
- situation where the new <productname>PostgreSQL</productname> version thinks that
- a table should have a TOAST table while the old version did not. That
- code was broken, so remove it, and instead do nothing in such cases;
- there seems no reason to believe that we can't get along fine without
- a TOAST table if that was okay according to the old version's rules.
- </para>
- </listitem>
-
- <listitem>
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [f4f4f6990] 2016-04-15 16:49:48 -0400
-Branch: REL9_2_STABLE [d7dbc882d] 2016-04-15 16:49:48 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [992df9658] 2016-04-16 10:42:07 -0400
-Branch: REL9_2_STABLE [9008922bf] 2016-04-16 10:41:57 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [35166fd76] 2016-04-18 13:19:52 -0400
-Branch: REL9_2_STABLE [37f30b251] 2016-04-18 13:19:52 -0400
--->
- <para>
- Back-port 9.4-era memory-barrier code changes into 9.2 and 9.3 (Tom Lane)
- </para>
-
- <para>
- These changes were not originally needed in pre-9.4 branches, but we
- recently back-patched a fix that expected the barrier code to work
- properly. Only IA64 (when using icc), HPPA, and Alpha platforms are
- affected.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce the number of SysV semaphores used by a build configured with
- <option>--disable-spinlocks</option> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rename internal function <function>strtoi()</function>
- to <function>strtoint()</function> to avoid conflict with a NetBSD library
- function (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix reporting of errors from <function>bind()</function>
- and <function>listen()</function> system calls on Windows (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce verbosity of compiler output when building with Microsoft Visual
- Studio (Christian Ullrich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>putenv()</function> to work properly with Visual Studio 2013
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possibly-unsafe use of Windows' <function>FormatMessage()</function>
- function (Christian Ullrich)
- </para>
-
- <para>
- Use the <literal>FORMAT_MESSAGE_IGNORE_INSERTS</literal> flag where
- appropriate. No live bug is known to exist here, but it seems like a
- good idea to be careful.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016d
- for DST law changes in Russia and Venezuela. There are new zone
- names <literal>Europe/Kirov</literal> and <literal>Asia/Tomsk</literal> to reflect
- the fact that these regions now have different time zone histories from
- adjacent regions.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-12">
- <title>Release 9.3.12</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-03-31</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.11.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.12</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.9,
- see <xref linkend="release-9-3-9"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix incorrect handling of NULL index entries in
- indexed <literal>ROW()</literal> comparisons (Tom Lane)
- </para>
-
- <para>
- An index search using a row comparison such as <literal>ROW(a, b) &gt;
- ROW('x', 'y')</literal> would stop upon reaching a NULL entry in
- the <structfield>b</structfield> column, ignoring the fact that there might be
- non-NULL <structfield>b</structfield> values associated with later values
- of <structfield>a</structfield>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid unlikely data-loss scenarios due to renaming files without
- adequate <function>fsync()</function> calls before and after (Michael Paquier,
- Tomas Vondra, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Correctly handle cases where <literal>pg_subtrans</literal> is close to XID
- wraparound during server startup (Jeff Janes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix corner-case crash due to trying to free <function>localeconv()</function>
- output strings more than once (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix parsing of affix files for <literal>ispell</literal> dictionaries
- (Tom Lane)
- </para>
-
- <para>
- The code could go wrong if the affix file contained any characters
- whose byte length changes during case-folding, for
- example <literal>I</literal> in Turkish UTF8 locales.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid use of <function>sscanf()</function> to parse <literal>ispell</literal>
- dictionary files (Artur Zakirov)
- </para>
-
- <para>
- This dodges a portability problem on FreeBSD-derived platforms
- (including macOS).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid a crash on old Windows versions (before 7SP1/2008R2SP1) with an
- AVX2-capable CPU and a Postgres build done with Visual Studio 2013
- (Christian Ullrich)
- </para>
-
- <para>
- This is a workaround for a bug in Visual Studio 2013's runtime
- library, which Microsoft have stated they will not fix in that
- version.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s tab completion logic to handle multibyte
- characters properly (Kyotaro Horiguchi, Robert Haas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s tab completion for
- <literal>SECURITY LABEL</literal> (Tom Lane)
- </para>
-
- <para>
- Pressing TAB after <literal>SECURITY LABEL</literal> might cause a crash
- or offering of inappropriate keywords.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_ctl</application> accept a wait timeout from the
- <envar>PGCTLTIMEOUT</envar> environment variable, if none is specified on
- the command line (Noah Misch)
- </para>
-
- <para>
- This eases testing of slower buildfarm members by allowing them
- to globally specify a longer-than-normal timeout for postmaster
- startup and shutdown.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect test for Windows service status
- in <application>pg_ctl</application> (Manuel Mathar)
- </para>
-
- <para>
- The previous set of minor releases attempted to
- fix <application>pg_ctl</application> to properly determine whether to send log
- messages to Window's Event Log, but got the test backwards.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pgbench</application> to correctly handle the combination
- of <literal>-C</literal> and <literal>-M prepared</literal> options (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, skip creating a deletion script when
- the new data directory is inside the old data directory (Bruce
- Momjian)
- </para>
-
- <para>
- Blind application of the script in such cases would result in loss of
- the new data directory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In PL/Perl, properly translate empty Postgres arrays into empty Perl
- arrays (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make PL/Python cope with function names that aren't valid Python
- identifiers (Jim Nasby)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix multiple mistakes in the statistics returned
- by <filename>contrib/pgstattuple</filename>'s <function>pgstatindex()</function>
- function (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove dependency on <literal>psed</literal> in MSVC builds, since it's no
- longer provided by core Perl (Michael Paquier, Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016c
- for DST law changes in Azerbaijan, Chile, Haiti, Palestine, and Russia
- (Altai, Astrakhan, Kirov, Sakhalin, Ulyanovsk regions), plus
- historical corrections for Lithuania, Moldova, and Russia
- (Kaliningrad, Samara, Volgograd).
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-11">
- <title>Release 9.3.11</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2016-02-11</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.10.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.11</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.9,
- see <xref linkend="release-9-3-9"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix infinite loops and buffer-overrun problems in regular expressions
- (Tom Lane)
- </para>
-
- <para>
- Very large character ranges in bracket expressions could cause
- infinite loops in some cases, and memory overwrites in other cases.
- (CVE-2016-0773)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Perform an immediate shutdown if the <filename>postmaster.pid</filename> file
- is removed (Tom Lane)
- </para>
-
- <para>
- The postmaster now checks every minute or so
- that <filename>postmaster.pid</filename> is still there and still contains its
- own PID. If not, it performs an immediate shutdown, as though it had
- received <systemitem>SIGQUIT</systemitem>. The main motivation for this change
- is to ensure that failed buildfarm runs will get cleaned up without
- manual intervention; but it also serves to limit the bad effects if a
- DBA forcibly removes <filename>postmaster.pid</filename> and then starts a new
- postmaster.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <literal>SERIALIZABLE</literal> transaction isolation mode, serialization
- anomalies could be missed due to race conditions during insertions
- (Kevin Grittner, Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to emit appropriate WAL records when doing <literal>ALTER
- TABLE ... SET TABLESPACE</literal> for unlogged relations (Michael Paquier,
- Andres Freund)
- </para>
-
- <para>
- Even though the relation's data is unlogged, the move must be logged or
- the relation will be inaccessible after a standby is promoted to master.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible misinitialization of unlogged relations at the end of
- crash recovery (Andres Freund, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure walsender slots are fully re-initialized when being re-used
- (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>ALTER COLUMN TYPE</command> to reconstruct inherited check
- constraints properly (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to change ownership of composite types
- properly (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> and <command>ALTER OWNER</command> to correctly
- update granted-permissions lists when changing owners of data types,
- foreign data wrappers, or foreign servers (Bruce Momjian,
- &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to ignore foreign user mappings,
- rather than fail (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible crash after doing query rewrite for an updatable view
- (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner's handling of <literal>LATERAL</literal> references (Tom
- Lane)
- </para>
-
- <para>
- This fixes some corner cases that led to <quote>failed to build any
- N-way joins</quote> or <quote>could not devise a query plan</quote> planner
- failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add more defenses against bad planner cost estimates for GIN index
- scans when the index's internal statistics are very out-of-date
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make planner cope with hypothetical GIN indexes suggested by an index
- advisor plug-in (Julien Rouhaud)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Speed up generation of unique table aliases in <command>EXPLAIN</command> and
- rule dumping, and ensure that generated aliases do not
- exceed <literal>NAMEDATALEN</literal> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of whole-row Vars in <literal>ROW()</literal>
- and <literal>VALUES()</literal> lists (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible internal overflow in <type>numeric</type> division
- (Dean Rasheed)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix enforcement of restrictions inside parentheses within regular
- expression lookahead constraints (Tom Lane)
- </para>
-
- <para>
- Lookahead constraints aren't allowed to contain backrefs, and
- parentheses within them are always considered non-capturing, according
- to the manual. However, the code failed to handle these cases properly
- inside a parenthesized subexpression, and would give unexpected
- results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Conversion of regular expressions to indexscan bounds could produce
- incorrect bounds from regexps containing lookahead constraints
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix regular-expression compiler to handle loops of constraint arcs
- (Tom Lane)
- </para>
-
- <para>
- The code added for CVE-2007-4772 was both incomplete, in that it didn't
- handle loops involving more than one state, and incorrect, in that it
- could cause assertion failures (though there seem to be no bad
- consequences of that in a non-assert build). Multi-state loops would
- cause the compiler to run until the query was canceled or it reached
- the too-many-states error condition.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve memory-usage accounting in regular-expression compiler
- (Tom Lane)
- </para>
-
- <para>
- This causes the code to emit <quote>regular expression is too
- complex</quote> errors in some cases that previously used unreasonable
- amounts of time and memory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of regular-expression compiler (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <literal>%h</literal> and <literal>%r</literal> escapes
- in <varname>log_line_prefix</varname> work for messages emitted due
- to <varname>log_connections</varname> (Tom Lane)
- </para>
-
- <para>
- Previously, <literal>%h</literal>/<literal>%r</literal> started to work just after a
- new session had emitted the <quote>connection received</quote> log message;
- now they work for that message too.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On Windows, ensure the shared-memory mapping handle gets closed in
- child processes that don't need it (Tom Lane, Amit Kapila)
- </para>
-
- <para>
- This oversight resulted in failure to recover from crashes
- whenever <varname>logging_collector</varname> is turned on.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure to detect socket EOF in non-blocking mode on
- Windows (Tom Lane)
- </para>
-
- <para>
- It's not entirely clear whether this problem can happen in pre-9.5
- branches, but if it did, the symptom would be that a walsender process
- would wait indefinitely rather than noticing a loss of connection.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid leaking a token handle during SSPI authentication
- (Christian Ullrich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>, ensure that <application>libreadline</application>'s idea
- of the screen size is updated when the terminal window size changes
- (Merlin Moncure)
- </para>
-
- <para>
- Previously, <application>libreadline</application> did not notice if the window
- was resized during query output, leading to strange behavior during
- later input of multiline queries.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s <literal>\det</literal> command to interpret its
- pattern argument the same way as other <literal>\d</literal> commands with
- potentially schema-qualified patterns do (Reece Hart)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible crash in <application>psql</application>'s <literal>\c</literal> command
- when previous connection was via Unix socket and command specifies a
- new hostname and same username (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <literal>pg_ctl start -w</literal>, test child process status directly
- rather than relying on heuristics (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- Previously, <application>pg_ctl</application> relied on an assumption that the new
- postmaster would always create <filename>postmaster.pid</filename> within five
- seconds. But that can fail on heavily-loaded systems,
- causing <application>pg_ctl</application> to report incorrectly that the
- postmaster failed to start.
- </para>
-
- <para>
- Except on Windows, this change also means that a <literal>pg_ctl start
- -w</literal> done immediately after another such command will now reliably
- fail, whereas previously it would report success if done within two
- seconds of the first command.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <literal>pg_ctl start -w</literal>, don't attempt to use a wildcard listen
- address to connect to the postmaster (Kondo Yuta)
- </para>
-
- <para>
- On Windows, <application>pg_ctl</application> would fail to detect postmaster
- startup if <varname>listen_addresses</varname> is set to <literal>0.0.0.0</literal>
- or <literal>::</literal>, because it would try to use that value verbatim as
- the address to connect to, which doesn't work. Instead assume
- that <literal>127.0.0.1</literal> or <literal>::1</literal>, respectively, is the
- right thing to use.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_ctl</application> on Windows, check service status to decide
- where to send output, rather than checking if standard output is a
- terminal (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application> and <application>pg_basebackup</application>, adopt
- the GNU convention for handling tar-archive members exceeding 8GB
- (Tom Lane)
- </para>
-
- <para>
- The POSIX standard for <literal>tar</literal> file format does not allow
- archive member files to exceed 8GB, but most modern implementations
- of <application>tar</application> support an extension that fixes that. Adopt
- this extension so that <application>pg_dump</application> with <option>-Ft</option> no
- longer fails on tables with more than 8GB of data, and so
- that <application>pg_basebackup</application> can handle files larger than 8GB.
- In addition, fix some portability issues that could cause failures for
- members between 4GB and 8GB on some platforms. Potentially these
- problems could cause unrecoverable data loss due to unreadable backup
- files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted corner-case bugs in <application>pg_dump</application>'s processing
- of extension member objects (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> mark a view's triggers as needing to be
- processed after its rule, to prevent possible failure during
- parallel <application>pg_restore</application> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that relation option values are properly quoted
- in <application>pg_dump</application> (Kouhei Sutou, Tom Lane)
- </para>
-
- <para>
- A reloption value that isn't a simple identifier or number could lead
- to dump/reload failures due to syntax errors in CREATE statements
- issued by <application>pg_dump</application>. This is not an issue with any
- reloption currently supported by core <productname>PostgreSQL</productname>, but
- extensions could allow reloptions that cause the problem.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid repeated password prompts during parallel <application>pg_dump</application>
- (Zeus Kronion)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application>'s file-copying code to handle errors
- properly on Windows (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Install guards in <application>pgbench</application> against corner-case overflow
- conditions during evaluation of script-specified division or modulo
- operators (Fabien Coelho, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix failure to localize messages emitted
- by <application>pg_receivexlog</application> and <application>pg_recvlogical</application>
- (Ioseph Kim)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid dump/reload problems when using both <application>plpython2</application>
- and <application>plpython3</application> (Tom Lane)
- </para>
-
- <para>
- In principle, both versions of <application>PL/Python</application> can be used in
- the same database, though not in the same session (because the two
- versions of <application>libpython</application> cannot safely be used concurrently).
- However, <application>pg_restore</application> and <application>pg_upgrade</application> both
- do things that can fall foul of the same-session restriction. Work
- around that by changing the timing of the check.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/Python</application> regression tests to pass with Python 3.5
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix premature clearing of <application>libpq</application>'s input buffer when
- socket EOF is seen (Tom Lane)
- </para>
-
- <para>
- This mistake caused <application>libpq</application> to sometimes not report the
- backend's final error message before reporting <quote>server closed the
- connection unexpectedly</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent certain <application>PL/Java</application> parameters from being set by
- non-superusers (Noah Misch)
- </para>
-
- <para>
- This change mitigates a <application>PL/Java</application> security bug
- (CVE-2016-0766), which was fixed in <application>PL/Java</application> by marking
- these parameters as superuser-only. To fix the security hazard for
- sites that update <productname>PostgreSQL</productname> more frequently
- than <application>PL/Java</application>, make the core code aware of them also.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>libpq</application>'s handling of out-of-memory situations
- (Michael Paquier, Amit Kapila, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix order of arguments
- in <application>ecpg</application>-generated <literal>typedef</literal> statements
- (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <literal>%g</literal> not <literal>%f</literal> format
- in <application>ecpg</application>'s <function>PGTYPESnumeric_from_double()</function>
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>-supplied header files to not contain comments
- continued from a preprocessor directive line onto the next line
- (Michael Meskes)
- </para>
-
- <para>
- Such a comment is rejected by <application>ecpg</application>. It's not yet clear
- whether <application>ecpg</application> itself should be changed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>hstore_to_json_loose()</function>'s test for whether
- an <type>hstore</type> value can be converted to a JSON number (Tom Lane)
- </para>
-
- <para>
- Previously this function could be fooled by non-alphanumeric trailing
- characters, leading to emitting syntactically-invalid JSON.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <filename>contrib/pgcrypto</filename>'s <function>crypt()</function>
- function can be interrupted by query cancel (Andreas Karlsson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Accept <application>flex</application> versions later than 2.5.x
- (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- Now that flex 2.6.0 has been released, the version checks in our build
- scripts needed to be adjusted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve reproducibility of build output by ensuring filenames are given
- to the linker in a fixed order (Christoph Berg)
- </para>
-
- <para>
- This avoids possible bitwise differences in the produced executable
- files from one build to the next.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Install our <filename>missing</filename> script where PGXS builds can find it
- (Jim Nasby)
- </para>
-
- <para>
- This allows sane behavior in a PGXS build done on a machine where build
- tools such as <application>bison</application> are missing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that <filename>dynloader.h</filename> is included in the installed
- header files in MSVC builds (Bruce Momjian, Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add variant regression test expected-output file to match behavior of
- current <application>libxml2</application> (Tom Lane)
- </para>
-
- <para>
- The fix for <application>libxml2</application>'s CVE-2015-7499 causes it not to
- output error context reports in some cases where it used to do so.
- This seems to be a bug, but we'll probably have to live with it for
- some time, so work around it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2016a for
- DST law changes in Cayman Islands, Metlakatla, and Trans-Baikal
- Territory (Zabaykalsky Krai), plus historical corrections for Pakistan.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-10">
- <title>Release 9.3.10</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-10-08</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.9.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.10</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.9,
- see <xref linkend="release-9-3-9"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Guard against stack overflows in <type>json</type> parsing
- (Oskari Saarenmaa)
- </para>
-
- <para>
- If an application constructs PostgreSQL <type>json</type>
- or <type>jsonb</type> values from arbitrary user input, the application's
- users can reliably crash the PostgreSQL server, causing momentary
- denial of service. (CVE-2015-5289)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <filename>contrib/pgcrypto</filename> to detect and report
- too-short <function>crypt()</function> salts (Josh Kupershmidt)
- </para>
-
- <para>
- Certain invalid salt arguments crashed the server or disclosed a few
- bytes of server memory. We have not ruled out the viability of
- attacks that arrange for presence of confidential information in the
- disclosed bytes, but they seem unlikely. (CVE-2015-5288)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix subtransaction cleanup after a portal (cursor) belonging to an
- outer subtransaction fails (Tom Lane, Michael Paquier)
- </para>
-
- <para>
- A function executed in an outer-subtransaction cursor could cause an
- assertion failure or crash by referencing a relation created within an
- inner subtransaction.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure all relations referred to by an updatable view are properly
- locked during an update statement (Dean Rasheed)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix insertion of relations into the relation cache <quote>init file</quote>
- (Tom Lane)
- </para>
-
- <para>
- An oversight in a patch in the most recent minor releases
- caused <structname>pg_trigger_tgrelid_tgname_index</structname> to be omitted
- from the init file. Subsequent sessions detected this, then deemed the
- init file to be broken and silently ignored it, resulting in a
- significant degradation in session startup time. In addition to fixing
- the bug, install some guards so that any similar future mistake will be
- more obvious.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid O(N^2) behavior when inserting many tuples into a SPI query
- result (Neil Conway)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <command>LISTEN</command> startup time when there are many unread
- notifications (Matt Newell)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix performance problem when a session alters large numbers of foreign
- key constraints (Jan Wieck, Tom Lane)
- </para>
-
- <para>
- This was seen primarily when restoring <application>pg_dump</application> output
- for databases with many thousands of tables.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Disable SSL renegotiation by default (Michael Paquier, Andres Freund)
- </para>
-
- <para>
- While use of SSL renegotiation is a good idea in theory, we have seen
- too many bugs in practice, both in the underlying OpenSSL library and
- in our usage of it. Renegotiation will be removed entirely in 9.5 and
- later. In the older branches, just change the default value
- of <varname>ssl_renegotiation_limit</varname> to zero (disabled).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Lower the minimum values of the <literal>*_freeze_max_age</literal> parameters
- (Andres Freund)
- </para>
-
- <para>
- This is mainly to make tests of related behavior less time-consuming,
- but it may also be of value for installations with limited disk space.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Limit the maximum value of <varname>wal_buffers</varname> to 2GB to avoid
- server crashes (Josh Berkus)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid logging complaints when a parameter that can only be set at
- server start appears multiple times in <filename>postgresql.conf</filename>,
- and fix counting of line numbers after an <literal>include_dir</literal>
- directive (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare internal overflow in multiplication of <type>numeric</type> values
- (Dean Rasheed)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Guard against hard-to-reach stack overflows involving record types,
- range types, <type>json</type>, <type>jsonb</type>, <type>tsquery</type>,
- <type>ltxtquery</type> and <type>query_int</type> (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of <literal>DOW</literal> and <literal>DOY</literal> in datetime input
- (Greg Stark)
- </para>
-
- <para>
- These tokens aren't meant to be used in datetime values, but previously
- they resulted in opaque internal error messages rather
- than <quote>invalid input syntax</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add more query-cancel checks to regular expression matching (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add recursion depth protections to regular expression, <literal>SIMILAR
- TO</literal>, and <literal>LIKE</literal> matching (Tom Lane)
- </para>
-
- <para>
- Suitable search patterns and a low stack depth limit could lead to
- stack-overrun crashes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix potential infinite loop in regular expression execution (Tom Lane)
- </para>
-
- <para>
- A search pattern that can apparently match a zero-length string, but
- actually doesn't match because of a back reference, could lead to an
- infinite loop.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In regular expression execution, correctly record match data for
- capturing parentheses within a quantifier even when the match is
- zero-length (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-memory failures in regular expression compilation
- (Andreas Seltenreich)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix low-probability memory leak during regular expression execution
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare low-memory failure in lock cleanup during transaction abort
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>unexpected out-of-memory situation during sort</quote> errors
- when using tuplestores with small <varname>work_mem</varname> settings (Tom
- Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix very-low-probability stack overrun in <function>qsort</function> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>invalid memory alloc request size</quote> failure in hash joins
- with large <varname>work_mem</varname> settings (Tomas Vondra, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted planner bugs (Tom Lane)
- </para>
-
- <para>
- These mistakes could lead to incorrect query plans that would give wrong
- answers, or to assertion failures in assert-enabled builds, or to odd
- planner errors such as <quote>could not devise a query plan for the
- given query</quote>, <quote>could not find pathkey item to
- sort</quote>, <quote>plan should not reference subplan's variable</quote>,
- or <quote>failed to assign all NestLoopParams to plan nodes</quote>.
- Thanks are due to Andreas Seltenreich and Piotr Stefaniak for fuzz
- testing that exposed these problems.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve planner's performance for <command>UPDATE</command>/<command>DELETE</command>
- on large inheritance sets (Tom Lane, Dean Rasheed)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure standby promotion trigger files are removed at postmaster
- startup (Michael Paquier, Fujii Masao)
- </para>
-
- <para>
- This prevents unwanted promotion from occurring if these files appear
- in a database backup that is used to initialize a new standby server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- During postmaster shutdown, ensure that per-socket lock files are
- removed and listen sockets are closed before we remove
- the <filename>postmaster.pid</filename> file (Tom Lane)
- </para>
-
- <para>
- This avoids race-condition failures if an external script attempts to
- start a new postmaster as soon as <literal>pg_ctl stop</literal> returns.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix postmaster's handling of a startup-process crash during crash
- recovery (Tom Lane)
- </para>
-
- <para>
- If, during a crash recovery cycle, the startup process crashes without
- having restored database consistency, we'd try to launch a new startup
- process, which typically would just crash again, leading to an infinite
- loop.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make emergency autovacuuming for multixact wraparound more robust
- (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Do not print a <literal>WARNING</literal> when an autovacuum worker is already
- gone when we attempt to signal it, and reduce log verbosity for such
- signals (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent autovacuum launcher from sleeping unduly long if the server
- clock is moved backwards a large amount (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that cleanup of a GIN index's pending-insertions list is
- interruptable by cancel requests (Jeff Janes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow all-zeroes pages in GIN indexes to be reused (Heikki Linnakangas)
- </para>
-
- <para>
- Such a page might be left behind after a crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix handling of all-zeroes pages in SP-GiST indexes (Heikki
- Linnakangas)
- </para>
-
- <para>
- <command>VACUUM</command> attempted to recycle such pages, but did so in a
- way that wasn't crash-safe.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix off-by-one error that led to otherwise-harmless warnings
- about <quote>apparent wraparound</quote> in subtrans/multixact truncation
- (Thomas Munro)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix misreporting of <command>CONTINUE</command> and <command>MOVE</command> statement
- types in <application>PL/pgSQL</application>'s error context messages
- (Pavel Stehule, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/Perl</application> to handle non-<acronym>ASCII</acronym> error
- message texts correctly (Alex Hunsaker)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>PL/Python</application> crash when returning the string
- representation of a <type>record</type> result (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix some places in <application>PL/Tcl</application> that neglected to check for
- failure of <function>malloc()</function> calls (Michael Paquier, &Aacute;lvaro
- Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/isn</filename>, fix output of ISBN-13 numbers that begin
- with 979 (Fabien Coelho)
- </para>
-
- <para>
- EANs beginning with 979 (but not 9790) are considered ISBNs, but they
- must be printed in the new 13-digit format, not the 10-digit format.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <filename>contrib/postgres_fdw</filename>'s handling of
- collation-related decisions (Tom Lane)
- </para>
-
- <para>
- The main user-visible effect is expected to be that comparisons
- involving <type>varchar</type> columns will be sent to the remote server
- for execution in more cases than before.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>libpq</application>'s handling of out-of-memory conditions
- (Michael Paquier, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leaks and missing out-of-memory checks
- in <application>ecpg</application> (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application>'s code for locale-aware formatting of numeric
- output (Tom Lane)
- </para>
-
- <para>
- The formatting code invoked by <literal>\pset numericlocale on</literal>
- did the wrong thing for some uncommon cases such as numbers with an
- exponent but no decimal point. It could also mangle already-localized
- output from the <type>money</type> data type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent crash in <application>psql</application>'s <command>\c</command> command when
- there is no current connection (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> handle inherited <literal>NOT VALID</literal>
- check constraints correctly (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix selection of default <application>zlib</application> compression level
- in <application>pg_dump</application>'s directory output format (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that temporary files created during a <application>pg_dump</application>
- run with <acronym>tar</acronym>-format output are not world-readable (Michael
- Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> and <application>pg_upgrade</application> to support
- cases where the <literal>postgres</literal> or <literal>template1</literal> database
- is in a non-default tablespace (Marti Raudsepp, Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to handle object privileges sanely when
- dumping from a server too old to have a particular privilege type
- (Tom Lane)
- </para>
-
- <para>
- When dumping data types from pre-9.2 servers, and when dumping
- functions or procedural languages from pre-7.3
- servers, <application>pg_dump</application> would
- produce <command>GRANT</command>/<command>REVOKE</command> commands that revoked the
- owner's grantable privileges and instead granted all privileges
- to <literal>PUBLIC</literal>. Since the privileges involved are
- just <literal>USAGE</literal> and <literal>EXECUTE</literal>, this isn't a security
- problem, but it's certainly a surprising representation of the older
- systems' behavior. Fix it to leave the default privilege state alone
- in these cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to dump shell types (Tom Lane)
- </para>
-
- <para>
- Shell types (that is, not-yet-fully-defined types) aren't useful for
- much, but nonetheless <application>pg_dump</application> should dump them.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted minor memory leaks in <application>pg_dump</application> and other
- client-side programs (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix spinlock assembly code for PPC hardware to be compatible
- with <acronym>AIX</acronym>'s native assembler (Tom Lane)
- </para>
-
- <para>
- Building with <application>gcc</application> didn't work if <application>gcc</application>
- had been configured to use the native assembler, which is becoming more
- common.
- </para>
- </listitem>
-
- <listitem>
- <para>
- On <acronym>AIX</acronym>, test the <literal>-qlonglong</literal> compiler option
- rather than just assuming it's safe to use (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- On <acronym>AIX</acronym>, use <literal>-Wl,-brtllib</literal> link option to allow
- symbols to be resolved at runtime (Noah Misch)
- </para>
-
- <para>
- Perl relies on this ability in 5.8.0 and later.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid use of inline functions when compiling with
- 32-bit <application>xlc</application>, due to compiler bugs (Noah Misch)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <filename>librt</filename> for <function>sched_yield()</function> when necessary,
- which it is on some Solaris versions (Oskari Saarenmaa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix Windows <filename>install.bat</filename> script to handle target directory
- names that contain spaces (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make the numeric form of the <productname>PostgreSQL</productname> version number
- (e.g., <literal>90405</literal>) readily available to extension Makefiles,
- as a variable named <varname>VERSION_NUM</varname> (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2015g for
- DST law changes in Cayman Islands, Fiji, Moldova, Morocco, Norfolk
- Island, North Korea, Turkey, and Uruguay. There is a new zone name
- <literal>America/Fort_Nelson</literal> for the Canadian Northern Rockies.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-9">
- <title>Release 9.3.9</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-06-12</para>
- </formalpara>
-
- <para>
- This release contains a small number of fixes from 9.3.8.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.9</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading an installation that was previously
- upgraded using a <application>pg_upgrade</application> version between 9.3.0 and
- 9.3.4 inclusive, see the first changelog entry below.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.7,
- see <xref linkend="release-9-3-7"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix possible failure to recover from an inconsistent database state
- (Robert Haas)
- </para>
-
- <para>
- Recent <productname>PostgreSQL</productname> releases introduced mechanisms to
- protect against multixact wraparound, but some of that code did not
- account for the possibility that it would need to run during crash
- recovery, when the database may not be in a consistent state. This
- could result in failure to restart after a crash, or failure to start
- up a secondary server. The lingering effects of a previously-fixed
- bug in <application>pg_upgrade</application> could also cause such a failure, in
- installations that had used <application>pg_upgrade</application> versions
- between 9.3.0 and 9.3.4.
- </para>
-
- <para>
- The <application>pg_upgrade</application> bug in question was that it would
- set <literal>oldestMultiXid</literal> to 1 in <filename>pg_control</filename> even
- if the true value should be higher. With the fixes introduced in
- this release, such a situation will result in immediate emergency
- autovacuuming until a correct <literal>oldestMultiXid</literal> value can be
- determined. If that would pose a hardship, users can avoid it by
- doing manual vacuuming <emphasis>before</emphasis> upgrading to this release.
- In detail:
-
- <orderedlist>
- <listitem>
- <para>
- Check whether <application>pg_controldata</application> reports <quote>Latest
- checkpoint's oldestMultiXid</quote> to be 1. If not, there's nothing
- to do.
- </para>
- </listitem>
- <listitem>
- <para>
- Look in <filename>PGDATA/pg_multixact/offsets</filename> to see if there's a
- file named <filename>0000</filename>. If there is, there's nothing to do.
- </para>
- </listitem>
- <listitem>
- <para>
- Otherwise, for each table that has
- <structname>pg_class</structname>.<structfield>relminmxid</structfield> equal to 1,
- <command>VACUUM</command> that table with
- both <xref linkend="guc-vacuum-multixact-freeze-min-age"/>
- and <xref linkend="guc-vacuum-multixact-freeze-table-age"/> set to
- zero. (You can use the vacuum cost delay parameters described
- in <xref linkend="runtime-config-resource-vacuum-cost"/> to reduce
- the performance consequences for concurrent sessions.) You must
- use <productname>PostgreSQL</productname> 9.3.5 or later to perform this step.
- </para>
- </listitem>
- </orderedlist>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix rare failure to invalidate relation cache init file (Tom Lane)
- </para>
-
- <para>
- With just the wrong timing of concurrent activity, a <command>VACUUM
- FULL</command> on a system catalog might fail to update the <quote>init file</quote>
- that's used to avoid cache-loading work for new sessions. This would
- result in later sessions being unable to access that catalog at all.
- This is a very ancient bug, but it's so hard to trigger that no
- reproducible case had been seen until recently.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid deadlock between incoming sessions and <literal>CREATE/DROP
- DATABASE</literal> (Tom Lane)
- </para>
-
- <para>
- A new session starting in a database that is the target of
- a <command>DROP DATABASE</command> command, or is the template for
- a <command>CREATE DATABASE</command> command, could cause the command to wait
- for five seconds and then fail, even if the new session would have
- exited before that.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve planner's cost estimates for semi-joins and anti-joins with
- inner indexscans (Tom Lane, Tomas Vondra)
- </para>
-
- <para>
- This type of plan is quite cheap when all the join clauses are used
- as index scan conditions, even if the inner scan would nominally
- fetch many rows, because the executor will stop after obtaining one
- row. The planner only partially accounted for that effect, and would
- therefore overestimate the cost, leading it to possibly choose some
- other much less efficient plan type.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-8">
- <title>Release 9.3.8</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-06-04</para>
- </formalpara>
-
- <para>
- This release contains a small number of fixes from 9.3.7.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.8</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are upgrading from a version earlier than 9.3.7,
- see <xref linkend="release-9-3-7"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Avoid failures while <function>fsync</function>'ing data directory during
- crash restart (Abhijit Menon-Sen, Tom Lane)
- </para>
-
- <para>
- In the previous minor releases we added a patch to <function>fsync</function>
- everything in the data directory after a crash. Unfortunately its
- response to any error condition was to fail, thereby preventing the
- server from starting up, even when the problem was quite harmless.
- An example is that an unwritable file in the data directory would
- prevent restart on some platforms; but it is common to make SSL
- certificate files unwritable by the server. Revise this behavior so
- that permissions failures are ignored altogether, and other types of
- failures are logged but do not prevent continuing.
- </para>
-
- <para>
- Also apply the same rules in <literal>initdb --sync-only</literal>.
- This case is less critical but it should act similarly.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>pg_get_functiondef()</function> to show
- functions' <literal>LEAKPROOF</literal> property, if set (Jeevan Chalke)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <application>configure</application>'s check prohibiting linking to a
- threaded <application>libpython</application>
- on <systemitem class="osname">OpenBSD</systemitem> (Tom Lane)
- </para>
-
- <para>
- The failure this restriction was meant to prevent seems to not be a
- problem anymore on current <systemitem class="osname">OpenBSD</systemitem>
- versions.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [c6b7b9a9c] 2015-05-21 20:41:55 -0400
-Branch: REL9_2_STABLE [b78fbfe65] 2015-05-21 20:41:55 -0400
-Branch: REL9_1_STABLE [2c2c5f0e0] 2015-05-21 20:41:55 -0400
-Branch: REL9_0_STABLE [4dddf8552] 2015-05-21 20:41:55 -0400
--->
-
- <listitem>
- <para>
- Allow <application>libpq</application> to use TLS protocol versions beyond v1
- (Noah Misch)
- </para>
-
- <para>
- For a long time, <application>libpq</application> was coded so that the only SSL
- protocol it would allow was TLS v1. Now that newer TLS versions are
- becoming popular, allow it to negotiate the highest commonly-supported
- TLS version with the server. (<productname>PostgreSQL</productname> servers were
- already capable of such negotiation, so no change is needed on the
- server side.) This is a back-patch of a change already released in
- 9.4.0.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-7">
- <title>Release 9.3.7</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-05-22</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.6.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.7</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you use <filename>contrib/citext</filename>'s
- <function>regexp_matches()</function> functions, see the changelog entry below
- about that.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.6,
- see <xref linkend="release-9-3-6"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Avoid possible crash when client disconnects just before the
- authentication timeout expires (Benkocs Norbert Attila)
- </para>
-
- <para>
- If the timeout interrupt fired partway through the session shutdown
- sequence, SSL-related state would be freed twice, typically causing a
- crash and hence denial of service to other sessions. Experimentation
- shows that an unauthenticated remote attacker could trigger the bug
- somewhat consistently, hence treat as security issue.
- (CVE-2015-3165)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve detection of system-call failures (Noah Misch)
- </para>
-
- <para>
- Our replacement implementation of <function>snprintf()</function> failed to
- check for errors reported by the underlying system library calls;
- the main case that might be missed is out-of-memory situations.
- In the worst case this might lead to information exposure, due to our
- code assuming that a buffer had been overwritten when it hadn't been.
- Also, there were a few places in which security-relevant calls of other
- system library functions did not check for failure.
- </para>
-
- <para>
- It remains possible that some calls of the <function>*printf()</function>
- family of functions are vulnerable to information disclosure if an
- out-of-memory error occurs at just the wrong time. We judge the risk
- to not be large, but will continue analysis in this area.
- (CVE-2015-3166)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <filename>contrib/pgcrypto</filename>, uniformly report decryption failures
- as <quote>Wrong key or corrupt data</quote> (Noah Misch)
- </para>
-
- <para>
- Previously, some cases of decryption with an incorrect key could report
- other error message texts. It has been shown that such variance in
- error reports can aid attackers in recovering keys from other systems.
- While it's unknown whether <filename>pgcrypto</filename>'s specific behaviors
- are likewise exploitable, it seems better to avoid the risk by using a
- one-size-fits-all message.
- (CVE-2015-3167)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Protect against wraparound of multixact member IDs
- (&Aacute;lvaro Herrera, Robert Haas, Thomas Munro)
- </para>
-
- <para>
- Under certain usage patterns, the existing defenses against this might
- be insufficient, allowing <filename>pg_multixact/members</filename> files to be
- removed too early, resulting in data loss.
- The fix for this includes modifying the server to fail transactions
- that would result in overwriting old multixact member ID data, and
- improving autovacuum to ensure it will act proactively to prevent
- multixact member ID wraparound, as it does for transaction ID
- wraparound.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect declaration of <filename>contrib/citext</filename>'s
- <function>regexp_matches()</function> functions (Tom Lane)
- </para>
-
- <para>
- These functions should return <type>setof text[]</type>, like the core
- functions they are wrappers for; but they were incorrectly declared as
- returning just <type>text[]</type>. This mistake had two results: first,
- if there was no match you got a scalar null result, whereas what you
- should get is an empty set (zero rows). Second, the <literal>g</literal> flag
- was effectively ignored, since you would get only one result array even
- if there were multiple matches.
- </para>
-
- <para>
- While the latter behavior is clearly a bug, there might be applications
- depending on the former behavior; therefore the function declarations
- will not be changed by default until <productname>PostgreSQL</productname> 9.5.
- In pre-9.5 branches, the old behavior exists in version 1.0 of
- the <literal>citext</literal> extension, while we have provided corrected
- declarations in version 1.1 (which is <emphasis>not</emphasis> installed by
- default). To adopt the fix in pre-9.5 branches, execute
- <literal>ALTER EXTENSION citext UPDATE TO '1.1'</literal> in each database in
- which <literal>citext</literal> is installed. (You can also <quote>update</quote>
- back to 1.0 if you need to undo that.) Be aware that either update
- direction will require dropping and recreating any views or rules that
- use <filename>citext</filename>'s <function>regexp_matches()</function> functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect checking of deferred exclusion constraints after a HOT
- update (Tom Lane)
- </para>
-
- <para>
- If a new row that potentially violates a deferred exclusion constraint
- is HOT-updated (that is, no indexed columns change and the row can be
- stored back onto the same table page) later in the same transaction,
- the exclusion constraint would be reported as violated when the check
- finally occurred, even if the row(s) the new row originally conflicted
- with had been deleted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planning of star-schema-style queries (Tom Lane)
- </para>
-
- <para>
- Sometimes, efficient scanning of a large table requires that index
- parameters be provided from more than one other table (commonly,
- dimension tables whose keys are needed to index a large fact table).
- The planner should be able to find such plans, but an overly
- restrictive search heuristic prevented it.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent improper reordering of antijoins (NOT EXISTS joins) versus
- other outer joins (Tom Lane)
- </para>
-
- <para>
- This oversight in the planner has been observed to cause <quote>could
- not find RelOptInfo for given relids</quote> errors, but it seems possible
- that sometimes an incorrect query plan might get past that consistency
- check and result in silently-wrong query output.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect matching of subexpressions in outer-join plan nodes
- (Tom Lane)
- </para>
-
- <para>
- Previously, if textually identical non-strict subexpressions were used
- both above and below an outer join, the planner might try to re-use
- the value computed below the join, which would be incorrect because the
- executor would force the value to NULL in case of an unmatched outer row.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix GEQO planner to cope with failure of its join order heuristic
- (Tom Lane)
- </para>
-
- <para>
- This oversight has been seen to lead to <quote>failed to join all
- relations together</quote> errors in queries involving <literal>LATERAL</literal>,
- and that might happen in other cases as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible deadlock at startup
- when <literal>max_prepared_transactions</literal> is too small
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Don't archive useless preallocated WAL files after a timeline switch
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Recursively <function>fsync()</function> the data directory after a crash
- (Abhijit Menon-Sen, Robert Haas)
- </para>
-
- <para>
- This ensures consistency if another crash occurs shortly later. (The
- second crash would have to be a system-level crash, not just a database
- crash, for there to be a problem.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix autovacuum launcher's possible failure to shut down, if an error
- occurs after it receives SIGTERM (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cope with unexpected signals in <function>LockBufferForCleanup()</function>
- (Andres Freund)
- </para>
-
- <para>
- This oversight could result in spurious errors about <quote>multiple
- backends attempting to wait for pincount 1</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash when doing <literal>COPY IN</literal> to a table with check
- constraints that contain whole-row references (Tom Lane)
- </para>
-
- <para>
- The known failure case only crashes in 9.4 and up, but there is very
- similar code in 9.3 and 9.2, so back-patch those branches as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid waiting for WAL flush or synchronous replication during commit of
- a transaction that was read-only so far as the user is concerned
- (Andres Freund)
- </para>
-
- <para>
- Previously, a delay could occur at commit in transactions that had
- written WAL due to HOT page pruning, leading to undesirable effects
- such as sessions getting stuck at startup if all synchronous replicas
- are down. Sessions have also been observed to get stuck in catchup
- interrupt processing when using synchronous replication; this will fix
- that problem as well.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix crash when manipulating hash indexes on temporary tables
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible failure during hash index bucket split, if other processes
- are modifying the index concurrently (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Check for interrupts while analyzing index expressions (Jeff Janes)
- </para>
-
- <para>
- <command>ANALYZE</command> executes index expressions many times; if there are
- slow functions in such an expression, it's desirable to be able to
- cancel the <command>ANALYZE</command> before that loop finishes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure <structfield>tableoid</structfield> of a foreign table is reported
- correctly when a <literal>READ COMMITTED</literal> recheck occurs after
- locking rows in <command>SELECT FOR UPDATE</command>, <command>UPDATE</command>,
- or <command>DELETE</command> (Etsuro Fujita)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the name of the target server to object description strings for
- foreign-server user mappings (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Include the schema name in object identity strings for conversions
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Recommend setting <literal>include_realm</literal> to 1 when using
- Kerberos/GSSAPI/SSPI authentication (Stephen Frost)
- </para>
-
- <para>
- Without this, identically-named users from different realms cannot be
- distinguished. For the moment this is only a documentation change, but
- it will become the default setting in <productname>PostgreSQL</productname> 9.5.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove code for matching IPv4 <filename>pg_hba.conf</filename> entries to
- IPv4-in-IPv6 addresses (Tom Lane)
- </para>
-
- <para>
- This hack was added in 2003 in response to a report that some Linux
- kernels of the time would report IPv4 connections as having
- IPv4-in-IPv6 addresses. However, the logic was accidentally broken in
- 9.0. The lack of any field complaints since then shows that it's not
- needed anymore. Now we have reports that the broken code causes
- crashes on some systems, so let's just remove it rather than fix it.
- (Had we chosen to fix it, that would make for a subtle and potentially
- security-sensitive change in the effective meaning of
- IPv4 <filename>pg_hba.conf</filename> entries, which does not seem like a good
- thing to do in minor releases.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Report WAL flush, not insert, position in <literal>IDENTIFY_SYSTEM</literal>
- replication command (Heikki Linnakangas)
- </para>
-
- <para>
- This avoids a possible startup failure
- in <application>pg_receivexlog</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- While shutting down service on Windows, periodically send status
- updates to the Service Control Manager to prevent it from killing the
- service too soon; and ensure that <application>pg_ctl</application> will wait for
- shutdown (Krystian Bigaj)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce risk of network deadlock when using <application>libpq</application>'s
- non-blocking mode (Heikki Linnakangas)
- </para>
-
- <para>
- When sending large volumes of data, it's important to drain the input
- buffer every so often, in case the server has sent enough response data
- to cause it to block on output. (A typical scenario is that the server
- is sending a stream of NOTICE messages during <literal>COPY FROM
- STDIN</literal>.) This worked properly in the normal blocking mode, but not
- so much in non-blocking mode. We've modified <application>libpq</application>
- to opportunistically drain input when it can, but a full defense
- against this problem requires application cooperation: the application
- should watch for socket read-ready as well as write-ready conditions,
- and be sure to call <function>PQconsumeInput()</function> upon read-ready.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>libpq</application>, fix misparsing of empty values in URI
- connection strings (Thomas Fanghaenel)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix array handling in <application>ecpg</application> (Michael Meskes)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>psql</application> to sanely handle URIs and conninfo strings as
- the first parameter to <command>\connect</command>
- (David Fetter, Andrew Dunstan, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This syntax has been accepted (but undocumented) for a long time, but
- previously some parameters might be taken from the old connection
- instead of the given string, which was agreed to be undesirable.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress incorrect complaints from <application>psql</application> on some
- platforms that it failed to write <filename>~/.psql_history</filename> at exit
- (Tom Lane)
- </para>
-
- <para>
- This misbehavior was caused by a workaround for a bug in very old
- (pre-2006) versions of <application>libedit</application>. We fixed it by
- removing the workaround, which will cause a similar failure to appear
- for anyone still using such versions of <application>libedit</application>.
- Recommendation: upgrade that library, or use <application>libreadline</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dump</application>'s rule for deciding which casts are
- system-provided casts that should not be dumped (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_dump</application>, fix failure to honor <literal>-Z</literal>
- compression level option together with <literal>-Fd</literal>
- (Michael Paquier)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> consider foreign key relationships
- between extension configuration tables while choosing dump order
- (Gilles Darold, Michael Paquier, Stephen Frost)
- </para>
-
- <para>
- This oversight could result in producing dumps that fail to reload
- because foreign key constraints are transiently violated.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid possible <application>pg_dump</application> failure when concurrent sessions
- are creating and dropping temporary functions (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dumping of views that are just <literal>VALUES(...)</literal> but have
- column aliases (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, force timeline 1 in the new cluster
- (Bruce Momjian)
- </para>
-
- <para>
- This change prevents upgrade failures caused by bogus complaints about
- missing WAL history files.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, check for improperly non-connectable
- databases before proceeding
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, quote directory paths
- properly in the generated <literal>delete_old_cluster</literal> script
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, preserve database-level freezing info
- properly
- (Bruce Momjian)
- </para>
-
- <para>
- This oversight could cause missing-clog-file errors for tables within
- the <literal>postgres</literal> and <literal>template1</literal> databases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Run <application>pg_upgrade</application> and <application>pg_resetxlog</application> with
- restricted privileges on Windows, so that they don't fail when run by
- an administrator (Muhammad Asif Naeem)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve handling of <function>readdir()</function> failures when scanning
- directories in <application>initdb</application> and <application>pg_basebackup</application>
- (Marco Nenciarini)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix slow sorting algorithm in <filename>contrib/intarray</filename> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix compile failure on Sparc V8 machines (Rob Rowan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Silence some build warnings on macOS (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2015d
- for DST law changes in Egypt, Mongolia, and Palestine, plus historical
- changes in Canada and Chile. Also adopt revised zone abbreviations for
- the America/Adak zone (HST/HDT not HAST/HADT).
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-6">
- <title>Release 9.3.6</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2015-02-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.5.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.6</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you are a Windows user and are using the <quote>Norwegian
- (Bokm&aring;l)</quote> locale, manual action is needed after the upgrade to
- replace any <quote>Norwegian (Bokm&aring;l)_Norway</quote> locale names stored
- in <productname>PostgreSQL</productname> system catalogs with the plain-ASCII
- alias <quote>Norwegian_Norway</quote>. For details see
- <ulink url="http://wiki.postgresql.org/wiki/Changes_To_Norwegian_Locale"></ulink>
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.5,
- see <xref linkend="release-9-3-5"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [0150ab567] 2015-02-02 10:00:44 -0500
-Branch: REL9_4_STABLE [1628a0bbf] 2015-02-02 10:00:49 -0500
-Branch: REL9_3_STABLE [b8b580147] 2015-02-02 10:00:50 -0500
-Branch: REL9_2_STABLE [5ae3bf1af] 2015-02-02 10:00:50 -0500
-Branch: REL9_1_STABLE [037529a11] 2015-02-02 10:00:51 -0500
-Branch: REL9_0_STABLE [611e110aa] 2015-02-02 10:00:52 -0500
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [9241c84cb] 2015-02-02 10:00:45 -0500
-Branch: REL9_4_STABLE [56d2bee9d] 2015-02-02 10:00:49 -0500
-Branch: REL9_3_STABLE [fe2526990] 2015-02-02 10:00:50 -0500
-Branch: REL9_2_STABLE [e09651e9d] 2015-02-02 10:00:50 -0500
-Branch: REL9_1_STABLE [2ceb63deb] 2015-02-02 10:00:51 -0500
-Branch: REL9_0_STABLE [56b970f2e] 2015-02-02 10:00:52 -0500
--->
-
- <listitem>
- <para>
- Fix buffer overruns in <function>to_char()</function>
- (Bruce Momjian)
- </para>
-
- <para>
- When <function>to_char()</function> processes a numeric formatting template
- calling for a large number of digits, <productname>PostgreSQL</productname>
- would read past the end of a buffer. When processing a crafted
- timestamp formatting template, <productname>PostgreSQL</productname> would write
- past the end of a buffer. Either case could crash the server.
- We have not ruled out the possibility of attacks that lead to
- privilege escalation, though they seem unlikely.
- (CVE-2015-0241)
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [29725b3db] 2015-02-02 10:00:45 -0500
-Branch: REL9_4_STABLE [2ac95c83c] 2015-02-02 10:00:49 -0500
-Branch: REL9_3_STABLE [bc4d5f2e5] 2015-02-02 10:00:50 -0500
-Branch: REL9_2_STABLE [c6c6aa288] 2015-02-02 10:00:51 -0500
-Branch: REL9_1_STABLE [98f2479d8] 2015-02-02 10:00:51 -0500
-Branch: REL9_0_STABLE [9e05c5063] 2015-02-02 10:00:52 -0500
--->
-
- <listitem>
- <para>
- Fix buffer overrun in replacement <function>*printf()</function> functions
- (Tom Lane)
- </para>
-
- <para>
- <productname>PostgreSQL</productname> includes a replacement implementation
- of <function>printf</function> and related functions. This code will overrun
- a stack buffer when formatting a floating point number (conversion
- specifiers <literal>e</literal>, <literal>E</literal>, <literal>f</literal>, <literal>F</literal>,
- <literal>g</literal> or <literal>G</literal>) with requested precision greater than
- about 500. This will crash the server, and we have not ruled out the
- possibility of attacks that lead to privilege escalation.
- A database user can trigger such a buffer overrun through
- the <function>to_char()</function> SQL function. While that is the only
- affected core <productname>PostgreSQL</productname> functionality, extension
- modules that use printf-family functions may be at risk as well.
- </para>
-
- <para>
- This issue primarily affects <productname>PostgreSQL</productname> on Windows.
- <productname>PostgreSQL</productname> uses the system implementation of these
- functions where adequate, which it is on other modern platforms.
- (CVE-2015-0242)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [1dc755158] 2015-02-02 10:00:45 -0500
-Branch: REL9_4_STABLE [82806cf4e] 2015-02-02 10:00:49 -0500
-Branch: REL9_3_STABLE [6994f0790] 2015-02-02 10:00:50 -0500
-Branch: REL9_2_STABLE [d95ebe0ac] 2015-02-02 10:00:51 -0500
-Branch: REL9_1_STABLE [11f738a8a] 2015-02-02 10:00:51 -0500
-Branch: REL9_0_STABLE [ce6f261cd] 2015-02-02 10:00:52 -0500
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [8b59672d8] 2015-02-02 10:00:45 -0500
-Branch: REL9_4_STABLE [258e294db] 2015-02-02 10:00:49 -0500
-Branch: REL9_3_STABLE [a558ad3a7] 2015-02-02 10:00:50 -0500
-Branch: REL9_2_STABLE [d1972da8c] 2015-02-02 10:00:51 -0500
-Branch: REL9_1_STABLE [8d412e02e] 2015-02-02 10:00:52 -0500
-Branch: REL9_0_STABLE [0a3ee8a5f] 2015-02-02 10:00:52 -0500
--->
-
- <listitem>
- <para>
- Fix buffer overruns in <filename>contrib/pgcrypto</filename>
- (Marko Tiikkaja, Noah Misch)
- </para>
-
- <para>
- Errors in memory size tracking within the <filename>pgcrypto</filename>
- module permitted stack buffer overruns and improper dependence on the
- contents of uninitialized memory. The buffer overrun cases can
- crash the server, and we have not ruled out the possibility of
- attacks that lead to privilege escalation.
- (CVE-2015-0243)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [2b3a8b20c] 2015-02-02 17:09:53 +0200
-Branch: REL9_4_STABLE [57ec87c6b] 2015-02-02 17:09:46 +0200
-Branch: REL9_3_STABLE [cd19848bd] 2015-02-02 17:09:40 +0200
-Branch: REL9_2_STABLE [289592b23] 2015-02-02 17:09:35 +0200
-Branch: REL9_1_STABLE [af9c5c074] 2015-02-02 17:09:31 +0200
-Branch: REL9_0_STABLE [47ba0fbd7] 2015-02-02 17:09:25 +0200
--->
-
- <listitem>
- <para>
- Fix possible loss of frontend/backend protocol synchronization after
- an error
- (Heikki Linnakangas)
- </para>
-
- <para>
- If any error occurred while the server was in the middle of reading a
- protocol message from the client, it could lose synchronization and
- incorrectly try to interpret part of the message's data as a new
- protocol message. An attacker able to submit crafted binary data
- within a command parameter might succeed in injecting his own SQL
- commands this way. Statement timeout and query cancellation are the
- most likely sources of errors triggering this scenario. Particularly
- vulnerable are applications that use a timeout and also submit
- arbitrary user-crafted data as binary query parameters. Disabling
- statement timeout will reduce, but not eliminate, the risk of
- exploit. Our thanks to Emil Lenngren for reporting this issue.
- (CVE-2015-0244)
- </para>
- </listitem>
-
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [804b6b6db] 2015-01-28 12:31:30 -0500
-Branch: REL9_4_STABLE [3cc74a3d6] 2015-01-28 12:32:06 -0500
-Branch: REL9_3_STABLE [4b9874216] 2015-01-28 12:32:39 -0500
-Branch: REL9_2_STABLE [d49f84b08] 2015-01-28 12:32:56 -0500
-Branch: REL9_1_STABLE [9406884af] 2015-01-28 12:33:15 -0500
-Branch: REL9_0_STABLE [3a2063369] 2015-01-28 12:33:29 -0500
--->
-
- <listitem>
- <para>
- Fix information leak via constraint-violation error messages
- (Stephen Frost)
- </para>
-
- <para>
- Some server error messages show the values of columns that violate
- a constraint, such as a unique constraint. If the user does not have
- <literal>SELECT</literal> privilege on all columns of the table, this could
- mean exposing values that the user should not be able to see. Adjust
- the code so that values are displayed only when they came from the SQL
- command or could be selected by the user.
- (CVE-2014-8161)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [f6dc6dd5b] 2014-12-17 22:48:40 -0500
-Branch: REL9_4_STABLE [6b87d423d] 2014-12-17 22:48:45 -0500
-Branch: REL9_3_STABLE [442dc2c35] 2014-12-17 22:48:46 -0500
-Branch: REL9_2_STABLE [0046f651d] 2014-12-17 22:48:47 -0500
-Branch: REL9_1_STABLE [6aa98e957] 2014-12-17 22:48:47 -0500
-Branch: REL9_0_STABLE [6d45ee572] 2014-12-17 22:48:48 -0500
--->
-
- <listitem>
- <para>
- Lock down regression testing's temporary installations on Windows
- (Noah Misch)
- </para>
-
- <para>
- Use SSPI authentication to allow connections only from the OS user
- who launched the test suite. This closes on Windows the same
- vulnerability previously closed on other platforms, namely that other
- users might be able to connect to the test postmaster.
- (CVE-2014-0067)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [8f80dcf3c] 2014-10-24 19:59:49 +0300
-Branch: REL9_2_STABLE [d440c4b55] 2014-10-24 19:59:52 +0300
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [2a1b34959] 2014-10-24 19:36:28 +0300
-Branch: REL9_2_STABLE [737ae3fc7] 2014-10-24 19:53:27 +0300
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [aa1d2fc5e] 2015-01-16 13:28:19 +0200
-Branch: REL9_4_STABLE [2049a7d82] 2015-01-16 13:10:06 +0200
-Branch: REL9_3_STABLE [1619442a1] 2015-01-16 13:10:15 +0200
-Branch: REL9_2_STABLE [6bf343c6e] 2015-01-16 13:10:23 +0200
--->
-
- <listitem>
- <para>
- Cope with the Windows locale named <quote>Norwegian (Bokm&aring;l)</quote>
- (Heikki Linnakangas)
- </para>
-
- <para>
- Non-ASCII locale names are problematic since it's not clear what
- encoding they should be represented in. Map the troublesome locale
- name to a plain-ASCII alias, <quote>Norwegian_Norway</quote>.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [f88300168] 2014-11-04 13:24:14 -0500
-Branch: REL9_2_STABLE [db72ad02e] 2014-11-04 13:24:17 -0500
-Branch: REL9_1_STABLE [7c6f55e9e] 2014-11-04 13:24:22 -0500
-Branch: REL9_0_STABLE [45a607d5c] 2014-11-04 13:24:26 -0500
--->
-
- <listitem>
- <para>
- Avoid possible data corruption if <command>ALTER DATABASE SET
- TABLESPACE</command> is used to move a database to a new tablespace and then
- shortly later move it back to its original tablespace (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [81f0a5e38] 2014-10-29 18:12:08 -0400
-Branch: REL9_2_STABLE [40058fbce] 2014-10-29 18:12:11 -0400
-Branch: REL9_1_STABLE [6ec1c3ef8] 2014-10-29 18:12:17 -0400
-Branch: REL9_0_STABLE [9d06da58e] 2014-10-29 18:12:20 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [e65b550b3] 2014-10-30 13:03:28 -0400
-Branch: REL9_2_STABLE [38cb8687a] 2014-10-30 13:03:31 -0400
-Branch: REL9_1_STABLE [fcf0246b2] 2014-10-30 13:03:34 -0400
-Branch: REL9_0_STABLE [73f950fc8] 2014-10-30 13:03:39 -0400
--->
-
- <listitem>
- <para>
- Avoid corrupting tables when <command>ANALYZE</command> inside a transaction
- is rolled back (Andres Freund, Tom Lane, Michael Paquier)
- </para>
-
- <para>
- If the failing transaction had earlier removed the last index, rule, or
- trigger from the table, the table would be left in a corrupted state
- with the relevant <structname>pg_class</structname> flags not set though they
- should be.
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: REL9_3_STABLE [d7624e562] 2014-10-20 23:45:31 +0200
-Branch: REL9_2_STABLE [fd29810d1] 2014-10-20 23:47:00 +0200
-Branch: REL9_1_STABLE [d5fef87e9] 2014-10-20 23:47:45 +0200
--->
-
- <listitem>
- <para>
- Ensure that unlogged tables are copied correctly
- during <command>CREATE DATABASE</command> or <command>ALTER DATABASE SET
- TABLESPACE</command> (Pavan Deolasee, Andres Freund)
- </para>
- </listitem>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: REL9_3_STABLE [e35db342a] 2014-09-22 16:19:59 -0400
--->
-
- <listitem>
- <para>
- Fix incorrect processing
- of <structname>CreateEventTrigStmt</structname>.<structfield>eventname</structfield> (Petr
- Jelinek)
- </para>
-
- <para>
- This could result in misbehavior if <command>CREATE EVENT TRIGGER</command>
- were executed as a prepared query, or via extended query protocol.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [2a83e0349] 2014-11-11 17:00:21 -0500
-Branch: REL9_2_STABLE [1c2f9a4f6] 2014-11-11 17:00:25 -0500
-Branch: REL9_1_STABLE [94d5d57d5] 2014-11-11 17:00:28 -0500
--->
-
- <listitem>
- <para>
- Fix <command>DROP</command>'s dependency searching to correctly handle the
- case where a table column is recursively visited before its table
- (Petr Jelinek, Tom Lane)
- </para>
-
- <para>
- This case is only known to arise when an extension creates both a
- datatype and a table using that datatype. The faulty code might
- refuse a <command>DROP EXTENSION</command> unless <literal>CASCADE</literal> is
- specified, which should not be required.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c480cb9d2] 2015-01-15 18:52:58 -0500
-Branch: REL9_4_STABLE [b75d18bd4] 2015-01-15 18:53:05 -0500
-Branch: REL9_3_STABLE [34668c8ec] 2015-01-15 18:52:28 -0500
-Branch: REL9_2_STABLE [0acb32efb] 2015-01-15 18:52:31 -0500
-Branch: REL9_1_STABLE [450530fce] 2015-01-15 18:52:34 -0500
-Branch: REL9_0_STABLE [5308e085b] 2015-01-15 18:52:38 -0500
--->
-
- <listitem>
- <para>
- Fix use-of-already-freed-memory problem in EvalPlanQual processing
- (Tom Lane)
- </para>
-
- <para>
- In <literal>READ COMMITTED</literal> mode, queries that lock or update
- recently-updated rows could crash as a result of this bug.
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [0e5680f47] 2014-12-26 13:52:27 -0300
-Branch: REL9_4_STABLE [0e3a1f71d] 2014-12-26 13:52:27 -0300
-Branch: REL9_3_STABLE [048912386] 2014-12-26 13:52:27 -0300
--->
-
- <listitem>
- <para>
- Avoid possible deadlock while trying to acquire tuple locks
- in EvalPlanQual processing (&Aacute;lvaro Herrera, Mark Kirkwood)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [d5e3d1e96] 2015-01-04 15:48:29 -0300
-Branch: REL9_4_STABLE [51742063b] 2015-01-04 15:48:29 -0300
-Branch: REL9_3_STABLE [54a8abc2b] 2015-01-04 15:48:29 -0300
--->
-
- <listitem>
- <para>
- Fix failure to wait when a transaction tries to acquire a <literal>FOR
- NO KEY EXCLUSIVE</literal> tuple lock, while multiple other transactions
- currently hold <literal>FOR SHARE</literal> locks (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [2ae8a01ca] 2014-12-11 21:02:31 -0500
-Branch: REL9_2_STABLE [cd63c57e5] 2014-12-11 21:02:34 -0500
-Branch: REL9_1_STABLE [bca39b578] 2014-12-11 21:02:38 -0500
-Branch: REL9_0_STABLE [662eebdc6] 2014-12-11 21:02:41 -0500
--->
-
- <listitem>
- <para>
- Fix planning of <command>SELECT FOR UPDATE</command> when using a partial
- index on a child table (Kyotaro Horiguchi)
- </para>
-
- <para>
- In <literal>READ COMMITTED</literal> mode, <command>SELECT FOR UPDATE</command> must
- also recheck the partial index's <literal>WHERE</literal> condition when
- rechecking a recently-updated row to see if it still satisfies the
- query's <literal>WHERE</literal> condition. This requirement was missed if the
- index belonged to an inheritance child table, so that it was possible
- to incorrectly return rows that no longer satisfy the query condition.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [f14196c35] 2014-12-11 19:37:07 -0500
-Branch: REL9_2_STABLE [deadbf4f3] 2014-12-11 19:37:10 -0500
-Branch: REL9_1_STABLE [21946ac9b] 2014-12-11 19:37:14 -0500
-Branch: REL9_0_STABLE [f5e4e92fb] 2014-12-11 19:37:17 -0500
--->
-
- <listitem>
- <para>
- Fix corner case wherein <command>SELECT FOR UPDATE</command> could return a row
- twice, and possibly miss returning other rows (Tom Lane)
- </para>
-
- <para>
- In <literal>READ COMMITTED</literal> mode, a <command>SELECT FOR UPDATE</command>
- that is scanning an inheritance tree could incorrectly return a row
- from a prior child table instead of the one it should return from a
- later child table.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a5cd70dcb] 2015-01-15 13:18:12 -0500
-Branch: REL9_4_STABLE [d25192892] 2015-01-15 13:18:16 -0500
-Branch: REL9_3_STABLE [939f0fb67] 2015-01-15 13:18:19 -0500
--->
-
- <listitem>
- <para>
- Improve performance of <command>EXPLAIN</command> with large range tables
- (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [7a9c8cefb] 2014-08-09 13:46:42 -0400
-Branch: REL9_2_STABLE [b4dacab12] 2014-08-09 13:46:45 -0400
-Branch: REL9_1_STABLE [bbe826f21] 2014-08-09 13:46:48 -0400
-Branch: REL9_0_STABLE [4ff49746e] 2014-08-09 13:46:52 -0400
--->
-
- <listitem>
- <para>
- Reject duplicate column names in the referenced-columns list of
- a <literal>FOREIGN KEY</literal> declaration (David Rowley)
- </para>
-
- <para>
- This restriction is per SQL standard. Previously we did not reject
- the case explicitly, but later on the code would fail with
- bizarre-looking errors.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [6306d0712] 2014-07-22 13:30:14 -0400
--->
-
- <listitem>
- <para>
- Re-enable error for <literal>SELECT ... OFFSET -1</literal> (Tom Lane)
- </para>
-
- <para>
- A negative offset value has been an error since 8.4, but an
- optimization added in 9.3 accidentally turned the case into a no-op.
- Restore the expected behavior.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [8b65e0a33] 2014-08-09 18:40:34 -0400
-Branch: REL9_2_STABLE [15026ab97] 2014-08-09 18:40:38 -0400
--->
-
- <listitem>
- <para>
- Restore previous behavior of conversion of domains to JSON
- (Tom Lane)
- </para>
-
- <para>
- This change causes domains over numeric and boolean to be treated
- like their base types for purposes of conversion to JSON. It worked
- like that before 9.3.5 and 9.2.9, but was unintentionally changed
- while fixing a related problem.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [8571ecb24] 2014-12-02 15:02:43 -0500
--->
-
- <listitem>
- <para>
- Fix <function>json_agg()</function> to not return extra trailing right
- brackets in its result (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [25bf13fe1] 2014-09-11 23:30:57 -0400
-Branch: REL9_2_STABLE [228ed4370] 2014-09-11 23:31:00 -0400
-Branch: REL9_1_STABLE [cf5c20b06] 2014-09-11 23:31:03 -0400
-Branch: REL9_0_STABLE [26f8a4691] 2014-09-11 23:31:06 -0400
--->
-
- <listitem>
- <para>
- Fix bugs in raising a <type>numeric</type> value to a large integral power
- (Tom Lane)
- </para>
-
- <para>
- The previous code could get a wrong answer, or consume excessive
- amounts of time and memory before realizing that the answer must
- overflow.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [10b81fbdc] 2014-12-01 15:25:08 -0500
-Branch: REL9_2_STABLE [e640042e9] 2014-12-01 15:25:12 -0500
-Branch: REL9_1_STABLE [2e3cc3955] 2014-12-01 15:25:15 -0500
-Branch: REL9_0_STABLE [e6550626c] 2014-12-01 15:25:18 -0500
--->
-
- <listitem>
- <para>
- In <function>numeric_recv()</function>, truncate away any fractional digits
- that would be hidden according to the value's <literal>dscale</literal> field
- (Tom Lane)
- </para>
-
- <para>
- A <type>numeric</type> value's display scale (<literal>dscale</literal>) should
- never be less than the number of nonzero fractional digits; but
- apparently there's at least one broken client application that
- transmits binary <type>numeric</type> values in which that's true.
- This leads to strange behavior since the extra digits are taken into
- account by arithmetic operations even though they aren't printed.
- The least risky fix seems to be to truncate away such <quote>hidden</quote>
- digits on receipt, so that the value is indeed what it prints as.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [bbfdf5d75] 2014-09-23 20:25:36 -0400
-Branch: REL9_2_STABLE [3359a818c] 2014-09-23 20:25:39 -0400
--->
-
- <listitem>
- <para>
- Fix incorrect search for shortest-first regular expression matches
- (Tom Lane)
- </para>
-
- <para>
- Matching would often fail when the number of allowed iterations is
- limited by a <literal>?</literal> quantifier or a bound expression.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [7672bbca0] 2014-07-21 22:41:27 -0400
-Branch: REL9_2_STABLE [f54d97c5e] 2014-07-21 22:41:30 -0400
-Branch: REL9_1_STABLE [124331b61] 2014-07-21 22:41:33 -0400
-Branch: REL9_0_STABLE [6e5a39c9e] 2014-07-21 22:41:36 -0400
--->
-
- <listitem>
- <para>
- Reject out-of-range numeric timezone specifications (Tom Lane)
- </para>
-
- <para>
- Simple numeric timezone specifications exceeding +/- 168 hours (one
- week) would be accepted, but could then cause null-pointer dereference
- crashes in certain operations. There's no use-case for such large UTC
- offsets, so reject them.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [1aa526f3f] 2014-10-27 10:51:29 +0200
-Branch: REL9_2_STABLE [604d94d4c] 2014-10-27 10:51:33 +0200
-Branch: REL9_1_STABLE [4d1c738d1] 2014-10-27 10:51:36 +0200
-Branch: REL9_0_STABLE [10059c2da] 2014-10-27 10:51:38 +0200
--->
-
- <listitem>
- <para>
- Fix bugs in <type>tsquery</type> <literal>@&gt;</literal> <type>tsquery</type>
- operator (Heikki Linnakangas)
- </para>
-
- <para>
- Two different terms would be considered to match if they had the same
- CRC. Also, if the second operand had more terms than the first, it
- would be assumed not to be contained in the first; which is wrong
- since it might contain duplicate terms.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [385f0d98a] 2014-10-23 13:11:34 -0400
-Branch: REL9_2_STABLE [f09369da8] 2014-10-23 13:11:37 -0400
-Branch: REL9_1_STABLE [94de3a679] 2014-10-23 13:11:41 -0400
-Branch: REL9_0_STABLE [21fa26b65] 2014-10-23 13:11:45 -0400
--->
-
- <listitem>
- <para>
- Improve ispell dictionary's defenses against bad affix files (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [5a74ff373] 2014-11-06 20:52:52 -0500
-Branch: REL9_2_STABLE [0bb318595] 2014-11-06 20:52:57 -0500
-Branch: REL9_1_STABLE [076688084] 2014-11-06 20:53:02 -0500
-Branch: REL9_0_STABLE [39493e4d9] 2014-11-06 20:53:07 -0500
--->
-
- <listitem>
- <para>
- Allow more than 64K phrases in a thesaurus dictionary (David Boutin)
- </para>
-
- <para>
- The previous coding could crash on an oversize dictionary, so this was
- deemed a back-patchable bug fix rather than a feature addition.
- </para>
- </listitem>
-
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [79af9a1d2] 2015-01-06 23:06:13 -0500
-Branch: REL9_4_STABLE [6bbf75192] 2015-01-17 22:11:20 -0500
-Branch: REL9_3_STABLE [e32cb8d0e] 2015-01-17 22:13:27 -0500
-Branch: REL9_2_STABLE [c8ef5b1ac] 2015-01-17 22:14:21 -0500
-Branch: REL9_1_STABLE [c975fa471] 2015-01-17 22:37:07 -0500
-Branch: REL9_0_STABLE [cebb3f032] 2015-01-17 22:37:32 -0500
--->
-
- <listitem>
- <para>
- Fix namespace handling in <function>xpath()</function> (Ali Akbar)
- </para>
-
- <para>
- Previously, the <type>xml</type> value resulting from
- an <function>xpath()</function> call would not have namespace declarations if
- the namespace declarations were attached to an ancestor element in the
- input <type>xml</type> value, rather than to the specific element being
- returned. Propagate the ancestral declaration so that the result is
- correct when considered in isolation.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [07ab4ec4c] 2014-11-10 15:21:20 -0500
-Branch: REL9_2_STABLE [19ccaf9d4] 2014-11-10 15:21:26 -0500
--->
-
- <listitem>
- <para>
- Ensure that whole-row variables expose nonempty column names
- to functions that pay attention to column names within composite
- arguments (Tom Lane)
- </para>
-
- <para>
- In some contexts, constructs like <literal>row_to_json(tab.*)</literal> may
- not produce the expected column names. This is fixed properly as of
- 9.4; in older branches, just ensure that we produce some nonempty
- name. (In some cases this will be the underlying table's column name
- rather than the query-assigned alias that should theoretically be
- visible.)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [c57cdc9c1] 2014-11-22 16:01:12 -0500
-Branch: REL9_2_STABLE [906599f65] 2014-11-22 16:01:15 -0500
--->
-
- <listitem>
- <para>
- Fix mishandling of system columns,
- particularly <structfield>tableoid</structfield>, in FDW queries (Etsuro Fujita)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [3d660d33a] 2015-01-30 12:30:59 -0500
-Branch: REL9_4_STABLE [b6a164e5c] 2015-01-30 12:31:08 -0500
-Branch: REL9_3_STABLE [527ff8baf] 2015-01-30 12:30:43 -0500
--->
-
- <listitem>
- <para>
- Fix assorted oversights in range-operator selectivity estimation
- (Emre Hasegeli)
- </para>
-
- <para>
- This patch fixes corner-case <quote>unexpected operator NNNN</quote> planner
- errors, and improves the selectivity estimates for some other cases.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [f6abf8f08] 2014-10-26 16:12:29 -0400
-Branch: REL9_2_STABLE [4586572d7] 2014-10-26 16:12:32 -0400
--->
-
- <listitem>
- <para>
- Avoid doing <literal><replaceable>indexed_column</replaceable> = ANY
- (<replaceable>array</replaceable>)</literal> as an index qualifier if that leads
- to an inferior plan (Andrew Gierth)
- </para>
-
- <para>
- In some cases, <literal>= ANY</literal> conditions applied to non-first index
- columns would be done as index conditions even though it would be
- better to use them as simple filter conditions.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [4e54685d0] 2014-10-20 12:23:48 -0400
--->
-
- <listitem>
- <para>
- Fix <quote>variable not found in subplan target list</quote> planner
- failure when an inline-able SQL function taking a composite argument
- is used in a <literal>LATERAL</literal> subselect and the composite argument
- is a lateral reference (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [b2b95de61] 2014-10-01 19:30:30 -0400
-Branch: REL9_2_STABLE [71b88cf52] 2014-10-01 19:30:34 -0400
-Branch: REL9_1_STABLE [477023e94] 2014-10-01 19:30:38 -0400
-Branch: REL9_0_STABLE [288f15b7c] 2014-10-01 19:30:41 -0400
--->
-
- <listitem>
- <para>
- Fix planner problems with nested append relations, such as inherited
- tables within <literal>UNION ALL</literal> subqueries (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [ef8ac584e] 2014-10-03 14:50:29 +0300
-Branch: REL9_2_STABLE [8e137b075] 2014-10-03 14:50:40 +0300
-Branch: REL9_1_STABLE [f270a1611] 2014-10-03 14:50:46 +0300
-Branch: REL9_0_STABLE [f04b112d5] 2014-10-03 14:50:58 +0300
--->
-
- <listitem>
- <para>
- Fail cleanly when a GiST index tuple doesn't fit on a page, rather
- than going into infinite recursion (Andrew Gierth)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: REL9_3_STABLE [67ed9d531] 2014-10-03 13:01:27 -0300
-Branch: REL9_2_STABLE [769d6815e] 2014-10-03 13:01:27 -0300
-Branch: REL9_1_STABLE [06646f52e] 2014-10-03 13:01:27 -0300
-Branch: REL9_0_STABLE [50a757698] 2014-10-03 13:01:27 -0300
--->
-
- <listitem>
- <para>
- Exempt tables that have per-table <varname>cost_limit</varname>
- and/or <varname>cost_delay</varname> settings from autovacuum's global cost
- balancing rules (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- The previous behavior resulted in basically ignoring these per-table
- settings, which was unintended. Now, a table having such settings
- will be vacuumed using those settings, independently of what is going
- on in other autovacuum workers. This may result in heavier total I/O
- load than before, so such settings should be re-examined for sanity.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [4cbecdaaa] 2014-07-30 14:41:49 -0400
-Branch: REL9_2_STABLE [c83aed34b] 2014-07-30 14:41:53 -0400
-Branch: REL9_1_STABLE [f21afe421] 2014-07-30 14:41:58 -0400
-Branch: REL9_0_STABLE [91b4a881c] 2014-07-30 14:42:12 -0400
--->
-
- <listitem>
- <para>
- Avoid wholesale autovacuuming when autovacuum is nominally off
- (Tom Lane)
- </para>
-
- <para>
- Even when autovacuum is nominally off, we will still launch autovacuum
- worker processes to vacuum tables that are at risk of XID wraparound.
- However, such a worker process then proceeded to vacuum all tables in
- the target database, if they met the usual thresholds for
- autovacuuming. This is at best pretty unexpected; at worst it delays
- response to the wraparound threat. Fix it so that if autovacuum is
- turned off, workers <emphasis>only</emphasis> do anti-wraparound vacuums and
- not any other work.
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: REL9_3_STABLE [2c3ebfd1a] 2014-11-15 01:21:07 +0100
-Branch: REL9_2_STABLE [ea8b3833e] 2014-11-15 01:21:45 +0100
-Branch: REL9_1_STABLE [d85b646d0] 2014-11-15 01:22:32 +0100
-Author: Andres Freund <andres@anarazel.de>
-Branch: REL9_3_STABLE [672b43e68] 2014-11-15 01:21:02 +0100
-Branch: REL9_2_STABLE [c5baa708f] 2014-11-15 01:21:40 +0100
-Branch: REL9_1_STABLE [fde9994bc] 2014-11-15 01:22:32 +0100
-Author: Andres Freund <andres@anarazel.de>
-Branch: REL9_3_STABLE [c7299d32f] 2014-11-15 01:20:29 +0100
-Branch: REL9_2_STABLE [86673a44a] 2014-11-15 01:21:30 +0100
-Branch: REL9_1_STABLE [b0a48e996] 2014-11-15 01:22:32 +0100
--->
-
- <listitem>
- <para>
- During crash recovery, ensure that unlogged relations are rewritten as
- empty and are synced to disk before recovery is considered complete
- (Abhijit Menon-Sen, Andres Freund)
- </para>
-
- <para>
- This prevents scenarios in which unlogged relations might contain
- garbage data following database crash recovery.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [861d3aa43] 2014-11-13 20:01:55 +0200
-Branch: REL9_2_STABLE [7eab804c2] 2014-11-13 20:01:18 +0200
-Branch: REL9_1_STABLE [5f1d931cf] 2014-11-13 20:01:09 +0200
-Branch: REL9_0_STABLE [681dbe7d4] 2014-11-13 20:00:51 +0200
--->
-
- <listitem>
- <para>
- Fix race condition between hot standby queries and replaying a
- full-page image (Heikki Linnakangas)
- </para>
-
- <para>
- This mistake could result in transient errors in queries being
- executed in hot standby.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [a2a718b22] 2014-07-29 11:57:52 +0300
-Branch: REL9_2_STABLE [1578d13dc] 2014-07-29 11:58:01 +0300
-Branch: REL9_1_STABLE [de88ec6bf] 2014-07-29 11:58:09 +0300
-Branch: REL9_0_STABLE [804983961] 2014-07-29 11:58:17 +0300
--->
-
- <listitem>
- <para>
- Fix several cases where recovery logic improperly ignored WAL records
- for <literal>COMMIT/ABORT PREPARED</literal> (Heikki Linnakangas)
- </para>
-
- <para>
- The most notable oversight was
- that <varname>recovery_target_xid</varname> could not be used to stop at
- a two-phase commit.
- </para>
- </listitem>
-
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: REL9_3_STABLE [d45cd9e19] 2014-10-23 16:22:46 +0900
-Branch: REL9_2_STABLE [f904e9afd] 2014-10-23 16:31:44 +0900
--->
-
- <listitem>
- <para>
- Prevent latest WAL file from being archived a second time at completion
- of crash recovery (Fujii Masao)
- </para>
- </listitem>
-
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: REL9_3_STABLE [3a3b7e316] 2014-11-06 21:25:18 +0900
-Branch: REL9_2_STABLE [38eb5d9e8] 2014-11-06 21:25:45 +0900
-Branch: REL9_1_STABLE [4e7468074] 2014-11-06 21:26:15 +0900
-Branch: REL9_0_STABLE [83c7bfb9a] 2014-11-06 21:26:21 +0900
--->
-
- <listitem>
- <para>
- Avoid creating unnecessary <filename>.ready</filename> marker files for
- timeline history files (Fujii Masao)
- </para>
- </listitem>
-
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: REL9_3_STABLE [52eed3d42] 2014-09-05 02:19:29 +0900
-Branch: REL9_2_STABLE [78b1228ef] 2014-09-05 02:19:45 +0900
-Branch: REL9_1_STABLE [81bffe63c] 2014-09-05 02:19:50 +0900
-Branch: REL9_0_STABLE [857a5d6b5] 2014-09-05 02:19:57 +0900
--->
-
- <listitem>
- <para>
- Fix possible null pointer dereference when an empty prepared statement
- is used and the <varname>log_statement</varname> setting is <literal>mod</literal>
- or <literal>ddl</literal> (Fujii Masao)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [75b48e1ff] 2015-01-19 23:01:33 -0500
-Branch: REL9_4_STABLE [3387cbbcb] 2015-01-19 23:01:36 -0500
-Branch: REL9_3_STABLE [19794e997] 2015-01-19 23:01:39 -0500
-Branch: REL9_2_STABLE [33b723538] 2015-01-19 23:01:41 -0500
-Branch: REL9_1_STABLE [b87c1dcef] 2015-01-19 23:01:44 -0500
-Branch: REL9_0_STABLE [a1a8d0249] 2015-01-19 23:01:46 -0500
--->
-
- <listitem>
- <para>
- Change <quote>pgstat wait timeout</quote> warning message to be LOG level,
- and rephrase it to be more understandable (Tom Lane)
- </para>
-
- <para>
- This message was originally thought to be essentially a can't-happen
- case, but it occurs often enough on our slower buildfarm members to be
- a nuisance. Reduce it to LOG level, and expend a bit more effort on
- the wording: it now reads <quote>using stale statistics instead of
- current ones because stats collector is not responding</quote>.
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: REL9_3_STABLE [cbd9619ac] 2014-10-01 14:34:06 +0200
--->
-
- <listitem>
- <para>
- Fix possible corruption of postmaster's list of dynamic background
- workers (Andres Freund)
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: REL9_3_STABLE [27ef6b653] 2014-09-09 23:37:33 +0200
-Branch: REL9_2_STABLE [d0b7ffc0f] 2014-09-09 23:37:50 +0200
-Branch: REL9_1_STABLE [5af508f66] 2014-09-09 23:45:07 +0200
-Branch: REL9_0_STABLE [f25e89601] 2014-09-09 23:48:03 +0200
--->
-
- <listitem>
- <para>
- Fix SPARC spinlock implementation to ensure correctness if the CPU is
- being run in a non-TSO coherency mode, as some non-Solaris kernels do
- (Andres Freund)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [894459e59] 2015-01-07 22:35:44 -0500
-Branch: REL9_4_STABLE [83fb1ca5c] 2015-01-07 22:36:35 -0500
-Branch: REL9_3_STABLE [1a366d51e] 2015-01-07 22:40:40 -0500
-Branch: REL9_2_STABLE [5ca4e444c] 2015-01-07 22:41:49 -0500
-Branch: REL9_1_STABLE [8dc83104e] 2015-01-07 22:42:42 -0500
-Branch: REL9_0_STABLE [2e4946169] 2015-01-07 22:46:20 -0500
--->
-
- <listitem>
- <para>
- Warn if macOS's <function>setlocale()</function> starts an unwanted extra
- thread inside the postmaster (Noah Misch)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [08cd4d9a6] 2014-11-25 17:39:00 +0200
-Branch: REL9_2_STABLE [9b468bcec] 2014-11-25 17:39:04 +0200
-Branch: REL9_1_STABLE [95be34362] 2014-11-25 17:39:07 +0200
-Branch: REL9_0_STABLE [9880fea4f] 2014-11-25 17:39:09 +0200
--->
-
- <listitem>
- <para>
- Fix processing of repeated <literal>dbname</literal> parameters
- in <function>PQconnectdbParams()</function> (Alex Shulgin)
- </para>
-
- <para>
- Unexpected behavior ensued if the first occurrence
- of <literal>dbname</literal> contained a connection string or URI to be
- expanded.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [52ef33f72] 2014-10-22 18:41:51 -0400
-Branch: REL9_2_STABLE [6fa31d8d1] 2014-10-22 18:41:54 -0400
-Branch: REL9_1_STABLE [98144378c] 2014-10-22 18:41:57 -0400
-Branch: REL9_0_STABLE [ac6e87537] 2014-10-22 18:42:01 -0400
--->
-
- <listitem>
- <para>
- Ensure that <application>libpq</application> reports a suitable error message on
- unexpected socket EOF (Marko Tiikkaja, Tom Lane)
- </para>
-
- <para>
- Depending on kernel behavior, <application>libpq</application> might return an
- empty error string rather than something useful when the server
- unexpectedly closed the socket.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [1325b239b] 2014-10-29 14:40:47 +0200
-Branch: REL9_2_STABLE [1a27fbd07] 2014-10-29 14:39:10 +0200
-Branch: REL9_1_STABLE [8f7bd8e91] 2014-10-29 14:36:19 +0200
-Branch: REL9_0_STABLE [49ef4eba2] 2014-10-29 14:35:39 +0200
--->
-
- <listitem>
- <para>
- Clear any old error message during <function>PQreset()</function>
- (Heikki Linnakangas)
- </para>
-
- <para>
- If <function>PQreset()</function> is called repeatedly, and the connection
- cannot be re-established, error messages from the failed connection
- attempts kept accumulating in the <structname>PGconn</structname>'s error
- string.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [d3b162a3d] 2014-11-25 14:10:29 +0200
-Branch: REL9_2_STABLE [abcab2a64] 2014-11-25 14:10:43 +0200
-Branch: REL9_1_STABLE [5053ad206] 2014-11-25 14:10:48 +0200
-Branch: REL9_0_STABLE [1f3517039] 2014-11-25 14:10:54 +0200
--->
-
- <listitem>
- <para>
- Properly handle out-of-memory conditions while parsing connection
- options in <application>libpq</application> (Alex Shulgin, Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [d3cfe20c6] 2014-10-06 21:23:35 -0400
-Branch: REL9_2_STABLE [b513205bc] 2014-10-06 21:23:39 -0400
-Branch: REL9_1_STABLE [037b912ec] 2014-10-06 21:23:45 -0400
-Branch: REL9_0_STABLE [d9a1e9de5] 2014-10-06 21:23:50 -0400
--->
-
- <listitem>
- <para>
- Fix array overrun in <application>ecpg</application>'s version
- of <function>ParseDateTime()</function> (Michael Paquier)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [2df66f01a] 2014-12-05 14:31:51 +0200
-Branch: REL9_2_STABLE [2b53d583d] 2014-12-05 14:31:45 +0200
-Branch: REL9_1_STABLE [729202754] 2014-12-05 14:31:37 +0200
-Branch: REL9_0_STABLE [d67be559e] 2014-12-05 14:30:55 +0200
--->
-
- <listitem>
- <para>
- In <application>initdb</application>, give a clearer error message if a password
- file is specified but is empty (Mats Erik Andersson)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [b0fd5c552] 2014-09-08 16:09:52 -0400
-Branch: REL9_2_STABLE [886b58b47] 2014-09-08 16:09:56 -0400
-Branch: REL9_1_STABLE [440fcc568] 2014-09-08 16:10:01 -0400
-Branch: REL9_0_STABLE [44c518328] 2014-09-08 16:10:05 -0400
--->
-
- <listitem>
- <para>
- Fix <application>psql</application>'s <command>\s</command> command to work nicely with
- libedit, and add pager support (Stepan Rutz, Tom Lane)
- </para>
-
- <para>
- When using libedit rather than readline, <command>\s</command> printed the
- command history in a fairly unreadable encoded format, and on recent
- libedit versions might fail altogether. Fix that by printing the
- history ourselves rather than having the library do it. A pleasant
- side-effect is that the pager is used if appropriate.
- </para>
-
- <para>
- This patch also fixes a bug that caused newline encoding to be applied
- inconsistently when saving the command history with libedit.
- Multiline history entries written by older <application>psql</application>
- versions will be read cleanly with this patch, but perhaps not
- vice versa, depending on the exact libedit versions involved.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [28551797a] 2014-12-31 12:18:50 -0500
-Branch: REL9_4_STABLE [c35249939] 2014-12-31 12:16:57 -0500
-Branch: REL9_3_STABLE [7582cce56] 2014-12-31 12:17:00 -0500
-Branch: REL9_2_STABLE [64c506535] 2014-12-31 12:17:04 -0500
-Branch: REL9_1_STABLE [1773e0702] 2014-12-31 12:17:08 -0500
-Branch: REL9_0_STABLE [2600e4436] 2014-12-31 12:17:12 -0500
--->
-
- <listitem>
- <para>
- Improve consistency of parsing of <application>psql</application>'s special
- variables (Tom Lane)
- </para>
-
- <para>
- Allow variant spellings of <literal>on</literal> and <literal>off</literal> (such
- as <literal>1</literal>/<literal>0</literal>) for <literal>ECHO_HIDDEN</literal>
- and <literal>ON_ERROR_ROLLBACK</literal>. Report a warning for unrecognized
- values for <literal>COMP_KEYWORD_CASE</literal>, <literal>ECHO</literal>,
- <literal>ECHO_HIDDEN</literal>, <literal>HISTCONTROL</literal>,
- <literal>ON_ERROR_ROLLBACK</literal>, and <literal>VERBOSITY</literal>. Recognize
- all values for all these variables case-insensitively; previously
- there was a mishmash of case-sensitive and case-insensitive behaviors.
- </para>
- </listitem>
-
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: REL9_3_STABLE [4b1953079] 2014-11-28 02:44:40 +0900
--->
-
- <listitem>
- <para>
- Make <application>psql</application>'s <command>\watch</command> command display
- nulls as specified by <command>\pset null</command> (Fujii Masao)
- </para>
- </listitem>
-
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: REL9_3_STABLE [7ec399094] 2014-09-12 11:24:28 -0400
-Branch: REL9_2_STABLE [5d63f2159] 2014-09-12 11:24:32 -0400
-Branch: REL9_1_STABLE [4d96e93cb] 2014-09-12 11:24:36 -0400
-Branch: REL9_0_STABLE [1f89fc218] 2014-09-12 11:24:39 -0400
--->
-
- <listitem>
- <para>
- Fix <application>psql</application>'s expanded-mode display to work
- consistently when using <literal>border</literal> = 3
- and <literal>linestyle</literal> = <literal>ascii</literal> or <literal>unicode</literal>
- (Stephen Frost)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [adfc157dd] 2015-01-05 19:27:04 -0500
-Branch: REL9_4_STABLE [c99e41f68] 2015-01-05 19:27:06 -0500
-Branch: REL9_3_STABLE [bb1e2426b] 2015-01-05 19:27:09 -0500
--->
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to handle comments on event triggers
- without failing (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Kevin Grittner <kgrittn@postgresql.org>
-Branch: master [cff1bd2a3] 2015-01-30 08:57:24 -0600
-Branch: REL9_4_STABLE [cb0168528] 2015-01-30 08:57:53 -0600
-Branch: REL9_3_STABLE [cc609c46f] 2015-01-30 09:01:36 -0600
--->
-
- <listitem>
- <para>
- Allow parallel <application>pg_dump</application> to
- use <option>--serializable-deferrable</option> (Kevin Grittner)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [51fc61334] 2014-07-25 19:48:48 -0400
-Branch: REL9_2_STABLE [a6c567437] 2014-07-25 19:48:51 -0400
-Branch: REL9_1_STABLE [40c333c39] 2014-07-25 19:48:54 -0400
--->
-
- <listitem>
- <para>
- Improve performance of <application>pg_dump</application> when the database
- contains many instances of multiple dependency paths between the same
- two objects (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [9fc887121] 2014-11-13 18:19:32 -0500
-Branch: REL9_2_STABLE [3c5ce5102] 2014-11-13 18:19:35 -0500
--->
-
- <listitem>
- <para>
- Fix <application>pg_dumpall</application> to restore its ability to dump from
- pre-8.1 servers (Gilles Darold)
- </para>
- </listitem>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: REL9_3_STABLE [d72ecc91c] 2014-09-26 11:23:43 -0400
-Branch: REL9_2_STABLE [a97c8c393] 2014-09-26 11:25:57 -0400
-Branch: REL9_1_STABLE [d1844c21b] 2014-09-26 11:36:25 -0400
-Branch: REL9_0_STABLE [bbe3c069a] 2014-09-26 11:43:56 -0400
--->
-
- <listitem>
- <para>
- Fix possible deadlock during parallel restore of a schema-only dump
- (Robert Haas, Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [9a540c1ef] 2014-10-17 12:49:06 -0400
-Branch: REL9_2_STABLE [787e20bd4] 2014-10-17 12:49:09 -0400
-Branch: REL9_1_STABLE [0c9391e52] 2014-10-17 12:49:11 -0400
-Branch: REL9_0_STABLE [31021e7ba] 2014-10-17 12:49:15 -0400
--->
-
- <listitem>
- <para>
- Fix core dump in <literal>pg_dump --binary-upgrade</literal> on zero-column
- composite type (Rushabh Lathia)
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: REL9_3_STABLE [26a4e0ed7] 2014-11-15 01:21:11 +0100
--->
-
- <listitem>
- <para>
- Fix failure to fsync tables in nondefault tablespaces
- during <application>pg_upgrade</application> (Abhijit Menon-Sen, Andres Freund)
- </para>
-
- <para>
- With an operating system crash and some bad luck, this could result in
- data loss during an upgrade.
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: REL9_3_STABLE [fca9f349b] 2014-08-07 14:56:13 -0400
--->
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, cope with cases where the new cluster
- creates a TOAST table for a table that didn't previously have one
- (Bruce Momjian)
- </para>
-
- <para>
- Previously this could result in failures due to OID conflicts.
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: REL9_3_STABLE [24ae44914] 2014-08-04 11:45:45 -0400
--->
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, don't try to
- set <literal>autovacuum_multixact_freeze_max_age</literal> for the old cluster
- (Bruce Momjian)
- </para>
-
- <para>
- This could result in failure because not all 9.3.X versions have that
- parameter. Fortunately, we don't actually need to set it at all.
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: REL9_3_STABLE [5724f491d] 2014-09-11 18:39:46 -0400
--->
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, preserve the transaction ID epoch
- (Bruce Momjian)
- </para>
-
- <para>
- This oversight did not bother <productname>PostgreSQL</productname> proper,
- but could confuse some external replication tools.
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [2c0a48589] 2015-01-03 20:54:12 +0100
-Branch: REL9_4_STABLE [90e4a2bf9] 2015-01-03 20:54:13 +0100
-Branch: REL9_3_STABLE [f6cea4502] 2015-01-03 20:54:13 +0100
-Branch: REL9_2_STABLE [f961ad479] 2015-01-03 20:54:13 +0100
-Branch: REL9_1_STABLE [2a0bfa4d6] 2015-01-03 20:54:13 +0100
--->
-
- <listitem>
- <para>
- Prevent WAL files created by <literal>pg_basebackup -x/-X</literal> from
- being archived again when the standby is promoted (Andres Freund)
- </para>
- </listitem>
-
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: REL9_3_STABLE [9747a9898] 2014-08-02 15:19:45 +0900
--->
-
- <listitem>
- <para>
- Fix memory leak in <application>pg_receivexlog</application> (Fujii Masao)
- </para>
- </listitem>
-
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: REL9_3_STABLE [39217ce41] 2014-08-02 14:59:10 +0900
--->
-
- <listitem>
- <para>
- Fix unintended suppression of <application>pg_receivexlog</application> verbose
- messages (Fujii Masao)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [9474c9d81] 2014-09-19 13:19:02 -0400
-Branch: REL9_2_STABLE [5ff8c2d7d] 2014-09-19 13:19:05 -0400
--->
-
- <listitem>
- <para>
- Fix failure of <filename>contrib/auto_explain</filename> to print per-node
- timing information when doing <command>EXPLAIN ANALYZE</command> (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [0ad403c98] 2014-08-28 18:21:14 -0400
-Branch: REL9_2_STABLE [f3998521f] 2014-08-28 18:21:17 -0400
-Branch: REL9_1_STABLE [9807c8220] 2014-08-28 18:21:20 -0400
--->
-
- <listitem>
- <para>
- Fix upgrade-from-unpackaged script for <filename>contrib/citext</filename>
- (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [f44290b7b] 2014-11-04 16:54:59 -0500
--->
-
- <listitem>
- <para>
- Avoid integer overflow and buffer overrun
- in <filename>contrib/hstore</filename>'s <function>hstore_to_json()</function>
- (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: REL9_3_STABLE [55c880797] 2014-12-01 11:44:48 -0500
--->
-
- <listitem>
- <para>
- Fix recognition of numbers in <function>hstore_to_json_loose()</function>,
- so that JSON numbers and strings are correctly distinguished
- (Andrew Dunstan)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [f59c8eff7] 2014-07-22 11:45:53 -0400
-Branch: REL9_2_STABLE [810f0d2a2] 2014-07-22 11:45:57 -0400
-Branch: REL9_1_STABLE [3c5232ae8] 2014-07-22 11:46:00 -0400
-Branch: REL9_0_STABLE [9dc2a3fd0] 2014-07-22 11:46:04 -0400
--->
-
- <listitem>
- <para>
- Fix block number checking
- in <filename>contrib/pageinspect</filename>'s <function>get_raw_page()</function>
- (Tom Lane)
- </para>
-
- <para>
- The incorrect checking logic could prevent access to some pages in
- non-main relation forks.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [419de696a] 2014-11-11 17:22:38 -0500
-Branch: REL9_2_STABLE [4a9710e6e] 2014-11-11 17:22:44 -0500
-Branch: REL9_1_STABLE [4ddd9e72f] 2014-11-11 17:22:51 -0500
-Branch: REL9_0_STABLE [ef5a3b957] 2014-11-11 17:22:58 -0500
--->
-
- <listitem>
- <para>
- Fix <filename>contrib/pgcrypto</filename>'s <function>pgp_sym_decrypt()</function>
- to not fail on messages whose length is 6 less than a power of 2
- (Marko Tiikkaja)
- </para>
- </listitem>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: REL9_3_STABLE [8cf825974] 2014-11-19 12:14:22 -0500
-Branch: REL9_2_STABLE [57ce74661] 2014-11-19 12:20:47 -0500
-Branch: REL9_1_STABLE [a855c90a7] 2014-11-19 12:26:06 -0500
--->
-
- <listitem>
- <para>
- Fix file descriptor leak in <filename>contrib/pg_test_fsync</filename>
- (Jeff Janes)
- </para>
-
- <para>
- This could cause failure to remove temporary files on Windows.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [37507962c] 2015-01-29 20:18:33 -0500
-Branch: REL9_4_STABLE [202621d04] 2015-01-29 20:18:37 -0500
-Branch: REL9_3_STABLE [53ae24692] 2015-01-29 20:18:40 -0500
-Branch: REL9_2_STABLE [66cc74680] 2015-01-29 20:18:42 -0500
-Branch: REL9_1_STABLE [290c2daad] 2015-01-29 20:18:44 -0500
-Branch: REL9_0_STABLE [dc9a506e6] 2015-01-29 20:18:46 -0500
--->
-
- <listitem>
- <para>
- Handle unexpected query results, especially NULLs, safely in
- <filename>contrib/tablefunc</filename>'s <function>connectby()</function>
- (Michael Paquier)
- </para>
-
- <para>
- <function>connectby()</function> previously crashed if it encountered a NULL
- key value. It now prints that row but doesn't recurse further.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [c393847a1] 2014-11-27 11:12:51 -0500
-Branch: REL9_2_STABLE [a1cd04cd0] 2014-11-27 11:12:55 -0500
-Branch: REL9_1_STABLE [168636a99] 2014-11-27 11:12:59 -0500
-Branch: REL9_0_STABLE [6a694bbab] 2014-11-27 11:13:03 -0500
--->
-
- <listitem>
- <para>
- Avoid a possible crash in <filename>contrib/xml2</filename>'s
- <function>xslt_process()</function> (Mark Simonetti)
- </para>
-
- <para>
- <application>libxslt</application> seems to have an undocumented dependency on
- the order in which resources are freed; reorder our calls to avoid a
- crash.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [0247935c7] 2014-11-05 11:34:19 -0500
-Branch: REL9_2_STABLE [0ef754cad] 2014-11-05 11:34:22 -0500
-Branch: REL9_1_STABLE [7225abf00] 2014-11-05 11:34:25 -0500
--->
-
- <listitem>
- <para>
- Mark some <filename>contrib</filename> I/O functions with correct volatility
- properties (Tom Lane)
- </para>
-
- <para>
- The previous over-conservative marking was immaterial in normal use,
- but could cause optimization problems or rejection of valid index
- expression definitions. Since the consequences are not large, we've
- just adjusted the function definitions in the extension modules'
- scripts, without changing version numbers.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a59ee8819] 2015-01-30 13:05:30 -0500
-Branch: REL9_4_STABLE [70da7aeba] 2015-01-30 13:04:59 -0500
-Branch: REL9_3_STABLE [f08cf8ad9] 2015-01-30 13:05:01 -0500
-Branch: REL9_2_STABLE [a97dfdfd9] 2015-01-30 13:05:04 -0500
-Branch: REL9_1_STABLE [8f51c432c] 2015-01-30 13:05:07 -0500
-Branch: REL9_0_STABLE [7c41a32b3] 2015-01-30 13:05:09 -0500
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [8824bae87] 2014-11-18 13:28:13 -0500
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [0b49642b9] 2015-01-15 09:26:03 -0500
-Branch: REL9_4_STABLE [7b65f194e] 2015-01-15 09:29:41 -0500
-Branch: REL9_3_STABLE [ebbef4f39] 2015-01-15 09:29:55 -0500
-Branch: REL9_2_STABLE [d452bfd1b] 2015-01-15 09:42:21 -0500
-Branch: REL9_1_STABLE [151fb75b0] 2015-01-15 09:42:33 -0500
-Branch: REL9_0_STABLE [0a67c0018] 2015-01-15 09:42:47 -0500
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [e37d474f9] 2015-01-13 14:33:05 +0200
-Branch: REL9_4_STABLE [4ebb3494e] 2015-01-13 16:01:04 +0200
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [8cadeb792] 2015-01-04 15:44:49 +0100
-Branch: REL9_4_STABLE [7ced1b6c5] 2015-01-04 15:52:52 +0100
-Branch: REL9_3_STABLE [a68b8aec7] 2015-01-04 15:53:08 +0100
-Branch: REL9_2_STABLE [6f9b84a40] 2015-01-04 15:55:00 +0100
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [58bc4747b] 2015-01-04 15:35:46 +0100
-Branch: REL9_4_STABLE [2d8411a0a] 2015-01-04 15:35:46 +0100
-Branch: REL9_3_STABLE [d33f36f16] 2015-01-04 15:35:47 +0100
-Branch: REL9_2_STABLE [029e41afd] 2015-01-04 15:35:47 +0100
-Branch: REL9_1_STABLE [39cdf365a] 2015-01-04 15:35:47 +0100
-Branch: REL9_0_STABLE [17797e18d] 2015-01-04 15:35:48 +0100
-Author: Andres Freund <andres@anarazel.de>
-Branch: master [0398ece4c] 2015-01-04 14:36:21 +0100
-Branch: REL9_4_STABLE [ff7d46b85] 2015-01-04 14:36:21 +0100
-Branch: REL9_3_STABLE [ec14f1601] 2015-01-04 14:36:22 +0100
-Branch: REL9_2_STABLE [f4060db11] 2015-01-04 14:36:22 +0100
-Author: Tatsuo Ishii <ishii@postgresql.org>
-Branch: master [3b5a89c48] 2014-12-30 20:33:01 +0900
-Branch: REL9_4_STABLE [458e8bc65] 2014-12-30 20:27:26 +0900
-Branch: REL9_3_STABLE [ed0e03283] 2014-12-30 20:20:56 +0900
-Branch: REL9_2_STABLE [4db7eaae0] 2014-12-30 19:59:26 +0900
-Branch: REL9_1_STABLE [4c136b0b6] 2014-12-30 19:48:53 +0900
-Branch: REL9_0_STABLE [9b74f3574] 2014-12-30 19:37:55 +0900
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [66709133c] 2014-12-16 15:35:33 -0500
-Branch: REL9_4_STABLE [383d224a0] 2014-12-16 15:35:36 -0500
-Branch: REL9_3_STABLE [53960e7eb] 2014-12-16 15:35:40 -0500
-Branch: REL9_2_STABLE [e92c67ddc] 2014-12-16 15:35:43 -0500
-Branch: REL9_1_STABLE [5c784d96a] 2014-12-16 15:35:46 -0500
-Branch: REL9_0_STABLE [a2969bd72] 2014-12-16 15:35:49 -0500
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d38e8d30c] 2014-12-16 13:31:42 -0500
-Branch: REL9_4_STABLE [6c75384ee] 2014-12-16 13:31:57 -0500
-Branch: REL9_3_STABLE [3b750ec15] 2014-12-16 13:32:02 -0500
-Branch: REL9_2_STABLE [5b2c8f04a] 2014-12-16 13:32:15 -0500
-Branch: REL9_1_STABLE [926da211a] 2014-12-16 13:32:25 -0500
-Branch: REL9_0_STABLE [961df1853] 2014-12-16 13:32:38 -0500
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [586dd5d6a] 2015-01-24 13:05:42 -0500
-Branch: REL9_4_STABLE [d51d4ff31] 2015-01-24 13:05:45 -0500
-Branch: REL9_3_STABLE [7240f9200] 2015-01-24 13:05:49 -0500
-Branch: REL9_2_STABLE [502e5f9c3] 2015-01-24 13:05:53 -0500
-Branch: REL9_1_STABLE [b00a08859] 2015-01-24 13:05:56 -0500
-Branch: REL9_0_STABLE [3a3ee655c] 2015-01-24 13:05:58 -0500
--->
-
- <listitem>
- <para>
- Numerous cleanups of warnings from Coverity static code analyzer
- (Andres Freund, Tatsuo Ishii, Marko Kreen, Tom Lane, Michael Paquier)
- </para>
-
- <para>
- These changes are mostly cosmetic but in some cases fix corner-case
- bugs, for example a crash rather than a proper error report after an
- out-of-memory failure. None are believed to represent security
- issues.
- </para>
- </listitem>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: REL9_3_STABLE [05c0059b3] 2014-07-30 12:10:20 -0400
--->
-
- <listitem>
- <para>
- Fix setup of background workers in EXEC_BACKEND builds, eg Windows
- (Robert Haas)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: REL9_3_STABLE [07115248f] 2014-07-22 11:01:41 -0400
-Branch: REL9_2_STABLE [cec0c2182] 2014-07-22 11:01:51 -0400
-Branch: REL9_1_STABLE [81af4185a] 2014-07-22 11:02:00 -0400
-Branch: REL9_0_STABLE [4c6d0abde] 2014-07-22 11:02:25 -0400
--->
-
- <listitem>
- <para>
- Detect incompatible OpenLDAP versions during build (Noah Misch)
- </para>
-
- <para>
- With OpenLDAP versions 2.4.24 through 2.4.31,
- inclusive, <productname>PostgreSQL</productname> backends can crash at exit.
- Raise a warning during <application>configure</application> based on the
- compile-time OpenLDAP version number, and test the crashing scenario
- in the <filename>contrib/dblink</filename> regression test.
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: REL9_3_STABLE [318fe2321] 2014-08-18 23:01:04 -0400
-Branch: REL9_2_STABLE [ebd4d9cdd] 2014-08-18 23:01:09 -0400
-Branch: REL9_1_STABLE [ba72fc054] 2014-08-18 23:01:13 -0400
-Branch: REL9_0_STABLE [e6841c4d6] 2014-08-18 23:01:23 -0400
--->
-
- <listitem>
- <para>
- In non-MSVC Windows builds, ensure <filename>libpq.dll</filename> is installed
- with execute permissions (Noah Misch)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [aa719391d] 2015-01-19 23:44:19 -0500
-Branch: REL9_4_STABLE [3de9f22ac] 2015-01-19 23:44:22 -0500
-Branch: REL9_3_STABLE [1681e2f74] 2015-01-19 23:44:24 -0500
-Branch: REL9_2_STABLE [89b6a19e1] 2015-01-19 23:44:28 -0500
-Branch: REL9_1_STABLE [f4f522deb] 2015-01-19 23:44:30 -0500
-Branch: REL9_0_STABLE [338ff75fc] 2015-01-19 23:44:33 -0500
--->
-
- <listitem>
- <para>
- Make <application>pg_regress</application> remove any temporary installation it
- created upon successful exit (Tom Lane)
- </para>
-
- <para>
- This results in a very substantial reduction in disk space usage
- during <literal>make check-world</literal>, since that sequence involves
- creation of numerous temporary installations.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [137e7c164] 2014-10-16 15:22:17 -0400
-Branch: REL9_2_STABLE [7c67b9365] 2014-10-16 15:22:20 -0400
-Branch: REL9_1_STABLE [2784b68b3] 2014-10-16 15:22:23 -0400
-Branch: REL9_0_STABLE [870a980aa] 2014-10-16 15:22:26 -0400
--->
-
- <listitem>
- <para>
- Support time zone abbreviations that change UTC offset from time to
- time (Tom Lane)
- </para>
-
- <para>
- Previously, <productname>PostgreSQL</productname> assumed that the UTC offset
- associated with a time zone abbreviation (such as <literal>EST</literal>)
- never changes in the usage of any particular locale. However this
- assumption fails in the real world, so introduce the ability for a
- zone abbreviation to represent a UTC offset that sometimes changes.
- Update the zone abbreviation definition files to make use of this
- feature in timezone locales that have changed the UTC offset of their
- abbreviations since 1970 (according to the IANA timezone database).
- In such timezones, <productname>PostgreSQL</productname> will now associate the
- correct UTC offset with the abbreviation depending on the given date.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [9701f238b] 2014-10-03 17:44:56 -0400
-Branch: REL9_2_STABLE [d7d546bbc] 2014-10-03 17:44:59 -0400
-Branch: REL9_1_STABLE [252af79d9] 2014-10-03 17:45:03 -0400
-Branch: REL9_0_STABLE [cc7bad30c] 2014-10-03 17:45:07 -0400
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [0190f0a76] 2014-12-24 16:35:40 -0500
-Branch: REL9_2_STABLE [5c8665892] 2014-12-24 16:35:44 -0500
-Branch: REL9_1_STABLE [310597e31] 2014-12-24 16:35:48 -0500
-Branch: REL9_0_STABLE [8b70023af] 2014-12-24 16:35:54 -0500
--->
-
- <listitem>
- <para>
- Update time zone abbreviations lists (Tom Lane)
- </para>
-
- <para>
- Add CST (China Standard Time) to our lists.
- Remove references to ADT as <quote>Arabia Daylight Time</quote>, an
- abbreviation that's been out of use since 2007; therefore, claiming
- there is a conflict with <quote>Atlantic Daylight Time</quote> doesn't seem
- especially helpful.
- Fix entirely incorrect GMT offsets for CKT (Cook Islands), FJT, and FJST
- (Fiji); we didn't even have them on the proper side of the date line.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [8470cd473] 2015-01-30 22:46:05 -0500
-Branch: REL9_2_STABLE [c9048d353] 2015-01-30 22:46:12 -0500
-Branch: REL9_1_STABLE [cb24cd3f4] 2015-01-30 22:46:17 -0500
-Branch: REL9_0_STABLE [3553d9c6e] 2015-01-30 22:46:22 -0500
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [ab45d907b] 2014-11-17 12:08:25 -0500
-Branch: REL9_2_STABLE [b1e996035] 2014-11-17 12:08:32 -0500
-Branch: REL9_1_STABLE [b96c47a3d] 2014-11-17 12:08:39 -0500
-Branch: REL9_0_STABLE [92979576e] 2014-11-17 12:08:46 -0500
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [c66199151] 2014-10-04 14:18:33 -0400
-Branch: REL9_2_STABLE [8f75d7a25] 2014-10-04 14:18:36 -0400
-Branch: REL9_1_STABLE [745723c9e] 2014-10-04 14:18:39 -0400
-Branch: REL9_0_STABLE [b6391f587] 2014-10-04 14:18:43 -0400
--->
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2015a.
- </para>
-
- <para>
- The IANA timezone database has adopted abbreviations of the form
- <literal>A<replaceable>x</replaceable>ST</literal>/<literal>A<replaceable>x</replaceable>DT</literal>
- for all Australian time zones, reflecting what they believe to be
- current majority practice Down Under. These names do not conflict
- with usage elsewhere (other than ACST for Acre Summer Time, which has
- been in disuse since 1994). Accordingly, adopt these names into
- our <quote>Default</quote> timezone abbreviation set.
- The <quote>Australia</quote> abbreviation set now contains only CST, EAST,
- EST, SAST, SAT, and WST, all of which are thought to be mostly
- historical usage. Note that SAST has also been changed to be South
- Africa Standard Time in the <quote>Default</quote> abbreviation set.
- </para>
-
- <para>
- Also, add zone abbreviations SRET (Asia/Srednekolymsk) and XJT
- (Asia/Urumqi), and use WSST/WSDT for western Samoa. Also, there were
- DST law changes in Chile, Mexico, the Turks &amp; Caicos Islands
- (America/Grand_Turk), and Fiji. There is a new zone
- Pacific/Bougainville for portions of Papua New Guinea. Also, numerous
- corrections for historical (pre-1970) time zone data.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-5">
- <title>Release 9.3.5</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2014-07-24</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.4.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.5</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, this release corrects a logic error
- in <application>pg_upgrade</application>, as well as an index corruption problem in
- some GiST indexes. See the first two changelog entries below to find out
- whether your installation has been affected and what steps you should take
- if so.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.4,
- see <xref linkend="release-9-3-4"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [0f7482733] 2014-06-24 16:11:06 -0400
-Branch: REL9_4_STABLE [dd5369047] 2014-06-24 16:11:06 -0400
-Branch: REL9_3_STABLE [cc5841809] 2014-06-24 16:11:06 -0400
--->
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>, remove <filename>pg_multixact</filename> files
- left behind by <application>initdb</application> (Bruce Momjian)
- </para>
-
- <para>
- If you used a pre-9.3.5 version of <application>pg_upgrade</application> to
- upgrade a database cluster to 9.3, it might have left behind a file
- <filename>$PGDATA/pg_multixact/offsets/0000</filename> that should not be
- there and will eventually cause problems in <command>VACUUM</command>.
- <emphasis>However, in common cases this file is actually valid and
- must not be removed.</emphasis>
- To determine whether your installation has this problem, run this
- query as superuser, in any database of the cluster:
-<programlisting>
-WITH list(file) AS (SELECT * FROM pg_ls_dir('pg_multixact/offsets'))
-SELECT EXISTS (SELECT * FROM list WHERE file = '0000') AND
- NOT EXISTS (SELECT * FROM list WHERE file = '0001') AND
- NOT EXISTS (SELECT * FROM list WHERE file = 'FFFF') AND
- EXISTS (SELECT * FROM list WHERE file != '0000')
- AS file_0000_removal_required;
-</programlisting>
- If this query returns <literal>t</literal>, manually remove the file
- <filename>$PGDATA/pg_multixact/offsets/0000</filename>.
- Do nothing if the query returns <literal>f</literal>.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master Release: REL9_4_BR [540ac7cea] 2014-05-13 15:15:13 +0300
-Branch: REL9_3_STABLE [d5b912c90] 2014-05-13 15:27:14 +0300
-Branch: REL9_2_STABLE [0d8d0d027] 2014-05-13 15:27:21 +0300
-Branch: REL9_1_STABLE [1913d0f28] 2014-05-13 15:27:28 +0300
-Branch: REL9_0_STABLE [c87c43f08] 2014-05-13 15:27:36 +0300
-Branch: REL8_4_STABLE [e31d77c96] 2014-05-13 15:27:43 +0300
--->
-
- <listitem>
- <para>
- Correctly initialize padding bytes in <filename>contrib/btree_gist</filename>
- indexes on <type>bit</type> columns (Heikki Linnakangas)
- </para>
-
- <para>
- This error could result in incorrect query results due to values that
- should compare equal not being seen as equal.
- Users with GiST indexes on <type>bit</type> or <type>bit varying</type>
- columns should <command>REINDEX</command> those indexes after installing this
- update.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master Release: REL9_4_BR [4f7bb4b2a] 2014-05-08 14:50:22 +0300
-Branch: REL9_3_STABLE [34572920c] 2014-05-08 14:43:04 +0300
-Branch: REL9_2_STABLE [31633f992] 2014-05-08 14:43:39 +0300
-Branch: REL9_1_STABLE [686a7194e] 2014-05-08 14:43:58 +0300
-Branch: REL9_0_STABLE [8b4efe1f3] 2014-05-08 14:44:06 +0300
-Branch: REL8_4_STABLE [be7830596] 2014-05-08 14:46:43 +0300
--->
-
- <listitem>
- <para>
- Protect against torn pages when deleting GIN list pages (Heikki
- Linnakangas)
- </para>
-
- <para>
- This fix prevents possible index corruption if a system crash occurs
- while the page update is being written to disk.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master Release: REL9_4_BR [7ca32e255] 2014-04-08 14:51:40 +0300
-Branch: REL9_3_STABLE [601c01e08] 2014-04-08 14:51:49 +0300
-Branch: REL9_2_STABLE [02b9fd73e] 2014-04-08 14:51:56 +0300
-Branch: REL9_1_STABLE [ac0078c1d] 2014-04-08 14:52:01 +0300
-Branch: REL9_0_STABLE [d034e9b3b] 2014-04-08 14:52:07 +0300
--->
-
- <listitem>
- <para>
- Don't clear the right-link of a GiST index page while replaying
- updates from WAL (Heikki Linnakangas)
- </para>
-
- <para>
- This error could lead to transiently wrong answers from GiST index
- scans performed in Hot Standby.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [c170655cc] 2014-06-09 16:31:11 -0400
-Branch: REL9_3_STABLE [717c116f1] 2014-06-09 16:31:16 -0400
-Branch: REL9_2_STABLE [93328b2df] 2014-06-09 16:30:46 -0400
--->
-
- <listitem>
- <para>
- Fix corner-case infinite loop during insertion into an SP-GiST text
- index (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [1264ef31a] 2014-07-16 09:19:06 +0300
-Branch: REL9_4_STABLE [9b3ef66af] 2014-07-16 09:20:20 +0300
-Branch: REL9_3_STABLE [a4867d041] 2014-07-16 09:20:31 +0300
--->
-
- <listitem>
- <para>
- Fix incorrect answers from SP-GiST index searches
- with <literal>-|-</literal> (range adjacency) operator
- (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master Release: REL9_4_BR [b0b263baa] 2014-06-09 15:17:23 -0400
-Branch: REL9_3_STABLE [167a2535f] 2014-06-09 15:17:23 -0400
--->
-
- <listitem>
- <para>
- Fix wraparound handling for <filename>pg_multixact/members</filename>
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [f741300c9] 2014-06-27 14:43:53 -0400
-Branch: REL9_4_STABLE [56f86bb76] 2014-06-27 14:43:52 -0400
-Branch: REL9_3_STABLE [9a28c3752] 2014-06-27 14:43:52 -0400
--->
-
- <listitem>
- <para>
- Truncate <structname>pg_multixact</structname> during checkpoints, not
- during <command>VACUUM</command> (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- This change ensures that <structname>pg_multixact</structname> segments can't be
- removed if they'd still be needed during WAL replay after a crash.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master Release: REL9_4_BR [2a8e1ac59] 2014-04-17 17:47:50 +0300
-Branch: REL9_3_STABLE [95aa823eb] 2014-04-17 17:47:58 +0300
--->
-
- <listitem>
- <para>
- Fix possible inconsistency of all-visible flags after WAL recovery
- (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [0f928a85e] 2014-05-05 14:43:39 -0400
-Branch: REL9_3_STABLE [4f4ef042f] 2014-05-05 14:43:42 -0400
-Branch: REL9_2_STABLE [c8fbeeb45] 2014-05-05 14:43:46 -0400
-Branch: REL9_1_STABLE [2f4ee3a2f] 2014-05-05 14:43:49 -0400
-Branch: REL9_0_STABLE [7d5b68621] 2014-05-05 14:43:52 -0400
-Branch: REL8_4_STABLE [3ada1fab8] 2014-05-05 14:43:55 -0400
--->
-
- <listitem>
- <para>
- Fix possibly-incorrect cache invalidation during nested calls
- to <function>ReceiveSharedInvalidMessages</function> (Andres Freund)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master Release: REL9_4_BR [1a917ae86] 2014-04-24 15:41:55 -0300
-Branch: REL9_3_STABLE [c0bd128c8] 2014-04-24 15:41:55 -0300
--->
-
- <listitem>
- <para>
- Fix race condition when updating a tuple concurrently locked by
- another process (Andres Freund, &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: REL9_3_STABLE [a2db7b7d0] 2014-06-26 10:41:59 -0700
-Branch: REL9_2_STABLE [0cf16686b] 2014-06-26 10:42:03 -0700
-Branch: REL9_1_STABLE [555d0b200] 2014-06-26 10:42:08 -0700
--->
-
- <listitem>
- <para>
- Fix <quote>could not find pathkey item to sort</quote> planner failures
- with <literal>UNION ALL</literal> over subqueries reading from tables with
- inheritance children (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9e2f2d7a0] 2014-07-08 14:03:56 -0400
-Branch: REL9_4_STABLE [ac45aa1dd] 2014-07-08 14:03:45 -0400
-Branch: REL9_3_STABLE [6d36aee5b] 2014-07-08 14:03:19 -0400
-Branch: REL9_2_STABLE [189bd09cb] 2014-07-08 14:03:23 -0400
-Branch: REL9_1_STABLE [fa21a760b] 2014-07-08 14:03:26 -0400
-Branch: REL9_0_STABLE [2865d5952] 2014-07-08 14:03:30 -0400
-Branch: REL8_4_STABLE [2e7469dc8] 2014-07-08 14:03:32 -0400
--->
-
- <listitem>
- <para>
- Don't assume a subquery's output is unique if there's a set-returning
- function in its targetlist (David Rowley)
- </para>
-
- <para>
- This oversight could lead to misoptimization of constructs
- like <literal>WHERE x IN (SELECT y, generate_series(1,10) FROM t GROUP
- BY y)</literal>.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [95811032d] 2014-04-29 13:12:46 -0400
-Branch: REL9_3_STABLE [150a44e83] 2014-04-29 13:12:29 -0400
-Branch: REL9_2_STABLE [0901dbab3] 2014-04-29 13:12:33 -0400
--->
-
- <listitem>
- <para>
- Improve planner to drop constant-NULL inputs
- of <literal>AND</literal>/<literal>OR</literal> when possible (Tom Lane)
- </para>
-
- <para>
- This change fixes some cases where the more aggressive parameter
- substitution done by 9.2 and later can lead to a worse plan than
- older versions produced.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [c7b353959] 2014-04-03 22:02:24 -0400
-Branch: REL9_3_STABLE [d359f71ac] 2014-04-03 22:02:27 -0400
--->
-
- <listitem>
- <para>
- Ensure that the planner sees equivalent <literal>VARIADIC</literal> and
- non-<literal>VARIADIC</literal> function calls as equivalent (Tom Lane)
- </para>
-
- <para>
- This bug could for example result in failure to use expression indexes
- involving variadic functions. It might be necessary to re-create such
- indexes, and/or re-create views including variadic function calls that
- should match the indexes, for the fix to be effective for existing 9.3
- installations.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [57d8c1270] 2014-06-24 21:22:40 -0700
-Branch: REL9_4_STABLE [a331512de] 2014-06-24 21:22:43 -0700
-Branch: REL9_3_STABLE [a1fc36495] 2014-06-24 21:22:47 -0700
--->
-
- <listitem>
- <para>
- Fix handling of nested <type>JSON</type> objects
- in <function>json_populate_recordset()</function> and friends
- (Michael Paquier, Tom Lane)
- </para>
-
- <para>
- A nested <type>JSON</type> object could result in previous fields of the
- parent object not being shown in the output.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [0ca6bda8e] 2014-05-09 12:55:31 -0400
-Branch: REL9_3_STABLE [13c679995] 2014-05-09 12:55:03 -0400
-Branch: REL9_2_STABLE [25c933c5c] 2014-05-09 12:55:06 -0400
--->
-
- <listitem>
- <para>
- Fix identification of input type category in <function>to_json()</function>
- and friends (Tom Lane)
- </para>
-
- <para>
- This is known to have led to inadequate quoting of <type>money</type>
- fields in the <type>JSON</type> result, and there may have been wrong
- results for other data types as well.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [3f8c8e3c6] 2014-05-01 15:19:06 -0400
-Branch: REL9_3_STABLE [b72e90bc3] 2014-05-01 15:19:10 -0400
-Branch: REL9_2_STABLE [8c43980a1] 2014-05-01 15:19:14 -0400
-Branch: REL9_1_STABLE [db1fdc945] 2014-05-01 15:19:17 -0400
-Branch: REL9_0_STABLE [7a4f114f3] 2014-05-01 15:19:20 -0400
-Branch: REL8_4_STABLE [70debcf09] 2014-05-01 15:19:23 -0400
--->
-
- <listitem>
- <para>
- Fix failure to detoast fields in composite elements of structured
- types (Tom Lane)
- </para>
-
- <para>
- This corrects cases where TOAST pointers could be copied into other
- tables without being dereferenced. If the original data is later
- deleted, it would lead to errors like <quote>missing chunk number 0
- for toast value ...</quote> when the now-dangling pointer is used.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [d68581483] 2014-07-11 19:12:35 -0400
-Branch: REL9_4_STABLE [f280eff94] 2014-07-11 19:12:38 -0400
-Branch: REL9_3_STABLE [b77e6b959] 2014-07-11 19:12:42 -0400
-Branch: REL9_2_STABLE [261f954e7] 2014-07-11 19:12:45 -0400
-Branch: REL9_1_STABLE [c45841f9e] 2014-07-11 19:12:48 -0400
-Branch: REL9_0_STABLE [cd8ba91a0] 2014-07-11 19:12:51 -0400
-Branch: REL8_4_STABLE [a81fbcfb3] 2014-07-11 19:12:56 -0400
--->
-
- <listitem>
- <para>
- Fix <quote>record type has not been registered</quote> failures with
- whole-row references to the output of Append plan nodes (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [04e5025be] 2014-05-07 14:25:11 -0400
-Branch: REL9_3_STABLE [fc58c39d4] 2014-05-07 14:25:13 -0400
-Branch: REL9_2_STABLE [022b5f2b2] 2014-05-07 14:25:17 -0400
-Branch: REL9_1_STABLE [229101db4] 2014-05-07 14:25:22 -0400
-Branch: REL9_0_STABLE [7f66ade71] 2014-05-07 14:25:25 -0400
-Branch: REL8_4_STABLE [2a527baa3] 2014-05-07 14:25:28 -0400
--->
-
- <listitem>
- <para>
- Fix possible crash when invoking a user-defined function while
- rewinding a cursor (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [45b0f3572] 2014-06-19 22:14:26 -0400
-Branch: REL9_4_STABLE [1044e79a0] 2014-06-19 22:13:44 -0400
-Branch: REL9_3_STABLE [c1f8fb9bf] 2014-06-19 22:13:47 -0400
-Branch: REL9_2_STABLE [b568d3836] 2014-06-19 22:13:51 -0400
-Branch: REL9_1_STABLE [06d5eacbc] 2014-06-19 22:13:54 -0400
-Branch: REL9_0_STABLE [83131e634] 2014-06-19 22:13:58 -0400
-Branch: REL8_4_STABLE [d297c91d4] 2014-06-19 22:14:00 -0400
--->
-
- <listitem>
- <para>
- Fix query-lifespan memory leak while evaluating the arguments for a
- function in <literal>FROM</literal> (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [1567e659a] 2014-07-18 13:00:27 -0400
-Branch: REL9_4_STABLE [4a66f0f2d] 2014-07-18 13:00:39 -0400
-Branch: REL9_3_STABLE [5ef588b22] 2014-07-18 13:00:43 -0400
-Branch: REL9_2_STABLE [a223b9e36] 2014-07-18 13:00:48 -0400
-Branch: REL9_1_STABLE [8a817785a] 2014-07-18 13:00:52 -0400
-Branch: REL9_0_STABLE [b8c24f7ab] 2014-07-18 13:00:57 -0400
-Branch: REL8_4_STABLE [e0a233744] 2014-07-18 13:01:04 -0400
--->
-
- <listitem>
- <para>
- Fix session-lifespan memory leaks in regular-expression processing
- (Tom Lane, Arthur O'Dwyer, Greg Stark)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [fd90b5d57] 2014-06-10 22:48:16 -0400
-Branch: REL9_4_STABLE [7f9fbb842] 2014-06-10 22:48:31 -0400
-Branch: REL9_3_STABLE [87db9534a] 2014-06-10 22:48:39 -0400
-Branch: REL9_2_STABLE [802323535] 2014-06-10 22:48:45 -0400
-Branch: REL9_1_STABLE [62f134954] 2014-06-10 22:48:52 -0400
-Branch: REL9_0_STABLE [4d5ea4290] 2014-06-10 22:48:59 -0400
-Branch: REL8_4_STABLE [f3f40434b] 2014-06-10 22:49:08 -0400
--->
-
- <listitem>
- <para>
- Fix data encoding error in <filename>hungarian.stop</filename> (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [a87a7dc8b] 2014-06-24 13:27:18 +0300
-Branch: REL9_4_STABLE [1818ae0a7] 2014-06-24 13:31:06 +0300
-Branch: REL9_3_STABLE [2a7512bc7] 2014-06-24 13:31:00 +0300
-Branch: REL9_2_STABLE [1c9f9e888] 2014-06-24 13:30:54 +0300
-Branch: REL9_1_STABLE [dd1a5b09b] 2014-06-24 13:30:41 +0300
--->
-
- <listitem>
- <para>
- Prevent foreign tables from being created with OIDS
- when <xref linkend="guc-default-with-oids"/> is true
- (Etsuro Fujita)
- </para>
- </listitem>
-
-<!--
-Author: Andres Freund <andres@anarazel.de>
-Branch: master Release: REL9_4_BR [621a99a66] 2014-06-04 21:36:19 +0200
-Branch: REL9_3_STABLE [edde59db1] 2014-06-04 23:26:08 +0200
-Branch: REL9_2_STABLE [315442c01] 2014-06-04 23:25:52 +0200
-Branch: REL9_1_STABLE [6bf6e528a] 2014-06-04 23:26:30 +0200
-Branch: REL9_0_STABLE [037c6fb9f] 2014-06-04 23:27:10 +0200
-Branch: REL8_4_STABLE [80d45ae4e] 2014-06-04 23:27:38 +0200
--->
-
- <listitem>
- <para>
- Fix liveness checks for rows that were inserted in the current
- transaction and then deleted by a now-rolled-back subtransaction
- (Andres Freund)
- </para>
-
- <para>
- This could cause problems (at least spurious warnings, and at worst an
- infinite loop) if <command>CREATE INDEX</command> or <command>CLUSTER</command> were
- done later in the same transaction.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [d19bd29f0] 2014-04-24 13:29:48 -0400
-Branch: REL9_3_STABLE [12e41a5d7] 2014-04-24 13:29:56 -0400
-Branch: REL9_2_STABLE [ea9ac7741] 2014-04-24 13:30:00 -0400
-Branch: REL9_1_STABLE [70e7be264] 2014-04-24 13:30:04 -0400
-Branch: REL9_0_STABLE [b7a3e1173] 2014-04-24 13:30:08 -0400
-Branch: REL8_4_STABLE [82fbd88a7] 2014-04-24 13:30:14 -0400
--->
-
- <listitem>
- <para>
- Clear <structname>pg_stat_activity</structname>.<structfield>xact_start</structfield>
- during <command>PREPARE TRANSACTION</command> (Andres Freund)
- </para>
-
- <para>
- After the <command>PREPARE</command>, the originating session is no longer in
- a transaction, so it should not continue to display a transaction
- start time.
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [6bdf4b9c7] 2014-07-15 13:24:07 -0400
-Branch: REL9_4_STABLE [e45229bb6] 2014-07-15 13:24:07 -0400
-Branch: REL9_3_STABLE [12c5bbdcb] 2014-07-15 13:24:07 -0400
-Branch: REL9_2_STABLE [b42f09fc8] 2014-07-15 13:24:07 -0400
-Branch: REL9_1_STABLE [a41dc7321] 2014-07-15 13:24:07 -0400
-Branch: REL9_0_STABLE [bf08864b8] 2014-07-15 13:24:07 -0400
-Branch: REL8_4_STABLE [4b767789d] 2014-07-15 13:24:07 -0400
--->
-
- <listitem>
- <para>
- Fix <command>REASSIGN OWNED</command> to not fail for text search objects
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [b7e51d9c0] 2014-06-27 14:43:46 -0400
-Branch: REL9_4_STABLE [9eecc8a7c] 2014-06-27 14:43:46 -0400
-Branch: REL9_3_STABLE [e86cfc4bb] 2014-06-27 14:43:45 -0400
--->
-
- <listitem>
- <para>
- Prevent <structname>pg_class</structname>.<structfield>relminmxid</structfield> values from
- going backwards during <command>VACUUM FULL</command> (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [41de93c53] 2014-04-30 13:26:26 -0400
-Branch: REL9_3_STABLE [0652d77fb] 2014-04-30 13:26:29 -0400
--->
-
- <listitem>
- <para>
- Reduce indentation in rule/view dumps to improve readability and avoid
- excessive whitespace (Greg Stark, Tom Lane)
- </para>
-
- <para>
- This change reduces the amount of indentation applied to nested
- constructs, including some cases that the user probably doesn't think
- of as nested, such as UNION lists. Previously, deeply nested
- constructs were printed with an amount of whitespace growing as
- O(N^2), which created a performance problem and even risk of
- out-of-memory failures. Now the indentation is reduced modulo 40,
- which is initially odd to look at but seems to preserve readability
- better than simply limiting the indentation would do.
- Redundant parenthesization of UNION lists has been reduced as well.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [91e16b980] 2014-05-01 20:22:37 -0400
-Branch: REL9_3_STABLE [e31193d49] 2014-05-01 20:22:39 -0400
--->
-
- <listitem>
- <para>
- Fix dumping of rules/views when subsequent addition of a column has
- resulted in multiple input columns matching a <literal>USING</literal>
- specification (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9b35ddce9] 2014-07-19 14:28:52 -0400
-Branch: REL9_4_STABLE [f0a497e4c] 2014-07-19 14:29:00 -0400
-Branch: REL9_3_STABLE [b978ab5f6] 2014-07-19 14:29:05 -0400
--->
-
- <listitem>
- <para>
- Repair view printing for some cases involving functions
- in <literal>FROM</literal> that return a composite type containing dropped
- columns (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [5d8117e1f] 2014-04-05 18:16:08 -0400
-Branch: REL9_3_STABLE [21aa47d01] 2014-04-05 18:16:11 -0400
-Branch: REL9_2_STABLE [53463e247] 2014-04-05 18:16:14 -0400
-Branch: REL9_1_STABLE [093d3da1d] 2014-04-05 18:16:17 -0400
-Branch: REL9_0_STABLE [5c26ab659] 2014-04-05 18:16:20 -0400
-Branch: REL8_4_STABLE [969735cf1] 2014-04-05 18:16:24 -0400
--->
-
- <listitem>
- <para>
- Block signals during postmaster startup (Tom Lane)
- </para>
-
- <para>
- This ensures that the postmaster will properly clean up after itself
- if, for example, it receives <systemitem>SIGINT</systemitem> while still
- starting up.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [fc752505a] 2014-04-02 17:11:24 -0400
-Branch: REL9_3_STABLE [65183fb78] 2014-04-02 17:11:27 -0400
-Branch: REL9_2_STABLE [029decfec] 2014-04-02 17:11:31 -0400
-Branch: REL9_1_STABLE [b7a424371] 2014-04-02 17:11:34 -0400
--->
-
- <listitem>
- <para>
- Fix client host name lookup when processing <filename>pg_hba.conf</filename>
- entries that specify host names instead of IP addresses (Tom Lane)
- </para>
-
- <para>
- Ensure that reverse-DNS lookup failures are reported, instead of just
- silently not matching such entries. Also ensure that we make only
- one reverse-DNS lookup attempt per connection, not one per host name
- entry, which is what previously happened if the lookup attempts failed.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [b203c57bb] 2014-04-04 22:03:35 -0400
-Branch: REL9_3_STABLE [7d1a0f585] 2014-04-04 22:03:38 -0400
-Branch: REL9_2_STABLE [6d25eb314] 2014-04-04 22:03:42 -0400
--->
-
- <listitem>
- <para>
- Allow the root user to use <literal>postgres -C variable</literal> and
- <literal>postgres --describe-config</literal> (MauMau)
- </para>
-
- <para>
- The prohibition on starting the server as root does not need to extend
- to these operations, and relaxing it prevents failure
- of <application>pg_ctl</application> in some scenarios.
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [be76a6d39] 2014-06-14 09:41:13 -0400
-Branch: REL9_4_STABLE [6583a75b2] 2014-06-14 09:41:16 -0400
-Branch: REL9_3_STABLE [1442b426e] 2014-06-14 09:41:17 -0400
-Branch: REL9_2_STABLE [453a5d91d] 2014-06-14 09:41:17 -0400
-Branch: REL9_1_STABLE [481831b43] 2014-06-14 09:41:18 -0400
-Branch: REL9_0_STABLE [5f09c583c] 2014-06-14 09:41:18 -0400
-Branch: REL8_4_STABLE [95cefd30e] 2014-06-14 09:41:18 -0400
--->
-
- <listitem>
- <para>
- Secure Unix-domain sockets of temporary postmasters started during
- <literal>make check</literal> (Noah Misch)
- </para>
-
- <para>
- Any local user able to access the socket file could connect as the
- server's bootstrap superuser, then proceed to execute arbitrary code as
- the operating-system user running the test, as we previously noted in
- CVE-2014-0067. This change defends against that risk by placing the
- server's socket in a temporary, mode 0700 subdirectory
- of <filename>/tmp</filename>. The hazard remains however on platforms where
- Unix sockets are not supported, notably Windows, because then the
- temporary postmaster must accept local TCP connections.
- </para>
-
- <para>
- A useful side effect of this change is to simplify
- <literal>make check</literal> testing in builds that
- override <literal>DEFAULT_PGSOCKET_DIR</literal>. Popular non-default values
- like <filename>/var/run/postgresql</filename> are often not writable by the
- build user, requiring workarounds that will no longer be necessary.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [abe075dff] 2014-04-04 23:09:35 -0400
-Branch: REL9_3_STABLE [84520f91c] 2014-04-04 23:09:38 -0400
-Branch: REL9_2_STABLE [1a496a12b] 2014-04-04 23:09:41 -0400
-Branch: REL9_1_STABLE [af7738fe6] 2014-04-04 23:09:45 -0400
-Branch: REL9_0_STABLE [634056567] 2014-04-04 23:09:49 -0400
--->
-
- <listitem>
- <para>
- Fix tablespace creation WAL replay to work on Windows (MauMau)
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master Release: REL9_4_BR [418093465] 2014-04-16 10:45:48 -0400
-Branch: REL9_3_STABLE [f716c3250] 2014-04-16 10:45:48 -0400
-Branch: REL9_2_STABLE [966f015b6] 2014-04-16 10:45:48 -0400
-Branch: REL9_1_STABLE [bed499ed1] 2014-04-16 10:45:48 -0400
-Branch: REL9_0_STABLE [a86b2daff] 2014-04-16 10:45:48 -0400
--->
-
- <listitem>
- <para>
- Fix detection of socket creation failures on Windows (Bruce Momjian)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [6862ca697] 2014-04-05 12:41:25 -0400
-Branch: REL9_3_STABLE [18db2150c] 2014-04-05 12:41:28 -0400
-Branch: REL9_2_STABLE [bdc3e95c2] 2014-04-05 12:41:31 -0400
-Branch: REL9_1_STABLE [cb11f4d8d] 2014-04-05 12:41:34 -0400
-Branch: REL9_0_STABLE [9500d8f89] 2014-04-05 12:41:38 -0400
-Branch: REL8_4_STABLE [30e434bdf] 2014-04-05 12:41:40 -0400
--->
-
- <listitem>
- <para>
- On Windows, allow new sessions to absorb values of PGC_BACKEND
- parameters (such as <xref linkend="guc-log-connections"/>) from the
- configuration file (Amit Kapila)
- </para>
-
- <para>
- Previously, if such a parameter were changed in the file post-startup,
- the change would have no effect.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master Release: REL9_4_BR [503de5462] 2014-04-30 10:35:52 +0300
-Branch: REL9_3_STABLE [8a90a39b4] 2014-04-30 10:35:46 +0300
-Branch: REL9_2_STABLE [e2558e016] 2014-04-30 10:36:31 +0300
-Branch: REL9_1_STABLE [94095e341] 2014-04-30 10:36:41 +0300
-Branch: REL9_0_STABLE [c06b7219a] 2014-04-30 10:38:32 +0300
-Branch: REL8_4_STABLE [e3f273ff6] 2014-04-30 10:39:03 +0300
--->
-
- <listitem>
- <para>
- Properly quote executable path names on Windows (Nikhil Deshpande)
- </para>
-
- <para>
- This oversight could cause <application>initdb</application>
- and <application>pg_upgrade</application> to fail on Windows, if the installation
- path contained both spaces and <literal>@</literal> signs.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [20561acf9] 2014-05-30 18:19:06 -0400
-Branch: REL9_3_STABLE [4f5f4da79] 2014-05-30 18:19:14 -0400
-Branch: REL9_2_STABLE [83ed4598b] 2014-05-30 18:18:20 -0400
-Branch: REL9_1_STABLE [a784a39c4] 2014-05-30 18:18:24 -0400
-Branch: REL9_0_STABLE [4f725bbc4] 2014-05-30 18:18:28 -0400
-Branch: REL8_4_STABLE [ae41bb4be] 2014-05-30 18:18:32 -0400
--->
-
- <listitem>
- <para>
- Fix linking of <application>libpython</application> on macOS (Tom Lane)
- </para>
-
- <para>
- The method we previously used can fail with the Python library
- supplied by Xcode 5.0 and later.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [2f557167b] 2014-05-07 21:39:13 -0400
-Branch: REL9_3_STABLE [b4f9c93ce] 2014-05-07 21:38:38 -0400
-Branch: REL9_2_STABLE [f7672c8ce] 2014-05-07 21:38:41 -0400
-Branch: REL9_1_STABLE [86888054a] 2014-05-07 21:38:44 -0400
-Branch: REL9_0_STABLE [77e662827] 2014-05-07 21:38:47 -0400
-Branch: REL8_4_STABLE [664ac3de7] 2014-05-07 21:38:50 -0400
--->
-
- <listitem>
- <para>
- Avoid buffer bloat in <application>libpq</application> when the server
- consistently sends data faster than the client can absorb it
- (Shin-ichi Morita, Tom Lane)
- </para>
-
- <para>
- <application>libpq</application> could be coerced into enlarging its input buffer
- until it runs out of memory (which would be reported misleadingly
- as <quote>lost synchronization with server</quote>). Under ordinary
- circumstances it's quite far-fetched that data could be continuously
- transmitted more quickly than the <function>recv()</function> loop can
- absorb it, but this has been observed when the client is artificially
- slowed by scheduler constraints.
- </para>
- </listitem>
-
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master Release: REL9_4_BR [585bca393] 2014-04-16 18:58:10 +0200
-Branch: REL9_3_STABLE [cc269272c] 2014-04-16 18:58:55 +0200
-Branch: REL9_2_STABLE [b764080ee] 2014-04-16 18:59:11 +0200
-Branch: REL9_1_STABLE [c4bf15b9c] 2014-04-16 18:59:28 +0200
-Branch: REL9_0_STABLE [96752b02d] 2014-04-16 18:59:37 +0200
-Branch: REL8_4_STABLE [b4ae2e37d] 2014-04-16 18:59:48 +0200
--->
-
- <listitem>
- <para>
- Ensure that LDAP lookup attempts in <application>libpq</application> time out as
- intended (Laurenz Albe)
- </para>
- </listitem>
-
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master Release: REL9_4_BR [8d6a07fa0] 2014-05-06 13:09:51 +0200
-Branch: REL9_3_STABLE [b4eeb9d58] 2014-05-06 13:04:30 +0200
-Branch: REL9_2_STABLE [3a024c110] 2014-05-06 13:14:01 +0200
-Branch: REL9_1_STABLE [fb66e88cf] 2014-05-06 13:20:22 +0200
-Branch: REL9_0_STABLE [91c8c106f] 2014-05-06 13:24:13 +0200
-
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master Release: REL9_4_BR [f91796853] 2014-04-09 11:23:38 +0200
-Branch: REL9_3_STABLE [3b8fda676] 2014-04-09 11:38:40 +0200
-Branch: REL9_2_STABLE [2b3136de9] 2014-04-09 11:43:13 +0200
-Branch: REL9_1_STABLE [0de106836] 2014-04-09 12:04:33 +0200
-Branch: REL9_0_STABLE [0c2eb989e] 2014-04-09 12:12:32 +0200
--->
-
- <listitem>
- <para>
- Fix <application>ecpg</application> to do the right thing when an array
- of <type>char *</type> is the target for a FETCH statement returning more
- than one row, as well as some other array-handling fixes
- (Ashutosh Bapat)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [62215de29] 2014-03-29 17:34:00 -0400
-Branch: REL9_3_STABLE [3080bbaa9] 2014-03-29 17:34:03 -0400
--->
-
- <listitem>
- <para>
- Fix <application>pg_dump</application> to cope with a materialized view that
- depends on a table's primary key (Tom Lane)
- </para>
-
- <para>
- This occurs if the view's query relies on functional dependency to
- abbreviate a <literal>GROUP BY</literal> list. <application>pg_dump</application> got
- sufficiently confused that it dumped the materialized view as a
- regular view.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [19f2d6cda] 2014-03-18 10:38:25 -0400
-Branch: REL9_3_STABLE [63817f86b] 2014-03-18 10:38:38 -0400
--->
-
- <listitem>
- <para>
- Fix parsing of <application>pg_dumpall</application>'s <option>-i</option> switch
- (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c81e63d85] 2014-06-12 20:14:32 -0400
-Branch: REL9_4_STABLE [c3c1401ca] 2014-06-12 20:14:36 -0400
-Branch: REL9_3_STABLE [a11577f47] 2014-06-12 20:14:39 -0400
-Branch: REL9_2_STABLE [ce7fc4fbb] 2014-06-12 20:14:46 -0400
-Branch: REL9_1_STABLE [294a48985] 2014-06-12 20:14:49 -0400
-Branch: REL9_0_STABLE [3fec825f9] 2014-06-12 20:14:52 -0400
-Branch: REL8_4_STABLE [6adddac8a] 2014-06-12 20:14:55 -0400
--->
-
- <listitem>
- <para>
- Fix <application>pg_restore</application>'s processing of old-style large object
- comments (Tom Lane)
- </para>
-
- <para>
- A direct-to-database restore from an archive file generated by a
- pre-9.0 version of <application>pg_dump</application> would usually fail if the
- archive contained more than a few comments for large objects.
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [3088cc370] 2014-07-07 13:24:08 -0400
-Branch: REL9_4_STABLE [f64fe2cbe] 2014-07-07 13:24:08 -0400
-Branch: REL9_3_STABLE [f1d7ff5bb] 2014-07-07 13:24:08 -0400
-Branch: REL9_2_STABLE [759c9fb63] 2014-07-07 13:24:08 -0400
--->
-
- <listitem>
- <para>
- Fix <application>pg_upgrade</application> for cases where the new server creates
- a TOAST table but the old version did not (Bruce Momjian)
- </para>
-
- <para>
- This rare situation would manifest as <quote>relation OID mismatch</quote>
- errors.
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master [a61daa14d] 2014-07-02 15:29:38 -0400
-Branch: REL9_4_STABLE [b446a384b] 2014-07-02 15:29:38 -0400
-Branch: REL9_3_STABLE [3d2e18510] 2014-07-02 15:29:38 -0400
-
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [78db307bb] 2014-07-21 11:41:53 -0400
-Branch: REL9_4_STABLE [d122387d7] 2014-07-21 11:42:00 -0400
-Branch: REL9_3_STABLE [e7984cca0] 2014-07-21 11:42:05 -0400
--->
-
- <listitem>
- <para>
- In <application>pg_upgrade</application>,
- preserve <structname>pg_database</structname>.<structfield>datminmxid</structfield>
- and <structname>pg_class</structname>.<structfield>relminmxid</structfield> values from the
- old cluster, or insert reasonable values when upgrading from pre-9.3;
- also defend against unreasonable values in the core server
- (Bruce Momjian, &Aacute;lvaro Herrera, Tom Lane)
- </para>
-
- <para>
- These changes prevent scenarios in which autovacuum might insist on
- scanning the entire cluster's contents immediately upon starting the
- new cluster, or in which tracking of unfrozen MXID values might be
- disabled completely.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [e416830a2] 2014-05-20 12:20:47 -0400
-Branch: REL9_3_STABLE [0266a9c78] 2014-05-20 12:20:52 -0400
-Branch: REL9_2_STABLE [31f579f09] 2014-05-20 12:20:57 -0400
--->
-
- <listitem>
- <para>
- Prevent <filename>contrib/auto_explain</filename> from changing the output of
- a user's <command>EXPLAIN</command> (Tom Lane)
- </para>
-
- <para>
- If <filename>auto_explain</filename> is active, it could cause
- an <literal>EXPLAIN (ANALYZE, TIMING OFF)</literal> command to nonetheless
- print timing information.
- </para>
- </listitem>
-
-<!--
-Author: Joe Conway <mail@joeconway.com>
-Branch: master [1dde5782e] 2014-06-20 12:24:59 -0700
-Branch: REL9_4_STABLE [9d884a34c] 2014-06-20 12:26:26 -0700
-Branch: REL9_3_STABLE [b3a3f3d2f] 2014-06-20 12:26:43 -0700
-Branch: REL9_2_STABLE [3e2cfa42f] 2014-06-20 12:27:04 -0700
--->
-
- <listitem>
- <para>
- Fix query-lifespan memory leak in <filename>contrib/dblink</filename>
- (MauMau, Joe Conway)
- </para>
- </listitem>
-
-<!--
-Author: Bruce Momjian <bruce@momjian.us>
-Branch: master Release: REL9_4_BR [9fe55259f] 2014-04-17 12:37:53 -0400
-Branch: REL9_3_STABLE [fc72e94a1] 2014-04-17 12:37:53 -0400
-Branch: REL9_2_STABLE [ea8725a8b] 2014-04-17 12:37:53 -0400
-Branch: REL9_1_STABLE [fc02b87e2] 2014-04-17 12:37:53 -0400
-Branch: REL9_0_STABLE [a1b9c4630] 2014-04-17 12:37:53 -0400
-Branch: REL8_4_STABLE [df2e62603] 2014-04-17 12:37:53 -0400
--->
-
- <listitem>
- <para>
- In <filename>contrib/pgcrypto</filename> functions, ensure sensitive
- information is cleared from stack variables before returning
- (Marko Kreen)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [9d0826c59] 2014-06-30 16:59:19 -0400
-Branch: REL9_4_STABLE [37a4d3d70] 2014-06-30 16:59:44 -0400
-Branch: REL9_3_STABLE [f14e40852] 2014-06-30 17:00:22 -0400
-Branch: REL9_2_STABLE [f6d6b7b1e] 2014-06-30 17:00:40 -0400
--->
-
- <listitem>
- <para>
- Prevent use of already-freed memory in
- <filename>contrib/pgstattuple</filename>'s <function>pgstat_heap()</function>
- (Noah Misch)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master Release: REL9_4_BR [c941aed96] 2014-05-29 13:51:02 -0400
-Branch: REL9_3_STABLE [961dd203a] 2014-05-29 13:51:05 -0400
-Branch: REL9_2_STABLE [2fb9fb661] 2014-05-29 13:51:09 -0400
-Branch: REL9_1_STABLE [3606754da] 2014-05-29 13:51:12 -0400
-Branch: REL9_0_STABLE [b2f6754d2] 2014-05-29 13:51:15 -0400
-Branch: REL8_4_STABLE [fd785441f] 2014-05-29 13:51:18 -0400
--->
-
- <listitem>
- <para>
- In <filename>contrib/uuid-ossp</filename>, cache the state of the OSSP UUID
- library across calls (Tom Lane)
- </para>
-
- <para>
- This improves the efficiency of UUID generation and reduces the amount
- of entropy drawn from <filename>/dev/urandom</filename>, on platforms that
- have that.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b1864fabf] 2014-07-19 15:00:50 -0400
-Branch: REL9_4_STABLE [e5ea60e80] 2014-07-19 15:01:05 -0400
-Branch: REL9_3_STABLE [bd5458f52] 2014-07-19 15:01:12 -0400
-Branch: REL9_2_STABLE [7d09e4854] 2014-07-19 15:01:18 -0400
-Branch: REL9_1_STABLE [40ccb6530] 2014-07-19 15:01:28 -0400
-Branch: REL9_0_STABLE [7659b6913] 2014-07-19 15:01:38 -0400
-Branch: REL8_4_STABLE [c51da696b] 2014-07-19 15:01:45 -0400
--->
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2014e
- for DST law changes in Crimea, Egypt, and Morocco.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-4">
- <title>Release 9.3.4</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2014-03-20</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.3.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.4</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, the error fixed in the first changelog entry below could have
- resulted in corrupt data on standby servers. It may be prudent to
- reinitialize standby servers from fresh base backups after installing
- this update.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.3,
- see <xref linkend="release-9-3-3"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [6bfa88acd] 2014-02-27 11:13:39 -0300
-Branch: REL9_3_STABLE [9a57858f1] 2014-02-27 11:23:24 -0300
--->
-
- <listitem>
- <para>
- Fix WAL replay of locking an already-updated tuple (Andres Freund,
- &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This error caused updated rows to not be found by index scans, resulting
- in inconsistent query results depending on whether an index scan was
- used. Subsequent processing could result in constraint violations,
- since the previously updated row would not be found by later index
- searches, thus possibly allowing conflicting rows to be inserted.
- Since this error is in WAL replay, it would only manifest during crash
- recovery or on standby servers. The improperly-replayed case most
- commonly arises when a table row that is referenced by a foreign-key
- constraint is updated concurrently with creation of a referencing row.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [fecfc2b91] 2014-03-12 10:04:57 +0200
-Branch: REL9_3_STABLE [4738cc356] 2014-03-12 10:05:46 +0200
-Branch: REL9_2_STABLE [91f932cf4] 2014-03-12 10:07:22 +0200
-Branch: REL9_1_STABLE [63e59c259] 2014-03-12 10:09:22 +0200
-Branch: REL9_0_STABLE [9954e1f03] 2014-03-12 10:09:43 +0200
-Branch: REL8_4_STABLE [e2bccdfcc] 2014-03-12 10:10:04 +0200
--->
-
- <listitem>
- <para>
- Restore GIN metapages unconditionally to avoid torn-page risk
- (Heikki Linnakangas)
- </para>
-
- <para>
- Although this oversight could theoretically result in a corrupted
- index, it is unlikely to have caused any problems in practice, since
- the active part of a GIN metapage is smaller than a standard 512-byte
- disk sector.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [7bae0284e] 2014-03-13 12:02:54 -0400
-Branch: REL9_3_STABLE [0d11fed8e] 2014-03-13 12:02:56 -0400
-Branch: REL9_2_STABLE [bbe9621a9] 2014-03-13 12:03:00 -0400
-Branch: REL9_1_STABLE [7bfdf10f5] 2014-03-13 12:03:03 -0400
-Branch: REL9_0_STABLE [7aea1050e] 2014-03-13 12:03:07 -0400
--->
-
- <listitem>
- <para>
- Avoid race condition in checking transaction commit status during
- receipt of a <command>NOTIFY</command> message (Marko Tiikkaja)
- </para>
-
- <para>
- This prevents a scenario wherein a sufficiently fast client might
- respond to a notification before database updates made by the
- notifier have become visible to the recipient.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [bf4052faa] 2014-03-06 11:37:02 -0500
-Branch: REL9_3_STABLE [3973034e6] 2014-03-06 11:37:04 -0500
--->
-
- <listitem>
- <para>
- Allow materialized views to be referenced in <command>UPDATE</command>
- and <command>DELETE</command> commands (Michael Paquier)
- </para>
-
- <para>
- Previously such queries failed with a complaint about not being able
- to lock rows in the materialized view.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9662143f0] 2014-03-01 15:20:56 -0500
-Branch: REL9_3_STABLE [f5f21315d] 2014-03-01 15:21:00 -0500
-Branch: REL9_2_STABLE [03e6423fc] 2014-03-01 15:21:04 -0500
-Branch: REL9_1_STABLE [a9eb4924a] 2014-03-01 15:21:07 -0500
-Branch: REL9_0_STABLE [43af0e8c6] 2014-03-01 15:21:11 -0500
-Branch: REL8_4_STABLE [b6e143458] 2014-03-01 15:21:13 -0500
--->
-
- <listitem>
- <para>
- Allow regular-expression operators to be terminated early by query
- cancel requests (Tom Lane)
- </para>
-
- <para>
- This prevents scenarios wherein a pathological regular expression
- could lock up a server process uninterruptibly for a long time.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [a222f7fda] 2014-02-18 12:44:20 -0500
-Branch: REL9_3_STABLE [0aaa42241] 2014-02-18 12:44:24 -0500
-Branch: REL9_2_STABLE [d7cd6a9d5] 2014-02-18 12:44:27 -0500
-Branch: REL9_1_STABLE [e6f7fe983] 2014-02-18 12:44:30 -0500
-Branch: REL9_0_STABLE [19d66ab05] 2014-02-18 12:44:33 -0500
-Branch: REL8_4_STABLE [dd378dd1e] 2014-02-18 12:44:36 -0500
--->
-
- <listitem>
- <para>
- Remove incorrect code that tried to allow <literal>OVERLAPS</literal> with
- single-element row arguments (Joshua Yanovski)
- </para>
-
- <para>
- This code never worked correctly, and since the case is neither
- specified by the SQL standard nor documented, it seemed better to
- remove it than fix it.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [7c3187494] 2014-03-06 19:31:05 -0500
-Branch: REL9_3_STABLE [f557826f8] 2014-03-06 19:31:09 -0500
-Branch: REL9_2_STABLE [5ec41e345] 2014-03-06 19:31:12 -0500
-Branch: REL9_1_STABLE [f3e3f6c5b] 2014-03-06 19:31:16 -0500
-Branch: REL9_0_STABLE [bed1259e5] 2014-03-06 19:31:19 -0500
-Branch: REL8_4_STABLE [f043bddfe] 2014-03-06 19:31:22 -0500
--->
-
- <listitem>
- <para>
- Avoid getting more than <literal>AccessShareLock</literal> when de-parsing a
- rule or view (Dean Rasheed)
- </para>
-
- <para>
- This oversight resulted in <application>pg_dump</application> unexpectedly
- acquiring <literal>RowExclusiveLock</literal> locks on tables mentioned as
- the targets of <literal>INSERT</literal>/<literal>UPDATE</literal>/<literal>DELETE</literal>
- commands in rules. While usually harmless, that could interfere with
- concurrent transactions that tried to acquire, for example,
- <literal>ShareLock</literal> on those tables.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [fccebe421] 2014-02-25 16:04:06 -0500
-Branch: REL9_3_STABLE [4162a55c7] 2014-02-25 16:04:09 -0500
-Branch: REL9_2_STABLE [00283cae1] 2014-02-25 16:04:12 -0500
-Branch: REL9_1_STABLE [3e2db4c80] 2014-02-25 16:04:16 -0500
-Branch: REL9_0_STABLE [1e0fb6a2c] 2014-02-25 16:04:20 -0500
--->
-
- <listitem>
- <para>
- Improve performance of index endpoint probes during planning (Tom Lane)
- </para>
-
- <para>
- This change fixes a significant performance problem that occurred
- when there were many not-yet-committed rows at the end of the index,
- which is a common situation for indexes on sequentially-assigned
- values such as timestamps or sequence-generated identifiers.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [77585bce0] 2014-02-21 17:10:46 -0500
-Branch: REL9_3_STABLE [e8655a77f] 2014-02-21 17:10:49 -0500
--->
-
- <listitem>
- <para>
- Use non-default selectivity estimates for
- <literal><replaceable>value</replaceable> IN (<replaceable>list</replaceable>)</literal> and
- <literal><replaceable>value</replaceable> <replaceable>operator</replaceable> ANY
- (<replaceable>array</replaceable>)</literal>
- expressions when the righthand side is a stable expression (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [2b4f2ab33] 2014-03-05 13:03:29 -0300
-Branch: REL9_3_STABLE [13ea43ab8] 2014-03-05 13:03:29 -0300
--->
-
- <listitem>
- <para>
- Remove the correct per-database statistics file during <command>DROP
- DATABASE</command> (Tomas Vondra)
- </para>
-
- <para>
- This fix prevents a permanent leak of statistics file space.
- Users who have done many <command>DROP DATABASE</command> commands since
- upgrading to <productname>PostgreSQL</productname> 9.3 may wish to check their
- statistics directory and delete statistics files that do not
- correspond to any existing database. Please note
- that <filename>db_0.stat</filename> should not be removed.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [94ae6ba74] 2014-03-06 21:38:51 +0200
-Branch: REL9_3_STABLE [dcd1131c8] 2014-03-06 21:40:50 +0200
--->
-
- <listitem>
- <para>
- Fix <application>walsender</application> ping logic to avoid inappropriate
- disconnects under continuous load (Andres Freund, Heikki Linnakangas)
- </para>
-
- <para>
- <application>walsender</application> failed to send ping messages to the client
- if it was constantly busy sending WAL data; but it expected to see
- ping responses despite that, and would therefore disconnect
- once <xref linkend="guc-wal-sender-timeout"/> elapsed.
- </para>
- </listitem>
-
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: master [5c6d9fc4b] 2014-03-17 20:37:50 +0900
-Branch: REL9_3_STABLE [385723405] 2014-03-17 20:41:12 +0900
-Branch: REL9_2_STABLE [7899aa356] 2014-03-17 20:41:52 +0900
-Branch: REL9_1_STABLE [65e8dbb18] 2014-03-17 20:42:35 +0900
--->
-
- <listitem>
- <para>
- Fix <application>walsender</application>'s failure to shut down cleanly when client
- is <application>pg_receivexlog</application> (Fujii Masao)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [956685f82] 2014-03-05 14:48:14 +0200
-Branch: REL9_3_STABLE [a5363a696] 2014-03-05 14:46:56 +0200
-Branch: REL9_2_STABLE [e7ec05562] 2014-03-05 14:45:55 +0200
--->
-
- <listitem>
- <para>
- Check WAL level and hot standby parameters correctly when doing crash
- recovery that will be followed by archive recovery (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [af246c37c] 2014-03-05 13:51:19 +0200
-Branch: REL9_3_STABLE [2cd72ba42] 2014-03-05 13:52:21 +0200
-Branch: REL9_2_STABLE [931dc26b0] 2014-03-05 13:57:32 +0200
-Branch: REL9_1_STABLE [7552d3d1a] 2014-03-05 13:58:14 +0200
-Branch: REL9_0_STABLE [4521cc850] 2014-03-05 13:58:22 +0200
--->
-
- <listitem>
- <para>
- Fix test to see if hot standby connections can be allowed immediately
- after a crash (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: REL9_3_STABLE [5a7e75849] 2014-02-20 10:46:54 +0200
--->
-
- <listitem>
- <para>
- Add read-only <xref linkend="guc-data-checksums"/> parameter to
- display whether page checksums are enabled (Heikki Linnakangas)
- </para>
-
- <para>
- Without this parameter, determining the state of checksum
- processing was difficult.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [6c461cb92] 2014-03-13 20:59:42 -0400
-Branch: REL9_3_STABLE [41bd2cf55] 2014-03-13 20:59:45 -0400
-Branch: REL9_2_STABLE [7a289bb6d] 2014-03-13 20:59:48 -0400
-Branch: REL9_1_STABLE [f16ca9755] 2014-03-13 20:59:51 -0400
-Branch: REL9_0_STABLE [dad55e1e9] 2014-03-13 20:59:55 -0400
-Branch: REL8_4_STABLE [172c53e92] 2014-03-13 20:59:57 -0400
--->
-
- <listitem>
- <para>
- Prevent interrupts while reporting non-<literal>ERROR</literal> messages
- (Tom Lane)
- </para>
-
- <para>
- This guards against rare server-process freezeups due to recursive
- entry to <function>syslog()</function>, and perhaps other related problems.
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [bd1154ede] 2014-03-16 23:22:21 -0300
-Branch: REL9_3_STABLE [60829079d] 2014-03-16 23:22:22 -0300
-Branch: REL9_2_STABLE [ba5946e86] 2014-03-16 23:22:22 -0300
-Branch: REL9_1_STABLE [f84997c7e] 2014-03-16 23:22:22 -0300
--->
-
- <listitem>
- <para>
- Fix memory leak in PL/Perl when returning a composite result, including
- multiple-OUT-parameter cases (Alex Hunsaker)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e85a5ffba] 2014-03-10 15:47:40 -0400
-Branch: REL9_3_STABLE [f64f4c370] 2014-03-10 15:47:09 -0400
-Branch: REL9_2_STABLE [b315b767f] 2014-03-10 15:47:13 -0400
--->
-
- <listitem>
- <para>
- Fix tracking of <application>psql</application> script line numbers
- during <literal>\copy</literal> from out-of-line data
- (Kumar Rajeev Rastogi, Amit Khandekar)
- </para>
-
- <para>
- <literal>\copy ... from</literal> incremented the script file line number
- for each data line, even if the data was not coming from the script
- file. This mistake resulted in wrong line numbers being reported for
- any errors occurring later in the same script file.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [83204e100] 2014-03-07 16:36:40 -0500
-Branch: REL9_3_STABLE [73f0483fd] 2014-03-07 16:36:50 -0500
--->
-
- <listitem>
- <para>
- Fix <application>contrib/postgres_fdw</application> to handle multiple join
- conditions properly (Tom Lane)
- </para>
-
- <para>
- This oversight could result in sending <literal>WHERE</literal> clauses to
- the remote server for execution even though the clauses are not known
- to have the same semantics on the remote server (for example, clauses
- that use non-built-in operators). The query might succeed anyway,
- but it could also fail with errors from the remote server, or worse
- give silently wrong answers.
- </para>
- </listitem>
-
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [7f3e17b48] 2014-02-18 14:45:58 +0100
-Branch: REL9_3_STABLE [b88ecb002] 2014-02-18 14:49:41 +0100
-Branch: REL9_2_STABLE [062deb313] 2014-02-18 14:50:19 +0100
-Branch: REL9_1_STABLE [fae12f331] 2014-03-16 11:46:20 +0100
-Branch: REL9_0_STABLE [665515539] 2014-03-16 11:47:37 +0100
--->
-
- <listitem>
- <para>
- Prevent intermittent <quote>could not reserve shared memory region</quote>
- failures on recent Windows versions (MauMau)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [aba7f5677] 2014-03-15 13:36:07 -0400
-Branch: REL9_3_STABLE [b5de16997] 2014-03-15 13:36:24 -0400
-Branch: REL9_2_STABLE [f2063b379] 2014-03-15 13:36:32 -0400
-Branch: REL9_1_STABLE [2df1bf21c] 2014-03-15 13:36:41 -0400
-Branch: REL9_0_STABLE [0033f5324] 2014-03-15 13:36:49 -0400
-Branch: REL8_4_STABLE [6e6c2c2e1] 2014-03-15 13:36:57 -0400
--->
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2014a
- for DST law changes in Fiji and Turkey, plus historical changes in
- Israel and Ukraine.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-3">
- <title>Release 9.3.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2014-02-20</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.2.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.3</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, several of the issues corrected in this release could have
- resulted in corruption of foreign-key constraints; that is, there
- might now be referencing rows for which there is no matching row in
- the referenced table. It may be worthwhile to recheck such
- constraints after installing this update. The simplest way to do that
- is to drop and recreate each suspect constraint; however, that will
- require taking an exclusive lock on both tables, so it is unlikely to
- be acceptable in production databases. Alternatively, you can do a
- manual join query between the two tables to look for unmatched rows.
- </para>
-
- <para>
- Note also the requirement for replication standby servers to be
- upgraded before their master server is upgraded.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.2,
- see <xref linkend="release-9-3-2"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [fea164a72] 2014-02-17 09:33:31 -0500
-Branch: REL9_3_STABLE [475a1fbc4] 2014-02-17 09:33:32 -0500
-Branch: REL9_2_STABLE [15a8f97b9] 2014-02-17 09:33:33 -0500
-Branch: REL9_1_STABLE [5d320a16c] 2014-02-17 09:33:33 -0500
-Branch: REL9_0_STABLE [789063697] 2014-02-17 09:33:37 -0500
-Branch: REL8_4_STABLE [ff35425c8] 2014-02-17 09:33:38 -0500
--->
-
- <listitem>
- <para>
- Shore up <literal>GRANT ... WITH ADMIN OPTION</literal> restrictions
- (Noah Misch)
- </para>
-
- <para>
- Granting a role without <literal>ADMIN OPTION</literal> is supposed to
- prevent the grantee from adding or removing members from the granted
- role, but this restriction was easily bypassed by doing <literal>SET
- ROLE</literal> first. The security impact is mostly that a role member can
- revoke the access of others, contrary to the wishes of his grantor.
- Unapproved role member additions are a lesser concern, since an
- uncooperative role member could provide most of his rights to others
- anyway by creating views or <literal>SECURITY DEFINER</literal> functions.
- (CVE-2014-0060)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [537cbd35c] 2014-02-17 09:33:31 -0500
-Branch: REL9_3_STABLE [fc4a04a3c] 2014-02-17 09:33:32 -0500
-Branch: REL9_2_STABLE [1d701d28a] 2014-02-17 09:33:33 -0500
-Branch: REL9_1_STABLE [23b5a85e6] 2014-02-17 09:33:36 -0500
-Branch: REL9_0_STABLE [c0ac4c75f] 2014-02-17 09:33:37 -0500
-Branch: REL8_4_STABLE [823b9dc25] 2014-02-17 09:33:38 -0500
--->
-
- <listitem>
- <para>
- Prevent privilege escalation via manual calls to PL validator
- functions (Andres Freund)
- </para>
-
- <para>
- The primary role of PL validator functions is to be called implicitly
- during <command>CREATE FUNCTION</command>, but they are also normal SQL
- functions that a user can call explicitly. Calling a validator on
- a function actually written in some other language was not checked
- for and could be exploited for privilege-escalation purposes.
- The fix involves adding a call to a privilege-checking function in
- each validator function. Non-core procedural languages will also
- need to make this change to their own validator functions, if any.
- (CVE-2014-0061)
- </para>
- </listitem>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [5f173040e] 2014-02-17 09:33:31 -0500
-Branch: REL9_3_STABLE [e1e0a4d79] 2014-02-17 09:33:32 -0500
-Branch: REL9_2_STABLE [820ab11fb] 2014-02-17 09:33:33 -0500
-Branch: REL9_1_STABLE [b5c574399] 2014-02-17 09:33:36 -0500
-Branch: REL9_0_STABLE [43d4e965e] 2014-02-17 09:33:37 -0500
-Branch: REL8_4_STABLE [e46476133] 2014-02-17 09:33:38 -0500
--->
-
- <listitem>
- <para>
- Avoid multiple name lookups during table and index DDL
- (Robert Haas, Andres Freund)
- </para>
-
- <para>
- If the name lookups come to different conclusions due to concurrent
- activity, we might perform some parts of the DDL on a different table
- than other parts. At least in the case of <command>CREATE INDEX</command>,
- this can be used to cause the permissions checks to be performed
- against a different table than the index creation, allowing for a
- privilege escalation attack.
- (CVE-2014-0062)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [4318daecc] 2014-02-17 09:33:31 -0500
-Branch: REL9_3_STABLE [e4a4fa223] 2014-02-17 09:33:32 -0500
-Branch: REL9_2_STABLE [f416622be] 2014-02-17 09:33:33 -0500
-Branch: REL9_1_STABLE [6a10e57b0] 2014-02-17 09:33:37 -0500
-Branch: REL9_0_STABLE [b9c3bb1b3] 2014-02-17 09:33:38 -0500
-Branch: REL8_4_STABLE [d0ed1a6c0] 2014-02-17 09:33:39 -0500
--->
-
- <listitem>
- <para>
- Prevent buffer overrun with long datetime strings (Noah Misch)
- </para>
-
- <para>
- The <literal>MAXDATELEN</literal> constant was too small for the longest
- possible value of type <type>interval</type>, allowing a buffer overrun
- in <function>interval_out()</function>. Although the datetime input
- functions were more careful about avoiding buffer overrun, the limit
- was short enough to cause them to reject some valid inputs, such as
- input containing a very long timezone name. The <application>ecpg</application>
- library contained these vulnerabilities along with some of its own.
- (CVE-2014-0063)
- </para>
- </listitem>
-
-<!--
-Author: Noah Misch <noah@leadboat.com>
-Branch: master [31400a673] 2014-02-17 09:33:31 -0500
-Branch: REL9_3_STABLE [7a362a176] 2014-02-17 09:33:32 -0500
-Branch: REL9_2_STABLE [12bbce15d] 2014-02-17 09:33:33 -0500
-Branch: REL9_1_STABLE [0b7026d96] 2014-02-17 09:33:37 -0500
-Branch: REL9_0_STABLE [2c3203e18] 2014-02-17 09:33:38 -0500
-Branch: REL8_4_STABLE [98be8a6ea] 2014-02-17 09:33:39 -0500
--->
-
- <listitem>
- <para>
- Prevent buffer overrun due to integer overflow in size calculations
- (Noah Misch, Heikki Linnakangas)
- </para>
-
- <para>
- Several functions, mostly type input functions, calculated an
- allocation size without checking for overflow. If overflow did
- occur, a too-small buffer would be allocated and then written past.
- (CVE-2014-0064)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [01824385a] 2014-02-17 11:20:21 -0500
-Branch: REL9_3_STABLE [e3208fec3] 2014-02-17 11:20:24 -0500
-Branch: REL9_2_STABLE [655b665f7] 2014-02-17 11:20:27 -0500
-Branch: REL9_1_STABLE [4741e3160] 2014-02-17 11:20:31 -0500
-Branch: REL9_0_STABLE [45bf2404a] 2014-02-17 11:20:35 -0500
-Branch: REL8_4_STABLE [69d2bc14a] 2014-02-17 11:20:38 -0500
--->
-
- <listitem>
- <para>
- Prevent overruns of fixed-size buffers
- (Peter Eisentraut, Jozef Mlich)
- </para>
-
- <para>
- Use <function>strlcpy()</function> and related functions to provide a clear
- guarantee that fixed-size buffers are not overrun. Unlike the
- preceding items, it is unclear whether these cases really represent
- live issues, since in most cases there appear to be previous
- constraints on the size of the input string. Nonetheless it seems
- prudent to silence all Coverity warnings of this type.
- (CVE-2014-0065)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [01824385a] 2014-02-17 11:20:21 -0500
-Branch: REL9_3_STABLE [e3208fec3] 2014-02-17 11:20:24 -0500
-Branch: REL9_2_STABLE [655b665f7] 2014-02-17 11:20:27 -0500
-Branch: REL9_1_STABLE [4741e3160] 2014-02-17 11:20:31 -0500
-Branch: REL9_0_STABLE [45bf2404a] 2014-02-17 11:20:35 -0500
-Branch: REL8_4_STABLE [69d2bc14a] 2014-02-17 11:20:38 -0500
--->
-
- <listitem>
- <para>
- Avoid crashing if <function>crypt()</function> returns NULL (Honza Horak,
- Bruce Momjian)
- </para>
-
- <para>
- There are relatively few scenarios in which <function>crypt()</function>
- could return NULL, but <filename>contrib/chkpass</filename> would crash
- if it did. One practical case in which this could be an issue is
- if <application>libc</application> is configured to refuse to execute unapproved
- hashing algorithms (e.g., <quote>FIPS mode</quote>).
- (CVE-2014-0066)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [6ef325429] 2014-02-17 11:24:32 -0500
-Branch: REL9_3_STABLE [1ec5988f3] 2014-02-17 11:24:38 -0500
-Branch: REL9_2_STABLE [ff3d533e5] 2014-02-17 11:24:42 -0500
-Branch: REL9_1_STABLE [800a3744b] 2014-02-17 11:24:45 -0500
-Branch: REL9_0_STABLE [369c229d2] 2014-02-17 11:24:48 -0500
-Branch: REL8_4_STABLE [f58663ab1] 2014-02-17 11:24:51 -0500
--->
-
- <listitem>
- <para>
- Document risks of <literal>make check</literal> in the regression testing
- instructions (Noah Misch, Tom Lane)
- </para>
-
- <para>
- Since the temporary server started by <literal>make check</literal>
- uses <quote>trust</quote> authentication, another user on the same machine
- could connect to it as database superuser, and then potentially
- exploit the privileges of the operating-system user who started the
- tests. A future release will probably incorporate changes in the
- testing procedure to prevent this risk, but some public discussion is
- needed first. So for the moment, just warn people against using
- <literal>make check</literal> when there are untrusted users on the
- same machine.
- (CVE-2014-0067)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [3b97e6823] 2013-12-16 11:29:50 -0300
-Branch: REL9_3_STABLE [8e9a16ab8] 2013-12-16 11:29:51 -0300
--->
-
- <listitem>
- <para>
- Rework tuple freezing protocol
- (&Aacute;lvaro Herrera, Andres Freund)
- </para>
-
- <para>
- The logic for tuple freezing was unable to handle some cases involving
- freezing of
- <link linkend="vacuum-for-multixact-wraparound"><firstterm>multixact</firstterm>
- IDs</link>, with the practical effect that shared row-level locks
- might be forgotten once old enough.
- </para>
-
- <para>
- Fixing this required changing the WAL record format for tuple
- freezing. While this is no issue for standalone servers, when using
- replication it means that <emphasis>standby servers must be upgraded
- to 9.3.3 or later before their masters are</emphasis>. An older standby will
- be unable to interpret freeze records generated by a newer master, and
- will fail with a PANIC message. (In such a case, upgrading the
- standby should be sufficient to let it resume execution.)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [801c2dc72] 2014-02-13 19:36:31 -0300
-Branch: REL9_3_STABLE [fb47de2be] 2014-02-13 19:30:30 -0300
--->
-
- <listitem>
- <para>
- Create separate GUC parameters to control multixact freezing
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- 9.3 requires multixact tuple labels to be frozen before
- they grow too old, in the same fashion as plain transaction ID labels
- have been frozen for some time. Previously, the transaction ID
- freezing parameters were used for multixact IDs too; but since
- the consumption rates of transaction IDs and multixact IDs can be
- quite different, this did not work very well. Introduce new settings
- <xref linkend="guc-vacuum-multixact-freeze-min-age"/>,
- <xref linkend="guc-vacuum-multixact-freeze-table-age"/>, and
- <xref linkend="guc-autovacuum-multixact-freeze-max-age"/>
- to control when to freeze multixacts.
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [11ac4c73c] 2013-12-18 13:45:51 -0300
-Branch: REL9_3_STABLE [db1014bc4] 2013-12-18 13:31:27 -0300
--->
-
- <listitem>
- <para>
- Account for remote row locks propagated by local updates
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- If a row was locked by transaction A, and transaction B updated it,
- the new version of the row created by B would be locked by A, yet
- visible only to B. If transaction B then again updated the row, A's
- lock wouldn't get checked, thus possibly allowing B to complete when
- it shouldn't. This case is new in 9.3 since prior versions did not
- have any types of row locking that would permit another transaction
- to update the row at all.
- </para>
-
- <para>
- This oversight could allow referential integrity checks to give false
- positives (for instance, allow deletes that should have been rejected).
- Applications using the new commands <literal>SELECT FOR KEY SHARE</literal>
- and <literal>SELECT FOR NO KEY UPDATE</literal> might also have suffered
- locking failures of this kind.
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [07aeb1fec] 2013-12-05 12:21:55 -0300
-Branch: REL9_3_STABLE [c6cd27e36] 2013-12-05 12:21:55 -0300
--->
-
- <listitem>
- <para>
- Prevent <quote>forgetting</quote> valid row locks when one of several
- holders of a row lock aborts (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- This was yet another mechanism by which a shared row lock could be
- lost, thus possibly allowing updates that should have been prevented
- by foreign-key constraints.
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [312bde3d4] 2013-12-05 17:47:51 -0300
-Branch: REL9_3_STABLE [2dcc48c35] 2013-12-05 17:47:51 -0300
--->
-
- <listitem>
- <para>
- Fix incorrect logic during update chain locking
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- This mistake could result in spurious <quote>could not serialize access
- due to concurrent update</quote> errors in <literal>REPEATABLE READ</literal>
- and <literal>SERIALIZABLE</literal> transaction isolation modes.
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [a50d97625] 2014-01-02 18:17:07 -0300
-Branch: REL9_3_STABLE [03db79459] 2014-01-02 18:17:07 -0300
--->
-
- <listitem>
- <para>
- Handle wraparound correctly during extension or truncation
- of <filename>pg_multixact/members</filename>
- (Andres Freund, &Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [638cf09e7] 2014-01-02 18:17:29 -0300
-Branch: REL9_3_STABLE [948a3dfbb] 2014-01-02 18:17:29 -0300
--->
-
- <listitem>
- <para>
- Fix handling of 5-digit filenames in <filename>pg_multixact/members</filename>
- (&Aacute;lvaro Herrera)
- </para>
-
- <para>
- As of 9.3, these names can be more than 4 digits, but the directory
- cleanup code ignored such files.
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [d881dd623] 2013-12-13 17:16:25 -0300
-Branch: REL9_3_STABLE [0bc00363b] 2013-12-13 17:16:25 -0300
--->
-
- <listitem>
- <para>
- Improve performance of multixact cache code
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
-<!--
-Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
-Branch: master [13aa62443] 2013-12-19 16:53:49 -0300
-Branch: REL9_3_STABLE [85d3b3c3a] 2013-12-19 16:39:59 -0300
--->
-
- <listitem>
- <para>
- Optimize updating a row that's already locked by the same transaction
- (Andres Freund, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This fixes a performance regression from pre-9.3 versions when doing
- <literal>SELECT FOR UPDATE</literal> followed by <literal>UPDATE/DELETE</literal>.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [4d894b41c] 2014-02-14 15:15:09 +0200
-Branch: REL9_3_STABLE [762bd379a] 2014-02-14 15:18:34 +0200
--->
-
- <listitem>
- <para>
- During archive recovery, prefer highest timeline number when WAL
- segments with the same ID are present in both the archive
- and <filename>pg_xlog/</filename> (Kyotaro Horiguchi)
- </para>
-
- <para>
- Previously, not-yet-archived segments could get ignored during
- recovery. This reverts an undesirable behavioral change in 9.3.0
- back to the way things worked pre-9.3.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [6f2aead1f] 2014-02-12 14:52:16 -0500
-Branch: REL9_3_STABLE [7190f7a34] 2014-02-12 14:52:20 -0500
-Branch: REL9_2_STABLE [bc7ab301a] 2014-02-12 14:52:23 -0500
-Branch: REL9_1_STABLE [a69cc9b2c] 2014-02-12 14:52:26 -0500
-Branch: REL9_0_STABLE [7fedd79b7] 2014-02-12 14:52:29 -0500
-Branch: REL8_4_STABLE [9620fede9] 2014-02-12 14:52:32 -0500
--->
-
- <listitem>
- <para>
- Fix possible mis-replay of WAL records when some segments of a
- relation aren't full size (Greg Stark, Tom Lane)
- </para>
-
- <para>
- The WAL update could be applied to the wrong page, potentially many
- pages past where it should have been. Aside from corrupting data,
- this error has been observed to result in significant <quote>bloat</quote>
- of standby servers compared to their masters, due to updates being
- applied far beyond where the end-of-file should have been. This
- failure mode does not appear to be a significant risk during crash
- recovery, only when initially synchronizing a standby created from a
- base backup taken from a quickly-changing master.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [d59ff6c11] 2014-01-08 15:03:09 +0200
-Branch: REL9_3_STABLE [425bef6ee] 2014-01-08 14:32:22 +0200
-Branch: REL9_2_STABLE [82c75f9dd] 2014-01-08 14:28:55 +0200
-Branch: REL9_1_STABLE [e56430c62] 2014-01-08 14:33:58 +0200
-Branch: REL9_0_STABLE [5301c8395] 2014-01-08 14:34:21 +0200
--->
-
- <listitem>
- <para>
- Fix bug in determining when recovery has reached consistency
- (Tomonari Katsumata, Heikki Linnakangas)
- </para>
-
- <para>
- In some cases WAL replay would mistakenly conclude that the database
- was already consistent at the start of replay, thus possibly allowing
- hot-standby queries before the database was really consistent. Other
- symptoms such as <quote>PANIC: WAL contains references to invalid
- pages</quote> were also possible.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [a49633d8d] 2013-12-13 14:15:04 +0200
-Branch: REL9_3_STABLE [615299cf6] 2013-12-13 14:23:02 +0200
--->
-
- <listitem>
- <para>
- Fix WAL logging of visibility map changes (Heikki Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [061b079f8] 2014-01-14 17:35:21 -0500
-Branch: REL9_3_STABLE [ebde6c401] 2014-01-14 17:34:51 -0500
-Branch: REL9_2_STABLE [ad2e041a3] 2014-01-14 17:34:54 -0500
-Branch: REL9_1_STABLE [ab4bb5c47] 2014-01-14 17:34:57 -0500
-Branch: REL9_0_STABLE [5d742b9ce] 2014-01-14 17:35:00 -0500
--->
-
- <listitem>
- <para>
- Fix improper locking of btree index pages while replaying
- a <literal>VACUUM</literal> operation in hot-standby mode (Andres Freund,
- Heikki Linnakangas, Tom Lane)
- </para>
-
- <para>
- This error could result in <quote>PANIC: WAL contains references to
- invalid pages</quote> failures.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [22122c83f] 2013-12-03 23:16:01 +0200
-Branch: REL9_3_STABLE [8fd04cb32] 2013-12-03 22:13:16 +0200
-Branch: REL9_2_STABLE [06df57ac6] 2013-12-03 22:34:31 +0200
-Branch: REL9_1_STABLE [e6acb956a] 2013-12-03 22:34:43 +0200
-Branch: REL9_0_STABLE [760606dc5] 2013-12-03 23:01:31 +0200
-Branch: REL8_4_STABLE [67fc33d3a] 2013-12-03 22:53:26 +0200
--->
-
- <listitem>
- <para>
- Ensure that insertions into non-leaf GIN index pages write a full-page
- WAL record when appropriate (Heikki Linnakangas)
- </para>
-
- <para>
- The previous coding risked index corruption in the event of a
- partial-page write during a system crash.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [3739e5ab9] 2014-01-08 23:28:52 +0200
-Branch: REL9_3_STABLE [3aefff422] 2014-01-08 23:30:46 +0200
-Branch: REL9_2_STABLE [3bd8987ef] 2014-01-08 23:30:55 +0200
-Branch: REL9_1_STABLE [0402f2441] 2014-01-08 23:31:01 +0200
--->
-
- <listitem>
- <para>
- When <literal>pause_at_recovery_target</literal>
- and <literal>recovery_target_inclusive</literal> are both set, ensure the
- target record is applied before pausing, not after (Heikki
- Linnakangas)
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [a472ae1e4] 2014-01-16 23:15:41 +0200
-Branch: REL9_3_STABLE [e34acac62] 2014-01-16 23:14:57 +0200
--->
-
- <listitem>
- <para>
- Ensure walreceiver sends hot-standby feedback messages on time even
- when there is a continuous stream of data (Andres Freund, Amit
- Kapila)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e8312b4f0] 2013-12-13 11:50:15 -0500
-Branch: REL9_3_STABLE [478af9b79] 2013-12-13 11:50:25 -0500
--->
-
- <listitem>
- <para>
- Prevent timeout interrupts from taking control away from mainline
- code unless <varname>ImmediateInterruptOK</varname> is set
- (Andres Freund, Tom Lane)
- </para>
-
- <para>
- This is a serious issue for any application making use of statement
- timeouts, as it could cause all manner of strange failures after a
- timeout occurred. We have seen reports of <quote>stuck</quote> spinlocks,
- ERRORs being unexpectedly promoted to PANICs, unkillable backends,
- and other misbehaviors.
- </para>
- </listitem>
-
-<!--
-Author: Robert Haas <rhaas@postgresql.org>
-Branch: master [d1981719a] 2014-01-31 21:31:08 -0500
-Branch: REL9_3_STABLE [5d807a74b] 2014-01-31 21:34:44 -0500
-Branch: REL9_2_STABLE [ebe334463] 2014-01-31 21:35:32 -0500
-Branch: REL9_1_STABLE [8e6bfc9eb] 2014-01-31 21:36:23 -0500
-Branch: REL9_0_STABLE [798243a81] 2014-01-31 21:40:20 -0500
-Branch: REL8_4_STABLE [458b20f2d] 2014-01-31 21:41:09 -0500
--->
-
- <listitem>
- <para>
- Fix race conditions during server process exit (Robert Haas)
- </para>
-
- <para>
- Ensure that signal handlers don't attempt to use the
- process's <varname>MyProc</varname> pointer after it's no longer valid.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [214c7a4f0] 2014-02-01 16:21:23 -0500
-Branch: REL9_3_STABLE [6f1a40773] 2014-02-01 16:21:30 -0500
-Branch: REL9_2_STABLE [81b116d98] 2014-02-01 16:21:33 -0500
-Branch: REL9_1_STABLE [03f06ff38] 2014-02-01 16:21:38 -0500
--->
-
- <listitem>
- <para>
- Fix race conditions in walsender shutdown logic and walreceiver
- SIGHUP signal handler (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [571addd72] 2014-01-29 20:04:43 -0500
-Branch: REL9_3_STABLE [bf8ee6f15] 2014-01-29 20:04:01 -0500
-Branch: REL9_2_STABLE [3e71ce1e9] 2014-01-29 20:04:05 -0500
-Branch: REL9_1_STABLE [af259c691] 2014-01-29 20:04:08 -0500
-Branch: REL9_0_STABLE [d17a667e8] 2014-01-29 20:04:11 -0500
-Branch: REL8_4_STABLE [01b882fd8] 2014-01-29 20:04:14 -0500
--->
-
- <listitem>
- <para>
- Fix unsafe references to <varname>errno</varname> within error reporting
- logic (Christian Kruse)
- </para>
-
- <para>
- This would typically lead to odd behaviors such as missing or
- inappropriate <literal>HINT</literal> fields.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [910bac595] 2014-01-11 16:36:07 -0500
-Branch: REL9_3_STABLE [5bfcc9ec5] 2014-01-11 16:35:30 -0500
-Branch: REL9_2_STABLE [2de905186] 2014-01-11 16:35:34 -0500
-Branch: REL9_1_STABLE [3f721588a] 2014-01-11 16:35:37 -0500
-Branch: REL9_0_STABLE [d9c4442b8] 2014-01-11 16:35:41 -0500
-Branch: REL8_4_STABLE [d0070ac81] 2014-01-11 16:35:44 -0500
--->
-
- <listitem>
- <para>
- Fix possible crashes from using <function>ereport()</function> too early
- during server startup (Tom Lane)
- </para>
-
- <para>
- The principal case we've seen in the field is a crash if the server
- is started in a directory it doesn't have permission to read.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [74242c23c] 2013-12-05 12:48:28 -0500
-Branch: REL9_3_STABLE [2a6e1a554] 2013-12-05 12:48:31 -0500
-Branch: REL9_2_STABLE [41042970b] 2013-12-05 12:48:35 -0500
-Branch: REL9_1_STABLE [ad910ccdc] 2013-12-05 12:48:37 -0500
-Branch: REL9_0_STABLE [36352ceb4] 2013-12-05 12:48:41 -0500
-Branch: REL8_4_STABLE [7635dae55] 2013-12-05 12:48:44 -0500
--->
-
- <listitem>
- <para>
- Clear retry flags properly in OpenSSL socket write
- function (Alexander Kukushkin)
- </para>
-
- <para>
- This omission could result in a server lockup after unexpected loss
- of an SSL-encrypted connection.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [44c216330] 2014-02-13 14:24:42 -0500
-Branch: REL9_3_STABLE [ca1c17181] 2014-02-13 14:24:45 -0500
-Branch: REL9_2_STABLE [8439ee415] 2014-02-13 14:24:49 -0500
-Branch: REL9_1_STABLE [170590261] 2014-02-13 14:24:52 -0500
-Branch: REL9_0_STABLE [148052d25] 2014-02-13 14:24:55 -0500
-Branch: REL8_4_STABLE [a8a46d846] 2014-02-13 14:24:58 -0500
--->
-
- <listitem>
- <para>
- Fix length checking for Unicode identifiers (<literal>U&amp;"..."</literal>
- syntax) containing escapes (Tom Lane)
- </para>
-
- <para>
- A spurious truncation warning would be printed for such identifiers
- if the escaped form of the identifier was too long, but the
- identifier actually didn't need truncation after de-escaping.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [0c2338abb] 2014-02-03 19:47:57 -0500
-Branch: REL9_3_STABLE [4c70cb1d3] 2014-02-03 19:48:00 -0500
--->
-
- <listitem>
- <para>
- Fix parsing of Unicode literals and identifiers just before the end
- of a command string or function body (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [6c36f383d] 2014-01-21 22:49:22 -0500
-Branch: REL9_3_STABLE [d1e3070f0] 2014-01-21 22:56:30 -0500
-Branch: REL9_2_STABLE [c0e6169e1] 2014-01-21 22:56:34 -0500
-Branch: REL9_1_STABLE [cbd850bf6] 2014-01-21 23:00:58 -0500
-Branch: REL9_0_STABLE [f2eede9b5] 2014-01-21 23:01:40 -0500
--->
-
- <listitem>
- <para>
- Allow keywords that are type names to be used in lists of roles
- (Stephen Frost)
- </para>
-
- <para>
- A previous patch allowed such keywords to be used without quoting
- in places such as role identifiers; but it missed cases where a
- list of role identifiers was permitted, such as <literal>DROP ROLE</literal>.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [7ab321404] 2013-12-02 20:28:45 -0500
-Branch: REL9_3_STABLE [b44ae4893] 2013-12-02 20:28:49 -0500
-Branch: REL9_2_STABLE [6698782f1] 2013-12-02 20:28:53 -0500
-Branch: REL9_1_STABLE [f67b8aeab] 2013-12-02 20:28:56 -0500
--->
-
- <listitem>
- <para>
- Fix parser crash for <literal>EXISTS(SELECT * FROM
- zero_column_table)</literal> (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [9ec6199d1] 2013-12-10 16:10:17 -0500
-Branch: REL9_3_STABLE [9d2e07fec] 2013-12-10 16:10:20 -0500
-Branch: REL9_2_STABLE [f5d9fdcc7] 2013-12-10 16:10:24 -0500
-Branch: REL9_1_STABLE [48e5cfde8] 2013-12-10 16:10:28 -0500
-Branch: REL9_0_STABLE [41e9990cd] 2013-12-10 16:10:31 -0500
-Branch: REL8_4_STABLE [884c6384a] 2013-12-10 16:10:36 -0500
--->
-
- <listitem>
- <para>
- Fix possible crash due to invalid plan for nested sub-selects, such
- as <literal>WHERE (... x IN (SELECT ...) ...) IN (SELECT ...)</literal>
- (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [043f6ff05] 2014-01-30 14:51:16 -0500
-Branch: REL9_3_STABLE [a4aa854ca] 2014-01-30 14:51:19 -0500
--->
-
- <listitem>
- <para>
- Fix mishandling of <literal>WHERE</literal> conditions pulled up from
- a <literal>LATERAL</literal> subquery (Tom Lane)
- </para>
-
- <para>
- The typical symptom of this bug was a <quote>JOIN qualification
- cannot refer to other relations</quote> error, though subtle logic
- errors in created plans seem possible as well.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [158b7fa6a] 2014-01-11 19:03:12 -0500
-Branch: REL9_3_STABLE [27ff4cfe7] 2014-01-11 19:03:15 -0500
--->
-
- <listitem>
- <para>
- Disallow <literal>LATERAL</literal> references to the target table of
- an <literal>UPDATE/DELETE</literal> (Tom Lane)
- </para>
-
- <para>
- While this might be allowed in some future release, it was
- unintentional in 9.3, and didn't work quite right anyway.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c03ad5602] 2013-12-14 17:33:53 -0500
-Branch: REL9_3_STABLE [324577f39] 2013-12-14 17:33:56 -0500
-Branch: REL9_2_STABLE [5d545b7ed] 2013-12-14 17:34:00 -0500
--->
-
- <listitem>
- <para>
- Fix <literal>UPDATE/DELETE</literal> of an inherited target table
- that has <literal>UNION ALL</literal> subqueries (Tom Lane)
- </para>
-
- <para>
- Without this fix, <literal>UNION ALL</literal> subqueries aren't correctly
- inserted into the update plans for inheritance child tables after the
- first one, typically resulting in no update happening for those child
- table(s).
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [4eeda92d8] 2013-12-23 22:18:48 -0500
-Branch: REL9_3_STABLE [663f8419b] 2013-12-23 22:18:23 -0500
--->
-
- <listitem>
- <para>
- Fix <command>ANALYZE</command> to not fail on a column that's a domain over
- a range type (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [628652620] 2014-01-11 13:42:42 -0500
-Branch: REL9_3_STABLE [36785a21b] 2014-01-11 13:41:51 -0500
-Branch: REL9_2_STABLE [f0381680f] 2014-01-11 13:41:56 -0500
-Branch: REL9_1_STABLE [9387f4e1b] 2014-01-11 13:42:00 -0500
-Branch: REL9_0_STABLE [2d76d75d9] 2014-01-11 13:42:05 -0500
-Branch: REL8_4_STABLE [00b77771a] 2014-01-11 13:42:11 -0500
--->
-
- <listitem>
- <para>
- Ensure that <command>ANALYZE</command> creates statistics for a table column
- even when all the values in it are <quote>too wide</quote> (Tom Lane)
- </para>
-
- <para>
- <command>ANALYZE</command> intentionally omits very wide values from its
- histogram and most-common-values calculations, but it neglected to do
- something sane in the case that all the sampled entries are too wide.
- </para>
- </listitem>
-
-<!--
-Author: Stephen Frost <sfrost@snowman.net>
-Branch: master [6f25c62d7] 2014-01-18 18:41:52 -0500
-Branch: REL9_3_STABLE [86e58ae02] 2014-01-18 18:49:08 -0500
-Branch: REL9_2_STABLE [1fe06595a] 2014-01-18 18:49:41 -0500
-Branch: REL9_1_STABLE [d2636486b] 2014-01-18 18:50:09 -0500
-Branch: REL9_0_STABLE [e70c42821] 2014-01-18 18:50:29 -0500
-Branch: REL8_4_STABLE [0fb4e3ceb] 2014-01-18 18:50:47 -0500
--->
-
- <listitem>
- <para>
- In <literal>ALTER TABLE ... SET TABLESPACE</literal>, allow the database's
- default tablespace to be used without a permissions check
- (Stephen Frost)
- </para>
-
- <para>
- <literal>CREATE TABLE</literal> has always allowed such usage,
- but <literal>ALTER TABLE</literal> didn't get the memo.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [c01bc51f8] 2013-12-30 14:00:02 -0500
-Branch: REL9_3_STABLE [9a6e2b150] 2013-12-30 14:00:05 -0500
--->
-
- <listitem>
- <para>
- Fix support for extensions containing event triggers (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [080b7db72] 2014-01-08 20:18:58 -0500
-Branch: REL9_3_STABLE [47ac4473a] 2014-01-08 20:18:10 -0500
-Branch: REL9_2_STABLE [97a39f295] 2014-01-08 20:18:13 -0500
-Branch: REL9_1_STABLE [6c6c53d0b] 2014-01-08 20:18:17 -0500
-Branch: REL9_0_STABLE [6ca712fb9] 2014-01-08 20:18:20 -0500
-Branch: REL8_4_STABLE [57ac7d8a7] 2014-01-08 20:18:24 -0500
--->
-
- <listitem>
- <para>
- Fix <quote>cannot accept a set</quote> error when some arms of
- a <literal>CASE</literal> return a set and others don't (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [d3ee45152] 2014-02-03 10:40:12 -0500
-Branch: REL9_3_STABLE [cdfbb78f0] 2014-02-03 10:39:13 -0500
--->
-
- <listitem>
- <para>
- Fix memory leakage in JSON functions (Craig Ringer)
- </para>
- </listitem>
-
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [29dcf7ded] 2013-12-27 17:04:00 -0500
-Branch: REL9_3_STABLE [7dfd9f6f5] 2013-12-27 17:21:04 -0500
-Branch: REL9_2_STABLE [4825a9e95] 2013-12-27 17:21:27 -0500
--->
-
- <listitem>
- <para>
- Properly distinguish numbers from non-numbers when generating JSON
- output (Andrew Dunstan)
- </para>
- </listitem>
-
-<!--
-Author: Kevin Grittner <kgrittn@postgresql.org>
-Branch: master [a133bf703] 2013-12-27 15:26:24 -0600
-Branch: REL9_3_STABLE [28b60aa23] 2013-12-27 15:40:51 -0600
-Branch: REL9_2_STABLE [150a30e19] 2013-12-27 15:41:02 -0600
-Branch: REL9_1_STABLE [1f069d21d] 2013-12-27 15:41:18 -0600
-Branch: REL9_0_STABLE [918d74a07] 2013-12-27 15:41:32 -0600
-Branch: REL8_4_STABLE [b2d80147d] 2013-12-27 15:41:46 -0600
--->
-
- <listitem>
- <para>
- Fix checks for all-zero client addresses in pgstat functions (Kevin
- Grittner)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [082c0dfa1] 2014-02-01 18:27:34 -0500
-Branch: REL9_3_STABLE [9beffdcc3] 2014-02-01 18:27:40 -0500
-Branch: REL9_2_STABLE [8be095cea] 2014-02-01 18:27:44 -0500
-Branch: REL9_1_STABLE [399d23e19] 2014-02-01 18:27:48 -0500
-Branch: REL9_0_STABLE [3c7b4ef70] 2014-02-01 18:27:54 -0500
-Branch: REL8_4_STABLE [56f5d3424] 2014-02-01 18:27:12 -0500
--->
-
- <listitem>
- <para>
- Fix possible misclassification of multibyte characters by the text
- search parser (Tom Lane)
- </para>
-
- <para>
- Non-ASCII characters could be misclassified when using C locale with
- a multibyte encoding. On Cygwin, non-C locales could fail as well.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [6c2744f1d] 2014-02-10 09:57:59 +0200
-Branch: REL9_3_STABLE [928aec71c] 2014-02-10 09:59:49 +0200
-Branch: REL9_2_STABLE [f3807106b] 2014-02-10 10:00:04 +0200
-Branch: REL9_1_STABLE [5f778e644] 2014-02-10 10:00:23 +0200
-Branch: REL9_0_STABLE [fe8a6f53e] 2014-02-10 10:00:36 +0200
-Branch: REL8_4_STABLE [6141983fb] 2014-02-10 10:00:50 +0200
--->
-
- <listitem>
- <para>
- Fix possible misbehavior in <function>plainto_tsquery()</function>
- (Heikki Linnakangas)
- </para>
-
- <para>
- Use <function>memmove()</function> not <function>memcpy()</function> for copying
- overlapping memory regions. There have been no field reports of
- this actually causing trouble, but it's certainly risky.
- </para>
- </listitem>
-
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [9544cc0d6] 2014-01-07 17:50:56 +0100
-Branch: REL9_3_STABLE [91c2755fc] 2014-01-07 17:51:02 +0100
-Branch: REL9_2_STABLE [61d4d14ee] 2014-01-07 17:53:00 +0100
-Branch: REL9_1_STABLE [026a91f86] 2014-01-07 18:00:36 +0100
--->
-
- <listitem>
- <para>
- Fix placement of permissions checks in <function>pg_start_backup()</function>
- and <function>pg_stop_backup()</function> (Andres Freund, Magnus Hagander)
- </para>
-
- <para>
- The previous coding might attempt to do catalog access when it
- shouldn't.
- </para>
- </listitem>
-
-<!--
-Author: Tatsuo Ishii <ishii@postgresql.org>
-Branch: master [1f0626ee4] 2013-12-15 11:09:05 +0900
-Branch: REL9_3_STABLE [8122e6f85] 2013-12-15 11:10:41 +0900
-Branch: REL9_2_STABLE [0c07ef1ad] 2013-12-15 11:10:49 +0900
-Branch: REL9_1_STABLE [035226c61] 2013-12-15 11:10:56 +0900
-Branch: REL9_0_STABLE [7016d970d] 2013-12-15 11:11:02 +0900
-Branch: REL8_4_STABLE [69f77d756] 2013-12-15 11:11:11 +0900
--->
-
- <listitem>
- <para>
- Accept <literal>SHIFT_JIS</literal> as an encoding name for locale checking
- purposes (Tatsuo Ishii)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [0def2573c] 2014-02-03 14:47:17 -0500
-Branch: REL9_3_STABLE [641c08041] 2014-02-03 14:46:54 -0500
-Branch: REL9_2_STABLE [888b56570] 2014-02-03 14:46:57 -0500
--->
-
- <listitem>
- <para>
- Fix <literal>*</literal>-qualification of named parameters in SQL-language
- functions (Tom Lane)
- </para>
-
- <para>
- Given a composite-type parameter
- named <literal>foo</literal>, <literal>$1.*</literal> worked fine,
- but <literal>foo.*</literal> not so much.
- </para>
- </listitem>
-
-<!--
-Author: Fujii Masao <fujii@postgresql.org>
-Branch: master [77035fa8a] 2014-01-23 22:58:58 +0900
-Branch: REL9_3_STABLE [be5d49974] 2014-01-23 23:00:30 +0900
-Branch: REL9_2_STABLE [ea311bfdf] 2014-01-23 23:01:06 +0900
-Branch: REL9_1_STABLE [1b384aff1] 2014-01-23 23:01:34 +0900
-Branch: REL9_0_STABLE [996b21cbf] 2014-01-23 23:02:03 +0900
-Branch: REL8_4_STABLE [5525529db] 2014-01-23 23:02:30 +0900
--->
-
- <listitem>
- <para>
- Fix misbehavior of <function>PQhost()</function> on Windows (Fujii Masao)
- </para>
-
- <para>
- It should return <literal>localhost</literal> if no host has been specified.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [b8f00a46b] 2014-02-13 18:45:58 -0500
-Branch: REL9_3_STABLE [f208fb436] 2014-02-13 18:46:03 -0500
-Branch: REL9_2_STABLE [2573f08a1] 2014-02-13 18:45:20 -0500
-Branch: REL9_1_STABLE [7182bd239] 2014-02-13 18:45:23 -0500
-Branch: REL9_0_STABLE [218dd205b] 2014-02-13 18:45:27 -0500
-Branch: REL8_4_STABLE [7644a7bd8] 2014-02-13 18:45:32 -0500
--->
-
- <listitem>
- <para>
- Improve error handling in <application>libpq</application> and <application>psql</application>
- for failures during <literal>COPY TO STDOUT/FROM STDIN</literal> (Tom Lane)
- </para>
-
- <para>
- In particular this fixes an infinite loop that could occur in 9.2 and
- up if the server connection was lost during <literal>COPY FROM
- STDIN</literal>. Variants of that scenario might be possible in older
- versions, or with other client applications.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [92459e7a7] 2014-01-04 16:05:16 -0500
-Branch: REL9_3_STABLE [341f0bc49] 2014-01-04 16:05:20 -0500
-Branch: REL9_2_STABLE [fa28f9cba] 2014-01-04 16:05:23 -0500
--->
-
- <listitem>
- <para>
- Fix incorrect translation handling in
- some <application>psql</application> <literal>\d</literal> commands
- (Peter Eisentraut, Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [63ab2befe] 2014-02-12 18:45:18 +0100
-Branch: REL9_3_STABLE [c90204c60] 2014-02-12 18:46:04 +0100
-Branch: REL9_2_STABLE [0ae288d2d] 2014-02-12 14:51:00 +0100
--->
-
- <listitem>
- <para>
- Ensure <application>pg_basebackup</application>'s background process is killed
- when exiting its foreground process (Magnus Hagander)
- </para>
- </listitem>
-
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [01025d80a] 2014-02-09 12:05:14 +0100
-Branch: REL9_3_STABLE [680baa8d2] 2014-02-09 12:09:18 +0100
-Branch: REL9_2_STABLE [165aa1da5] 2014-02-09 12:09:39 +0100
-Branch: REL9_1_STABLE [c6e5c4dd1] 2014-02-09 12:09:55 +0100
--->
-
- <listitem>
- <para>
- Fix possible incorrect printing of filenames
- in <application>pg_basebackup</application>'s verbose mode (Magnus Hagander)
- </para>
- </listitem>
-
-<!--
-Author: Magnus Hagander <magnus@hagander.net>
-Branch: master [b168c5ef2] 2014-01-07 17:11:32 +0100
-Branch: REL9_3_STABLE [0463b9419] 2014-01-07 17:11:51 +0100
-Branch: REL9_2_STABLE [2edf3e82c] 2014-01-07 17:22:36 +0100
-Branch: REL9_1_STABLE [773e4d5e4] 2014-01-07 17:18:02 +0100
--->
-
- <listitem>
- <para>
- Avoid including tablespaces inside PGDATA twice in base backups
- (Dimitri Fontaine, Magnus Hagander)
- </para>
- </listitem>
-
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [d685e2424] 2014-01-09 16:20:19 +0100
-Branch: REL9_3_STABLE [28fff0ef8] 2014-01-09 15:41:51 +0100
-Branch: REL9_2_STABLE [799728b0b] 2014-01-09 15:50:51 +0100
-Branch: REL9_1_STABLE [9f5b3a1a1] 2014-01-09 15:51:11 +0100
-Branch: REL9_0_STABLE [a29b6c342] 2014-01-09 15:51:23 +0100
-Branch: REL8_4_STABLE [d68a65b01] 2014-01-09 15:58:37 +0100
--->
-
- <listitem>
- <para>
- Fix misaligned descriptors in <application>ecpg</application> (MauMau)
- </para>
- </listitem>
-
-<!--
-Author: Michael Meskes <meskes@postgresql.org>
-Branch: master [7c957ec83] 2014-01-01 12:39:31 +0100
-Branch: REL9_3_STABLE [8404037d8] 2014-01-01 12:40:28 +0100
-Branch: REL9_2_STABLE [119a59879] 2014-01-01 12:40:42 +0100
-Branch: REL9_1_STABLE [948498274] 2014-01-01 12:44:15 +0100
-Branch: REL9_0_STABLE [17bcdd01f] 2014-01-01 12:44:44 +0100
-Branch: REL8_4_STABLE [96de4939c] 2014-01-01 12:44:58 +0100
--->
-
- <listitem>
- <para>
- In <application>ecpg</application>, handle lack of a hostname in the connection
- parameters properly (Michael Meskes)
- </para>
- </listitem>
-
-<!--
-Author: Joe Conway <mail@joeconway.com>
-Branch: master [d6ca510d9] 2013-12-07 17:00:26 -0800
-Branch: REL9_3_STABLE [0ec530625] 2013-12-07 17:00:10 -0800
-Branch: REL9_2_STABLE [7f4ef622f] 2013-12-07 16:59:35 -0800
-Branch: REL9_1_STABLE [70165f25b] 2013-12-07 16:59:16 -0800
-Branch: REL9_0_STABLE [9057adc23] 2013-12-07 16:58:41 -0800
-Branch: REL8_4_STABLE [6c8b16e30] 2013-12-07 16:56:34 -0800
--->
-
- <listitem>
- <para>
- Fix performance regression in <filename>contrib/dblink</filename> connection
- startup (Joe Conway)
- </para>
-
- <para>
- Avoid an unnecessary round trip when client and server encodings match.
- </para>
- </listitem>
-
-<!--
-Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
-Branch: master [866a1f092] 2014-01-13 15:43:29 +0200
-Branch: REL9_3_STABLE [50c5770ec] 2014-01-13 15:43:59 +0200
-Branch: REL9_2_STABLE [f6d6b42f2] 2014-01-13 15:44:02 +0200
-Branch: REL9_1_STABLE [5143dfd57] 2014-01-13 15:44:04 +0200
-Branch: REL9_0_STABLE [6c3f040be] 2014-01-13 15:44:12 +0200
-Branch: REL8_4_STABLE [492b68541] 2014-01-13 15:44:14 +0200
--->
-
- <listitem>
- <para>
- In <filename>contrib/isn</filename>, fix incorrect calculation of the check
- digit for ISMN values (Fabien Coelho)
- </para>
- </listitem>
-
-<!--
-Author: Tatsuo Ishii <ishii@postgresql.org>
-Branch: master [841a65482] 2013-12-12 19:10:35 +0900
-Branch: REL9_3_STABLE [27902bc91] 2013-12-12 19:07:53 +0900
--->
-
- <listitem>
- <para>
- Fix <filename>contrib/pgbench</filename>'s progress logging to avoid overflow
- when the scale factor is large (Tatsuo Ishii)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [69c7a9838] 2014-01-21 16:34:28 -0500
-Branch: REL9_3_STABLE [0950d67ee] 2014-01-21 16:34:31 -0500
-Branch: REL9_2_STABLE [27ab1eb7e] 2014-01-21 16:34:35 -0500
--->
-
- <listitem>
- <para>
- Fix <filename>contrib/pg_stat_statement</filename>'s handling
- of <literal>CURRENT_DATE</literal> and related constructs (Kyotaro
- Horiguchi)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [00d4f2af8] 2014-02-03 21:30:20 -0500
-Branch: REL9_3_STABLE [eb3d350db] 2014-02-03 21:30:28 -0500
--->
-
- <listitem>
- <para>
- Improve lost-connection error handling
- in <filename>contrib/postgres_fdw</filename> (Tom Lane)
- </para>
- </listitem>
-
-<!--
-Author: Peter Eisentraut <peter_e@gmx.net>
-Branch: master [ad6bf0291] 2014-01-17 23:08:22 -0500
-Branch: REL9_3_STABLE [586bea612] 2014-01-17 23:11:02 -0500
-Branch: REL9_2_STABLE [526e38751] 2014-01-17 23:12:50 -0500
-Branch: REL9_1_STABLE [6d969b000] 2014-01-17 23:14:21 -0500
-Branch: REL9_0_STABLE [2346c383a] 2014-01-17 23:15:00 -0500
-Branch: REL8_4_STABLE [15699d9bf] 2014-01-17 23:17:59 -0500
--->
-
- <listitem>
- <para>
- Ensure client-code-only installation procedure works as documented
- (Peter Eisentraut)
- </para>
- </listitem>
-
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [d587298b8] 2014-02-01 15:11:13 -0500
-Branch: REL9_3_STABLE [1e9876c3b] 2014-02-01 15:16:06 -0500
-Branch: REL9_2_STABLE [6e96d4db8] 2014-02-01 15:16:18 -0500
-Branch: REL9_1_STABLE [dfb4a1a21] 2014-02-01 15:16:29 -0500
-Branch: REL9_0_STABLE [59d64e7f3] 2014-02-01 15:16:40 -0500
-Branch: REL8_4_STABLE [ae3c98b9b] 2014-02-01 15:16:52 -0500
--->
-
- <listitem>
- <para>
- In Mingw and Cygwin builds, install the <application>libpq</application> DLL
- in the <filename>bin</filename> directory (Andrew Dunstan)
- </para>
-
- <para>
- This duplicates what the MSVC build has long done. It should fix
- problems with programs like <application>psql</application> failing to start
- because they can't find the DLL.
- </para>
- </listitem>
-
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [7e1531a45] 2014-02-01 16:08:33 -0500
-Branch: REL9_3_STABLE [27942baf4] 2014-02-01 16:13:32 -0500
-Branch: REL9_2_STABLE [fad443753] 2014-02-01 16:13:46 -0500
-Branch: REL9_1_STABLE [e5c22c15d] 2014-02-01 16:14:01 -0500
-Branch: REL9_0_STABLE [1c0bf372f] 2014-02-01 16:14:15 -0500
--->
-
- <listitem>
- <para>
- Avoid using the deprecated <literal>dllwrap</literal> tool in Cygwin builds
- (Marco Atzeri)
- </para>
- </listitem>
-
-<!--
-Author: Andrew Dunstan <andrew@dunslane.net>
-Branch: master [cec8394b5] 2014-01-26 09:49:10 -0500
-Branch: REL9_3_STABLE [56c08df55] 2014-01-26 09:45:43 -0500
--->
-
- <listitem>
- <para>
- Enable building with Visual Studio 2013 (Brar Piening)
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [289541520] 2014-02-10 20:48:04 -0500
-Branch: REL9_3_STABLE [f1e522696] 2014-02-10 20:48:12 -0500
-Branch: REL9_2_STABLE [dd5605104] 2014-02-10 20:48:20 -0500
-Branch: REL9_1_STABLE [3bf5c16f1] 2014-02-10 20:48:23 -0500
-Branch: REL9_0_STABLE [e1e7642bd] 2014-02-10 20:48:27 -0500
-Branch: REL8_4_STABLE [432735cbf] 2014-02-10 20:48:30 -0500
--->
-
- <listitem>
- <para>
- Don't generate plain-text <filename>HISTORY</filename>
- and <filename>src/test/regress/README</filename> files anymore (Tom Lane)
- </para>
-
- <para>
- These text files duplicated the main HTML and PDF documentation
- formats. The trouble involved in maintaining them greatly outweighs
- the likely audience for plain-text format. Distribution tarballs
- will still contain files by these names, but they'll just be stubs
- directing the reader to consult the main documentation.
- The plain-text <filename>INSTALL</filename> file will still be maintained, as
- there is arguably a use-case for that.
- </para>
- </listitem>
-
-<!--
-Author: Tom Lane <tgl@sss.pgh.pa.us>
-Branch: master [e04641f4b] 2014-02-14 21:59:13 -0500
-Branch: REL9_3_STABLE [46cbcd50e] 2014-02-14 21:59:37 -0500
-Branch: REL9_2_STABLE [4f975b68b] 2014-02-14 21:59:42 -0500
-Branch: REL9_1_STABLE [3212ba534] 2014-02-14 21:59:46 -0500
-Branch: REL9_0_STABLE [cb84fddd9] 2014-02-14 21:59:50 -0500
-Branch: REL8_4_STABLE [c0c2d62ac] 2014-02-14 21:59:56 -0500
--->
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2013i
- for DST law changes in Jordan and historical changes in Cuba.
- </para>
-
- <para>
- In addition, the zones <literal>Asia/Riyadh87</literal>,
- <literal>Asia/Riyadh88</literal>, and <literal>Asia/Riyadh89</literal> have been
- removed, as they are no longer maintained by IANA, and never
- represented actual civil timekeeping practice.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-2">
- <title>Release 9.3.2</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-12-05</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.1.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.2</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, this release corrects a number of potential data corruption
- issues. See the first three changelog entries below to find out whether
- your installation has been affected and what steps you can take if so.
- </para>
-
- <para>
- Also, if you are upgrading from a version earlier than 9.3.1,
- see <xref linkend="release-9-3-1"/>.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Fix <command>VACUUM</command>'s tests to see whether it can
- update <structfield>relfrozenxid</structfield> (Andres Freund)
- </para>
-
- <para>
- In some cases <command>VACUUM</command> (either manual or autovacuum) could
- incorrectly advance a table's <structfield>relfrozenxid</structfield> value,
- allowing tuples to escape freezing, causing those rows to become
- invisible once 2^31 transactions have elapsed. The probability of
- data loss is fairly low since multiple incorrect advancements would
- need to happen before actual loss occurs, but it's not zero. In 9.2.0
- and later, the probability of loss is higher, and it's also possible
- to get <quote>could not access status of transaction</quote> errors as a
- consequence of this bug. Users upgrading from releases 9.0.4 or 8.4.8
- or earlier are not affected, but all later versions contain the bug.
- </para>
-
- <para>
- The issue can be ameliorated by, after upgrading, vacuuming all tables
- in all databases while having <link
- linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</varname></link>
- set to zero. This will fix any latent corruption but will not be able
- to fix all pre-existing data errors. However, an installation can be
- presumed safe after performing this vacuuming if it has executed fewer
- than 2^31 update transactions in its lifetime (check this with
- <literal>SELECT txid_current() &lt; 2^31</literal>).
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix multiple bugs in MultiXactId freezing (Andres Freund,
- &Aacute;lvaro Herrera)
- </para>
-
- <para>
- These bugs could lead to <quote>could not access status of
- transaction</quote> errors, or to duplicate or vanishing rows.
- Users upgrading from releases prior to 9.3.0 are not affected.
- </para>
-
- <para>
- The issue can be ameliorated by, after upgrading, vacuuming all tables
- in all databases while having <link
- linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</varname></link>
- set to zero. This will fix latent corruption but will not be able to
- fix all pre-existing data errors.
- </para>
-
- <para>
- As a separate issue, these bugs can also cause standby servers to get
- out of sync with the primary, thus exhibiting data errors that are not
- in the primary. Therefore, it's recommended that 9.3.0 and 9.3.1
- standby servers be re-cloned from the primary (e.g., with a new base
- backup) after upgrading.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix initialization of <filename>pg_clog</filename> and <filename>pg_subtrans</filename>
- during hot standby startup (Andres Freund, Heikki Linnakangas)
- </para>
-
- <para>
- This bug can cause data loss on standby servers at the moment they
- start to accept hot-standby queries, by marking committed transactions
- as uncommitted. The likelihood of such corruption is small unless, at
- the time of standby startup, the primary server has executed many
- updating transactions since its last checkpoint. Symptoms include
- missing rows, rows that should have been deleted being still visible,
- and obsolete versions of updated rows being still visible alongside
- their newer versions.
- </para>
-
- <para>
- This bug was introduced in versions 9.3.0, 9.2.5, 9.1.10, and 9.0.14.
- Standby servers that have only been running earlier releases are not
- at risk. It's recommended that standby servers that have ever run any
- of the buggy releases be re-cloned from the primary (e.g., with a new
- base backup) after upgrading.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix multiple bugs in update chain traversal (Andres Freund,
- &Aacute;lvaro Herrera)
- </para>
-
- <para>
- These bugs could result in incorrect behavior, such as locking or even
- updating the wrong row, in the presence of concurrent updates.
- Spurious <quote>unable to fetch updated version of tuple</quote> errors
- were also possible.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix dangling-pointer problem in fast-path locking (Tom Lane)
- </para>
-
- <para>
- This could lead to corruption of the lock data structures in shared
- memory, causing <quote>lock already held</quote> and other odd errors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted race conditions in timeout management (Tom Lane)
- </para>
-
- <para>
- These errors could result in a server process becoming unresponsive
- because it had blocked SIGALRM and/or SIGINT.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Truncate <filename>pg_multixact</filename> contents during WAL replay
- (Andres Freund)
- </para>
-
- <para>
- This avoids ever-increasing disk space consumption in standby servers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure an anti-wraparound <command>VACUUM</command> counts a page as scanned
- when it's only verified that no tuples need freezing (Sergey
- Burladyan, Jeff Janes)
- </para>
-
- <para>
- This bug could result in failing to
- advance <structfield>relfrozenxid</structfield>, so that the table would still be
- thought to need another anti-wraparound vacuum. In the worst case the
- database might even shut down to prevent wraparound.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix full-table-vacuum request mechanism for MultiXactIds (Andres Freund)
- </para>
-
- <para>
- This bug could result in large amounts of useless autovacuum activity.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix race condition in GIN index posting tree page deletion (Heikki
- Linnakangas)
- </para>
-
- <para>
- This could lead to transient wrong answers or query failures.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <quote>unexpected spgdoinsert() failure</quote> error during SP-GiST
- index creation (Teodor Sigaev)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix assorted bugs in materialized views (Kevin Grittner, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Re-allow duplicate table aliases if they're within aliased JOINs
- (Tom Lane)
- </para>
-
- <para>
- Historically <productname>PostgreSQL</productname> has accepted queries like
-<programlisting>
-SELECT ... FROM tab1 x CROSS JOIN (tab2 x CROSS JOIN tab3 y) z
-</programlisting>
- although a strict reading of the SQL standard would forbid the
- duplicate usage of table alias <literal>x</literal>. A misguided change in
- 9.3.0 caused it to reject some such cases that were formerly accepted.
- Restore the previous behavior.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid flattening a subquery whose <literal>SELECT</literal> list contains a
- volatile function wrapped inside a sub-<literal>SELECT</literal> (Tom Lane)
- </para>
-
- <para>
- This avoids unexpected results due to extra evaluations of the
- volatile function.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner's processing of non-simple-variable subquery outputs
- nested within outer joins (Tom Lane)
- </para>
-
- <para>
- This error could lead to incorrect plans for queries involving
- multiple levels of subqueries within <literal>JOIN</literal> syntax.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect planning in cases where the same non-strict expression
- appears in multiple <literal>WHERE</literal> and outer <literal>JOIN</literal>
- equality clauses (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix planner crash with whole-row reference to a subquery (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect generation of optimized MIN()/MAX() plans for
- inheritance trees (Tom Lane)
- </para>
-
- <para>
- The planner could fail in cases where the MIN()/MAX() argument was an
- expression rather than a simple variable.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix premature deletion of temporary files (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent intra-transaction memory leak when printing range values
- (Tom Lane)
- </para>
-
- <para>
- This fix actually cures transient memory leaks in any datatype output
- function, but range types are the only ones known to have had a
- significant problem.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leaks when reloading configuration files (Heikki
- Linnakangas, Hari Babu)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent incorrect display of dropped columns in NOT NULL and CHECK
- constraint violation messages (Michael Paquier and Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow default arguments and named-argument notation for window
- functions (Tom Lane)
- </para>
-
- <para>
- Previously, these cases were likely to crash.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress trailing whitespace on each line when pretty-printing rules
- and views (Tom Lane)
- </para>
-
- <para>
- 9.3.0 generated such whitespace in many more cases than previous
- versions did. To reduce unexpected behavioral changes, suppress
- unnecessary whitespace in all cases.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix possible read past end of memory in rule printing (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix array slicing of <type>int2vector</type> and <type>oidvector</type> values
- (Tom Lane)
- </para>
-
- <para>
- Expressions of this kind are now implicitly promoted to
- regular <type>int2</type> or <type>oid</type> arrays.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Return a valid JSON value when converting an empty <type>hstore</type> value
- to <type>json</type>
- (Oskari Saarenmaa)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix incorrect behaviors when using a SQL-standard, simple GMT offset
- timezone (Tom Lane)
- </para>
-
- <para>
- In some cases, the system would use the simple GMT offset value when
- it should have used the regular timezone setting that had prevailed
- before the simple offset was selected. This change also causes
- the <function>timeofday</function> function to honor the simple GMT offset
- zone.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent possible misbehavior when logging translations of Windows
- error codes (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly quote generated command lines in <application>pg_ctl</application>
- (Naoya Anzai and Tom Lane)
- </para>
-
- <para>
- This fix applies only to Windows.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_dumpall</application> to work when a source database
- sets <link
- linkend="guc-default-transaction-read-only"><varname>default_transaction_read_only</varname></link>
- via <command>ALTER DATABASE SET</command> (Kevin Grittner)
- </para>
-
- <para>
- Previously, the generated script would fail during restore.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>pg_isready</application> to handle its <option>-d</option> option
- properly (Fabr&iacute;zio de Royes Mello and Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix parsing of WAL file names in <application>pg_receivexlog</application>
- (Heikki Linnakangas)
- </para>
-
- <para>
- This error made <application>pg_receivexlog</application> unable to restart
- streaming after stopping, once at least 4 GB of WAL had been written.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Report out-of-disk-space failures properly
- in <application>pg_upgrade</application> (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>ecpg</application> search for quoted cursor names
- case-sensitively (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <application>ecpg</application>'s processing of lists of variables
- declared <type>varchar</type> (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <filename>contrib/lo</filename> defend against incorrect trigger definitions
- (Marc Cousin)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update time zone data files to <application>tzdata</application> release 2013h
- for DST law changes in Argentina, Brazil, Jordan, Libya,
- Liechtenstein, Morocco, and Palestine. Also, new timezone
- abbreviations WIB, WIT, WITA for Indonesia.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3-1">
- <title>Release 9.3.1</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-10-10</para>
- </formalpara>
-
- <para>
- This release contains a variety of fixes from 9.3.0.
- For information about new features in the 9.3 major release, see
- <xref linkend="release-9-3"/>.
- </para>
-
- <sect2>
- <title>Migration to Version 9.3.1</title>
-
- <para>
- A dump/restore is not required for those running 9.3.X.
- </para>
-
- <para>
- However, if you use the <literal>hstore</literal> extension, see the
- first changelog entry.
- </para>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Ensure new-in-9.3 JSON functionality is added to the <literal>hstore</literal>
- extension during an update (Andrew Dunstan)
- </para>
-
- <para>
- Users who upgraded a pre-9.3 database containing <literal>hstore</literal>
- should execute
-<programlisting>
-ALTER EXTENSION hstore UPDATE;
-</programlisting>
- after installing 9.3.1, to add two new JSON functions and a cast.
- (If <literal>hstore</literal> is already up to date, this command does
- nothing.)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak when creating B-tree indexes on range columns
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix memory leak caused by <function>lo_open()</function> failure
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Serializable snapshot fixes (Kevin Grittner, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix deadlock bug in libpq when using SSL (Stephen Frost)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix timeline handling bugs in <application>pg_receivexlog</application>
- (Heikki Linnakangas, Andrew Gierth)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent <command>CREATE FUNCTION</command> from checking <command>SET</command>
- variables unless function body checking is enabled (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove rare inaccurate warning during vacuum of index-less tables
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect2>
- </sect1>
-
- <sect1 id="release-9-3">
- <title>Release 9.3</title>
-
- <formalpara>
- <title>Release date:</title>
- <para>2013-09-09</para>
- </formalpara>
-
- <sect2>
- <title>Overview</title>
-
- <para>
- Major enhancements in <productname>PostgreSQL</productname> 9.3 include:
- </para>
-
- <!-- This list duplicates items below, but without authors or details-->
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="sql-creatematerializedview">materialized
- views</link>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make simple views <link
- linkend="sql-createview-updatable-views">auto-updatable</link>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add many features for the <type>JSON</type> data type,
- including <link linkend="functions-json">operators and functions</link>
- to extract elements from <type>JSON</type> values
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implement <acronym>SQL</acronym>-standard <link
- linkend="queries-lateral"><literal>LATERAL</literal></link> option for
- <literal>FROM</literal>-clause subqueries and function calls
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="sql-createforeigndatawrapper">foreign data
- wrappers</link> to support writes (inserts/updates/deletes) on foreign
- tables
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <link linkend="postgres-fdw"><productname>Postgres</productname> foreign
- data wrapper</link> to allow access to
- other <productname>Postgres</productname> servers
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <link linkend="event-triggers">event triggers</link>
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add optional ability to <link
- linkend="app-initdb-data-checksums">checksum</link> data pages and
- report corruption
- </para>
- </listitem>
-
- <listitem>
- <para>
- Prevent non-key-field row updates from blocking foreign key checks
- </para>
- </listitem>
-
- <listitem>
- <para>
- Greatly reduce System V <link linkend="sysvipc">shared
- memory</link> requirements
- </para>
- </listitem>
-
- </itemizedlist>
-
- <para>
- The above items are explained in more detail in the sections below.
- </para>
-
- </sect2>
-
- <sect2>
-
- <title>Migration to Version 9.3</title>
-
- <para>
- A dump/restore using <link
- linkend="app-pg-dumpall"><application>pg_dumpall</application></link>, or use
- of <link linkend="pgupgrade"><application>pg_upgrade</application></link>, is
- required for those wishing to migrate data from any previous release.
- </para>
-
- <para>
- Version 9.3 contains a number of changes that may affect compatibility
- with previous releases. Observe the following incompatibilities:
- </para>
-
- <sect3>
- <title>Server Settings</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Rename <varname>replication_timeout</varname> to <link
- linkend="guc-wal-sender-timeout"><varname>wal_sender_timeout</varname></link>
- (Amit Kapila)
- </para>
-
- <para>
- This setting controls the <link
- linkend="wal"><acronym>WAL</acronym></link> sender timeout.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Require superuser privileges to set <link
- linkend="guc-commit-delay"><varname>commit_delay</varname></link>
- because it can now potentially delay other sessions (Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow in-memory sorts to use their full memory allocation (Jeff Janes)
- </para>
-
- <para>
- Users who have set <link
- linkend="guc-work-mem"><varname>work_mem</varname></link> based on the
- previous behavior may need to revisit that setting.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Other</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Throw an error if a tuple to be updated or deleted has already been
- updated or deleted by a <literal>BEFORE</literal> trigger (Kevin Grittner)
- </para>
-
- <para>
- Formerly, the originally-intended update was silently skipped,
- resulting in logical inconsistency since the trigger might have
- propagated data to other places based on the intended update.
- Now an error is thrown to prevent the inconsistent results from being
- committed. If this change affects your application, the best solution
- is usually to move the data-propagation actions to
- an <literal>AFTER</literal> trigger.
- </para>
-
- <para>
- This error will also be thrown if a query invokes a volatile function
- that modifies rows that are later modified by the query itself.
- Such cases likewise previously resulted in silently skipping updates.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change multicolumn <link linkend="sql-createtable"><literal>ON UPDATE
- SET NULL/SET DEFAULT</literal></link> foreign key actions to affect
- all columns of the constraint, not just those changed in the
- <command>UPDATE</command> (Tom Lane)
- </para>
-
- <para>
- Previously, we would set only those referencing columns that
- correspond to referenced columns that were changed by
- the <command>UPDATE</command>. This was what was required by SQL-92,
- but more recent editions of the SQL standard specify the new behavior.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Force cached plans to be replanned if the <link
- linkend="guc-search-path"><varname>search_path</varname></link> changes
- (Tom Lane)
- </para>
-
- <para>
- Previously, cached plans already generated in the current session were
- not redone if the query was re-executed with a
- new <varname>search_path</varname> setting, resulting in surprising behavior.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <link
- linkend="functions-formatting-table"><function>to_number()</function></link>
- to properly handle a period used as a thousands separator (Tom Lane)
- </para>
-
- <para>
- Previously, a period was considered to be a decimal point even when
- the locale says it isn't and the <literal>D</literal> format code is used to
- specify use of the locale-specific decimal point. This resulted in
- wrong answers if <literal>FM</literal> format was also used.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <literal>STRICT</literal> non-set-returning functions that have
- set-returning functions in their arguments to properly return null
- rows (Tom Lane)
- </para>
-
- <para>
- A null value passed to the strict function should result in a null
- output, but instead, that output row was suppressed entirely.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Store <link linkend="wal"><acronym>WAL</acronym></link> in a continuous
- stream, rather than skipping the last 16MB segment every 4GB
- (Heikki Linnakangas)
- </para>
-
- <para>
- Previously, <acronym>WAL</acronym> files with names ending in <literal>FF</literal>
- were not used because of this skipping. If you have <acronym>WAL</acronym>
- backup or restore scripts that took this behavior into account, they
- will need to be adjusted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <link
- linkend="catalog-pg-constraint"><structname>pg_constraint.confmatchtype</structname></link>,
- store the default foreign key match type (non-<literal>FULL</literal>,
- non-<literal>PARTIAL</literal>) as <literal>s</literal> for <quote>simple</quote>
- (Tom Lane)
- </para>
-
- <para>
- Previously this case was represented by <literal>u</literal>
- for <quote>unspecified</quote>.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- </sect2>
-
- <sect2>
- <title>Changes</title>
-
- <para>
- Below you will find a detailed account of the changes between
- <productname>PostgreSQL</productname> 9.3 and the previous major
- release.
- </para>
-
- <sect3>
- <title>Server</title>
-
- <sect4>
- <title>Locking</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent non-key-field row updates from blocking foreign key checks
- (&Aacute;lvaro Herrera, Noah Misch, Andres Freund, Alexander
- Shulgin, Marti Raudsepp, Alexander Shulgin)
- </para>
-
- <para>
- This change improves concurrency and reduces the probability of
- deadlocks when updating tables involved in a foreign-key constraint.
- <command>UPDATE</command>s that do not change any columns referenced in a
- foreign key now take the new <literal>NO KEY UPDATE</literal> lock mode on
- the row, while foreign key checks use the new <literal>KEY SHARE</literal>
- lock mode, which does not conflict with <literal>NO KEY UPDATE</literal>.
- So there is no blocking unless a foreign-key column is changed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add configuration variable <link
- linkend="guc-lock-timeout"><varname>lock_timeout</varname></link> to
- allow limiting how long a session will wait to acquire any one lock
- (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Indexes</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="rangetypes-indexing"><acronym>SP-GiST</acronym></link>
- support for range data types (Alexander Korotkov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="gist"><acronym>GiST</acronym></link> indexes to be
- unlogged (Jeevan Chalke)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of <acronym>GiST</acronym> index insertion by randomizing
- the choice of which page to descend to when there are multiple equally
- good alternatives (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve concurrency of hash index operations (Robert Haas)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Optimizer</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Collect and use histograms of upper and lower bounds, as well as range
- lengths, for <link linkend="rangetypes">range types</link>
- (Alexander Korotkov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve optimizer's cost estimation for index access (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve optimizer's hash table size estimate for
- doing <literal>DISTINCT</literal> via hash aggregation (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress no-op Result and Limit plan nodes
- (Kyotaro Horiguchi, Amit Kapila, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce optimizer overhead by not keeping plans on the basis of cheap
- startup cost when the optimizer only cares about total cost overall
- (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>General Performance</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="sql-copy"><command>COPY FREEZE</command></link>
- option to avoid the overhead of marking tuples as frozen later
- (Simon Riggs, Jeff Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of <link
- linkend="datatype-numeric"><type>NUMERIC</type></link> calculations
- (Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve synchronization of sessions waiting for <link
- linkend="guc-commit-delay"><varname>commit_delay</varname></link>
- (Peter Geoghegan)
- </para>
-
- <para>
- This greatly improves the usefulness of <varname>commit_delay</varname>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of the <link
- linkend="sql-createtable"><command>CREATE TEMPORARY TABLE ... ON
- COMMIT DELETE ROWS</command></link> option by not truncating such temporary
- tables in transactions that haven't touched any temporary tables
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make vacuum recheck visibility after it has removed expired tuples
- (Pavan Deolasee)
- </para>
-
- <para>
- This increases the chance of a page being marked as all-visible.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add per-resource-owner lock caches (Jeff Janes)
- </para>
-
- <para>
- This speeds up lock bookkeeping at statement completion in
- multi-statement transactions that hold many locks; it is particularly
- useful for <application>pg_dump</application>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Avoid scanning the entire relation cache at commit of a transaction
- that creates a new relation (Jeff Janes)
- </para>
-
- <para>
- This speeds up sessions that create many tables in successive
- small transactions, such as a <application>pg_restore</application> run.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of transactions that drop many relations
- (Tomas Vondra)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Monitoring</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add optional ability to <link
- linkend="app-initdb-data-checksums">checksum</link> data pages and
- report corruption (Simon Riggs, Jeff Davis, Greg Smith, Ants Aasma)
- </para>
-
- <para>
- The checksum option can be set during <link
- linkend="app-initdb">initdb</link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Split the <link linkend="monitoring-stats">statistics collector's</link>
- data file into separate global and per-database files (Tomas Vondra)
- </para>
-
- <para>
- This reduces the I/O required for statistics tracking.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix the statistics collector to operate properly in cases where the
- system clock goes backwards (Tom Lane)
- </para>
-
- <para>
- Previously, statistics collection would stop until the time again
- reached the latest time previously recorded.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Emit an informative message to postmaster standard error when we
- are about to stop logging there
- (Tom Lane)
- </para>
-
- <para>
- This should help reduce user confusion about where to look for log
- output in common configurations that log to standard error only during
- postmaster startup.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Authentication</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- When an authentication failure occurs, log the relevant
- <link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
- line, to ease debugging of unintended failures
- (Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <link linkend="auth-ldap"><acronym>LDAP</acronym></link> error
- reporting and documentation (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for specifying <acronym>LDAP</acronym> authentication parameters
- in <acronym>URL</acronym> format, per RFC 4516 (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change the <link
- linkend="guc-ssl-ciphers"><varname>ssl_ciphers</varname></link> parameter
- to start with <literal>DEFAULT</literal>, rather than <literal>ALL</literal>,
- then remove insecure ciphers (Magnus Hagander)
- </para>
-
- <para>
- This should yield a more appropriate SSL cipher set.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Parse and load <link
- linkend="auth-username-maps"><filename>pg_ident.conf</filename></link>
- once, not during each connection (Amit Kapila)
- </para>
-
- <para>
- This is similar to how <filename>pg_hba.conf</filename> is processed.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title>Server Settings</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Greatly reduce System V <link linkend="sysvipc">shared
- memory</link> requirements (Robert Haas)
- </para>
-
- <para>
- On Unix-like systems, <function>mmap()</function> is now used for most
- of <productname>PostgreSQL</productname>'s shared memory. For most users, this
- will eliminate any need to adjust kernel parameters for shared memory.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the postmaster to listen on multiple Unix-domain sockets
- (Honza Hor&aacute;k)
- </para>
-
- <para>
- The configuration parameter
- <varname>unix_socket_directory</varname> is replaced by <link
- linkend="guc-unix-socket-directories"><varname>unix_socket_directories</varname></link>,
- which accepts a list of directories.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow a directory of configuration files to be processed (Magnus
- Hagander, Greg Smith, Selena Deckelmann)
- </para>
-
- <para>
- Such a directory is specified with <link
- linkend="config-includes"><varname>include_dir</varname></link> in the server
- configuration file.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Increase the maximum <link
- linkend="app-initdb">initdb</link>-configured value for <link
- linkend="guc-shared-buffers"><varname>shared_buffers</varname></link>
- to 128MB (Robert Haas)
- </para>
-
- <para>
- This is the maximum value that initdb will attempt to set in <link
- linkend="config-setting-configuration-file"><filename>postgresql.conf</filename></link>;
- the previous maximum was 32MB.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove the <link linkend="guc-external-pid-file">external
- <acronym>PID</acronym> file</link>, if any, on postmaster exit
- (Peter Eisentraut)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Replication and Recovery</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow a streaming replication standby to <link
- linkend="protocol-replication">follow a timeline switch</link>
- (Heikki Linnakangas)
- </para>
-
- <para>
- This allows streaming standby servers to receive WAL data from a slave
- newly promoted to master status. Previously, other standbys would
- require a resync to begin following the new master.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <acronym>SQL</acronym> functions <link
- linkend="functions-admin-backup"><function>pg_is_in_backup()</function></link>
- and <link
- linkend="functions-admin-backup"><function>pg_backup_start_time()</function></link>
- (Gilles Darold)
- </para>
-
- <para>
- These functions report the status of base backups.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of streaming log shipping with <link
- linkend="guc-synchronous-commit"><varname>synchronous_commit</varname></link>
- disabled (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow much faster promotion of a streaming standby to primary (Simon
- Riggs, Kyotaro Horiguchi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add the last checkpoint's redo location to <link
- linkend="app-pgcontroldata"><application>pg_controldata</application></link>'s
- output (Fujii Masao)
- </para>
-
- <para>
- This information is useful for determining which <acronym>WAL</acronym>
- files are needed for restore.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow tools like <link
- linkend="app-pgreceivewal"><application>pg_receivexlog</application></link>
- to run on computers with different architectures (Heikki
- Linnakangas)
- </para>
-
- <para>
- WAL files can still only be replayed on servers with the same
- architecture as the primary; but they can now be transmitted to and
- stored on machines of any architecture, since the
- streaming replication protocol is now machine-independent.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link
- linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
- <option>--write-recovery-conf</option> output a
- minimal <filename>recovery.conf</filename> file (Zolt&aacute;n
- B&ouml;sz&ouml;rm&eacute;nyi, Magnus Hagander)
- </para>
-
- <para>
- This simplifies setting up a standby server.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link
- linkend="app-pgreceivewal"><application>pg_receivexlog</application></link>
- and <link
- linkend="app-pgbasebackup"><application>pg_basebackup</application></link>
- <option>--xlog-method</option> to handle streaming timeline switches
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link
- linkend="guc-wal-receiver-timeout"><varname>wal_receiver_timeout</varname></link>
- parameter to control the <acronym>WAL</acronym> receiver's timeout
- (Amit Kapila)
- </para>
-
- <para>
- This allows more rapid detection of connection failure.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change the <link linkend="wal"><acronym>WAL</acronym></link> record format to
- allow splitting the record header across pages (Heikki Linnakangas)
- </para>
-
- <para>
- The new format is slightly more compact, and is more efficient to
- write.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Queries</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Implement <acronym>SQL</acronym>-standard <link
- linkend="queries-lateral"><literal>LATERAL</literal></link> option for
- <literal>FROM</literal>-clause subqueries and function calls (Tom Lane)
- </para>
-
- <para>
- This feature allows subqueries and functions in <literal>FROM</literal> to
- reference columns from other tables in the <literal>FROM</literal>
- clause. The <literal>LATERAL</literal> keyword is optional for functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for piping <link
- linkend="sql-copy"><command>COPY</command></link> and <link
- linkend="app-psql"><application>psql</application></link> <command>\copy</command>
- data to/from an external program (Etsuro Fujita)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow a multirow <link
- linkend="sql-values"><literal>VALUES</literal></link> clause in a rule
- to reference <literal>OLD</literal>/<literal>NEW</literal> (Tom Lane)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Object Manipulation</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add support for <link linkend="event-triggers">event triggers</link>
- (Dimitri Fontaine, Robert Haas, &Aacute;lvaro Herrera)
- </para>
-
- <para>
- This allows server-side functions written in event-enabled
- languages to be called when DDL commands are run.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="sql-createforeigndatawrapper">foreign data
- wrappers</link> to support writes (inserts/updates/deletes) on foreign
- tables (KaiGai Kohei)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="sql-createschema"><command>CREATE SCHEMA ... IF
- NOT EXISTS</command></link> clause (Fabr&iacute;zio de Royes Mello)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link linkend="sql-reassign-owned"><command>REASSIGN
- OWNED</command></link> also change ownership of shared objects
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link linkend="sql-createaggregate"><command>CREATE
- AGGREGATE</command></link> complain if the given initial value string is not
- valid input for the transition datatype (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Suppress <link linkend="sql-createtable"><command>CREATE
- TABLE</command></link>'s messages about implicit index and sequence creation
- (Robert Haas)
- </para>
-
- <para>
- These messages now appear at <literal>DEBUG1</literal> verbosity, so that
- they will not be shown by default.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="sql-droptable"><command>DROP TABLE IF
- EXISTS</command></link> to succeed when a non-existent schema is specified
- in the table name (Bruce Momjian)
- </para>
-
- <para>
- Previously, it threw an error if the schema did not exist.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide clients with <link
- linkend="libpq-pqresulterrorfield">constraint violation details</link>
- as separate fields (Pavel Stehule)
- </para>
-
- <para>
- This allows clients to retrieve table, column, data type, or
- constraint name error details. Previously such information had to be
- extracted from error strings. Client library support is required to
- access these fields.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><command>ALTER</command></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Support <literal>IF NOT EXISTS</literal> option in <link
- linkend="sql-altertype"><command>ALTER TYPE ... ADD VALUE</command></link>
- (Andrew Dunstan)
- </para>
-
- <para>
- This is useful for conditionally adding values to enumerated types.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="sql-alterrole"><command>ALTER ROLE ALL
- SET</command></link> to establish settings for all users (Peter Eisentraut)
- </para>
-
- <para>
- This allows settings to apply to all users in all databases. <link
- linkend="sql-alterdatabase"><command>ALTER DATABASE SET</command></link>
- already allowed addition of settings for all users in a single
- database. <filename>postgresql.conf</filename> has a similar effect.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for <link linkend="sql-alterrule"><command>ALTER RULE
- ... RENAME</command></link> (Ali Dar)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="rules-views"><command>VIEWs</command></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="sql-creatematerializedview">materialized
- views</link> (Kevin Grittner)
- </para>
-
- <para>
- Unlike ordinary views, where the base tables are read on every access,
- materialized views create physical tables at creation or refresh time.
- Access to the materialized view then reads from its physical
- table. There is not yet any facility for incrementally refreshing
- materialized views or auto-accessing them via base table access.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make simple views <link
- linkend="sql-createview-updatable-views">auto-updatable</link>
- (Dean Rasheed)
- </para>
-
- <para>
- Simple views that reference some or all columns from a
- single base table are now updatable by default. More
- complex views can be made updatable using <link
- linkend="sql-createtrigger"><literal>INSTEAD OF</literal></link> triggers
- or <link linkend="sql-createrule"><literal>INSTEAD</literal></link> rules.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="sql-createview"><command>CREATE RECURSIVE
- VIEW</command></link> syntax (Peter Eisentraut)
- </para>
-
- <para>
- Internally this is translated into <command>CREATE VIEW ... WITH
- RECURSIVE ...</command>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve view/rule printing code to handle cases where referenced
- tables are renamed, or columns are renamed, added, or dropped
- (Tom Lane)
- </para>
-
- <para>
- Table and column renamings can produce cases where, if we merely
- substitute the new name into the original text of a rule or view, the
- result is ambiguous. This change fixes the rule-dumping code to insert
- manufactured table and column aliases when needed to preserve the
- original semantics.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Data Types</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Increase the maximum size of <link linkend="largeobjects">large
- objects</link> from 2GB to 4TB (Nozomi Anzai, Yugo Nagata)
- </para>
-
- <para>
- This change includes adding 64-bit-capable large object access
- functions, both in the server and in libpq.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow text <link linkend="datatype-timezones">timezone
- designations</link>, e.g. <quote>America/Chicago</quote>, in the
- <quote>T</quote> field of <acronym>ISO</acronym>-format <type>timestamptz</type>
- input (Bruce Momjian)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="datatype-json"><type>JSON</type></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link linkend="functions-json">operators and functions</link>
- to extract elements from <type>JSON</type> values (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <type>JSON</type> values to be <link
- linkend="functions-json">converted into records</link>
- (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="functions-json">functions</link> to convert
- scalars, records, and <type>hstore</type> values to <type>JSON</type> (Andrew
- Dunstan)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
-
- <sect3>
- <title>Functions</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <link
- linkend="array-functions-table"><function>array_remove()</function></link>
- and <link
- linkend="array-functions-table"><function>array_replace()</function></link>
- functions (Marco Nenciarini, Gabriele Bartolini)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link
- linkend="functions-string-other"><function>concat()</function></link>
- and <link
- linkend="functions-string-format"><function>format()</function></link>
- to properly expand <literal>VARIADIC</literal>-labeled arguments
- (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <link
- linkend="functions-string-format"><function>format()</function></link>
- to provide field width and left/right alignment options (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link
- linkend="functions-formatting-table"><function>to_char()</function></link>,
- <link
- linkend="functions-formatting-table"><function>to_date()</function></link>,
- and <link
- linkend="functions-formatting-table"><function>to_timestamp()</function></link>
- handle negative (BC) century values properly
- (Bruce Momjian)
- </para>
-
- <para>
- Previously the behavior was either wrong or inconsistent
- with positive/<acronym>AD</acronym> handling, e.g. with the format mask
- <quote>IYYY-IW-DY</quote>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link
- linkend="functions-formatting-table"><function>to_date()</function></link>
- and <link
- linkend="functions-formatting-table"><function>to_timestamp()</function></link>
- return proper results when mixing <acronym>ISO</acronym> and Gregorian
- week/day designations (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Cause <link
- linkend="functions-info-catalog-table"><function>pg_get_viewdef()</function></link>
- to start a new line by default after each <literal>SELECT</literal> target
- list entry and <literal>FROM</literal> entry (Marko Tiikkaja)
- </para>
-
- <para>
- This reduces line length in view printing, for instance in <link
- linkend="app-pgdump"><application>pg_dump</application></link> output.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <function>map_sql_value_to_xml_value()</function> to print values of
- domain types the same way their base type would be printed
- (Pavel Stehule)
- </para>
-
- <para>
- There are special formatting rules for certain built-in types such as
- <type>boolean</type>; these rules now also apply to domains over these
- types.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Server-Side Languages</title>
-
- <sect4>
- <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow PL/pgSQL to use <literal>RETURN</literal> with a composite-type
- expression (Asif Rehman)
- </para>
-
- <para>
- Previously, in a function returning a composite type,
- <literal>RETURN</literal> could only reference a variable of that type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow PL/pgSQL to access <link
- linkend="plpgsql-exception-diagnostics">constraint violation
- details</link> as separate fields (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow PL/pgSQL to access the number of rows processed by
- <link linkend="sql-copy"><command>COPY</command></link> (Pavel Stehule)
- </para>
-
- <para>
- A <command>COPY</command> executed in a PL/pgSQL function now updates the
- value retrieved by <link
- linkend="plpgsql-statements-diagnostics"><command>GET DIAGNOSTICS
- x = ROW_COUNT</command></link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow unreserved keywords to be used as identifiers everywhere in
- PL/pgSQL (Tom Lane)
- </para>
-
- <para>
- In certain places in the PL/pgSQL grammar, keywords had to be quoted
- to be used as identifiers, even if they were nominally unreserved.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add PL/Python result object string handler (Peter Eisentraut)
- </para>
-
- <para>
- This allows <literal>plpy.debug(rv)</literal> to output something reasonable.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make PL/Python convert OID values to a proper Python numeric type
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Handle <link linkend="spi"><acronym>SPI</acronym></link> errors raised
- explicitly (with PL/Python's <literal>RAISE</literal>) the same as
- internal <acronym>SPI</acronym> errors (Oskari Saarenmaa and Jan Urbanski)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Server Programming Interface (<link linkend="spi">SPI</link>)</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Prevent leakage of <acronym>SPI</acronym> tuple tables during subtransaction
- abort (Tom Lane)
- </para>
-
- <para>
- At the end of any failed subtransaction, the core SPI code now
- releases any SPI tuple tables that were created during that
- subtransaction. This avoids the need for SPI-using code to keep track
- of such tuple tables and release them manually in error-recovery code.
- Failure to do so caused a number of transaction-lifespan memory leakage
- issues in PL/pgSQL and perhaps other SPI clients. <link
- linkend="spi-spi-freetupletable"><function>SPI_freetuptable()</function></link>
- now protects itself against multiple freeing requests, so any existing
- code that did take care to clean up shouldn't be broken by this change.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <acronym>SPI</acronym> functions to access the number of rows processed
- by <link linkend="sql-copy"><command>COPY</command></link> (Pavel Stehule)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Client Applications</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add command-line utility <link
- linkend="app-pg-isready"><application>pg_isready</application></link> to
- check if the server is ready to accept connections (Phil Sorber)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support multiple <option>--table</option> arguments for <link
- linkend="app-pgrestore"><application>pg_restore</application></link>,
- <link linkend="app-clusterdb"><application>clusterdb</application></link>,
- <link linkend="app-reindexdb"><application>reindexdb</application></link>,
- and <link linkend="app-vacuumdb"><application>vacuumdb</application></link>
- (Josh Kupershmidt)
- </para>
-
- <para>
- This is similar to the way <link
- linkend="app-pgdump"><application>pg_dump</application></link>'s
- <option>--table</option> option works.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <option>--dbname</option> option to <link
- linkend="app-pg-dumpall"><application>pg_dumpall</application></link>, <link
- linkend="app-pgbasebackup"><application>pg_basebackup</application></link>, and
- <link
- linkend="app-pgreceivewal"><application>pg_receivexlog</application></link>
- to allow specifying a connection string (Amit Kapila)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add libpq function <link
- linkend="libpq-pqconninfo"><function>PQconninfo()</function></link>
- to return connection information (Zolt&aacute;n
- B&ouml;sz&ouml;rm&eacute;nyi, Magnus Hagander)
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="app-psql"><application>psql</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Adjust function cost settings so <application>psql</application> tab
- completion and pattern searching are more efficient (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>psql</application>'s tab completion coverage (Jeff Janes,
- Dean Rasheed, Peter Eisentraut, Magnus Hagander)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow the <application>psql</application> <option>--single-transaction</option>
- mode to work when reading from standard input (Fabien Coelho,
- Robert Haas)
- </para>
-
- <para>
- Previously this option only worked when reading from a file.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <application>psql</application> warning when connecting to an older
- server (Peter Eisentraut)
- </para>
-
- <para>
- A warning is still issued when connecting to a server of a newer major
- version than <application>psql</application>'s.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect5>
- <title><link linkend="app-psql-meta-commands">Backslash Commands</link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <application>psql</application> command <command>\watch</command> to repeatedly
- execute a SQL command (Will Leinweber)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>psql</application> command <command>\gset</command> to store query
- results in <application>psql</application> variables (Pavel Stehule)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <acronym>SSL</acronym> information to <application>psql</application>'s
- <command>\conninfo</command> command (Alastair Turner)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <quote>Security</quote> column to <application>psql</application>'s
- <command>\df+</command> output (Jon Erdman)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>psql</application> command <command>\l</command> to accept a database
- name pattern (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>, do not allow <command>\connect</command> to
- use defaults if there is no active connection (Bruce Momjian)
- </para>
-
- <para>
- This might be the case if the server had crashed.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Properly reset state after failure of a SQL command executed with
- <application>psql</application>'s <literal>\g</literal> <replaceable>file</replaceable>
- (Tom Lane)
- </para>
-
- <para>
- Previously, the output from subsequent SQL commands would unexpectedly
- continue to go to the same file.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect5>
-
- <sect5>
- <title>Output</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add a <literal>latex-longtable</literal> output format to
- <application>psql</application> (Bruce Momjian)
- </para>
-
- <para>
- This format allows tables to span multiple pages.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <literal>border=3</literal> output mode to the <application>psql</application>
- <literal>latex</literal> format (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>'s tuples-only and expanded output modes, no
- longer emit <quote>(No rows)</quote> for zero rows (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- In <application>psql</application>'s unaligned, expanded output mode, no longer
- print an empty line for zero rows (Peter Eisentraut)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect5>
-
- </sect4>
-
- <sect4>
- <title><link linkend="app-pgdump"><application>pg_dump</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <application>pg_dump</application> <option>--jobs</option> option to dump tables in
- parallel (Joachim Wieland)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_dump</application> output functions in a more predictable
- order (Joel Jacobson)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix tar files emitted by <application>pg_dump</application>
- to be <acronym>POSIX</acronym> conformant (Brian Weaver, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <option>--dbname</option> option to <application>pg_dump</application>, for
- consistency with other client commands (Heikki Linnakangas)
- </para>
-
- <para>
- The database name could already be supplied last without a flag.
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="app-initdb"><application>initdb</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Make initdb fsync the newly created data directory (Jeff Davis)
- </para>
-
- <para>
- This insures data integrity in event of a system crash shortly after
- initdb. This can be disabled by using <option>--nosync</option>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add initdb <option>--sync-only</option> option to sync the data directory to durable
- storage (Bruce Momjian)
- </para>
-
- <para>
- This is used by <link
- linkend="pgupgrade"><application>pg_upgrade</application></link>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make initdb issue a warning about placing the data directory at the
- top of a file system mount point (Bruce Momjian)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Source Code</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add infrastructure to allow plug-in <link
- linkend="bgworker">background worker processes</link>
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Create a centralized timeout <acronym>API</acronym> (Zolt&aacute;n
- B&ouml;sz&ouml;rm&eacute;nyi)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Create libpgcommon and move <function>pg_malloc()</function> and other
- functions there (&Aacute;lvaro Herrera, Andres Freund)
- </para>
-
- <para>
- This allows libpgport to be used solely for portability-related code.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for list links embedded in larger structs (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use <literal>SA_RESTART</literal> for all signals,
- including <literal>SIGALRM</literal> (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Ensure that the correct text domain is used when
- translating <function>errcontext()</function> messages
- (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Standardize naming of client-side memory allocation functions (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide support for <quote>static assertions</quote> that will fail at
- compile time if some compile-time-constant condition is not met
- (Andres Freund, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Support <function>Assert()</function> in client-side code (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add decoration to inform the C compiler that some <function>ereport()</function>
- and <function>elog()</function> calls do not return (Peter Eisentraut,
- Andres Freund, Tom Lane, Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow options to be passed to the regression
- test output comparison utility via <link
- linkend="regress-evaluation"><envar>PG_REGRESS_DIFF_OPTS</envar></link>
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add isolation tests for <link
- linkend="sql-createindex"><command>CREATE INDEX
- CONCURRENTLY</command></link> (Abhijit Menon-Sen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove typedefs for <type>int2</type>/<type>int4</type> as they are better
- represented as <type>int16</type>/<type>int32</type> (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Fix <link linkend="install">install-strip</link> on Mac <productname>OS
- X</productname> (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <link linkend="configure">configure</link> flag
- <option>--disable-shared</option>, as it is no longer supported
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Rewrite pgindent in <application>Perl</application> (Andrew Dunstan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide Emacs macro to set Perl formatting to
- match <productname>PostgreSQL</productname>'s perltidy settings (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Run tool to check the keyword list whenever the backend grammar is
- changed (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change the way <literal>UESCAPE</literal> is lexed, to significantly reduce
- the size of the lexer tables (Heikki Linnakangas)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Centralize <application>flex</application> and <application>bison</application>
- <application>make</application> rules (Peter Eisentraut)
- </para>
-
- <para>
- This is useful for <application>pgxs</application> authors.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Change many internal backend functions to return object <type>OID</type>s
- rather than void (Dimitri Fontaine)
- </para>
-
- <para>
- This is useful for event triggers.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Invent pre-commit/pre-prepare/pre-subcommit events for transaction
- callbacks (Tom Lane)
- </para>
-
- <para>
- Loadable modules that use transaction callbacks might need modification
- to handle these new event types.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add function <link
- linkend="functions-info-catalog-table"><function>pg_identify_object()</function></link>
- to produce a machine-readable description of a database object
- (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add post-<command>ALTER</command>-object server hooks (KaiGai Kohei)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Implement a generic binary heap and use it for Merge-Append
- operations (Abhijit Menon-Sen)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Provide a tool to help detect timezone abbreviation changes when
- updating the <filename>src/timezone/data</filename> files
- (Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>pkg-config</application> support for <application>libpq</application>
- and <application>ecpg</application> libraries (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Remove <filename>src/tools/backend</filename>, now that the content is on
- the <productname>PostgreSQL</productname> wiki (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Split out <link linkend="wal"><acronym>WAL</acronym></link> reading as
- an independent facility (Heikki Linnakangas, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Use a 64-bit integer to represent <link
- linkend="wal"><acronym>WAL</acronym></link> positions
- (<structname>XLogRecPtr</structname>) instead of two 32-bit integers
- (Heikki Linnakangas)
- </para>
-
- <para>
- Generally, tools that need to read the <acronym>WAL</acronym> format
- will need to be adjusted.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="plpython">PL/Python</link> to support
- platform-specific include directories (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <link linkend="plpython">PL/Python</link> on <productname>OS
- X</productname> to build against custom versions of <application>Python</application>
- (Peter Eisentraut)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- <sect3>
- <title>Additional Modules</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add a <link linkend="postgres-fdw"><productname>Postgres</productname> foreign
- data wrapper</link> contrib module to allow access to
- other <productname>Postgres</productname> servers (Shigeru Hanada)
- </para>
-
- <para>
- This foreign data wrapper supports writes.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="pgwaldump"><application>pg_xlogdump</application></link>
- contrib program (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add support for indexing of regular-expression searches in
- <link linkend="pgtrgm"><productname>pg_trgm</productname></link>
- (Alexander Korotkov)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <link linkend="pgtrgm"><productname>pg_trgm</productname></link>'s
- handling of multibyte characters (Tom Lane)
- </para>
-
- <para>
- On a platform that does not have the wcstombs() or towlower() library
- functions, this could result in an incompatible change in the contents
- of <productname>pg_trgm</productname> indexes for non-ASCII data. In such cases,
- <command>REINDEX</command> those indexes to ensure correct search results.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add a <link linkend="pgstattuple">pgstattuple</link> function to report
- the size of the pending-insertions list of a <acronym>GIN</acronym> index
- (Fujii Masao)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <link linkend="oid2name"><application>oid2name</application></link>,
- <link linkend="pgbench"><application>pgbench</application></link>, and
- <link linkend="vacuumlo"><application>vacuumlo</application></link> set
- <varname>fallback_application_name</varname> (Amit Kapila)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve output of <link
- linkend="pgtesttiming"><application>pg_test_timing</application></link>
- (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve output of <link
- linkend="pgtestfsync"><application>pg_test_fsync</application></link>
- (Peter Geoghegan)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Create a dedicated foreign data wrapper, with its own option validator
- function, for <link linkend="dblink">dblink</link> (Shigeru Hanada)
- </para>
-
- <para>
- When using this FDW to define the target of a <application>dblink</application>
- connection, instead of using a hard-wired list of connection options,
- the underlying <application>libpq</application> library is consulted to see what
- connection options it supports.
- </para>
- </listitem>
-
- </itemizedlist>
-
- <sect4>
- <title><link linkend="pgupgrade"><application>pg_upgrade</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <application>pg_upgrade</application> to do dumps and restores in
- parallel (Bruce Momjian, Andrew Dunstan)
- </para>
-
- <para>
- This allows parallel schema dump/restore of databases, as well as
- parallel copy/link of data files per tablespace. Use the
- <option>--jobs</option> option to specify the level of parallelism.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_upgrade</application> create Unix-domain sockets in
- the current directory (Bruce Momjian, Tom Lane)
- </para>
-
- <para>
- This reduces the possibility that someone will accidentally connect
- during the upgrade.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Make <application>pg_upgrade</application> <option>--check</option> mode properly
- detect the location of non-default socket directories (Bruce
- Momjian, Tom Lane)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve performance of <application>pg_upgrade</application> for databases
- with many tables (Bruce Momjian)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>pg_upgrade</application>'s logs by showing
- executed commands (&Aacute;lvaro Herrera)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <application>pg_upgrade</application>'s status display during
- copy/link (Bruce Momjian)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- <sect4>
- <title><link linkend="pgbench"><application>pgbench</application></link></title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Add <option>--foreign-keys</option> option to <application>pgbench</application>
- (Jeff Janes)
- </para>
-
- <para>
- This adds foreign key constraints to the standard tables created by
- <application>pgbench</application>, for use in foreign key performance testing.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pgbench</application> to aggregate performance statistics
- and produce output every <option>--aggregate-interval</option>
- seconds (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>pgbench</application> <option>--sampling-rate</option> option
- to control the percentage of transactions logged (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Reduce and improve the status message output of
- <application>pgbench</application>'s initialization mode (Robert Haas,
- Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <application>pgbench</application> <option>-q</option> mode to print one output
- line every five seconds (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Output <application>pgbench</application> elapsed and estimated remaining
- time during initialization (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Allow <application>pgbench</application> to use much larger scale factors,
- by changing relevant columns from <type>integer</type> to <type>bigint</type>
- when the requested scale factor exceeds 20000
- (Greg Smith)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect4>
-
- </sect3>
-
- <sect3>
- <title>Documentation</title>
-
- <itemizedlist>
-
- <listitem>
- <para>
- Allow <productname>EPUB</productname>-format documentation to be created
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Update <productname>FreeBSD</productname> kernel configuration documentation
- (Brad Davis)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <link linkend="tutorial-window"><literal>WINDOW</literal>
- function</link> documentation (Bruce Momjian, Florian Pflug)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Add <link linkend="docguide-toolsets">instructions</link> for setting
- up the documentation tool chain on <productname>macOS</productname>
- (Peter Eisentraut)
- </para>
- </listitem>
-
- <listitem>
- <para>
- Improve <link
- linkend="guc-commit-delay"><varname>commit_delay</varname></link>
- documentation (Peter Geoghegan)
- </para>
- </listitem>
-
- </itemizedlist>
-
- </sect3>
-
- </sect2>
- </sect1>