]> granicus.if.org Git - postgresql/blob - doc/src/sgml/release-9.3.sgml
Reorder some 9.3 release item entries
[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() (Darold Gilles)
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         Improve query string error location reporting (Tom Lane)
590        </para>
591
592        <para>
593         Only CREATE SCHEMA IF NOT EXISTS?  If so, remove it.
594        </para>
595       </listitem>
596
597       <listitem>
598        <para>
599         Correct predicate locking for DROP INDEX CONCURRENTLY (Kevin Grittner)
600         KEEP?
601        </para>
602       </listitem>
603
604       <listitem>
605        <para>
606         Add support for piping COPY and psql \copy to/from an external program (Etsuro
607         Fujita)
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         Internally store default foreign key matches (non-FULL, non-PARTIAL) as "simple" (Tom Lane)
708        </para>
709
710        <para>
711         These were previously stored as "&amp;unspecified&amp;".
712         This changes the value stored in system column
713         pg_constraint.confmatchtype.  BACKWARD COMPATIBILITY CHANGE
714        </para>
715       </listitem>
716
717       <listitem>
718        <para>
719         Change ON UPDATE SET NULL/SET DEFAULT foreign key actions to affect
720         all referenced columns, not just those referenced in the UPDATE
721         (Tom Lane)
722        </para>
723
724        <para>
725         Previously only columns referenced in the UPDATE were set to null or DEFAULT.
726         BACKWARD COMPATIBILITY CHANGE
727        </para>
728       </listitem>
729
730       <listitem>
731        <para>
732         Provide clients with constraint violation details as separate fields
733         (Pavel Stehule)
734        </para>
735
736        <para>
737         This allows clients to retrieve table, column, data type, or constraint
738         name error details. Previously such information had to be extracted from
739         error strings. Client language support is required to access these
740         fields.
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 support for ALTER RULE ... RENAME (Ali Dar)
756        </para>
757       </listitem>
758
759       <listitem>
760        <para>
761         Add ALTER ROLE ALL SET to add settings to all users (Peter Eisentraut)
762        </para>
763
764        <para>
765         This allows settings to apply to all users in all databases. ALTER
766         DATABASE SET already allowed addition of settings for all users in a
767         single database.  postgresql.conf has a similar effect.
768        </para>
769       </listitem>
770
771       <listitem>
772        <para>
773         Add the ALTER TYPE ... IF NOT EXISTS clause when adding enumerated type labels (Andrew
774         Dunstan)
775        </para>
776
777        <para>
778         This is useful for conditional label creation in transaction blocks.
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         When converting a table to a view, remove its system columns (Tom Lane)
794         KEEP?
795        </para>
796       </listitem>
797
798       <listitem>
799        <para>
800         Make simple views auto-updatable (Dean Rasheed)
801        </para>
802
803        <para>
804         INSTEAD rules are still available for complex views.
805        </para>
806       </listitem>
807
808       <listitem>
809        <para>
810         Allow views and rules to handle cases where referenced tables are
811         renamed, or columns are renamed, added, or dropped (Tom Lane)
812         HOW DOES IT HANDLE A DROPPED REFERENCED COLUMN?
813        </para>
814       </listitem>
815
816       <listitem>
817        <para>
818         Add CREATE RECURSIVE VIEW syntax (Peter Eisentraut)
819        </para>
820
821        <para>
822         Internally this is translated into CREATE VIEW ... WITH RECURSIVE.
823        </para>
824       </listitem>
825
826       <listitem>
827        <para>
828         Add a materialized view relations (Kevin Grittner)
829        </para>
830
831        <para>
832         Unlink ordinary views, where the base tables are read on every access,
833         materialized views create physical tables at creation or refresh time.
834         Access to the materialized view reads from these materialized physical
835         tables. There is no facility for incrementally refreshing materialized
836         views or auto-accessing them via base table access.
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         Allow text timezone designations, e.g. "America/Chicago" when using the
854         ISO "T" timestamptz format (Bruce Momjian)
855        </para>
856       </listitem>
857
858       <listitem>
859        <para>
860         Increase the maximum length of large objects from 2GB to 4TB (Nozomi
861         Anzai, Yugo Nagata)
862        </para>
863
864        <para>
865         This change includes new libpq and server-side 64-bit-enabled functions.
866        </para>
867       </listitem>
868
869       <listitem>
870        <para>
871         Add functions to convert values, records, and hstore data to JSON (Andrew Dunstan)
872        </para>
873       </listitem>
874
875       <listitem>
876        <para>
877         Add operators and functions to extract values from JSON data strings
878         (Andrew Dunstan)
879        </para>
880       </listitem>
881
882       <listitem>
883        <para>
884         Allow JSON data strings to be converted into records (Andrew Dunstan)
885        </para>
886       </listitem>
887
888     </itemizedlist>
889
890    </sect3>
891
892    <sect3>
893     <title>Functions</title>
894
895      <itemizedlist>
896
897       <listitem>
898        <para>
899         Add array_remove() and array_replace() functions (Marco Nenciarini, Gabriele Bartolini)
900        </para>
901       </listitem>
902
903       <listitem>
904        <para>
905         Have to_char(), to_date(), and to_timestamp() properly handle
906         negative century designations (CC) (Bruce Momjian)
907        </para>
908
909        <para>
910         Previously the behavior was either wrong or inconsistent with
911         positive/AD handling, e.g. format mask 'IYYY-IW-DY'.
912        </para>
913       </listitem>
914
915       <listitem>
916        <para>
917         In to_date() and to_timestamp(), return proper results when mixing
918         ISO and Gregorian week/day designations (Bruce Momjian)
919        </para>
920       </listitem>
921
922       <listitem>
923        <para>
924         Allow concat() and format() to properly expand VARIADIC-labeled
925         arguments (Pavel Stehule)
926        </para>
927       </listitem>
928
929       <listitem>
930        <para>
931         Cause pg_get_viewdef() to default to wrapping after every SELECT
932         target list and FROM entry (Marko Tiikkaja)
933        </para>
934
935        <para>
936         This causes view output, like from pg_dump, to be more narrow.
937        </para>
938       </listitem>
939
940       <listitem>
941        <para>
942         Have map_sql_value_to_xml_value() properly expand domains (Pavel
943         Stehule)
944        </para>
945       </listitem>
946
947       <listitem>
948        <para>
949         Improve format() to handle field width and left/right alignment
950         (Pavel Stehule)
951        </para>
952       </listitem>
953
954       <listitem>
955        <para>
956         Force cached functions to be replanned if the search_path changes (Tom Lane)
957        </para>
958
959        <para>
960         Previously functions already run in the current session ignored changes
961         (Bruce Momjian)
962        </para>
963       </listitem>
964
965      </itemizedlist>
966
967    </sect3>
968
969    <sect3>
970     <title>Server-Side Languages</title>
971
972      <itemizedlist>
973
974       <listitem>
975        <para>
976         Allow SPI functions to access the number of rows processed by COPY (Pavel
977         Stehule)
978        </para>
979       </listitem>
980
981      </itemizedlist>
982
983     <sect4>
984      <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
985
986      <itemizedlist>
987
988       <listitem>
989        <para>
990         Allow greater flexibility in where keywords can be used in PL/pgSQL (Tom Lane)
991        </para>
992       </listitem>
993
994       <listitem>
995        <para>
996         Allow PL/pgSQL to access the number of rows processed by COPY (Pavel
997         Stehule)
998        </para>
999
1000        <para>
1001         The command is GET DIAGNOSTICS x = ROW_COUNT.
1002        </para>
1003       </listitem>
1004
1005       <listitem>
1006        <para>
1007         Allow PL/pgSQL to use RETURN with a composite-type expressions (Asif
1008         Rehman)
1009        </para>
1010
1011        <para>
1012         Previously RETURN could only reference composite-type variables.
1013        </para>
1014       </listitem>
1015
1016     </itemizedlist>
1017
1018     </sect4>
1019
1020     <sect4>
1021      <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
1022
1023      <itemizedlist>
1024
1025       <listitem>
1026        <para>
1027         Allow PL/Python to support platform-specific include directories (Peter Eisentraut)
1028        </para>
1029       </listitem>
1030
1031       <listitem>
1032        <para>
1033         Allow PL/Python on OS X to build against custom versions of Python
1034         (Peter Eisentraut)
1035        </para>
1036       </listitem>
1037
1038       <listitem>
1039        <para>
1040         Handle SPIErrors raised explicitly with PL/Python's RAISE the same as
1041         as internal SPI errors (Oskari Saarenmaa and Jan Urbanski)
1042        </para>
1043       </listitem>
1044
1045       <listitem>
1046        <para>
1047         Add PL/Python result object string handler (Peter Eisentraut)
1048        </para>
1049
1050        <para>
1051         This allows plpy.debug(rv) to output something reasonable.
1052        </para>
1053       </listitem>
1054
1055       <listitem>
1056        <para>
1057         Have PL/Python convert oid values to a proper Python numeric type (Peter Eisentraut)
1058        </para>
1059       </listitem>
1060
1061      </itemizedlist>
1062
1063     </sect4>
1064
1065    </sect3>
1066
1067    <sect3>
1068     <title>Client Applications</title>
1069
1070     <itemizedlist>
1071
1072       <listitem>
1073        <para>
1074         Have initdb fsync the newly created data directory (Jeff Davis)
1075        </para>
1076
1077        <para>
1078         This can be disabled by using --nosync.
1079        </para>
1080       </listitem>
1081
1082       <listitem>
1083        <para>
1084         Add initdb --sync-only option to sync the data directory to durable
1085         storage (Bruce Momjian)
1086        </para>
1087
1088        <para>
1089         This is used by pg_upgrade.
1090        </para>
1091       </listitem>
1092
1093       <listitem>
1094        <para>
1095         Support multiple --table arguments for pg_restore, clusterdb,
1096         reindexdb, and vacuumdb (Josh Kupershmidt)
1097        </para>
1098
1099        <para>
1100         This is similar to the pg_dump --table support.
1101        </para>
1102       </listitem>
1103
1104       <listitem>
1105        <para>
1106         Add command-line utility pg_isready to check if the server is ready
1107         to accept connections (Phil Sorber)
1108        </para>
1109       </listitem>
1110
1111       <listitem>
1112        <para>
1113         Have initdb issue a warning about placing the data directory at the
1114         top of file system mount points (Bruce Momjian)
1115        </para>
1116       </listitem>
1117
1118       <listitem>
1119        <para>
1120         Add -d option to pg_dumpall, pg_basebackup, pg_receivexlog to
1121         specify the connection string (Amit Kapila)
1122        </para>
1123       </listitem>
1124
1125       <listitem>
1126        <para>
1127         Allow pg_ctl --idempotent to a 'success' return code if the requested
1128         start/stop action fails, but the cluster is already in the requested
1129         state (Peter Eisentraut)
1130        </para>
1131       </listitem>
1132
1133       <listitem>
1134        <para>
1135         Change pg_ctl to return an error code if start fails because the
1136         server is already running (Peter Eisentraut)                                        
1137        </para>
1138       </listitem>
1139  
1140       <listitem>
1141        <para>
1142         Add libpq function PQconninfo() to return connection information
1143         (Zoltan Boszormenyi, Magnus Hagander)
1144        </para>
1145       </listitem>
1146
1147     </itemizedlist>
1148
1149     <sect4>
1150      <title><link linkend="APP-PSQL"><application>psql</></link></title>
1151
1152      <itemizedlist>
1153
1154       <listitem>
1155        <para>
1156         Allow the psql --single-transaction mode to work when reading from
1157         standard input (Fabien Coelho, Robert Haas)
1158        </para>
1159
1160        <para>
1161         Previously this option only worked when reading from a file.
1162        </para>
1163       </listitem>
1164
1165       <listitem>
1166        <para>
1167         Improve psql tab completion (Jeff Janes, Peter Eisentraut)
1168        </para>
1169       </listitem>
1170
1171       <listitem>
1172        <para>
1173         Remove psql warning when connecting to an older server (Peter Eisentraut)
1174        </para>
1175
1176        <para>
1177         The warning when connecting to a newer server was retained.
1178        </para>
1179       </listitem>
1180
1181       <listitem>
1182        <para>
1183         Adjust function cost settings so psql tab completion and pattern
1184         searching is more efficient (Tom Lane)
1185        </para>
1186       </listitem>
1187
1188      </itemizedlist>
1189
1190     <sect5>
1191      <title>Backslash Commands</title>
1192
1193      <itemizedlist>
1194
1195       <listitem>
1196        <para>
1197         Add SSL information to psql's \conninfo command (Alastair Turner)
1198        </para>
1199       </listitem>
1200
1201       <listitem>
1202        <para>
1203         In psql, do not allow \connect to use defaults if there is no active
1204         connection (Bruce Momjian)
1205        </para>
1206
1207        <para>
1208         This might be the case if the server had crashed.
1209        </para>
1210       </listitem>
1211
1212       <listitem>
1213        <para>
1214         Add "Security" label to psql \df+ output (Jon Erdman)
1215        </para>
1216       </listitem>
1217
1218       <listitem>
1219        <para>
1220         Properly reset state if psql's "\g file" command failed (Tom Lane)
1221        </para>
1222
1223        <para>
1224         Previously failed commands discarded output from subsequent commands.
1225        </para>
1226       </listitem>
1227
1228       <listitem>
1229        <para>
1230         Add psql command \gset to store query results in psql variables
1231         (Pavel Stehule)
1232        </para>
1233       </listitem>
1234
1235       <listitem>
1236        <para>
1237         Add psql \watch command to repeatedly execute commands (Will
1238         Leinweber)
1239        </para>
1240       </listitem>
1241
1242       <listitem>
1243        <para>
1244         Allow psql \l to accept a database name pattern (Peter Eisentraut)
1245        </para>
1246       </listitem>
1247
1248      </itemizedlist>
1249
1250     </sect5>
1251
1252     <sect5>
1253      <title>Output</title>
1254
1255      <itemizedlist>
1256
1257       <listitem>
1258        <para>
1259         Add a 'latex-longtable' output format to psql (Bruce Momjian)
1260        </para>
1261
1262        <para>
1263         Longtable allows tables to span multiple pages.
1264        </para>
1265       </listitem>
1266
1267       <listitem>
1268        <para>
1269         Add a border=3 output mode to the psql 'latex' format (Bruce Momjian)
1270        </para>
1271       </listitem>
1272
1273       <listitem>
1274        <para>
1275         In psql tuples-only and expanded modes, no longer output "(No rows)"
1276         (Peter Eisentraut)
1277        </para>
1278       </listitem>
1279
1280       <listitem>
1281        <para>
1282         In psql, no longer print an empty line for unaligned, expanded
1283         output for zero rows (Peter Eisentraut)
1284        </para>
1285       </listitem>
1286
1287      </itemizedlist>
1288
1289     </sect5>
1290
1291     </sect4>
1292
1293     <sect4>
1294      <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
1295
1296      <itemizedlist>
1297
1298       <listitem>
1299        <para>
1300         Fix tar files emitted by pg_dump and pg_basebackup to be POSIX
1301         conformant (Brian Weaver, Tom Lane)
1302        </para>
1303       </listitem>
1304
1305
1306       <listitem>
1307        <para>
1308         Have pg_dump output functions in a predictable order (Joel Jacobson)
1309        </para>
1310       </listitem>
1311
1312       <listitem>
1313        <para>
1314         Add -d/--dbname option to pg_dump, for consistency with other client
1315         commands (Heikki Linnakangas)
1316        </para>
1317
1318        <para>
1319         The database name could already be supplied last without a flag.
1320        </para>
1321       </listitem>
1322
1323       <listitem>
1324        <para>
1325         Add pg_dump --jobs to dump in parallel (Joachim Wieland)
1326        </para>
1327       </listitem>
1328
1329      </itemizedlist>
1330
1331     </sect4>
1332
1333    </sect3>
1334
1335    <sect3>
1336     <title>Source Code</title>
1337
1338      <itemizedlist>
1339
1340       <listitem>
1341        <para>
1342         Remove typedefs for int2/int4 as they are better represented as int16/int32 (Peter Eisentraut)
1343        </para>
1344       </listitem>
1345
1346       <listitem>
1347        <para>
1348         Create a centralized timeout API (Zoltán Böszörményi)
1349        </para>
1350       </listitem>
1351
1352       <listitem>
1353        <para>
1354         Rewrite pgindent in Perl (Andrew Dunstan)
1355        </para>
1356       </listitem>
1357
1358       <listitem>
1359        <para>
1360         Add compiler designations to indicate some ereport() and elog()
1361         calls do not return (Peter Eisentraut, Andres Freund, Tom Lane,
1362         Heikki Linnakangas)
1363        </para>
1364       </listitem>
1365
1366       <listitem>
1367        <para>
1368         Fix install-strip on Mac OS X (Peter Eisentraut)
1369        </para>
1370       </listitem>
1371
1372       <listitem>
1373        <para>
1374         Remove configure flag --disable-shared, as it is no longer used (Bruce Momjian)
1375        </para>
1376       </listitem>
1377
1378       <listitem>
1379        <para>
1380         Add emacs macro to match Postgres perltidy formatting (Peter
1381         Eisentraut)
1382        </para>
1383       </listitem>
1384
1385       <listitem>
1386        <para>
1387         Run tool to check the keyword list when the backend grammar is changed (Tom Lane)
1388        </para>
1389       </listitem>
1390
1391       <listitem>
1392        <para>
1393         Standardize on naming of client-side memory allocation functions (Tom Lane)
1394        </para>
1395       </listitem>
1396
1397       <listitem>
1398        <para>
1399         Centralize flex and bison 'make' rules (Peter Eisentraut)
1400        </para>
1401
1402        <para>
1403         This is useful for pgxs authors.
1404        </para>
1405       </listitem>
1406
1407       <listitem>
1408        <para>
1409         Add an embedded list interface (Andres Freund)
1410        </para>
1411       </listitem>
1412
1413       <listitem>
1414        <para>
1415         Add infrastructure to better support plug-in background worker
1416         processes  (AlvaroAacute;lvaro Herrera)
1417        </para>
1418       </listitem>
1419
1420       <listitem>
1421        <para>
1422         Add Assert() functionality to client-side code for frontend code (Andrew Dunstan)
1423        </para>
1424       </listitem>
1425
1426       <listitem>
1427        <para>
1428         Change many internal many backend functions to return OIDs rather
1429         than void (Dimitri Fontaine)
1430        </para>
1431
1432        <para>
1433         This is useful for event triggers.
1434        </para>
1435       </listitem>
1436
1437       <listitem>
1438        <para>
1439         Allow options to be passed to the regression test output comparison
1440         utility via PG_REGRESS_DIFF_OPTS (Peter Eisentraut)
1441        </para>
1442       </listitem>
1443
1444       <listitem>
1445        <para>
1446         Create libpgcommon and move pg_malloc() and other functions there
1447         (AlvaroAacute;lvaro Herrera, Andres Freund)
1448        </para>
1449
1450        <para>
1451         This allows libpgport to be used solely for porting code.
1452        </para>
1453       </listitem>
1454
1455       <listitem>
1456        <para>
1457         Invent pre-commit/pre-prepare/pre-subcommit events for transaction
1458         callbacks (Tom Lane)
1459        </para>
1460
1461        <para>
1462         Loadable modules that use transaction callbacks might need modification
1463         to handle these new event types.
1464        </para>
1465       </listitem>
1466
1467       <listitem>
1468        <para>
1469         Add function pg_identify_object() to dump an object in
1470         machine-readable format (AlvaroAacute;lvaro Herrera)
1471        </para>
1472       </listitem>
1473
1474       <listitem>
1475        <para>
1476         Improve ability to detect official timezone abbreviation changes
1477         (Tom Lane)
1478        </para>
1479       </listitem>
1480
1481       <listitem>
1482        <para>
1483         Add pkg-config support libpq and ecpg libraries (Peter Eisentraut)
1484        </para>
1485       </listitem>
1486
1487       <listitem>
1488        <para>
1489         Add post-ALTER-object server hooks (KaiGai Kohei)
1490        </para>
1491       </listitem>
1492
1493       <listitem>
1494        <para>
1495         Remove src/tool/backend, now that the content is on the Postgres
1496         wiki (Bruce Momjian)
1497        </para>
1498       </listitem>
1499
1500       <listitem>
1501        <para>
1502         Split out WAL reading as an independent facility (Andres Freund, Heikki
1503         Linnakangas)
1504        </para>
1505       </listitem>
1506
1507      </itemizedlist>
1508
1509    </sect3>
1510
1511    <sect3>
1512     <title>Additional Modules</title>
1513
1514     <itemizedlist>
1515
1516       <listitem>
1517        <para>
1518         Have oid2name, pgbench, and vacuumlo set fallback_application_name (Amit Kapila)
1519        </para>
1520       </listitem>
1521
1522       <listitem>
1523        <para>
1524         Improve output of pg_test_timing (Bruce Momjian)
1525        </para>
1526       </listitem>
1527
1528       <listitem>
1529        <para>
1530         Improve pg_test_fsync output (Peter Geoghegan)
1531        </para>
1532       </listitem>
1533
1534       <listitem>
1535        <para>
1536         Improve contrib/dblink option validator (Tom Lane)
1537        </para>
1538
1539        <para>
1540         Details?
1541        </para>
1542       </listitem>
1543
1544       <listitem>
1545        <para>
1546         Add a Postgres foreign data wrapper contrib module (Shigeru Hanada)
1547        </para>
1548       </listitem>
1549
1550       <listitem>
1551        <para>
1552         Add pg_xlogdump contrib program (Andres Freund)
1553        </para>
1554       </listitem>
1555
1556       <listitem>
1557        <para>
1558         Allow write to Postgres foreign tables (KaiGai Kohei)
1559        </para>
1560
1561        <para>
1562         Other foreign data wrappers can now also potentially support write
1563         operations.
1564        </para>
1565       </listitem>
1566
1567       <listitem>
1568        <para>
1569         Improve pg_trgm handling of multibyte characters (Tom Lane)
1570        </para>
1571       </listitem>
1572
1573       <listitem>
1574        <para>
1575         Add support for indexing of regular-expression searches in
1576         contrib/pg_trgm (Alexander Korotkov)
1577        </para>
1578       </listitem>
1579
1580     </itemizedlist>
1581
1582     <sect4>
1583      <title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>
1584
1585      <itemizedlist>
1586
1587       <listitem>
1588        <para>
1589         Increase pg_upgrade logging content by showing executed command
1590         (AlvaroAacute;lvaro Herrera)
1591        </para>
1592       </listitem>
1593
1594       <listitem>
1595        <para>
1596         Have pg_upgrade create unix-domain sockets in the current directory
1597         (Bruce Momjian, Tom Lane)
1598        </para>
1599
1600        <para>
1601         This reduces the possibility that someone will accidentally connect
1602         during the upgrade.
1603        </para>
1604       </listitem>
1605
1606       <listitem>
1607        <para>
1608         Have pg_upgrade --check mode properly detect the location of
1609         non-default socket directories (Bruce Momjian, Tom Lane)
1610        </para>
1611       </listitem>
1612
1613       <listitem>
1614        <para>
1615         Improve performance of pg_upgrade for databases with many tables (Bruce Momjian)
1616        </para>
1617       </listitem>
1618
1619       <listitem>
1620        <para>
1621         Improve pg_upgrade's status display during copy/link (Bruce Momjian)
1622        </para>
1623       </listitem>
1624
1625       <listitem>
1626        <para>
1627         Allow pg_upgrade --jobs to do parallelism (Bruce Momjian)
1628        </para>
1629
1630        <para>
1631         This allows parallel schema dump/restore of databases, as well as
1632         parallel copy/link of data files per tablespace.
1633        </para>
1634       </listitem>
1635
1636      </itemizedlist>
1637
1638     </sect4>
1639
1640     <sect4>
1641      <title><link linkend="pgbench"><application>pgbench</></link></title>
1642
1643      <itemizedlist>
1644       <listitem>
1645        <para>
1646         Add --foreign-keys option to pgbench (Jeff Janes)
1647        </para>
1648
1649        <para>
1650         This adds foreign key constraints to tables, for use in foreign
1651         key performance testing.
1652        </para>
1653       </listitem>
1654
1655       <listitem>
1656        <para>
1657         Reduce and improve the status message output of pgbench's
1658         initialization mode (Robert Haas, Peter Eisentraut)
1659        </para>
1660       </listitem>
1661
1662       <listitem>
1663        <para>
1664         Add pg_bench --sampling-rate option to control the percentage of
1665         transactions logged (Tomas Vondra)
1666        </para>
1667       </listitem>
1668
1669       <listitem>
1670        <para>
1671         Add pgbench -q mode to print one output line every five seconds (Tomas Vondra)
1672        </para>
1673
1674        <para>
1675         Output pgbench elapsed and estimated remaining time during
1676         initialization logging (Tomas Vondra)
1677        </para>
1678       </listitem>
1679
1680       <listitem>
1681        <para>
1682         Allow pgbench to aggregate performance statistics and produce output
1683         every --aggregate-interval specified seconds (Tomas Vondra)
1684        </para>
1685       </listitem>
1686
1687       <listitem>
1688        <para>
1689         Allow pgbench to use a larger scale factor (Greg Smith)
1690        </para>
1691       </listitem>
1692
1693     </itemizedlist>
1694
1695     </sect4>
1696
1697    </sect3>
1698
1699    <sect3>
1700     <title>Documentation</title>
1701
1702     <itemizedlist>
1703
1704       <listitem>
1705        <para>
1706         Improve WINDOW function documentation (Bruce Momjian, Tom Lane)
1707        </para>
1708       </listitem>
1709
1710       <listitem>
1711        <para>
1712         Add instructions for setting up the documentation tool chain on
1713         Mac OS X (Peter Eisentraut)
1714        </para>
1715       </listitem>
1716
1717       <listitem>
1718        <para>
1719         Update FreeBSD kernel configuration documentation (Brad Davis)
1720        </para>
1721       </listitem>
1722
1723       <listitem>
1724        <para>
1725         Allow EPUB-format documentation to be created (Peter Eisentraut)
1726        </para>
1727       </listitem>
1728
1729       <listitem>
1730        <para>
1731         Improve commit_delay documentation (Peter Geoghegan)
1732        </para>
1733       </listitem>
1734
1735     </itemizedlist>
1736
1737    </sect3>
1738
1739   </sect2>
1740  </sect1>