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