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