OSDN Git Service

Update release notes for releases 9.0.3, 8.4.7, 8.3.14, and 8.2.20.
[pg-rex/syncrep.git] / doc / src / sgml / release-8.4.sgml
1 <!-- doc/src/sgml/release-8.4.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
3
4  <sect1 id="release-8-4-7">
5   <title>Release 8.4.7</title>
6
7   <note>
8   <title>Release date</title>
9   <simpara>2011-01-31</simpara>
10   </note>
11
12   <para>
13    This release contains a variety of fixes from 8.4.6.
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.7</title>
20
21    <para>
22     A dump/restore is not required for those running 8.4.X.
23     However, if you are upgrading from a version earlier than 8.4.2,
24     see the release notes for 8.4.2.
25    </para>
26
27   </sect2>
28
29   <sect2>
30    <title>Changes</title>
31
32    <itemizedlist>
33
34     <listitem>
35      <para>
36       Avoid failures when <command>EXPLAIN</> tries to display a simple-form
37       <literal>CASE</> expression (Tom Lane)
38      </para>
39
40      <para>
41       If the <literal>CASE</>'s test expression was a constant, the planner
42       could simplify the <literal>CASE</> into a form that confused the
43       expression-display code, resulting in <quote>unexpected CASE WHEN
44       clause</> errors.
45      </para>
46     </listitem>
47
48     <listitem>
49      <para>
50       Fix assignment to an array slice that is before the existing range
51       of subscripts (Tom Lane)
52      </para>
53
54      <para>
55       If there was a gap between the newly added subscripts and the first
56       pre-existing subscript, the code miscalculated how many entries needed
57       to be copied from the old array's null bitmap, potentially leading to
58       data corruption or crash.
59      </para>
60     </listitem>
61
62     <listitem>
63      <para>
64       Avoid unexpected conversion overflow in planner for very distant date
65       values (Tom Lane)
66      </para>
67
68      <para>
69       The <type>date</> type supports a wider range of dates than can be
70       represented by the <type>timestamp</> types, but the planner assumed it
71       could always convert a date to timestamp with impunity.
72      </para>
73     </listitem>
74
75     <listitem>
76      <para>
77       Fix <application>pg_restore</>'s text output for large objects (BLOBs)
78       when <varname>standard_conforming_strings</> is on (Tom Lane)
79      </para>
80
81      <para>
82       Although restoring directly to a database worked correctly, string
83       escaping was incorrect if <application>pg_restore</> was asked for
84       SQL text output and <varname>standard_conforming_strings</> had been
85       enabled in the source database.
86      </para>
87     </listitem>
88
89     <listitem>
90      <para>
91       Fix erroneous parsing of <type>tsquery</> values containing
92       <literal>... &amp; !(subexpression) | ...</literal> (Tom Lane)
93      </para>
94
95      <para>
96       Queries containing this combination of operators were not executed
97       correctly.  The same error existed in <filename>contrib/intarray</>'s
98       <type>query_int</> type and <filename>contrib/ltree</>'s
99       <type>ltxtquery</> type.
100      </para>
101     </listitem>
102
103     <listitem>
104      <para>
105       Fix bug in <filename>contrib/seg</>'s GiST picksplit algorithm
106       (Alexander Korotkov)
107      </para>
108
109      <para>
110       This could result in considerable inefficiency, though not actually
111       incorrect answers, in a GiST index on a <type>seg</> column.
112       If you have such an index, consider <command>REINDEX</>ing it after
113       installing this update.  (This is identical to the bug that was fixed in
114       <filename>contrib/cube</> in the previous update.)
115      </para>
116     </listitem>
117
118    </itemizedlist>
119
120   </sect2>
121  </sect1>
122
123  <sect1 id="release-8-4-6">
124   <title>Release 8.4.6</title>
125
126   <note>
127   <title>Release date</title>
128   <simpara>2010-12-16</simpara>
129   </note>
130
131   <para>
132    This release contains a variety of fixes from 8.4.5.
133    For information about new features in the 8.4 major release, see
134    <xref linkend="release-8-4">.
135   </para>
136
137   <sect2>
138    <title>Migration to Version 8.4.6</title>
139
140    <para>
141     A dump/restore is not required for those running 8.4.X.
142     However, if you are upgrading from a version earlier than 8.4.2,
143     see the release notes for 8.4.2.
144    </para>
145
146   </sect2>
147
148   <sect2>
149    <title>Changes</title>
150
151    <itemizedlist>
152
153     <listitem>
154      <para>
155       Force the default
156       <link linkend="guc-wal-sync-method"><varname>wal_sync_method</></link>
157       to be <literal>fdatasync</> on Linux (Tom Lane, Marti Raudsepp)
158      </para>
159
160      <para>
161       The default on Linux has actually been <literal>fdatasync</> for many
162       years, but recent kernel changes caused <productname>PostgreSQL</> to
163       choose <literal>open_datasync</> instead.  This choice did not result
164       in any performance improvement, and caused outright failures on
165       certain filesystems, notably <literal>ext4</> with the
166       <literal>data=journal</> mount option.
167      </para>
168     </listitem>
169
170     <listitem>
171      <para>
172       Fix assorted bugs in WAL replay logic for GIN indexes (Tom Lane)
173      </para>
174
175      <para>
176       This could result in <quote>bad buffer id: 0</> failures or
177       corruption of index contents during replication.
178      </para>
179     </listitem>
180
181     <listitem>
182      <para>
183       Fix recovery from base backup when the starting checkpoint WAL record
184       is not in the same WAL segment as its redo point (Jeff Davis)
185      </para>
186     </listitem>
187
188     <listitem>
189      <para>
190       Fix persistent slowdown of autovacuum workers when multiple workers
191       remain active for a long time (Tom Lane)
192      </para>
193
194      <para>
195       The effective <varname>vacuum_cost_limit</> for an autovacuum worker
196       could drop to nearly zero if it processed enough tables, causing it
197       to run extremely slowly.
198      </para>
199     </listitem>
200
201     <listitem>
202      <para>
203       Add support for detecting register-stack overrun on <literal>IA64</>
204       (Tom Lane)
205      </para>
206
207      <para>
208       The <literal>IA64</> architecture has two hardware stacks.  Full
209       prevention of stack-overrun failures requires checking both.
210      </para>
211     </listitem>
212
213     <listitem>
214      <para>
215       Add a check for stack overflow in <function>copyObject()</> (Tom Lane)
216      </para>
217
218      <para>
219       Certain code paths could crash due to stack overflow given a
220       sufficiently complex query.
221      </para>
222     </listitem>
223
224     <listitem>
225      <para>
226       Fix detection of page splits in temporary GiST indexes (Heikki
227       Linnakangas)
228      </para>
229
230      <para>
231       It is possible to have a <quote>concurrent</> page split in a
232       temporary index, if for example there is an open cursor scanning the
233       index when an insertion is done.  GiST failed to detect this case and
234       hence could deliver wrong results when execution of the cursor
235       continued.
236      </para>
237     </listitem>
238
239     <listitem>
240      <para>
241       Fix error checking during early connection processing (Tom Lane)
242      </para>
243
244      <para>
245       The check for too many child processes was skipped in some cases,
246       possibly leading to postmaster crash when attempting to add the new
247       child process to fixed-size arrays.
248      </para>
249     </listitem>
250
251     <listitem>
252      <para>
253       Improve efficiency of window functions (Tom Lane)
254      </para>
255
256      <para>
257       Certain cases where a large number of tuples needed to be read in
258       advance, but <varname>work_mem</> was large enough to allow them all
259       to be held in memory, were unexpectedly slow.
260       <function>percent_rank()</>, <function>cume_dist()</> and
261       <function>ntile()</> in particular were subject to this problem.
262      </para>
263     </listitem>
264
265     <listitem>
266      <para>
267       Avoid memory leakage while <command>ANALYZE</>'ing complex index
268       expressions (Tom Lane)
269      </para>
270     </listitem>
271
272     <listitem>
273      <para>
274       Ensure an index that uses a whole-row Var still depends on its table
275       (Tom Lane)
276      </para>
277
278      <para>
279       An index declared like <literal>create index i on t (foo(t.*))</>
280       would not automatically get dropped when its table was dropped.
281      </para>
282     </listitem>
283
284     <listitem>
285      <para>
286       Do not <quote>inline</> a SQL function with multiple <literal>OUT</>
287       parameters (Tom Lane)
288      </para>
289
290      <para>
291       This avoids a possible crash due to loss of information about the
292       expected result rowtype.
293      </para>
294     </listitem>
295
296     <listitem>
297      <para>
298       Behave correctly if <literal>ORDER BY</>, <literal>LIMIT</>,
299       <literal>FOR UPDATE</>, or <literal>WITH</> is attached to the
300       <literal>VALUES</> part of <literal>INSERT ... VALUES</> (Tom Lane)
301      </para>
302     </listitem>
303
304     <listitem>
305      <para>
306       Fix constant-folding of <literal>COALESCE()</> expressions (Tom Lane)
307      </para>
308
309      <para>
310       The planner would sometimes attempt to evaluate sub-expressions that
311       in fact could never be reached, possibly leading to unexpected errors.
312      </para>
313     </listitem>
314
315     <listitem>
316      <para>
317       Fix postmaster crash when connection acceptance
318       (<function>accept()</> or one of the calls made immediately after it)
319       fails, and the postmaster was compiled with GSSAPI support (Alexander
320       Chernikov)
321      </para>
322     </listitem>
323
324     <listitem>
325      <para>
326       Fix missed unlink of temporary files when <varname>log_temp_files</>
327       is active (Tom Lane)
328      </para>
329
330      <para>
331       If an error occurred while attempting to emit the log message, the
332       unlink was not done, resulting in accumulation of temp files.
333      </para>
334     </listitem>
335
336     <listitem>
337      <para>
338       Add print functionality for <structname>InhRelation</> nodes (Tom Lane)
339      </para>
340
341      <para>
342       This avoids a failure when <varname>debug_print_parse</> is enabled
343       and certain types of query are executed.
344      </para>
345     </listitem>
346
347     <listitem>
348      <para>
349       Fix incorrect calculation of distance from a point to a horizontal
350       line segment (Tom Lane)
351      </para>
352
353      <para>
354       This bug affected several different geometric distance-measurement
355       operators.
356      </para>
357     </listitem>
358
359     <listitem>
360      <para>
361       Fix incorrect calculation of transaction status in
362       <application>ecpg</> (Itagaki Takahiro)
363      </para>
364     </listitem>
365
366     <listitem>
367      <para>
368       Fix <application>PL/pgSQL</>'s handling of <quote>simple</>
369       expressions to not fail in recursion or error-recovery cases (Tom Lane)
370      </para>
371     </listitem>
372
373     <listitem>
374      <para>
375       Fix <application>PL/Python</>'s handling of set-returning functions
376       (Jan Urbanski)
377      </para>
378
379      <para>
380       Attempts to call SPI functions within the iterator generating a set
381       result would fail.
382      </para>
383     </listitem>
384
385     <listitem>
386      <para>
387       Fix bug in <filename>contrib/cube</>'s GiST picksplit algorithm
388       (Alexander Korotkov)
389      </para>
390
391      <para>
392       This could result in considerable inefficiency, though not actually
393       incorrect answers, in a GiST index on a <type>cube</> column.
394       If you have such an index, consider <command>REINDEX</>ing it after
395       installing this update.
396      </para>
397     </listitem>
398
399     <listitem>
400      <para>
401       Don't emit <quote>identifier will be truncated</> notices in
402       <filename>contrib/dblink</> except when creating new connections
403       (Itagaki Takahiro)
404      </para>
405     </listitem>
406
407     <listitem>
408      <para>
409       Fix potential coredump on missing public key in
410       <filename>contrib/pgcrypto</> (Marti Raudsepp)
411      </para>
412     </listitem>
413
414     <listitem>
415      <para>
416       Fix memory leak in <filename>contrib/xml2</>'s XPath query functions
417       (Tom Lane)
418      </para>
419     </listitem>
420
421     <listitem>
422      <para>
423       Update time zone data files to <application>tzdata</> release 2010o
424       for DST law changes in Fiji and Samoa;
425       also historical corrections for Hong Kong.
426      </para>
427     </listitem>
428
429    </itemizedlist>
430
431   </sect2>
432  </sect1>
433
434  <sect1 id="release-8-4-5">
435   <title>Release 8.4.5</title>
436
437   <note>
438   <title>Release date</title>
439   <simpara>2010-10-04</simpara>
440   </note>
441
442   <para>
443    This release contains a variety of fixes from 8.4.4.
444    For information about new features in the 8.4 major release, see
445    <xref linkend="release-8-4">.
446   </para>
447
448   <sect2>
449    <title>Migration to Version 8.4.5</title>
450
451    <para>
452     A dump/restore is not required for those running 8.4.X.
453     However, if you are upgrading from a version earlier than 8.4.2,
454     see the release notes for 8.4.2.
455    </para>
456
457   </sect2>
458
459   <sect2>
460    <title>Changes</title>
461
462    <itemizedlist>
463
464     <listitem>
465      <para>
466       Use a separate interpreter for each calling SQL userid in PL/Perl and
467       PL/Tcl (Tom Lane)
468      </para>
469
470      <para>
471       This change prevents security problems that can be caused by subverting
472       Perl or Tcl code that will be executed later in the same session under
473       another SQL user identity (for example, within a <literal>SECURITY
474       DEFINER</> function).  Most scripting languages offer numerous ways that
475       that might be done, such as redefining standard functions or operators
476       called by the target function.  Without this change, any SQL user with
477       Perl or Tcl language usage rights can do essentially anything with the
478       SQL privileges of the target function's owner.
479      </para>
480
481      <para>
482       The cost of this change is that intentional communication among Perl
483       and Tcl functions becomes more difficult.  To provide an escape hatch,
484       PL/PerlU and PL/TclU functions continue to use only one interpreter
485       per session.  This is not considered a security issue since all such
486       functions execute at the trust level of a database superuser already.
487      </para>
488
489      <para>
490       It is likely that third-party procedural languages that claim to offer
491       trusted execution have similar security issues.  We advise contacting
492       the authors of any PL you are depending on for security-critical
493       purposes.
494      </para>
495
496      <para>
497       Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433).
498      </para>
499     </listitem>
500
501     <listitem>
502      <para>
503       Prevent possible crashes in <function>pg_get_expr()</> by disallowing
504       it from being called with an argument that is not one of the system
505       catalog columns it's intended to be used with
506       (Heikki Linnakangas, Tom Lane)
507      </para>
508     </listitem>
509
510     <listitem>
511      <para>
512       Treat exit code 128 (<literal>ERROR_WAIT_NO_CHILDREN</>) as non-fatal on
513       Windows (Magnus Hagander)
514      </para>
515
516      <para>
517       Under high load, Windows processes will sometimes fail at startup with
518       this error code.  Formerly the postmaster treated this as a panic
519       condition and restarted the whole database, but that seems to be
520       an overreaction.
521      </para>
522     </listitem>
523
524     <listitem>
525      <para>
526       Fix incorrect placement of placeholder evaluation (Tom Lane)
527      </para>
528
529      <para>
530       This bug could result in query outputs being non-null when they
531       should be null, in cases where the inner side of an outer join
532       is a sub-select with non-strict expressions in its output list.
533      </para>
534     </listitem>
535
536     <listitem>
537      <para>
538       Fix possible duplicate scans of <literal>UNION ALL</> member relations
539       (Tom Lane)
540      </para>
541     </listitem>
542
543     <listitem>
544      <para>
545       Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane)
546      </para>
547
548      <para>
549       This occurred when a sub-select contains a join alias reference that
550       expands into an expression containing another sub-select.
551      </para>
552     </listitem>
553
554     <listitem>
555      <para>
556       Fix mishandling of whole-row Vars that reference a view or sub-select
557       and appear within a nested sub-select (Tom Lane)
558      </para>
559     </listitem>
560
561     <listitem>
562      <para>
563       Fix mishandling of cross-type <literal>IN</> comparisons (Tom Lane)
564      </para>
565
566      <para>
567       This could result in failures if the planner tried to implement an
568       <literal>IN</> join with a sort-then-unique-then-plain-join plan.
569      </para>
570     </listitem>
571
572     <listitem>
573      <para>
574       Fix computation of <command>ANALYZE</> statistics for <type>tsvector</>
575       columns (Jan Urbanski)
576      </para>
577
578      <para>
579       The original coding could produce incorrect statistics, leading to
580       poor plan choices later.
581      </para>
582     </listitem>
583
584     <listitem>
585      <para>
586       Improve planner's estimate of memory used by <function>array_agg()</>,
587       <function>string_agg()</>, and similar aggregate functions
588       (Hitoshi Harada)
589      </para>
590
591      <para>
592       The previous drastic underestimate could lead to out-of-memory failures
593       due to inappropriate choice of a hash-aggregation plan.
594      </para>
595     </listitem>
596
597     <listitem>
598      <para>
599       Fix failure to mark cached plans as transient (Tom Lane)
600      </para>
601
602      <para>
603       If a plan is prepared while <command>CREATE INDEX CONCURRENTLY</> is
604       in progress for one of the referenced tables, it is supposed to be
605       re-planned once the index is ready for use.  This was not happening
606       reliably.
607      </para>
608     </listitem>
609
610     <listitem>
611      <para>
612       Reduce PANIC to ERROR in some occasionally-reported btree failure cases,
613       and provide additional detail in the resulting error messages
614       (Tom Lane)
615      </para>
616
617      <para>
618       This should improve the system's robustness with corrupted indexes.
619      </para>
620     </listitem>
621
622     <listitem>
623      <para>
624       Fix incorrect search logic for partial-match queries with GIN indexes
625       (Tom Lane)
626      </para>
627
628      <para>
629       Cases involving AND/OR combination of several GIN index conditions
630       didn't always give the right answer, and were sometimes much slower
631       than necessary.
632      </para>
633     </listitem>
634
635     <listitem>
636      <para>
637       Prevent show_session_authorization() from crashing within autovacuum
638       processes (Tom Lane)
639      </para>
640     </listitem>
641
642     <listitem>
643      <para>
644       Defend against functions returning setof record where not all the
645       returned rows are actually of the same rowtype (Tom Lane)
646      </para>
647     </listitem>
648
649     <listitem>
650      <para>
651       Fix possible corruption of pending trigger event lists during
652       subtransaction rollback (Tom Lane)
653      </para>
654
655      <para>
656       This could lead to a crash or incorrect firing of triggers.
657      </para>
658     </listitem>
659
660     <listitem>
661      <para>
662       Fix possible failure when hashing a pass-by-reference function result
663       (Tao Ma, Tom Lane)
664      </para>
665     </listitem>
666
667     <listitem>
668      <para>
669       Improve merge join's handling of NULLs in the join columns (Tom Lane)
670      </para>
671
672      <para>
673       A merge join can now stop entirely upon reaching the first NULL,
674       if the sort order is such that NULLs sort high.
675      </para>
676     </listitem>
677
678     <listitem>
679      <para>
680       Take care to fsync the contents of lockfiles (both
681       <filename>postmaster.pid</> and the socket lockfile) while writing them
682       (Tom Lane)
683      </para>
684
685      <para>
686       This omission could result in corrupted lockfile contents if the
687       machine crashes shortly after postmaster start.  That could in turn
688       prevent subsequent attempts to start the postmaster from succeeding,
689       until the lockfile is manually removed.
690      </para>
691     </listitem>
692
693     <listitem>
694      <para>
695       Avoid recursion while assigning XIDs to heavily-nested
696       subtransactions (Andres Freund, Robert Haas)
697      </para>
698
699      <para>
700       The original coding could result in a crash if there was limited
701       stack space.
702      </para>
703     </listitem>
704
705     <listitem>
706      <para>
707       Avoid holding open old WAL segments in the walwriter process
708       (Magnus Hagander, Heikki Linnakangas)
709      </para>
710
711      <para>
712       The previous coding would prevent removal of no-longer-needed segments.
713      </para>
714     </listitem>
715
716     <listitem>
717      <para>
718       Fix <varname>log_line_prefix</>'s <literal>%i</> escape,
719       which could produce junk early in backend startup (Tom Lane)
720      </para>
721     </listitem>
722
723     <listitem>
724      <para>
725       Prevent misinterpretation of partially-specified relation options
726       for TOAST tables (Itagaki Takahiro)
727      </para>
728
729      <para>
730       In particular, <literal>fillfactor</> would be read as zero if any
731       other reloption had been set for the table, leading to serious bloat.
732      </para>
733     </listitem>
734
735     <listitem>
736      <para>
737       Fix inheritance count tracking in <command>ALTER TABLE ... ADD
738       CONSTRAINT</> (Robert Haas)
739      </para>
740     </listitem>
741
742     <listitem>
743      <para>
744       Fix possible data corruption in <command>ALTER TABLE ... SET
745       TABLESPACE</> when archiving is enabled (Jeff Davis)
746      </para>
747     </listitem>
748
749     <listitem>
750      <para>
751       Allow <command>CREATE DATABASE</> and <command>ALTER DATABASE ... SET
752       TABLESPACE</> to be interrupted by query-cancel (Guillaume Lelarge)
753      </para>
754     </listitem>
755
756     <listitem>
757      <para>
758       Improve <command>CREATE INDEX</>'s checking of whether proposed index
759       expressions are immutable (Tom Lane)
760      </para>
761     </listitem>
762
763     <listitem>
764      <para>
765       Fix <command>REASSIGN OWNED</> to handle operator classes and families
766       (Asko Tiidumaa)
767      </para>
768     </listitem>
769
770     <listitem>
771      <para>
772       Fix possible core dump when comparing two empty <type>tsquery</> values
773       (Tom Lane)
774      </para>
775     </listitem>
776
777     <listitem>
778      <para>
779       Fix <literal>LIKE</>'s handling of patterns containing <literal>%</>
780       followed by <literal>_</> (Tom Lane)
781      </para>
782
783      <para>
784       We've fixed this before, but there were still some incorrectly-handled
785       cases.
786      </para>
787     </listitem>
788
789     <listitem>
790      <para>
791       Re-allow input of Julian dates prior to 0001-01-01 AD (Tom Lane)
792      </para>
793
794      <para>
795       Input such as <literal>'J100000'::date</> worked before 8.4,
796       but was unintentionally broken by added error-checking.
797      </para>
798     </listitem>
799
800     <listitem>
801      <para>
802       Fix PL/pgSQL to throw an error, not crash, if a cursor is closed within
803       a <literal>FOR</> loop that is iterating over that cursor
804       (Heikki Linnakangas)
805      </para>
806     </listitem>
807
808     <listitem>
809      <para>
810       In PL/Python, defend against null pointer results from
811       <function>PyCObject_AsVoidPtr</> and <function>PyCObject_FromVoidPtr</>
812       (Peter Eisentraut)
813      </para>
814     </listitem>
815
816     <listitem>
817      <para>
818       In <application>libpq</>, fix full SSL certificate verification for the
819       case where both <literal>host</> and <literal>hostaddr</> are specified
820       (Tom Lane)
821      </para>
822     </listitem>
823
824     <listitem>
825      <para>
826       Make psql recognize <command>DISCARD ALL</> as a command that should
827       not be encased in a transaction block in autocommit-off mode
828       (Itagaki Takahiro)
829      </para>
830     </listitem>
831
832     <listitem>
833      <para>
834       Fix some issues in <application>pg_dump</>'s handling of SQL/MED objects
835       (Tom Lane)
836      </para>
837
838      <para>
839       Notably, <application>pg_dump</> would always fail if run by a
840       non-superuser, which was not intended.
841      </para>
842     </listitem>
843
844     <listitem>
845      <para>
846       Improve <application>pg_dump</> and <application>pg_restore</>'s
847       handling of non-seekable archive files (Tom Lane, Robert Haas)
848      </para>
849
850      <para>
851       This is important for proper functioning of parallel restore.
852      </para>
853     </listitem>
854
855     <listitem>
856      <para>
857       Improve parallel pg_restore's ability to cope with selective restore
858       (<literal>-L</> option) (Tom Lane)
859      </para>
860
861      <para>
862       The original code tended to fail if the <literal>-L</> file commanded
863       a non-default restore ordering.
864      </para>
865     </listitem>
866
867     <listitem>
868      <para>
869       Fix <application>ecpg</> to process data from <literal>RETURNING</>
870       clauses correctly (Michael Meskes)
871      </para>
872     </listitem>
873
874     <listitem>
875      <para>
876       Fix some memory leaks in <application>ecpg</> (Zoltan Boszormenyi)
877      </para>
878     </listitem>
879
880     <listitem>
881      <para>
882       Improve <filename>contrib/dblink</>'s handling of tables containing
883       dropped columns (Tom Lane)
884      </para>
885     </listitem>
886
887     <listitem>
888      <para>
889       Fix connection leak after <quote>duplicate connection name</quote>
890       errors in <filename>contrib/dblink</> (Itagaki Takahiro)
891      </para>
892     </listitem>
893
894     <listitem>
895      <para>
896       Fix <filename>contrib/dblink</> to handle connection names longer than
897       62 bytes correctly (Itagaki Takahiro)
898      </para>
899     </listitem>
900
901     <listitem>
902      <para>
903       Add <function>hstore(text, text)</>
904       function to <filename>contrib/hstore</> (Robert Haas)
905      </para>
906
907      <para>
908       This function is the recommended substitute for the now-deprecated
909       <literal>=&gt;</> operator.  It was back-patched so that future-proofed
910       code can be used with older server versions.  Note that the patch will
911       be effective only after <filename>contrib/hstore</> is installed or
912       reinstalled in a particular database.  Users might prefer to execute
913       the <command>CREATE FUNCTION</> command by hand, instead.
914      </para>
915     </listitem>
916
917     <listitem>
918      <para>
919       Update build infrastructure and documentation to reflect the source code
920       repository's move from CVS to Git (Magnus Hagander and others)
921      </para>
922     </listitem>
923
924     <listitem>
925      <para>
926       Update time zone data files to <application>tzdata</> release 2010l
927       for DST law changes in Egypt and Palestine; also historical corrections
928       for Finland.
929      </para>
930
931      <para>
932       This change also adds new names for two Micronesian timezones:
933       Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred
934       abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over
935       Pacific/Ponape.
936      </para>
937     </listitem>
938
939     <listitem>
940      <para>
941       Make Windows' <quote>N. Central Asia Standard Time</> timezone map to
942       Asia/Novosibirsk, not Asia/Almaty (Magnus Hagander)
943      </para>
944
945      <para>
946       Microsoft changed the DST behavior of this zone in the timezone update
947       from KB976098. Asia/Novosibirsk is a better match to its new behavior.
948      </para>
949     </listitem>
950
951    </itemizedlist>
952
953   </sect2>
954  </sect1>
955
956  <sect1 id="release-8-4-4">
957   <title>Release 8.4.4</title>
958
959   <note>
960   <title>Release date</title>
961   <simpara>2010-05-17</simpara>
962   </note>
963
964   <para>
965    This release contains a variety of fixes from 8.4.3.
966    For information about new features in the 8.4 major release, see
967    <xref linkend="release-8-4">.
968   </para>
969
970   <sect2>
971    <title>Migration to Version 8.4.4</title>
972
973    <para>
974     A dump/restore is not required for those running 8.4.X.
975     However, if you are upgrading from a version earlier than 8.4.2,
976     see the release notes for 8.4.2.
977    </para>
978
979   </sect2>
980
981   <sect2>
982    <title>Changes</title>
983
984    <itemizedlist>
985
986     <listitem>
987      <para>
988       Enforce restrictions in <literal>plperl</> using an opmask applied to
989       the whole interpreter, instead of using <filename>Safe.pm</>
990       (Tim Bunce, Andrew Dunstan)
991      </para>
992
993      <para>
994       Recent developments have convinced us that <filename>Safe.pm</> is too
995       insecure to rely on for making <literal>plperl</> trustable.  This
996       change removes use of <filename>Safe.pm</> altogether, in favor of using
997       a separate interpreter with an opcode mask that is always applied.
998       Pleasant side effects of the change include that it is now possible to
999       use Perl's <literal>strict</> pragma in a natural way in
1000       <literal>plperl</>, and that Perl's <literal>$a</> and <literal>$b</>
1001       variables work as expected in sort routines, and that function
1002       compilation is significantly faster.  (CVE-2010-1169)
1003      </para>
1004     </listitem>
1005
1006     <listitem>
1007      <para>
1008       Prevent PL/Tcl from executing untrustworthy code from
1009       <structname>pltcl_modules</> (Tom)
1010      </para>
1011
1012      <para>
1013       PL/Tcl's feature for autoloading Tcl code from a database table
1014       could be exploited for trojan-horse attacks, because there was no
1015       restriction on who could create or insert into that table.  This change
1016       disables the feature unless <structname>pltcl_modules</> is owned by a
1017       superuser.  (However, the permissions on the table are not checked, so
1018       installations that really need a less-than-secure modules table can
1019       still grant suitable privileges to trusted non-superusers.)  Also,
1020       prevent loading code into the unrestricted <quote>normal</> Tcl
1021       interpreter unless we are really going to execute a <literal>pltclu</>
1022       function.  (CVE-2010-1170)
1023      </para>
1024     </listitem>
1025
1026     <listitem>
1027      <para>
1028       Fix data corruption during WAL replay of
1029       <literal>ALTER ... SET TABLESPACE</> (Tom)
1030      </para>
1031
1032      <para>
1033       When <varname>archive_mode</> is on, <literal>ALTER ... SET TABLESPACE</>
1034       generates a WAL record whose replay logic was incorrect.  It could write
1035       the data to the wrong place, leading to possibly-unrecoverable data
1036       corruption.  Data corruption would be observed on standby slaves, and
1037       could occur on the master as well if a database crash and recovery
1038       occurred after committing the <literal>ALTER</> and before the next
1039       checkpoint.
1040      </para>
1041     </listitem>
1042
1043     <listitem>
1044      <para>
1045       Fix possible crash if a cache reset message is received during
1046       rebuild of a relcache entry (Heikki)
1047      </para>
1048
1049      <para>
1050       This error was introduced in 8.4.3 while fixing a related failure.
1051      </para>
1052     </listitem>
1053
1054     <listitem>
1055      <para>
1056       Apply per-function GUC settings while running the language validator
1057       for the function (Itagaki Takahiro)
1058      </para>
1059
1060      <para>
1061       This avoids failures if the function's code is invalid without the
1062       setting; an example is that SQL functions may not parse if the
1063       <varname>search_path</> is not correct.
1064      </para>
1065     </listitem>
1066
1067     <listitem>
1068      <para>
1069       Do constraint exclusion for inherited <command>UPDATE</> and
1070       <command>DELETE</> target tables when
1071       <varname>constraint_exclusion</> = <literal>partition</> (Tom)
1072      </para>
1073
1074      <para>
1075       Due to an oversight, this setting previously only caused constraint
1076       exclusion to be checked in <command>SELECT</> commands.
1077      </para>
1078     </listitem>
1079
1080     <listitem>
1081      <para>
1082       Do not allow an unprivileged user to reset superuser-only parameter
1083       settings (Alvaro)
1084      </para>
1085
1086      <para>
1087       Previously, if an unprivileged user ran <literal>ALTER USER ... RESET
1088       ALL</> for himself, or <literal>ALTER DATABASE ... RESET ALL</> for
1089       a database he owns, this would remove all special parameter settings
1090       for the user or database, even ones that are only supposed to be
1091       changeable by a superuser.  Now, the <command>ALTER</> will only
1092       remove the parameters that the user has permission to change.
1093      </para>
1094     </listitem>
1095
1096     <listitem>
1097      <para>
1098       Avoid possible crash during backend shutdown if shutdown occurs
1099       when a <literal>CONTEXT</> addition would be made to log entries (Tom)
1100      </para>
1101
1102      <para>
1103       In some cases the context-printing function would fail because the
1104       current transaction had already been rolled back when it came time
1105       to print a log message.
1106      </para>
1107     </listitem>
1108
1109     <listitem>
1110      <para>
1111       Fix erroneous handling of <literal>%r</> parameter in
1112       <varname>recovery_end_command</> (Heikki)
1113      </para>
1114
1115      <para>
1116       The value always came out zero.
1117      </para>
1118     </listitem>
1119
1120     <listitem>
1121      <para>
1122       Ensure the archiver process responds to changes in
1123       <varname>archive_command</> as soon as possible (Tom)
1124      </para>
1125     </listitem>
1126
1127     <listitem>
1128      <para>
1129       Fix pl/pgsql's <literal>CASE</> statement to not fail when the
1130       case expression is a query that returns no rows (Tom)
1131      </para>
1132     </listitem>
1133
1134     <listitem>
1135      <para>
1136       Update pl/perl's <filename>ppport.h</> for modern Perl versions
1137       (Andrew)
1138      </para>
1139     </listitem>
1140
1141     <listitem>
1142      <para>
1143       Fix assorted memory leaks in pl/python (Andreas Freund, Tom)
1144      </para>
1145     </listitem>
1146
1147     <listitem>
1148      <para>
1149       Handle empty-string connect parameters properly in ecpg (Michael)
1150      </para>
1151     </listitem>
1152
1153     <listitem>
1154      <para>
1155       Prevent infinite recursion in <application>psql</> when expanding
1156       a variable that refers to itself (Tom)
1157      </para>
1158     </listitem>
1159
1160     <listitem>
1161      <para>
1162       Fix <application>psql</>'s <literal>\copy</> to not add spaces around
1163       a dot within <literal>\copy (select ...)</> (Tom)
1164      </para>
1165
1166      <para>
1167       Addition of spaces around the decimal point in a numeric literal would
1168       result in a syntax error.
1169      </para>
1170     </listitem>
1171
1172     <listitem>
1173      <para>
1174       Avoid formatting failure in <application>psql</> when running in a
1175       locale context that doesn't match the <varname>client_encoding</>
1176       (Tom)
1177      </para>
1178     </listitem>
1179
1180     <listitem>
1181      <para>
1182       Fix unnecessary <quote>GIN indexes do not support whole-index scans</>
1183       errors for unsatisfiable queries using <filename>contrib/intarray</>
1184       operators (Tom)
1185      </para>
1186     </listitem>
1187
1188     <listitem>
1189      <para>
1190       Ensure that <filename>contrib/pgstattuple</> functions respond to cancel
1191       interrupts promptly (Tatsuhito Kasahara)
1192      </para>
1193     </listitem>
1194
1195     <listitem>
1196      <para>
1197       Make server startup deal properly with the case that
1198       <function>shmget()</> returns <literal>EINVAL</> for an existing
1199       shared memory segment (Tom)
1200      </para>
1201
1202      <para>
1203       This behavior has been observed on BSD-derived kernels including OS X.
1204       It resulted in an entirely-misleading startup failure complaining that
1205       the shared memory request size was too large.
1206      </para>
1207     </listitem>
1208
1209     <listitem>
1210      <para>
1211       Avoid possible crashes in syslogger process on Windows (Heikki)
1212      </para>
1213     </listitem>
1214
1215     <listitem>
1216      <para>
1217       Deal more robustly with incomplete time zone information in the
1218       Windows registry (Magnus)
1219      </para>
1220     </listitem>
1221
1222     <listitem>
1223      <para>
1224       Update the set of known Windows time zone names (Magnus)
1225      </para>
1226     </listitem>
1227
1228     <listitem>
1229      <para>
1230       Update time zone data files to <application>tzdata</> release 2010j
1231       for DST law changes in Argentina, Australian Antarctic, Bangladesh,
1232       Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia;
1233       also historical corrections for Taiwan.
1234      </para>
1235
1236      <para>
1237       Also, add <literal>PKST</> (Pakistan Summer Time) to the default set of
1238       timezone abbreviations.
1239      </para>
1240     </listitem>
1241
1242    </itemizedlist>
1243
1244   </sect2>
1245  </sect1>
1246
1247  <sect1 id="release-8-4-3">
1248   <title>Release 8.4.3</title>
1249
1250   <note>
1251   <title>Release date</title>
1252   <simpara>2010-03-15</simpara>
1253   </note>
1254
1255   <para>
1256    This release contains a variety of fixes from 8.4.2.
1257    For information about new features in the 8.4 major release, see
1258    <xref linkend="release-8-4">.
1259   </para>
1260
1261   <sect2>
1262    <title>Migration to Version 8.4.3</title>
1263
1264    <para>
1265     A dump/restore is not required for those running 8.4.X.
1266     However, if you are upgrading from a version earlier than 8.4.2,
1267     see the release notes for 8.4.2.
1268    </para>
1269
1270   </sect2>
1271
1272   <sect2>
1273    <title>Changes</title>
1274
1275    <itemizedlist>
1276
1277     <listitem>
1278      <para>
1279       Add new configuration parameter <varname>ssl_renegotiation_limit</> to
1280       control how often we do session key renegotiation for an SSL connection
1281       (Magnus)
1282      </para>
1283
1284      <para>
1285       This can be set to zero to disable renegotiation completely, which may
1286       be required if a broken SSL library is used.  In particular, some
1287       vendors are shipping stopgap patches for CVE-2009-3555 that cause
1288       renegotiation attempts to fail.
1289      </para>
1290     </listitem>
1291
1292     <listitem>
1293      <para>
1294       Fix possible deadlock during backend startup (Tom)
1295      </para>
1296     </listitem>
1297
1298     <listitem>
1299      <para>
1300       Fix possible crashes due to not handling errors during relcache reload
1301       cleanly (Tom)
1302      </para>
1303     </listitem>
1304
1305     <listitem>
1306      <para>
1307       Fix possible crash due to use of dangling pointer to a cached plan
1308       (Tatsuo)
1309      </para>
1310     </listitem>
1311
1312     <listitem>
1313      <para>
1314       Fix possible crash due to overenthusiastic invalidation of cached
1315       plan for <command>ROLLBACK</> (Tom)
1316      </para>
1317     </listitem>
1318
1319     <listitem>
1320      <para>
1321       Fix possible crashes when trying to recover from a failure in
1322       subtransaction start (Tom)
1323      </para>
1324     </listitem>
1325
1326     <listitem>
1327      <para>
1328       Fix server memory leak associated with use of savepoints and a client
1329       encoding different from server's encoding (Tom)
1330      </para>
1331     </listitem>
1332
1333     <listitem>
1334      <para>
1335       Fix incorrect WAL data emitted during end-of-recovery cleanup of a GIST
1336       index page split (Yoichi Hirai)
1337      </para>
1338
1339      <para>
1340       This would result in index corruption, or even more likely an error
1341       during WAL replay, if we were unlucky enough to crash during
1342       end-of-recovery cleanup after having completed an incomplete GIST
1343       insertion.
1344      </para>
1345     </listitem>
1346
1347     <listitem>
1348      <para>
1349       Fix bug in WAL redo cleanup method for GIN indexes (Heikki)
1350      </para>
1351     </listitem>
1352
1353     <listitem>
1354      <para>
1355       Fix incorrect comparison of scan key in GIN index search (Teodor)
1356      </para>
1357     </listitem>
1358
1359     <listitem>
1360      <para>
1361       Make <function>substring()</> for <type>bit</> types treat any negative
1362       length as meaning <quote>all the rest of the string</> (Tom)
1363      </para>
1364
1365      <para>
1366       The previous coding treated only -1 that way, and would produce an
1367       invalid result value for other negative values, possibly leading to
1368       a crash (CVE-2010-0442).
1369      </para>
1370     </listitem>
1371
1372     <listitem>
1373      <para>
1374       Fix integer-to-bit-string conversions to handle the first fractional
1375       byte correctly when the output bit width is wider than the given
1376       integer by something other than a multiple of 8 bits (Tom)
1377      </para>
1378     </listitem>
1379
1380     <listitem>
1381      <para>
1382       Fix some cases of pathologically slow regular expression matching (Tom)
1383      </para>
1384     </listitem>
1385
1386     <listitem>
1387      <para>
1388       Fix bug occurring when trying to inline a SQL function that returns
1389       a set of a composite type that contains dropped columns (Tom)
1390      </para>
1391     </listitem>
1392
1393     <listitem>
1394      <para>
1395       Fix bug with trying to update a field of an element of a
1396       composite-type array column (Tom)
1397      </para>
1398     </listitem>
1399
1400     <listitem>
1401      <para>
1402       Avoid failure when <command>EXPLAIN</> has to print a FieldStore or
1403       assignment ArrayRef expression (Tom)
1404      </para>
1405
1406      <para>
1407       These cases can arise now that <command>EXPLAIN VERBOSE</> tries to
1408       print plan node target lists.
1409      </para>
1410     </listitem>
1411
1412     <listitem>
1413      <para>
1414       Avoid an unnecessary coercion failure in some cases where an undecorated
1415       literal string appears in a subquery within
1416       <command>UNION</>/<command>INTERSECT</>/<command>EXCEPT</> (Tom)
1417      </para>
1418
1419      <para>
1420       This fixes a regression for some cases that worked before 8.4.
1421      </para>
1422     </listitem>
1423
1424     <listitem>
1425      <para>
1426       Avoid undesirable rowtype compatibility check failures in some cases
1427       where a whole-row Var has a rowtype that contains dropped columns (Tom)
1428      </para>
1429     </listitem>
1430
1431     <listitem>
1432      <para>
1433       Fix the <literal>STOP WAL LOCATION</> entry in backup history files to
1434       report the next WAL segment's name when the end location is exactly at a
1435       segment boundary (Itagaki Takahiro)
1436      </para>
1437     </listitem>
1438
1439     <listitem>
1440      <para>
1441       Always pass the catalog ID to an option validator function specified in
1442       <command>CREATE FOREIGN DATA WRAPPER</> (Martin Pihlak)
1443      </para>
1444     </listitem>
1445
1446     <listitem>
1447      <para>
1448       Fix some more cases of temporary-file leakage (Heikki)
1449      </para>
1450
1451      <para>
1452       This corrects a problem introduced in the previous minor release.
1453       One case that failed is when a plpgsql function returning set is
1454       called within another function's exception handler.
1455      </para>
1456     </listitem>
1457
1458     <listitem>
1459      <para>
1460       Add support for doing <literal>FULL JOIN ON FALSE</> (Tom)
1461      </para>
1462
1463      <para>
1464       This prevents a regression from pre-8.4 releases for some queries that
1465       can now be simplified to a constant-false join condition.
1466      </para>
1467     </listitem>
1468
1469     <listitem>
1470      <para>
1471       Improve constraint exclusion processing of boolean-variable cases,
1472       in particular make it possible to exclude a partition that has a
1473       <quote>bool_column = false</> constraint (Tom)
1474      </para>
1475     </listitem>
1476
1477     <listitem>
1478      <para>
1479       Prevent treating an <literal>INOUT</> cast as representing binary
1480       compatibility (Heikki)
1481      </para>
1482     </listitem>
1483
1484     <listitem>
1485      <para>
1486       Include column name in the message when warning about inability to
1487       grant or revoke column-level privileges (Stephen Frost)
1488      </para>
1489
1490      <para>
1491       This is more useful than before and helps to prevent confusion when
1492       a <command>REVOKE</> generates multiple messages, which formerly
1493       appeared to be duplicates.
1494      </para>
1495     </listitem>
1496
1497     <listitem>
1498      <para>
1499       When reading <filename>pg_hba.conf</> and related files, do not treat
1500       <literal>@something</> as a file inclusion request if the <literal>@</>
1501       appears inside quote marks; also, never treat <literal>@</> by itself
1502       as a file inclusion request (Tom)
1503      </para>
1504
1505      <para>
1506       This prevents erratic behavior if a role or database name starts with
1507       <literal>@</>.  If you need to include a file whose path name
1508       contains spaces, you can still do so, but you must write
1509       <literal>@"/path to/file"</> rather than putting the quotes around
1510       the whole construct.
1511      </para>
1512     </listitem>
1513
1514     <listitem>
1515      <para>
1516       Prevent infinite loop on some platforms if a directory is named as
1517       an inclusion target in <filename>pg_hba.conf</> and related files
1518       (Tom)
1519      </para>
1520     </listitem>
1521
1522     <listitem>
1523      <para>
1524       Fix possible infinite loop if <function>SSL_read</> or
1525       <function>SSL_write</> fails without setting <varname>errno</> (Tom)
1526      </para>
1527
1528      <para>
1529       This is reportedly possible with some Windows versions of
1530       <application>openssl</>.
1531      </para>
1532     </listitem>
1533
1534     <listitem>
1535      <para>
1536       Disallow <acronym>GSSAPI</> authentication on local connections,
1537       since it requires a hostname to function correctly (Magnus)
1538      </para>
1539     </listitem>
1540
1541     <listitem>
1542      <para>
1543       Protect <application>ecpg</> against applications freeing strings
1544       unexpectedly (Michael)
1545      </para>
1546     </listitem>
1547
1548     <listitem>
1549      <para>
1550       Make <application>ecpg</> report the proper SQLSTATE if the connection
1551       disappears (Michael)
1552      </para>
1553     </listitem>
1554
1555     <listitem>
1556      <para>
1557       Fix translation of cell contents in <application>psql</> <literal>\d</>
1558       output (Heikki)
1559      </para>
1560     </listitem>
1561
1562     <listitem>
1563      <para>
1564       Fix <application>psql</>'s <literal>numericlocale</> option to not
1565       format strings it shouldn't in latex and troff output formats (Heikki)
1566      </para>
1567     </listitem>
1568
1569     <listitem>
1570      <para>
1571       Fix a small per-query memory leak in <application>psql</> (Tom)
1572      </para>
1573     </listitem>
1574
1575     <listitem>
1576      <para>
1577       Make <application>psql</> return the correct exit status (3) when
1578       <literal>ON_ERROR_STOP</> and <literal>--single-transaction</> are
1579       both specified and an error occurs during the implied <command>COMMIT</>
1580       (Bruce)
1581      </para>
1582     </listitem>
1583
1584     <listitem>
1585      <para>
1586       Fix <application>pg_dump</>'s output of permissions for foreign servers
1587       (Heikki)
1588      </para>
1589     </listitem>
1590
1591     <listitem>
1592      <para>
1593       Fix possible crash in parallel <application>pg_restore</> due to
1594       out-of-range dependency IDs (Tom)
1595      </para>
1596     </listitem>
1597
1598     <listitem>
1599      <para>
1600       Fix plpgsql failure in one case where a composite column is set to NULL
1601       (Tom)
1602      </para>
1603     </listitem>
1604
1605     <listitem>
1606      <para>
1607       Fix possible failure when calling PL/Perl functions from PL/PerlU
1608       or vice versa (Tim Bunce)
1609      </para>
1610     </listitem>
1611
1612     <listitem>
1613      <para>
1614       Add <literal>volatile</> markings in PL/Python to avoid possible
1615       compiler-specific misbehavior (Zdenek Kotala)
1616      </para>
1617     </listitem>
1618
1619     <listitem>
1620      <para>
1621       Ensure PL/Tcl initializes the Tcl interpreter fully (Tom)
1622      </para>
1623
1624      <para>
1625       The only known symptom of this oversight is that the Tcl
1626       <literal>clock</> command misbehaves if using Tcl 8.5 or later.
1627      </para>
1628     </listitem>
1629
1630     <listitem>
1631      <para>
1632       Prevent <function>ExecutorEnd</> from being run on portals created
1633       within a failed transaction or subtransaction (Tom)
1634      </para>
1635
1636      <para>
1637       This is known to cause issues when using
1638       <filename>contrib/auto_explain</>.
1639      </para>
1640     </listitem>
1641
1642     <listitem>
1643      <para>
1644       Prevent crash in <filename>contrib/dblink</> when too many key
1645       columns are specified to a <function>dblink_build_sql_*</> function
1646       (Rushabh Lathia, Joe Conway)
1647      </para>
1648     </listitem>
1649
1650     <listitem>
1651      <para>
1652       Allow zero-dimensional arrays in <filename>contrib/ltree</> operations
1653       (Tom)
1654      </para>
1655
1656      <para>
1657       This case was formerly rejected as an error, but it's more convenient to
1658       treat it the same as a zero-element array.  In particular this avoids
1659       unnecessary failures when an <type>ltree</> operation is applied to the
1660       result of <literal>ARRAY(SELECT ...)</> and the sub-select returns no
1661       rows.
1662      </para>
1663     </listitem>
1664
1665     <listitem>
1666      <para>
1667       Fix assorted crashes in <filename>contrib/xml2</> caused by sloppy
1668       memory management (Tom)
1669      </para>
1670     </listitem>
1671
1672     <listitem>
1673      <para>
1674       Make building of <filename>contrib/xml2</> more robust on Windows
1675       (Andrew)
1676      </para>
1677     </listitem>
1678
1679     <listitem>
1680      <para>
1681       Fix race condition in Windows signal handling (Radu Ilie)
1682      </para>
1683
1684      <para>
1685       One known symptom of this bug is that rows in <structname>pg_listener</>
1686       could be dropped under heavy load.
1687      </para>
1688     </listitem>
1689
1690     <listitem>
1691      <para>
1692       Make the configure script report failure if the C compiler does
1693       not provide a working 64-bit integer datatype (Tom)
1694      </para>
1695
1696      <para>
1697       This case has been broken for some time, and no longer seems worth
1698       supporting, so just reject it at configure time instead.
1699      </para>
1700     </listitem>
1701
1702     <listitem>
1703      <para>
1704       Update time zone data files to <application>tzdata</> release 2010e
1705       for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
1706      </para>
1707     </listitem>
1708
1709    </itemizedlist>
1710
1711   </sect2>
1712  </sect1>
1713
1714  <sect1 id="release-8-4-2">
1715   <title>Release 8.4.2</title>
1716
1717   <note>
1718   <title>Release date</title>
1719   <simpara>2009-12-14</simpara>
1720   </note>
1721
1722   <para>
1723    This release contains a variety of fixes from 8.4.1.
1724    For information about new features in the 8.4 major release, see
1725    <xref linkend="release-8-4">.
1726   </para>
1727
1728   <sect2>
1729    <title>Migration to Version 8.4.2</title>
1730
1731    <para>
1732     A dump/restore is not required for those running 8.4.X.
1733     However, if you have any hash indexes,
1734     you should <command>REINDEX</> them after updating to 8.4.2,
1735     to repair possible damage.
1736    </para>
1737
1738   </sect2>
1739
1740   <sect2>
1741    <title>Changes</title>
1742
1743    <itemizedlist>
1744
1745     <listitem>
1746      <para>
1747       Protect against indirect security threats caused by index functions
1748       changing session-local state (Gurjeet Singh, Tom)
1749      </para>
1750
1751      <para>
1752       This change prevents allegedly-immutable index functions from possibly
1753       subverting a superuser's session (CVE-2009-4136).
1754      </para>
1755     </listitem>
1756
1757     <listitem>
1758      <para>
1759       Reject SSL certificates containing an embedded null byte in the common
1760       name (CN) field (Magnus)
1761      </para>
1762
1763      <para>
1764       This prevents unintended matching of a certificate to a server or client
1765       name during SSL validation (CVE-2009-4034).
1766      </para>
1767     </listitem>
1768
1769     <listitem>
1770      <para>
1771       Fix hash index corruption (Tom)
1772      </para>
1773
1774      <para>
1775       The 8.4 change that made hash indexes keep entries sorted by hash value
1776       failed to update the bucket splitting and compaction routines to
1777       preserve the ordering.  So application of either of those operations
1778       could lead to permanent corruption of an index, in the sense that
1779       searches might fail to find entries that are present.  To deal with
1780       this, it is recommended to <literal>REINDEX</> any hash indexes you may
1781       have after installing this update.
1782      </para>
1783     </listitem>
1784
1785     <listitem>
1786      <para>
1787       Fix possible crash during backend-startup-time cache initialization (Tom)
1788      </para>
1789     </listitem>
1790
1791     <listitem>
1792      <para>
1793       Avoid crash on empty thesaurus dictionary (Tom)
1794      </para>
1795     </listitem>
1796
1797     <listitem>
1798      <para>
1799       Prevent signals from interrupting <literal>VACUUM</> at unsafe times
1800       (Alvaro)
1801      </para>
1802
1803      <para>
1804       This fix prevents a PANIC if a <literal>VACUUM FULL</> is cancelled
1805       after it's already committed its tuple movements, as well as transient
1806       errors if a plain <literal>VACUUM</> is interrupted after having
1807       truncated the table.
1808      </para>
1809     </listitem>
1810
1811     <listitem>
1812      <para>
1813       Fix possible crash due to integer overflow in hash table size
1814       calculation (Tom)
1815      </para>
1816
1817      <para>
1818       This could occur with extremely large planner estimates for the size of
1819       a hashjoin's result.
1820      </para>
1821     </listitem>
1822
1823     <listitem>
1824      <para>
1825       Fix crash if a <literal>DROP</> is attempted on an internally-dependent
1826       object (Tom)
1827      </para>
1828     </listitem>
1829
1830     <listitem>
1831      <para>
1832       Fix very rare crash in <type>inet</>/<type>cidr</> comparisons (Chris
1833       Mikkelson)
1834      </para>
1835     </listitem>
1836
1837     <listitem>
1838      <para>
1839       Ensure that shared tuple-level locks held by prepared transactions are
1840       not ignored (Heikki)
1841      </para>
1842     </listitem>
1843
1844     <listitem>
1845      <para>
1846       Fix premature drop of temporary files used for a cursor that is accessed
1847       within a subtransaction (Heikki)
1848      </para>
1849     </listitem>
1850
1851     <listitem>
1852      <para>
1853       Fix memory leak in syslogger process when rotating to a new CSV logfile
1854       (Tom)
1855      </para>
1856     </listitem>
1857
1858     <listitem>
1859      <para>
1860       Fix memory leak in postmaster when re-parsing <filename>pg_hba.conf</>
1861       (Tom)
1862      </para>
1863     </listitem>
1864
1865     <listitem>
1866      <para>
1867       Fix Windows permission-downgrade logic (Jesse Morris)
1868      </para>
1869
1870      <para>
1871       This fixes some cases where the database failed to start on Windows,
1872       often with misleading error messages such as <quote>could not locate
1873       matching postgres executable</quote>.
1874      </para>
1875     </listitem>
1876
1877     <listitem>
1878      <para>
1879       Make <literal>FOR UPDATE/SHARE</> in the primary query not propagate
1880       into <literal>WITH</> queries (Tom)
1881      </para>
1882
1883      <para>
1884       For example, in
1885 <programlisting>
1886 WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE
1887 </programlisting>
1888       the <literal>FOR UPDATE</> will now affect <literal>bar</> but not
1889       <literal>foo</>.  This is more useful and consistent than the original
1890       8.4 behavior, which tried to propagate <literal>FOR UPDATE</> into the
1891       <literal>WITH</> query but always failed due to assorted implementation
1892       restrictions.  It also follows the design rule that <literal>WITH</>
1893       queries are executed as if independent of the main query.
1894      </para>
1895     </listitem>
1896
1897     <listitem>
1898      <para>
1899       Fix bug with a <literal>WITH RECURSIVE</> query immediately inside
1900       another one (Tom)
1901      </para>
1902     </listitem>
1903
1904     <listitem>
1905      <para>
1906       Fix concurrency bug in hash indexes (Tom)
1907      </para>
1908
1909      <para>
1910       Concurrent insertions could cause index scans to transiently report
1911       wrong results.
1912      </para>
1913     </listitem>
1914
1915     <listitem>
1916      <para>
1917       Fix incorrect logic for GiST index page splits, when the split depends
1918       on a non-first column of the index (Paul Ramsey)
1919      </para>
1920     </listitem>
1921
1922     <listitem>
1923      <para>
1924       Fix wrong search results for a multi-column GIN index with
1925       <literal>fastupdate</> enabled (Teodor)
1926      </para>
1927     </listitem>
1928
1929     <listitem>
1930      <para>
1931       Fix bugs in WAL entry creation for GIN indexes (Tom)
1932      </para>
1933
1934      <para>
1935       These bugs were masked when <varname>full_page_writes</> was on, but
1936       with it off a WAL replay failure was certain if a crash occurred before
1937       the next checkpoint.
1938      </para>
1939     </listitem>
1940
1941     <listitem>
1942      <para>
1943       Don't error out if recycling or removing an old WAL file fails at the
1944       end of checkpoint (Heikki)
1945      </para>
1946
1947      <para>
1948       It's better to treat the problem as non-fatal and allow the checkpoint
1949       to complete.  Future checkpoints will retry the removal.  Such problems
1950       are not expected in normal operation, but have been seen to be
1951       caused by misdesigned Windows anti-virus and backup software.
1952      </para>
1953     </listitem>
1954
1955     <listitem>
1956      <para>
1957       Ensure WAL files aren't repeatedly archived on Windows (Heikki)
1958      </para>
1959
1960      <para>
1961       This is another symptom that could happen if some other process
1962       interfered with deletion of a no-longer-needed file.
1963      </para>
1964     </listitem>
1965
1966     <listitem>
1967      <para>
1968       Fix PAM password processing to be more robust (Tom)
1969      </para>
1970
1971      <para>
1972       The previous code is known to fail with the combination of the Linux
1973       <literal>pam_krb5</> PAM module with Microsoft Active Directory as the
1974       domain controller.  It might have problems elsewhere too, since it was
1975       making unjustified assumptions about what arguments the PAM stack would
1976       pass to it.
1977      </para>
1978     </listitem>
1979
1980     <listitem>
1981      <para>
1982       Raise the maximum authentication token (Kerberos ticket) size in GSSAPI
1983       and SSPI authentication methods (Ian Turner)
1984      </para>
1985
1986      <para>
1987       While the old 2000-byte limit was more than enough for Unix Kerberos
1988       implementations, tickets issued by Windows Domain Controllers can be
1989       much larger.
1990      </para>
1991     </listitem>
1992
1993     <listitem>
1994      <para>
1995       Ensure that domain constraints are enforced in constructs like
1996       <literal>ARRAY[...]::domain</>, where the domain is over an array type
1997       (Heikki)
1998      </para>
1999     </listitem>
2000
2001     <listitem>
2002      <para>
2003       Fix foreign-key logic for some cases involving composite-type columns
2004       as foreign keys (Tom)
2005      </para>
2006     </listitem>
2007
2008     <listitem>
2009      <para>
2010       Ensure that a cursor's snapshot is not modified after it is created
2011       (Alvaro)
2012      </para>
2013
2014      <para>
2015       This could lead to a cursor delivering wrong results if later operations
2016       in the same transaction modify the data the cursor is supposed to return.
2017      </para>
2018     </listitem>
2019
2020     <listitem>
2021      <para>
2022       Fix <literal>CREATE TABLE</> to properly merge default expressions
2023       coming from different inheritance parent tables (Tom)
2024      </para>
2025
2026      <para>
2027       This used to work but was broken in 8.4.
2028      </para>
2029     </listitem>
2030
2031     <listitem>
2032      <para>
2033       Re-enable collection of access statistics for sequences (Akira Kurosawa)
2034      </para>
2035
2036      <para>
2037       This used to work but was broken in 8.3.
2038      </para>
2039     </listitem>
2040
2041     <listitem>
2042      <para>
2043       Fix processing of ownership dependencies during <literal>CREATE OR
2044       REPLACE FUNCTION</> (Tom)
2045      </para>
2046     </listitem>
2047
2048     <listitem>
2049      <para>
2050       Fix incorrect handling of <literal>WHERE</>
2051       <replaceable>x</>=<replaceable>x</> conditions (Tom)
2052      </para>
2053
2054      <para>
2055       In some cases these could get ignored as redundant, but they aren't
2056       &mdash; they're equivalent to <replaceable>x</> <literal>IS NOT NULL</>.
2057      </para>
2058     </listitem>
2059
2060     <listitem>
2061      <para>
2062       Fix incorrect plan construction when using hash aggregation to implement
2063       <literal>DISTINCT</> for textually identical volatile expressions (Tom)
2064      </para>
2065     </listitem>
2066
2067     <listitem>
2068      <para>
2069       Fix Assert failure for a volatile <literal>SELECT DISTINCT ON</>
2070       expression (Tom)
2071      </para>
2072     </listitem>
2073
2074     <listitem>
2075      <para>
2076       Fix <function>ts_stat()</> to not fail on an empty <type>tsvector</>
2077       value (Tom)
2078      </para>
2079     </listitem>
2080
2081     <listitem>
2082      <para>
2083       Make text search parser accept underscores in XML attributes (Peter)
2084      </para>
2085     </listitem>
2086
2087     <listitem>
2088      <para>
2089       Fix encoding handling in <type>xml</> binary input (Heikki)
2090      </para>
2091
2092      <para>
2093       If the XML header doesn't specify an encoding, we now assume UTF-8 by
2094       default; the previous handling was inconsistent.
2095      </para>
2096     </listitem>
2097
2098     <listitem>
2099      <para>
2100       Fix bug with calling <literal>plperl</> from <literal>plperlu</> or vice
2101       versa (Tom)
2102      </para>
2103
2104      <para>
2105       An error exit from the inner function could result in crashes due to
2106       failure to re-select the correct Perl interpreter for the outer function.
2107      </para>
2108     </listitem>
2109
2110     <listitem>
2111      <para>
2112       Fix session-lifespan memory leak when a PL/Perl function is redefined
2113       (Tom)
2114      </para>
2115     </listitem>
2116
2117     <listitem>
2118      <para>
2119       Ensure that Perl arrays are properly converted to
2120       <productname>PostgreSQL</> arrays when returned by a set-returning
2121       PL/Perl function (Andrew Dunstan, Abhijit Menon-Sen)
2122      </para>
2123
2124      <para>
2125       This worked correctly already for non-set-returning functions.
2126      </para>
2127     </listitem>
2128
2129     <listitem>
2130      <para>
2131       Fix rare crash in exception processing in PL/Python (Peter)
2132      </para>
2133     </listitem>
2134
2135     <listitem>
2136      <para>
2137       Fix <application>ecpg</> problem with comments in <literal>DECLARE
2138       CURSOR</> statements (Michael)
2139      </para>
2140     </listitem>
2141
2142     <listitem>
2143      <para>
2144       Fix <application>ecpg</> to not treat recently-added keywords as
2145       reserved words (Tom)
2146      </para>
2147
2148      <para>
2149       This affected the keywords <literal>CALLED</>, <literal>CATALOG</>,
2150       <literal>DEFINER</>, <literal>ENUM</>, <literal>FOLLOWING</>,
2151       <literal>INVOKER</>, <literal>OPTIONS</>, <literal>PARTITION</>,
2152       <literal>PRECEDING</>, <literal>RANGE</>, <literal>SECURITY</>,
2153       <literal>SERVER</>, <literal>UNBOUNDED</>, and <literal>WRAPPER</>.
2154      </para>
2155     </listitem>
2156
2157     <listitem>
2158      <para>
2159       Re-allow regular expression special characters in <application>psql</>'s
2160       <literal>\df</> function name parameter (Tom)
2161      </para>
2162     </listitem>
2163
2164     <listitem>
2165      <para>
2166       In <filename>contrib/fuzzystrmatch</>, correct the calculation of
2167       <function>levenshtein</> distances with non-default costs (Marcin Mank)
2168      </para>
2169     </listitem>
2170
2171     <listitem>
2172      <para>
2173       In <filename>contrib/pg_standby</>, disable triggering failover with a
2174       signal on Windows (Fujii Masao)
2175      </para>
2176
2177      <para>
2178       This never did anything useful, because Windows doesn't have Unix-style
2179       signals, but recent changes made it actually crash.
2180      </para>
2181     </listitem>
2182
2183     <listitem>
2184      <para>
2185       Put <literal>FREEZE</> and <literal>VERBOSE</> options in the right
2186       order in the <literal>VACUUM</> command that
2187       <filename>contrib/vacuumdb</> produces (Heikki)
2188      </para>
2189     </listitem>
2190
2191     <listitem>
2192      <para>
2193       Fix possible leak of connections when <filename>contrib/dblink</>
2194       encounters an error (Tatsuhito Kasahara)
2195      </para>
2196     </listitem>
2197
2198     <listitem>
2199      <para>
2200       Ensure <application>psql</>'s flex module is compiled with the correct
2201       system header definitions (Tom)
2202      </para>
2203
2204      <para>
2205       This fixes build failures on platforms where
2206       <literal>--enable-largefile</> causes incompatible changes in the
2207       generated code.
2208      </para>
2209     </listitem>
2210
2211     <listitem>
2212      <para>
2213       Make the postmaster ignore any <literal>application_name</> parameter in
2214       connection request packets, to improve compatibility with future libpq
2215       versions (Tom)
2216      </para>
2217     </listitem>
2218
2219     <listitem>
2220      <para>
2221       Update the timezone abbreviation files to match current reality (Joachim
2222       Wieland)
2223      </para>
2224
2225      <para>
2226       This includes adding <literal>IDT</> to the default
2227       timezone abbreviation set.
2228      </para>
2229     </listitem>
2230
2231     <listitem>
2232      <para>
2233       Update time zone data files to <application>tzdata</> release 2009s
2234       for DST law changes in Antarctica, Argentina, Bangladesh, Fiji,
2235       Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical
2236       corrections for Hong Kong.
2237      </para>
2238     </listitem>
2239
2240    </itemizedlist>
2241
2242   </sect2>
2243  </sect1>
2244
2245  <sect1 id="release-8-4-1">
2246   <title>Release 8.4.1</title>
2247
2248   <note>
2249   <title>Release date</title>
2250   <simpara>2009-09-09</simpara>
2251   </note>
2252
2253   <para>
2254    This release contains a variety of fixes from 8.4.
2255    For information about new features in the 8.4 major release, see
2256    <xref linkend="release-8-4">.
2257   </para>
2258
2259   <sect2>
2260    <title>Migration to Version 8.4.1</title>
2261
2262    <para>
2263     A dump/restore is not required for those running 8.4.X.
2264    </para>
2265
2266   </sect2>
2267
2268   <sect2>
2269    <title>Changes</title>
2270
2271    <itemizedlist>
2272
2273     <listitem>
2274      <para>
2275       Fix WAL page header initialization at the end of archive recovery
2276       (Heikki)
2277      </para>
2278
2279      <para>
2280       This could lead to failure to process the WAL in a subsequent
2281       archive recovery.
2282      </para>
2283     </listitem>
2284
2285     <listitem>
2286      <para>
2287       Fix <quote>cannot make new WAL entries during recovery</> error (Tom)
2288      </para>
2289     </listitem>
2290
2291     <listitem>
2292      <para>
2293       Fix problem that could make expired rows visible after a crash (Tom)
2294      </para>
2295
2296      <para>
2297       This bug involved a page status bit potentially not being set
2298       correctly after a server crash.
2299      </para>
2300     </listitem>
2301
2302     <listitem>
2303      <para>
2304       Disallow <command>RESET ROLE</> and <command>RESET SESSION
2305       AUTHORIZATION</> inside security-definer functions (Tom, Heikki)
2306      </para>
2307
2308      <para>
2309       This covers a case that was missed in the previous patch that
2310       disallowed <command>SET ROLE</> and <command>SET SESSION
2311       AUTHORIZATION</> inside security-definer functions.
2312       (See CVE-2007-6600)
2313      </para>
2314     </listitem>
2315
2316     <listitem>
2317      <para>
2318       Make <command>LOAD</> of an already-loaded loadable module
2319       into a no-op (Tom)
2320      </para>
2321
2322      <para>
2323       Formerly, <command>LOAD</> would attempt to unload and re-load the
2324       module, but this is unsafe and not all that useful.
2325      </para>
2326     </listitem>
2327
2328     <listitem>
2329      <para>
2330       Make window function <literal>PARTITION BY</> and <literal>ORDER BY</>
2331       items always be interpreted as simple expressions (Tom)
2332      </para>
2333
2334      <para>
2335       In 8.4.0 these lists were parsed following the rules used for
2336       top-level <literal>GROUP BY</> and <literal>ORDER BY</> lists.
2337       But this was not correct per the SQL standard, and it led to possible
2338       circularity.
2339      </para>
2340     </listitem>
2341
2342     <listitem>
2343      <para>
2344       Fix several errors in planning of semi-joins (Tom)
2345      </para>
2346
2347      <para>
2348       These led to wrong query results in some cases where <literal>IN</>
2349       or <literal>EXISTS</> was used together with another join.
2350      </para>
2351     </listitem>
2352
2353     <listitem>
2354      <para>
2355       Fix handling of whole-row references to subqueries that are within
2356       an outer join (Tom)
2357      </para>
2358
2359      <para>
2360       An example is
2361       <literal>SELECT COUNT(ss.*) FROM ... LEFT JOIN (SELECT ...) ss ON ...</>.
2362       Here, <literal>ss.*</> would be treated as <literal>ROW(NULL,NULL,...)</>
2363       for null-extended join rows, which is not the same as a simple NULL.
2364       Now it is treated as a simple NULL.
2365      </para>
2366     </listitem>
2367
2368     <listitem>
2369      <para>
2370       Fix Windows shared-memory allocation code (Tsutomu Yamada, Magnus)
2371      </para>
2372
2373      <para>
2374       This bug led to the often-reported <quote>could not reattach
2375       to shared memory</> error message.
2376      </para>
2377     </listitem>
2378
2379     <listitem>
2380      <para>
2381       Fix locale handling with plperl (Heikki)
2382      </para>
2383
2384      <para>
2385       This bug could cause the server's locale setting to change when a
2386       plperl function is called, leading to data corruption.
2387      </para>
2388     </listitem>
2389
2390     <listitem>
2391      <para>
2392       Fix handling of reloptions to ensure setting one option doesn't
2393       force default values for others (Itagaki Takahiro)
2394      </para>
2395     </listitem>
2396
2397     <listitem>
2398      <para>
2399       Ensure that a <quote>fast shutdown</> request will forcibly terminate
2400       open sessions, even if a <quote>smart shutdown</> was already in progress
2401       (Fujii Masao)
2402      </para>
2403     </listitem>
2404
2405     <listitem>
2406      <para>
2407       Avoid memory leak for <function>array_agg()</> in <literal>GROUP BY</>
2408       queries (Tom)
2409      </para>
2410     </listitem>
2411
2412     <listitem>
2413      <para>
2414       Treat <function>to_char(..., 'TH')</> as an uppercase ordinal
2415       suffix with <literal>'HH'</>/<literal>'HH12'</> (Heikki)
2416      </para>
2417
2418      <para>
2419       It was previously handled as <literal>'th'</> (lowercase).
2420      </para>
2421     </listitem>
2422
2423     <listitem>
2424      <para>
2425       Include the fractional part in the result of
2426       <function>EXTRACT(second)</> and
2427       <function>EXTRACT(milliseconds)</> for
2428       <type>time</> and <type>time with time zone</> inputs (Tom)
2429      </para>
2430
2431      <para>
2432       This has always worked for floating-point datetime configurations,
2433       but was broken in the integer datetime code.
2434      </para>
2435     </listitem>
2436
2437     <listitem>
2438      <para>
2439       Fix overflow for <literal>INTERVAL '<replaceable>x</> ms'</literal>
2440       when <replaceable>x</> is more than 2 million and integer
2441       datetimes are in use (Alex Hunsaker)
2442      </para>
2443     </listitem>
2444
2445     <listitem>
2446      <para>
2447       Improve performance when processing toasted values in index scans (Tom)
2448      </para>
2449
2450      <para>
2451       This is particularly useful for <ulink
2452       url="http://postgis.refractions.net/">PostGIS</ulink>.
2453      </para>
2454     </listitem>
2455
2456     <listitem>
2457      <para>
2458       Fix a typo that disabled <varname>commit_delay</> (Jeff Janes)
2459      </para>
2460     </listitem>
2461
2462     <listitem>
2463      <para>
2464       Output early-startup messages to <filename>postmaster.log</> if the
2465       server is started in silent mode (Tom)
2466      </para>
2467
2468      <para>
2469       Previously such error messages were discarded, leading to
2470       difficulty in debugging.
2471      </para>
2472     </listitem>
2473
2474     <listitem>
2475      <para>
2476       Remove translated FAQs (Peter)
2477      </para>
2478
2479      <para>
2480       They are now on the <ulink
2481       url="http://wiki.postgresql.org/wiki/FAQ">wiki</ulink>.  The
2482       main FAQ was moved to the wiki some time ago.
2483      </para>
2484     </listitem>
2485
2486     <listitem>
2487      <para>
2488       Fix <application>pg_ctl</> to not go into an infinite loop if
2489       <filename>postgresql.conf</> is empty (Jeff Davis)
2490      </para>
2491     </listitem>
2492
2493     <listitem>
2494      <para>
2495       Fix several errors in <application>pg_dump</>'s
2496       <literal>--binary-upgrade</> mode (Bruce, Tom)
2497      </para>
2498
2499      <para>
2500       <literal>pg_dump --binary-upgrade</> is used by pg_migrator.
2501      </para>
2502     </listitem>
2503
2504     <listitem>
2505      <para>
2506       Fix <filename>contrib/xml2</>'s <function>xslt_process()</> to
2507       properly handle the maximum number of parameters (twenty) (Tom)
2508      </para>
2509     </listitem>
2510
2511     <listitem>
2512      <para>
2513       Improve robustness of <application>libpq</>'s code to recover
2514       from errors during <command>COPY FROM STDIN</> (Tom)
2515      </para>
2516     </listitem>
2517
2518     <listitem>
2519      <para>
2520       Avoid including conflicting readline and editline header files
2521       when both libraries are installed (Zdenek Kotala)
2522      </para>
2523     </listitem>
2524
2525     <listitem>
2526      <para>
2527       Work around gcc bug that causes <quote>floating-point exception</>
2528       instead of <quote>division by zero</> on some platforms (Tom)
2529      </para>
2530     </listitem>
2531
2532     <listitem>
2533      <para>
2534       Update time zone data files to <application>tzdata</> release 2009l
2535       for DST law changes in Bangladesh, Egypt, Mauritius.
2536      </para>
2537     </listitem>
2538
2539    </itemizedlist>
2540
2541   </sect2>
2542  </sect1>
2543
2544  <sect1 id="release-8-4">
2545   <title>Release 8.4</title>
2546
2547   <note>
2548    <title>Release date</title>
2549    <simpara>2009-07-01</simpara>
2550   </note>
2551
2552   <sect2>
2553    <title>Overview</title>
2554
2555    <para>
2556     After many years of development, <productname>PostgreSQL</> has
2557     become feature-complete in many areas.   This release shows a
2558     targeted approach to adding features (e.g., authentication,
2559     monitoring, space reuse), and adds capabilities defined in the
2560     later SQL standards.  The major areas of enhancement are:
2561    </para>
2562
2563    <itemizedlist>
2564
2565     <!-- This list duplicates items below, but without authors or details-->
2566
2567     <listitem>
2568      <para>
2569       Windowing Functions
2570      </para>
2571     </listitem>
2572
2573     <listitem>
2574      <para>
2575       Common Table Expressions and Recursive Queries
2576      </para>
2577     </listitem>
2578
2579     <listitem>
2580      <para>
2581       Default and variadic parameters for functions
2582      </para>
2583     </listitem>
2584
2585     <listitem>
2586      <para>
2587       Parallel Restore
2588      </para>
2589     </listitem>
2590
2591     <listitem>
2592      <para>
2593       Column Permissions
2594      </para>
2595     </listitem>
2596
2597     <listitem>
2598      <para>
2599       Per-database locale settings
2600      </para>
2601     </listitem>
2602
2603     <listitem>
2604      <para>
2605       Improved hash indexes
2606      </para>
2607     </listitem>
2608
2609     <listitem>
2610      <para>
2611       Improved join performance for <literal>EXISTS</> and <literal>NOT EXISTS</> queries
2612      </para>
2613     </listitem>
2614
2615     <listitem>
2616      <para>
2617       Easier-to-use Warm Standby
2618      </para>
2619     </listitem>
2620
2621     <listitem>
2622      <para>
2623       Automatic sizing of the Free Space Map
2624      </para>
2625     </listitem>
2626
2627     <listitem>
2628      <para>
2629       Visibility Map (greatly reduces vacuum overhead for slowly-changing tables)
2630      </para>
2631     </listitem>
2632
2633     <listitem>
2634      <para>
2635       Version-aware psql (backslash commands work against older servers)
2636      </para>
2637     </listitem>
2638
2639     <listitem>
2640      <para>
2641       Support SSL certificates for user authentication
2642      </para>
2643     </listitem>
2644
2645     <listitem>
2646      <para>
2647       Per-function runtime statistics
2648      </para>
2649     </listitem>
2650
2651     <listitem>
2652      <para>
2653       Easy editing of functions in psql
2654      </para>
2655     </listitem>
2656
2657     <listitem>
2658      <para>
2659       New contrib modules: pg_stat_statements, auto_explain, citext, btree_gin
2660      </para>
2661     </listitem>
2662
2663    </itemizedlist>
2664
2665    <para>
2666     The above items are explained in more detail in the sections below.
2667    </para>
2668
2669   </sect2>
2670
2671   <sect2>
2672    <title>Migration to Version 8.4</title>
2673
2674    <para>
2675     A dump/restore using <application>pg_dump</application> is
2676     required for those wishing to migrate data from any previous
2677     release.
2678    </para>
2679
2680    <para>
2681     Observe the following incompatibilities:
2682    </para>
2683
2684    <sect3>
2685     <title>General</title>
2686     <itemizedlist>
2687
2688      <listitem>
2689       <para>
2690        Use 64-bit integer datetimes by default (Neil Conway)
2691       </para>
2692
2693       <para>
2694        Previously this was selected by <application>configure</>'s
2695        <option>--enable-integer-datetimes</> option.  To retain
2696        the old behavior, build with <option>--disable-integer-datetimes</>.
2697       </para>
2698      </listitem>
2699
2700      <listitem>
2701       <para>
2702        Remove <application>ipcclean</> utility command (Bruce)
2703       </para>
2704
2705       <para>
2706        The utility only worked on a few platforms.  Users should use
2707        their operating system tools instead.
2708       </para>
2709      </listitem>
2710
2711     </itemizedlist>
2712
2713    </sect3>
2714
2715    <sect3>
2716     <title>Server Settings</title>
2717     <itemizedlist>
2718
2719      <listitem>
2720       <para>
2721        Change default setting for
2722        <literal>log_min_messages</> to <literal>warning</> (previously
2723        it was <literal>notice</>) to reduce log file volume (Tom)
2724       </para>
2725      </listitem>
2726
2727      <listitem>
2728       <para>
2729        Change default setting for <literal>max_prepared_transactions</> to
2730        zero (previously it was 5) (Tom)
2731       </para>
2732      </listitem>
2733
2734      <listitem>
2735       <para>
2736        Make <literal>debug_print_parse</>, <literal>debug_print_rewritten</>,
2737        and <literal>debug_print_plan</>
2738        output appear at <literal>LOG</> message level, not
2739        <literal>DEBUG1</> as formerly (Tom)
2740       </para>
2741      </listitem>
2742
2743      <listitem>
2744       <para>
2745        Make <literal>debug_pretty_print</> default to <literal>on</> (Tom)
2746       </para>
2747      </listitem>
2748
2749      <listitem>
2750       <para>
2751        Remove <varname>explain_pretty_print</> parameter (no longer needed) (Tom)
2752       </para>
2753      </listitem>
2754
2755      <listitem>
2756       <para>
2757        Make <varname>log_temp_files</> settable by superusers only, like other
2758        logging options (Simon Riggs)
2759       </para>
2760      </listitem>
2761
2762      <listitem>
2763       <para>
2764        Remove automatic appending of the epoch timestamp when no <literal>%</>
2765        escapes are present in <literal>log_filename</> (Robert Haas)
2766       </para>
2767
2768       <para>
2769        This change was made because some users wanted a fixed log filename,
2770        for use with an external log rotation tool.
2771       </para>
2772      </listitem>
2773
2774      <listitem>
2775       <para>
2776        Remove <varname>log_restartpoints</> from <filename>recovery.conf</>;
2777        instead use <varname>log_checkpoints</> (Simon)
2778       </para>
2779      </listitem>
2780
2781      <listitem>
2782       <para>
2783        Remove <varname>krb_realm</> and <varname>krb_server_hostname</>;
2784        these are now set in <filename>pg_hba.conf</> instead (Magnus)
2785       </para>
2786      </listitem>
2787
2788      <listitem>
2789       <para>
2790        There are also significant changes in <link
2791        linkend="release-8-4-pg-hba-conf"><filename>pg_hba.conf</></link>,
2792        as described below.
2793       </para>
2794      </listitem>
2795
2796     </itemizedlist>
2797
2798    </sect3>
2799
2800    <sect3>
2801     <title>Queries</title>
2802
2803     <itemizedlist>
2804
2805      <listitem>
2806       <para>
2807        Change <command>TRUNCATE</> and <command>LOCK</> to
2808        apply to child tables of the specified table(s) (Peter)
2809       </para>
2810
2811       <para>
2812        These commands now accept an <literal>ONLY</> option that prevents
2813        processing child tables; this option must be used if the old
2814        behavior is needed.
2815       </para>
2816      </listitem>
2817
2818      <listitem>
2819       <para>
2820        <command>SELECT DISTINCT</> and
2821        <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</>
2822        no longer always produce sorted output (Tom)
2823       </para>
2824
2825       <para>
2826        Previously, these types of queries always removed duplicate rows
2827        by means of Sort/Unique processing (i.e., sort then remove adjacent
2828        duplicates).  Now they can be implemented by hashing, which will not
2829        produce sorted output.  If an application relied on the output being
2830        in sorted order, the recommended fix is to add an <literal>ORDER BY</>
2831        clause.  As a short-term workaround, the previous behavior can be
2832        restored by disabling <literal>enable_hashagg</>, but that is a very
2833        performance-expensive fix.  <literal>SELECT DISTINCT ON</> never uses
2834        hashing, however, so its behavior is unchanged.
2835       </para>
2836      </listitem>
2837
2838      <listitem>
2839       <para>
2840        Force child tables to inherit <literal>CHECK</> constraints from parents
2841        (Alex Hunsaker, Nikhil Sontakke, Tom)
2842       </para>
2843
2844       <para>
2845        Formerly it was possible to drop such a constraint from a child
2846        table, allowing rows that violate the constraint to be visible
2847        when scanning the parent table.  This was deemed inconsistent,
2848        as well as contrary to SQL standard.
2849       </para>
2850      </listitem>
2851
2852      <listitem>
2853       <para>
2854        Disallow negative <literal>LIMIT</> or <literal>OFFSET</>
2855        values, rather than treating them as zero (Simon)
2856       </para>
2857      </listitem>
2858
2859      <listitem>
2860       <para>
2861        Disallow <command>LOCK TABLE</> outside a transaction block
2862        (Tom)
2863       </para>
2864
2865       <para>
2866        Such an operation is useless because the lock would be released
2867        immediately.
2868       </para>
2869      </listitem>
2870
2871      <listitem>
2872       <para>
2873        Sequences now contain an additional <structfield>start_value</> column
2874        (Zoltan Boszormenyi)
2875       </para>
2876
2877       <para>
2878        This supports <command>ALTER SEQUENCE ... RESTART</>.
2879       </para>
2880      </listitem>
2881
2882     </itemizedlist>
2883
2884    </sect3>
2885
2886
2887    <sect3>
2888     <title>Functions and Operators</title>
2889
2890     <itemizedlist>
2891
2892      <listitem>
2893       <para>
2894        Make <type>numeric</> zero raised to a fractional power return
2895        <literal>0</>, rather than throwing an error, and make
2896        <type>numeric</> zero raised to the zero power return <literal>1</>,
2897        rather than error (Bruce)
2898       </para>
2899
2900       <para>
2901        This matches the longstanding <type>float8</> behavior.
2902       </para>
2903      </listitem>
2904
2905      <listitem>
2906       <para>
2907        Allow unary minus of floating-point values to produce minus zero (Tom)
2908       </para>
2909
2910       <para>
2911        The changed behavior is more <acronym>IEEE</>-standard
2912        compliant.
2913       </para>
2914      </listitem>
2915
2916      <listitem>
2917       <para>
2918        Throw an error if an escape character is the last character in
2919        a <literal>LIKE</> pattern (i.e., it has nothing to escape) (Tom)
2920       </para>
2921
2922       <para>
2923        Previously, such an escape character was silently ignored,
2924        thus possibly masking application logic errors.
2925       </para>
2926      </listitem>
2927
2928      <listitem>
2929       <para>
2930        Remove <literal>~=~</> and <literal>~&lt;&gt;~</> operators
2931        formerly used for <literal>LIKE</> index comparisons (Tom)
2932       </para>
2933
2934       <para>
2935        Pattern indexes now use the regular equality operator.
2936       </para>
2937      </listitem>
2938
2939      <listitem>
2940       <para>
2941        <function>xpath()</> now passes its arguments to <application>libxml</>
2942        without any changes (Andrew)
2943       </para>
2944
2945       <para>
2946        This means that the XML argument must be a well-formed XML document.
2947        The previous coding attempted to allow XML fragments, but it did not
2948        work well.
2949       </para>
2950      </listitem>
2951
2952      <listitem>
2953       <para>
2954        Make <function>xmlelement()</> format attribute values just like
2955        content values (Peter)
2956       </para>
2957
2958       <para>
2959        Previously, attribute values were formatted according to the
2960        normal SQL output behavior, which is sometimes at odds with
2961        XML rules.
2962       </para>
2963      </listitem>
2964
2965      <listitem>
2966       <para>
2967        Rewrite memory management for <application>libxml</>-using functions
2968        (Tom)
2969       </para>
2970
2971       <para>
2972        This change should avoid some compatibility problems with use of
2973        <application>libxml</> in PL/Perl and other add-on code.
2974       </para>
2975      </listitem>
2976
2977      <listitem>
2978       <para>
2979        Adopt a faster algorithm for hash functions (Kenneth Marshall,
2980        based on work of Bob Jenkins)
2981       </para>
2982
2983       <para>
2984        Many of the built-in hash functions now deliver different results on
2985        little-endian and big-endian platforms.
2986       </para>
2987      </listitem>
2988
2989     </itemizedlist>
2990
2991     <sect4>
2992      <title>Temporal Functions and Operators</title>
2993
2994      <itemizedlist>
2995
2996       <listitem>
2997        <para>
2998         <varname>DateStyle</> no longer controls <type>interval</> output
2999         formatting; instead there is a new variable <varname>IntervalStyle</>
3000         (Ron Mayer)
3001        </para>
3002       </listitem>
3003
3004       <listitem>
3005        <para>
3006         Improve consistency of handling of fractional seconds in
3007         <type>timestamp</> and <type>interval</> output (Ron Mayer)
3008        </para>
3009
3010        <para>
3011         This may result in displaying a different number of fractional
3012         digits than before, or rounding instead of truncating.
3013        </para>
3014       </listitem>
3015
3016       <listitem>
3017        <para>
3018         Make <function>to_char()</>'s localized month/day names depend
3019         on <varname>LC_TIME</>, not <varname>LC_MESSAGES</> (Euler
3020         Taveira de Oliveira)
3021        </para>
3022       </listitem>
3023
3024       <listitem>
3025        <para>
3026         Cause <function>to_date()</> and <function>to_timestamp()</>
3027         to more consistently report errors for invalid input (Brendan
3028         Jurd)
3029        </para>
3030
3031        <para>
3032         Previous versions would often ignore or silently misread input
3033         that did not match the format string.  Such cases will now
3034         result in an error.
3035        </para>
3036       </listitem>
3037
3038       <listitem>
3039        <para>
3040         Fix <function>to_timestamp()</> to not require upper/lower case
3041         matching for meridian (<literal>AM</>/<literal>PM</>) and era
3042         (<literal>BC</>/<literal>AD</>) format designations  (Brendan
3043         Jurd)
3044        </para>
3045
3046        <para>
3047         For example, input value <literal>ad</> now matches the format
3048         string <literal>AD</>.
3049        </para>
3050       </listitem>
3051
3052      </itemizedlist>
3053
3054     </sect4>
3055
3056    </sect3>
3057
3058   </sect2>
3059
3060   <sect2>
3061    <title>Changes</title>
3062
3063    <para>
3064     Below you will find a detailed account of the changes between
3065     <productname>PostgreSQL</productname> 8.4 and the previous major
3066     release.
3067    </para>
3068
3069    <sect3>
3070     <title>Performance</title>
3071     <itemizedlist>
3072
3073      <listitem>
3074       <para>
3075        Improve optimizer statistics calculations (Jan Urbanski, Tom)
3076       </para>
3077
3078       <para>
3079        In particular, estimates for full-text-search operators are
3080        greatly improved.
3081       </para>
3082      </listitem>
3083
3084      <listitem>
3085       <para>
3086        Allow <command>SELECT DISTINCT</> and
3087        <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> to
3088        use hashing (Tom)
3089       </para>
3090
3091       <para>
3092        This means that these types of queries no longer automatically
3093        produce sorted output.
3094       </para>
3095      </listitem>
3096
3097      <listitem>
3098       <para>
3099        Create explicit concepts of semi-joins and anti-joins (Tom)
3100       </para>
3101
3102       <para>
3103        This work formalizes our previous ad-hoc treatment of <literal>IN
3104        (SELECT ...)</> clauses, and extends it to <literal>EXISTS</> and
3105        <literal>NOT EXISTS</> clauses.  It should result in significantly
3106        better planning of <literal>EXISTS</> and <literal>NOT EXISTS</>
3107        queries.  In general, logically equivalent <literal>IN</> and
3108        <literal>EXISTS</> clauses should now have similar performance,
3109        whereas previously <literal>IN</> often won.
3110       </para>
3111      </listitem>
3112
3113      <listitem>
3114       <para>
3115        Improve optimization of sub-selects beneath outer joins (Tom)
3116       </para>
3117
3118       <para>
3119        Formerly, a sub-select or view could not be optimized very well if it
3120        appeared within the nullable side of an outer join and contained
3121        non-strict expressions (for instance, constants) in its result list.
3122       </para>
3123      </listitem>
3124
3125      <listitem>
3126       <para>
3127        Improve the performance of <function>text_position()</> and
3128        related functions by using Boyer-Moore-Horspool searching (David
3129        Rowley)
3130       </para>
3131
3132       <para>
3133        This is particularly helpful for long search patterns.
3134       </para>
3135      </listitem>
3136
3137      <listitem>
3138       <para>
3139        Reduce I/O load of writing the statistics collection file
3140        by writing the file only when requested (Martin Pihlak)
3141       </para>
3142      </listitem>
3143
3144      <listitem>
3145       <para>
3146        Improve performance for bulk inserts (Robert Haas, Simon)
3147       </para>
3148      </listitem>
3149
3150      <listitem>
3151       <para>
3152        Increase the default value of <varname>default_statistics_target</>
3153        from <literal>10</> to <literal>100</> (Greg Sabino Mullane,
3154        Tom)
3155       </para>
3156
3157       <para>
3158        The maximum value was also increased from <literal>1000</> to
3159        <literal>10000</>.
3160       </para>
3161      </listitem>
3162
3163      <listitem>
3164       <para>
3165        Perform <varname>constraint_exclusion</> checking by default
3166        in queries involving inheritance or <literal>UNION ALL</> (Tom)
3167       </para>
3168
3169       <para>
3170        A new <varname>constraint_exclusion</> setting,
3171        <literal>partition</>, was added to specify this behavior.
3172       </para>
3173      </listitem>
3174
3175      <listitem>
3176       <para>
3177        Allow I/O read-ahead for bitmap index scans (Greg Stark)
3178       </para>
3179
3180       <para>
3181        The amount of read-ahead is controlled by
3182        <varname>effective_io_concurrency</>.  This feature is available only
3183        if the kernel has <function>posix_fadvise()</> support.
3184       </para>
3185      </listitem>
3186
3187      <listitem>
3188       <para>
3189        Inline simple set-returning <acronym>SQL</> functions in
3190        <literal>FROM</> clauses (Richard Rowell)
3191       </para>
3192      </listitem>
3193
3194      <listitem>
3195       <para>
3196        Improve performance of multi-batch hash joins by providing a special
3197        case for join key values that are especially common in the outer
3198        relation (Bryce Cutt, Ramon Lawrence)
3199       </para>
3200      </listitem>
3201
3202      <listitem>
3203       <para>
3204        Reduce volume of temporary data in multi-batch hash joins
3205        by suppressing <quote>physical tlist</> optimization (Michael
3206        Henderson, Ramon Lawrence)
3207       </para>
3208      </listitem>
3209
3210      <listitem>
3211       <para>
3212        Avoid waiting for idle-in-transaction sessions during
3213        <command>CREATE INDEX CONCURRENTLY</> (Simon)
3214       </para>
3215      </listitem>
3216
3217      <listitem>
3218       <para>
3219        Improve performance of shared cache invalidation (Tom)
3220       </para>
3221      </listitem>
3222
3223     </itemizedlist>
3224
3225    </sect3>
3226
3227    <sect3>
3228     <title>Server</title>
3229
3230     <sect4>
3231      <title>Settings</title>
3232
3233      <itemizedlist>
3234
3235       <listitem>
3236        <para>
3237         Convert many <filename>postgresql.conf</> settings to enumerated
3238         values so that <literal>pg_settings</> can display the valid
3239         values (Magnus)
3240        </para>
3241       </listitem>
3242
3243       <listitem>
3244        <para>
3245         Add <varname>cursor_tuple_fraction</> parameter to control the
3246         fraction of a cursor's rows that the planner assumes will be
3247         fetched (Robert Hell)
3248        </para>
3249       </listitem>
3250
3251       <listitem>
3252        <para>
3253         Allow underscores in the names of custom variable
3254         classes in <filename>postgresql.conf</> (Tom)
3255        </para>
3256       </listitem>
3257
3258      </itemizedlist>
3259
3260     </sect4>
3261
3262     <sect4>
3263      <title>Authentication and security</title>
3264      <itemizedlist>
3265
3266       <listitem>
3267        <para>
3268         Remove support for the (insecure) <literal>crypt</> authentication method
3269         (Magnus)
3270        </para>
3271
3272        <para>
3273         This effectively obsoletes pre-<productname>PostgreSQL</> 7.2 client
3274         libraries, as there is no longer any non-plaintext password method that
3275         they can use.
3276        </para>
3277       </listitem>
3278
3279       <listitem>
3280        <para>
3281         Support regular expressions in <filename>pg_ident.conf</>
3282         (Magnus)
3283        </para>
3284       </listitem>
3285
3286       <listitem>
3287        <para>
3288         Allow <productname>Kerberos</>/<acronym>GSSAPI</> parameters
3289         to be changed without restarting the postmaster (Magnus)
3290        </para>
3291       </listitem>
3292
3293       <listitem>
3294        <para>
3295         Support <acronym>SSL</> certificate chains in server certificate
3296         file (Andrew Gierth)
3297        </para>
3298
3299        <para>
3300         Including the full certificate chain makes the client able
3301         to verify the certificate without having all intermediate CA
3302         certificates present in the local store, which is often the case for
3303         commercial CAs.
3304        </para>
3305       </listitem>
3306
3307       <listitem>
3308        <para>
3309         Report appropriate error message for combination of <literal>MD5</>
3310         authentication and <varname>db_user_namespace</> enabled (Bruce)
3311        </para>
3312       </listitem>
3313      </itemizedlist>
3314
3315     </sect4>
3316
3317     <sect4 id="release-8-4-pg-hba-conf">
3318      <title><filename>pg_hba.conf</></title>
3319      <itemizedlist>
3320
3321       <listitem>
3322        <para>
3323         Change all authentication options to use <literal>name=value</>
3324         syntax (Magnus)
3325        </para>
3326
3327        <para>
3328         This makes incompatible changes to the <literal>ldap</>,
3329         <literal>pam</> and <literal>ident</> authentication methods. All
3330         <filename>pg_hba.conf</> entries with these methods need to be
3331         rewritten using the new format.
3332        </para>
3333       </listitem>
3334
3335       <listitem>
3336        <para>
3337         Remove the <literal>ident sameuser</> option, instead making that
3338         behavior the default if no usermap is specified (Magnus)
3339        </para>
3340       </listitem>
3341
3342       <listitem>
3343        <para>
3344         Allow a usermap parameter for all external authentication methods
3345         (Magnus)
3346        </para>
3347
3348        <para>
3349         Previously a usermap was only supported for <literal>ident</>
3350         authentication.
3351        </para>
3352       </listitem>
3353
3354       <listitem>
3355        <para>
3356         Add <literal>clientcert</> option to control requesting of a
3357         client certificate (Magnus)
3358        </para>
3359
3360        <para>
3361         Previously this was controlled by the presence of a root
3362         certificate file in the server's data directory.
3363        </para>
3364       </listitem>
3365
3366       <listitem>
3367        <para>
3368         Add <literal>cert</> authentication method to allow
3369         <emphasis>user</> authentication via <acronym>SSL</> certificates
3370         (Magnus)
3371        </para>
3372
3373        <para>
3374         Previously <acronym>SSL</> certificates could only verify that
3375         the client had access to a certificate, not authenticate a
3376         user.
3377        </para>
3378       </listitem>
3379
3380       <listitem>
3381        <para>
3382         Allow <literal>krb5</>, <literal>gssapi</> and <literal>sspi</>
3383         realm and <literal>krb5</> host settings to be specified in
3384         <filename>pg_hba.conf</> (Magnus)
3385        </para>
3386
3387        <para>
3388         These override the settings in <filename>postgresql.conf</>.
3389        </para>
3390       </listitem>
3391
3392       <listitem>
3393        <para>
3394         Add <varname>include_realm</> parameter for <literal>krb5</>,
3395         <literal>gssapi</>, and <literal>sspi</> methods (Magnus)
3396        </para>
3397
3398        <para>
3399         This allows identical usernames from different realms to be
3400         authenticated as different database users using usermaps.
3401        </para>
3402       </listitem>
3403
3404       <listitem>
3405        <para>
3406         Parse <filename>pg_hba.conf</> fully when it is loaded,
3407         so that errors are reported immediately (Magnus)
3408        </para>
3409
3410        <para>
3411         Previously, most errors in the file wouldn't be detected until clients
3412         tried to connect, so an erroneous file could render the system
3413         unusable.  With the new behavior, if an error is detected during
3414         reload then the bad file is rejected and the postmaster continues
3415         to use its old copy.
3416        </para>
3417       </listitem>
3418
3419       <listitem>
3420        <para>
3421         Show all parsing errors in <filename>pg_hba.conf</> instead of
3422         aborting after the first one (Selena Deckelmann)
3423        </para>
3424       </listitem>
3425
3426       <listitem>
3427        <para>
3428         Support <literal>ident</> authentication over Unix-domain sockets
3429         on <productname>Solaris</> (Garick Hamlin)
3430        </para>
3431       </listitem>
3432
3433      </itemizedlist>
3434
3435     </sect4>
3436
3437     <sect4>
3438      <title>Continuous Archiving</title>
3439      <itemizedlist>
3440
3441       <listitem>
3442        <para>
3443         Provide an option to <function>pg_start_backup()</> to force its
3444         implied checkpoint to finish as quickly as possible (Tom)
3445        </para>
3446
3447        <para>
3448         The default behavior avoids excess I/O consumption, but that is
3449         pointless if no concurrent query activity is going on.
3450        </para>
3451       </listitem>
3452
3453       <listitem>
3454        <para>
3455         Make <function>pg_stop_backup()</> wait for modified <acronym>WAL</>
3456         files to be archived (Simon)
3457        </para>
3458
3459        <para>
3460         This guarantees that the backup is valid at the time
3461         <function>pg_stop_backup()</> completes.
3462        </para>
3463       </listitem>
3464
3465       <listitem>
3466        <para>
3467         When archiving is enabled, rotate the last WAL segment at shutdown
3468         so that all transactions can be archived immediately
3469         (Guillaume Smet, Heikki)
3470        </para>
3471       </listitem>
3472
3473       <listitem>
3474        <para>
3475         Delay <quote>smart</> shutdown while a continuous archiving base backup
3476         is in progress (Laurenz Albe)
3477        </para>
3478       </listitem>
3479
3480       <listitem>
3481        <para>
3482         Cancel a continuous archiving base backup if <quote>fast</> shutdown
3483         is requested (Laurenz Albe)
3484        </para>
3485       </listitem>
3486
3487       <listitem>
3488        <para>
3489         Allow <filename>recovery.conf</> boolean variables to take the
3490         same range of string values as <filename>postgresql.conf</>
3491         boolean variables
3492         (Bruce)
3493        </para>
3494       </listitem>
3495
3496      </itemizedlist>
3497
3498     </sect4>
3499
3500     <sect4>
3501      <title>Monitoring</title>
3502      <itemizedlist>
3503
3504       <listitem>
3505        <para>
3506         Add <function>pg_conf_load_time()</> to report when
3507         the <productname>PostgreSQL</> configuration files were last loaded
3508         (George Gensure)
3509        </para>
3510       </listitem>
3511
3512       <listitem>
3513        <para>
3514         Add <function>pg_terminate_backend()</> to safely terminate a
3515         backend (the <literal>SIGTERM</> signal works also) (Tom, Bruce)
3516        </para>
3517
3518        <para>
3519         While it's always been possible to <literal>SIGTERM</> a single
3520         backend, this was previously considered unsupported; and testing
3521         of the case found some bugs that are now fixed.
3522        </para>
3523       </listitem>
3524
3525       <listitem>
3526        <para>
3527         Add ability to track user-defined functions' call counts and
3528         runtimes (Martin Pihlak)
3529        </para>
3530
3531        <para>
3532         Function statistics appear in a new system view,
3533         <literal>pg_stat_user_functions</>.  Tracking is controlled
3534         by the new parameter <varname>track_functions</>.
3535        </para>
3536       </listitem>
3537
3538       <listitem>
3539        <para>
3540         Allow specification of the maximum query string size in
3541         <literal>pg_stat_activity</> via new
3542         <varname>track_activity_query_size</> parameter (Thomas Lee)
3543        </para>
3544       </listitem>
3545
3546       <listitem>
3547        <para>
3548         Increase the maximum line length sent to <application>syslog</>, in
3549         hopes of improving performance (Tom)
3550        </para>
3551       </listitem>
3552
3553       <listitem>
3554        <para>
3555         Add read-only configuration variables <varname>segment_size</>,
3556         <varname>wal_block_size</>, and <varname>wal_segment_size</>
3557         (Bernd Helmle)
3558        </para>
3559       </listitem>
3560
3561       <listitem>
3562        <para>
3563         When reporting a deadlock, report the text of all queries involved
3564         in the deadlock to the server log  (Itagaki Takahiro)
3565        </para>
3566       </listitem>
3567
3568       <listitem>
3569        <para>
3570         Add <function>pg_stat_get_activity(pid)</> function to return
3571         information about a specific process id (Magnus)
3572        </para>
3573       </listitem>
3574
3575       <listitem>
3576        <para>
3577         Allow the location of the server's statistics file to be specified
3578         via <varname>stats_temp_directory</> (Magnus)
3579        </para>
3580
3581        <para>
3582         This allows the statistics file to be placed in a
3583         <acronym>RAM</>-resident directory to reduce I/O requirements.
3584         On startup/shutdown, the file is copied to its traditional location
3585         (<literal>$PGDATA/global/</>) so it is preserved across restarts.
3586        </para>
3587       </listitem>
3588
3589      </itemizedlist>
3590
3591     </sect4>
3592
3593    </sect3>
3594
3595    <sect3>
3596     <title>Queries</title>
3597     <itemizedlist>
3598
3599      <listitem>
3600       <para>
3601        Add support for <literal>WINDOW</> functions (Hitoshi Harada)
3602       </para>
3603      </listitem>
3604
3605      <listitem>
3606       <para>
3607        Add support for <literal>WITH</> clauses (CTEs), including <literal>WITH
3608        RECURSIVE</> (Yoshiyuki Asaba, Tatsuo Ishii, Tom)
3609       </para>
3610      </listitem>
3611
3612      <listitem>
3613       <para>
3614        Add <command>TABLE</> command (Peter)
3615       </para>
3616
3617       <para>
3618        <literal>TABLE tablename</> is a SQL standard short-hand for
3619        <literal>SELECT * FROM tablename</>.
3620       </para>
3621      </listitem>
3622
3623      <listitem>
3624       <para>
3625        Allow <literal>AS</> to be optional when specifying a
3626        <command>SELECT</> (or <literal>RETURNING</>) column output
3627        label (Hiroshi Saito)
3628       </para>
3629
3630       <para>
3631        This works so long as the column label is not any
3632        <productname>PostgreSQL</> keyword; otherwise <literal>AS</> is still
3633        needed.
3634       </para>
3635      </listitem>
3636
3637      <listitem>
3638       <para>
3639        Support set-returning functions in <command>SELECT</> result lists
3640        even for functions that return their result via a tuplestore (Tom)
3641       </para>
3642
3643       <para>
3644        In particular, this means that functions written in PL/pgSQL
3645        and other PL languages can now be called this way.
3646       </para>
3647      </listitem>
3648
3649      <listitem>
3650       <para>
3651        Support set-returning functions in the output of aggregation
3652        and grouping queries (Tom)
3653       </para>
3654      </listitem>
3655
3656      <listitem>
3657       <para>
3658        Allow <command>SELECT FOR UPDATE</>/<literal>SHARE</> to work
3659        on inheritance trees (Tom)
3660       </para>
3661      </listitem>
3662
3663      <listitem>
3664       <para>
3665        Add infrastructure for <acronym>SQL/MED</> (Martin Pihlak,
3666        Peter)
3667       </para>
3668
3669       <para>
3670        There are no remote or external <acronym>SQL/MED</> capabilities
3671        yet, but this change provides a standardized and future-proof
3672        system for managing connection information for modules like
3673        <filename>dblink</> and <filename>plproxy</>.
3674       </para>
3675      </listitem>
3676
3677      <listitem>
3678       <para>
3679        Invalidate cached plans when referenced schemas, functions, operators,
3680        or operator classes are modified (Martin Pihlak, Tom)
3681       </para>
3682
3683       <para>
3684        This improves the system's ability to respond to on-the-fly
3685        DDL changes.
3686       </para>
3687      </listitem>
3688      <listitem>
3689       <para>
3690        Allow comparison of composite types and allow arrays of
3691        anonymous composite types (Tom)
3692       </para>
3693
3694       <para>
3695        This allows constructs such as
3696        <literal>row(1, 1.1) = any (array[row(7, 7.7), row(1, 1.0)])</>.
3697        This is particularly useful in recursive queries.
3698       </para>
3699      </listitem>
3700
3701      <listitem>
3702       <para>
3703        Add support for Unicode string literal and identifier specifications
3704        using code points, e.g. <literal>U&amp;'d\0061t\+000061'</>
3705        (Peter)
3706       </para>
3707      </listitem>
3708
3709      <listitem>
3710       <para>
3711        Reject <literal>\000</> in string literals and <command>COPY</> data
3712        (Tom)
3713       </para>
3714
3715       <para>
3716        Previously, this was accepted but had the effect of terminating
3717        the string contents.
3718       </para>
3719      </listitem>
3720
3721      <listitem>
3722       <para>
3723        Improve the parser's ability to report error locations (Tom)
3724       </para>
3725
3726       <para>
3727        An error location is now reported for many semantic errors,
3728        such as mismatched datatypes, that previously could not be localized.
3729       </para>
3730      </listitem>
3731
3732     </itemizedlist>
3733
3734     <sect4>
3735      <title><command>TRUNCATE</></title>
3736      <itemizedlist>
3737
3738       <listitem>
3739        <para>
3740         Support statement-level <literal>ON TRUNCATE</> triggers (Simon)
3741        </para>
3742       </listitem>
3743
3744       <listitem>
3745        <para>
3746         Add <literal>RESTART</>/<literal>CONTINUE IDENTITY</> options
3747         for <command>TRUNCATE TABLE</>
3748         (Zoltan Boszormenyi)
3749        </para>
3750
3751        <para>
3752         The start value of a sequence can be changed by <command>ALTER
3753         SEQUENCE START WITH</>.
3754        </para>
3755       </listitem>
3756
3757       <listitem>
3758        <para>
3759         Allow <command>TRUNCATE tab1, tab1</> to succeed (Bruce)
3760        </para>
3761       </listitem>
3762
3763       <listitem>
3764        <para>
3765         Add a separate <command>TRUNCATE</> permission (Robert Haas)
3766        </para>
3767       </listitem>
3768
3769      </itemizedlist>
3770
3771     </sect4>
3772
3773     <sect4>
3774      <title><command>EXPLAIN</></title>
3775      <itemizedlist>
3776
3777       <listitem>
3778        <para>
3779         Make <command>EXPLAIN VERBOSE</> show the output columns of each
3780         plan node (Tom)
3781        </para>
3782
3783        <para>
3784         Previously <command>EXPLAIN VERBOSE</> output an internal
3785         representation of the query plan.  (That behavior is now
3786         available via <varname>debug_print_plan</>.)
3787        </para>
3788       </listitem>
3789
3790       <listitem>
3791        <para>
3792         Make <command>EXPLAIN</> identify subplans and initplans with
3793         individual labels (Tom)
3794        </para>
3795       </listitem>
3796
3797       <listitem>
3798        <para>
3799         Make <command>EXPLAIN</> honor <varname>debug_print_plan</> (Tom)
3800        </para>
3801       </listitem>
3802
3803       <listitem>
3804        <para>
3805         Allow <command>EXPLAIN</> on <command>CREATE TABLE AS</> (Peter)
3806        </para>
3807       </listitem>
3808
3809      </itemizedlist>
3810
3811     </sect4>
3812
3813     <sect4>
3814      <title><literal>LIMIT</>/<literal>OFFSET</></title>
3815      <itemizedlist>
3816
3817       <listitem>
3818        <para>
3819         Allow sub-selects in <literal>LIMIT</> and <literal>OFFSET</> (Tom)
3820        </para>
3821       </listitem>
3822
3823       <listitem>
3824        <para>
3825         Add <acronym>SQL</>-standard syntax for
3826         <literal>LIMIT</>/<literal>OFFSET</> capabilities (Peter)
3827        </para>
3828
3829        <para>
3830         To wit,
3831         <literal>OFFSET num {ROW|ROWS} FETCH {FIRST|NEXT} [num] {ROW|ROWS}
3832         ONLY</>.
3833        </para>
3834       </listitem>
3835
3836      </itemizedlist>
3837
3838     </sect4>
3839
3840    </sect3>
3841
3842    <sect3>
3843     <title>Object Manipulation</title>
3844     <itemizedlist>
3845
3846      <listitem>
3847       <para>
3848        Add support for column-level privileges (Stephen Frost, KaiGai
3849        Kohei)
3850       </para>
3851      </listitem>
3852
3853      <listitem>
3854       <para>
3855        Refactor multi-object <command>DROP</> operations to reduce the
3856        need for <literal>CASCADE</> (Alex Hunsaker)
3857       </para>
3858
3859       <para>
3860        For example, if table <literal>B</> has a dependency on table
3861        <literal>A</>, the command <literal>DROP TABLE A, B</> no longer
3862        requires the <literal>CASCADE</> option.
3863       </para>
3864      </listitem>
3865
3866      <listitem>
3867       <para>
3868        Fix various problems with concurrent <command>DROP</> commands
3869        by ensuring that locks are taken before we begin to drop dependencies
3870        of an object (Tom)
3871       </para>
3872      </listitem>
3873
3874      <listitem>
3875       <para>
3876        Improve reporting of dependencies during <command>DROP</>
3877        commands (Tom)
3878       </para>
3879      </listitem>
3880
3881      <listitem>
3882       <para>
3883        Add <literal>WITH [NO] DATA</> clause to <command>CREATE TABLE
3884        AS</>, per the <acronym>SQL</> standard (Peter, Tom)
3885       </para>
3886      </listitem>
3887
3888      <listitem>
3889       <para>
3890        Add support for user-defined I/O conversion casts (Heikki)
3891       </para>
3892      </listitem>
3893
3894      <listitem>
3895       <para>
3896        Allow <command>CREATE AGGREGATE</> to use an <type>internal</>
3897        transition datatype (Tom)
3898       </para>
3899      </listitem>
3900
3901      <listitem>
3902       <para>
3903        Add <literal>LIKE</> clause to <command>CREATE TYPE</> (Tom)
3904       </para>
3905
3906       <para>
3907        This simplifies creation of data types that use the same internal
3908        representation as an existing type.
3909       </para>
3910      </listitem>
3911
3912      <listitem>
3913       <para>
3914        Allow specification of the type category and <quote>preferred</>
3915        status for user-defined base types (Tom)
3916       </para>
3917
3918       <para>
3919        This allows more control over the coercion behavior of user-defined
3920        types.
3921       </para>
3922      </listitem>
3923
3924      <listitem>
3925       <para>
3926        Allow <command>CREATE OR REPLACE VIEW</> to add columns to the
3927        end of a view (Robert Haas)
3928       </para>
3929      </listitem>
3930
3931     </itemizedlist>
3932
3933     <sect4>
3934      <title><command>ALTER</></title>
3935      <itemizedlist>
3936
3937       <listitem>
3938        <para>
3939         Add <command>ALTER TYPE RENAME</> (Petr Jelinek)
3940        </para>
3941       </listitem>
3942
3943       <listitem>
3944        <para>
3945         Add <command>ALTER SEQUENCE ... RESTART</> (with no parameter) to
3946         reset a sequence to its initial value (Zoltan Boszormenyi)
3947        </para>
3948       </listitem>
3949
3950       <listitem>
3951        <para>
3952         Modify the <command>ALTER TABLE</> syntax to allow all reasonable
3953         combinations for tables, indexes, sequences, and views (Tom)
3954        </para>
3955
3956        <para>
3957         This change allows the following new syntaxes:
3958
3959         <itemizedlist>
3960          <listitem>
3961           <para>
3962            <command>ALTER SEQUENCE OWNER TO</>
3963           </para>
3964          </listitem>
3965          <listitem>
3966           <para>
3967            <command>ALTER VIEW ALTER COLUMN SET/DROP DEFAULT</>
3968           </para>
3969          </listitem>
3970          <listitem>
3971           <para>
3972            <command>ALTER VIEW OWNER TO</>
3973           </para>
3974          </listitem>
3975          <listitem>
3976           <para>
3977            <command>ALTER VIEW SET SCHEMA</>
3978           </para>
3979          </listitem>
3980         </itemizedlist>
3981
3982         There is no actual new functionality here, but formerly
3983         you had to say <command>ALTER TABLE</> to do these things,
3984         which was confusing.
3985        </para>
3986       </listitem>
3987
3988       <listitem>
3989        <para>
3990         Add support for the syntax <command>ALTER TABLE ... ALTER COLUMN
3991         ... SET DATA TYPE</> (Peter)
3992        </para>
3993
3994        <para>
3995         This is <acronym>SQL</>-standard syntax for functionality that
3996         was already supported.
3997        </para>
3998       </listitem>
3999
4000       <listitem>
4001        <para>
4002         Make <command>ALTER TABLE SET WITHOUT OIDS</> rewrite the table
4003         to physically remove <type>OID</> values (Tom)
4004        </para>
4005
4006        <para>
4007         Also, add <command>ALTER TABLE SET WITH OIDS</> to rewrite the
4008         table to add <type>OID</>s.
4009        </para>
4010       </listitem>
4011
4012      </itemizedlist>
4013
4014     </sect4>
4015
4016     <sect4>
4017      <title>Database Manipulation</title>
4018      <itemizedlist>
4019
4020       <listitem>
4021        <para>
4022         Improve reporting of
4023         <command>CREATE</>/<command>DROP</>/<command>RENAME DATABASE</>
4024         failure when uncommitted prepared transactions are the cause
4025         (Tom)
4026        </para>
4027       </listitem>
4028
4029       <listitem>
4030        <para>
4031         Make <varname>LC_COLLATE</> and <varname>LC_CTYPE</> into
4032         per-database settings (Radek Strnad, Heikki)
4033        </para>
4034
4035        <para>
4036         This makes collation similar to encoding, which was always
4037         configurable per database.
4038        </para>
4039       </listitem>
4040
4041       <listitem>
4042        <para>
4043         Improve checks that the database encoding, collation
4044         (<varname>LC_COLLATE</>), and character classes
4045         (<varname>LC_CTYPE</>) match (Heikki, Tom)
4046        </para>
4047
4048        <para>
4049         Note in particular that a new database's encoding and locale
4050         settings can be changed only when copying from <literal>template0</>.
4051         This prevents possibly copying data that doesn't match the settings.
4052        </para>
4053       </listitem>
4054
4055       <listitem>
4056        <para>
4057         Add <command>ALTER DATABASE SET TABLESPACE</> to move a database
4058         to a new tablespace (Guillaume Lelarge, Bernd Helmle)
4059        </para>
4060       </listitem>
4061
4062      </itemizedlist>
4063
4064     </sect4>
4065
4066    </sect3>
4067
4068    <sect3>
4069     <title>Utility Operations</title>
4070
4071     <itemizedlist>
4072
4073      <listitem>
4074       <para>
4075        Add a <literal>VERBOSE</> option to the <command>CLUSTER</> command and
4076        <application>clusterdb</> (Jim Cox)
4077       </para>
4078      </listitem>
4079
4080      <listitem>
4081       <para>
4082        Decrease memory requirements for recording pending trigger
4083        events (Tom)
4084       </para>
4085      </listitem>
4086
4087     </itemizedlist>
4088
4089     <sect4>
4090      <title>Indexes</title>
4091      <itemizedlist>
4092
4093       <listitem>
4094        <para>
4095         Dramatically improve the speed of building and accessing hash
4096         indexes (Tom Raney, Shreya Bhargava)
4097        </para>
4098
4099        <para>
4100         This allows hash indexes to be sometimes faster than btree
4101         indexes.  However, hash indexes are still not crash-safe.
4102        </para>
4103       </listitem>
4104
4105       <listitem>
4106        <para>
4107         Make hash indexes store only the hash code, not the full value of
4108         the indexed column (Xiao Meng)
4109        </para>
4110
4111        <para>
4112         This greatly reduces the size of hash indexes for long indexed
4113         values, improving performance.
4114        </para>
4115       </listitem>
4116
4117       <listitem>
4118        <para>
4119         Implement fast update option for GIN indexes (Teodor, Oleg)
4120        </para>
4121
4122        <para>
4123         This option greatly improves update speed at a small penalty in search
4124         speed.
4125        </para>
4126       </listitem>
4127
4128       <listitem>
4129        <para>
4130         <literal>xxx_pattern_ops</> indexes can now be used for simple
4131         equality comparisons, not only for <literal>LIKE</> (Tom)
4132        </para>
4133       </listitem>
4134
4135      </itemizedlist>
4136
4137     </sect4>
4138
4139     <sect4>
4140      <title>Full Text Indexes</title>
4141      <itemizedlist>
4142
4143       <listitem>
4144        <para>
4145         Remove the requirement to use <literal>@@@</> when doing
4146         <acronym>GIN</> weighted lookups on full text indexes (Tom, Teodor)
4147        </para>
4148
4149        <para>
4150         The normal <literal>@@</> text search operator can be used
4151         instead.
4152        </para>
4153       </listitem>
4154
4155       <listitem>
4156        <para>
4157         Add an optimizer selectivity function for <literal>@@</> text
4158         search operations (Jan Urbanski)
4159        </para>
4160       </listitem>
4161
4162       <listitem>
4163        <para>
4164         Allow prefix matching in full text searches (Teodor Sigaev,
4165         Oleg Bartunov)
4166        </para>
4167       </listitem>
4168
4169       <listitem>
4170        <para>
4171         Support multi-column <acronym>GIN</> indexes (Teodor Sigaev)
4172        </para>
4173       </listitem>
4174
4175       <listitem>
4176        <para>
4177         Improve support for Nepali language and Devanagari alphabet (Teodor)
4178        </para>
4179       </listitem>
4180
4181      </itemizedlist>
4182
4183     </sect4>
4184
4185     <sect4>
4186      <title><command>VACUUM</></title>
4187      <itemizedlist>
4188
4189       <listitem>
4190        <para>
4191         Track free space in separate per-relation <quote>fork</> files (Heikki)
4192        </para>
4193
4194        <para>
4195         Free space discovered by <command>VACUUM</> is now recorded in
4196         <filename>*_fsm</> files, rather than in a fixed-sized shared memory
4197         area.  The <varname>max_fsm_pages</> and <varname>max_fsm_relations</>
4198         settings have been removed, greatly simplifying administration of
4199         free space management.
4200        </para>
4201       </listitem>
4202
4203       <listitem>
4204        <para>
4205         Add a visibility map to track pages that do not require
4206         vacuuming (Heikki)
4207        </para>
4208
4209        <para>
4210         This allows <command>VACUUM</> to avoid scanning all of
4211         a table when only a portion of the table needs vacuuming.
4212         The visibility map is stored in per-relation <quote>fork</> files.
4213        </para>
4214       </listitem>
4215
4216       <listitem>
4217        <para>
4218         Add <varname>vacuum_freeze_table_age</> parameter to control
4219         when <command>VACUUM</> should ignore the visibility map and
4220         do a full table scan to freeze tuples (Heikki)
4221        </para>
4222       </listitem>
4223
4224       <listitem>
4225        <para>
4226         Track transaction snapshots more carefully (Alvaro)
4227        </para>
4228
4229        <para>
4230         This improves <command>VACUUM</>'s ability to reclaim space
4231         in the presence of long-running transactions.
4232        </para>
4233       </listitem>
4234
4235       <listitem>
4236        <para>
4237         Add ability to specify per-relation autovacuum and <acronym>TOAST</>
4238         parameters in <command>CREATE TABLE</> (Alvaro, Euler Taveira de
4239         Oliveira)
4240        </para>
4241
4242        <para>
4243         Autovacuum options used to be stored in a system table.
4244        </para>
4245       </listitem>
4246
4247       <listitem>
4248        <para>
4249         Add <literal>--freeze</> option to <application>vacuumdb</>
4250         (Bruce)
4251        </para>
4252       </listitem>
4253
4254      </itemizedlist>
4255
4256     </sect4>
4257
4258    </sect3>
4259
4260    <sect3>
4261     <title>Data Types</title>
4262     <itemizedlist>
4263
4264      <listitem>
4265       <para>
4266        Add a <literal>CaseSensitive</> option for text search synonym
4267        dictionaries (Simon)
4268       </para>
4269      </listitem>
4270
4271      <listitem>
4272       <para>
4273        Improve the precision of <type>NUMERIC</> division (Tom)
4274       </para>
4275      </listitem>
4276
4277      <listitem>
4278       <para>
4279        Add basic arithmetic operators for <type>int2</> with <type>int8</>
4280        (Tom)
4281       </para>
4282
4283       <para>
4284        This eliminates the need for explicit casting in some situations.
4285       </para>
4286      </listitem>
4287
4288      <listitem>
4289       <para>
4290        Allow <type>UUID</> input to accept an optional hyphen after
4291        every fourth digit (Robert Haas)
4292       </para>
4293      </listitem>
4294
4295      <listitem>
4296       <para>
4297        Allow <literal>on</>/<literal>off</> as input for the boolean data type
4298        (Itagaki Takahiro)
4299       </para>
4300      </listitem>
4301
4302      <listitem>
4303       <para>
4304        Allow spaces around <literal>NaN</> in the input string for
4305        type <type>numeric</> (Sam Mason)
4306       </para>
4307      </listitem>
4308
4309     </itemizedlist>
4310
4311     <sect4>
4312      <title>Temporal Data Types</title>
4313      <itemizedlist>
4314
4315       <listitem>
4316        <para>
4317         Reject year <literal>0 BC</> and years <literal>000</> and
4318         <literal>0000</> (Tom)
4319        </para>
4320
4321        <para>
4322         Previously these were interpreted as <literal>1 BC</>.
4323         (Note: years <literal>0</> and <literal>00</> are still assumed to be
4324         the year 2000.)
4325        </para>
4326       </listitem>
4327
4328       <listitem>
4329        <para>
4330         Include <literal>SGT</> (Singapore time) in the default list of
4331         known time zone abbreviations (Tom)
4332        </para>
4333       </listitem>
4334
4335       <listitem>
4336        <para>
4337         Support <literal>infinity</> and <literal>-infinity</> as
4338         values of type <type>date</> (Tom)
4339        </para>
4340       </listitem>
4341
4342       <listitem>
4343        <para>
4344         Make parsing of <type>interval</> literals more standard-compliant
4345         (Tom, Ron Mayer)
4346        </para>
4347
4348        <para>
4349         For example, <literal>INTERVAL '1' YEAR</> now does what it's
4350         supposed to.
4351        </para>
4352       </listitem>
4353
4354       <listitem>
4355        <para>
4356         Allow <type>interval</> fractional-seconds precision to be specified
4357         after the <literal>second</> keyword, for <acronym>SQL</> standard
4358         compliance (Tom)
4359        </para>
4360
4361        <para>
4362         Formerly the precision had to be specified after the keyword
4363         <type>interval</>.  (For backwards compatibility, this syntax is still
4364         supported, though deprecated.)  Data type definitions will now be
4365         output using the standard format.
4366        </para>
4367       </listitem>
4368
4369       <listitem>
4370        <para>
4371         Support the <acronym>IS0 8601</> <type>interval</> syntax (Ron
4372         Mayer, Kevin Grittner)
4373        </para>
4374
4375        <para>
4376         For example, <literal>INTERVAL 'P1Y2M3DT4H5M6.7S'</> is now
4377         supported.
4378        </para>
4379       </listitem>
4380
4381       <listitem>
4382        <para>
4383         Add <varname>IntervalStyle</> parameter
4384         which controls how <type>interval</> values are output (Ron Mayer)
4385        </para>
4386
4387        <para>
4388         Valid values are:  <literal>postgres</>, <literal>postgres_verbose</>,
4389         <literal>sql_standard</>, <literal>iso_8601</>.  This setting also
4390         controls the handling of negative <type>interval</> input when only
4391         some fields have positive/negative designations.
4392        </para>
4393       </listitem>
4394
4395       <listitem>
4396        <para>
4397         Improve consistency of handling of fractional seconds in
4398         <type>timestamp</> and <type>interval</> output (Ron Mayer)
4399        </para>
4400       </listitem>
4401
4402      </itemizedlist>
4403
4404     </sect4>
4405
4406     <sect4>
4407      <title>Arrays</title>
4408      <itemizedlist>
4409
4410       <listitem>
4411        <para>
4412         Improve the handling of casts applied to <literal>ARRAY[]</>
4413         constructs, such as <literal>ARRAY[...]::integer[]</>
4414         (Brendan Jurd)
4415        </para>
4416
4417        <para>
4418         Formerly <productname>PostgreSQL</> attempted to determine a data type
4419         for the <literal>ARRAY[]</> construct without reference to the ensuing
4420         cast.  This could fail unnecessarily in many cases, in particular when
4421         the <literal>ARRAY[]</> construct was empty or contained only
4422         ambiguous entries such as <literal>NULL</>.  Now the cast is consulted
4423         to determine the type that the array elements must be.
4424        </para>
4425       </listitem>
4426
4427       <listitem>
4428        <para>
4429         Make <acronym>SQL</>-syntax <type>ARRAY</> dimensions optional
4430         to match the <acronym>SQL</> standard (Peter)
4431        </para>
4432       </listitem>
4433
4434       <listitem>
4435        <para>
4436         Add <function>array_ndims()</> to return the number
4437         of dimensions of an array (Robert Haas)
4438        </para>
4439       </listitem>
4440
4441       <listitem>
4442        <para>
4443         Add <function>array_length()</> to return the length
4444         of an array for a specified dimension (Jim Nasby, Robert
4445         Haas, Peter Eisentraut)
4446        </para>
4447       </listitem>
4448
4449       <listitem>
4450        <para>
4451         Add aggregate function <function>array_agg()</>, which
4452         returns all aggregated values as a single array (Robert Haas,
4453         Jeff Davis, Peter)
4454        </para>
4455       </listitem>
4456
4457       <listitem>
4458        <para>
4459         Add <function>unnest()</>, which converts an array to
4460         individual row values (Tom)
4461        </para>
4462
4463        <para>
4464         This is the opposite of <function>array_agg()</>.
4465        </para>
4466       </listitem>
4467
4468       <listitem>
4469        <para>
4470         Add <function>array_fill()</> to create arrays initialized with
4471         a value (Pavel Stehule)
4472        </para>
4473       </listitem>
4474
4475       <listitem>
4476        <para>
4477         Add <function>generate_subscripts()</> to simplify generating
4478         the range of an array's subscripts (Pavel Stehule)
4479        </para>
4480       </listitem>
4481
4482      </itemizedlist>
4483
4484     </sect4>
4485
4486     <sect4>
4487      <title>Wide-Value Storage (<acronym>TOAST</>)</title>
4488      <itemizedlist>
4489
4490       <listitem>
4491        <para>
4492         Consider <acronym>TOAST</> compression on values as short as
4493         32 bytes (previously 256 bytes) (Greg Stark)
4494        </para>
4495       </listitem>
4496
4497       <listitem>
4498        <para>
4499         Require 25% minimum space savings before using <acronym>TOAST</>
4500         compression (previously 20% for small values and any-savings-at-all
4501         for large values) (Greg)
4502        </para>
4503       </listitem>
4504
4505       <listitem>
4506        <para>
4507         Improve <acronym>TOAST</> heuristics for rows that have a mix of large
4508         and small toastable fields, so that we prefer to push large values out
4509         of line and don't compress small values unnecessarily (Greg, Tom)
4510        </para>
4511       </listitem>
4512
4513      </itemizedlist>
4514
4515     </sect4>
4516
4517    </sect3>
4518
4519    <sect3>
4520     <title>Functions</title>
4521     <itemizedlist>
4522
4523      <listitem>
4524       <para>
4525        Document that <function>setseed()</> allows values from
4526        <literal>-1</> to <literal>1</> (not just <literal>0</> to
4527        <literal>1</>), and enforce the valid range (Kris Jurka)
4528       </para>
4529      </listitem>
4530
4531      <listitem>
4532       <para>
4533        Add server-side function <function>lo_import(filename, oid)</>
4534        (Tatsuo)
4535       </para>
4536      </listitem>
4537
4538      <listitem>
4539       <para>
4540        Add <function>quote_nullable()</>, which behaves like
4541        <function>quote_literal()</> but returns the string <literal>NULL</> for
4542        a null argument (Brendan Jurd)
4543       </para>
4544      </listitem>
4545
4546      <listitem>
4547       <para>
4548        Improve full text search <function>headline()</> function to
4549        allow extracting several fragments of text (Sushant Sinha)
4550       </para>
4551      </listitem>
4552
4553      <listitem>
4554       <para>
4555        Add <function>suppress_redundant_updates_trigger()</> trigger
4556        function to avoid overhead for non-data-changing updates (Andrew)
4557       </para>
4558      </listitem>
4559
4560      <listitem>
4561       <para>
4562        Add <function>div(numeric, numeric)</> to perform <type>numeric</>
4563        division without rounding (Tom)
4564       </para>
4565      </listitem>
4566
4567      <listitem>
4568       <para>
4569        Add <type>timestamp</> and <type>timestamptz</> versions of
4570        <function>generate_series()</> (Hitoshi Harada)
4571       </para>
4572      </listitem>
4573
4574     </itemizedlist>
4575
4576     <sect4>
4577      <title>Object Information Functions</title>
4578      <itemizedlist>
4579
4580       <listitem>
4581        <para>
4582         Implement <function>current_query()</> for use by functions
4583         that need to know the currently running query (Tomas Doran)
4584        </para>
4585       </listitem>
4586
4587       <listitem>
4588        <para>
4589         Add <function>pg_get_keywords()</> to return a list of the
4590         parser keywords (Dave Page)
4591        </para>
4592       </listitem>
4593
4594       <listitem>
4595        <para>
4596         Add <function>pg_get_functiondef()</> to see a function's
4597         definition (Abhijit Menon-Sen)
4598        </para>
4599       </listitem>
4600
4601       <listitem>
4602        <para>
4603         Allow the second argument of <function>pg_get_expr()</> to be zero
4604         when deparsing an expression that does not contain variables (Tom)
4605        </para>
4606       </listitem>
4607
4608       <listitem>
4609        <para>
4610         Modify <function>pg_relation_size()</> to use <literal>regclass</>
4611         (Heikki)
4612        </para>
4613
4614        <para>
4615         <function>pg_relation_size(data_type_name)</> no longer works.
4616        </para>
4617       </listitem>
4618
4619       <listitem>
4620        <para>
4621         Add <literal>boot_val</> and <literal>reset_val</> columns to
4622         <literal>pg_settings</> output (Greg Smith)
4623        </para>
4624       </listitem>
4625
4626       <listitem>
4627        <para>
4628         Add source file name and line number columns to
4629         <literal>pg_settings</> output for variables set in a configuration
4630         file (Magnus, Alvaro)
4631        </para>
4632
4633        <para>
4634         For security reasons, these columns are only visible to superusers.
4635        </para>
4636       </listitem>
4637
4638       <listitem>
4639        <para>
4640         Add support for <varname>CURRENT_CATALOG</>,
4641         <varname>CURRENT_SCHEMA</>, <varname>SET CATALOG</>, <varname>SET
4642         SCHEMA</> (Peter)
4643        </para>
4644
4645        <para>
4646         These provide <acronym>SQL</>-standard syntax for existing features.
4647        </para>
4648       </listitem>
4649
4650       <listitem>
4651        <para>
4652         Add <function>pg_typeof()</> which returns the data type
4653         of any value (Brendan Jurd)
4654        </para>
4655       </listitem>
4656
4657       <listitem>
4658        <para>
4659         Make <function>version()</> return information about whether
4660         the server is a 32- or 64-bit binary (Bruce)
4661        </para>
4662       </listitem>
4663
4664       <listitem>
4665        <para>
4666         Fix the behavior of information schema columns
4667         <structfield>is_insertable_into</> and <structfield>is_updatable</> to
4668         be consistent (Peter)
4669        </para>
4670       </listitem>
4671
4672       <listitem>
4673        <para>
4674         Improve the behavior of information schema
4675         <structfield>datetime_precision</> columns (Peter)
4676        </para>
4677
4678        <para>
4679         These columns now show zero for <type>date</> columns, and 6
4680         (the default precision) for <type>time</>, <type>timestamp</>, and
4681         <type>interval</> without a declared precision, rather than showing
4682         null as formerly.
4683        </para>
4684       </listitem>
4685
4686       <listitem>
4687        <para>
4688         Convert remaining builtin set-returning functions to use
4689         <literal>OUT</> parameters (Jaime Casanova)
4690        </para>
4691
4692        <para>
4693         This makes it possible to call these functions without specifying
4694         a column list:  <function>pg_show_all_settings()</>,
4695         <function>pg_lock_status()</>, <function>pg_prepared_xact()</>,
4696         <function>pg_prepared_statement()</>, <function>pg_cursor()</>
4697        </para>
4698       </listitem>
4699
4700       <listitem>
4701        <para>
4702         Make <function>pg_*_is_visible()</> and
4703         <function>has_*_privilege()</> functions return <literal>NULL</>
4704         for invalid OIDs, rather than reporting an error (Tom)
4705        </para>
4706       </listitem>
4707
4708       <listitem>
4709        <para>
4710         Extend <function>has_*_privilege()</> functions to allow inquiring
4711         about the OR of multiple privileges in one call (Stephen
4712         Frost, Tom)
4713        </para>
4714       </listitem>
4715
4716       <listitem>
4717        <para>
4718         Add <function>has_column_privilege()</> and
4719         <function>has_any_column_privilege()</> functions (Stephen
4720         Frost, Tom)
4721        </para>
4722       </listitem>
4723
4724      </itemizedlist>
4725
4726     </sect4>
4727
4728     <sect4>
4729      <title>Function Creation</title>
4730      <itemizedlist>
4731
4732       <listitem>
4733        <para>
4734         Support variadic functions (functions with a variable number
4735         of arguments) (Pavel Stehule)
4736        </para>
4737
4738        <para>
4739         Only trailing arguments can be optional, and they all must be
4740         of the same data type.
4741        </para>
4742       </listitem>
4743
4744       <listitem>
4745        <para>
4746         Support default values for function arguments (Pavel Stehule)
4747        </para>
4748       </listitem>
4749
4750       <listitem>
4751        <para>
4752         Add <command>CREATE FUNCTION ... RETURNS TABLE</> clause (Pavel
4753         Stehule)
4754        </para>
4755       </listitem>
4756
4757       <listitem>
4758        <para>
4759         Allow <acronym>SQL</>-language functions to return the output
4760         of an <command>INSERT</>/<command>UPDATE</>/<command>DELETE</>
4761         <literal>RETURNING</> clause (Tom)
4762        </para>
4763       </listitem>
4764
4765      </itemizedlist>
4766
4767     </sect4>
4768
4769     <sect4>
4770      <title>PL/pgSQL Server-Side Language</title>
4771      <itemizedlist>
4772
4773       <listitem>
4774        <para>
4775         Support <literal>EXECUTE USING</> for easier insertion of data
4776         values into a dynamic query string (Pavel Stehule)
4777        </para>
4778       </listitem>
4779
4780       <listitem>
4781        <para>
4782         Allow looping over the results of a cursor using a <literal>FOR</>
4783         loop (Pavel Stehule)
4784        </para>
4785       </listitem>
4786
4787       <listitem>
4788        <para>
4789         Support <literal>RETURN QUERY EXECUTE</> (Pavel
4790         Stehule)
4791        </para>
4792       </listitem>
4793
4794       <listitem>
4795        <para>
4796         Improve the <literal>RAISE</> command (Pavel Stehule)
4797
4798         <itemizedlist>
4799          <listitem>
4800           <para>
4801            Support <literal>DETAIL</> and <literal>HINT</> fields
4802           </para>
4803          </listitem>
4804          <listitem>
4805           <para>
4806            Support specification of the <literal>SQLSTATE</> error code
4807           </para>
4808          </listitem>
4809          <listitem>
4810           <para>
4811            Support an exception name parameter
4812           </para>
4813          </listitem>
4814          <listitem>
4815           <para>
4816            Allow <literal>RAISE</> without parameters in an exception
4817            block to re-throw the current error
4818           </para>
4819          </listitem>
4820         </itemizedlist>
4821        </para>
4822       </listitem>
4823
4824       <listitem>
4825        <para>
4826         Allow specification of <varname>SQLSTATE</> codes
4827         in <literal>EXCEPTION</> lists (Pavel Stehule)
4828        </para>
4829
4830        <para>
4831         This is useful for handling custom <varname>SQLSTATE</> codes.
4832        </para>
4833       </listitem>
4834
4835       <listitem>
4836        <para>
4837         Support the <literal>CASE</> statement (Pavel Stehule)
4838        </para>
4839       </listitem>
4840
4841       <listitem>
4842        <para>
4843         Make <command>RETURN QUERY</> set the special <literal>FOUND</> and
4844         <command>GET DIAGNOSTICS</> <literal>ROW_COUNT</> variables
4845         (Pavel Stehule)
4846        </para>
4847       </listitem>
4848
4849       <listitem>
4850        <para>
4851         Make <command>FETCH</> and <command>MOVE</> set the
4852         <command>GET DIAGNOSTICS</> <literal>ROW_COUNT</> variable
4853         (Andrew Gierth)
4854        </para>
4855       </listitem>
4856
4857       <listitem>
4858        <para>
4859         Make <command>EXIT</> without a label always exit the innermost
4860         loop (Tom)
4861        </para>
4862
4863        <para>
4864         Formerly, if there were a <literal>BEGIN</> block more closely nested
4865         than any loop, it would exit that block instead.  The new behavior
4866         matches Oracle(TM) and is also what was previously stated by our own
4867         documentation.
4868        </para>
4869       </listitem>
4870
4871       <listitem>
4872        <para>
4873         Make processing of string literals and nested block comments
4874         match the main SQL parser's processing (Tom)
4875        </para>
4876
4877        <para>
4878         In particular, the format string in <command>RAISE</> now works
4879         the same as any other string literal, including being subject
4880         to <varname>standard_conforming_strings</>.  This change also
4881         fixes other cases in which valid commands would fail when
4882         <varname>standard_conforming_strings</> is on.
4883        </para>
4884       </listitem>
4885
4886       <listitem>
4887        <para>
4888         Avoid memory leakage when the same function is called at varying
4889         exception-block nesting depths (Tom)
4890        </para>
4891       </listitem>
4892
4893      </itemizedlist>
4894
4895     </sect4>
4896
4897    </sect3>
4898
4899    <sect3>
4900     <title>Client Applications</title>
4901
4902     <itemizedlist>
4903
4904      <listitem>
4905       <para>
4906        Fix <literal>pg_ctl restart</> to preserve command-line arguments
4907        (Bruce)
4908       </para>
4909      </listitem>
4910
4911      <listitem>
4912       <para>
4913        Add <literal>-w</>/<literal>--no-password</> option that
4914        prevents password prompting in all utilities that have a
4915        <literal>-W</>/<literal>--password</> option (Peter)
4916       </para>
4917      </listitem>
4918
4919      <listitem>
4920       <para>
4921        Remove <option>-q</> (quiet) option of <application>createdb</>,
4922        <application>createuser</>, <application>dropdb</>,
4923        <application>dropuser</> (Peter)
4924       </para>
4925
4926       <para>
4927        These options have had no effect since <productname>PostgreSQL</>
4928        8.3.
4929       </para>
4930      </listitem>
4931
4932     </itemizedlist>
4933
4934     <sect4>
4935      <title><application>psql</></title>
4936      <itemizedlist>
4937
4938       <listitem>
4939        <para>
4940         Remove verbose startup banner; now just suggest <literal>help</>
4941         (Joshua Drake)
4942        </para>
4943       </listitem>
4944
4945       <listitem>
4946        <para>
4947         Make <literal>help</> show common backslash commands (Greg
4948         Sabino Mullane)
4949        </para>
4950       </listitem>
4951
4952       <listitem>
4953        <para>
4954         Add <literal>\pset format wrapped</> mode to wrap output to the
4955         screen width, or file/pipe output too if <literal>\pset columns</>
4956         is set (Bryce Nesbitt)
4957        </para>
4958       </listitem>
4959
4960       <listitem>
4961        <para>
4962         Allow all supported spellings of boolean values in <command>\pset</>,
4963         rather than just <literal>on</> and <literal>off</> (Bruce)
4964        </para>
4965
4966        <para>
4967         Formerly, any string other than <quote>off</> was silently taken
4968         to mean <literal>true</>.  <application>psql</> will now complain
4969         about unrecognized spellings (but still take them as <literal>true</>).
4970        </para>
4971       </listitem>
4972
4973       <listitem>
4974        <para>
4975         Use the pager for wide output (Bruce)
4976        </para>
4977       </listitem>
4978
4979       <listitem>
4980        <para>
4981         Require a space between a one-letter backslash command and its first
4982         argument (Bernd Helmle)
4983        </para>
4984
4985        <para>
4986         This removes a historical source of ambiguity.
4987        </para>
4988       </listitem>
4989
4990       <listitem>
4991        <para>
4992         Improve tab completion support for schema-qualified and
4993         quoted identifiers (Greg Sabino Mullane)
4994        </para>
4995       </listitem>
4996
4997       <listitem>
4998        <para>
4999         Add optional <literal>on</>/<literal>off</> argument for
5000         <command>\timing</> (David Fetter)
5001        </para>
5002       </listitem>
5003
5004       <listitem>
5005        <para>
5006         Display access control rights on multiple lines (Brendan
5007         Jurd, Andreas Scherbaum)
5008        </para>
5009       </listitem>
5010
5011       <listitem>
5012        <para>
5013         Make <command>\l</> show database access privileges (Andrew Gilligan)
5014        </para>
5015       </listitem>
5016
5017       <listitem>
5018        <para>
5019         Make <command>\l+</> show database sizes, if permissions
5020         allow (Andrew Gilligan)
5021        </para>
5022       </listitem>
5023
5024       <listitem>
5025        <para>
5026         Add the <command>\ef</> command to edit function definitions
5027         (Abhijit Menon-Sen)
5028        </para>
5029       </listitem>
5030
5031      </itemizedlist>
5032
5033     </sect4>
5034
5035     <sect4>
5036      <title><application>psql</> \d* commands</title>
5037
5038      <itemizedlist>
5039
5040       <listitem>
5041        <para>
5042         Make <command>\d*</> commands that do not have a pattern argument
5043         show system objects only if the <literal>S</> modifier is specified
5044         (Greg Sabino Mullane, Bruce)
5045        </para>
5046
5047        <para>
5048         The former behavior was inconsistent across different variants
5049         of <command>\d</>, and in most cases it provided no easy way to see
5050         just user objects.
5051        </para>
5052       </listitem>
5053
5054       <listitem>
5055        <para>
5056         Improve <command>\d*</> commands to work with older
5057         <productname>PostgreSQL</> server versions (back to 7.4),
5058         not only the current server version
5059         (Guillaume Lelarge)
5060        </para>
5061       </listitem>
5062
5063       <listitem>
5064        <para>
5065         Make <command>\d</> show foreign-key constraints that reference
5066         the selected table (Kenneth D'Souza)
5067        </para>
5068       </listitem>
5069
5070       <listitem>
5071        <para>
5072         Make <command>\d</> on a sequence show its column values
5073         (Euler Taveira de Oliveira)
5074        </para>
5075       </listitem>
5076
5077       <listitem>
5078        <para>
5079         Add column storage type and other relation options to the
5080         <command>\d+</> display (Gregory Stark, Euler Taveira de
5081         Oliveira)
5082        </para>
5083       </listitem>
5084
5085       <listitem>
5086        <para>
5087         Show relation size in <command>\dt+</> output (Dickson S.
5088         Guedes)
5089        </para>
5090       </listitem>
5091
5092       <listitem>
5093        <para>
5094         Show the possible values of <literal>enum</> types in <command>\dT+</>
5095         (David Fetter)
5096        </para>
5097       </listitem>
5098
5099       <listitem>
5100        <para>
5101         Allow <command>\dC</> to accept a wildcard pattern, which matches
5102         either datatype involved in the cast (Tom)
5103        </para>
5104       </listitem>
5105
5106       <listitem>
5107        <para>
5108         Add a function type column to <command>\df</>'s output, and add
5109         options to list only selected types of functions (David Fetter)
5110        </para>
5111       </listitem>
5112
5113       <listitem>
5114        <para>
5115         Make <command>\df</> not hide functions that take or return
5116         type <type>cstring</> (Tom)
5117        </para>
5118
5119        <para>
5120         Previously, such functions were hidden because most of them are
5121         datatype I/O functions, which were deemed uninteresting.  The new
5122         policy about hiding system functions by default makes this wart
5123         unnecessary.
5124        </para>
5125       </listitem>
5126
5127      </itemizedlist>
5128
5129     </sect4>
5130
5131     <sect4>
5132      <title><application>pg_dump</></title>
5133      <itemizedlist>
5134
5135       <listitem>
5136        <para>
5137         Add a <literal>--no-tablespaces</> option to
5138         <application>pg_dump</>/<application>pg_dumpall</>/<application>pg_restore</>
5139         so that dumps can be restored to clusters that have non-matching
5140         tablespace layouts (Gavin Roy)
5141        </para>
5142       </listitem>
5143
5144       <listitem>
5145        <para>
5146         Remove <option>-d</> and <option>-D</> options from
5147         <application>pg_dump</> and <application>pg_dumpall</> (Tom)
5148        </para>
5149
5150        <para>
5151         These options were too frequently confused with the option to
5152         select a database name in other <productname>PostgreSQL</>
5153         client applications.  The functionality is still available,
5154         but you must now spell out the long option name
5155         <option>--inserts</> or <option>--column-inserts</>.
5156        </para>
5157       </listitem>
5158
5159       <listitem>
5160        <para>
5161         Remove <option>-i</>/<option>--ignore-version</> option from
5162         <application>pg_dump</> and <application>pg_dumpall</> (Tom)
5163        </para>
5164
5165        <para>
5166         Use of this option does not throw an error, but it has no
5167         effect.  This option was removed because the version checks
5168         are necessary for safety.
5169        </para>
5170       </listitem>
5171
5172       <listitem>
5173        <para>
5174         Disable <varname>statement_timeout</> during dump and restore
5175         (Joshua Drake)
5176        </para>
5177       </listitem>
5178
5179       <listitem>
5180        <para>
5181         Add <application>pg_dump</>/<application>pg_dumpall</> option
5182         <option>--lock-wait-timeout</> (David Gould)
5183        </para>
5184
5185        <para>
5186         This allows dumps to fail if unable to acquire a shared lock
5187         within the specified amount of time.
5188        </para>
5189       </listitem>
5190
5191       <listitem>
5192        <para>
5193         Reorder <application>pg_dump</> <literal>--data-only</> output
5194         to dump tables referenced by foreign keys before
5195         the referencing tables (Tom)
5196        </para>
5197
5198        <para>
5199         This allows data loads when foreign keys are already present.
5200         If circular references make a safe ordering impossible, a
5201         <literal>NOTICE</> is issued.
5202        </para>
5203       </listitem>
5204
5205       <listitem>
5206        <para>
5207         Allow <application>pg_dump</>, <application>pg_dumpall</>, and
5208         <application>pg_restore</> to use a specified role (Benedek
5209         László)
5210        </para>
5211       </listitem>
5212
5213       <listitem>
5214        <para>
5215         Allow <application>pg_restore</> to use multiple concurrent
5216         connections to do the restore (Andrew)
5217        </para>
5218
5219        <para>
5220         The number of concurrent connections is controlled by the option
5221         <literal>--jobs</>.  This is supported only for custom-format archives.
5222        </para>
5223       </listitem>
5224
5225      </itemizedlist>
5226
5227     </sect4>
5228
5229    </sect3>
5230
5231    <sect3>
5232     <title>Programming Tools</title>
5233
5234     <sect4>
5235      <title><application>libpq</></title>
5236      <itemizedlist>
5237
5238       <listitem>
5239        <para>
5240         Allow the <type>OID</> to be specified when importing a large
5241         object, via new function <function>lo_import_with_oid()</> (Tatsuo)
5242        </para>
5243       </listitem>
5244
5245       <listitem>
5246        <para>
5247         Add <quote>events</> support (Andrew Chernow, Merlin Moncure)
5248        </para>
5249
5250        <para>
5251         This adds the ability to register callbacks to manage private
5252         data associated with <structname>PGconn</> and <structname>PGresult</>
5253         objects.
5254        </para>
5255       </listitem>
5256
5257       <listitem>
5258        <para>
5259         Improve error handling to allow the return of multiple
5260         error messages as multi-line error reports (Magnus)
5261        </para>
5262       </listitem>
5263
5264       <listitem>
5265        <para>
5266         Make <function>PQexecParams()</> and related functions return
5267         <varname>PGRES_EMPTY_QUERY</> for an empty query (Tom)
5268        </para>
5269
5270        <para>
5271         They previously returned <varname>PGRES_COMMAND_OK</>.
5272        </para>
5273       </listitem>
5274
5275       <listitem>
5276        <para>
5277         Document how to avoid the overhead of <function>WSACleanup()</>
5278         on Windows (Andrew Chernow)
5279        </para>
5280       </listitem>
5281
5282       <listitem>
5283        <para>
5284         Do not rely on Kerberos tickets to determine the default database
5285         username (Magnus)
5286        </para>
5287
5288        <para>
5289         Previously, a Kerberos-capable build of libpq would use the
5290         principal name from any available Kerberos ticket as default
5291         database username, even if the connection wasn't using Kerberos
5292         authentication.  This was deemed inconsistent and confusing.
5293         The default username is now determined the same way with or
5294         without Kerberos.  Note however that the database username must still
5295         match the ticket when Kerberos authentication is used.
5296        </para>
5297       </listitem>
5298      </itemizedlist>
5299
5300     </sect4>
5301
5302     <sect4>
5303      <title><application>libpq</> <acronym>SSL</> (Secure Sockets Layer)
5304       support</title>
5305      <itemizedlist>
5306
5307       <listitem>
5308        <para>
5309         Fix certificate validation for <acronym>SSL</> connections
5310         (Magnus)
5311        </para>
5312
5313        <para>
5314         <application>libpq</> now supports verifying both the certificate
5315         and the name of the server when making <acronym>SSL</>
5316         connections. If a root certificate is not available to use for
5317         verification, <acronym>SSL</> connections will fail. The
5318         <literal>sslmode</> parameter is used to enable certificate
5319         verification and set the level of checking.
5320         The default is still not to do any verification, allowing connections
5321         to SSL-enabled servers without requiring a root certificate on the
5322         client.
5323        </para>
5324       </listitem>
5325
5326       <listitem>
5327        <para>
5328         Support wildcard server certificates (Magnus)
5329        </para>
5330
5331        <para>
5332         If a certificate <acronym>CN</> starts with <literal>*</>, it will
5333         be treated as a wildcard when matching the hostname, allowing the
5334         use of the same certificate for multiple servers.
5335        </para>
5336       </listitem>
5337
5338       <listitem>
5339        <para>
5340         Allow the file locations for client certificates to be specified
5341         (Mark Woodward, Alvaro, Magnus)
5342        </para>
5343       </listitem>
5344
5345       <listitem>
5346        <para>
5347         Add a <function>PQinitOpenSSL</> function to allow greater control
5348         over OpenSSL/libcrypto initialization (Andrew Chernow)
5349        </para>
5350       </listitem>
5351
5352       <listitem>
5353        <para>
5354         Make <application>libpq</> unregister its <application>OpenSSL</>
5355         callbacks when no database connections remain open
5356         (Bruce, Magnus, Russell Smith)
5357        </para>
5358
5359        <para>
5360         This is required for applications that unload the libpq library,
5361         otherwise invalid <application>OpenSSL</> callbacks will remain.
5362        </para>
5363       </listitem>
5364
5365      </itemizedlist>
5366
5367     </sect4>
5368
5369     <sect4>
5370      <title><application>ecpg</></title>
5371      <itemizedlist>
5372
5373       <listitem>
5374        <para>
5375         Add localization support for messages (Euler Taveira de
5376         Oliveira)
5377        </para>
5378       </listitem>
5379
5380       <listitem>
5381        <para>
5382         ecpg parser is now automatically generated from the server
5383         parser (Michael)
5384        </para>
5385
5386        <para>
5387         Previously the ecpg parser was hand-maintained.
5388        </para>
5389       </listitem>
5390
5391      </itemizedlist>
5392
5393     </sect4>
5394
5395     <sect4>
5396      <title>Server Programming Interface (<acronym>SPI</>)</title>
5397      <itemizedlist>
5398
5399       <listitem>
5400        <para>
5401         Add support for single-use plans with out-of-line
5402         parameters (Tom)
5403        </para>
5404       </listitem>
5405
5406       <listitem>
5407        <para>
5408         Add new <varname>SPI_OK_REWRITTEN</> return code for
5409         <function>SPI_execute()</> (Heikki)
5410        </para>
5411
5412        <para>
5413         This is used when a command is rewritten to another type of
5414         command.
5415        </para>
5416       </listitem>
5417
5418       <listitem>
5419        <para>
5420         Remove unnecessary inclusions from <filename>executor/spi.h</> (Tom)
5421        </para>
5422
5423        <para>
5424         SPI-using modules might need to add some <literal>#include</>
5425         lines if they were depending on <filename>spi.h</> to include
5426         things for them.
5427        </para>
5428       </listitem>
5429
5430      </itemizedlist>
5431
5432     </sect4>
5433
5434    </sect3>
5435
5436    <sect3>
5437     <title>Build Options</title>
5438     <itemizedlist>
5439
5440      <listitem>
5441       <para>
5442        Update build system to use <productname>Autoconf</> 2.61 (Peter)
5443       </para>
5444      </listitem>
5445
5446      <listitem>
5447       <para>
5448        Require <productname>GNU bison</> for source code builds (Peter)
5449       </para>
5450
5451       <para>
5452        This has effectively been required for several years, but now there
5453        is no infrastructure claiming to support other parser tools.
5454       </para>
5455      </listitem>
5456
5457      <listitem>
5458       <para>
5459        Add <application>pg_config</> <literal>--htmldir</> option
5460        (Peter)
5461       </para>
5462      </listitem>
5463
5464      <listitem>
5465       <para>
5466        Pass <type>float4</> by value inside the server (Zoltan
5467        Boszormenyi)
5468       </para>
5469
5470       <para>
5471        Add <application>configure</> option
5472        <literal>--disable-float4-byval</> to use the old behavior.
5473        External C functions that use old-style (version 0) call convention
5474        and pass or return <type>float4</> values will be broken by this
5475        change, so you may need the <application>configure</> option if you
5476        have such functions and don't want to update them.
5477       </para>
5478      </listitem>
5479
5480      <listitem>
5481       <para>
5482        Pass <type>float8</>, <type>int8</>, and related datatypes
5483        by value inside the server on 64-bit platforms (Zoltan Boszormenyi)
5484       </para>
5485
5486       <para>
5487        Add <application>configure</> option
5488        <literal>--disable-float8-byval</> to use the old behavior.
5489        As above, this change might break old-style external C functions.
5490       </para>
5491      </listitem>
5492
5493      <listitem>
5494       <para>
5495        Add configure options <literal>--with-segsize</>,
5496        <literal>--with-blocksize</>, <literal>--with-wal-blocksize</>,
5497        <literal>--with-wal-segsize</> (Zdenek Kotala, Tom)
5498       </para>
5499
5500       <para>
5501        This simplifies build-time control over several constants that
5502        previously could only be changed by editing
5503        <filename>pg_config_manual.h</>.
5504       </para>
5505      </listitem>
5506
5507      <listitem>
5508       <para>
5509        Allow threaded builds on <productname>Solaris</> 2.5 (Bruce)
5510       </para>
5511      </listitem>
5512
5513      <listitem>
5514       <para>
5515        Use the system's <function>getopt_long()</> on <productname>Solaris</>
5516        (Zdenek Kotala, Tom)
5517       </para>
5518
5519       <para>
5520        This makes option processing more consistent with what Solaris users
5521        expect.
5522       </para>
5523      </listitem>
5524
5525      <listitem>
5526       <para>
5527        Add support for the <productname>Sun Studio</> compiler on
5528        <productname>Linux</> (Julius Stroffek)
5529       </para>
5530      </listitem>
5531
5532      <listitem>
5533       <para>
5534        Append the major version number to the backend <application>gettext</>
5535        domain, and the <literal>soname</> major version number to
5536        libraries' <application>gettext</> domain (Peter)
5537       </para>
5538
5539       <para>
5540        This simplifies parallel installations of multiple versions.
5541       </para>
5542      </listitem>
5543
5544      <listitem>
5545       <para>
5546        Add support for code coverage testing with <application>gcov</>
5547        (Michelle Caisse)
5548       </para>
5549      </listitem>
5550
5551      <listitem>
5552       <para>
5553        Allow out-of-tree builds on <productname>Mingw</> and
5554        <productname>Cygwin</> (Richard Evans)
5555       </para>
5556      </listitem>
5557
5558      <listitem>
5559       <para>
5560        Fix the use of <productname>Mingw</> as a cross-compiling source
5561        platform (Peter)
5562       </para>
5563      </listitem>
5564
5565     </itemizedlist>
5566
5567    </sect3>
5568
5569    <sect3>
5570     <title>Source Code</title>
5571     <itemizedlist>
5572
5573      <listitem>
5574       <para>
5575        Support 64-bit time zone data files (Heikki)
5576       </para>
5577
5578       <para>
5579        This adds support for daylight saving time (<acronym>DST</>)
5580        calculations beyond the year 2038.
5581       </para>
5582      </listitem>
5583
5584      <listitem>
5585       <para>
5586        Deprecate use of platform's <type>time_t</> data type (Tom)
5587       </para>
5588
5589       <para>
5590        Some platforms have migrated to 64-bit <type>time_t</>, some have
5591        not, and Windows can't make up its mind what it's doing.  Define
5592        <type>pg_time_t</> to have the same meaning as <type>time_t</>,
5593        but always be 64 bits (unless the platform has no 64-bit integer type),
5594        and use that type in all module APIs and on-disk data formats.
5595       </para>
5596      </listitem>
5597
5598      <listitem>
5599       <para>
5600        Fix bug in handling of the time zone database when cross-compiling
5601        (Richard Evans)
5602       </para>
5603      </listitem>
5604
5605      <listitem>
5606       <para>
5607        Link backend object files in one step, rather than in stages
5608        (Peter)
5609       </para>
5610      </listitem>
5611
5612      <listitem>
5613       <para>
5614        Improve <application>gettext</> support to allow better translation
5615        of plurals (Peter)
5616       </para>
5617      </listitem>
5618
5619      <listitem>
5620       <para>
5621        Add message translation support to the PL languages (Alvaro, Peter)
5622       </para>
5623      </listitem>
5624
5625      <listitem>
5626       <para>
5627        Add more <application>DTrace</> probes (Robert Lor)
5628       </para>
5629      </listitem>
5630
5631      <listitem>
5632       <para>
5633        Enable <application>DTrace</> support on <application>Mac OS X
5634        Leopard</> and other non-Solaris platforms (Robert Lor)
5635       </para>
5636      </listitem>
5637
5638      <listitem>
5639       <para>
5640        Simplify and standardize conversions between C strings and
5641        <type>text</> datums, by providing common functions for the purpose
5642        (Brendan Jurd, Tom)
5643       </para>
5644      </listitem>
5645
5646      <listitem>
5647       <para>
5648        Clean up the <filename>include/catalog/</> header files so that
5649        frontend programs can include them without including
5650        <filename>postgres.h</>
5651        (Zdenek Kotala)
5652       </para>
5653      </listitem>
5654
5655      <listitem>
5656       <para>
5657        Make <type>name</> char-aligned, and suppress zero-padding of
5658        <type>name</> entries in indexes (Tom)
5659       </para>
5660      </listitem>
5661
5662      <listitem>
5663       <para>
5664        Recover better if dynamically-loaded code executes <function>exit()</>
5665        (Tom)
5666       </para>
5667      </listitem>
5668
5669      <listitem>
5670       <para>
5671        Add a hook to let plug-ins monitor the executor (Itagaki
5672        Takahiro)
5673       </para>
5674      </listitem>
5675
5676      <listitem>
5677       <para>
5678        Add a hook to allow the planner's statistics lookup behavior to
5679        be overridden (Simon Riggs)
5680       </para>
5681      </listitem>
5682
5683      <listitem>
5684       <para>
5685        Add <function>shmem_startup_hook()</> for custom shared memory
5686        requirements (Tom)
5687       </para>
5688      </listitem>
5689
5690      <listitem>
5691       <para>
5692        Replace the index access method <function>amgetmulti</> entry point
5693        with <function>amgetbitmap</>, and extend the API for
5694        <function>amgettuple</> to support run-time determination of
5695        operator lossiness (Heikki, Tom, Teodor)
5696       </para>
5697
5698       <para>
5699        The API for GIN and GiST opclass <function>consistent</> functions
5700        has been extended as well.
5701       </para>
5702      </listitem>
5703
5704      <listitem>
5705       <para>
5706        Add support for partial-match searches in <acronym>GIN</> indexes
5707        (Teodor Sigaev, Oleg Bartunov)
5708       </para>
5709      </listitem>
5710
5711      <listitem>
5712       <para>
5713        Replace <structname>pg_class</> column <structfield>reltriggers</>
5714        with boolean <structfield>relhastriggers</> (Simon)
5715       </para>
5716
5717       <para>
5718        Also remove unused <structname>pg_class</> columns
5719        <structfield>relukeys</>, <structfield>relfkeys</>, and
5720        <structfield>relrefs</>.
5721       </para>
5722      </listitem>
5723
5724      <listitem>
5725       <para>
5726        Add a <structfield>relistemp</> column to <structname>pg_class</>
5727        to ease identification of temporary tables (Tom)
5728       </para>
5729      </listitem>
5730
5731      <listitem>
5732       <para>
5733        Move platform <acronym>FAQ</>s into the main documentation
5734        (Peter)
5735       </para>
5736      </listitem>
5737
5738      <listitem>
5739       <para>
5740        Prevent parser input files from being built with any conflicts
5741        (Peter)
5742       </para>
5743      </listitem>
5744
5745      <listitem>
5746       <para>
5747        Add support for the <literal>KOI8U</> (Ukrainian) encoding
5748        (Peter)
5749       </para>
5750      </listitem>
5751
5752      <listitem>
5753       <para>
5754        Add Japanese message translations (Japan PostgreSQL Users Group)
5755       </para>
5756
5757       <para>
5758        This used to be maintained as a separate project.
5759       </para>
5760      </listitem>
5761
5762      <listitem>
5763       <para>
5764        Fix problem when setting <varname>LC_MESSAGES</> on
5765        <application>MSVC</>-built systems (Hiroshi Inoue, Hiroshi
5766        Saito, Magnus)
5767       </para>
5768      </listitem>
5769
5770     </itemizedlist>
5771
5772    </sect3>
5773
5774    <sect3>
5775     <title>Contrib</title>
5776
5777     <itemizedlist>
5778
5779      <listitem>
5780       <para>
5781        Add <filename>contrib/auto_explain</> to automatically run
5782        <command>EXPLAIN</> on queries exceeding a specified duration
5783        (Itagaki Takahiro, Tom)
5784       </para>
5785      </listitem>
5786
5787      <listitem>
5788       <para>
5789        Add <filename>contrib/btree_gin</> to allow GIN indexes to
5790        handle more datatypes (Oleg, Teodor)
5791       </para>
5792      </listitem>
5793
5794      <listitem>
5795       <para>
5796        Add <filename>contrib/citext</> to provide a case-insensitive,
5797        multibyte-aware text data type (David Wheeler)
5798       </para>
5799      </listitem>
5800
5801      <listitem>
5802       <para>
5803        Add <filename>contrib/pg_stat_statements</> for server-wide
5804        tracking of statement execution statistics (Itagaki Takahiro)
5805       </para>
5806      </listitem>
5807
5808      <listitem>
5809       <para>
5810        Add duration and query mode options to <filename>contrib/pgbench</>
5811        (Itagaki Takahiro)
5812       </para>
5813      </listitem>
5814
5815      <listitem>
5816       <para>
5817        Make <filename>contrib/pgbench</> use table names
5818        <structname>pgbench_accounts</>, <structname>pgbench_branches</>,
5819        <structname>pgbench_history</>, and <structname>pgbench_tellers</>,
5820        rather than just <structname>accounts</>, <structname>branches</>,
5821        <structname>history</>, and <structname>tellers</> (Tom)
5822       </para>
5823
5824       <para>
5825        This is to reduce the risk of accidentally destroying real data
5826        by running <application>pgbench</>.
5827       </para>
5828      </listitem>
5829
5830      <listitem>
5831       <para>
5832        Fix <filename>contrib/pgstattuple</> to handle tables and
5833        indexes with over 2 billion pages (Tatsuhito Kasahara)
5834       </para>
5835      </listitem>
5836
5837      <listitem>
5838       <para>
5839        In <filename>contrib/fuzzystrmatch</>, add a version of the
5840        Levenshtein string-distance function that allows the user to
5841        specify the costs of insertion, deletion, and substitution
5842        (Volkan Yazici)
5843       </para>
5844      </listitem>
5845
5846      <listitem>
5847       <para>
5848        Make <filename>contrib/ltree</> support multibyte encodings
5849        (laser)
5850       </para>
5851      </listitem>
5852
5853      <listitem>
5854       <para>
5855        Enable <filename>contrib/dblink</> to use connection information
5856        stored in the SQL/MED catalogs (Joe Conway)
5857       </para>
5858      </listitem>
5859
5860      <listitem>
5861       <para>
5862        Improve <filename>contrib/dblink</>'s reporting of errors from
5863        the remote server (Joe Conway)
5864       </para>
5865      </listitem>
5866
5867      <listitem>
5868       <para>
5869        Make <filename>contrib/dblink</> set <varname>client_encoding</>
5870        to match the local database's encoding (Joe Conway)
5871       </para>
5872
5873       <para>
5874        This prevents encoding problems when communicating with a remote
5875        database that uses a different encoding.
5876       </para>
5877      </listitem>
5878
5879      <listitem>
5880       <para>
5881        Make sure <filename>contrib/dblink</> uses a password supplied
5882        by the user, and not accidentally taken from the server's
5883        <filename>.pgpass</> file (Joe Conway)
5884       </para>
5885
5886       <para>
5887        This is a minor security enhancement.
5888       </para>
5889      </listitem>
5890
5891      <listitem>
5892       <para>
5893        Add <function>fsm_page_contents()</>
5894        to <filename>contrib/pageinspect</> (Heikki)
5895       </para>
5896      </listitem>
5897
5898      <listitem>
5899       <para>
5900        Modify <function>get_raw_page()</> to support free space map
5901        (<filename>*_fsm</>) files.  Also update
5902        <filename>contrib/pg_freespacemap</>.
5903       </para>
5904      </listitem>
5905
5906      <listitem>
5907       <para>
5908        Add support for multibyte encodings to <filename>contrib/pg_trgm</>
5909        (Teodor)
5910       </para>
5911      </listitem>
5912
5913      <listitem>
5914       <para>
5915        Rewrite <filename>contrib/intagg</> to use new
5916        functions <function>array_agg()</> and <function>unnest()</>
5917        (Tom)
5918       </para>
5919      </listitem>
5920
5921      <listitem>
5922       <para>
5923        Make <filename>contrib/pg_standby</> recover all available WAL before
5924        failover (Fujii Masao, Simon, Heikki)
5925       </para>
5926
5927       <para>
5928        To make this work safely, you now need to set the new
5929        <literal>recovery_end_command</> option in <filename>recovery.conf</>
5930        to clean up the trigger file after failover. <application>pg_standby</>
5931        will no longer remove the trigger file itself.
5932       </para>
5933      </listitem>
5934
5935      <listitem>
5936       <para>
5937        <filename>contrib/pg_standby</>'s <option>-l</> option is now a no-op,
5938        because it is unsafe to use a symlink (Simon)
5939       </para>
5940      </listitem>
5941
5942     </itemizedlist>
5943
5944    </sect3>
5945   </sect2>
5946  </sect1>