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