]> granicus.if.org Git - postgresql/blob - doc/src/sgml/release-9.3.sgml
9.3 release notes: move foreign table item
[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 <link linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data
704         wrappers</link> to support writes (inserts/updates/deletes) on foreign
705         tables (KaiGai Kohei)
706        </para>
707       </listitem>
708
709       <listitem>
710        <para>
711         Allow a multirow <link
712         linkend="SQL-VALUES"><literal>VALUES</></link> clause in a rule
713         to reference <literal>OLD</>/<literal>NEW</> (Tom Lane)
714        </para>
715       </listitem>
716
717       <listitem>
718        <para>
719         Add <link linkend="SQL-CREATESCHEMA"><command>CREATE SCHEMA ... IF
720         NOT EXISTS</></link> clause (Fabr&iacute;zio de Royes Mello)
721        </para>
722       </listitem>
723
724       <listitem>
725        <para>
726         Have <link linkend="SQL-REASSIGN-OWNED"><command>REASSIGN
727         OWNED</></link> also change ownership of shared objects
728         (&Aacute;lvaro Herrera)
729        </para>
730       </listitem>
731
732      </itemizedlist>
733
734     <sect4>
735      <title><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link></title>
736
737      <itemizedlist>
738
739       <listitem>
740        <para>
741         Suppress messages about implicit index and sequence creation
742         (Robert Haas)
743        </para>
744
745        <para>
746         These messages now appear at <literal>DEBUG1</> verbosity, so that
747         they will not be shown by default.
748        </para>
749       </listitem>
750
751       <listitem>
752        <para>
753         Allow <link linkend="SQL-DROPTABLE"><command>DROP TABLE IF
754         EXISTS</></link> to succeed when a non-existent schema is specified
755         in the table name (Bruce Momjian)
756        </para>
757
758        <para>
759          Previously, it threw an error if the schema did not exist.
760        </para>
761       </listitem>
762
763      </itemizedlist>
764
765     </sect4>
766
767     <sect4>
768      <title>Constraints</title>
769
770      <itemizedlist>
771
772       <listitem>
773        <para>
774         Provide clients with <link
775         linkend="libpq-pqresulterrorfield">constraint violation details</link>
776         as separate fields (Pavel Stehule)
777        </para>
778
779        <para>
780         This allows clients to retrieve table, column, data type, or constraint
781         name error details.  Previously such information had to be extracted from
782         error strings.  Client library support is required to access these
783         fields.
784        </para>
785       </listitem>
786
787      </itemizedlist>
788
789     </sect4>
790
791     <sect4>
792      <title><command>ALTER</></title>
793
794      <itemizedlist>
795
796       <listitem>
797        <para>
798         Support <literal>IF NOT EXISTS</> option in <link
799         linkend="SQL-ALTERTYPE"><command>ALTER TYPE ... ADD VALUE</></link>
800         (Andrew Dunstan)
801        </para>
802
803        <para>
804         This is useful for conditionally adding values to enumerated types.
805        </para>
806       </listitem>
807
808       <listitem>
809        <para>
810         Add <link linkend="SQL-ALTERROLE"><command>ALTER ROLE ALL
811         SET</></link> to add settings to all users (Peter Eisentraut)
812        </para>
813
814        <para>
815         This allows settings to apply to all users in all databases. <link
816         linkend="SQL-ALTERDATABASE"><command>ALTER DATABASE SET</></link>
817         already allowed addition of settings for all users in a single
818         database.  <filename>postgresql.conf</> has a similar effect.
819        </para>
820       </listitem>
821
822       <listitem>
823        <para>
824         Add support for <link linkend="SQL-ALTERRULE"><command>ALTER RULE
825         ... RENAME</></link> (Ali Dar)
826        </para>
827       </listitem>
828
829      </itemizedlist>
830
831     </sect4>
832
833     <sect4>
834      <title><link linkend="rules-views"><command>VIEWs</></link></title>
835
836      <itemizedlist>
837
838       <listitem>
839        <para>
840         Add <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
841         views</link> (Kevin Grittner)
842        </para>
843
844        <para>
845         Unlike ordinary views, where the base tables are read on every access,
846         materialized views create physical tables at creation or refresh time.
847         Access to the materialized view then reads from its physical
848         table. There is not yet any facility for incrementally refreshing
849         materialized views or auto-accessing them via base table access.
850        </para>
851       </listitem>
852
853       <listitem>
854        <para>
855         Make simple views <link
856         linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
857         (Dean Rasheed)
858        </para>
859
860        <para>
861         Simple views that reference some or all columns from a
862         single base table are now updatable by default. More
863         complex views can be made updatable using <link
864         linkend="SQL-CREATETRIGGER"><literal>INSTEAD OF</></link> triggers
865         or <link linkend="SQL-CREATERULE"><literal>INSTEAD</></link> rules.
866        </para>
867       </listitem>
868
869       <listitem>
870        <para>
871         Improve view/rule printing code to handle cases where referenced
872         tables are renamed, or columns are renamed, added, or dropped
873         (Tom Lane)
874        </para>
875
876        <para>
877         Table and column renamings can produce cases where, if we merely
878         substitute the new name into the original text of a rule or view, the
879         result is ambiguous.  This patch fixes the rule-dumping code to insert
880         table and column aliases if needed to preserve the original semantics.
881        </para>
882       </listitem>
883
884       <listitem>
885        <para>
886         Add <link linkend="SQL-CREATEVIEW"><command>CREATE RECURSIVE
887         VIEW</></link> syntax (Peter Eisentraut)
888        </para>
889
890        <para>
891         Internally this is translated into <command>CREATE VIEW ... WITH
892         RECURSIVE ...</>.
893        </para>
894       </listitem>
895
896      </itemizedlist>
897
898     </sect4>
899
900    </sect3>
901
902    <sect3>
903     <title>Data Types</title>
904
905     <itemizedlist>
906
907       <listitem>
908        <para>
909         Increase the maximum length of <link linkend="lo-open">large
910         objects</link> from 2GB to 4TB (Nozomi Anzai, Yugo Nagata)
911        </para>
912
913        <para>
914         This change includes new libpq and server-side 64-bit-capable
915         large object access functions.
916        </para>
917       </listitem>
918
919       <listitem>
920        <para>
921         Allow text <link linkend="datatype-timezones">timezone
922         designations</link>, e.g. <quote>America/Chicago</> when using
923         the <acronym>ISO</> <quote>T</> <type>timestamptz</type> format (Bruce Momjian)
924        </para>
925       </listitem>
926
927     </itemizedlist>
928
929    <sect4>
930     <title><link linkend="datatype-json"><type>JSON</></link></title>
931
932     <itemizedlist>
933
934       <listitem>
935        <para>
936         Add <link linkend="functions-json">operators and functions</link>
937         to extract values from <type>JSON</> data strings (Andrew Dunstan)
938        </para>
939       </listitem>
940
941       <listitem>
942        <para>
943         Allow <type>JSON</> data strings to be <link
944         linkend="functions-json-table">converted into records</link>
945         (Andrew Dunstan)
946        </para>
947       </listitem>
948
949       <listitem>
950        <para>
951         Add <link linkend="functions-json-table">functions</link>
952         to convert values, records, and hstore data to <type>JSON</>
953         (Andrew Dunstan)
954        </para>
955       </listitem>
956
957     </itemizedlist>
958
959    </sect4>
960
961    </sect3>
962
963
964    <sect3>
965     <title>Functions</title>
966
967      <itemizedlist>
968
969       <listitem>
970        <para>
971         Add <link
972         linkend="array-functions-table"><function>array_remove()</></link>
973         and <link
974         linkend="array-functions-table"><function>array_replace()</></link>
975         functions (Marco Nenciarini, Gabriele Bartolini)
976        </para>
977       </listitem>
978
979       <listitem>
980        <para>
981         Allow <link
982         linkend="functions-string-other"><function>concat()</></link>
983         and <link
984         linkend="functions-string-format"><function>format()</></link>
985         to properly expand <literal>VARIADIC</>-labeled arguments
986         (Pavel Stehule)
987        </para>
988       </listitem>
989
990       <listitem>
991        <para>
992         Improve <link
993         linkend="functions-string-format"><function>format()</></link>
994         to handle field width and left/right alignment (Pavel Stehule)
995        </para>
996       </listitem>
997
998       <listitem>
999        <para>
1000         Have <link
1001         linkend="functions-formatting-table"><function>to_char()</></link>,
1002         <link
1003         linkend="functions-formatting-table"><function>to_date()</></link>,
1004         and <link
1005         linkend="functions-formatting-table"><function>to_timestamp()</></link>
1006         properly handle negative century designations (<literal>CC</>)
1007         (Bruce Momjian)
1008        </para>
1009
1010        <para>
1011         Previously the behavior was either wrong or inconsistent
1012         with positive/<acronym>AD</> handling, e.g. format mask
1013         <quote>IYYY-IW-DY</>.
1014        </para>
1015       </listitem>
1016
1017       <listitem>
1018        <para>
1019         Have <link
1020         linkend="functions-formatting-table"><function>to_date()</></link>
1021         and <link
1022         linkend="functions-formatting-table"><function>to_timestamp()</></link>
1023         return proper results when mixing <acronym>ISO</> and Gregorian
1024         week/day designations (Bruce Momjian)
1025        </para>
1026       </listitem>
1027
1028       <listitem>
1029        <para>
1030         Cause <link
1031         linkend="functions-info-catalog-table"><function>pg_get_viewdef()</></link>
1032         to start a new line by default after each <link
1033         linkend="SQL-SELECT"><command>SELECT</></link> target list entry and
1034         <literal>FROM</> entry (Marko Tiikkaja)
1035        </para>
1036
1037        <para>
1038         This reduces line length in view printing, for instance in <link
1039         linkend="APP-PGDUMP"><application>pg_dump</></link> output.
1040        </para>
1041       </listitem>
1042
1043       <listitem>
1044        <para>
1045         Fix <function>map_sql_value_to_xml_value()</> to print values of
1046         domain types the same way their base type would be printed
1047         (Pavel Stehule)
1048        </para>
1049
1050        <para>
1051         There are special formatting rules for certain built-in types such as
1052         <type>boolean</>; these rules now also apply to domains over these
1053         types.
1054        </para>
1055       </listitem>
1056
1057       <listitem>
1058        <para>
1059         Force cached plans to be replanned if the <link
1060         linkend="guc-search-path"><varname>search_path</></link> changes
1061         (Tom Lane)
1062        </para>
1063
1064        <para>
1065         Previously cached plans already generated in the current session
1066         ignored <varname>search_path</> changes.
1067        </para>
1068       </listitem>
1069
1070      </itemizedlist>
1071
1072    </sect3>
1073
1074    <sect3>
1075     <title>Server-Side Languages</title>
1076
1077      <itemizedlist>
1078
1079       <listitem>
1080        <para>
1081         Allow <link linkend="spi-spi-execute"><acronym>SPI</></link>
1082         functions to access the number of rows processed by
1083         <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1084        </para>
1085       </listitem>
1086
1087      </itemizedlist>
1088
1089     <sect4>
1090      <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
1091
1092      <itemizedlist>
1093
1094       <listitem>
1095        <para>
1096         Allow PL/pgSQL to use <literal>RETURN</> with a composite-type
1097         expression (Asif Rehman)
1098        </para>
1099
1100        <para>
1101         Previously, in a function returning a composite type,
1102         <literal>RETURN</> could only reference a variable of that type.
1103        </para>
1104       </listitem>
1105
1106       <listitem>
1107        <para>
1108         Allow PL/pgSQL to access the number of rows processed by
1109         <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1110        </para>
1111
1112        <para>
1113         The command is <link
1114         linkend="plpgsql-statements-diagnostics"><command>GET DIAGNOSTICS
1115         x = ROW_COUNT</></link>.
1116        </para>
1117       </listitem>
1118
1119       <listitem>
1120        <para>
1121         Allow greater flexibility in where keywords can be used in PL/pgSQL (Tom Lane)
1122        </para>
1123       </listitem>
1124
1125     </itemizedlist>
1126
1127     </sect4>
1128
1129     <sect4>
1130      <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
1131
1132      <itemizedlist>
1133
1134       <listitem>
1135        <para>
1136         Add PL/Python result object string handler (Peter Eisentraut)
1137        </para>
1138
1139        <para>
1140         This allows <literal>plpy.debug(rv)</literal> to output something reasonable.
1141        </para>
1142       </listitem>
1143
1144       <listitem>
1145        <para>
1146         Make PL/Python convert OID values to a proper Python numeric type
1147         (Peter Eisentraut)
1148        </para>
1149       </listitem>
1150
1151       <listitem>
1152        <para>
1153         Handle <link linkend="spi"><acronym>SPI</></link> errors raised
1154         explicitly (with PL/Python's <literal>RAISE</>) the same as
1155         internal <acronym>SPI</> errors (Oskari Saarenmaa and Jan Urbanski)
1156        </para>
1157       </listitem>
1158
1159      </itemizedlist>
1160
1161     </sect4>
1162
1163    </sect3>
1164
1165    <sect3>
1166     <title>Client Applications</title>
1167
1168     <itemizedlist>
1169
1170       <listitem>
1171        <para>
1172         Add command-line utility <link
1173         linkend="app-pg-isready"><application>pg_isready</></link> to
1174         check if the server is ready to accept connections (Phil Sorber)
1175        </para>
1176       </listitem>
1177
1178       <listitem>
1179        <para>
1180         Support multiple <option>--table</> arguments for <link
1181         linkend="APP-PGRESTORE"><application>pg_restore</></link>,
1182         <link linkend="APP-CLUSTERDB"><application>clusterdb</></link>,
1183         <link linkend="APP-REINDEXDB"><application>reindexdb</></link>,
1184         and <link linkend="APP-VACUUMDB"><application>vacuumdb</></link>
1185         (Josh Kupershmidt)
1186        </para>
1187
1188        <para>
1189         This is similar to the <link
1190         linkend="APP-PGDUMP"><application>pg_dump</></link> <option>--table</>
1191         option.
1192        </para>
1193       </listitem>
1194
1195       <listitem>
1196        <para>
1197         Add <option>--dbname</> option to <link
1198         linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, <link
1199         linkend="app-pgbasebackup"><application>pg_basebackup</></link>, and
1200         <link
1201         linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
1202         to specify the connection string (Amit Kapila)
1203        </para>
1204       </listitem>
1205
1206       <listitem>
1207        <para>
1208         Add libpq function <link
1209         linkend="libpq-pqconninfo"><function>PQconninfo()</></link>
1210         to return connection information (Zolt&aacute;n
1211         B&ouml;sz&ouml;rm&eacute;nyi, Magnus Hagander)
1212        </para>
1213       </listitem>
1214
1215     </itemizedlist>
1216
1217     <sect4>
1218      <title><link linkend="APP-PSQL"><application>psql</></link></title>
1219
1220      <itemizedlist>
1221
1222       <listitem>
1223        <para>
1224         Adjust function cost settings so <application>psql</> tab
1225         completion and pattern searching is more efficient (Tom Lane)
1226        </para>
1227       </listitem>
1228
1229       <listitem>
1230        <para>
1231         Improve <application>psql</> tab completion coverage (Jeff Janes,
1232         Peter Eisentraut)
1233        </para>
1234       </listitem>
1235
1236       <listitem>
1237        <para>
1238         Allow the <application>psql</> <option>--single-transaction</> mode to work when
1239         reading from standard input (Fabien Coelho, Robert Haas)
1240        </para>
1241
1242        <para>
1243         Previously this option only worked when reading from a file.
1244        </para>
1245       </listitem>
1246
1247       <listitem>
1248        <para>
1249         Remove <application>psql</> warning when connecting to an older
1250         server (Peter Eisentraut)
1251        </para>
1252
1253        <para>
1254         The warning when connecting to a newer server was retained.
1255        </para>
1256       </listitem>
1257
1258      </itemizedlist>
1259
1260     <sect5>
1261      <title><link linkend="R2-APP-PSQL-4">Backslash Commands</link></title>
1262
1263      <itemizedlist>
1264
1265       <listitem>
1266        <para>
1267         Add <application>psql</> <command>\watch</> command to repeatedly
1268         execute commands (Will Leinweber)
1269        </para>
1270       </listitem>
1271
1272       <listitem>
1273        <para>
1274         Add <application>psql</> command <command>\gset</> to store query
1275         results in <application>psql</> variables (Pavel Stehule)
1276        </para>
1277       </listitem>
1278
1279       <listitem>
1280        <para>
1281         Add <acronym>SSL</> information to <application>psql</>'s
1282         <command>\conninfo</> command (Alastair Turner)
1283        </para>
1284       </listitem>
1285
1286       <listitem>
1287        <para>
1288         Add <quote>Security</> label to <application>psql</> <command>\df+</>
1289         output (Jon Erdman)
1290        </para>
1291       </listitem>
1292
1293       <listitem>
1294        <para>
1295         Allow <application>psql</> <command>\l</> to accept a database
1296         name pattern (Peter Eisentraut)
1297        </para>
1298       </listitem>
1299
1300       <listitem>
1301        <para>
1302         In <application>psql</>, do not allow <command>\connect</> to
1303         use defaults if there is no active connection (Bruce Momjian)
1304        </para>
1305
1306        <para>
1307         This might be the case if the server had crashed.
1308        </para>
1309       </listitem>
1310
1311       <listitem>
1312        <para>
1313         Properly reset state if the SQL command executed with
1314         <application>psql</>'s <quote>\g file</> fails (Tom Lane)
1315        </para>
1316
1317        <para>
1318         Previously, the output from subsequent SQL commands would unexpectedly
1319         continue to go to the same file.
1320        </para>
1321       </listitem>
1322
1323      </itemizedlist>
1324
1325     </sect5>
1326
1327     <sect5>
1328      <title>Output</title>
1329
1330      <itemizedlist>
1331
1332       <listitem>
1333        <para>
1334         Add a <literal>latex-longtable</> output format to
1335         <application>psql</> (Bruce Momjian)
1336        </para>
1337
1338        <para>
1339         This format allows tables to span multiple pages.
1340        </para>
1341       </listitem>
1342
1343       <listitem>
1344        <para>
1345         Add a <literal>border=3</> output mode to the <application>psql</>
1346         <literal>latex</> format (Bruce Momjian)
1347        </para>
1348       </listitem>
1349
1350       <listitem>
1351        <para>
1352         In <application>psql</> tuples-only and expanded modes, no longer
1353         output <quote>(No rows)</> (Peter Eisentraut)
1354        </para>
1355       </listitem>
1356
1357       <listitem>
1358        <para>
1359         In <application>psql</>, no longer print an empty line for
1360         unaligned, expanded output for zero rows (Peter Eisentraut)
1361        </para>
1362       </listitem>
1363
1364      </itemizedlist>
1365
1366     </sect5>
1367
1368     </sect4>
1369
1370     <sect4>
1371      <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
1372
1373      <itemizedlist>
1374
1375       <listitem>
1376        <para>
1377         Add <application>pg_dump</> <option>--jobs</> option to dump tables in
1378         parallel (Joachim Wieland)
1379        </para>
1380       </listitem>
1381
1382       <listitem>
1383        <para>
1384         Have <application>pg_dump</> output functions in a more predictable
1385         order (Joel Jacobson)
1386        </para>
1387       </listitem>
1388
1389       <listitem>
1390        <para>
1391         Fix tar files emitted by <application>pg_dump</> and <link
1392         linkend="app-pgbasebackup"><application>pg_basebackup</></link>
1393         to be <acronym>POSIX</> conformant (Brian Weaver, Tom Lane)
1394        </para>
1395       </listitem>
1396
1397       <listitem>
1398        <para>
1399         Add <option>--dbname</> option to <application>pg_dump</>, for
1400         consistency with other client commands (Heikki Linnakangas)
1401        </para>
1402
1403        <para>
1404         The database name could already be supplied last without a flag.
1405        </para>
1406       </listitem>
1407
1408      </itemizedlist>
1409
1410     </sect4>
1411
1412     <sect4>
1413      <title><link linkend="APP-INITDB"><application>initdb</></link></title>
1414
1415      <itemizedlist>
1416
1417       <listitem>
1418        <para>
1419         Have initdb fsync the newly created data directory (Jeff Davis)
1420        </para>
1421
1422        <para>
1423         This can be disabled by using <option>--nosync</>.
1424        </para>
1425       </listitem>
1426
1427       <listitem>
1428        <para>
1429         Add initdb <option>--sync-only</> option to sync the data directory to durable
1430         storage (Bruce Momjian)
1431        </para>
1432
1433        <para>
1434         This is used by <link
1435         linkend="pgupgrade"><application>pg_upgrade</></link>.
1436        </para>
1437       </listitem>
1438
1439       <listitem>
1440        <para>
1441         Have initdb issue a warning about placing the data directory at the
1442         top of a file system mount point (Bruce Momjian)
1443        </para>
1444       </listitem>
1445
1446      </itemizedlist>
1447
1448     </sect4>
1449
1450    </sect3>
1451
1452    <sect3>
1453     <title>Source Code</title>
1454
1455      <itemizedlist>
1456
1457       <listitem>
1458        <para>
1459         Add an embedded list interface (Andres Freund)
1460        </para>
1461       </listitem>
1462
1463       <listitem>
1464        <para>
1465         Add infrastructure to better support plug-in <link
1466         linkend="bgworker">background worker processes</link>
1467         (&Aacute;lvaro Herrera)
1468        </para>
1469       </listitem>
1470
1471       <listitem>
1472        <para>
1473         Create a centralized timeout <acronym>API</> (Zolt&aacute;n
1474         B&ouml;sz&ouml;rm&eacute;nyi)
1475        </para>
1476       </listitem>
1477
1478       <listitem>
1479        <para>
1480         Create libpgcommon and move <function>pg_malloc()</> and other
1481         functions there (&Aacute;lvaro Herrera, Andres Freund)
1482        </para>
1483
1484        <para>
1485         This allows libpgport to be used solely for porting code.
1486        </para>
1487       </listitem>
1488
1489       <listitem>
1490        <para>
1491         Standardize on naming of client-side memory allocation functions (Tom Lane)
1492        </para>
1493       </listitem>
1494
1495       <listitem>
1496        <para>
1497         Add compiler designations to indicate some <function>ereport()</>
1498         and <function>elog()</> calls do not return (Peter Eisentraut,
1499         Andres Freund, Tom Lane, Heikki Linnakangas)
1500        </para>
1501       </listitem>
1502
1503       <listitem>
1504        <para>
1505         Allow options to be passed to the regression
1506         test output comparison utility via <link
1507         linkend="regress-evaluation"><envar>PG_REGRESS_DIFF_OPTS</></link>
1508         (Peter Eisentraut)
1509        </para>
1510       </listitem>
1511
1512       <listitem>
1513        <para>
1514         Add isolation tests for <link
1515         linkend="SQL-CREATEINDEX"><command>CREATE INDEX
1516         CONCURRENTLY</></link> (Abhijit Menon-Sen)
1517        </para>
1518       </listitem>
1519
1520       <listitem>
1521        <para>
1522         Remove typedefs for <type>int2</>/<type>int4</> as they are better
1523         represented as <type>int16</>/<type>int32</> (Peter Eisentraut)
1524        </para>
1525       </listitem>
1526
1527       <listitem>
1528        <para>
1529         Fix <link linkend="install">install-strip</link> on Mac <productname>OS
1530         X</> (Peter Eisentraut)
1531        </para>
1532       </listitem>
1533
1534       <listitem>
1535        <para>
1536         Remove <link linkend="configure">configure</link> flag
1537         <option>--disable-shared</>, as it is no longer used (Bruce
1538         Momjian)
1539        </para>
1540       </listitem>
1541
1542       <listitem>
1543        <para>
1544         Rewrite pgindent in <application>Perl</> (Andrew Dunstan)
1545        </para>
1546       </listitem>
1547
1548       <listitem>
1549        <para>
1550         Add Emacs macro to match <productname>PostgreSQL</> perltidy
1551         formatting (Peter Eisentraut)
1552        </para>
1553       </listitem>
1554
1555       <listitem>
1556        <para>
1557         Run tool to check the keyword list when the backend grammar is
1558         changed (Tom Lane)
1559        </para>
1560       </listitem>
1561
1562       <listitem>
1563        <para>
1564         Centralize <application>flex</> and <application>bison</>
1565         <application>make</> rules (Peter Eisentraut)
1566        </para>
1567
1568        <para>
1569         This is useful for <application>pgxs</> authors.
1570        </para>
1571       </listitem>
1572
1573       <listitem>
1574        <para>
1575         Support <function>Assert()</> in client-side code (Andrew Dunstan)
1576        </para>
1577       </listitem>
1578
1579       <listitem>
1580        <para>
1581         Change many internal backend functions to return <type>OID</>s
1582         rather than void (Dimitri Fontaine)
1583        </para>
1584
1585        <para>
1586         This is useful for event triggers.
1587        </para>
1588       </listitem>
1589
1590       <listitem>
1591        <para>
1592         Invent pre-commit/pre-prepare/pre-subcommit events for transaction
1593         callbacks (Tom Lane)
1594        </para>
1595
1596        <para>
1597         Loadable modules that use transaction callbacks might need modification
1598         to handle these new event types.
1599        </para>
1600       </listitem>
1601
1602       <listitem>
1603        <para>
1604         Add function <link
1605         linkend="functions-info-catalog-table"><function>pg_identify_object()</></link>
1606         to dump an object in machine-readable format (&Aacute;lvaro
1607         Herrera)
1608        </para>
1609       </listitem>
1610
1611       <listitem>
1612        <para>
1613         Add post-<command>ALTER</>-object server hooks (KaiGai Kohei)
1614        </para>
1615       </listitem>
1616
1617       <listitem>
1618        <para>
1619         Implement a generic binary heap and use it for Merge-Append
1620         operations (Abhijit Menon-Sen)
1621        </para>
1622       </listitem>
1623
1624       <listitem>
1625        <para>
1626         Improve ability to detect official timezone abbreviation changes
1627         (Tom Lane)
1628        </para>
1629       </listitem>
1630
1631       <listitem>
1632        <para>
1633         Add <application>pkg-config</> support <application>libpq</>
1634         and <application>ecpg</> libraries (Peter Eisentraut)
1635        </para>
1636       </listitem>
1637
1638       <listitem>
1639        <para>
1640         Remove <filename>src/tool/backend</>, now that the content is on
1641         the <productname>PostgreSQL</> wiki (Bruce Momjian)
1642        </para>
1643       </listitem>
1644
1645       <listitem>
1646        <para>
1647         Split out <link linkend="wal"><acronym>WAL</></link> reading as
1648         an independent facility (Heikki Linnakangas, Andres Freund)
1649        </para>
1650       </listitem>
1651
1652       <listitem>
1653        <para>
1654         Use a 64-bit integer to represent <link
1655         linkend="wal"><acronym>WAL</></link> positions
1656         (<structname>XLogRecPtr</>) instead of two 32-bit integers
1657         (Heikki Linnakangas)
1658        </para>
1659
1660        <para>
1661         Generally, tools that need to read the <acronym>WAL</> format
1662         will need to be adjusted.
1663        </para>
1664       </listitem>
1665
1666       <listitem>
1667        <para>
1668         Allow <link linkend="plpython">PL/Python</link> to support
1669         platform-specific include directories (Peter Eisentraut)
1670        </para>
1671       </listitem>
1672
1673       <listitem>
1674        <para>
1675         Allow <link linkend="plpython">PL/Python</link> on <productname>OS
1676         X</> to build against custom versions of <application>Python</>
1677         (Peter Eisentraut)
1678        </para>
1679       </listitem>
1680
1681      </itemizedlist>
1682
1683    </sect3>
1684
1685    <sect3>
1686     <title>Additional Modules</title>
1687
1688     <itemizedlist>
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>