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