<para>
Allow <link linkend="GIN"><acronym>GIN</></> index builds to
make effective use of <xref linkend="guc-maintenance-work-mem">
- settings larger than 1GB (Robert Abraham, Teodor Sigaev)
+ settings larger than 1 GB (Robert Abraham, Teodor Sigaev)
</para>
</listitem>
</sect4>
<sect4>
- <title>General Performance</title>
+ <title>Sorting</title>
<itemizedlist>
<listitem>
<!--
-2016-03-01 [a892234f8] Change the format of the VM fork to add a second bit per
-2016-03-08 [77a1d1e79] Department of second thoughts: remove PD_ALL_FROZEN.
-2016-03-10 [fd31cd265] Don't vacuum all-frozen pages.
-2016-03-11 [7087166a8] pg_upgrade: Convert old visibility map format to new for
-2016-06-17 [ede62e56f] Add VACUUM (DISABLE_PAGE_SKIPPING) for emergencies.
-2016-07-18 [eca0f1db1] Clear all-frozen visibilitymap status when locking tuple
-2016-08-04 [e7caacf73] Fix hard to hit race condition in heapam's tuple locking
+2016-04-08 [071180377] Use quicksort, not replacement selection, for external s
+2016-03-17 [0011c0091] Improve memory management for external sorts.
-->
<para>
- Avoid re-vacuuming pages containing only frozen tuples (Masahiko
- Sawada, Robert Haas, Andres Freund)
+ Improve sorting performance by using quicksort, not replacement
+ selection sort, when performing external sort steps (Peter
+ Geoghegan)
</para>
<para>
- Formerly, anti-wraparound vacuum had to visit every page of
- a table, even pages where there was nothing to do. Now, pages
- containing only already-frozen tuples are identified in the table's
- visibility map, and can be skipped by vacuum even when doing
- transaction wraparound prevention. This should greatly reduce the
- cost of maintaining large tables containing mostly-unchanged data.
+ The new approach makes better use of the <acronym>CPU</> cache
+ for typical cache sizes and data volumes. Where necessary,
+ the behavior can be adjusted via the new configuration parameter
+ <xref linkend="guc-replacement-sort-tuples">.
</para>
+ </listitem>
+ <listitem>
+<!--
+2015-10-09 [0e57b4d8b] Speed up text sorts where the same strings occur multipl
+2015-10-20 [5be94a9eb] Be a bit more rigorous about how we cache strcoll and st
+-->
<para>
- If necessary, vacuum can be forced to process all-frozen
- pages using the new <literal>DISABLE_PAGE_SKIPPING</> option.
- Normally, this should never be needed but it might help in
- recovering from visibility-map corruption.
+ Speed up text sorts where the same string occurs multiple times
+ (Peter Geoghegan)
</para>
</listitem>
<listitem>
<!--
-2015-12-30 [e84290823] Avoid useless truncation attempts during VACUUM.
+2015-11-06 [a76ef15d9] Add sort support routine for the UUID data type.
+2016-02-03 [b47b4dbf6] Extend sortsupport for text to more opclasses.
+2016-02-17 [f1f5ec1ef] Reuse abbreviated keys in ordered [set] aggregates.
-->
<para>
- Avoid useless heap-truncation attempts during <command>VACUUM</>
- (Jeff Janes, Tom Lane)
+ Speed up sorting of <type>uuid</>, <type>bytea</>, and
+ <type>char(n)</> fields by using <quote>abbreviated</> keys
+ (Peter Geoghegan)
</para>
<para>
- This change avoids taking an exclusive table lock in some cases
- where no truncation is possible. The main benefit comes from
- avoiding unnecessary query cancellations on standby servers.
+ Support for abbreviated keys has also been
+ added to the non-default operator classes <link
+ linkend="indexes-opclass"><literal>text_pattern_ops</></>,
+ <literal>varchar_pattern_ops</>, and
+ <literal>bpchar_pattern_ops</>. Processing of ordered-set
+ aggregates can also now exploit abbreviated keys.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+2015-12-16 [b648b7034] Speed up CREATE INDEX CONCURRENTLY's TID sort.
+-->
+ <para>
+ Speed up <command>CREATE INDEX CONCURRENTLY</> by treating
+ <acronym>TID</>s as 64-bit integers during sorting (Peter
+ Geoghegan)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title>Locking</title>
+
+ <itemizedlist>
+
+ <listitem>
+<!--
+2015-08-06 [0e141c0fb] Reduce ProcArrayLock contention by removing backends in
+2015-09-03 [4aec49899] Assorted code review for recent ProcArrayLock patch.
+-->
+ <para>
+ Reduce contention for the <literal>ProcArrayLock</> (Amit Kapila,
+ Robert Haas)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+2015-12-15 [6150a1b08] Move buffer I/O and content LWLocks out of the main tran
+-->
+ <para>
+ Improve performance by moving buffer content locks into the buffer
+ descriptors (Andres Freund, Simon Riggs)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+2016-04-10 [48354581a] Allow Pin/UnpinBuffer to operate in a lockfree manner.
+-->
+ <para>
+ Replace shared-buffer header spinlocks with atomic operations to
+ improve scalability (Alexander Korotkov, Andres Freund)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+2016-04-10 [008608b9d] Avoid the use of a separate spinlock to protect a LWLock
+-->
+ <para>
+ Use atomic operations, rather than a spinlock, to protect an
+ <literal>LWLock</>'s wait queue (Andres Freund)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+2016-03-23 [44ca4022f] Partition the freelist for shared dynahash tables.
+-->
+ <para>
+ Partition the shared hash table freelist to reduce contention on
+ multi-<acronym>CPU</>-socket servers (Aleksander Alekseev)
</para>
</listitem>
<para>
This change avoids substantial replication delays that sometimes
- occurre while replaying such operations.
+ occurred while replaying such operations.
</para>
</listitem>
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title>Optimizer Statistics</title>
+
+ <itemizedlist>
+
<listitem>
<!--
-2016-02-11 [d4c3a156c] Remove GROUP BY columns that are functionally dependent
+2016-04-01 [be4b4dc75] Omit null rows when applying the Haas-Stokes estimator f
+2016-04-01 [3d3bf62f3] Omit null rows when setting the threshold for what's a m
+2016-04-04 [391159e03] Partially revert commit 3d3bf62f30200500637b24fdb7b992a9
-->
<para>
- Avoid computing <literal>GROUP BY</> columns if they are
- functionally dependent on other columns (David Rowley)
+ Improve <command>ANALYZE</>'s estimates for columns with many nulls
+ (Tomas Vondra, Alex Shulgin)
</para>
<para>
- If a <literal>GROUP BY</> clause includes all columns of a
- non-deferred primary key, as well as other columns of the same
- table, those other columns are redundant and can be dropped
- from the grouping. This saves computation in many common cases.
+ Previously <command>ANALYZE</> tended to underestimate the number
+ of non-<literal>NULL</> distinct values in a column with many
+ <literal>NULL</>s, and was also inaccurate in computing the
+ most-common values.
</para>
</listitem>
<listitem>
<!--
-2016-03-11 [9118d03a8] When appropriate, postpone SELECT output expressions til
-2016-03-25 [d543170f2] Don't split up SRFs when choosing to postpone SELECT out
+2016-04-04 [84f9a35e3] Improve estimate of distinct values in estimate_num_grou
-->
<para>
- When appropriate, postpone evaluation of <command>SELECT</>
- output expressions until after an <literal>ORDER BY</> sort
- (Konstantin Knizhnik)
- </para>
-
- <para>
- This change ensures that volatile or expensive functions in the
- output list are executed in the order suggested by <literal>ORDER
- BY</>, and that they are not evaluated more times than required
- when there is a <literal>LIMIT</> clause. Previously, these
- properties held if the ordering was performed by an index scan or
- pre-merge-join sort, but not if it was performed by a top-level
- sort.
+ Improve planner's estimate of the number of distinct values in
+ a query result (Tomas Vondra)
</para>
</listitem>
<listitem>
<!--
-2016-03-10 [428b1d6b2] Allow to trigger kernel writeback after a configurable n
-2016-04-13 [fa11a09fe] Fix assorted portability issues with using msync() for d
-2016-04-24 [8f91d87d4] Fix documentation & config inconsistencies around 428b1d
-2016-04-26 [72a98a639] Don't open formally non-existent segments in _mdfd_getse
-2016-05-04 [a71248708] Fix transient mdsync() errors of truncated relations due
-2016-02-16 [7975c5e0a] Allow the WAL writer to flush WAL at a reduced rate.
-2016-06-10 [4bc0f165c] Change default of backend_flush_after GUC to 0 (disabled
+2016-04-08 [137805f89] Use Foreign Key relationships to infer multi-column join
+2016-06-07 [77ba61080] Revert "Use Foreign Key relationships to infer multi-col
+2016-06-18 [100340e2d] Restore foreign-key-aware estimation of join relation si
-->
<para>
- Where feasible, trigger kernel writeback after a configurable
- number of writes, to prevent accumulation of dirty data in kernel
- disk buffers (Fabien Coelho, Andres Freund)
+ Use foreign key relationships to infer selectivity for join
+ predicates (Tomas Vondra, David Rowley)
</para>
<para>
- <productname>PostgreSQL</> writes data to the kernel's disk cache,
- from where it will be flushed to physical storage in due time.
- Many operating systems are not smart about managing this and allow
- large amounts of dirty data to accumulate before deciding to flush
- it all at once, leading to long delays for new I/O requests.
- This change attempts to alleviate this problem by explicitly
- requesting data flushes after a configurable interval.
+ If a table <literal>t</> has a foreign key restriction, say
+ <literal>(a,b) REFERENCES r (x,y)</>, then a <literal>WHERE</>
+ condition such as <literal>t.a = r.x AND t.b = r.y</> cannot
+ select more than one <literal>r</> row per <literal>t</> row.
+ The planner formerly considered <literal>AND</> conditions
+ to be independent and would often drastically misestimate
+ selectivity as a result. Now it compares the <literal>WHERE</>
+ conditions to applicable foreign key constraints and produces
+ better estimates.
</para>
+ </listitem>
+
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title><command>VACUUM</></title>
+ <itemizedlist>
+
+ <listitem>
+<!--
+2016-03-01 [a892234f8] Change the format of the VM fork to add a second bit per
+2016-03-08 [77a1d1e79] Department of second thoughts: remove PD_ALL_FROZEN.
+2016-03-10 [fd31cd265] Don't vacuum all-frozen pages.
+2016-03-11 [7087166a8] pg_upgrade: Convert old visibility map format to new for
+2016-06-17 [ede62e56f] Add VACUUM (DISABLE_PAGE_SKIPPING) for emergencies.
+2016-07-18 [eca0f1db1] Clear all-frozen visibilitymap status when locking tuple
+2016-08-04 [e7caacf73] Fix hard to hit race condition in heapam's tuple locking
+-->
<para>
- On Linux, <function>sync_file_range()</> is used for this purpose,
- and the feature is on by default on Linux because that function has few
- downsides. This sync capability is also available on other platforms
- that have <function>msync()</> or <function>posix_fadvise()</>,
- but those interfaces have some undesirable side-effects so the
- feature is disabled by default on non-Linux platforms.
+ Avoid re-vacuuming pages containing only frozen tuples (Masahiko
+ Sawada, Robert Haas, Andres Freund)
</para>
<para>
- The new configuration parameters <xref
- linkend="guc-backend-flush-after">, <xref
- linkend="guc-bgwriter-flush-after">, <xref
- linkend="guc-checkpoint-flush-after">, and <xref
- linkend="guc-wal-writer-flush-after"> control this behavior.
+ Formerly, anti-wraparound vacuum had to visit every page of
+ a table, even pages where there was nothing to do. Now, pages
+ containing only already-frozen tuples are identified in the table's
+ visibility map, and can be skipped by vacuum even when doing
+ transaction wraparound prevention. This should greatly reduce the
+ cost of maintaining large tables containing mostly-unchanged data.
+ </para>
+
+ <para>
+ If necessary, vacuum can be forced to process all-frozen
+ pages using the new <literal>DISABLE_PAGE_SKIPPING</> option.
+ Normally, this should never be needed but it might help in
+ recovering from visibility-map corruption.
</para>
</listitem>
<listitem>
<!--
-2016-03-10 [9cd00c457] Checkpoint sorting and balancing.
+2015-12-30 [e84290823] Avoid useless truncation attempts during VACUUM.
-->
<para>
- Perform checkpoint writes in sorted order (Fabien Coelho,
- Andres Freund)
+ Avoid useless heap-truncation attempts during <command>VACUUM</>
+ (Jeff Janes, Tom Lane)
</para>
<para>
- Previously, checkpoints wrote out dirty pages in whatever order
- they happen to appear in shared buffers, which usually is nearly
- random. That performs poorly, especially on rotating media.
- This change causes checkpoint-driven writes to be done in order
- by file and block number, and to be balanced across tablespaces.
+ This change avoids taking an exclusive table lock in some cases
+ where no truncation is possible. The main benefit comes from
+ avoiding unnecessary query cancellations on standby servers.
</para>
</listitem>
+ </itemizedlist>
+
+ </sect4>
+
+ <sect4>
+ <title>General Performance</title>
+
+ <itemizedlist>
+
<listitem>
<!--
2016-04-08 [848ef42bb] Add the "snapshot too old" feature
<listitem>
<!--
+2016-02-11 [d4c3a156c] Remove GROUP BY columns that are functionally dependent
+-->
+ <para>
+ Avoid computing <literal>GROUP BY</> columns if they are
+ functionally dependent on other columns (David Rowley)
+ </para>
+
+ <para>
+ If a <literal>GROUP BY</> clause includes all columns of a
+ non-deferred primary key, as well as other columns of the same
+ table, those other columns are redundant and can be dropped
+ from the grouping. This saves computation in many common cases.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+2016-03-11 [9118d03a8] When appropriate, postpone SELECT output expressions til
+2016-03-25 [d543170f2] Don't split up SRFs when choosing to postpone SELECT out
+-->
+ <para>
+ When appropriate, postpone evaluation of <command>SELECT</>
+ output expressions until after an <literal>ORDER BY</> sort
+ (Konstantin Knizhnik)
+ </para>
+
+ <para>
+ This change ensures that volatile or expensive functions in the
+ output list are executed in the order suggested by <literal>ORDER
+ BY</>, and that they are not evaluated more times than required
+ when there is a <literal>LIMIT</> clause. Previously, these
+ properties held if the ordering was performed by an index scan or
+ pre-merge-join sort, but not if it was performed by a top-level
+ sort.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
2016-03-31 [f9aefcb91] Support using index-only scans with partial indexes in m
-->
<para>
<listitem>
<!--
-2016-04-08 [137805f89] Use Foreign Key relationships to infer multi-column join
-2016-06-07 [77ba61080] Revert "Use Foreign Key relationships to infer multi-col
-2016-06-18 [100340e2d] Restore foreign-key-aware estimation of join relation si
+2016-03-10 [9cd00c457] Checkpoint sorting and balancing.
-->
<para>
- Use foreign key relationships to infer selectivity for join
- predicates (Tomas Vondra, David Rowley)
+ Perform checkpoint writes in sorted order (Fabien Coelho,
+ Andres Freund)
</para>
<para>
- If a table <literal>t</> has a foreign key restriction, say
- <literal>(a,b) REFERENCES r (x,y)</>, then a <literal>WHERE</>
- condition such as <literal>t.a = r.x AND t.b = r.y</> cannot
- select more than one <literal>r</> row per <literal>t</> row.
- The planner formerly considered <literal>AND</> conditions
- to be independent and would often drastically misestimate
- selectivity as a result. Now it compares the <literal>WHERE</>
- conditions to applicable foreign key constraints and produces
- better estimates.
+ Previously, checkpoints wrote out dirty pages in whatever order
+ they happen to appear in shared buffers, which usually is nearly
+ random. That performs poorly, especially on rotating media.
+ This change causes checkpoint-driven writes to be done in order
+ by file and block number, and to be balanced across tablespaces.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
+2016-03-10 [428b1d6b2] Allow to trigger kernel writeback after a configurable n
+2016-04-13 [fa11a09fe] Fix assorted portability issues with using msync() for d
+2016-04-24 [8f91d87d4] Fix documentation & config inconsistencies around 428b1d
+2016-04-26 [72a98a639] Don't open formally non-existent segments in _mdfd_getse
+2016-05-04 [a71248708] Fix transient mdsync() errors of truncated relations due
+2016-02-16 [7975c5e0a] Allow the WAL writer to flush WAL at a reduced rate.
+2016-06-10 [4bc0f165c] Change default of backend_flush_after GUC to 0 (disabled
+-->
+ <para>
+ Where feasible, trigger kernel writeback after a configurable
+ number of writes, to prevent accumulation of dirty data in kernel
+ disk buffers (Fabien Coelho, Andres Freund)
+ </para>
+
+ <para>
+ <productname>PostgreSQL</> writes data to the kernel's disk cache,
+ from where it will be flushed to physical storage in due time.
+ Many operating systems are not smart about managing this and allow
+ large amounts of dirty data to accumulate before deciding to flush
+ it all at once, leading to long delays for new I/O requests.
+ This change attempts to alleviate this problem by explicitly
+ requesting data flushes after a configurable interval.
+ </para>
+
+ <para>
+ On Linux, <function>sync_file_range()</> is used for this purpose,
+ and the feature is on by default on Linux because that function has few
+ downsides. This sync capability is also available on other platforms
+ that have <function>msync()</> or <function>posix_fadvise()</>,
+ but those interfaces have some undesirable side-effects so the
+ feature is disabled by default on non-Linux platforms.
+ </para>
+
+ <para>
+ The new configuration parameters <xref
+ linkend="guc-backend-flush-after">, <xref
+ linkend="guc-bgwriter-flush-after">, <xref
+ linkend="guc-checkpoint-flush-after">, and <xref
+ linkend="guc-wal-writer-flush-after"> control this behavior.
</para>
</listitem>
<listitem>
<!--
-2016-04-01 [be4b4dc75] Omit null rows when applying the Haas-Stokes estimator f
-2016-04-01 [3d3bf62f3] Omit null rows when setting the threshold for what's a m
-2016-04-04 [391159e03] Partially revert commit 3d3bf62f30200500637b24fdb7b992a9
--->
- <para>
- Improve <command>ANALYZE</>'s estimates for columns with many nulls
- (Tomas Vondra, Alex Shulgin)
- </para>
-
- <para>
- Previously <command>ANALYZE</> tended to underestimate the number
- of non-<literal>NULL</> distinct values in a column with many
- <literal>NULL</>s, and was also inaccurate in computing the
- most-common values.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-04 [84f9a35e3] Improve estimate of distinct values in estimate_num_grou
--->
- <para>
- Improve planner's estimate of the number of distinct values in
- a query result (Tomas Vondra)
- </para>
- </listitem>
-
- <listitem>
-<!--
2016-04-08 [719c84c1b] Extend relations multiple blocks at a time to improve sc
-->
<para>
<listitem>
<!--
-2016-04-08 [071180377] Use quicksort, not replacement selection, for external s
-2016-03-17 [0011c0091] Improve memory management for external sorts.
--->
- <para>
- Improve sorting performance by using quicksort, not replacement
- selection sort, when performing external sort steps (Peter
- Geoghegan)
- </para>
-
- <para>
- The new approach makes better use of the <acronym>CPU</> cache
- for typical cache sizes and data volumes. Where necessary,
- the behavior can be adjusted via the new configuration parameter
- <xref linkend="guc-replacement-sort-tuples">.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-10-09 [0e57b4d8b] Speed up text sorts where the same strings occur multipl
-2015-10-20 [5be94a9eb] Be a bit more rigorous about how we cache strcoll and st
--->
- <para>
- Speed up text sorts where the same string occurs multiple times
- (Peter Geoghegan)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-11-06 [a76ef15d9] Add sort support routine for the UUID data type.
-2016-02-03 [b47b4dbf6] Extend sortsupport for text to more opclasses.
-2016-02-17 [f1f5ec1ef] Reuse abbreviated keys in ordered [set] aggregates.
--->
- <para>
- Speed up sorting of <type>uuid</>, <type>bytea</>, and
- <type>char(n)</> fields by using <quote>abbreviated</> keys
- (Peter Geoghegan)
- </para>
-
- <para>
- Support for abbreviated keys has also been
- added to the non-default operator classes <link
- linkend="indexes-opclass"><literal>text_pattern_ops</></>,
- <literal>varchar_pattern_ops</>, and
- <literal>bpchar_pattern_ops</>. Processing of ordered-set
- aggregates can also now exploit abbreviated keys.
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-12-16 [b648b7034] Speed up CREATE INDEX CONCURRENTLY's TID sort.
--->
- <para>
- Speed up <command>CREATE INDEX CONCURRENTLY</> by treating
- <acronym>TID</>s as 64-bit integers during sorting (Peter
- Geoghegan)
- </para>
- </listitem>
-
- <listitem>
-<!--
2016-04-08 [5364b357f] Increase maximum number of clog buffers.
-->
<para>
<listitem>
<!--
-2015-08-06 [0e141c0fb] Reduce ProcArrayLock contention by removing backends in
-2015-09-03 [4aec49899] Assorted code review for recent ProcArrayLock patch.
--->
- <para>
- Reduce contention for the <literal>ProcArrayLock</> (Amit Kapila,
- Robert Haas)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2015-12-15 [6150a1b08] Move buffer I/O and content LWLocks out of the main tran
--->
- <para>
- Improve performance by moving buffer content locks into the buffer
- descriptors (Andres Freund, Simon Riggs)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-10 [48354581a] Allow Pin/UnpinBuffer to operate in a lockfree manner.
--->
- <para>
- Replace shared-buffer header spinlocks with atomic operations to
- improve scalability (Alexander Korotkov, Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-04-10 [008608b9d] Avoid the use of a separate spinlock to protect a LWLock
--->
- <para>
- Use atomic operations, rather than a spinlock, to protect an
- <literal>LWLock</>'s wait queue (Andres Freund)
- </para>
- </listitem>
-
- <listitem>
-<!--
-2016-03-23 [44ca4022f] Partition the freelist for shared dynahash tables.
--->
- <para>
- Partition the shared hash table freelist to reduce contention on
- multi-<acronym>CPU</>-socket servers (Aleksander Alekseev)
- </para>
- </listitem>
-
- <listitem>
-<!--
2015-07-05 [6c82d8d1f] Further reduce overhead for passing plpgsql variables to
-->
<para>
<listitem>
<!--
+2016-03-05 [dc7d70ea0] Expose control file data via SQL accessible functions.
+-->
+ <para>
+ Add <link
+ linkend="functions-controldata"><function>pg_control_system()</></>,
+ <function>pg_control_checkpoint()</>,
+ <function>pg_control_recovery()</>, and
+ <function>pg_control_init()</> functions to expose fields of
+ <filename>pg_control</> to <acronym>SQL</> (Joe Conway, Michael
+ Paquier)
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
2016-02-17 [a5c43b886] Add new system view, pg_config
-->
<para>
<listitem>
<!--
-2016-03-05 [dc7d70ea0] Expose control file data via SQL accessible functions.
--->
- <para>
- Add <link
- linkend="functions-controldata"><function>pg_control_system()</></>,
- <function>pg_control_checkpoint()</>,
- <function>pg_control_recovery()</>, and
- <function>pg_control_init()</> functions to expose fields of
- <filename>pg_control</> to <acronym>SQL</> (Joe Conway, Michael
- Paquier)
- </para>
- </listitem>
-
- <listitem>
-<!--
2016-01-12 [e63bb4549] Add new user fn pg_current_xlog_flush_location()
-->
<para>
<listitem>
<!--
-2016-02-02 [7d17e683f] Add support for systemd service notifications
+2016-03-16 [c6dda1f48] Add idle_in_transaction_session_timeout.
-->
<para>
- Add configure option <option>--with-systemd</> to enable
- calling <function>sd_notify()</> at server start and stop (Peter
- Eisentraut)
+ Allow sessions to be terminated automatically if they are in
+ idle-in-transaction state for too long (Vik Fearing)
</para>
<para>
- This allows the use of <application>systemd</> service units of
- type <literal>notify</>, which greatly simplifies the management
- of <productname>PostgreSQL</> under <application>systemd</>.
+ This behavior is controlled by the new configuration parameter
+ <xref linkend="guc-idle-in-transaction-session-timeout">. It can
+ be useful to prevent forgotten transactions from holding locks
+ or preventing vacuum cleanup for too long.
</para>
</listitem>
<listitem>
<!--
-2016-03-16 [c6dda1f48] Add idle_in_transaction_session_timeout.
+2016-02-02 [7d17e683f] Add support for systemd service notifications
-->
<para>
- Allow sessions to be terminated automatically if they are in
- idle-in-transaction state for too long (Vik Fearing)
+ Add configure option <option>--with-systemd</> to enable
+ calling <function>sd_notify()</> at server start and stop (Peter
+ Eisentraut)
</para>
<para>
- This behavior is controlled by the new configuration parameter
- <xref linkend="guc-idle-in-transaction-session-timeout">. It can
- be useful to prevent forgotten transactions from holding locks
- or preventing vacuum cleanup for too long.
+ This allows the use of <application>systemd</> service units of
+ type <literal>notify</>, which greatly simplifies the management
+ of <productname>PostgreSQL</> under <application>systemd</>.
</para>
</listitem>
<listitem>
<!--
+2016-04-07 [bb140506d] Phrase full text search.
+2016-06-27 [028350f61] Make exact distance match for FTS phrase operator
+2016-06-27 [3dbbd0f02] Do not fallback to AND for FTS phrase operator.
+2016-06-27 [6734a1cac] Change predecence of phrase operator.
+-->
+ <para>
+ Improve full-text search to support searching for phrases, that
+ is, lexemes appearing adjacent to each other in a specific order,
+ or with a specified distance between them (Teodor Sigaev, Oleg
+ Bartunov, Dmitry Ivanov)
+ </para>
+
+ <para>
+ A phrase-search query can be specified in <type>tsquery</>
+ input using the new operators <literal><-></> and
+ <literal><<replaceable>N</>></literal>. The former means
+ that the lexemes before and after it must appear adjacent to
+ each other in that order. The latter means they must be exactly
+ <replaceable>N</> lexemes apart.
+ </para>
+ </listitem>
+
+ <listitem>
+<!--
2015-12-22 [6efbded6e] Allow omitting one or both boundaries in an array slice
-->
<para>
<listitem>
<!--
-2016-04-07 [bb140506d] Phrase full text search.
-2016-06-27 [028350f61] Make exact distance match for FTS phrase operator
-2016-06-27 [3dbbd0f02] Do not fallback to AND for FTS phrase operator.
-2016-06-27 [6734a1cac] Change predecence of phrase operator.
--->
- <para>
- Improve full-text search to support searching for phrases, that
- is, lexemes appearing adjacent to each other in a specific order,
- or with a specified distance between them (Teodor Sigaev, Oleg
- Bartunov, Dmitry Ivanov)
- </para>
-
- <para>
- A phrase-search query can be specified in <type>tsquery</>
- input using the new operators <literal><-></> and
- <literal><<replaceable>N</>></literal>. The former means
- that the lexemes before and after it must appear adjacent to
- each other in that order. The latter means they must be exactly
- <replaceable>N</> lexemes apart.
- </para>
- </listitem>
-
- <listitem>
-<!--
2016-03-04 [d78a7d9c7] Improve support of Hunspell in ispell dictionary.
2016-03-11 [8829af47e] Fix merge affixes for numeric ones
2016-03-17 [f4ceed6ce] Improve support of Hunspell