]> granicus.if.org Git - postgresql/blob - doc/src/sgml/release-9.4.sgml
Update 9.4 release notes with feedback from the hackers list
[postgresql] / doc / src / sgml / release-9.4.sgml
1 <!-- doc/src/sgml/release-9.4.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
3
4  <sect1 id="release-9-4">
5   <title>Release 9.4</title>
6
7   <note>
8    <title>Release Date</title>
9    <simpara>2014-??-??</simpara>
10    <simpara>Current as of 2014-05-03</simpara>
11   </note>
12
13   <sect2>
14    <title>Overview</title>
15
16    <para>
17     Major enhancements in <productname>PostgreSQL</> 9.4 include:
18    </para>
19
20    <!-- This list duplicates items below, but without authors or details-->
21
22    <itemizedlist>
23
24     <listitem>
25      <para>
26      </para>
27     </listitem>
28
29    </itemizedlist>
30
31    <para>
32     The above items are explained in more detail in the sections below.
33    </para>
34
35   </sect2>
36
37   <sect2>
38
39   <title>Migration to Version 9.4</title>
40
41    <para>
42     A dump/restore using <link
43     linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, or use
44     of <link linkend="pgupgrade"><application>pg_upgrade</></link>, is
45     required for those wishing to migrate data from any previous release.
46    </para>
47
48    <para>
49     Version 9.4 contains a number of changes that may affect compatibility
50     with previous releases.  Observe the following incompatibilities:
51    </para>
52
53    <itemizedlist>
54
55     <listitem>
56      <para>
57       Cause consecutive whitespace in to_timestamp() and to_date() format strings to consume a corresponding number of characters in the input
58       string (whitespace or not), then conditionally additional adjacent whitespace if not in FX mode (Jeevan Chalke)
59      </para>
60
61      <para>
62       Previously consecutive whitespace characters in a non-FX format string behaved like a single whitespace character and consumed all
63       adjacent whitespace in the input string.  For example, previously format string space-space-space would consume only the first space in ' 12', while it will not consume all three characters.
64      </para>
65     </listitem>
66
67     <listitem>
68      <para>
69       Tighten checks for multi-dimensional array input (Bruce Momjian)
70      </para>
71
72      <para>
73       Previously an input array string that started with a single-element array dimension could later contain multi-dimensional
74       segments.
75      </para>
76     </listitem>
77
78     <listitem>
79      <para>
80       Change empty arrays returned by intarray to be zero-dimensional arrays (Bruce Momjian)
81      </para>
82
83      <para>
84       Previously empty arrays were returned as one-dimensional empty arrays whose text representation looks the same as
85       zero-dimensional arrays.  intarray's behavior in this area now matches the built-in array operators.
86      </para>
87     </listitem>
88
89     <listitem>
90      <para>
91       NULL VARIADIC function arguments are now disallowed (Pavel Stehule)
92      </para>
93
94      <para>
95       NULL VARIADIC arguments must be cast to an array data type.
96      </para>
97     </listitem>
98
99     <listitem>
100      <para>
101       SHOW TIME ZONE now outputs constant time zone offsets in POSIX-style zone format (Tom Lane)
102      </para>
103
104      <para>
105       Previously it was returned in INTERVAL format.  The new format can be passed to SET TIME ZONE.
106      </para>
107     </listitem>
108
109     <listitem>
110      <para>
111       Rename EXPLAIN ANALYZE's "total runtime" output to "execution time" (Tom Lane)
112      </para>
113
114      <para>
115       This was required now that planning time is also reported.
116      </para>
117     </listitem>
118
119     <listitem>
120      <para>
121       Fix ts_rank_cd() to ignore stripped lexemes (Alex Hill)
122      </para>
123
124      <para>
125       Previously, stripped lexemes got a default location and could be considered if mixed with non-stripped lexemes.
126      </para>
127     </listitem>
128
129     <listitem>
130      <para>
131       Prevent CHECK constraints from referencing system columns, except tableoid (Amit Kapila)
132      </para>
133
134      <para>
135       Restoring such check constraints will lead to restore errors.
136      </para>
137     </listitem>
138
139     <listitem>
140      <para>
141       Use the last specified recovery_target if multiple are specified (Heikki Linnakangas)
142      </para>
143     </listitem>
144
145     <listitem>
146      <para>
147       Remove system column pg_class.reltoastidxid (Michael Paquier)
148      </para>
149     </listitem>
150
151     <listitem>
152      <para>
153       Remove support for native krb5 authentication (Magnus Hagander)
154      </para>
155
156      <para>
157       The proper way to use Kerberos authentication is with GSSAPI.
158      </para>
159     </listitem>
160
161     <listitem>
162      <para>
163       Have libpq's PQconnectdbParams() and PQpingParams functions accept "" as default (Adrian Vondendriesch)
164      </para>
165
166      <para>
167       Previously, these functions treated "" option values as defaults only in some cases.
168      </para>
169     </listitem>
170
171     <listitem>
172      <para>
173       Remove system column pg_rewrite.ev_attr (Kevin Grittner)
174      </para>
175
176      <para>
177       Per-column rules have not been supported since 7.3.
178      </para>
179     </listitem>
180
181     <listitem>
182      <para>
183       Pg_upgrade now uses -U to specify the user name (Bruce Momjian)
184      </para>
185
186      <para>
187       Previously, -u was used to specify the user name.  Also spell the long option as --username, again for consistency with other
188       tools.
189      </para>
190     </listitem>
191
192    </itemizedlist>
193
194   </sect2>
195
196   <sect2>
197    <title>Changes</title>
198
199    <para>
200     Below you will find a detailed account of the changes between
201     <productname>PostgreSQL</productname> 9.4 and the previous major
202     release.
203    </para>
204
205    <sect3>
206     <title>Server</title>
207
208      <itemizedlist>
209
210       <listitem>
211        <para>
212         Have VACUUM properly report dead but not removable rows to the statistics collector (Hari Babu)
213        </para>
214
215        <para>
216         Previously these were reported as live rows.
217        </para>
218       </listitem>
219
220       <listitem>
221        <para>
222         Allow background workers to be dynamically registered, started and terminated (Robert Haas)
223        </para>
224
225        <para>
226         worker_spi_launch() in worker_spi shows an example of its use.
227        </para>
228       </listitem>
229
230       <listitem>
231        <para>
232         Allow dynamic allocation of shared memory segments (Robert Haas, Amit Kapila)
233        </para>
234       </listitem>
235
236       <listitem>
237        <para>
238         Improve SSL renegotiation handling (&Aacute;lvaro Herrera)
239        </para>
240       </listitem>
241
242       <listitem>
243        <para>
244         During immediate shutdown, send uncatchable termination signals to child processes that have not already shutdown (MauMau,
245         &Aacute;lvaro Herrera)
246        </para>
247
248        <para>
249         This reduces the likelihood of orphaned child processes after postmaster shutdown.
250        </para>
251       </listitem>
252
253       <listitem>
254        <para>
255         Improve randomness of the database system identifier (Tom Lane)
256        </para>
257       </listitem>
258
259      </itemizedlist>
260
261     <sect4>
262      <title>Indexes</title>
263
264      <itemizedlist>
265
266       <listitem>
267        <para>
268         Improve speed of multi-key GIN lookups (Alexander Korotkov, Heikki Linnakangas)
269        </para>
270       </listitem>
271
272       <listitem>
273        <para>
274         Reduce GIN index size (Alexander Korotkov, Heikki Linnakangas)
275        </para>
276
277        <para>
278         Indexes upgraded via pg_upgrade will work fine but will use the old larger GIN format;  REINDEX will recreate the index in the new
279         format.
280        </para>
281       </listitem>
282
283       <listitem>
284        <para>
285         Add GiST index support for INET and CIDR data types (Emre Hasegeli)
286        </para>
287
288        <para>
289         Such indexes improve subnet and supernet lookups and ordering comparisons.
290        </para>
291       </listitem>
292
293       <listitem>
294        <para>
295         Fix race condition in B-tree page deletion (Heikki Linnakangas)
296        </para>
297       </listitem>
298
299       <listitem>
300        <para>
301         Make the handling of interrupted B-tree page splits more robust (Heikki Linnakangas)
302        </para>
303       </listitem>
304
305      </itemizedlist>
306
307     </sect4>
308
309     <sect4>
310      <title>General Performance</title>
311
312      <itemizedlist>
313
314       <listitem>
315        <para>
316         Allow multiple backends to simultaneously insert into WAL buffers (Heikki Linnakangas)
317        </para>
318
319        <para>
320         This improves parallel write performance.
321        </para>
322       </listitem>
323
324       <listitem>
325        <para>
326         Conditionally write only the modified portion of updated rows to WAL (Amit Kapila)
327        </para>
328       </listitem>
329
330       <listitem>
331        <para>
332         Improve performance of WINDOW aggregate functions (David Rowley, Florian Pflug, Tom Lane)
333        </para>
334       </listitem>
335
336       <listitem>
337        <para>
338         Improve speed of aggregates which use NUMERICs (Hadi Moshayedi)
339        </para>
340
341        <para>
342         These include sum(), avg(), stddev(), and variance().
343        </para>
344       </listitem>
345
346       <listitem>
347        <para>
348         Freeze tuples when tables are written with CLUSTER or VACUUM FULL (Robert Haas, Andres Freund)
349        </para>
350
351        <para>
352         This avoids the need to freeze the tuples in the future.
353        </para>
354       </listitem>
355
356       <listitem>
357        <para>
358         Improve speed of COPY with DEFAULT nextval() columns (Simon Riggs)
359        </para>
360       </listitem>
361
362       <listitem>
363        <para>
364         Improve speed of accesessing many different sequences in the same session (David Rowley)
365        </para>
366       </listitem>
367
368       <listitem>
369        <para>
370         Allow sorting and btree index builds to use over four gigabytes of memory (Noah Misch)
371        </para>
372       </listitem>
373
374       <listitem>
375        <para>
376         Reduce memory allocated by DO blocks (Tom Lane)
377        </para>
378       </listitem>
379
380       <listitem>
381        <para>
382         Have the optimizer be more aggressive in creating restrictions from mixed AND/OR clauses (Tom Lane)
383        </para>
384       </listitem>
385
386       <listitem>
387        <para>
388         Auto-resize the catalog cache (Heikki Linnakangas)
389        </para>
390
391        <para>
392         This reduces memory consumption for backends accessing only a few tables, and improves performance for backend accessing many
393         tables.
394        </para>
395       </listitem>
396
397      </itemizedlist>
398
399     </sect4>
400
401     <sect4>
402      <title>Monitoring</title>
403
404      <itemizedlist>
405
406       <listitem>
407        <para>
408         Expose the estimation of number of changed tuples since last analyze (Mark Kirkwood)
409        </para>
410
411        <para>
412         This appears in pg_stat_all_tables.n_mod_since_analyze.
413        </para>
414       </listitem>
415
416       <listitem>
417        <para>
418         Add pg_stat_archiver system view to report WAL archiver activity (Gabriele Bartolini)
419        </para>
420       </listitem>
421
422       <listitem>
423        <para>
424         Add xid and xmin to system views pg_stat_activity and pg_stat_replication (Christian Kruse)
425        </para>
426       </listitem>
427
428      </itemizedlist>
429
430     </sect4>
431
432     <sect4>
433      <title>SSL</title>
434
435      <itemizedlist>
436
437       <listitem>
438        <para>
439         Add support for SSL ECDH key exchange (Marko Kreen)
440        </para>
441
442        <para>
443         Such keys are faster and have improved security over previous options.  New variable ssl_ecdh_curve controls the curve that is
444         used.
445        </para>
446       </listitem>
447
448       <listitem>
449        <para>
450         Improve the default ssl_ciphers ciphers (Marko Kreen)
451        </para>
452       </listitem>
453
454       <listitem>
455        <para>
456         Allow the server to specify the preferred SSL cipher order (Marko Kreen)
457        </para>
458
459        <para>
460         This is controlled by the new configuration parameter ssl_prefer_server_ciphers.
461        </para>
462       </listitem>
463
464       <listitem>
465        <para>
466         Have log_connections show SSL encryption information (Andreas Kunert)
467        </para>
468       </listitem>
469
470      </itemizedlist>
471
472     </sect4>
473
474     <sect4>
475      <title>Server Settings</title>
476
477      <itemizedlist>
478
479       <listitem>
480        <para>
481         Add SQL-level command ALTER SYSTEM command to edit the postgresql.conf configuration file (Amit Kapila)
482        </para>
483
484        <para>
485         Previously postgresql.conf could only be edited at the file system level.
486        </para>
487       </listitem>
488
489       <listitem>
490        <para>
491         Add huge_pages configuration parameter to enable huge translation look-aside buffer (TLB) pages on Linux (Christian Kruse,
492         Richard Poole, Abhijit Menon-Sen)
493        </para>
494
495        <para>
496         This can improve performance on large memory systems.
497        </para>
498       </listitem>
499
500       <listitem>
501        <para>
502         Show PIDs of lock holders and waiters and improve relation
503         information in log_lock_waits log messages (Christian Kruse)
504        </para>
505       </listitem>
506
507       <listitem>
508        <para>
509         Add parameter autovacuum_work_mem to control the amount of memory used by autovacuum workers (Peter Geoghegan)
510        </para>
511       </listitem>
512
513       <listitem>
514        <para>
515         Add max_worker_processes to limit the number of background workers (Robert Haas)
516        </para>
517
518        <para>
519         This is helpful in configuring the standby server to have the required same number of worker processes as the primary.
520        </para>
521       </listitem>
522
523       <listitem>
524        <para>
525         Add configuration parameter wal_log_hints to enable logging of hint bits (Sawada Masahiko)
526        </para>
527
528        <para>
529         Hint bits are not normally logged, except when checksums are enabled.  This is useful for tools like pg_rewind.
530        </para>
531       </listitem>
532
533       <listitem>
534        <para>
535         Allow printf-style space padding to be specified in log_line_prefix (David Rowley)
536        </para>
537       </listitem>
538
539       <listitem>
540        <para>
541         Add superuser-only session_preload_libraries configuration parameter to load libraries at session start (Peter Eisentraut)
542        </para>
543
544        <para>
545         Such libraries are auto-LOAD'ed, unlike local_preload_libraries.
546        </para>
547       </listitem>
548
549       <listitem>
550        <para>
551         Reduce server logging level when loading shared libraries (Peter Geoghegan)
552        </para>
553
554        <para>
555         The previous level was LOG, which was too verbose for per-session libraries.
556        </para>
557       </listitem>
558
559       <listitem>
560        <para>
561         Auto-tune effective_cache size to be four-times shared buffers (Bruce Momjian, Tom Lane)
562        </para>
563       </listitem>
564
565       <listitem>
566        <para>
567         Increase work_mem and maintenance_work_mem defaults by four-times (Bruce Momjian)
568        </para>
569
570        <para>
571         The new defaults are 4MB and 64MB respectively.
572        </para>
573       </listitem>
574
575       <listitem>
576        <para>
577         Allow terabyte units to be specified for configuration variable values (Simon Riggs)
578        </para>
579       </listitem>
580
581       <listitem>
582        <para>
583         Have Windows ASCII-encoded databases and server process (e.g. postmaster) emit messages in the LC_CTYPE-defined language (Alexander Law,
584         Noah Misch)
585        </para>
586
587        <para>
588         Previously these messages were output using the Windows ANSI code page.
589        </para>
590       </listitem>
591
592      </itemizedlist>
593
594     </sect4>
595
596    </sect3>
597
598    <sect3>
599     <title>Replication and Recovery</title>
600
601      <itemizedlist>
602
603       <listitem>
604        <para>
605         Allow recovery.conf parameter min_recovery_apply_delay to force delayed replication (Robert Haas, Fabrízio de Royes Mello, Simon Riggs)
606        </para>
607
608        <para>
609         This is useful for delaying replaying of user errors on standby servers.
610        </para>
611       </listitem>
612
613       <listitem>
614        <para>
615         Add recovery_target='immediate' option to replay WAL stop recovery when a consistent state is reached, i.e. pg_stop_backup() (MauMau,
616         Heikki Linnakangas)
617        </para>
618       </listitem>
619
620       <listitem>
621        <para>
622         Improve recovery target processing (Heikki Linnakangas)
623        </para>
624
625        <para>
626         The timestamp reported by pg_last_xact_replay_timestamp() now shows information about committed records, not commits being
627         replayed.  Recovering to restore points now replay the restore point, rather than stop just before the restore point.
628        </para>
629       </listitem>
630
631       <listitem>
632        <para>
633         pg_switch_xlog() now clears the trailing unused space in the WAL file (Heikki Linnakangas)
634        </para>
635
636        <para>
637         This improves the compression ratio for WAL files.
638        </para>
639       </listitem>
640
641       <listitem>
642        <para>
643         Add replication slots to report the WAL activity on streaming standbys (Andres Freund, Robert Haas)
644        </para>
645
646        <para>
647         Replication slots allow preservation of resources like WAL files on the
648         primary that are needed by standby servers.
649        </para>
650       </listitem>
651
652       <listitem>
653        <para>
654         Reduce spinlock contention during WAL replay (Heikki Linnakangas)
655        </para>
656       </listitem>
657
658       <listitem>
659        <para>
660         Report failure return codes from external recovery commands (Peter Eisentraut)
661        </para>
662       </listitem>
663
664       <listitem>
665        <para>
666         Write WAL records of running transactions more frequently (Andres Freund)
667        </para>
668
669        <para>
670         This allows standby servers to start faster and cleanup resources
671         more aggressively.
672        </para>
673       </listitem>
674
675      </itemizedlist>
676
677      <sect4>
678       <title>Logical Change-Set Extraction</title>
679
680       <para>
681        The new Logical change-set extraction feature allows database
682        changes to be optionally recorded in <emphasis>logical</> format
683        in the WAL.  This format can be easily processed by external tools.
684        In previous releases, only binary changes were recorded in the
685        WAL.  To implement this feature, the following changes were made:
686       </para>
687
688       <itemizedlist>
689
690        <listitem>
691         <para>
692          Add new "logical" wal_level to enable logical change-set encoding in WAL (Andres Freund)
693         </para>
694
695         <para>
696          This interacts with REPLICA IDENTITY.
697         </para>
698        </listitem>
699
700        <listitem>
701         <para>
702          Add tool pg_recvlogical to receive data logical decoding data (Andres Freund)
703         </para>
704        </listitem>
705
706        <listitem>
707         <para>
708          Add contrib/test_decoding module to illustrate logical decoding at the SQL level (Andres Freund)
709         </para>
710        </listitem>
711
712        <listitem>
713         <para>
714          Allow logical decoding via the walsender interface ? (Andres Freund)
715         </para>
716        </listitem>
717
718        <listitem>
719         <para>
720          Add table-level parameter REPLICA IDENTITY to control logical replication (Andres Freund)
721         </para>
722        </listitem>
723
724        <listitem>
725         <para>
726          Add relation option user_catalog_table to identify user-created tables involved in logical change-set encoding (Andres Freund)
727         </para>
728        </listitem>
729
730       </itemizedlist>
731
732      </sect4>
733
734    </sect3>
735
736    <sect3>
737     <title>Queries</title>
738
739      <itemizedlist>
740
741       <listitem>
742        <para>
743         Add ROWS FROM syntax to allow horizontal concatenation of FROM-clause set-returning functions (Andrew Gierth)
744        </para>
745       </listitem>
746
747       <listitem>
748        <para>
749         Add WITH ORDINALITY which numbers rows returned from FROM-clause functions (Andrew Gierth, David Fetter)
750        </para>
751
752        <para>
753         This is particularly useful for functions like UNNEST.
754        </para>
755       </listitem>
756
757       <listitem>
758        <para>
759         Allow SELECT with an empty target list (Tom Lane)
760        </para>
761
762        <para>
763         This was added for consistency, and so querying tables with no columns would not produce an error.
764        </para>
765       </listitem>
766
767      </itemizedlist>
768
769    </sect3>
770
771    <sect3>
772     <title>Utility Commands</title>
773
774      <itemizedlist>
775
776       <listitem>
777        <para>
778         Add DISCARD SEQUENCES command to discard cached sequence information (Fabrízio de Royes Mello, Robert Haas)
779        </para>
780
781        <para>
782         DISCARD ALL will now also discard such information.
783        </para>
784       </listitem>
785
786        <listitem>
787         <para>
788          Allow quoted strings matching the null string to be converted
789          to NULL in COPY FROM CVS mode (Ian Barwick, Michael Paquier)
790         </para>
791
792         <para>
793          Previously only unquoted matching strings would be imported as
794          NULLs.
795         </para>
796        </listitem>
797
798       <listitem>
799        <para>
800         Issue warnings for SET outside of a transaction block, as they have no effect (Bruce Momjian)
801        </para>
802
803        <para>
804         The cases are SET LOCAL/CONSTRAINTS/TRANSACTION and ABORT.
805        </para>
806       </listitem>
807
808      </itemizedlist>
809
810      <sect4>
811       <title>EXPLAIN</title>
812
813       <itemizedlist>
814
815        <listitem>
816         <para>
817          Have EXPLAIN ANALYZE output planning time (Andreas Karlsson)
818         </para>
819        </listitem>
820
821        <listitem>
822         <para>
823          Have EXPLAIN print the grouping columns in Agg and Group nodes (Tom Lane)
824         </para>
825        </listitem>
826
827        <listitem>
828         <para>
829          Have EXPLAIN ANALYZE show bitmap heap scan exact/lossy block information (Etsuro Fujita)
830         </para>
831        </listitem>
832
833       </itemizedlist>
834
835      </sect4>
836
837      <sect4>
838       <title>Views</title>
839
840       <itemizedlist>
841
842       <listitem>
843        <para>
844         Allow materialized views to be refreshed without blocking reads (Kevin Grittner)
845        </para>
846
847        <para>
848         This is done with REFRESH MATERIALIZED VIEW CONCURRENTLY.
849        </para>
850       </listitem>
851
852       <listitem>
853        <para>
854         Allow auto-updates on views where only some columns are auto-updateable (Dean Rasheed)
855        </para>
856
857        <para>
858         Previously the presence of a non-auto-updateable column prevented all columns from being auto-updated.  Deletes are now supported
859         on suitable views even if no auto-updateable columns are present.
860        </para>
861       </listitem>
862
863       <listitem>
864        <para>
865         Allow control over whether INSERTs and UPDATEs can add rows to an auto-updateable view that would no longer appear in the view (Dean Rasheed)
866        </para>
867
868        <para>
869         This is controlled with the new WITH CHECK OPTION.
870        </para>
871       </listitem>
872
873       <listitem>
874        <para>
875         Allow security barrier views to be automatically updateable (Dean Rasheed)
876        </para>
877       </listitem>
878
879       </itemizedlist>
880
881      </sect4>
882
883    </sect3>
884
885    <sect3>
886     <title>Object Manipulation</title>
887
888      <itemizedlist>
889
890       <listitem>
891        <para>
892         Allow triggers on foreign tables (Ronan Dunklau)
893        </para>
894       </listitem>
895
896       <listitem>
897        <para>
898         Fix DROP IF EXISTS to more consistently not error for non-existent objects (Pavel Stehule,  Dean Rasheed)
899        </para>
900       </listitem>
901
902       <listitem>
903        <para>
904         Improve the internal definition of system relations (Andres Freund, Robert Haas)
905        </para>
906
907        <para>
908         Previously, relations moved into the system catalog schema could not be modified.
909        </para>
910       </listitem>
911
912       <listitem>
913        <para>
914         Allow ALTER TABLESPACE options to be also set by CREATE TABLESPACE (Vik Fearing)
915        </para>
916       </listitem>
917
918       <listitem>
919        <para>
920         Allow CREATE AGGREGATE to supply the size of the aggregate's transition state data (Hadi Moshayedi)
921        </para>
922       </listitem>
923
924      </itemizedlist>
925
926     <sect4>
927      <title><command>ALTER</></title>
928
929      <itemizedlist>
930
931       <listitem>
932        <para>
933         Allow moving groups of objects from one tablespace to another using ALTER TABLESPACE ... MOVE (Stephen Frost)
934        </para>
935       </listitem>
936
937       <listitem>
938        <para>
939         Allow the changing of foreign key constraint  via ALTER TABLE ... ALTER CONSTRAINT (Simon Riggs)
940        </para>
941       </listitem>
942
943       <listitem>
944        <para>
945         Reduce lock levels of some ALTER TABLE commands (Simon Riggs, Noah Misch)
946        </para>
947
948        <para>
949         Specifically, VALIDATE CONSTRAINT, CLUSTER ON, SET WITHOUT CLUSTER, ALTER COLUMN SET STATISTICS, ALTER COLUMN
950         SET(attribute_option), ALTER COLUMN RESET(attribute_option).
951        </para>
952       </listitem>
953
954      </itemizedlist>
955
956     </sect4>
957
958    </sect3>
959
960    <sect3>
961     <title>Data Types</title>
962
963     <itemizedlist>
964
965       <listitem>
966        <para>
967         Fully-implement the line data type (Peter Eisentraut)
968        </para>
969
970        <para>
971         The line segment data type (LSEG) has always been supported.
972        </para>
973       </listitem>
974
975       <listitem>
976        <para>
977         Add PG_LSN data type to represent a WAL log sequence number (LSN) (Robert Haas, Michael Paquier)
978        </para>
979       </listitem>
980
981       <listitem>
982        <para>
983         Allow single-point POLYGONs to be converted to circles (Bruce Momjian)
984        </para>
985       </listitem>
986
987       <listitem>
988        <para>
989         Allow 5+ digit years for non-ISO timestamp/date strings, where appropriate (Bruce Momjian)
990        </para>
991       </listitem>
992
993       <listitem>
994        <para>
995         Add checks for overflow/underflow of INTERVAL values (Bruce Momjian)
996        </para>
997       </listitem>
998
999     </itemizedlist>
1000
1001     <sect4>
1002      <title><link linkend="datatype-json"><type>JSON</></link></title>
1003
1004      <itemizedlist>
1005
1006        <listitem>
1007         <para>
1008          Add structured (non-text) data type (jsonb) for storing JSON data (Oleg Bartunov, Teodor Sigaev,
1009          Alexander Korotkov, Peter Geoghegan, and Andrew Dunstan)
1010         </para>
1011
1012         <para>
1013          This data type allows for faster indexing and access to json key/value
1014          pairs, as well as efficient indexing of all key/value pairs in a JSON document.
1015         </para>
1016        </listitem>
1017
1018        <listitem>
1019         <para>
1020          Add new JSON functions to allow for the construction of arbitrarily complex json trees (Andrew Dunstan, Laurence Rowe)
1021         </para>
1022
1023         <para>
1024          New functions include json_array_elements_text(), json_build_array(), json_object(), json_object_agg(), json_to_record(),
1025          json_to_recordset().
1026         </para>
1027        </listitem>
1028
1029        <listitem>
1030         <para>
1031          Add json_typeof() to return the data type of a JSON value (Andrew Tipton)
1032         </para>
1033        </listitem>
1034
1035      </itemizedlist>
1036
1037     </sect4>
1038
1039    </sect3>
1040
1041
1042    <sect3>
1043     <title>Functions</title>
1044
1045      <itemizedlist>
1046
1047       <listitem>
1048        <para>
1049         Add pg_sleep_for(interval) and pg_sleep_until(timestamp) to specify sophisticated delays (Vik Fearing, Julien Rouhaud)
1050        </para>
1051
1052        <para>
1053         pg_sleep() only supports delays specified in seconds.
1054        </para>
1055       </listitem>
1056
1057       <listitem>
1058        <para>
1059         Add cardinality() function for arrays (Marko Tiikkaja)
1060        </para>
1061
1062        <para>
1063         This returns the total number of elements in the array, or zero for an array with no elements.
1064        </para>
1065       </listitem>
1066
1067       <listitem>
1068        <para>
1069         Add SQL functions to allow large object reads/writes at arbitrary offsets (Pavel Stehule)
1070        </para>
1071       </listitem>
1072
1073       <listitem>
1074        <para>
1075         Allow UNNEST() to take multiple arguments, which are individually unnested then horizontally concatenated (Andrew Gierth)
1076        </para>
1077       </listitem>
1078
1079       <listitem>
1080        <para>
1081         Add functions to construct times, dates, timestamps, timestamptzs, and intervals from individual values, rather than strings (Pavel Stehule)
1082        </para>
1083
1084        <para>
1085         The functions being with "make_", e.g. make_date.
1086        </para>
1087       </listitem>
1088
1089       <listitem>
1090        <para>
1091         Have to_char(TZ) return the proper value for constant time zone offsets (Tom Lane)
1092        </para>
1093
1094        <para>
1095         Previously, to_char(CURRENT_TIMESTAMP, 'TZ') returned NULL if the TIME ZONE was set to a constant like '-4'.
1096        </para>
1097       </listitem>
1098
1099       <listitem>
1100        <para>
1101         Add timezone offset output option 'OF' to to_char() (Bruce Momjian)
1102        </para>
1103       </listitem>
1104
1105       <listitem>
1106        <para>
1107         Improve the random seed used for random() (Honza Horak)
1108        </para>
1109       </listitem>
1110
1111      </itemizedlist>
1112
1113     <sect4>
1114      <title>System Information Functions</title>
1115
1116      <itemizedlist>
1117
1118       <listitem>
1119        <para>
1120         Add functions for error-free pg_class, pg_proc, pg_type, and pg_operator lookups (Yugo Nagata, Nozomi Anzai, Robert Haas)
1121        </para>
1122
1123        <para>
1124         For example, to_regclass() does error-free lookups of pg_class, and returns NULL for lookup failures.
1125        </para>
1126       </listitem>
1127
1128       <listitem>
1129        <para>
1130         Add function pg_filenode_relation() to allow for more efficient
1131         filenode to relation lookups  (Andres Freund)
1132        </para>
1133       </listitem>
1134
1135       <listitem>
1136        <para>
1137         Add information_schema column parameters.parameter_default (Peter Eisentraut)
1138        </para>
1139       </listitem>
1140
1141       <listitem>
1142        <para>
1143         Have information_schema.schemata show all accessible schema (Peter Eisentraut)
1144        </para>
1145
1146        <para>
1147         Previously it only showed _owned_ schemas.
1148        </para>
1149       </listitem>
1150
1151      </itemizedlist>
1152
1153     </sect4>
1154
1155     <sect4>
1156      <title>Aggregates</title>
1157
1158      <itemizedlist>
1159
1160       <listitem>
1161        <para>
1162         Add aggregates percentile_cont(), percentile_disc(), rank(), dense_rank(), percent_rank(), cume_dist(), and mode() (Atri Sharma, Andrew
1163         Gierth)
1164        </para>
1165       </listitem>
1166
1167       <listitem>
1168        <para>
1169         Add control over which values are passed into
1170         aggregate functions using the FILTER clause (David Fetter)
1171        </para>
1172       </listitem>
1173
1174       <listitem>
1175        <para>
1176         Support ordered-set (WITHIN GROUP) aggregates (Atri Sharma, Andrew Gierth, Tom Lane)
1177        </para>
1178
1179        <para>
1180         This allows aggregates that require sorted input.
1181        </para>
1182       </listitem>
1183
1184       <listitem>
1185        <para>
1186         Allow polymorphic aggregates to have non-polymorphic state data types ? (Tom Lane)
1187        </para>
1188       </listitem>
1189
1190       <listitem>
1191        <para>
1192         Allow VARIADIC aggregate functions (Tom Lane)
1193        </para>
1194       </listitem>
1195
1196      </itemizedlist>
1197
1198     </sect4>
1199
1200    </sect3>
1201
1202    <sect3>
1203     <title>Server-Side Languages</title>
1204
1205     <sect4>
1206      <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
1207
1208      <itemizedlist>
1209
1210       <listitem>
1211        <para>
1212         Add event trigger support to PL/Perl and PL/Tcl (Dimitri Fontaine)
1213        </para>
1214       </listitem>
1215
1216      </itemizedlist>
1217
1218      <itemizedlist>
1219
1220       <listitem>
1221        <para>
1222         Add ability to store the PL/PgSQL call stack into a variable using PG_CONTEXT (Pavel Stehule, Stephen Frost)
1223        </para>
1224       </listitem>
1225
1226       <listitem>
1227        <para>
1228         Add option print_strict_params to output parameters passed to
1229         queries generating STRICT errors (Marko Tiikkaja)
1230        </para>
1231       </listitem>
1232
1233       <listitem>
1234        <para>
1235         Add option to enable additional PL/pgSQL errors and warnings (Marko Tiikkaja, Petr Jelinek)
1236        </para>
1237
1238        <para>
1239         Currently only shadowed variable errors/warnings are available.
1240        </para>
1241       </listitem>
1242
1243     </itemizedlist>
1244
1245     </sect4>
1246
1247     <sect4>
1248      <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
1249
1250      <itemizedlist>
1251
1252       <listitem>
1253        <para>
1254         Handle domains over arrays like plain arrays in PL/python (Rodolfo Campero)
1255        </para>
1256
1257        <para>
1258         Previously they were treated as strings.
1259        </para>
1260       </listitem>
1261
1262       <listitem>
1263        <para>
1264         Convert NUMERICs to "decimal" values in PL/Python (Szymon Guz, Ronan Dunklau)
1265        </para>
1266
1267        <para>
1268         Previously these were converted to "floats".
1269        </para>
1270       </listitem>
1271
1272      </itemizedlist>
1273
1274     </sect4>
1275
1276    </sect3>
1277
1278    <sect3>
1279     <title><link linkend="libpq"><application>libpq</></link></title>
1280      <itemizedlist>
1281
1282       <listitem>
1283        <para>
1284         Add libpq function PQhostaddr() to return the server's IP address (Fujii Masao)
1285        </para>
1286       </listitem>
1287
1288       <listitem>
1289        <para>
1290         Make libpq's PQconndefaults() ignore invalid service files (Steve Singer, Bruce Momjian)
1291        </para>
1292
1293        <para>
1294         Previously it returned NULL.
1295        </para>
1296       </listitem>
1297
1298       <listitem>
1299        <para>
1300         Allow libpq to support TLS versions beyond TLSv1 (Marko Kreen)
1301        </para>
1302       </listitem>
1303
1304       <listitem>
1305        <para>
1306         Document that libpq's PQclientEncoding() returns -1 for an encoding lookup failure (Bruce Momjian)
1307        </para>
1308       </listitem>
1309
1310      </itemizedlist>
1311
1312    </sect3>
1313
1314    <sect3>
1315     <title>Client Applications</title>
1316
1317     <itemizedlist>
1318
1319       <listitem>
1320        <para>
1321         Add createuser -g to specify role membership (Chistopher Browne)
1322        </para>
1323       </listitem>
1324
1325       <listitem>
1326        <para>
1327         Allow vacuumdb --analyze-in-stages to analyze in stages of increasing granularity (Peter Eisentraut)
1328        </para>
1329
1330        <para>
1331         This allows minimal statistics to be created quickly.
1332        </para>
1333       </listitem>
1334
1335       <listitem>
1336        <para>
1337         Allow pg_xlogdump to report a live log stream with --follow (Heikki Linnakangas)
1338        </para>
1339       </listitem>
1340
1341       <listitem>
1342        <para>
1343         Have pg_resetxlog -n output current and potentially changed values (Rajeev Rastogi)
1344        </para>
1345       </listitem>
1346
1347       <listitem>
1348        <para>
1349         Allow sizeof() in ecpg C array definitions (Michael Meskes)
1350        </para>
1351       </listitem>
1352
1353       <listitem>
1354        <para>
1355         Have ecpg properly handle nesting requirements in C and SQL mode for C-style comments (Michael Meskes)
1356        </para>
1357       </listitem>
1358
1359       <listitem>
1360        <para>
1361         Have pg_ctl return '4' for an inaccessible data directory specification (Amit Kapila, Bruce Momjian)
1362        </para>
1363
1364        <para>
1365         This more closely matches the Linux Standard Base Core Specification.
1366        </para>
1367       </listitem>
1368
1369       <listitem>
1370        <para>
1371         On Windows interpret pg_ctl -D relative directories relative to pg_ctl's current directory (Kumar Rajeev Rastogi)
1372        </para>
1373       </listitem>
1374
1375     </itemizedlist>
1376
1377     <sect4>
1378      <title><link linkend="APP-PSQL"><application>psql</></link></title>
1379
1380      <itemizedlist>
1381
1382       <listitem>
1383        <para>
1384         Allow field wrapping to psql's "extended" mode (Sergey Muraviov)
1385        </para>
1386       </listitem>
1387
1388       <listitem>
1389        <para>
1390         Suppress "No rows" in psql expanded mode when the footer is disabled (Bruce Momjian)
1391        </para>
1392       </listitem>
1393
1394       <listitem>
1395        <para>
1396         Allow Control-C to abort psql hung at connection startup (Peter Eisentraut)
1397        </para>
1398       </listitem>
1399
1400      </itemizedlist>
1401
1402      <sect5>
1403       <title><link linkend="APP-PSQL-meta-commands">Backslash Commands</link></title>
1404
1405       <itemizedlist>
1406
1407        <listitem>
1408         <para>
1409          Have psql \db+ show tablespace options (Magnus Hagander)
1410         </para>
1411        </listitem>
1412
1413        <listitem>
1414         <para>
1415          Have psql \do+ display the functions which implement the operators (Marko Tiikkaja)
1416         </para>
1417        </listitem>
1418
1419        <listitem>
1420         <para>
1421          Have psql \d+ output an OID line only if an oid column exists in a table (Bruce Momjian)
1422         </para>
1423
1424         <para>
1425          Previously, the presence or absence of an oid column was always reported.
1426         </para>
1427        </listitem>
1428
1429        <listitem>
1430         <para>
1431          Have \d display disabled system triggers (Bruce Momjian)
1432         </para>
1433
1434         <para>
1435          Previously if you disabled all triggers, only user triggers would show as disabled.
1436         </para>
1437        </listitem>
1438
1439        <listitem>
1440         <para>
1441          Fix psql \copy to no longer require a space between 'stdin' and a semicolon (Etsuro Fujita)
1442         </para>
1443        </listitem>
1444
1445        <listitem>
1446         <para>
1447          Output the row count at the end of psql \copy just like COPY (Kumar Rajeev Rastogi)
1448         </para>
1449        </listitem>
1450
1451        <listitem>
1452         <para>
1453          Fix psql \conninfo to display the server's IP address for clients that connect using 'hostaddr' (Fujii Masao)
1454         </para>
1455
1456         <para>
1457          Previously \conninfo could not display the server's IP address in such cases.
1458         </para>
1459        </listitem>
1460
1461        <listitem>
1462         <para>
1463          Mention the SSL protocol version in psql's \conninfo (Marko Kreen)
1464         </para>
1465        </listitem>
1466
1467        <listitem>
1468         <para>
1469          Add psql tab completion for \pset (Pavel Stehule)
1470         </para>
1471        </listitem>
1472
1473        <listitem>
1474         <para>
1475          Allow psql \pset with no arguments to show all settings (Gilles Darold)
1476         </para>
1477        </listitem>
1478
1479        <listitem>
1480         <para>
1481          In psql, output the written history file name (\s) without adding an absolute path prefix (Tom Lane)
1482         </para>
1483
1484         <para>
1485          The previous output was inconsistent.
1486         </para>
1487        </listitem>
1488
1489       </itemizedlist>
1490
1491      </sect5>
1492
1493     </sect4>
1494
1495     <sect4>
1496      <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
1497
1498      <itemizedlist>
1499
1500       <listitem>
1501        <para>
1502         Allow pg_restore options -I, -P, -T and -n to be specified multiple times (Heikki Linnakangas)
1503        </para>
1504
1505        <para>
1506         This allows multiple restore object to be specified.
1507        </para>
1508       </listitem>
1509
1510       <listitem>
1511        <para>
1512         Add IF EXISTS clauses when removing old objects during dump and restore (Pavel Stehule)
1513        </para>
1514
1515        <para>
1516         This suppresses errors when removing old objects.  The new --if-exists option to pg_dump, pg_dumpall, and pg_restore is only
1517         available when --clean is also specified.
1518        </para>
1519       </listitem>
1520
1521      </itemizedlist>
1522
1523     </sect4>
1524
1525     <sect4>
1526      <title>pg_basebackup</title>
1527
1528      <itemizedlist>
1529
1530       <listitem>
1531        <para>
1532         Add pg_basebackup option --xlogdir to specify the pg_xlog direction location (Haribabu Kommi)
1533        </para>
1534       </listitem>
1535
1536       <listitem>
1537        <para>
1538         Allow pg_basebackup to relocate tablespaces in the backup copy (Steeve Lennmark)
1539        </para>
1540
1541        <para>
1542         This is particularly useful for using pg_basebackup on the same machine as the primary.
1543        </para>
1544       </listitem>
1545
1546       <listitem>
1547        <para>
1548         Allow network-streams base backups to be throttled (Antonin Houska)
1549        </para>
1550
1551        <para>
1552         This can be controlled with the pg_basebackup --max-rate parameter.
1553        </para>
1554       </listitem>
1555
1556      </itemizedlist>
1557
1558     </sect4>
1559
1560    </sect3>
1561
1562    <sect3>
1563     <title>Source Code</title>
1564
1565      <itemizedlist>
1566
1567       <listitem>
1568        <para>
1569         Improve the way tuples are frozen, to preserve forensic information (Robert Haas, Andres Freund)
1570        </para>
1571
1572        <para>
1573         Code that inspects tuple flag bits will need to be modified.
1574        </para>
1575       </listitem>
1576
1577       <listitem>
1578        <para>
1579         No longer require function prototypes for function marked with the PG_FUNCTION_INFO_V1 macro (Peter Eisentraut)
1580        </para>
1581
1582        <para>
1583         This eliminates needless boilerplate prototypes whose lack generates compiler warnings.
1584        </para>
1585       </listitem>
1586
1587       <listitem>
1588        <para>
1589         Remove SnapshotNow and HeapTupleSatisfiesNow (Robert Haas)
1590        </para>
1591
1592        <para>
1593         All existing uses have been switched to more appropriate snapshot
1594         types.  Catalog scans now use MVCC snapshots.
1595        </para>
1596       </listitem>
1597
1598       <listitem>
1599        <para>
1600        </para>
1601       </listitem>
1602
1603       <listitem>
1604        <para>
1605         Add API for memory allocations over four gigabytes (Noah Misch)
1606        </para>
1607       </listitem>
1608
1609       <listitem>
1610        <para>
1611         Add psprintf() to simplify memory allocation during string composition (Peter Eisentraut, Tom Lane)
1612        </para>
1613       </listitem>
1614
1615       <listitem>
1616        <para>
1617         Add printf() modifier "z" to specify size_t values (Andres Freund)
1618        </para>
1619       </listitem>
1620
1621       <listitem>
1622        <para>
1623         Change API of appendStringInfoVA() to better use vsnprintf() (David Rowley, Tom Lane)
1624        </para>
1625       </listitem>
1626
1627       <listitem>
1628        <para>
1629         Allow new types of external toast datums to be created (Andres Freund)
1630        </para>
1631       </listitem>
1632
1633       <listitem>
1634        <para>
1635         Add single-reader, single-writer, lightweight shared message queue (Robert Haas)
1636        </para>
1637       </listitem>
1638
1639       <listitem>
1640        <para>
1641         Improve spinlock speed on x86_64 CPUs (Heikki Linnakangas)
1642        </para>
1643       </listitem>
1644
1645       <listitem>
1646        <para>
1647         Remove spinlock support for unsupported platforms SINIX, Sun3, and NS32K (Robert Haas)
1648        </para>
1649       </listitem>
1650
1651       <listitem>
1652        <para>
1653         Remove IRIX port (Robert Haas)
1654        </para>
1655       </listitem>
1656
1657       <listitem>
1658        <para>
1659         Reduce the number of semaphores required by --disable-spinlocks (Robert Haas)
1660        </para>
1661       </listitem>
1662
1663       <listitem>
1664        <para>
1665         Rewrite duplicate_oids Unix shell script in Perl (Andrew Dunstan)
1666        </para>
1667       </listitem>
1668
1669       <listitem>
1670        <para>
1671         Add Test Anything Protocol (TAP) tests for client programs (Peter Eisentraut)
1672        </para>
1673       </listitem>
1674
1675       <listitem>
1676        <para>
1677         Add make targets check-tests and installcheck-tests which allow per-test specification (Andrew Dunstan)
1678        </para>
1679       </listitem>
1680
1681       <listitem>
1682        <para>
1683         Remove maintainer-check makefile rule (Peter Eisentraut)
1684        </para>
1685
1686        <para>
1687         Its functionality is now done by the default build rules.
1688        </para>
1689       </listitem>
1690
1691       <listitem>
1692        <para>
1693         Improve support for VPATH builds of PGXS modules  (Cédric Villemain, Andrew Dunstan)
1694        </para>
1695       </listitem>
1696
1697       <listitem>
1698        <para>
1699         Upgrade to Autoconf 2.69 (Peter Eisentraut)
1700        </para>
1701       </listitem>
1702
1703       <listitem>
1704        <para>
1705         Add configure flag that appends custom text to the PG_VERSION string (Oskari Saarenmaa)
1706        </para>
1707
1708        <para>
1709         This is useful for packagers building custom binaries.
1710        </para>
1711       </listitem>
1712
1713       <listitem>
1714        <para>
1715         Improve DocBook XML validity (Peter Eisentraut)
1716        </para>
1717       </listitem>
1718
1719       <listitem>
1720        <para>
1721         Various security and sanity fixes reported by the Coverity scanner (Stephen Frost)
1722        </para>
1723       </listitem>
1724
1725       <listitem>
1726        <para>
1727         Improve valgrind error reporting (Noah Misch)
1728        </para>
1729       </listitem>
1730
1731       <listitem>
1732        <para>
1733         Improve Emacs configuration file emacs.samples (Peter Eisentraut)
1734        </para>
1735
1736        <para>
1737         Also add .dir-locals.el to the top of the source tree.
1738        </para>
1739       </listitem>
1740
1741       <listitem>
1742        <para>
1743         Allow pgindent to be supplied a command-line list of typedefs (Bruce Momjian)
1744        </para>
1745
1746        <para>
1747         pgindent is also now smarter about blank lines around preprocessor conditionals.
1748        </para>
1749       </listitem>
1750
1751       <listitem>
1752        <para>
1753         Avoid most uses of dlltool in Cygwin and  Mingw builds (Marco Atzeri, Hiroshi Inoue)
1754        </para>
1755       </listitem>
1756
1757      </itemizedlist>
1758
1759    </sect3>
1760
1761    <sect3>
1762     <title>Additional Modules</title>
1763
1764     <itemizedlist>
1765
1766       <listitem>
1767        <para>
1768         Add pg_prewarm to preload relation data into the shared buffer cache (Robert Haas)
1769        </para>
1770
1771        <para>
1772         This is useful at server start to produce more consistent performance.
1773        </para>
1774       </listitem>
1775
1776       <listitem>
1777        <para>
1778         Add UUID random number generator gen_random_uuid() to pgcrypto (Oskari Saarenmaa)
1779        </para>
1780
1781        <para>
1782         This allows the creation of version 4 UUIDs without requiring the installation of uuid-ossp.
1783        </para>
1784       </listitem>
1785
1786       <listitem>
1787        <para>
1788         Add logging of trigger execution to auto_explain (Horiguchi Kyotaro)
1789        </para>
1790       </listitem>
1791
1792       <listitem>
1793        <para>
1794         Allow reporting of the pg_stat_statements's internal query hash identifier (Daniel Farina, Sameer Thakur, Peter Geoghegan)
1795        </para>
1796       </listitem>
1797
1798       <listitem>
1799        <para>
1800         Have pg_stat_statements use a flat file for query text storage, allowing higher limits (Peter Geoghegan)
1801        </para>
1802
1803        <para>
1804         Also add the ability to retrieve all pg_stat_statements information except the query text.  This allows programs to reuse the query
1805         text already retrieved by referencing queryid.
1806        </para>
1807       </listitem>
1808
1809       <listitem>
1810        <para>
1811         Fix pgstattuple to not report rows from uncommitted transactions as dead (Robert Haas)
1812        </para>
1813       </listitem>
1814
1815       <listitem>
1816        <para>
1817         Have pgstattuple functions use regclass-type arguments (Satoshi Nagayasu)
1818        </para>
1819
1820        <para>
1821         While text-type arguments are still supported, they will be removed in a later major release.
1822        </para>
1823       </listitem>
1824
1825       <listitem>
1826        <para>
1827         Improve consistency of pgrowlocks output to honor snapshot rules more consistently (Robert Haas)
1828        </para>
1829       </listitem>
1830
1831       <listitem>
1832        <para>
1833         Improve indexing of pg_trgm values to discourage indexing whitespace (Alexander Korotkov)
1834        </para>
1835       </listitem>
1836
1837       <listitem>
1838        <para>
1839         Store cube data more compactly (Stas Kelvich)
1840        </para>
1841
1842        <para>
1843         Existing data must be dumped/restored to use the new format.  The old format can still be read.
1844        </para>
1845       </listitem>
1846
1847       <listitem>
1848        <para>
1849         Reduce vacuumlo client-side memory usage by using a cursor (Andrew Dunstan)
1850        </para>
1851       </listitem>
1852
1853       <listitem>
1854        <para>
1855         Dramatically reduce memory consumption in pg_upgrade (Bruce Momjian)
1856        </para>
1857       </listitem>
1858
1859       <listitem>
1860        <para>
1861         Pass pg_upgrade user names (-U) to analyze scripts (Bruce Momjian)
1862        </para>
1863       </listitem>
1864
1865     </itemizedlist>
1866
1867     <sect4>
1868      <title><link linkend="pgbench"><application>pgbench</></link></title>
1869
1870      <itemizedlist>
1871
1872       <listitem>
1873        <para>
1874         Allow pgbench to process script files of any line length (Sawada Masahiko)
1875        </para>
1876
1877        <para>
1878         The previous line limit was BUFSIZ.
1879        </para>
1880       </listitem>
1881
1882       <listitem>
1883        <para>
1884         Add pg_bench option (--rate) to control the transaction rate (Fabien Coelho)
1885        </para>
1886       </listitem>
1887
1888       <listitem>
1889        <para>
1890         Add --progress output option to pgbench (Fabien Coelho)
1891        </para>
1892       </listitem>
1893
1894       <listitem>
1895        <para>
1896         Add long options to pgbench (Fabien Coelho)
1897        </para>
1898       </listitem>
1899
1900      </itemizedlist>
1901
1902     </sect4>
1903
1904    </sect3>
1905
1906   </sect2>
1907  </sect1>