]> granicus.if.org Git - postgresql/blob - doc/src/sgml/release-9.3.sgml
9.3 release notes: update for current commits
[postgresql] / doc / src / sgml / release-9.3.sgml
1 <!-- doc/src/sgml/release-9.3.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
3
4  <sect1 id="release-9-3">
5   <title>Release 9.3</title>
6
7   <note>
8    <title>Release Date</title>
9    <simpara>2013-XX-XX, CURRENT AS OF 2013-05-03</simpara>
10   </note>
11
12   <sect2>
13    <title>Overview</title>
14
15    <para>
16     ADD HERE  Major enhancements include:
17    </para>
18
19     <!-- This list duplicates items below, but without authors or details-->
20
21    <para>
22     The above items are explained in more detail in the sections below.
23    </para>
24
25   </sect2>
26
27   <sect2>
28
29   <title>Migration to Version 9.3</title>
30
31    <para>
32     A dump/restore using <link
33     linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, or use
34     of <link linkend="pgupgrade"><application>pg_upgrade</></link>, is
35     required for those wishing to migrate data from any previous release.
36    </para>
37
38    <para>
39     Version 9.3 contains a number of changes that may affect compatibility
40     with previous releases.  Observe the following incompatibilities:
41    </para>
42
43    <sect3>
44     <title>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, Ants Aasma)
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         Add libpq function PQconninfo() to return connection information
1058         (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi, Magnus Hagander)
1059        </para>
1060       </listitem>
1061
1062     </itemizedlist>
1063
1064     <sect4>
1065      <title><link linkend="APP-PSQL"><application>psql</></link></title>
1066
1067      <itemizedlist>
1068
1069       <listitem>
1070        <para>
1071         Adjust function cost settings so psql tab completion and pattern
1072         searching is more efficient (Tom Lane)
1073        </para>
1074       </listitem>
1075
1076       <listitem>
1077        <para>
1078         Improve psql tab completion (Jeff Janes, Peter Eisentraut)
1079        </para>
1080       </listitem>
1081
1082       <listitem>
1083        <para>
1084         Allow the psql --single-transaction mode to work when reading from
1085         standard input (Fabien Coelho, Robert Haas)
1086        </para>
1087
1088        <para>
1089         Previously this option only worked when reading from a file.
1090        </para>
1091       </listitem>
1092
1093       <listitem>
1094        <para>
1095         Remove psql warning when connecting to an older server (Peter Eisentraut)
1096        </para>
1097
1098        <para>
1099         The warning when connecting to a newer server was retained.
1100        </para>
1101       </listitem>
1102
1103      </itemizedlist>
1104
1105     <sect5>
1106      <title>Backslash Commands</title>
1107
1108      <itemizedlist>
1109
1110       <listitem>
1111        <para>
1112         Add psql \watch command to repeatedly execute commands (Will
1113         Leinweber)
1114        </para>
1115       </listitem>
1116
1117       <listitem>
1118        <para>
1119         Add psql command \gset to store query results in psql variables
1120         (Pavel Stehule)
1121        </para>
1122       </listitem>
1123
1124       <listitem>
1125        <para>
1126         Add SSL information to psql's \conninfo command (Alastair Turner)
1127        </para>
1128       </listitem>
1129
1130       <listitem>
1131        <para>
1132         Add "Security" label to psql \df+ output (Jon Erdman)
1133        </para>
1134       </listitem>
1135
1136       <listitem>
1137        <para>
1138         Allow psql \l to accept a database name pattern (Peter Eisentraut)
1139        </para>
1140       </listitem>
1141
1142       <listitem>
1143        <para>
1144         In psql, do not allow \connect to use defaults if there is no active
1145         connection (Bruce Momjian)
1146        </para>
1147
1148        <para>
1149         This might be the case if the server had crashed.
1150        </para>
1151       </listitem>
1152
1153       <listitem>
1154        <para>
1155         Properly reset state if psql's "\g file" command failed (Tom Lane)
1156        </para>
1157
1158        <para>
1159         Previously failed commands discarded output from subsequent commands.
1160        </para>
1161       </listitem>
1162
1163      </itemizedlist>
1164
1165     </sect5>
1166
1167     <sect5>
1168      <title>Output</title>
1169
1170      <itemizedlist>
1171
1172       <listitem>
1173        <para>
1174         Add a 'latex-longtable' output format to psql (Bruce Momjian)
1175        </para>
1176
1177        <para>
1178         Longtable allows tables to span multiple pages.
1179        </para>
1180       </listitem>
1181
1182       <listitem>
1183        <para>
1184         Add a border=3 output mode to the psql 'latex' format (Bruce Momjian)
1185        </para>
1186       </listitem>
1187
1188       <listitem>
1189        <para>
1190         In psql tuples-only and expanded modes, no longer output "(No rows)"
1191         (Peter Eisentraut)
1192        </para>
1193       </listitem>
1194
1195       <listitem>
1196        <para>
1197         In psql, no longer print an empty line for unaligned, expanded
1198         output for zero rows (Peter Eisentraut)
1199        </para>
1200       </listitem>
1201
1202      </itemizedlist>
1203
1204     </sect5>
1205
1206     </sect4>
1207
1208     <sect4>
1209      <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
1210
1211      <itemizedlist>
1212
1213       <listitem>
1214        <para>
1215         Add pg_dump --jobs to dump in parallel when using directory
1216         output format  (Joachim Wieland)
1217        </para>
1218       </listitem>
1219
1220       <listitem>
1221        <para>
1222         Have pg_dump output functions in a predictable order (Joel Jacobson)
1223        </para>
1224       </listitem>
1225
1226       <listitem>
1227        <para>
1228         Fix tar files emitted by pg_dump and pg_basebackup to be POSIX
1229         conformant (Brian Weaver, Tom Lane)
1230        </para>
1231       </listitem>
1232
1233       <listitem>
1234        <para>
1235         Add -d/--dbname option to pg_dump, for consistency with other client
1236         commands (Heikki Linnakangas)
1237        </para>
1238
1239        <para>
1240         The database name could already be supplied last without a flag.
1241        </para>
1242       </listitem>
1243
1244      </itemizedlist>
1245
1246     </sect4>
1247
1248     <sect4>
1249      <title><link linkend="APP-INITDB"><application>initdb</></link></title>
1250
1251      <itemizedlist>
1252
1253       <listitem>
1254        <para>
1255         Have initdb fsync the newly created data directory (Jeff Davis)
1256        </para>
1257
1258        <para>
1259         This can be disabled by using --nosync.
1260        </para>
1261       </listitem>
1262
1263       <listitem>
1264        <para>
1265         Add initdb --sync-only option to sync the data directory to durable
1266         storage (Bruce Momjian)
1267        </para>
1268
1269        <para>
1270         This is used by pg_upgrade.
1271        </para>
1272       </listitem>
1273
1274       <listitem>
1275        <para>
1276         Have initdb issue a warning about placing the data directory at the
1277         top of file system mount points (Bruce Momjian)
1278        </para>
1279       </listitem>
1280
1281      </itemizedlist>
1282
1283     </sect4>
1284
1285    </sect3>
1286
1287    <sect3>
1288     <title>Source Code</title>
1289
1290      <itemizedlist>
1291
1292       <listitem>
1293        <para>
1294         Add an embedded list interface (Andres Freund)
1295        </para>
1296       </listitem>
1297
1298       <listitem>
1299        <para>
1300         Add infrastructure to better support plug-in background worker
1301         processes  (&Aacute;lvaro Herrera)
1302        </para>
1303       </listitem>
1304
1305       <listitem>
1306        <para>
1307         Create a centralized timeout API (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
1308        </para>
1309       </listitem>
1310
1311       <listitem>
1312        <para>
1313         Create libpgcommon and move pg_malloc() and other functions there
1314         (&Aacute;lvaro Herrera, Andres Freund)
1315        </para>
1316
1317        <para>
1318         This allows libpgport to be used solely for porting code.
1319        </para>
1320       </listitem>
1321
1322       <listitem>
1323        <para>
1324         Standardize on naming of client-side memory allocation functions (Tom Lane)
1325        </para>
1326       </listitem>
1327
1328       <listitem>
1329        <para>
1330         Add compiler designations to indicate some ereport() and elog()
1331         calls do not return (Peter Eisentraut, Andres Freund, Tom Lane,
1332         Heikki Linnakangas)
1333        </para>
1334       </listitem>
1335
1336       <listitem>
1337        <para>
1338         Allow options to be passed to the regression test output comparison
1339         utility via PG_REGRESS_DIFF_OPTS (Peter Eisentraut)
1340        </para>
1341       </listitem>
1342
1343       <listitem>
1344        <para>
1345         Add isolation tests for CREATE INDEX CONCURRENTLY (Abhijit Menon-Sen)
1346        </para>
1347       </listitem>
1348
1349       <listitem>
1350        <para>
1351         Remove typedefs for int2/int4 as they are better represented as int16/int32 (Peter Eisentraut)
1352        </para>
1353       </listitem>
1354
1355       <listitem>
1356        <para>
1357         Fix install-strip on Mac OS X (Peter Eisentraut)
1358        </para>
1359       </listitem>
1360
1361       <listitem>
1362        <para>
1363         Remove configure flag --disable-shared, as it is no longer used (Bruce Momjian)
1364        </para>
1365       </listitem>
1366
1367       <listitem>
1368        <para>
1369         Rewrite pgindent in Perl (Andrew Dunstan)
1370        </para>
1371       </listitem>
1372
1373       <listitem>
1374        <para>
1375         Add emacs macro to match Postgres perltidy formatting (Peter
1376         Eisentraut)
1377        </para>
1378       </listitem>
1379
1380       <listitem>
1381        <para>
1382         Run tool to check the keyword list when the backend grammar is changed (Tom Lane)
1383        </para>
1384       </listitem>
1385
1386       <listitem>
1387        <para>
1388         Centralize flex and bison 'make' rules (Peter Eisentraut)
1389        </para>
1390
1391        <para>
1392         This is useful for pgxs authors.
1393        </para>
1394       </listitem>
1395
1396       <listitem>
1397        <para>
1398         Add Assert() functionality to client-side code for frontend code (Andrew Dunstan)
1399        </para>
1400       </listitem>
1401
1402       <listitem>
1403        <para>
1404         Change many internal many backend functions to return OIDs rather
1405         than void (Dimitri Fontaine)
1406        </para>
1407
1408        <para>
1409         This is useful for event triggers.
1410        </para>
1411       </listitem>
1412
1413       <listitem>
1414        <para>
1415         Invent pre-commit/pre-prepare/pre-subcommit events for transaction
1416         callbacks (Tom Lane)
1417        </para>
1418
1419        <para>
1420         Loadable modules that use transaction callbacks might need modification
1421         to handle these new event types.
1422        </para>
1423       </listitem>
1424
1425       <listitem>
1426        <para>
1427         Add function pg_identify_object() to dump an object in
1428         machine-readable format (&Aacute;lvaro Herrera)
1429        </para>
1430       </listitem>
1431
1432       <listitem>
1433        <para>
1434         Add post-ALTER-object server hooks (KaiGai Kohei)
1435        </para>
1436       </listitem>
1437
1438       <listitem>
1439        <para>
1440         Implement a generic binary heap and use it for Merge-Append
1441         operations (Abhijit Menon-Sen)
1442        </para>
1443       </listitem>
1444
1445       <listitem>
1446        <para>
1447         Improve ability to detect official timezone abbreviation changes
1448         (Tom Lane)
1449        </para>
1450       </listitem>
1451
1452       <listitem>
1453        <para>
1454         Add pkg-config support libpq and ecpg libraries (Peter Eisentraut)
1455        </para>
1456       </listitem>
1457
1458       <listitem>
1459        <para>
1460         Remove src/tool/backend, now that the content is on the Postgres
1461         wiki (Bruce Momjian)
1462        </para>
1463       </listitem>
1464
1465       <listitem>
1466        <para>
1467         Split out WAL reading as an independent facility (Heikki
1468         Linnakangas, Andres Freund)
1469        </para>
1470       </listitem>
1471
1472       <listitem>
1473        <para>
1474         Use a 64-bit integer to represent WAL positions (XLogRecPtr)
1475         instead of two 32-bit integers (Heikki Linnakangas)
1476        </para>
1477
1478        <para>
1479         Generally, tools that need to read the WAL format will need to
1480         be adjusted.
1481        </para>
1482       </listitem>
1483
1484       <listitem>
1485        <para>
1486         Allow PL/Python to support platform-specific include directories (Peter Eisentraut)
1487        </para>
1488       </listitem>
1489
1490       <listitem>
1491        <para>
1492         Allow PL/Python on OS X to build against custom versions of Python
1493         (Peter Eisentraut)
1494        </para>
1495       </listitem>
1496
1497      </itemizedlist>
1498
1499    </sect3>
1500
1501    <sect3>
1502     <title>Additional Modules</title>
1503
1504     <itemizedlist>
1505
1506       <listitem>
1507        <para>
1508         Allow write-enabled foreign data wrappers to support writes
1509         (KaiGai Kohei)
1510        </para>
1511       </listitem>
1512
1513       <listitem>
1514        <para>
1515         Add a Postgres foreign data wrapper contrib module (Shigeru
1516         Hanada)
1517        </para>
1518
1519        <para>
1520         This foreign data wrapper allows writes.
1521        </para>
1522       </listitem>
1523
1524       <listitem>
1525        <para>
1526         Add pg_xlogdump contrib program (Andres Freund)
1527        </para>
1528       </listitem>
1529
1530       <listitem>
1531        <para>
1532         Add support for indexing of regular-expression searches in
1533         contrib/pg_trgm (Alexander Korotkov)
1534        </para>
1535       </listitem>
1536
1537       <listitem>
1538        <para>
1539         Improve pg_trgm handling of multibyte characters (Tom Lane)
1540        </para>
1541       </listitem>
1542
1543       <listitem>
1544        <para>
1545         Add function to report the size of the GIN pending index insertion
1546         list (Fujii Masao)
1547        </para>
1548
1549        <para>
1550         The function is pgstatginindex() in pgstattuple.
1551        </para>
1552       </listitem>
1553
1554       <listitem>
1555        <para>
1556         Have oid2name, pgbench, and vacuumlo set fallback_application_name (Amit Kapila)
1557        </para>
1558       </listitem>
1559
1560       <listitem>
1561        <para>
1562         Improve output of pg_test_timing (Bruce Momjian)
1563        </para>
1564       </listitem>
1565
1566       <listitem>
1567        <para>
1568         Improve output of pg_test_fsync (Peter Geoghegan)
1569        </para>
1570       </listitem>
1571
1572       <listitem>
1573        <para>
1574         Improve dblink option validator (Tom Lane)
1575        </para>
1576
1577        <para>
1578         Details?
1579        </para>
1580       </listitem>
1581
1582     </itemizedlist>
1583
1584     <sect4>
1585      <title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>
1586
1587      <itemizedlist>
1588
1589       <listitem>
1590        <para>
1591         Allow pg_upgrade --jobs to do parallelism (Bruce Momjian)
1592        </para>
1593
1594        <para>
1595         This allows parallel schema dump/restore of databases, as well as
1596         parallel copy/link of data files per tablespace.
1597        </para>
1598       </listitem>
1599
1600       <listitem>
1601        <para>
1602         Have pg_upgrade create unix-domain sockets in the current directory
1603         (Bruce Momjian, Tom Lane)
1604        </para>
1605
1606        <para>
1607         This reduces the possibility that someone will accidentally connect
1608         during the upgrade.
1609        </para>
1610       </listitem>
1611
1612       <listitem>
1613        <para>
1614         Have pg_upgrade --check mode properly detect the location of
1615         non-default socket directories (Bruce Momjian, Tom Lane)
1616        </para>
1617       </listitem>
1618
1619       <listitem>
1620        <para>
1621         Improve performance of pg_upgrade for databases with many tables (Bruce Momjian)
1622        </para>
1623       </listitem>
1624
1625       <listitem>
1626        <para>
1627         Increase pg_upgrade logging content by showing executed command
1628         (&Aacute;lvaro Herrera)
1629        </para>
1630       </listitem>
1631
1632       <listitem>
1633        <para>
1634         Improve pg_upgrade's status display during copy/link (Bruce Momjian)
1635        </para>
1636       </listitem>
1637
1638      </itemizedlist>
1639
1640     </sect4>
1641
1642     <sect4>
1643      <title><link linkend="pgbench"><application>pgbench</></link></title>
1644
1645      <itemizedlist>
1646
1647       <listitem>
1648        <para>
1649         Add --foreign-keys option to pgbench (Jeff Janes)
1650        </para>
1651
1652        <para>
1653         This adds foreign key constraints to tables, for use in foreign
1654         key performance testing.
1655        </para>
1656       </listitem>
1657
1658       <listitem>
1659        <para>
1660         Allow pgbench to aggregate performance statistics and produce output
1661         every --aggregate-interval specified seconds (Tomas Vondra)
1662        </para>
1663       </listitem>
1664
1665       <listitem>
1666        <para>
1667         Add pg_bench --sampling-rate option to control the percentage of
1668         transactions logged (Tomas Vondra)
1669        </para>
1670       </listitem>
1671
1672       <listitem>
1673        <para>
1674         Reduce and improve the status message output of pgbench's
1675         initialization mode (Robert Haas, Peter Eisentraut)
1676        </para>
1677       </listitem>
1678
1679       <listitem>
1680        <para>
1681         Add pgbench -q mode to print one output line every five seconds (Tomas Vondra)
1682        </para>
1683
1684        <para>
1685         Output pgbench elapsed and estimated remaining time during
1686         initialization logging (Tomas Vondra)
1687        </para>
1688       </listitem>
1689
1690       <listitem>
1691        <para>
1692         Allow pgbench to use a larger scale factor (Greg Smith)
1693        </para>
1694       </listitem>
1695
1696     </itemizedlist>
1697
1698     </sect4>
1699
1700    </sect3>
1701
1702    <sect3>
1703     <title>Documentation</title>
1704
1705     <itemizedlist>
1706
1707       <listitem>
1708        <para>
1709         Allow EPUB-format documentation to be created (Peter Eisentraut)
1710        </para>
1711       </listitem>
1712
1713       <listitem>
1714        <para>
1715         Update FreeBSD kernel configuration documentation (Brad Davis)
1716        </para>
1717       </listitem>
1718
1719       <listitem>
1720        <para>
1721         Improve WINDOW function documentation (Bruce Momjian, Tom Lane)
1722        </para>
1723       </listitem>
1724
1725       <listitem>
1726        <para>
1727         Add instructions for setting up the documentation tool chain on
1728         Mac OS X (Peter Eisentraut)
1729        </para>
1730       </listitem>
1731
1732       <listitem>
1733        <para>
1734         Improve commit_delay documentation (Peter Geoghegan)
1735        </para>
1736       </listitem>
1737
1738     </itemizedlist>
1739
1740    </sect3>
1741
1742   </sect2>
1743  </sect1>