]> granicus.if.org Git - postgresql/blob - doc/src/sgml/release-9.5.sgml
0786a203b75a3f910d61c0a71e4a4828f66233a4
[postgresql] / doc / src / sgml / release-9.5.sgml
1 <!-- doc/src/sgml/release-9.5.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
3
4  <sect1 id="release-9-5">
5   <title>Release 9.5</title>
6
7   <note>
8    <title>Release Date</title>
9    <simpara>2015-??-??</simpara>
10    <simpara>Current as of 2015-08-03</simpara>
11   </note>
12
13   <sect2>
14    <title>Overview</title>
15
16    <para>
17     Major enhancements in <productname>PostgreSQL</> 9.5 include:
18    </para>
19
20    <!-- This list duplicates items below, but without authors or details-->
21
22    <itemizedlist>
23
24     <listitem>
25      <para>
26       ... to be filled in ...
27      </para>
28     </listitem>
29
30    </itemizedlist>
31
32    <para>
33     The above items are explained in more detail in the sections below.
34    </para>
35
36   </sect2>
37
38   <sect2>
39
40   <title>Migration to Version 9.5</title>
41
42    <para>
43     A dump/restore using <xref linkend="app-pg-dumpall">, or use
44     of <xref linkend="pgupgrade">, is required for those wishing to migrate
45     data from any previous release.
46    </para>
47
48    <para>
49     Version 9.5 contains a number of changes that may affect compatibility
50     with previous releases.  Observe the following incompatibilities:
51    </para>
52
53    <itemizedlist>
54
55     <listitem>
56 <!--
57 2015-03-11 [c6b3c93] Tom Lane: Make operator precedence follow the SQL standar..
58 -->
59      <para>
60       Adjust <link linkend="sql-precedence">operator precedence</>
61       to match the <acronym>SQL</> standard (Tom Lane)
62      </para>
63
64      <para>
65       The precedence of <literal>&lt;=</literal>, <literal>&gt;=</literal>
66       and <literal>&lt;&gt;</literal> has been reduced to match that of
67       <literal>&lt;</literal>, <literal>&gt;</literal>
68       and <literal>=</literal>.  The precedence of <literal>IS</> tests
69       (e.g., <replaceable>x</> <literal>IS NULL</>) has been reduced to be
70       just below these six comparison operators.
71       Also, multi-keyword operators beginning with <literal>NOT</> now have
72       the precedence of their base operator (for example, <literal>NOT
73       BETWEEN</> now has the same precedence as <literal>BETWEEN</>) whereas
74       before they had inconsistent precedence, behaving like <literal>NOT</>
75       with respect to their left operand but like their base operator with
76       respect to their right operand.  The new configuration
77       parameter <xref linkend="guc-operator-precedence-warning"> can be
78       enabled to warn about queries in which these precedence changes result
79       in different parsing choices.
80      </para>
81     </listitem>
82
83     <listitem>
84 <!--
85 2015-03-31 [0badb06] Bruce ..: pg_ctl:  change default shutdown mode from 'sma..
86 -->
87      <para>
88       Change <application>pg_ctl</>'s default shutdown mode from
89       <literal>smart</> to <literal>fast</> (Bruce Momjian)
90      </para>
91     </listitem>
92
93     <listitem>
94 <!--
95 2015-03-04 [1345cc6] Tom Lane: Use standard casting mechanism to convert type..
96 -->
97      <para>
98       Use assignment cast behavior for data type conversions
99       in <application>PL/pgSQL</> assignments, rather than converting to and
100       from text (Tom Lane)
101      </para>
102
103      <para>
104       This change causes conversions of booleans to strings to
105       produce <literal>true</> or <literal>false</>, not <literal>t</>
106       or <literal>f</>.  Other type conversions may succeed in more cases
107       than before; for example, assigning a numeric value <literal>3.9</> to
108       an integer variable will now assign 4 rather than failing.  If no
109       assignment-grade cast is defined for the particular source and
110       destination types, <application>PL/pgSQL</> will fall back to its old
111       I/O conversion behavior.
112      </para>
113     </listitem>
114
115     <listitem>
116 <!--
117 2014-08-28 [11a020e] Andres..: Allow escaping of option values for options pas..
118 -->
119      <para>
120       Allow characters in <link linkend="libpq-connect-options">server
121       command-line options</> to be escaped with a backslash (Andres Freund)
122      </para>
123
124      <para>
125       Formerly, spaces in the options string always separated options, so
126       there was no way to include a space in an option value.  Including
127       a backslash in an option value now requires writing <literal>\\</>.
128      </para>
129     </listitem>
130
131     <listitem>
132 <!--
133 2015-05-08 [9a08841] Stephe..: Change default for include_realm to 1
134 -->
135      <para>
136       Change the default value of <link
137       linkend="gssapi-auth"><varname>include_realm</></> to 1, so that
138       by default the realm is not removed from a <acronym>GSS</>
139       or <acronym>SSPI</> principal name (Stephen Frost)
140      </para>
141     </listitem>
142
143     <listitem>
144 <!--
145 2015-01-22 [59367fd] Bruce ..: adjust ACL owners for REASSIGN and ALTER OWNER..
146 -->
147      <para>
148       Fix <link linkend="SQL-REASSIGN-OWNED"><command>REASSIGN OWNED</></>
149       and <link linkend="SQL-ALTERTYPE"><command>ALTER OWNER TO</></>
150       to properly update permissions lists (ACLs) when changing ownership of
151       types, foreign data wrappers, and foreign servers (Bruce Momjian)
152      </para>
153     </listitem>
154
155     <listitem>
156 <!--
157 2015-07-28 [6087d95] Andres..: Remove ssl renegotiation support.
158 -->
159      <para>
160       Remove server configuration
161       parameter <varname>ssl_renegotiation_limit</>, which was deprecated
162       in earlier releases (Andres Freund)
163      </para>
164
165      <para>
166       While SSL renegotiation is a good idea in theory, it has caused enough
167       bugs to be considered a net negative in practice, and it is due to be
168       removed from future versions of the relevant standards.  We have
169       therefore removed support for it from <productname>PostgreSQL</>.
170      </para>
171     </listitem>
172
173     <listitem>
174 <!--
175 2014-11-05 [525a489] Tom Lane: Remove the last vestige of server-side autocomm..
176 -->
177      <para>
178       Remove server configuration parameter <varname>autocommit</>, which
179       was already deprecated and non-operational (Tom Lane)
180      </para>
181     </listitem>
182
183     <listitem>
184 <!--
185 2015-03-06 [bb8582a] Peter ..: Remove rolcatupdate
186 -->
187      <para>
188       Remove <link linkend="catalog-pg-authid"><structname>pg_authid</></>'s
189       <structfield>rolcatupdate</> field, as it had no value (Adam Brightwell)
190      </para>
191     </listitem>
192
193     <listitem>
194 <!--
195 2015-07-17 [89ddd29] Andrew..: Support JSON negative array subscripts everywh..
196 -->
197      <para>
198       Allow <type>json</> and <type>jsonb</> array extraction operators to
199       accept negative subscripts, which count from the end of JSON arrays.
200       Previously, these operators returned <literal>NULL</> for negative
201       subscripts.  (Peter Geoghegan, Andrew Dunstan)
202      </para>
203     </listitem>
204
205    </itemizedlist>
206
207   </sect2>
208
209   <sect2>
210    <title>Changes</title>
211
212    <para>
213     Below you will find a detailed account of the changes between
214     <productname>PostgreSQL</productname> 9.5 and the previous major
215     release.
216    </para>
217
218    <sect3>
219     <title>Server</title>
220
221     <sect4>
222      <title>Indexes</title>
223
224      <itemizedlist>
225
226       <listitem>
227 <!--
228 2014-11-07 [7516f52] Alvaro..: BRIN: Block Range Indexes
229 2015-05-05 [3b6db1f] Alvaro..: Add geometry/range functions to support BRIN in..
230 2015-05-15 [b0b7be6] Alvaro..: Add BRIN infrastructure for "inclusion" opclasses
231 -->
232        <para>
233         Add <link linkend="BRIN">Block Range Indexes</> (<acronym>BRIN</>)
234         (&Aacute;lvaro Herrera)
235        </para>
236
237        <para>
238         <acronym>BRIN</> indexes are very compact and cheap to update by
239         storing min/max values for a range of heap blocks.
240        </para>
241       </listitem>
242
243       <listitem>
244 <!--
245 2015-05-15 [35fcb1b] Heikki..: Allow GiST distance function to return merely ..
246 -->
247        <para>
248         Allow queries to perform accurate distance filtering of
249         bounding-box-indexed objects (polygons, circles) using <link
250         linkend="GiST">GiST</> indexes (Alexander Korotkov, Heikki
251         Linnakangas)
252        </para>
253
254        <para>
255         Previously, a common table expression was required to return a
256         large number of rows ordered by bounding-box distance, and then
257         filtered further with a more accurate non-bounding-box distance
258         calculation.
259        </para>
260       </listitem>
261
262       <listitem>
263 <!--
264 2015-03-26 [d04c8ed] Heikki..: Add support for index-only scans in GiST.
265 2015-03-27 [e09b483] Heikki..: Add index-only scan support to btree_gist.
266 2015-03-28 [3a20b0e] Heikki..: Add index-only scan support to inet GiST opclass.
267 2015-03-30 [0633a60] Heikki..: Add index-only scan support to range type GiST ..
268 -->
269        <para>
270         Allow <link linkend="GiST">GiST</> indexes to perform index-only
271         scans (Anastasia Lubennikova, Heikki Linnakangas, Andreas Karlsson)
272        </para>
273       </listitem>
274
275       <listitem>
276 <!--
277 Add GUC and storage parameter to set the maximum size of GIN pending list.
278 -->
279        <para>
280         Add configuration parameter <xref linkend="guc-gin-pending-list-limit">
281         to control the size of <acronym>GIN</> pending lists (Fujii Masao)
282        </para>
283
284        <para>
285         Previously the list size was controlled
286         by <xref linkend="guc-work-mem">.  This can also be set as an index
287         storage parameter.
288        </para>
289       </listitem>
290
291       <listitem>
292 <!--
293 2014-09-10 [84aa8ba] Bruce ..: Issue a warning during the creation of hash in..
294 -->
295        <para>
296         Issue a warning during the creation of <link
297         linkend="indexes-types">hash</> indexes because they are not
298         crash-safe (Bruce Momjian)
299        </para>
300       </listitem>
301
302      </itemizedlist>
303
304     </sect4>
305
306     <sect4>
307      <title>General Performance</title>
308
309      <itemizedlist>
310
311       <listitem>
312 <!--
313 2015-01-19 [4ea51cd] Robert..: Use abbreviated keys for faster sorting of text..
314 2014-09-19 [e246b3d] Robert..: Add a fast pre-check for equality of equal-leng..
315 2015-05-13 [78efd5c] Robert..: Extend abbreviated key infrastructure to datum ..
316 -->
317        <para>
318         Improve the speed of sorting character and <type>NUMERIC</> fields
319         (Peter Geoghegan, Andrew Gierth, Robert Haas)
320        </para>
321       </listitem>
322
323       <listitem>
324 <!--
325 2014-11-07 [5ea86e6] Robert..: Use the sortsupport infrastructure in more cas..
326 -->
327        <para>
328         Extend the infrastructure that allows sorting to be performed by
329         inlined, non-<acronym>SQL</acronym>-callable comparison functions to
330         cover <command>CREATE INDEX</>, <command>REINDEX</>, and
331         <command>CLUSTER</> (Peter Geoghegan)
332        </para>
333       </listitem>
334
335       <listitem>
336 <!--
337 2014-09-10 [45f6240] Heikki..: Pack tuples in a hash join batch densely, to sa..
338 2014-09-12 [8cce08f] Robert..: Change NTUP_PER_BUCKET to 1 to improve hash joi..
339 2014-10-13 [30d7ae3] Kevin ..: Increase number of hash join buckets for undere..
340 FIXME: bad description? Should talk about hash joins
341 -->
342        <para>
343         Improve in-memory hash performance (Tomas Vondra, Robert Haas)
344        </para>
345       </listitem>
346
347       <listitem>
348 <!--
349 2014-09-25 [5d7962c] Robert..: Change locking regimen around buffer replacement.
350 2014-12-25 [d72731a] Andres..: Lockless StrategyGetBuffer clock sweep hot path.
351 FIXME: Add Andres
352 -->
353        <para>
354         Improve concurrency of shared buffer replacement
355         (Robert Haas, Amit Kapila)
356        </para>
357       </listitem>
358
359       <listitem>
360 <!--
361 2015-03-25 [2ed5b87f] Kevin ..: Reduce pinning and buffer content locking for b..
362 -->
363        <para>
364         Reduce the number of page locks and pins during index scans (Kevin Grittner)
365        </para>
366
367        <para>
368         The primary benefit of this is to allow index vacuums to be blocked
369         less often.
370        </para>
371       </listitem>
372
373       <listitem>
374 <!--
375 2014-08-30 [4b4b680] Andres..: Make backend local tracking of buffer pins memo..
376 2015-01-19 [2d115e4] Andres..: Fix various shortcomings of the new PrivateRefC..
377 -->
378        <para>
379         Make backend local tracking of buffer pins memory efficient (Andres Freund)
380        </para>
381
382        <para>
383         Previously each session allocated an array with space for every buffer
384         in <link linkend="guc-shared-buffers"><varname>shared_buffers</></link>.
385        </para>
386       </listitem>
387
388       <listitem>
389 <!--
390 2014-12-25 [ab5194e] Andres..: Improve LWLock scalability.
391 -->
392        <para>
393         Improve lock scalability (Andres Freund)
394        </para>
395
396        <para>
397         This particularly addresses scalability problems when running on
398         systems with multiple <acronym>CPU</> sockets.
399        </para>
400       </listitem>
401
402       <listitem>
403 <!--
404 2014-07-15 [f15821e] Tom Lane: Allow join removal in some cases involving a le..
405 -->
406        <para>
407         Allow the optimizer to remove unnecessary references to left
408         outer join subqueries (David Rowley)
409        </para>
410       </listitem>
411
412       <listitem>
413 <!--
414 2014-06-27 [d222585] Tom Lane: Allow pushdown of WHERE quals into subqueries w..
415 -->
416        <para>
417         Allow pushdown of query restrictions into <link
418         linkend="functions-window">window functions</>, where appropriate
419         (David Rowley)
420        </para>
421       </listitem>
422
423       <listitem>
424 <!--
425 2015-04-27 [dcbf594]  Stephe..: Improve qual pushdown for RLS and SB views
426 -->
427        <para>
428         Allow non-LEAKPROOF functions to be passed into security barrier
429         views if the function does not reference any table columns
430         (Dean Rasheed)
431        </para>
432       </listitem>
433
434       <listitem>
435 <!--
436 2014-11-04 [5028f22] Heikki..: Switch to CRC-32C in WAL and other places.
437 2015-02-10 [025c024] Heikki..: Speed up CRC calculation using slicing-by-8 alg..
438 2015-04-14 [3dc2d62] Heikki..: Use Intel SSE 4.2 CRC instructions where availa..
439
440 -->
441        <para>
442         Speed up <acronym>CRC</> (cyclic redundancy check) computations
443         and switch to CRC-32C (Abhijit Menon-Sen, Heikki Linnakangas)
444        </para>
445       </listitem>
446
447       <listitem>
448 <!--
449 2015-01-16 [f5ae3ba] Andres..: Make tbm_add_tuples more efficient by caching t..
450 2015-01-16 [779fdcd] Tom Lane: Improve new caching logic in tbm_add_tuples().
451 -->
452        <para>
453         Improve bitmap index scan performance (Teodor Sigaev, Tom Lane)
454        </para>
455       </listitem>
456
457       <listitem>
458        <para>
459 <!--
460 2014-07-01 [9f03ca9] Robert..: Avoid copying index tuples when building an ind..
461 -->
462         Speed up CREATE INDEX by avoiding unneccessary memory copies (Robert Haas)
463        </para>
464       </listitem>
465
466      </itemizedlist>
467
468     </sect4>
469
470     <sect4>
471      <title>Monitoring</title>
472
473      <itemizedlist>
474
475       <listitem>
476 <!--
477 2015-04-03 [4ff695b1] Alvaro..: Add log_min_autovacuum_duration per-table option
478 -->
479        <para>
480         Add per-table autovacuum logging control via
481         <varname>log_min_autovacuum_duration</> (Michael Paquier)
482        </para>
483
484        <para>
485         NOT DOCUMENTED?
486        </para>
487       </listitem>
488
489       <listitem>
490 <!--
491 2014-06-29 [51adcaa] Andres..: Add cluster_name GUC which is included in proce..
492 -->
493        <para>
494         Add new configuration parameter <xref linkend="guc-cluster-name">
495         (Thomas Munro)
496        </para>
497
498        <para>
499         This string, typically set in <link
500         linkend="config-setting-configuration-file"><filename>postgresql.conf</></>,
501         allows clients to identify the cluster.  This name also appears
502         in the process title of all server processes, allowing for easier
503         identification of processes belonging to the same cluster.
504        </para>
505       </listitem>
506
507       <listitem>
508 <!--
509 2014-09-13 [fe550b2] Tom Lane: Invent PGC_SU_BACKEND and mark log_connections..
510 -->
511        <para>
512         Prevent non-superusers from changing <xref
513         linkend="guc-log-disconnections"> on connection startup (Fujii Masao)
514        </para>
515       </listitem>
516
517      </itemizedlist>
518
519     </sect4>
520
521     <sect4>
522      <title><acronym>SSL</></title>
523
524      <itemizedlist>
525
526       <listitem>
527 <!--
528 2014-09-12 [acd08d7] Heikki..: Support Subject Alternative Names in SSL server..
529 -->
530        <para>
531         Check <link linkend="libpq-ssl"><quote>Subject Alternative
532         Names</></> in <acronym>SSL</> server certificates, if present
533         (Alexey Klyukin)
534        </para>
535
536        <para>
537         When they are present, this replaces checks against the certificate's
538         <quote>Common Name</>.
539        </para>
540       </listitem>
541
542       <listitem>
543 <!--
544 2015-04-12 [9029f4b] Magnus..: Add system view pg_stat_ssl
545 -->
546        <para>
547         Add system view <link
548         linkend="pg-stat-ssl-view"><structname>pg_stat_ssl</></> to report
549         <acronym>SSL</> connection information (Magnus Hagander)
550        </para>
551       </listitem>
552
553       <listitem>
554 <!--
555 2015-02-03 [91fa7b4] Heikki..: Add API functions to libpq to interrogate SSL ..
556 -->
557        <para>
558         Add <application>libpq</> function <link
559         linkend="libpq-pqsslAttribute"><function>PQsslAttribute()</></>
560         that returns <acronym>SSL</> information (Heikki Linnakangas)
561        </para>
562
563        <para>
564         While <link linkend="libpq-pqgetssl"><function>PQgetssl()</></>
565         can still be used to call <productname>OpenSSL</>
566         functions, <function>PQsslAttribute()</> returns <acronym>SSL</>
567         information in an <acronym>SSL</>-implementation-independent way.
568         (Future versions of libpq might support other <acronym>SSL</>
569         implementations.)
570        </para>
571       </listitem>
572
573       <listitem>
574 <!--
575 2015-04-09 [8a0d34e4] Peter ..: libpq: Don't overwrite existing OpenSSL thread..
576 -->
577        <para>
578         Make <application>libpq</> honor any <productname>OpenSSL</>
579         thread callbacks (Jan Urbanski)
580        </para>
581
582        <para>
583         Previously they were overwritten.
584        </para>
585       </listitem>
586
587      </itemizedlist>
588
589     </sect4>
590
591     <sect4>
592      <title>Server Settings</title>
593
594      <itemizedlist>
595
596       <listitem>
597 <!--
598 2015-02-23 [88e9823] Heikki..: Replace checkpoint_segments with min_wal_size a..
599 2015-03-15 [a0f5954] Andres..: Increase max_wal_size's default from 128MB to 1..
600 2015-06-29 [d661532] Heikki..: Also trigger restartpoints based on max_wal_siz..
601 FIXME: Add docs about restartpoint behaviour change
602 -->
603        <para>
604         Replace configuration parameter <varname>checkpoint_segments</>
605         with <xref linkend="guc-min-wal-size">
606         and <xref linkend="guc-max-wal-size"> (Heikki Linnakangas)
607        </para>
608
609        <para>
610         This allows the allocation of a large number of <acronym>WAL</> files
611         without keeping them if they are not needed. Thus the default
612         for <xref linkend="guc-max-wal-size"> has been increased
613         to <literal>1GB</>.
614        </para>
615       </listitem>
616
617       <listitem>
618 <!--
619 2015-03-11 [57aa5b2] Fujii ..: Add GUC to enable compression of full page imag..
620 -->
621        <para>
622         Add configuration parameter <xref linkend="guc-wal-compression"> to
623         control compression of full page images stored in <acronym>WAL</>
624         (Rahila Syed, Michael Paquier)
625        </para>
626       </listitem>
627
628       <listitem>
629 <!--
630 2014-12-03 [73c986a] Alvaro..: Keep track of transaction commit timestamps
631 -->
632        <para>
633         Allow recording of transaction
634         commit timestamps when configuration parameter <xref
635         linkend="guc-track-commit-timestamp">
636         is enabled (&Aacute;lvaro Herrera, Petr Jel&iacute;nek)
637        </para>
638
639        <para>
640         Timestamp information can be accessed using functions <link
641         linkend="functions-commit-timestamp"><function>pg_xact_commit_timestamp()</></>
642         and <function>pg_last_committed_xact()</>.
643        </para>
644       </listitem>
645
646       <listitem>
647 <!--
648 2014-12-22 [584e35d] Peter ..: Change local_preload_libraries to PGC_USERSET
649 -->
650        <para>
651         Allow <xref linkend="guc-local-preload-libraries"> to be set
652         by <command>ALTER ROLE SET</> (Peter Eisentraut, Kyotaro Horiguchi)
653        </para>
654       </listitem>
655
656       <listitem>
657 <!--
658 2015-04-03 [a75fb9b] Alvaro..: Have autovacuum workers listen to SIGHUP, too
659 -->
660        <para>
661         Allow running <link linkend="autovacuum">autovacuum workers</>
662         to respond to configuration parameter changes (Michael Paquier)
663        </para>
664       </listitem>
665
666       <listitem>
667 <!--
668 2014-06-20 [3bdcf6a] Andres..: Don't allow to disable backend assertions via t..
669 -->
670        <para>
671         Make configuration parameter <xref linkend="guc-debug-assertions">
672         read-only (Andres Freund)
673        </para>
674
675        <para>
676         This means that assertions can no longer be turned
677         off if they were enabled at compile time, allowing for more
678         efficient code optimization.  This change also removed the <link
679         linkend="app-postgres-options">postgres</> <option>-A</> option.
680        </para>
681       </listitem>
682
683       <listitem>
684 <!--
685 2014-10-18 [7feaccc] Peter ..: Allow setting effective_io_concurrency even on..
686 -->
687        <para>
688         Allow setting <xref linkend="guc-effective-io-concurrency"> on
689         systems where it has no effect (Peter Eisentraut)
690        </para>
691       </listitem>
692
693       <listitem>
694 <!--
695 2014-06-18 [df8b7bc] Tom Lane: Improve our mechanism for controlling the Linux..
696 -->
697        <para>
698         Add environment variables <link
699         linkend="linux-memory-overcommit"><envar>PG_OOM_ADJUST_FILE</></>
700         and <link
701         linkend="linux-memory-overcommit"><envar>PG_OOM_ADJUST_VALUE</></>
702         to help control the Linux <acronym>OOM</> killer (Gurjeet Singh)
703        </para>
704
705        <para>
706         The previous <acronym>OOM</> control infrastructure involved a
707         compile-time option.
708        </para>
709       </listitem>
710
711       <listitem>
712 <!--
713 2015-05-08 [a97e0c3] Stephe..: Add pg_file_settings view and function
714 2015-06-28 [62d16c7] Tom Lane: Improve design and implementation of pg_file_se..
715 -->
716        <para>
717         Add system view <link
718         linkend="view-pg-file-settings"><structname>pg_file_settings</></>
719         to show the contents of the server's configuration files
720         (Sawada Masahiko)
721        </para>
722       </listitem>
723
724       <listitem>
725 <!--
726 2015-05-14 [a486e35] Peter ..: Add pg_settings.pending_restart column
727 -->
728        <para>
729         Add <structname>pending_restart</> to the system view <link
730         linkend="view-pg-settings"><structname>pg_settings</></> to
731         indicate a change is pending a restart (Peter Eisentraut)
732        </para>
733       </listitem>
734
735       <listitem>
736 <!--
737 2014-09-02 [bd3b7a9] Fujii ..: Support ALTER SYSTEM RESET command.
738 -->
739        <para>
740         Allow <link linkend="SQL-ALTERSYSTEM"><command>ALTER SYSTEM</></>
741         values to be reset with <command>ALTER SYSTEM RESET</> (Vik
742         Fearing)
743        </para>
744
745        <para>
746         This command removes the setting from <filename>postgresql.auto.conf</>.
747        </para>
748       </listitem>
749
750      </itemizedlist>
751
752     </sect4>
753
754    </sect3>
755
756    <sect3>
757     <title>Replication and Recovery</title>
758
759      <itemizedlist>
760
761       <listitem>
762 <!--
763 2014-11-25 [aedccb1] Simon ..: action_at_recovery_target recovery config option
764 2014-12-07 [b8e33a8] Simon ..: Tweaks for recovery_target_action
765 2015-03-15 [51c11a7] Andres..: Remove pause_at_recovery_target recovery.conf s..
766 -->
767        <para>
768         Add <link linkend="recovery-config"><filename>recovery.conf</></>
769         parameter <link
770         linkend="recovery-target-action"><varname>recovery_target_action</></>
771         to control post-recovery activity (Petr Jel&iacute;nek)
772        </para>
773
774        <para>
775         This replaces the old parameter <varname>pause_at_recovery_target</>.
776        </para>
777       </listitem>
778
779       <listitem>
780 <!--
781 2015-05-15 [ffd3774] Heikki..: Add archive_mode='always' option.
782 -->
783        <para>
784         Add new <xref linkend="guc-archive-mode"> value
785         <literal>always</> to allow standbys to always archive received
786         <acronym>WAL</> files (Fujii Masao)
787        </para>
788       </listitem>
789
790       <listitem>
791 <!--
792 2015-02-23 [5d2b45e] Fujii ..: Add GUC to control the time to wait before retr..
793 -->
794        <para>
795         Add configuration
796         parameter <xref linkend="guc-wal-retrieve-retry-interval"> to
797         control <acronym>WAL</> read retry after failure
798         (Alexey Vasiliev, Michael Paquier)
799        </para>
800
801        <para>
802         This is particularly helpful for warm standbys.
803        </para>
804       </listitem>
805
806       <listitem>
807 <!--
808 2015-05-08 [de76884] Heikki..: At promotion, archive last segment from old tim..
809 -->
810        <para>
811         Archive <acronym>WAL</> files with suffix <literal>.partial</>
812         during standby promotion (Heikki Linnakangas)
813        </para>
814       </listitem>
815
816       <listitem>
817 <!--
818 2014-09-13 [4ad2a54] Fujii ..: Add GUC to enable logging of replication comman..
819 -->
820        <para>
821         Add configuration parameter <xref
822         linkend="guc-log-replication-commands">
823         to log replication commands (Fujii Masao)
824        </para>
825
826        <para>
827         By default, replication commands, e.g. <link
828         linkend="protocol-replication"><literal>IDENTIFY_SYSTEM</></>,
829         are not logged, even when <xref linkend="guc-log-statement"> is set
830         to <literal>all</>.
831        </para>
832       </listitem>
833
834       <listitem>
835 <!--
836 2015-04-29 [5aa2350] Andres..: Introduce replication progress tracking infrast..
837 2015-03-15 [4f1b890] Andres..: Merge the various forms of transaction commit &..
838 FIXME: Correct description
839 -->
840        <para>
841         Allow <link linkend="pg-replication-origin-create">labeling</> of
842         the origin progress of logical replication changes (Andres Freund)
843        </para>
844
845        <para>
846         This is helpful when implementing replication solutions.
847        </para>
848       </listitem>
849
850       <listitem>
851 <!--
852 2015-04-21 [d811c03] Andres..: Add 'active_in' column to pg_replication_slots.
853 2015-04-21 [d811c03] Andres..: Add 'active_in' column to pg_replication_slots.
854 -->
855        <para>
856         Report the processes holding replication slots in <link
857         linkend="catalog-pg-replication-slots"><structname>pg_replication_slots</></>
858         (Craig Ringer)
859        </para>
860
861        <para>
862         The new output column is <structname>active_pid</>.
863        </para>
864       </listitem>
865
866       <listitem>
867 <!--
868 2014-11-25 [b3fc672] Heikki..: Allow using connection URI in primary_conninfo.
869 -->
870        <para>
871         Allow <filename>recovery.conf</>'s <link
872         linkend="primary-conninfo"><varname>primary_conninfo</></> to
873         use connection <acronym>URI</>s, e.g. <literal>postgres://</>
874         (Alexander Shulgin)
875        </para>
876       </listitem>
877
878      </itemizedlist>
879
880    </sect3>
881
882    <sect3>
883     <title>Queries</title>
884
885      <itemizedlist>
886
887       <listitem>
888 <!--
889 2015-05-08 [168d580] Andres..: Add support for INSERT ... ON CONFLICT DO NOTHI..
890 2015-05-08 [2c8f483] Andres..: Represent columns requiring insert and update p..
891 -->
892        <para>
893         Allow <link linkend="sql-on-conflict"><command>INSERTS</></>
894         that would generate constraint conflicts to be turned into
895         <command>UPDATE</>s or ignored (Peter Geoghegan, Heikki
896         Linnakangas, Andres Freund)
897        </para>
898
899        <para>
900         The syntax is <command>INSERT ... ON CONFLICT DO NOTHING/UPDATE</>.
901         This is the Postgres implementation of the popular
902         <command>UPSERT</> command.
903        </para>
904       </listitem>
905
906       <listitem>
907 <!--
908 2015-05-16 [f3d3118] Andres..: Support GROUPING SETS, CUBE and ROLLUP.
909 -->
910        <para>
911         Add <literal>GROUP BY</> analysis functions <link
912         linkend="queries-grouping-sets"><literal>GROUPING SETS</></>,
913         <link linkend="queries-grouping-sets"><literal>CUBE</></> and
914         <link linkend="queries-grouping-sets"><literal>ROLLUP</></>
915         (Andrew Gierth, Atri Sharma)
916        </para>
917       </listitem>
918
919       <listitem>
920 <!--
921 2014-06-18 [8f889b1] Tom Lane: Implement UPDATE tab SET (col1,col2,...) = (SEL..
922 -->
923        <para>
924         Allow to set multiple columns in
925         an <link linkend="SQL-UPDATE"><command>UPDATE</></> to the result of a
926         single subselect (Tom Lane)
927        </para>
928
929        <para>
930         This is accomplished using the syntax <command>UPDATE tab SET
931         (col1, col2, ...) = (SELECT ...)</>.
932        </para>
933       </listitem>
934
935       <listitem>
936 <!--
937 2014-10-07 [df630b0] Alvaro..: Implement SKIP LOCKED for row-level locks
938 -->
939        <para>
940         Add new <link linkend="SQL-SELECT"><command>SELECT</></> option
941         <literal>SKIP LOCKED</> to skip locked rows (Thomas Munro)
942        </para>
943
944        <para>
945         This does not throw an error for locked rows like
946         <literal>NOWAIT</> does.
947        </para>
948       </listitem>
949
950       <listitem>
951 <!--
952 2015-05-15 [f6d208d] Simon ..: TABLESAMPLE, SQL Standard and extensible
953 -->
954        <para>
955         Add <link linkend="SQL-SELECT"><command>SELECT</></> option
956         <literal>TABLESAMPLE</> to return a subset of a table (Petr
957         Jel&iacute;nek)
958        </para>
959       </listitem>
960
961       <listitem>
962 <!--
963 2015-03-11 [e529cd4] Robert..: Suggest to the user the column they may have m..
964 -->
965        <para>
966         Suggest possible matches for mistyped column names (Peter
967         Geoghegan, Robert Haas)
968        </para>
969       </listitem>
970
971      </itemizedlist>
972
973    </sect3>
974
975    <sect3>
976     <title>Utility Commands</title>
977
978      <itemizedlist>
979
980       <listitem>
981 <!--
982 2015-01-16 [20af53d] Tom Lane: Show sort ordering options in EXPLAIN output.
983 -->
984        <para>
985         Add more details about sort ordering in <link
986         linkend="SQL-EXPLAIN"><command>EXPLAIN</></> output (Marius Timmer,
987         Lukas Kreft, Arne Scheffer)
988        </para>
989
990        <para>
991         Details include <literal>COLLATE</>, <literal>DESC</>,
992         <literal>USING</>, and <literal>NULLS FIRST</><literal>/LAST</>.
993        </para>
994       </listitem>
995
996       <listitem>
997 <!--
998 2014-12-18 [35192f0] Alvaro..: Have VACUUM log number of skipped pages due to ..
999 -->
1000        <para>
1001         Have <link linkend="SQL-VACUUM"><command>VACUUM</></> log the
1002         number of pages skipped due to pins (Jim Nasby)
1003        </para>
1004       </listitem>
1005
1006       <listitem>
1007 <!--
1008 2015-02-20 [d42358e] Alvaro..: Have TRUNCATE update pgstat tuple counters
1009 -->
1010        <para>
1011         Have <link linkend="SQL-TRUNCATE"><command>TRUNCATE</></> properly
1012         update the <literal>pg_stat</>* tuple counters (Alexander Shulgin)
1013        </para>
1014       </listitem>
1015
1016        </itemizedlist>
1017
1018        <sect4>
1019         <title><xref linkend="SQL-REINDEX"></title>
1020
1021         <itemizedlist>
1022
1023       <listitem>
1024 <!--
1025 2014-12-09 [fe263d1] Simon ..: REINDEX SCHEMA
1026 -->
1027        <para>
1028         Allow <command>REINDEX</> to reindex an entire schema using the
1029         <literal>SCHEMA</> option (Sawada Masahiko)
1030        </para>
1031       </listitem>
1032
1033       <listitem>
1034 <!--
1035 2015-05-15 [ecd222e] Fujii ..: Support VERBOSE option in REINDEX command.
1036 -->
1037        <para>
1038         Add <literal>VERBOSE</> option to <command>REINDEX</> (Sawada
1039         Masahiko)
1040        </para>
1041       </listitem>
1042
1043       <listitem>
1044 <!--
1045 2014-12-09 [ae4e688] Simon ..: Silence REINDEX
1046 -->
1047        <para>
1048         Prevent <command>REINDEX DATABASE</> and <command>SCHEMA</>
1049         from outputting object names, unless <literal>VERBOSE</> is used
1050         (Simon Riggs)
1051        </para>
1052       </listitem>
1053
1054       <listitem>
1055 <!--
1056 2015-04-09 [17d436d] Fujii ..: Remove obsolete FORCE option from REINDEX.
1057 -->
1058        <para>
1059         Remove obsolete <literal>FORCE</> option from <command>REINDEX</>
1060         (Fujii Masao)
1061        </para>
1062       </listitem>
1063
1064       </itemizedlist>
1065
1066      </sect4>
1067    </sect3>
1068
1069    <sect3>
1070     <title>Object Manipulation</title>
1071
1072      <itemizedlist>
1073
1074       <listitem>
1075 <!--
1076 2014-09-19 [491c029] Stephe..: Row-Level Security Policies (RLS)
1077 -->
1078        <para>
1079         Add row-level security control (Craig Ringer, KaiGai Kohei,
1080         Adam Brightwell, Dean Rasheed, Stephen Frost)
1081        </para>
1082
1083        <para>
1084         This controls viewing and adding/modifying rows via new commands
1085         <link linkend="SQL-CREATEPOLICY"><command>CREATE</></>/<link
1086         linkend="SQL-ALTERPOLICY"><command>ALTER</></>/<link
1087         linkend="SQL-DROPPOLICY"><command>DROP POLICY</></> and <link
1088         linkend="SQL-ALTERTABLE"><command>ALTER TABLE ... ENABLE/DISABLE
1089         ROW SECURITY</></>.
1090        </para>
1091       </listitem>
1092
1093       <listitem>
1094 <!--
1095 2014-08-22 [f41872d] Alvaro..: Implement ALTER TABLE .. SET LOGGED / UNLOGGED
1096 -->
1097        <para>
1098         Allow changing of the <acronym>WAL</acronym>
1099         logging status of a table ater creation with <link
1100         linkend="SQL-ALTERTABLE"><command>ALTER TABLE .. SET LOGGED /
1101         UNLOGGED</></> (Fabr&iacute;zio de Royes Mello)
1102        </para>
1103       </listitem>
1104
1105       <listitem>
1106 <!--
1107 2014-08-26 [0076f26] Heikki..: Implement IF NOT EXISTS for CREATE SEQUENCE.
1108 2014-11-06 [08309aa] Fujii ..: Implement IF NOT EXIST for CREATE INDEX.
1109 2014-12-13 [e39b6f9] Andrew..: Add CINE option for CREATE TABLE AS and CREATE ..
1110 -->
1111        <para>
1112         Add <literal>IF NOT EXISTS</> clause to <link
1113         linkend="SQL-CREATETABLEAS"><command>CREATE TABLE AS</></>,
1114         <link linkend="SQL-CREATEINDEX"><command>CREATE INDEX</></>,
1115         <link linkend="SQL-CREATESEQUENCE"><command>CREATE SEQUENCE</></>,
1116         and <link linkend="SQL-CREATEMATERIALIZEDVIEW"><command>CREATE
1117         MATERIALIZED VIEW</></> (Fabr&iacute;zio de Royes Mello)
1118        </para>
1119       </listitem>
1120
1121       <listitem>
1122 <!--
1123 2015-03-24 [1d8198b] Bruce ..: Add support for ALTER TABLE IF EXISTS ... RENAM..
1124 -->
1125        <para>
1126         Add support for <literal>IF EXISTS</> to <link
1127         linkend="SQL-ALTERTABLE"><command>ALTER TABLE ... RENAME
1128         CONSTRAINT</></> (Bruce Momjian)
1129        </para>
1130       </listitem>
1131
1132       <listitem>
1133 <!--
1134 2015-03-09 [31eae60] Alvaro..: Allow CURRENT/SESSION_USER to be used in certai..
1135 -->
1136        <para>
1137         Allow <literal>CURRENT</><literal>/SESSION_USER</> to specify the
1138         current user in some commands (Kyotaro Horiguchi, &Aacute;lvaro
1139         Herrera)
1140        </para>
1141
1142        <para>
1143         Commands include <link linkend="SQL-ALTERUSER"><command>ALTER
1144         USER</></>,
1145        <link linkend="SQL-ALTERGROUP"><command>ALTER
1146         GROUP</></>, <link linkend="SQL-ALTERROLE"><command>ALTER
1147         ROLE</></>, <link linkend="SQL-GRANT"><command>GRANT</></>,
1148         and various <command>ALTER OBJECT / OWNER TO</> commands.
1149        </para>
1150       </listitem>
1151
1152       <listitem>
1153 <!--
1154 2015-06-21 [ad89a5d] Alvaro..: Add transforms to pg_get_object_address and fr..
1155 -->
1156        <para>
1157         Allow comments on <link linkend="SQL-CREATEDOMAIN">domain
1158         constraints</> (&Aacute;lvaro Herrera)
1159        </para>
1160       </listitem>
1161
1162       <listitem>
1163 <!--
1164 2015-04-05 [0ef0396] Simon ..: Reduce lock levels of some trigger DDL and add ..
1165 -->
1166        <para>
1167         Reduce lock levels of some create and alter trigger and foreign
1168         key commands (Simon Riggs, Andreas Karlsson)
1169        </para>
1170       </listitem>
1171
1172       <listitem>
1173 <!--
1174 2015-05-11 [fa26424] Stephe..: Allow LOCK TABLE .. ROW EXCLUSIVE MODE with IN..
1175 -->
1176        <para>
1177         Allow <link linkend="SQL-LOCK"><command>LOCK TABLE .. ROW EXCLUSIVE
1178         MODE</></> for those with <command>INSERT</> privileges (Stephen
1179         Frost)
1180        </para>
1181
1182        <para>
1183         Previously only <command>UPDATE</>, <command>DELETE</>, and
1184         <command>TRUNCATE</> privileges allowed this.
1185        </para>
1186       </listitem>
1187
1188       <listitem>
1189 <!--
1190 2015-03-23 [e5f455f] Tom Lane: Apply table and domain CHECK constraints in nam.
1191 -->
1192        <para>
1193         Apply table and domain <literal>CHECK</> constraints in name order
1194         (Tom Lane)
1195        </para>
1196
1197        <para>
1198         The previous order was indeterminate.
1199        </para>
1200       </listitem>
1201
1202       <listitem>
1203 <!--
1204 2014-07-01 [15c82ef] Tom Lane: Refactor CREATE/ALTER DATABASE syntax so option..
1205 2014-07-01 [fbb1d7d] Tom Lane: Allow CREATE/ALTER DATABASE to manipulate datis..
1206 -->
1207        <para>
1208         Allow <link
1209         linkend="SQL-CREATEDATABASE"><command>CREATE</></>/<link
1210         linkend="SQL-ALTERDATABASE"><command>ALTER DATABASE</></>
1211         to manipulate <structname>datistemplate</> and
1212         <structname>datallowconn</> (Vik Fearing)
1213        </para>
1214
1215        <para>
1216         This allows these database settings to be
1217         changed more easily than modifying the <link
1218         linkend="catalog-pg-database"><structname>pg_database</></>
1219         system table.
1220        </para>
1221       </listitem>
1222
1223      </itemizedlist>
1224
1225      <sect4>
1226       <title><xref linkend="SQL-CREATEFOREIGNDATAWRAPPER"></title>
1227
1228       <itemizedlist>
1229
1230       <listitem>
1231 <!--
1232 2014-07-10 [59efda3] Tom Lane: Implement IMPORT FOREIGN SCHEMA.
1233 -->
1234        <para>
1235         Add support for <link
1236         linkend="SQL-IMPORTFOREIGNSCHEMA"><command>IMPORT FOREIGN
1237         SCHEMA</></> (Ronan Dunklau, Michael Paquier, Tom Lane)
1238        </para>
1239
1240        <para>
1241         This command allows automatic creation of local foreign tables
1242         that match the structure of existing tables on a remote server.
1243        </para>
1244       </listitem>
1245
1246       <listitem>
1247 <!--
1248 2015-03-22 [cb1ca4d] Tom Lane: Allow foreign tables to participate in inherita..
1249 -->
1250        <para>
1251         Allow foreign tables to participate in inheritance (Shigeru Hanada,
1252         Etsuro Fujita)
1253        </para>
1254
1255        <para>
1256         This also allows foreign tables to mark check constraints as not
1257         valid, and to set storage and <type>OID</> characteristics.
1258        </para>
1259       </listitem>
1260
1261       <listitem>
1262 <!--
1263 2014-12-17 [fc2ac1f] Tom Lane: Allow CHECK constraints to be placed on foreign..
1264 -->
1265        <para>
1266         Allow <literal>CHECK</> constraints to be placed on foreign tables
1267         (Shigeru Hanada, Etsuro Fujita)
1268        </para>
1269
1270        <para>
1271         These constraints are assumed to be enforced on the remote server,
1272         and are not enforced locally.  However, they are assumed to hold for
1273         purposes of query optimization, such
1274         as <link linkend="ddl-partitioning-constraint-exclusion">constraint
1275         exclusion</>.
1276        </para>
1277       </listitem>
1278
1279       <listitem>
1280 <!--
1281 2015-05-01 [e7cb7ee] Robert..: Allow FDWs and custom scan providers to replace..
1282 2015-05-10 [1a8a4e5] Tom Lane: Code review for foreign/custom join pushdown pa..
1283 -->
1284        <para>
1285         Allow foreign data wrappers and custom scans to implement join
1286         pushdown (KaiGai Kohei)
1287        </para>
1288       </listitem>
1289
1290      </itemizedlist>
1291
1292      </sect4>
1293
1294      <sect4>
1295       <title><xref linkend="SQL-CREATEEVENTTRIGGER"></title>
1296
1297       <itemizedlist>
1298
1299        <listitem>
1300 <!--
1301 2015-05-11 [b488c58] Alvaro..: Allow on-the-fly capture of DDL event details
1302 FIXME: Better description?
1303 -->
1304         <para>
1305          Add a set-returning function <link
1306          linkend="pg-event-trigger-ddl-command-end-functions"><function>pg_event_trigger_ddl_commands()</></>, which returns <acronym>DDL</> activity
1307          associated with event triggers (&Aacute;lvaro Herrera)
1308         </para>
1309        </listitem>
1310
1311        <listitem>
1312 <!--
1313 2014-12-08 [618c943] Simon ..: Event Trigger for table_rewrite
1314 -->
1315         <para>
1316          Allow event triggers on table rewrites caused by <link
1317          linkend="SQL-ALTERTABLE"><command>ALTER TABLE</></> (Dimitri
1318          Fontaine)
1319         </para>
1320        </listitem>
1321
1322        <listitem>
1323 <!--
1324 2015-02-23 [296f3a6] Alvaro..: Support more commands in event triggers
1325 -->
1326         <para>
1327          Add event trigger support for database-level <link
1328          linkend="SQL-COMMENT"><command>COMMENT</></>, <link
1329          linkend="SQL-SECURITY-LABEL"><command>SECURITY LABEL</></>,
1330          and <link linkend="SQL-GRANT"><command>GRANT</></>/<link
1331          linkend="SQL-REVOKE"><command>REVOKE</></> (&Aacute;lvaro Herrera)
1332         </para>
1333        </listitem>
1334
1335        <listitem>
1336 <!--
1337 2014-12-30 [72dd233] Alvaro..: pg_event_trigger_dropped_objects: Add name/args..
1338 2015-04-06 [e9a077c] Alvaro..: pg_event_trigger_dropped_objects: add is_temp c..
1339 -->
1340         <para>
1341          Add columns to the output of <link
1342          linkend="pg-event-trigger-sql-drop-functions"><function>pg_event_trigger_dropped_objects</></>
1343          (&Aacute;lvaro Herrera)
1344         </para>
1345
1346         <para>
1347          This allows simpler processing of delete operations.
1348         </para>
1349        </listitem>
1350
1351       </itemizedlist>
1352
1353      </sect4>
1354
1355    </sect3>
1356
1357    <sect3>
1358     <title>Data Types</title>
1359
1360     <itemizedlist>
1361
1362      <listitem>
1363 <!--
1364 2014-09-09 [57b1085] Peter ..: Allow empty content in xml type
1365 -->
1366       <para>
1367        Allow the <link linkend="datatype-xml"><type>XML</></> data type
1368        to accept empty or all-whitespace values (Peter Eisentraut)
1369       </para>
1370
1371       <para>
1372        This is required by the <acronym>SQL</>/<acronym>XML</>
1373        specification.
1374       </para>
1375      </listitem>
1376
1377      <listitem>
1378 <!--
1379 2015-01-06 [79af9a1] Peter ..: Fix namespace handling in xpath function
1380 -->
1381       <para>
1382        Fix <type>XML</> <link
1383        linkend="functions-xml-processing"><function>xpath()</></> handling
1384        to return namespace declarations even if the namespace is in a
1385        parent element (Ali Akbar)
1386       </para>
1387
1388       <para>
1389        Previously the namespace was not returned, potentially leading to
1390        invalid <type>XML</>.
1391       </para>
1392      </listitem>
1393
1394      <listitem>
1395 <!--
1396 2014-10-21 [6f04368] Peter ..: Allow input format xxxx-xxxx-xxxx for macaddr ..
1397 -->
1398       <para>
1399        Allow <link linkend="datatype-macaddr"><type>MACADDR</></> input
1400        using the format <literal>xxxx-xxxx-xxxx</> (Herwin Weststrate)
1401       </para>
1402      </listitem>
1403
1404      <listitem>
1405 <!--
1406 2014-10-18 [417f924] Bruce ..: interval:  tighten precision specification
1407 FIXME: Add more specifics?
1408 -->
1409       <para>
1410        Tighten syntax of <link
1411        linkend="datatype-interval-input"><type>INTERVAL</></> precision
1412        specifications (Bruce Momjian)
1413       </para>
1414
1415       <para>
1416        Only allow interval precision to be specified after the
1417        <literal>INTERVAL</> keyword if no units are specified.
1418       </para>
1419      </listitem>
1420
1421      <listitem>
1422 <!--
1423 2015-04-01 [89840d7] Tom Lane: Provide real selectivity estimators for inet/ci..
1424 -->
1425       <para>
1426        Add selectivity estimators for <link
1427        linkend="datatype-inet"><type>INET</></>/<link
1428        linkend="datatype-cidr"><type>CIDR</></> operators and improve
1429        estimators for text search functions (Emre Hasegeli, Tom Lane)
1430       </para>
1431      </listitem>
1432
1433     </itemizedlist>
1434
1435     <sect4>
1436      <title><link linkend="datatype-json"><acronym>JSON</></link></title>
1437
1438      <itemizedlist>
1439
1440       <listitem>
1441 <!--
1442 2015-05-12 [c694701] Andrew..: Additional functions and operators for jsonb
1443 2015-05-31 [37def42] Andrew..: Rename jsonb_replace to jsonb_set and allow it ..
1444 -->
1445        <para>
1446         Add <type>JSONB</> functions <link
1447         linkend="functions-json-processing-table"><function>jsonb_set()</></>
1448         and <link
1449         linkend="functions-json-processing-table"><function>jsonb_pretty()</></>
1450         (Dmitry Dolgov, Andrew Dunstan, Petr Jel&iacute;nek)
1451        </para>
1452       </listitem>
1453
1454       <listitem>
1455 <!--
1456 2014-12-12 [7e354ab] Andrew..: Add several generator functions for jsonb that ..
1457 -->
1458        <para>
1459         Add several generator functions for <type>JSONB</> that already
1460         existed for <type>JSON</> (Andrew Dunstan)
1461        </para>
1462
1463        <para>
1464         These are <link
1465         linkend="functions-json-creation-table"><function>to_jsonb()</></>,
1466         <link
1467         linkend="functions-json-creation-table"><function>jsonb_object()</></>,
1468         <link
1469         linkend="functions-json-creation-table"><function>jsonb_build_object()</></>,
1470         <link
1471         linkend="functions-json-creation-table"><function>jsonb_build_array()</></>,
1472         <link
1473         linkend="functions-aggregate-table"><function>jsonb_agg()</></>,
1474         and <link
1475         linkend="functions-aggregate-table"><function>jsonb_object_agg()</></>.
1476        </para>
1477       </listitem>
1478
1479       <listitem>
1480 <!--
1481 2015-03-03 [b67f1ce] Tom Lane: Reduce json <=> jsonb casts from explicit-only..
1482 -->
1483        <para>
1484         Reduce casting requirements to/from <link
1485         linkend="datatype-json"><type>JSON</></> and <link
1486         linkend="datatype-json"><type>JSONB</></> (Tom Lane)
1487        </para>
1488       </listitem>
1489
1490       <listitem>
1491 <!--
1492 2015-06-11 [908e234] Andrew..: Rename jsonb - text[] operator to #- to avoid a..
1493 -->
1494        <para>
1495         Allow <type>TEXT</>, <type>TEXT</> array, and <type>INTEGER</>
1496         values to be <link linkend="functions-jsonb-op-table">subtracted</>
1497         from <type>JSONB</> documents (Dmitry Dolgov, Andrew Dunstan)
1498        </para>
1499       </listitem>
1500
1501       <listitem>
1502 <!--
1503 2015-05-12 [c694701] Andrew..: Additional functions and operators for jsonb
1504 -->
1505        <para>
1506         Add <type>JSONB</> <link
1507         linkend="functions-jsonb-op-table">operator</> <literal>||</>
1508         (Dmitry Dolgov, Andrew Dunstan)
1509        </para>
1510       </listitem>
1511
1512       <listitem>
1513 <!--
1514 2014-12-12 [237a882] Andrew..: Add json_strip_nulls and jsonb_strip_nulls fun..
1515 -->
1516        <para>
1517         Add <link
1518         linkend="functions-json-processing-table"><function>json_strip_nulls()</></>
1519         and <link
1520         linkend="functions-json-processing-table"><function>jsonb_strip_nulls()</></>
1521         functions to remove <type>JSON</> null values from documents
1522         (Andrew Dunstan)
1523        </para>
1524       </listitem>
1525
1526      </itemizedlist>
1527
1528     </sect4>
1529
1530    </sect3>
1531
1532    <sect3>
1533     <title>Functions</title>
1534
1535      <itemizedlist>
1536
1537       <listitem>
1538 <!--
1539 2014-11-11 [1871c89] Fujii ..: Add generate_series(numeric, numeric).
1540 -->
1541        <para>
1542         Add <link linkend="functions-srf"><function>generate_series()</></>
1543         for <type>NUMERIC</> values (Plato Malugin)
1544        </para>
1545       </listitem>
1546
1547       <listitem>
1548 <!--
1549 2014-11-25 [bac2739] Tom Lane: Support arrays as input to array_agg() and ARRA..
1550 -->
1551        <para>
1552         Allow <link
1553         linkend="functions-aggregate-table"><function>array_agg()</></> and
1554         <function>ARRAY()</> to take arrays as inputs (Ali Akbar, Tom Lane)
1555        </para>
1556       </listitem>
1557
1558       <listitem>
1559 <!--
1560 2015-03-18 [13dbc7a] Alvaro..: array_offset() and array_offsets()
1561 2015-03-30 [97690ea] Alvaro..: Change array_offset to return subscripts, not o..
1562 -->
1563        <para>
1564         Add functions <link
1565         linkend="array-functions-table"><function>array_position()</></>
1566         and <link
1567         linkend="array-functions-table"><function>array_positions()</></>
1568         to return subscripts of array values (Pavel Stehule)
1569        </para>
1570       </listitem>
1571
1572       <listitem>
1573 <!--
1574 2014-12-15 [4520ba6] Heikki..: Add point <-> polygon distance operator.
1575 -->
1576        <para>
1577         Add <link
1578         linkend="gist-builtin-opclasses-table"><type>point</>-to-<type>polygon</></>
1579         distance operator (&lt;-&gt;) (Alexander Korotkov)
1580        </para>
1581       </listitem>
1582
1583       <listitem>
1584 <!--
1585 2014-08-27 [8167a38] Jeff D..: Allow multibyte characters as escape in SIMILA..
1586 -->
1587        <para>
1588         Allow multi-byte characters as escape in <link
1589         linkend="functions-similarto-regexp"><literal>SIMILAR TO</></>
1590         and <link linkend="functions-string-sql"><literal>SUBSTRING</></>
1591         (Jeff Davis)
1592        </para>
1593
1594        <para>
1595         Previously, only a single-byte character was allowed as an escape.
1596        </para>
1597       </listitem>
1598
1599       <listitem>
1600 <!--
1601 2014-09-09 [e80252d] Tom Lane: Add width_bucket(anyelement, anyarray).
1602 -->
1603        <para>
1604         Add a <link
1605         linkend="functions-math-func-table"><function>width_bucket()</></>
1606         variant that supports any sortable data type and non-uniform bucket
1607         widths (Petr Jel&iacute;nek)
1608        </para>
1609       </listitem>
1610
1611       <listitem>
1612 <!--
1613 2015-06-28 [cb2acb1] Heikki..: Add missing_ok option to the SQL functions for..
1614 -->
1615        <para>
1616         Add an optional <replaceable>missing_ok</> argument to <link
1617         linkend="functions-admin-genfile-table"><function>pg_read_file()</></>
1618         and related functions (Michael Paquier, Heikki Linnakangas)
1619        </para>
1620       </listitem>
1621
1622       <listitem>
1623 <!--
1624 2015-03-10 [865f14a] Robert..: Allow named parameters to be specified using =>..
1625 -->
1626        <para>
1627         Allow <link linkend="sql-syntax-calling-funcs"><literal>=&gt;</></>
1628         to specify named parameters in function calls (Pavel Stehule)
1629        </para>
1630
1631        <para>
1632         Previously only <literal>:=</> could be used.  This requires removing
1633         the possibility for <literal>=&gt;</> to be a user-defined operator.
1634         Creation of user-defined <literal>=&gt;</> operators has been issuing
1635         warnings since Postgres 9.0.
1636        </para>
1637       </listitem>
1638
1639       <listitem>
1640 <!--
1641 2015-03-25 [06bf0dd] Tom Lane: Upgrade src/port/rint.c to be POSIX-compliant.
1642 -->
1643        <para>
1644         Add <acronym>POSIX</>-compliant rounding for platforms that use
1645         Postgres-supplied rounding functions (Pedro Gimeno Fortea)
1646        </para>
1647       </listitem>
1648
1649      </itemizedlist>
1650
1651     <sect4>
1652      <title>System Information Functions and Views</title>
1653
1654      <itemizedlist>
1655
1656       <listitem>
1657 <!--
1658 2014-12-23 [d7ee82e] Alvaro..: Add SQL-callable pg_get_object_address
1659 2014-12-30 [a676201] Alvaro..: Add pg_identify_object_as_address
1660 -->
1661        <para>
1662         Add function <link
1663         linkend="functions-info-object-table"><function>pg_get_object_address()</></>
1664         to return <type>OID</>s that uniquely
1665         identify an object, and function <link
1666         linkend="functions-info-object-table"><function>pg_identify_object_as_address()</></>
1667         to return object information based on <type>OID</>s (&Aacute;lvaro
1668         Herrera)
1669        </para>
1670       </listitem>
1671
1672       <listitem>
1673 <!--
1674 2015-03-19 [bf03889] Stephe..: GetUserId() changes to has_privs_of_role()
1675 -->
1676        <para>
1677         Loosen security checks for viewing queries in <link
1678         linkend="pg-stat-activity-view"><structname>pg_stat_activity</></>,
1679         executing <link
1680         linkend="functions-admin-signal-table"><function>pg_cancel_backend()</></>,
1681         and executing <link
1682         linkend="functions-admin-signal-table"><function>pg_terminate_backend()</></>
1683         (Stephen Frost)
1684        </para>
1685
1686        <para>
1687         Now, role membership is sufficient; previously only the same
1688         role could perform these operations.
1689        </para>
1690       </listitem>
1691
1692       <listitem>
1693 <!--
1694 2015-02-19 [2fb7a75] Tom Lane: Add pg_stat_get_snapshot_timestamp() to show s..
1695 -->
1696        <para>
1697         Add <link
1698         linkend="monitoring-stats-funcs-table"><function>pg_stat_get_snapshot_timestamp()</></>
1699         to output the timestamp of the statistics snapshot (Matt Kelly)
1700        </para>
1701
1702        <para>
1703         This represents the last time the snapshot files was written to
1704         the file system.
1705        </para>
1706       </listitem>
1707
1708       <listitem>
1709 <!--
1710 2014-09-10 [36ad1a8] Bruce ..: Implement mxid_age() to compute multi-xid age
1711 -->
1712        <para>
1713         Add <link
1714         linkend="vacuum-for-multixact-wraparound"><function>mxid_age()</></>
1715         to compute multi-xid age (Bruce Momjian)
1716        </para>
1717       </listitem>
1718
1719       <listitem>
1720 <!--
1721 2015-05-09 [0c90f67] Andrew..: Add new OID alias type regrole
1722 2015-05-09 [cb9fa80] Andrew..: Add new OID alias type regnamespace
1723 -->
1724        <para>
1725         Add data types <link
1726         linkend="datatype-oid-table"><type>regrole</> <type>regnamespace</></> that returns
1727         the <type>OID</> of a role (Kyotaro Horiguchi)
1728        </para>
1729       </listitem>
1730      </itemizedlist>
1731
1732     </sect4>
1733
1734     <sect4>
1735      <title>Aggregates</title>
1736
1737      <itemizedlist>
1738
1739       <listitem>
1740 <!--
1741 2014-08-28 [6c40f83] Tom Lane: Add min and max aggregates for inet/cidr data t..
1742 -->
1743        <para>
1744         Add <function>MIN()</>/<function>MAX()</> aggregates
1745         for <link linkend="datatype-inet"><type>INET</></>/<link
1746         linkend="datatype-cidr"><type>CIDR</></> data types (Haribabu
1747         Kommi)
1748        </para>
1749       </listitem>
1750
1751       <listitem>
1752 <!--
1753 2015-03-20 [8122e14] Andres..: Add, optional, support for 128bit integers.
1754 2015-03-20 [959277a] Andres..: Use 128-bit math to accelerate some aggregation..
1755 -->
1756        <para>
1757         Use 128-bit integers, where supported, as aggregate accumulators
1758         (Andreas Karlsson)
1759        </para>
1760       </listitem>
1761
1762      </itemizedlist>
1763
1764     </sect4>
1765
1766    </sect3>
1767
1768    <sect3>
1769     <title>Server-Side Languages</title>
1770
1771     <itemizedlist>
1772
1773      <listitem>
1774 <!--
1775 2014-07-03 [8b6010b] Tom Lane: Improve support for composite types in PL/Python.
1776 -->
1777       <para>
1778        Improve support for composite types in <link
1779        linkend="plpython"><application>PL/Python</></> (Ed Behn, Ronan
1780        Dunklau)
1781       </para>
1782
1783       <para>
1784        This allows <application>PL/Python</> functions to return arrays
1785        of composite types.
1786       </para>
1787      </listitem>
1788
1789      <listitem>
1790 <!--
1791 2015-03-11 [1ce7a57] Peter ..: PL/Python: Avoid lossiness in float conversion
1792 -->
1793       <para>
1794        Reduce lossiness of <link
1795        linkend="plpython"><application>PL/Python</></> floating value
1796        conversions (Marko Kreen)
1797       </para>
1798      </listitem>
1799
1800      <listitem>
1801 <!--
1802 2015-04-26 [cac7658] Peter ..: Add transforms feature
1803 -->
1804       <para>
1805        Allow specification of conversion routines between <acronym>SQL</>
1806        data types and data types of procedural languages (Peter Eisentraut)
1807       </para>
1808
1809       <para>
1810        This change adds new commands <link
1811        linkend="SQL-CREATETRANSFORM"><command>CREATE</></>/<link
1812        linkend="SQL-DROPTRANSFORM"><command>DROP TRANSFORM</></>.
1813        This also adds optional transformations between the <link
1814        linkend="hstore"><application>hstore</></> and <link
1815        linkend="ltree"><application>ltree</></> types to/from <link
1816        linkend="plperl"><application>PL/Perl</></> and <link
1817        linkend="plpython"><application>PL/Python</></>.
1818       </para>
1819      </listitem>
1820
1821      </itemizedlist>
1822
1823      <sect4>
1824       <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
1825
1826       <itemizedlist>
1827
1828      <listitem>
1829 <!--
1830 2015-05-14 [1dc5ebc] Tom Lane: Support "expanded" objects, particularly arrays..
1831 2015-02-16 [e983c4d] Tom Lane: Rationalize the APIs of array element/slice acc..
1832 2015-02-18 [56a79a8] Tom Lane: Split array_push into separate array_append and..
1833 2015-02-16 [9e3ad1a] Tom Lane: Use fast path in plpgsql's RETURN/RETURN NEXT i..
1834 -->
1835       <para>
1836        Improve <link linkend="plpgsql"><application>PL/pgSQL</></> array
1837        performance (Tom Lane)
1838       </para>
1839      </listitem>
1840
1841      <listitem>
1842 <!--
1843 2015-03-25 [a4847fc] Tom Lane: Add an ASSERT statement in plpgsql.
1844 -->
1845       <para>
1846        Add <link linkend="plpgsql-statements-assert"><command>ASSERT</></>
1847        statement in <application>PL/pgSQL</> (Pavel Stehule)
1848       </para>
1849      </listitem>
1850
1851      <listitem>
1852 <!--
1853 2014-11-25 [bb1b8f6] Tom Lane: De-reserve most statement-introducing keywords ..
1854 -->
1855       <para>
1856        Allow more <link linkend="plpgsql"><application>PL/pgSQL</></>
1857        keywords to be used as identifiers (Tom Lane)
1858       </para>
1859      </listitem>
1860
1861     </itemizedlist>
1862
1863     </sect4>
1864
1865    </sect3>
1866
1867    <sect3>
1868     <title>Client Applications</title>
1869
1870     <itemizedlist>
1871
1872      <listitem>
1873 <!--
1874 2015-04-11 [83aca89] Peter ..: Move pg_archivecleanup from contrib/ to src/bin/
1875 2015-04-19 [00882d9] Peter ..: Move pg_test_fsync from contrib/ to src/bin/
1876 2015-04-20 [528c2e4] Peter ..: Move pg_test_timing from contrib/ to src/bin/
1877 2015-04-21 [b0a738f] Peter ..: Move pg_xlogdump from contrib/ to src/bin/
1878 -->
1879       <para>
1880        Move <link
1881        linkend="pgarchivecleanup"><application>pg_archivecleanup</></>,
1882        <link linkend="pgtestfsync"><application>pg_test_fsync</></>,
1883        <link linkend="pgtesttiming"><application>pg_test_timing</></>,
1884        and <link linkend="pgxlogdump"><application>pg_xlogdump</></>
1885        from <filename>contrib</> to <filename>src/bin</> (Peter Eisentraut)
1886       </para>
1887      </listitem>
1888
1889      <listitem>
1890 <!--
1891 2015-03-23 [61081e7] Heikki..: Add pg_rewind, for re-synchronizing a master se..
1892 -->
1893       <para>
1894        Add <link linkend="app-pgrewind"><application>pg_rewind</></>,
1895        which allows re-synchronizing a master server after failback
1896        (Heikki Linnakangas)
1897       </para>
1898      </listitem>
1899
1900      <listitem>
1901 <!--
1902 2014-10-06 [d9f38c7] Andres..: Add support for managing physical replication s..
1903 -->
1904       <para>
1905        Allow <link
1906        linkend="app-pgreceivexlog"><application>pg_receivexlog</></>
1907        to manage physical replication slots (Michael Paquier)
1908       </para>
1909
1910       <para>
1911        This is controlled via new <option>--create-slot</> and
1912        <option>--drop-slot</> options.
1913       </para>
1914      </listitem>
1915
1916      <listitem>
1917 <!--
1918 2014-11-18 [c4f99d2] Fujii ..: Add &#8211;&#8211;synchronous option to pg_receivexlog, for..
1919 -->
1920       <para>
1921        Allow the <link
1922        linkend="app-pgreceivexlog"><application>pg_receivexlog</></>
1923        to synchronously flush <acronym>WAL</> to storage using
1924        <option>--synchronous</> (Furuya Osamu, Fujii Masao)
1925       </para>
1926
1927       <para>
1928        Without this, <acronym>WAL</> files are fsynced only on close.
1929       </para>
1930      </listitem>
1931
1932      <listitem>
1933 <!--
1934 2015-01-23 [a179232] Alvaro..: vacuumdb: enable parallel mode
1935 -->
1936       <para>
1937        Allow <link linkend="APP-VACUUMDB"><application>vacuumdb</></> to
1938        vacuum in parallel using <option>--jobs</> (Dilip Kumar)
1939       </para>
1940      </listitem>
1941
1942      <listitem>
1943 <!--
1944 2015-05-15 [458a077] Fujii ..: Support &#8211;&#8211;verbose option in reindexdb.
1945 -->
1946       <para>
1947        Add <option>--verbose</> option to <link
1948        linkend="APP-REINDEXDB"><application>reindexdb</></> (Sawada
1949        Masahiko)
1950       </para>
1951      </listitem>
1952
1953      <listitem>
1954 <!--
1955 2015-05-12 [72d422a] Andrew..: Map basebackup tablespaces using a tablespace_..
1956 -->
1957       <para>
1958        Make <link linkend="app-pgbasebackup"><application>pg_basebackup</></>
1959        use a tablespace mapping file when using <application>tar</> format,
1960        to support symbolic links and file paths of 100+ characters in length
1961        on <systemitem class="osname">MS Windows</> (Amit Kapila)
1962       </para>
1963      </listitem>
1964
1965      <listitem>
1966 <!--
1967 2014-09-19 [728f152] Andres..: Add rmgr callback to name xlog record types for..
1968 2014-09-19 [bdd5726] Andres..: Add the capability to display summary statistic..
1969 -->
1970       <para>
1971        Add <link linkend="pgxlogdump"><application>pg_xlogdump</></> option
1972        <option>--stats</> to display summary statistics (Abhijit Menon-Sen)
1973       </para>
1974      </listitem>
1975
1976     </itemizedlist>
1977
1978      <sect4>
1979       <title><xref linkend="APP-PSQL"></title>
1980
1981       <itemizedlist>
1982
1983        <listitem>
1984 <!--
1985 2015-03-31 [9d9991c] Bruce ..: psql:  add asciidoc output format
1986 -->
1987         <para>
1988          Allow <application>psql</> to produce AsciiDoc output (Szymon Guz)
1989         </para>
1990        </listitem>
1991
1992        <listitem>
1993 <!--
1994 2014-07-10 [5b214c5] Fujii ..: Add new ECHO mode 'errors' that displays only ..
1995 -->
1996         <para>
1997          Add <literal>errors</> mode to <application>psql</>'s
1998          <varname>ECHO</> variable to display only failed commands
1999          (Pavel Stehule)
2000         </para>
2001
2002         <para>
2003          This can also be enabled with the <application>psql</>
2004          <option>-b</> option.
2005         </para>
2006        </listitem>
2007
2008        <listitem>
2009 <!--
2010 2014-09-12 [a2dabf0] Stephe..: Add unicode_{column|header|border}_style to psql
2011 -->
2012         <para>
2013          Allow column, header, and border control to <application>psql</>'s
2014          Unicode style (Pavel Stehule)
2015         </para>
2016
2017         <para>
2018          Single or double output is supported;  the default is
2019          <literal>single</>.
2020         </para>
2021        </listitem>
2022
2023        <listitem>
2024 <!--
2025 2014-09-02 [51bb795] Andres..: Add psql PROMPT variable showing which line of ..
2026 -->
2027         <para>
2028          Add <application>psql</> <link
2029          linkend="APP-PSQL-variables"><envar>PROMPT</></> variables option
2030          (<literal>%l</>) to display the multi-line statement line number
2031          (Sawada Masahiko)
2032         </para>
2033        </listitem>
2034
2035        <listitem>
2036 <!--
2037 2015-03-28 [7655f4c] Andrew..: Add a pager_min_lines setting to psql
2038 -->
2039         <para>
2040          Add <application>psql</> setting <link
2041          linkend="APP-PSQL-meta-commands"><varname>pager_min_lines</></>
2042          to control pager invocation (Andrew Dunstan)
2043         </para>
2044        </listitem>
2045
2046        <listitem>
2047 <!--
2048 2014-11-21 [4077fb4] Andrew..: Fix an error in psql that overcounted output l..
2049 -->
2050         <para>
2051          Improve <application>psql</> line counting used when deciding
2052          to invoke the pager (Andrew Dunstan)
2053         </para>
2054        </listitem>
2055
2056        <listitem>
2057 <!--
2058 2014-07-12 [bd40951] Andres..: Minimal psql tab completion support for SET se..
2059 -->
2060         <para>
2061          Add <application>psql</> tab completion when setting the
2062          <xref linkend="guc-search-path"> variable (Jeff Janes)
2063         </para>
2064
2065         <para>
2066          Currently only the first schema can be tab-completed.
2067         </para>
2068        </listitem>
2069
2070        <listitem>
2071 <!--
2072 2014-06-23 [631e7f6] Heikki..: Improve tab-completion of DROP and ALTER ENABLE..
2073 -->
2074         <para>
2075          Improve <application>psql</>'s tab completion for triggers and rules
2076          (Andreas Karlsson)
2077         </para>
2078        </listitem>
2079
2080       </itemizedlist>
2081
2082      <sect5>
2083       <title><link linkend="APP-PSQL-meta-commands">Backslash Commands</link></title>
2084
2085       <itemizedlist>
2086
2087        <listitem>
2088 <!--
2089 2014-09-10 [07c8651] Andres..: Add new psql help topics, accessible to both..
2090 -->
2091         <para>
2092          Add <application>psql</> <command>\?</> help sections
2093          <literal>variables</> and <literal>options</> (Pavel Stehule)
2094         </para>
2095
2096         <para>
2097          <literal>variables</> outputs <application>psql</> variables
2098          and <literal>options</> shows command-line options.
2099          <command>\? commands</> is the default output. This help
2100          information can also be output via <literal>--help=section</>.
2101         </para>
2102        </listitem>
2103
2104        <listitem>
2105 <!--
2106 2014-07-14 [ee80f04] Alvaro..: psql: Show tablespace size in \db+
2107 -->
2108         <para>
2109          Show tablespace size in <application>psql</>'s <literal>\db+</>
2110          (Fabr&iacute;zio de Royes Mello)
2111         </para>
2112        </listitem>
2113
2114        <listitem>
2115 <!--
2116 2015-04-09 [a6f3c1f] Magnus..: Show owner of types in psql \dT+
2117 -->
2118         <para>
2119          Show data type owners in <application>psql</>'s <literal>\dT+</>
2120          (Magnus Hagander)
2121         </para>
2122        </listitem>
2123
2124        <listitem>
2125 <!--
2126 2014-09-04 [f6f654f] Fujii ..: Allow \watch to display query execution time if..
2127 -->
2128         <para>
2129          Allow <application>psql</>'s <command>\watch</> to output
2130          <command>\timing</> information (Fujii Masao)
2131         </para>
2132
2133         <para>
2134          Also prevent <option>--echo-hidden</> from echoing
2135          <command>\watch</> queries.
2136         </para>
2137        </listitem>
2138
2139        <listitem>
2140 <!--
2141 2014-11-22 [eca2b9b] Andrew..: Rework echo_hidden for \sf and \ef from commit ..
2142 -->
2143         <para>
2144          Allow <application>psql</>'s <literal>\sf</> and <literal>\ef</>
2145          to honor <envar>ECHO_HIDDEN</> (Andrew Dunstan)
2146         </para>
2147        </listitem>
2148
2149        <listitem>
2150 <!--
2151 2014-08-12 [e15c4ab] Fujii ..: Add tab-completion for \unset and valid setting..
2152 -->
2153         <para>
2154          Improve <application>psql</> tab completion for <command>\set</>,
2155          <command>\unset</>, and <literal>:variable</> names (Pavel
2156          Stehule)
2157         </para>
2158        </listitem>
2159
2160        <listitem>
2161 <!--
2162 2014-11-10 [095d401] Robert..: Tab complete second argument to \c with role n..
2163 -->
2164         <para>
2165          Allow tab completion of role names
2166          in <application>psql</> <literal>\c</> commands (Ian Barwick)
2167         </para>
2168        </listitem>
2169
2170       </itemizedlist>
2171
2172      </sect5>
2173
2174     </sect4>
2175
2176     <sect4>
2177      <title><xref linkend="APP-PGDUMP"></title>
2178
2179      <itemizedlist>
2180
2181       <listitem>
2182 <!--
2183 2014-11-17 [be1cc8f] Simon ..: Add pg_dump &#8211;&#8211;snapshot option
2184 -->
2185        <para>
2186         Allow <application>pg_dump</> to share a snapshot taken by another
2187         session using <option>--snapshot</> (Simon Riggs, Michael Paquier)
2188        </para>
2189
2190        <para>
2191         The remote snapshot must have been exported by
2192         <function>pg_export_snapshot()</> or logical replication slot
2193         creation.  This can be used by another <application>pg_dump</> to
2194         use a share a consistent snapshot across <application>pg_dump</>
2195         processes.
2196        </para>
2197       </listitem>
2198
2199       <listitem>
2200 <!--
2201 2014-07-07 [7700597] Tom Lane: In pg_dump, show server and pg_dump versions w..
2202 -->
2203        <para>
2204         Always have <application>pg_dump</> print server and
2205         <application>pg_dump</> versions (Jing Wang)
2206        </para>
2207
2208        <para>
2209         Previously, version information was only printed in
2210         <option>--verbose</> mode.
2211        </para>
2212       </listitem>
2213
2214       <listitem>
2215 <!--
2216 2015-06-04 [232cd63] Fujii ..: Remove -i/-ignore-version option from pg_dump..
2217 -->
2218        <para>
2219         Remove the long-ignored <option>-i</>/<option>--ignore-version</>
2220         option from <application>pg_dump</>, <application>pg_dumpall</>,
2221         and <application>pg_restore</> (Fujii Masao)
2222        </para>
2223       </listitem>
2224
2225      </itemizedlist>
2226
2227     </sect4>
2228
2229     <sect4>
2230      <title><xref linkend="app-pg-ctl"></title>
2231
2232      <itemizedlist>
2233
2234       <listitem>
2235 <!--
2236 2014-08-25 [ebe30ad] Bruce ..: pg_ctl, pg_upgrade:  allow multiple -o/-O opti..
2237 -->
2238        <para>
2239         Allow multiple <application>pg_ctl</> <option>-o</> options to
2240         be appended (Bruce Momjian)
2241        </para>
2242       </listitem>
2243
2244       <listitem>
2245 <!--
2246 2014-07-17 [c0e4520] Magnus..: Add option to pg_ctl to choose event source for..
2247 -->
2248        <para>
2249         Allow control of <application>pg_ctl</>'s event source logging
2250         on <systemitem class="osname">MS Windows</> (MauMau)
2251        </para>
2252
2253        <para>
2254         This only controls <application>pg_ctl</>, not the server, which
2255         has separate settings in <filename>postgresql.conf</>.
2256        </para>
2257       </listitem>
2258
2259      </itemizedlist>
2260
2261     </sect4>
2262
2263     <sect4>
2264      <title><xref linkend="pgupgrade"></title>
2265
2266      <itemizedlist>
2267
2268       <listitem>
2269 <!--
2270 2015-04-14 [9fa8b0e] Peter ..: Move pg_upgrade from contrib/ to src/bin/
2271 -->
2272        <para>
2273         Move <application>pg_upgrade</> from <filename>contrib</> to
2274         <filename>src/bin</> (Peter Eisentraut)
2275        </para>
2276
2277        <para>
2278         In connection with this change, the functionality previously
2279         provided by the <application>pg_upgrade_support</> module has been
2280         moved into the core server.
2281        </para>
2282       </listitem>
2283
2284       <listitem>
2285 <!--
2286 2014-08-25 [ebe30ad] Bruce ..: pg_ctl, pg_upgrade:  allow multiple -o/-O optio..
2287 -->
2288        <para>
2289         Allow multiple <application>pg_upgrade</>
2290         <option>-o</>/<option>-O</> options to be appended (Bruce Momjian)
2291        </para>
2292       </listitem>
2293
2294       <listitem>
2295 <!--
2296 2014-10-10 [33755e8] Heikki..: Change the way encoding and locale checks are d..
2297 -->
2298        <para>
2299         Improve database collation comparisons in
2300         <application>pg_upgrade</> (Heikki Linnakangas)
2301        </para>
2302       </listitem>
2303
2304       <listitem>
2305 <!--
2306 2015-03-18 [417f78a] Bruce ..: pg_upgrade: document use of rsync for slave up..
2307 -->
2308        <para>
2309         Document the use of <application>rsync</> for standby server
2310         upgrades using <application>pg_upgrade</> (Stephen Frost,
2311         Bruce Momjian)
2312        </para>
2313       </listitem>
2314
2315       <listitem>
2316 <!--
2317 2014-08-25 [2209b39] Bruce ..: pg_upgrade:  remove support for 8.3 old clusters
2318 -->
2319        <para>
2320         Remove support for upgrading from 8.3 clusters (Bruce Momjian)
2321        </para>
2322       </listitem>
2323
2324      </itemizedlist>
2325
2326     </sect4>
2327
2328     <sect4>
2329      <title><xref linkend="pgbench"></title>
2330
2331      <itemizedlist>
2332
2333       <listitem>
2334 <!--
2335 2015-04-13 [81134af] Peter ..: Move pgbench from contrib/ to src/bin/
2336 -->
2337        <para>
2338         Move pgbench from <filename>contrib</> to <filename>src/bin</>
2339         (Peter Eisentraut)
2340        </para>
2341       </listitem>
2342
2343       <listitem>
2344 <!--
2345 2014-10-13 [98aed6c] Heikki..: Add &#8211;&#8211;latency-limit option to pgbench.
2346 -->
2347        <para>
2348         Allow counting of pgbench transactions that take over a specified
2349         amount of time (Fabien Coelho)
2350        </para>
2351
2352        <para>
2353         This is controlled by new <option>--latency-limit</> option.
2354        </para>
2355       </listitem>
2356
2357       <listitem>
2358 <!--
2359 2014-07-30 [ed802e7] Robert..: pgbench: Allow \setrandom to generate Gaussian..
2360 -->
2361        <para>
2362         Allow pgbench to generate Gaussian/exponential distributions
2363         using <command>\setrandom</> (Kondo Mitsumasa, Fabien Coelho)
2364        </para>
2365       </listitem>
2366
2367       <listitem>
2368 <!--
2369 2015-03-02 [878fdcb] Robert..: pgbench: Add a real expression syntax to \set
2370 FIXME: Improve description, link
2371 -->
2372        <para>
2373         Allow <application>pgbench</>'s <command>\set</> command to handle
2374         multi-operator expressions (Robert Haas, Fabien Coelho)
2375        </para>
2376       </listitem>
2377
2378      </itemizedlist>
2379
2380     </sect4>
2381
2382    </sect3>
2383
2384    <sect3>
2385     <title>Source Code</title>
2386
2387      <itemizedlist>
2388
2389       <listitem>
2390 <!--
2391 2014-11-20 [2c03216] Heikki..: Revamp the WAL record format.
2392 -->
2393        <para>
2394         Simplify <link linkend="wal"><acronym>WAL</></> record format
2395         (Heikki Linnakangas)
2396        </para>
2397
2398        <para>
2399         This allows external tools to more easily track what blocks
2400         are modified.
2401        </para>
2402       </listitem>
2403
2404       <listitem>
2405 <!--
2406 2014-09-25 [b64d92f] Andres..: Add a basic atomic ops API abstracting away pla..
2407 -->
2408        <para>
2409         Add atomic memory operations <acronym>API</> (Andres Freund)
2410        </para>
2411       </listitem>
2412
2413       <listitem>
2414 <!--
2415 2014-11-07 [0b03e59] Robert..: Introduce custom path and scan providers.
2416 2014-11-20 [a34fa8e] Tom Lane: Initial code review for CustomScan patch.
2417 2014-11-21 [c2ea228] Tom Lane: Simplify API for initially hooking custom-path ..
2418 2014-11-21 [4477704] Tom Lane: Rearrange CustomScan API.
2419 -->
2420        <para>
2421         Allow custom path and scan methods (KaiGai Kohei, Tom Lane)
2422        </para>
2423
2424        <para>
2425         This allows extensions greater control over the optimizer and
2426         executor.
2427        </para>
2428       </listitem>
2429
2430       <listitem>
2431 <!--
2432 2015-05-12 [afb9249] Tom Lane: Add support for doing late row locking in FDWs.
2433 -->
2434        <para>
2435         Allow foreign data wrappers to do post-filter locking (Etsuro
2436         Fujita)
2437        </para>
2438       </listitem>
2439
2440       <listitem>
2441 <!--
2442 2015-05-08 [168d580] Andres..: Add support for INSERT ... ON CONFLICT DO NOTHI..
2443 2015-05-08 [2c8f483] Andres..: Represent columns requiring insert and update p..
2444 -->
2445        <para>
2446         Foreign tables can now take part in <command>INSERT ... ON CONFLICT
2447         DO NOTHING</> queries (Peter Geoghegan, Heikki Linnakangas,
2448         Andres Freund)
2449        </para>
2450
2451        <para>
2452         Foreign data wrappers must be modified to handle this.
2453         <command>INSERT ... ON CONFLICT DO UPDATE</> is not supported on
2454         foreign tables.
2455        </para>
2456       </listitem>
2457
2458       <listitem>
2459 <!--
2460 2014-12-18 [4a14f13] Tom Lane: Improve hash_create's API for selecting simple-..
2461 -->
2462        <para>
2463         Improve <function>hash_create()</>'s API for selecting
2464         simple-binary-key hash functions (Teodor Sigaev, Tom Lane)
2465        </para>
2466       </listitem>
2467
2468       <listitem>
2469 <!--
2470 2015-04-30 [924bcf4] Robert..: Create an infrastructure for parallel computati..
2471 2014-10-31 [2bd9e41] Robert..: Support frontend-backend protocol communication..
2472 -->
2473        <para>
2474         Improve parallel execution infrastructure (Robert Haas, Amit
2475         Kapila, Noah Misch, Rushabh Lathia, Jeevan Chalke)
2476        </para>
2477       </listitem>
2478
2479       <listitem>
2480 <!--
2481 2014-06-28 [a6d488c] Andres..: Remove Alpha and Tru64 support.
2482 -->
2483        <para>
2484         Remove <productname>Alpha</> (<acronym>CPU</>) and <systemitem
2485         class="osname">Tru64</> (OS) ports (Andres Freund)
2486        </para>
2487       </listitem>
2488
2489       <listitem>
2490 <!--
2491 2014-07-06 [4893ccd] Robert..: Remove swpb-based spinlock implementation for A..
2492 -->
2493        <para>
2494         Remove swap-byte-based spinlock implementation for
2495         <acronym>ARM</>v5 and earlier <acronym>CPU</>s (Robert Haas)
2496        </para>
2497
2498        <para>
2499         <acronym>ARM</>v5's weak memory ordering made this locking
2500         implementation unsafe.  Spinlock support is still possible on
2501         newer gcc implementations with atomics support.
2502        </para>
2503       </listitem>
2504
2505       <listitem>
2506 <!--
2507 2015-02-24 [23a7835] Peter ..: Error when creating names too long for tar for..
2508 -->
2509        <para>
2510         Generate an error when excessively long (100+ character) file
2511         paths are written to tar files (Peter Eisentraut)
2512        </para>
2513
2514        <para>
2515         Tar does not support such overly-long paths.
2516        </para>
2517       </listitem>
2518
2519       <listitem>
2520 <!--
2521 2015-05-19 [0b28ea7] Tom Lane: Avoid collation dependence in indexes of syste..
2522 -->
2523        <para>
2524         Change index opclass for columns <link
2525         linkend="catalog-pg-seclabel"><structname>pg_seclabel</></>.<structname>provider</>
2526         and <link
2527         linkend="catalog-pg-shseclabel"><structname>pg_shseclabel</></>.<structname>provider</>
2528         to be <literal>text_pattern_ops</> (Tom Lane)
2529        </para>
2530
2531        <para>
2532         This avoids possible problems with these indexes when different
2533         databases of a cluster have different default collations.
2534        </para>
2535       </listitem>
2536
2537       <listitem>
2538 <!--
2539 2014-09-09 [0709b7e] Robert..: Change the spinlock primitives to function as c..
2540 -->
2541        <para>
2542         Change the spinlock primitives to function as compiler barriers
2543         (Robert Haas)
2544        </para>
2545       </listitem>
2546
2547      </itemizedlist>
2548
2549     <sect4>
2550      <title>MS Windows</title>
2551
2552      <itemizedlist>
2553
2554       <listitem>
2555 <!--
2556 2014-12-08 [519b075] Simon ..: Use GetSystemTimeAsFileTime directly in win32
2557 2014-12-08 [8001fe6] Simon ..: Windows: use GetSystemTimePreciseAsFileTime if ..
2558 -->
2559        <para>
2560         Allow higher-precision timestamp resolution on <systemitem
2561         class="osname">Windows 8</> or <systemitem class="osname">Windows
2562         Server 2012</> and later Windows systems (Craig Ringer)
2563        </para>
2564       </listitem>
2565
2566       <listitem>
2567 <!--
2568 2015-03-18 [f9dead5] Alvaro..: Install shared libraries to bin/ in Windows un..
2569 -->
2570        <para>
2571         Install shared libraries to <filename>bin</> in <systemitem
2572         class="osname">MS Windows</> (Peter Eisentraut, Michael Paquier)
2573        </para>
2574       </listitem>
2575
2576       <listitem>
2577 <!--
2578 2015-04-16 [22d0053] Alvaro..: MSVC: install src/test/modules together with c..
2579 -->
2580        <para>
2581         Install <filename>src/test/modules</> together with
2582         <filename>contrib</> on <productname>MSVC</> builds (Michael
2583         Paquier)
2584        </para>
2585       </listitem>
2586
2587       <listitem>
2588 <!--
2589 2014-07-12 [8d9a0e8] Magnus..: Support &#8211;&#8211;with-extra-version equivalent functi..
2590 -->
2591        <para>
2592         Allow <link linkend="install-procedure">configure's
2593         <option>--with-extra-version</></> to be honored by the
2594         <productname>MSVC</> build (Michael Paquier)
2595        </para>
2596       </listitem>
2597
2598       <listitem>
2599 <!--
2600 2014-07-14 [91f03ba] Noah M..: MSVC: Recognize PGFILEDESC in contrib and conv..
2601 -->
2602        <para>
2603         Pass <envar>PGFILEDESC</> into <productname>MSVC</> contrib builds
2604         (Michael Paquier)
2605        </para>
2606       </listitem>
2607
2608       <listitem>
2609 <!--
2610 2014-07-14 [c4a448e] Noah M..: MSVC: Apply icons to all binaries having them ..
2611 -->
2612        <para>
2613         Add icons to all <productname>MSVC</>-built binaries and version
2614         information to all <systemitem class="osname">MS Windows</>
2615         binaries (Noah Misch)
2616        </para>
2617
2618        <para>
2619         MinGW already had such icons.
2620        </para>
2621       </listitem>
2622
2623       <listitem>
2624 <!--
2625 2014-09-10 [311da16] Andres..: Add support for optional_argument to our own ge..
2626 -->
2627        <para>
2628         Add optional-argument support to the internal
2629         <function>getopt_long()</> implementation (Michael Paquier,
2630         Andres Freund)
2631        </para>
2632
2633        <para>
2634         This is used by the <productname>MSVC</> build.
2635        </para>
2636       </listitem>
2637
2638      </itemizedlist>
2639
2640     </sect4>
2641
2642    </sect3>
2643
2644    <sect3>
2645     <title>Additional Modules</title>
2646
2647     <itemizedlist>
2648
2649      <listitem>
2650 <!--
2651 2015-03-27 [717f709] Andrew..: Add stats for min, max, mean, stddev times to p..
2652 -->
2653       <para>
2654        Add statistics for minimum, maximum,
2655        mean, and standard deviation times to <link
2656        linkend="pgstatstatements-columns"><application>pg_stat_statements</></>
2657        (Mitsumasa Kondo, Andrew Dunstan)
2658       </para>
2659      </listitem>
2660
2661      <listitem>
2662 <!--
2663 2014-10-01 [32984d8] Heikki..: Add functions for dealing with PGP armor heade..
2664 -->
2665       <para>
2666        Add <link linkend="pgcrypto"><application>pgcrypto</></> function
2667        <function>pgp_armor_headers()</> to extract <productname>PGP</>
2668        armor headers (Marko Tiikkaja, Heikki Linnakangas)
2669       </para>
2670      </listitem>
2671
2672      <listitem>
2673 <!--
2674 2014-06-30 [97c40ce] Tom Lane: Allow empty replacement strings in contrib/unac..
2675 -->
2676       <para>
2677        Allow empty replacement strings in <link
2678        linkend="unaccent"><application>unaccent</></> (Mohammad Alhashash)
2679       </para>
2680
2681       <para>
2682        This is useful in languages where diacritic signs are represented
2683        as separate characters.
2684       </para>
2685      </listitem>
2686
2687      <listitem>
2688 <!--
2689 2014-06-30 [1b24887] Tom Lane: Allow multi-character source strings in contrib..
2690 -->
2691       <para>
2692        Allow multi-character source strings in <link
2693        linkend="unaccent"><application>unaccent</></> (Tom Lane)
2694       </para>
2695
2696       <para>
2697        This could be useful in languages where diacritic signs are
2698        represented as separate characters.  It also allows more complex
2699        unaccent dictionaries.
2700       </para>
2701      </listitem>
2702
2703      <listitem>
2704 <!--
2705 2015-05-15 [9689290] Simon ..: TABLESAMPLE system_rows(limit)
2706 2015-05-15 [149f6f1] Simon ..: TABLESAMPLE system_time(limit)
2707 -->
2708       <para>
2709        Add <filename>contrib</> modules <link
2710        linkend="tsm-system-rows"><application>tsm_system_rows</></> and
2711        <link linkend="tsm-system-time"><application>tsm_system_time</></>
2712        to allow additional table sampling methods (Petr Jel&iacute;nek)
2713       </para>
2714      </listitem>
2715
2716      <listitem>
2717 <!--
2718 2014-11-21 [3a82bc6] Heikki..: Add pageinspect functions for inspecting GIN in..
2719 -->
2720       <para>
2721        Add <link linkend="GIN"><acronym>GIN</></>
2722        index inspection functions to <link
2723        linkend="pageinspect"><application>pageinspect</></> (Heikki
2724        Linnakangas, Peter Geoghegan, Michael Paquier)
2725       </para>
2726      </listitem>
2727
2728      <listitem>
2729 <!--
2730 2014-08-22 [f577919] Andres..: Add pinning_backends column to the pg_buffercac..
2731 -->
2732       <para>
2733        Add information about buffer pins to <link
2734        linkend="pgbuffercache"><application>pg_buffercache</></> display
2735        (Andres Freund)
2736       </para>
2737      </listitem>
2738
2739      <listitem>
2740 <!--
2741 2015-05-13 [5850b20] Andres..: Add pgstattuple_approx() to the pgstattuple ext..
2742 -->
2743       <para>
2744        Allow <link linkend="pgstattuple"><application>pgstattuple</></>
2745        to report approximate answers with less overhead using
2746        <function>pgstattuple_approx()</> (Abhijit Menon-Sen)
2747       </para>
2748      </listitem>
2749
2750      <listitem>
2751 <!--
2752 2014-11-29 [22dfd11] Alvaro..: Move test modules from contrib to src/test/modu..
2753 2014-12-01 [df761e3] Alvaro..: Move security_label test
2754 -->
2755       <para>
2756        Move <application>dummy_seclabel</>, <application>test_shm_mq</>,
2757        <application>test_parser</>, and <application>worker_spi</>
2758        from <filename>contrib</> to <filename>src/test/modules</>
2759        (&Aacute;lvaro Herrera)
2760       </para>
2761
2762       <para>
2763        These modules are only meant for server testing, so they do not need
2764        to be built or installed when packaging <productname>PostgreSQL</>.
2765       </para>
2766      </listitem>
2767
2768     </itemizedlist>
2769
2770    </sect3>
2771
2772   </sect2>
2773
2774  </sect1>