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