]> granicus.if.org Git - postgresql/blob - doc/src/sgml/release-9.3.sgml
Adjust 9.3 release notes per request from Simon
[postgresql] / doc / src / sgml / release-9.3.sgml
1 <!-- doc/src/sgml/release-9.3.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
3
4  <sect1 id="release-9-3">
5   <title>Release 9.3</title>
6
7   <note>
8    <title>Release Date</title>
9    <simpara>2013-XX-XX, CURRENT AS OF 2013-04-20</simpara>
10   </note>
11
12   <sect2>
13    <title>Overview</title>
14
15    <para>
16     ADD HERE  Major enhancements include:
17    </para>
18
19     <!-- This list duplicates items below, but without authors or details-->
20
21    <para>
22     The above items are explained in more detail in the sections below.
23    </para>
24
25   </sect2>
26
27   <sect2>
28
29   <title>Migration to Version 9.3</title>
30
31    <para>
32     A dump/restore using <link
33     linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, or use
34     of <link linkend="pgupgrade"><application>pg_upgrade</></link>, is
35     required for those wishing to migrate data from any previous release.
36    </para>
37
38    <para>
39     Version 9.3 contains a number of changes that may affect compatibility
40     with previous releases.  Observe the following incompatibilities:
41    </para>
42
43    <sect3>
44     <title>ADD HERE</title>
45      <para>here</para>
46    </sect3>
47
48   </sect2>
49
50   <sect2>
51    <title>Changes</title>
52
53    <para>
54     Below you will find a detailed account of the changes between
55     <productname>PostgreSQL</productname> 9.3 and the previous major
56     release.
57    </para>
58
59    <sect3>
60     <title>Server</title>
61
62     <sect4>
63      <title>Locking</title>
64
65      <itemizedlist>
66
67       <listitem>
68        <para>
69         Prevent non-key-field row updates from locking foreign key rows
70         (&Aacute;lvaro Herrera, 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         "Allow in-memory sorts to use their full memory allocation (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 and behavior of commit_delay.
405         BACKWARD COMPATIBILITY
406        </para>
407       </listitem>
408
409       <listitem>
410        <para>
411         Require superuser privileges to set commit_delay because it
412         can now potentially delay other sessions (Simon Riggs)
413         BACKWARD COMPATIBILITY
414        </para>
415       </listitem>
416
417
418       <listitem>
419        <para>
420         Remove the external PID file on postmaster exit (Peter Eisentraut)
421        </para>
422       </listitem>
423
424       <listitem>
425        <para>
426         Have "session id" in log_line_prefix (%c) always output four hex
427         digits after the period (Bruce Momjian) COMPATIBILITY
428        </para>
429       </listitem>
430
431      </itemizedlist>
432
433     </sect4>
434
435    </sect3>
436
437    <sect3>
438     <title>Replication and Recovery</title>
439
440      <itemizedlist>
441
442       <listitem>
443        <para>
444         Allow a streaming replication standbys to follow a timeline switch (Heikki Linnakangas)
445        </para>
446
447        <para>
448         This allows streaming standbys to feed from newly-promoted slaves.
449         Previously slaves required access to a WAL archive directory to
450         accomplish this.
451        </para>
452       </listitem>
453
454       <listitem>
455        <para>
456         Add SQL functions pg_backup_in_progress() and pg_backup_start_time() (Gilles Darold)
457        </para>
458
459        <para>
460         These functions report the status of base backups.
461        </para>
462       </listitem>
463
464       <listitem>
465        <para>
466         Improve performance of streaming replication log shipping and
467         standby promotion (Andres Freund, Simon Riggs)
468        </para>
469       </listitem>
470
471       <listitem>
472        <para>
473         Add the last checkpoint's redo location to pg_controldata's output
474         (Fujii Masao)
475        </para>
476
477        <para>
478         This information is useful for determining the WAL files needed for
479         restore.
480        </para>
481       </listitem>
482
483       <listitem>
484        <para>
485         Allow tooling like pg_receivexlog to run on computers with different
486         architectures (Heikki Linnakangas)
487        </para>
488       </listitem>
489
490       <listitem>
491        <para>
492         Have pg_basebackup --write-recovery-conf output a minimal
493         recovery.conf (Zoltan Boszormenyi, Magnus Hagander)
494        </para>
495
496        <para>
497         This simplifies setting up a standby server.
498        </para>
499       </listitem>
500
501       <listitem>
502        <para>
503         Allow pg_receivexlog and pg_basebackup -X to handle streaming
504         timeline switches (Heikki Linnakangas)
505        </para>
506       </listitem>
507
508       <listitem>
509        <para>
510         Add wal_receiver_timeout parameter to control the WAL receiver
511         timeout (Amit Kapila)
512        </para>
513
514        <para>
515         This allows more rapid detection of connection failure. No longer set
516         wal_receiver_status_interval?
517        </para>
518       </listitem>
519
520       <listitem>
521        <para>
522         Rename replication_timeout to wal_sender_timeout (Amit Kapila)
523        </para>
524
525        <para>
526         BACKWARD COMPATIBILITY
527         This setting controls the WAL sender timeout.
528        </para>
529       </listitem>
530
531      </itemizedlist>
532
533     <sect4>
534      <title>Write-Ahead Log (WAL)</title>
535
536      <itemizedlist>
537
538       <listitem>
539        <para>
540         Store WAL in a continuous stream, rather than skipping the last
541         16MB segment every 4GB (Heikki Linnakangas)
542        </para>
543       </listitem>
544
545       <listitem>
546        <para>
547         Restructure WAL files to better handle timeline changes during
548         recovery (Heikki Linnakangas)
549        </para>
550       </listitem>
551
552       <listitem>
553        <para>
554         Restructure WAL files to use a more compact storage format (Heikki Linnakangas)
555        </para>
556       </listitem>
557
558      </itemizedlist>
559
560     </sect4>
561
562    </sect3>
563
564    <sect3>
565     <title>Queries</title>
566
567      <itemizedlist>
568
569       <listitem>
570        <para>
571         Implement SQL-standard LATERAL for FROM-clause subqueries and
572         function calls (Tom Lane)
573        </para>
574
575        <para>
576         This is useful in allowing FROM subqueries and functions to reference
577         output from tables in the FROM clause. The LATERAL keyword is optional
578         for functions.
579        </para>
580       </listitem>
581
582       <listitem>
583        <para>
584         Add support for piping COPY and psql \copy to/from an external program (Etsuro
585         Fujita)
586        </para>
587       </listitem>
588
589       <listitem>
590        <para>
591         Improve query string error location reporting (Tom Lane)
592        </para>
593
594        <para>
595         Only CREATE SCHEMA ... IF NOT EXISTS?  If so, remove it.
596        </para>
597       </listitem>
598
599       <listitem>
600        <para>
601         Correct predicate locking for DROP INDEX CONCURRENTLY (Kevin Grittner)
602         KEEP?
603        </para>
604       </listitem>
605
606      </itemizedlist>
607
608    </sect3>
609
610    <sect3>
611     <title>Object Manipulation</title>
612
613      <itemizedlist>
614
615       <listitem>
616        <para>
617         Add support to event triggers (Dimitri Fontaine, Tom Lane)
618        </para>
619
620        <para>
621         This allows C functions to be called when specific commands are run.
622        </para>
623       </listitem>
624
625       <listitem>
626        <para>
627         Allow a multi-row VALUES clause in rules to reference OLD/NEW (Tom Lane)
628        </para>
629       </listitem>
630
631       <listitem>
632        <para>
633         Add CREATE SCHEMA ... IF NOT EXIST clause (Fabrízio de Royes Mello)
634        </para>
635       </listitem>
636
637       <listitem>
638        <para>
639         Throw an error if expiring tuple is again updated or deleted (Kevin Grittner)
640         KEEP?
641        </para>
642       </listitem>
643
644       <listitem>
645        <para>
646         Have DROP OWNED only remove user-matching GRANTs on shared objects,
647         e.g. databases, tablespaces (&Aacute;lvaro Herrera)
648        </para>
649
650        <para>
651         Previously it tried to remove such objects, leading to an error.
652        </para>
653       </listitem>
654
655       <listitem>
656        <para>
657         Have REASSIGN OWNED also change ownership of shared objects (&Aacute;lvaro
658         Herrera)
659        </para>
660       </listitem>
661
662      </itemizedlist>
663
664     <sect4>
665      <title><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link></title>
666
667      <itemizedlist>
668
669       <listitem>
670        <para>
671         No longer output messages about implicit index and sequence creation (Robert Haas)
672        </para>
673
674        <para>
675         These messages now appear with DEBUG1-level output.
676        </para>
677       </listitem>
678
679       <listitem>
680        <para>
681         Allow CREATE TABLE IF NOT EXIST to succeed for a non-existent schema
682         (Bruce Momjian)
683        </para>
684
685        <para>
686          Previously, it threw an error if the schema did not exist.
687        </para>
688       </listitem>
689
690      </itemizedlist>
691
692     </sect4>
693
694     <sect4>
695      <title>Constraints</title>
696
697      <itemizedlist>
698
699       <listitem>
700        <para>
701         Change ON UPDATE SET NULL/SET DEFAULT foreign key actions to affect
702         all referenced columns, not just those referenced in the UPDATE
703         (Tom Lane)
704        </para>
705
706        <para>
707         Previously only columns referenced in the UPDATE were set to null or DEFAULT.
708         BACKWARD COMPATIBILITY CHANGE
709        </para>
710       </listitem>
711
712       <listitem>
713        <para>
714         Provide clients with constraint violation details as separate fields
715         (Pavel Stehule)
716        </para>
717
718        <para>
719         This allows clients to retrieve table, column, data type, or constraint
720         name error details. Previously such information had to be extracted from
721         error strings. Client language support is required to access these
722         fields.
723        </para>
724       </listitem>
725
726       <listitem>
727        <para>
728         Internally store default foreign key matches (non-FULL, non-PARTIAL) as "simple" (Tom Lane)
729        </para>
730
731        <para>
732         These were previously stored as "&amp;unspecified&amp;".
733         This changes the value stored in system column
734         pg_constraint.confmatchtype.  BACKWARD COMPATIBILITY CHANGE
735        </para>
736       </listitem>
737
738      </itemizedlist>
739
740     </sect4>
741
742     <sect4>
743      <title><command>ALTER</></title>
744
745      <itemizedlist>
746
747       <listitem>
748        <para>
749         Add the ALTER TYPE ... IF NOT EXISTS clause when adding enumerated type labels (Andrew
750         Dunstan)
751        </para>
752
753        <para>
754         This is useful for conditional label creation in transaction blocks.
755        </para>
756       </listitem>
757
758       <listitem>
759        <para>
760         Add ALTER ROLE ALL SET to add settings to all users (Peter Eisentraut)
761        </para>
762
763        <para>
764         This allows settings to apply to all users in all databases. ALTER
765         DATABASE SET already allowed addition of settings for all users in a
766         single database.  postgresql.conf has a similar effect.
767        </para>
768       </listitem>
769
770       <listitem>
771        <para>
772         Add support for ALTER RULE ... RENAME (Ali Dar)
773        </para>
774       </listitem>
775
776      </itemizedlist>
777
778     </sect4>
779
780     <sect4>
781      <title><link linkend="rules-views"><command>VIEWs</></link></title>
782
783      <itemizedlist>
784
785       <listitem>
786        <para>
787         Add a materialized view relations (Kevin Grittner)
788        </para>
789
790        <para>
791         Unlike ordinary views, where the base tables are read on every access,
792         materialized views create physical tables at creation or refresh time.
793         Access to the materialized view reads from these materialized physical
794         tables. There is no facility for incrementally refreshing materialized
795         views or auto-accessing them via base table access.
796        </para>
797       </listitem>
798
799       <listitem>
800        <para>
801         Make simple views auto-updatable (Dean Rasheed)
802        </para>
803
804        <para>
805         INSTEAD rules are still available for complex views.
806        </para>
807       </listitem>
808
809       <listitem>
810        <para>
811         Allow views and rules to handle cases where referenced tables are
812         renamed, or columns are renamed, added, or dropped (Tom Lane)
813         HOW DOES IT HANDLE A DROPPED REFERENCED COLUMN?
814        </para>
815       </listitem>
816
817       <listitem>
818        <para>
819         Add CREATE RECURSIVE VIEW syntax (Peter Eisentraut)
820        </para>
821
822        <para>
823         Internally this is translated into CREATE VIEW ... WITH RECURSIVE.
824        </para>
825       </listitem>
826
827       <listitem>
828        <para>
829         When converting a table to a view, remove its system columns (Tom Lane)
830         KEEP?
831        </para>
832       </listitem>
833
834      </itemizedlist>
835
836     </sect4>
837
838    </sect3>
839
840    <sect3>
841     <title>Data Types</title>
842
843     <itemizedlist>
844
845       <listitem>
846        <para>
847         Increase the maximum length of large objects from 2GB to 4TB (Nozomi
848         Anzai, Yugo Nagata)
849        </para>
850
851        <para>
852         This change includes new libpq and server-side 64-bit-enabled functions.
853        </para>
854       </listitem>
855
856       <listitem>
857        <para>
858         Allow text timezone designations, e.g. "America/Chicago" when using the
859         ISO "T" timestamptz format (Bruce Momjian)
860        </para>
861       </listitem>
862
863     </itemizedlist>
864
865    <sect4>
866     <title>JSON</title>
867
868     <itemizedlist>
869
870       <listitem>
871        <para>
872         Add operators and functions to extract values from JSON data strings
873         (Andrew Dunstan)
874        </para>
875       </listitem>
876
877       <listitem>
878        <para>
879         Allow JSON data strings to be converted into records (Andrew Dunstan)
880        </para>
881       </listitem>
882
883       <listitem>
884        <para>
885         Add functions to convert values, records, and hstore data to JSON (Andrew Dunstan)
886        </para>
887       </listitem>
888
889     </itemizedlist>
890
891    </sect4>
892
893    </sect3>
894
895
896    <sect3>
897     <title>Functions</title>
898
899      <itemizedlist>
900
901       <listitem>
902        <para>
903         Add array_remove() and array_replace() functions (Marco Nenciarini, Gabriele Bartolini)
904        </para>
905       </listitem>
906
907       <listitem>
908        <para>
909         Allow concat() and format() to properly expand VARIADIC-labeled
910         arguments (Pavel Stehule)
911        </para>
912       </listitem>
913
914       <listitem>
915        <para>
916         Improve format() to handle field width and left/right alignment
917         (Pavel Stehule)
918        </para>
919       </listitem>
920
921       <listitem>
922        <para>
923         Have to_char(), to_date(), and to_timestamp() properly handle
924         negative century designations (CC) (Bruce Momjian)
925        </para>
926
927        <para>
928         Previously the behavior was either wrong or inconsistent with
929         positive/AD handling, e.g. format mask 'IYYY-IW-DY'.
930        </para>
931       </listitem>
932
933       <listitem>
934        <para>
935         Have to_date() and to_timestamp() return proper results when mixing
936         ISO and Gregorian week/day designations (Bruce Momjian)
937        </para>
938       </listitem>
939
940       <listitem>
941        <para>
942         Cause pg_get_viewdef() to default to wrapping after every SELECT
943         target list and FROM entry (Marko Tiikkaja)
944        </para>
945
946        <para>
947         This causes view output, like from pg_dump, to be more narrow.
948        </para>
949       </listitem>
950
951       <listitem>
952        <para>
953         Have map_sql_value_to_xml_value() properly expand domains (Pavel
954         Stehule)
955        </para>
956       </listitem>
957
958       <listitem>
959        <para>
960         Force cached functions to be replanned if the search_path changes (Tom Lane)
961        </para>
962
963        <para>
964         Previously functions already run in the current session ignored
965         search_path changes.
966         (Bruce Momjian)
967        </para>
968       </listitem>
969
970      </itemizedlist>
971
972    </sect3>
973
974    <sect3>
975     <title>Server-Side Languages</title>
976
977      <itemizedlist>
978
979       <listitem>
980        <para>
981         Allow SPI functions to access the number of rows processed by COPY (Pavel
982         Stehule)
983        </para>
984       </listitem>
985
986      </itemizedlist>
987
988     <sect4>
989      <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
990
991      <itemizedlist>
992
993       <listitem>
994        <para>
995         Allow PL/pgSQL to use RETURN with a composite-type expressions (Asif
996         Rehman)
997        </para>
998
999        <para>
1000         Previously RETURN could only reference composite-type variables.
1001        </para>
1002       </listitem>
1003
1004       <listitem>
1005        <para>
1006         Allow PL/pgSQL to access the number of rows processed by COPY (Pavel
1007         Stehule)
1008        </para>
1009
1010        <para>
1011         The command is GET DIAGNOSTICS x = ROW_COUNT.
1012        </para>
1013       </listitem>
1014
1015       <listitem>
1016        <para>
1017         Allow greater flexibility in where keywords can be used in PL/pgSQL (Tom Lane)
1018        </para>
1019       </listitem>
1020
1021     </itemizedlist>
1022
1023     </sect4>
1024
1025     <sect4>
1026      <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
1027
1028      <itemizedlist>
1029
1030       <listitem>
1031        <para>
1032         Add PL/Python result object string handler (Peter Eisentraut)
1033        </para>
1034
1035        <para>
1036         This allows plpy.debug(rv) to output something reasonable.
1037        </para>
1038       </listitem>
1039
1040       <listitem>
1041        <para>
1042         Have PL/Python convert oid values to a proper Python numeric type (Peter Eisentraut)
1043        </para>
1044       </listitem>
1045
1046       <listitem>
1047        <para>
1048         Handle SPIErrors raised explicitly with PL/Python's RAISE the same as
1049         as internal SPI errors (Oskari Saarenmaa and Jan Urbanski)
1050        </para>
1051       </listitem>
1052
1053      </itemizedlist>
1054
1055     </sect4>
1056
1057    </sect3>
1058
1059    <sect3>
1060     <title>Client Applications</title>
1061
1062     <itemizedlist>
1063
1064       <listitem>
1065        <para>
1066         Add command-line utility pg_isready to check if the server is ready
1067         to accept connections (Phil Sorber)
1068        </para>
1069       </listitem>
1070
1071       <listitem>
1072        <para>
1073         Support multiple --table arguments for pg_restore, clusterdb,
1074         reindexdb, and vacuumdb (Josh Kupershmidt)
1075        </para>
1076
1077        <para>
1078         This is similar to the pg_dump --table support.
1079        </para>
1080       </listitem>
1081
1082       <listitem>
1083        <para>
1084         Add -d option to pg_dumpall, pg_basebackup, pg_receivexlog to
1085         specify the connection string (Amit Kapila)
1086        </para>
1087       </listitem>
1088
1089       <listitem>
1090        <para>
1091         Allow pg_ctl --idempotent to a 'success' return code if the requested
1092         start/stop action fails, but the cluster is already in the requested
1093         state (Peter Eisentraut)
1094        </para>
1095       </listitem>
1096
1097       <listitem>
1098        <para>
1099         Change pg_ctl to return an error code if start fails because the
1100         server is already running (Peter Eisentraut)                                        
1101        </para>
1102       </listitem>
1103  
1104       <listitem>
1105        <para>
1106         Add libpq function PQconninfo() to return connection information
1107         (Zoltan Boszormenyi, Magnus Hagander)
1108        </para>
1109       </listitem>
1110
1111     </itemizedlist>
1112
1113     <sect4>
1114      <title><link linkend="APP-PSQL"><application>psql</></link></title>
1115
1116      <itemizedlist>
1117
1118       <listitem>
1119        <para>
1120         Adjust function cost settings so psql tab completion and pattern
1121         searching is more efficient (Tom Lane)
1122        </para>
1123       </listitem>
1124
1125       <listitem>
1126        <para>
1127         Improve psql tab completion (Jeff Janes, Peter Eisentraut)
1128        </para>
1129       </listitem>
1130
1131       <listitem>
1132        <para>
1133         Allow the psql --single-transaction mode to work when reading from
1134         standard input (Fabien Coelho, Robert Haas)
1135        </para>
1136
1137        <para>
1138         Previously this option only worked when reading from a file.
1139        </para>
1140       </listitem>
1141
1142       <listitem>
1143        <para>
1144         Remove psql warning when connecting to an older server (Peter Eisentraut)
1145        </para>
1146
1147        <para>
1148         The warning when connecting to a newer server was retained.
1149        </para>
1150       </listitem>
1151
1152      </itemizedlist>
1153
1154     <sect5>
1155      <title>Backslash Commands</title>
1156
1157      <itemizedlist>
1158
1159       <listitem>
1160        <para>
1161         Add psql \watch command to repeatedly execute commands (Will
1162         Leinweber)
1163        </para>
1164       </listitem>
1165
1166       <listitem>
1167        <para>
1168         Add psql command \gset to store query results in psql variables
1169         (Pavel Stehule)
1170        </para>
1171       </listitem>
1172
1173       <listitem>
1174        <para>
1175         Add SSL information to psql's \conninfo command (Alastair Turner)
1176        </para>
1177       </listitem>
1178
1179       <listitem>
1180        <para>
1181         Add "Security" label to psql \df+ output (Jon Erdman)
1182        </para>
1183       </listitem>
1184
1185       <listitem>
1186        <para>
1187         Allow psql \l to accept a database name pattern (Peter Eisentraut)
1188        </para>
1189       </listitem>
1190
1191       <listitem>
1192        <para>
1193         In psql, do not allow \connect to use defaults if there is no active
1194         connection (Bruce Momjian)
1195        </para>
1196
1197        <para>
1198         This might be the case if the server had crashed.
1199        </para>
1200       </listitem>
1201
1202       <listitem>
1203        <para>
1204         Properly reset state if psql's "\g file" command failed (Tom Lane)
1205        </para>
1206
1207        <para>
1208         Previously failed commands discarded output from subsequent commands.
1209        </para>
1210       </listitem>
1211
1212      </itemizedlist>
1213
1214     </sect5>
1215
1216     <sect5>
1217      <title>Output</title>
1218
1219      <itemizedlist>
1220
1221       <listitem>
1222        <para>
1223         Add a 'latex-longtable' output format to psql (Bruce Momjian)
1224        </para>
1225
1226        <para>
1227         Longtable allows tables to span multiple pages.
1228        </para>
1229       </listitem>
1230
1231       <listitem>
1232        <para>
1233         Add a border=3 output mode to the psql 'latex' format (Bruce Momjian)
1234        </para>
1235       </listitem>
1236
1237       <listitem>
1238        <para>
1239         In psql tuples-only and expanded modes, no longer output "(No rows)"
1240         (Peter Eisentraut)
1241        </para>
1242       </listitem>
1243
1244       <listitem>
1245        <para>
1246         In psql, no longer print an empty line for unaligned, expanded
1247         output for zero rows (Peter Eisentraut)
1248        </para>
1249       </listitem>
1250
1251      </itemizedlist>
1252
1253     </sect5>
1254
1255     </sect4>
1256
1257     <sect4>
1258      <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
1259
1260      <itemizedlist>
1261
1262       <listitem>
1263        <para>
1264         Add pg_dump --jobs to dump in parallel (Joachim Wieland)
1265        </para>
1266       </listitem>
1267
1268       <listitem>
1269        <para>
1270         Have pg_dump output functions in a predictable order (Joel Jacobson)
1271        </para>
1272       </listitem>
1273
1274       <listitem>
1275        <para>
1276         Fix tar files emitted by pg_dump and pg_basebackup to be POSIX
1277         conformant (Brian Weaver, Tom Lane)
1278        </para>
1279       </listitem>
1280
1281       <listitem>
1282        <para>
1283         Add -d/--dbname option to pg_dump, for consistency with other client
1284         commands (Heikki Linnakangas)
1285        </para>
1286
1287        <para>
1288         The database name could already be supplied last without a flag.
1289        </para>
1290       </listitem>
1291
1292      </itemizedlist>
1293
1294     </sect4>
1295
1296     <sect4>
1297      <title><link linkend="APP-INITDB"><application>initdb</></link></title>
1298
1299      <itemizedlist>
1300
1301       <listitem>
1302        <para>
1303         Have initdb fsync the newly created data directory (Jeff Davis)
1304        </para>
1305
1306        <para>
1307         This can be disabled by using --nosync.
1308        </para>
1309       </listitem>
1310
1311       <listitem>
1312        <para>
1313         Add initdb --sync-only option to sync the data directory to durable
1314         storage (Bruce Momjian)
1315        </para>
1316
1317        <para>
1318         This is used by pg_upgrade.
1319        </para>
1320       </listitem>
1321
1322       <listitem>
1323        <para>
1324         Have initdb issue a warning about placing the data directory at the
1325         top of file system mount points (Bruce Momjian)
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         Add an embedded list interface (Andres Freund)
1343        </para>
1344       </listitem>
1345
1346       <listitem>
1347        <para>
1348         Add infrastructure to better support plug-in background worker
1349         processes  (&Aacute;lvaro Herrera)
1350        </para>
1351       </listitem>
1352
1353       <listitem>
1354        <para>
1355         Create a centralized timeout API (Zoltán Böszörményi)
1356        </para>
1357       </listitem>
1358
1359       <listitem>
1360        <para>
1361         Create libpgcommon and move pg_malloc() and other functions there
1362         (&Aacute;lvaro Herrera, Andres Freund)
1363        </para>
1364
1365        <para>
1366         This allows libpgport to be used solely for porting code.
1367        </para>
1368       </listitem>
1369
1370       <listitem>
1371        <para>
1372         Standardize on naming of client-side memory allocation functions (Tom Lane)
1373        </para>
1374       </listitem>
1375
1376       <listitem>
1377        <para>
1378         Add compiler designations to indicate some ereport() and elog()
1379         calls do not return (Peter Eisentraut, Andres Freund, Tom Lane,
1380         Heikki Linnakangas)
1381        </para>
1382       </listitem>
1383
1384       <listitem>
1385        <para>
1386         Allow options to be passed to the regression test output comparison
1387         utility via PG_REGRESS_DIFF_OPTS (Peter Eisentraut)
1388        </para>
1389       </listitem>
1390
1391       <listitem>
1392        <para>
1393         Add isolation tests for CREATE INDEX CONCURRENTLY (Abhijit Menon-Sen)
1394        </para>
1395       </listitem>
1396
1397       <listitem>
1398        <para>
1399         Remove typedefs for int2/int4 as they are better represented as int16/int32 (Peter Eisentraut)
1400        </para>
1401       </listitem>
1402
1403       <listitem>
1404        <para>
1405         Fix install-strip on Mac OS X (Peter Eisentraut)
1406        </para>
1407       </listitem>
1408
1409       <listitem>
1410        <para>
1411         Remove configure flag --disable-shared, as it is no longer used (Bruce Momjian)
1412        </para>
1413       </listitem>
1414
1415       <listitem>
1416        <para>
1417         Rewrite pgindent in Perl (Andrew Dunstan)
1418        </para>
1419       </listitem>
1420
1421       <listitem>
1422        <para>
1423         Add emacs macro to match Postgres perltidy formatting (Peter
1424         Eisentraut)
1425        </para>
1426       </listitem>
1427
1428       <listitem>
1429        <para>
1430         Run tool to check the keyword list when the backend grammar is changed (Tom Lane)
1431        </para>
1432       </listitem>
1433
1434       <listitem>
1435        <para>
1436         Centralize flex and bison 'make' rules (Peter Eisentraut)
1437        </para>
1438
1439        <para>
1440         This is useful for pgxs authors.
1441        </para>
1442       </listitem>
1443
1444       <listitem>
1445        <para>
1446         Add Assert() functionality to client-side code for frontend code (Andrew Dunstan)
1447        </para>
1448       </listitem>
1449
1450       <listitem>
1451        <para>
1452         Change many internal many backend functions to return OIDs rather
1453         than void (Dimitri Fontaine)
1454        </para>
1455
1456        <para>
1457         This is useful for event triggers.
1458        </para>
1459       </listitem>
1460
1461       <listitem>
1462        <para>
1463         Invent pre-commit/pre-prepare/pre-subcommit events for transaction
1464         callbacks (Tom Lane)
1465        </para>
1466
1467        <para>
1468         Loadable modules that use transaction callbacks might need modification
1469         to handle these new event types.
1470        </para>
1471       </listitem>
1472
1473       <listitem>
1474        <para>
1475         Add function pg_identify_object() to dump an object in
1476         machine-readable format (&Aacute;lvaro Herrera)
1477        </para>
1478       </listitem>
1479
1480       <listitem>
1481        <para>
1482         Add post-ALTER-object server hooks (KaiGai Kohei)
1483        </para>
1484       </listitem>
1485
1486       <listitem>
1487        <para>
1488         Improve ability to detect official timezone abbreviation changes
1489         (Tom Lane)
1490        </para>
1491       </listitem>
1492
1493       <listitem>
1494        <para>
1495         Add pkg-config support libpq and ecpg libraries (Peter Eisentraut)
1496        </para>
1497       </listitem>
1498
1499       <listitem>
1500        <para>
1501         Remove src/tool/backend, now that the content is on the Postgres
1502         wiki (Bruce Momjian)
1503        </para>
1504       </listitem>
1505
1506       <listitem>
1507        <para>
1508         Split out WAL reading as an independent facility (Andres Freund, Heikki
1509         Linnakangas)
1510        </para>
1511       </listitem>
1512
1513       <listitem>
1514        <para>
1515         Allow PL/Python to support platform-specific include directories (Peter Eisentraut)
1516        </para>
1517       </listitem>
1518
1519       <listitem>
1520        <para>
1521         Allow PL/Python on OS X to build against custom versions of Python
1522         (Peter Eisentraut)
1523        </para>
1524       </listitem>
1525
1526      </itemizedlist>
1527
1528    </sect3>
1529
1530    <sect3>
1531     <title>Additional Modules</title>
1532
1533     <itemizedlist>
1534
1535       <listitem>
1536        <para>
1537         Add a Postgres foreign data wrapper contrib module (Shigeru
1538         Hanada, KaiGai Kohei)
1539        </para>
1540
1541        <para>
1542         This foreign data wrapper allows writes;  potentially other
1543         foreign data wrappers can now support writes.
1544        </para>
1545       </listitem>
1546
1547       <listitem>
1548        <para>
1549         Add pg_xlogdump contrib program (Andres Freund)
1550        </para>
1551       </listitem>
1552
1553       <listitem>
1554        <para>
1555         Add support for indexing of regular-expression searches in
1556         contrib/pg_trgm (Alexander Korotkov)
1557        </para>
1558       </listitem>
1559
1560       <listitem>
1561        <para>
1562         Improve pg_trgm handling of multibyte characters (Tom Lane)
1563        </para>
1564       </listitem>
1565
1566       <listitem>
1567        <para>
1568         Have oid2name, pgbench, and vacuumlo set fallback_application_name (Amit Kapila)
1569        </para>
1570       </listitem>
1571
1572       <listitem>
1573        <para>
1574         Improve output of pg_test_timing (Bruce Momjian)
1575        </para>
1576       </listitem>
1577
1578       <listitem>
1579        <para>
1580         Improve output of pg_test_fsync (Peter Geoghegan)
1581        </para>
1582       </listitem>
1583
1584       <listitem>
1585        <para>
1586         Improve dblink option validator (Tom Lane)
1587        </para>
1588
1589        <para>
1590         Details?
1591        </para>
1592       </listitem>
1593
1594     </itemizedlist>
1595
1596     <sect4>
1597      <title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>
1598
1599      <itemizedlist>
1600
1601       <listitem>
1602        <para>
1603         Allow pg_upgrade --jobs to do parallelism (Bruce Momjian)
1604        </para>
1605
1606        <para>
1607         This allows parallel schema dump/restore of databases, as well as
1608         parallel copy/link of data files per tablespace.
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         Increase pg_upgrade logging content by showing executed command
1640         (&Aacute;lvaro Herrera)
1641        </para>
1642       </listitem>
1643
1644       <listitem>
1645        <para>
1646         Improve pg_upgrade's status display during copy/link (Bruce Momjian)
1647        </para>
1648       </listitem>
1649
1650      </itemizedlist>
1651
1652     </sect4>
1653
1654     <sect4>
1655      <title><link linkend="pgbench"><application>pgbench</></link></title>
1656
1657      <itemizedlist>
1658
1659       <listitem>
1660        <para>
1661         Add --foreign-keys option to pgbench (Jeff Janes)
1662        </para>
1663
1664        <para>
1665         This adds foreign key constraints to tables, for use in foreign
1666         key performance testing.
1667        </para>
1668       </listitem>
1669
1670       <listitem>
1671        <para>
1672         Allow pgbench to aggregate performance statistics and produce output
1673         every --aggregate-interval specified seconds (Tomas Vondra)
1674        </para>
1675       </listitem>
1676
1677       <listitem>
1678        <para>
1679         Add pg_bench --sampling-rate option to control the percentage of
1680         transactions logged (Tomas Vondra)
1681        </para>
1682       </listitem>
1683
1684       <listitem>
1685        <para>
1686         Reduce and improve the status message output of pgbench's
1687         initialization mode (Robert Haas, Peter Eisentraut)
1688        </para>
1689       </listitem>
1690
1691       <listitem>
1692        <para>
1693         Add pgbench -q mode to print one output line every five seconds (Tomas Vondra)
1694        </para>
1695
1696        <para>
1697         Output pgbench elapsed and estimated remaining time during
1698         initialization logging (Tomas Vondra)
1699        </para>
1700       </listitem>
1701
1702       <listitem>
1703        <para>
1704         Allow pgbench to use a larger scale factor (Greg Smith)
1705        </para>
1706       </listitem>
1707
1708     </itemizedlist>
1709
1710     </sect4>
1711
1712    </sect3>
1713
1714    <sect3>
1715     <title>Documentation</title>
1716
1717     <itemizedlist>
1718
1719       <listitem>
1720        <para>
1721         Allow EPUB-format documentation to be created (Peter Eisentraut)
1722        </para>
1723       </listitem>
1724
1725       <listitem>
1726        <para>
1727         Update FreeBSD kernel configuration documentation (Brad Davis)
1728        </para>
1729       </listitem>
1730
1731       <listitem>
1732        <para>
1733         Improve WINDOW function documentation (Bruce Momjian, Tom Lane)
1734        </para>
1735       </listitem>
1736
1737       <listitem>
1738        <para>
1739         Add instructions for setting up the documentation tool chain on
1740         Mac OS X (Peter Eisentraut)
1741        </para>
1742       </listitem>
1743
1744       <listitem>
1745        <para>
1746         Improve commit_delay documentation (Peter Geoghegan)
1747        </para>
1748       </listitem>
1749
1750     </itemizedlist>
1751
1752    </sect3>
1753
1754   </sect2>
1755  </sect1>