]> granicus.if.org Git - postgresql/blob - doc/src/sgml/release-9.3.sgml
Improve cross-references between minor version release notes.
[postgresql] / doc / src / sgml / release-9.3.sgml
1 <!-- doc/src/sgml/release-9.3.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
3
4  <sect1 id="release-9-3-2">
5   <title>Release 9.3.2</title>
6
7   <note>
8   <title>Release Date</title>
9   <simpara>2013-12-05</simpara>
10   </note>
11
12   <para>
13    This release contains a variety of fixes from 9.3.1.
14    For information about new features in the 9.3 major release, see
15    <xref linkend="release-9-3">.
16   </para>
17
18   <sect2>
19    <title>Migration to Version 9.3.2</title>
20
21    <para>
22     A dump/restore is not required for those running 9.3.X.
23    </para>
24
25    <para>
26     However, this release corrects a number of potential data corruption
27     issues.  See the first three changelog entries below to find out whether
28     your installation has been affected and what steps you can take if so.
29    </para>
30
31    <para>
32     Also, if you are upgrading from a version earlier than 9.3.1,
33     see <xref linkend="release-9-3-1">.
34    </para>
35
36   </sect2>
37
38   <sect2>
39    <title>Changes</title>
40
41    <itemizedlist>
42
43     <listitem>
44      <para>
45       Fix <command>VACUUM</>'s tests to see whether it can
46       update <structfield>relfrozenxid</> (Andres Freund)
47      </para>
48
49      <para>
50       In some cases <command>VACUUM</> (either manual or autovacuum) could
51       incorrectly advance a table's <structfield>relfrozenxid</> value,
52       allowing tuples to escape freezing, causing those rows to become
53       invisible once 2^31 transactions have elapsed.  The probability of
54       data loss is fairly low since multiple incorrect advancements would
55       need to happen before actual loss occurs, but it's not zero.  In 9.2.0
56       and later, the probability of loss is higher, and it's also possible
57       to get <quote>could not access status of transaction</> errors as a
58       consequence of this bug.  Users upgrading from releases 9.0.4 or 8.4.8
59       or earlier are not affected, but all later versions contain the bug.
60      </para>
61
62      <para>
63       The issue can be ameliorated by, after upgrading, vacuuming all tables
64       in all databases while having <link
65       linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link>
66       set to zero.  This will fix any latent corruption but will not be able
67       to fix all pre-existing data errors.  However, an installation can be
68       presumed safe after performing this vacuuming if it has executed fewer
69       than 2^31 update transactions in its lifetime (check this with
70       <literal>SELECT txid_current() < 2^31</>).
71      </para>
72     </listitem>
73
74     <listitem>
75      <para>
76       Fix multiple bugs in MultiXactId freezing (Andres Freund,
77       &Aacute;lvaro Herrera)
78      </para>
79
80      <para>
81       These bugs could lead to <quote>could not access status of
82       transaction</> errors, or to duplicate or vanishing rows.
83       Users upgrading from releases prior to 9.3.0 are not affected.
84      </para>
85
86      <para>
87       The issue can be ameliorated by, after upgrading, vacuuming all tables
88       in all databases while having <link
89       linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link>
90       set to zero.  This will fix latent corruption but will not be able to
91       fix all pre-existing data errors.
92      </para>
93
94      <para>
95       As a separate issue, these bugs can also cause standby servers to get
96       out of sync with the primary, thus exhibiting data errors that are not
97       in the primary.  Therefore, it's recommended that 9.3.0 and 9.3.1
98       standby servers be re-cloned from the primary (e.g., with a new base
99       backup) after upgrading.
100      </para>
101     </listitem>
102
103     <listitem>
104      <para>
105       Fix initialization of <filename>pg_clog</> and <filename>pg_subtrans</>
106       during hot standby startup (Andres Freund, Heikki Linnakangas)
107      </para>
108
109      <para>
110       This bug can cause data loss on standby servers at the moment they
111       start to accept hot-standby queries, by marking committed transactions
112       as uncommitted. The likelihood of such corruption is small unless, at
113       the time of standby startup, the primary server has executed many
114       updating transactions since its last checkpoint.  Symptoms include
115       missing rows, rows that should have been deleted being still visible,
116       and obsolete versions of updated rows being still visible alongside
117       their newer versions.
118      </para>
119
120      <para>
121       This bug was introduced in versions 9.3.0, 9.2.5, 9.1.10, and 9.0.14.
122       Standby servers that have only been running earlier releases are not
123       at risk.  It's recommended that standby servers that have ever run any
124       of the buggy releases be re-cloned from the primary (e.g., with a new
125       base backup) after upgrading.
126      </para>
127     </listitem>
128
129     <listitem>
130      <para>
131       Fix multiple bugs in update chain traversal (Andres Freund,
132       &Aacute;lvaro Herrera)
133      </para>
134
135      <para>
136       These bugs could result in incorrect behavior, such as locking or even
137       updating the wrong row, in the presence of concurrent updates.
138       Spurious <quote>unable to fetch updated version of tuple</> errors
139       were also possible.
140      </para>
141     </listitem>
142
143     <listitem>
144      <para>
145       Fix dangling-pointer problem in fast-path locking (Tom Lane)
146      </para>
147
148      <para>
149       This could lead to corruption of the lock data structures in shared
150       memory, causing <quote>lock already held</> and other odd errors.
151      </para>
152     </listitem>
153
154     <listitem>
155      <para>
156       Fix assorted race conditions in timeout management (Tom Lane)
157      </para>
158
159      <para>
160       These errors could result in a server process becoming unresponsive
161       because it had blocked SIGALRM and/or SIGINT.
162      </para>
163     </listitem>
164
165     <listitem>
166      <para>
167       Truncate <filename>pg_multixact</> contents during WAL replay
168       (Andres Freund)
169      </para>
170
171      <para>
172       This avoids ever-increasing disk space consumption in standby servers.
173      </para>
174     </listitem>
175
176     <listitem>
177      <para>
178       Ensure an anti-wraparound <command>VACUUM</> counts a page as scanned
179       when it's only verified that no tuples need freezing (Sergey
180       Burladyan, Jeff Janes)
181      </para>
182
183      <para>
184       This bug could result in failing to
185       advance <structfield>relfrozenxid</>, so that the table would still be
186       thought to need another anti-wraparound vacuum.  In the worst case the
187       database might even shut down to prevent wraparound.
188      </para>
189     </listitem>
190
191     <listitem>
192      <para>
193       Fix full-table-vacuum request mechanism for MultiXactIds (Andres Freund)
194      </para>
195
196      <para>
197       This bug could result in large amounts of useless autovacuum activity.
198      </para>
199     </listitem>
200
201     <listitem>
202      <para>
203       Fix race condition in GIN index posting tree page deletion (Heikki
204       Linnakangas)
205      </para>
206
207      <para>
208       This could lead to transient wrong answers or query failures.
209      </para>
210     </listitem>
211
212     <listitem>
213      <para>
214       Fix <quote>unexpected spgdoinsert() failure</> error during SP-GiST
215       index creation (Teodor Sigaev)
216      </para>
217     </listitem>
218
219     <listitem>
220      <para>
221       Fix assorted bugs in materialized views (Kevin Grittner, Andres Freund)
222      </para>
223     </listitem>
224
225     <listitem>
226      <para>
227       Re-allow duplicate table aliases if they're within aliased JOINs
228       (Tom Lane)
229      </para>
230
231      <para>
232       Historically <productname>PostgreSQL</> has accepted queries like
233 <programlisting>
234 SELECT ... FROM tab1 x CROSS JOIN (tab2 x CROSS JOIN tab3 y) z
235 </programlisting>
236       although a strict reading of the SQL standard would forbid the
237       duplicate usage of table alias <literal>x</>.  A misguided change in
238       9.3.0 caused it to reject some such cases that were formerly accepted.
239       Restore the previous behavior.
240      </para>
241     </listitem>
242
243     <listitem>
244      <para>
245       Avoid flattening a subquery whose <literal>SELECT</> list contains a
246       volatile function wrapped inside a sub-<literal>SELECT</> (Tom Lane)
247      </para>
248
249      <para>
250       This avoids unexpected results due to extra evaluations of the
251       volatile function.
252      </para>
253     </listitem>
254
255     <listitem>
256      <para>
257       Fix planner's processing of non-simple-variable subquery outputs
258       nested within outer joins (Tom Lane)
259      </para>
260
261      <para>
262       This error could lead to incorrect plans for queries involving
263       multiple levels of subqueries within <literal>JOIN</> syntax.
264      </para>
265     </listitem>
266
267     <listitem>
268      <para>
269       Fix incorrect planning in cases where the same non-strict expression
270       appears in multiple <literal>WHERE</> and outer <literal>JOIN</>
271       equality clauses (Tom Lane)
272      </para>
273     </listitem>
274
275     <listitem>
276      <para>
277       Fix planner crash with whole-row reference to a subquery (Tom Lane)
278      </para>
279     </listitem>
280
281     <listitem>
282      <para>
283       Fix incorrect generation of optimized MIN()/MAX() plans for
284       inheritance trees (Tom Lane)
285      </para>
286
287      <para>
288       The planner could fail in cases where the MIN()/MAX() argument was an
289       expression rather than a simple variable.
290      </para>
291     </listitem>
292
293     <listitem>
294      <para>
295       Fix premature deletion of temporary files (Andres Freund)
296      </para>
297     </listitem>
298
299     <listitem>
300      <para>
301       Prevent intra-transaction memory leak when printing range values
302       (Tom Lane)
303      </para>
304
305      <para>
306       This fix actually cures transient memory leaks in any datatype output
307       function, but range types are the only ones known to have had a
308       significant problem.
309      </para>
310     </listitem>
311
312     <listitem>
313      <para>
314       Fix memory leaks when reloading configuration files (Heikki
315       Linnakangas, Hari Babu)
316      </para>
317     </listitem>
318
319     <listitem>
320      <para>
321       Prevent incorrect display of dropped columns in NOT NULL and CHECK
322       constraint violation messages (Michael Paquier and Tom Lane)
323      </para>
324     </listitem>
325
326     <listitem>
327      <para>
328       Allow default arguments and named-argument notation for window
329       functions (Tom Lane)
330      </para>
331
332      <para>
333       Previously, these cases were likely to crash.
334      </para>
335     </listitem>
336
337     <listitem>
338      <para>
339       Suppress trailing whitespace on each line when pretty-printing rules
340       and views (Tom Lane)
341      </para>
342
343      <para>
344       9.3.0 generated such whitespace in many more cases than previous
345       versions did.  To reduce unexpected behavioral changes, suppress
346       unnecessary whitespace in all cases.
347      </para>
348     </listitem>
349
350     <listitem>
351      <para>
352       Fix possible read past end of memory in rule printing (Peter Eisentraut)
353      </para>
354     </listitem>
355
356     <listitem>
357      <para>
358       Fix array slicing of <type>int2vector</> and <type>oidvector</> values
359       (Tom Lane)
360      </para>
361
362      <para>
363       Expressions of this kind are now implicitly promoted to
364       regular <type>int2</> or <type>oid</> arrays.
365      </para>
366     </listitem>
367
368     <listitem>
369      <para>
370       Return a valid JSON value when converting an empty <type>hstore</> value
371       to <type>json</>
372       (Oskari Saarenmaa)
373      </para>
374     </listitem>
375
376     <listitem>
377      <para>
378       Fix incorrect behaviors when using a SQL-standard, simple GMT offset
379       timezone (Tom Lane)
380      </para>
381
382      <para>
383       In some cases, the system would use the simple GMT offset value when
384       it should have used the regular timezone setting that had prevailed
385       before the simple offset was selected.  This change also causes
386       the <function>timeofday</> function to honor the simple GMT offset
387       zone.
388      </para>
389     </listitem>
390
391     <listitem>
392      <para>
393       Prevent possible misbehavior when logging translations of Windows
394       error codes (Tom Lane)
395      </para>
396     </listitem>
397
398     <listitem>
399      <para>
400       Properly quote generated command lines in <application>pg_ctl</>
401       (Naoya Anzai and Tom Lane)
402      </para>
403
404      <para>
405       This fix applies only to Windows.
406      </para>
407     </listitem>
408
409     <listitem>
410      <para>
411       Fix <application>pg_dumpall</> to work when a source database
412       sets <link
413       linkend="guc-default-transaction-read-only"><varname>default_transaction_read_only</></link>
414       via <command>ALTER DATABASE SET</> (Kevin Grittner)
415      </para>
416
417      <para>
418       Previously, the generated script would fail during restore.
419      </para>
420     </listitem>
421
422     <listitem>
423      <para>
424       Fix <application>pg_isready</> to handle its <option>-d</> option
425       properly (Fabr&iacute;zio de Royes Mello and Fujii Masao)
426      </para>
427     </listitem>
428
429     <listitem>
430      <para>
431       Fix parsing of WAL file names in <application>pg_receivexlog</>
432       (Heikki Linnakangas)
433      </para>
434
435      <para>
436       This error made <application>pg_receivexlog</> unable to restart
437       streaming after stopping, once at least 4 GB of WAL had been written.
438      </para>
439     </listitem>
440
441     <listitem>
442      <para>
443       Report out-of-disk-space failures properly
444       in <application>pg_upgrade</> (Peter Eisentraut)
445      </para>
446     </listitem>
447
448     <listitem>
449      <para>
450       Make <application>ecpg</> search for quoted cursor names
451       case-sensitively (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
452      </para>
453     </listitem>
454
455     <listitem>
456      <para>
457       Fix <application>ecpg</>'s processing of lists of variables
458       declared <type>varchar</> (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
459      </para>
460     </listitem>
461
462     <listitem>
463      <para>
464       Make <filename>contrib/lo</> defend against incorrect trigger definitions
465       (Marc Cousin)
466      </para>
467     </listitem>
468
469     <listitem>
470      <para>
471       Update time zone data files to <application>tzdata</> release 2013h
472       for DST law changes in Argentina, Brazil, Jordan, Libya,
473       Liechtenstein, Morocco, and Palestine.  Also, new timezone
474       abbreviations WIB, WIT, WITA for Indonesia.
475      </para>
476     </listitem>
477
478    </itemizedlist>
479
480   </sect2>
481  </sect1>
482
483  <sect1 id="release-9-3-1">
484   <title>Release 9.3.1</title>
485
486   <note>
487   <title>Release Date</title>
488   <simpara>2013-10-10</simpara>
489   </note>
490
491   <para>
492    This release contains a variety of fixes from 9.3.0.
493    For information about new features in the 9.3 major release, see
494    <xref linkend="release-9-3">.
495   </para>
496
497   <sect2>
498    <title>Migration to Version 9.3.1</title>
499
500    <para>
501     A dump/restore is not required for those running 9.3.X.
502    </para>
503
504    <para>
505     However, if you use the <literal>hstore</> extension, see the
506     first changelog entry.
507    </para>
508
509   </sect2>
510
511   <sect2>
512    <title>Changes</title>
513
514    <itemizedlist>
515
516     <listitem>
517      <para>
518       Ensure new-in-9.3 JSON functionality is added to the <literal>hstore</>
519       extension during an update (Andrew Dunstan)
520      </para>
521
522      <para>
523       Users who upgraded a pre-9.3 database containing <literal>hstore</>
524       should execute
525 <programlisting>
526 ALTER EXTENSION hstore UPDATE;
527 </programlisting>
528       after installing 9.3.1, to add two new JSON functions and a cast.
529       (If <literal>hstore</> is already up to date, this command does
530       nothing.)
531      </para>
532     </listitem>
533
534     <listitem>
535      <para>
536       Fix memory leak when creating B-tree indexes on range columns
537       (Heikki Linnakangas)
538      </para>
539     </listitem>
540
541     <listitem>
542      <para>
543       Fix memory leak caused by <function>lo_open()</function> failure
544       (Heikki Linnakangas)
545      </para>
546     </listitem>
547
548     <listitem>
549      <para>
550       Serializable snapshot fixes (Kevin Grittner, Heikki Linnakangas)
551      </para>
552     </listitem>
553
554     <listitem>
555      <para>
556       Fix deadlock bug in libpq when using SSL (Stephen Frost)
557      </para>
558     </listitem>
559
560     <listitem>
561      <para>
562       Fix timeline handling bugs in <application>pg_receivexlog</>
563       (Heikki Linnakangas, Andrew Gierth)
564      </para>
565     </listitem>
566
567     <listitem>
568      <para>
569       Prevent <command>CREATE FUNCTION</> from checking <command>SET</>
570       variables unless function body checking is enabled (Tom Lane)
571      </para>
572     </listitem>
573
574     <listitem>
575      <para>
576       Remove rare inaccurate warning during vacuum of index-less tables
577       (Heikki Linnakangas)
578      </para>
579     </listitem>
580
581    </itemizedlist>
582
583   </sect2>
584  </sect1>
585
586  <sect1 id="release-9-3">
587   <title>Release 9.3</title>
588
589   <note>
590    <title>Release Date</title>
591    <simpara>2013-09-09</simpara>
592   </note>
593
594   <sect2>
595    <title>Overview</title>
596
597    <para>
598     Major enhancements in <productname>PostgreSQL</> 9.3 include:
599    </para>
600
601    <!-- This list duplicates items below, but without authors or details-->
602
603    <itemizedlist>
604
605     <listitem>
606      <para>
607       Add <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
608       views</link>
609      </para>
610     </listitem>
611
612     <listitem>
613      <para>
614       Make simple views <link
615       linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
616      </para>
617     </listitem>
618
619     <listitem>
620      <para>
621       Add many features for the <type>JSON</> data type,
622       including <link linkend="functions-json">operators and functions</link>
623       to extract elements from <type>JSON</> values
624      </para>
625     </listitem>
626
627     <listitem>
628      <para>
629       Implement <acronym>SQL</>-standard <link
630       linkend="queries-lateral"><literal>LATERAL</></link> option for
631       <literal>FROM</>-clause subqueries and function calls
632      </para>
633     </listitem>
634
635     <listitem>
636      <para>
637       Allow <link linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data
638       wrappers</link> to support writes (inserts/updates/deletes) on foreign
639       tables
640      </para>
641     </listitem>
642
643     <listitem>
644      <para>
645       Add a <link linkend="postgres-fdw"><productname>Postgres</> foreign
646       data wrapper</link> to allow access to
647       other <productname>Postgres</> servers
648      </para>
649     </listitem>
650
651     <listitem>
652      <para>
653       Add support for <link linkend="event-triggers">event triggers</link>
654      </para>
655     </listitem>
656
657     <listitem>
658      <para>
659       Add optional ability to <link
660       linkend="app-initdb-data-checksums">checksum</link> data pages and
661       report corruption
662      </para>
663     </listitem>
664
665     <listitem>
666      <para>
667       Prevent non-key-field row updates from blocking foreign key checks
668      </para>
669     </listitem>
670
671     <listitem>
672      <para>
673       Greatly reduce System V <link linkend="sysvipc">shared
674       memory</link> requirements
675      </para>
676     </listitem>
677
678    </itemizedlist>
679
680    <para>
681     The above items are explained in more detail in the sections below.
682    </para>
683
684   </sect2>
685
686   <sect2>
687
688   <title>Migration to Version 9.3</title>
689
690    <para>
691     A dump/restore using <link
692     linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, or use
693     of <link linkend="pgupgrade"><application>pg_upgrade</></link>, is
694     required for those wishing to migrate data from any previous release.
695    </para>
696
697    <para>
698     Version 9.3 contains a number of changes that may affect compatibility
699     with previous releases.  Observe the following incompatibilities:
700    </para>
701
702    <sect3>
703     <title>Server Settings</title>
704
705      <itemizedlist>
706
707       <listitem>
708        <para>
709         Rename <varname>replication_timeout</> to <link
710         linkend="guc-wal-sender-timeout"><varname>wal_sender_timeout</></link>
711         (Amit Kapila)
712        </para>
713
714        <para>
715         This setting controls the <link
716         linkend="wal"><acronym>WAL</></link> sender timeout.
717        </para>
718       </listitem>
719
720       <listitem>
721        <para>
722         Require superuser privileges to set <link
723         linkend="guc-commit-delay"><varname>commit_delay</></link>
724         because it can now potentially delay other sessions (Simon Riggs)
725        </para>
726       </listitem>
727
728       <listitem>
729        <para>
730         Allow in-memory sorts to use their full memory allocation (Jeff Janes)
731        </para>
732
733        <para>
734         Users who have set <link
735         linkend="guc-work-mem"><varname>work_mem</></link> based on the
736         previous behavior may need to revisit that setting.
737        </para>
738       </listitem>
739
740      </itemizedlist>
741
742    </sect3>
743
744    <sect3>
745     <title>Other</title>
746
747      <itemizedlist>
748
749       <listitem>
750        <para>
751         Throw an error if a tuple to be updated or deleted has already been
752         updated or deleted by a <literal>BEFORE</> trigger (Kevin Grittner)
753        </para>
754
755        <para>
756         Formerly, the originally-intended update was silently skipped,
757         resulting in logical inconsistency since the trigger might have
758         propagated data to other places based on the intended update.
759         Now an error is thrown to prevent the inconsistent results from being
760         committed.  If this change affects your application, the best solution
761         is usually to move the data-propagation actions to
762         an <literal>AFTER</> trigger.
763        </para>
764
765        <para>
766         This error will also be thrown if a query invokes a volatile function
767         that modifies rows that are later modified by the query itself.
768         Such cases likewise previously resulted in silently skipping updates.
769        </para>
770       </listitem>
771
772       <listitem>
773        <para>
774         Change multicolumn <link linkend="SQL-CREATETABLE"><literal>ON UPDATE
775         SET NULL/SET DEFAULT</></link> foreign key actions to affect
776         all columns of the constraint, not just those changed in the
777         <command>UPDATE</> (Tom Lane)
778        </para>
779
780        <para>
781         Previously, we would set only those referencing columns that
782         correspond to referenced columns that were changed by
783         the <command>UPDATE</>.  This was what was required by SQL-92,
784         but more recent editions of the SQL standard specify the new behavior.
785        </para>
786       </listitem>
787
788       <listitem>
789        <para>
790         Force cached plans to be replanned if the <link
791         linkend="guc-search-path"><varname>search_path</></link> changes
792         (Tom Lane)
793        </para>
794
795        <para>
796         Previously, cached plans already generated in the current session were
797         not redone if the query was re-executed with a
798         new <varname>search_path</> setting, resulting in surprising behavior.
799        </para>
800       </listitem>
801
802       <listitem>
803        <para>
804         Fix <link
805         linkend="functions-formatting-table"><function>to_number()</></link>
806         to properly handle a period used as a thousands separator (Tom Lane)
807        </para>
808
809        <para>
810         Previously, a period was considered to be a decimal point even when
811         the locale says it isn't and the <literal>D</> format code is used to
812         specify use of the locale-specific decimal point.  This resulted in
813         wrong answers if <literal>FM</> format was also used.
814        </para>
815       </listitem>
816
817       <listitem>
818        <para>
819         Fix <literal>STRICT</> non-set-returning functions that have
820         set-returning functions in their arguments to properly return null
821         rows (Tom Lane)
822        </para>
823
824        <para>
825         A null value passed to the strict function should result in a null
826         output, but instead, that output row was suppressed entirely.
827        </para>
828       </listitem>
829
830       <listitem>
831        <para>
832         Store <link linkend="wal"><acronym>WAL</></link> in a continuous
833         stream, rather than skipping the last 16MB segment every 4GB
834         (Heikki Linnakangas)
835        </para>
836
837        <para>
838         Previously, <acronym>WAL</> files with names ending in <literal>FF</>
839         were not used because of this skipping.  If you have <acronym>WAL</>
840         backup or restore scripts that took this behavior into account, they
841         will need to be adjusted.
842        </para>
843       </listitem>
844
845       <listitem>
846        <para>
847         In <link
848         linkend="catalog-pg-constraint"><structname>pg_constraint.confmatchtype</></link>,
849         store the default foreign key match type (non-<literal>FULL</>,
850         non-<literal>PARTIAL</>) as <literal>s</> for <quote>simple</>
851         (Tom Lane)
852        </para>
853
854        <para>
855         Previously this case was represented by <literal>u</>
856         for <quote>unspecified</>.
857        </para>
858       </listitem>
859
860      </itemizedlist>
861
862    </sect3>
863
864   </sect2>
865
866   <sect2>
867    <title>Changes</title>
868
869    <para>
870     Below you will find a detailed account of the changes between
871     <productname>PostgreSQL</productname> 9.3 and the previous major
872     release.
873    </para>
874
875    <sect3>
876     <title>Server</title>
877
878     <sect4>
879      <title>Locking</title>
880
881      <itemizedlist>
882
883       <listitem>
884        <para>
885         Prevent non-key-field row updates from blocking foreign key checks
886         (&Aacute;lvaro Herrera, Noah Misch, Andres Freund, Alexander
887         Shulgin, Marti Raudsepp, Alexander Shulgin)
888        </para>
889
890        <para>
891         This change improves concurrency and reduces the probability of
892         deadlocks when updating tables involved in a foreign-key constraint.
893         <command>UPDATE</>s that do not change any columns referenced in a
894         foreign key now take the new <literal>NO KEY UPDATE</> lock mode on
895         the row, while foreign key checks use the new <literal>KEY SHARE</>
896         lock mode, which does not conflict with <literal>NO KEY UPDATE</>.
897         So there is no blocking unless a foreign-key column is changed.
898        </para>
899       </listitem>
900
901       <listitem>
902        <para>
903         Add configuration variable <link
904         linkend="guc-lock-timeout"><varname>lock_timeout</></link> to
905         allow limiting how long a session will wait to acquire any one lock
906         (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
907        </para>
908       </listitem>
909
910      </itemizedlist>
911
912     </sect4>
913
914     <sect4>
915      <title>Indexes</title>
916
917      <itemizedlist>
918
919       <listitem>
920        <para>
921         Add <link linkend="rangetypes-indexing"><acronym>SP-GiST</></link>
922         support for range data types (Alexander Korotkov)
923        </para>
924       </listitem>
925
926       <listitem>
927        <para>
928         Allow <link linkend="GiST"><acronym>GiST</></link> indexes to be
929         unlogged (Jeevan Chalke)
930        </para>
931       </listitem>
932
933       <listitem>
934        <para>
935         Improve performance of <acronym>GiST</> index insertion by randomizing
936         the choice of which page to descend to when there are multiple equally
937         good alternatives (Heikki Linnakangas)
938        </para>
939       </listitem>
940
941       <listitem>
942        <para>
943         Improve concurrency of hash index operations (Robert Haas)
944        </para>
945       </listitem>
946
947      </itemizedlist>
948
949     </sect4>
950
951     <sect4>
952      <title>Optimizer</title>
953
954      <itemizedlist>
955
956       <listitem>
957        <para>
958         Collect and use histograms of upper and lower bounds, as well as range
959         lengths, for <link linkend="rangetypes">range types</link>
960         (Alexander Korotkov)
961        </para>
962       </listitem>
963
964       <listitem>
965        <para>
966         Improve optimizer's cost estimation for index access (Tom Lane)
967        </para>
968       </listitem>
969
970       <listitem>
971        <para>
972         Improve optimizer's hash table size estimate for
973         doing <literal>DISTINCT</> via hash aggregation (Tom Lane)
974        </para>
975       </listitem>
976
977       <listitem>
978        <para>
979         Suppress no-op Result and Limit plan nodes
980         (Kyotaro Horiguchi, Amit Kapila, Tom Lane)
981        </para>
982       </listitem>
983
984       <listitem>
985        <para>
986         Reduce optimizer overhead by not keeping plans on the basis of cheap
987         startup cost when the optimizer only cares about total cost overall
988         (Tom Lane)
989        </para>
990       </listitem>
991
992      </itemizedlist>
993
994     </sect4>
995
996     <sect4>
997      <title>General Performance</title>
998
999      <itemizedlist>
1000
1001       <listitem>
1002        <para>
1003         Add <link linkend="SQL-COPY"><command>COPY FREEZE</></link>
1004         option to avoid the overhead of marking tuples as frozen later
1005         (Simon Riggs, Jeff Davis)
1006        </para>
1007       </listitem>
1008
1009       <listitem>
1010        <para>
1011         Improve performance of <link
1012         linkend="datatype-numeric"><type>NUMERIC</></link> calculations
1013         (Kyotaro Horiguchi)
1014        </para>
1015       </listitem>
1016
1017       <listitem>
1018        <para>
1019         Improve synchronization of sessions waiting for <link
1020         linkend="guc-commit-delay"><varname>commit_delay</></link>
1021         (Peter Geoghegan)
1022        </para>
1023
1024        <para>
1025         This greatly improves the usefulness of <varname>commit_delay</>.
1026        </para>
1027       </listitem>
1028
1029       <listitem>
1030        <para>
1031         Improve performance of the <link
1032         linkend="SQL-CREATETABLE"><command>CREATE TEMPORARY TABLE ... ON
1033         COMMIT DELETE ROWS</></link> option by not truncating such temporary
1034         tables in transactions that haven't touched any temporary tables
1035         (Heikki Linnakangas)
1036        </para>
1037       </listitem>
1038
1039       <listitem>
1040        <para>
1041         Make vacuum recheck visibility after it has removed expired tuples
1042         (Pavan Deolasee)
1043        </para>
1044
1045        <para>
1046         This increases the chance of a page being marked as all-visible.
1047        </para>
1048       </listitem>
1049
1050       <listitem>
1051        <para>
1052         Add per-resource-owner lock caches (Jeff Janes)
1053        </para>
1054
1055        <para>
1056         This speeds up lock bookkeeping at statement completion in
1057         multi-statement transactions that hold many locks; it is particularly
1058         useful for <application>pg_dump</>.
1059        </para>
1060       </listitem>
1061
1062       <listitem>
1063        <para>
1064         Avoid scanning the entire relation cache at commit of a transaction
1065         that creates a new relation (Jeff Janes)
1066        </para>
1067
1068        <para>
1069         This speeds up sessions that create many tables in successive
1070         small transactions, such as a <application>pg_restore</> run.
1071        </para>
1072       </listitem>
1073
1074       <listitem>
1075        <para>
1076         Improve performance of transactions that drop many relations
1077         (Tomas Vondra)
1078        </para>
1079       </listitem>
1080
1081      </itemizedlist>
1082
1083     </sect4>
1084
1085     <sect4>
1086      <title>Monitoring</title>
1087
1088      <itemizedlist>
1089
1090       <listitem>
1091        <para>
1092         Add optional ability to <link
1093         linkend="app-initdb-data-checksums">checksum</link> data pages and
1094         report corruption (Simon Riggs, Jeff Davis, Greg Smith, Ants Aasma)
1095        </para>
1096
1097        <para>
1098         The checksum option can be set during <link
1099         linkend="APP-INITDB">initdb</link>.
1100        </para>
1101       </listitem>
1102
1103       <listitem>
1104        <para>
1105         Split the <link linkend="monitoring-stats">statistics collector's</link>
1106         data file into separate global and per-database files (Tomas Vondra)
1107        </para>
1108
1109        <para>
1110         This reduces the I/O required for statistics tracking.
1111        </para>
1112       </listitem>
1113
1114       <listitem>
1115        <para>
1116         Fix the statistics collector to operate properly in cases where the
1117         system clock goes backwards (Tom Lane)
1118        </para>
1119
1120        <para>
1121         Previously, statistics collection would stop until the time again
1122         reached the latest time previously recorded.
1123        </para>
1124       </listitem>
1125
1126       <listitem>
1127        <para>
1128         Emit an informative message to postmaster standard error when we
1129         are about to stop logging there
1130         (Tom Lane)
1131        </para>
1132
1133        <para>
1134         This should help reduce user confusion about where to look for log
1135         output in common configurations that log to standard error only during
1136         postmaster startup.
1137        </para>
1138       </listitem>
1139
1140      </itemizedlist>
1141
1142     </sect4>
1143
1144     <sect4>
1145      <title>Authentication</title>
1146
1147      <itemizedlist>
1148
1149       <listitem>
1150        <para>
1151         When an authentication failure occurs, log the relevant
1152         <link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></link>
1153         line, to ease debugging of unintended failures
1154         (Magnus Hagander)
1155        </para>
1156       </listitem>
1157
1158       <listitem>
1159        <para>
1160         Improve <link linkend="auth-ldap"><acronym>LDAP</></link> error
1161         reporting and documentation (Peter Eisentraut)
1162        </para>
1163       </listitem>
1164
1165       <listitem>
1166        <para>
1167         Add support for specifying <acronym>LDAP</> authentication parameters
1168         in <acronym>URL</> format, per RFC 4516 (Peter Eisentraut)
1169        </para>
1170       </listitem>
1171
1172       <listitem>
1173        <para>
1174         Change the <link
1175         linkend="guc-ssl-ciphers"><varname>ssl_ciphers</></link> parameter
1176         to start with <literal>DEFAULT</>, rather than <literal>ALL</>,
1177         then remove insecure ciphers (Magnus Hagander)
1178        </para>
1179
1180        <para>
1181         This should yield a more appropriate SSL cipher set.
1182        </para>
1183       </listitem>
1184
1185       <listitem>
1186        <para>
1187         Parse and load <link
1188         linkend="auth-username-maps"><filename>pg_ident.conf</></link>
1189         once, not during each connection (Amit Kapila)
1190        </para>
1191
1192        <para>
1193         This is similar to how <filename>pg_hba.conf</> is processed.
1194        </para>
1195       </listitem>
1196
1197      </itemizedlist>
1198
1199     </sect4>
1200
1201     <sect4>
1202      <title>Server Settings</title>
1203
1204      <itemizedlist>
1205
1206       <listitem>
1207        <para>
1208         Greatly reduce System V <link linkend="sysvipc">shared
1209         memory</link> requirements (Robert Haas)
1210        </para>
1211
1212        <para>
1213         On Unix-like systems, <function>mmap()</> is now used for most
1214         of <productname>PostgreSQL</>'s shared memory.  For most users, this
1215         will eliminate any need to adjust kernel parameters for shared memory.
1216        </para>
1217       </listitem>
1218
1219       <listitem>
1220        <para>
1221         Allow the postmaster to listen on multiple Unix-domain sockets
1222         (Honza Hor&aacute;k)
1223        </para>
1224
1225        <para>
1226         The configuration parameter
1227         <varname>unix_socket_directory</> is replaced by <link
1228         linkend="guc-unix-socket-directories"><varname>unix_socket_directories</></link>,
1229         which accepts a list of directories.
1230        </para>
1231       </listitem>
1232
1233       <listitem>
1234        <para>
1235         Allow a directory of configuration files to be processed (Magnus
1236         Hagander, Greg Smith, Selena Deckelmann)
1237        </para>
1238
1239        <para>
1240         Such a directory is specified with <link
1241         linkend="config-includes"><varname>include_dir</></link> in the server
1242         configuration file.
1243        </para>
1244       </listitem>
1245
1246       <listitem>
1247        <para>
1248         Increase the maximum <link
1249         linkend="APP-INITDB">initdb</link>-configured value for <link
1250         linkend="guc-shared-buffers"><varname>shared_buffers</></link>
1251         to 128MB (Robert Haas)
1252        </para>
1253
1254        <para>
1255         This is the maximum value that initdb will attempt to set in <link
1256         linkend="config-setting-configuration-file"><filename>postgresql.conf</></link>;
1257         the previous maximum was 32MB.
1258        </para>
1259       </listitem>
1260
1261       <listitem>
1262        <para>
1263         Remove the <link linkend="guc-external-pid-file">external
1264         <acronym>PID</> file</link>, if any, on postmaster exit
1265         (Peter Eisentraut)
1266        </para>
1267       </listitem>
1268
1269      </itemizedlist>
1270
1271     </sect4>
1272
1273    </sect3>
1274
1275    <sect3>
1276     <title>Replication and Recovery</title>
1277
1278      <itemizedlist>
1279
1280       <listitem>
1281        <para>
1282         Allow a streaming replication standby to <link
1283         linkend="protocol-replication">follow a timeline switch</link>
1284         (Heikki Linnakangas)
1285        </para>
1286
1287        <para>
1288         This allows streaming standby servers to receive WAL data from a slave
1289         newly promoted to master status.  Previously, other standbys would
1290         require a resync to begin following the new master.
1291        </para>
1292       </listitem>
1293
1294       <listitem>
1295        <para>
1296         Add <acronym>SQL</> functions <link
1297         linkend="functions-admin-backup"><function>pg_is_in_backup()</></link>
1298         and <link
1299         linkend="functions-admin-backup"><function>pg_backup_start_time()</></link>
1300         (Gilles Darold)
1301        </para>
1302
1303        <para>
1304         These functions report the status of base backups.
1305        </para>
1306       </listitem>
1307
1308       <listitem>
1309        <para>
1310         Improve performance of streaming log shipping with <link
1311         linkend="guc-synchronous-commit"><varname>synchronous_commit</></link>
1312         disabled (Andres Freund)
1313        </para>
1314       </listitem>
1315
1316       <listitem>
1317        <para>
1318         Allow much faster promotion of a streaming standby to primary (Simon
1319         Riggs, Kyotaro Horiguchi)
1320        </para>
1321       </listitem>
1322
1323       <listitem>
1324        <para>
1325         Add the last checkpoint's redo location to <link
1326         linkend="APP-PGCONTROLDATA"><application>pg_controldata</></link>'s
1327         output (Fujii Masao)
1328        </para>
1329
1330        <para>
1331         This information is useful for determining which <acronym>WAL</>
1332         files are needed for restore.
1333        </para>
1334       </listitem>
1335
1336       <listitem>
1337        <para>
1338         Allow tools like <link
1339         linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
1340         to run on computers with different architectures (Heikki
1341         Linnakangas)
1342        </para>
1343
1344        <para>
1345         WAL files can still only be replayed on servers with the same
1346         architecture as the primary; but they can now be transmitted to and
1347         stored on machines of any architecture, since the
1348         streaming replication protocol is now machine-independent.
1349        </para>
1350       </listitem>
1351
1352       <listitem>
1353        <para>
1354         Make <link
1355         linkend="app-pgbasebackup"><application>pg_basebackup</></link>
1356         <option>--write-recovery-conf</> output a
1357         minimal <filename>recovery.conf</> file (Zolt&aacute;n
1358         B&ouml;sz&ouml;rm&eacute;nyi, Magnus Hagander)
1359        </para>
1360
1361        <para>
1362         This simplifies setting up a standby server.
1363        </para>
1364       </listitem>
1365
1366       <listitem>
1367        <para>
1368         Allow <link
1369         linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
1370         and <link
1371         linkend="app-pgbasebackup"><application>pg_basebackup</></link>
1372         <option>--xlog-method</> to handle streaming timeline switches
1373         (Heikki Linnakangas)
1374        </para>
1375       </listitem>
1376
1377       <listitem>
1378        <para>
1379         Add <link
1380         linkend="guc-wal-receiver-timeout"><varname>wal_receiver_timeout</></link>
1381         parameter to control the <acronym>WAL</> receiver's timeout
1382         (Amit Kapila)
1383        </para>
1384
1385        <para>
1386         This allows more rapid detection of connection failure.
1387        </para>
1388       </listitem>
1389
1390       <listitem>
1391        <para>
1392         Change the <link linkend="wal"><acronym>WAL</></link> record format to
1393         allow splitting the record header across pages (Heikki Linnakangas)
1394        </para>
1395
1396        <para>
1397         The new format is slightly more compact, and is more efficient to
1398         write.
1399        </para>
1400       </listitem>
1401
1402      </itemizedlist>
1403
1404    </sect3>
1405
1406    <sect3>
1407     <title>Queries</title>
1408
1409      <itemizedlist>
1410
1411       <listitem>
1412        <para>
1413         Implement <acronym>SQL</>-standard <link
1414         linkend="queries-lateral"><literal>LATERAL</></link> option for
1415         <literal>FROM</>-clause subqueries and function calls (Tom Lane)
1416        </para>
1417
1418        <para>
1419         This feature allows subqueries and functions in <literal>FROM</> to
1420         reference columns from other tables in the <literal>FROM</>
1421         clause. The <literal>LATERAL</> keyword is optional for functions.
1422        </para>
1423       </listitem>
1424
1425       <listitem>
1426        <para>
1427         Add support for piping <link
1428         linkend="SQL-COPY"><command>COPY</></link> and <link
1429         linkend="APP-PSQL"><application>psql</></link> <command>\copy</>
1430         data to/from an external program (Etsuro Fujita)
1431        </para>
1432       </listitem>
1433
1434       <listitem>
1435        <para>
1436         Allow a multirow <link
1437         linkend="SQL-VALUES"><literal>VALUES</></link> clause in a rule
1438         to reference <literal>OLD</>/<literal>NEW</> (Tom Lane)
1439        </para>
1440       </listitem>
1441
1442      </itemizedlist>
1443
1444    </sect3>
1445
1446    <sect3>
1447     <title>Object Manipulation</title>
1448
1449      <itemizedlist>
1450
1451       <listitem>
1452        <para>
1453         Add support for <link linkend="event-triggers">event triggers</link>
1454         (Dimitri Fontaine, Robert Haas, &Aacute;lvaro Herrera)
1455        </para>
1456
1457        <para>
1458         This allows server-side functions written in event-enabled
1459         languages to be called when DDL commands are run.
1460        </para>
1461       </listitem>
1462
1463       <listitem>
1464        <para>
1465         Allow <link linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data
1466         wrappers</link> to support writes (inserts/updates/deletes) on foreign
1467         tables (KaiGai Kohei)
1468        </para>
1469       </listitem>
1470
1471       <listitem>
1472        <para>
1473         Add <link linkend="SQL-CREATESCHEMA"><command>CREATE SCHEMA ... IF
1474         NOT EXISTS</></link> clause (Fabr&iacute;zio de Royes Mello)
1475        </para>
1476       </listitem>
1477
1478       <listitem>
1479        <para>
1480         Make <link linkend="SQL-REASSIGN-OWNED"><command>REASSIGN
1481         OWNED</></link> also change ownership of shared objects
1482         (&Aacute;lvaro Herrera)
1483        </para>
1484       </listitem>
1485
1486       <listitem>
1487        <para>
1488         Make <link linkend="sql-createaggregate"><command>CREATE
1489         AGGREGATE</></link> complain if the given initial value string is not
1490         valid input for the transition datatype (Tom Lane)
1491        </para>
1492       </listitem>
1493
1494       <listitem>
1495        <para>
1496         Suppress <link linkend="SQL-CREATETABLE"><command>CREATE
1497         TABLE</></link>'s messages about implicit index and sequence creation
1498         (Robert Haas)
1499        </para>
1500
1501        <para>
1502         These messages now appear at <literal>DEBUG1</> verbosity, so that
1503         they will not be shown by default.
1504        </para>
1505       </listitem>
1506
1507       <listitem>
1508        <para>
1509         Allow <link linkend="SQL-DROPTABLE"><command>DROP TABLE IF
1510         EXISTS</></link> to succeed when a non-existent schema is specified
1511         in the table name (Bruce Momjian)
1512        </para>
1513
1514        <para>
1515          Previously, it threw an error if the schema did not exist.
1516        </para>
1517       </listitem>
1518
1519       <listitem>
1520        <para>
1521         Provide clients with <link
1522         linkend="libpq-pqresulterrorfield">constraint violation details</link>
1523         as separate fields (Pavel Stehule)
1524        </para>
1525
1526        <para>
1527         This allows clients to retrieve table, column, data type, or
1528         constraint name error details.  Previously such information had to be
1529         extracted from error strings.  Client library support is required to
1530         access these fields.
1531        </para>
1532       </listitem>
1533
1534      </itemizedlist>
1535
1536     <sect4>
1537      <title><command>ALTER</></title>
1538
1539      <itemizedlist>
1540
1541       <listitem>
1542        <para>
1543         Support <literal>IF NOT EXISTS</> option in <link
1544         linkend="SQL-ALTERTYPE"><command>ALTER TYPE ... ADD VALUE</></link>
1545         (Andrew Dunstan)
1546        </para>
1547
1548        <para>
1549         This is useful for conditionally adding values to enumerated types.
1550        </para>
1551       </listitem>
1552
1553       <listitem>
1554        <para>
1555         Add <link linkend="SQL-ALTERROLE"><command>ALTER ROLE ALL
1556         SET</></link> to establish settings for all users (Peter Eisentraut)
1557        </para>
1558
1559        <para>
1560         This allows settings to apply to all users in all databases. <link
1561         linkend="SQL-ALTERDATABASE"><command>ALTER DATABASE SET</></link>
1562         already allowed addition of settings for all users in a single
1563         database.  <filename>postgresql.conf</> has a similar effect.
1564        </para>
1565       </listitem>
1566
1567       <listitem>
1568        <para>
1569         Add support for <link linkend="SQL-ALTERRULE"><command>ALTER RULE
1570         ... RENAME</></link> (Ali Dar)
1571        </para>
1572       </listitem>
1573
1574      </itemizedlist>
1575
1576     </sect4>
1577
1578     <sect4>
1579      <title><link linkend="rules-views"><command>VIEWs</></link></title>
1580
1581      <itemizedlist>
1582
1583       <listitem>
1584        <para>
1585         Add <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
1586         views</link> (Kevin Grittner)
1587        </para>
1588
1589        <para>
1590         Unlike ordinary views, where the base tables are read on every access,
1591         materialized views create physical tables at creation or refresh time.
1592         Access to the materialized view then reads from its physical
1593         table. There is not yet any facility for incrementally refreshing
1594         materialized views or auto-accessing them via base table access.
1595        </para>
1596       </listitem>
1597
1598       <listitem>
1599        <para>
1600         Make simple views <link
1601         linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
1602         (Dean Rasheed)
1603        </para>
1604
1605        <para>
1606         Simple views that reference some or all columns from a
1607         single base table are now updatable by default. More
1608         complex views can be made updatable using <link
1609         linkend="SQL-CREATETRIGGER"><literal>INSTEAD OF</></link> triggers
1610         or <link linkend="SQL-CREATERULE"><literal>INSTEAD</></link> rules.
1611        </para>
1612       </listitem>
1613
1614       <listitem>
1615        <para>
1616         Add <link linkend="SQL-CREATEVIEW"><command>CREATE RECURSIVE
1617         VIEW</></link> syntax (Peter Eisentraut)
1618        </para>
1619
1620        <para>
1621         Internally this is translated into <command>CREATE VIEW ... WITH
1622         RECURSIVE ...</>.
1623        </para>
1624       </listitem>
1625
1626       <listitem>
1627        <para>
1628         Improve view/rule printing code to handle cases where referenced
1629         tables are renamed, or columns are renamed, added, or dropped
1630         (Tom Lane)
1631        </para>
1632
1633        <para>
1634         Table and column renamings can produce cases where, if we merely
1635         substitute the new name into the original text of a rule or view, the
1636         result is ambiguous.  This change fixes the rule-dumping code to insert
1637         manufactured table and column aliases when needed to preserve the
1638         original semantics.
1639        </para>
1640       </listitem>
1641
1642      </itemizedlist>
1643
1644     </sect4>
1645
1646    </sect3>
1647
1648    <sect3>
1649     <title>Data Types</title>
1650
1651     <itemizedlist>
1652
1653       <listitem>
1654        <para>
1655         Increase the maximum size of <link linkend="largeObjects">large
1656         objects</link> from 2GB to 4TB (Nozomi Anzai, Yugo Nagata)
1657        </para>
1658
1659        <para>
1660         This change includes adding 64-bit-capable large object access
1661         functions, both in the server and in libpq.
1662        </para>
1663       </listitem>
1664
1665       <listitem>
1666        <para>
1667         Allow text <link linkend="datatype-timezones">timezone
1668         designations</link>, e.g. <quote>America/Chicago</>, in the
1669         <quote>T</> field of <acronym>ISO</>-format <type>timestamptz</type>
1670         input (Bruce Momjian)
1671        </para>
1672       </listitem>
1673
1674     </itemizedlist>
1675
1676    <sect4>
1677     <title><link linkend="datatype-json"><type>JSON</></link></title>
1678
1679     <itemizedlist>
1680
1681       <listitem>
1682        <para>
1683         Add <link linkend="functions-json">operators and functions</link>
1684         to extract elements from <type>JSON</> values (Andrew Dunstan)
1685        </para>
1686       </listitem>
1687
1688       <listitem>
1689        <para>
1690         Allow <type>JSON</> values to be <link
1691         linkend="functions-json-table">converted into records</link>
1692         (Andrew Dunstan)
1693        </para>
1694       </listitem>
1695
1696       <listitem>
1697        <para>
1698         Add <link linkend="functions-json-table">functions</link> to convert
1699         scalars, records, and <type>hstore</> values to <type>JSON</> (Andrew
1700         Dunstan)
1701        </para>
1702       </listitem>
1703
1704     </itemizedlist>
1705
1706    </sect4>
1707
1708    </sect3>
1709
1710
1711    <sect3>
1712     <title>Functions</title>
1713
1714      <itemizedlist>
1715
1716       <listitem>
1717        <para>
1718         Add <link
1719         linkend="array-functions-table"><function>array_remove()</></link>
1720         and <link
1721         linkend="array-functions-table"><function>array_replace()</></link>
1722         functions (Marco Nenciarini, Gabriele Bartolini)
1723        </para>
1724       </listitem>
1725
1726       <listitem>
1727        <para>
1728         Allow <link
1729         linkend="functions-string-other"><function>concat()</></link>
1730         and <link
1731         linkend="functions-string-format"><function>format()</></link>
1732         to properly expand <literal>VARIADIC</>-labeled arguments
1733         (Pavel Stehule)
1734        </para>
1735       </listitem>
1736
1737       <listitem>
1738        <para>
1739         Improve <link
1740         linkend="functions-string-format"><function>format()</></link>
1741         to provide field width and left/right alignment options (Pavel Stehule)
1742        </para>
1743       </listitem>
1744
1745       <listitem>
1746        <para>
1747         Make <link
1748         linkend="functions-formatting-table"><function>to_char()</></link>,
1749         <link
1750         linkend="functions-formatting-table"><function>to_date()</></link>,
1751         and <link
1752         linkend="functions-formatting-table"><function>to_timestamp()</></link>
1753         handle negative (BC) century values properly
1754         (Bruce Momjian)
1755        </para>
1756
1757        <para>
1758         Previously the behavior was either wrong or inconsistent
1759         with positive/<acronym>AD</> handling, e.g. with the format mask
1760         <quote>IYYY-IW-DY</>.
1761        </para>
1762       </listitem>
1763
1764       <listitem>
1765        <para>
1766         Make <link
1767         linkend="functions-formatting-table"><function>to_date()</></link>
1768         and <link
1769         linkend="functions-formatting-table"><function>to_timestamp()</></link>
1770         return proper results when mixing <acronym>ISO</> and Gregorian
1771         week/day designations (Bruce Momjian)
1772        </para>
1773       </listitem>
1774
1775       <listitem>
1776        <para>
1777         Cause <link
1778         linkend="functions-info-catalog-table"><function>pg_get_viewdef()</></link>
1779         to start a new line by default after each <literal>SELECT</> target
1780         list entry and <literal>FROM</> entry (Marko Tiikkaja)
1781        </para>
1782
1783        <para>
1784         This reduces line length in view printing, for instance in <link
1785         linkend="APP-PGDUMP"><application>pg_dump</></link> output.
1786        </para>
1787       </listitem>
1788
1789       <listitem>
1790        <para>
1791         Fix <function>map_sql_value_to_xml_value()</> to print values of
1792         domain types the same way their base type would be printed
1793         (Pavel Stehule)
1794        </para>
1795
1796        <para>
1797         There are special formatting rules for certain built-in types such as
1798         <type>boolean</>; these rules now also apply to domains over these
1799         types.
1800        </para>
1801       </listitem>
1802
1803      </itemizedlist>
1804
1805    </sect3>
1806
1807    <sect3>
1808     <title>Server-Side Languages</title>
1809
1810     <sect4>
1811      <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
1812
1813      <itemizedlist>
1814
1815       <listitem>
1816        <para>
1817         Allow PL/pgSQL to use <literal>RETURN</> with a composite-type
1818         expression (Asif Rehman)
1819        </para>
1820
1821        <para>
1822         Previously, in a function returning a composite type,
1823         <literal>RETURN</> could only reference a variable of that type.
1824        </para>
1825       </listitem>
1826
1827       <listitem>
1828        <para>
1829         Allow PL/pgSQL to access <link
1830         linkend="plpgsql-exception-diagnostics">constraint violation
1831         details</link> as separate fields (Pavel Stehule)
1832        </para>
1833       </listitem>
1834
1835       <listitem>
1836        <para>
1837         Allow PL/pgSQL to access the number of rows processed by
1838         <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1839        </para>
1840
1841        <para>
1842         A <command>COPY</> executed in a PL/pgSQL function now updates the
1843         value retrieved by <link
1844         linkend="plpgsql-statements-diagnostics"><command>GET DIAGNOSTICS
1845         x = ROW_COUNT</></link>.
1846        </para>
1847       </listitem>
1848
1849       <listitem>
1850        <para>
1851         Allow unreserved keywords to be used as identifiers everywhere in
1852         PL/pgSQL (Tom Lane)
1853        </para>
1854
1855        <para>
1856         In certain places in the PL/pgSQL grammar, keywords had to be quoted
1857         to be used as identifiers, even if they were nominally unreserved.
1858        </para>
1859       </listitem>
1860
1861     </itemizedlist>
1862
1863     </sect4>
1864
1865     <sect4>
1866      <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
1867
1868      <itemizedlist>
1869
1870       <listitem>
1871        <para>
1872         Add PL/Python result object string handler (Peter Eisentraut)
1873        </para>
1874
1875        <para>
1876         This allows <literal>plpy.debug(rv)</literal> to output something reasonable.
1877        </para>
1878       </listitem>
1879
1880       <listitem>
1881        <para>
1882         Make PL/Python convert OID values to a proper Python numeric type
1883         (Peter Eisentraut)
1884        </para>
1885       </listitem>
1886
1887       <listitem>
1888        <para>
1889         Handle <link linkend="spi"><acronym>SPI</></link> errors raised
1890         explicitly (with PL/Python's <literal>RAISE</>) the same as
1891         internal <acronym>SPI</> errors (Oskari Saarenmaa and Jan Urbanski)
1892        </para>
1893       </listitem>
1894
1895      </itemizedlist>
1896
1897     </sect4>
1898
1899    </sect3>
1900
1901    <sect3>
1902     <title>Server Programming Interface (<link linkend="spi">SPI</link>)</title>
1903
1904      <itemizedlist>
1905
1906       <listitem>
1907        <para>
1908         Prevent leakage of <acronym>SPI</> tuple tables during subtransaction
1909         abort (Tom Lane)
1910        </para>
1911
1912        <para>
1913         At the end of any failed subtransaction, the core SPI code now
1914         releases any SPI tuple tables that were created during that
1915         subtransaction.  This avoids the need for SPI-using code to keep track
1916         of such tuple tables and release them manually in error-recovery code.
1917         Failure to do so caused a number of transaction-lifespan memory leakage
1918         issues in PL/pgSQL and perhaps other SPI clients.  <link
1919         linkend="spi-spi-freetupletable"><function>SPI_freetuptable()</></link>
1920         now protects itself against multiple freeing requests, so any existing
1921         code that did take care to clean up shouldn't be broken by this change.
1922        </para>
1923       </listitem>
1924
1925       <listitem>
1926        <para>
1927         Allow <acronym>SPI</> functions to access the number of rows processed
1928         by <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1929        </para>
1930       </listitem>
1931
1932      </itemizedlist>
1933
1934    </sect3>
1935
1936    <sect3>
1937     <title>Client Applications</title>
1938
1939     <itemizedlist>
1940
1941       <listitem>
1942        <para>
1943         Add command-line utility <link
1944         linkend="app-pg-isready"><application>pg_isready</></link> to
1945         check if the server is ready to accept connections (Phil Sorber)
1946        </para>
1947       </listitem>
1948
1949       <listitem>
1950        <para>
1951         Support multiple <option>--table</> arguments for <link
1952         linkend="APP-PGRESTORE"><application>pg_restore</></link>,
1953         <link linkend="APP-CLUSTERDB"><application>clusterdb</></link>,
1954         <link linkend="APP-REINDEXDB"><application>reindexdb</></link>,
1955         and <link linkend="APP-VACUUMDB"><application>vacuumdb</></link>
1956         (Josh Kupershmidt)
1957        </para>
1958
1959        <para>
1960         This is similar to the way <link
1961         linkend="APP-PGDUMP"><application>pg_dump</></link>'s
1962         <option>--table</> option works.
1963        </para>
1964       </listitem>
1965
1966       <listitem>
1967        <para>
1968         Add <option>--dbname</> option to <link
1969         linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, <link
1970         linkend="app-pgbasebackup"><application>pg_basebackup</></link>, and
1971         <link
1972         linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
1973         to allow specifying a connection string (Amit Kapila)
1974        </para>
1975       </listitem>
1976
1977       <listitem>
1978        <para>
1979         Add libpq function <link
1980         linkend="libpq-pqconninfo"><function>PQconninfo()</></link>
1981         to return connection information (Zolt&aacute;n
1982         B&ouml;sz&ouml;rm&eacute;nyi, Magnus Hagander)
1983        </para>
1984       </listitem>
1985
1986     </itemizedlist>
1987
1988     <sect4>
1989      <title><link linkend="APP-PSQL"><application>psql</></link></title>
1990
1991      <itemizedlist>
1992
1993       <listitem>
1994        <para>
1995         Adjust function cost settings so <application>psql</> tab
1996         completion and pattern searching are more efficient (Tom Lane)
1997        </para>
1998       </listitem>
1999
2000       <listitem>
2001        <para>
2002         Improve <application>psql</>'s tab completion coverage (Jeff Janes,
2003         Dean Rasheed, Peter Eisentraut, Magnus Hagander)
2004        </para>
2005       </listitem>
2006
2007       <listitem>
2008        <para>
2009         Allow the <application>psql</> <option>--single-transaction</>
2010         mode to work when reading from standard input (Fabien Coelho,
2011         Robert Haas)
2012        </para>
2013
2014        <para>
2015         Previously this option only worked when reading from a file.
2016        </para>
2017       </listitem>
2018
2019       <listitem>
2020        <para>
2021         Remove <application>psql</> warning when connecting to an older
2022         server (Peter Eisentraut)
2023        </para>
2024
2025        <para>
2026         A warning is still issued when connecting to a server of a newer major
2027         version than <application>psql</>'s.
2028        </para>
2029       </listitem>
2030
2031      </itemizedlist>
2032
2033     <sect5>
2034      <title><link linkend="APP-PSQL-meta-commands">Backslash Commands</link></title>
2035
2036      <itemizedlist>
2037
2038       <listitem>
2039        <para>
2040         Add <application>psql</> command <command>\watch</> to repeatedly
2041         execute a SQL command (Will Leinweber)
2042        </para>
2043       </listitem>
2044
2045       <listitem>
2046        <para>
2047         Add <application>psql</> command <command>\gset</> to store query
2048         results in <application>psql</> variables (Pavel Stehule)
2049        </para>
2050       </listitem>
2051
2052       <listitem>
2053        <para>
2054         Add <acronym>SSL</> information to <application>psql</>'s
2055         <command>\conninfo</> command (Alastair Turner)
2056        </para>
2057       </listitem>
2058
2059       <listitem>
2060        <para>
2061         Add <quote>Security</> column to <application>psql</>'s
2062         <command>\df+</> output (Jon Erdman)
2063        </para>
2064       </listitem>
2065
2066       <listitem>
2067        <para>
2068         Allow <application>psql</> command <command>\l</> to accept a database
2069         name pattern (Peter Eisentraut)
2070        </para>
2071       </listitem>
2072
2073       <listitem>
2074        <para>
2075         In <application>psql</>, do not allow <command>\connect</> to
2076         use defaults if there is no active connection (Bruce Momjian)
2077        </para>
2078
2079        <para>
2080         This might be the case if the server had crashed.
2081        </para>
2082       </listitem>
2083
2084       <listitem>
2085        <para>
2086         Properly reset state after failure of a SQL command executed with
2087         <application>psql</>'s <literal>\g</> <replaceable>file</>
2088         (Tom Lane)
2089        </para>
2090
2091        <para>
2092         Previously, the output from subsequent SQL commands would unexpectedly
2093         continue to go to the same file.
2094        </para>
2095       </listitem>
2096
2097      </itemizedlist>
2098
2099     </sect5>
2100
2101     <sect5>
2102      <title>Output</title>
2103
2104      <itemizedlist>
2105
2106       <listitem>
2107        <para>
2108         Add a <literal>latex-longtable</> output format to
2109         <application>psql</> (Bruce Momjian)
2110        </para>
2111
2112        <para>
2113         This format allows tables to span multiple pages.
2114        </para>
2115       </listitem>
2116
2117       <listitem>
2118        <para>
2119         Add a <literal>border=3</> output mode to the <application>psql</>
2120         <literal>latex</> format (Bruce Momjian)
2121        </para>
2122       </listitem>
2123
2124       <listitem>
2125        <para>
2126         In <application>psql</>'s tuples-only and expanded output modes, no
2127         longer emit <quote>(No rows)</> for zero rows (Peter Eisentraut)
2128        </para>
2129       </listitem>
2130
2131       <listitem>
2132        <para>
2133         In <application>psql</>'s unaligned, expanded output mode, no longer
2134         print an empty line for zero rows (Peter Eisentraut)
2135        </para>
2136       </listitem>
2137
2138      </itemizedlist>
2139
2140     </sect5>
2141
2142     </sect4>
2143
2144     <sect4>
2145      <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
2146
2147      <itemizedlist>
2148
2149       <listitem>
2150        <para>
2151         Add <application>pg_dump</> <option>--jobs</> option to dump tables in
2152         parallel (Joachim Wieland)
2153        </para>
2154       </listitem>
2155
2156       <listitem>
2157        <para>
2158         Make <application>pg_dump</> output functions in a more predictable
2159         order (Joel Jacobson)
2160        </para>
2161       </listitem>
2162
2163       <listitem>
2164        <para>
2165         Fix tar files emitted by <application>pg_dump</>
2166         to be <acronym>POSIX</> conformant (Brian Weaver, Tom Lane)
2167        </para>
2168       </listitem>
2169
2170       <listitem>
2171        <para>
2172         Add <option>--dbname</> option to <application>pg_dump</>, for
2173         consistency with other client commands (Heikki Linnakangas)
2174        </para>
2175
2176        <para>
2177         The database name could already be supplied last without a flag.
2178        </para>
2179       </listitem>
2180
2181      </itemizedlist>
2182
2183     </sect4>
2184
2185     <sect4>
2186      <title><link linkend="APP-INITDB"><application>initdb</></link></title>
2187
2188      <itemizedlist>
2189
2190       <listitem>
2191        <para>
2192         Make initdb fsync the newly created data directory (Jeff Davis)
2193        </para>
2194
2195        <para>
2196         This insures data integrity in event of a system crash shortly after
2197         initdb.  This can be disabled by using <option>--nosync</>.
2198        </para>
2199       </listitem>
2200
2201       <listitem>
2202        <para>
2203         Add initdb <option>--sync-only</> option to sync the data directory to durable
2204         storage (Bruce Momjian)
2205        </para>
2206
2207        <para>
2208         This is used by <link
2209         linkend="pgupgrade"><application>pg_upgrade</></link>.
2210        </para>
2211       </listitem>
2212
2213       <listitem>
2214        <para>
2215         Make initdb issue a warning about placing the data directory at the
2216         top of a file system mount point (Bruce Momjian)
2217        </para>
2218       </listitem>
2219
2220      </itemizedlist>
2221
2222     </sect4>
2223
2224    </sect3>
2225
2226    <sect3>
2227     <title>Source Code</title>
2228
2229      <itemizedlist>
2230
2231       <listitem>
2232        <para>
2233         Add infrastructure to allow plug-in <link
2234         linkend="bgworker">background worker processes</link>
2235         (&Aacute;lvaro Herrera)
2236        </para>
2237       </listitem>
2238
2239       <listitem>
2240        <para>
2241         Create a centralized timeout <acronym>API</> (Zolt&aacute;n
2242         B&ouml;sz&ouml;rm&eacute;nyi)
2243        </para>
2244       </listitem>
2245
2246       <listitem>
2247        <para>
2248         Create libpgcommon and move <function>pg_malloc()</> and other
2249         functions there (&Aacute;lvaro Herrera, Andres Freund)
2250        </para>
2251
2252        <para>
2253         This allows libpgport to be used solely for portability-related code.
2254        </para>
2255       </listitem>
2256
2257       <listitem>
2258        <para>
2259         Add support for list links embedded in larger structs (Andres Freund)
2260        </para>
2261       </listitem>
2262
2263       <listitem>
2264        <para>
2265         Use <literal>SA_RESTART</> for all signals,
2266         including <literal>SIGALRM</> (Tom Lane)
2267        </para>
2268       </listitem>
2269
2270       <listitem>
2271        <para>
2272         Ensure that the correct text domain is used when
2273         translating <function>errcontext()</> messages
2274         (Heikki Linnakangas)
2275        </para>
2276       </listitem>
2277
2278       <listitem>
2279        <para>
2280         Standardize naming of client-side memory allocation functions (Tom Lane)
2281        </para>
2282       </listitem>
2283
2284       <listitem>
2285        <para>
2286         Provide support for <quote>static assertions</> that will fail at
2287         compile time if some compile-time-constant condition is not met
2288         (Andres Freund, Tom Lane)
2289        </para>
2290       </listitem>
2291
2292       <listitem>
2293        <para>
2294         Support <function>Assert()</> in client-side code (Andrew Dunstan)
2295        </para>
2296       </listitem>
2297
2298       <listitem>
2299        <para>
2300         Add decoration to inform the C compiler that some <function>ereport()</>
2301         and <function>elog()</> calls do not return (Peter Eisentraut,
2302         Andres Freund, Tom Lane, Heikki Linnakangas)
2303        </para>
2304       </listitem>
2305
2306       <listitem>
2307        <para>
2308         Allow options to be passed to the regression
2309         test output comparison utility via <link
2310         linkend="regress-evaluation"><envar>PG_REGRESS_DIFF_OPTS</></link>
2311         (Peter Eisentraut)
2312        </para>
2313       </listitem>
2314
2315       <listitem>
2316        <para>
2317         Add isolation tests for <link
2318         linkend="SQL-CREATEINDEX"><command>CREATE INDEX
2319         CONCURRENTLY</></link> (Abhijit Menon-Sen)
2320        </para>
2321       </listitem>
2322
2323       <listitem>
2324        <para>
2325         Remove typedefs for <type>int2</>/<type>int4</> as they are better
2326         represented as <type>int16</>/<type>int32</> (Peter Eisentraut)
2327        </para>
2328       </listitem>
2329
2330       <listitem>
2331        <para>
2332         Fix <link linkend="install">install-strip</link> on Mac <productname>OS
2333         X</> (Peter Eisentraut)
2334        </para>
2335       </listitem>
2336
2337       <listitem>
2338        <para>
2339         Remove <link linkend="configure">configure</link> flag
2340         <option>--disable-shared</>, as it is no longer supported
2341         (Bruce Momjian)
2342        </para>
2343       </listitem>
2344
2345       <listitem>
2346        <para>
2347         Rewrite pgindent in <application>Perl</> (Andrew Dunstan)
2348        </para>
2349       </listitem>
2350
2351       <listitem>
2352        <para>
2353         Provide Emacs macro to set Perl formatting to
2354         match <productname>PostgreSQL</>'s perltidy settings (Peter Eisentraut)
2355        </para>
2356       </listitem>
2357
2358       <listitem>
2359        <para>
2360         Run tool to check the keyword list whenever the backend grammar is
2361         changed (Tom Lane)
2362        </para>
2363       </listitem>
2364
2365       <listitem>
2366        <para>
2367         Change the way <literal>UESCAPE</> is lexed, to significantly reduce
2368         the size of the lexer tables (Heikki Linnakangas)
2369        </para>
2370       </listitem>
2371
2372       <listitem>
2373        <para>
2374         Centralize <application>flex</> and <application>bison</>
2375         <application>make</> rules (Peter Eisentraut)
2376        </para>
2377
2378        <para>
2379         This is useful for <application>pgxs</> authors.
2380        </para>
2381       </listitem>
2382
2383       <listitem>
2384        <para>
2385         Change many internal backend functions to return object <type>OID</>s
2386         rather than void (Dimitri Fontaine)
2387        </para>
2388
2389        <para>
2390         This is useful for event triggers.
2391        </para>
2392       </listitem>
2393
2394       <listitem>
2395        <para>
2396         Invent pre-commit/pre-prepare/pre-subcommit events for transaction
2397         callbacks (Tom Lane)
2398        </para>
2399
2400        <para>
2401         Loadable modules that use transaction callbacks might need modification
2402         to handle these new event types.
2403        </para>
2404       </listitem>
2405
2406       <listitem>
2407        <para>
2408         Add function <link
2409         linkend="functions-info-catalog-table"><function>pg_identify_object()</></link>
2410         to produce a machine-readable description of a database object
2411         (&Aacute;lvaro Herrera)
2412        </para>
2413       </listitem>
2414
2415       <listitem>
2416        <para>
2417         Add post-<command>ALTER</>-object server hooks (KaiGai Kohei)
2418        </para>
2419       </listitem>
2420
2421       <listitem>
2422        <para>
2423         Implement a generic binary heap and use it for Merge-Append
2424         operations (Abhijit Menon-Sen)
2425        </para>
2426       </listitem>
2427
2428       <listitem>
2429        <para>
2430         Provide a tool to help detect timezone abbreviation changes when
2431         updating the <filename>src/timezone/data</> files
2432         (Tom Lane)
2433        </para>
2434       </listitem>
2435
2436       <listitem>
2437        <para>
2438         Add <application>pkg-config</> support for <application>libpq</>
2439         and <application>ecpg</> libraries (Peter Eisentraut)
2440        </para>
2441       </listitem>
2442
2443       <listitem>
2444        <para>
2445         Remove <filename>src/tool/backend</>, now that the content is on
2446         the <productname>PostgreSQL</> wiki (Bruce Momjian)
2447        </para>
2448       </listitem>
2449
2450       <listitem>
2451        <para>
2452         Split out <link linkend="wal"><acronym>WAL</></link> reading as
2453         an independent facility (Heikki Linnakangas, Andres Freund)
2454        </para>
2455       </listitem>
2456
2457       <listitem>
2458        <para>
2459         Use a 64-bit integer to represent <link
2460         linkend="wal"><acronym>WAL</></link> positions
2461         (<structname>XLogRecPtr</>) instead of two 32-bit integers
2462         (Heikki Linnakangas)
2463        </para>
2464
2465        <para>
2466         Generally, tools that need to read the <acronym>WAL</> format
2467         will need to be adjusted.
2468        </para>
2469       </listitem>
2470
2471       <listitem>
2472        <para>
2473         Allow <link linkend="plpython">PL/Python</link> to support
2474         platform-specific include directories (Peter Eisentraut)
2475        </para>
2476       </listitem>
2477
2478       <listitem>
2479        <para>
2480         Allow <link linkend="plpython">PL/Python</link> on <productname>OS
2481         X</> to build against custom versions of <application>Python</>
2482         (Peter Eisentraut)
2483        </para>
2484       </listitem>
2485
2486      </itemizedlist>
2487
2488    </sect3>
2489
2490    <sect3>
2491     <title>Additional Modules</title>
2492
2493     <itemizedlist>
2494
2495       <listitem>
2496        <para>
2497         Add a <link linkend="postgres-fdw"><productname>Postgres</> foreign
2498         data wrapper</link> contrib module to allow access to
2499         other <productname>Postgres</> servers (Shigeru Hanada)
2500        </para>
2501
2502        <para>
2503         This foreign data wrapper supports writes.
2504        </para>
2505       </listitem>
2506
2507       <listitem>
2508        <para>
2509         Add <link linkend="pgxlogdump"><application>pg_xlogdump</></link>
2510         contrib program (Andres Freund)
2511        </para>
2512       </listitem>
2513
2514       <listitem>
2515        <para>
2516         Add support for indexing of regular-expression searches in
2517         <link linkend="pgtrgm"><productname>pg_trgm</></link>
2518         (Alexander Korotkov)
2519        </para>
2520       </listitem>
2521
2522       <listitem>
2523        <para>
2524         Improve <link linkend="pgtrgm"><productname>pg_trgm</></link>'s
2525         handling of multibyte characters (Tom Lane)
2526        </para>
2527
2528        <para>
2529         On a platform that does not have the wcstombs() or towlower() library
2530         functions, this could result in an incompatible change in the contents
2531         of <productname>pg_trgm</> indexes for non-ASCII data.  In such cases,
2532         <command>REINDEX</> those indexes to ensure correct search results.
2533        </para>
2534       </listitem>
2535
2536       <listitem>
2537        <para>
2538         Add a <link linkend="pgstattuple">pgstattuple</link> function to report
2539         the size of the pending-insertions list of a <acronym>GIN</> index
2540         (Fujii Masao)
2541        </para>
2542       </listitem>
2543
2544       <listitem>
2545        <para>
2546         Make <link linkend="oid2name"><application>oid2name</></link>,
2547         <link linkend="pgbench"><application>pgbench</></link>, and
2548         <link linkend="vacuumlo"><application>vacuumlo</></link> set
2549         <varname>fallback_application_name</> (Amit Kapila)
2550        </para>
2551       </listitem>
2552
2553       <listitem>
2554        <para>
2555         Improve output of <link
2556         linkend="pgtesttiming"><application>pg_test_timing</></link>
2557         (Bruce Momjian)
2558        </para>
2559       </listitem>
2560
2561       <listitem>
2562        <para>
2563         Improve output of <link
2564         linkend="pgtestfsync"><application>pg_test_fsync</></link>
2565         (Peter Geoghegan)
2566        </para>
2567       </listitem>
2568
2569       <listitem>
2570        <para>
2571         Create a dedicated foreign data wrapper, with its own option validator
2572         function, for <link linkend="dblink">dblink</link> (Shigeru Hanada)
2573        </para>
2574
2575        <para>
2576         When using this FDW to define the target of a <application>dblink</>
2577         connection, instead of using a hard-wired list of connection options,
2578         the underlying <application>libpq</> library is consulted to see what
2579         connection options it supports.
2580        </para>
2581       </listitem>
2582
2583     </itemizedlist>
2584
2585     <sect4>
2586      <title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>
2587
2588      <itemizedlist>
2589
2590       <listitem>
2591        <para>
2592         Allow <application>pg_upgrade</> to do dumps and restores in
2593         parallel (Bruce Momjian, Andrew Dunstan)
2594        </para>
2595
2596        <para>
2597         This allows parallel schema dump/restore of databases, as well as
2598         parallel copy/link of data files per tablespace.  Use the
2599         <option>--jobs</> option to specify the level of parallelism.
2600        </para>
2601       </listitem>
2602
2603       <listitem>
2604        <para>
2605         Make <application>pg_upgrade</> create Unix-domain sockets in
2606         the current directory (Bruce Momjian, Tom Lane)
2607        </para>
2608
2609        <para>
2610         This reduces the possibility that someone will accidentally connect
2611         during the upgrade.
2612        </para>
2613       </listitem>
2614
2615       <listitem>
2616        <para>
2617         Make <application>pg_upgrade</> <option>--check</> mode properly
2618         detect the location of non-default socket directories (Bruce
2619         Momjian, Tom Lane)
2620        </para>
2621       </listitem>
2622
2623       <listitem>
2624        <para>
2625         Improve performance of <application>pg_upgrade</> for databases
2626         with many tables (Bruce Momjian)
2627        </para>
2628       </listitem>
2629
2630       <listitem>
2631        <para>
2632         Improve <application>pg_upgrade</>'s logs by showing
2633         executed commands (&Aacute;lvaro Herrera)
2634        </para>
2635       </listitem>
2636
2637       <listitem>
2638        <para>
2639         Improve <application>pg_upgrade</>'s status display during
2640         copy/link (Bruce Momjian)
2641        </para>
2642       </listitem>
2643
2644      </itemizedlist>
2645
2646     </sect4>
2647
2648     <sect4>
2649      <title><link linkend="pgbench"><application>pgbench</></link></title>
2650
2651      <itemizedlist>
2652
2653       <listitem>
2654        <para>
2655         Add <option>--foreign-keys</> option to <application>pgbench</>
2656         (Jeff Janes)
2657        </para>
2658
2659        <para>
2660         This adds foreign key constraints to the standard tables created by
2661         <application>pgbench</>, for use in foreign key performance testing.
2662        </para>
2663       </listitem>
2664
2665       <listitem>
2666        <para>
2667         Allow <application>pgbench</> to aggregate performance statistics
2668         and produce output every <option>--aggregate-interval</>
2669         seconds (Tomas Vondra)
2670        </para>
2671       </listitem>
2672
2673       <listitem>
2674        <para>
2675         Add <application>pgbench</> <option>--sampling-rate</> option
2676         to control the percentage of transactions logged (Tomas Vondra)
2677        </para>
2678       </listitem>
2679
2680       <listitem>
2681        <para>
2682         Reduce and improve the status message output of
2683         <application>pgbench</>'s initialization mode (Robert Haas,
2684         Peter Eisentraut)
2685        </para>
2686       </listitem>
2687
2688       <listitem>
2689        <para>
2690         Add <application>pgbench</> <option>-q</> mode to print one output
2691         line every five seconds (Tomas Vondra)
2692        </para>
2693       </listitem>
2694
2695       <listitem>
2696        <para>
2697         Output <application>pgbench</> elapsed and estimated remaining
2698         time during initialization (Tomas Vondra)
2699        </para>
2700       </listitem>
2701
2702       <listitem>
2703        <para>
2704         Allow <application>pgbench</> to use much larger scale factors,
2705         by changing relevant columns from <type>integer</> to <type>bigint</>
2706         when the requested scale factor exceeds 20000
2707         (Greg Smith)
2708        </para>
2709       </listitem>
2710
2711     </itemizedlist>
2712
2713     </sect4>
2714
2715    </sect3>
2716
2717    <sect3>
2718     <title>Documentation</title>
2719
2720     <itemizedlist>
2721
2722       <listitem>
2723        <para>
2724         Allow <productname>EPUB</>-format documentation to be created
2725         (Peter Eisentraut)
2726        </para>
2727       </listitem>
2728
2729       <listitem>
2730        <para>
2731         Update <productname>FreeBSD</> kernel configuration documentation
2732         (Brad Davis)
2733        </para>
2734       </listitem>
2735
2736       <listitem>
2737        <para>
2738         Improve <link linkend="tutorial-window"><literal>WINDOW</>
2739         function</link> documentation (Bruce Momjian, Florian Pflug)
2740        </para>
2741       </listitem>
2742
2743       <listitem>
2744        <para>
2745         Add <link linkend="docguide-toolsets">instructions</link> for setting
2746         up the documentation tool chain on Mac <productname>OS X</>
2747         (Peter Eisentraut)
2748        </para>
2749       </listitem>
2750
2751       <listitem>
2752        <para>
2753         Improve <link
2754         linkend="guc-commit-delay"><varname>commit_delay</></link>
2755         documentation (Peter Geoghegan)
2756        </para>
2757       </listitem>
2758
2759     </itemizedlist>
2760
2761    </sect3>
2762
2763   </sect2>
2764  </sect1>