]> granicus.if.org Git - postgresql/blob - doc/src/sgml/release-9.3.sgml
In 9.3 release notes, split up items
[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 non-synchronous streaming log shipping (Andres Freund)
467        </para>
468       </listitem>
469
470       <listitem>
471        <para>
472         Allow much faster fail-over to a standby server (Simon Riggs)
473        </para>
474       </listitem>
475
476       <listitem>
477        <para>
478         Add the last checkpoint's redo location to pg_controldata's output
479         (Fujii Masao)
480        </para>
481
482        <para>
483         This information is useful for determining the WAL files needed for
484         restore.
485        </para>
486       </listitem>
487
488       <listitem>
489        <para>
490         Allow tooling like pg_receivexlog to run on computers with different
491         architectures (Heikki Linnakangas)
492        </para>
493       </listitem>
494
495       <listitem>
496        <para>
497         Have pg_basebackup --write-recovery-conf output a minimal
498         recovery.conf (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi, Magnus Hagander)
499        </para>
500
501        <para>
502         This simplifies setting up a standby server.
503        </para>
504       </listitem>
505
506       <listitem>
507        <para>
508         Allow pg_receivexlog and pg_basebackup -X to handle streaming
509         timeline switches (Heikki Linnakangas)
510        </para>
511       </listitem>
512
513       <listitem>
514        <para>
515         Add wal_receiver_timeout parameter to control the WAL receiver
516         timeout (Amit Kapila)
517        </para>
518
519        <para>
520         This allows more rapid detection of connection failure. No longer set
521         wal_receiver_status_interval?
522        </para>
523       </listitem>
524
525       <listitem>
526        <para>
527         Rename replication_timeout to wal_sender_timeout (Amit Kapila)
528        </para>
529
530        <para>
531         BACKWARD COMPATIBILITY
532         This setting controls the WAL sender timeout.
533        </para>
534       </listitem>
535
536      </itemizedlist>
537
538     <sect4>
539      <title>Write-Ahead Log (WAL)</title>
540
541      <itemizedlist>
542
543       <listitem>
544        <para>
545         Store WAL in a continuous stream, rather than skipping the last
546         16MB segment every 4GB (Heikki Linnakangas)  BACKWARD COMPATIBLE BREAK
547        </para>
548       </listitem>
549
550       <listitem>
551        <para>
552         Restructure WAL files to better handle timeline changes during
553         recovery (Heikki Linnakangas)
554        </para>
555       </listitem>
556
557       <listitem>
558        <para>
559         Restructure WAL files to use a more compact storage format (Heikki Linnakangas)
560        </para>
561       </listitem>
562
563      </itemizedlist>
564
565     </sect4>
566
567    </sect3>
568
569    <sect3>
570     <title>Queries</title>
571
572      <itemizedlist>
573
574       <listitem>
575        <para>
576         Implement SQL-standard LATERAL for FROM-clause subqueries and
577         function calls (Tom Lane)
578        </para>
579
580        <para>
581         This is useful in allowing FROM subqueries and functions to reference
582         output from tables in the FROM clause. The LATERAL keyword is optional
583         for functions.
584        </para>
585       </listitem>
586
587       <listitem>
588        <para>
589         Add support for piping COPY and psql \copy to/from an external program (Etsuro
590         Fujita)
591        </para>
592       </listitem>
593
594       <listitem>
595        <para>
596         Improve query string error location reporting (Tom Lane)
597        </para>
598
599        <para>
600         Only CREATE SCHEMA ... IF NOT EXISTS?  If so, remove it.
601        </para>
602       </listitem>
603
604      </itemizedlist>
605
606    </sect3>
607
608    <sect3>
609     <title>Object Manipulation</title>
610
611      <itemizedlist>
612
613       <listitem>
614        <para>
615         Add support to event triggers (Dimitri Fontaine, Tom Lane)
616        </para>
617
618        <para>
619         This allows C functions to be called when specific commands are run.
620        </para>
621       </listitem>
622
623       <listitem>
624        <para>
625         Allow a multi-row VALUES clause in rules to reference OLD/NEW (Tom Lane)
626        </para>
627       </listitem>
628
629       <listitem>
630        <para>
631         Add CREATE SCHEMA ... IF NOT EXIST clause (Fabr&iacute;zio de
632         Royes Mello)
633        </para>
634       </listitem>
635
636       <listitem>
637        <para>
638         Throw an error if expiring tuple is again updated or deleted (Kevin Grittner)
639         KEEP?
640        </para>
641       </listitem>
642
643       <listitem>
644        <para>
645         Have DROP OWNED only remove user-matching GRANTs on shared objects,
646         e.g. databases, tablespaces (&Aacute;lvaro Herrera)
647        </para>
648
649        <para>
650         Previously it tried to remove such objects, leading to an error.
651        </para>
652       </listitem>
653
654       <listitem>
655        <para>
656         Have REASSIGN OWNED also change ownership of shared objects (&Aacute;lvaro
657         Herrera)
658        </para>
659       </listitem>
660
661      </itemizedlist>
662
663     <sect4>
664      <title><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link></title>
665
666      <itemizedlist>
667
668       <listitem>
669        <para>
670         No longer output messages about implicit index and sequence creation (Robert Haas)
671        </para>
672
673        <para>
674         These messages now appear with DEBUG1-level output.
675        </para>
676       </listitem>
677
678       <listitem>
679        <para>
680         Allow CREATE TABLE IF NOT EXIST to succeed for a non-existent schema
681         (Bruce Momjian)
682        </para>
683
684        <para>
685          Previously, it threw an error if the schema did not exist.
686        </para>
687       </listitem>
688
689      </itemizedlist>
690
691     </sect4>
692
693     <sect4>
694      <title>Constraints</title>
695
696      <itemizedlist>
697
698       <listitem>
699        <para>
700         Change ON UPDATE SET NULL/SET DEFAULT foreign key actions to affect
701         all referenced columns, not just those referenced in the UPDATE
702         (Tom Lane)
703        </para>
704
705        <para>
706         Previously only columns referenced in the UPDATE were set to null or DEFAULT.
707         BACKWARD COMPATIBILITY CHANGE
708        </para>
709       </listitem>
710
711       <listitem>
712        <para>
713         Provide clients with constraint violation details as separate fields
714         (Pavel Stehule)
715        </para>
716
717        <para>
718         This allows clients to retrieve table, column, data type, or constraint
719         name error details. Previously such information had to be extracted from
720         error strings. Client language support is required to access these
721         fields.
722        </para>
723       </listitem>
724
725       <listitem>
726        <para>
727         Internally store default foreign key matches (non-FULL, non-PARTIAL) as "simple" (Tom Lane)
728        </para>
729
730        <para>
731         These were previously stored as "&amp;unspecified&amp;".
732         This changes the value stored in system column
733         pg_constraint.confmatchtype.  BACKWARD COMPATIBILITY CHANGE
734        </para>
735       </listitem>
736
737      </itemizedlist>
738
739     </sect4>
740
741     <sect4>
742      <title><command>ALTER</></title>
743
744      <itemizedlist>
745
746       <listitem>
747        <para>
748         Add the ALTER TYPE ... IF NOT EXISTS clause when adding enumerated type labels (Andrew
749         Dunstan)
750        </para>
751
752        <para>
753         This is useful for conditional label creation in transaction blocks.
754        </para>
755       </listitem>
756
757       <listitem>
758        <para>
759         Add ALTER ROLE ALL SET to add settings to all users (Peter Eisentraut)
760        </para>
761
762        <para>
763         This allows settings to apply to all users in all databases. ALTER
764         DATABASE SET already allowed addition of settings for all users in a
765         single database.  postgresql.conf has a similar effect.
766        </para>
767       </listitem>
768
769       <listitem>
770        <para>
771         Add support for ALTER RULE ... RENAME (Ali Dar)
772        </para>
773       </listitem>
774
775      </itemizedlist>
776
777     </sect4>
778
779     <sect4>
780      <title><link linkend="rules-views"><command>VIEWs</></link></title>
781
782      <itemizedlist>
783
784       <listitem>
785        <para>
786         Add a materialized view relations (Kevin Grittner)
787        </para>
788
789        <para>
790         Unlike ordinary views, where the base tables are read on every access,
791         materialized views create physical tables at creation or refresh time.
792         Access to the materialized view reads from these materialized physical
793         tables. There is no facility for incrementally refreshing materialized
794         views or auto-accessing them via base table access.
795        </para>
796       </listitem>
797
798       <listitem>
799        <para>
800         Make simple views auto-updatable (Dean Rasheed)
801        </para>
802
803        <para>
804         INSTEAD rules are still available for complex views.
805        </para>
806       </listitem>
807
808       <listitem>
809        <para>
810         Allow views and rules to handle cases where referenced tables are
811         renamed, or columns are renamed, added, or dropped (Tom Lane)
812         HOW DOES IT HANDLE A DROPPED REFERENCED COLUMN?
813        </para>
814       </listitem>
815
816       <listitem>
817        <para>
818         Add CREATE RECURSIVE VIEW syntax (Peter Eisentraut)
819        </para>
820
821        <para>
822         Internally this is translated into CREATE VIEW ... WITH RECURSIVE.
823        </para>
824       </listitem>
825
826       <listitem>
827        <para>
828         When converting a table to a view, remove its system columns (Tom Lane)
829         KEEP?
830        </para>
831       </listitem>
832
833      </itemizedlist>
834
835     </sect4>
836
837    </sect3>
838
839    <sect3>
840     <title>Data Types</title>
841
842     <itemizedlist>
843
844       <listitem>
845        <para>
846         Increase the maximum length of large objects from 2GB to 4TB (Nozomi
847         Anzai, Yugo Nagata)
848        </para>
849
850        <para>
851         This change includes new libpq and server-side 64-bit-enabled functions.
852        </para>
853       </listitem>
854
855       <listitem>
856        <para>
857         Allow text timezone designations, e.g. "America/Chicago" when using the
858         ISO "T" timestamptz format (Bruce Momjian)
859        </para>
860       </listitem>
861
862     </itemizedlist>
863
864    <sect4>
865     <title>JSON</title>
866
867     <itemizedlist>
868
869       <listitem>
870        <para>
871         Add operators and functions to extract values from JSON data strings
872         (Andrew Dunstan)
873        </para>
874       </listitem>
875
876       <listitem>
877        <para>
878         Allow JSON data strings to be converted into records (Andrew Dunstan)
879        </para>
880       </listitem>
881
882       <listitem>
883        <para>
884         Add functions to convert values, records, and hstore data to JSON (Andrew Dunstan)
885        </para>
886       </listitem>
887
888     </itemizedlist>
889
890    </sect4>
891
892    </sect3>
893
894
895    <sect3>
896     <title>Functions</title>
897
898      <itemizedlist>
899
900       <listitem>
901        <para>
902         Add array_remove() and array_replace() functions (Marco Nenciarini, Gabriele Bartolini)
903        </para>
904       </listitem>
905
906       <listitem>
907        <para>
908         Allow concat() and format() to properly expand VARIADIC-labeled
909         arguments (Pavel Stehule)
910        </para>
911       </listitem>
912
913       <listitem>
914        <para>
915         Improve format() to handle field width and left/right alignment
916         (Pavel Stehule)
917        </para>
918       </listitem>
919
920       <listitem>
921        <para>
922         Have to_char(), to_date(), and to_timestamp() properly handle
923         negative century designations (CC) (Bruce Momjian)
924        </para>
925
926        <para>
927         Previously the behavior was either wrong or inconsistent with
928         positive/AD handling, e.g. format mask 'IYYY-IW-DY'.
929        </para>
930       </listitem>
931
932       <listitem>
933        <para>
934         Have to_date() and to_timestamp() return proper results when mixing
935         ISO and Gregorian week/day designations (Bruce Momjian)
936        </para>
937       </listitem>
938
939       <listitem>
940        <para>
941         Cause pg_get_viewdef() to default to wrapping after every SELECT
942         target list and FROM entry (Marko Tiikkaja)
943        </para>
944
945        <para>
946         This causes view output, like from pg_dump, to be more narrow.
947        </para>
948       </listitem>
949
950       <listitem>
951        <para>
952         Have map_sql_value_to_xml_value() properly expand domains (Pavel
953         Stehule)
954        </para>
955       </listitem>
956
957       <listitem>
958        <para>
959         Force cached functions to be replanned if the search_path changes (Tom Lane)
960        </para>
961
962        <para>
963         Previously functions already run in the current session ignored
964         search_path changes.
965         (Bruce Momjian)
966        </para>
967       </listitem>
968
969      </itemizedlist>
970
971    </sect3>
972
973    <sect3>
974     <title>Server-Side Languages</title>
975
976      <itemizedlist>
977
978       <listitem>
979        <para>
980         Allow SPI functions to access the number of rows processed by COPY (Pavel
981         Stehule)
982        </para>
983       </listitem>
984
985      </itemizedlist>
986
987     <sect4>
988      <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
989
990      <itemizedlist>
991
992       <listitem>
993        <para>
994         Allow PL/pgSQL to use RETURN with a composite-type expressions (Asif
995         Rehman)
996        </para>
997
998        <para>
999         Previously RETURN could only reference composite-type variables.
1000        </para>
1001       </listitem>
1002
1003       <listitem>
1004        <para>
1005         Allow PL/pgSQL to access the number of rows processed by COPY (Pavel
1006         Stehule)
1007        </para>
1008
1009        <para>
1010         The command is GET DIAGNOSTICS x = ROW_COUNT.
1011        </para>
1012       </listitem>
1013
1014       <listitem>
1015        <para>
1016         Allow greater flexibility in where keywords can be used in PL/pgSQL (Tom Lane)
1017        </para>
1018       </listitem>
1019
1020     </itemizedlist>
1021
1022     </sect4>
1023
1024     <sect4>
1025      <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
1026
1027      <itemizedlist>
1028
1029       <listitem>
1030        <para>
1031         Add PL/Python result object string handler (Peter Eisentraut)
1032        </para>
1033
1034        <para>
1035         This allows plpy.debug(rv) to output something reasonable.
1036        </para>
1037       </listitem>
1038
1039       <listitem>
1040        <para>
1041         Have PL/Python convert oid values to a proper Python numeric type (Peter Eisentraut)
1042        </para>
1043       </listitem>
1044
1045       <listitem>
1046        <para>
1047         Handle SPIErrors raised explicitly with PL/Python's RAISE the same as
1048         as internal SPI errors (Oskari Saarenmaa and Jan Urbanski)
1049        </para>
1050       </listitem>
1051
1052      </itemizedlist>
1053
1054     </sect4>
1055
1056    </sect3>
1057
1058    <sect3>
1059     <title>Client Applications</title>
1060
1061     <itemizedlist>
1062
1063       <listitem>
1064        <para>
1065         Add command-line utility pg_isready to check if the server is ready
1066         to accept connections (Phil Sorber)
1067        </para>
1068       </listitem>
1069
1070       <listitem>
1071        <para>
1072         Support multiple --table arguments for pg_restore, clusterdb,
1073         reindexdb, and vacuumdb (Josh Kupershmidt)
1074        </para>
1075
1076        <para>
1077         This is similar to the pg_dump --table support.
1078        </para>
1079       </listitem>
1080
1081       <listitem>
1082        <para>
1083         Add -d option to pg_dumpall, pg_basebackup, pg_receivexlog to
1084         specify the connection string (Amit Kapila)
1085        </para>
1086       </listitem>
1087
1088       <listitem>
1089        <para>
1090         Allow pg_ctl --idempotent to a 'success' return code if the requested
1091         start/stop action fails, but the cluster is already in the requested
1092         state (Peter Eisentraut)
1093        </para>
1094       </listitem>
1095
1096       <listitem>
1097        <para>
1098         Change pg_ctl to return an error code if start fails because the
1099         server is already running (Peter Eisentraut)                                        
1100        </para>
1101       </listitem>
1102  
1103       <listitem>
1104        <para>
1105         Add libpq function PQconninfo() to return connection information
1106         (Zoltan Boszormenyi, Magnus Hagander)
1107        </para>
1108       </listitem>
1109
1110     </itemizedlist>
1111
1112     <sect4>
1113      <title><link linkend="APP-PSQL"><application>psql</></link></title>
1114
1115      <itemizedlist>
1116
1117       <listitem>
1118        <para>
1119         Adjust function cost settings so psql tab completion and pattern
1120         searching is more efficient (Tom Lane)
1121        </para>
1122       </listitem>
1123
1124       <listitem>
1125        <para>
1126         Improve psql tab completion (Jeff Janes, Peter Eisentraut)
1127        </para>
1128       </listitem>
1129
1130       <listitem>
1131        <para>
1132         Allow the psql --single-transaction mode to work when reading from
1133         standard input (Fabien Coelho, Robert Haas)
1134        </para>
1135
1136        <para>
1137         Previously this option only worked when reading from a file.
1138        </para>
1139       </listitem>
1140
1141       <listitem>
1142        <para>
1143         Remove psql warning when connecting to an older server (Peter Eisentraut)
1144        </para>
1145
1146        <para>
1147         The warning when connecting to a newer server was retained.
1148        </para>
1149       </listitem>
1150
1151      </itemizedlist>
1152
1153     <sect5>
1154      <title>Backslash Commands</title>
1155
1156      <itemizedlist>
1157
1158       <listitem>
1159        <para>
1160         Add psql \watch command to repeatedly execute commands (Will
1161         Leinweber)
1162        </para>
1163       </listitem>
1164
1165       <listitem>
1166        <para>
1167         Add psql command \gset to store query results in psql variables
1168         (Pavel Stehule)
1169        </para>
1170       </listitem>
1171
1172       <listitem>
1173        <para>
1174         Add SSL information to psql's \conninfo command (Alastair Turner)
1175        </para>
1176       </listitem>
1177
1178       <listitem>
1179        <para>
1180         Add "Security" label to psql \df+ output (Jon Erdman)
1181        </para>
1182       </listitem>
1183
1184       <listitem>
1185        <para>
1186         Allow psql \l to accept a database name pattern (Peter Eisentraut)
1187        </para>
1188       </listitem>
1189
1190       <listitem>
1191        <para>
1192         In psql, do not allow \connect to use defaults if there is no active
1193         connection (Bruce Momjian)
1194        </para>
1195
1196        <para>
1197         This might be the case if the server had crashed.
1198        </para>
1199       </listitem>
1200
1201       <listitem>
1202        <para>
1203         Properly reset state if psql's "\g file" command failed (Tom Lane)
1204        </para>
1205
1206        <para>
1207         Previously failed commands discarded output from subsequent commands.
1208        </para>
1209       </listitem>
1210
1211      </itemizedlist>
1212
1213     </sect5>
1214
1215     <sect5>
1216      <title>Output</title>
1217
1218      <itemizedlist>
1219
1220       <listitem>
1221        <para>
1222         Add a 'latex-longtable' output format to psql (Bruce Momjian)
1223        </para>
1224
1225        <para>
1226         Longtable allows tables to span multiple pages.
1227        </para>
1228       </listitem>
1229
1230       <listitem>
1231        <para>
1232         Add a border=3 output mode to the psql 'latex' format (Bruce Momjian)
1233        </para>
1234       </listitem>
1235
1236       <listitem>
1237        <para>
1238         In psql tuples-only and expanded modes, no longer output "(No rows)"
1239         (Peter Eisentraut)
1240        </para>
1241       </listitem>
1242
1243       <listitem>
1244        <para>
1245         In psql, no longer print an empty line for unaligned, expanded
1246         output for zero rows (Peter Eisentraut)
1247        </para>
1248       </listitem>
1249
1250      </itemizedlist>
1251
1252     </sect5>
1253
1254     </sect4>
1255
1256     <sect4>
1257      <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
1258
1259      <itemizedlist>
1260
1261       <listitem>
1262        <para>
1263         Add pg_dump --jobs to dump in parallel when using directory
1264         output format  (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&aacute;n B&ouml;sz&ouml;rm&eacute;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 (Heikki
1509         Linnakangas, Andres Freund)
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>