]> granicus.if.org Git - postgresql/blob - doc/src/sgml/release-9.3.sgml
9.3 release notes: improve cached plan mention
[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">
5   <title>Release 9.3</title>
6
7   <note>
8    <title>Release Date</title>
9    <simpara>2013-XX-XX, CURRENT AS OF 2013-05-03</simpara>
10   </note>
11
12   <sect2>
13    <title>Overview</title>
14
15    <para>
16     Major enhancements include:
17    </para>
18
19     <!-- This list duplicates items below, but without authors or details-->
20
21    <para>
22     ADD HERE ...
23    </para>
24
25    <para>
26     The above items are explained in more detail in the sections below.
27    </para>
28
29   </sect2>
30
31   <sect2>
32
33   <title>Migration to Version 9.3</title>
34
35    <para>
36     A dump/restore using <link
37     linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, or use
38     of <link linkend="pgupgrade"><application>pg_upgrade</></link>, is
39     required for those wishing to migrate data from any previous release.
40    </para>
41
42    <para>
43     Version 9.3 contains a number of changes that may affect compatibility
44     with previous releases.  Observe the following incompatibilities:
45    </para>
46
47    <sect3>
48     <title>Server Settings</title>
49
50      <itemizedlist>
51
52       <listitem>
53        <para>
54         Rename <varname>replication_timeout</> to <link
55         linkend="guc-wal-sender-timeout"><varname>wal_sender_timeout</></link>
56         (Amit Kapila)
57        </para>
58
59        <para>
60         This setting controls the <link
61         linkend="wal"><acronym>WAL</></link> sender timeout.
62        </para>
63       </listitem>
64
65       <listitem>
66        <para>
67         Require superuser privileges to set <link
68         linkend="guc-commit-delay"><varname>commit_delay</></link>
69         because it can now potentially delay other sessions (Simon Riggs)
70        </para>
71       </listitem>
72
73       <listitem>
74        <para>
75         Allow in-memory sorts to use their full memory allocation (Jeff Janes)
76        </para>
77
78        <para>
79         Users who have set <link
80         linkend="guc-work-mem"><varname>work_mem</></link> based on the
81         previous behavior should revisit that setting.
82        </para>
83       </listitem>
84
85      </itemizedlist>
86
87    </sect3>
88
89    <sect3>
90     <title>Other</title>
91
92      <itemizedlist>
93
94       <listitem>
95        <para>
96         Throw an error if expiring tuple is again updated or deleted (Kevin Grittner)
97         DETAILS?
98        </para>
99       </listitem>
100
101       <listitem>
102        <para>
103         Change <link linkend="SQL-CREATETABLE"><literal>ON UPDATE
104         SET NULL/SET DEFAULT</></link> foreign key actions to affect
105         all referenced columns, not just those referenced in the
106         <command>UPDATE</> (Tom Lane)
107        </para>
108
109        <para>
110         Previously only columns referenced in the <command>UPDATE</> were
111         set to null or <literal>DEFAULT</>.
112        </para>
113       </listitem>
114
115       <listitem>
116        <para>
117         Internally store default foreign key matches (non-<literal>FULL</>,
118         non-<literal>PARTIAL</>) as <quote>simple</> (Tom Lane)
119        </para>
120
121        <para>
122         These were previously stored as "&lt;unspecified&gt;".
123         This changes the value stored in system column <link
124         linkend="catalog-pg-constraint"><structname>pg_constraint.confmatchtype</></link>.
125        </para>
126       </listitem>
127
128       <listitem>
129        <para>
130         Store <link linkend="wal"><acronym>WAL</></link> in a continuous
131         stream, rather than skipping the last 16MB segment every 4GB
132         (Heikki Linnakangas)
133        </para>
134
135        <para>
136         Previously, <acronym>WAL</> files with names ending in <literal>FF</>
137         were not used.  If you have <acronym>WAL</> backup or restore scripts
138         that took that skipping into account, they will need to be adjusted.
139        </para>
140       </listitem>
141
142      </itemizedlist>
143
144    </sect3>
145
146   </sect2>
147
148   <sect2>
149    <title>Changes</title>
150
151    <para>
152     Below you will find a detailed account of the changes between
153     <productname>PostgreSQL</productname> 9.3 and the previous major
154     release.
155    </para>
156
157    <sect3>
158     <title>Server</title>
159
160     <sect4>
161      <title>Locking</title>
162
163      <itemizedlist>
164
165       <listitem>
166        <para>
167         Prevent non-key-field row updates from locking foreign key rows
168         (&Aacute;lvaro Herrera, Noah Misch, Andres Freund, Alexander
169         Shulgin, Marti Raudsepp)
170        </para>
171
172        <para>
173         This improves concurrency and reduces the probability of deadlocks.
174         <command>UPDATE</>s on non-key columns use the new <command>SELECT
175         FOR NO KEY UPDATE</> lock type, and foreign key checks use the
176         new <command>SELECT FOR KEY SHARE</> lock mode.
177        </para>
178       </listitem>
179
180       <listitem>
181        <para>
182         Add configuration variable <link
183         linkend="guc-lock-timeout"><varname>lock_timeout</></link> to limit
184         lock wait duration (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
185        </para>
186       </listitem>
187
188       <listitem>
189        <para>
190         Add cache of local locks (Jeff Janes)
191        </para>
192
193        <para>
194         This speeds lock release at statement completion in
195         transactions that hold many locks; it is particularly useful
196         for <application>pg_dump</> and the restoration of such dumps.
197        </para>
198       </listitem>
199
200      </itemizedlist>
201
202     </sect4>
203
204     <sect4>
205      <title>Indexes</title>
206
207      <itemizedlist>
208
209       <listitem>
210        <para>
211         Add <link linkend="rangetypes-indexing"><type>SP-GiST</></link>
212         support for range data types (Alexander Korotkov)
213        </para>
214       </listitem>
215
216       <listitem>
217        <para>
218         Allow unlogged <link linkend="SPGiST"><type>GiST</></link> indexes
219         (Jeevan Chalke)
220        </para>
221       </listitem>
222
223       <listitem>
224        <para>
225         Improve concurrency of hash indexes (Robert Haas)
226        </para>
227       </listitem>
228
229      </itemizedlist>
230
231     </sect4>
232
233     <sect4>
234      <title>Optimizer</title>
235
236      <itemizedlist>
237
238       <listitem>
239        <para>
240         Collect and use histograms for <link linkend="rangetypes">range
241         types</link> (Alexander Korotkov)
242        </para>
243       </listitem>
244
245       <listitem>
246        <para>
247         Reduce optimizer overhead by discarding plans with unneeded cheaper
248         startup costs (Tom Lane)
249        </para>
250       </listitem>
251
252       <listitem>
253        <para>
254         Improve optimizer cost estimation for index access (Tom Lane)
255        </para>
256       </listitem>
257
258      </itemizedlist>
259
260     </sect4>
261
262     <sect4>
263      <title>General Performance</title>
264
265      <itemizedlist>
266
267       <listitem>
268        <para>
269         Add <link linkend="SQL-COPY"><command>COPY FREEZE</></link>
270         option to avoid the overhead of marking tuples as committed later
271         (Simon Riggs, Jeff Davis)
272        </para>
273       </listitem>
274
275       <listitem>
276        <para>
277         Improve performance of <link
278         linkend="datatype-numeric"><type>NUMERIC</></link> calculations
279         (Kyotaro Horiguchi)
280        </para>
281       </listitem>
282
283       <listitem>
284        <para>
285         Improve grouping of sessions waiting for <link
286         linkend="guc-commit-delay"><varname>commit_delay</></link>
287         (Peter Geoghegan)
288        </para>
289
290        <para>
291         This improves the usefulness and behavior of
292         <varname>commit_delay</>.
293        </para>
294       </listitem>
295
296       <listitem>
297        <para>
298         Improve performance for transactions creating, rebuilding, or
299         dropping many relations (Jeff Janes, Tomas Vondra)
300        </para>
301       </listitem>
302
303       <listitem>
304        <para>
305         Improve performance of the <link
306         linkend="SQL-CREATETABLE"><command>CREATE TEMPORARY TABLE ... ON
307         COMMIT DELETE ROWS</></link> clause by only issuing delete if
308         the temporary table was accessed (Heikki Linnakangas)
309        </para>
310       </listitem>
311
312       <listitem>
313        <para>
314         Have vacuum recheck visibility after it has removed expired tuples
315         (Pavan Deolasee)
316        </para>
317
318        <para>
319         This increases the chance of a page being marked as all-visible.
320        </para>
321       </listitem>
322
323       <listitem>
324        <para>
325         Split the <link
326         linkend="guc-stats-temp-directory"><filename>pg_stat_tmp</></link>
327         statistics file into per-database and global files (Tomas Vondra)
328        </para>
329
330        <para>
331         This reduces the I/O overhead for statistics tracking.
332        </para>
333       </listitem>
334
335      </itemizedlist>
336
337     </sect4>
338
339     <sect4>
340      <title>Monitoring</title>
341
342      <itemizedlist>
343
344       <listitem>
345        <para>
346         Add optional ability to <link
347         linkend="app-initdb-data-checksums">checksum</link> data pages and
348         report corruption (Simon Riggs, Jeff Davis, Greg Smith, Ants Aasma)
349        </para>
350
351        <para>
352         The checksum option can be set during <link
353         linkend="APP-INITDB">initdb</link>.
354        </para>
355       </listitem>
356
357       <listitem>
358        <para>
359         Allow <link
360         linkend="functions-admin-signal-table"><function>pg_terminate_backend()</></link>
361         to terminate other backends with the same role (Dan Farina)
362        </para>
363
364        <para>
365         Previously, only superusers could terminate other sessions.
366        </para>
367       </listitem>
368
369       <listitem>
370        <para>
371         Allow the <link
372         linkend="runtime-config-statistics-collector">statistics
373         collector</link> to operate properly in cases where the system
374         clock goes backwards (Tom Lane)
375        </para>
376
377        <para>
378         Previously statistics collection would stop until the time again
379         reached the previously-stored latest time.
380        </para>
381       </listitem>
382
383      </itemizedlist>
384
385     </sect4>
386
387     <sect4>
388      <title>Authentication</title>
389
390      <itemizedlist>
391
392       <listitem>
393        <para>
394         Improve <link linkend="auth-ldap"><acronym>LDAP</></link> error
395         reporting and documentation (Peter Eisentraut)
396        </para>
397       </listitem>
398
399       <listitem>
400        <para>
401         Add support for <acronym>LDAP</> authentication to be specified
402         in <acronym>URL</> format (Peter Eisentraut)
403        </para>
404       </listitem>
405
406       <listitem>
407        <para>
408         Change the <link
409         linkend="guc-ssl-ciphers"><varname>ssl_ciphers</></link> parameter
410         to start with <literal>DEFAULT</>, rather than <literal>ALL</>,
411         then remove insecure ciphers (Magnus Hagander)
412        </para>
413
414        <para>
415         It is assumed <literal>DEFAULT</> is more appropriate cipher set.
416        </para>
417       </listitem>
418
419       <listitem>
420        <para>
421         Parse and load <link
422         linkend="auth-username-maps"><filename>pg_ident.conf</></link>
423         once, not during each connection (Amit Kapila)
424        </para>
425
426        <para>
427         This is similar to how <link
428         linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></link>
429         is processed.
430        </para>
431       </listitem>
432
433      </itemizedlist>
434
435     </sect4>
436
437     <sect4>
438      <title>Server Settings</title>
439
440      <itemizedlist>
441
442       <listitem>
443        <para>
444         Dramatically reduce System V <link linkend="sysvipc">shared
445         memory</link> requirements (Robert Haas)
446        </para>
447
448        <para>
449         Instead, on Unix-like systems, <function>mmap()</> is used for
450         shared memory.  For most users, this will eliminate the need to
451         adjust kernel parameters for shared memory.
452        </para>
453       </listitem>
454
455       <listitem>
456        <para>
457         Allow the postmaster to listen on multiple Unix-domain sockets
458         (Honza Hor&aacute;k)
459        </para>
460
461        <para>
462         The configuration parameter
463         <varname>unix_socket_directory</> is replaced by <link
464         linkend="guc-unix-socket-directories"><varname>unix_socket_directories</></link>,
465         which accepts a list of directories.
466        </para>
467       </listitem>
468
469       <listitem>
470        <para>
471         Allow a directory of configuration files to be processed (Magnus
472         Hagander, Greg Smith, Selena Deckelmann)
473        </para>
474
475        <para>
476         Such a directory is specified with <link
477         linkend="config-includes"><varname>include_dir</></link> in the server
478         configuration file.
479        </para>
480       </listitem>
481
482       <listitem>
483        <para>
484         Increase the maximum <link
485         linkend="APP-INITDB">initdb</link>-configured value for <link
486         linkend="guc-shared-buffers"><varname>shared_buffers</></link>
487         to 128MB (Robert Haas)
488        </para>
489
490        <para>
491         This is the maximum value that initdb will attempt to set in <link
492         linkend="config-setting-configuration-file"><filename>postgresql.conf</></link>;
493         the previous maximum was 32MB.
494        </para>
495       </listitem>
496
497       <listitem>
498        <para>
499         Remove the <link linkend="guc-external-pid-file">external
500         <acronym>PID</> file</link> on postmaster exit (Peter Eisentraut)
501        </para>
502       </listitem>
503
504      </itemizedlist>
505
506     </sect4>
507
508    </sect3>
509
510    <sect3>
511     <title>Replication and Recovery</title>
512
513      <itemizedlist>
514
515       <listitem>
516        <para>
517         Allow a streaming replication standby to <link
518         linkend="protocol-replication">follow a timeline switch</link>
519         (Heikki Linnakangas)
520        </para>
521
522        <para>
523         This allows streaming standbys to feed from newly-promoted slaves.
524         Previously slaves required access to a <acronym>WAL</> archive directory to
525         accomplish this.
526        </para>
527       </listitem>
528
529       <listitem>
530        <para>
531         Add <acronym>SQL</> functions <link
532         linkend="functions-admin-backup"><function>pg_is_in_backup()</></link>
533         and <link
534         linkend="functions-admin-backup"><function>pg_backup_start_time()</></link>
535         (Gilles Darold)
536        </para>
537
538        <para>
539         These functions report the status of base backups.
540        </para>
541       </listitem>
542
543       <listitem>
544        <para>
545         Improve performance of streaming log shipping with <link
546         linkend="guc-synchronous-commit"><varname>synchronous_commit</></link>
547         disabled (Andres Freund)
548        </para>
549       </listitem>
550
551       <listitem>
552        <para>
553         Allow much faster promotion of a streaming standby to primary (Simon
554         Riggs, Kyotaro Horiguchi)
555        </para>
556       </listitem>
557
558       <listitem>
559        <para>
560         Add the last checkpoint's redo location to <link
561         linkend="APP-PGCONTROLDATA"><application>pg_controldata</></link>'s
562         output (Fujii Masao)
563        </para>
564
565        <para>
566         This information is useful for determining the <acronym>WAL</>
567         files needed for restore.
568        </para>
569       </listitem>
570
571       <listitem>
572        <para>
573         Allow tools like <link
574         linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
575         to run on computers with different architectures (Heikki
576         Linnakangas)
577        </para>
578
579        <para>
580         WAL files can still only be replayed on servers with the same
581         architecture as the primary; but they can now be transmitted to and
582         stored on machines of any architecture, since the
583         streaming replication protocol is now machine-independent.
584        </para>
585       </listitem>
586
587       <listitem>
588        <para>
589         Have <link
590         linkend="app-pgbasebackup"><application>pg_basebackup</></link>
591         <option>--write-recovery-conf</> output a
592         minimal <filename>recovery.conf</> (Zolt&aacute;n
593         B&ouml;sz&ouml;rm&eacute;nyi, Magnus Hagander)
594        </para>
595
596        <para>
597         This simplifies setting up a standby server.
598        </para>
599       </listitem>
600
601       <listitem>
602        <para>
603         Allow <link
604         linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
605         and <link
606         linkend="app-pgbasebackup"><application>pg_basebackup</></link>
607         <option>--xlog-method</> to handle streaming timeline switches
608         (Heikki Linnakangas)
609        </para>
610       </listitem>
611
612       <listitem>
613        <para>
614         Add <link
615         linkend="guc-wal-receiver-timeout"><varname>wal_receiver_timeout</></link>
616         parameter to control the <acronym>WAL</> receiver timeout
617         (Amit Kapila)
618        </para>
619
620        <para>
621         This allows more rapid detection of connection failure.
622        </para>
623       </listitem>
624
625      </itemizedlist>
626
627     <sect4>
628      <title><link linkend="wal">Write-Ahead Log</link>
629      (<acronym>WAL</>)</title>
630
631      <itemizedlist>
632
633       <listitem>
634        <para>
635         Change the <acronym>WAL</> record format to allow splitting the record header
636         across pages (Heikki Linnakangas)
637        </para>
638
639        <para>
640         The new format is slightly more compact, and is more efficient to
641         write.
642        </para>
643       </listitem>
644
645      </itemizedlist>
646
647     </sect4>
648
649    </sect3>
650
651    <sect3>
652     <title>Queries</title>
653
654      <itemizedlist>
655
656       <listitem>
657        <para>
658         Implement <acronym>SQL</>-standard <link
659         linkend="queries-lateral"><literal>LATERAL</></link> option for
660         <literal>FROM</>-clause subqueries and function calls (Tom Lane)
661        </para>
662
663        <para>
664         This feature allows subqueries and functions in <literal>FROM</> to
665         reference columns from other tables in the <literal>FROM</>
666         clause. The <literal>LATERAL</> keyword is optional for functions.
667        </para>
668       </listitem>
669
670       <listitem>
671        <para>
672         Add support for piping <link
673         linkend="SQL-COPY"><command>COPY</></link> and <link
674         linkend="APP-PSQL"><application>psql</></link> <command>\copy</>
675         to/from an external program (Etsuro Fujita)
676        </para>
677       </listitem>
678
679      </itemizedlist>
680
681    </sect3>
682
683    <sect3>
684     <title>Object Manipulation</title>
685
686      <itemizedlist>
687
688       <listitem>
689        <para>
690         Add support for <link linkend="event-triggers">event triggers</link>
691         (Dimitri Fontaine, Robert Haas, &Aacute;lvaro Herrera)
692        </para>
693
694        <para>
695         This allows server-side functions written in event-enabled
696         languages, e.g. C, PL/pgSQL, to be called when DDL commands
697         are run.
698        </para>
699       </listitem>
700
701       <listitem>
702        <para>
703         Allow a multirow <link
704         linkend="SQL-VALUES"><literal>VALUES</></link> clause in a rule
705         to reference <literal>OLD</>/<literal>NEW</> (Tom Lane)
706        </para>
707       </listitem>
708
709       <listitem>
710        <para>
711         Add <link linkend="SQL-CREATESCHEMA"><command>CREATE SCHEMA ... IF
712         NOT EXISTS</></link> clause (Fabr&iacute;zio de Royes Mello)
713        </para>
714       </listitem>
715
716       <listitem>
717        <para>
718         Have <link linkend="SQL-REASSIGN-OWNED"><command>REASSIGN
719         OWNED</></link> also change ownership of shared objects
720         (&Aacute;lvaro Herrera)
721        </para>
722       </listitem>
723
724      </itemizedlist>
725
726     <sect4>
727      <title><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link></title>
728
729      <itemizedlist>
730
731       <listitem>
732        <para>
733         Suppress messages about implicit index and sequence creation
734         (Robert Haas)
735        </para>
736
737        <para>
738         These messages now appear at <literal>DEBUG1</> verbosity, so that
739         they will not be shown by default.
740        </para>
741       </listitem>
742
743       <listitem>
744        <para>
745         Allow <link linkend="SQL-DROPTABLE"><command>DROP TABLE IF
746         EXISTS</></link> to succeed when a non-existent schema is specified
747         in the table name (Bruce Momjian)
748        </para>
749
750        <para>
751          Previously, it threw an error if the schema did not exist.
752        </para>
753       </listitem>
754
755      </itemizedlist>
756
757     </sect4>
758
759     <sect4>
760      <title>Constraints</title>
761
762      <itemizedlist>
763
764       <listitem>
765        <para>
766         Provide clients with <link
767         linkend="libpq-pqresulterrorfield">constraint violation details</link>
768         as separate fields (Pavel Stehule)
769        </para>
770
771        <para>
772         This allows clients to retrieve table, column, data type, or constraint
773         name error details.  Previously such information had to be extracted from
774         error strings.  Client library support is required to access these
775         fields.
776        </para>
777       </listitem>
778
779      </itemizedlist>
780
781     </sect4>
782
783     <sect4>
784      <title><command>ALTER</></title>
785
786      <itemizedlist>
787
788       <listitem>
789        <para>
790         Support <literal>IF NOT EXISTS</> option in <link
791         linkend="SQL-ALTERTYPE"><command>ALTER TYPE ... ADD VALUE</></link>
792         (Andrew Dunstan)
793        </para>
794
795        <para>
796         This is useful for conditionally adding values to enumerated types.
797        </para>
798       </listitem>
799
800       <listitem>
801        <para>
802         Add <link linkend="SQL-ALTERROLE"><command>ALTER ROLE ALL
803         SET</></link> to add settings to all users (Peter Eisentraut)
804        </para>
805
806        <para>
807         This allows settings to apply to all users in all databases. <link
808         linkend="SQL-ALTERDATABASE"><command>ALTER DATABASE SET</></link>
809         already allowed addition of settings for all users in a single
810         database.  <filename>postgresql.conf</> has a similar effect.
811        </para>
812       </listitem>
813
814       <listitem>
815        <para>
816         Add support for <link linkend="SQL-ALTERRULE"><command>ALTER RULE
817         ... RENAME</></link> (Ali Dar)
818        </para>
819       </listitem>
820
821      </itemizedlist>
822
823     </sect4>
824
825     <sect4>
826      <title><link linkend="rules-views"><command>VIEWs</></link></title>
827
828      <itemizedlist>
829
830       <listitem>
831        <para>
832         Add <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
833         views</link> (Kevin Grittner)
834        </para>
835
836        <para>
837         Unlike ordinary views, where the base tables are read on every access,
838         materialized views create physical tables at creation or refresh time.
839         Access to the materialized view then reads from its physical
840         table. There is not yet any facility for incrementally refreshing
841         materialized views or auto-accessing them via base table access.
842        </para>
843       </listitem>
844
845       <listitem>
846        <para>
847         Make simple views <link
848         linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
849         (Dean Rasheed)
850        </para>
851
852        <para>
853         Simple views that reference some or all columns from a
854         single base table are now updatable by default. More
855         complex views can be made updatable using <link
856         linkend="SQL-CREATETRIGGER"><literal>INSTEAD OF</></link> triggers
857         or <link linkend="SQL-CREATERULE"><literal>INSTEAD</></link> rules.
858        </para>
859       </listitem>
860
861       <listitem>
862        <para>
863         Improve view/rule printing code to handle cases where referenced
864         tables are renamed, or columns are renamed, added, or dropped
865         (Tom Lane)
866        </para>
867
868        <para>
869         Table and column renamings can produce cases where, if we merely
870         substitute the new name into the original text of a rule or view, the
871         result is ambiguous.  This patch fixes the rule-dumping code to insert
872         table and column aliases if needed to preserve the original semantics.
873        </para>
874       </listitem>
875
876       <listitem>
877        <para>
878         Add <link linkend="SQL-CREATEVIEW"><command>CREATE RECURSIVE
879         VIEW</></link> syntax (Peter Eisentraut)
880        </para>
881
882        <para>
883         Internally this is translated into <command>CREATE VIEW ... WITH
884         RECURSIVE ...</>.
885        </para>
886       </listitem>
887
888      </itemizedlist>
889
890     </sect4>
891
892    </sect3>
893
894    <sect3>
895     <title>Data Types</title>
896
897     <itemizedlist>
898
899       <listitem>
900        <para>
901         Increase the maximum length of <link linkend="lo-open">large
902         objects</link> from 2GB to 4TB (Nozomi Anzai, Yugo Nagata)
903        </para>
904
905        <para>
906         This change includes new libpq and server-side 64-bit-capable
907         large object access functions.
908        </para>
909       </listitem>
910
911       <listitem>
912        <para>
913         Allow text <link linkend="datatype-timezones">timezone
914         designations</link>, e.g. <quote>America/Chicago</> when using
915         the <acronym>ISO</> <quote>T</> <type>timestamptz</type> format (Bruce Momjian)
916        </para>
917       </listitem>
918
919     </itemizedlist>
920
921    <sect4>
922     <title><link linkend="datatype-json"><type>JSON</></link></title>
923
924     <itemizedlist>
925
926       <listitem>
927        <para>
928         Add <link linkend="functions-json">operators and functions</link>
929         to extract values from <type>JSON</> data strings (Andrew Dunstan)
930        </para>
931       </listitem>
932
933       <listitem>
934        <para>
935         Allow <type>JSON</> data strings to be <link
936         linkend="functions-json-table">converted into records</link>
937         (Andrew Dunstan)
938        </para>
939       </listitem>
940
941       <listitem>
942        <para>
943         Add <link linkend="functions-json-table">functions</link>
944         to convert values, records, and hstore data to <type>JSON</>
945         (Andrew Dunstan)
946        </para>
947       </listitem>
948
949     </itemizedlist>
950
951    </sect4>
952
953    </sect3>
954
955
956    <sect3>
957     <title>Functions</title>
958
959      <itemizedlist>
960
961       <listitem>
962        <para>
963         Add <link
964         linkend="array-functions-table"><function>array_remove()</></link>
965         and <link
966         linkend="array-functions-table"><function>array_replace()</></link>
967         functions (Marco Nenciarini, Gabriele Bartolini)
968        </para>
969       </listitem>
970
971       <listitem>
972        <para>
973         Allow <link
974         linkend="functions-string-other"><function>concat()</></link>
975         and <link
976         linkend="functions-string-format"><function>format()</></link>
977         to properly expand <literal>VARIADIC</>-labeled arguments
978         (Pavel Stehule)
979        </para>
980       </listitem>
981
982       <listitem>
983        <para>
984         Improve <link
985         linkend="functions-string-format"><function>format()</></link>
986         to handle field width and left/right alignment (Pavel Stehule)
987        </para>
988       </listitem>
989
990       <listitem>
991        <para>
992         Have <link
993         linkend="functions-formatting-table"><function>to_char()</></link>,
994         <link
995         linkend="functions-formatting-table"><function>to_date()</></link>,
996         and <link
997         linkend="functions-formatting-table"><function>to_timestamp()</></link>
998         properly handle negative century designations (<literal>CC</>)
999         (Bruce Momjian)
1000        </para>
1001
1002        <para>
1003         Previously the behavior was either wrong or inconsistent
1004         with positive/<acronym>AD</> handling, e.g. format mask
1005         <quote>IYYY-IW-DY</>.
1006        </para>
1007       </listitem>
1008
1009       <listitem>
1010        <para>
1011         Have <link
1012         linkend="functions-formatting-table"><function>to_date()</></link>
1013         and <link
1014         linkend="functions-formatting-table"><function>to_timestamp()</></link>
1015         return proper results when mixing <acronym>ISO</> and Gregorian
1016         week/day designations (Bruce Momjian)
1017        </para>
1018       </listitem>
1019
1020       <listitem>
1021        <para>
1022         Cause <link
1023         linkend="functions-info-catalog-table"><function>pg_get_viewdef()</></link>
1024         to start a new line by default after each <link
1025         linkend="SQL-SELECT"><command>SELECT</></link> target list entry and
1026         <literal>FROM</> entry (Marko Tiikkaja)
1027        </para>
1028
1029        <para>
1030         This reduces line length in view printing, for instance in <link
1031         linkend="APP-PGDUMP"><application>pg_dump</></link> output.
1032        </para>
1033       </listitem>
1034
1035       <listitem>
1036        <para>
1037         Fix <function>map_sql_value_to_xml_value()</> to print values of
1038         domain types the same way their base type would be printed
1039         (Pavel Stehule)
1040        </para>
1041
1042        <para>
1043         There are special formatting rules for certain built-in types such as
1044         <type>boolean</>; these rules now also apply to domains over these
1045         types.
1046        </para>
1047       </listitem>
1048
1049       <listitem>
1050        <para>
1051         Force cached plans to be replanned if the <link
1052         linkend="guc-search-path"><varname>search_path</></link> changes
1053         (Tom Lane)
1054        </para>
1055
1056        <para>
1057         Previously cached plans already generated in the current session
1058         ignored <varname>search_path</> changes.
1059        </para>
1060       </listitem>
1061
1062      </itemizedlist>
1063
1064    </sect3>
1065
1066    <sect3>
1067     <title>Server-Side Languages</title>
1068
1069      <itemizedlist>
1070
1071       <listitem>
1072        <para>
1073         Allow <link linkend="spi-spi-execute"><acronym>SPI</></link>
1074         functions to access the number of rows processed by
1075         <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1076        </para>
1077       </listitem>
1078
1079      </itemizedlist>
1080
1081     <sect4>
1082      <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
1083
1084      <itemizedlist>
1085
1086       <listitem>
1087        <para>
1088         Allow PL/pgSQL to use <literal>RETURN</> with a composite-type
1089         expression (Asif Rehman)
1090        </para>
1091
1092        <para>
1093         Previously, in a function returning a composite type,
1094         <literal>RETURN</> could only reference a variable of that type.
1095        </para>
1096       </listitem>
1097
1098       <listitem>
1099        <para>
1100         Allow PL/pgSQL to access the number of rows processed by
1101         <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1102        </para>
1103
1104        <para>
1105         The command is <link
1106         linkend="plpgsql-statements-diagnostics"><command>GET DIAGNOSTICS
1107         x = ROW_COUNT</></link>.
1108        </para>
1109       </listitem>
1110
1111       <listitem>
1112        <para>
1113         Allow greater flexibility in where keywords can be used in PL/pgSQL (Tom Lane)
1114        </para>
1115       </listitem>
1116
1117     </itemizedlist>
1118
1119     </sect4>
1120
1121     <sect4>
1122      <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
1123
1124      <itemizedlist>
1125
1126       <listitem>
1127        <para>
1128         Add PL/Python result object string handler (Peter Eisentraut)
1129        </para>
1130
1131        <para>
1132         This allows <literal>plpy.debug(rv)</literal> to output something reasonable.
1133        </para>
1134       </listitem>
1135
1136       <listitem>
1137        <para>
1138         Make PL/Python convert OID values to a proper Python numeric type
1139         (Peter Eisentraut)
1140        </para>
1141       </listitem>
1142
1143       <listitem>
1144        <para>
1145         Handle <link linkend="spi"><acronym>SPI</></link> errors raised
1146         explicitly (with PL/Python's <literal>RAISE</>) the same as
1147         internal <acronym>SPI</> errors (Oskari Saarenmaa and Jan Urbanski)
1148        </para>
1149       </listitem>
1150
1151      </itemizedlist>
1152
1153     </sect4>
1154
1155    </sect3>
1156
1157    <sect3>
1158     <title>Client Applications</title>
1159
1160     <itemizedlist>
1161
1162       <listitem>
1163        <para>
1164         Add command-line utility <link
1165         linkend="app-pg-isready"><application>pg_isready</></link> to
1166         check if the server is ready to accept connections (Phil Sorber)
1167        </para>
1168       </listitem>
1169
1170       <listitem>
1171        <para>
1172         Support multiple <option>--table</> arguments for <link
1173         linkend="APP-PGRESTORE"><application>pg_restore</></link>,
1174         <link linkend="APP-CLUSTERDB"><application>clusterdb</></link>,
1175         <link linkend="APP-REINDEXDB"><application>reindexdb</></link>,
1176         and <link linkend="APP-VACUUMDB"><application>vacuumdb</></link>
1177         (Josh Kupershmidt)
1178        </para>
1179
1180        <para>
1181         This is similar to the <link
1182         linkend="APP-PGDUMP"><application>pg_dump</></link> <option>--table</>
1183         option.
1184        </para>
1185       </listitem>
1186
1187       <listitem>
1188        <para>
1189         Add <option>--dbname</> option to <link
1190         linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, <link
1191         linkend="app-pgbasebackup"><application>pg_basebackup</></link>, and
1192         <link
1193         linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
1194         to specify the connection string (Amit Kapila)
1195        </para>
1196       </listitem>
1197
1198       <listitem>
1199        <para>
1200         Add libpq function <link
1201         linkend="libpq-pqconninfo"><function>PQconninfo()</></link>
1202         to return connection information (Zolt&aacute;n
1203         B&ouml;sz&ouml;rm&eacute;nyi, Magnus Hagander)
1204        </para>
1205       </listitem>
1206
1207     </itemizedlist>
1208
1209     <sect4>
1210      <title><link linkend="APP-PSQL"><application>psql</></link></title>
1211
1212      <itemizedlist>
1213
1214       <listitem>
1215        <para>
1216         Adjust function cost settings so <application>psql</> tab
1217         completion and pattern searching is more efficient (Tom Lane)
1218        </para>
1219       </listitem>
1220
1221       <listitem>
1222        <para>
1223         Improve <application>psql</> tab completion coverage (Jeff Janes,
1224         Peter Eisentraut)
1225        </para>
1226       </listitem>
1227
1228       <listitem>
1229        <para>
1230         Allow the <application>psql</> <option>--single-transaction</> mode to work when
1231         reading from standard input (Fabien Coelho, Robert Haas)
1232        </para>
1233
1234        <para>
1235         Previously this option only worked when reading from a file.
1236        </para>
1237       </listitem>
1238
1239       <listitem>
1240        <para>
1241         Remove <application>psql</> warning when connecting to an older
1242         server (Peter Eisentraut)
1243        </para>
1244
1245        <para>
1246         The warning when connecting to a newer server was retained.
1247        </para>
1248       </listitem>
1249
1250      </itemizedlist>
1251
1252     <sect5>
1253      <title><link linkend="R2-APP-PSQL-4">Backslash Commands</link></title>
1254
1255      <itemizedlist>
1256
1257       <listitem>
1258        <para>
1259         Add <application>psql</> <command>\watch</> command to repeatedly
1260         execute commands (Will Leinweber)
1261        </para>
1262       </listitem>
1263
1264       <listitem>
1265        <para>
1266         Add <application>psql</> command <command>\gset</> to store query
1267         results in <application>psql</> variables (Pavel Stehule)
1268        </para>
1269       </listitem>
1270
1271       <listitem>
1272        <para>
1273         Add <acronym>SSL</> information to <application>psql</>'s
1274         <command>\conninfo</> command (Alastair Turner)
1275        </para>
1276       </listitem>
1277
1278       <listitem>
1279        <para>
1280         Add <quote>Security</> label to <application>psql</> <command>\df+</>
1281         output (Jon Erdman)
1282        </para>
1283       </listitem>
1284
1285       <listitem>
1286        <para>
1287         Allow <application>psql</> <command>\l</> to accept a database
1288         name pattern (Peter Eisentraut)
1289        </para>
1290       </listitem>
1291
1292       <listitem>
1293        <para>
1294         In <application>psql</>, do not allow <command>\connect</> to
1295         use defaults if there is no active connection (Bruce Momjian)
1296        </para>
1297
1298        <para>
1299         This might be the case if the server had crashed.
1300        </para>
1301       </listitem>
1302
1303       <listitem>
1304        <para>
1305         Properly reset state if the SQL command executed with
1306         <application>psql</>'s <quote>\g file</> fails (Tom Lane)
1307        </para>
1308
1309        <para>
1310         Previously, the output from subsequent SQL commands would unexpectedly
1311         continue to go to the same file.
1312        </para>
1313       </listitem>
1314
1315      </itemizedlist>
1316
1317     </sect5>
1318
1319     <sect5>
1320      <title>Output</title>
1321
1322      <itemizedlist>
1323
1324       <listitem>
1325        <para>
1326         Add a <literal>latex-longtable</> output format to
1327         <application>psql</> (Bruce Momjian)
1328        </para>
1329
1330        <para>
1331         This format allows tables to span multiple pages.
1332        </para>
1333       </listitem>
1334
1335       <listitem>
1336        <para>
1337         Add a <literal>border=3</> output mode to the <application>psql</>
1338         <literal>latex</> format (Bruce Momjian)
1339        </para>
1340       </listitem>
1341
1342       <listitem>
1343        <para>
1344         In <application>psql</> tuples-only and expanded modes, no longer
1345         output <quote>(No rows)</> (Peter Eisentraut)
1346        </para>
1347       </listitem>
1348
1349       <listitem>
1350        <para>
1351         In <application>psql</>, no longer print an empty line for
1352         unaligned, expanded output for zero rows (Peter Eisentraut)
1353        </para>
1354       </listitem>
1355
1356      </itemizedlist>
1357
1358     </sect5>
1359
1360     </sect4>
1361
1362     <sect4>
1363      <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
1364
1365      <itemizedlist>
1366
1367       <listitem>
1368        <para>
1369         Add <application>pg_dump</> <option>--jobs</> option to dump tables in
1370         parallel (Joachim Wieland)
1371        </para>
1372       </listitem>
1373
1374       <listitem>
1375        <para>
1376         Have <application>pg_dump</> output functions in a more predictable
1377         order (Joel Jacobson)
1378        </para>
1379       </listitem>
1380
1381       <listitem>
1382        <para>
1383         Fix tar files emitted by <application>pg_dump</> and <link
1384         linkend="app-pgbasebackup"><application>pg_basebackup</></link>
1385         to be <acronym>POSIX</> conformant (Brian Weaver, Tom Lane)
1386        </para>
1387       </listitem>
1388
1389       <listitem>
1390        <para>
1391         Add <option>--dbname</> option to <application>pg_dump</>, for
1392         consistency with other client commands (Heikki Linnakangas)
1393        </para>
1394
1395        <para>
1396         The database name could already be supplied last without a flag.
1397        </para>
1398       </listitem>
1399
1400      </itemizedlist>
1401
1402     </sect4>
1403
1404     <sect4>
1405      <title><link linkend="APP-INITDB"><application>initdb</></link></title>
1406
1407      <itemizedlist>
1408
1409       <listitem>
1410        <para>
1411         Have initdb fsync the newly created data directory (Jeff Davis)
1412        </para>
1413
1414        <para>
1415         This can be disabled by using <option>--nosync</>.
1416        </para>
1417       </listitem>
1418
1419       <listitem>
1420        <para>
1421         Add initdb <option>--sync-only</> option to sync the data directory to durable
1422         storage (Bruce Momjian)
1423        </para>
1424
1425        <para>
1426         This is used by <link
1427         linkend="pgupgrade"><application>pg_upgrade</></link>.
1428        </para>
1429       </listitem>
1430
1431       <listitem>
1432        <para>
1433         Have initdb issue a warning about placing the data directory at the
1434         top of a file system mount point (Bruce Momjian)
1435        </para>
1436       </listitem>
1437
1438      </itemizedlist>
1439
1440     </sect4>
1441
1442    </sect3>
1443
1444    <sect3>
1445     <title>Source Code</title>
1446
1447      <itemizedlist>
1448
1449       <listitem>
1450        <para>
1451         Add an embedded list interface (Andres Freund)
1452        </para>
1453       </listitem>
1454
1455       <listitem>
1456        <para>
1457         Add infrastructure to better support plug-in <link
1458         linkend="bgworker">background worker processes</link>
1459         (&Aacute;lvaro Herrera)
1460        </para>
1461       </listitem>
1462
1463       <listitem>
1464        <para>
1465         Create a centralized timeout <acronym>API</> (Zolt&aacute;n
1466         B&ouml;sz&ouml;rm&eacute;nyi)
1467        </para>
1468       </listitem>
1469
1470       <listitem>
1471        <para>
1472         Create libpgcommon and move <function>pg_malloc()</> and other
1473         functions there (&Aacute;lvaro Herrera, Andres Freund)
1474        </para>
1475
1476        <para>
1477         This allows libpgport to be used solely for porting code.
1478        </para>
1479       </listitem>
1480
1481       <listitem>
1482        <para>
1483         Standardize on naming of client-side memory allocation functions (Tom Lane)
1484        </para>
1485       </listitem>
1486
1487       <listitem>
1488        <para>
1489         Add compiler designations to indicate some <function>ereport()</>
1490         and <function>elog()</> calls do not return (Peter Eisentraut,
1491         Andres Freund, Tom Lane, Heikki Linnakangas)
1492        </para>
1493       </listitem>
1494
1495       <listitem>
1496        <para>
1497         Allow options to be passed to the regression
1498         test output comparison utility via <link
1499         linkend="regress-evaluation"><envar>PG_REGRESS_DIFF_OPTS</></link>
1500         (Peter Eisentraut)
1501        </para>
1502       </listitem>
1503
1504       <listitem>
1505        <para>
1506         Add isolation tests for <link
1507         linkend="SQL-CREATEINDEX"><command>CREATE INDEX
1508         CONCURRENTLY</></link> (Abhijit Menon-Sen)
1509        </para>
1510       </listitem>
1511
1512       <listitem>
1513        <para>
1514         Remove typedefs for <type>int2</>/<type>int4</> as they are better
1515         represented as <type>int16</>/<type>int32</> (Peter Eisentraut)
1516        </para>
1517       </listitem>
1518
1519       <listitem>
1520        <para>
1521         Fix <link linkend="install">install-strip</link> on Mac <productname>OS
1522         X</> (Peter Eisentraut)
1523        </para>
1524       </listitem>
1525
1526       <listitem>
1527        <para>
1528         Remove <link linkend="configure">configure</link> flag
1529         <option>--disable-shared</>, as it is no longer used (Bruce
1530         Momjian)
1531        </para>
1532       </listitem>
1533
1534       <listitem>
1535        <para>
1536         Rewrite pgindent in <application>Perl</> (Andrew Dunstan)
1537        </para>
1538       </listitem>
1539
1540       <listitem>
1541        <para>
1542         Add Emacs macro to match <productname>PostgreSQL</> perltidy
1543         formatting (Peter Eisentraut)
1544        </para>
1545       </listitem>
1546
1547       <listitem>
1548        <para>
1549         Run tool to check the keyword list when the backend grammar is
1550         changed (Tom Lane)
1551        </para>
1552       </listitem>
1553
1554       <listitem>
1555        <para>
1556         Centralize <application>flex</> and <application>bison</>
1557         <application>make</> rules (Peter Eisentraut)
1558        </para>
1559
1560        <para>
1561         This is useful for <application>pgxs</> authors.
1562        </para>
1563       </listitem>
1564
1565       <listitem>
1566        <para>
1567         Support <function>Assert()</> in client-side code (Andrew Dunstan)
1568        </para>
1569       </listitem>
1570
1571       <listitem>
1572        <para>
1573         Change many internal backend functions to return <type>OID</>s
1574         rather than void (Dimitri Fontaine)
1575        </para>
1576
1577        <para>
1578         This is useful for event triggers.
1579        </para>
1580       </listitem>
1581
1582       <listitem>
1583        <para>
1584         Invent pre-commit/pre-prepare/pre-subcommit events for transaction
1585         callbacks (Tom Lane)
1586        </para>
1587
1588        <para>
1589         Loadable modules that use transaction callbacks might need modification
1590         to handle these new event types.
1591        </para>
1592       </listitem>
1593
1594       <listitem>
1595        <para>
1596         Add function <link
1597         linkend="functions-info-catalog-table"><function>pg_identify_object()</></link>
1598         to dump an object in machine-readable format (&Aacute;lvaro
1599         Herrera)
1600        </para>
1601       </listitem>
1602
1603       <listitem>
1604        <para>
1605         Add post-<command>ALTER</>-object server hooks (KaiGai Kohei)
1606        </para>
1607       </listitem>
1608
1609       <listitem>
1610        <para>
1611         Implement a generic binary heap and use it for Merge-Append
1612         operations (Abhijit Menon-Sen)
1613        </para>
1614       </listitem>
1615
1616       <listitem>
1617        <para>
1618         Improve ability to detect official timezone abbreviation changes
1619         (Tom Lane)
1620        </para>
1621       </listitem>
1622
1623       <listitem>
1624        <para>
1625         Add <application>pkg-config</> support <application>libpq</>
1626         and <application>ecpg</> libraries (Peter Eisentraut)
1627        </para>
1628       </listitem>
1629
1630       <listitem>
1631        <para>
1632         Remove <filename>src/tool/backend</>, now that the content is on
1633         the <productname>PostgreSQL</> wiki (Bruce Momjian)
1634        </para>
1635       </listitem>
1636
1637       <listitem>
1638        <para>
1639         Split out <link linkend="wal"><acronym>WAL</></link> reading as
1640         an independent facility (Heikki Linnakangas, Andres Freund)
1641        </para>
1642       </listitem>
1643
1644       <listitem>
1645        <para>
1646         Use a 64-bit integer to represent <link
1647         linkend="wal"><acronym>WAL</></link> positions
1648         (<structname>XLogRecPtr</>) instead of two 32-bit integers
1649         (Heikki Linnakangas)
1650        </para>
1651
1652        <para>
1653         Generally, tools that need to read the <acronym>WAL</> format
1654         will need to be adjusted.
1655        </para>
1656       </listitem>
1657
1658       <listitem>
1659        <para>
1660         Allow <link linkend="plpython">PL/Python</link> to support
1661         platform-specific include directories (Peter Eisentraut)
1662        </para>
1663       </listitem>
1664
1665       <listitem>
1666        <para>
1667         Allow <link linkend="plpython">PL/Python</link> on <productname>OS
1668         X</> to build against custom versions of <application>Python</>
1669         (Peter Eisentraut)
1670        </para>
1671       </listitem>
1672
1673      </itemizedlist>
1674
1675    </sect3>
1676
1677    <sect3>
1678     <title>Additional Modules</title>
1679
1680     <itemizedlist>
1681
1682       <listitem>
1683        <para>
1684         Allow <link linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data
1685         wrappers</link> to support writes (inserts/updates/deletes) on foreign
1686         tables (KaiGai Kohei)
1687        </para>
1688       </listitem>
1689
1690       <listitem>
1691        <para>
1692         Add a <productname>Postgres</> <link linkend="postgres-fdw">foreign
1693         data wrapper</link> contrib module (Shigeru Hanada)
1694        </para>
1695
1696        <para>
1697         This foreign data wrapper supports writes.
1698        </para>
1699       </listitem>
1700
1701       <listitem>
1702        <para>
1703         Add <link linkend="pgxlogdump"><application>pg_xlogdump</></link>
1704         contrib program (Andres Freund)
1705        </para>
1706       </listitem>
1707
1708       <listitem>
1709        <para>
1710         Add support for indexing of regular-expression searches in
1711         <link linkend="pgtrgm"><productname>pg_trgm</></link>
1712         (Alexander Korotkov)
1713        </para>
1714       </listitem>
1715
1716       <listitem>
1717        <para>
1718         Improve <link linkend="pgtrgm"><productname>pg_trgm</></link>
1719         handling of multibyte characters (Tom Lane)
1720        </para>
1721       </listitem>
1722
1723       <listitem>
1724        <para>
1725         Add <link linkend="pgstattuple">pgstattuple function</link> to report the
1726         size of the <type>GIN</> pending index insertion list (Fujii Masao)
1727        </para>
1728       </listitem>
1729
1730       <listitem>
1731        <para>
1732         Have <link linkend="oid2name"><application>oid2name</></link>,
1733         <link linkend="pgbench"><application>pgbench</></link>, and
1734         <link linkend="vacuumlo"><application>vacuumlo</></link> set
1735         <varname>fallback_application_name</> (Amit Kapila)
1736        </para>
1737       </listitem>
1738
1739       <listitem>
1740        <para>
1741         Improve output of <link
1742         linkend="pgtesttiming"><application>pg_test_timing</></link>
1743         (Bruce Momjian)
1744        </para>
1745       </listitem>
1746
1747       <listitem>
1748        <para>
1749         Improve output of <link
1750         linkend="pgtestfsync"><application>pg_test_fsync</></link>
1751         (Peter Geoghegan)
1752        </para>
1753       </listitem>
1754
1755       <listitem>
1756        <para>
1757         Improve <link linkend="dblink">dblink</link> option validator
1758         (Tom Lane)
1759        </para>
1760
1761        <para>
1762         Details?
1763        </para>
1764       </listitem>
1765
1766     </itemizedlist>
1767
1768     <sect4>
1769      <title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>
1770
1771      <itemizedlist>
1772
1773       <listitem>
1774        <para>
1775         Allow <application>pg_upgrade</> <option>--jobs</> to do
1776         parallelism (Bruce Momjian)
1777        </para>
1778
1779        <para>
1780         This allows parallel schema dump/restore of databases, as well as
1781         parallel copy/link of data files per tablespace.
1782        </para>
1783       </listitem>
1784
1785       <listitem>
1786        <para>
1787         Have <application>pg_upgrade</> create Unix-domain sockets in
1788         the current directory (Bruce Momjian, Tom Lane)
1789        </para>
1790
1791        <para>
1792         This reduces the possibility that someone will accidentally connect
1793         during the upgrade.
1794        </para>
1795       </listitem>
1796
1797       <listitem>
1798        <para>
1799         Have <application>pg_upgrade</> <option>--check</> mode properly
1800         detect the location of non-default socket directories (Bruce
1801         Momjian, Tom Lane)
1802        </para>
1803       </listitem>
1804
1805       <listitem>
1806        <para>
1807         Improve performance of <application>pg_upgrade</> for databases
1808         with many tables (Bruce Momjian)
1809        </para>
1810       </listitem>
1811
1812       <listitem>
1813        <para>
1814         Increase <application>pg_upgrade</> logging content by showing
1815         executed command (&Aacute;lvaro Herrera)
1816        </para>
1817       </listitem>
1818
1819       <listitem>
1820        <para>
1821         Improve <application>pg_upgrade</>'s status display during
1822         copy/link (Bruce Momjian)
1823        </para>
1824       </listitem>
1825
1826      </itemizedlist>
1827
1828     </sect4>
1829
1830     <sect4>
1831      <title><link linkend="pgbench"><application>pgbench</></link></title>
1832
1833      <itemizedlist>
1834
1835       <listitem>
1836        <para>
1837         Add <option>--foreign-keys</> option to <application>pgbench</>
1838         (Jeff Janes)
1839        </para>
1840
1841        <para>
1842         This adds foreign key constraints to the standard tables created by
1843         <application>pgbench</>, for use in foreign key performance testing.
1844        </para>
1845       </listitem>
1846
1847       <listitem>
1848        <para>
1849         Allow <application>pgbench</> to aggregate performance statistics
1850         and produce output every <option>--aggregate-interval</>
1851         seconds (Tomas Vondra)
1852        </para>
1853       </listitem>
1854
1855       <listitem>
1856        <para>
1857         Add <application>pgbench</> <option>--sampling-rate</> option
1858         to control the percentage of transactions logged (Tomas Vondra)
1859        </para>
1860       </listitem>
1861
1862       <listitem>
1863        <para>
1864         Reduce and improve the status message output of
1865         <application>pgbench</>'s initialization mode (Robert Haas,
1866         Peter Eisentraut)
1867        </para>
1868       </listitem>
1869
1870       <listitem>
1871        <para>
1872         Add <application>pgbench</> <option>-q</> mode to print one output
1873         line every five seconds (Tomas Vondra)
1874        </para>
1875       </listitem>
1876
1877       <listitem>
1878        <para>
1879         Output <application>pgbench</> elapsed and estimated remaining
1880         time during initialization (Tomas Vondra)
1881        </para>
1882       </listitem>
1883
1884       <listitem>
1885        <para>
1886         Allow <application>pgbench</> to use a larger scale factor
1887         (Greg Smith)
1888        </para>
1889       </listitem>
1890
1891     </itemizedlist>
1892
1893     </sect4>
1894
1895    </sect3>
1896
1897    <sect3>
1898     <title>Documentation</title>
1899
1900     <itemizedlist>
1901
1902       <listitem>
1903        <para>
1904         Allow <productname>EPUB</>-format documentation to be created
1905         (Peter Eisentraut)
1906        </para>
1907       </listitem>
1908
1909       <listitem>
1910        <para>
1911         Update <productname>FreeBSD</> kernel configuration documentation
1912         (Brad Davis)
1913        </para>
1914       </listitem>
1915
1916       <listitem>
1917        <para>
1918         Improve <link linkend="tutorial-window"><literal>WINDOW</>
1919         function</link> documentation (Bruce Momjian, Tom Lane)
1920        </para>
1921       </listitem>
1922
1923       <listitem>
1924        <para>
1925         Add <link linkend="docguide">instructions</link> for setting
1926         up the documentation tool chain on Mac <productname>OS X</>
1927         (Peter Eisentraut)
1928        </para>
1929       </listitem>
1930
1931       <listitem>
1932        <para>
1933         Improve <link
1934         linkend="guc-commit-delay"><varname>commit_delay</></link>
1935         documentation (Peter Geoghegan)
1936        </para>
1937       </listitem>
1938
1939     </itemizedlist>
1940
1941    </sect3>
1942
1943   </sect2>
1944  </sect1>