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