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