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