]> granicus.if.org Git - postgresql/blob - doc/src/sgml/release-9.3.sgml
Documentation spell checking and markup improvements
[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 <command>DROP TABLE IF NOT EXISTS</> to succeed when a
746         non-existent schema is specified in the table name (Bruce Momjian)
747        </para>
748
749        <para>
750          Previously, it threw an error if the schema did not exist.
751        </para>
752       </listitem>
753
754      </itemizedlist>
755
756     </sect4>
757
758     <sect4>
759      <title>Constraints</title>
760
761      <itemizedlist>
762
763       <listitem>
764        <para>
765         Provide clients with <link
766         linkend="libpq-pqresulterrorfield">constraint violation details</link>
767         as separate fields (Pavel Stehule)
768        </para>
769
770        <para>
771         This allows clients to retrieve table, column, data type, or constraint
772         name error details.  Previously such information had to be extracted from
773         error strings.  Client library support is required to access these
774         fields.
775        </para>
776       </listitem>
777
778      </itemizedlist>
779
780     </sect4>
781
782     <sect4>
783      <title><command>ALTER</></title>
784
785      <itemizedlist>
786
787       <listitem>
788        <para>
789         Support <literal>IF NOT EXISTS</> option in <link
790         linkend="SQL-ALTERTYPE"><command>ALTER TYPE ... ADD VALUE</></link>
791         (Andrew Dunstan)
792        </para>
793
794        <para>
795         This is useful for conditionally adding values to enumerated types.
796        </para>
797       </listitem>
798
799       <listitem>
800        <para>
801         Add <link linkend="SQL-ALTERROLE"><command>ALTER ROLE ALL
802         SET</></link> to add settings to all users (Peter Eisentraut)
803        </para>
804
805        <para>
806         This allows settings to apply to all users in all databases. <link
807         linkend="SQL-ALTERDATABASE"><command>ALTER DATABASE SET</></link>
808         already allowed addition of settings for all users in a single
809         database.  <filename>postgresql.conf</> has a similar effect.
810        </para>
811       </listitem>
812
813       <listitem>
814        <para>
815         Add support for <link linkend="SQL-ALTERRULE"><command>ALTER RULE
816         ... RENAME</></link> (Ali Dar)
817        </para>
818       </listitem>
819
820      </itemizedlist>
821
822     </sect4>
823
824     <sect4>
825      <title><link linkend="rules-views"><command>VIEWs</></link></title>
826
827      <itemizedlist>
828
829       <listitem>
830        <para>
831         Add <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
832         views</link> (Kevin Grittner)
833        </para>
834
835        <para>
836         Unlike ordinary views, where the base tables are read on every access,
837         materialized views create physical tables at creation or refresh time.
838         Access to the materialized view then reads from its physical
839         table. There is not yet any facility for incrementally refreshing
840         materialized views or auto-accessing them via base table access.
841        </para>
842       </listitem>
843
844       <listitem>
845        <para>
846         Make simple views <link
847         linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
848         (Dean Rasheed)
849        </para>
850
851        <para>
852         Simple views that reference some or all columns from a
853         single base table are now updatable by default. More
854         complex views can be made updatable using <link
855         linkend="SQL-CREATETRIGGER"><literal>INSTEAD OF</></link> triggers
856         or <link linkend="SQL-CREATERULE"><literal>INSTEAD</></link> rules.
857        </para>
858       </listitem>
859
860       <listitem>
861        <para>
862         Improve view/rule printing code to handle cases where referenced
863         tables are renamed, or columns are renamed, added, or dropped
864         (Tom Lane)
865        </para>
866
867        <para>
868         Table and column renamings can produce cases where, if we merely
869         substitute the new name into the original text of a rule or view, the
870         result is ambiguous.  This patch fixes the rule-dumping code to insert
871         table and column aliases if needed to preserve the original semantics.
872        </para>
873       </listitem>
874
875       <listitem>
876        <para>
877         Add <link linkend="SQL-CREATEVIEW"><command>CREATE RECURSIVE
878         VIEW</></link> syntax (Peter Eisentraut)
879        </para>
880
881        <para>
882         Internally this is translated into <command>CREATE VIEW ... WITH
883         RECURSIVE ...</>.
884        </para>
885       </listitem>
886
887      </itemizedlist>
888
889     </sect4>
890
891    </sect3>
892
893    <sect3>
894     <title>Data Types</title>
895
896     <itemizedlist>
897
898       <listitem>
899        <para>
900         Increase the maximum length of <link linkend="lo-open">large
901         objects</link> from 2GB to 4TB (Nozomi Anzai, Yugo Nagata)
902        </para>
903
904        <para>
905         This change includes new libpq and server-side 64-bit-capable
906         large object access functions.
907        </para>
908       </listitem>
909
910       <listitem>
911        <para>
912         Allow text <link linkend="datatype-timezones">timezone
913         designations</link>, e.g. <quote>America/Chicago</> when using
914         the <acronym>ISO</> <quote>T</> <type>timestamptz</type> format (Bruce Momjian)
915        </para>
916       </listitem>
917
918     </itemizedlist>
919
920    <sect4>
921     <title><link linkend="datatype-json"><type>JSON</></link></title>
922
923     <itemizedlist>
924
925       <listitem>
926        <para>
927         Add <link linkend="functions-json">operators and functions</link>
928         to extract values from <type>JSON</> data strings (Andrew Dunstan)
929        </para>
930       </listitem>
931
932       <listitem>
933        <para>
934         Allow <type>JSON</> data strings to be <link
935         linkend="functions-json-table">converted into records</link>
936         (Andrew Dunstan)
937        </para>
938       </listitem>
939
940       <listitem>
941        <para>
942         Add <link linkend="functions-json-table">functions</link>
943         to convert values, records, and hstore data to <type>JSON</>
944         (Andrew Dunstan)
945        </para>
946       </listitem>
947
948     </itemizedlist>
949
950    </sect4>
951
952    </sect3>
953
954
955    <sect3>
956     <title>Functions</title>
957
958      <itemizedlist>
959
960       <listitem>
961        <para>
962         Add <link
963         linkend="array-functions-table"><function>array_remove()</></link>
964         and <link
965         linkend="array-functions-table"><function>array_replace()</></link>
966         functions (Marco Nenciarini, Gabriele Bartolini)
967        </para>
968       </listitem>
969
970       <listitem>
971        <para>
972         Allow <link
973         linkend="functions-string-other"><function>concat()</></link>
974         and <link
975         linkend="functions-string-format"><function>format()</></link>
976         to properly expand <literal>VARIADIC</>-labeled arguments
977         (Pavel Stehule)
978        </para>
979       </listitem>
980
981       <listitem>
982        <para>
983         Improve <link
984         linkend="functions-string-format"><function>format()</></link>
985         to handle field width and left/right alignment (Pavel Stehule)
986        </para>
987       </listitem>
988
989       <listitem>
990        <para>
991         Have <link
992         linkend="functions-formatting-table"><function>to_char()</></link>,
993         <link
994         linkend="functions-formatting-table"><function>to_date()</></link>,
995         and <link
996         linkend="functions-formatting-table"><function>to_timestamp()</></link>
997         properly handle negative century designations (<literal>CC</>)
998         (Bruce Momjian)
999        </para>
1000
1001        <para>
1002         Previously the behavior was either wrong or inconsistent
1003         with positive/<acronym>AD</> handling, e.g. format mask
1004         <quote>IYYY-IW-DY</>.
1005        </para>
1006       </listitem>
1007
1008       <listitem>
1009        <para>
1010         Have <link
1011         linkend="functions-formatting-table"><function>to_date()</></link>
1012         and <link
1013         linkend="functions-formatting-table"><function>to_timestamp()</></link>
1014         return proper results when mixing <acronym>ISO</> and Gregorian
1015         week/day designations (Bruce Momjian)
1016        </para>
1017       </listitem>
1018
1019       <listitem>
1020        <para>
1021         Cause <link
1022         linkend="functions-info-catalog-table"><function>pg_get_viewdef()</></link>
1023         to start a new line by default after each <link
1024         linkend="SQL-SELECT"><command>SELECT</></link> target list entry and
1025         <literal>FROM</> entry (Marko Tiikkaja)
1026        </para>
1027
1028        <para>
1029         This reduces line length in view printing, for instance in <link
1030         linkend="APP-PGDUMP"><application>pg_dump</></link> output.
1031        </para>
1032       </listitem>
1033
1034       <listitem>
1035        <para>
1036         Fix <function>map_sql_value_to_xml_value()</> to print values of
1037         domain types the same way their base type would be printed
1038         (Pavel Stehule)
1039        </para>
1040
1041        <para>
1042         There are special formatting rules for certain built-in types such as
1043         <type>boolean</>; these rules now also apply to domains over these
1044         types.
1045        </para>
1046       </listitem>
1047
1048       <listitem>
1049        <para>
1050         Force cached functions to be replanned if the <link
1051         linkend="guc-search-path"><varname>search_path</></link> changes
1052         (Tom Lane)
1053        </para>
1054
1055        <para>
1056         Previously functions already run in the current session ignored
1057         <varname>search_path</> changes.
1058        </para>
1059       </listitem>
1060
1061      </itemizedlist>
1062
1063    </sect3>
1064
1065    <sect3>
1066     <title>Server-Side Languages</title>
1067
1068      <itemizedlist>
1069
1070       <listitem>
1071        <para>
1072         Allow <link linkend="spi-spi-execute"><acronym>SPI</></link>
1073         functions to access the number of rows processed by
1074         <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1075        </para>
1076       </listitem>
1077
1078      </itemizedlist>
1079
1080     <sect4>
1081      <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
1082
1083      <itemizedlist>
1084
1085       <listitem>
1086        <para>
1087         Allow PL/pgSQL to use <literal>RETURN</> with a composite-type
1088         expression (Asif Rehman)
1089        </para>
1090
1091        <para>
1092         Previously, in a function returning a composite type,
1093         <literal>RETURN</> could only reference a variable of that type.
1094        </para>
1095       </listitem>
1096
1097       <listitem>
1098        <para>
1099         Allow PL/pgSQL to access the number of rows processed by
1100         <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1101        </para>
1102
1103        <para>
1104         The command is <link
1105         linkend="plpgsql-statements-diagnostics"><command>GET DIAGNOSTICS
1106         x = ROW_COUNT</></link>.
1107        </para>
1108       </listitem>
1109
1110       <listitem>
1111        <para>
1112         Allow greater flexibility in where keywords can be used in PL/pgSQL (Tom Lane)
1113        </para>
1114       </listitem>
1115
1116     </itemizedlist>
1117
1118     </sect4>
1119
1120     <sect4>
1121      <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
1122
1123      <itemizedlist>
1124
1125       <listitem>
1126        <para>
1127         Add PL/Python result object string handler (Peter Eisentraut)
1128        </para>
1129
1130        <para>
1131         This allows <literal>plpy.debug(rv)</literal> to output something reasonable.
1132        </para>
1133       </listitem>
1134
1135       <listitem>
1136        <para>
1137         Make PL/Python convert OID values to a proper Python numeric type
1138         (Peter Eisentraut)
1139        </para>
1140       </listitem>
1141
1142       <listitem>
1143        <para>
1144         Handle <link linkend="spi"><acronym>SPI</></link> errors raised
1145         explicitly (with PL/Python's <literal>RAISE</>) the same as
1146         internal <acronym>SPI</> errors (Oskari Saarenmaa and Jan Urbanski)
1147        </para>
1148       </listitem>
1149
1150      </itemizedlist>
1151
1152     </sect4>
1153
1154    </sect3>
1155
1156    <sect3>
1157     <title>Client Applications</title>
1158
1159     <itemizedlist>
1160
1161       <listitem>
1162        <para>
1163         Add command-line utility <link
1164         linkend="app-pg-isready"><application>pg_isready</></link> to
1165         check if the server is ready to accept connections (Phil Sorber)
1166        </para>
1167       </listitem>
1168
1169       <listitem>
1170        <para>
1171         Support multiple <option>--table</> arguments for <link
1172         linkend="APP-PGRESTORE"><application>pg_restore</></link>,
1173         <link linkend="APP-CLUSTERDB"><application>clusterdb</></link>,
1174         <link linkend="APP-REINDEXDB"><application>reindexdb</></link>,
1175         and <link linkend="APP-VACUUMDB"><application>vacuumdb</></link>
1176         (Josh Kupershmidt)
1177        </para>
1178
1179        <para>
1180         This is similar to the <link
1181         linkend="APP-PGDUMP"><application>pg_dump</></link> <option>--table</>
1182         option.
1183        </para>
1184       </listitem>
1185
1186       <listitem>
1187        <para>
1188         Add <option>--dbname</> option to <link
1189         linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, <link
1190         linkend="app-pgbasebackup"><application>pg_basebackup</></link>, and
1191         <link
1192         linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
1193         to specify the connection string (Amit Kapila)
1194        </para>
1195       </listitem>
1196
1197       <listitem>
1198        <para>
1199         Add libpq function <link
1200         linkend="libpq-pqconninfo"><function>PQconninfo()</></link>
1201         to return connection information (Zolt&aacute;n
1202         B&ouml;sz&ouml;rm&eacute;nyi, Magnus Hagander)
1203        </para>
1204       </listitem>
1205
1206     </itemizedlist>
1207
1208     <sect4>
1209      <title><link linkend="APP-PSQL"><application>psql</></link></title>
1210
1211      <itemizedlist>
1212
1213       <listitem>
1214        <para>
1215         Adjust function cost settings so <application>psql</> tab
1216         completion and pattern searching is more efficient (Tom Lane)
1217        </para>
1218       </listitem>
1219
1220       <listitem>
1221        <para>
1222         Improve <application>psql</> tab completion coverage (Jeff Janes,
1223         Peter Eisentraut)
1224        </para>
1225       </listitem>
1226
1227       <listitem>
1228        <para>
1229         Allow the <application>psql</> <option>--single-transaction</> mode to work when
1230         reading from standard input (Fabien Coelho, Robert Haas)
1231        </para>
1232
1233        <para>
1234         Previously this option only worked when reading from a file.
1235        </para>
1236       </listitem>
1237
1238       <listitem>
1239        <para>
1240         Remove <application>psql</> warning when connecting to an older
1241         server (Peter Eisentraut)
1242        </para>
1243
1244        <para>
1245         The warning when connecting to a newer server was retained.
1246        </para>
1247       </listitem>
1248
1249      </itemizedlist>
1250
1251     <sect5>
1252      <title><link linkend="R2-APP-PSQL-4">Backslash Commands</link></title>
1253
1254      <itemizedlist>
1255
1256       <listitem>
1257        <para>
1258         Add <application>psql</> <command>\watch</> command to repeatedly
1259         execute commands (Will Leinweber)
1260        </para>
1261       </listitem>
1262
1263       <listitem>
1264        <para>
1265         Add <application>psql</> command <command>\gset</> to store query
1266         results in <application>psql</> variables (Pavel Stehule)
1267        </para>
1268       </listitem>
1269
1270       <listitem>
1271        <para>
1272         Add <acronym>SSL</> information to <application>psql</>'s
1273         <command>\conninfo</> command (Alastair Turner)
1274        </para>
1275       </listitem>
1276
1277       <listitem>
1278        <para>
1279         Add <quote>Security</> label to <application>psql</> <command>\df+</>
1280         output (Jon Erdman)
1281        </para>
1282       </listitem>
1283
1284       <listitem>
1285        <para>
1286         Allow <application>psql</> <command>\l</> to accept a database
1287         name pattern (Peter Eisentraut)
1288        </para>
1289       </listitem>
1290
1291       <listitem>
1292        <para>
1293         In <application>psql</>, do not allow <command>\connect</> to
1294         use defaults if there is no active connection (Bruce Momjian)
1295        </para>
1296
1297        <para>
1298         This might be the case if the server had crashed.
1299        </para>
1300       </listitem>
1301
1302       <listitem>
1303        <para>
1304         Properly reset state if the SQL command executed with
1305         <application>psql</>'s <quote>\g file</> fails (Tom Lane)
1306        </para>
1307
1308        <para>
1309         Previously, the output from subsequent SQL commands would unexpectedly
1310         continue to go to the same file.
1311        </para>
1312       </listitem>
1313
1314      </itemizedlist>
1315
1316     </sect5>
1317
1318     <sect5>
1319      <title>Output</title>
1320
1321      <itemizedlist>
1322
1323       <listitem>
1324        <para>
1325         Add a <literal>latex-longtable</> output format to
1326         <application>psql</> (Bruce Momjian)
1327        </para>
1328
1329        <para>
1330         This format allows tables to span multiple pages.
1331        </para>
1332       </listitem>
1333
1334       <listitem>
1335        <para>
1336         Add a <literal>border=3</> output mode to the <application>psql</>
1337         <literal>latex</> format (Bruce Momjian)
1338        </para>
1339       </listitem>
1340
1341       <listitem>
1342        <para>
1343         In <application>psql</> tuples-only and expanded modes, no longer
1344         output <quote>(No rows)</> (Peter Eisentraut)
1345        </para>
1346       </listitem>
1347
1348       <listitem>
1349        <para>
1350         In <application>psql</>, no longer print an empty line for
1351         unaligned, expanded output for zero rows (Peter Eisentraut)
1352        </para>
1353       </listitem>
1354
1355      </itemizedlist>
1356
1357     </sect5>
1358
1359     </sect4>
1360
1361     <sect4>
1362      <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
1363
1364      <itemizedlist>
1365
1366       <listitem>
1367        <para>
1368         Add <application>pg_dump</> <option>--jobs</> option to dump tables in
1369         parallel (Joachim Wieland)
1370        </para>
1371       </listitem>
1372
1373       <listitem>
1374        <para>
1375         Have <application>pg_dump</> output functions in a more predictable
1376         order (Joel Jacobson)
1377        </para>
1378       </listitem>
1379
1380       <listitem>
1381        <para>
1382         Fix tar files emitted by <application>pg_dump</> and <link
1383         linkend="app-pgbasebackup"><application>pg_basebackup</></link>
1384         to be <acronym>POSIX</> conformant (Brian Weaver, Tom Lane)
1385        </para>
1386       </listitem>
1387
1388       <listitem>
1389        <para>
1390         Add <option>--dbname</> option to <application>pg_dump</>, for
1391         consistency with other client commands (Heikki Linnakangas)
1392        </para>
1393
1394        <para>
1395         The database name could already be supplied last without a flag.
1396        </para>
1397       </listitem>
1398
1399      </itemizedlist>
1400
1401     </sect4>
1402
1403     <sect4>
1404      <title><link linkend="APP-INITDB"><application>initdb</></link></title>
1405
1406      <itemizedlist>
1407
1408       <listitem>
1409        <para>
1410         Have initdb fsync the newly created data directory (Jeff Davis)
1411        </para>
1412
1413        <para>
1414         This can be disabled by using <option>--nosync</>.
1415        </para>
1416       </listitem>
1417
1418       <listitem>
1419        <para>
1420         Add initdb <option>--sync-only</> option to sync the data directory to durable
1421         storage (Bruce Momjian)
1422        </para>
1423
1424        <para>
1425         This is used by <link
1426         linkend="pgupgrade"><application>pg_upgrade</></link>.
1427        </para>
1428       </listitem>
1429
1430       <listitem>
1431        <para>
1432         Have initdb issue a warning about placing the data directory at the
1433         top of a file system mount point (Bruce Momjian)
1434        </para>
1435       </listitem>
1436
1437      </itemizedlist>
1438
1439     </sect4>
1440
1441    </sect3>
1442
1443    <sect3>
1444     <title>Source Code</title>
1445
1446      <itemizedlist>
1447
1448       <listitem>
1449        <para>
1450         Add an embedded list interface (Andres Freund)
1451        </para>
1452       </listitem>
1453
1454       <listitem>
1455        <para>
1456         Add infrastructure to better support plug-in <link
1457         linkend="bgworker">background worker processes</link>
1458         (&Aacute;lvaro Herrera)
1459        </para>
1460       </listitem>
1461
1462       <listitem>
1463        <para>
1464         Create a centralized timeout <acronym>API</> (Zolt&aacute;n
1465         B&ouml;sz&ouml;rm&eacute;nyi)
1466        </para>
1467       </listitem>
1468
1469       <listitem>
1470        <para>
1471         Create libpgcommon and move <function>pg_malloc()</> and other
1472         functions there (&Aacute;lvaro Herrera, Andres Freund)
1473        </para>
1474
1475        <para>
1476         This allows libpgport to be used solely for porting code.
1477        </para>
1478       </listitem>
1479
1480       <listitem>
1481        <para>
1482         Standardize on naming of client-side memory allocation functions (Tom Lane)
1483        </para>
1484       </listitem>
1485
1486       <listitem>
1487        <para>
1488         Add compiler designations to indicate some <function>ereport()</>
1489         and <function>elog()</> calls do not return (Peter Eisentraut,
1490         Andres Freund, Tom Lane, Heikki Linnakangas)
1491        </para>
1492       </listitem>
1493
1494       <listitem>
1495        <para>
1496         Allow options to be passed to the regression
1497         test output comparison utility via <link
1498         linkend="regress-evaluation"><envar>PG_REGRESS_DIFF_OPTS</></link>
1499         (Peter Eisentraut)
1500        </para>
1501       </listitem>
1502
1503       <listitem>
1504        <para>
1505         Add isolation tests for <link
1506         linkend="SQL-CREATEINDEX"><command>CREATE INDEX
1507         CONCURRENTLY</></link> (Abhijit Menon-Sen)
1508        </para>
1509       </listitem>
1510
1511       <listitem>
1512        <para>
1513         Remove typedefs for <type>int2</>/<type>int4</> as they are better
1514         represented as <type>int16</>/<type>int32</> (Peter Eisentraut)
1515        </para>
1516       </listitem>
1517
1518       <listitem>
1519        <para>
1520         Fix <link linkend="install">install-strip</link> on Mac <productname>OS
1521         X</> (Peter Eisentraut)
1522        </para>
1523       </listitem>
1524
1525       <listitem>
1526        <para>
1527         Remove <link linkend="configure">configure</link> flag
1528         <option>--disable-shared</>, as it is no longer used (Bruce
1529         Momjian)
1530        </para>
1531       </listitem>
1532
1533       <listitem>
1534        <para>
1535         Rewrite pgindent in <application>Perl</> (Andrew Dunstan)
1536        </para>
1537       </listitem>
1538
1539       <listitem>
1540        <para>
1541         Add Emacs macro to match <productname>PostgreSQL</> perltidy
1542         formatting (Peter Eisentraut)
1543        </para>
1544       </listitem>
1545
1546       <listitem>
1547        <para>
1548         Run tool to check the keyword list when the backend grammar is
1549         changed (Tom Lane)
1550        </para>
1551       </listitem>
1552
1553       <listitem>
1554        <para>
1555         Centralize <application>flex</> and <application>bison</>
1556         <application>make</> rules (Peter Eisentraut)
1557        </para>
1558
1559        <para>
1560         This is useful for <application>pgxs</> authors.
1561        </para>
1562       </listitem>
1563
1564       <listitem>
1565        <para>
1566         Support <function>Assert()</> in client-side code (Andrew Dunstan)
1567        </para>
1568       </listitem>
1569
1570       <listitem>
1571        <para>
1572         Change many internal backend functions to return <type>OID</>s
1573         rather than void (Dimitri Fontaine)
1574        </para>
1575
1576        <para>
1577         This is useful for event triggers.
1578        </para>
1579       </listitem>
1580
1581       <listitem>
1582        <para>
1583         Invent pre-commit/pre-prepare/pre-subcommit events for transaction
1584         callbacks (Tom Lane)
1585        </para>
1586
1587        <para>
1588         Loadable modules that use transaction callbacks might need modification
1589         to handle these new event types.
1590        </para>
1591       </listitem>
1592
1593       <listitem>
1594        <para>
1595         Add function <link
1596         linkend="functions-info-catalog-table"><function>pg_identify_object()</></link>
1597         to dump an object in machine-readable format (&Aacute;lvaro
1598         Herrera)
1599        </para>
1600       </listitem>
1601
1602       <listitem>
1603        <para>
1604         Add post-<command>ALTER</>-object server hooks (KaiGai Kohei)
1605        </para>
1606       </listitem>
1607
1608       <listitem>
1609        <para>
1610         Implement a generic binary heap and use it for Merge-Append
1611         operations (Abhijit Menon-Sen)
1612        </para>
1613       </listitem>
1614
1615       <listitem>
1616        <para>
1617         Improve ability to detect official timezone abbreviation changes
1618         (Tom Lane)
1619        </para>
1620       </listitem>
1621
1622       <listitem>
1623        <para>
1624         Add <application>pkg-config</> support <application>libpq</>
1625         and <application>ecpg</> libraries (Peter Eisentraut)
1626        </para>
1627       </listitem>
1628
1629       <listitem>
1630        <para>
1631         Remove <filename>src/tool/backend</>, now that the content is on
1632         the <productname>PostgreSQL</> wiki (Bruce Momjian)
1633        </para>
1634       </listitem>
1635
1636       <listitem>
1637        <para>
1638         Split out <link linkend="wal"><acronym>WAL</></link> reading as
1639         an independent facility (Heikki Linnakangas, Andres Freund)
1640        </para>
1641       </listitem>
1642
1643       <listitem>
1644        <para>
1645         Use a 64-bit integer to represent <link
1646         linkend="wal"><acronym>WAL</></link> positions
1647         (<structname>XLogRecPtr</>) instead of two 32-bit integers
1648         (Heikki Linnakangas)
1649        </para>
1650
1651        <para>
1652         Generally, tools that need to read the <acronym>WAL</> format
1653         will need to be adjusted.
1654        </para>
1655       </listitem>
1656
1657       <listitem>
1658        <para>
1659         Allow <link linkend="plpython">PL/Python</link> to support
1660         platform-specific include directories (Peter Eisentraut)
1661        </para>
1662       </listitem>
1663
1664       <listitem>
1665        <para>
1666         Allow <link linkend="plpython">PL/Python</link> on <productname>OS
1667         X</> to build against custom versions of <application>Python</>
1668         (Peter Eisentraut)
1669        </para>
1670       </listitem>
1671
1672      </itemizedlist>
1673
1674    </sect3>
1675
1676    <sect3>
1677     <title>Additional Modules</title>
1678
1679     <itemizedlist>
1680
1681       <listitem>
1682        <para>
1683         Allow <link linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data
1684         wrappers</link> to support writes (inserts/updates/deletes) on foreign
1685         tables (KaiGai Kohei)
1686        </para>
1687       </listitem>
1688
1689       <listitem>
1690        <para>
1691         Add a <productname>Postgres</> <link linkend="postgres-fdw">foreign
1692         data wrapper</link> contrib module (Shigeru Hanada)
1693        </para>
1694
1695        <para>
1696         This foreign data wrapper supports writes.
1697        </para>
1698       </listitem>
1699
1700       <listitem>
1701        <para>
1702         Add <link linkend="pgxlogdump"><application>pg_xlogdump</></link>
1703         contrib program (Andres Freund)
1704        </para>
1705       </listitem>
1706
1707       <listitem>
1708        <para>
1709         Add support for indexing of regular-expression searches in
1710         <link linkend="pgtrgm"><productname>pg_trgm</></link>
1711         (Alexander Korotkov)
1712        </para>
1713       </listitem>
1714
1715       <listitem>
1716        <para>
1717         Improve <link linkend="pgtrgm"><productname>pg_trgm</></link>
1718         handling of multibyte characters (Tom Lane)
1719        </para>
1720       </listitem>
1721
1722       <listitem>
1723        <para>
1724         Add <link linkend="pgstattuple">pgstattuple function</link> to report the
1725         size of the <type>GIN</> pending index insertion list (Fujii Masao)
1726        </para>
1727       </listitem>
1728
1729       <listitem>
1730        <para>
1731         Have <link linkend="oid2name"><application>oid2name</></link>,
1732         <link linkend="pgbench"><application>pgbench</></link>, and
1733         <link linkend="vacuumlo"><application>vacuumlo</></link> set
1734         <varname>fallback_application_name</> (Amit Kapila)
1735        </para>
1736       </listitem>
1737
1738       <listitem>
1739        <para>
1740         Improve output of <link
1741         linkend="pgtesttiming"><application>pg_test_timing</></link>
1742         (Bruce Momjian)
1743        </para>
1744       </listitem>
1745
1746       <listitem>
1747        <para>
1748         Improve output of <link
1749         linkend="pgtestfsync"><application>pg_test_fsync</></link>
1750         (Peter Geoghegan)
1751        </para>
1752       </listitem>
1753
1754       <listitem>
1755        <para>
1756         Improve <link linkend="dblink">dblink</link> option validator
1757         (Tom Lane)
1758        </para>
1759
1760        <para>
1761         Details?
1762        </para>
1763       </listitem>
1764
1765     </itemizedlist>
1766
1767     <sect4>
1768      <title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>
1769
1770      <itemizedlist>
1771
1772       <listitem>
1773        <para>
1774         Allow <application>pg_upgrade</> <option>--jobs</> to do
1775         parallelism (Bruce Momjian)
1776        </para>
1777
1778        <para>
1779         This allows parallel schema dump/restore of databases, as well as
1780         parallel copy/link of data files per tablespace.
1781        </para>
1782       </listitem>
1783
1784       <listitem>
1785        <para>
1786         Have <application>pg_upgrade</> create Unix-domain sockets in
1787         the current directory (Bruce Momjian, Tom Lane)
1788        </para>
1789
1790        <para>
1791         This reduces the possibility that someone will accidentally connect
1792         during the upgrade.
1793        </para>
1794       </listitem>
1795
1796       <listitem>
1797        <para>
1798         Have <application>pg_upgrade</> <option>--check</> mode properly
1799         detect the location of non-default socket directories (Bruce
1800         Momjian, Tom Lane)
1801        </para>
1802       </listitem>
1803
1804       <listitem>
1805        <para>
1806         Improve performance of <application>pg_upgrade</> for databases
1807         with many tables (Bruce Momjian)
1808        </para>
1809       </listitem>
1810
1811       <listitem>
1812        <para>
1813         Increase <application>pg_upgrade</> logging content by showing
1814         executed command (&Aacute;lvaro Herrera)
1815        </para>
1816       </listitem>
1817
1818       <listitem>
1819        <para>
1820         Improve <application>pg_upgrade</>'s status display during
1821         copy/link (Bruce Momjian)
1822        </para>
1823       </listitem>
1824
1825      </itemizedlist>
1826
1827     </sect4>
1828
1829     <sect4>
1830      <title><link linkend="pgbench"><application>pgbench</></link></title>
1831
1832      <itemizedlist>
1833
1834       <listitem>
1835        <para>
1836         Add <option>--foreign-keys</> option to <application>pgbench</>
1837         (Jeff Janes)
1838        </para>
1839
1840        <para>
1841         This adds foreign key constraints to the standard tables created by
1842         <application>pgbench</>, for use in foreign key performance testing.
1843        </para>
1844       </listitem>
1845
1846       <listitem>
1847        <para>
1848         Allow <application>pgbench</> to aggregate performance statistics
1849         and produce output every <option>--aggregate-interval</>
1850         seconds (Tomas Vondra)
1851        </para>
1852       </listitem>
1853
1854       <listitem>
1855        <para>
1856         Add <application>pgbench</> <option>--sampling-rate</> option
1857         to control the percentage of transactions logged (Tomas Vondra)
1858        </para>
1859       </listitem>
1860
1861       <listitem>
1862        <para>
1863         Reduce and improve the status message output of
1864         <application>pgbench</>'s initialization mode (Robert Haas,
1865         Peter Eisentraut)
1866        </para>
1867       </listitem>
1868
1869       <listitem>
1870        <para>
1871         Add <application>pgbench</> <option>-q</> mode to print one output
1872         line every five seconds (Tomas Vondra)
1873        </para>
1874       </listitem>
1875
1876       <listitem>
1877        <para>
1878         Output <application>pgbench</> elapsed and estimated remaining
1879         time during initialization (Tomas Vondra)
1880        </para>
1881       </listitem>
1882
1883       <listitem>
1884        <para>
1885         Allow <application>pgbench</> to use a larger scale factor
1886         (Greg Smith)
1887        </para>
1888       </listitem>
1889
1890     </itemizedlist>
1891
1892     </sect4>
1893
1894    </sect3>
1895
1896    <sect3>
1897     <title>Documentation</title>
1898
1899     <itemizedlist>
1900
1901       <listitem>
1902        <para>
1903         Allow <productname>EPUB</>-format documentation to be created
1904         (Peter Eisentraut)
1905        </para>
1906       </listitem>
1907
1908       <listitem>
1909        <para>
1910         Update <productname>FreeBSD</> kernel configuration documentation
1911         (Brad Davis)
1912        </para>
1913       </listitem>
1914
1915       <listitem>
1916        <para>
1917         Improve <link linkend="tutorial-window"><literal>WINDOW</>
1918         function</link> documentation (Bruce Momjian, Tom Lane)
1919        </para>
1920       </listitem>
1921
1922       <listitem>
1923        <para>
1924         Add <link linkend="docguide">instructions</link> for setting
1925         up the documentation tool chain on Mac <productname>OS X</>
1926         (Peter Eisentraut)
1927        </para>
1928       </listitem>
1929
1930       <listitem>
1931        <para>
1932         Improve <link
1933         linkend="guc-commit-delay"><varname>commit_delay</></link>
1934         documentation (Peter Geoghegan)
1935        </para>
1936       </listitem>
1937
1938     </itemizedlist>
1939
1940    </sect3>
1941
1942   </sect2>
1943  </sect1>