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