OSDN Git Service

Update release notes for 7.4.26, 8.0.22, 8.1.18, 8.2.14, 8.3.8, 8.4.1.
[pg-rex/syncrep.git] / doc / src / sgml / release-8.4.sgml
1 <!-- $PostgreSQL: pgsql/doc/src/sgml/release-8.4.sgml,v 1.13 2009/08/27 01:27:34 momjian Exp $ -->
2 <!-- See header comment in release.sgml about typical markup -->
3
4  <sect1 id="release-8-4-1">
5   <title>Release 8.4.1</title>
6
7   <note>
8   <title>Release date</title>
9   <simpara>2009-09-09, AS OF 2009-08-26</simpara>
10   </note>
11
12   <para>
13    This release contains a variety of fixes from 8.4.
14    For information about new features in the 8.4 major release, see
15    <xref linkend="release-8-4">.
16   </para>
17
18   <sect2>
19    <title>Migration to Version 8.4.1</title>
20
21    <para>
22     A dump/restore is not required for those running 8.4.X.
23    </para>
24
25   </sect2>
26
27   <sect2>
28    <title>Changes</title>
29
30    <itemizedlist>
31
32     <listitem>
33      <para>
34       Fix pg_dump <literal>--binary-upgrade</> to handle dropped inherited columns
35       and their check constraints properly (Tom)
36      </para>
37
38      <para>
39       <literal>pg_dump --binary-upgrade</> is used by pg_migrator.
40      </para>
41     </listitem>
42
43     <listitem>
44      <para>
45       Fix pg_dump <literal>--binary-upgrade</> to handle pg_largeobject frozen xid value
46       (Bruce)
47      </para>
48     </listitem>
49
50     <listitem>
51      <para>
52       Allow parentheses around the <literal>WITH</> query expression
53       body (Tom)
54      </para>
55     </listitem>
56
57     <listitem>
58      <para>
59       Treat <function>to_char(..., 'TH')</> as an uppercase ordinal
60       suffix with <literal>'HH'</>/<literal>'HH12'</> (Heikki)
61      </para>
62
63      <para>
64       It was previously handled as <literal>'th'</> (lowercase).
65      </para>
66     </listitem>
67
68     <listitem>
69      <para>
70       Fix locale handling with plperl (Heikki)
71      </para>
72
73      <para>
74       This bug could cause the servers locale to change, leading to
75       data corruption.
76      </para>
77     </listitem>
78
79     <listitem>
80      <para>
81       Fix <filename>/contrib/xml2</> <function>xslt_process()</> to
82       properly handle the maximum number of parameters (twenty) (Tom)
83      </para>
84     </listitem>
85
86     <listitem>
87      <para>
88       Remove translated FAQs (Peter)
89      </para>
90
91      <para>
92       They are now on the <ulink
93       url="http://wiki.postgresql.org/wiki/FAQ">wiki</ulink>.  The
94       main FAQ was moved to the wiki some time ago.
95      </para>
96     </listitem>
97
98     <listitem>
99      <para>
100       Reduce memory consumption of aggregates on arrays (Tom)
101      </para>
102     </listitem>
103
104     <listitem>
105      <para>
106       Properly show fractional seconds and milliseconds for
107       <function>>EXTRACT()</> (Tom)
108      </para>
109     </listitem>
110
111     <listitem>
112      <para>
113       Fix case where <application>pg_ctl</> fast shutdown was not
114       working if <application>pg_ctl</> smart shutdown was already in
115       progress (Fujii Masao)
116      </para>
117     </listitem>
118
119     <listitem>
120      <para>
121       Fix rare recovery error related to the creation of WAL entries (Tom)
122      </para>
123     </listitem>
124
125     <listitem>
126      <para>
127       Re-add documentation for configure flag <literal>--no-readline</> (Andrew)
128      </para>
129     </listitem>
130
131     <listitem>
132      <para>
133       Fix problem where Win32 shared memory allocation sometimes failed on
134       startup (Tsutomu Yamada, Magnus)
135      </para>
136
137      <para>
138       This bug caused some Win32 backends to randomly not start.
139      </para>
140     </listitem>
141
142     <listitem>
143      <para>
144       Improve performance when processing TOAST rows (Tom)
145      </para>
146
147      <para>
148       This is particularly useful for <ulink
149       url="http://postgis.refractions.net/">PostGIS</ulink>.
150      </para>
151     </listitem>
152
153     <listitem>
154      <para>
155       Fix problem where expired rows could appear visible after a crash (Tom)
156      </para>
157
158      <para>
159       This bug involved a page status bit potentially not being set
160       correctly after a server crash.
161      </para>
162     </listitem>
163
164     <listitem>
165      <para>
166       Output configuration file errors to <filename>postmaster.log</> if the
167       server is started in silent mode (Tom)
168      </para>
169
170      <para>
171       Previously such error messages were discarded, leading to
172       difficulty in debugging.
173      </para>
174     </listitem>
175
176    </itemizedlist>
177
178   </sect2>
179  </sect1>
180
181  <sect1 id="release-8-4">
182   <title>Release 8.4</title>
183
184   <note>
185    <title>Release date</title>
186    <simpara>2009-07-01</simpara>
187   </note>
188
189   <sect2>
190    <title>Overview</title>
191
192    <para>
193     After many years of development, <productname>PostgreSQL</> has
194     become feature-complete in many areas.   This release shows a
195     targeted approach to adding features (e.g., authentication,
196     monitoring, space reuse), and adds capabilities defined in the
197     later SQL standards.  The major areas of enhancement are:
198    </para>
199
200    <itemizedlist>
201
202     <!-- This list duplicates items below, but without authors or details-->
203
204     <listitem>
205      <para>
206       Windowing Functions
207      </para>
208     </listitem>
209
210     <listitem>
211      <para>
212       Common Table Expressions and Recursive Queries
213      </para>
214     </listitem>
215
216     <listitem>
217      <para>
218       Default and variadic parameters for functions
219      </para>
220     </listitem>
221
222     <listitem>
223      <para>
224       Parallel Restore
225      </para>
226     </listitem>
227
228     <listitem>
229      <para>
230       Column Permissions
231      </para>
232     </listitem>
233
234     <listitem>
235      <para>
236       Per-database locale settings
237      </para>
238     </listitem>
239
240     <listitem>
241      <para>
242       Improved hash indexes
243      </para>
244     </listitem>
245
246     <listitem>
247      <para>
248       Improved join performance for <literal>EXISTS</> and <literal>NOT EXISTS</> queries
249      </para>
250     </listitem>
251
252     <listitem>
253      <para>
254       Easier-to-use Warm Standby
255      </para>
256     </listitem>
257
258     <listitem>
259      <para>
260       Automatic sizing of the Free Space Map
261      </para>
262     </listitem>
263
264     <listitem>
265      <para>
266       Visibility Map (greatly reduces vacuum overhead for slowly-changing tables)
267      </para>
268     </listitem>
269
270     <listitem>
271      <para>
272       Version-aware psql (backslash commands work against older servers)
273      </para>
274     </listitem>
275
276     <listitem>
277      <para>
278       Support SSL certificates for user authentication
279      </para>
280     </listitem>
281
282     <listitem>
283      <para>
284       Per-function runtime statistics
285      </para>
286     </listitem>
287
288     <listitem>
289      <para>
290       Easy editing of functions in psql
291      </para>
292     </listitem>
293
294     <listitem>
295      <para>
296       New contrib modules: pg_stat_statements, auto_explain, citext, btree_gin
297      </para>
298     </listitem>
299
300    </itemizedlist>
301
302    <para>
303     The above items are explained in more detail in the sections below.
304    </para>
305
306   </sect2>
307
308   <sect2>
309    <title>Migration to Version 8.4</title>
310
311    <para>
312     A dump/restore using <application>pg_dump</application> is
313     required for those wishing to migrate data from any previous
314     release.
315    </para>
316
317    <para>
318     Observe the following incompatibilities:
319    </para>
320
321    <sect3>
322     <title>General</title>
323     <itemizedlist>
324
325      <listitem>
326       <para>
327        Use 64-bit integer datetimes by default (Neil Conway)
328       </para>
329
330       <para>
331        Previously this was selected by <application>configure</>'s
332        <option>--enable-integer-datetimes</> option.  To retain
333        the old behavior, build with <option>--disable-integer-datetimes</>.
334       </para>
335      </listitem>
336
337      <listitem>
338       <para>
339        Remove <application>ipcclean</> utility command (Bruce)
340       </para>
341
342       <para>
343        The utility only worked on a few platforms.  Users should use
344        their operating system tools instead.
345       </para>
346      </listitem>
347
348     </itemizedlist>
349
350    </sect3>
351
352    <sect3>
353     <title>Server Settings</title>
354     <itemizedlist>
355
356      <listitem>
357       <para>
358        Change default setting for
359        <literal>log_min_messages</> to <literal>warning</> (previously
360        it was <literal>notice</>) to reduce log file volume (Tom)
361       </para>
362      </listitem>
363
364      <listitem>
365       <para>
366        Change default setting for <literal>max_prepared_transactions</> to
367        zero (previously it was 5) (Tom)
368       </para>
369      </listitem>
370
371      <listitem>
372       <para>
373        Make <literal>debug_print_parse</>, <literal>debug_print_rewritten</>,
374        and <literal>debug_print_plan</>
375        output appear at <literal>LOG</> message level, not
376        <literal>DEBUG1</> as formerly (Tom)
377       </para>
378      </listitem>
379
380      <listitem>
381       <para>
382        Make <literal>debug_pretty_print</> default to <literal>on</> (Tom)
383       </para>
384      </listitem>
385
386      <listitem>
387       <para>
388        Remove <varname>explain_pretty_print</> parameter (no longer needed) (Tom)
389       </para>
390      </listitem>
391
392      <listitem>
393       <para>
394        Make <varname>log_temp_files</> settable by superusers only, like other
395        logging options (Simon Riggs)
396       </para>
397      </listitem>
398
399      <listitem>
400       <para>
401        Remove automatic appending of the epoch timestamp when no <literal>%</>
402        escapes are present in <literal>log_filename</> (Robert Haas)
403       </para>
404
405       <para>
406        This change was made because some users wanted a fixed log filename,
407        for use with an external log rotation tool.
408       </para>
409      </listitem>
410
411      <listitem>
412       <para>
413        Remove <varname>log_restartpoints</> from <filename>recovery.conf</>;
414        instead use <varname>log_checkpoints</> (Simon)
415       </para>
416      </listitem>
417
418      <listitem>
419       <para>
420        Remove <varname>krb_realm</> and <varname>krb_server_hostname</>;
421        these are now set in <filename>pg_hba.conf</> instead (Magnus)
422       </para>
423      </listitem>
424
425      <listitem>
426       <para>
427        There are also significant changes in <link
428        linkend="release-8-4-pg-hba-conf"><filename>pg_hba.conf</></link>,
429        as described below.
430       </para>
431      </listitem>
432
433     </itemizedlist>
434
435    </sect3>
436
437    <sect3>
438     <title>Queries</title>
439
440     <itemizedlist>
441
442      <listitem>
443       <para>
444        Change <command>TRUNCATE</> and <command>LOCK</> to
445        apply to child tables of the specified table(s) (Peter)
446       </para>
447
448       <para>
449        These commands now accept an <literal>ONLY</> option that prevents
450        processing child tables; this option must be used if the old
451        behavior is needed.
452       </para>
453      </listitem>
454
455      <listitem>
456       <para>
457        <command>SELECT DISTINCT</> and
458        <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</>
459        no longer always produce sorted output (Tom)
460       </para>
461
462       <para>
463        Previously, these types of queries always removed duplicate rows
464        by means of Sort/Unique processing (i.e., sort then remove adjacent
465        duplicates).  Now they can be implemented by hashing, which will not
466        produce sorted output.  If an application relied on the output being
467        in sorted order, the recommended fix is to add an <literal>ORDER BY</>
468        clause.  As a short-term workaround, the previous behavior can be
469        restored by disabling <literal>enable_hashagg</>, but that is a very
470        performance-expensive fix.  <literal>SELECT DISTINCT ON</> never uses
471        hashing, however, so its behavior is unchanged.
472       </para>
473      </listitem>
474
475      <listitem>
476       <para>
477        Force child tables to inherit <literal>CHECK</> constraints from parents
478        (Alex Hunsaker, Nikhil Sontakke, Tom)
479       </para>
480
481       <para>
482        Formerly it was possible to drop such a constraint from a child
483        table, allowing rows that violate the constraint to be visible
484        when scanning the parent table.  This was deemed inconsistent,
485        as well as contrary to SQL standard.
486       </para>
487      </listitem>
488
489      <listitem>
490       <para>
491        Disallow negative <literal>LIMIT</> or <literal>OFFSET</>
492        values, rather than treating them as zero (Simon)
493       </para>
494      </listitem>
495
496      <listitem>
497       <para>
498        Disallow <command>LOCK TABLE</> outside a transaction block
499        (Tom)
500       </para>
501
502       <para>
503        Such an operation is useless because the lock would be released
504        immediately.
505       </para>
506      </listitem>
507
508      <listitem>
509       <para>
510        Sequences now contain an additional <structfield>start_value</> column
511        (Zoltan Boszormenyi)
512       </para>
513
514       <para>
515        This supports <command>ALTER SEQUENCE ... RESTART</>.
516       </para>
517      </listitem>
518
519     </itemizedlist>
520
521    </sect3>
522
523
524    <sect3>
525     <title>Functions and Operators</title>
526
527     <itemizedlist>
528
529      <listitem>
530       <para>
531        Make <type>numeric</> zero raised to a fractional power return
532        <literal>0</>, rather than throwing an error, and make
533        <type>numeric</> zero raised to the zero power return <literal>1</>,
534        rather than error (Bruce)
535       </para>
536
537       <para>
538        This matches the longstanding <type>float8</> behavior.
539       </para>
540      </listitem>
541
542      <listitem>
543       <para>
544        Allow unary minus of floating-point values to produce minus zero (Tom)
545       </para>
546
547       <para>
548        The changed behavior is more <acronym>IEEE</>-standard
549        compliant.
550       </para>
551      </listitem>
552
553      <listitem>
554       <para>
555        Throw an error if an escape character is the last character in
556        a <literal>LIKE</> pattern (i.e., it has nothing to escape) (Tom)
557       </para>
558
559       <para>
560        Previously, such an escape character was silently ignored,
561        thus possibly masking application logic errors.
562       </para>
563      </listitem>
564
565      <listitem>
566       <para>
567        Remove <literal>~=~</> and <literal>~&lt;&gt;~</> operators
568        formerly used for <literal>LIKE</> index comparisons (Tom)
569       </para>
570
571       <para>
572        Pattern indexes now use the regular equality operator.
573       </para>
574      </listitem>
575
576      <listitem>
577       <para>
578        <function>xpath()</> now passes its arguments to <application>libxml</>
579        without any changes (Andrew)
580       </para>
581
582       <para>
583        This means that the XML argument must be a well-formed XML document.
584        The previous coding attempted to allow XML fragments, but it did not
585        work well.
586       </para>
587      </listitem>
588
589      <listitem>
590       <para>
591        Make <function>xmlelement()</> format attribute values just like
592        content values (Peter)
593       </para>
594
595       <para>
596        Previously, attribute values were formatted according to the
597        normal SQL output behavior, which is sometimes at odds with
598        XML rules.
599       </para>
600      </listitem>
601
602      <listitem>
603       <para>
604        Rewrite memory management for <application>libxml</>-using functions
605        (Tom)
606       </para>
607
608       <para>
609        This change should avoid some compatibility problems with use of
610        <application>libxml</> in PL/Perl and other add-on code.
611       </para>
612      </listitem>
613
614      <listitem>
615       <para>
616        Adopt a faster algorithm for hash functions (Kenneth Marshall,
617        based on work of Bob Jenkins)
618       </para>
619
620       <para>
621        Many of the built-in hash functions now deliver different results on
622        little-endian and big-endian platforms.
623       </para>
624      </listitem>
625
626     </itemizedlist>
627
628     <sect4>
629      <title>Temporal Functions and Operators</title>
630
631      <itemizedlist>
632
633       <listitem>
634        <para>
635         <varname>DateStyle</> no longer controls <type>interval</> output
636         formatting; instead there is a new variable <varname>IntervalStyle</>
637         (Ron Mayer)
638        </para>
639       </listitem>
640
641       <listitem>
642        <para>
643         Improve consistency of handling of fractional seconds in
644         <type>timestamp</> and <type>interval</> output (Ron Mayer)
645        </para>
646
647        <para>
648         This may result in displaying a different number of fractional
649         digits than before, or rounding instead of truncating.
650        </para>
651       </listitem>
652
653       <listitem>
654        <para>
655         Make <function>to_char()</>'s localized month/day names depend
656         on <varname>LC_TIME</>, not <varname>LC_MESSAGES</> (Euler
657         Taveira de Oliveira)
658        </para>
659       </listitem>
660
661       <listitem>
662        <para>
663         Cause <function>to_date()</> and <function>to_timestamp()</>
664         to more consistently report errors for invalid input (Brendan
665         Jurd)
666        </para>
667
668        <para>
669         Previous versions would often ignore or silently misread input
670         that did not match the format string.  Such cases will now
671         result in an error.
672        </para>
673       </listitem>
674
675       <listitem>
676        <para>
677         Fix <function>to_timestamp()</> to not require upper/lower case
678         matching for meridian (<literal>AM</>/<literal>PM</>) and era
679         (<literal>BC</>/<literal>AD</>) format designations  (Brendan
680         Jurd)
681        </para>
682
683        <para>
684         For example, input value <literal>ad</> now matches the format
685         string <literal>AD</>.
686        </para>
687       </listitem>
688
689      </itemizedlist>
690
691     </sect4>
692
693    </sect3>
694
695   </sect2>
696
697   <sect2>
698    <title>Changes</title>
699
700    <para>
701     Below you will find a detailed account of the changes between
702     <productname>PostgreSQL</productname> 8.4 and the previous major
703     release.
704    </para>
705
706    <sect3>
707     <title>Performance</title>
708     <itemizedlist>
709
710      <listitem>
711       <para>
712        Improve optimizer statistics calculations (Jan Urbanski, Tom)
713       </para>
714
715       <para>
716        In particular, estimates for full-text-search operators are
717        greatly improved.
718       </para>
719      </listitem>
720
721      <listitem>
722       <para>
723        Allow <command>SELECT DISTINCT</> and
724        <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> to
725        use hashing (Tom)
726       </para>
727
728       <para>
729        This means that these types of queries no longer automatically
730        produce sorted output.
731       </para>
732      </listitem>
733
734      <listitem>
735       <para>
736        Create explicit concepts of semi-joins and anti-joins (Tom)
737       </para>
738
739       <para>
740        This work formalizes our previous ad-hoc treatment of <literal>IN
741        (SELECT ...)</> clauses, and extends it to <literal>EXISTS</> and
742        <literal>NOT EXISTS</> clauses.  It should result in significantly
743        better planning of <literal>EXISTS</> and <literal>NOT EXISTS</>
744        queries.  In general, logically equivalent <literal>IN</> and
745        <literal>EXISTS</> clauses should now have similar performance,
746        whereas previously <literal>IN</> often won.
747       </para>
748      </listitem>
749
750      <listitem>
751       <para>
752        Improve optimization of sub-selects beneath outer joins (Tom)
753       </para>
754
755       <para>
756        Formerly, a sub-select or view could not be optimized very well if it
757        appeared within the nullable side of an outer join and contained
758        non-strict expressions (for instance, constants) in its result list.
759       </para>
760      </listitem>
761
762      <listitem>
763       <para>
764        Improve the performance of <function>text_position()</> and
765        related functions by using Boyer-Moore-Horspool searching (David
766        Rowley)
767       </para>
768
769       <para>
770        This is particularly helpful for long search patterns.
771       </para>
772      </listitem>
773
774      <listitem>
775       <para>
776        Reduce I/O load of writing the statistics collection file
777        by writing the file only when requested (Martin Pihlak)
778       </para>
779      </listitem>
780
781      <listitem>
782       <para>
783        Improve performance for bulk inserts (Robert Haas, Simon)
784       </para>
785      </listitem>
786
787      <listitem>
788       <para>
789        Increase the default value of <varname>default_statistics_target</>
790        from <literal>10</> to <literal>100</> (Greg Sabino Mullane,
791        Tom)
792       </para>
793
794       <para>
795        The maximum value was also increased from <literal>1000</> to
796        <literal>10000</>.
797       </para>
798      </listitem>
799
800      <listitem>
801       <para>
802        Perform <varname>constraint_exclusion</> checking by default
803        in queries involving inheritance or <literal>UNION ALL</> (Tom)
804       </para>
805
806       <para>
807        A new <varname>constraint_exclusion</> setting,
808        <literal>partition</>, was added to specify this behavior.
809       </para>
810      </listitem>
811
812      <listitem>
813       <para>
814        Allow I/O read-ahead for bitmap index scans (Greg Stark)
815       </para>
816
817       <para>
818        The amount of read-ahead is controlled by
819        <varname>effective_io_concurrency</>.  This feature is available only
820        if the kernel has <function>posix_fadvise()</> support.
821       </para>
822      </listitem>
823
824      <listitem>
825       <para>
826        Inline simple set-returning <acronym>SQL</> functions in
827        <literal>FROM</> clauses (Richard Rowell)
828       </para>
829      </listitem>
830
831      <listitem>
832       <para>
833        Improve performance of multi-batch hash joins by providing a special
834        case for join key values that are especially common in the outer
835        relation (Bryce Cutt, Ramon Lawrence)
836       </para>
837      </listitem>
838
839      <listitem>
840       <para>
841        Reduce volume of temporary data in multi-batch hash joins
842        by suppressing <quote>physical tlist</> optimization (Michael
843        Henderson, Ramon Lawrence)
844       </para>
845      </listitem>
846
847      <listitem>
848       <para>
849        Avoid waiting for idle-in-transaction sessions during
850        <command>CREATE INDEX CONCURRENTLY</> (Simon)
851       </para>
852      </listitem>
853
854      <listitem>
855       <para>
856        Improve performance of shared cache invalidation (Tom)
857       </para>
858      </listitem>
859
860     </itemizedlist>
861
862    </sect3>
863
864    <sect3>
865     <title>Server</title>
866
867     <sect4>
868      <title>Settings</title>
869
870      <itemizedlist>
871
872       <listitem>
873        <para>
874         Convert many <filename>postgresql.conf</> settings to enumerated
875         values so that <literal>pg_settings</> can display the valid
876         values (Magnus)
877        </para>
878       </listitem>
879
880       <listitem>
881        <para>
882         Add <varname>cursor_tuple_fraction</> parameter to control the
883         fraction of a cursor's rows that the planner assumes will be
884         fetched (Robert Hell)
885        </para>
886       </listitem>
887
888       <listitem>
889        <para>
890         Allow underscores in the names of custom variable
891         classes in <filename>postgresql.conf</> (Tom)
892        </para>
893       </listitem>
894
895      </itemizedlist>
896
897     </sect4>
898
899     <sect4>
900      <title>Authentication and security</title>
901      <itemizedlist>
902
903       <listitem>
904        <para>
905         Remove support for the (insecure) <literal>crypt</> authentication method
906         (Magnus)
907        </para>
908
909        <para>
910         This effectively obsoletes pre-<productname>PostgreSQL</> 7.2 client
911         libraries, as there is no longer any non-plaintext password method that
912         they can use.
913        </para>
914       </listitem>
915
916       <listitem>
917        <para>
918         Support regular expressions in <filename>pg_ident.conf</>
919         (Magnus)
920        </para>
921       </listitem>
922
923       <listitem>
924        <para>
925         Allow <productname>Kerberos</>/<acronym>GSSAPI</> parameters
926         to be changed without restarting the postmaster (Magnus)
927        </para>
928       </listitem>
929
930       <listitem>
931        <para>
932         Support <acronym>SSL</> certificate chains in server certificate
933         file (Andrew Gierth)
934        </para>
935
936        <para>
937         Including the full certificate chain makes the client able
938         to verify the certificate without having all intermediate CA
939         certificates present in the local store, which is often the case for
940         commercial CAs.
941        </para>
942       </listitem>
943
944       <listitem>
945        <para>
946         Report appropriate error message for combination of <literal>MD5</>
947         authentication and <varname>db_user_namespace</> enabled (Bruce)
948        </para>
949       </listitem>
950      </itemizedlist>
951
952     </sect4>
953
954     <sect4 id="release-8-4-pg-hba-conf">
955      <title><filename>pg_hba.conf</></title>
956      <itemizedlist>
957
958       <listitem>
959        <para>
960         Change all authentication options to use <literal>name=value</>
961         syntax (Magnus)
962        </para>
963
964        <para>
965         This makes incompatible changes to the <literal>ldap</>,
966         <literal>pam</> and <literal>ident</> authentication methods. All
967         <filename>pg_hba.conf</> entries with these methods need to be
968         rewritten using the new format.
969        </para>
970       </listitem>
971
972       <listitem>
973        <para>
974         Remove the <literal>ident sameuser</> option, instead making that
975         behavior the default if no usermap is specified (Magnus)
976        </para>
977       </listitem>
978
979       <listitem>
980        <para>
981         Allow a usermap parameter for all external authentication methods
982         (Magnus)
983        </para>
984
985        <para>
986         Previously a usermap was only supported for <literal>ident</>
987         authentication.
988        </para>
989       </listitem>
990
991       <listitem>
992        <para>
993         Add <literal>clientcert</> option to control requesting of a
994         client certificate (Magnus)
995        </para>
996
997        <para>
998         Previously this was controlled by the presence of a root
999         certificate file in the server's data directory.
1000        </para>
1001       </listitem>
1002
1003       <listitem>
1004        <para>
1005         Add <literal>cert</> authentication method to allow
1006         <emphasis>user</> authentication via <acronym>SSL</> certificates
1007         (Magnus)
1008        </para>
1009
1010        <para>
1011         Previously <acronym>SSL</> certificates could only verify that
1012         the client had access to a certificate, not authenticate a
1013         user.
1014        </para>
1015       </listitem>
1016
1017       <listitem>
1018        <para>
1019         Allow <literal>krb5</>, <literal>gssapi</> and <literal>sspi</>
1020         realm and <literal>krb5</> host settings to be specified in
1021         <filename>pg_hba.conf</> (Magnus)
1022        </para>
1023
1024        <para>
1025         These override the settings in <filename>postgresql.conf</>.
1026        </para>
1027       </listitem>
1028
1029       <listitem>
1030        <para>
1031         Add <varname>include_realm</> parameter for <literal>krb5</>,
1032         <literal>gssapi</>, and <literal>sspi</> methods (Magnus)
1033        </para>
1034
1035        <para>
1036         This allows identical usernames from different realms to be
1037         authenticated as different database users using usermaps.
1038        </para>
1039       </listitem>
1040
1041       <listitem>
1042        <para>
1043         Parse <filename>pg_hba.conf</> fully when it is loaded,
1044         so that errors are reported immediately (Magnus)
1045        </para>
1046
1047        <para>
1048         Previously, most errors in the file wouldn't be detected until clients
1049         tried to connect, so an erroneous file could render the system
1050         unusable.  With the new behavior, if an error is detected during
1051         reload then the bad file is rejected and the postmaster continues
1052         to use its old copy.
1053        </para>
1054       </listitem>
1055
1056       <listitem>
1057        <para>
1058         Show all parsing errors in <filename>pg_hba.conf</> instead of
1059         aborting after the first one (Selena Deckelmann)
1060        </para>
1061       </listitem>
1062
1063       <listitem>
1064        <para>
1065         Support <literal>ident</> authentication over Unix-domain sockets
1066         on <productname>Solaris</> (Garick Hamlin)
1067        </para>
1068       </listitem>
1069
1070      </itemizedlist>
1071
1072     </sect4>
1073
1074     <sect4>
1075      <title>Continuous Archiving</title>
1076      <itemizedlist>
1077
1078       <listitem>
1079        <para>
1080         Provide an option to <function>pg_start_backup()</> to force its
1081         implied checkpoint to finish as quickly as possible (Tom)
1082        </para>
1083
1084        <para>
1085         The default behavior avoids excess I/O consumption, but that is
1086         pointless if no concurrent query activity is going on.
1087        </para>
1088       </listitem>
1089
1090       <listitem>
1091        <para>
1092         Make <function>pg_stop_backup()</> wait for modified <acronym>WAL</>
1093         files to be archived (Simon)
1094        </para>
1095
1096        <para>
1097         This guarantees that the backup is valid at the time
1098         <function>pg_stop_backup()</> completes.
1099        </para>
1100       </listitem>
1101
1102       <listitem>
1103        <para>
1104         When archiving is enabled, rotate the last WAL segment at shutdown
1105         so that all transactions can be archived immediately
1106         (Guillaume Smet, Heikki)
1107        </para>
1108       </listitem>
1109
1110       <listitem>
1111        <para>
1112         Delay <quote>smart</> shutdown while a continuous archiving base backup
1113         is in progress (Laurenz Albe)
1114        </para>
1115       </listitem>
1116
1117       <listitem>
1118        <para>
1119         Cancel a continuous archiving base backup if <quote>fast</> shutdown
1120         is requested (Laurenz Albe)
1121        </para>
1122       </listitem>
1123
1124       <listitem>
1125        <para>
1126         Allow <filename>recovery.conf</> boolean variables to take the
1127         same range of string values as <filename>postgresql.conf</>
1128         boolean variables
1129         (Bruce)
1130        </para>
1131       </listitem>
1132
1133      </itemizedlist>
1134
1135     </sect4>
1136
1137     <sect4>
1138      <title>Monitoring</title>
1139      <itemizedlist>
1140
1141       <listitem>
1142        <para>
1143         Add <function>pg_conf_load_time()</> to report when
1144         the <productname>PostgreSQL</> configuration files were last loaded
1145         (George Gensure)
1146        </para>
1147       </listitem>
1148
1149       <listitem>
1150        <para>
1151         Add <function>pg_terminate_backend()</> to safely terminate a
1152         backend (the <literal>SIGTERM</> signal works also) (Tom, Bruce)
1153        </para>
1154
1155        <para>
1156         While it's always been possible to <literal>SIGTERM</> a single
1157         backend, this was previously considered unsupported; and testing
1158         of the case found some bugs that are now fixed.
1159        </para>
1160       </listitem>
1161
1162       <listitem>
1163        <para>
1164         Add ability to track user-defined functions' call counts and
1165         runtimes (Martin Pihlak)
1166        </para>
1167
1168        <para>
1169         Function statistics appear in a new system view,
1170         <literal>pg_stat_user_functions</>.  Tracking is controlled
1171         by the new parameter <varname>track_functions</>.
1172        </para>
1173       </listitem>
1174
1175       <listitem>
1176        <para>
1177         Allow specification of the maximum query string size in
1178         <literal>pg_stat_activity</> via new
1179         <varname>track_activity_query_size</> parameter (Thomas Lee)
1180        </para>
1181       </listitem>
1182
1183       <listitem>
1184        <para>
1185         Increase the maximum line length sent to <application>syslog</>, in
1186         hopes of improving performance (Tom)
1187        </para>
1188       </listitem>
1189
1190       <listitem>
1191        <para>
1192         Add read-only configuration variables <varname>segment_size</>,
1193         <varname>wal_block_size</>, and <varname>wal_segment_size</>
1194         (Bernd Helmle)
1195        </para>
1196       </listitem>
1197
1198       <listitem>
1199        <para>
1200         When reporting a deadlock, report the text of all queries involved
1201         in the deadlock to the server log  (Itagaki Takahiro)
1202        </para>
1203       </listitem>
1204
1205       <listitem>
1206        <para>
1207         Add <function>pg_stat_get_activity(pid)</> function to return
1208         information about a specific process id (Magnus)
1209        </para>
1210       </listitem>
1211
1212       <listitem>
1213        <para>
1214         Allow the location of the server's statistics file to be specified
1215         via <varname>stats_temp_directory</> (Magnus)
1216        </para>
1217
1218        <para>
1219         This allows the statistics file to be placed in a
1220         <acronym>RAM</>-resident directory to reduce I/O requirements.
1221         On startup/shutdown, the file is copied to its traditional location
1222         (<literal>$PGDATA/global/</>) so it is preserved across restarts.
1223        </para>
1224       </listitem>
1225
1226      </itemizedlist>
1227
1228     </sect4>
1229
1230    </sect3>
1231
1232    <sect3>
1233     <title>Queries</title>
1234     <itemizedlist>
1235
1236      <listitem>
1237       <para>
1238        Add support for <literal>WINDOW</> functions (Hitoshi Harada)
1239       </para>
1240      </listitem>
1241
1242      <listitem>
1243       <para>
1244        Add support for <literal>WITH</> clauses (CTEs), including <literal>WITH
1245        RECURSIVE</> (Yoshiyuki Asaba, Tatsuo Ishii, Tom)
1246       </para>
1247      </listitem>
1248
1249      <listitem>
1250       <para>
1251        Add <command>TABLE</> command (Peter)
1252       </para>
1253
1254       <para>
1255        <literal>TABLE tablename</> is a SQL standard short-hand for
1256        <literal>SELECT * FROM tablename</>.
1257       </para>
1258      </listitem>
1259
1260      <listitem>
1261       <para>
1262        Allow <literal>AS</> to be optional when specifying a
1263        <command>SELECT</> (or <literal>RETURNING</>) column output
1264        label (Hiroshi Saito)
1265       </para>
1266
1267       <para>
1268        This works so long as the column label is not any
1269        <productname>PostgreSQL</> keyword; otherwise <literal>AS</> is still
1270        needed.
1271       </para>
1272      </listitem>
1273
1274      <listitem>
1275       <para>
1276        Support set-returning functions in <command>SELECT</> result lists
1277        even for functions that return their result via a tuplestore (Tom)
1278       </para>
1279
1280       <para>
1281        In particular, this means that functions written in PL/PgSQL
1282        and other PL languages can now be called this way.
1283       </para>
1284      </listitem>
1285
1286      <listitem>
1287       <para>
1288        Support set-returning functions in the output of aggregation
1289        and grouping queries (Tom)
1290       </para>
1291      </listitem>
1292
1293      <listitem>
1294       <para>
1295        Allow <command>SELECT FOR UPDATE</>/<literal>SHARE</> to work
1296        on inheritance trees (Tom)
1297       </para>
1298      </listitem>
1299
1300      <listitem>
1301       <para>
1302        Add infrastructure for <acronym>SQL/MED</> (Martin Pihlak,
1303        Peter)
1304       </para>
1305
1306       <para>
1307        There are no remote or external <acronym>SQL/MED</> capabilities
1308        yet, but this change provides a standardized and future-proof
1309        system for managing connection information for modules like
1310        <filename>dblink</> and <filename>plproxy</>.
1311       </para>
1312      </listitem>
1313
1314      <listitem>
1315       <para>
1316        Invalidate cached plans when referenced schemas, functions, operators,
1317        or operator classes are modified (Martin Pihlak, Tom)
1318       </para>
1319
1320       <para>
1321        This improves the system's ability to respond to on-the-fly
1322        DDL changes.
1323       </para>
1324      </listitem>
1325      <listitem>
1326       <para>
1327        Allow comparison of composite types and allow arrays of
1328        anonymous composite types (Tom)
1329       </para>
1330
1331       <para>
1332        This allows constructs such as
1333        <literal>row(1, 1.1) = any (array[row(7, 7.7), row(1, 1.0)])</>.
1334        This is particularly useful in recursive queries.
1335       </para>
1336      </listitem>
1337
1338      <listitem>
1339       <para>
1340        Add support for Unicode string literal and identifier specifications
1341        using code points, e.g. <literal>U&amp;'d\0061t\+000061'</>
1342        (Peter)
1343       </para>
1344      </listitem>
1345
1346      <listitem>
1347       <para>
1348        Reject <literal>\000</> in string literals and <command>COPY</> data
1349        (Tom)
1350       </para>
1351
1352       <para>
1353        Previously, this was accepted but had the effect of terminating
1354        the string contents.
1355       </para>
1356      </listitem>
1357
1358      <listitem>
1359       <para>
1360        Improve the parser's ability to report error locations (Tom)
1361       </para>
1362
1363       <para>
1364        An error location is now reported for many semantic errors,
1365        such as mismatched datatypes, that previously could not be localized.
1366       </para>
1367      </listitem>
1368
1369     </itemizedlist>
1370
1371     <sect4>
1372      <title><command>TRUNCATE</></title>
1373      <itemizedlist>
1374
1375       <listitem>
1376        <para>
1377         Support statement-level <literal>ON TRUNCATE</> triggers (Simon)
1378        </para>
1379       </listitem>
1380
1381       <listitem>
1382        <para>
1383         Add <literal>RESTART</>/<literal>CONTINUE IDENTITY</> options
1384         for <command>TRUNCATE TABLE</>
1385         (Zoltan Boszormenyi)
1386        </para>
1387
1388        <para>
1389         The start value of a sequence can be changed by <command>ALTER
1390         SEQUENCE START WITH</>.
1391        </para>
1392       </listitem>
1393
1394       <listitem>
1395        <para>
1396         Allow <command>TRUNCATE tab1, tab1</> to succeed (Bruce)
1397        </para>
1398       </listitem>
1399
1400       <listitem>
1401        <para>
1402         Add a separate <command>TRUNCATE</> permission (Robert Haas)
1403        </para>
1404       </listitem>
1405
1406      </itemizedlist>
1407
1408     </sect4>
1409
1410     <sect4>
1411      <title><command>EXPLAIN</></title>
1412      <itemizedlist>
1413
1414       <listitem>
1415        <para>
1416         Make <command>EXPLAIN VERBOSE</> show the output columns of each
1417         plan node (Tom)
1418        </para>
1419
1420        <para>
1421         Previously <command>EXPLAIN VERBOSE</> output an internal
1422         representation of the query plan.  (That behavior is now
1423         available via <varname>debug_print_plan</>.)
1424        </para>
1425       </listitem>
1426
1427       <listitem>
1428        <para>
1429         Make <command>EXPLAIN</> identify subplans and initplans with
1430         individual labels (Tom)
1431        </para>
1432       </listitem>
1433
1434       <listitem>
1435        <para>
1436         Make <command>EXPLAIN</> honor <varname>debug_print_plan</> (Tom)
1437        </para>
1438       </listitem>
1439
1440       <listitem>
1441        <para>
1442         Allow <command>EXPLAIN</> on <command>CREATE TABLE AS</> (Peter)
1443        </para>
1444       </listitem>
1445
1446      </itemizedlist>
1447
1448     </sect4>
1449
1450     <sect4>
1451      <title><literal>LIMIT</>/<literal>OFFSET</></title>
1452      <itemizedlist>
1453
1454       <listitem>
1455        <para>
1456         Allow sub-selects in <literal>LIMIT</> and <literal>OFFSET</> (Tom)
1457        </para>
1458       </listitem>
1459
1460       <listitem>
1461        <para>
1462         Add <acronym>SQL</>-standard syntax for
1463         <literal>LIMIT</>/<literal>OFFSET</> capabilities (Peter)
1464        </para>
1465
1466        <para>
1467         To wit,
1468         <literal>OFFSET num {ROW|ROWS} FETCH {FIRST|NEXT} [num] {ROW|ROWS}
1469         ONLY</>.
1470        </para>
1471       </listitem>
1472
1473      </itemizedlist>
1474
1475     </sect4>
1476
1477    </sect3>
1478
1479    <sect3>
1480     <title>Object Manipulation</title>
1481     <itemizedlist>
1482
1483      <listitem>
1484       <para>
1485        Add support for column-level privileges (Stephen Frost, KaiGai
1486        Kohei)
1487       </para>
1488      </listitem>
1489
1490      <listitem>
1491       <para>
1492        Refactor multi-object <command>DROP</> operations to reduce the
1493        need for <literal>CASCADE</> (Alex Hunsaker)
1494       </para>
1495
1496       <para>
1497        For example, if table <literal>B</> has a dependency on table
1498        <literal>A</>, the command <literal>DROP TABLE A, B</> no longer
1499        requires the <literal>CASCADE</> option.
1500       </para>
1501      </listitem>
1502
1503      <listitem>
1504       <para>
1505        Fix various problems with concurrent <command>DROP</> commands
1506        by ensuring that locks are taken before we begin to drop dependencies
1507        of an object (Tom)
1508       </para>
1509      </listitem>
1510
1511      <listitem>
1512       <para>
1513        Improve reporting of dependencies during <command>DROP</>
1514        commands (Tom)
1515       </para>
1516      </listitem>
1517
1518      <listitem>
1519       <para>
1520        Add <literal>WITH [NO] DATA</> clause to <command>CREATE TABLE
1521        AS</>, per the <acronym>SQL</> standard (Peter, Tom)
1522       </para>
1523      </listitem>
1524
1525      <listitem>
1526       <para>
1527        Add support for user-defined I/O conversion casts (Heikki)
1528       </para>
1529      </listitem>
1530
1531      <listitem>
1532       <para>
1533        Allow <command>CREATE AGGREGATE</> to use an <type>internal</>
1534        transition datatype (Tom)
1535       </para>
1536      </listitem>
1537
1538      <listitem>
1539       <para>
1540        Add <literal>LIKE</> clause to <command>CREATE TYPE</> (Tom)
1541       </para>
1542
1543       <para>
1544        This simplifies creation of data types that use the same internal
1545        representation as an existing type.
1546       </para>
1547      </listitem>
1548
1549      <listitem>
1550       <para>
1551        Allow specification of the type category and <quote>preferred</>
1552        status for user-defined base types (Tom)
1553       </para>
1554
1555       <para>
1556        This allows more control over the coercion behavior of user-defined
1557        types.
1558       </para>
1559      </listitem>
1560
1561      <listitem>
1562       <para>
1563        Allow <command>CREATE OR REPLACE VIEW</> to add columns to the
1564        end of a view (Robert Haas)
1565       </para>
1566      </listitem>
1567
1568     </itemizedlist>
1569
1570     <sect4>
1571      <title><command>ALTER</></title>
1572      <itemizedlist>
1573
1574       <listitem>
1575        <para>
1576         Add <command>ALTER TYPE RENAME</> (Petr Jelinek)
1577        </para>
1578       </listitem>
1579
1580       <listitem>
1581        <para>
1582         Add <command>ALTER SEQUENCE ... RESTART</> (with no parameter) to
1583         reset a sequence to its initial value (Zoltan Boszormenyi)
1584        </para>
1585       </listitem>
1586
1587       <listitem>
1588        <para>
1589         Modify the <command>ALTER TABLE</> syntax to allow all reasonable
1590         combinations for tables, indexes, sequences, and views (Tom)
1591        </para>
1592
1593        <para>
1594         This change allows the following new syntaxes:
1595
1596         <itemizedlist>
1597          <listitem>
1598           <para>
1599            <command>ALTER SEQUENCE OWNER TO</>
1600           </para>
1601          </listitem>
1602          <listitem>
1603           <para>
1604            <command>ALTER VIEW ALTER COLUMN SET/DROP DEFAULT</>
1605           </para>
1606          </listitem>
1607          <listitem>
1608           <para>
1609            <command>ALTER VIEW OWNER TO</>
1610           </para>
1611          </listitem>
1612          <listitem>
1613           <para>
1614            <command>ALTER VIEW SET SCHEMA</>
1615           </para>
1616          </listitem>
1617         </itemizedlist>
1618
1619         There is no actual new functionality here, but formerly
1620         you had to say <command>ALTER TABLE</> to do these things,
1621         which was confusing.
1622        </para>
1623       </listitem>
1624
1625       <listitem>
1626        <para>
1627         Add support for the syntax <command>ALTER TABLE ... ALTER COLUMN
1628         ... SET DATA TYPE</> (Peter)
1629        </para>
1630
1631        <para>
1632         This is <acronym>SQL</>-standard syntax for functionality that
1633         was already supported.
1634        </para>
1635       </listitem>
1636
1637       <listitem>
1638        <para>
1639         Make <command>ALTER TABLE SET WITHOUT OIDS</> rewrite the table
1640         to physically remove <type>OID</> values (Tom)
1641        </para>
1642
1643        <para>
1644         Also, add <command>ALTER TABLE SET WITH OIDS</> to rewrite the
1645         table to add <type>OID</>s.
1646        </para>
1647       </listitem>
1648
1649      </itemizedlist>
1650
1651     </sect4>
1652
1653     <sect4>
1654      <title>Database Manipulation</title>
1655      <itemizedlist>
1656
1657       <listitem>
1658        <para>
1659         Improve reporting of
1660         <command>CREATE</>/<command>DROP</>/<command>RENAME DATABASE</>
1661         failure when uncommitted prepared transactions are the cause
1662         (Tom)
1663        </para>
1664       </listitem>
1665
1666       <listitem>
1667        <para>
1668         Make <varname>LC_COLLATE</> and <varname>LC_CTYPE</> into
1669         per-database settings (Radek Strnad, Heikki)
1670        </para>
1671
1672        <para>
1673         This makes collation similar to encoding, which was always
1674         configurable per database.
1675        </para>
1676       </listitem>
1677
1678       <listitem>
1679        <para>
1680         Improve checks that the database encoding, collation
1681         (<varname>LC_COLLATE</>), and character classes
1682         (<varname>LC_CTYPE</>) match (Heikki, Tom)
1683        </para>
1684
1685        <para>
1686         Note in particular that a new database's encoding and locale
1687         settings can be changed only when copying from <literal>template0</>.
1688         This prevents possibly copying data that doesn't match the settings.
1689        </para>
1690       </listitem>
1691
1692       <listitem>
1693        <para>
1694         Add <command>ALTER DATABASE SET TABLESPACE</> to move a database
1695         to a new tablespace (Guillaume Lelarge, Bernd Helmle)
1696        </para>
1697       </listitem>
1698
1699      </itemizedlist>
1700
1701     </sect4>
1702
1703    </sect3>
1704
1705    <sect3>
1706     <title>Utility Operations</title>
1707
1708     <itemizedlist>
1709
1710      <listitem>
1711       <para>
1712        Add a <literal>VERBOSE</> option to the <command>CLUSTER</> command and
1713        <application>clusterdb</> (Jim Cox)
1714       </para>
1715      </listitem>
1716
1717      <listitem>
1718       <para>
1719        Decrease memory requirements for recording pending trigger
1720        events (Tom)
1721       </para>
1722      </listitem>
1723
1724     </itemizedlist>
1725
1726     <sect4>
1727      <title>Indexes</title>
1728      <itemizedlist>
1729
1730       <listitem>
1731        <para>
1732         Dramatically improve the speed of building and accessing hash
1733         indexes (Tom Raney, Shreya Bhargava)
1734        </para>
1735
1736        <para>
1737         This allows hash indexes to be sometimes faster than btree
1738         indexes.  However, hash indexes are still not crash-safe.
1739        </para>
1740       </listitem>
1741
1742       <listitem>
1743        <para>
1744         Make hash indexes store only the hash code, not the full value of
1745         the indexed column (Xiao Meng)
1746        </para>
1747
1748        <para>
1749         This greatly reduces the size of hash indexes for long indexed
1750         values, improving performance.
1751        </para>
1752       </listitem>
1753
1754       <listitem>
1755        <para>
1756         Implement fast update option for GIN indexes (Teodor, Oleg)
1757        </para>
1758
1759        <para>
1760         This option greatly improves update speed at a small penalty in search
1761         speed.
1762        </para>
1763       </listitem>
1764
1765       <listitem>
1766        <para>
1767         <literal>xxx_pattern_ops</> indexes can now be used for simple
1768         equality comparisons, not only for <literal>LIKE</> (Tom)
1769        </para>
1770       </listitem>
1771
1772      </itemizedlist>
1773
1774     </sect4>
1775
1776     <sect4>
1777      <title>Full Text Indexes</title>
1778      <itemizedlist>
1779
1780       <listitem>
1781        <para>
1782         Remove the requirement to use <literal>@@@</> when doing
1783         <acronym>GIN</> weighted lookups on full text indexes (Tom, Teodor)
1784        </para>
1785
1786        <para>
1787         The normal <literal>@@</> text search operator can be used
1788         instead.
1789        </para>
1790       </listitem>
1791
1792       <listitem>
1793        <para>
1794         Add an optimizer selectivity function for <literal>@@</> text
1795         search operations (Jan Urbanski)
1796        </para>
1797       </listitem>
1798
1799       <listitem>
1800        <para>
1801         Allow prefix matching in full text searches (Teodor Sigaev,
1802         Oleg Bartunov)
1803        </para>
1804       </listitem>
1805
1806       <listitem>
1807        <para>
1808         Support multi-column <acronym>GIN</> indexes (Teodor Sigaev)
1809        </para>
1810       </listitem>
1811
1812       <listitem>
1813        <para>
1814         Improve support for Nepali language and Devanagari alphabet (Teodor)
1815        </para>
1816       </listitem>
1817
1818      </itemizedlist>
1819
1820     </sect4>
1821
1822     <sect4>
1823      <title><command>VACUUM</></title>
1824      <itemizedlist>
1825
1826       <listitem>
1827        <para>
1828         Track free space in separate per-relation <quote>fork</> files (Heikki)
1829        </para>
1830
1831        <para>
1832         Free space discovered by <command>VACUUM</> is now recorded in
1833         <filename>*_fsm</> files, rather than in a fixed-sized shared memory
1834         area.  The <varname>max_fsm_pages</> and <varname>max_fsm_relations</>
1835         settings have been removed, greatly simplifying administration of
1836         free space management.
1837        </para>
1838       </listitem>
1839
1840       <listitem>
1841        <para>
1842         Add a visibility map to track pages that do not require
1843         vacuuming (Heikki)
1844        </para>
1845
1846        <para>
1847         This allows <command>VACUUM</> to avoid scanning all of
1848         a table when only a portion of the table needs vacuuming.
1849         The visibility map is stored in per-relation <quote>fork</> files.
1850        </para>
1851       </listitem>
1852
1853       <listitem>
1854        <para>
1855         Add <varname>vacuum_freeze_table_age</> parameter to control
1856         when <command>VACUUM</> should ignore the visibility map and
1857         do a full table scan to freeze tuples (Heikki)
1858        </para>
1859       </listitem>
1860
1861       <listitem>
1862        <para>
1863         Track transaction snapshots more carefully (Alvaro)
1864        </para>
1865
1866        <para>
1867         This improves <command>VACUUM</>'s ability to reclaim space
1868         in the presence of long-running transactions.
1869        </para>
1870       </listitem>
1871
1872       <listitem>
1873        <para>
1874         Add ability to specify per-relation autovacuum and <acronym>TOAST</>
1875         parameters in <command>CREATE TABLE</> (Alvaro, Euler Taveira de
1876         Oliveira)
1877        </para>
1878
1879        <para>
1880         Autovacuum options used to be stored in a system table.
1881        </para>
1882       </listitem>
1883
1884       <listitem>
1885        <para>
1886         Add <literal>--freeze</> option to <application>vacuumdb</>
1887         (Bruce)
1888        </para>
1889       </listitem>
1890
1891      </itemizedlist>
1892
1893     </sect4>
1894
1895    </sect3>
1896
1897    <sect3>
1898     <title>Data Types</title>
1899     <itemizedlist>
1900
1901      <listitem>
1902       <para>
1903        Add a <literal>CaseSensitive</> option for text search synonym
1904        dictionaries (Simon)
1905       </para>
1906      </listitem>
1907
1908      <listitem>
1909       <para>
1910        Improve the precision of <type>NUMERIC</> division (Tom)
1911       </para>
1912      </listitem>
1913
1914      <listitem>
1915       <para>
1916        Add basic arithmetic operators for <type>int2</> with <type>int8</>
1917        (Tom)
1918       </para>
1919
1920       <para>
1921        This eliminates the need for explicit casting in some situations.
1922       </para>
1923      </listitem>
1924
1925      <listitem>
1926       <para>
1927        Allow <type>UUID</> input to accept an optional hyphen after
1928        every fourth digit (Robert Haas)
1929       </para>
1930      </listitem>
1931
1932      <listitem>
1933       <para>
1934        Allow <literal>on</>/<literal>off</> as input for the boolean data type
1935        (Itagaki Takahiro)
1936       </para>
1937      </listitem>
1938
1939      <listitem>
1940       <para>
1941        Allow spaces around <literal>NaN</> in the input string for
1942        type <type>numeric</> (Sam Mason)
1943       </para>
1944      </listitem>
1945
1946     </itemizedlist>
1947
1948     <sect4>
1949      <title>Temporal Data Types</title>
1950      <itemizedlist>
1951
1952       <listitem>
1953        <para>
1954         Reject year <literal>0 BC</> and years <literal>000</> and
1955         <literal>0000</> (Tom)
1956        </para>
1957
1958        <para>
1959         Previously these were interpreted as <literal>1 BC</>.
1960         (Note: years <literal>0</> and <literal>00</> are still assumed to be
1961         the year 2000.)
1962        </para>
1963       </listitem>
1964
1965       <listitem>
1966        <para>
1967         Include <literal>SGT</> (Singapore time) in the default list of
1968         known time zone abbreviations (Tom)
1969        </para>
1970       </listitem>
1971
1972       <listitem>
1973        <para>
1974         Support <literal>infinity</> and <literal>-infinity</> as
1975         values of type <type>date</> (Tom)
1976        </para>
1977       </listitem>
1978
1979       <listitem>
1980        <para>
1981         Make parsing of <type>interval</> literals more standard-compliant
1982         (Tom, Ron Mayer)
1983        </para>
1984
1985        <para>
1986         For example, <literal>INTERVAL '1' YEAR</> now does what it's
1987         supposed to.
1988        </para>
1989       </listitem>
1990
1991       <listitem>
1992        <para>
1993         Allow <type>interval</> fractional-seconds precision to be specified
1994         after the <literal>second</> keyword, for <acronym>SQL</> standard
1995         compliance (Tom)
1996        </para>
1997
1998        <para>
1999         Formerly the precision had to be specified after the keyword
2000         <type>interval</>.  (For backwards compatibility, this syntax is still
2001         supported, though deprecated.)  Data type definitions will now be
2002         output using the standard format.
2003        </para>
2004       </listitem>
2005
2006       <listitem>
2007        <para>
2008         Support the <acronym>IS0 8601</> <type>interval</> syntax (Ron
2009         Mayer, Kevin Grittner)
2010        </para>
2011
2012        <para>
2013         For example, <literal>INTERVAL 'P1Y2M3DT4H5M6.7S'</> is now
2014         supported.
2015        </para>
2016       </listitem>
2017
2018       <listitem>
2019        <para>
2020         Add <varname>IntervalStyle</> parameter
2021         which controls how <type>interval</> values are output (Ron Mayer)
2022        </para>
2023
2024        <para>
2025         Valid values are:  <literal>postgres</>, <literal>postgres_verbose</>,
2026         <literal>sql_standard</>, <literal>iso_8601</>.  This setting also
2027         controls the handling of negative <type>interval</> input when only
2028         some fields have positive/negative designations.
2029        </para>
2030       </listitem>
2031
2032       <listitem>
2033        <para>
2034         Improve consistency of handling of fractional seconds in
2035         <type>timestamp</> and <type>interval</> output (Ron Mayer)
2036        </para>
2037       </listitem>
2038
2039      </itemizedlist>
2040
2041     </sect4>
2042
2043     <sect4>
2044      <title>Arrays</title>
2045      <itemizedlist>
2046
2047       <listitem>
2048        <para>
2049         Improve the handling of casts applied to <literal>ARRAY[]</>
2050         constructs, such as <literal>ARRAY[...]::integer[]</>
2051         (Brendan Jurd)
2052        </para>
2053
2054        <para>
2055         Formerly <productname>PostgreSQL</> attempted to determine a data type
2056         for the <literal>ARRAY[]</> construct without reference to the ensuing
2057         cast.  This could fail unnecessarily in many cases, in particular when
2058         the <literal>ARRAY[]</> construct was empty or contained only
2059         ambiguous entries such as <literal>NULL</>.  Now the cast is consulted
2060         to determine the type that the array elements must be.
2061        </para>
2062       </listitem>
2063
2064       <listitem>
2065        <para>
2066         Make <acronym>SQL</>-syntax <type>ARRAY</> dimensions optional
2067         to match the <acronym>SQL</> standard (Peter)
2068        </para>
2069       </listitem>
2070
2071       <listitem>
2072        <para>
2073         Add <function>array_ndims()</> to return the number
2074         of dimensions of an array (Robert Haas)
2075        </para>
2076       </listitem>
2077
2078       <listitem>
2079        <para>
2080         Add <function>array_length()</> to return the length
2081         of an array for a specified dimension (Jim Nasby, Robert
2082         Haas, Peter Eisentraut)
2083        </para>
2084       </listitem>
2085
2086       <listitem>
2087        <para>
2088         Add aggregate function <function>array_agg()</>, which
2089         returns all aggregated values as a single array (Robert Haas,
2090         Jeff Davis, Peter)
2091        </para>
2092       </listitem>
2093
2094       <listitem>
2095        <para>
2096         Add <function>unnest()</>, which converts an array to
2097         individual row values (Tom)
2098        </para>
2099
2100        <para>
2101         This is the opposite of <function>array_agg()</>.
2102        </para>
2103       </listitem>
2104
2105       <listitem>
2106        <para>
2107         Add <function>array_fill()</> to create arrays initialized with
2108         a value (Pavel Stehule)
2109        </para>
2110       </listitem>
2111
2112       <listitem>
2113        <para>
2114         Add <function>generate_subscripts()</> to simplify generating
2115         the range of an array's subscripts (Pavel Stehule)
2116        </para>
2117       </listitem>
2118
2119      </itemizedlist>
2120
2121     </sect4>
2122
2123     <sect4>
2124      <title>Wide-Value Storage (<acronym>TOAST</>)</title>
2125      <itemizedlist>
2126
2127       <listitem>
2128        <para>
2129         Consider <acronym>TOAST</> compression on values as short as
2130         32 bytes (previously 256 bytes) (Greg Stark)
2131        </para>
2132       </listitem>
2133
2134       <listitem>
2135        <para>
2136         Require 25% minimum space savings before using <acronym>TOAST</>
2137         compression (previously 20% for small values and any-savings-at-all
2138         for large values) (Greg)
2139        </para>
2140       </listitem>
2141
2142       <listitem>
2143        <para>
2144         Improve <acronym>TOAST</> heuristics for rows that have a mix of large
2145         and small toastable fields, so that we prefer to push large values out
2146         of line and don't compress small values unnecessarily (Greg, Tom)
2147        </para>
2148       </listitem>
2149
2150      </itemizedlist>
2151
2152     </sect4>
2153
2154    </sect3>
2155
2156    <sect3>
2157     <title>Functions</title>
2158     <itemizedlist>
2159
2160      <listitem>
2161       <para>
2162        Document that <function>setseed()</> allows values from
2163        <literal>-1</> to <literal>1</> (not just <literal>0</> to
2164        <literal>1</>), and enforce the valid range (Kris Jurka)
2165       </para>
2166      </listitem>
2167
2168      <listitem>
2169       <para>
2170        Add server-side function <function>lo_import(filename, oid)</>
2171        (Tatsuo)
2172       </para>
2173      </listitem>
2174
2175      <listitem>
2176       <para>
2177        Add <function>quote_nullable()</>, which behaves like
2178        <function>quote_literal()</> but returns the string <literal>NULL</> for
2179        a null argument (Brendan Jurd)
2180       </para>
2181      </listitem>
2182
2183      <listitem>
2184       <para>
2185        Improve full text search <function>headline()</> function to
2186        allow extracting several fragments of text (Sushant Sinha)
2187       </para>
2188      </listitem>
2189
2190      <listitem>
2191       <para>
2192        Add <function>suppress_redundant_updates_trigger()</> trigger
2193        function to avoid overhead for non-data-changing updates (Andrew)
2194       </para>
2195      </listitem>
2196
2197      <listitem>
2198       <para>
2199        Add <function>div(numeric, numeric)</> to perform <type>numeric</>
2200        division without rounding (Tom)
2201       </para>
2202      </listitem>
2203
2204      <listitem>
2205       <para>
2206        Add <type>timestamp</> and <type>timestamptz</> versions of
2207        <function>generate_series()</> (Hitoshi Harada)
2208       </para>
2209      </listitem>
2210
2211     </itemizedlist>
2212
2213     <sect4>
2214      <title>Object Information Functions</title>
2215      <itemizedlist>
2216
2217       <listitem>
2218        <para>
2219         Implement <function>current_query()</> for use by functions
2220         that need to know the currently running query (Tomas Doran)
2221        </para>
2222       </listitem>
2223
2224       <listitem>
2225        <para>
2226         Add <function>pg_get_keywords()</> to return a list of the
2227         parser keywords (Dave Page)
2228        </para>
2229       </listitem>
2230
2231       <listitem>
2232        <para>
2233         Add <function>pg_get_functiondef()</> to see a function's
2234         definition (Abhijit Menon-Sen)
2235        </para>
2236       </listitem>
2237
2238       <listitem>
2239        <para>
2240         Allow the second argument of <function>pg_get_expr()</> to be zero
2241         when deparsing an expression that does not contain variables (Tom)
2242        </para>
2243       </listitem>
2244
2245       <listitem>
2246        <para>
2247         Modify <function>pg_relation_size()</> to use <literal>regclass</>
2248         (Heikki)
2249        </para>
2250
2251        <para>
2252         <function>pg_relation_size(data_type_name)</> no longer works.
2253        </para>
2254       </listitem>
2255
2256       <listitem>
2257        <para>
2258         Add <literal>boot_val</> and <literal>reset_val</> columns to
2259         <literal>pg_settings</> output (Greg Smith)
2260        </para>
2261       </listitem>
2262
2263       <listitem>
2264        <para>
2265         Add source file name and line number columns to
2266         <literal>pg_settings</> output for variables set in a configuration
2267         file (Magnus, Alvaro)
2268        </para>
2269
2270        <para>
2271         For security reasons, these columns are only visible to superusers.
2272        </para>
2273       </listitem>
2274
2275       <listitem>
2276        <para>
2277         Add support for <varname>CURRENT_CATALOG</>,
2278         <varname>CURRENT_SCHEMA</>, <varname>SET CATALOG</>, <varname>SET
2279         SCHEMA</> (Peter)
2280        </para>
2281
2282        <para>
2283         These provide <acronym>SQL</>-standard syntax for existing features.
2284        </para>
2285       </listitem>
2286
2287       <listitem>
2288        <para>
2289         Add <function>pg_typeof()</> which returns the data type
2290         of any value (Brendan Jurd)
2291        </para>
2292       </listitem>
2293
2294       <listitem>
2295        <para>
2296         Make <function>version()</> return information about whether
2297         the server is a 32- or 64-bit binary (Bruce)
2298        </para>
2299       </listitem>
2300
2301       <listitem>
2302        <para>
2303         Fix the behavior of information schema columns
2304         <structfield>is_insertable_into</> and <structfield>is_updatable</> to
2305         be consistent (Peter)
2306        </para>
2307       </listitem>
2308
2309       <listitem>
2310        <para>
2311         Improve the behavior of information schema
2312         <structfield>datetime_precision</> columns (Peter)
2313        </para>
2314
2315        <para>
2316         These columns now show zero for <type>date</> columns, and 6
2317         (the default precision) for <type>time</>, <type>timestamp</>, and
2318         <type>interval</> without a declared precision, rather than showing
2319         null as formerly.
2320        </para>
2321       </listitem>
2322
2323       <listitem>
2324        <para>
2325         Convert remaining builtin set-returning functions to use
2326         <literal>OUT</> parameters (Jaime Casanova)
2327        </para>
2328
2329        <para>
2330         This makes it possible to call these functions without specifying
2331         a column list:  <function>pg_show_all_settings()</>,
2332         <function>pg_lock_status()</>, <function>pg_prepared_xact()</>,
2333         <function>pg_prepared_statement()</>, <function>pg_cursor()</>
2334        </para>
2335       </listitem>
2336
2337       <listitem>
2338        <para>
2339         Make <function>pg_*_is_visible()</> and
2340         <function>has_*_privilege()</> functions return <literal>NULL</>
2341         for invalid OIDs, rather than reporting an error (Tom)
2342        </para>
2343       </listitem>
2344
2345       <listitem>
2346        <para>
2347         Extend <function>has_*_privilege()</> functions to allow inquiring
2348         about the OR of multiple privileges in one call (Stephen
2349         Frost, Tom)
2350        </para>
2351       </listitem>
2352
2353       <listitem>
2354        <para>
2355         Add <function>has_column_privilege()</> and
2356         <function>has_any_column_privilege()</> functions (Stephen
2357         Frost, Tom)
2358        </para>
2359       </listitem>
2360
2361      </itemizedlist>
2362
2363     </sect4>
2364
2365     <sect4>
2366      <title>Function Creation</title>
2367      <itemizedlist>
2368
2369       <listitem>
2370        <para>
2371         Support variadic functions (functions with a variable number
2372         of arguments) (Pavel Stehule)
2373        </para>
2374
2375        <para>
2376         Only trailing arguments can be optional, and they all must be
2377         of the same data type.
2378        </para>
2379       </listitem>
2380
2381       <listitem>
2382        <para>
2383         Support default values for function arguments (Pavel Stehule)
2384        </para>
2385       </listitem>
2386
2387       <listitem>
2388        <para>
2389         Add <command>CREATE FUNCTION ... RETURNS TABLE</> clause (Pavel
2390         Stehule)
2391        </para>
2392       </listitem>
2393
2394       <listitem>
2395        <para>
2396         Allow <acronym>SQL</>-language functions to return the output
2397         of an <command>INSERT</>/<command>UPDATE</>/<command>DELETE</>
2398         <literal>RETURNING</> clause (Tom)
2399        </para>
2400       </listitem>
2401
2402      </itemizedlist>
2403
2404     </sect4>
2405
2406     <sect4>
2407      <title>PL/PgSQL Server-Side Language</title>
2408      <itemizedlist>
2409
2410       <listitem>
2411        <para>
2412         Support <literal>EXECUTE USING</> for easier insertion of data
2413         values into a dynamic query string (Pavel Stehule)
2414        </para>
2415       </listitem>
2416
2417       <listitem>
2418        <para>
2419         Allow looping over the results of a cursor using a <literal>FOR</>
2420         loop (Pavel Stehule)
2421        </para>
2422       </listitem>
2423
2424       <listitem>
2425        <para>
2426         Support <literal>RETURN QUERY EXECUTE</> (Pavel
2427         Stehule)
2428        </para>
2429       </listitem>
2430
2431       <listitem>
2432        <para>
2433         Improve the <literal>RAISE</> command (Pavel Stehule)
2434
2435         <itemizedlist>
2436          <listitem>
2437           <para>
2438            Support <literal>DETAIL</> and <literal>HINT</> fields
2439           </para>
2440          </listitem>
2441          <listitem>
2442           <para>
2443            Support specification of the <literal>SQLSTATE</> error code
2444           </para>
2445          </listitem>
2446          <listitem>
2447           <para>
2448            Support an exception name parameter
2449           </para>
2450          </listitem>
2451          <listitem>
2452           <para>
2453            Allow <literal>RAISE</> without parameters in an exception
2454            block to re-throw the current error
2455           </para>
2456          </listitem>
2457         </itemizedlist>
2458        </para>
2459       </listitem>
2460
2461       <listitem>
2462        <para>
2463         Allow specification of <varname>SQLSTATE</> codes
2464         in <literal>EXCEPTION</> lists (Pavel Stehule)
2465        </para>
2466
2467        <para>
2468         This is useful for handling custom <varname>SQLSTATE</> codes.
2469        </para>
2470       </listitem>
2471
2472       <listitem>
2473        <para>
2474         Support the <literal>CASE</> statement (Pavel Stehule)
2475        </para>
2476       </listitem>
2477
2478       <listitem>
2479        <para>
2480         Make <command>RETURN QUERY</> set the special <literal>FOUND</> and
2481         <command>GET DIAGNOSTICS</> <literal>ROW_COUNT</> variables
2482         (Pavel Stehule)
2483        </para>
2484       </listitem>
2485
2486       <listitem>
2487        <para>
2488         Make <command>FETCH</> and <command>MOVE</> set the
2489         <command>GET DIAGNOSTICS</> <literal>ROW_COUNT</> variable
2490         (Andrew Gierth)
2491        </para>
2492       </listitem>
2493
2494       <listitem>
2495        <para>
2496         Make <command>EXIT</> without a label always exit the innermost
2497         loop (Tom)
2498        </para>
2499
2500        <para>
2501         Formerly, if there were a <literal>BEGIN</> block more closely nested
2502         than any loop, it would exit that block instead.  The new behavior
2503         matches Oracle(TM) and is also what was previously stated by our own
2504         documentation.
2505        </para>
2506       </listitem>
2507
2508       <listitem>
2509        <para>
2510         Make processing of string literals and nested block comments
2511         match the main SQL parser's processing (Tom)
2512        </para>
2513
2514        <para>
2515         In particular, the format string in <command>RAISE</> now works
2516         the same as any other string literal, including being subject
2517         to <varname>standard_conforming_strings</>.  This change also
2518         fixes other cases in which valid commands would fail when
2519         <varname>standard_conforming_strings</> is on.
2520        </para>
2521       </listitem>
2522
2523       <listitem>
2524        <para>
2525         Avoid memory leakage when the same function is called at varying
2526         exception-block nesting depths (Tom)
2527        </para>
2528       </listitem>
2529
2530      </itemizedlist>
2531
2532     </sect4>
2533
2534    </sect3>
2535
2536    <sect3>
2537     <title>Client Applications</title>
2538
2539     <itemizedlist>
2540
2541      <listitem>
2542       <para>
2543        Fix <literal>pg_ctl restart</> to preserve command-line arguments
2544        (Bruce)
2545       </para>
2546      </listitem>
2547
2548      <listitem>
2549       <para>
2550        Add <literal>-w</>/<literal>--no-password</> option that
2551        prevents password prompting in all utilities that have a
2552        <literal>-W</>/<literal>--password</> option (Peter)
2553       </para>
2554      </listitem>
2555
2556      <listitem>
2557       <para>
2558        Remove <option>-q</> (quiet) option of <application>createdb</>,
2559        <application>createuser</>, <application>dropdb</>,
2560        <application>dropuser</> (Peter)
2561       </para>
2562
2563       <para>
2564        These options have had no effect since <productname>PostgreSQL</>
2565        8.3.
2566       </para>
2567      </listitem>
2568
2569     </itemizedlist>
2570
2571     <sect4>
2572      <title><application>psql</></title>
2573      <itemizedlist>
2574
2575       <listitem>
2576        <para>
2577         Remove verbose startup banner; now just suggest <literal>help</>
2578         (Joshua Drake)
2579        </para>
2580       </listitem>
2581
2582       <listitem>
2583        <para>
2584         Make <literal>help</> show common backslash commands (Greg
2585         Sabino Mullane)
2586        </para>
2587       </listitem>
2588
2589       <listitem>
2590        <para>
2591         Add <literal>\pset format wrapped</> mode to wrap output to the
2592         screen width, or file/pipe output too if <literal>\pset columns</>
2593         is set (Bryce Nesbitt)
2594        </para>
2595       </listitem>
2596
2597       <listitem>
2598        <para>
2599         Allow all supported spellings of boolean values in <command>\pset</>,
2600         rather than just <literal>on</> and <literal>off</> (Bruce)
2601        </para>
2602
2603        <para>
2604         Formerly, any string other than <quote>off</> was silently taken
2605         to mean <literal>true</>.  <application>psql</> will now complain
2606         about unrecognized spellings (but still take them as <literal>true</>).
2607        </para>
2608       </listitem>
2609
2610       <listitem>
2611        <para>
2612         Use the pager for wide output (Bruce)
2613        </para>
2614       </listitem>
2615
2616       <listitem>
2617        <para>
2618         Require a space between a one-letter backslash command and its first
2619         argument (Bernd Helmle)
2620        </para>
2621
2622        <para>
2623         This removes a historical source of ambiguity.
2624        </para>
2625       </listitem>
2626
2627       <listitem>
2628        <para>
2629         Improve tab completion support for schema-qualified and
2630         quoted identifiers (Greg Sabino Mullane)
2631        </para>
2632       </listitem>
2633
2634       <listitem>
2635        <para>
2636         Add optional <literal>on</>/<literal>off</> argument for
2637         <command>\timing</> (David Fetter)
2638        </para>
2639       </listitem>
2640
2641       <listitem>
2642        <para>
2643         Display access control rights on multiple lines (Brendan
2644         Jurd, Andreas Scherbaum)
2645        </para>
2646       </listitem>
2647
2648       <listitem>
2649        <para>
2650         Make <command>\l</> show database access privileges (Andrew Gilligan)
2651        </para>
2652       </listitem>
2653
2654       <listitem>
2655        <para>
2656         Make <command>\l+</> show database sizes, if permissions
2657         allow (Andrew Gilligan)
2658        </para>
2659       </listitem>
2660
2661       <listitem>
2662        <para>
2663         Add the <command>\ef</> command to edit function definitions
2664         (Abhijit Menon-Sen)
2665        </para>
2666       </listitem>
2667
2668      </itemizedlist>
2669
2670     </sect4>
2671
2672     <sect4>
2673      <title><application>psql</> \d* commands</title>
2674
2675      <itemizedlist>
2676
2677       <listitem>
2678        <para>
2679         Make <command>\d*</> commands that do not have a pattern argument
2680         show system objects only if the <literal>S</> modifier is specified
2681         (Greg Sabino Mullane, Bruce)
2682        </para>
2683
2684        <para>
2685         The former behavior was inconsistent across different variants
2686         of <command>\d</>, and in most cases it provided no easy way to see
2687         just user objects.
2688        </para>
2689       </listitem>
2690
2691       <listitem>
2692        <para>
2693         Improve <command>\d*</> commands to work with older
2694         <productname>PostgreSQL</> server versions (back to 7.4),
2695         not only the current server version
2696         (Guillaume Lelarge)
2697        </para>
2698       </listitem>
2699
2700       <listitem>
2701        <para>
2702         Make <command>\d</> show foreign-key constraints that reference
2703         the selected table (Kenneth D'Souza)
2704        </para>
2705       </listitem>
2706
2707       <listitem>
2708        <para>
2709         Make <command>\d</> on a sequence show its column values
2710         (Euler Taveira de Oliveira)
2711        </para>
2712       </listitem>
2713
2714       <listitem>
2715        <para>
2716         Add column storage type and other relation options to the
2717         <command>\d+</> display (Gregory Stark, Euler Taveira de
2718         Oliveira)
2719        </para>
2720       </listitem>
2721
2722       <listitem>
2723        <para>
2724         Show relation size in <command>\dt+</> output (Dickson S.
2725         Guedes)
2726        </para>
2727       </listitem>
2728
2729       <listitem>
2730        <para>
2731         Show the possible values of <literal>enum</> types in <command>\dT+</>
2732         (David Fetter)
2733        </para>
2734       </listitem>
2735
2736       <listitem>
2737        <para>
2738         Allow <command>\dC</> to accept a wildcard pattern, which matches
2739         either datatype involved in the cast (Tom)
2740        </para>
2741       </listitem>
2742
2743       <listitem>
2744        <para>
2745         Add a function type column to <command>\df</>'s output, and add
2746         options to list only selected types of functions (David Fetter)
2747        </para>
2748       </listitem>
2749
2750       <listitem>
2751        <para>
2752         Make <command>\df</> not hide functions that take or return
2753         type <type>cstring</> (Tom)
2754        </para>
2755
2756        <para>
2757         Previously, such functions were hidden because most of them are
2758         datatype I/O functions, which were deemed uninteresting.  The new
2759         policy about hiding system functions by default makes this wart
2760         unnecessary.
2761        </para>
2762       </listitem>
2763
2764      </itemizedlist>
2765
2766     </sect4>
2767
2768     <sect4>
2769      <title><application>pg_dump</></title>
2770      <itemizedlist>
2771
2772       <listitem>
2773        <para>
2774         Add a <literal>--no-tablespaces</> option to
2775         <application>pg_dump</>/<application>pg_dumpall</>/<application>pg_restore</>
2776         so that dumps can be restored to clusters that have non-matching
2777         tablespace layouts (Gavin Roy)
2778        </para>
2779       </listitem>
2780
2781       <listitem>
2782        <para>
2783         Remove <option>-d</> and <option>-D</> options from
2784         <application>pg_dump</> and <application>pg_dumpall</> (Tom)
2785        </para>
2786
2787        <para>
2788         These options were too frequently confused with the option to
2789         select a database name in other <productname>PostgreSQL</>
2790         client applications.  The functionality is still available,
2791         but you must now spell out the long option name
2792         <option>--inserts</> or <option>--column-inserts</>.
2793        </para>
2794       </listitem>
2795
2796       <listitem>
2797        <para>
2798         Remove <option>-i</>/<option>--ignore-version</> option from
2799         <application>pg_dump</> and <application>pg_dumpall</> (Tom)
2800        </para>
2801
2802        <para>
2803         Use of this option does not throw an error, but it has no
2804         effect.  This option was removed because the version checks
2805         are necessary for safety.
2806        </para>
2807       </listitem>
2808
2809       <listitem>
2810        <para>
2811         Disable <varname>statement_timeout</> during dump and restore
2812         (Joshua Drake)
2813        </para>
2814       </listitem>
2815
2816       <listitem>
2817        <para>
2818         Add <application>pg_dump</>/<application>pg_dumpall</> option
2819         <option>--lock-wait-timeout</> (David Gould)
2820        </para>
2821
2822        <para>
2823         This allows dumps to fail if unable to acquire a shared lock
2824         within the specified amount of time.
2825        </para>
2826       </listitem>
2827
2828       <listitem>
2829        <para>
2830         Reorder <application>pg_dump</> <literal>--data-only</> output
2831         to dump tables referenced by foreign keys before
2832         the referencing tables (Tom)
2833        </para>
2834
2835        <para>
2836         This allows data loads when foreign keys are already present.
2837         If circular references make a safe ordering impossible, a
2838         <literal>NOTICE</> is issued.
2839        </para>
2840       </listitem>
2841
2842       <listitem>
2843        <para>
2844         Allow <application>pg_dump</>, <application>pg_dumpall</>, and
2845         <application>pg_restore</> to use a specified role (Benedek
2846         László)
2847        </para>
2848       </listitem>
2849
2850       <listitem>
2851        <para>
2852         Allow <application>pg_restore</> to use multiple concurrent
2853         connections to do the restore (Andrew)
2854        </para>
2855
2856        <para>
2857         The number of concurrent connections is controlled by the option
2858         <literal>--jobs</>.  This is supported only for custom-format archives.
2859        </para>
2860       </listitem>
2861
2862      </itemizedlist>
2863
2864     </sect4>
2865
2866    </sect3>
2867
2868    <sect3>
2869     <title>Programming Tools</title>
2870
2871     <sect4>
2872      <title><application>libpq</></title>
2873      <itemizedlist>
2874
2875       <listitem>
2876        <para>
2877         Allow the <type>OID</> to be specified when importing a large
2878         object, via new function <function>lo_import_with_oid()</> (Tatsuo)
2879        </para>
2880       </listitem>
2881
2882       <listitem>
2883        <para>
2884         Add <quote>events</> support (Andrew Chernow, Merlin Moncure)
2885        </para>
2886
2887        <para>
2888         This adds the ability to register callbacks to manage private
2889         data associated with <structname>PGconn</> and <structname>PGresult</>
2890         objects.
2891        </para>
2892       </listitem>
2893
2894       <listitem>
2895        <para>
2896         Improve error handling to allow the return of multiple
2897         error messages as multi-line error reports (Magnus)
2898        </para>
2899       </listitem>
2900
2901       <listitem>
2902        <para>
2903         Make <function>PQexecParams()</> and related functions return
2904         <varname>PGRES_EMPTY_QUERY</> for an empty query (Tom)
2905        </para>
2906
2907        <para>
2908         They previously returned <varname>PGRES_COMMAND_OK</>.
2909        </para>
2910       </listitem>
2911
2912       <listitem>
2913        <para>
2914         Document how to avoid the overhead of <function>WSACleanup()</>
2915         on Windows (Andrew Chernow)
2916        </para>
2917       </listitem>
2918
2919       <listitem>
2920        <para>
2921         Do not rely on Kerberos tickets to determine the default database
2922         username (Magnus)
2923        </para>
2924
2925        <para>
2926         Previously, a Kerberos-capable build of libpq would use the
2927         principal name from any available Kerberos ticket as default
2928         database username, even if the connection wasn't using Kerberos
2929         authentication.  This was deemed inconsistent and confusing.
2930         The default username is now determined the same way with or
2931         without Kerberos.  Note however that the database username must still
2932         match the ticket when Kerberos authentication is used.
2933        </para>
2934       </listitem>
2935      </itemizedlist>
2936
2937     </sect4>
2938
2939     <sect4>
2940      <title><application>libpq</> <acronym>SSL</> (Secure Sockets Layer)
2941       support</title>
2942      <itemizedlist>
2943
2944       <listitem>
2945        <para>
2946         Fix certificate validation for <acronym>SSL</> connections
2947         (Magnus)
2948        </para>
2949
2950        <para>
2951         <application>libpq</> now supports verifying both the certificate
2952         and the name of the server when making <acronym>SSL</>
2953         connections. If a root certificate is not available to use for
2954         verification, <acronym>SSL</> connections will fail. The
2955         <literal>sslmode</> parameter is used to enable certificate
2956         verification and set the level of checking.
2957         The default is still not to do any verification, allowing connections
2958         to SSL-enabled servers without requiring a root certificate on the
2959         client.
2960        </para>
2961       </listitem>
2962
2963       <listitem>
2964        <para>
2965         Support wildcard server certificates (Magnus)
2966        </para>
2967
2968        <para>
2969         If a certificate <acronym>CN</> starts with <literal>*</>, it will
2970         be treated as a wildcard when matching the hostname, allowing the
2971         use of the same certificate for multiple servers.
2972        </para>
2973       </listitem>
2974
2975       <listitem>
2976        <para>
2977         Allow the file locations for client certificates to be specified
2978         (Mark Woodward, Alvaro, Magnus)
2979        </para>
2980       </listitem>
2981
2982       <listitem>
2983        <para>
2984         Add a <function>PQinitOpenSSL</> function to allow greater control
2985         over OpenSSL/libcrypto initialization (Andrew Chernow)
2986        </para>
2987       </listitem>
2988
2989       <listitem>
2990        <para>
2991         Make <application>libpq</> unregister its <application>OpenSSL</>
2992         callbacks when no database connections remain open
2993         (Bruce, Magnus, Russell Smith)
2994        </para>
2995
2996        <para>
2997         This is required for applications that unload the libpq library,
2998         otherwise invalid <application>OpenSSL</> callbacks will remain.
2999        </para>
3000       </listitem>
3001
3002      </itemizedlist>
3003
3004     </sect4>
3005
3006     <sect4>
3007      <title><application>ecpg</></title>
3008      <itemizedlist>
3009
3010       <listitem>
3011        <para>
3012         Add localization support for messages (Euler Taveira de
3013         Oliveira)
3014        </para>
3015       </listitem>
3016
3017       <listitem>
3018        <para>
3019         ecpg parser is now automatically generated from the server
3020         parser (Michael)
3021        </para>
3022
3023        <para>
3024         Previously the ecpg parser was hand-maintained.
3025        </para>
3026       </listitem>
3027
3028      </itemizedlist>
3029
3030     </sect4>
3031
3032     <sect4>
3033      <title>Server Programming Interface (<acronym>SPI</>)</title>
3034      <itemizedlist>
3035
3036       <listitem>
3037        <para>
3038         Add support for single-use plans with out-of-line
3039         parameters (Tom)
3040        </para>
3041       </listitem>
3042
3043       <listitem>
3044        <para>
3045         Add new <varname>SPI_OK_REWRITTEN</> return code for
3046         <function>SPI_execute()</> (Heikki)
3047        </para>
3048
3049        <para>
3050         This is used when a command is rewritten to another type of
3051         command.
3052        </para>
3053       </listitem>
3054
3055       <listitem>
3056        <para>
3057         Remove unnecessary inclusions from <filename>executor/spi.h</> (Tom)
3058        </para>
3059
3060        <para>
3061         SPI-using modules might need to add some <literal>#include</>
3062         lines if they were depending on <filename>spi.h</> to include
3063         things for them.
3064        </para>
3065       </listitem>
3066
3067      </itemizedlist>
3068
3069     </sect4>
3070
3071    </sect3>
3072
3073    <sect3>
3074     <title>Build Options</title>
3075     <itemizedlist>
3076
3077      <listitem>
3078       <para>
3079        Update build system to use <productname>Autoconf</> 2.61 (Peter)
3080       </para>
3081      </listitem>
3082
3083      <listitem>
3084       <para>
3085        Require <productname>GNU bison</> for source code builds (Peter)
3086       </para>
3087
3088       <para>
3089        This has effectively been required for several years, but now there
3090        is no infrastructure claiming to support other parser tools.
3091       </para>
3092      </listitem>
3093
3094      <listitem>
3095       <para>
3096        Add <application>pg_config</> <literal>--htmldir</> option
3097        (Peter)
3098       </para>
3099      </listitem>
3100
3101      <listitem>
3102       <para>
3103        Pass <type>float4</> by value inside the server (Zoltan
3104        Boszormenyi)
3105       </para>
3106
3107       <para>
3108        Add <application>configure</> option
3109        <literal>--disable-float4-byval</> to use the old behavior.
3110        External C functions that use old-style (version 0) call convention
3111        and pass or return <type>float4</> values will be broken by this
3112        change, so you may need the <application>configure</> option if you
3113        have such functions and don't want to update them.
3114       </para>
3115      </listitem>
3116
3117      <listitem>
3118       <para>
3119        Pass <type>float8</>, <type>int8</>, and related datatypes
3120        by value inside the server on 64-bit platforms (Zoltan Boszormenyi)
3121       </para>
3122
3123       <para>
3124        Add <application>configure</> option
3125        <literal>--disable-float8-byval</> to use the old behavior.
3126        As above, this change might break old-style external C functions.
3127       </para>
3128      </listitem>
3129
3130      <listitem>
3131       <para>
3132        Add configure options <literal>--with-segsize</>,
3133        <literal>--with-blocksize</>, <literal>--with-wal-blocksize</>,
3134        <literal>--with-wal-segsize</> (Zdenek Kotala, Tom)
3135       </para>
3136
3137       <para>
3138        This simplifies build-time control over several constants that
3139        previously could only be changed by editing
3140        <filename>pg_config_manual.h</>.
3141       </para>
3142      </listitem>
3143
3144      <listitem>
3145       <para>
3146        Allow threaded builds on <productname>Solaris</> 2.5 (Bruce)
3147       </para>
3148      </listitem>
3149
3150      <listitem>
3151       <para>
3152        Use the system's <function>getopt_long()</> on <productname>Solaris</>
3153        (Zdenek Kotala, Tom)
3154       </para>
3155
3156       <para>
3157        This makes option processing more consistent with what Solaris users
3158        expect.
3159       </para>
3160      </listitem>
3161
3162      <listitem>
3163       <para>
3164        Add support for the <productname>Sun Studio</> compiler on
3165        <productname>Linux</> (Julius Stroffek)
3166       </para>
3167      </listitem>
3168
3169      <listitem>
3170       <para>
3171        Append the major version number to the backend <application>gettext</>
3172        domain, and the <literal>soname</> major version number to
3173        libraries' <application>gettext</> domain (Peter)
3174       </para>
3175
3176       <para>
3177        This simplifies parallel installations of multiple versions.
3178       </para>
3179      </listitem>
3180
3181      <listitem>
3182       <para>
3183        Add support for code coverage testing with <application>gcov</>
3184        (Michelle Caisse)
3185       </para>
3186      </listitem>
3187
3188      <listitem>
3189       <para>
3190        Allow out-of-tree builds on <productname>Mingw</> and
3191        <productname>Cygwin</> (Richard Evans)
3192       </para>
3193      </listitem>
3194
3195      <listitem>
3196       <para>
3197        Fix the use of <productname>Mingw</> as a cross-compiling source
3198        platform (Peter)
3199       </para>
3200      </listitem>
3201
3202     </itemizedlist>
3203
3204    </sect3>
3205
3206    <sect3>
3207     <title>Source Code</title>
3208     <itemizedlist>
3209
3210      <listitem>
3211       <para>
3212        Support 64-bit time zone data files (Heikki)
3213       </para>
3214
3215       <para>
3216        This adds support for daylight saving time (<acronym>DST</>)
3217        calculations beyond the year 2038.
3218       </para>
3219      </listitem>
3220
3221      <listitem>
3222       <para>
3223        Deprecate use of platform's <type>time_t</> data type (Tom)
3224       </para>
3225
3226       <para>
3227        Some platforms have migrated to 64-bit <type>time_t</>, some have
3228        not, and Windows can't make up its mind what it's doing.  Define
3229        <type>pg_time_t</> to have the same meaning as <type>time_t</>,
3230        but always be 64 bits (unless the platform has no 64-bit integer type),
3231        and use that type in all module APIs and on-disk data formats.
3232       </para>
3233      </listitem>
3234
3235      <listitem>
3236       <para>
3237        Fix bug in handling of the time zone database when cross-compiling
3238        (Richard Evans)
3239       </para>
3240      </listitem>
3241
3242      <listitem>
3243       <para>
3244        Link backend object files in one step, rather than in stages
3245        (Peter)
3246       </para>
3247      </listitem>
3248
3249      <listitem>
3250       <para>
3251        Improve <application>gettext</> support to allow better translation
3252        of plurals (Peter)
3253       </para>
3254      </listitem>
3255
3256      <listitem>
3257       <para>
3258        Add message translation support to the PL languages (Alvaro, Peter)
3259       </para>
3260      </listitem>
3261
3262      <listitem>
3263       <para>
3264        Add more <application>DTrace</> probes (Robert Lor)
3265       </para>
3266      </listitem>
3267
3268      <listitem>
3269       <para>
3270        Enable <application>DTrace</> support on <application>Mac OS X
3271        Leopard</> and other non-Solaris platforms (Robert Lor)
3272       </para>
3273      </listitem>
3274
3275      <listitem>
3276       <para>
3277        Simplify and standardize conversions between C strings and
3278        <type>text</> datums, by providing common functions for the purpose
3279        (Brendan Jurd, Tom)
3280       </para>
3281      </listitem>
3282
3283      <listitem>
3284       <para>
3285        Clean up the <filename>include/catalog/</> header files so that
3286        frontend programs can include them without including
3287        <filename>postgres.h</>
3288        (Zdenek Kotala)
3289       </para>
3290      </listitem>
3291
3292      <listitem>
3293       <para>
3294        Make <type>name</> char-aligned, and suppress zero-padding of
3295        <type>name</> entries in indexes (Tom)
3296       </para>
3297      </listitem>
3298
3299      <listitem>
3300       <para>
3301        Recover better if dynamically-loaded code executes <function>exit()</>
3302        (Tom)
3303       </para>
3304      </listitem>
3305
3306      <listitem>
3307       <para>
3308        Add a hook to let plug-ins monitor the executor (Itagaki
3309        Takahiro)
3310       </para>
3311      </listitem>
3312
3313      <listitem>
3314       <para>
3315        Add a hook to allow the planner's statistics lookup behavior to
3316        be overridden (Simon Riggs)
3317       </para>
3318      </listitem>
3319
3320      <listitem>
3321       <para>
3322        Add <function>shmem_startup_hook()</> for custom shared memory
3323        requirements (Tom)
3324       </para>
3325      </listitem>
3326
3327      <listitem>
3328       <para>
3329        Replace the index access method <function>amgetmulti</> entry point
3330        with <function>amgetbitmap</>, and extend the API for
3331        <function>amgettuple</> to support run-time determination of
3332        operator lossiness (Heikki, Tom, Teodor)
3333       </para>
3334
3335       <para>
3336        The API for GIN and GiST opclass <function>consistent</> functions
3337        has been extended as well.
3338       </para>
3339      </listitem>
3340
3341      <listitem>
3342       <para>
3343        Add support for partial-match searches in <acronym>GIN</> indexes
3344        (Teodor Sigaev, Oleg Bartunov)
3345       </para>
3346      </listitem>
3347
3348      <listitem>
3349       <para>
3350        Replace <structname>pg_class</> column <structfield>reltriggers</>
3351        with boolean <structfield>relhastriggers</> (Simon)
3352       </para>
3353
3354       <para>
3355        Also remove unused <structname>pg_class</> columns
3356        <structfield>relukeys</>, <structfield>relfkeys</>, and
3357        <structfield>relrefs</>.
3358       </para>
3359      </listitem>
3360
3361      <listitem>
3362       <para>
3363        Add a <structfield>relistemp</> column to <structname>pg_class</>
3364        to ease identification of temporary tables (Tom)
3365       </para>
3366      </listitem>
3367
3368      <listitem>
3369       <para>
3370        Move platform <acronym>FAQ</>s into the main documentation
3371        (Peter)
3372       </para>
3373      </listitem>
3374
3375      <listitem>
3376       <para>
3377        Prevent parser input files from being built with any conflicts
3378        (Peter)
3379       </para>
3380      </listitem>
3381
3382      <listitem>
3383       <para>
3384        Add support for the <literal>KOI8U</> (Ukrainian) encoding
3385        (Peter)
3386       </para>
3387      </listitem>
3388
3389      <listitem>
3390       <para>
3391        Add Japanese message translations (Japan PostgreSQL Users Group)
3392       </para>
3393
3394       <para>
3395        This used to be maintained as a separate project.
3396       </para>
3397      </listitem>
3398
3399      <listitem>
3400       <para>
3401        Fix problem when setting <varname>LC_MESSAGES</> on
3402        <application>MSVC</>-built systems (Hiroshi Inoue, Hiroshi
3403        Saito, Magnus)
3404       </para>
3405      </listitem>
3406
3407     </itemizedlist>
3408
3409    </sect3>
3410
3411    <sect3>
3412     <title>Contrib</title>
3413
3414     <itemizedlist>
3415
3416      <listitem>
3417       <para>
3418        Add <filename>contrib/auto_explain</> to automatically run
3419        <command>EXPLAIN</> on queries exceeding a specified duration
3420        (Itagaki Takahiro, Tom)
3421       </para>
3422      </listitem>
3423
3424      <listitem>
3425       <para>
3426        Add <filename>contrib/btree_gin</> to allow GIN indexes to
3427        handle more datatypes (Oleg, Teodor)
3428       </para>
3429      </listitem>
3430
3431      <listitem>
3432       <para>
3433        Add <filename>contrib/citext</> to provide a case-insensitive,
3434        multibyte-aware text data type (David Wheeler)
3435       </para>
3436      </listitem>
3437
3438      <listitem>
3439       <para>
3440        Add <filename>contrib/pg_stat_statements</> for server-wide
3441        tracking of statement execution statistics (Itagaki Takahiro)
3442       </para>
3443      </listitem>
3444
3445      <listitem>
3446       <para>
3447        Add duration and query mode options to <filename>contrib/pgbench</>
3448        (Itagaki Takahiro)
3449       </para>
3450      </listitem>
3451
3452      <listitem>
3453       <para>
3454        Make <filename>contrib/pgbench</> use table names
3455        <structname>pgbench_accounts</>, <structname>pgbench_branches</>,
3456        <structname>pgbench_history</>, and <structname>pgbench_tellers</>,
3457        rather than just <structname>accounts</>, <structname>branches</>,
3458        <structname>history</>, and <structname>tellers</> (Tom)
3459       </para>
3460
3461       <para>
3462        This is to reduce the risk of accidentally destroying real data
3463        by running <application>pgbench</>.
3464       </para>
3465      </listitem>
3466
3467      <listitem>
3468       <para>
3469        Fix <filename>contrib/pgstattuple</> to handle tables and
3470        indexes with over 2 billion pages (Tatsuhito Kasahara)
3471       </para>
3472      </listitem>
3473
3474      <listitem>
3475       <para>
3476        In <filename>contrib/fuzzystrmatch</>, add a version of the
3477        Levenshtein string-distance function that allows the user to
3478        specify the costs of insertion, deletion, and substitution
3479        (Volkan Yazici)
3480       </para>
3481      </listitem>
3482
3483      <listitem>
3484       <para>
3485        Make <filename>contrib/ltree</> support multibyte encodings
3486        (laser)
3487       </para>
3488      </listitem>
3489
3490      <listitem>
3491       <para>
3492        Enable <filename>contrib/dblink</> to use connection information
3493        stored in the SQL/MED catalogs (Joe Conway)
3494       </para>
3495      </listitem>
3496
3497      <listitem>
3498       <para>
3499        Improve <filename>contrib/dblink</>'s reporting of errors from
3500        the remote server (Joe Conway)
3501       </para>
3502      </listitem>
3503
3504      <listitem>
3505       <para>
3506        Make <filename>contrib/dblink</> set <varname>client_encoding</>
3507        to match the local database's encoding (Joe Conway)
3508       </para>
3509
3510       <para>
3511        This prevents encoding problems when communicating with a remote
3512        database that uses a different encoding.
3513       </para>
3514      </listitem>
3515
3516      <listitem>
3517       <para>
3518        Make sure <filename>contrib/dblink</> uses a password supplied
3519        by the user, and not accidentally taken from the server's
3520        <filename>.pgpass</> file (Joe Conway)
3521       </para>
3522
3523       <para>
3524        This is a minor security enhancement.
3525       </para>
3526      </listitem>
3527
3528      <listitem>
3529       <para>
3530        Add <function>fsm_page_contents()</>
3531        to <filename>contrib/pageinspect</> (Heikki)
3532       </para>
3533      </listitem>
3534
3535      <listitem>
3536       <para>
3537        Modify <function>get_raw_page()</> to support free space map
3538        (<filename>*_fsm</>) files.  Also update
3539        <filename>contrib/pg_freespacemap</>.
3540       </para>
3541      </listitem>
3542
3543      <listitem>
3544       <para>
3545        Add support for multibyte encodings to <filename>contrib/pg_trgm</>
3546        (Teodor)
3547       </para>
3548      </listitem>
3549
3550      <listitem>
3551       <para>
3552        Rewrite <filename>contrib/intagg</> to use new
3553        functions <function>array_agg()</> and <function>unnest()</>
3554        (Tom)
3555       </para>
3556      </listitem>
3557
3558      <listitem>
3559       <para>
3560        Make <filename>contrib/pg_standby</> recover all available WAL before
3561        failover (Fujii Masao, Simon, Heikki)
3562       </para>
3563
3564       <para>
3565        To make this work safely, you now need to set the new
3566        <literal>recovery_end_command</> option in <filename>recovery.conf</>
3567        to clean up the trigger file after failover. <application>pg_standby</>
3568        will no longer remove the trigger file itself.
3569       </para>
3570      </listitem>
3571
3572      <listitem>
3573       <para>
3574        <filename>contrib/pg_standby</>'s <option>-l</> option is now a no-op,
3575        because it is unsafe to use a symlink (Simon)
3576       </para>
3577      </listitem>
3578
3579     </itemizedlist>
3580
3581    </sect3>
3582   </sect2>
3583  </sect1>