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