]> granicus.if.org Git - postgresql/blob - doc/src/sgml/release-8.4.sgml
213c52e61c6c132acf218f951a4565af5796c23a
[postgresql] / 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-12">
5   <title>Release 8.4.12</title>
6
7   <note>
8   <title>Release Date</title>
9   <simpara>2012-06-04</simpara>
10   </note>
11
12   <para>
13    This release contains a variety of fixes from 8.4.11.
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.12</title>
20
21    <para>
22     A dump/restore is not required for those running 8.4.X.
23    </para>
24
25    <para>
26     However, if you are upgrading from a version earlier than 8.4.10,
27     see the release notes for 8.4.10.
28    </para>
29
30   </sect2>
31
32   <sect2>
33    <title>Changes</title>
34
35    <itemizedlist>
36
37     <listitem>
38      <para>
39       Fix incorrect password transformation in
40       <filename>contrib/pgcrypto</>'s DES <function>crypt()</> function
41       (Solar Designer)
42      </para>
43
44      <para>
45       If a password string contained the byte value <literal>0x80</>, the
46       remainder of the password was ignored, causing the password to be much
47       weaker than it appeared.  With this fix, the rest of the string is
48       properly included in the DES hash.  Any stored password values that are
49       affected by this bug will thus no longer match, so the stored values may
50       need to be updated.  (CVE-2012-2143)
51      </para>
52     </listitem>
53
54     <listitem>
55      <para>
56       Ignore <literal>SECURITY DEFINER</> and <literal>SET</> attributes for
57       a procedural language's call handler (Tom Lane)
58      </para>
59
60      <para>
61       Applying such attributes to a call handler could crash the server.
62       (CVE-2012-2655)
63      </para>
64     </listitem>
65
66     <listitem>
67      <para>
68       Allow numeric timezone offsets in <type>timestamp</> input to be up to
69       16 hours away from UTC (Tom Lane)
70      </para>
71
72      <para>
73       Some historical time zones have offsets larger than 15 hours, the
74       previous limit.  This could result in dumped data values being rejected
75       during reload.
76      </para>
77     </listitem>
78
79     <listitem>
80      <para>
81       Fix timestamp conversion to cope when the given time is exactly the
82       last DST transition time for the current timezone (Tom Lane)
83      </para>
84
85      <para>
86       This oversight has been there a long time, but was not noticed
87       previously because most DST-using zones are presumed to have an
88       indefinite sequence of future DST transitions.
89      </para>
90     </listitem>
91
92     <listitem>
93      <para>
94       Fix <type>text</> to <type>name</> and <type>char</> to <type>name</>
95       casts to perform string truncation correctly in multibyte encodings
96       (Karl Schnaitter)
97      </para>
98     </listitem>
99
100     <listitem>
101      <para>
102       Fix memory copying bug in <function>to_tsquery()</> (Heikki Linnakangas)
103      </para>
104     </listitem>
105
106     <listitem>
107      <para>
108       Fix planner's handling of outer PlaceHolderVars within subqueries (Tom
109       Lane)
110      </para>
111
112      <para>
113       This bug concerns sub-SELECTs that reference variables coming from the
114       nullable side of an outer join of the surrounding query.
115       In 9.1, queries affected by this bug would fail with <quote>ERROR:
116       Upper-level PlaceHolderVar found where not expected</>.  But in 9.0 and
117       8.4, you'd silently get possibly-wrong answers, since the value
118       transmitted into the subquery wouldn't go to null when it should.
119      </para>
120     </listitem>
121
122     <listitem>
123      <para>
124       Fix slow session startup when <structname>pg_attribute</> is very large
125       (Tom Lane)
126      </para>
127
128      <para>
129       If <structname>pg_attribute</> exceeds one-fourth of
130       <varname>shared_buffers</>, cache rebuilding code that is sometimes
131       needed during session start would trigger the synchronized-scan logic,
132       causing it to take many times longer than normal.  The problem was
133       particularly acute if many new sessions were starting at once.
134      </para>
135     </listitem>
136
137     <listitem>
138      <para>
139       Ensure sequential scans check for query cancel reasonably often (Merlin
140       Moncure)
141      </para>
142
143      <para>
144       A scan encountering many consecutive pages that contain no live tuples
145       would not respond to interrupts meanwhile.
146      </para>
147     </listitem>
148
149     <listitem>
150      <para>
151       Ensure the Windows implementation of <function>PGSemaphoreLock()</>
152       clears <varname>ImmediateInterruptOK</> before returning (Tom Lane)
153      </para>
154
155      <para>
156       This oversight meant that a query-cancel interrupt received later
157       in the same query could be accepted at an unsafe time, with
158       unpredictable but not good consequences.
159      </para>
160     </listitem>
161
162     <listitem>
163      <para>
164       Show whole-row variables safely when printing views or rules
165       (Abbas Butt, Tom Lane)
166      </para>
167
168      <para>
169       Corner cases involving ambiguous names (that is, the name could be
170       either a table or column name of the query) were printed in an
171       ambiguous way, risking that the view or rule would be interpreted
172       differently after dump and reload.  Avoid the ambiguous case by
173       attaching a no-op cast.
174      </para>
175     </listitem>
176
177     <listitem>
178      <para>
179       Fix <command>COPY FROM</> to properly handle null marker strings that
180       correspond to invalid encoding (Tom Lane)
181      </para>
182
183      <para>
184       A null marker string such as <literal>E'\\0'</> should work, and did
185       work in the past, but the case got broken in 8.4.
186      </para>
187     </listitem>
188
189     <listitem>
190      <para>
191       Ensure autovacuum worker processes perform stack depth checking
192       properly (Heikki Linnakangas)
193      </para>
194
195      <para>
196       Previously, infinite recursion in a function invoked by
197       auto-<command>ANALYZE</> could crash worker processes.
198      </para>
199     </listitem>
200
201     <listitem>
202      <para>
203       Fix logging collector to not lose log coherency under high load (Andrew
204       Dunstan)
205      </para>
206
207      <para>
208       The collector previously could fail to reassemble large messages if it
209       got too busy.
210      </para>
211     </listitem>
212
213     <listitem>
214      <para>
215       Fix logging collector to ensure it will restart file rotation
216       after receiving <systemitem>SIGHUP</> (Tom Lane)
217      </para>
218     </listitem>
219
220     <listitem>
221      <para>
222       Fix WAL replay logic for GIN indexes to not fail if the index was
223       subsequently dropped (Tom Lane)
224      </para>
225     </listitem>
226
227     <listitem>
228      <para>
229       Fix memory leak in PL/pgSQL's <command>RETURN NEXT</> command (Joe
230       Conway)
231      </para>
232     </listitem>
233
234     <listitem>
235      <para>
236       Fix PL/pgSQL's <command>GET DIAGNOSTICS</> command when the target
237       is the function's first variable (Tom Lane)
238      </para>
239     </listitem>
240
241     <listitem>
242      <para>
243       Fix potential access off the end of memory in <application>psql</>'s
244       expanded display (<command>\x</>) mode (Peter Eisentraut)
245      </para>
246     </listitem>
247
248     <listitem>
249      <para>
250       Fix several performance problems in <application>pg_dump</> when
251       the database contains many objects (Jeff Janes, Tom Lane)
252      </para>
253
254      <para>
255       <application>pg_dump</> could get very slow if the database contained
256       many schemas, or if many objects are in dependency loops, or if there
257       are many owned sequences.
258      </para>
259     </listitem>
260
261     <listitem>
262      <para>
263       Fix <filename>contrib/dblink</>'s <function>dblink_exec()</> to not leak
264       temporary database connections upon error (Tom Lane)
265      </para>
266     </listitem>
267
268     <listitem>
269      <para>
270       Fix <filename>contrib/dblink</> to report the correct connection name in
271       error messages (Kyotaro Horiguchi)
272      </para>
273     </listitem>
274
275     <listitem>
276      <para>
277       Update time zone data files to <application>tzdata</> release 2012c
278       for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland
279       Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands;
280       also historical corrections for Canada.
281      </para>
282     </listitem>
283
284    </itemizedlist>
285
286   </sect2>
287  </sect1>
288
289  <sect1 id="release-8-4-11">
290   <title>Release 8.4.11</title>
291
292   <note>
293   <title>Release Date</title>
294   <simpara>2012-02-27</simpara>
295   </note>
296
297   <para>
298    This release contains a variety of fixes from 8.4.10.
299    For information about new features in the 8.4 major release, see
300    <xref linkend="release-8-4">.
301   </para>
302
303   <sect2>
304    <title>Migration to Version 8.4.11</title>
305
306    <para>
307     A dump/restore is not required for those running 8.4.X.
308    </para>
309
310    <para>
311     However, if you are upgrading from a version earlier than 8.4.10,
312     see the release notes for 8.4.10.
313    </para>
314
315   </sect2>
316
317   <sect2>
318    <title>Changes</title>
319
320    <itemizedlist>
321
322     <listitem>
323      <para>
324       Require execute permission on the trigger function for
325       <command>CREATE TRIGGER</> (Robert Haas)
326      </para>
327
328      <para>
329       This missing check could allow another user to execute a trigger
330       function with forged input data, by installing it on a table he owns.
331       This is only of significance for trigger functions marked
332       <literal>SECURITY DEFINER</>, since otherwise trigger functions run
333       as the table owner anyway.  (CVE-2012-0866)
334      </para>
335     </listitem>
336
337     <listitem>
338      <para>
339       Remove arbitrary limitation on length of common name in SSL
340       certificates (Heikki Linnakangas)
341      </para>
342
343      <para>
344       Both <application>libpq</> and the server truncated the common name
345       extracted from an SSL certificate at 32 bytes.  Normally this would
346       cause nothing worse than an unexpected verification failure, but there
347       are some rather-implausible scenarios in which it might allow one
348       certificate holder to impersonate another.  The victim would have to
349       have a common name exactly 32 bytes long, and the attacker would have
350       to persuade a trusted CA to issue a certificate in which the common
351       name has that string as a prefix.  Impersonating a server would also
352       require some additional exploit to redirect client connections.
353       (CVE-2012-0867)
354      </para>
355     </listitem>
356
357     <listitem>
358      <para>
359       Convert newlines to spaces in names written in <application>pg_dump</>
360       comments (Robert Haas)
361      </para>
362
363      <para>
364       <application>pg_dump</> was incautious about sanitizing object names
365       that are emitted within SQL comments in its output script.  A name
366       containing a newline would at least render the script syntactically
367       incorrect.  Maliciously crafted object names could present a SQL
368       injection risk when the script is reloaded.  (CVE-2012-0868)
369      </para>
370     </listitem>
371
372     <listitem>
373      <para>
374       Fix btree index corruption from insertions concurrent with vacuuming
375       (Tom Lane)
376      </para>
377
378      <para>
379       An index page split caused by an insertion could sometimes cause a
380       concurrently-running <command>VACUUM</> to miss removing index entries
381       that it should remove.  After the corresponding table rows are removed,
382       the dangling index entries would cause errors (such as <quote>could not
383       read block N in file ...</>) or worse, silently wrong query results
384       after unrelated rows are re-inserted at the now-free table locations.
385       This bug has been present since release 8.2, but occurs so infrequently
386       that it was not diagnosed until now.  If you have reason to suspect
387       that it has happened in your database, reindexing the affected index
388       will fix things.
389      </para>
390     </listitem>
391
392     <listitem>
393      <para>
394       Update per-column permissions, not only per-table permissions, when
395       changing table owner (Tom Lane)
396      </para>
397
398      <para>
399       Failure to do this meant that any previously granted column permissions
400       were still shown as having been granted by the old owner.  This meant
401       that neither the new owner nor a superuser could revoke the
402       now-untraceable-to-table-owner permissions.
403      </para>
404     </listitem>
405
406     <listitem>
407      <para>
408       Allow non-existent values for some settings in <command>ALTER
409       USER/DATABASE SET</> (Heikki Linnakangas)
410      </para>
411
412      <para>
413       Allow <varname>default_text_search_config</>,
414       <varname>default_tablespace</>, and <varname>temp_tablespaces</> to be
415       set to names that are not known.  This is because they might be known
416       in another database where the setting is intended to be used, or for the
417       tablespace cases because the tablespace might not be created yet.  The
418       same issue was previously recognized for <varname>search_path</>, and
419       these settings now act like that one.
420      </para>
421     </listitem>
422
423     <listitem>
424      <para>
425       Avoid crashing when we have problems deleting table files post-commit
426       (Tom Lane)
427      </para>
428
429      <para>
430       Dropping a table should lead to deleting the underlying disk files only
431       after the transaction commits.  In event of failure then (for instance,
432       because of wrong file permissions) the code is supposed to just emit a
433       warning message and go on, since it's too late to abort the
434       transaction.  This logic got broken as of release 8.4, causing such
435       situations to result in a PANIC and an unrestartable database.
436      </para>
437     </listitem>
438
439     <listitem>
440      <para>
441       Track the OID counter correctly during WAL replay, even when it wraps
442       around (Tom Lane)
443      </para>
444
445      <para>
446       Previously the OID counter would remain stuck at a high value until the
447       system exited replay mode.  The practical consequences of that are
448       usually nil, but there are scenarios wherein a standby server that's
449       been promoted to master might take a long time to advance the OID
450       counter to a reasonable value once values are needed.
451      </para>
452     </listitem>
453
454     <listitem>
455      <para>
456       Fix regular expression back-references with <literal>*</> attached
457       (Tom Lane)
458      </para>
459
460      <para>
461       Rather than enforcing an exact string match, the code would effectively
462       accept any string that satisfies the pattern sub-expression referenced
463       by the back-reference symbol.
464      </para>
465
466      <para>
467       A similar problem still afflicts back-references that are embedded in a
468       larger quantified expression, rather than being the immediate subject
469       of the quantifier.  This will be addressed in a future
470       <productname>PostgreSQL</> release.
471      </para>
472     </listitem>
473
474     <listitem>
475      <para>
476       Fix recently-introduced memory leak in processing of
477       <type>inet</>/<type>cidr</> values (Heikki Linnakangas)
478      </para>
479
480      <para>
481       A patch in the December 2011 releases of <productname>PostgreSQL</>
482       caused memory leakage in these operations, which could be significant
483       in scenarios such as building a btree index on such a column.
484      </para>
485     </listitem>
486
487     <listitem>
488      <para>
489       Fix dangling pointer after <command>CREATE TABLE AS</>/<command>SELECT
490       INTO</> in a SQL-language function (Tom Lane)
491      </para>
492
493      <para>
494       In most cases this only led to an assertion failure in assert-enabled
495       builds, but worse consequences seem possible.
496      </para>
497     </listitem>
498
499     <listitem>
500      <para>
501       Avoid double close of file handle in syslogger on Windows (MauMau)
502      </para>
503
504      <para>
505       Ordinarily this error was invisible, but it would cause an exception
506       when running on a debug version of Windows.
507      </para>
508     </listitem>
509
510     <listitem>
511      <para>
512       Fix I/O-conversion-related memory leaks in plpgsql
513       (Andres Freund, Jan Urbanski, Tom Lane)
514      </para>
515
516      <para>
517       Certain operations would leak memory until the end of the current
518       function.
519      </para>
520     </listitem>
521
522     <listitem>
523      <para>
524       Improve <application>pg_dump</>'s handling of inherited table columns
525       (Tom Lane)
526      </para>
527
528      <para>
529       <application>pg_dump</> mishandled situations where a child column has
530       a different default expression than its parent column.  If the default
531       is textually identical to the parent's default, but not actually the
532       same (for instance, because of schema search path differences) it would
533       not be recognized as different, so that after dump and restore the
534       child would be allowed to inherit the parent's default.  Child columns
535       that are <literal>NOT NULL</> where their parent is not could also be
536       restored subtly incorrectly.
537      </para>
538     </listitem>
539
540     <listitem>
541      <para>
542       Fix <application>pg_restore</>'s direct-to-database mode for
543       INSERT-style table data (Tom Lane)
544      </para>
545
546      <para>
547       Direct-to-database restores from archive files made with
548       <option>--inserts</> or <option>--column-inserts</> options fail when
549       using <application>pg_restore</> from a release dated September or
550       December 2011, as a result of an oversight in a fix for another
551       problem.  The archive file itself is not at fault, and text-mode
552       output is okay.
553      </para>
554     </listitem>
555
556     <listitem>
557      <para>
558       Allow <literal>AT</> option in <application>ecpg</>
559       <literal>DEALLOCATE</> statements (Michael Meskes)
560      </para>
561
562      <para>
563       The infrastructure to support this has been there for awhile, but
564       through an oversight there was still an error check rejecting the case.
565      </para>
566     </listitem>
567
568     <listitem>
569      <para>
570       Fix error in <filename>contrib/intarray</>'s <literal>int[] &amp;
571       int[]</> operator (Guillaume Lelarge)
572      </para>
573
574      <para>
575       If the smallest integer the two input arrays have in common is 1,
576       and there are smaller values in either array, then 1 would be
577       incorrectly omitted from the result.
578      </para>
579     </listitem>
580
581     <listitem>
582      <para>
583       Fix error detection in <filename>contrib/pgcrypto</>'s
584       <function>encrypt_iv()</> and <function>decrypt_iv()</>
585       (Marko Kreen)
586      </para>
587
588      <para>
589       These functions failed to report certain types of invalid-input errors,
590       and would instead return random garbage values for incorrect input.
591      </para>
592     </listitem>
593
594     <listitem>
595      <para>
596       Fix one-byte buffer overrun in <filename>contrib/test_parser</>
597       (Paul Guyot)
598      </para>
599
600      <para>
601       The code would try to read one more byte than it should, which would
602       crash in corner cases.
603       Since <filename>contrib/test_parser</> is only example code, this is
604       not a security issue in itself, but bad example code is still bad.
605      </para>
606     </listitem>
607
608     <listitem>
609      <para>
610       Use <function>__sync_lock_test_and_set()</> for spinlocks on ARM, if
611       available (Martin Pitt)
612      </para>
613
614      <para>
615       This function replaces our previous use of the <literal>SWPB</>
616       instruction, which is deprecated and not available on ARMv6 and later.
617       Reports suggest that the old code doesn't fail in an obvious way on
618       recent ARM boards, but simply doesn't interlock concurrent accesses,
619       leading to bizarre failures in multiprocess operation.
620      </para>
621     </listitem>
622
623     <listitem>
624      <para>
625       Use <option>-fexcess-precision=standard</> option when building with
626       gcc versions that accept it (Andrew Dunstan)
627      </para>
628
629      <para>
630       This prevents assorted scenarios wherein recent versions of gcc will
631       produce creative results.
632      </para>
633     </listitem>
634
635     <listitem>
636      <para>
637       Allow use of threaded Python on FreeBSD (Chris Rees)
638      </para>
639
640      <para>
641       Our configure script previously believed that this combination wouldn't
642       work; but FreeBSD fixed the problem, so remove that error check.
643      </para>
644     </listitem>
645
646    </itemizedlist>
647
648   </sect2>
649  </sect1>
650
651  <sect1 id="release-8-4-10">
652   <title>Release 8.4.10</title>
653
654   <note>
655   <title>Release Date</title>
656   <simpara>2011-12-05</simpara>
657   </note>
658
659   <para>
660    This release contains a variety of fixes from 8.4.9.
661    For information about new features in the 8.4 major release, see
662    <xref linkend="release-8-4">.
663   </para>
664
665   <sect2>
666    <title>Migration to Version 8.4.10</title>
667
668    <para>
669     A dump/restore is not required for those running 8.4.X.
670    </para>
671
672    <para>
673     However, a longstanding error was discovered in the definition of the
674     <literal>information_schema.referential_constraints</> view.  If you
675     rely on correct results from that view, you should replace its
676     definition as explained in the first changelog item below.
677    </para>
678
679    <para>
680     Also, if you are upgrading from a version earlier than 8.4.8,
681     see the release notes for 8.4.8.
682    </para>
683
684   </sect2>
685
686   <sect2>
687    <title>Changes</title>
688
689    <itemizedlist>
690
691     <listitem>
692      <para>
693       Fix bugs in <literal>information_schema.referential_constraints</> view
694       (Tom Lane)
695      </para>
696
697      <para>
698       This view was being insufficiently careful about matching the
699       foreign-key constraint to the depended-on primary or unique key
700       constraint.  That could result in failure to show a foreign key
701       constraint at all, or showing it multiple times, or claiming that it
702       depends on a different constraint than the one it really does.
703      </para>
704
705      <para>
706       Since the view definition is installed by <application>initdb</>,
707       merely upgrading will not fix the problem.  If you need to fix this
708       in an existing installation, you can (as a superuser) drop the
709       <literal>information_schema</> schema then re-create it by sourcing
710       <filename><replaceable>SHAREDIR</>/information_schema.sql</filename>.
711       (Run <literal>pg_config --sharedir</> if you're uncertain where
712       <replaceable>SHAREDIR</> is.)  This must be repeated in each database
713       to be fixed.
714      </para>
715     </listitem>
716
717     <listitem>
718      <para>
719       Fix incorrect replay of WAL records for GIN index updates
720       (Tom Lane)
721      </para>
722
723      <para>
724       This could result in transiently failing to find index entries after
725       a crash, or on a hot-standby server.  The problem would be repaired
726       by the next <command>VACUUM</> of the index, however.
727      </para>
728     </listitem>
729
730     <listitem>
731      <para>
732       Fix TOAST-related data corruption during <literal>CREATE TABLE dest AS
733       SELECT * FROM src</> or <literal>INSERT INTO dest SELECT * FROM src</>
734       (Tom Lane)
735      </para>
736
737      <para>
738       If a table has been modified by <command>ALTER TABLE ADD COLUMN</>,
739       attempts to copy its data verbatim to another table could produce
740       corrupt results in certain corner cases.
741       The problem can only manifest in this precise form in 8.4 and later,
742       but we patched earlier versions as well in case there are other code
743       paths that could trigger the same bug.
744      </para>
745     </listitem>
746
747     <listitem>
748      <para>
749       Fix race condition during toast table access from stale syscache entries
750       (Tom Lane)
751      </para>
752
753      <para>
754       The typical symptom was transient errors like <quote>missing chunk
755       number 0 for toast value NNNNN in pg_toast_2619</>, where the cited
756       toast table would always belong to a system catalog.
757      </para>
758     </listitem>
759
760     <listitem>
761      <para>
762       Track dependencies of functions on items used in parameter default
763       expressions (Tom Lane)
764      </para>
765
766      <para>
767       Previously, a referenced object could be dropped without having dropped
768       or modified the function, leading to misbehavior when the function was
769       used.  Note that merely installing this update will not fix the missing
770       dependency entries; to do that, you'd need to <command>CREATE OR
771       REPLACE</> each such function afterwards.  If you have functions whose
772       defaults depend on non-built-in objects, doing so is recommended.
773      </para>
774     </listitem>
775
776     <listitem>
777      <para>
778       Allow inlining of set-returning SQL functions with multiple OUT
779       parameters (Tom Lane)
780      </para>
781     </listitem>
782
783     <listitem>
784      <para>
785       Make <function>DatumGetInetP()</> unpack inet datums that have a 1-byte
786       header, and add a new macro, <function>DatumGetInetPP()</>, that does
787       not (Heikki Linnakangas)
788      </para>
789
790      <para>
791       This change affects no core code, but might prevent crashes in add-on
792       code that expects <function>DatumGetInetP()</> to produce an unpacked
793       datum as per usual convention.
794      </para>
795     </listitem>
796
797     <listitem>
798      <para>
799       Improve locale support in <type>money</> type's input and output
800       (Tom Lane)
801      </para>
802
803      <para>
804       Aside from not supporting all standard
805       <link linkend="guc-lc-monetary"><varname>lc_monetary</></link>
806       formatting options, the input and output functions were inconsistent,
807       meaning there were locales in which dumped <type>money</> values could
808       not be re-read.
809      </para>
810     </listitem>
811
812     <listitem>
813      <para>
814       Don't let <link
815       linkend="guc-transform-null-equals"><varname>transform_null_equals</></link>
816       affect <literal>CASE foo WHEN NULL ...</> constructs
817       (Heikki Linnakangas)
818      </para>
819
820      <para>
821       <varname>transform_null_equals</> is only supposed to affect
822       <literal>foo = NULL</> expressions written directly by the user, not
823       equality checks generated internally by this form of <literal>CASE</>.
824      </para>
825     </listitem>
826
827     <listitem>
828      <para>
829       Change foreign-key trigger creation order to better support
830       self-referential foreign keys (Tom Lane)
831      </para>
832
833      <para>
834       For a cascading foreign key that references its own table, a row update
835       will fire both the <literal>ON UPDATE</> trigger and the
836       <literal>CHECK</> trigger as one event.  The <literal>ON UPDATE</>
837       trigger must execute first, else the <literal>CHECK</> will check a
838       non-final state of the row and possibly throw an inappropriate error.
839       However, the firing order of these triggers is determined by their
840       names, which generally sort in creation order since the triggers have
841       auto-generated names following the convention
842       <quote>RI_ConstraintTrigger_NNNN</>.  A proper fix would require
843       modifying that convention, which we will do in 9.2, but it seems risky
844       to change it in existing releases.  So this patch just changes the
845       creation order of the triggers.  Users encountering this type of error
846       should drop and re-create the foreign key constraint to get its
847       triggers into the right order.
848      </para>
849     </listitem>
850
851     <listitem>
852      <para>
853       Avoid floating-point underflow while tracking buffer allocation rate
854       (Greg Matthews)
855      </para>
856
857      <para>
858       While harmless in itself, on certain platforms this would result in
859       annoying kernel log messages.
860      </para>
861     </listitem>
862
863     <listitem>
864      <para>
865       Preserve configuration file name and line number values when starting
866       child processes under Windows (Tom Lane)
867      </para>
868
869      <para>
870       Formerly, these would not be displayed correctly in the
871       <structname>pg_settings</> view.
872      </para>
873     </listitem>
874
875     <listitem>
876      <para>
877       Preserve blank lines within commands in <application>psql</>'s command
878       history (Robert Haas)
879      </para>
880
881      <para>
882       The former behavior could cause problems if an empty line was removed
883       from within a string literal, for example.
884      </para>
885     </listitem>
886
887     <listitem>
888      <para>
889       Fix <application>pg_dump</> to dump user-defined casts between
890       auto-generated types, such as table rowtypes (Tom Lane)
891      </para>
892     </listitem>
893
894     <listitem>
895      <para>
896       Use the preferred version of <application>xsubpp</> to build PL/Perl,
897       not necessarily the operating system's main copy
898       (David Wheeler and Alex Hunsaker)
899      </para>
900     </listitem>
901
902     <listitem>
903      <para>
904       Fix incorrect coding in <filename>contrib/dict_int</> and
905       <filename>contrib/dict_xsyn</> (Tom Lane)
906      </para>
907
908      <para>
909       Some functions incorrectly assumed that memory returned by
910       <function>palloc()</> is guaranteed zeroed.
911      </para>
912     </listitem>
913
914     <listitem>
915      <para>
916       Honor query cancel interrupts promptly in <function>pgstatindex()</>
917       (Robert Haas)
918      </para>
919     </listitem>
920
921     <listitem>
922      <para>
923       Ensure VPATH builds properly install all server header files
924       (Peter Eisentraut)
925      </para>
926     </listitem>
927
928     <listitem>
929      <para>
930       Shorten file names reported in verbose error messages (Peter Eisentraut)
931      </para>
932
933      <para>
934       Regular builds have always reported just the name of the C file
935       containing the error message call, but VPATH builds formerly
936       reported an absolute path name.
937      </para>
938     </listitem>
939
940     <listitem>
941      <para>
942       Fix interpretation of Windows timezone names for Central America
943       (Tom Lane)
944      </para>
945
946      <para>
947       Map <quote>Central America Standard Time</> to <literal>CST6</>, not
948       <literal>CST6CDT</>, because DST is generally not observed anywhere in
949       Central America.
950      </para>
951     </listitem>
952
953     <listitem>
954      <para>
955       Update time zone data files to <application>tzdata</> release 2011n
956       for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa;
957       also historical corrections for Alaska and British East Africa.
958      </para>
959     </listitem>
960
961    </itemizedlist>
962
963   </sect2>
964  </sect1>
965
966  <sect1 id="release-8-4-9">
967   <title>Release 8.4.9</title>
968
969   <note>
970   <title>Release Date</title>
971   <simpara>2011-09-26</simpara>
972   </note>
973
974   <para>
975    This release contains a variety of fixes from 8.4.8.
976    For information about new features in the 8.4 major release, see
977    <xref linkend="release-8-4">.
978   </para>
979
980   <sect2>
981    <title>Migration to Version 8.4.9</title>
982
983    <para>
984     A dump/restore is not required for those running 8.4.X.
985    </para>
986
987    <para>
988     However, if you are upgrading from a version earlier than 8.4.8,
989     see the release notes for 8.4.8.
990    </para>
991
992   </sect2>
993
994   <sect2>
995    <title>Changes</title>
996
997    <itemizedlist>
998
999     <listitem>
1000      <para>
1001       Fix bugs in indexing of in-doubt HOT-updated tuples (Tom Lane)
1002      </para>
1003
1004      <para>
1005       These bugs could result in index corruption after reindexing a system
1006       catalog.  They are not believed to affect user indexes.
1007      </para>
1008     </listitem>
1009
1010     <listitem>
1011      <para>
1012       Fix multiple bugs in GiST index page split processing (Heikki
1013       Linnakangas)
1014      </para>
1015
1016      <para>
1017       The probability of occurrence was low, but these could lead to index
1018       corruption.
1019      </para>
1020     </listitem>
1021
1022     <listitem>
1023      <para>
1024       Fix possible buffer overrun in <function>tsvector_concat()</>
1025       (Tom Lane)
1026      </para>
1027
1028      <para>
1029       The function could underestimate the amount of memory needed for its
1030       result, leading to server crashes.
1031      </para>
1032     </listitem>
1033
1034     <listitem>
1035      <para>
1036       Fix crash in <function>xml_recv</> when processing a
1037       <quote>standalone</> parameter (Tom Lane)
1038      </para>
1039     </listitem>
1040
1041     <listitem>
1042      <para>
1043       Make <function>pg_options_to_table</> return NULL for an option with no
1044       value (Tom Lane)
1045      </para>
1046
1047      <para>
1048       Previously such cases would result in a server crash.
1049      </para>
1050     </listitem>
1051
1052     <listitem>
1053      <para>
1054       Avoid possibly accessing off the end of memory in <command>ANALYZE</>
1055       and in SJIS-2004 encoding conversion (Noah Misch)
1056      </para>
1057
1058      <para>
1059       This fixes some very-low-probability server crash scenarios.
1060      </para>
1061     </listitem>
1062
1063     <listitem>
1064      <para>
1065       Prevent intermittent hang in interactions of startup process with
1066       bgwriter process (Simon Riggs)
1067      </para>
1068
1069      <para>
1070       This affected recovery in non-hot-standby cases.
1071      </para>
1072     </listitem>
1073
1074     <listitem>
1075      <para>
1076       Fix race condition in relcache init file invalidation (Tom Lane)
1077      </para>
1078
1079      <para>
1080       There was a window wherein a new backend process could read a stale init
1081       file but miss the inval messages that would tell it the data is stale.
1082       The result would be bizarre failures in catalog accesses, typically
1083       <quote>could not read block 0 in file ...</> later during startup.
1084      </para>
1085     </listitem>
1086
1087     <listitem>
1088      <para>
1089       Fix memory leak at end of a GiST index scan (Tom Lane)
1090      </para>
1091
1092      <para>
1093       Commands that perform many separate GiST index scans, such as
1094       verification of a new GiST-based exclusion constraint on a table
1095       already containing many rows, could transiently require large amounts of
1096       memory due to this leak.
1097      </para>
1098     </listitem>
1099
1100     <listitem>
1101      <para>
1102       Fix incorrect memory accounting (leading to possible memory bloat) in
1103       tuplestores supporting holdable cursors and plpgsql's <literal>RETURN
1104       NEXT</> command (Tom Lane)
1105      </para>
1106     </listitem>
1107
1108     <listitem>
1109      <para>
1110       Fix performance problem when constructing a large, lossy bitmap
1111       (Tom Lane)
1112      </para>
1113     </listitem>
1114
1115     <listitem>
1116      <para>
1117       Fix join selectivity estimation for unique columns (Tom Lane)
1118      </para>
1119
1120      <para>
1121       This fixes an erroneous planner heuristic that could lead to poor
1122       estimates of the result size of a join.
1123      </para>
1124     </listitem>
1125
1126     <listitem>
1127      <para>
1128       Fix nested PlaceHolderVar expressions that appear only in sub-select
1129       target lists (Tom Lane)
1130      </para>
1131
1132      <para>
1133       This mistake could result in outputs of an outer join incorrectly
1134       appearing as NULL.
1135      </para>
1136     </listitem>
1137
1138     <listitem>
1139      <para>
1140       Allow nested <literal>EXISTS</> queries to be optimized properly (Tom
1141       Lane)
1142      </para>
1143     </listitem>
1144
1145     <listitem>
1146      <para>
1147       Fix array- and path-creating functions to ensure padding bytes are
1148       zeroes (Tom Lane)
1149      </para>
1150
1151      <para>
1152       This avoids some situations where the planner will think that
1153       semantically-equal constants are not equal, resulting in poor
1154       optimization.
1155      </para>
1156     </listitem>
1157
1158     <listitem>
1159      <para>
1160       Fix <command>EXPLAIN</> to handle gating Result nodes within
1161       inner-indexscan subplans (Tom Lane)
1162      </para>
1163
1164      <para>
1165       The usual symptom of this oversight was <quote>bogus varno</> errors.
1166      </para>
1167     </listitem>
1168
1169     <listitem>
1170      <para>
1171       Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane)
1172      </para>
1173
1174      <para>
1175       This could lead to loss of committed transactions after a server crash.
1176      </para>
1177     </listitem>
1178
1179     <listitem>
1180      <para>
1181       Fix dump bug for <literal>VALUES</> in a view (Tom Lane)
1182      </para>
1183     </listitem>
1184
1185     <listitem>
1186      <para>
1187       Disallow <literal>SELECT FOR UPDATE/SHARE</> on sequences (Tom Lane)
1188      </para>
1189
1190      <para>
1191       This operation doesn't work as expected and can lead to failures.
1192      </para>
1193     </listitem>
1194
1195     <listitem>
1196      <para>
1197       Fix <command>VACUUM</> so that it always updates
1198       <literal>pg_class</>.<literal>reltuples</>/<literal>relpages</> (Tom
1199       Lane)
1200      </para>
1201
1202      <para>
1203       This fixes some scenarios where autovacuum could make increasingly poor
1204       decisions about when to vacuum tables.
1205      </para>
1206     </listitem>
1207
1208     <listitem>
1209      <para>
1210       Defend against integer overflow when computing size of a hash table (Tom
1211       Lane)
1212      </para>
1213     </listitem>
1214
1215     <listitem>
1216      <para>
1217       Fix cases where <command>CLUSTER</> might attempt to access
1218       already-removed TOAST data (Tom Lane)
1219      </para>
1220     </listitem>
1221
1222     <listitem>
1223      <para>
1224       Fix portability bugs in use of credentials control messages for
1225       <quote>peer</> authentication (Tom Lane)
1226      </para>
1227     </listitem>
1228
1229     <listitem>
1230      <para>
1231       Fix SSPI login when multiple roundtrips are required (Ahmed Shinwari,
1232       Magnus Hagander)
1233      </para>
1234
1235      <para>
1236       The typical symptom of this problem was <quote>The function requested is
1237       not supported</> errors during SSPI login.
1238      </para>
1239     </listitem>
1240
1241     <listitem>
1242      <para>
1243       Throw an error if <filename>pg_hba.conf</> contains <literal>hostssl</>
1244       but SSL is disabled (Tom Lane)
1245      </para>
1246
1247      <para>
1248       This was concluded to be more user-friendly than the previous behavior
1249       of silently ignoring such lines.
1250      </para>
1251     </listitem>
1252
1253     <listitem>
1254      <para>
1255       Fix typo in <function>pg_srand48</> seed initialization (Andres Freund)
1256      </para>
1257
1258      <para>
1259       This led to failure to use all bits of the provided seed.  This function
1260       is not used on most platforms (only those without <function>srandom</>),
1261       and the potential security exposure from a less-random-than-expected
1262       seed seems minimal in any case.
1263      </para>
1264     </listitem>
1265
1266     <listitem>
1267      <para>
1268       Avoid integer overflow when the sum of <literal>LIMIT</> and
1269       <literal>OFFSET</> values exceeds 2^63 (Heikki Linnakangas)
1270      </para>
1271     </listitem>
1272
1273     <listitem>
1274      <para>
1275       Add overflow checks to <type>int4</> and <type>int8</> versions of
1276       <function>generate_series()</> (Robert Haas)
1277      </para>
1278     </listitem>
1279
1280     <listitem>
1281      <para>
1282       Fix trailing-zero removal in <function>to_char()</> (Marti Raudsepp)
1283      </para>
1284
1285      <para>
1286       In a format with <literal>FM</> and no digit positions
1287       after the decimal point, zeroes to the left of the decimal point could
1288       be removed incorrectly.
1289      </para>
1290     </listitem>
1291
1292     <listitem>
1293      <para>
1294       Fix <function>pg_size_pretty()</> to avoid overflow for inputs close to
1295       2^63 (Tom Lane)
1296      </para>
1297     </listitem>
1298
1299     <listitem>
1300      <para>
1301       Weaken plpgsql's check for typmod matching in record values (Tom Lane)
1302      </para>
1303
1304      <para>
1305       An overly enthusiastic check could lead to discarding length modifiers
1306       that should have been kept.
1307      </para>
1308     </listitem>
1309
1310     <listitem>
1311      <para>
1312       Correctly handle quotes in locale names during <application>initdb</>
1313       (Heikki Linnakangas)
1314      </para>
1315
1316      <para>
1317       The case can arise with some Windows locales, such as <quote>People's
1318       Republic of China</>.
1319      </para>
1320     </listitem>
1321
1322     <listitem>
1323      <para>
1324       Fix <application>pg_upgrade</> to preserve toast tables' relfrozenxids
1325       during an upgrade from 8.3 (Bruce Momjian)
1326      </para>
1327
1328      <para>
1329       Failure to do this could lead to <filename>pg_clog</> files being
1330       removed too soon after the upgrade.
1331      </para>
1332     </listitem>
1333
1334     <listitem>
1335      <para>
1336       In <application>pg_ctl</>, support silent mode for service registrations
1337       on Windows (MauMau)
1338      </para>
1339     </listitem>
1340
1341     <listitem>
1342      <para>
1343       Fix <application>psql</>'s counting of script file line numbers during
1344       <literal>COPY</> from a different file (Tom Lane)
1345      </para>
1346     </listitem>
1347
1348     <listitem>
1349      <para>
1350       Fix <application>pg_restore</>'s direct-to-database mode for
1351       <varname>standard_conforming_strings</> (Tom Lane)
1352      </para>
1353
1354      <para>
1355       <application>pg_restore</> could emit incorrect commands when restoring
1356       directly to a database server from an archive file that had been made
1357       with <varname>standard_conforming_strings</> set to <literal>on</>.
1358      </para>
1359     </listitem>
1360
1361     <listitem>
1362      <para>
1363       Be more user-friendly about unsupported cases for parallel
1364       <application>pg_restore</> (Tom Lane)
1365      </para>
1366
1367      <para>
1368       This change ensures that such cases are detected and reported before
1369       any restore actions have been taken.
1370      </para>
1371     </listitem>
1372
1373     <listitem>
1374      <para>
1375       Fix write-past-buffer-end and memory leak in <application>libpq</>'s
1376       LDAP service lookup code (Albe Laurenz)
1377      </para>
1378     </listitem>
1379
1380     <listitem>
1381      <para>
1382       In <application>libpq</>, avoid failures when using nonblocking I/O
1383       and an SSL connection (Martin Pihlak, Tom Lane)
1384      </para>
1385     </listitem>
1386
1387     <listitem>
1388      <para>
1389       Improve libpq's handling of failures during connection startup
1390       (Tom Lane)
1391      </para>
1392
1393      <para>
1394       In particular, the response to a server report of <function>fork()</>
1395       failure during SSL connection startup is now saner.
1396      </para>
1397     </listitem>
1398
1399     <listitem>
1400      <para>
1401       Improve <application>libpq</>'s error reporting for SSL failures (Tom
1402       Lane)
1403      </para>
1404     </listitem>
1405
1406     <listitem>
1407      <para>
1408       Fix <function>PQsetvalue()</> to avoid possible crash when adding a new
1409       tuple to a <structname>PGresult</> originally obtained from a server
1410       query (Andrew Chernow)
1411      </para>
1412     </listitem>
1413
1414     <listitem>
1415      <para>
1416       Make <application>ecpglib</> write <type>double</> values with 15 digits
1417       precision (Akira Kurosawa)
1418      </para>
1419     </listitem>
1420
1421     <listitem>
1422      <para>
1423       In <application>ecpglib</>, be sure <literal>LC_NUMERIC</> setting is
1424       restored after an error (Michael Meskes)
1425      </para>
1426     </listitem>
1427
1428     <listitem>
1429      <para>
1430       Apply upstream fix for blowfish signed-character bug (CVE-2011-2483)
1431       (Tom Lane)
1432      </para>
1433
1434      <para>
1435       <filename>contrib/pg_crypto</>'s blowfish encryption code could give
1436       wrong results on platforms where char is signed (which is most),
1437       leading to encrypted passwords being weaker than they should be.
1438      </para>
1439     </listitem>
1440
1441     <listitem>
1442      <para>
1443       Fix memory leak in <filename>contrib/seg</> (Heikki Linnakangas)
1444      </para>
1445     </listitem>
1446
1447     <listitem>
1448      <para>
1449       Fix <function>pgstatindex()</> to give consistent results for empty
1450       indexes (Tom Lane)
1451      </para>
1452     </listitem>
1453
1454     <listitem>
1455      <para>
1456       Allow building with perl 5.14 (Alex Hunsaker)
1457      </para>
1458     </listitem>
1459
1460     <listitem>
1461      <para>
1462       Update configure script's method for probing existence of system
1463       functions (Tom Lane)
1464      </para>
1465
1466      <para>
1467       The version of autoconf we used in 8.3 and 8.2 could be fooled by
1468       compilers that perform link-time optimization.
1469      </para>
1470     </listitem>
1471
1472     <listitem>
1473      <para>
1474       Fix assorted issues with build and install file paths containing spaces
1475       (Tom Lane)
1476      </para>
1477     </listitem>
1478
1479     <listitem>
1480      <para>
1481       Update time zone data files to <application>tzdata</> release 2011i
1482       for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan.
1483      </para>
1484     </listitem>
1485
1486    </itemizedlist>
1487
1488   </sect2>
1489  </sect1>
1490
1491  <sect1 id="release-8-4-8">
1492   <title>Release 8.4.8</title>
1493
1494   <note>
1495   <title>Release Date</title>
1496   <simpara>2011-04-18</simpara>
1497   </note>
1498
1499   <para>
1500    This release contains a variety of fixes from 8.4.7.
1501    For information about new features in the 8.4 major release, see
1502    <xref linkend="release-8-4">.
1503   </para>
1504
1505   <sect2>
1506    <title>Migration to Version 8.4.8</title>
1507
1508    <para>
1509     A dump/restore is not required for those running 8.4.X.
1510    </para>
1511
1512    <para>
1513     However, if your installation was upgraded from a previous major
1514     release by running <application>pg_upgrade</>, you should take
1515     action to prevent possible data loss due to a now-fixed bug in
1516     <application>pg_upgrade</>.  The recommended solution is to run
1517     <command>VACUUM FREEZE</> on all TOAST tables.
1518     More information is available at <ulink
1519     url="http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix">
1520     http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix</ulink>.
1521    </para>
1522
1523    <para>
1524     Also, if you are upgrading from a version earlier than 8.4.2,
1525     see the release notes for 8.4.2.
1526    </para>
1527
1528   </sect2>
1529
1530   <sect2>
1531    <title>Changes</title>
1532
1533    <itemizedlist>
1534
1535     <listitem>
1536      <para>
1537       Fix <application>pg_upgrade</>'s handling of TOAST tables
1538       (Bruce Momjian)
1539      </para>
1540
1541      <para>
1542       The <structname>pg_class</>.<structfield>relfrozenxid</> value for
1543       TOAST tables was not correctly copied into the new installation
1544       during <application>pg_upgrade</>.  This could later result in
1545       <literal>pg_clog</> files being discarded while they were still
1546       needed to validate tuples in the TOAST tables, leading to
1547       <quote>could not access status of transaction</> failures.
1548      </para>
1549
1550      <para>
1551       This error poses a significant risk of data loss for installations
1552       that have been upgraded with <application>pg_upgrade</>.  This patch
1553       corrects the problem for future uses of <application>pg_upgrade</>,
1554       but does not in itself cure the issue in installations that have been
1555       processed with a buggy version of <application>pg_upgrade</>.
1556      </para>
1557     </listitem>
1558
1559     <listitem>
1560      <para>
1561       Suppress incorrect <quote>PD_ALL_VISIBLE flag was incorrectly set</>
1562       warning (Heikki Linnakangas)
1563      </para>
1564
1565      <para>
1566       <command>VACUUM</> would sometimes issue this warning in cases that
1567       are actually valid.
1568      </para>
1569     </listitem>
1570
1571     <listitem>
1572      <para>
1573       Disallow including a composite type in itself (Tom Lane)
1574      </para>
1575
1576      <para>
1577       This prevents scenarios wherein the server could recurse infinitely
1578       while processing the composite type.  While there are some possible
1579       uses for such a structure, they don't seem compelling enough to
1580       justify the effort required to make sure it always works safely.
1581      </para>
1582     </listitem>
1583
1584     <listitem>
1585      <para>
1586       Avoid potential deadlock during catalog cache initialization
1587       (Nikhil Sontakke)
1588      </para>
1589
1590      <para>
1591       In some cases the cache loading code would acquire share lock on a
1592       system index before locking the index's catalog.  This could deadlock
1593       against processes trying to acquire exclusive locks in the other,
1594       more standard order.
1595      </para>
1596     </listitem>
1597
1598     <listitem>
1599      <para>
1600       Fix dangling-pointer problem in <literal>BEFORE ROW UPDATE</> trigger
1601       handling when there was a concurrent update to the target tuple
1602       (Tom Lane)
1603      </para>
1604
1605      <para>
1606       This bug has been observed to result in intermittent <quote>cannot
1607       extract system attribute from virtual tuple</> failures while trying to
1608       do <literal>UPDATE RETURNING ctid</>.  There is a very small probability
1609       of more serious errors, such as generating incorrect index entries for
1610       the updated tuple.
1611      </para>
1612     </listitem>
1613
1614     <listitem>
1615      <para>
1616       Disallow <command>DROP TABLE</> when there are pending deferred trigger
1617       events for the table (Tom Lane)
1618      </para>
1619
1620      <para>
1621       Formerly the <command>DROP</> would go through, leading to
1622       <quote>could not open relation with OID nnn</> errors when the
1623       triggers were eventually fired.
1624      </para>
1625     </listitem>
1626
1627     <listitem>
1628      <para>
1629       Prevent crash triggered by constant-false WHERE conditions during
1630       GEQO optimization (Tom Lane)
1631      </para>
1632
1633      <para>
1634      </para>
1635     </listitem>
1636
1637     <listitem>
1638      <para>
1639       Improve planner's handling of semi-join and anti-join cases
1640       (Tom Lane)
1641      </para>
1642     </listitem>
1643
1644     <listitem>
1645      <para>
1646       Fix selectivity estimation for text search to account for NULLs
1647       (Jesper Krogh)
1648      </para>
1649     </listitem>
1650
1651     <listitem>
1652      <para>
1653       Improve PL/pgSQL's ability to handle row types with dropped columns
1654       (Pavel Stehule)
1655      </para>
1656
1657      <para>
1658       This is a back-patch of fixes previously made in 9.0.
1659      </para>
1660     </listitem>
1661
1662     <listitem>
1663      <para>
1664       Fix PL/Python memory leak involving array slices (Daniel Popowich)
1665      </para>
1666     </listitem>
1667
1668     <listitem>
1669      <para>
1670       Fix <application>pg_restore</> to cope with long lines (over 1KB) in
1671       TOC files (Tom Lane)
1672      </para>
1673     </listitem>
1674
1675     <listitem>
1676      <para>
1677       Put in more safeguards against crashing due to division-by-zero
1678       with overly enthusiastic compiler optimization (Aurelien Jarno)
1679      </para>
1680     </listitem>
1681
1682     <listitem>
1683      <para>
1684       Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane)
1685      </para>
1686
1687      <para>
1688       There was a hard-wired assumption that this system function was not
1689       available on MIPS hardware on these systems.  Use a compile-time test
1690       instead, since more recent versions have it.
1691      </para>
1692     </listitem>
1693
1694     <listitem>
1695      <para>
1696       Fix compilation failures on HP-UX (Heikki Linnakangas)
1697      </para>
1698     </listitem>
1699
1700     <listitem>
1701      <para>
1702       Fix version-incompatibility problem with <application>libintl</> on
1703       Windows (Hiroshi Inoue)
1704      </para>
1705     </listitem>
1706
1707     <listitem>
1708      <para>
1709       Fix usage of <application>xcopy</> in Windows build scripts to
1710       work correctly under Windows 7 (Andrew Dunstan)
1711      </para>
1712
1713      <para>
1714       This affects the build scripts only, not installation or usage.
1715      </para>
1716     </listitem>
1717
1718     <listitem>
1719      <para>
1720       Fix path separator used by <application>pg_regress</> on Cygwin
1721       (Andrew Dunstan)
1722      </para>
1723     </listitem>
1724
1725     <listitem>
1726      <para>
1727       Update time zone data files to <application>tzdata</> release 2011f
1728       for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa,
1729       and Turkey; also historical corrections for South Australia, Alaska,
1730       and Hawaii.
1731      </para>
1732     </listitem>
1733
1734    </itemizedlist>
1735
1736   </sect2>
1737  </sect1>
1738
1739  <sect1 id="release-8-4-7">
1740   <title>Release 8.4.7</title>
1741
1742   <note>
1743   <title>Release Date</title>
1744   <simpara>2011-01-31</simpara>
1745   </note>
1746
1747   <para>
1748    This release contains a variety of fixes from 8.4.6.
1749    For information about new features in the 8.4 major release, see
1750    <xref linkend="release-8-4">.
1751   </para>
1752
1753   <sect2>
1754    <title>Migration to Version 8.4.7</title>
1755
1756    <para>
1757     A dump/restore is not required for those running 8.4.X.
1758     However, if you are upgrading from a version earlier than 8.4.2,
1759     see the release notes for 8.4.2.
1760    </para>
1761
1762   </sect2>
1763
1764   <sect2>
1765    <title>Changes</title>
1766
1767    <itemizedlist>
1768
1769     <listitem>
1770      <para>
1771       Avoid failures when <command>EXPLAIN</> tries to display a simple-form
1772       <literal>CASE</> expression (Tom Lane)
1773      </para>
1774
1775      <para>
1776       If the <literal>CASE</>'s test expression was a constant, the planner
1777       could simplify the <literal>CASE</> into a form that confused the
1778       expression-display code, resulting in <quote>unexpected CASE WHEN
1779       clause</> errors.
1780      </para>
1781     </listitem>
1782
1783     <listitem>
1784      <para>
1785       Fix assignment to an array slice that is before the existing range
1786       of subscripts (Tom Lane)
1787      </para>
1788
1789      <para>
1790       If there was a gap between the newly added subscripts and the first
1791       pre-existing subscript, the code miscalculated how many entries needed
1792       to be copied from the old array's null bitmap, potentially leading to
1793       data corruption or crash.
1794      </para>
1795     </listitem>
1796
1797     <listitem>
1798      <para>
1799       Avoid unexpected conversion overflow in planner for very distant date
1800       values (Tom Lane)
1801      </para>
1802
1803      <para>
1804       The <type>date</> type supports a wider range of dates than can be
1805       represented by the <type>timestamp</> types, but the planner assumed it
1806       could always convert a date to timestamp with impunity.
1807      </para>
1808     </listitem>
1809
1810     <listitem>
1811      <para>
1812       Fix <application>pg_restore</>'s text output for large objects (BLOBs)
1813       when <varname>standard_conforming_strings</> is on (Tom Lane)
1814      </para>
1815
1816      <para>
1817       Although restoring directly to a database worked correctly, string
1818       escaping was incorrect if <application>pg_restore</> was asked for
1819       SQL text output and <varname>standard_conforming_strings</> had been
1820       enabled in the source database.
1821      </para>
1822     </listitem>
1823
1824     <listitem>
1825      <para>
1826       Fix erroneous parsing of <type>tsquery</> values containing
1827       <literal>... &amp; !(subexpression) | ...</literal> (Tom Lane)
1828      </para>
1829
1830      <para>
1831       Queries containing this combination of operators were not executed
1832       correctly.  The same error existed in <filename>contrib/intarray</>'s
1833       <type>query_int</> type and <filename>contrib/ltree</>'s
1834       <type>ltxtquery</> type.
1835      </para>
1836     </listitem>
1837
1838     <listitem>
1839      <para>
1840       Fix buffer overrun in <filename>contrib/intarray</>'s input function
1841       for the <type>query_int</> type (Apple)
1842      </para>
1843
1844      <para>
1845       This bug is a security risk since the function's return address could
1846       be overwritten.  Thanks to Apple Inc's security team for reporting this
1847       issue and supplying the fix.  (CVE-2010-4015)
1848      </para>
1849     </listitem>
1850
1851     <listitem>
1852      <para>
1853       Fix bug in <filename>contrib/seg</>'s GiST picksplit algorithm
1854       (Alexander Korotkov)
1855      </para>
1856
1857      <para>
1858       This could result in considerable inefficiency, though not actually
1859       incorrect answers, in a GiST index on a <type>seg</> column.
1860       If you have such an index, consider <command>REINDEX</>ing it after
1861       installing this update.  (This is identical to the bug that was fixed in
1862       <filename>contrib/cube</> in the previous update.)
1863      </para>
1864     </listitem>
1865
1866    </itemizedlist>
1867
1868   </sect2>
1869  </sect1>
1870
1871  <sect1 id="release-8-4-6">
1872   <title>Release 8.4.6</title>
1873
1874   <note>
1875   <title>Release Date</title>
1876   <simpara>2010-12-16</simpara>
1877   </note>
1878
1879   <para>
1880    This release contains a variety of fixes from 8.4.5.
1881    For information about new features in the 8.4 major release, see
1882    <xref linkend="release-8-4">.
1883   </para>
1884
1885   <sect2>
1886    <title>Migration to Version 8.4.6</title>
1887
1888    <para>
1889     A dump/restore is not required for those running 8.4.X.
1890     However, if you are upgrading from a version earlier than 8.4.2,
1891     see the release notes for 8.4.2.
1892    </para>
1893
1894   </sect2>
1895
1896   <sect2>
1897    <title>Changes</title>
1898
1899    <itemizedlist>
1900
1901     <listitem>
1902      <para>
1903       Force the default
1904       <link linkend="guc-wal-sync-method"><varname>wal_sync_method</></link>
1905       to be <literal>fdatasync</> on Linux (Tom Lane, Marti Raudsepp)
1906      </para>
1907
1908      <para>
1909       The default on Linux has actually been <literal>fdatasync</> for many
1910       years, but recent kernel changes caused <productname>PostgreSQL</> to
1911       choose <literal>open_datasync</> instead.  This choice did not result
1912       in any performance improvement, and caused outright failures on
1913       certain filesystems, notably <literal>ext4</> with the
1914       <literal>data=journal</> mount option.
1915      </para>
1916     </listitem>
1917
1918     <listitem>
1919      <para>
1920       Fix assorted bugs in WAL replay logic for GIN indexes (Tom Lane)
1921      </para>
1922
1923      <para>
1924       This could result in <quote>bad buffer id: 0</> failures or
1925       corruption of index contents during replication.
1926      </para>
1927     </listitem>
1928
1929     <listitem>
1930      <para>
1931       Fix recovery from base backup when the starting checkpoint WAL record
1932       is not in the same WAL segment as its redo point (Jeff Davis)
1933      </para>
1934     </listitem>
1935
1936     <listitem>
1937      <para>
1938       Fix persistent slowdown of autovacuum workers when multiple workers
1939       remain active for a long time (Tom Lane)
1940      </para>
1941
1942      <para>
1943       The effective <varname>vacuum_cost_limit</> for an autovacuum worker
1944       could drop to nearly zero if it processed enough tables, causing it
1945       to run extremely slowly.
1946      </para>
1947     </listitem>
1948
1949     <listitem>
1950      <para>
1951       Add support for detecting register-stack overrun on <literal>IA64</>
1952       (Tom Lane)
1953      </para>
1954
1955      <para>
1956       The <literal>IA64</> architecture has two hardware stacks.  Full
1957       prevention of stack-overrun failures requires checking both.
1958      </para>
1959     </listitem>
1960
1961     <listitem>
1962      <para>
1963       Add a check for stack overflow in <function>copyObject()</> (Tom Lane)
1964      </para>
1965
1966      <para>
1967       Certain code paths could crash due to stack overflow given a
1968       sufficiently complex query.
1969      </para>
1970     </listitem>
1971
1972     <listitem>
1973      <para>
1974       Fix detection of page splits in temporary GiST indexes (Heikki
1975       Linnakangas)
1976      </para>
1977
1978      <para>
1979       It is possible to have a <quote>concurrent</> page split in a
1980       temporary index, if for example there is an open cursor scanning the
1981       index when an insertion is done.  GiST failed to detect this case and
1982       hence could deliver wrong results when execution of the cursor
1983       continued.
1984      </para>
1985     </listitem>
1986
1987     <listitem>
1988      <para>
1989       Fix error checking during early connection processing (Tom Lane)
1990      </para>
1991
1992      <para>
1993       The check for too many child processes was skipped in some cases,
1994       possibly leading to postmaster crash when attempting to add the new
1995       child process to fixed-size arrays.
1996      </para>
1997     </listitem>
1998
1999     <listitem>
2000      <para>
2001       Improve efficiency of window functions (Tom Lane)
2002      </para>
2003
2004      <para>
2005       Certain cases where a large number of tuples needed to be read in
2006       advance, but <varname>work_mem</> was large enough to allow them all
2007       to be held in memory, were unexpectedly slow.
2008       <function>percent_rank()</>, <function>cume_dist()</> and
2009       <function>ntile()</> in particular were subject to this problem.
2010      </para>
2011     </listitem>
2012
2013     <listitem>
2014      <para>
2015       Avoid memory leakage while <command>ANALYZE</>'ing complex index
2016       expressions (Tom Lane)
2017      </para>
2018     </listitem>
2019
2020     <listitem>
2021      <para>
2022       Ensure an index that uses a whole-row Var still depends on its table
2023       (Tom Lane)
2024      </para>
2025
2026      <para>
2027       An index declared like <literal>create index i on t (foo(t.*))</>
2028       would not automatically get dropped when its table was dropped.
2029      </para>
2030     </listitem>
2031
2032     <listitem>
2033      <para>
2034       Do not <quote>inline</> a SQL function with multiple <literal>OUT</>
2035       parameters (Tom Lane)
2036      </para>
2037
2038      <para>
2039       This avoids a possible crash due to loss of information about the
2040       expected result rowtype.
2041      </para>
2042     </listitem>
2043
2044     <listitem>
2045      <para>
2046       Behave correctly if <literal>ORDER BY</>, <literal>LIMIT</>,
2047       <literal>FOR UPDATE</>, or <literal>WITH</> is attached to the
2048       <literal>VALUES</> part of <literal>INSERT ... VALUES</> (Tom Lane)
2049      </para>
2050     </listitem>
2051
2052     <listitem>
2053      <para>
2054       Fix constant-folding of <literal>COALESCE()</> expressions (Tom Lane)
2055      </para>
2056
2057      <para>
2058       The planner would sometimes attempt to evaluate sub-expressions that
2059       in fact could never be reached, possibly leading to unexpected errors.
2060      </para>
2061     </listitem>
2062
2063     <listitem>
2064      <para>
2065       Fix postmaster crash when connection acceptance
2066       (<function>accept()</> or one of the calls made immediately after it)
2067       fails, and the postmaster was compiled with GSSAPI support (Alexander
2068       Chernikov)
2069      </para>
2070     </listitem>
2071
2072     <listitem>
2073      <para>
2074       Fix missed unlink of temporary files when <varname>log_temp_files</>
2075       is active (Tom Lane)
2076      </para>
2077
2078      <para>
2079       If an error occurred while attempting to emit the log message, the
2080       unlink was not done, resulting in accumulation of temp files.
2081      </para>
2082     </listitem>
2083
2084     <listitem>
2085      <para>
2086       Add print functionality for <structname>InhRelation</> nodes (Tom Lane)
2087      </para>
2088
2089      <para>
2090       This avoids a failure when <varname>debug_print_parse</> is enabled
2091       and certain types of query are executed.
2092      </para>
2093     </listitem>
2094
2095     <listitem>
2096      <para>
2097       Fix incorrect calculation of distance from a point to a horizontal
2098       line segment (Tom Lane)
2099      </para>
2100
2101      <para>
2102       This bug affected several different geometric distance-measurement
2103       operators.
2104      </para>
2105     </listitem>
2106
2107     <listitem>
2108      <para>
2109       Fix incorrect calculation of transaction status in
2110       <application>ecpg</> (Itagaki Takahiro)
2111      </para>
2112     </listitem>
2113
2114     <listitem>
2115      <para>
2116       Fix <application>PL/pgSQL</>'s handling of <quote>simple</>
2117       expressions to not fail in recursion or error-recovery cases (Tom Lane)
2118      </para>
2119     </listitem>
2120
2121     <listitem>
2122      <para>
2123       Fix <application>PL/Python</>'s handling of set-returning functions
2124       (Jan Urbanski)
2125      </para>
2126
2127      <para>
2128       Attempts to call SPI functions within the iterator generating a set
2129       result would fail.
2130      </para>
2131     </listitem>
2132
2133     <listitem>
2134      <para>
2135       Fix bug in <filename>contrib/cube</>'s GiST picksplit algorithm
2136       (Alexander Korotkov)
2137      </para>
2138
2139      <para>
2140       This could result in considerable inefficiency, though not actually
2141       incorrect answers, in a GiST index on a <type>cube</> column.
2142       If you have such an index, consider <command>REINDEX</>ing it after
2143       installing this update.
2144      </para>
2145     </listitem>
2146
2147     <listitem>
2148      <para>
2149       Don't emit <quote>identifier will be truncated</> notices in
2150       <filename>contrib/dblink</> except when creating new connections
2151       (Itagaki Takahiro)
2152      </para>
2153     </listitem>
2154
2155     <listitem>
2156      <para>
2157       Fix potential coredump on missing public key in
2158       <filename>contrib/pgcrypto</> (Marti Raudsepp)
2159      </para>
2160     </listitem>
2161
2162     <listitem>
2163      <para>
2164       Fix memory leak in <filename>contrib/xml2</>'s XPath query functions
2165       (Tom Lane)
2166      </para>
2167     </listitem>
2168
2169     <listitem>
2170      <para>
2171       Update time zone data files to <application>tzdata</> release 2010o
2172       for DST law changes in Fiji and Samoa;
2173       also historical corrections for Hong Kong.
2174      </para>
2175     </listitem>
2176
2177    </itemizedlist>
2178
2179   </sect2>
2180  </sect1>
2181
2182  <sect1 id="release-8-4-5">
2183   <title>Release 8.4.5</title>
2184
2185   <note>
2186   <title>Release Date</title>
2187   <simpara>2010-10-04</simpara>
2188   </note>
2189
2190   <para>
2191    This release contains a variety of fixes from 8.4.4.
2192    For information about new features in the 8.4 major release, see
2193    <xref linkend="release-8-4">.
2194   </para>
2195
2196   <sect2>
2197    <title>Migration to Version 8.4.5</title>
2198
2199    <para>
2200     A dump/restore is not required for those running 8.4.X.
2201     However, if you are upgrading from a version earlier than 8.4.2,
2202     see the release notes for 8.4.2.
2203    </para>
2204
2205   </sect2>
2206
2207   <sect2>
2208    <title>Changes</title>
2209
2210    <itemizedlist>
2211
2212     <listitem>
2213      <para>
2214       Use a separate interpreter for each calling SQL userid in PL/Perl and
2215       PL/Tcl (Tom Lane)
2216      </para>
2217
2218      <para>
2219       This change prevents security problems that can be caused by subverting
2220       Perl or Tcl code that will be executed later in the same session under
2221       another SQL user identity (for example, within a <literal>SECURITY
2222       DEFINER</> function).  Most scripting languages offer numerous ways that
2223       that might be done, such as redefining standard functions or operators
2224       called by the target function.  Without this change, any SQL user with
2225       Perl or Tcl language usage rights can do essentially anything with the
2226       SQL privileges of the target function's owner.
2227      </para>
2228
2229      <para>
2230       The cost of this change is that intentional communication among Perl
2231       and Tcl functions becomes more difficult.  To provide an escape hatch,
2232       PL/PerlU and PL/TclU functions continue to use only one interpreter
2233       per session.  This is not considered a security issue since all such
2234       functions execute at the trust level of a database superuser already.
2235      </para>
2236
2237      <para>
2238       It is likely that third-party procedural languages that claim to offer
2239       trusted execution have similar security issues.  We advise contacting
2240       the authors of any PL you are depending on for security-critical
2241       purposes.
2242      </para>
2243
2244      <para>
2245       Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433).
2246      </para>
2247     </listitem>
2248
2249     <listitem>
2250      <para>
2251       Prevent possible crashes in <function>pg_get_expr()</> by disallowing
2252       it from being called with an argument that is not one of the system
2253       catalog columns it's intended to be used with
2254       (Heikki Linnakangas, Tom Lane)
2255      </para>
2256     </listitem>
2257
2258     <listitem>
2259      <para>
2260       Treat exit code 128 (<literal>ERROR_WAIT_NO_CHILDREN</>) as non-fatal on
2261       Windows (Magnus Hagander)
2262      </para>
2263
2264      <para>
2265       Under high load, Windows processes will sometimes fail at startup with
2266       this error code.  Formerly the postmaster treated this as a panic
2267       condition and restarted the whole database, but that seems to be
2268       an overreaction.
2269      </para>
2270     </listitem>
2271
2272     <listitem>
2273      <para>
2274       Fix incorrect placement of placeholder evaluation (Tom Lane)
2275      </para>
2276
2277      <para>
2278       This bug could result in query outputs being non-null when they
2279       should be null, in cases where the inner side of an outer join
2280       is a sub-select with non-strict expressions in its output list.
2281      </para>
2282     </listitem>
2283
2284     <listitem>
2285      <para>
2286       Fix possible duplicate scans of <literal>UNION ALL</> member relations
2287       (Tom Lane)
2288      </para>
2289     </listitem>
2290
2291     <listitem>
2292      <para>
2293       Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane)
2294      </para>
2295
2296      <para>
2297       This occurred when a sub-select contains a join alias reference that
2298       expands into an expression containing another sub-select.
2299      </para>
2300     </listitem>
2301
2302     <listitem>
2303      <para>
2304       Fix mishandling of whole-row Vars that reference a view or sub-select
2305       and appear within a nested sub-select (Tom Lane)
2306      </para>
2307     </listitem>
2308
2309     <listitem>
2310      <para>
2311       Fix mishandling of cross-type <literal>IN</> comparisons (Tom Lane)
2312      </para>
2313
2314      <para>
2315       This could result in failures if the planner tried to implement an
2316       <literal>IN</> join with a sort-then-unique-then-plain-join plan.
2317      </para>
2318     </listitem>
2319
2320     <listitem>
2321      <para>
2322       Fix computation of <command>ANALYZE</> statistics for <type>tsvector</>
2323       columns (Jan Urbanski)
2324      </para>
2325
2326      <para>
2327       The original coding could produce incorrect statistics, leading to
2328       poor plan choices later.
2329      </para>
2330     </listitem>
2331
2332     <listitem>
2333      <para>
2334       Improve planner's estimate of memory used by <function>array_agg()</>,
2335       <function>string_agg()</>, and similar aggregate functions
2336       (Hitoshi Harada)
2337      </para>
2338
2339      <para>
2340       The previous drastic underestimate could lead to out-of-memory failures
2341       due to inappropriate choice of a hash-aggregation plan.
2342      </para>
2343     </listitem>
2344
2345     <listitem>
2346      <para>
2347       Fix failure to mark cached plans as transient (Tom Lane)
2348      </para>
2349
2350      <para>
2351       If a plan is prepared while <command>CREATE INDEX CONCURRENTLY</> is
2352       in progress for one of the referenced tables, it is supposed to be
2353       re-planned once the index is ready for use.  This was not happening
2354       reliably.
2355      </para>
2356     </listitem>
2357
2358     <listitem>
2359      <para>
2360       Reduce PANIC to ERROR in some occasionally-reported btree failure cases,
2361       and provide additional detail in the resulting error messages
2362       (Tom Lane)
2363      </para>
2364
2365      <para>
2366       This should improve the system's robustness with corrupted indexes.
2367      </para>
2368     </listitem>
2369
2370     <listitem>
2371      <para>
2372       Fix incorrect search logic for partial-match queries with GIN indexes
2373       (Tom Lane)
2374      </para>
2375
2376      <para>
2377       Cases involving AND/OR combination of several GIN index conditions
2378       didn't always give the right answer, and were sometimes much slower
2379       than necessary.
2380      </para>
2381     </listitem>
2382
2383     <listitem>
2384      <para>
2385       Prevent show_session_authorization() from crashing within autovacuum
2386       processes (Tom Lane)
2387      </para>
2388     </listitem>
2389
2390     <listitem>
2391      <para>
2392       Defend against functions returning setof record where not all the
2393       returned rows are actually of the same rowtype (Tom Lane)
2394      </para>
2395     </listitem>
2396
2397     <listitem>
2398      <para>
2399       Fix possible corruption of pending trigger event lists during
2400       subtransaction rollback (Tom Lane)
2401      </para>
2402
2403      <para>
2404       This could lead to a crash or incorrect firing of triggers.
2405      </para>
2406     </listitem>
2407
2408     <listitem>
2409      <para>
2410       Fix possible failure when hashing a pass-by-reference function result
2411       (Tao Ma, Tom Lane)
2412      </para>
2413     </listitem>
2414
2415     <listitem>
2416      <para>
2417       Improve merge join's handling of NULLs in the join columns (Tom Lane)
2418      </para>
2419
2420      <para>
2421       A merge join can now stop entirely upon reaching the first NULL,
2422       if the sort order is such that NULLs sort high.
2423      </para>
2424     </listitem>
2425
2426     <listitem>
2427      <para>
2428       Take care to fsync the contents of lockfiles (both
2429       <filename>postmaster.pid</> and the socket lockfile) while writing them
2430       (Tom Lane)
2431      </para>
2432
2433      <para>
2434       This omission could result in corrupted lockfile contents if the
2435       machine crashes shortly after postmaster start.  That could in turn
2436       prevent subsequent attempts to start the postmaster from succeeding,
2437       until the lockfile is manually removed.
2438      </para>
2439     </listitem>
2440
2441     <listitem>
2442      <para>
2443       Avoid recursion while assigning XIDs to heavily-nested
2444       subtransactions (Andres Freund, Robert Haas)
2445      </para>
2446
2447      <para>
2448       The original coding could result in a crash if there was limited
2449       stack space.
2450      </para>
2451     </listitem>
2452
2453     <listitem>
2454      <para>
2455       Avoid holding open old WAL segments in the walwriter process
2456       (Magnus Hagander, Heikki Linnakangas)
2457      </para>
2458
2459      <para>
2460       The previous coding would prevent removal of no-longer-needed segments.
2461      </para>
2462     </listitem>
2463
2464     <listitem>
2465      <para>
2466       Fix <varname>log_line_prefix</>'s <literal>%i</> escape,
2467       which could produce junk early in backend startup (Tom Lane)
2468      </para>
2469     </listitem>
2470
2471     <listitem>
2472      <para>
2473       Prevent misinterpretation of partially-specified relation options
2474       for TOAST tables (Itagaki Takahiro)
2475      </para>
2476
2477      <para>
2478       In particular, <literal>fillfactor</> would be read as zero if any
2479       other reloption had been set for the table, leading to serious bloat.
2480      </para>
2481     </listitem>
2482
2483     <listitem>
2484      <para>
2485       Fix inheritance count tracking in <command>ALTER TABLE ... ADD
2486       CONSTRAINT</> (Robert Haas)
2487      </para>
2488     </listitem>
2489
2490     <listitem>
2491      <para>
2492       Fix possible data corruption in <command>ALTER TABLE ... SET
2493       TABLESPACE</> when archiving is enabled (Jeff Davis)
2494      </para>
2495     </listitem>
2496
2497     <listitem>
2498      <para>
2499       Allow <command>CREATE DATABASE</> and <command>ALTER DATABASE ... SET
2500       TABLESPACE</> to be interrupted by query-cancel (Guillaume Lelarge)
2501      </para>
2502     </listitem>
2503
2504     <listitem>
2505      <para>
2506       Improve <command>CREATE INDEX</>'s checking of whether proposed index
2507       expressions are immutable (Tom Lane)
2508      </para>
2509     </listitem>
2510
2511     <listitem>
2512      <para>
2513       Fix <command>REASSIGN OWNED</> to handle operator classes and families
2514       (Asko Tiidumaa)
2515      </para>
2516     </listitem>
2517
2518     <listitem>
2519      <para>
2520       Fix possible core dump when comparing two empty <type>tsquery</> values
2521       (Tom Lane)
2522      </para>
2523     </listitem>
2524
2525     <listitem>
2526      <para>
2527       Fix <literal>LIKE</>'s handling of patterns containing <literal>%</>
2528       followed by <literal>_</> (Tom Lane)
2529      </para>
2530
2531      <para>
2532       We've fixed this before, but there were still some incorrectly-handled
2533       cases.
2534      </para>
2535     </listitem>
2536
2537     <listitem>
2538      <para>
2539       Re-allow input of Julian dates prior to 0001-01-01 AD (Tom Lane)
2540      </para>
2541
2542      <para>
2543       Input such as <literal>'J100000'::date</> worked before 8.4,
2544       but was unintentionally broken by added error-checking.
2545      </para>
2546     </listitem>
2547
2548     <listitem>
2549      <para>
2550       Fix PL/pgSQL to throw an error, not crash, if a cursor is closed within
2551       a <literal>FOR</> loop that is iterating over that cursor
2552       (Heikki Linnakangas)
2553      </para>
2554     </listitem>
2555
2556     <listitem>
2557      <para>
2558       In PL/Python, defend against null pointer results from
2559       <function>PyCObject_AsVoidPtr</> and <function>PyCObject_FromVoidPtr</>
2560       (Peter Eisentraut)
2561      </para>
2562     </listitem>
2563
2564     <listitem>
2565      <para>
2566       In <application>libpq</>, fix full SSL certificate verification for the
2567       case where both <literal>host</> and <literal>hostaddr</> are specified
2568       (Tom Lane)
2569      </para>
2570     </listitem>
2571
2572     <listitem>
2573      <para>
2574       Make psql recognize <command>DISCARD ALL</> as a command that should
2575       not be encased in a transaction block in autocommit-off mode
2576       (Itagaki Takahiro)
2577      </para>
2578     </listitem>
2579
2580     <listitem>
2581      <para>
2582       Fix some issues in <application>pg_dump</>'s handling of SQL/MED objects
2583       (Tom Lane)
2584      </para>
2585
2586      <para>
2587       Notably, <application>pg_dump</> would always fail if run by a
2588       non-superuser, which was not intended.
2589      </para>
2590     </listitem>
2591
2592     <listitem>
2593      <para>
2594       Improve <application>pg_dump</> and <application>pg_restore</>'s
2595       handling of non-seekable archive files (Tom Lane, Robert Haas)
2596      </para>
2597
2598      <para>
2599       This is important for proper functioning of parallel restore.
2600      </para>
2601     </listitem>
2602
2603     <listitem>
2604      <para>
2605       Improve parallel pg_restore's ability to cope with selective restore
2606       (<literal>-L</> option) (Tom Lane)
2607      </para>
2608
2609      <para>
2610       The original code tended to fail if the <literal>-L</> file commanded
2611       a non-default restore ordering.
2612      </para>
2613     </listitem>
2614
2615     <listitem>
2616      <para>
2617       Fix <application>ecpg</> to process data from <literal>RETURNING</>
2618       clauses correctly (Michael Meskes)
2619      </para>
2620     </listitem>
2621
2622     <listitem>
2623      <para>
2624       Fix some memory leaks in <application>ecpg</> (Zoltan Boszormenyi)
2625      </para>
2626     </listitem>
2627
2628     <listitem>
2629      <para>
2630       Improve <filename>contrib/dblink</>'s handling of tables containing
2631       dropped columns (Tom Lane)
2632      </para>
2633     </listitem>
2634
2635     <listitem>
2636      <para>
2637       Fix connection leak after <quote>duplicate connection name</quote>
2638       errors in <filename>contrib/dblink</> (Itagaki Takahiro)
2639      </para>
2640     </listitem>
2641
2642     <listitem>
2643      <para>
2644       Fix <filename>contrib/dblink</> to handle connection names longer than
2645       62 bytes correctly (Itagaki Takahiro)
2646      </para>
2647     </listitem>
2648
2649     <listitem>
2650      <para>
2651       Add <function>hstore(text, text)</>
2652       function to <filename>contrib/hstore</> (Robert Haas)
2653      </para>
2654
2655      <para>
2656       This function is the recommended substitute for the now-deprecated
2657       <literal>=&gt;</> operator.  It was back-patched so that future-proofed
2658       code can be used with older server versions.  Note that the patch will
2659       be effective only after <filename>contrib/hstore</> is installed or
2660       reinstalled in a particular database.  Users might prefer to execute
2661       the <command>CREATE FUNCTION</> command by hand, instead.
2662      </para>
2663     </listitem>
2664
2665     <listitem>
2666      <para>
2667       Update build infrastructure and documentation to reflect the source code
2668       repository's move from CVS to Git (Magnus Hagander and others)
2669      </para>
2670     </listitem>
2671
2672     <listitem>
2673      <para>
2674       Update time zone data files to <application>tzdata</> release 2010l
2675       for DST law changes in Egypt and Palestine; also historical corrections
2676       for Finland.
2677      </para>
2678
2679      <para>
2680       This change also adds new names for two Micronesian timezones:
2681       Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred
2682       abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over
2683       Pacific/Ponape.
2684      </para>
2685     </listitem>
2686
2687     <listitem>
2688      <para>
2689       Make Windows' <quote>N. Central Asia Standard Time</> timezone map to
2690       Asia/Novosibirsk, not Asia/Almaty (Magnus Hagander)
2691      </para>
2692
2693      <para>
2694       Microsoft changed the DST behavior of this zone in the timezone update
2695       from KB976098. Asia/Novosibirsk is a better match to its new behavior.
2696      </para>
2697     </listitem>
2698
2699    </itemizedlist>
2700
2701   </sect2>
2702  </sect1>
2703
2704  <sect1 id="release-8-4-4">
2705   <title>Release 8.4.4</title>
2706
2707   <note>
2708   <title>Release Date</title>
2709   <simpara>2010-05-17</simpara>
2710   </note>
2711
2712   <para>
2713    This release contains a variety of fixes from 8.4.3.
2714    For information about new features in the 8.4 major release, see
2715    <xref linkend="release-8-4">.
2716   </para>
2717
2718   <sect2>
2719    <title>Migration to Version 8.4.4</title>
2720
2721    <para>
2722     A dump/restore is not required for those running 8.4.X.
2723     However, if you are upgrading from a version earlier than 8.4.2,
2724     see the release notes for 8.4.2.
2725    </para>
2726
2727   </sect2>
2728
2729   <sect2>
2730    <title>Changes</title>
2731
2732    <itemizedlist>
2733
2734     <listitem>
2735      <para>
2736       Enforce restrictions in <literal>plperl</> using an opmask applied to
2737       the whole interpreter, instead of using <filename>Safe.pm</>
2738       (Tim Bunce, Andrew Dunstan)
2739      </para>
2740
2741      <para>
2742       Recent developments have convinced us that <filename>Safe.pm</> is too
2743       insecure to rely on for making <literal>plperl</> trustable.  This
2744       change removes use of <filename>Safe.pm</> altogether, in favor of using
2745       a separate interpreter with an opcode mask that is always applied.
2746       Pleasant side effects of the change include that it is now possible to
2747       use Perl's <literal>strict</> pragma in a natural way in
2748       <literal>plperl</>, and that Perl's <literal>$a</> and <literal>$b</>
2749       variables work as expected in sort routines, and that function
2750       compilation is significantly faster.  (CVE-2010-1169)
2751      </para>
2752     </listitem>
2753
2754     <listitem>
2755      <para>
2756       Prevent PL/Tcl from executing untrustworthy code from
2757       <structname>pltcl_modules</> (Tom)
2758      </para>
2759
2760      <para>
2761       PL/Tcl's feature for autoloading Tcl code from a database table
2762       could be exploited for trojan-horse attacks, because there was no
2763       restriction on who could create or insert into that table.  This change
2764       disables the feature unless <structname>pltcl_modules</> is owned by a
2765       superuser.  (However, the permissions on the table are not checked, so
2766       installations that really need a less-than-secure modules table can
2767       still grant suitable privileges to trusted non-superusers.)  Also,
2768       prevent loading code into the unrestricted <quote>normal</> Tcl
2769       interpreter unless we are really going to execute a <literal>pltclu</>
2770       function.  (CVE-2010-1170)
2771      </para>
2772     </listitem>
2773
2774     <listitem>
2775      <para>
2776       Fix data corruption during WAL replay of
2777       <literal>ALTER ... SET TABLESPACE</> (Tom)
2778      </para>
2779
2780      <para>
2781       When <varname>archive_mode</> is on, <literal>ALTER ... SET TABLESPACE</>
2782       generates a WAL record whose replay logic was incorrect.  It could write
2783       the data to the wrong place, leading to possibly-unrecoverable data
2784       corruption.  Data corruption would be observed on standby slaves, and
2785       could occur on the master as well if a database crash and recovery
2786       occurred after committing the <literal>ALTER</> and before the next
2787       checkpoint.
2788      </para>
2789     </listitem>
2790
2791     <listitem>
2792      <para>
2793       Fix possible crash if a cache reset message is received during
2794       rebuild of a relcache entry (Heikki)
2795      </para>
2796
2797      <para>
2798       This error was introduced in 8.4.3 while fixing a related failure.
2799      </para>
2800     </listitem>
2801
2802     <listitem>
2803      <para>
2804       Apply per-function GUC settings while running the language validator
2805       for the function (Itagaki Takahiro)
2806      </para>
2807
2808      <para>
2809       This avoids failures if the function's code is invalid without the
2810       setting; an example is that SQL functions may not parse if the
2811       <varname>search_path</> is not correct.
2812      </para>
2813     </listitem>
2814
2815     <listitem>
2816      <para>
2817       Do constraint exclusion for inherited <command>UPDATE</> and
2818       <command>DELETE</> target tables when
2819       <varname>constraint_exclusion</> = <literal>partition</> (Tom)
2820      </para>
2821
2822      <para>
2823       Due to an oversight, this setting previously only caused constraint
2824       exclusion to be checked in <command>SELECT</> commands.
2825      </para>
2826     </listitem>
2827
2828     <listitem>
2829      <para>
2830       Do not allow an unprivileged user to reset superuser-only parameter
2831       settings (Alvaro)
2832      </para>
2833
2834      <para>
2835       Previously, if an unprivileged user ran <literal>ALTER USER ... RESET
2836       ALL</> for himself, or <literal>ALTER DATABASE ... RESET ALL</> for
2837       a database he owns, this would remove all special parameter settings
2838       for the user or database, even ones that are only supposed to be
2839       changeable by a superuser.  Now, the <command>ALTER</> will only
2840       remove the parameters that the user has permission to change.
2841      </para>
2842     </listitem>
2843
2844     <listitem>
2845      <para>
2846       Avoid possible crash during backend shutdown if shutdown occurs
2847       when a <literal>CONTEXT</> addition would be made to log entries (Tom)
2848      </para>
2849
2850      <para>
2851       In some cases the context-printing function would fail because the
2852       current transaction had already been rolled back when it came time
2853       to print a log message.
2854      </para>
2855     </listitem>
2856
2857     <listitem>
2858      <para>
2859       Fix erroneous handling of <literal>%r</> parameter in
2860       <varname>recovery_end_command</> (Heikki)
2861      </para>
2862
2863      <para>
2864       The value always came out zero.
2865      </para>
2866     </listitem>
2867
2868     <listitem>
2869      <para>
2870       Ensure the archiver process responds to changes in
2871       <varname>archive_command</> as soon as possible (Tom)
2872      </para>
2873     </listitem>
2874
2875     <listitem>
2876      <para>
2877       Fix pl/pgsql's <literal>CASE</> statement to not fail when the
2878       case expression is a query that returns no rows (Tom)
2879      </para>
2880     </listitem>
2881
2882     <listitem>
2883      <para>
2884       Update pl/perl's <filename>ppport.h</> for modern Perl versions
2885       (Andrew)
2886      </para>
2887     </listitem>
2888
2889     <listitem>
2890      <para>
2891       Fix assorted memory leaks in pl/python (Andreas Freund, Tom)
2892      </para>
2893     </listitem>
2894
2895     <listitem>
2896      <para>
2897       Handle empty-string connect parameters properly in ecpg (Michael)
2898      </para>
2899     </listitem>
2900
2901     <listitem>
2902      <para>
2903       Prevent infinite recursion in <application>psql</> when expanding
2904       a variable that refers to itself (Tom)
2905      </para>
2906     </listitem>
2907
2908     <listitem>
2909      <para>
2910       Fix <application>psql</>'s <literal>\copy</> to not add spaces around
2911       a dot within <literal>\copy (select ...)</> (Tom)
2912      </para>
2913
2914      <para>
2915       Addition of spaces around the decimal point in a numeric literal would
2916       result in a syntax error.
2917      </para>
2918     </listitem>
2919
2920     <listitem>
2921      <para>
2922       Avoid formatting failure in <application>psql</> when running in a
2923       locale context that doesn't match the <varname>client_encoding</>
2924       (Tom)
2925      </para>
2926     </listitem>
2927
2928     <listitem>
2929      <para>
2930       Fix unnecessary <quote>GIN indexes do not support whole-index scans</>
2931       errors for unsatisfiable queries using <filename>contrib/intarray</>
2932       operators (Tom)
2933      </para>
2934     </listitem>
2935
2936     <listitem>
2937      <para>
2938       Ensure that <filename>contrib/pgstattuple</> functions respond to cancel
2939       interrupts promptly (Tatsuhito Kasahara)
2940      </para>
2941     </listitem>
2942
2943     <listitem>
2944      <para>
2945       Make server startup deal properly with the case that
2946       <function>shmget()</> returns <literal>EINVAL</> for an existing
2947       shared memory segment (Tom)
2948      </para>
2949
2950      <para>
2951       This behavior has been observed on BSD-derived kernels including OS X.
2952       It resulted in an entirely-misleading startup failure complaining that
2953       the shared memory request size was too large.
2954      </para>
2955     </listitem>
2956
2957     <listitem>
2958      <para>
2959       Avoid possible crashes in syslogger process on Windows (Heikki)
2960      </para>
2961     </listitem>
2962
2963     <listitem>
2964      <para>
2965       Deal more robustly with incomplete time zone information in the
2966       Windows registry (Magnus)
2967      </para>
2968     </listitem>
2969
2970     <listitem>
2971      <para>
2972       Update the set of known Windows time zone names (Magnus)
2973      </para>
2974     </listitem>
2975
2976     <listitem>
2977      <para>
2978       Update time zone data files to <application>tzdata</> release 2010j
2979       for DST law changes in Argentina, Australian Antarctic, Bangladesh,
2980       Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia;
2981       also historical corrections for Taiwan.
2982      </para>
2983
2984      <para>
2985       Also, add <literal>PKST</> (Pakistan Summer Time) to the default set of
2986       timezone abbreviations.
2987      </para>
2988     </listitem>
2989
2990    </itemizedlist>
2991
2992   </sect2>
2993  </sect1>
2994
2995  <sect1 id="release-8-4-3">
2996   <title>Release 8.4.3</title>
2997
2998   <note>
2999   <title>Release Date</title>
3000   <simpara>2010-03-15</simpara>
3001   </note>
3002
3003   <para>
3004    This release contains a variety of fixes from 8.4.2.
3005    For information about new features in the 8.4 major release, see
3006    <xref linkend="release-8-4">.
3007   </para>
3008
3009   <sect2>
3010    <title>Migration to Version 8.4.3</title>
3011
3012    <para>
3013     A dump/restore is not required for those running 8.4.X.
3014     However, if you are upgrading from a version earlier than 8.4.2,
3015     see the release notes for 8.4.2.
3016    </para>
3017
3018   </sect2>
3019
3020   <sect2>
3021    <title>Changes</title>
3022
3023    <itemizedlist>
3024
3025     <listitem>
3026      <para>
3027       Add new configuration parameter <varname>ssl_renegotiation_limit</> to
3028       control how often we do session key renegotiation for an SSL connection
3029       (Magnus)
3030      </para>
3031
3032      <para>
3033       This can be set to zero to disable renegotiation completely, which may
3034       be required if a broken SSL library is used.  In particular, some
3035       vendors are shipping stopgap patches for CVE-2009-3555 that cause
3036       renegotiation attempts to fail.
3037      </para>
3038     </listitem>
3039
3040     <listitem>
3041      <para>
3042       Fix possible deadlock during backend startup (Tom)
3043      </para>
3044     </listitem>
3045
3046     <listitem>
3047      <para>
3048       Fix possible crashes due to not handling errors during relcache reload
3049       cleanly (Tom)
3050      </para>
3051     </listitem>
3052
3053     <listitem>
3054      <para>
3055       Fix possible crash due to use of dangling pointer to a cached plan
3056       (Tatsuo)
3057      </para>
3058     </listitem>
3059
3060     <listitem>
3061      <para>
3062       Fix possible crash due to overenthusiastic invalidation of cached
3063       plan for <command>ROLLBACK</> (Tom)
3064      </para>
3065     </listitem>
3066
3067     <listitem>
3068      <para>
3069       Fix possible crashes when trying to recover from a failure in
3070       subtransaction start (Tom)
3071      </para>
3072     </listitem>
3073
3074     <listitem>
3075      <para>
3076       Fix server memory leak associated with use of savepoints and a client
3077       encoding different from server's encoding (Tom)
3078      </para>
3079     </listitem>
3080
3081     <listitem>
3082      <para>
3083       Fix incorrect WAL data emitted during end-of-recovery cleanup of a GIST
3084       index page split (Yoichi Hirai)
3085      </para>
3086
3087      <para>
3088       This would result in index corruption, or even more likely an error
3089       during WAL replay, if we were unlucky enough to crash during
3090       end-of-recovery cleanup after having completed an incomplete GIST
3091       insertion.
3092      </para>
3093     </listitem>
3094
3095     <listitem>
3096      <para>
3097       Fix bug in WAL redo cleanup method for GIN indexes (Heikki)
3098      </para>
3099     </listitem>
3100
3101     <listitem>
3102      <para>
3103       Fix incorrect comparison of scan key in GIN index search (Teodor)
3104      </para>
3105     </listitem>
3106
3107     <listitem>
3108      <para>
3109       Make <function>substring()</> for <type>bit</> types treat any negative
3110       length as meaning <quote>all the rest of the string</> (Tom)
3111      </para>
3112
3113      <para>
3114       The previous coding treated only -1 that way, and would produce an
3115       invalid result value for other negative values, possibly leading to
3116       a crash (CVE-2010-0442).
3117      </para>
3118     </listitem>
3119
3120     <listitem>
3121      <para>
3122       Fix integer-to-bit-string conversions to handle the first fractional
3123       byte correctly when the output bit width is wider than the given
3124       integer by something other than a multiple of 8 bits (Tom)
3125      </para>
3126     </listitem>
3127
3128     <listitem>
3129      <para>
3130       Fix some cases of pathologically slow regular expression matching (Tom)
3131      </para>
3132     </listitem>
3133
3134     <listitem>
3135      <para>
3136       Fix bug occurring when trying to inline a SQL function that returns
3137       a set of a composite type that contains dropped columns (Tom)
3138      </para>
3139     </listitem>
3140
3141     <listitem>
3142      <para>
3143       Fix bug with trying to update a field of an element of a
3144       composite-type array column (Tom)
3145      </para>
3146     </listitem>
3147
3148     <listitem>
3149      <para>
3150       Avoid failure when <command>EXPLAIN</> has to print a FieldStore or
3151       assignment ArrayRef expression (Tom)
3152      </para>
3153
3154      <para>
3155       These cases can arise now that <command>EXPLAIN VERBOSE</> tries to
3156       print plan node target lists.
3157      </para>
3158     </listitem>
3159
3160     <listitem>
3161      <para>
3162       Avoid an unnecessary coercion failure in some cases where an undecorated
3163       literal string appears in a subquery within
3164       <command>UNION</>/<command>INTERSECT</>/<command>EXCEPT</> (Tom)
3165      </para>
3166
3167      <para>
3168       This fixes a regression for some cases that worked before 8.4.
3169      </para>
3170     </listitem>
3171
3172     <listitem>
3173      <para>
3174       Avoid undesirable rowtype compatibility check failures in some cases
3175       where a whole-row Var has a rowtype that contains dropped columns (Tom)
3176      </para>
3177     </listitem>
3178
3179     <listitem>
3180      <para>
3181       Fix the <literal>STOP WAL LOCATION</> entry in backup history files to
3182       report the next WAL segment's name when the end location is exactly at a
3183       segment boundary (Itagaki Takahiro)
3184      </para>
3185     </listitem>
3186
3187     <listitem>
3188      <para>
3189       Always pass the catalog ID to an option validator function specified in
3190       <command>CREATE FOREIGN DATA WRAPPER</> (Martin Pihlak)
3191      </para>
3192     </listitem>
3193
3194     <listitem>
3195      <para>
3196       Fix some more cases of temporary-file leakage (Heikki)
3197      </para>
3198
3199      <para>
3200       This corrects a problem introduced in the previous minor release.
3201       One case that failed is when a plpgsql function returning set is
3202       called within another function's exception handler.
3203      </para>
3204     </listitem>
3205
3206     <listitem>
3207      <para>
3208       Add support for doing <literal>FULL JOIN ON FALSE</> (Tom)
3209      </para>
3210
3211      <para>
3212       This prevents a regression from pre-8.4 releases for some queries that
3213       can now be simplified to a constant-false join condition.
3214      </para>
3215     </listitem>
3216
3217     <listitem>
3218      <para>
3219       Improve constraint exclusion processing of boolean-variable cases,
3220       in particular make it possible to exclude a partition that has a
3221       <quote>bool_column = false</> constraint (Tom)
3222      </para>
3223     </listitem>
3224
3225     <listitem>
3226      <para>
3227       Prevent treating an <literal>INOUT</> cast as representing binary
3228       compatibility (Heikki)
3229      </para>
3230     </listitem>
3231
3232     <listitem>
3233      <para>
3234       Include column name in the message when warning about inability to
3235       grant or revoke column-level privileges (Stephen Frost)
3236      </para>
3237
3238      <para>
3239       This is more useful than before and helps to prevent confusion when
3240       a <command>REVOKE</> generates multiple messages, which formerly
3241       appeared to be duplicates.
3242      </para>
3243     </listitem>
3244
3245     <listitem>
3246      <para>
3247       When reading <filename>pg_hba.conf</> and related files, do not treat
3248       <literal>@something</> as a file inclusion request if the <literal>@</>
3249       appears inside quote marks; also, never treat <literal>@</> by itself
3250       as a file inclusion request (Tom)
3251      </para>
3252
3253      <para>
3254       This prevents erratic behavior if a role or database name starts with
3255       <literal>@</>.  If you need to include a file whose path name
3256       contains spaces, you can still do so, but you must write
3257       <literal>@"/path to/file"</> rather than putting the quotes around
3258       the whole construct.
3259      </para>
3260     </listitem>
3261
3262     <listitem>
3263      <para>
3264       Prevent infinite loop on some platforms if a directory is named as
3265       an inclusion target in <filename>pg_hba.conf</> and related files
3266       (Tom)
3267      </para>
3268     </listitem>
3269
3270     <listitem>
3271      <para>
3272       Fix possible infinite loop if <function>SSL_read</> or
3273       <function>SSL_write</> fails without setting <varname>errno</> (Tom)
3274      </para>
3275
3276      <para>
3277       This is reportedly possible with some Windows versions of
3278       <application>openssl</>.
3279      </para>
3280     </listitem>
3281
3282     <listitem>
3283      <para>
3284       Disallow <acronym>GSSAPI</> authentication on local connections,
3285       since it requires a hostname to function correctly (Magnus)
3286      </para>
3287     </listitem>
3288
3289     <listitem>
3290      <para>
3291       Protect <application>ecpg</> against applications freeing strings
3292       unexpectedly (Michael)
3293      </para>
3294     </listitem>
3295
3296     <listitem>
3297      <para>
3298       Make <application>ecpg</> report the proper SQLSTATE if the connection
3299       disappears (Michael)
3300      </para>
3301     </listitem>
3302
3303     <listitem>
3304      <para>
3305       Fix translation of cell contents in <application>psql</> <literal>\d</>
3306       output (Heikki)
3307      </para>
3308     </listitem>
3309
3310     <listitem>
3311      <para>
3312       Fix <application>psql</>'s <literal>numericlocale</> option to not
3313       format strings it shouldn't in latex and troff output formats (Heikki)
3314      </para>
3315     </listitem>
3316
3317     <listitem>
3318      <para>
3319       Fix a small per-query memory leak in <application>psql</> (Tom)
3320      </para>
3321     </listitem>
3322
3323     <listitem>
3324      <para>
3325       Make <application>psql</> return the correct exit status (3) when
3326       <literal>ON_ERROR_STOP</> and <literal>--single-transaction</> are
3327       both specified and an error occurs during the implied <command>COMMIT</>
3328       (Bruce)
3329      </para>
3330     </listitem>
3331
3332     <listitem>
3333      <para>
3334       Fix <application>pg_dump</>'s output of permissions for foreign servers
3335       (Heikki)
3336      </para>
3337     </listitem>
3338
3339     <listitem>
3340      <para>
3341       Fix possible crash in parallel <application>pg_restore</> due to
3342       out-of-range dependency IDs (Tom)
3343      </para>
3344     </listitem>
3345
3346     <listitem>
3347      <para>
3348       Fix plpgsql failure in one case where a composite column is set to NULL
3349       (Tom)
3350      </para>
3351     </listitem>
3352
3353     <listitem>
3354      <para>
3355       Fix possible failure when calling PL/Perl functions from PL/PerlU
3356       or vice versa (Tim Bunce)
3357      </para>
3358     </listitem>
3359
3360     <listitem>
3361      <para>
3362       Add <literal>volatile</> markings in PL/Python to avoid possible
3363       compiler-specific misbehavior (Zdenek Kotala)
3364      </para>
3365     </listitem>
3366
3367     <listitem>
3368      <para>
3369       Ensure PL/Tcl initializes the Tcl interpreter fully (Tom)
3370      </para>
3371
3372      <para>
3373       The only known symptom of this oversight is that the Tcl
3374       <literal>clock</> command misbehaves if using Tcl 8.5 or later.
3375      </para>
3376     </listitem>
3377
3378     <listitem>
3379      <para>
3380       Prevent <function>ExecutorEnd</> from being run on portals created
3381       within a failed transaction or subtransaction (Tom)
3382      </para>
3383
3384      <para>
3385       This is known to cause issues when using
3386       <filename>contrib/auto_explain</>.
3387      </para>
3388     </listitem>
3389
3390     <listitem>
3391      <para>
3392       Prevent crash in <filename>contrib/dblink</> when too many key
3393       columns are specified to a <function>dblink_build_sql_*</> function
3394       (Rushabh Lathia, Joe Conway)
3395      </para>
3396     </listitem>
3397
3398     <listitem>
3399      <para>
3400       Allow zero-dimensional arrays in <filename>contrib/ltree</> operations
3401       (Tom)
3402      </para>
3403
3404      <para>
3405       This case was formerly rejected as an error, but it's more convenient to
3406       treat it the same as a zero-element array.  In particular this avoids
3407       unnecessary failures when an <type>ltree</> operation is applied to the
3408       result of <literal>ARRAY(SELECT ...)</> and the sub-select returns no
3409       rows.
3410      </para>
3411     </listitem>
3412
3413     <listitem>
3414      <para>
3415       Fix assorted crashes in <filename>contrib/xml2</> caused by sloppy
3416       memory management (Tom)
3417      </para>
3418     </listitem>
3419
3420     <listitem>
3421      <para>
3422       Make building of <filename>contrib/xml2</> more robust on Windows
3423       (Andrew)
3424      </para>
3425     </listitem>
3426
3427     <listitem>
3428      <para>
3429       Fix race condition in Windows signal handling (Radu Ilie)
3430      </para>
3431
3432      <para>
3433       One known symptom of this bug is that rows in <structname>pg_listener</>
3434       could be dropped under heavy load.
3435      </para>
3436     </listitem>
3437
3438     <listitem>
3439      <para>
3440       Make the configure script report failure if the C compiler does
3441       not provide a working 64-bit integer datatype (Tom)
3442      </para>
3443
3444      <para>
3445       This case has been broken for some time, and no longer seems worth
3446       supporting, so just reject it at configure time instead.
3447      </para>
3448     </listitem>
3449
3450     <listitem>
3451      <para>
3452       Update time zone data files to <application>tzdata</> release 2010e
3453       for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
3454      </para>
3455     </listitem>
3456
3457    </itemizedlist>
3458
3459   </sect2>
3460  </sect1>
3461
3462  <sect1 id="release-8-4-2">
3463   <title>Release 8.4.2</title>
3464
3465   <note>
3466   <title>Release Date</title>
3467   <simpara>2009-12-14</simpara>
3468   </note>
3469
3470   <para>
3471    This release contains a variety of fixes from 8.4.1.
3472    For information about new features in the 8.4 major release, see
3473    <xref linkend="release-8-4">.
3474   </para>
3475
3476   <sect2>
3477    <title>Migration to Version 8.4.2</title>
3478
3479    <para>
3480     A dump/restore is not required for those running 8.4.X.
3481     However, if you have any hash indexes,
3482     you should <command>REINDEX</> them after updating to 8.4.2,
3483     to repair possible damage.
3484    </para>
3485
3486   </sect2>
3487
3488   <sect2>
3489    <title>Changes</title>
3490
3491    <itemizedlist>
3492
3493     <listitem>
3494      <para>
3495       Protect against indirect security threats caused by index functions
3496       changing session-local state (Gurjeet Singh, Tom)
3497      </para>
3498
3499      <para>
3500       This change prevents allegedly-immutable index functions from possibly
3501       subverting a superuser's session (CVE-2009-4136).
3502      </para>
3503     </listitem>
3504
3505     <listitem>
3506      <para>
3507       Reject SSL certificates containing an embedded null byte in the common
3508       name (CN) field (Magnus)
3509      </para>
3510
3511      <para>
3512       This prevents unintended matching of a certificate to a server or client
3513       name during SSL validation (CVE-2009-4034).
3514      </para>
3515     </listitem>
3516
3517     <listitem>
3518      <para>
3519       Fix hash index corruption (Tom)
3520      </para>
3521
3522      <para>
3523       The 8.4 change that made hash indexes keep entries sorted by hash value
3524       failed to update the bucket splitting and compaction routines to
3525       preserve the ordering.  So application of either of those operations
3526       could lead to permanent corruption of an index, in the sense that
3527       searches might fail to find entries that are present.  To deal with
3528       this, it is recommended to <literal>REINDEX</> any hash indexes you may
3529       have after installing this update.
3530      </para>
3531     </listitem>
3532
3533     <listitem>
3534      <para>
3535       Fix possible crash during backend-startup-time cache initialization (Tom)
3536      </para>
3537     </listitem>
3538
3539     <listitem>
3540      <para>
3541       Avoid crash on empty thesaurus dictionary (Tom)
3542      </para>
3543     </listitem>
3544
3545     <listitem>
3546      <para>
3547       Prevent signals from interrupting <literal>VACUUM</> at unsafe times
3548       (Alvaro)
3549      </para>
3550
3551      <para>
3552       This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled
3553       after it's already committed its tuple movements, as well as transient
3554       errors if a plain <literal>VACUUM</> is interrupted after having
3555       truncated the table.
3556      </para>
3557     </listitem>
3558
3559     <listitem>
3560      <para>
3561       Fix possible crash due to integer overflow in hash table size
3562       calculation (Tom)
3563      </para>
3564
3565      <para>
3566       This could occur with extremely large planner estimates for the size of
3567       a hashjoin's result.
3568      </para>
3569     </listitem>
3570
3571     <listitem>
3572      <para>
3573       Fix crash if a <literal>DROP</> is attempted on an internally-dependent
3574       object (Tom)
3575      </para>
3576     </listitem>
3577
3578     <listitem>
3579      <para>
3580       Fix very rare crash in <type>inet</>/<type>cidr</> comparisons (Chris
3581       Mikkelson)
3582      </para>
3583     </listitem>
3584
3585     <listitem>
3586      <para>
3587       Ensure that shared tuple-level locks held by prepared transactions are
3588       not ignored (Heikki)
3589      </para>
3590     </listitem>
3591
3592     <listitem>
3593      <para>
3594       Fix premature drop of temporary files used for a cursor that is accessed
3595       within a subtransaction (Heikki)
3596      </para>
3597     </listitem>
3598
3599     <listitem>
3600      <para>
3601       Fix memory leak in syslogger process when rotating to a new CSV logfile
3602       (Tom)
3603      </para>
3604     </listitem>
3605
3606     <listitem>
3607      <para>
3608       Fix memory leak in postmaster when re-parsing <filename>pg_hba.conf</>
3609       (Tom)
3610      </para>
3611     </listitem>
3612
3613     <listitem>
3614      <para>
3615       Fix Windows permission-downgrade logic (Jesse Morris)
3616      </para>
3617
3618      <para>
3619       This fixes some cases where the database failed to start on Windows,
3620       often with misleading error messages such as <quote>could not locate
3621       matching postgres executable</quote>.
3622      </para>
3623     </listitem>
3624
3625     <listitem>
3626      <para>
3627       Make <literal>FOR UPDATE/SHARE</> in the primary query not propagate
3628       into <literal>WITH</> queries (Tom)
3629      </para>
3630
3631      <para>
3632       For example, in
3633 <programlisting>
3634 WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE
3635 </programlisting>
3636       the <literal>FOR UPDATE</> will now affect <literal>bar</> but not
3637       <literal>foo</>.  This is more useful and consistent than the original
3638       8.4 behavior, which tried to propagate <literal>FOR UPDATE</> into the
3639       <literal>WITH</> query but always failed due to assorted implementation
3640       restrictions.  It also follows the design rule that <literal>WITH</>
3641       queries are executed as if independent of the main query.
3642      </para>
3643     </listitem>
3644
3645     <listitem>
3646      <para>
3647       Fix bug with a <literal>WITH RECURSIVE</> query immediately inside
3648       another one (Tom)
3649      </para>
3650     </listitem>
3651
3652     <listitem>
3653      <para>
3654       Fix concurrency bug in hash indexes (Tom)
3655      </para>
3656
3657      <para>
3658       Concurrent insertions could cause index scans to transiently report
3659       wrong results.
3660      </para>
3661     </listitem>
3662
3663     <listitem>
3664      <para>
3665       Fix incorrect logic for GiST index page splits, when the split depends
3666       on a non-first column of the index (Paul Ramsey)
3667      </para>
3668     </listitem>
3669
3670     <listitem>
3671      <para>
3672       Fix wrong search results for a multi-column GIN index with
3673       <literal>fastupdate</> enabled (Teodor)
3674      </para>
3675     </listitem>
3676
3677     <listitem>
3678      <para>
3679       Fix bugs in WAL entry creation for GIN indexes (Tom)
3680      </para>
3681
3682      <para>
3683       These bugs were masked when <varname>full_page_writes</> was on, but
3684       with it off a WAL replay failure was certain if a crash occurred before
3685       the next checkpoint.
3686      </para>
3687     </listitem>
3688
3689     <listitem>
3690      <para>
3691       Don't error out if recycling or removing an old WAL file fails at the
3692       end of checkpoint (Heikki)
3693      </para>
3694
3695      <para>
3696       It's better to treat the problem as non-fatal and allow the checkpoint
3697       to complete.  Future checkpoints will retry the removal.  Such problems
3698       are not expected in normal operation, but have been seen to be
3699       caused by misdesigned Windows anti-virus and backup software.
3700      </para>
3701     </listitem>
3702
3703     <listitem>
3704      <para>
3705       Ensure WAL files aren't repeatedly archived on Windows (Heikki)
3706      </para>
3707
3708      <para>
3709       This is another symptom that could happen if some other process
3710       interfered with deletion of a no-longer-needed file.
3711      </para>
3712     </listitem>
3713
3714     <listitem>
3715      <para>
3716       Fix PAM password processing to be more robust (Tom)
3717      </para>
3718
3719      <para>
3720       The previous code is known to fail with the combination of the Linux
3721       <literal>pam_krb5</> PAM module with Microsoft Active Directory as the
3722       domain controller.  It might have problems elsewhere too, since it was
3723       making unjustified assumptions about what arguments the PAM stack would
3724       pass to it.
3725      </para>
3726     </listitem>
3727
3728     <listitem>
3729      <para>
3730       Raise the maximum authentication token (Kerberos ticket) size in GSSAPI
3731       and SSPI authentication methods (Ian Turner)
3732      </para>
3733
3734      <para>
3735       While the old 2000-byte limit was more than enough for Unix Kerberos
3736       implementations, tickets issued by Windows Domain Controllers can be
3737       much larger.
3738      </para>
3739     </listitem>
3740
3741     <listitem>
3742      <para>
3743       Ensure that domain constraints are enforced in constructs like
3744       <literal>ARRAY[...]::domain</>, where the domain is over an array type
3745       (Heikki)
3746      </para>
3747     </listitem>
3748
3749     <listitem>
3750      <para>
3751       Fix foreign-key logic for some cases involving composite-type columns
3752       as foreign keys (Tom)
3753      </para>
3754     </listitem>
3755
3756     <listitem>
3757      <para>
3758       Ensure that a cursor's snapshot is not modified after it is created
3759       (Alvaro)
3760      </para>
3761
3762      <para>
3763       This could lead to a cursor delivering wrong results if later operations
3764       in the same transaction modify the data the cursor is supposed to return.
3765      </para>
3766     </listitem>
3767
3768     <listitem>
3769      <para>
3770       Fix <literal>CREATE TABLE</> to properly merge default expressions
3771       coming from different inheritance parent tables (Tom)
3772      </para>
3773
3774      <para>
3775       This used to work but was broken in 8.4.
3776      </para>
3777     </listitem>
3778
3779     <listitem>
3780      <para>
3781       Re-enable collection of access statistics for sequences (Akira Kurosawa)
3782      </para>
3783
3784      <para>
3785       This used to work but was broken in 8.3.
3786      </para>
3787     </listitem>
3788
3789     <listitem>
3790      <para>
3791       Fix processing of ownership dependencies during <literal>CREATE OR
3792       REPLACE FUNCTION</> (Tom)
3793      </para>
3794     </listitem>
3795
3796     <listitem>
3797      <para>
3798       Fix incorrect handling of <literal>WHERE</>
3799       <replaceable>x</>=<replaceable>x</> conditions (Tom)
3800      </para>
3801
3802      <para>
3803       In some cases these could get ignored as redundant, but they aren't
3804       &mdash; they're equivalent to <replaceable>x</> <literal>IS NOT NULL</>.
3805      </para>
3806     </listitem>
3807
3808     <listitem>
3809      <para>
3810       Fix incorrect plan construction when using hash aggregation to implement
3811       <literal>DISTINCT</> for textually identical volatile expressions (Tom)
3812      </para>
3813     </listitem>
3814
3815     <listitem>
3816      <para>
3817       Fix Assert failure for a volatile <literal>SELECT DISTINCT ON</>
3818       expression (Tom)
3819      </para>
3820     </listitem>
3821
3822     <listitem>
3823      <para>
3824       Fix <function>ts_stat()</> to not fail on an empty <type>tsvector</>
3825       value (Tom)
3826      </para>
3827     </listitem>
3828
3829     <listitem>
3830      <para>
3831       Make text search parser accept underscores in XML attributes (Peter)
3832      </para>
3833     </listitem>
3834
3835     <listitem>
3836      <para>
3837       Fix encoding handling in <type>xml</> binary input (Heikki)
3838      </para>
3839
3840      <para>
3841       If the XML header doesn't specify an encoding, we now assume UTF-8 by
3842       default; the previous handling was inconsistent.
3843      </para>
3844     </listitem>
3845
3846     <listitem>
3847      <para>
3848       Fix bug with calling <literal>plperl</> from <literal>plperlu</> or vice
3849       versa (Tom)
3850      </para>
3851
3852      <para>
3853       An error exit from the inner function could result in crashes due to
3854       failure to re-select the correct Perl interpreter for the outer function.
3855      </para>
3856     </listitem>
3857
3858     <listitem>
3859      <para>
3860       Fix session-lifespan memory leak when a PL/Perl function is redefined
3861       (Tom)
3862      </para>
3863     </listitem>
3864
3865     <listitem>
3866      <para>
3867       Ensure that Perl arrays are properly converted to
3868       <productname>PostgreSQL</> arrays when returned by a set-returning
3869       PL/Perl function (Andrew Dunstan, Abhijit Menon-Sen)
3870      </para>
3871
3872      <para>
3873       This worked correctly already for non-set-returning functions.
3874      </para>
3875     </listitem>
3876
3877     <listitem>
3878      <para>
3879       Fix rare crash in exception processing in PL/Python (Peter)
3880      </para>
3881     </listitem>
3882
3883     <listitem>
3884      <para>
3885       Fix <application>ecpg</> problem with comments in <literal>DECLARE
3886       CURSOR</> statements (Michael)
3887      </para>
3888     </listitem>
3889
3890     <listitem>
3891      <para>
3892       Fix <application>ecpg</> to not treat recently-added keywords as
3893       reserved words (Tom)
3894      </para>
3895
3896      <para>
3897       This affected the keywords <literal>CALLED</>, <literal>CATALOG</>,
3898       <literal>DEFINER</>, <literal>ENUM</>, <literal>FOLLOWING</>,
3899       <literal>INVOKER</>, <literal>OPTIONS</>, <literal>PARTITION</>,
3900       <literal>PRECEDING</>, <literal>RANGE</>, <literal>SECURITY</>,
3901       <literal>SERVER</>, <literal>UNBOUNDED</>, and <literal>WRAPPER</>.
3902      </para>
3903     </listitem>
3904
3905     <listitem>
3906      <para>
3907       Re-allow regular expression special characters in <application>psql</>'s
3908       <literal>\df</> function name parameter (Tom)
3909      </para>
3910     </listitem>
3911
3912     <listitem>
3913      <para>
3914       In <filename>contrib/fuzzystrmatch</>, correct the calculation of
3915       <function>levenshtein</> distances with non-default costs (Marcin Mank)
3916      </para>
3917     </listitem>
3918
3919     <listitem>
3920      <para>
3921       In <filename>contrib/pg_standby</>, disable triggering failover with a
3922       signal on Windows (Fujii Masao)
3923      </para>
3924
3925      <para>
3926       This never did anything useful, because Windows doesn't have Unix-style
3927       signals, but recent changes made it actually crash.
3928      </para>
3929     </listitem>
3930
3931     <listitem>
3932      <para>
3933       Put <literal>FREEZE</> and <literal>VERBOSE</> options in the right
3934       order in the <literal>VACUUM</> command that
3935       <filename>contrib/vacuumdb</> produces (Heikki)
3936      </para>
3937     </listitem>
3938
3939     <listitem>
3940      <para>
3941       Fix possible leak of connections when <filename>contrib/dblink</>
3942       encounters an error (Tatsuhito Kasahara)
3943      </para>
3944     </listitem>
3945
3946     <listitem>
3947      <para>
3948       Ensure <application>psql</>'s flex module is compiled with the correct
3949       system header definitions (Tom)
3950      </para>
3951
3952      <para>
3953       This fixes build failures on platforms where
3954       <literal>--enable-largefile</> causes incompatible changes in the
3955       generated code.
3956      </para>
3957     </listitem>
3958
3959     <listitem>
3960      <para>
3961       Make the postmaster ignore any <literal>application_name</> parameter in
3962       connection request packets, to improve compatibility with future libpq
3963       versions (Tom)
3964      </para>
3965     </listitem>
3966
3967     <listitem>
3968      <para>
3969       Update the timezone abbreviation files to match current reality (Joachim
3970       Wieland)
3971      </para>
3972
3973      <para>
3974       This includes adding <literal>IDT</> to the default
3975       timezone abbreviation set.
3976      </para>
3977     </listitem>
3978
3979     <listitem>
3980      <para>
3981       Update time zone data files to <application>tzdata</> release 2009s
3982       for DST law changes in Antarctica, Argentina, Bangladesh, Fiji,
3983       Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical
3984       corrections for Hong Kong.
3985      </para>
3986     </listitem>
3987
3988    </itemizedlist>
3989
3990   </sect2>
3991  </sect1>
3992
3993  <sect1 id="release-8-4-1">
3994   <title>Release 8.4.1</title>
3995
3996   <note>
3997   <title>Release Date</title>
3998   <simpara>2009-09-09</simpara>
3999   </note>
4000
4001   <para>
4002    This release contains a variety of fixes from 8.4.
4003    For information about new features in the 8.4 major release, see
4004    <xref linkend="release-8-4">.
4005   </para>
4006
4007   <sect2>
4008    <title>Migration to Version 8.4.1</title>
4009
4010    <para>
4011     A dump/restore is not required for those running 8.4.X.
4012    </para>
4013
4014   </sect2>
4015
4016   <sect2>
4017    <title>Changes</title>
4018
4019    <itemizedlist>
4020
4021     <listitem>
4022      <para>
4023       Fix WAL page header initialization at the end of archive recovery
4024       (Heikki)
4025      </para>
4026
4027      <para>
4028       This could lead to failure to process the WAL in a subsequent
4029       archive recovery.
4030      </para>
4031     </listitem>
4032
4033     <listitem>
4034      <para>
4035       Fix <quote>cannot make new WAL entries during recovery</> error (Tom)
4036      </para>
4037     </listitem>
4038
4039     <listitem>
4040      <para>
4041       Fix problem that could make expired rows visible after a crash (Tom)
4042      </para>
4043
4044      <para>
4045       This bug involved a page status bit potentially not being set
4046       correctly after a server crash.
4047      </para>
4048     </listitem>
4049
4050     <listitem>
4051      <para>
4052       Disallow <command>RESET ROLE</> and <command>RESET SESSION
4053       AUTHORIZATION</> inside security-definer functions (Tom, Heikki)
4054      </para>
4055
4056      <para>
4057       This covers a case that was missed in the previous patch that
4058       disallowed <command>SET ROLE</> and <command>SET SESSION
4059       AUTHORIZATION</> inside security-definer functions.
4060       (See CVE-2007-6600)
4061      </para>
4062     </listitem>
4063
4064     <listitem>
4065      <para>
4066       Make <command>LOAD</> of an already-loaded loadable module
4067       into a no-op (Tom)
4068      </para>
4069
4070      <para>
4071       Formerly, <command>LOAD</> would attempt to unload and re-load the
4072       module, but this is unsafe and not all that useful.
4073      </para>
4074     </listitem>
4075
4076     <listitem>
4077      <para>
4078       Make window function <literal>PARTITION BY</> and <literal>ORDER BY</>
4079       items always be interpreted as simple expressions (Tom)
4080      </para>
4081
4082      <para>
4083       In 8.4.0 these lists were parsed following the rules used for
4084       top-level <literal>GROUP BY</> and <literal>ORDER BY</> lists.
4085       But this was not correct per the SQL standard, and it led to possible
4086       circularity.
4087      </para>
4088     </listitem>
4089
4090     <listitem>
4091      <para>
4092       Fix several errors in planning of semi-joins (Tom)
4093      </para>
4094
4095      <para>
4096       These led to wrong query results in some cases where <literal>IN</>
4097       or <literal>EXISTS</> was used together with another join.
4098      </para>
4099     </listitem>
4100
4101     <listitem>
4102      <para>
4103       Fix handling of whole-row references to subqueries that are within
4104       an outer join (Tom)
4105      </para>
4106
4107      <para>
4108       An example is
4109       <literal>SELECT COUNT(ss.*) FROM ... LEFT JOIN (SELECT ...) ss ON ...</>.
4110       Here, <literal>ss.*</> would be treated as <literal>ROW(NULL,NULL,...)</>
4111       for null-extended join rows, which is not the same as a simple NULL.
4112       Now it is treated as a simple NULL.
4113      </para>
4114     </listitem>
4115
4116     <listitem>
4117      <para>
4118       Fix Windows shared-memory allocation code (Tsutomu Yamada, Magnus)
4119      </para>
4120
4121      <para>
4122       This bug led to the often-reported <quote>could not reattach
4123       to shared memory</> error message.
4124      </para>
4125     </listitem>
4126
4127     <listitem>
4128      <para>
4129       Fix locale handling with plperl (Heikki)
4130      </para>
4131
4132      <para>
4133       This bug could cause the server's locale setting to change when a
4134       plperl function is called, leading to data corruption.
4135      </para>
4136     </listitem>
4137
4138     <listitem>
4139      <para>
4140       Fix handling of reloptions to ensure setting one option doesn't
4141       force default values for others (Itagaki Takahiro)
4142      </para>
4143     </listitem>
4144
4145     <listitem>
4146      <para>
4147       Ensure that a <quote>fast shutdown</> request will forcibly terminate
4148       open sessions, even if a <quote>smart shutdown</> was already in progress
4149       (Fujii Masao)
4150      </para>
4151     </listitem>
4152
4153     <listitem>
4154      <para>
4155       Avoid memory leak for <function>array_agg()</> in <literal>GROUP BY</>
4156       queries (Tom)
4157      </para>
4158     </listitem>
4159
4160     <listitem>
4161      <para>
4162       Treat <function>to_char(..., 'TH')</> as an uppercase ordinal
4163       suffix with <literal>'HH'</>/<literal>'HH12'</> (Heikki)
4164      </para>
4165
4166      <para>
4167       It was previously handled as <literal>'th'</> (lowercase).
4168      </para>
4169     </listitem>
4170
4171     <listitem>
4172      <para>
4173       Include the fractional part in the result of
4174       <function>EXTRACT(second)</> and
4175       <function>EXTRACT(milliseconds)</> for
4176       <type>time</> and <type>time with time zone</> inputs (Tom)
4177      </para>
4178
4179      <para>
4180       This has always worked for floating-point datetime configurations,
4181       but was broken in the integer datetime code.
4182      </para>
4183     </listitem>
4184
4185     <listitem>
4186      <para>
4187       Fix overflow for <literal>INTERVAL '<replaceable>x</> ms'</literal>
4188       when <replaceable>x</> is more than 2 million and integer
4189       datetimes are in use (Alex Hunsaker)
4190      </para>
4191     </listitem>
4192
4193     <listitem>
4194      <para>
4195       Improve performance when processing toasted values in index scans (Tom)
4196      </para>
4197
4198      <para>
4199       This is particularly useful for <ulink
4200       url="http://postgis.refractions.net/">PostGIS</ulink>.
4201      </para>
4202     </listitem>
4203
4204     <listitem>
4205      <para>
4206       Fix a typo that disabled <varname>commit_delay</> (Jeff Janes)
4207      </para>
4208     </listitem>
4209
4210     <listitem>
4211      <para>
4212       Output early-startup messages to <filename>postmaster.log</> if the
4213       server is started in silent mode (Tom)
4214      </para>
4215
4216      <para>
4217       Previously such error messages were discarded, leading to
4218       difficulty in debugging.
4219      </para>
4220     </listitem>
4221
4222     <listitem>
4223      <para>
4224       Remove translated FAQs (Peter)
4225      </para>
4226
4227      <para>
4228       They are now on the <ulink
4229       url="http://wiki.postgresql.org/wiki/FAQ">wiki</ulink>.  The
4230       main FAQ was moved to the wiki some time ago.
4231      </para>
4232     </listitem>
4233
4234     <listitem>
4235      <para>
4236       Fix <application>pg_ctl</> to not go into an infinite loop if
4237       <filename>postgresql.conf</> is empty (Jeff Davis)
4238      </para>
4239     </listitem>
4240
4241     <listitem>
4242      <para>
4243       Fix several errors in <application>pg_dump</>'s
4244       <literal>--binary-upgrade</> mode (Bruce, Tom)
4245      </para>
4246
4247      <para>
4248       <literal>pg_dump --binary-upgrade</> is used by pg_migrator.
4249      </para>
4250     </listitem>
4251
4252     <listitem>
4253      <para>
4254       Fix <filename>contrib/xml2</>'s <function>xslt_process()</> to
4255       properly handle the maximum number of parameters (twenty) (Tom)
4256      </para>
4257     </listitem>
4258
4259     <listitem>
4260      <para>
4261       Improve robustness of <application>libpq</>'s code to recover
4262       from errors during <command>COPY FROM STDIN</> (Tom)
4263      </para>
4264     </listitem>
4265
4266     <listitem>
4267      <para>
4268       Avoid including conflicting readline and editline header files
4269       when both libraries are installed (Zdenek Kotala)
4270      </para>
4271     </listitem>
4272
4273     <listitem>
4274      <para>
4275       Work around gcc bug that causes <quote>floating-point exception</>
4276       instead of <quote>division by zero</> on some platforms (Tom)
4277      </para>
4278     </listitem>
4279
4280     <listitem>
4281      <para>
4282       Update time zone data files to <application>tzdata</> release 2009l
4283       for DST law changes in Bangladesh, Egypt, Mauritius.
4284      </para>
4285     </listitem>
4286
4287    </itemizedlist>
4288
4289   </sect2>
4290  </sect1>
4291
4292  <sect1 id="release-8-4">
4293   <title>Release 8.4</title>
4294
4295   <note>
4296    <title>Release Date</title>
4297    <simpara>2009-07-01</simpara>
4298   </note>
4299
4300   <sect2>
4301    <title>Overview</title>
4302
4303    <para>
4304     After many years of development, <productname>PostgreSQL</> has
4305     become feature-complete in many areas.   This release shows a
4306     targeted approach to adding features (e.g., authentication,
4307     monitoring, space reuse), and adds capabilities defined in the
4308     later SQL standards.  The major areas of enhancement are:
4309    </para>
4310
4311    <itemizedlist>
4312
4313     <!-- This list duplicates items below, but without authors or details-->
4314
4315     <listitem>
4316      <para>
4317       Windowing Functions
4318      </para>
4319     </listitem>
4320
4321     <listitem>
4322      <para>
4323       Common Table Expressions and Recursive Queries
4324      </para>
4325     </listitem>
4326
4327     <listitem>
4328      <para>
4329       Default and variadic parameters for functions
4330      </para>
4331     </listitem>
4332
4333     <listitem>
4334      <para>
4335       Parallel Restore
4336      </para>
4337     </listitem>
4338
4339     <listitem>
4340      <para>
4341       Column Permissions
4342      </para>
4343     </listitem>
4344
4345     <listitem>
4346      <para>
4347       Per-database locale settings
4348      </para>
4349     </listitem>
4350
4351     <listitem>
4352      <para>
4353       Improved hash indexes
4354      </para>
4355     </listitem>
4356
4357     <listitem>
4358      <para>
4359       Improved join performance for <literal>EXISTS</> and <literal>NOT EXISTS</> queries
4360      </para>
4361     </listitem>
4362
4363     <listitem>
4364      <para>
4365       Easier-to-use Warm Standby
4366      </para>
4367     </listitem>
4368
4369     <listitem>
4370      <para>
4371       Automatic sizing of the Free Space Map
4372      </para>
4373     </listitem>
4374
4375     <listitem>
4376      <para>
4377       Visibility Map (greatly reduces vacuum overhead for slowly-changing tables)
4378      </para>
4379     </listitem>
4380
4381     <listitem>
4382      <para>
4383       Version-aware psql (backslash commands work against older servers)
4384      </para>
4385     </listitem>
4386
4387     <listitem>
4388      <para>
4389       Support SSL certificates for user authentication
4390      </para>
4391     </listitem>
4392
4393     <listitem>
4394      <para>
4395       Per-function runtime statistics
4396      </para>
4397     </listitem>
4398
4399     <listitem>
4400      <para>
4401       Easy editing of functions in psql
4402      </para>
4403     </listitem>
4404
4405     <listitem>
4406      <para>
4407       New contrib modules: pg_stat_statements, auto_explain, citext, btree_gin
4408      </para>
4409     </listitem>
4410
4411    </itemizedlist>
4412
4413    <para>
4414     The above items are explained in more detail in the sections below.
4415    </para>
4416
4417   </sect2>
4418
4419   <sect2>
4420    <title>Migration to Version 8.4</title>
4421
4422    <para>
4423     A dump/restore using <application>pg_dump</application> is
4424     required for those wishing to migrate data from any previous
4425     release.
4426    </para>
4427
4428    <para>
4429     Observe the following incompatibilities:
4430    </para>
4431
4432    <sect3>
4433     <title>General</title>
4434     <itemizedlist>
4435
4436      <listitem>
4437       <para>
4438        Use 64-bit integer datetimes by default (Neil Conway)
4439       </para>
4440
4441       <para>
4442        Previously this was selected by <application>configure</>'s
4443        <option>--enable-integer-datetimes</> option.  To retain
4444        the old behavior, build with <option>--disable-integer-datetimes</>.
4445       </para>
4446      </listitem>
4447
4448      <listitem>
4449       <para>
4450        Remove <application>ipcclean</> utility command (Bruce)
4451       </para>
4452
4453       <para>
4454        The utility only worked on a few platforms.  Users should use
4455        their operating system tools instead.
4456       </para>
4457      </listitem>
4458
4459     </itemizedlist>
4460
4461    </sect3>
4462
4463    <sect3>
4464     <title>Server Settings</title>
4465     <itemizedlist>
4466
4467      <listitem>
4468       <para>
4469        Change default setting for
4470        <literal>log_min_messages</> to <literal>warning</> (previously
4471        it was <literal>notice</>) to reduce log file volume (Tom)
4472       </para>
4473      </listitem>
4474
4475      <listitem>
4476       <para>
4477        Change default setting for <literal>max_prepared_transactions</> to
4478        zero (previously it was 5) (Tom)
4479       </para>
4480      </listitem>
4481
4482      <listitem>
4483       <para>
4484        Make <literal>debug_print_parse</>, <literal>debug_print_rewritten</>,
4485        and <literal>debug_print_plan</>
4486        output appear at <literal>LOG</> message level, not
4487        <literal>DEBUG1</> as formerly (Tom)
4488       </para>
4489      </listitem>
4490
4491      <listitem>
4492       <para>
4493        Make <literal>debug_pretty_print</> default to <literal>on</> (Tom)
4494       </para>
4495      </listitem>
4496
4497      <listitem>
4498       <para>
4499        Remove <varname>explain_pretty_print</> parameter (no longer needed) (Tom)
4500       </para>
4501      </listitem>
4502
4503      <listitem>
4504       <para>
4505        Make <varname>log_temp_files</> settable by superusers only, like other
4506        logging options (Simon Riggs)
4507       </para>
4508      </listitem>
4509
4510      <listitem>
4511       <para>
4512        Remove automatic appending of the epoch timestamp when no <literal>%</>
4513        escapes are present in <literal>log_filename</> (Robert Haas)
4514       </para>
4515
4516       <para>
4517        This change was made because some users wanted a fixed log filename,
4518        for use with an external log rotation tool.
4519       </para>
4520      </listitem>
4521
4522      <listitem>
4523       <para>
4524        Remove <varname>log_restartpoints</> from <filename>recovery.conf</>;
4525        instead use <varname>log_checkpoints</> (Simon)
4526       </para>
4527      </listitem>
4528
4529      <listitem>
4530       <para>
4531        Remove <varname>krb_realm</> and <varname>krb_server_hostname</>;
4532        these are now set in <filename>pg_hba.conf</> instead (Magnus)
4533       </para>
4534      </listitem>
4535
4536      <listitem>
4537       <para>
4538        There are also significant changes in <link
4539        linkend="release-8-4-pg-hba-conf"><filename>pg_hba.conf</></link>,
4540        as described below.
4541       </para>
4542      </listitem>
4543
4544     </itemizedlist>
4545
4546    </sect3>
4547
4548    <sect3>
4549     <title>Queries</title>
4550
4551     <itemizedlist>
4552
4553      <listitem>
4554       <para>
4555        Change <command>TRUNCATE</> and <command>LOCK</> to
4556        apply to child tables of the specified table(s) (Peter)
4557       </para>
4558
4559       <para>
4560        These commands now accept an <literal>ONLY</> option that prevents
4561        processing child tables; this option must be used if the old
4562        behavior is needed.
4563       </para>
4564      </listitem>
4565
4566      <listitem>
4567       <para>
4568        <command>SELECT DISTINCT</> and
4569        <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</>
4570        no longer always produce sorted output (Tom)
4571       </para>
4572
4573       <para>
4574        Previously, these types of queries always removed duplicate rows
4575        by means of Sort/Unique processing (i.e., sort then remove adjacent
4576        duplicates).  Now they can be implemented by hashing, which will not
4577        produce sorted output.  If an application relied on the output being
4578        in sorted order, the recommended fix is to add an <literal>ORDER BY</>
4579        clause.  As a short-term workaround, the previous behavior can be
4580        restored by disabling <literal>enable_hashagg</>, but that is a very
4581        performance-expensive fix.  <literal>SELECT DISTINCT ON</> never uses
4582        hashing, however, so its behavior is unchanged.
4583       </para>
4584      </listitem>
4585
4586      <listitem>
4587       <para>
4588        Force child tables to inherit <literal>CHECK</> constraints from parents
4589        (Alex Hunsaker, Nikhil Sontakke, Tom)
4590       </para>
4591
4592       <para>
4593        Formerly it was possible to drop such a constraint from a child
4594        table, allowing rows that violate the constraint to be visible
4595        when scanning the parent table.  This was deemed inconsistent,
4596        as well as contrary to SQL standard.
4597       </para>
4598      </listitem>
4599
4600      <listitem>
4601       <para>
4602        Disallow negative <literal>LIMIT</> or <literal>OFFSET</>
4603        values, rather than treating them as zero (Simon)
4604       </para>
4605      </listitem>
4606
4607      <listitem>
4608       <para>
4609        Disallow <command>LOCK TABLE</> outside a transaction block
4610        (Tom)
4611       </para>
4612
4613       <para>
4614        Such an operation is useless because the lock would be released
4615        immediately.
4616       </para>
4617      </listitem>
4618
4619      <listitem>
4620       <para>
4621        Sequences now contain an additional <structfield>start_value</> column
4622        (Zoltan Boszormenyi)
4623       </para>
4624
4625       <para>
4626        This supports <command>ALTER SEQUENCE ... RESTART</>.
4627       </para>
4628      </listitem>
4629
4630     </itemizedlist>
4631
4632    </sect3>
4633
4634
4635    <sect3>
4636     <title>Functions and Operators</title>
4637
4638     <itemizedlist>
4639
4640      <listitem>
4641       <para>
4642        Make <type>numeric</> zero raised to a fractional power return
4643        <literal>0</>, rather than throwing an error, and make
4644        <type>numeric</> zero raised to the zero power return <literal>1</>,
4645        rather than error (Bruce)
4646       </para>
4647
4648       <para>
4649        This matches the longstanding <type>float8</> behavior.
4650       </para>
4651      </listitem>
4652
4653      <listitem>
4654       <para>
4655        Allow unary minus of floating-point values to produce minus zero (Tom)
4656       </para>
4657
4658       <para>
4659        The changed behavior is more <acronym>IEEE</>-standard
4660        compliant.
4661       </para>
4662      </listitem>
4663
4664      <listitem>
4665       <para>
4666        Throw an error if an escape character is the last character in
4667        a <literal>LIKE</> pattern (i.e., it has nothing to escape) (Tom)
4668       </para>
4669
4670       <para>
4671        Previously, such an escape character was silently ignored,
4672        thus possibly masking application logic errors.
4673       </para>
4674      </listitem>
4675
4676      <listitem>
4677       <para>
4678        Remove <literal>~=~</> and <literal>~&lt;&gt;~</> operators
4679        formerly used for <literal>LIKE</> index comparisons (Tom)
4680       </para>
4681
4682       <para>
4683        Pattern indexes now use the regular equality operator.
4684       </para>
4685      </listitem>
4686
4687      <listitem>
4688       <para>
4689        <function>xpath()</> now passes its arguments to <application>libxml</>
4690        without any changes (Andrew)
4691       </para>
4692
4693       <para>
4694        This means that the XML argument must be a well-formed XML document.
4695        The previous coding attempted to allow XML fragments, but it did not
4696        work well.
4697       </para>
4698      </listitem>
4699
4700      <listitem>
4701       <para>
4702        Make <function>xmlelement()</> format attribute values just like
4703        content values (Peter)
4704       </para>
4705
4706       <para>
4707        Previously, attribute values were formatted according to the
4708        normal SQL output behavior, which is sometimes at odds with
4709        XML rules.
4710       </para>
4711      </listitem>
4712
4713      <listitem>
4714       <para>
4715        Rewrite memory management for <application>libxml</>-using functions
4716        (Tom)
4717       </para>
4718
4719       <para>
4720        This change should avoid some compatibility problems with use of
4721        <application>libxml</> in PL/Perl and other add-on code.
4722       </para>
4723      </listitem>
4724
4725      <listitem>
4726       <para>
4727        Adopt a faster algorithm for hash functions (Kenneth Marshall,
4728        based on work of Bob Jenkins)
4729       </para>
4730
4731       <para>
4732        Many of the built-in hash functions now deliver different results on
4733        little-endian and big-endian platforms.
4734       </para>
4735      </listitem>
4736
4737     </itemizedlist>
4738
4739     <sect4>
4740      <title>Temporal Functions and Operators</title>
4741
4742      <itemizedlist>
4743
4744       <listitem>
4745        <para>
4746         <varname>DateStyle</> no longer controls <type>interval</> output
4747         formatting; instead there is a new variable <varname>IntervalStyle</>
4748         (Ron Mayer)
4749        </para>
4750       </listitem>
4751
4752       <listitem>
4753        <para>
4754         Improve consistency of handling of fractional seconds in
4755         <type>timestamp</> and <type>interval</> output (Ron Mayer)
4756        </para>
4757
4758        <para>
4759         This may result in displaying a different number of fractional
4760         digits than before, or rounding instead of truncating.
4761        </para>
4762       </listitem>
4763
4764       <listitem>
4765        <para>
4766         Make <function>to_char()</>'s localized month/day names depend
4767         on <varname>LC_TIME</>, not <varname>LC_MESSAGES</> (Euler
4768         Taveira de Oliveira)
4769        </para>
4770       </listitem>
4771
4772       <listitem>
4773        <para>
4774         Cause <function>to_date()</> and <function>to_timestamp()</>
4775         to more consistently report errors for invalid input (Brendan
4776         Jurd)
4777        </para>
4778
4779        <para>
4780         Previous versions would often ignore or silently misread input
4781         that did not match the format string.  Such cases will now
4782         result in an error.
4783        </para>
4784       </listitem>
4785
4786       <listitem>
4787        <para>
4788         Fix <function>to_timestamp()</> to not require upper/lower case
4789         matching for meridian (<literal>AM</>/<literal>PM</>) and era
4790         (<literal>BC</>/<literal>AD</>) format designations  (Brendan
4791         Jurd)
4792        </para>
4793
4794        <para>
4795         For example, input value <literal>ad</> now matches the format
4796         string <literal>AD</>.
4797        </para>
4798       </listitem>
4799
4800      </itemizedlist>
4801
4802     </sect4>
4803
4804    </sect3>
4805
4806   </sect2>
4807
4808   <sect2>
4809    <title>Changes</title>
4810
4811    <para>
4812     Below you will find a detailed account of the changes between
4813     <productname>PostgreSQL</productname> 8.4 and the previous major
4814     release.
4815    </para>
4816
4817    <sect3>
4818     <title>Performance</title>
4819     <itemizedlist>
4820
4821      <listitem>
4822       <para>
4823        Improve optimizer statistics calculations (Jan Urbanski, Tom)
4824       </para>
4825
4826       <para>
4827        In particular, estimates for full-text-search operators are
4828        greatly improved.
4829       </para>
4830      </listitem>
4831
4832      <listitem>
4833       <para>
4834        Allow <command>SELECT DISTINCT</> and
4835        <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> to
4836        use hashing (Tom)
4837       </para>
4838
4839       <para>
4840        This means that these types of queries no longer automatically
4841        produce sorted output.
4842       </para>
4843      </listitem>
4844
4845      <listitem>
4846       <para>
4847        Create explicit concepts of semi-joins and anti-joins (Tom)
4848       </para>
4849
4850       <para>
4851        This work formalizes our previous ad-hoc treatment of <literal>IN
4852        (SELECT ...)</> clauses, and extends it to <literal>EXISTS</> and
4853        <literal>NOT EXISTS</> clauses.  It should result in significantly
4854        better planning of <literal>EXISTS</> and <literal>NOT EXISTS</>
4855        queries.  In general, logically equivalent <literal>IN</> and
4856        <literal>EXISTS</> clauses should now have similar performance,
4857        whereas previously <literal>IN</> often won.
4858       </para>
4859      </listitem>
4860
4861      <listitem>
4862       <para>
4863        Improve optimization of sub-selects beneath outer joins (Tom)
4864       </para>
4865
4866       <para>
4867        Formerly, a sub-select or view could not be optimized very well if it
4868        appeared within the nullable side of an outer join and contained
4869        non-strict expressions (for instance, constants) in its result list.
4870       </para>
4871      </listitem>
4872
4873      <listitem>
4874       <para>
4875        Improve the performance of <function>text_position()</> and
4876        related functions by using Boyer-Moore-Horspool searching (David
4877        Rowley)
4878       </para>
4879
4880       <para>
4881        This is particularly helpful for long search patterns.
4882       </para>
4883      </listitem>
4884
4885      <listitem>
4886       <para>
4887        Reduce I/O load of writing the statistics collection file
4888        by writing the file only when requested (Martin Pihlak)
4889       </para>
4890      </listitem>
4891
4892      <listitem>
4893       <para>
4894        Improve performance for bulk inserts (Robert Haas, Simon)
4895       </para>
4896      </listitem>
4897
4898      <listitem>
4899       <para>
4900        Increase the default value of <varname>default_statistics_target</>
4901        from <literal>10</> to <literal>100</> (Greg Sabino Mullane,
4902        Tom)
4903       </para>
4904
4905       <para>
4906        The maximum value was also increased from <literal>1000</> to
4907        <literal>10000</>.
4908       </para>
4909      </listitem>
4910
4911      <listitem>
4912       <para>
4913        Perform <varname>constraint_exclusion</> checking by default
4914        in queries involving inheritance or <literal>UNION ALL</> (Tom)
4915       </para>
4916
4917       <para>
4918        A new <varname>constraint_exclusion</> setting,
4919        <literal>partition</>, was added to specify this behavior.
4920       </para>
4921      </listitem>
4922
4923      <listitem>
4924       <para>
4925        Allow I/O read-ahead for bitmap index scans (Greg Stark)
4926       </para>
4927
4928       <para>
4929        The amount of read-ahead is controlled by
4930        <varname>effective_io_concurrency</>.  This feature is available only
4931        if the kernel has <function>posix_fadvise()</> support.
4932       </para>
4933      </listitem>
4934
4935      <listitem>
4936       <para>
4937        Inline simple set-returning <acronym>SQL</> functions in
4938        <literal>FROM</> clauses (Richard Rowell)
4939       </para>
4940      </listitem>
4941
4942      <listitem>
4943       <para>
4944        Improve performance of multi-batch hash joins by providing a special
4945        case for join key values that are especially common in the outer
4946        relation (Bryce Cutt, Ramon Lawrence)
4947       </para>
4948      </listitem>
4949
4950      <listitem>
4951       <para>
4952        Reduce volume of temporary data in multi-batch hash joins
4953        by suppressing <quote>physical tlist</> optimization (Michael
4954        Henderson, Ramon Lawrence)
4955       </para>
4956      </listitem>
4957
4958      <listitem>
4959       <para>
4960        Avoid waiting for idle-in-transaction sessions during
4961        <command>CREATE INDEX CONCURRENTLY</> (Simon)
4962       </para>
4963      </listitem>
4964
4965      <listitem>
4966       <para>
4967        Improve performance of shared cache invalidation (Tom)
4968       </para>
4969      </listitem>
4970
4971     </itemizedlist>
4972
4973    </sect3>
4974
4975    <sect3>
4976     <title>Server</title>
4977
4978     <sect4>
4979      <title>Settings</title>
4980
4981      <itemizedlist>
4982
4983       <listitem>
4984        <para>
4985         Convert many <filename>postgresql.conf</> settings to enumerated
4986         values so that <literal>pg_settings</> can display the valid
4987         values (Magnus)
4988        </para>
4989       </listitem>
4990
4991       <listitem>
4992        <para>
4993         Add <varname>cursor_tuple_fraction</> parameter to control the
4994         fraction of a cursor's rows that the planner assumes will be
4995         fetched (Robert Hell)
4996        </para>
4997       </listitem>
4998
4999       <listitem>
5000        <para>
5001         Allow underscores in the names of custom variable
5002         classes in <filename>postgresql.conf</> (Tom)
5003        </para>
5004       </listitem>
5005
5006      </itemizedlist>
5007
5008     </sect4>
5009
5010     <sect4>
5011      <title>Authentication and security</title>
5012      <itemizedlist>
5013
5014       <listitem>
5015        <para>
5016         Remove support for the (insecure) <literal>crypt</> authentication method
5017         (Magnus)
5018        </para>
5019
5020        <para>
5021         This effectively obsoletes pre-<productname>PostgreSQL</> 7.2 client
5022         libraries, as there is no longer any non-plaintext password method that
5023         they can use.
5024        </para>
5025       </listitem>
5026
5027       <listitem>
5028        <para>
5029         Support regular expressions in <filename>pg_ident.conf</>
5030         (Magnus)
5031        </para>
5032       </listitem>
5033
5034       <listitem>
5035        <para>
5036         Allow <productname>Kerberos</>/<acronym>GSSAPI</> parameters
5037         to be changed without restarting the postmaster (Magnus)
5038        </para>
5039       </listitem>
5040
5041       <listitem>
5042        <para>
5043         Support <acronym>SSL</> certificate chains in server certificate
5044         file (Andrew Gierth)
5045        </para>
5046
5047        <para>
5048         Including the full certificate chain makes the client able
5049         to verify the certificate without having all intermediate CA
5050         certificates present in the local store, which is often the case for
5051         commercial CAs.
5052        </para>
5053       </listitem>
5054
5055       <listitem>
5056        <para>
5057         Report appropriate error message for combination of <literal>MD5</>
5058         authentication and <varname>db_user_namespace</> enabled (Bruce)
5059        </para>
5060       </listitem>
5061      </itemizedlist>
5062
5063     </sect4>
5064
5065     <sect4 id="release-8-4-pg-hba-conf">
5066      <title><filename>pg_hba.conf</></title>
5067      <itemizedlist>
5068
5069       <listitem>
5070        <para>
5071         Change all authentication options to use <literal>name=value</>
5072         syntax (Magnus)
5073        </para>
5074
5075        <para>
5076         This makes incompatible changes to the <literal>ldap</>,
5077         <literal>pam</> and <literal>ident</> authentication methods. All
5078         <filename>pg_hba.conf</> entries with these methods need to be
5079         rewritten using the new format.
5080        </para>
5081       </listitem>
5082
5083       <listitem>
5084        <para>
5085         Remove the <literal>ident sameuser</> option, instead making that
5086         behavior the default if no usermap is specified (Magnus)
5087        </para>
5088       </listitem>
5089
5090       <listitem>
5091        <para>
5092         Allow a usermap parameter for all external authentication methods
5093         (Magnus)
5094        </para>
5095
5096        <para>
5097         Previously a usermap was only supported for <literal>ident</>
5098         authentication.
5099        </para>
5100       </listitem>
5101
5102       <listitem>
5103        <para>
5104         Add <literal>clientcert</> option to control requesting of a
5105         client certificate (Magnus)
5106        </para>
5107
5108        <para>
5109         Previously this was controlled by the presence of a root
5110         certificate file in the server's data directory.
5111        </para>
5112       </listitem>
5113
5114       <listitem>
5115        <para>
5116         Add <literal>cert</> authentication method to allow
5117         <emphasis>user</> authentication via <acronym>SSL</> certificates
5118         (Magnus)
5119        </para>
5120
5121        <para>
5122         Previously <acronym>SSL</> certificates could only verify that
5123         the client had access to a certificate, not authenticate a
5124         user.
5125        </para>
5126       </listitem>
5127
5128       <listitem>
5129        <para>
5130         Allow <literal>krb5</>, <literal>gssapi</> and <literal>sspi</>
5131         realm and <literal>krb5</> host settings to be specified in
5132         <filename>pg_hba.conf</> (Magnus)
5133        </para>
5134
5135        <para>
5136         These override the settings in <filename>postgresql.conf</>.
5137        </para>
5138       </listitem>
5139
5140       <listitem>
5141        <para>
5142         Add <varname>include_realm</> parameter for <literal>krb5</>,
5143         <literal>gssapi</>, and <literal>sspi</> methods (Magnus)
5144        </para>
5145
5146        <para>
5147         This allows identical usernames from different realms to be
5148         authenticated as different database users using usermaps.
5149        </para>
5150       </listitem>
5151
5152       <listitem>
5153        <para>
5154         Parse <filename>pg_hba.conf</> fully when it is loaded,
5155         so that errors are reported immediately (Magnus)
5156        </para>
5157
5158        <para>
5159         Previously, most errors in the file wouldn't be detected until clients
5160         tried to connect, so an erroneous file could render the system
5161         unusable.  With the new behavior, if an error is detected during
5162         reload then the bad file is rejected and the postmaster continues
5163         to use its old copy.
5164        </para>
5165       </listitem>
5166
5167       <listitem>
5168        <para>
5169         Show all parsing errors in <filename>pg_hba.conf</> instead of
5170         aborting after the first one (Selena Deckelmann)
5171        </para>
5172       </listitem>
5173
5174       <listitem>
5175        <para>
5176         Support <literal>ident</> authentication over Unix-domain sockets
5177         on <productname>Solaris</> (Garick Hamlin)
5178        </para>
5179       </listitem>
5180
5181      </itemizedlist>
5182
5183     </sect4>
5184
5185     <sect4>
5186      <title>Continuous Archiving</title>
5187      <itemizedlist>
5188
5189       <listitem>
5190        <para>
5191         Provide an option to <function>pg_start_backup()</> to force its
5192         implied checkpoint to finish as quickly as possible (Tom)
5193        </para>
5194
5195        <para>
5196         The default behavior avoids excess I/O consumption, but that is
5197         pointless if no concurrent query activity is going on.
5198        </para>
5199       </listitem>
5200
5201       <listitem>
5202        <para>
5203         Make <function>pg_stop_backup()</> wait for modified <acronym>WAL</>
5204         files to be archived (Simon)
5205        </para>
5206
5207        <para>
5208         This guarantees that the backup is valid at the time
5209         <function>pg_stop_backup()</> completes.
5210        </para>
5211       </listitem>
5212
5213       <listitem>
5214        <para>
5215         When archiving is enabled, rotate the last WAL segment at shutdown
5216         so that all transactions can be archived immediately
5217         (Guillaume Smet, Heikki)
5218        </para>
5219       </listitem>
5220
5221       <listitem>
5222        <para>
5223         Delay <quote>smart</> shutdown while a continuous archiving base backup
5224         is in progress (Laurenz Albe)
5225        </para>
5226       </listitem>
5227
5228       <listitem>
5229        <para>
5230         Cancel a continuous archiving base backup if <quote>fast</> shutdown
5231         is requested (Laurenz Albe)
5232        </para>
5233       </listitem>
5234
5235       <listitem>
5236        <para>
5237         Allow <filename>recovery.conf</> boolean variables to take the
5238         same range of string values as <filename>postgresql.conf</>
5239         boolean variables
5240         (Bruce)
5241        </para>
5242       </listitem>
5243
5244      </itemizedlist>
5245
5246     </sect4>
5247
5248     <sect4>
5249      <title>Monitoring</title>
5250      <itemizedlist>
5251
5252       <listitem>
5253        <para>
5254         Add <function>pg_conf_load_time()</> to report when
5255         the <productname>PostgreSQL</> configuration files were last loaded
5256         (George Gensure)
5257        </para>
5258       </listitem>
5259
5260       <listitem>
5261        <para>
5262         Add <function>pg_terminate_backend()</> to safely terminate a
5263         backend (the <literal>SIGTERM</> signal works also) (Tom, Bruce)
5264        </para>
5265
5266        <para>
5267         While it's always been possible to <literal>SIGTERM</> a single
5268         backend, this was previously considered unsupported; and testing
5269         of the case found some bugs that are now fixed.
5270        </para>
5271       </listitem>
5272
5273       <listitem>
5274        <para>
5275         Add ability to track user-defined functions' call counts and
5276         runtimes (Martin Pihlak)
5277        </para>
5278
5279        <para>
5280         Function statistics appear in a new system view,
5281         <literal>pg_stat_user_functions</>.  Tracking is controlled
5282         by the new parameter <varname>track_functions</>.
5283        </para>
5284       </listitem>
5285
5286       <listitem>
5287        <para>
5288         Allow specification of the maximum query string size in
5289         <literal>pg_stat_activity</> via new
5290         <varname>track_activity_query_size</> parameter (Thomas Lee)
5291        </para>
5292       </listitem>
5293
5294       <listitem>
5295        <para>
5296         Increase the maximum line length sent to <application>syslog</>, in
5297         hopes of improving performance (Tom)
5298        </para>
5299       </listitem>
5300
5301       <listitem>
5302        <para>
5303         Add read-only configuration variables <varname>segment_size</>,
5304         <varname>wal_block_size</>, and <varname>wal_segment_size</>
5305         (Bernd Helmle)
5306        </para>
5307       </listitem>
5308
5309       <listitem>
5310        <para>
5311         When reporting a deadlock, report the text of all queries involved
5312         in the deadlock to the server log  (Itagaki Takahiro)
5313        </para>
5314       </listitem>
5315
5316       <listitem>
5317        <para>
5318         Add <function>pg_stat_get_activity(pid)</> function to return
5319         information about a specific process id (Magnus)
5320        </para>
5321       </listitem>
5322
5323       <listitem>
5324        <para>
5325         Allow the location of the server's statistics file to be specified
5326         via <varname>stats_temp_directory</> (Magnus)
5327        </para>
5328
5329        <para>
5330         This allows the statistics file to be placed in a
5331         <acronym>RAM</>-resident directory to reduce I/O requirements.
5332         On startup/shutdown, the file is copied to its traditional location
5333         (<literal>$PGDATA/global/</>) so it is preserved across restarts.
5334        </para>
5335       </listitem>
5336
5337      </itemizedlist>
5338
5339     </sect4>
5340
5341    </sect3>
5342
5343    <sect3>
5344     <title>Queries</title>
5345     <itemizedlist>
5346
5347      <listitem>
5348       <para>
5349        Add support for <literal>WINDOW</> functions (Hitoshi Harada)
5350       </para>
5351      </listitem>
5352
5353      <listitem>
5354       <para>
5355        Add support for <literal>WITH</> clauses (CTEs), including <literal>WITH
5356        RECURSIVE</> (Yoshiyuki Asaba, Tatsuo Ishii, Tom)
5357       </para>
5358      </listitem>
5359
5360      <listitem>
5361       <para>
5362        Add <command>TABLE</> command (Peter)
5363       </para>
5364
5365       <para>
5366        <literal>TABLE tablename</> is a SQL standard short-hand for
5367        <literal>SELECT * FROM tablename</>.
5368       </para>
5369      </listitem>
5370
5371      <listitem>
5372       <para>
5373        Allow <literal>AS</> to be optional when specifying a
5374        <command>SELECT</> (or <literal>RETURNING</>) column output
5375        label (Hiroshi Saito)
5376       </para>
5377
5378       <para>
5379        This works so long as the column label is not any
5380        <productname>PostgreSQL</> keyword; otherwise <literal>AS</> is still
5381        needed.
5382       </para>
5383      </listitem>
5384
5385      <listitem>
5386       <para>
5387        Support set-returning functions in <command>SELECT</> result lists
5388        even for functions that return their result via a tuplestore (Tom)
5389       </para>
5390
5391       <para>
5392        In particular, this means that functions written in PL/pgSQL
5393        and other PL languages can now be called this way.
5394       </para>
5395      </listitem>
5396
5397      <listitem>
5398       <para>
5399        Support set-returning functions in the output of aggregation
5400        and grouping queries (Tom)
5401       </para>
5402      </listitem>
5403
5404      <listitem>
5405       <para>
5406        Allow <command>SELECT FOR UPDATE</>/<literal>SHARE</> to work
5407        on inheritance trees (Tom)
5408       </para>
5409      </listitem>
5410
5411      <listitem>
5412       <para>
5413        Add infrastructure for <acronym>SQL/MED</> (Martin Pihlak,
5414        Peter)
5415       </para>
5416
5417       <para>
5418        There are no remote or external <acronym>SQL/MED</> capabilities
5419        yet, but this change provides a standardized and future-proof
5420        system for managing connection information for modules like
5421        <filename>dblink</> and <filename>plproxy</>.
5422       </para>
5423      </listitem>
5424
5425      <listitem>
5426       <para>
5427        Invalidate cached plans when referenced schemas, functions, operators,
5428        or operator classes are modified (Martin Pihlak, Tom)
5429       </para>
5430
5431       <para>
5432        This improves the system's ability to respond to on-the-fly
5433        DDL changes.
5434       </para>
5435      </listitem>
5436      <listitem>
5437       <para>
5438        Allow comparison of composite types and allow arrays of
5439        anonymous composite types (Tom)
5440       </para>
5441
5442       <para>
5443        This allows constructs such as
5444        <literal>row(1, 1.1) = any (array[row(7, 7.7), row(1, 1.0)])</>.
5445        This is particularly useful in recursive queries.
5446       </para>
5447      </listitem>
5448
5449      <listitem>
5450       <para>
5451        Add support for Unicode string literal and identifier specifications
5452        using code points, e.g. <literal>U&amp;'d\0061t\+000061'</>
5453        (Peter)
5454       </para>
5455      </listitem>
5456
5457      <listitem>
5458       <para>
5459        Reject <literal>\000</> in string literals and <command>COPY</> data
5460        (Tom)
5461       </para>
5462
5463       <para>
5464        Previously, this was accepted but had the effect of terminating
5465        the string contents.
5466       </para>
5467      </listitem>
5468
5469      <listitem>
5470       <para>
5471        Improve the parser's ability to report error locations (Tom)
5472       </para>
5473
5474       <para>
5475        An error location is now reported for many semantic errors,
5476        such as mismatched datatypes, that previously could not be localized.
5477       </para>
5478      </listitem>
5479
5480     </itemizedlist>
5481
5482     <sect4>
5483      <title><command>TRUNCATE</></title>
5484      <itemizedlist>
5485
5486       <listitem>
5487        <para>
5488         Support statement-level <literal>ON TRUNCATE</> triggers (Simon)
5489        </para>
5490       </listitem>
5491
5492       <listitem>
5493        <para>
5494         Add <literal>RESTART</>/<literal>CONTINUE IDENTITY</> options
5495         for <command>TRUNCATE TABLE</>
5496         (Zoltan Boszormenyi)
5497        </para>
5498
5499        <para>
5500         The start value of a sequence can be changed by <command>ALTER
5501         SEQUENCE START WITH</>.
5502        </para>
5503       </listitem>
5504
5505       <listitem>
5506        <para>
5507         Allow <command>TRUNCATE tab1, tab1</> to succeed (Bruce)
5508        </para>
5509       </listitem>
5510
5511       <listitem>
5512        <para>
5513         Add a separate <command>TRUNCATE</> permission (Robert Haas)
5514        </para>
5515       </listitem>
5516
5517      </itemizedlist>
5518
5519     </sect4>
5520
5521     <sect4>
5522      <title><command>EXPLAIN</></title>
5523      <itemizedlist>
5524
5525       <listitem>
5526        <para>
5527         Make <command>EXPLAIN VERBOSE</> show the output columns of each
5528         plan node (Tom)
5529        </para>
5530
5531        <para>
5532         Previously <command>EXPLAIN VERBOSE</> output an internal
5533         representation of the query plan.  (That behavior is now
5534         available via <varname>debug_print_plan</>.)
5535        </para>
5536       </listitem>
5537
5538       <listitem>
5539        <para>
5540         Make <command>EXPLAIN</> identify subplans and initplans with
5541         individual labels (Tom)
5542        </para>
5543       </listitem>
5544
5545       <listitem>
5546        <para>
5547         Make <command>EXPLAIN</> honor <varname>debug_print_plan</> (Tom)
5548        </para>
5549       </listitem>
5550
5551       <listitem>
5552        <para>
5553         Allow <command>EXPLAIN</> on <command>CREATE TABLE AS</> (Peter)
5554        </para>
5555       </listitem>
5556
5557      </itemizedlist>
5558
5559     </sect4>
5560
5561     <sect4>
5562      <title><literal>LIMIT</>/<literal>OFFSET</></title>
5563      <itemizedlist>
5564
5565       <listitem>
5566        <para>
5567         Allow sub-selects in <literal>LIMIT</> and <literal>OFFSET</> (Tom)
5568        </para>
5569       </listitem>
5570
5571       <listitem>
5572        <para>
5573         Add <acronym>SQL</>-standard syntax for
5574         <literal>LIMIT</>/<literal>OFFSET</> capabilities (Peter)
5575        </para>
5576
5577        <para>
5578         To wit,
5579         <literal>OFFSET num {ROW|ROWS} FETCH {FIRST|NEXT} [num] {ROW|ROWS}
5580         ONLY</>.
5581        </para>
5582       </listitem>
5583
5584      </itemizedlist>
5585
5586     </sect4>
5587
5588    </sect3>
5589
5590    <sect3>
5591     <title>Object Manipulation</title>
5592     <itemizedlist>
5593
5594      <listitem>
5595       <para>
5596        Add support for column-level privileges (Stephen Frost, KaiGai
5597        Kohei)
5598       </para>
5599      </listitem>
5600
5601      <listitem>
5602       <para>
5603        Refactor multi-object <command>DROP</> operations to reduce the
5604        need for <literal>CASCADE</> (Alex Hunsaker)
5605       </para>
5606
5607       <para>
5608        For example, if table <literal>B</> has a dependency on table
5609        <literal>A</>, the command <literal>DROP TABLE A, B</> no longer
5610        requires the <literal>CASCADE</> option.
5611       </para>
5612      </listitem>
5613
5614      <listitem>
5615       <para>
5616        Fix various problems with concurrent <command>DROP</> commands
5617        by ensuring that locks are taken before we begin to drop dependencies
5618        of an object (Tom)
5619       </para>
5620      </listitem>
5621
5622      <listitem>
5623       <para>
5624        Improve reporting of dependencies during <command>DROP</>
5625        commands (Tom)
5626       </para>
5627      </listitem>
5628
5629      <listitem>
5630       <para>
5631        Add <literal>WITH [NO] DATA</> clause to <command>CREATE TABLE
5632        AS</>, per the <acronym>SQL</> standard (Peter, Tom)
5633       </para>
5634      </listitem>
5635
5636      <listitem>
5637       <para>
5638        Add support for user-defined I/O conversion casts (Heikki)
5639       </para>
5640      </listitem>
5641
5642      <listitem>
5643       <para>
5644        Allow <command>CREATE AGGREGATE</> to use an <type>internal</>
5645        transition datatype (Tom)
5646       </para>
5647      </listitem>
5648
5649      <listitem>
5650       <para>
5651        Add <literal>LIKE</> clause to <command>CREATE TYPE</> (Tom)
5652       </para>
5653
5654       <para>
5655        This simplifies creation of data types that use the same internal
5656        representation as an existing type.
5657       </para>
5658      </listitem>
5659
5660      <listitem>
5661       <para>
5662        Allow specification of the type category and <quote>preferred</>
5663        status for user-defined base types (Tom)
5664       </para>
5665
5666       <para>
5667        This allows more control over the coercion behavior of user-defined
5668        types.
5669       </para>
5670      </listitem>
5671
5672      <listitem>
5673       <para>
5674        Allow <command>CREATE OR REPLACE VIEW</> to add columns to the
5675        end of a view (Robert Haas)
5676       </para>
5677      </listitem>
5678
5679     </itemizedlist>
5680
5681     <sect4>
5682      <title><command>ALTER</></title>
5683      <itemizedlist>
5684
5685       <listitem>
5686        <para>
5687         Add <command>ALTER TYPE RENAME</> (Petr Jelinek)
5688        </para>
5689       </listitem>
5690
5691       <listitem>
5692        <para>
5693         Add <command>ALTER SEQUENCE ... RESTART</> (with no parameter) to
5694         reset a sequence to its initial value (Zoltan Boszormenyi)
5695        </para>
5696       </listitem>
5697
5698       <listitem>
5699        <para>
5700         Modify the <command>ALTER TABLE</> syntax to allow all reasonable
5701         combinations for tables, indexes, sequences, and views (Tom)
5702        </para>
5703
5704        <para>
5705         This change allows the following new syntaxes:
5706
5707         <itemizedlist>
5708          <listitem>
5709           <para>
5710            <command>ALTER SEQUENCE OWNER TO</>
5711           </para>
5712          </listitem>
5713          <listitem>
5714           <para>
5715            <command>ALTER VIEW ALTER COLUMN SET/DROP DEFAULT</>
5716           </para>
5717          </listitem>
5718          <listitem>
5719           <para>
5720            <command>ALTER VIEW OWNER TO</>
5721           </para>
5722          </listitem>
5723          <listitem>
5724           <para>
5725            <command>ALTER VIEW SET SCHEMA</>
5726           </para>
5727          </listitem>
5728         </itemizedlist>
5729
5730         There is no actual new functionality here, but formerly
5731         you had to say <command>ALTER TABLE</> to do these things,
5732         which was confusing.
5733        </para>
5734       </listitem>
5735
5736       <listitem>
5737        <para>
5738         Add support for the syntax <command>ALTER TABLE ... ALTER COLUMN
5739         ... SET DATA TYPE</> (Peter)
5740        </para>
5741
5742        <para>
5743         This is <acronym>SQL</>-standard syntax for functionality that
5744         was already supported.
5745        </para>
5746       </listitem>
5747
5748       <listitem>
5749        <para>
5750         Make <command>ALTER TABLE SET WITHOUT OIDS</> rewrite the table
5751         to physically remove <type>OID</> values (Tom)
5752        </para>
5753
5754        <para>
5755         Also, add <command>ALTER TABLE SET WITH OIDS</> to rewrite the
5756         table to add <type>OID</>s.
5757        </para>
5758       </listitem>
5759
5760      </itemizedlist>
5761
5762     </sect4>
5763
5764     <sect4>
5765      <title>Database Manipulation</title>
5766      <itemizedlist>
5767
5768       <listitem>
5769        <para>
5770         Improve reporting of
5771         <command>CREATE</>/<command>DROP</>/<command>RENAME DATABASE</>
5772         failure when uncommitted prepared transactions are the cause
5773         (Tom)
5774        </para>
5775       </listitem>
5776
5777       <listitem>
5778        <para>
5779         Make <varname>LC_COLLATE</> and <varname>LC_CTYPE</> into
5780         per-database settings (Radek Strnad, Heikki)
5781        </para>
5782
5783        <para>
5784         This makes collation similar to encoding, which was always
5785         configurable per database.
5786        </para>
5787       </listitem>
5788
5789       <listitem>
5790        <para>
5791         Improve checks that the database encoding, collation
5792         (<varname>LC_COLLATE</>), and character classes
5793         (<varname>LC_CTYPE</>) match (Heikki, Tom)
5794        </para>
5795
5796        <para>
5797         Note in particular that a new database's encoding and locale
5798         settings can be changed only when copying from <literal>template0</>.
5799         This prevents possibly copying data that doesn't match the settings.
5800        </para>
5801       </listitem>
5802
5803       <listitem>
5804        <para>
5805         Add <command>ALTER DATABASE SET TABLESPACE</> to move a database
5806         to a new tablespace (Guillaume Lelarge, Bernd Helmle)
5807        </para>
5808       </listitem>
5809
5810      </itemizedlist>
5811
5812     </sect4>
5813
5814    </sect3>
5815
5816    <sect3>
5817     <title>Utility Operations</title>
5818
5819     <itemizedlist>
5820
5821      <listitem>
5822       <para>
5823        Add a <literal>VERBOSE</> option to the <command>CLUSTER</> command and
5824        <application>clusterdb</> (Jim Cox)
5825       </para>
5826      </listitem>
5827
5828      <listitem>
5829       <para>
5830        Decrease memory requirements for recording pending trigger
5831        events (Tom)
5832       </para>
5833      </listitem>
5834
5835     </itemizedlist>
5836
5837     <sect4>
5838      <title>Indexes</title>
5839      <itemizedlist>
5840
5841       <listitem>
5842        <para>
5843         Dramatically improve the speed of building and accessing hash
5844         indexes (Tom Raney, Shreya Bhargava)
5845        </para>
5846
5847        <para>
5848         This allows hash indexes to be sometimes faster than btree
5849         indexes.  However, hash indexes are still not crash-safe.
5850        </para>
5851       </listitem>
5852
5853       <listitem>
5854        <para>
5855         Make hash indexes store only the hash code, not the full value of
5856         the indexed column (Xiao Meng)
5857        </para>
5858
5859        <para>
5860         This greatly reduces the size of hash indexes for long indexed
5861         values, improving performance.
5862        </para>
5863       </listitem>
5864
5865       <listitem>
5866        <para>
5867         Implement fast update option for GIN indexes (Teodor, Oleg)
5868        </para>
5869
5870        <para>
5871         This option greatly improves update speed at a small penalty in search
5872         speed.
5873        </para>
5874       </listitem>
5875
5876       <listitem>
5877        <para>
5878         <literal>xxx_pattern_ops</> indexes can now be used for simple
5879         equality comparisons, not only for <literal>LIKE</> (Tom)
5880        </para>
5881       </listitem>
5882
5883      </itemizedlist>
5884
5885     </sect4>
5886
5887     <sect4>
5888      <title>Full Text Indexes</title>
5889      <itemizedlist>
5890
5891       <listitem>
5892        <para>
5893         Remove the requirement to use <literal>@@@</> when doing
5894         <acronym>GIN</> weighted lookups on full text indexes (Tom, Teodor)
5895        </para>
5896
5897        <para>
5898         The normal <literal>@@</> text search operator can be used
5899         instead.
5900        </para>
5901       </listitem>
5902
5903       <listitem>
5904        <para>
5905         Add an optimizer selectivity function for <literal>@@</> text
5906         search operations (Jan Urbanski)
5907        </para>
5908       </listitem>
5909
5910       <listitem>
5911        <para>
5912         Allow prefix matching in full text searches (Teodor Sigaev,
5913         Oleg Bartunov)
5914        </para>
5915       </listitem>
5916
5917       <listitem>
5918        <para>
5919         Support multi-column <acronym>GIN</> indexes (Teodor Sigaev)
5920        </para>
5921       </listitem>
5922
5923       <listitem>
5924        <para>
5925         Improve support for Nepali language and Devanagari alphabet (Teodor)
5926        </para>
5927       </listitem>
5928
5929      </itemizedlist>
5930
5931     </sect4>
5932
5933     <sect4>
5934      <title><command>VACUUM</></title>
5935      <itemizedlist>
5936
5937       <listitem>
5938        <para>
5939         Track free space in separate per-relation <quote>fork</> files (Heikki)
5940        </para>
5941
5942        <para>
5943         Free space discovered by <command>VACUUM</> is now recorded in
5944         <filename>*_fsm</> files, rather than in a fixed-sized shared memory
5945         area.  The <varname>max_fsm_pages</> and <varname>max_fsm_relations</>
5946         settings have been removed, greatly simplifying administration of
5947         free space management.
5948        </para>
5949       </listitem>
5950
5951       <listitem>
5952        <para>
5953         Add a visibility map to track pages that do not require
5954         vacuuming (Heikki)
5955        </para>
5956
5957        <para>
5958         This allows <command>VACUUM</> to avoid scanning all of
5959         a table when only a portion of the table needs vacuuming.
5960         The visibility map is stored in per-relation <quote>fork</> files.
5961        </para>
5962       </listitem>
5963
5964       <listitem>
5965        <para>
5966         Add <varname>vacuum_freeze_table_age</> parameter to control
5967         when <command>VACUUM</> should ignore the visibility map and
5968         do a full table scan to freeze tuples (Heikki)
5969        </para>
5970       </listitem>
5971
5972       <listitem>
5973        <para>
5974         Track transaction snapshots more carefully (Alvaro)
5975        </para>
5976
5977        <para>
5978         This improves <command>VACUUM</>'s ability to reclaim space
5979         in the presence of long-running transactions.
5980        </para>
5981       </listitem>
5982
5983       <listitem>
5984        <para>
5985         Add ability to specify per-relation autovacuum and <acronym>TOAST</>
5986         parameters in <command>CREATE TABLE</> (Alvaro, Euler Taveira de
5987         Oliveira)
5988        </para>
5989
5990        <para>
5991         Autovacuum options used to be stored in a system table.
5992        </para>
5993       </listitem>
5994
5995       <listitem>
5996        <para>
5997         Add <literal>--freeze</> option to <application>vacuumdb</>
5998         (Bruce)
5999        </para>
6000       </listitem>
6001
6002      </itemizedlist>
6003
6004     </sect4>
6005
6006    </sect3>
6007
6008    <sect3>
6009     <title>Data Types</title>
6010     <itemizedlist>
6011
6012      <listitem>
6013       <para>
6014        Add a <literal>CaseSensitive</> option for text search synonym
6015        dictionaries (Simon)
6016       </para>
6017      </listitem>
6018
6019      <listitem>
6020       <para>
6021        Improve the precision of <type>NUMERIC</> division (Tom)
6022       </para>
6023      </listitem>
6024
6025      <listitem>
6026       <para>
6027        Add basic arithmetic operators for <type>int2</> with <type>int8</>
6028        (Tom)
6029       </para>
6030
6031       <para>
6032        This eliminates the need for explicit casting in some situations.
6033       </para>
6034      </listitem>
6035
6036      <listitem>
6037       <para>
6038        Allow <type>UUID</> input to accept an optional hyphen after
6039        every fourth digit (Robert Haas)
6040       </para>
6041      </listitem>
6042
6043      <listitem>
6044       <para>
6045        Allow <literal>on</>/<literal>off</> as input for the boolean data type
6046        (Itagaki Takahiro)
6047       </para>
6048      </listitem>
6049
6050      <listitem>
6051       <para>
6052        Allow spaces around <literal>NaN</> in the input string for
6053        type <type>numeric</> (Sam Mason)
6054       </para>
6055      </listitem>
6056
6057     </itemizedlist>
6058
6059     <sect4>
6060      <title>Temporal Data Types</title>
6061      <itemizedlist>
6062
6063       <listitem>
6064        <para>
6065         Reject year <literal>0 BC</> and years <literal>000</> and
6066         <literal>0000</> (Tom)
6067        </para>
6068
6069        <para>
6070         Previously these were interpreted as <literal>1 BC</>.
6071         (Note: years <literal>0</> and <literal>00</> are still assumed to be
6072         the year 2000.)
6073        </para>
6074       </listitem>
6075
6076       <listitem>
6077        <para>
6078         Include <literal>SGT</> (Singapore time) in the default list of
6079         known time zone abbreviations (Tom)
6080        </para>
6081       </listitem>
6082
6083       <listitem>
6084        <para>
6085         Support <literal>infinity</> and <literal>-infinity</> as
6086         values of type <type>date</> (Tom)
6087        </para>
6088       </listitem>
6089
6090       <listitem>
6091        <para>
6092         Make parsing of <type>interval</> literals more standard-compliant
6093         (Tom, Ron Mayer)
6094        </para>
6095
6096        <para>
6097         For example, <literal>INTERVAL '1' YEAR</> now does what it's
6098         supposed to.
6099        </para>
6100       </listitem>
6101
6102       <listitem>
6103        <para>
6104         Allow <type>interval</> fractional-seconds precision to be specified
6105         after the <literal>second</> keyword, for <acronym>SQL</> standard
6106         compliance (Tom)
6107        </para>
6108
6109        <para>
6110         Formerly the precision had to be specified after the keyword
6111         <type>interval</>.  (For backwards compatibility, this syntax is still
6112         supported, though deprecated.)  Data type definitions will now be
6113         output using the standard format.
6114        </para>
6115       </listitem>
6116
6117       <listitem>
6118        <para>
6119         Support the <acronym>IS0 8601</> <type>interval</> syntax (Ron
6120         Mayer, Kevin Grittner)
6121        </para>
6122
6123        <para>
6124         For example, <literal>INTERVAL 'P1Y2M3DT4H5M6.7S'</> is now
6125         supported.
6126        </para>
6127       </listitem>
6128
6129       <listitem>
6130        <para>
6131         Add <varname>IntervalStyle</> parameter
6132         which controls how <type>interval</> values are output (Ron Mayer)
6133        </para>
6134
6135        <para>
6136         Valid values are:  <literal>postgres</>, <literal>postgres_verbose</>,
6137         <literal>sql_standard</>, <literal>iso_8601</>.  This setting also
6138         controls the handling of negative <type>interval</> input when only
6139         some fields have positive/negative designations.
6140        </para>
6141       </listitem>
6142
6143       <listitem>
6144        <para>
6145         Improve consistency of handling of fractional seconds in
6146         <type>timestamp</> and <type>interval</> output (Ron Mayer)
6147        </para>
6148       </listitem>
6149
6150      </itemizedlist>
6151
6152     </sect4>
6153
6154     <sect4>
6155      <title>Arrays</title>
6156      <itemizedlist>
6157
6158       <listitem>
6159        <para>
6160         Improve the handling of casts applied to <literal>ARRAY[]</>
6161         constructs, such as <literal>ARRAY[...]::integer[]</>
6162         (Brendan Jurd)
6163        </para>
6164
6165        <para>
6166         Formerly <productname>PostgreSQL</> attempted to determine a data type
6167         for the <literal>ARRAY[]</> construct without reference to the ensuing
6168         cast.  This could fail unnecessarily in many cases, in particular when
6169         the <literal>ARRAY[]</> construct was empty or contained only
6170         ambiguous entries such as <literal>NULL</>.  Now the cast is consulted
6171         to determine the type that the array elements must be.
6172        </para>
6173       </listitem>
6174
6175       <listitem>
6176        <para>
6177         Make <acronym>SQL</>-syntax <type>ARRAY</> dimensions optional
6178         to match the <acronym>SQL</> standard (Peter)
6179        </para>
6180       </listitem>
6181
6182       <listitem>
6183        <para>
6184         Add <function>array_ndims()</> to return the number
6185         of dimensions of an array (Robert Haas)
6186        </para>
6187       </listitem>
6188
6189       <listitem>
6190        <para>
6191         Add <function>array_length()</> to return the length
6192         of an array for a specified dimension (Jim Nasby, Robert
6193         Haas, Peter Eisentraut)
6194        </para>
6195       </listitem>
6196
6197       <listitem>
6198        <para>
6199         Add aggregate function <function>array_agg()</>, which
6200         returns all aggregated values as a single array (Robert Haas,
6201         Jeff Davis, Peter)
6202        </para>
6203       </listitem>
6204
6205       <listitem>
6206        <para>
6207         Add <function>unnest()</>, which converts an array to
6208         individual row values (Tom)
6209        </para>
6210
6211        <para>
6212         This is the opposite of <function>array_agg()</>.
6213        </para>
6214       </listitem>
6215
6216       <listitem>
6217        <para>
6218         Add <function>array_fill()</> to create arrays initialized with
6219         a value (Pavel Stehule)
6220        </para>
6221       </listitem>
6222
6223       <listitem>
6224        <para>
6225         Add <function>generate_subscripts()</> to simplify generating
6226         the range of an array's subscripts (Pavel Stehule)
6227        </para>
6228       </listitem>
6229
6230      </itemizedlist>
6231
6232     </sect4>
6233
6234     <sect4>
6235      <title>Wide-Value Storage (<acronym>TOAST</>)</title>
6236      <itemizedlist>
6237
6238       <listitem>
6239        <para>
6240         Consider <acronym>TOAST</> compression on values as short as
6241         32 bytes (previously 256 bytes) (Greg Stark)
6242        </para>
6243       </listitem>
6244
6245       <listitem>
6246        <para>
6247         Require 25% minimum space savings before using <acronym>TOAST</>
6248         compression (previously 20% for small values and any-savings-at-all
6249         for large values) (Greg)
6250        </para>
6251       </listitem>
6252
6253       <listitem>
6254        <para>
6255         Improve <acronym>TOAST</> heuristics for rows that have a mix of large
6256         and small toastable fields, so that we prefer to push large values out
6257         of line and don't compress small values unnecessarily (Greg, Tom)
6258        </para>
6259       </listitem>
6260
6261      </itemizedlist>
6262
6263     </sect4>
6264
6265    </sect3>
6266
6267    <sect3>
6268     <title>Functions</title>
6269     <itemizedlist>
6270
6271      <listitem>
6272       <para>
6273        Document that <function>setseed()</> allows values from
6274        <literal>-1</> to <literal>1</> (not just <literal>0</> to
6275        <literal>1</>), and enforce the valid range (Kris Jurka)
6276       </para>
6277      </listitem>
6278
6279      <listitem>
6280       <para>
6281        Add server-side function <function>lo_import(filename, oid)</>
6282        (Tatsuo)
6283       </para>
6284      </listitem>
6285
6286      <listitem>
6287       <para>
6288        Add <function>quote_nullable()</>, which behaves like
6289        <function>quote_literal()</> but returns the string <literal>NULL</> for
6290        a null argument (Brendan Jurd)
6291       </para>
6292      </listitem>
6293
6294      <listitem>
6295       <para>
6296        Improve full text search <function>headline()</> function to
6297        allow extracting several fragments of text (Sushant Sinha)
6298       </para>
6299      </listitem>
6300
6301      <listitem>
6302       <para>
6303        Add <function>suppress_redundant_updates_trigger()</> trigger
6304        function to avoid overhead for non-data-changing updates (Andrew)
6305       </para>
6306      </listitem>
6307
6308      <listitem>
6309       <para>
6310        Add <function>div(numeric, numeric)</> to perform <type>numeric</>
6311        division without rounding (Tom)
6312       </para>
6313      </listitem>
6314
6315      <listitem>
6316       <para>
6317        Add <type>timestamp</> and <type>timestamptz</> versions of
6318        <function>generate_series()</> (Hitoshi Harada)
6319       </para>
6320      </listitem>
6321
6322     </itemizedlist>
6323
6324     <sect4>
6325      <title>Object Information Functions</title>
6326      <itemizedlist>
6327
6328       <listitem>
6329        <para>
6330         Implement <function>current_query()</> for use by functions
6331         that need to know the currently running query (Tomas Doran)
6332        </para>
6333       </listitem>
6334
6335       <listitem>
6336        <para>
6337         Add <function>pg_get_keywords()</> to return a list of the
6338         parser keywords (Dave Page)
6339        </para>
6340       </listitem>
6341
6342       <listitem>
6343        <para>
6344         Add <function>pg_get_functiondef()</> to see a function's
6345         definition (Abhijit Menon-Sen)
6346        </para>
6347       </listitem>
6348
6349       <listitem>
6350        <para>
6351         Allow the second argument of <function>pg_get_expr()</> to be zero
6352         when deparsing an expression that does not contain variables (Tom)
6353        </para>
6354       </listitem>
6355
6356       <listitem>
6357        <para>
6358         Modify <function>pg_relation_size()</> to use <literal>regclass</>
6359         (Heikki)
6360        </para>
6361
6362        <para>
6363         <function>pg_relation_size(data_type_name)</> no longer works.
6364        </para>
6365       </listitem>
6366
6367       <listitem>
6368        <para>
6369         Add <literal>boot_val</> and <literal>reset_val</> columns to
6370         <literal>pg_settings</> output (Greg Smith)
6371        </para>
6372       </listitem>
6373
6374       <listitem>
6375        <para>
6376         Add source file name and line number columns to
6377         <literal>pg_settings</> output for variables set in a configuration
6378         file (Magnus, Alvaro)
6379        </para>
6380
6381        <para>
6382         For security reasons, these columns are only visible to superusers.
6383        </para>
6384       </listitem>
6385
6386       <listitem>
6387        <para>
6388         Add support for <varname>CURRENT_CATALOG</>,
6389         <varname>CURRENT_SCHEMA</>, <varname>SET CATALOG</>, <varname>SET
6390         SCHEMA</> (Peter)
6391        </para>
6392
6393        <para>
6394         These provide <acronym>SQL</>-standard syntax for existing features.
6395        </para>
6396       </listitem>
6397
6398       <listitem>
6399        <para>
6400         Add <function>pg_typeof()</> which returns the data type
6401         of any value (Brendan Jurd)
6402        </para>
6403       </listitem>
6404
6405       <listitem>
6406        <para>
6407         Make <function>version()</> return information about whether
6408         the server is a 32- or 64-bit binary (Bruce)
6409        </para>
6410       </listitem>
6411
6412       <listitem>
6413        <para>
6414         Fix the behavior of information schema columns
6415         <structfield>is_insertable_into</> and <structfield>is_updatable</> to
6416         be consistent (Peter)
6417        </para>
6418       </listitem>
6419
6420       <listitem>
6421        <para>
6422         Improve the behavior of information schema
6423         <structfield>datetime_precision</> columns (Peter)
6424        </para>
6425
6426        <para>
6427         These columns now show zero for <type>date</> columns, and 6
6428         (the default precision) for <type>time</>, <type>timestamp</>, and
6429         <type>interval</> without a declared precision, rather than showing
6430         null as formerly.
6431        </para>
6432       </listitem>
6433
6434       <listitem>
6435        <para>
6436         Convert remaining builtin set-returning functions to use
6437         <literal>OUT</> parameters (Jaime Casanova)
6438        </para>
6439
6440        <para>
6441         This makes it possible to call these functions without specifying
6442         a column list:  <function>pg_show_all_settings()</>,
6443         <function>pg_lock_status()</>, <function>pg_prepared_xact()</>,
6444         <function>pg_prepared_statement()</>, <function>pg_cursor()</>
6445        </para>
6446       </listitem>
6447
6448       <listitem>
6449        <para>
6450         Make <function>pg_*_is_visible()</> and
6451         <function>has_*_privilege()</> functions return <literal>NULL</>
6452         for invalid OIDs, rather than reporting an error (Tom)
6453        </para>
6454       </listitem>
6455
6456       <listitem>
6457        <para>
6458         Extend <function>has_*_privilege()</> functions to allow inquiring
6459         about the OR of multiple privileges in one call (Stephen
6460         Frost, Tom)
6461        </para>
6462       </listitem>
6463
6464       <listitem>
6465        <para>
6466         Add <function>has_column_privilege()</> and
6467         <function>has_any_column_privilege()</> functions (Stephen
6468         Frost, Tom)
6469        </para>
6470       </listitem>
6471
6472      </itemizedlist>
6473
6474     </sect4>
6475
6476     <sect4>
6477      <title>Function Creation</title>
6478      <itemizedlist>
6479
6480       <listitem>
6481        <para>
6482         Support variadic functions (functions with a variable number
6483         of arguments) (Pavel Stehule)
6484        </para>
6485
6486        <para>
6487         Only trailing arguments can be optional, and they all must be
6488         of the same data type.
6489        </para>
6490       </listitem>
6491
6492       <listitem>
6493        <para>
6494         Support default values for function arguments (Pavel Stehule)
6495        </para>
6496       </listitem>
6497
6498       <listitem>
6499        <para>
6500         Add <command>CREATE FUNCTION ... RETURNS TABLE</> clause (Pavel
6501         Stehule)
6502        </para>
6503       </listitem>
6504
6505       <listitem>
6506        <para>
6507         Allow <acronym>SQL</>-language functions to return the output
6508         of an <command>INSERT</>/<command>UPDATE</>/<command>DELETE</>
6509         <literal>RETURNING</> clause (Tom)
6510        </para>
6511       </listitem>
6512
6513      </itemizedlist>
6514
6515     </sect4>
6516
6517     <sect4>
6518      <title>PL/pgSQL Server-Side Language</title>
6519      <itemizedlist>
6520
6521       <listitem>
6522        <para>
6523         Support <literal>EXECUTE USING</> for easier insertion of data
6524         values into a dynamic query string (Pavel Stehule)
6525        </para>
6526       </listitem>
6527
6528       <listitem>
6529        <para>
6530         Allow looping over the results of a cursor using a <literal>FOR</>
6531         loop (Pavel Stehule)
6532        </para>
6533       </listitem>
6534
6535       <listitem>
6536        <para>
6537         Support <literal>RETURN QUERY EXECUTE</> (Pavel
6538         Stehule)
6539        </para>
6540       </listitem>
6541
6542       <listitem>
6543        <para>
6544         Improve the <literal>RAISE</> command (Pavel Stehule)
6545
6546         <itemizedlist>
6547          <listitem>
6548           <para>
6549            Support <literal>DETAIL</> and <literal>HINT</> fields
6550           </para>
6551          </listitem>
6552          <listitem>
6553           <para>
6554            Support specification of the <literal>SQLSTATE</> error code
6555           </para>
6556          </listitem>
6557          <listitem>
6558           <para>
6559            Support an exception name parameter
6560           </para>
6561          </listitem>
6562          <listitem>
6563           <para>
6564            Allow <literal>RAISE</> without parameters in an exception
6565            block to re-throw the current error
6566           </para>
6567          </listitem>
6568         </itemizedlist>
6569        </para>
6570       </listitem>
6571
6572       <listitem>
6573        <para>
6574         Allow specification of <varname>SQLSTATE</> codes
6575         in <literal>EXCEPTION</> lists (Pavel Stehule)
6576        </para>
6577
6578        <para>
6579         This is useful for handling custom <varname>SQLSTATE</> codes.
6580        </para>
6581       </listitem>
6582
6583       <listitem>
6584        <para>
6585         Support the <literal>CASE</> statement (Pavel Stehule)
6586        </para>
6587       </listitem>
6588
6589       <listitem>
6590        <para>
6591         Make <command>RETURN QUERY</> set the special <literal>FOUND</> and
6592         <command>GET DIAGNOSTICS</> <literal>ROW_COUNT</> variables
6593         (Pavel Stehule)
6594        </para>
6595       </listitem>
6596
6597       <listitem>
6598        <para>
6599         Make <command>FETCH</> and <command>MOVE</> set the
6600         <command>GET DIAGNOSTICS</> <literal>ROW_COUNT</> variable
6601         (Andrew Gierth)
6602        </para>
6603       </listitem>
6604
6605       <listitem>
6606        <para>
6607         Make <command>EXIT</> without a label always exit the innermost
6608         loop (Tom)
6609        </para>
6610
6611        <para>
6612         Formerly, if there were a <literal>BEGIN</> block more closely nested
6613         than any loop, it would exit that block instead.  The new behavior
6614         matches Oracle(TM) and is also what was previously stated by our own
6615         documentation.
6616        </para>
6617       </listitem>
6618
6619       <listitem>
6620        <para>
6621         Make processing of string literals and nested block comments
6622         match the main SQL parser's processing (Tom)
6623        </para>
6624
6625        <para>
6626         In particular, the format string in <command>RAISE</> now works
6627         the same as any other string literal, including being subject
6628         to <varname>standard_conforming_strings</>.  This change also
6629         fixes other cases in which valid commands would fail when
6630         <varname>standard_conforming_strings</> is on.
6631        </para>
6632       </listitem>
6633
6634       <listitem>
6635        <para>
6636         Avoid memory leakage when the same function is called at varying
6637         exception-block nesting depths (Tom)
6638        </para>
6639       </listitem>
6640
6641      </itemizedlist>
6642
6643     </sect4>
6644
6645    </sect3>
6646
6647    <sect3>
6648     <title>Client Applications</title>
6649
6650     <itemizedlist>
6651
6652      <listitem>
6653       <para>
6654        Fix <literal>pg_ctl restart</> to preserve command-line arguments
6655        (Bruce)
6656       </para>
6657      </listitem>
6658
6659      <listitem>
6660       <para>
6661        Add <literal>-w</>/<literal>--no-password</> option that
6662        prevents password prompting in all utilities that have a
6663        <literal>-W</>/<literal>--password</> option (Peter)
6664       </para>
6665      </listitem>
6666
6667      <listitem>
6668       <para>
6669        Remove <option>-q</> (quiet) option of <application>createdb</>,
6670        <application>createuser</>, <application>dropdb</>,
6671        <application>dropuser</> (Peter)
6672       </para>
6673
6674       <para>
6675        These options have had no effect since <productname>PostgreSQL</>
6676        8.3.
6677       </para>
6678      </listitem>
6679
6680     </itemizedlist>
6681
6682     <sect4>
6683      <title><application>psql</></title>
6684      <itemizedlist>
6685
6686       <listitem>
6687        <para>
6688         Remove verbose startup banner; now just suggest <literal>help</>
6689         (Joshua Drake)
6690        </para>
6691       </listitem>
6692
6693       <listitem>
6694        <para>
6695         Make <literal>help</> show common backslash commands (Greg
6696         Sabino Mullane)
6697        </para>
6698       </listitem>
6699
6700       <listitem>
6701        <para>
6702         Add <literal>\pset format wrapped</> mode to wrap output to the
6703         screen width, or file/pipe output too if <literal>\pset columns</>
6704         is set (Bryce Nesbitt)
6705        </para>
6706       </listitem>
6707
6708       <listitem>
6709        <para>
6710         Allow all supported spellings of boolean values in <command>\pset</>,
6711         rather than just <literal>on</> and <literal>off</> (Bruce)
6712        </para>
6713
6714        <para>
6715         Formerly, any string other than <quote>off</> was silently taken
6716         to mean <literal>true</>.  <application>psql</> will now complain
6717         about unrecognized spellings (but still take them as <literal>true</>).
6718        </para>
6719       </listitem>
6720
6721       <listitem>
6722        <para>
6723         Use the pager for wide output (Bruce)
6724        </para>
6725       </listitem>
6726
6727       <listitem>
6728        <para>
6729         Require a space between a one-letter backslash command and its first
6730         argument (Bernd Helmle)
6731        </para>
6732
6733        <para>
6734         This removes a historical source of ambiguity.
6735        </para>
6736       </listitem>
6737
6738       <listitem>
6739        <para>
6740         Improve tab completion support for schema-qualified and
6741         quoted identifiers (Greg Sabino Mullane)
6742        </para>
6743       </listitem>
6744
6745       <listitem>
6746        <para>
6747         Add optional <literal>on</>/<literal>off</> argument for
6748         <command>\timing</> (David Fetter)
6749        </para>
6750       </listitem>
6751
6752       <listitem>
6753        <para>
6754         Display access control rights on multiple lines (Brendan
6755         Jurd, Andreas Scherbaum)
6756        </para>
6757       </listitem>
6758
6759       <listitem>
6760        <para>
6761         Make <command>\l</> show database access privileges (Andrew Gilligan)
6762        </para>
6763       </listitem>
6764
6765       <listitem>
6766        <para>
6767         Make <command>\l+</> show database sizes, if permissions
6768         allow (Andrew Gilligan)
6769        </para>
6770       </listitem>
6771
6772       <listitem>
6773        <para>
6774         Add the <command>\ef</> command to edit function definitions
6775         (Abhijit Menon-Sen)
6776        </para>
6777       </listitem>
6778
6779      </itemizedlist>
6780
6781     </sect4>
6782
6783     <sect4>
6784      <title><application>psql</> \d* commands</title>
6785
6786      <itemizedlist>
6787
6788       <listitem>
6789        <para>
6790         Make <command>\d*</> commands that do not have a pattern argument
6791         show system objects only if the <literal>S</> modifier is specified
6792         (Greg Sabino Mullane, Bruce)
6793        </para>
6794
6795        <para>
6796         The former behavior was inconsistent across different variants
6797         of <command>\d</>, and in most cases it provided no easy way to see
6798         just user objects.
6799        </para>
6800       </listitem>
6801
6802       <listitem>
6803        <para>
6804         Improve <command>\d*</> commands to work with older
6805         <productname>PostgreSQL</> server versions (back to 7.4),
6806         not only the current server version
6807         (Guillaume Lelarge)
6808        </para>
6809       </listitem>
6810
6811       <listitem>
6812        <para>
6813         Make <command>\d</> show foreign-key constraints that reference
6814         the selected table (Kenneth D'Souza)
6815        </para>
6816       </listitem>
6817
6818       <listitem>
6819        <para>
6820         Make <command>\d</> on a sequence show its column values
6821         (Euler Taveira de Oliveira)
6822        </para>
6823       </listitem>
6824
6825       <listitem>
6826        <para>
6827         Add column storage type and other relation options to the
6828         <command>\d+</> display (Gregory Stark, Euler Taveira de
6829         Oliveira)
6830        </para>
6831       </listitem>
6832
6833       <listitem>
6834        <para>
6835         Show relation size in <command>\dt+</> output (Dickson S.
6836         Guedes)
6837        </para>
6838       </listitem>
6839
6840       <listitem>
6841        <para>
6842         Show the possible values of <literal>enum</> types in <command>\dT+</>
6843         (David Fetter)
6844        </para>
6845       </listitem>
6846
6847       <listitem>
6848        <para>
6849         Allow <command>\dC</> to accept a wildcard pattern, which matches
6850         either datatype involved in the cast (Tom)
6851        </para>
6852       </listitem>
6853
6854       <listitem>
6855        <para>
6856         Add a function type column to <command>\df</>'s output, and add
6857         options to list only selected types of functions (David Fetter)
6858        </para>
6859       </listitem>
6860
6861       <listitem>
6862        <para>
6863         Make <command>\df</> not hide functions that take or return
6864         type <type>cstring</> (Tom)
6865        </para>
6866
6867        <para>
6868         Previously, such functions were hidden because most of them are
6869         datatype I/O functions, which were deemed uninteresting.  The new
6870         policy about hiding system functions by default makes this wart
6871         unnecessary.
6872        </para>
6873       </listitem>
6874
6875      </itemizedlist>
6876
6877     </sect4>
6878
6879     <sect4>
6880      <title><application>pg_dump</></title>
6881      <itemizedlist>
6882
6883       <listitem>
6884        <para>
6885         Add a <literal>--no-tablespaces</> option to
6886         <application>pg_dump</>/<application>pg_dumpall</>/<application>pg_restore</>
6887         so that dumps can be restored to clusters that have non-matching
6888         tablespace layouts (Gavin Roy)
6889        </para>
6890       </listitem>
6891
6892       <listitem>
6893        <para>
6894         Remove <option>-d</> and <option>-D</> options from
6895         <application>pg_dump</> and <application>pg_dumpall</> (Tom)
6896        </para>
6897
6898        <para>
6899         These options were too frequently confused with the option to
6900         select a database name in other <productname>PostgreSQL</>
6901         client applications.  The functionality is still available,
6902         but you must now spell out the long option name
6903         <option>--inserts</> or <option>--column-inserts</>.
6904        </para>
6905       </listitem>
6906
6907       <listitem>
6908        <para>
6909         Remove <option>-i</>/<option>--ignore-version</> option from
6910         <application>pg_dump</> and <application>pg_dumpall</> (Tom)
6911        </para>
6912
6913        <para>
6914         Use of this option does not throw an error, but it has no
6915         effect.  This option was removed because the version checks
6916         are necessary for safety.
6917        </para>
6918       </listitem>
6919
6920       <listitem>
6921        <para>
6922         Disable <varname>statement_timeout</> during dump and restore
6923         (Joshua Drake)
6924        </para>
6925       </listitem>
6926
6927       <listitem>
6928        <para>
6929         Add <application>pg_dump</>/<application>pg_dumpall</> option
6930         <option>--lock-wait-timeout</> (David Gould)
6931        </para>
6932
6933        <para>
6934         This allows dumps to fail if unable to acquire a shared lock
6935         within the specified amount of time.
6936        </para>
6937       </listitem>
6938
6939       <listitem>
6940        <para>
6941         Reorder <application>pg_dump</> <literal>--data-only</> output
6942         to dump tables referenced by foreign keys before
6943         the referencing tables (Tom)
6944        </para>
6945
6946        <para>
6947         This allows data loads when foreign keys are already present.
6948         If circular references make a safe ordering impossible, a
6949         <literal>NOTICE</> is issued.
6950        </para>
6951       </listitem>
6952
6953       <listitem>
6954        <para>
6955         Allow <application>pg_dump</>, <application>pg_dumpall</>, and
6956         <application>pg_restore</> to use a specified role (Benedek
6957         L&aacute;szl&oacute;)
6958        </para>
6959       </listitem>
6960
6961       <listitem>
6962        <para>
6963         Allow <application>pg_restore</> to use multiple concurrent
6964         connections to do the restore (Andrew)
6965        </para>
6966
6967        <para>
6968         The number of concurrent connections is controlled by the option
6969         <literal>--jobs</>.  This is supported only for custom-format archives.
6970        </para>
6971       </listitem>
6972
6973      </itemizedlist>
6974
6975     </sect4>
6976
6977    </sect3>
6978
6979    <sect3>
6980     <title>Programming Tools</title>
6981
6982     <sect4>
6983      <title><application>libpq</></title>
6984      <itemizedlist>
6985
6986       <listitem>
6987        <para>
6988         Allow the <type>OID</> to be specified when importing a large
6989         object, via new function <function>lo_import_with_oid()</> (Tatsuo)
6990        </para>
6991       </listitem>
6992
6993       <listitem>
6994        <para>
6995         Add <quote>events</> support (Andrew Chernow, Merlin Moncure)
6996        </para>
6997
6998        <para>
6999         This adds the ability to register callbacks to manage private
7000         data associated with <structname>PGconn</> and <structname>PGresult</>
7001         objects.
7002        </para>
7003       </listitem>
7004
7005       <listitem>
7006        <para>
7007         Improve error handling to allow the return of multiple
7008         error messages as multi-line error reports (Magnus)
7009        </para>
7010       </listitem>
7011
7012       <listitem>
7013        <para>
7014         Make <function>PQexecParams()</> and related functions return
7015         <varname>PGRES_EMPTY_QUERY</> for an empty query (Tom)
7016        </para>
7017
7018        <para>
7019         They previously returned <varname>PGRES_COMMAND_OK</>.
7020        </para>
7021       </listitem>
7022
7023       <listitem>
7024        <para>
7025         Document how to avoid the overhead of <function>WSACleanup()</>
7026         on Windows (Andrew Chernow)
7027        </para>
7028       </listitem>
7029
7030       <listitem>
7031        <para>
7032         Do not rely on Kerberos tickets to determine the default database
7033         username (Magnus)
7034        </para>
7035
7036        <para>
7037         Previously, a Kerberos-capable build of libpq would use the
7038         principal name from any available Kerberos ticket as default
7039         database username, even if the connection wasn't using Kerberos
7040         authentication.  This was deemed inconsistent and confusing.
7041         The default username is now determined the same way with or
7042         without Kerberos.  Note however that the database username must still
7043         match the ticket when Kerberos authentication is used.
7044        </para>
7045       </listitem>
7046      </itemizedlist>
7047
7048     </sect4>
7049
7050     <sect4>
7051      <title><application>libpq</> <acronym>SSL</> (Secure Sockets Layer)
7052       support</title>
7053      <itemizedlist>
7054
7055       <listitem>
7056        <para>
7057         Fix certificate validation for <acronym>SSL</> connections
7058         (Magnus)
7059        </para>
7060
7061        <para>
7062         <application>libpq</> now supports verifying both the certificate
7063         and the name of the server when making <acronym>SSL</>
7064         connections. If a root certificate is not available to use for
7065         verification, <acronym>SSL</> connections will fail. The
7066         <literal>sslmode</> parameter is used to enable certificate
7067         verification and set the level of checking.
7068         The default is still not to do any verification, allowing connections
7069         to SSL-enabled servers without requiring a root certificate on the
7070         client.
7071        </para>
7072       </listitem>
7073
7074       <listitem>
7075        <para>
7076         Support wildcard server certificates (Magnus)
7077        </para>
7078
7079        <para>
7080         If a certificate <acronym>CN</> starts with <literal>*</>, it will
7081         be treated as a wildcard when matching the hostname, allowing the
7082         use of the same certificate for multiple servers.
7083        </para>
7084       </listitem>
7085
7086       <listitem>
7087        <para>
7088         Allow the file locations for client certificates to be specified
7089         (Mark Woodward, Alvaro, Magnus)
7090        </para>
7091       </listitem>
7092
7093       <listitem>
7094        <para>
7095         Add a <function>PQinitOpenSSL</> function to allow greater control
7096         over OpenSSL/libcrypto initialization (Andrew Chernow)
7097        </para>
7098       </listitem>
7099
7100       <listitem>
7101        <para>
7102         Make <application>libpq</> unregister its <application>OpenSSL</>
7103         callbacks when no database connections remain open
7104         (Bruce, Magnus, Russell Smith)
7105        </para>
7106
7107        <para>
7108         This is required for applications that unload the libpq library,
7109         otherwise invalid <application>OpenSSL</> callbacks will remain.
7110        </para>
7111       </listitem>
7112
7113      </itemizedlist>
7114
7115     </sect4>
7116
7117     <sect4>
7118      <title><application>ecpg</></title>
7119      <itemizedlist>
7120
7121       <listitem>
7122        <para>
7123         Add localization support for messages (Euler Taveira de
7124         Oliveira)
7125        </para>
7126       </listitem>
7127
7128       <listitem>
7129        <para>
7130         ecpg parser is now automatically generated from the server
7131         parser (Michael)
7132        </para>
7133
7134        <para>
7135         Previously the ecpg parser was hand-maintained.
7136        </para>
7137       </listitem>
7138
7139      </itemizedlist>
7140
7141     </sect4>
7142
7143     <sect4>
7144      <title>Server Programming Interface (<acronym>SPI</>)</title>
7145      <itemizedlist>
7146
7147       <listitem>
7148        <para>
7149         Add support for single-use plans with out-of-line
7150         parameters (Tom)
7151        </para>
7152       </listitem>
7153
7154       <listitem>
7155        <para>
7156         Add new <varname>SPI_OK_REWRITTEN</> return code for
7157         <function>SPI_execute()</> (Heikki)
7158        </para>
7159
7160        <para>
7161         This is used when a command is rewritten to another type of
7162         command.
7163        </para>
7164       </listitem>
7165
7166       <listitem>
7167        <para>
7168         Remove unnecessary inclusions from <filename>executor/spi.h</> (Tom)
7169        </para>
7170
7171        <para>
7172         SPI-using modules might need to add some <literal>#include</>
7173         lines if they were depending on <filename>spi.h</> to include
7174         things for them.
7175        </para>
7176       </listitem>
7177
7178      </itemizedlist>
7179
7180     </sect4>
7181
7182    </sect3>
7183
7184    <sect3>
7185     <title>Build Options</title>
7186     <itemizedlist>
7187
7188      <listitem>
7189       <para>
7190        Update build system to use <productname>Autoconf</> 2.61 (Peter)
7191       </para>
7192      </listitem>
7193
7194      <listitem>
7195       <para>
7196        Require <productname>GNU bison</> for source code builds (Peter)
7197       </para>
7198
7199       <para>
7200        This has effectively been required for several years, but now there
7201        is no infrastructure claiming to support other parser tools.
7202       </para>
7203      </listitem>
7204
7205      <listitem>
7206       <para>
7207        Add <application>pg_config</> <literal>--htmldir</> option
7208        (Peter)
7209       </para>
7210      </listitem>
7211
7212      <listitem>
7213       <para>
7214        Pass <type>float4</> by value inside the server (Zoltan
7215        Boszormenyi)
7216       </para>
7217
7218       <para>
7219        Add <application>configure</> option
7220        <literal>--disable-float4-byval</> to use the old behavior.
7221        External C functions that use old-style (version 0) call convention
7222        and pass or return <type>float4</> values will be broken by this
7223        change, so you may need the <application>configure</> option if you
7224        have such functions and don't want to update them.
7225       </para>
7226      </listitem>
7227
7228      <listitem>
7229       <para>
7230        Pass <type>float8</>, <type>int8</>, and related datatypes
7231        by value inside the server on 64-bit platforms (Zoltan Boszormenyi)
7232       </para>
7233
7234       <para>
7235        Add <application>configure</> option
7236        <literal>--disable-float8-byval</> to use the old behavior.
7237        As above, this change might break old-style external C functions.
7238       </para>
7239      </listitem>
7240
7241      <listitem>
7242       <para>
7243        Add configure options <literal>--with-segsize</>,
7244        <literal>--with-blocksize</>, <literal>--with-wal-blocksize</>,
7245        <literal>--with-wal-segsize</> (Zdenek Kotala, Tom)
7246       </para>
7247
7248       <para>
7249        This simplifies build-time control over several constants that
7250        previously could only be changed by editing
7251        <filename>pg_config_manual.h</>.
7252       </para>
7253      </listitem>
7254
7255      <listitem>
7256       <para>
7257        Allow threaded builds on <productname>Solaris</> 2.5 (Bruce)
7258       </para>
7259      </listitem>
7260
7261      <listitem>
7262       <para>
7263        Use the system's <function>getopt_long()</> on <productname>Solaris</>
7264        (Zdenek Kotala, Tom)
7265       </para>
7266
7267       <para>
7268        This makes option processing more consistent with what Solaris users
7269        expect.
7270       </para>
7271      </listitem>
7272
7273      <listitem>
7274       <para>
7275        Add support for the <productname>Sun Studio</> compiler on
7276        <productname>Linux</> (Julius Stroffek)
7277       </para>
7278      </listitem>
7279
7280      <listitem>
7281       <para>
7282        Append the major version number to the backend <application>gettext</>
7283        domain, and the <literal>soname</> major version number to
7284        libraries' <application>gettext</> domain (Peter)
7285       </para>
7286
7287       <para>
7288        This simplifies parallel installations of multiple versions.
7289       </para>
7290      </listitem>
7291
7292      <listitem>
7293       <para>
7294        Add support for code coverage testing with <application>gcov</>
7295        (Michelle Caisse)
7296       </para>
7297      </listitem>
7298
7299      <listitem>
7300       <para>
7301        Allow out-of-tree builds on <productname>Mingw</> and
7302        <productname>Cygwin</> (Richard Evans)
7303       </para>
7304      </listitem>
7305
7306      <listitem>
7307       <para>
7308        Fix the use of <productname>Mingw</> as a cross-compiling source
7309        platform (Peter)
7310       </para>
7311      </listitem>
7312
7313     </itemizedlist>
7314
7315    </sect3>
7316
7317    <sect3>
7318     <title>Source Code</title>
7319     <itemizedlist>
7320
7321      <listitem>
7322       <para>
7323        Support 64-bit time zone data files (Heikki)
7324       </para>
7325
7326       <para>
7327        This adds support for daylight saving time (<acronym>DST</>)
7328        calculations beyond the year 2038.
7329       </para>
7330      </listitem>
7331
7332      <listitem>
7333       <para>
7334        Deprecate use of platform's <type>time_t</> data type (Tom)
7335       </para>
7336
7337       <para>
7338        Some platforms have migrated to 64-bit <type>time_t</>, some have
7339        not, and Windows can't make up its mind what it's doing.  Define
7340        <type>pg_time_t</> to have the same meaning as <type>time_t</>,
7341        but always be 64 bits (unless the platform has no 64-bit integer type),
7342        and use that type in all module APIs and on-disk data formats.
7343       </para>
7344      </listitem>
7345
7346      <listitem>
7347       <para>
7348        Fix bug in handling of the time zone database when cross-compiling
7349        (Richard Evans)
7350       </para>
7351      </listitem>
7352
7353      <listitem>
7354       <para>
7355        Link backend object files in one step, rather than in stages
7356        (Peter)
7357       </para>
7358      </listitem>
7359
7360      <listitem>
7361       <para>
7362        Improve <application>gettext</> support to allow better translation
7363        of plurals (Peter)
7364       </para>
7365      </listitem>
7366
7367      <listitem>
7368       <para>
7369        Add message translation support to the PL languages (Alvaro, Peter)
7370       </para>
7371      </listitem>
7372
7373      <listitem>
7374       <para>
7375        Add more <application>DTrace</> probes (Robert Lor)
7376       </para>
7377      </listitem>
7378
7379      <listitem>
7380       <para>
7381        Enable <application>DTrace</> support on <application>Mac OS X
7382        Leopard</> and other non-Solaris platforms (Robert Lor)
7383       </para>
7384      </listitem>
7385
7386      <listitem>
7387       <para>
7388        Simplify and standardize conversions between C strings and
7389        <type>text</> datums, by providing common functions for the purpose
7390        (Brendan Jurd, Tom)
7391       </para>
7392      </listitem>
7393
7394      <listitem>
7395       <para>
7396        Clean up the <filename>include/catalog/</> header files so that
7397        frontend programs can include them without including
7398        <filename>postgres.h</>
7399        (Zdenek Kotala)
7400       </para>
7401      </listitem>
7402
7403      <listitem>
7404       <para>
7405        Make <type>name</> char-aligned, and suppress zero-padding of
7406        <type>name</> entries in indexes (Tom)
7407       </para>
7408      </listitem>
7409
7410      <listitem>
7411       <para>
7412        Recover better if dynamically-loaded code executes <function>exit()</>
7413        (Tom)
7414       </para>
7415      </listitem>
7416
7417      <listitem>
7418       <para>
7419        Add a hook to let plug-ins monitor the executor (Itagaki
7420        Takahiro)
7421       </para>
7422      </listitem>
7423
7424      <listitem>
7425       <para>
7426        Add a hook to allow the planner's statistics lookup behavior to
7427        be overridden (Simon Riggs)
7428       </para>
7429      </listitem>
7430
7431      <listitem>
7432       <para>
7433        Add <function>shmem_startup_hook()</> for custom shared memory
7434        requirements (Tom)
7435       </para>
7436      </listitem>
7437
7438      <listitem>
7439       <para>
7440        Replace the index access method <function>amgetmulti</> entry point
7441        with <function>amgetbitmap</>, and extend the API for
7442        <function>amgettuple</> to support run-time determination of
7443        operator lossiness (Heikki, Tom, Teodor)
7444       </para>
7445
7446       <para>
7447        The API for GIN and GiST opclass <function>consistent</> functions
7448        has been extended as well.
7449       </para>
7450      </listitem>
7451
7452      <listitem>
7453       <para>
7454        Add support for partial-match searches in <acronym>GIN</> indexes
7455        (Teodor Sigaev, Oleg Bartunov)
7456       </para>
7457      </listitem>
7458
7459      <listitem>
7460       <para>
7461        Replace <structname>pg_class</> column <structfield>reltriggers</>
7462        with boolean <structfield>relhastriggers</> (Simon)
7463       </para>
7464
7465       <para>
7466        Also remove unused <structname>pg_class</> columns
7467        <structfield>relukeys</>, <structfield>relfkeys</>, and
7468        <structfield>relrefs</>.
7469       </para>
7470      </listitem>
7471
7472      <listitem>
7473       <para>
7474        Add a <structfield>relistemp</> column to <structname>pg_class</>
7475        to ease identification of temporary tables (Tom)
7476       </para>
7477      </listitem>
7478
7479      <listitem>
7480       <para>
7481        Move platform <acronym>FAQ</>s into the main documentation
7482        (Peter)
7483       </para>
7484      </listitem>
7485
7486      <listitem>
7487       <para>
7488        Prevent parser input files from being built with any conflicts
7489        (Peter)
7490       </para>
7491      </listitem>
7492
7493      <listitem>
7494       <para>
7495        Add support for the <literal>KOI8U</> (Ukrainian) encoding
7496        (Peter)
7497       </para>
7498      </listitem>
7499
7500      <listitem>
7501       <para>
7502        Add Japanese message translations (Japan PostgreSQL Users Group)
7503       </para>
7504
7505       <para>
7506        This used to be maintained as a separate project.
7507       </para>
7508      </listitem>
7509
7510      <listitem>
7511       <para>
7512        Fix problem when setting <varname>LC_MESSAGES</> on
7513        <application>MSVC</>-built systems (Hiroshi Inoue, Hiroshi
7514        Saito, Magnus)
7515       </para>
7516      </listitem>
7517
7518     </itemizedlist>
7519
7520    </sect3>
7521
7522    <sect3>
7523     <title>Contrib</title>
7524
7525     <itemizedlist>
7526
7527      <listitem>
7528       <para>
7529        Add <filename>contrib/auto_explain</> to automatically run
7530        <command>EXPLAIN</> on queries exceeding a specified duration
7531        (Itagaki Takahiro, Tom)
7532       </para>
7533      </listitem>
7534
7535      <listitem>
7536       <para>
7537        Add <filename>contrib/btree_gin</> to allow GIN indexes to
7538        handle more datatypes (Oleg, Teodor)
7539       </para>
7540      </listitem>
7541
7542      <listitem>
7543       <para>
7544        Add <filename>contrib/citext</> to provide a case-insensitive,
7545        multibyte-aware text data type (David Wheeler)
7546       </para>
7547      </listitem>
7548
7549      <listitem>
7550       <para>
7551        Add <filename>contrib/pg_stat_statements</> for server-wide
7552        tracking of statement execution statistics (Itagaki Takahiro)
7553       </para>
7554      </listitem>
7555
7556      <listitem>
7557       <para>
7558        Add duration and query mode options to <filename>contrib/pgbench</>
7559        (Itagaki Takahiro)
7560       </para>
7561      </listitem>
7562
7563      <listitem>
7564       <para>
7565        Make <filename>contrib/pgbench</> use table names
7566        <structname>pgbench_accounts</>, <structname>pgbench_branches</>,
7567        <structname>pgbench_history</>, and <structname>pgbench_tellers</>,
7568        rather than just <structname>accounts</>, <structname>branches</>,
7569        <structname>history</>, and <structname>tellers</> (Tom)
7570       </para>
7571
7572       <para>
7573        This is to reduce the risk of accidentally destroying real data
7574        by running <application>pgbench</>.
7575       </para>
7576      </listitem>
7577
7578      <listitem>
7579       <para>
7580        Fix <filename>contrib/pgstattuple</> to handle tables and
7581        indexes with over 2 billion pages (Tatsuhito Kasahara)
7582       </para>
7583      </listitem>
7584
7585      <listitem>
7586       <para>
7587        In <filename>contrib/fuzzystrmatch</>, add a version of the
7588        Levenshtein string-distance function that allows the user to
7589        specify the costs of insertion, deletion, and substitution
7590        (Volkan Yazici)
7591       </para>
7592      </listitem>
7593
7594      <listitem>
7595       <para>
7596        Make <filename>contrib/ltree</> support multibyte encodings
7597        (laser)
7598       </para>
7599      </listitem>
7600
7601      <listitem>
7602       <para>
7603        Enable <filename>contrib/dblink</> to use connection information
7604        stored in the SQL/MED catalogs (Joe Conway)
7605       </para>
7606      </listitem>
7607
7608      <listitem>
7609       <para>
7610        Improve <filename>contrib/dblink</>'s reporting of errors from
7611        the remote server (Joe Conway)
7612       </para>
7613      </listitem>
7614
7615      <listitem>
7616       <para>
7617        Make <filename>contrib/dblink</> set <varname>client_encoding</>
7618        to match the local database's encoding (Joe Conway)
7619       </para>
7620
7621       <para>
7622        This prevents encoding problems when communicating with a remote
7623        database that uses a different encoding.
7624       </para>
7625      </listitem>
7626
7627      <listitem>
7628       <para>
7629        Make sure <filename>contrib/dblink</> uses a password supplied
7630        by the user, and not accidentally taken from the server's
7631        <filename>.pgpass</> file (Joe Conway)
7632       </para>
7633
7634       <para>
7635        This is a minor security enhancement.
7636       </para>
7637      </listitem>
7638
7639      <listitem>
7640       <para>
7641        Add <function>fsm_page_contents()</>
7642        to <filename>contrib/pageinspect</> (Heikki)
7643       </para>
7644      </listitem>
7645
7646      <listitem>
7647       <para>
7648        Modify <function>get_raw_page()</> to support free space map
7649        (<filename>*_fsm</>) files.  Also update
7650        <filename>contrib/pg_freespacemap</>.
7651       </para>
7652      </listitem>
7653
7654      <listitem>
7655       <para>
7656        Add support for multibyte encodings to <filename>contrib/pg_trgm</>
7657        (Teodor)
7658       </para>
7659      </listitem>
7660
7661      <listitem>
7662       <para>
7663        Rewrite <filename>contrib/intagg</> to use new
7664        functions <function>array_agg()</> and <function>unnest()</>
7665        (Tom)
7666       </para>
7667      </listitem>
7668
7669      <listitem>
7670       <para>
7671        Make <filename>contrib/pg_standby</> recover all available WAL before
7672        failover (Fujii Masao, Simon, Heikki)
7673       </para>
7674
7675       <para>
7676        To make this work safely, you now need to set the new
7677        <literal>recovery_end_command</> option in <filename>recovery.conf</>
7678        to clean up the trigger file after failover. <application>pg_standby</>
7679        will no longer remove the trigger file itself.
7680       </para>
7681      </listitem>
7682
7683      <listitem>
7684       <para>
7685        <filename>contrib/pg_standby</>'s <option>-l</> option is now a no-op,
7686        because it is unsafe to use a symlink (Simon)
7687       </para>
7688      </listitem>
7689
7690     </itemizedlist>
7691
7692    </sect3>
7693   </sect2>
7694  </sect1>