]> granicus.if.org Git - postgresql/blob - doc/src/sgml/release-8.3.sgml
082dc349bca09986150045e275522a7e7fb3d2b2
[postgresql] / doc / src / sgml / release-8.3.sgml
1 <!-- doc/src/sgml/release-8.3.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
3
4  <sect1 id="release-8-3-22">
5   <title>Release 8.3.22</title>
6
7   <note>
8   <title>Release Date</title>
9   <simpara>2012-12-06</simpara>
10   </note>
11
12   <para>
13    This release contains a variety of fixes from 8.3.21.
14    For information about new features in the 8.3 major release, see
15    <xref linkend="release-8-3">.
16   </para>
17
18   <para>
19    The <productname>PostgreSQL</> community will stop releasing updates
20    for the 8.3.X release series in February 2013.
21    Users are encouraged to update to a newer release branch soon.
22   </para>
23
24   <sect2>
25    <title>Migration to Version 8.3.22</title>
26
27    <para>
28     A dump/restore is not required for those running 8.3.X.
29    </para>
30
31    <para>
32     However, if you are upgrading from a version earlier than 8.3.17,
33     see the release notes for 8.3.17.
34    </para>
35
36   </sect2>
37
38   <sect2>
39    <title>Changes</title>
40
41    <itemizedlist>
42
43     <listitem>
44      <para>
45       Fix multiple bugs associated with <command>CREATE INDEX
46       CONCURRENTLY</> (Andres Freund, Tom Lane)
47      </para>
48
49      <para>
50       Fix <command>CREATE INDEX CONCURRENTLY</> to use
51       in-place updates when changing the state of an index's
52       <structname>pg_index</> row.  This prevents race conditions that could
53       cause concurrent sessions to miss updating the target index, thus
54       resulting in corrupt concurrently-created indexes.
55      </para>
56
57      <para>
58       Also, fix various other operations to ensure that they ignore
59       invalid indexes resulting from a failed <command>CREATE INDEX
60       CONCURRENTLY</> command.  The most important of these is
61       <command>VACUUM</>, because an auto-vacuum could easily be launched
62       on the table before corrective action can be taken to fix or remove
63       the invalid index.
64      </para>
65     </listitem>
66
67     <listitem>
68      <para>
69       Avoid corruption of internal hash tables when out of memory
70       (Hitoshi Harada)
71      </para>
72     </listitem>
73
74     <listitem>
75      <para>
76       Fix planning of non-strict equivalence clauses above outer joins
77       (Tom Lane)
78      </para>
79
80      <para>
81       The planner could derive incorrect constraints from a clause equating
82       a non-strict construct to something else, for example
83       <literal>WHERE COALESCE(foo, 0) = 0</>
84       when <literal>foo</> is coming from the nullable side of an outer join.
85      </para>
86     </listitem>
87
88     <listitem>
89      <para>
90       Improve planner's ability to prove exclusion constraints from
91       equivalence classes (Tom Lane)
92      </para>
93     </listitem>
94
95     <listitem>
96      <para>
97       Fix partial-row matching in hashed subplans to handle cross-type cases
98       correctly (Tom Lane)
99      </para>
100
101      <para>
102       This affects multicolumn <literal>NOT IN</> subplans, such as
103       <literal>WHERE (a, b) NOT IN (SELECT x, y FROM ...)</>
104       when for instance <literal>b</> and <literal>y</> are <type>int4</>
105       and <type>int8</> respectively.  This mistake led to wrong answers
106       or crashes depending on the specific datatypes involved.
107      </para>
108     </listitem>
109
110     <listitem>
111      <para>
112       Acquire buffer lock when re-fetching the old tuple for an
113       <literal>AFTER ROW UPDATE/DELETE</> trigger (Andres Freund)
114      </para>
115
116      <para>
117       In very unusual circumstances, this oversight could result in passing
118       incorrect data to the precheck logic for a foreign-key enforcement
119       trigger.  That could result in a crash, or in an incorrect decision
120       about whether to fire the trigger.
121      </para>
122     </listitem>
123
124     <listitem>
125      <para>
126       Fix <command>REASSIGN OWNED</> to handle grants on tablespaces
127       (&Aacute;lvaro Herrera)
128      </para>
129     </listitem>
130
131     <listitem>
132      <para>
133       Ignore incorrect <structname>pg_attribute</> entries for system
134       columns for views (Tom Lane)
135      </para>
136
137      <para>
138       Views do not have any system columns.  However, we forgot to
139       remove such entries when converting a table to a view.  That's fixed
140       properly for 9.3 and later, but in previous branches we need to defend
141       against existing mis-converted views.
142      </para>
143     </listitem>
144
145     <listitem>
146      <para>
147       Fix rule printing to dump <literal>INSERT INTO <replaceable>table</>
148       DEFAULT VALUES</literal> correctly (Tom Lane)
149      </para>
150     </listitem>
151
152     <listitem>
153      <para>
154       Guard against stack overflow when there are too many
155       <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> clauses
156       in a query (Tom Lane)
157      </para>
158     </listitem>
159
160     <listitem>
161      <para>
162       Prevent platform-dependent failures when dividing the minimum possible
163       integer value by -1 (Xi Wang, Tom Lane)
164      </para>
165     </listitem>
166
167     <listitem>
168      <para>
169       Fix possible access past end of string in date parsing
170       (Hitoshi Harada)
171      </para>
172     </listitem>
173
174     <listitem>
175      <para>
176       Produce an understandable error message if the length of the path name
177       for a Unix-domain socket exceeds the platform-specific limit
178       (Tom Lane, Andrew Dunstan)
179      </para>
180
181      <para>
182       Formerly, this would result in something quite unhelpful, such as
183       <quote>Non-recoverable failure in name resolution</>.
184      </para>
185     </listitem>
186
187     <listitem>
188      <para>
189       Fix memory leaks when sending composite column values to the client
190       (Tom Lane)
191      </para>
192     </listitem>
193
194     <listitem>
195      <para>
196       Make <application>pg_ctl</> more robust about reading the
197       <filename>postmaster.pid</> file (Heikki Linnakangas)
198      </para>
199
200      <para>
201       Fix race conditions and possible file descriptor leakage.
202      </para>
203     </listitem>
204
205     <listitem>
206      <para>
207       Fix possible crash in <application>psql</> if incorrectly-encoded data
208       is presented and the <varname>client_encoding</> setting is a
209       client-only encoding, such as SJIS (Jiang Guiqing)
210      </para>
211     </listitem>
212
213     <listitem>
214      <para>
215       Fix bugs in the <filename>restore.sql</> script emitted by
216       <application>pg_dump</> in <literal>tar</> output format (Tom Lane)
217      </para>
218
219      <para>
220       The script would fail outright on tables whose names include
221       upper-case characters.  Also, make the script capable of restoring
222       data in <option>--inserts</> mode as well as the regular COPY mode.
223      </para>
224     </listitem>
225
226     <listitem>
227      <para>
228       Fix <application>pg_restore</> to accept POSIX-conformant
229       <literal>tar</> files (Brian Weaver, Tom Lane)
230      </para>
231
232      <para>
233       The original coding of <application>pg_dump</>'s <literal>tar</>
234       output mode produced files that are not fully conformant with the
235       POSIX standard.  This has been corrected for version 9.3.  This
236       patch updates previous branches so that they will accept both the
237       incorrect and the corrected formats, in hopes of avoiding
238       compatibility problems when 9.3 comes out.
239      </para>
240     </listitem>
241
242     <listitem>
243      <para>
244       Fix <application>pg_resetxlog</> to locate <filename>postmaster.pid</>
245       correctly when given a relative path to the data directory (Tom Lane)
246      </para>
247
248      <para>
249       This mistake could lead to <application>pg_resetxlog</> not noticing
250       that there is an active postmaster using the data directory.
251      </para>
252     </listitem>
253
254     <listitem>
255      <para>
256       Fix <application>libpq</>'s <function>lo_import()</> and
257       <function>lo_export()</> functions to report file I/O errors properly
258       (Tom Lane)
259      </para>
260     </listitem>
261
262     <listitem>
263      <para>
264       Fix <application>ecpg</>'s processing of nested structure pointer
265       variables (Muhammad Usama)
266      </para>
267     </listitem>
268
269     <listitem>
270      <para>
271       Make <filename>contrib/pageinspect</>'s btree page inspection
272       functions take buffer locks while examining pages (Tom Lane)
273      </para>
274     </listitem>
275
276     <listitem>
277      <para>
278       Fix <application>pgxs</> support for building loadable modules on AIX
279       (Tom Lane)
280      </para>
281
282      <para>
283       Building modules outside the original source tree didn't work on AIX.
284      </para>
285     </listitem>
286
287     <listitem>
288      <para>
289       Update time zone data files to <application>tzdata</> release 2012j
290       for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western
291       Samoa, and portions of Brazil.
292      </para>
293     </listitem>
294
295    </itemizedlist>
296
297   </sect2>
298  </sect1>
299
300  <sect1 id="release-8-3-21">
301   <title>Release 8.3.21</title>
302
303   <note>
304   <title>Release Date</title>
305   <simpara>2012-09-24</simpara>
306   </note>
307
308   <para>
309    This release contains a variety of fixes from 8.3.20.
310    For information about new features in the 8.3 major release, see
311    <xref linkend="release-8-3">.
312   </para>
313
314   <para>
315    The <productname>PostgreSQL</> community will stop releasing updates
316    for the 8.3.X release series in February 2013.
317    Users are encouraged to update to a newer release branch soon.
318   </para>
319
320   <sect2>
321    <title>Migration to Version 8.3.21</title>
322
323    <para>
324     A dump/restore is not required for those running 8.3.X.
325    </para>
326
327    <para>
328     However, if you are upgrading from a version earlier than 8.3.17,
329     see the release notes for 8.3.17.
330    </para>
331
332   </sect2>
333
334   <sect2>
335    <title>Changes</title>
336
337    <itemizedlist>
338
339     <listitem>
340      <para>
341       Improve page-splitting decisions in GiST indexes (Alexander Korotkov,
342       Robert Haas, Tom Lane)
343      </para>
344
345      <para>
346       Multi-column GiST indexes might suffer unexpected bloat due to this
347       error.
348      </para>
349     </listitem>
350
351     <listitem>
352      <para>
353       Fix cascading privilege revoke to stop if privileges are still held
354       (Tom Lane)
355      </para>
356
357      <para>
358       If we revoke a grant option from some role <replaceable>X</>, but
359       <replaceable>X</> still holds that option via a grant from someone
360       else, we should not recursively revoke the corresponding privilege
361       from role(s) <replaceable>Y</> that <replaceable>X</> had granted it
362       to.
363      </para>
364     </listitem>
365
366     <listitem>
367      <para>
368       Fix handling of <literal>SIGFPE</> when PL/Perl is in use (Andres Freund)
369      </para>
370
371      <para>
372       Perl resets the process's <literal>SIGFPE</> handler to
373       <literal>SIG_IGN</>, which could result in crashes later on.  Restore
374       the normal Postgres signal handler after initializing PL/Perl.
375      </para>
376     </listitem>
377
378     <listitem>
379      <para>
380       Prevent PL/Perl from crashing if a recursive PL/Perl function is
381       redefined while being executed (Tom Lane)
382      </para>
383     </listitem>
384
385     <listitem>
386      <para>
387       Work around possible misoptimization in PL/Perl (Tom Lane)
388      </para>
389
390      <para>
391       Some Linux distributions contain an incorrect version of
392       <filename>pthread.h</> that results in incorrect compiled code in
393       PL/Perl, leading to crashes if a PL/Perl function calls another one
394       that throws an error.
395      </para>
396     </listitem>
397
398     <listitem>
399      <para>
400       Update time zone data files to <application>tzdata</> release 2012f
401       for DST law changes in Fiji
402      </para>
403     </listitem>
404
405    </itemizedlist>
406
407   </sect2>
408  </sect1>
409
410  <sect1 id="release-8-3-20">
411   <title>Release 8.3.20</title>
412
413   <note>
414   <title>Release Date</title>
415   <simpara>2012-08-17</simpara>
416   </note>
417
418   <para>
419    This release contains a variety of fixes from 8.3.19.
420    For information about new features in the 8.3 major release, see
421    <xref linkend="release-8-3">.
422   </para>
423
424   <para>
425    The <productname>PostgreSQL</> community will stop releasing updates
426    for the 8.3.X release series in February 2013.
427    Users are encouraged to update to a newer release branch soon.
428   </para>
429
430   <sect2>
431    <title>Migration to Version 8.3.20</title>
432
433    <para>
434     A dump/restore is not required for those running 8.3.X.
435    </para>
436
437    <para>
438     However, if you are upgrading from a version earlier than 8.3.17,
439     see the release notes for 8.3.17.
440    </para>
441
442   </sect2>
443
444   <sect2>
445    <title>Changes</title>
446
447    <itemizedlist>
448
449     <listitem>
450      <para>
451       Prevent access to external files/URLs via XML entity references
452       (Noah Misch, Tom Lane)
453      </para>
454
455      <para>
456       <function>xml_parse()</> would attempt to fetch external files or
457       URLs as needed to resolve DTD and entity references in an XML value,
458       thus allowing unprivileged database users to attempt to fetch data
459       with the privileges of the database server.  While the external data
460       wouldn't get returned directly to the user, portions of it could be
461       exposed in error messages if the data didn't parse as valid XML; and
462       in any case the mere ability to check existence of a file might be
463       useful to an attacker.  (CVE-2012-3489)
464      </para>
465     </listitem>
466
467     <listitem>
468      <para>
469       Prevent access to external files/URLs via <filename>contrib/xml2</>'s
470       <function>xslt_process()</> (Peter Eisentraut)
471      </para>
472
473      <para>
474       <application>libxslt</> offers the ability to read and write both
475       files and URLs through stylesheet commands, thus allowing
476       unprivileged database users to both read and write data with the
477       privileges of the database server.  Disable that through proper use
478       of <application>libxslt</>'s security options.  (CVE-2012-3488)
479      </para>
480
481      <para>
482       Also, remove <function>xslt_process()</>'s ability to fetch documents
483       and stylesheets from external files/URLs.  While this was a
484       documented <quote>feature</>, it was long regarded as a bad idea.
485       The fix for CVE-2012-3489 broke that capability, and rather than
486       expend effort on trying to fix it, we're just going to summarily
487       remove it.
488      </para>
489     </listitem>
490
491     <listitem>
492      <para>
493       Prevent too-early recycling of btree index pages (Noah Misch)
494      </para>
495
496      <para>
497       When we allowed read-only transactions to skip assigning XIDs, we
498       introduced the possibility that a deleted btree page could be
499       recycled while a read-only transaction was still in flight to it.
500       This would result in incorrect index search results.  The probability
501       of such an error occurring in the field seems very low because of the
502       timing requirements, but nonetheless it should be fixed.
503      </para>
504     </listitem>
505
506     <listitem>
507      <para>
508       Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane)
509      </para>
510
511      <para>
512       If <command>ALTER SEQUENCE</> was executed on a freshly created or
513       reset sequence, and then precisely one <function>nextval()</> call
514       was made on it, and then the server crashed, WAL replay would restore
515       the sequence to a state in which it appeared that no
516       <function>nextval()</> had been done, thus allowing the first
517       sequence value to be returned again by the next
518       <function>nextval()</> call.  In particular this could manifest for
519       <type>serial</> columns, since creation of a serial column's sequence
520       includes an <command>ALTER SEQUENCE OWNED BY</> step.
521      </para>
522     </listitem>
523
524     <listitem>
525      <para>
526       Ensure the <filename>backup_label</> file is fsync'd after
527       <function>pg_start_backup()</> (Dave Kerr)
528      </para>
529     </listitem>
530
531     <listitem>
532      <para>
533       Back-patch 9.1 improvement to compress the fsync request queue
534       (Robert Haas)
535      </para>
536
537      <para>
538       This improves performance during checkpoints.  The 9.1 change
539       has now seen enough field testing to seem safe to back-patch.
540      </para>
541     </listitem>
542
543     <listitem>
544      <para>
545       Only allow autovacuum to be auto-canceled by a directly blocked
546       process (Tom Lane)
547      </para>
548
549      <para>
550       The original coding could allow inconsistent behavior in some cases;
551       in particular, an autovacuum could get canceled after less than
552       <literal>deadlock_timeout</> grace period.
553      </para>
554     </listitem>
555
556     <listitem>
557      <para>
558       Improve logging of autovacuum cancels (Robert Haas)
559      </para>
560     </listitem>
561
562     <listitem>
563      <para>
564       Fix log collector so that <literal>log_truncate_on_rotation</> works
565       during the very first log rotation after server start (Tom Lane)
566      </para>
567     </listitem>
568
569     <listitem>
570      <para>
571       Ensure that a whole-row reference to a subquery doesn't include any
572       extra <literal>GROUP BY</> or <literal>ORDER BY</> columns (Tom Lane)
573      </para>
574     </listitem>
575
576     <listitem>
577      <para>
578       Disallow copying whole-row references in <literal>CHECK</>
579       constraints and index definitions during <command>CREATE TABLE</>
580       (Tom Lane)
581      </para>
582
583      <para>
584       This situation can arise in <command>CREATE TABLE</> with
585       <literal>LIKE</> or <literal>INHERITS</>.  The copied whole-row
586       variable was incorrectly labeled with the row type of the original
587       table not the new one.  Rejecting the case seems reasonable for
588       <literal>LIKE</>, since the row types might well diverge later.  For
589       <literal>INHERITS</> we should ideally allow it, with an implicit
590       coercion to the parent table's row type; but that will require more
591       work than seems safe to back-patch.
592      </para>
593     </listitem>
594
595     <listitem>
596      <para>
597       Fix memory leak in <literal>ARRAY(SELECT ...)</> subqueries (Heikki
598       Linnakangas, Tom Lane)
599      </para>
600     </listitem>
601
602     <listitem>
603      <para>
604       Fix extraction of common prefixes from regular expressions (Tom Lane)
605      </para>
606
607      <para>
608       The code could get confused by quantified parenthesized
609       subexpressions, such as <literal>^(foo)?bar</>.  This would lead to
610       incorrect index optimization of searches for such patterns.
611      </para>
612     </listitem>
613
614     <listitem>
615      <para>
616       Report errors properly in <filename>contrib/xml2</>'s
617       <function>xslt_process()</> (Tom Lane)
618      </para>
619     </listitem>
620
621     <listitem>
622      <para>
623       Update time zone data files to <application>tzdata</> release 2012e
624       for DST law changes in Morocco and Tokelau
625      </para>
626     </listitem>
627
628    </itemizedlist>
629
630   </sect2>
631  </sect1>
632
633  <sect1 id="release-8-3-19">
634   <title>Release 8.3.19</title>
635
636   <note>
637   <title>Release Date</title>
638   <simpara>2012-06-04</simpara>
639   </note>
640
641   <para>
642    This release contains a variety of fixes from 8.3.18.
643    For information about new features in the 8.3 major release, see
644    <xref linkend="release-8-3">.
645   </para>
646
647   <sect2>
648    <title>Migration to Version 8.3.19</title>
649
650    <para>
651     A dump/restore is not required for those running 8.3.X.
652    </para>
653
654    <para>
655     However, if you are upgrading from a version earlier than 8.3.17,
656     see the release notes for 8.3.17.
657    </para>
658
659   </sect2>
660
661   <sect2>
662    <title>Changes</title>
663
664    <itemizedlist>
665
666     <listitem>
667      <para>
668       Fix incorrect password transformation in
669       <filename>contrib/pgcrypto</>'s DES <function>crypt()</> function
670       (Solar Designer)
671      </para>
672
673      <para>
674       If a password string contained the byte value <literal>0x80</>, the
675       remainder of the password was ignored, causing the password to be much
676       weaker than it appeared.  With this fix, the rest of the string is
677       properly included in the DES hash.  Any stored password values that are
678       affected by this bug will thus no longer match, so the stored values may
679       need to be updated.  (CVE-2012-2143)
680      </para>
681     </listitem>
682
683     <listitem>
684      <para>
685       Ignore <literal>SECURITY DEFINER</> and <literal>SET</> attributes for
686       a procedural language's call handler (Tom Lane)
687      </para>
688
689      <para>
690       Applying such attributes to a call handler could crash the server.
691       (CVE-2012-2655)
692      </para>
693     </listitem>
694
695     <listitem>
696      <para>
697       Allow numeric timezone offsets in <type>timestamp</> input to be up to
698       16 hours away from UTC (Tom Lane)
699      </para>
700
701      <para>
702       Some historical time zones have offsets larger than 15 hours, the
703       previous limit.  This could result in dumped data values being rejected
704       during reload.
705      </para>
706     </listitem>
707
708     <listitem>
709      <para>
710       Fix timestamp conversion to cope when the given time is exactly the
711       last DST transition time for the current timezone (Tom Lane)
712      </para>
713
714      <para>
715       This oversight has been there a long time, but was not noticed
716       previously because most DST-using zones are presumed to have an
717       indefinite sequence of future DST transitions.
718      </para>
719     </listitem>
720
721     <listitem>
722      <para>
723       Fix <type>text</> to <type>name</> and <type>char</> to <type>name</>
724       casts to perform string truncation correctly in multibyte encodings
725       (Karl Schnaitter)
726      </para>
727     </listitem>
728
729     <listitem>
730      <para>
731       Fix memory copying bug in <function>to_tsquery()</> (Heikki Linnakangas)
732      </para>
733     </listitem>
734
735     <listitem>
736      <para>
737       Fix slow session startup when <structname>pg_attribute</> is very large
738       (Tom Lane)
739      </para>
740
741      <para>
742       If <structname>pg_attribute</> exceeds one-fourth of
743       <varname>shared_buffers</>, cache rebuilding code that is sometimes
744       needed during session start would trigger the synchronized-scan logic,
745       causing it to take many times longer than normal.  The problem was
746       particularly acute if many new sessions were starting at once.
747      </para>
748     </listitem>
749
750     <listitem>
751      <para>
752       Ensure sequential scans check for query cancel reasonably often (Merlin
753       Moncure)
754      </para>
755
756      <para>
757       A scan encountering many consecutive pages that contain no live tuples
758       would not respond to interrupts meanwhile.
759      </para>
760     </listitem>
761
762     <listitem>
763      <para>
764       Ensure the Windows implementation of <function>PGSemaphoreLock()</>
765       clears <varname>ImmediateInterruptOK</> before returning (Tom Lane)
766      </para>
767
768      <para>
769       This oversight meant that a query-cancel interrupt received later
770       in the same query could be accepted at an unsafe time, with
771       unpredictable but not good consequences.
772      </para>
773     </listitem>
774
775     <listitem>
776      <para>
777       Show whole-row variables safely when printing views or rules
778       (Abbas Butt, Tom Lane)
779      </para>
780
781      <para>
782       Corner cases involving ambiguous names (that is, the name could be
783       either a table or column name of the query) were printed in an
784       ambiguous way, risking that the view or rule would be interpreted
785       differently after dump and reload.  Avoid the ambiguous case by
786       attaching a no-op cast.
787      </para>
788     </listitem>
789
790     <listitem>
791      <para>
792       Ensure autovacuum worker processes perform stack depth checking
793       properly (Heikki Linnakangas)
794      </para>
795
796      <para>
797       Previously, infinite recursion in a function invoked by
798       auto-<command>ANALYZE</> could crash worker processes.
799      </para>
800     </listitem>
801
802     <listitem>
803      <para>
804       Fix logging collector to not lose log coherency under high load (Andrew
805       Dunstan)
806      </para>
807
808      <para>
809       The collector previously could fail to reassemble large messages if it
810       got too busy.
811      </para>
812     </listitem>
813
814     <listitem>
815      <para>
816       Fix logging collector to ensure it will restart file rotation
817       after receiving <systemitem>SIGHUP</> (Tom Lane)
818      </para>
819     </listitem>
820
821     <listitem>
822      <para>
823       Fix PL/pgSQL's <command>GET DIAGNOSTICS</> command when the target
824       is the function's first variable (Tom Lane)
825      </para>
826     </listitem>
827
828     <listitem>
829      <para>
830       Fix several performance problems in <application>pg_dump</> when
831       the database contains many objects (Jeff Janes, Tom Lane)
832      </para>
833
834      <para>
835       <application>pg_dump</> could get very slow if the database contained
836       many schemas, or if many objects are in dependency loops, or if there
837       are many owned sequences.
838      </para>
839     </listitem>
840
841     <listitem>
842      <para>
843       Fix <filename>contrib/dblink</>'s <function>dblink_exec()</> to not leak
844       temporary database connections upon error (Tom Lane)
845      </para>
846     </listitem>
847
848     <listitem>
849      <para>
850       Update time zone data files to <application>tzdata</> release 2012c
851       for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland
852       Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands;
853       also historical corrections for Canada.
854      </para>
855     </listitem>
856
857    </itemizedlist>
858
859   </sect2>
860  </sect1>
861
862  <sect1 id="release-8-3-18">
863   <title>Release 8.3.18</title>
864
865   <note>
866   <title>Release Date</title>
867   <simpara>2012-02-27</simpara>
868   </note>
869
870   <para>
871    This release contains a variety of fixes from 8.3.17.
872    For information about new features in the 8.3 major release, see
873    <xref linkend="release-8-3">.
874   </para>
875
876   <sect2>
877    <title>Migration to Version 8.3.18</title>
878
879    <para>
880     A dump/restore is not required for those running 8.3.X.
881    </para>
882
883    <para>
884     However, if you are upgrading from a version earlier than 8.3.17,
885     see the release notes for 8.3.17.
886    </para>
887
888   </sect2>
889
890   <sect2>
891    <title>Changes</title>
892
893    <itemizedlist>
894
895     <listitem>
896      <para>
897       Require execute permission on the trigger function for
898       <command>CREATE TRIGGER</> (Robert Haas)
899      </para>
900
901      <para>
902       This missing check could allow another user to execute a trigger
903       function with forged input data, by installing it on a table he owns.
904       This is only of significance for trigger functions marked
905       <literal>SECURITY DEFINER</>, since otherwise trigger functions run
906       as the table owner anyway.  (CVE-2012-0866)
907      </para>
908     </listitem>
909
910     <listitem>
911      <para>
912       Convert newlines to spaces in names written in <application>pg_dump</>
913       comments (Robert Haas)
914      </para>
915
916      <para>
917       <application>pg_dump</> was incautious about sanitizing object names
918       that are emitted within SQL comments in its output script.  A name
919       containing a newline would at least render the script syntactically
920       incorrect.  Maliciously crafted object names could present a SQL
921       injection risk when the script is reloaded.  (CVE-2012-0868)
922      </para>
923     </listitem>
924
925     <listitem>
926      <para>
927       Fix btree index corruption from insertions concurrent with vacuuming
928       (Tom Lane)
929      </para>
930
931      <para>
932       An index page split caused by an insertion could sometimes cause a
933       concurrently-running <command>VACUUM</> to miss removing index entries
934       that it should remove.  After the corresponding table rows are removed,
935       the dangling index entries would cause errors (such as <quote>could not
936       read block N in file ...</>) or worse, silently wrong query results
937       after unrelated rows are re-inserted at the now-free table locations.
938       This bug has been present since release 8.2, but occurs so infrequently
939       that it was not diagnosed until now.  If you have reason to suspect
940       that it has happened in your database, reindexing the affected index
941       will fix things.
942      </para>
943     </listitem>
944
945     <listitem>
946      <para>
947       Allow non-existent values for some settings in <command>ALTER
948       USER/DATABASE SET</> (Heikki Linnakangas)
949      </para>
950
951      <para>
952       Allow <varname>default_text_search_config</>,
953       <varname>default_tablespace</>, and <varname>temp_tablespaces</> to be
954       set to names that are not known.  This is because they might be known
955       in another database where the setting is intended to be used, or for the
956       tablespace cases because the tablespace might not be created yet.  The
957       same issue was previously recognized for <varname>search_path</>, and
958       these settings now act like that one.
959      </para>
960     </listitem>
961
962     <listitem>
963      <para>
964       Track the OID counter correctly during WAL replay, even when it wraps
965       around (Tom Lane)
966      </para>
967
968      <para>
969       Previously the OID counter would remain stuck at a high value until the
970       system exited replay mode.  The practical consequences of that are
971       usually nil, but there are scenarios wherein a standby server that's
972       been promoted to master might take a long time to advance the OID
973       counter to a reasonable value once values are needed.
974      </para>
975     </listitem>
976
977     <listitem>
978      <para>
979       Fix regular expression back-references with <literal>*</> attached
980       (Tom Lane)
981      </para>
982
983      <para>
984       Rather than enforcing an exact string match, the code would effectively
985       accept any string that satisfies the pattern sub-expression referenced
986       by the back-reference symbol.
987      </para>
988
989      <para>
990       A similar problem still afflicts back-references that are embedded in a
991       larger quantified expression, rather than being the immediate subject
992       of the quantifier.  This will be addressed in a future
993       <productname>PostgreSQL</> release.
994      </para>
995     </listitem>
996
997     <listitem>
998      <para>
999       Fix recently-introduced memory leak in processing of
1000       <type>inet</>/<type>cidr</> values (Heikki Linnakangas)
1001      </para>
1002
1003      <para>
1004       A patch in the December 2011 releases of <productname>PostgreSQL</>
1005       caused memory leakage in these operations, which could be significant
1006       in scenarios such as building a btree index on such a column.
1007      </para>
1008     </listitem>
1009
1010     <listitem>
1011      <para>
1012       Avoid double close of file handle in syslogger on Windows (MauMau)
1013      </para>
1014
1015      <para>
1016       Ordinarily this error was invisible, but it would cause an exception
1017       when running on a debug version of Windows.
1018      </para>
1019     </listitem>
1020
1021     <listitem>
1022      <para>
1023       Fix I/O-conversion-related memory leaks in plpgsql
1024       (Andres Freund, Jan Urbanski, Tom Lane)
1025      </para>
1026
1027      <para>
1028       Certain operations would leak memory until the end of the current
1029       function.
1030      </para>
1031     </listitem>
1032
1033     <listitem>
1034      <para>
1035       Improve <application>pg_dump</>'s handling of inherited table columns
1036       (Tom Lane)
1037      </para>
1038
1039      <para>
1040       <application>pg_dump</> mishandled situations where a child column has
1041       a different default expression than its parent column.  If the default
1042       is textually identical to the parent's default, but not actually the
1043       same (for instance, because of schema search path differences) it would
1044       not be recognized as different, so that after dump and restore the
1045       child would be allowed to inherit the parent's default.  Child columns
1046       that are <literal>NOT NULL</> where their parent is not could also be
1047       restored subtly incorrectly.
1048      </para>
1049     </listitem>
1050
1051     <listitem>
1052      <para>
1053       Fix <application>pg_restore</>'s direct-to-database mode for
1054       INSERT-style table data (Tom Lane)
1055      </para>
1056
1057      <para>
1058       Direct-to-database restores from archive files made with
1059       <option>--inserts</> or <option>--column-inserts</> options fail when
1060       using <application>pg_restore</> from a release dated September or
1061       December 2011, as a result of an oversight in a fix for another
1062       problem.  The archive file itself is not at fault, and text-mode
1063       output is okay.
1064      </para>
1065     </listitem>
1066
1067     <listitem>
1068      <para>
1069       Fix error in <filename>contrib/intarray</>'s <literal>int[] &amp;
1070       int[]</> operator (Guillaume Lelarge)
1071      </para>
1072
1073      <para>
1074       If the smallest integer the two input arrays have in common is 1,
1075       and there are smaller values in either array, then 1 would be
1076       incorrectly omitted from the result.
1077      </para>
1078     </listitem>
1079
1080     <listitem>
1081      <para>
1082       Fix error detection in <filename>contrib/pgcrypto</>'s
1083       <function>encrypt_iv()</> and <function>decrypt_iv()</>
1084       (Marko Kreen)
1085      </para>
1086
1087      <para>
1088       These functions failed to report certain types of invalid-input errors,
1089       and would instead return random garbage values for incorrect input.
1090      </para>
1091     </listitem>
1092
1093     <listitem>
1094      <para>
1095       Fix one-byte buffer overrun in <filename>contrib/test_parser</>
1096       (Paul Guyot)
1097      </para>
1098
1099      <para>
1100       The code would try to read one more byte than it should, which would
1101       crash in corner cases.
1102       Since <filename>contrib/test_parser</> is only example code, this is
1103       not a security issue in itself, but bad example code is still bad.
1104      </para>
1105     </listitem>
1106
1107     <listitem>
1108      <para>
1109       Use <function>__sync_lock_test_and_set()</> for spinlocks on ARM, if
1110       available (Martin Pitt)
1111      </para>
1112
1113      <para>
1114       This function replaces our previous use of the <literal>SWPB</>
1115       instruction, which is deprecated and not available on ARMv6 and later.
1116       Reports suggest that the old code doesn't fail in an obvious way on
1117       recent ARM boards, but simply doesn't interlock concurrent accesses,
1118       leading to bizarre failures in multiprocess operation.
1119      </para>
1120     </listitem>
1121
1122     <listitem>
1123      <para>
1124       Use <option>-fexcess-precision=standard</> option when building with
1125       gcc versions that accept it (Andrew Dunstan)
1126      </para>
1127
1128      <para>
1129       This prevents assorted scenarios wherein recent versions of gcc will
1130       produce creative results.
1131      </para>
1132     </listitem>
1133
1134     <listitem>
1135      <para>
1136       Allow use of threaded Python on FreeBSD (Chris Rees)
1137      </para>
1138
1139      <para>
1140       Our configure script previously believed that this combination wouldn't
1141       work; but FreeBSD fixed the problem, so remove that error check.
1142      </para>
1143     </listitem>
1144
1145    </itemizedlist>
1146
1147   </sect2>
1148  </sect1>
1149
1150  <sect1 id="release-8-3-17">
1151   <title>Release 8.3.17</title>
1152
1153   <note>
1154   <title>Release Date</title>
1155   <simpara>2011-12-05</simpara>
1156   </note>
1157
1158   <para>
1159    This release contains a variety of fixes from 8.3.16.
1160    For information about new features in the 8.3 major release, see
1161    <xref linkend="release-8-3">.
1162   </para>
1163
1164   <sect2>
1165    <title>Migration to Version 8.3.17</title>
1166
1167    <para>
1168     A dump/restore is not required for those running 8.3.X.
1169    </para>
1170
1171    <para>
1172     However, a longstanding error was discovered in the definition of the
1173     <literal>information_schema.referential_constraints</> view.  If you
1174     rely on correct results from that view, you should replace its
1175     definition as explained in the first changelog item below.
1176    </para>
1177
1178    <para>
1179     Also, if you are upgrading from a version earlier than 8.3.8,
1180     see the release notes for 8.3.8.
1181    </para>
1182
1183   </sect2>
1184
1185   <sect2>
1186    <title>Changes</title>
1187
1188    <itemizedlist>
1189
1190     <listitem>
1191      <para>
1192       Fix bugs in <literal>information_schema.referential_constraints</> view
1193       (Tom Lane)
1194      </para>
1195
1196      <para>
1197       This view was being insufficiently careful about matching the
1198       foreign-key constraint to the depended-on primary or unique key
1199       constraint.  That could result in failure to show a foreign key
1200       constraint at all, or showing it multiple times, or claiming that it
1201       depends on a different constraint than the one it really does.
1202      </para>
1203
1204      <para>
1205       Since the view definition is installed by <application>initdb</>,
1206       merely upgrading will not fix the problem.  If you need to fix this
1207       in an existing installation, you can (as a superuser) drop the
1208       <literal>information_schema</> schema then re-create it by sourcing
1209       <filename><replaceable>SHAREDIR</>/information_schema.sql</filename>.
1210       (Run <literal>pg_config --sharedir</> if you're uncertain where
1211       <replaceable>SHAREDIR</> is.)  This must be repeated in each database
1212       to be fixed.
1213      </para>
1214     </listitem>
1215
1216     <listitem>
1217      <para>
1218       Fix TOAST-related data corruption during <literal>CREATE TABLE dest AS
1219       SELECT * FROM src</> or <literal>INSERT INTO dest SELECT * FROM src</>
1220       (Tom Lane)
1221      </para>
1222
1223      <para>
1224       If a table has been modified by <command>ALTER TABLE ADD COLUMN</>,
1225       attempts to copy its data verbatim to another table could produce
1226       corrupt results in certain corner cases.
1227       The problem can only manifest in this precise form in 8.4 and later,
1228       but we patched earlier versions as well in case there are other code
1229       paths that could trigger the same bug.
1230      </para>
1231     </listitem>
1232
1233     <listitem>
1234      <para>
1235       Fix race condition during toast table access from stale syscache entries
1236       (Tom Lane)
1237      </para>
1238
1239      <para>
1240       The typical symptom was transient errors like <quote>missing chunk
1241       number 0 for toast value NNNNN in pg_toast_2619</>, where the cited
1242       toast table would always belong to a system catalog.
1243      </para>
1244     </listitem>
1245
1246     <listitem>
1247      <para>
1248       Make <function>DatumGetInetP()</> unpack inet datums that have a 1-byte
1249       header, and add a new macro, <function>DatumGetInetPP()</>, that does
1250       not (Heikki Linnakangas)
1251      </para>
1252
1253      <para>
1254       This change affects no core code, but might prevent crashes in add-on
1255       code that expects <function>DatumGetInetP()</> to produce an unpacked
1256       datum as per usual convention.
1257      </para>
1258     </listitem>
1259
1260     <listitem>
1261      <para>
1262       Improve locale support in <type>money</> type's input and output
1263       (Tom Lane)
1264      </para>
1265
1266      <para>
1267       Aside from not supporting all standard
1268       <link linkend="guc-lc-monetary"><varname>lc_monetary</></link>
1269       formatting options, the input and output functions were inconsistent,
1270       meaning there were locales in which dumped <type>money</> values could
1271       not be re-read.
1272      </para>
1273     </listitem>
1274
1275     <listitem>
1276      <para>
1277       Don't let <link
1278       linkend="guc-transform-null-equals"><varname>transform_null_equals</></link>
1279       affect <literal>CASE foo WHEN NULL ...</> constructs
1280       (Heikki Linnakangas)
1281      </para>
1282
1283      <para>
1284       <varname>transform_null_equals</> is only supposed to affect
1285       <literal>foo = NULL</> expressions written directly by the user, not
1286       equality checks generated internally by this form of <literal>CASE</>.
1287      </para>
1288     </listitem>
1289
1290     <listitem>
1291      <para>
1292       Change foreign-key trigger creation order to better support
1293       self-referential foreign keys (Tom Lane)
1294      </para>
1295
1296      <para>
1297       For a cascading foreign key that references its own table, a row update
1298       will fire both the <literal>ON UPDATE</> trigger and the
1299       <literal>CHECK</> trigger as one event.  The <literal>ON UPDATE</>
1300       trigger must execute first, else the <literal>CHECK</> will check a
1301       non-final state of the row and possibly throw an inappropriate error.
1302       However, the firing order of these triggers is determined by their
1303       names, which generally sort in creation order since the triggers have
1304       auto-generated names following the convention
1305       <quote>RI_ConstraintTrigger_NNNN</>.  A proper fix would require
1306       modifying that convention, which we will do in 9.2, but it seems risky
1307       to change it in existing releases.  So this patch just changes the
1308       creation order of the triggers.  Users encountering this type of error
1309       should drop and re-create the foreign key constraint to get its
1310       triggers into the right order.
1311      </para>
1312     </listitem>
1313
1314     <listitem>
1315      <para>
1316       Avoid floating-point underflow while tracking buffer allocation rate
1317       (Greg Matthews)
1318      </para>
1319
1320      <para>
1321       While harmless in itself, on certain platforms this would result in
1322       annoying kernel log messages.
1323      </para>
1324     </listitem>
1325
1326     <listitem>
1327      <para>
1328       Preserve blank lines within commands in <application>psql</>'s command
1329       history (Robert Haas)
1330      </para>
1331
1332      <para>
1333       The former behavior could cause problems if an empty line was removed
1334       from within a string literal, for example.
1335      </para>
1336     </listitem>
1337
1338     <listitem>
1339      <para>
1340       Fix <application>pg_dump</> to dump user-defined casts between
1341       auto-generated types, such as table rowtypes (Tom Lane)
1342      </para>
1343     </listitem>
1344
1345     <listitem>
1346      <para>
1347       Use the preferred version of <application>xsubpp</> to build PL/Perl,
1348       not necessarily the operating system's main copy
1349       (David Wheeler and Alex Hunsaker)
1350      </para>
1351     </listitem>
1352
1353     <listitem>
1354      <para>
1355       Fix incorrect coding in <filename>contrib/dict_int</> and
1356       <filename>contrib/dict_xsyn</> (Tom Lane)
1357      </para>
1358
1359      <para>
1360       Some functions incorrectly assumed that memory returned by
1361       <function>palloc()</> is guaranteed zeroed.
1362      </para>
1363     </listitem>
1364
1365     <listitem>
1366      <para>
1367       Honor query cancel interrupts promptly in <function>pgstatindex()</>
1368       (Robert Haas)
1369      </para>
1370     </listitem>
1371
1372     <listitem>
1373      <para>
1374       Ensure VPATH builds properly install all server header files
1375       (Peter Eisentraut)
1376      </para>
1377     </listitem>
1378
1379     <listitem>
1380      <para>
1381       Shorten file names reported in verbose error messages (Peter Eisentraut)
1382      </para>
1383
1384      <para>
1385       Regular builds have always reported just the name of the C file
1386       containing the error message call, but VPATH builds formerly
1387       reported an absolute path name.
1388      </para>
1389     </listitem>
1390
1391     <listitem>
1392      <para>
1393       Fix interpretation of Windows timezone names for Central America
1394       (Tom Lane)
1395      </para>
1396
1397      <para>
1398       Map <quote>Central America Standard Time</> to <literal>CST6</>, not
1399       <literal>CST6CDT</>, because DST is generally not observed anywhere in
1400       Central America.
1401      </para>
1402     </listitem>
1403
1404     <listitem>
1405      <para>
1406       Update time zone data files to <application>tzdata</> release 2011n
1407       for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa;
1408       also historical corrections for Alaska and British East Africa.
1409      </para>
1410     </listitem>
1411
1412    </itemizedlist>
1413
1414   </sect2>
1415  </sect1>
1416
1417  <sect1 id="release-8-3-16">
1418   <title>Release 8.3.16</title>
1419
1420   <note>
1421   <title>Release Date</title>
1422   <simpara>2011-09-26</simpara>
1423   </note>
1424
1425   <para>
1426    This release contains a variety of fixes from 8.3.15.
1427    For information about new features in the 8.3 major release, see
1428    <xref linkend="release-8-3">.
1429   </para>
1430
1431   <sect2>
1432    <title>Migration to Version 8.3.16</title>
1433
1434    <para>
1435     A dump/restore is not required for those running 8.3.X.
1436     However, if you are upgrading from a version earlier than 8.3.8,
1437     see the release notes for 8.3.8.
1438    </para>
1439
1440   </sect2>
1441
1442   <sect2>
1443    <title>Changes</title>
1444
1445    <itemizedlist>
1446
1447     <listitem>
1448      <para>
1449       Fix bugs in indexing of in-doubt HOT-updated tuples (Tom Lane)
1450      </para>
1451
1452      <para>
1453       These bugs could result in index corruption after reindexing a system
1454       catalog.  They are not believed to affect user indexes.
1455      </para>
1456     </listitem>
1457
1458     <listitem>
1459      <para>
1460       Fix multiple bugs in GiST index page split processing (Heikki
1461       Linnakangas)
1462      </para>
1463
1464      <para>
1465       The probability of occurrence was low, but these could lead to index
1466       corruption.
1467      </para>
1468     </listitem>
1469
1470     <listitem>
1471      <para>
1472       Fix possible buffer overrun in <function>tsvector_concat()</>
1473       (Tom Lane)
1474      </para>
1475
1476      <para>
1477       The function could underestimate the amount of memory needed for its
1478       result, leading to server crashes.
1479      </para>
1480     </listitem>
1481
1482     <listitem>
1483      <para>
1484       Fix crash in <function>xml_recv</> when processing a
1485       <quote>standalone</> parameter (Tom Lane)
1486      </para>
1487     </listitem>
1488
1489     <listitem>
1490      <para>
1491       Avoid possibly accessing off the end of memory in <command>ANALYZE</>
1492       and in SJIS-2004 encoding conversion (Noah Misch)
1493      </para>
1494
1495      <para>
1496       This fixes some very-low-probability server crash scenarios.
1497      </para>
1498     </listitem>
1499
1500     <listitem>
1501      <para>
1502       Fix race condition in relcache init file invalidation (Tom Lane)
1503      </para>
1504
1505      <para>
1506       There was a window wherein a new backend process could read a stale init
1507       file but miss the inval messages that would tell it the data is stale.
1508       The result would be bizarre failures in catalog accesses, typically
1509       <quote>could not read block 0 in file ...</> later during startup.
1510      </para>
1511     </listitem>
1512
1513     <listitem>
1514      <para>
1515       Fix memory leak at end of a GiST index scan (Tom Lane)
1516      </para>
1517
1518      <para>
1519       Commands that perform many separate GiST index scans, such as
1520       verification of a new GiST-based exclusion constraint on a table
1521       already containing many rows, could transiently require large amounts of
1522       memory due to this leak.
1523      </para>
1524     </listitem>
1525
1526     <listitem>
1527      <para>
1528       Fix performance problem when constructing a large, lossy bitmap
1529       (Tom Lane)
1530      </para>
1531     </listitem>
1532
1533     <listitem>
1534      <para>
1535       Fix array- and path-creating functions to ensure padding bytes are
1536       zeroes (Tom Lane)
1537      </para>
1538
1539      <para>
1540       This avoids some situations where the planner will think that
1541       semantically-equal constants are not equal, resulting in poor
1542       optimization.
1543      </para>
1544     </listitem>
1545
1546     <listitem>
1547      <para>
1548       Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane)
1549      </para>
1550
1551      <para>
1552       This could lead to loss of committed transactions after a server crash.
1553      </para>
1554     </listitem>
1555
1556     <listitem>
1557      <para>
1558       Fix dump bug for <literal>VALUES</> in a view (Tom Lane)
1559      </para>
1560     </listitem>
1561
1562     <listitem>
1563      <para>
1564       Disallow <literal>SELECT FOR UPDATE/SHARE</> on sequences (Tom Lane)
1565      </para>
1566
1567      <para>
1568       This operation doesn't work as expected and can lead to failures.
1569      </para>
1570     </listitem>
1571
1572     <listitem>
1573      <para>
1574       Defend against integer overflow when computing size of a hash table (Tom
1575       Lane)
1576      </para>
1577     </listitem>
1578
1579     <listitem>
1580      <para>
1581       Fix cases where <command>CLUSTER</> might attempt to access
1582       already-removed TOAST data (Tom Lane)
1583      </para>
1584     </listitem>
1585
1586     <listitem>
1587      <para>
1588       Fix portability bugs in use of credentials control messages for
1589       <quote>peer</> authentication (Tom Lane)
1590      </para>
1591     </listitem>
1592
1593     <listitem>
1594      <para>
1595       Fix SSPI login when multiple roundtrips are required (Ahmed Shinwari,
1596       Magnus Hagander)
1597      </para>
1598
1599      <para>
1600       The typical symptom of this problem was <quote>The function requested is
1601       not supported</> errors during SSPI login.
1602      </para>
1603     </listitem>
1604
1605     <listitem>
1606      <para>
1607       Fix typo in <function>pg_srand48</> seed initialization (Andres Freund)
1608      </para>
1609
1610      <para>
1611       This led to failure to use all bits of the provided seed.  This function
1612       is not used on most platforms (only those without <function>srandom</>),
1613       and the potential security exposure from a less-random-than-expected
1614       seed seems minimal in any case.
1615      </para>
1616     </listitem>
1617
1618     <listitem>
1619      <para>
1620       Avoid integer overflow when the sum of <literal>LIMIT</> and
1621       <literal>OFFSET</> values exceeds 2^63 (Heikki Linnakangas)
1622      </para>
1623     </listitem>
1624
1625     <listitem>
1626      <para>
1627       Add overflow checks to <type>int4</> and <type>int8</> versions of
1628       <function>generate_series()</> (Robert Haas)
1629      </para>
1630     </listitem>
1631
1632     <listitem>
1633      <para>
1634       Fix trailing-zero removal in <function>to_char()</> (Marti Raudsepp)
1635      </para>
1636
1637      <para>
1638       In a format with <literal>FM</> and no digit positions
1639       after the decimal point, zeroes to the left of the decimal point could
1640       be removed incorrectly.
1641      </para>
1642     </listitem>
1643
1644     <listitem>
1645      <para>
1646       Fix <function>pg_size_pretty()</> to avoid overflow for inputs close to
1647       2^63 (Tom Lane)
1648      </para>
1649     </listitem>
1650
1651     <listitem>
1652      <para>
1653       In <application>pg_ctl</>, support silent mode for service registrations
1654       on Windows (MauMau)
1655      </para>
1656     </listitem>
1657
1658     <listitem>
1659      <para>
1660       Fix <application>psql</>'s counting of script file line numbers during
1661       <literal>COPY</> from a different file (Tom Lane)
1662      </para>
1663     </listitem>
1664
1665     <listitem>
1666      <para>
1667       Fix <application>pg_restore</>'s direct-to-database mode for
1668       <varname>standard_conforming_strings</> (Tom Lane)
1669      </para>
1670
1671      <para>
1672       <application>pg_restore</> could emit incorrect commands when restoring
1673       directly to a database server from an archive file that had been made
1674       with <varname>standard_conforming_strings</> set to <literal>on</>.
1675      </para>
1676     </listitem>
1677
1678     <listitem>
1679      <para>
1680       Fix write-past-buffer-end and memory leak in <application>libpq</>'s
1681       LDAP service lookup code (Albe Laurenz)
1682      </para>
1683     </listitem>
1684
1685     <listitem>
1686      <para>
1687       In <application>libpq</>, avoid failures when using nonblocking I/O
1688       and an SSL connection (Martin Pihlak, Tom Lane)
1689      </para>
1690     </listitem>
1691
1692     <listitem>
1693      <para>
1694       Improve libpq's handling of failures during connection startup
1695       (Tom Lane)
1696      </para>
1697
1698      <para>
1699       In particular, the response to a server report of <function>fork()</>
1700       failure during SSL connection startup is now saner.
1701      </para>
1702     </listitem>
1703
1704     <listitem>
1705      <para>
1706       Improve <application>libpq</>'s error reporting for SSL failures (Tom
1707       Lane)
1708      </para>
1709     </listitem>
1710
1711     <listitem>
1712      <para>
1713       Make <application>ecpglib</> write <type>double</> values with 15 digits
1714       precision (Akira Kurosawa)
1715      </para>
1716     </listitem>
1717
1718     <listitem>
1719      <para>
1720       In <application>ecpglib</>, be sure <literal>LC_NUMERIC</> setting is
1721       restored after an error (Michael Meskes)
1722      </para>
1723     </listitem>
1724
1725     <listitem>
1726      <para>
1727       Apply upstream fix for blowfish signed-character bug (CVE-2011-2483)
1728       (Tom Lane)
1729      </para>
1730
1731      <para>
1732       <filename>contrib/pg_crypto</>'s blowfish encryption code could give
1733       wrong results on platforms where char is signed (which is most),
1734       leading to encrypted passwords being weaker than they should be.
1735      </para>
1736     </listitem>
1737
1738     <listitem>
1739      <para>
1740       Fix memory leak in <filename>contrib/seg</> (Heikki Linnakangas)
1741      </para>
1742     </listitem>
1743
1744     <listitem>
1745      <para>
1746       Fix <function>pgstatindex()</> to give consistent results for empty
1747       indexes (Tom Lane)
1748      </para>
1749     </listitem>
1750
1751     <listitem>
1752      <para>
1753       Allow building with perl 5.14 (Alex Hunsaker)
1754      </para>
1755     </listitem>
1756
1757     <listitem>
1758      <para>
1759       Update configure script's method for probing existence of system
1760       functions (Tom Lane)
1761      </para>
1762
1763      <para>
1764       The version of autoconf we used in 8.3 and 8.2 could be fooled by
1765       compilers that perform link-time optimization.
1766      </para>
1767     </listitem>
1768
1769     <listitem>
1770      <para>
1771       Fix assorted issues with build and install file paths containing spaces
1772       (Tom Lane)
1773      </para>
1774     </listitem>
1775
1776     <listitem>
1777      <para>
1778       Update time zone data files to <application>tzdata</> release 2011i
1779       for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan.
1780      </para>
1781     </listitem>
1782
1783    </itemizedlist>
1784
1785   </sect2>
1786  </sect1>
1787
1788  <sect1 id="release-8-3-15">
1789   <title>Release 8.3.15</title>
1790
1791   <note>
1792   <title>Release Date</title>
1793   <simpara>2011-04-18</simpara>
1794   </note>
1795
1796   <para>
1797    This release contains a variety of fixes from 8.3.14.
1798    For information about new features in the 8.3 major release, see
1799    <xref linkend="release-8-3">.
1800   </para>
1801
1802   <sect2>
1803    <title>Migration to Version 8.3.15</title>
1804
1805    <para>
1806     A dump/restore is not required for those running 8.3.X.
1807     However, if you are upgrading from a version earlier than 8.3.8,
1808     see the release notes for 8.3.8.
1809    </para>
1810
1811   </sect2>
1812
1813   <sect2>
1814    <title>Changes</title>
1815
1816    <itemizedlist>
1817
1818     <listitem>
1819      <para>
1820       Disallow including a composite type in itself (Tom Lane)
1821      </para>
1822
1823      <para>
1824       This prevents scenarios wherein the server could recurse infinitely
1825       while processing the composite type.  While there are some possible
1826       uses for such a structure, they don't seem compelling enough to
1827       justify the effort required to make sure it always works safely.
1828      </para>
1829     </listitem>
1830
1831     <listitem>
1832      <para>
1833       Avoid potential deadlock during catalog cache initialization
1834       (Nikhil Sontakke)
1835      </para>
1836
1837      <para>
1838       In some cases the cache loading code would acquire share lock on a
1839       system index before locking the index's catalog.  This could deadlock
1840       against processes trying to acquire exclusive locks in the other,
1841       more standard order.
1842      </para>
1843     </listitem>
1844
1845     <listitem>
1846      <para>
1847       Fix dangling-pointer problem in <literal>BEFORE ROW UPDATE</> trigger
1848       handling when there was a concurrent update to the target tuple
1849       (Tom Lane)
1850      </para>
1851
1852      <para>
1853       This bug has been observed to result in intermittent <quote>cannot
1854       extract system attribute from virtual tuple</> failures while trying to
1855       do <literal>UPDATE RETURNING ctid</>.  There is a very small probability
1856       of more serious errors, such as generating incorrect index entries for
1857       the updated tuple.
1858      </para>
1859     </listitem>
1860
1861     <listitem>
1862      <para>
1863       Disallow <command>DROP TABLE</> when there are pending deferred trigger
1864       events for the table (Tom Lane)
1865      </para>
1866
1867      <para>
1868       Formerly the <command>DROP</> would go through, leading to
1869       <quote>could not open relation with OID nnn</> errors when the
1870       triggers were eventually fired.
1871      </para>
1872     </listitem>
1873
1874     <listitem>
1875      <para>
1876       Fix PL/Python memory leak involving array slices (Daniel Popowich)
1877      </para>
1878     </listitem>
1879
1880     <listitem>
1881      <para>
1882       Fix <application>pg_restore</> to cope with long lines (over 1KB) in
1883       TOC files (Tom Lane)
1884      </para>
1885     </listitem>
1886
1887     <listitem>
1888      <para>
1889       Put in more safeguards against crashing due to division-by-zero
1890       with overly enthusiastic compiler optimization (Aurelien Jarno)
1891      </para>
1892     </listitem>
1893
1894     <listitem>
1895      <para>
1896       Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane)
1897      </para>
1898
1899      <para>
1900       There was a hard-wired assumption that this system function was not
1901       available on MIPS hardware on these systems.  Use a compile-time test
1902       instead, since more recent versions have it.
1903      </para>
1904     </listitem>
1905
1906     <listitem>
1907      <para>
1908       Fix compilation failures on HP-UX (Heikki Linnakangas)
1909      </para>
1910     </listitem>
1911
1912     <listitem>
1913      <para>
1914       Fix version-incompatibility problem with <application>libintl</> on
1915       Windows (Hiroshi Inoue)
1916      </para>
1917     </listitem>
1918
1919     <listitem>
1920      <para>
1921       Fix usage of <application>xcopy</> in Windows build scripts to
1922       work correctly under Windows 7 (Andrew Dunstan)
1923      </para>
1924
1925      <para>
1926       This affects the build scripts only, not installation or usage.
1927      </para>
1928     </listitem>
1929
1930     <listitem>
1931      <para>
1932       Fix path separator used by <application>pg_regress</> on Cygwin
1933       (Andrew Dunstan)
1934      </para>
1935     </listitem>
1936
1937     <listitem>
1938      <para>
1939       Update time zone data files to <application>tzdata</> release 2011f
1940       for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa,
1941       and Turkey; also historical corrections for South Australia, Alaska,
1942       and Hawaii.
1943      </para>
1944     </listitem>
1945
1946    </itemizedlist>
1947
1948   </sect2>
1949  </sect1>
1950
1951  <sect1 id="release-8-3-14">
1952   <title>Release 8.3.14</title>
1953
1954   <note>
1955   <title>Release Date</title>
1956   <simpara>2011-01-31</simpara>
1957   </note>
1958
1959   <para>
1960    This release contains a variety of fixes from 8.3.13.
1961    For information about new features in the 8.3 major release, see
1962    <xref linkend="release-8-3">.
1963   </para>
1964
1965   <sect2>
1966    <title>Migration to Version 8.3.14</title>
1967
1968    <para>
1969     A dump/restore is not required for those running 8.3.X.
1970     However, if you are upgrading from a version earlier than 8.3.8,
1971     see the release notes for 8.3.8.
1972    </para>
1973
1974   </sect2>
1975
1976   <sect2>
1977    <title>Changes</title>
1978
1979    <itemizedlist>
1980
1981     <listitem>
1982      <para>
1983       Avoid failures when <command>EXPLAIN</> tries to display a simple-form
1984       <literal>CASE</> expression (Tom Lane)
1985      </para>
1986
1987      <para>
1988       If the <literal>CASE</>'s test expression was a constant, the planner
1989       could simplify the <literal>CASE</> into a form that confused the
1990       expression-display code, resulting in <quote>unexpected CASE WHEN
1991       clause</> errors.
1992      </para>
1993     </listitem>
1994
1995     <listitem>
1996      <para>
1997       Fix assignment to an array slice that is before the existing range
1998       of subscripts (Tom Lane)
1999      </para>
2000
2001      <para>
2002       If there was a gap between the newly added subscripts and the first
2003       pre-existing subscript, the code miscalculated how many entries needed
2004       to be copied from the old array's null bitmap, potentially leading to
2005       data corruption or crash.
2006      </para>
2007     </listitem>
2008
2009     <listitem>
2010      <para>
2011       Avoid unexpected conversion overflow in planner for very distant date
2012       values (Tom Lane)
2013      </para>
2014
2015      <para>
2016       The <type>date</> type supports a wider range of dates than can be
2017       represented by the <type>timestamp</> types, but the planner assumed it
2018       could always convert a date to timestamp with impunity.
2019      </para>
2020     </listitem>
2021
2022     <listitem>
2023      <para>
2024       Fix <application>pg_restore</>'s text output for large objects (BLOBs)
2025       when <varname>standard_conforming_strings</> is on (Tom Lane)
2026      </para>
2027
2028      <para>
2029       Although restoring directly to a database worked correctly, string
2030       escaping was incorrect if <application>pg_restore</> was asked for
2031       SQL text output and <varname>standard_conforming_strings</> had been
2032       enabled in the source database.
2033      </para>
2034     </listitem>
2035
2036     <listitem>
2037      <para>
2038       Fix erroneous parsing of <type>tsquery</> values containing
2039       <literal>... &amp; !(subexpression) | ...</literal> (Tom Lane)
2040      </para>
2041
2042      <para>
2043       Queries containing this combination of operators were not executed
2044       correctly.  The same error existed in <filename>contrib/intarray</>'s
2045       <type>query_int</> type and <filename>contrib/ltree</>'s
2046       <type>ltxtquery</> type.
2047      </para>
2048     </listitem>
2049
2050     <listitem>
2051      <para>
2052       Fix buffer overrun in <filename>contrib/intarray</>'s input function
2053       for the <type>query_int</> type (Apple)
2054      </para>
2055
2056      <para>
2057       This bug is a security risk since the function's return address could
2058       be overwritten.  Thanks to Apple Inc's security team for reporting this
2059       issue and supplying the fix.  (CVE-2010-4015)
2060      </para>
2061     </listitem>
2062
2063     <listitem>
2064      <para>
2065       Fix bug in <filename>contrib/seg</>'s GiST picksplit algorithm
2066       (Alexander Korotkov)
2067      </para>
2068
2069      <para>
2070       This could result in considerable inefficiency, though not actually
2071       incorrect answers, in a GiST index on a <type>seg</> column.
2072       If you have such an index, consider <command>REINDEX</>ing it after
2073       installing this update.  (This is identical to the bug that was fixed in
2074       <filename>contrib/cube</> in the previous update.)
2075      </para>
2076     </listitem>
2077
2078    </itemizedlist>
2079
2080   </sect2>
2081  </sect1>
2082
2083  <sect1 id="release-8-3-13">
2084   <title>Release 8.3.13</title>
2085
2086   <note>
2087   <title>Release Date</title>
2088   <simpara>2010-12-16</simpara>
2089   </note>
2090
2091   <para>
2092    This release contains a variety of fixes from 8.3.12.
2093    For information about new features in the 8.3 major release, see
2094    <xref linkend="release-8-3">.
2095   </para>
2096
2097   <sect2>
2098    <title>Migration to Version 8.3.13</title>
2099
2100    <para>
2101     A dump/restore is not required for those running 8.3.X.
2102     However, if you are upgrading from a version earlier than 8.3.8,
2103     see the release notes for 8.3.8.
2104    </para>
2105
2106   </sect2>
2107
2108   <sect2>
2109    <title>Changes</title>
2110
2111    <itemizedlist>
2112
2113     <listitem>
2114      <para>
2115       Force the default
2116       <link linkend="guc-wal-sync-method"><varname>wal_sync_method</></link>
2117       to be <literal>fdatasync</> on Linux (Tom Lane, Marti Raudsepp)
2118      </para>
2119
2120      <para>
2121       The default on Linux has actually been <literal>fdatasync</> for many
2122       years, but recent kernel changes caused <productname>PostgreSQL</> to
2123       choose <literal>open_datasync</> instead.  This choice did not result
2124       in any performance improvement, and caused outright failures on
2125       certain filesystems, notably <literal>ext4</> with the
2126       <literal>data=journal</> mount option.
2127      </para>
2128     </listitem>
2129
2130     <listitem>
2131      <para>
2132       Fix assorted bugs in WAL replay logic for GIN indexes (Tom Lane)
2133      </para>
2134
2135      <para>
2136       This could result in <quote>bad buffer id: 0</> failures or
2137       corruption of index contents during replication.
2138      </para>
2139     </listitem>
2140
2141     <listitem>
2142      <para>
2143       Fix recovery from base backup when the starting checkpoint WAL record
2144       is not in the same WAL segment as its redo point (Jeff Davis)
2145      </para>
2146     </listitem>
2147
2148     <listitem>
2149      <para>
2150       Fix persistent slowdown of autovacuum workers when multiple workers
2151       remain active for a long time (Tom Lane)
2152      </para>
2153
2154      <para>
2155       The effective <varname>vacuum_cost_limit</> for an autovacuum worker
2156       could drop to nearly zero if it processed enough tables, causing it
2157       to run extremely slowly.
2158      </para>
2159     </listitem>
2160
2161     <listitem>
2162      <para>
2163       Add support for detecting register-stack overrun on <literal>IA64</>
2164       (Tom Lane)
2165      </para>
2166
2167      <para>
2168       The <literal>IA64</> architecture has two hardware stacks.  Full
2169       prevention of stack-overrun failures requires checking both.
2170      </para>
2171     </listitem>
2172
2173     <listitem>
2174      <para>
2175       Add a check for stack overflow in <function>copyObject()</> (Tom Lane)
2176      </para>
2177
2178      <para>
2179       Certain code paths could crash due to stack overflow given a
2180       sufficiently complex query.
2181      </para>
2182     </listitem>
2183
2184     <listitem>
2185      <para>
2186       Fix detection of page splits in temporary GiST indexes (Heikki
2187       Linnakangas)
2188      </para>
2189
2190      <para>
2191       It is possible to have a <quote>concurrent</> page split in a
2192       temporary index, if for example there is an open cursor scanning the
2193       index when an insertion is done.  GiST failed to detect this case and
2194       hence could deliver wrong results when execution of the cursor
2195       continued.
2196      </para>
2197     </listitem>
2198
2199     <listitem>
2200      <para>
2201       Avoid memory leakage while <command>ANALYZE</>'ing complex index
2202       expressions (Tom Lane)
2203      </para>
2204     </listitem>
2205
2206     <listitem>
2207      <para>
2208       Ensure an index that uses a whole-row Var still depends on its table
2209       (Tom Lane)
2210      </para>
2211
2212      <para>
2213       An index declared like <literal>create index i on t (foo(t.*))</>
2214       would not automatically get dropped when its table was dropped.
2215      </para>
2216     </listitem>
2217
2218     <listitem>
2219      <para>
2220       Do not <quote>inline</> a SQL function with multiple <literal>OUT</>
2221       parameters (Tom Lane)
2222      </para>
2223
2224      <para>
2225       This avoids a possible crash due to loss of information about the
2226       expected result rowtype.
2227      </para>
2228     </listitem>
2229
2230     <listitem>
2231      <para>
2232       Behave correctly if <literal>ORDER BY</>, <literal>LIMIT</>,
2233       <literal>FOR UPDATE</>, or <literal>WITH</> is attached to the
2234       <literal>VALUES</> part of <literal>INSERT ... VALUES</> (Tom Lane)
2235      </para>
2236     </listitem>
2237
2238     <listitem>
2239      <para>
2240       Fix constant-folding of <literal>COALESCE()</> expressions (Tom Lane)
2241      </para>
2242
2243      <para>
2244       The planner would sometimes attempt to evaluate sub-expressions that
2245       in fact could never be reached, possibly leading to unexpected errors.
2246      </para>
2247     </listitem>
2248
2249     <listitem>
2250      <para>
2251       Fix postmaster crash when connection acceptance
2252       (<function>accept()</> or one of the calls made immediately after it)
2253       fails, and the postmaster was compiled with GSSAPI support (Alexander
2254       Chernikov)
2255      </para>
2256     </listitem>
2257
2258     <listitem>
2259      <para>
2260       Fix missed unlink of temporary files when <varname>log_temp_files</>
2261       is active (Tom Lane)
2262      </para>
2263
2264      <para>
2265       If an error occurred while attempting to emit the log message, the
2266       unlink was not done, resulting in accumulation of temp files.
2267      </para>
2268     </listitem>
2269
2270     <listitem>
2271      <para>
2272       Add print functionality for <structname>InhRelation</> nodes (Tom Lane)
2273      </para>
2274
2275      <para>
2276       This avoids a failure when <varname>debug_print_parse</> is enabled
2277       and certain types of query are executed.
2278      </para>
2279     </listitem>
2280
2281     <listitem>
2282      <para>
2283       Fix incorrect calculation of distance from a point to a horizontal
2284       line segment (Tom Lane)
2285      </para>
2286
2287      <para>
2288       This bug affected several different geometric distance-measurement
2289       operators.
2290      </para>
2291     </listitem>
2292
2293     <listitem>
2294      <para>
2295       Fix <application>PL/pgSQL</>'s handling of <quote>simple</>
2296       expressions to not fail in recursion or error-recovery cases (Tom Lane)
2297      </para>
2298     </listitem>
2299
2300     <listitem>
2301      <para>
2302       Fix <application>PL/Python</>'s handling of set-returning functions
2303       (Jan Urbanski)
2304      </para>
2305
2306      <para>
2307       Attempts to call SPI functions within the iterator generating a set
2308       result would fail.
2309      </para>
2310     </listitem>
2311
2312     <listitem>
2313      <para>
2314       Fix bug in <filename>contrib/cube</>'s GiST picksplit algorithm
2315       (Alexander Korotkov)
2316      </para>
2317
2318      <para>
2319       This could result in considerable inefficiency, though not actually
2320       incorrect answers, in a GiST index on a <type>cube</> column.
2321       If you have such an index, consider <command>REINDEX</>ing it after
2322       installing this update.
2323      </para>
2324     </listitem>
2325
2326     <listitem>
2327      <para>
2328       Don't emit <quote>identifier will be truncated</> notices in
2329       <filename>contrib/dblink</> except when creating new connections
2330       (Itagaki Takahiro)
2331      </para>
2332     </listitem>
2333
2334     <listitem>
2335      <para>
2336       Fix potential coredump on missing public key in
2337       <filename>contrib/pgcrypto</> (Marti Raudsepp)
2338      </para>
2339     </listitem>
2340
2341     <listitem>
2342      <para>
2343       Fix memory leak in <filename>contrib/xml2</>'s XPath query functions
2344       (Tom Lane)
2345      </para>
2346     </listitem>
2347
2348     <listitem>
2349      <para>
2350       Update time zone data files to <application>tzdata</> release 2010o
2351       for DST law changes in Fiji and Samoa;
2352       also historical corrections for Hong Kong.
2353      </para>
2354     </listitem>
2355
2356    </itemizedlist>
2357
2358   </sect2>
2359  </sect1>
2360
2361  <sect1 id="release-8-3-12">
2362   <title>Release 8.3.12</title>
2363
2364   <note>
2365   <title>Release Date</title>
2366   <simpara>2010-10-04</simpara>
2367   </note>
2368
2369   <para>
2370    This release contains a variety of fixes from 8.3.11.
2371    For information about new features in the 8.3 major release, see
2372    <xref linkend="release-8-3">.
2373   </para>
2374
2375   <sect2>
2376    <title>Migration to Version 8.3.12</title>
2377
2378    <para>
2379     A dump/restore is not required for those running 8.3.X.
2380     However, if you are upgrading from a version earlier than 8.3.8,
2381     see the release notes for 8.3.8.
2382    </para>
2383
2384   </sect2>
2385
2386   <sect2>
2387    <title>Changes</title>
2388
2389    <itemizedlist>
2390
2391     <listitem>
2392      <para>
2393       Use a separate interpreter for each calling SQL userid in PL/Perl and
2394       PL/Tcl (Tom Lane)
2395      </para>
2396
2397      <para>
2398       This change prevents security problems that can be caused by subverting
2399       Perl or Tcl code that will be executed later in the same session under
2400       another SQL user identity (for example, within a <literal>SECURITY
2401       DEFINER</> function).  Most scripting languages offer numerous ways that
2402       that might be done, such as redefining standard functions or operators
2403       called by the target function.  Without this change, any SQL user with
2404       Perl or Tcl language usage rights can do essentially anything with the
2405       SQL privileges of the target function's owner.
2406      </para>
2407
2408      <para>
2409       The cost of this change is that intentional communication among Perl
2410       and Tcl functions becomes more difficult.  To provide an escape hatch,
2411       PL/PerlU and PL/TclU functions continue to use only one interpreter
2412       per session.  This is not considered a security issue since all such
2413       functions execute at the trust level of a database superuser already.
2414      </para>
2415
2416      <para>
2417       It is likely that third-party procedural languages that claim to offer
2418       trusted execution have similar security issues.  We advise contacting
2419       the authors of any PL you are depending on for security-critical
2420       purposes.
2421      </para>
2422
2423      <para>
2424       Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433).
2425      </para>
2426     </listitem>
2427
2428     <listitem>
2429      <para>
2430       Prevent possible crashes in <function>pg_get_expr()</> by disallowing
2431       it from being called with an argument that is not one of the system
2432       catalog columns it's intended to be used with
2433       (Heikki Linnakangas, Tom Lane)
2434      </para>
2435     </listitem>
2436
2437     <listitem>
2438      <para>
2439       Treat exit code 128 (<literal>ERROR_WAIT_NO_CHILDREN</>) as non-fatal on
2440       Windows (Magnus Hagander)
2441      </para>
2442
2443      <para>
2444       Under high load, Windows processes will sometimes fail at startup with
2445       this error code.  Formerly the postmaster treated this as a panic
2446       condition and restarted the whole database, but that seems to be
2447       an overreaction.
2448      </para>
2449     </listitem>
2450
2451     <listitem>
2452      <para>
2453       Fix incorrect usage of non-strict OR joinclauses in Append indexscans
2454       (Tom Lane)
2455      </para>
2456
2457      <para>
2458       This is a back-patch of an 8.4 fix that was missed in the 8.3 branch.
2459       This corrects an error introduced in 8.3.8 that could cause incorrect
2460       results for outer joins when the inner relation is an inheritance tree
2461       or <literal>UNION ALL</> subquery.
2462      </para>
2463     </listitem>
2464
2465     <listitem>
2466      <para>
2467       Fix possible duplicate scans of <literal>UNION ALL</> member relations
2468       (Tom Lane)
2469      </para>
2470     </listitem>
2471
2472     <listitem>
2473      <para>
2474       Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane)
2475      </para>
2476
2477      <para>
2478       This occurred when a sub-select contains a join alias reference that
2479       expands into an expression containing another sub-select.
2480      </para>
2481     </listitem>
2482
2483     <listitem>
2484      <para>
2485       Fix failure to mark cached plans as transient (Tom Lane)
2486      </para>
2487
2488      <para>
2489       If a plan is prepared while <command>CREATE INDEX CONCURRENTLY</> is
2490       in progress for one of the referenced tables, it is supposed to be
2491       re-planned once the index is ready for use.  This was not happening
2492       reliably.
2493      </para>
2494     </listitem>
2495
2496     <listitem>
2497      <para>
2498       Reduce PANIC to ERROR in some occasionally-reported btree failure cases,
2499       and provide additional detail in the resulting error messages
2500       (Tom Lane)
2501      </para>
2502
2503      <para>
2504       This should improve the system's robustness with corrupted indexes.
2505      </para>
2506     </listitem>
2507
2508     <listitem>
2509      <para>
2510       Prevent show_session_authorization() from crashing within autovacuum
2511       processes (Tom Lane)
2512      </para>
2513     </listitem>
2514
2515     <listitem>
2516      <para>
2517       Defend against functions returning setof record where not all the
2518       returned rows are actually of the same rowtype (Tom Lane)
2519      </para>
2520     </listitem>
2521
2522     <listitem>
2523      <para>
2524       Fix possible failure when hashing a pass-by-reference function result
2525       (Tao Ma, Tom Lane)
2526      </para>
2527     </listitem>
2528
2529     <listitem>
2530      <para>
2531       Improve merge join's handling of NULLs in the join columns (Tom Lane)
2532      </para>
2533
2534      <para>
2535       A merge join can now stop entirely upon reaching the first NULL,
2536       if the sort order is such that NULLs sort high.
2537      </para>
2538     </listitem>
2539
2540     <listitem>
2541      <para>
2542       Take care to fsync the contents of lockfiles (both
2543       <filename>postmaster.pid</> and the socket lockfile) while writing them
2544       (Tom Lane)
2545      </para>
2546
2547      <para>
2548       This omission could result in corrupted lockfile contents if the
2549       machine crashes shortly after postmaster start.  That could in turn
2550       prevent subsequent attempts to start the postmaster from succeeding,
2551       until the lockfile is manually removed.
2552      </para>
2553     </listitem>
2554
2555     <listitem>
2556      <para>
2557       Avoid recursion while assigning XIDs to heavily-nested
2558       subtransactions (Andres Freund, Robert Haas)
2559      </para>
2560
2561      <para>
2562       The original coding could result in a crash if there was limited
2563       stack space.
2564      </para>
2565     </listitem>
2566
2567     <listitem>
2568      <para>
2569       Avoid holding open old WAL segments in the walwriter process
2570       (Magnus Hagander, Heikki Linnakangas)
2571      </para>
2572
2573      <para>
2574       The previous coding would prevent removal of no-longer-needed segments.
2575      </para>
2576     </listitem>
2577
2578     <listitem>
2579      <para>
2580       Fix <varname>log_line_prefix</>'s <literal>%i</> escape,
2581       which could produce junk early in backend startup (Tom Lane)
2582      </para>
2583     </listitem>
2584
2585     <listitem>
2586      <para>
2587       Fix possible data corruption in <command>ALTER TABLE ... SET
2588       TABLESPACE</> when archiving is enabled (Jeff Davis)
2589      </para>
2590     </listitem>
2591
2592     <listitem>
2593      <para>
2594       Allow <command>CREATE DATABASE</> and <command>ALTER DATABASE ... SET
2595       TABLESPACE</> to be interrupted by query-cancel (Guillaume Lelarge)
2596      </para>
2597     </listitem>
2598
2599     <listitem>
2600      <para>
2601       Fix <command>REASSIGN OWNED</> to handle operator classes and families
2602       (Asko Tiidumaa)
2603      </para>
2604     </listitem>
2605
2606     <listitem>
2607      <para>
2608       Fix possible core dump when comparing two empty <type>tsquery</> values
2609       (Tom Lane)
2610      </para>
2611     </listitem>
2612
2613     <listitem>
2614      <para>
2615       Fix <literal>LIKE</>'s handling of patterns containing <literal>%</>
2616       followed by <literal>_</> (Tom Lane)
2617      </para>
2618
2619      <para>
2620       We've fixed this before, but there were still some incorrectly-handled
2621       cases.
2622      </para>
2623     </listitem>
2624
2625     <listitem>
2626      <para>
2627       In PL/Python, defend against null pointer results from
2628       <function>PyCObject_AsVoidPtr</> and <function>PyCObject_FromVoidPtr</>
2629       (Peter Eisentraut)
2630      </para>
2631     </listitem>
2632
2633     <listitem>
2634      <para>
2635       Make psql recognize <command>DISCARD ALL</> as a command that should
2636       not be encased in a transaction block in autocommit-off mode
2637       (Itagaki Takahiro)
2638      </para>
2639     </listitem>
2640
2641     <listitem>
2642      <para>
2643       Fix <application>ecpg</> to process data from <literal>RETURNING</>
2644       clauses correctly (Michael Meskes)
2645      </para>
2646     </listitem>
2647
2648     <listitem>
2649      <para>
2650       Improve <filename>contrib/dblink</>'s handling of tables containing
2651       dropped columns (Tom Lane)
2652      </para>
2653     </listitem>
2654
2655     <listitem>
2656      <para>
2657       Fix connection leak after <quote>duplicate connection name</quote>
2658       errors in <filename>contrib/dblink</> (Itagaki Takahiro)
2659      </para>
2660     </listitem>
2661
2662     <listitem>
2663      <para>
2664       Fix <filename>contrib/dblink</> to handle connection names longer than
2665       62 bytes correctly (Itagaki Takahiro)
2666      </para>
2667     </listitem>
2668
2669     <listitem>
2670      <para>
2671       Add <function>hstore(text, text)</>
2672       function to <filename>contrib/hstore</> (Robert Haas)
2673      </para>
2674
2675      <para>
2676       This function is the recommended substitute for the now-deprecated
2677       <literal>=&gt;</> operator.  It was back-patched so that future-proofed
2678       code can be used with older server versions.  Note that the patch will
2679       be effective only after <filename>contrib/hstore</> is installed or
2680       reinstalled in a particular database.  Users might prefer to execute
2681       the <command>CREATE FUNCTION</> command by hand, instead.
2682      </para>
2683     </listitem>
2684
2685     <listitem>
2686      <para>
2687       Update build infrastructure and documentation to reflect the source code
2688       repository's move from CVS to Git (Magnus Hagander and others)
2689      </para>
2690     </listitem>
2691
2692     <listitem>
2693      <para>
2694       Update time zone data files to <application>tzdata</> release 2010l
2695       for DST law changes in Egypt and Palestine; also historical corrections
2696       for Finland.
2697      </para>
2698
2699      <para>
2700       This change also adds new names for two Micronesian timezones:
2701       Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred
2702       abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over
2703       Pacific/Ponape.
2704      </para>
2705     </listitem>
2706
2707     <listitem>
2708      <para>
2709       Make Windows' <quote>N. Central Asia Standard Time</> timezone map to
2710       Asia/Novosibirsk, not Asia/Almaty (Magnus Hagander)
2711      </para>
2712
2713      <para>
2714       Microsoft changed the DST behavior of this zone in the timezone update
2715       from KB976098. Asia/Novosibirsk is a better match to its new behavior.
2716      </para>
2717     </listitem>
2718
2719    </itemizedlist>
2720
2721   </sect2>
2722  </sect1>
2723
2724  <sect1 id="release-8-3-11">
2725   <title>Release 8.3.11</title>
2726
2727   <note>
2728   <title>Release Date</title>
2729   <simpara>2010-05-17</simpara>
2730   </note>
2731
2732   <para>
2733    This release contains a variety of fixes from 8.3.10.
2734    For information about new features in the 8.3 major release, see
2735    <xref linkend="release-8-3">.
2736   </para>
2737
2738   <sect2>
2739    <title>Migration to Version 8.3.11</title>
2740
2741    <para>
2742     A dump/restore is not required for those running 8.3.X.
2743     However, if you are upgrading from a version earlier than 8.3.8,
2744     see the release notes for 8.3.8.
2745    </para>
2746
2747   </sect2>
2748
2749   <sect2>
2750    <title>Changes</title>
2751
2752    <itemizedlist>
2753
2754     <listitem>
2755      <para>
2756       Enforce restrictions in <literal>plperl</> using an opmask applied to
2757       the whole interpreter, instead of using <filename>Safe.pm</>
2758       (Tim Bunce, Andrew Dunstan)
2759      </para>
2760
2761      <para>
2762       Recent developments have convinced us that <filename>Safe.pm</> is too
2763       insecure to rely on for making <literal>plperl</> trustable.  This
2764       change removes use of <filename>Safe.pm</> altogether, in favor of using
2765       a separate interpreter with an opcode mask that is always applied.
2766       Pleasant side effects of the change include that it is now possible to
2767       use Perl's <literal>strict</> pragma in a natural way in
2768       <literal>plperl</>, and that Perl's <literal>$a</> and <literal>$b</>
2769       variables work as expected in sort routines, and that function
2770       compilation is significantly faster.  (CVE-2010-1169)
2771      </para>
2772     </listitem>
2773
2774     <listitem>
2775      <para>
2776       Prevent PL/Tcl from executing untrustworthy code from
2777       <structname>pltcl_modules</> (Tom)
2778      </para>
2779
2780      <para>
2781       PL/Tcl's feature for autoloading Tcl code from a database table
2782       could be exploited for trojan-horse attacks, because there was no
2783       restriction on who could create or insert into that table.  This change
2784       disables the feature unless <structname>pltcl_modules</> is owned by a
2785       superuser.  (However, the permissions on the table are not checked, so
2786       installations that really need a less-than-secure modules table can
2787       still grant suitable privileges to trusted non-superusers.)  Also,
2788       prevent loading code into the unrestricted <quote>normal</> Tcl
2789       interpreter unless we are really going to execute a <literal>pltclu</>
2790       function.  (CVE-2010-1170)
2791      </para>
2792     </listitem>
2793
2794     <listitem>
2795      <para>
2796       Fix possible crash if a cache reset message is received during
2797       rebuild of a relcache entry (Heikki)
2798      </para>
2799
2800      <para>
2801       This error was introduced in 8.3.10 while fixing a related failure.
2802      </para>
2803     </listitem>
2804
2805     <listitem>
2806      <para>
2807       Apply per-function GUC settings while running the language validator
2808       for the function (Itagaki Takahiro)
2809      </para>
2810
2811      <para>
2812       This avoids failures if the function's code is invalid without the
2813       setting; an example is that SQL functions may not parse if the
2814       <varname>search_path</> is not correct.
2815      </para>
2816     </listitem>
2817
2818     <listitem>
2819      <para>
2820       Do not allow an unprivileged user to reset superuser-only parameter
2821       settings (Alvaro)
2822      </para>
2823
2824      <para>
2825       Previously, if an unprivileged user ran <literal>ALTER USER ... RESET
2826       ALL</> for himself, or <literal>ALTER DATABASE ... RESET ALL</> for
2827       a database he owns, this would remove all special parameter settings
2828       for the user or database, even ones that are only supposed to be
2829       changeable by a superuser.  Now, the <command>ALTER</> will only
2830       remove the parameters that the user has permission to change.
2831      </para>
2832     </listitem>
2833
2834     <listitem>
2835      <para>
2836       Avoid possible crash during backend shutdown if shutdown occurs
2837       when a <literal>CONTEXT</> addition would be made to log entries (Tom)
2838      </para>
2839
2840      <para>
2841       In some cases the context-printing function would fail because the
2842       current transaction had already been rolled back when it came time
2843       to print a log message.
2844      </para>
2845     </listitem>
2846
2847     <listitem>
2848      <para>
2849       Ensure the archiver process responds to changes in
2850       <varname>archive_command</> as soon as possible (Tom)
2851      </para>
2852     </listitem>
2853
2854     <listitem>
2855      <para>
2856       Update pl/perl's <filename>ppport.h</> for modern Perl versions
2857       (Andrew)
2858      </para>
2859     </listitem>
2860
2861     <listitem>
2862      <para>
2863       Fix assorted memory leaks in pl/python (Andreas Freund, Tom)
2864      </para>
2865     </listitem>
2866
2867     <listitem>
2868      <para>
2869       Prevent infinite recursion in <application>psql</> when expanding
2870       a variable that refers to itself (Tom)
2871      </para>
2872     </listitem>
2873
2874     <listitem>
2875      <para>
2876       Fix <application>psql</>'s <literal>\copy</> to not add spaces around
2877       a dot within <literal>\copy (select ...)</> (Tom)
2878      </para>
2879
2880      <para>
2881       Addition of spaces around the decimal point in a numeric literal would
2882       result in a syntax error.
2883      </para>
2884     </listitem>
2885
2886     <listitem>
2887      <para>
2888       Fix unnecessary <quote>GIN indexes do not support whole-index scans</>
2889       errors for unsatisfiable queries using <filename>contrib/intarray</>
2890       operators (Tom)
2891      </para>
2892     </listitem>
2893
2894     <listitem>
2895      <para>
2896       Ensure that <filename>contrib/pgstattuple</> functions respond to cancel
2897       interrupts promptly (Tatsuhito Kasahara)
2898      </para>
2899     </listitem>
2900
2901     <listitem>
2902      <para>
2903       Make server startup deal properly with the case that
2904       <function>shmget()</> returns <literal>EINVAL</> for an existing
2905       shared memory segment (Tom)
2906      </para>
2907
2908      <para>
2909       This behavior has been observed on BSD-derived kernels including OS X.
2910       It resulted in an entirely-misleading startup failure complaining that
2911       the shared memory request size was too large.
2912      </para>
2913     </listitem>
2914
2915     <listitem>
2916      <para>
2917       Avoid possible crashes in syslogger process on Windows (Heikki)
2918      </para>
2919     </listitem>
2920
2921     <listitem>
2922      <para>
2923       Deal more robustly with incomplete time zone information in the
2924       Windows registry (Magnus)
2925      </para>
2926     </listitem>
2927
2928     <listitem>
2929      <para>
2930       Update the set of known Windows time zone names (Magnus)
2931      </para>
2932     </listitem>
2933
2934     <listitem>
2935      <para>
2936       Update time zone data files to <application>tzdata</> release 2010j
2937       for DST law changes in Argentina, Australian Antarctic, Bangladesh,
2938       Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia;
2939       also historical corrections for Taiwan.
2940      </para>
2941
2942      <para>
2943       Also, add <literal>PKST</> (Pakistan Summer Time) to the default set of
2944       timezone abbreviations.
2945      </para>
2946     </listitem>
2947
2948    </itemizedlist>
2949
2950   </sect2>
2951  </sect1>
2952
2953  <sect1 id="release-8-3-10">
2954   <title>Release 8.3.10</title>
2955
2956   <note>
2957   <title>Release Date</title>
2958   <simpara>2010-03-15</simpara>
2959   </note>
2960
2961   <para>
2962    This release contains a variety of fixes from 8.3.9.
2963    For information about new features in the 8.3 major release, see
2964    <xref linkend="release-8-3">.
2965   </para>
2966
2967   <sect2>
2968    <title>Migration to Version 8.3.10</title>
2969
2970    <para>
2971     A dump/restore is not required for those running 8.3.X.
2972     However, if you are upgrading from a version earlier than 8.3.8,
2973     see the release notes for 8.3.8.
2974    </para>
2975
2976   </sect2>
2977
2978   <sect2>
2979    <title>Changes</title>
2980
2981    <itemizedlist>
2982
2983     <listitem>
2984      <para>
2985       Add new configuration parameter <varname>ssl_renegotiation_limit</> to
2986       control how often we do session key renegotiation for an SSL connection
2987       (Magnus)
2988      </para>
2989
2990      <para>
2991       This can be set to zero to disable renegotiation completely, which may
2992       be required if a broken SSL library is used.  In particular, some
2993       vendors are shipping stopgap patches for CVE-2009-3555 that cause
2994       renegotiation attempts to fail.
2995      </para>
2996     </listitem>
2997
2998     <listitem>
2999      <para>
3000       Fix possible deadlock during backend startup (Tom)
3001      </para>
3002     </listitem>
3003
3004     <listitem>
3005      <para>
3006       Fix possible crashes due to not handling errors during relcache reload
3007       cleanly (Tom)
3008      </para>
3009     </listitem>
3010
3011     <listitem>
3012      <para>
3013       Fix possible crash due to use of dangling pointer to a cached plan
3014       (Tatsuo)
3015      </para>
3016     </listitem>
3017
3018     <listitem>
3019      <para>
3020       Fix possible crashes when trying to recover from a failure in
3021       subtransaction start (Tom)
3022      </para>
3023     </listitem>
3024
3025     <listitem>
3026      <para>
3027       Fix server memory leak associated with use of savepoints and a client
3028       encoding different from server's encoding (Tom)
3029      </para>
3030     </listitem>
3031
3032     <listitem>
3033      <para>
3034       Fix incorrect WAL data emitted during end-of-recovery cleanup of a GIST
3035       index page split (Yoichi Hirai)
3036      </para>
3037
3038      <para>
3039       This would result in index corruption, or even more likely an error
3040       during WAL replay, if we were unlucky enough to crash during
3041       end-of-recovery cleanup after having completed an incomplete GIST
3042       insertion.
3043      </para>
3044     </listitem>
3045
3046     <listitem>
3047      <para>
3048       Make <function>substring()</> for <type>bit</> types treat any negative
3049       length as meaning <quote>all the rest of the string</> (Tom)
3050      </para>
3051
3052      <para>
3053       The previous coding treated only -1 that way, and would produce an
3054       invalid result value for other negative values, possibly leading to
3055       a crash (CVE-2010-0442).
3056      </para>
3057     </listitem>
3058
3059     <listitem>
3060      <para>
3061       Fix integer-to-bit-string conversions to handle the first fractional
3062       byte correctly when the output bit width is wider than the given
3063       integer by something other than a multiple of 8 bits (Tom)
3064      </para>
3065     </listitem>
3066
3067     <listitem>
3068      <para>
3069       Fix some cases of pathologically slow regular expression matching (Tom)
3070      </para>
3071     </listitem>
3072
3073     <listitem>
3074      <para>
3075       Fix assorted crashes in <type>xml</> processing caused by sloppy
3076       memory management (Tom)
3077      </para>
3078
3079      <para>
3080       This is a back-patch of changes first applied in 8.4.  The 8.3 code
3081       was known buggy, but the new code was sufficiently different to not
3082       want to back-patch it until it had gotten some field testing.
3083      </para>
3084     </listitem>
3085
3086     <listitem>
3087      <para>
3088       Fix bug with trying to update a field of an element of a
3089       composite-type array column (Tom)
3090      </para>
3091     </listitem>
3092
3093     <listitem>
3094      <para>
3095       Fix the <literal>STOP WAL LOCATION</> entry in backup history files to
3096       report the next WAL segment's name when the end location is exactly at a
3097       segment boundary (Itagaki Takahiro)
3098      </para>
3099     </listitem>
3100
3101     <listitem>
3102      <para>
3103       Fix some more cases of temporary-file leakage (Heikki)
3104      </para>
3105
3106      <para>
3107       This corrects a problem introduced in the previous minor release.
3108       One case that failed is when a plpgsql function returning set is
3109       called within another function's exception handler.
3110      </para>
3111     </listitem>
3112
3113     <listitem>
3114      <para>
3115       Improve constraint exclusion processing of boolean-variable cases,
3116       in particular make it possible to exclude a partition that has a
3117       <quote>bool_column = false</> constraint (Tom)
3118      </para>
3119     </listitem>
3120
3121     <listitem>
3122      <para>
3123       When reading <filename>pg_hba.conf</> and related files, do not treat
3124       <literal>@something</> as a file inclusion request if the <literal>@</>
3125       appears inside quote marks; also, never treat <literal>@</> by itself
3126       as a file inclusion request (Tom)
3127      </para>
3128
3129      <para>
3130       This prevents erratic behavior if a role or database name starts with
3131       <literal>@</>.  If you need to include a file whose path name
3132       contains spaces, you can still do so, but you must write
3133       <literal>@"/path to/file"</> rather than putting the quotes around
3134       the whole construct.
3135      </para>
3136     </listitem>
3137
3138     <listitem>
3139      <para>
3140       Prevent infinite loop on some platforms if a directory is named as
3141       an inclusion target in <filename>pg_hba.conf</> and related files
3142       (Tom)
3143      </para>
3144     </listitem>
3145
3146     <listitem>
3147      <para>
3148       Fix possible infinite loop if <function>SSL_read</> or
3149       <function>SSL_write</> fails without setting <varname>errno</> (Tom)
3150      </para>
3151
3152      <para>
3153       This is reportedly possible with some Windows versions of
3154       <application>openssl</>.
3155      </para>
3156     </listitem>
3157
3158     <listitem>
3159      <para>
3160       Disallow <acronym>GSSAPI</> authentication on local connections,
3161       since it requires a hostname to function correctly (Magnus)
3162      </para>
3163     </listitem>
3164
3165     <listitem>
3166      <para>
3167       Make <application>ecpg</> report the proper SQLSTATE if the connection
3168       disappears (Michael)
3169      </para>
3170     </listitem>
3171
3172     <listitem>
3173      <para>
3174       Fix <application>psql</>'s <literal>numericlocale</> option to not
3175       format strings it shouldn't in latex and troff output formats (Heikki)
3176      </para>
3177     </listitem>
3178
3179     <listitem>
3180      <para>
3181       Make <application>psql</> return the correct exit status (3) when
3182       <literal>ON_ERROR_STOP</> and <literal>--single-transaction</> are
3183       both specified and an error occurs during the implied <command>COMMIT</>
3184       (Bruce)
3185      </para>
3186     </listitem>
3187
3188     <listitem>
3189      <para>
3190       Fix plpgsql failure in one case where a composite column is set to NULL
3191       (Tom)
3192      </para>
3193     </listitem>
3194
3195     <listitem>
3196      <para>
3197       Fix possible failure when calling PL/Perl functions from PL/PerlU
3198       or vice versa (Tim Bunce)
3199      </para>
3200     </listitem>
3201
3202     <listitem>
3203      <para>
3204       Add <literal>volatile</> markings in PL/Python to avoid possible
3205       compiler-specific misbehavior (Zdenek Kotala)
3206      </para>
3207     </listitem>
3208
3209     <listitem>
3210      <para>
3211       Ensure PL/Tcl initializes the Tcl interpreter fully (Tom)
3212      </para>
3213
3214      <para>
3215       The only known symptom of this oversight is that the Tcl
3216       <literal>clock</> command misbehaves if using Tcl 8.5 or later.
3217      </para>
3218     </listitem>
3219
3220     <listitem>
3221      <para>
3222       Prevent crash in <filename>contrib/dblink</> when too many key
3223       columns are specified to a <function>dblink_build_sql_*</> function
3224       (Rushabh Lathia, Joe Conway)
3225      </para>
3226     </listitem>
3227
3228     <listitem>
3229      <para>
3230       Allow zero-dimensional arrays in <filename>contrib/ltree</> operations
3231       (Tom)
3232      </para>
3233
3234      <para>
3235       This case was formerly rejected as an error, but it's more convenient to
3236       treat it the same as a zero-element array.  In particular this avoids
3237       unnecessary failures when an <type>ltree</> operation is applied to the
3238       result of <literal>ARRAY(SELECT ...)</> and the sub-select returns no
3239       rows.
3240      </para>
3241     </listitem>
3242
3243     <listitem>
3244      <para>
3245       Fix assorted crashes in <filename>contrib/xml2</> caused by sloppy
3246       memory management (Tom)
3247      </para>
3248     </listitem>
3249
3250     <listitem>
3251      <para>
3252       Make building of <filename>contrib/xml2</> more robust on Windows
3253       (Andrew)
3254      </para>
3255     </listitem>
3256
3257     <listitem>
3258      <para>
3259       Fix race condition in Windows signal handling (Radu Ilie)
3260      </para>
3261
3262      <para>
3263       One known symptom of this bug is that rows in <structname>pg_listener</>
3264       could be dropped under heavy load.
3265      </para>
3266     </listitem>
3267
3268     <listitem>
3269      <para>
3270       Update time zone data files to <application>tzdata</> release 2010e
3271       for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
3272      </para>
3273     </listitem>
3274
3275    </itemizedlist>
3276
3277   </sect2>
3278  </sect1>
3279
3280  <sect1 id="release-8-3-9">
3281   <title>Release 8.3.9</title>
3282
3283   <note>
3284   <title>Release Date</title>
3285   <simpara>2009-12-14</simpara>
3286   </note>
3287
3288   <para>
3289    This release contains a variety of fixes from 8.3.8.
3290    For information about new features in the 8.3 major release, see
3291    <xref linkend="release-8-3">.
3292   </para>
3293
3294   <sect2>
3295    <title>Migration to Version 8.3.9</title>
3296
3297    <para>
3298     A dump/restore is not required for those running 8.3.X.
3299     However, if you are upgrading from a version earlier than 8.3.8,
3300     see the release notes for 8.3.8.
3301    </para>
3302
3303   </sect2>
3304
3305   <sect2>
3306    <title>Changes</title>
3307
3308    <itemizedlist>
3309
3310     <listitem>
3311      <para>
3312       Protect against indirect security threats caused by index functions
3313       changing session-local state (Gurjeet Singh, Tom)
3314      </para>
3315
3316      <para>
3317       This change prevents allegedly-immutable index functions from possibly
3318       subverting a superuser's session (CVE-2009-4136).
3319      </para>
3320     </listitem>
3321
3322     <listitem>
3323      <para>
3324       Reject SSL certificates containing an embedded null byte in the common
3325       name (CN) field (Magnus)
3326      </para>
3327
3328      <para>
3329       This prevents unintended matching of a certificate to a server or client
3330       name during SSL validation (CVE-2009-4034).
3331      </para>
3332     </listitem>
3333
3334     <listitem>
3335      <para>
3336       Fix possible crash during backend-startup-time cache initialization (Tom)
3337      </para>
3338     </listitem>
3339
3340     <listitem>
3341      <para>
3342       Avoid crash on empty thesaurus dictionary (Tom)
3343      </para>
3344     </listitem>
3345
3346     <listitem>
3347      <para>
3348       Prevent signals from interrupting <literal>VACUUM</> at unsafe times
3349       (Alvaro)
3350      </para>
3351
3352      <para>
3353       This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled
3354       after it's already committed its tuple movements, as well as transient
3355       errors if a plain <literal>VACUUM</> is interrupted after having
3356       truncated the table.
3357      </para>
3358     </listitem>
3359
3360     <listitem>
3361      <para>
3362       Fix possible crash due to integer overflow in hash table size
3363       calculation (Tom)
3364      </para>
3365
3366      <para>
3367       This could occur with extremely large planner estimates for the size of
3368       a hashjoin's result.
3369      </para>
3370     </listitem>
3371
3372     <listitem>
3373      <para>
3374       Fix very rare crash in <type>inet</>/<type>cidr</> comparisons (Chris
3375       Mikkelson)
3376      </para>
3377     </listitem>
3378
3379     <listitem>
3380      <para>
3381       Ensure that shared tuple-level locks held by prepared transactions are
3382       not ignored (Heikki)
3383      </para>
3384     </listitem>
3385
3386     <listitem>
3387      <para>
3388       Fix premature drop of temporary files used for a cursor that is accessed
3389       within a subtransaction (Heikki)
3390      </para>
3391     </listitem>
3392
3393     <listitem>
3394      <para>
3395       Fix memory leak in syslogger process when rotating to a new CSV logfile
3396       (Tom)
3397      </para>
3398     </listitem>
3399
3400     <listitem>
3401      <para>
3402       Fix Windows permission-downgrade logic (Jesse Morris)
3403      </para>
3404
3405      <para>
3406       This fixes some cases where the database failed to start on Windows,
3407       often with misleading error messages such as <quote>could not locate
3408       matching postgres executable</quote>.
3409      </para>
3410     </listitem>
3411
3412     <listitem>
3413      <para>
3414       Fix incorrect logic for GiST index page splits, when the split depends
3415       on a non-first column of the index (Paul Ramsey)
3416      </para>
3417     </listitem>
3418
3419     <listitem>
3420      <para>
3421       Don't error out if recycling or removing an old WAL file fails at the
3422       end of checkpoint (Heikki)
3423      </para>
3424
3425      <para>
3426       It's better to treat the problem as non-fatal and allow the checkpoint
3427       to complete.  Future checkpoints will retry the removal.  Such problems
3428       are not expected in normal operation, but have been seen to be
3429       caused by misdesigned Windows anti-virus and backup software.
3430      </para>
3431     </listitem>
3432
3433     <listitem>
3434      <para>
3435       Ensure WAL files aren't repeatedly archived on Windows (Heikki)
3436      </para>
3437
3438      <para>
3439       This is another symptom that could happen if some other process
3440       interfered with deletion of a no-longer-needed file.
3441      </para>
3442     </listitem>
3443
3444     <listitem>
3445      <para>
3446       Fix PAM password processing to be more robust (Tom)
3447      </para>
3448
3449      <para>
3450       The previous code is known to fail with the combination of the Linux
3451       <literal>pam_krb5</> PAM module with Microsoft Active Directory as the
3452       domain controller.  It might have problems elsewhere too, since it was
3453       making unjustified assumptions about what arguments the PAM stack would
3454       pass to it.
3455      </para>
3456     </listitem>
3457
3458     <listitem>
3459      <para>
3460       Raise the maximum authentication token (Kerberos ticket) size in GSSAPI
3461       and SSPI authentication methods (Ian Turner)
3462      </para>
3463
3464      <para>
3465       While the old 2000-byte limit was more than enough for Unix Kerberos
3466       implementations, tickets issued by Windows Domain Controllers can be
3467       much larger.
3468      </para>
3469     </listitem>
3470
3471     <listitem>
3472      <para>
3473       Re-enable collection of access statistics for sequences (Akira Kurosawa)
3474      </para>
3475
3476      <para>
3477       This used to work but was broken in 8.3.
3478      </para>
3479     </listitem>
3480
3481     <listitem>
3482      <para>
3483       Fix processing of ownership dependencies during <literal>CREATE OR
3484       REPLACE FUNCTION</> (Tom)
3485      </para>
3486     </listitem>
3487
3488     <listitem>
3489      <para>
3490       Fix incorrect handling of <literal>WHERE</>
3491       <replaceable>x</>=<replaceable>x</> conditions (Tom)
3492      </para>
3493
3494      <para>
3495       In some cases these could get ignored as redundant, but they aren't
3496       &mdash; they're equivalent to <replaceable>x</> <literal>IS NOT NULL</>.
3497      </para>
3498     </listitem>
3499
3500     <listitem>
3501      <para>
3502       Make text search parser accept underscores in XML attributes (Peter)
3503      </para>
3504     </listitem>
3505
3506     <listitem>
3507      <para>
3508       Fix encoding handling in <type>xml</> binary input (Heikki)
3509      </para>
3510
3511      <para>
3512       If the XML header doesn't specify an encoding, we now assume UTF-8 by
3513       default; the previous handling was inconsistent.
3514      </para>
3515     </listitem>
3516
3517     <listitem>
3518      <para>
3519       Fix bug with calling <literal>plperl</> from <literal>plperlu</> or vice
3520       versa (Tom)
3521      </para>
3522
3523      <para>
3524       An error exit from the inner function could result in crashes due to
3525       failure to re-select the correct Perl interpreter for the outer function.
3526      </para>
3527     </listitem>
3528
3529     <listitem>
3530      <para>
3531       Fix session-lifespan memory leak when a PL/Perl function is redefined
3532       (Tom)
3533      </para>
3534     </listitem>
3535
3536     <listitem>
3537      <para>
3538       Ensure that Perl arrays are properly converted to
3539       <productname>PostgreSQL</> arrays when returned by a set-returning
3540       PL/Perl function (Andrew Dunstan, Abhijit Menon-Sen)
3541      </para>
3542
3543      <para>
3544       This worked correctly already for non-set-returning functions.
3545      </para>
3546     </listitem>
3547
3548     <listitem>
3549      <para>
3550       Fix rare crash in exception processing in PL/Python (Peter)
3551      </para>
3552     </listitem>
3553
3554     <listitem>
3555      <para>
3556       In <filename>contrib/pg_standby</>, disable triggering failover with a
3557       signal on Windows (Fujii Masao)
3558      </para>
3559
3560      <para>
3561       This never did anything useful, because Windows doesn't have Unix-style
3562       signals, but recent changes made it actually crash.
3563      </para>
3564     </listitem>
3565
3566     <listitem>
3567      <para>
3568       Ensure <application>psql</>'s flex module is compiled with the correct
3569       system header definitions (Tom)
3570      </para>
3571
3572      <para>
3573       This fixes build failures on platforms where
3574       <literal>--enable-largefile</> causes incompatible changes in the
3575       generated code.
3576      </para>
3577     </listitem>
3578
3579     <listitem>
3580      <para>
3581       Make the postmaster ignore any <literal>application_name</> parameter in
3582       connection request packets, to improve compatibility with future libpq
3583       versions (Tom)
3584      </para>
3585     </listitem>
3586
3587     <listitem>
3588      <para>
3589       Update the timezone abbreviation files to match current reality (Joachim
3590       Wieland)
3591      </para>
3592
3593      <para>
3594       This includes adding <literal>IDT</> and <literal>SGT</> to the default
3595       timezone abbreviation set.
3596      </para>
3597     </listitem>
3598
3599     <listitem>
3600      <para>
3601       Update time zone data files to <application>tzdata</> release 2009s
3602       for DST law changes in Antarctica, Argentina, Bangladesh, Fiji,
3603       Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical
3604       corrections for Hong Kong.
3605      </para>
3606     </listitem>
3607
3608    </itemizedlist>
3609
3610   </sect2>
3611  </sect1>
3612
3613  <sect1 id="release-8-3-8">
3614   <title>Release 8.3.8</title>
3615
3616   <note>
3617   <title>Release Date</title>
3618   <simpara>2009-09-09</simpara>
3619   </note>
3620
3621   <para>
3622    This release contains a variety of fixes from 8.3.7.
3623    For information about new features in the 8.3 major release, see
3624    <xref linkend="release-8-3">.
3625   </para>
3626
3627   <sect2>
3628    <title>Migration to Version 8.3.8</title>
3629
3630    <para>
3631     A dump/restore is not required for those running 8.3.X.
3632     However, if you have any hash indexes on <type>interval</> columns,
3633     you must <command>REINDEX</> them after updating to 8.3.8.
3634     Also, if you are upgrading from a version earlier than 8.3.5,
3635     see the release notes for 8.3.5.
3636    </para>
3637
3638   </sect2>
3639
3640   <sect2>
3641    <title>Changes</title>
3642
3643    <itemizedlist>
3644
3645     <listitem>
3646      <para>
3647       Fix Windows shared-memory allocation code (Tsutomu Yamada, Magnus)
3648      </para>
3649
3650      <para>
3651       This bug led to the often-reported <quote>could not reattach
3652       to shared memory</> error message.
3653      </para>
3654     </listitem>
3655
3656     <listitem>
3657      <para>
3658       Force WAL segment switch during <function>pg_start_backup()</>
3659       (Heikki)
3660      </para>
3661
3662      <para>
3663       This avoids corner cases that could render a base backup unusable.
3664      </para>
3665     </listitem>
3666
3667     <listitem>
3668      <para>
3669       Disallow <command>RESET ROLE</> and <command>RESET SESSION
3670       AUTHORIZATION</> inside security-definer functions (Tom, Heikki)
3671      </para>
3672
3673      <para>
3674       This covers a case that was missed in the previous patch that
3675       disallowed <command>SET ROLE</> and <command>SET SESSION
3676       AUTHORIZATION</> inside security-definer functions.
3677       (See CVE-2007-6600)
3678      </para>
3679     </listitem>
3680
3681     <listitem>
3682      <para>
3683       Make <command>LOAD</> of an already-loaded loadable module
3684       into a no-op (Tom)
3685      </para>
3686
3687      <para>
3688       Formerly, <command>LOAD</> would attempt to unload and re-load the
3689       module, but this is unsafe and not all that useful.
3690      </para>
3691     </listitem>
3692
3693     <listitem>
3694      <para>
3695       Disallow empty passwords during LDAP authentication (Magnus)
3696      </para>
3697     </listitem>
3698
3699     <listitem>
3700      <para>
3701       Fix handling of sub-SELECTs appearing in the arguments of
3702       an outer-level aggregate function (Tom)
3703      </para>
3704     </listitem>
3705
3706     <listitem>
3707      <para>
3708       Fix bugs associated with fetching a whole-row value from the
3709       output of a Sort or Materialize plan node (Tom)
3710      </para>
3711     </listitem>
3712
3713     <listitem>
3714      <para>
3715       Prevent <varname>synchronize_seqscans</> from changing the results of
3716       scrollable and <literal>WITH HOLD</> cursors (Tom)
3717      </para>
3718     </listitem>
3719
3720     <listitem>
3721      <para>
3722       Revert planner change that disabled partial-index and constraint
3723       exclusion optimizations when there were more than 100 clauses in
3724       an AND or OR list (Tom)
3725      </para>
3726     </listitem>
3727
3728     <listitem>
3729      <para>
3730       Fix hash calculation for data type <type>interval</> (Tom)
3731      </para>
3732
3733      <para>
3734       This corrects wrong results for hash joins on interval values.
3735       It also changes the contents of hash indexes on interval columns.
3736       If you have any such indexes, you must <command>REINDEX</> them
3737       after updating.
3738      </para>
3739     </listitem>
3740
3741     <listitem>
3742      <para>
3743       Treat <function>to_char(..., 'TH')</> as an uppercase ordinal
3744       suffix with <literal>'HH'</>/<literal>'HH12'</> (Heikki)
3745      </para>
3746
3747      <para>
3748       It was previously handled as <literal>'th'</> (lowercase).
3749      </para>
3750     </listitem>
3751
3752     <listitem>
3753      <para>
3754       Fix overflow for <literal>INTERVAL '<replaceable>x</> ms'</literal>
3755       when <replaceable>x</> is more than 2 million and integer
3756       datetimes are in use (Alex Hunsaker)
3757      </para>
3758     </listitem>
3759
3760     <listitem>
3761      <para>
3762       Fix calculation of distance between a point and a line segment (Tom)
3763      </para>
3764
3765      <para>
3766       This led to incorrect results from a number of geometric operators.
3767      </para>
3768     </listitem>
3769
3770     <listitem>
3771      <para>
3772       Fix <type>money</> data type to work in locales where currency
3773       amounts have no fractional digits, e.g. Japan (Itagaki Takahiro)
3774      </para>
3775     </listitem>
3776
3777     <listitem>
3778      <para>
3779       Fix <literal>LIKE</> for case where pattern contains <literal>%_</>
3780       (Tom)
3781      </para>
3782     </listitem>
3783
3784     <listitem>
3785      <para>
3786       Properly round datetime input like
3787       <literal>00:12:57.9999999999999999999999999999</> (Tom)
3788      </para>
3789     </listitem>
3790
3791     <listitem>
3792      <para>
3793       Fix memory leaks in XML operations (Tom)
3794      </para>
3795     </listitem>
3796
3797     <listitem>
3798      <para>
3799       Fix poor choice of page split point in GiST R-tree operator classes
3800       (Teodor)
3801      </para>
3802     </listitem>
3803
3804     <listitem>
3805      <para>
3806       Ensure that a <quote>fast shutdown</> request will forcibly terminate
3807       open sessions, even if a <quote>smart shutdown</> was already in progress
3808       (Fujii Masao)
3809      </para>
3810     </listitem>
3811
3812     <listitem>
3813      <para>
3814       Avoid performance degradation in bulk inserts into GIN indexes
3815       when the input values are (nearly) in sorted order (Tom)
3816      </para>
3817     </listitem>
3818
3819     <listitem>
3820      <para>
3821       Correctly enforce NOT NULL domain constraints in some contexts in
3822       PL/pgSQL (Tom)
3823      </para>
3824     </listitem>
3825
3826     <listitem>
3827      <para>
3828       Fix portability issues in plperl initialization (Andrew Dunstan)
3829      </para>
3830     </listitem>
3831
3832     <listitem>
3833      <para>
3834       Fix <application>pg_ctl</> to not go into an infinite loop if
3835       <filename>postgresql.conf</> is empty (Jeff Davis)
3836      </para>
3837     </listitem>
3838
3839     <listitem>
3840      <para>
3841       Improve <application>pg_dump</>'s efficiency when there are
3842       many large objects (Tamas Vincze)
3843      </para>
3844     </listitem>
3845
3846     <listitem>
3847      <para>
3848       Use <literal>SIGUSR1</>, not <literal>SIGQUIT</>, as the
3849       failover signal for <application>pg_standby</> (Heikki)
3850      </para>
3851     </listitem>
3852
3853     <listitem>
3854      <para>
3855       Make <application>pg_standby</>'s <literal>maxretries</> option
3856       behave as documented (Fujii Masao)
3857      </para>
3858     </listitem>
3859
3860     <listitem>
3861      <para>
3862       Make <filename>contrib/hstore</> throw an error when a key or
3863       value is too long to fit in its data structure, rather than
3864       silently truncating it (Andrew Gierth)
3865      </para>
3866     </listitem>
3867
3868     <listitem>
3869      <para>
3870       Fix <filename>contrib/xml2</>'s <function>xslt_process()</> to
3871       properly handle the maximum number of parameters (twenty) (Tom)
3872      </para>
3873     </listitem>
3874
3875     <listitem>
3876      <para>
3877       Improve robustness of <application>libpq</>'s code to recover
3878       from errors during <command>COPY FROM STDIN</> (Tom)
3879      </para>
3880     </listitem>
3881
3882     <listitem>
3883      <para>
3884       Avoid including conflicting readline and editline header files
3885       when both libraries are installed (Zdenek Kotala)
3886      </para>
3887     </listitem>
3888
3889     <listitem>
3890      <para>
3891       Update time zone data files to <application>tzdata</> release 2009l
3892       for DST law changes in Bangladesh, Egypt, Jordan, Pakistan,
3893       Argentina/San_Luis, Cuba, Jordan (historical correction only),
3894       Mauritius, Morocco, Palestine, Syria, Tunisia.
3895      </para>
3896     </listitem>
3897
3898    </itemizedlist>
3899
3900   </sect2>
3901  </sect1>
3902
3903  <sect1 id="release-8-3-7">
3904   <title>Release 8.3.7</title>
3905
3906   <note>
3907   <title>Release Date</title>
3908   <simpara>2009-03-16</simpara>
3909   </note>
3910
3911   <para>
3912    This release contains a variety of fixes from 8.3.6.
3913    For information about new features in the 8.3 major release, see
3914    <xref linkend="release-8-3">.
3915   </para>
3916
3917   <sect2>
3918    <title>Migration to Version 8.3.7</title>
3919
3920    <para>
3921     A dump/restore is not required for those running 8.3.X.
3922     However, if you are upgrading from a version earlier than 8.3.5,
3923     see the release notes for 8.3.5.
3924    </para>
3925
3926   </sect2>
3927
3928   <sect2>
3929    <title>Changes</title>
3930
3931    <itemizedlist>
3932
3933     <listitem>
3934      <para>
3935       Prevent error recursion crashes when encoding conversion fails (Tom)
3936      </para>
3937
3938      <para>
3939       This change extends fixes made in the last two minor releases for
3940       related failure scenarios.  The previous fixes were narrowly tailored
3941       for the original problem reports, but we have now recognized that
3942       <emphasis>any</> error thrown by an encoding conversion function could
3943       potentially lead to infinite recursion while trying to report the
3944       error.  The solution therefore is to disable translation and encoding
3945       conversion and report the plain-ASCII form of any error message,
3946       if we find we have gotten into a recursive error reporting situation.
3947       (CVE-2009-0922)
3948      </para>
3949     </listitem>
3950
3951     <listitem>
3952      <para>
3953       Disallow <command>CREATE CONVERSION</> with the wrong encodings
3954       for the specified conversion function (Heikki)
3955      </para>
3956
3957      <para>
3958       This prevents one possible scenario for encoding conversion failure.
3959       The previous change is a backstop to guard against other kinds of
3960       failures in the same area.
3961      </para>
3962     </listitem>
3963
3964     <listitem>
3965      <para>
3966       Fix <function>xpath()</> to not modify the path expression unless
3967       necessary, and to make a saner attempt at it when necessary (Andrew)
3968      </para>
3969
3970      <para>
3971       The SQL standard suggests that <function>xpath</> should work on data
3972       that is a document fragment, but <application>libxml</> doesn't support
3973       that, and indeed it's not clear that this is sensible according to the
3974       XPath standard.  <function>xpath</> attempted to work around this
3975       mismatch by modifying both the data and the path expression, but the
3976       modification was buggy and could cause valid searches to fail.  Now,
3977       <function>xpath</> checks whether the data is in fact a well-formed
3978       document, and if so invokes <application>libxml</> with no change to the
3979       data or path expression.  Otherwise, a different modification method
3980       that is somewhat less likely to fail is used.
3981      </para>
3982
3983      <note>
3984       <para>
3985        The new modification method is still not 100% satisfactory, and it
3986        seems likely that no real solution is possible.  This patch should
3987        therefore be viewed as a band-aid to keep from breaking existing
3988        applications unnecessarily.  It is likely that
3989        <productname>PostgreSQL</> 8.4 will simply reject use of
3990        <function>xpath</> on data that is not a well-formed document.
3991       </para>
3992      </note>
3993     </listitem>
3994
3995     <listitem>
3996      <para>
3997       Fix core dump when <function>to_char()</> is given format codes that
3998       are inappropriate for the type of the data argument (Tom)
3999      </para>
4000     </listitem>
4001
4002     <listitem>
4003      <para>
4004       Fix possible failure in text search when C locale is used with
4005       a multi-byte encoding (Teodor)
4006      </para>
4007
4008      <para>
4009       Crashes were possible on platforms where <type>wchar_t</> is narrower
4010       than <type>int</>; Windows in particular.
4011      </para>
4012     </listitem>
4013
4014     <listitem>
4015      <para>
4016       Fix extreme inefficiency in text search parser's handling of an
4017       email-like string containing multiple <literal>@</> characters (Heikki)
4018      </para>
4019     </listitem>
4020
4021     <listitem>
4022      <para>
4023       Fix planner problem with sub-<command>SELECT</> in the output list
4024       of a larger subquery (Tom)
4025      </para>
4026
4027      <para>
4028       The known symptom of this bug is a <quote>failed to locate grouping
4029       columns</> error that is dependent on the datatype involved;
4030       but there could be other issues as well.
4031      </para>
4032     </listitem>
4033
4034     <listitem>
4035      <para>
4036       Fix decompilation of <literal>CASE WHEN</> with an implicit coercion
4037       (Tom)
4038      </para>
4039
4040      <para>
4041       This mistake could lead to Assert failures in an Assert-enabled build,
4042       or an <quote>unexpected CASE WHEN clause</> error message in other
4043       cases, when trying to examine or dump a view.
4044      </para>
4045     </listitem>
4046
4047     <listitem>
4048      <para>
4049       Fix possible misassignment of the owner of a TOAST table's rowtype (Tom)
4050      </para>
4051
4052      <para>
4053       If <command>CLUSTER</> or a rewriting variant of <command>ALTER TABLE</>
4054       were executed by someone other than the table owner, the
4055       <structname>pg_type</> entry for the table's TOAST table would end up
4056       marked as owned by that someone.  This caused no immediate problems,
4057       since the permissions on the TOAST rowtype aren't examined by any
4058       ordinary database operation.  However, it could lead to unexpected
4059       failures if one later tried to drop the role that issued the command
4060       (in 8.1 or 8.2), or <quote>owner of data type appears to be invalid</>
4061       warnings from <application>pg_dump</> after having done so (in 8.3).
4062      </para>
4063     </listitem>
4064
4065     <listitem>
4066      <para>
4067       Change <command>UNLISTEN</> to exit quickly if the current session has
4068       never executed any <command>LISTEN</> command (Tom)
4069      </para>
4070
4071      <para>
4072       Most of the time this is not a particularly useful optimization, but
4073       since <command>DISCARD ALL</> invokes <command>UNLISTEN</>, the previous
4074       coding caused a substantial performance problem for applications that
4075       made heavy use of <command>DISCARD ALL</>.
4076      </para>
4077     </listitem>
4078
4079     <listitem>
4080      <para>
4081       Fix PL/pgSQL to not treat <literal>INTO</> after <command>INSERT</> as
4082       an INTO-variables clause anywhere in the string, not only at the start;
4083       in particular, don't fail for <command>INSERT INTO</> within
4084       <command>CREATE RULE</> (Tom)
4085      </para>
4086     </listitem>
4087
4088     <listitem>
4089      <para>
4090       Clean up PL/pgSQL error status variables fully at block exit
4091       (Ashesh Vashi and Dave Page)
4092      </para>
4093
4094      <para>
4095       This is not a problem for PL/pgSQL itself, but the omission could cause
4096       the PL/pgSQL Debugger to crash while examining the state of a function.
4097      </para>
4098     </listitem>
4099
4100     <listitem>
4101      <para>
4102       Retry failed calls to <function>CallNamedPipe()</> on Windows
4103       (Steve Marshall, Magnus)
4104      </para>
4105
4106      <para>
4107       It appears that this function can sometimes fail transiently;
4108       we previously treated any failure as a hard error, which could
4109       confuse <command>LISTEN</>/<command>NOTIFY</> as well as other
4110       operations.
4111      </para>
4112     </listitem>
4113
4114     <listitem>
4115      <para>
4116       Add <literal>MUST</> (Mauritius Island Summer Time) to the default list
4117       of known timezone abbreviations (Xavier Bugaud)
4118      </para>
4119     </listitem>
4120
4121    </itemizedlist>
4122
4123   </sect2>
4124  </sect1>
4125
4126  <sect1 id="release-8-3-6">
4127   <title>Release 8.3.6</title>
4128
4129   <note>
4130   <title>Release Date</title>
4131   <simpara>2009-02-02</simpara>
4132   </note>
4133
4134   <para>
4135    This release contains a variety of fixes from 8.3.5.
4136    For information about new features in the 8.3 major release, see
4137    <xref linkend="release-8-3">.
4138   </para>
4139
4140   <sect2>
4141    <title>Migration to Version 8.3.6</title>
4142
4143    <para>
4144     A dump/restore is not required for those running 8.3.X.
4145     However, if you are upgrading from a version earlier than 8.3.5,
4146     see the release notes for 8.3.5.
4147    </para>
4148
4149   </sect2>
4150
4151   <sect2>
4152    <title>Changes</title>
4153
4154    <itemizedlist>
4155
4156     <listitem>
4157      <para>
4158       Make <command>DISCARD ALL</> release advisory locks, in addition
4159       to everything it already did (Tom)
4160      </para>
4161
4162      <para>
4163       This was decided to be the most appropriate behavior.  This could
4164       affect existing applications, however.
4165      </para>
4166     </listitem>
4167
4168     <listitem>
4169      <para>
4170       Fix whole-index GiST scans to work correctly (Teodor)
4171      </para>
4172
4173      <para>
4174       This error could cause rows to be lost if a table is clustered
4175       on a GiST index.
4176      </para>
4177     </listitem>
4178
4179     <listitem>
4180      <para>
4181       Fix crash of <literal>xmlconcat(NULL)</> (Peter)
4182      </para>
4183     </listitem>
4184
4185     <listitem>
4186      <para>
4187       Fix possible crash in <literal>ispell</> dictionary if high-bit-set
4188       characters are used as flags (Teodor)
4189      </para>
4190
4191      <para>
4192       This is known to be done by one widely available Norwegian dictionary,
4193       and the same condition may exist in others.
4194      </para>
4195     </listitem>
4196
4197     <listitem>
4198      <para>
4199       Fix misordering of <application>pg_dump</> output for composite types
4200       (Tom)
4201      </para>
4202
4203      <para>
4204       The most likely problem was for user-defined operator classes to
4205       be dumped after indexes or views that needed them.
4206      </para>
4207     </listitem>
4208
4209     <listitem>
4210      <para>
4211       Improve handling of URLs in <function>headline()</> function (Teodor)
4212      </para>
4213     </listitem>
4214
4215     <listitem>
4216      <para>
4217       Improve handling of overlength headlines in <function>headline()</>
4218       function (Teodor)
4219      </para>
4220     </listitem>
4221
4222     <listitem>
4223      <para>
4224       Prevent possible Assert failure or misconversion if an encoding
4225       conversion is created with the wrong conversion function for the
4226       specified pair of encodings (Tom, Heikki)
4227      </para>
4228     </listitem>
4229
4230     <listitem>
4231      <para>
4232       Fix possible Assert failure if a statement executed in PL/pgSQL is
4233       rewritten into another kind of statement, for example if an
4234       <command>INSERT</> is rewritten into an <command>UPDATE</> (Heikki)
4235      </para>
4236     </listitem>
4237
4238     <listitem>
4239      <para>
4240       Ensure that a snapshot is available to datatype input functions (Tom)
4241      </para>
4242
4243      <para>
4244       This primarily affects domains that are declared with <literal>CHECK</>
4245       constraints involving user-defined stable or immutable functions.  Such
4246       functions typically fail if no snapshot has been set.
4247      </para>
4248     </listitem>
4249
4250     <listitem>
4251      <para>
4252       Make it safer for SPI-using functions to be used within datatype I/O;
4253       in particular, to be used in domain check constraints (Tom)
4254      </para>
4255     </listitem>
4256
4257     <listitem>
4258      <para>
4259       Avoid unnecessary locking of small tables in <command>VACUUM</>
4260       (Heikki)
4261      </para>
4262     </listitem>
4263
4264     <listitem>
4265      <para>
4266       Fix a problem that sometimes kept <command>ALTER TABLE ENABLE/DISABLE
4267       RULE</> from being recognized by active sessions (Tom)
4268      </para>
4269     </listitem>
4270
4271     <listitem>
4272      <para>
4273       Fix a problem that made <literal>UPDATE RETURNING tableoid</>
4274       return zero instead of the correct OID (Tom)
4275      </para>
4276     </listitem>
4277
4278     <listitem>
4279      <para>
4280       Allow functions declared as taking <type>ANYARRAY</> to work on
4281       the <structname>pg_statistic</> columns of that type (Tom)
4282      </para>
4283
4284      <para>
4285       This used to work, but was unintentionally broken in 8.3.
4286      </para>
4287     </listitem>
4288
4289     <listitem>
4290      <para>
4291       Fix planner misestimation of selectivity when transitive equality
4292       is applied to an outer-join clause (Tom)
4293      </para>
4294
4295      <para>
4296       This could result in bad plans for queries like
4297       <literal>... from a left join b on a.a1 = b.b1 where a.a1 = 42 ...</>
4298      </para>
4299     </listitem>
4300
4301     <listitem>
4302      <para>
4303       Improve optimizer's handling of long <literal>IN</> lists (Tom)
4304      </para>
4305
4306      <para>
4307       This change avoids wasting large amounts of time on such lists
4308       when constraint exclusion is enabled.
4309      </para>
4310     </listitem>
4311
4312     <listitem>
4313      <para>
4314       Prevent synchronous scan during GIN index build (Tom)
4315      </para>
4316
4317      <para>
4318       Because GIN is optimized for inserting tuples in increasing TID order,
4319       choosing to use a synchronous scan could slow the build by a factor of
4320       three or more.
4321      </para>
4322     </listitem>
4323
4324     <listitem>
4325      <para>
4326       Ensure that the contents of a holdable cursor don't depend on the
4327       contents of TOAST tables (Tom)
4328      </para>
4329
4330      <para>
4331       Previously, large field values in a cursor result might be represented
4332       as TOAST pointers, which would fail if the referenced table got dropped
4333       before the cursor is read, or if the large value is deleted and then
4334       vacuumed away.  This cannot happen with an ordinary cursor,
4335       but it could with a cursor that is held past its creating transaction.
4336      </para>
4337     </listitem>
4338
4339     <listitem>
4340      <para>
4341       Fix memory leak when a set-returning function is terminated without
4342       reading its whole result (Tom)
4343      </para>
4344     </listitem>
4345
4346     <listitem>
4347      <para>
4348       Fix encoding conversion problems in XML functions when the database
4349       encoding isn't UTF-8 (Tom)
4350      </para>
4351     </listitem>
4352
4353     <listitem>
4354      <para>
4355       Fix <filename>contrib/dblink</>'s
4356       <function>dblink_get_result(text,bool)</> function (Joe)
4357      </para>
4358     </listitem>
4359
4360     <listitem>
4361      <para>
4362       Fix possible garbage output from <filename>contrib/sslinfo</> functions
4363       (Tom)
4364      </para>
4365     </listitem>
4366
4367     <listitem>
4368      <para>
4369       Fix incorrect behavior of <filename>contrib/tsearch2</> compatibility
4370       trigger when it's fired more than once in a command (Teodor)
4371      </para>
4372     </listitem>
4373
4374     <listitem>
4375      <para>
4376       Fix possible mis-signaling in autovacuum (Heikki)
4377      </para>
4378     </listitem>
4379
4380     <listitem>
4381      <para>
4382       Support running as a service on Windows 7 beta (Dave and Magnus)
4383      </para>
4384     </listitem>
4385
4386     <listitem>
4387      <para>
4388       Fix <application>ecpg</>'s handling of varchar structs (Michael)
4389      </para>
4390     </listitem>
4391
4392     <listitem>
4393      <para>
4394       Fix <application>configure</> script to properly report failure when
4395       unable to obtain linkage information for PL/Perl (Andrew)
4396      </para>
4397     </listitem>
4398
4399     <listitem>
4400      <para>
4401       Make all documentation reference <literal>pgsql-bugs</> and/or
4402       <literal>pgsql-hackers</> as appropriate, instead of the
4403       now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</>
4404       mailing lists (Tom)
4405      </para>
4406     </listitem>
4407
4408     <listitem>
4409      <para>
4410       Update time zone data files to <application>tzdata</> release 2009a (for
4411       Kathmandu and historical DST corrections in Switzerland, Cuba)
4412      </para>
4413     </listitem>
4414
4415    </itemizedlist>
4416
4417   </sect2>
4418  </sect1>
4419
4420  <sect1 id="release-8-3-5">
4421   <title>Release 8.3.5</title>
4422
4423   <note>
4424   <title>Release Date</title>
4425   <simpara>2008-11-03</simpara>
4426   </note>
4427
4428   <para>
4429    This release contains a variety of fixes from 8.3.4.
4430    For information about new features in the 8.3 major release, see
4431    <xref linkend="release-8-3">.
4432   </para>
4433
4434   <sect2>
4435    <title>Migration to Version 8.3.5</title>
4436
4437    <para>
4438     A dump/restore is not required for those running 8.3.X.
4439     However, if you are upgrading from a version earlier than 8.3.1,
4440     see the release notes for 8.3.1.  Also, if you were running a previous
4441     8.3.X release, it is recommended to <command>REINDEX</> all GiST
4442     indexes after the upgrade.
4443    </para>
4444
4445   </sect2>
4446
4447   <sect2>
4448    <title>Changes</title>
4449
4450    <itemizedlist>
4451
4452     <listitem>
4453      <para>
4454       Fix GiST index corruption due to marking the wrong index entry
4455       <quote>dead</> after a deletion (Teodor)
4456      </para>
4457
4458      <para>
4459       This would result in index searches failing to find rows they
4460       should have found.  Corrupted indexes can be fixed with
4461       <command>REINDEX</>.
4462      </para>
4463     </listitem>
4464
4465     <listitem>
4466      <para>
4467       Fix backend crash when the client encoding cannot represent a localized
4468       error message (Tom)
4469      </para>
4470
4471      <para>
4472       We have addressed similar issues before, but it would still fail if
4473       the <quote>character has no equivalent</> message itself couldn't
4474       be converted.  The fix is to disable localization and send the plain
4475       ASCII error message when we detect such a situation.
4476      </para>
4477     </listitem>
4478
4479     <listitem>
4480      <para>
4481       Fix possible crash in <type>bytea</>-to-XML mapping (Michael McMaster)
4482      </para>
4483     </listitem>
4484
4485     <listitem>
4486      <para>
4487       Fix possible crash when deeply nested functions are invoked from
4488       a trigger (Tom)
4489      </para>
4490     </listitem>
4491
4492     <listitem>
4493      <para>
4494       Improve optimization of <replaceable>expression</> <literal>IN</>
4495       (<replaceable>expression-list</>) queries (Tom, per an idea from Robert
4496       Haas)
4497      </para>
4498
4499      <para>
4500       Cases in which there are query variables on the right-hand side had been
4501       handled less efficiently in 8.2.x and 8.3.x than in prior versions.
4502       The fix restores 8.1 behavior for such cases.
4503      </para>
4504     </listitem>
4505
4506     <listitem>
4507      <para>
4508       Fix mis-expansion of rule queries when a sub-<literal>SELECT</> appears
4509       in a function call in <literal>FROM</>,  a multi-row <literal>VALUES</>
4510       list, or a <literal>RETURNING</> list (Tom)
4511      </para>
4512
4513      <para>
4514       The usual symptom of this problem is an <quote>unrecognized node type</>
4515       error.
4516      </para>
4517     </listitem>
4518
4519     <listitem>
4520      <para>
4521       Fix Assert failure during rescan of an <literal>IS NULL</>
4522       search of a GiST index (Teodor)
4523      </para>
4524     </listitem>
4525
4526     <listitem>
4527      <para>
4528       Fix memory leak during rescan of a hashed aggregation plan (Neil)
4529      </para>
4530     </listitem>
4531
4532     <listitem>
4533      <para>
4534       Ensure an error is reported when a newly-defined PL/pgSQL trigger
4535       function is invoked as a normal function (Tom)
4536      </para>
4537     </listitem>
4538
4539     <listitem>
4540      <para>
4541       Force a checkpoint before <command>CREATE DATABASE</> starts to copy
4542       files (Heikki)
4543      </para>
4544
4545      <para>
4546       This prevents a possible failure if files had recently been deleted
4547       in the source database.
4548      </para>
4549     </listitem>
4550
4551     <listitem>
4552      <para>
4553       Prevent possible collision of <structfield>relfilenode</> numbers
4554       when moving a table to another tablespace with <command>ALTER SET
4555       TABLESPACE</> (Heikki)
4556      </para>
4557
4558      <para>
4559       The command tried to re-use the existing filename, instead of
4560       picking one that is known unused in the destination directory.
4561      </para>
4562     </listitem>
4563
4564     <listitem>
4565      <para>
4566       Fix incorrect text search headline generation when single query
4567       item matches first word of text (Sushant Sinha)
4568      </para>
4569     </listitem>
4570
4571     <listitem>
4572      <para>
4573       Fix improper display of fractional seconds in interval values when
4574       using a non-ISO datestyle in an <option>--enable-integer-datetimes</>
4575       build (Ron Mayer)
4576      </para>
4577     </listitem>
4578
4579     <listitem>
4580      <para>
4581       Make <literal>ILIKE</> compare characters case-insensitively
4582       even when they're escaped (Andrew)
4583      </para>
4584     </listitem>
4585
4586     <listitem>
4587      <para>
4588       Ensure <command>DISCARD</> is handled properly by statement logging (Tom)
4589      </para>
4590     </listitem>
4591
4592     <listitem>
4593      <para>
4594       Fix incorrect logging of last-completed-transaction time during
4595       PITR recovery (Tom)
4596      </para>
4597     </listitem>
4598
4599     <listitem>
4600      <para>
4601       Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</>
4602       behave correctly when the passed tuple and tuple descriptor have
4603       different numbers of columns (Tom)
4604      </para>
4605
4606      <para>
4607       This situation is normal when a table has had columns added or removed,
4608       but these two functions didn't handle it properly.
4609       The only likely consequence is an incorrect error indication.
4610      </para>
4611     </listitem>
4612
4613     <listitem>
4614      <para>
4615       Mark <varname>SessionReplicationRole</> as <literal>PGDLLIMPORT</>
4616       so it can be used by <application>Slony</> on Windows (Magnus)
4617      </para>
4618     </listitem>
4619
4620     <listitem>
4621      <para>
4622       Fix small memory leak when using <application>libpq</>'s
4623       <literal>gsslib</> parameter (Magnus)
4624      </para>
4625
4626      <para>
4627       The space used by the parameter string was not freed at connection
4628       close.
4629      </para>
4630     </listitem>
4631
4632     <listitem>
4633      <para>
4634       Ensure <application>libgssapi</> is linked into <application>libpq</>
4635       if needed (Markus Schaaf)
4636      </para>
4637     </listitem>
4638
4639     <listitem>
4640      <para>
4641       Fix <application>ecpg</>'s parsing of <command>CREATE ROLE</> (Michael)
4642      </para>
4643     </listitem>
4644
4645     <listitem>
4646      <para>
4647       Fix recent breakage of <literal>pg_ctl restart</> (Tom)
4648      </para>
4649     </listitem>
4650
4651     <listitem>
4652      <para>
4653       Ensure <filename>pg_control</> is opened in binary mode
4654       (Itagaki Takahiro)
4655      </para>
4656
4657      <para>
4658       <application>pg_controldata</> and <application>pg_resetxlog</>
4659       did this incorrectly, and so could fail on Windows.
4660      </para>
4661     </listitem>
4662
4663     <listitem>
4664      <para>
4665       Update time zone data files to <application>tzdata</> release 2008i (for
4666       DST law changes in Argentina, Brazil, Mauritius, Syria)
4667      </para>
4668     </listitem>
4669
4670    </itemizedlist>
4671
4672   </sect2>
4673  </sect1>
4674
4675  <sect1 id="release-8-3-4">
4676   <title>Release 8.3.4</title>
4677
4678   <note>
4679   <title>Release Date</title>
4680   <simpara>2008-09-22</simpara>
4681   </note>
4682
4683   <para>
4684    This release contains a variety of fixes from 8.3.3.
4685    For information about new features in the 8.3 major release, see
4686    <xref linkend="release-8-3">.
4687   </para>
4688
4689   <sect2>
4690    <title>Migration to Version 8.3.4</title>
4691
4692    <para>
4693     A dump/restore is not required for those running 8.3.X.
4694     However, if you are upgrading from a version earlier than 8.3.1,
4695     see the release notes for 8.3.1.
4696    </para>
4697
4698   </sect2>
4699
4700   <sect2>
4701    <title>Changes</title>
4702
4703    <itemizedlist>
4704
4705     <listitem>
4706      <para>
4707       Fix bug in btree WAL recovery code (Heikki)
4708      </para>
4709
4710      <para>
4711       Recovery failed if the WAL ended partway through a page split operation.
4712      </para>
4713     </listitem>
4714
4715     <listitem>
4716      <para>
4717       Fix potential use of wrong cutoff XID for HOT page pruning (Alvaro)
4718      </para>
4719
4720      <para>
4721       This error created a risk of corruption in system
4722       catalogs that are consulted by <command>VACUUM</>: dead tuple versions
4723       might be removed too soon.  The impact of this on actual database
4724       operations would be minimal, since the system doesn't follow MVCC
4725       rules while examining catalogs, but it might result in transiently
4726       wrong output from <application>pg_dump</> or other client programs.
4727      </para>
4728     </listitem>
4729
4730     <listitem>
4731      <para>
4732       Fix potential miscalculation of <structfield>datfrozenxid</> (Alvaro)
4733      </para>
4734
4735      <para>
4736       This error may explain some recent reports of failure to remove old
4737       <structname>pg_clog</> data.
4738      </para>
4739     </listitem>
4740
4741     <listitem>
4742      <para>
4743       Fix incorrect HOT updates after <structname>pg_class</> is reindexed
4744       (Tom)
4745      </para>
4746
4747      <para>
4748       Corruption of <structname>pg_class</> could occur if <literal>REINDEX
4749       TABLE pg_class</> was followed in the same session by an <literal>ALTER
4750       TABLE RENAME</> or <literal>ALTER TABLE SET SCHEMA</> command.
4751      </para>
4752     </listitem>
4753
4754     <listitem>
4755      <para>
4756       Fix missed <quote>combo cid</> case (Karl Schnaitter)
4757      </para>
4758
4759      <para>
4760       This error made rows incorrectly invisible to a transaction in which they
4761       had been deleted by multiple subtransactions that all aborted.
4762      </para>
4763     </listitem>
4764
4765     <listitem>
4766      <para>
4767       Prevent autovacuum from crashing if the table it's currently
4768       checking is deleted at just the wrong time (Alvaro)
4769      </para>
4770     </listitem>
4771
4772     <listitem>
4773      <para>
4774       Widen local lock counters from 32 to 64 bits (Tom)
4775      </para>
4776
4777      <para>
4778       This responds to reports that the counters could overflow in
4779       sufficiently long transactions, leading to unexpected <quote>lock is
4780       already held</> errors.
4781      </para>
4782     </listitem>
4783
4784     <listitem>
4785      <para>
4786       Fix possible duplicate output of tuples during a GiST index scan (Teodor)
4787      </para>
4788     </listitem>
4789
4790     <listitem>
4791      <para>
4792       Regenerate foreign key checking queries from scratch when either
4793       table is modified (Tom)
4794      </para>
4795
4796      <para>
4797       Previously, 8.3 would attempt to replan the query, but would work from
4798       previously generated query text.  This led to failures if a
4799       table or column was renamed.
4800      </para>
4801     </listitem>
4802
4803     <listitem>
4804      <para>
4805       Fix missed permissions checks when a view contains a simple
4806       <literal>UNION ALL</> construct (Heikki)
4807      </para>
4808
4809      <para>
4810       Permissions for the referenced tables were checked properly, but not
4811       permissions for the view itself.
4812      </para>
4813     </listitem>
4814
4815     <listitem>
4816      <para>
4817       Add checks in executor startup to ensure that the tuples produced by an
4818       <command>INSERT</> or <command>UPDATE</> will match the target table's
4819       current rowtype (Tom)
4820      </para>
4821
4822      <para>
4823       This situation is believed to be impossible in 8.3, but it can happen in
4824       prior releases, so a check seems prudent.
4825      </para>
4826     </listitem>
4827
4828     <listitem>
4829      <para>
4830       Fix possible repeated drops during <command>DROP OWNED</> (Tom)
4831      </para>
4832
4833      <para>
4834       This would typically result in strange errors such as <quote>cache
4835       lookup failed for relation NNN</>.
4836      </para>
4837     </listitem>
4838
4839     <listitem>
4840      <para>
4841       Fix several memory leaks in XML operations (Kris Jurka, Tom)
4842      </para>
4843     </listitem>
4844
4845     <listitem>
4846      <para>
4847       Fix <function>xmlserialize()</> to raise error properly for
4848       unacceptable target data type (Tom)
4849      </para>
4850     </listitem>
4851
4852     <listitem>
4853      <para>
4854       Fix a couple of places that mis-handled multibyte characters in text
4855       search configuration file parsing (Tom)
4856      </para>
4857
4858      <para>
4859       Certain characters occurring in configuration files would always cause
4860       <quote>invalid byte sequence for encoding</> failures.
4861      </para>
4862     </listitem>
4863
4864     <listitem>
4865      <para>
4866       Provide file name and line number location for all errors reported
4867       in text search configuration files (Tom)
4868      </para>
4869     </listitem>
4870
4871     <listitem>
4872      <para>
4873       Fix <literal>AT TIME ZONE</> to first try to interpret its timezone
4874       argument as a timezone abbreviation, and only try it as a full timezone
4875       name if that fails, rather than the other way around as formerly (Tom)
4876      </para>
4877
4878      <para>
4879       The timestamp input functions have always resolved ambiguous zone names
4880       in this order.  Making <literal>AT TIME ZONE</> do so as well improves
4881       consistency, and fixes a compatibility bug introduced in 8.1:
4882       in ambiguous cases we now behave the same as 8.0 and before did,
4883       since in the older versions <literal>AT TIME ZONE</> accepted
4884       <emphasis>only</> abbreviations.
4885      </para>
4886     </listitem>
4887
4888     <listitem>
4889      <para>
4890       Fix datetime input functions to correctly detect integer overflow when
4891       running on a 64-bit platform (Tom)
4892      </para>
4893     </listitem>
4894
4895     <listitem>
4896      <para>
4897       Prevent integer overflows during units conversion when displaying a
4898       configuration parameter that has units (Tom)
4899      </para>
4900     </listitem>
4901
4902     <listitem>
4903      <para>
4904       Improve performance of writing very long log messages to syslog (Tom)
4905      </para>
4906     </listitem>
4907
4908     <listitem>
4909      <para>
4910       Allow spaces in the suffix part of an LDAP URL in
4911       <filename>pg_hba.conf</> (Tom)
4912      </para>
4913     </listitem>
4914
4915     <listitem>
4916      <para>
4917       Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
4918       ON</> query (Tom)
4919      </para>
4920     </listitem>
4921
4922     <listitem>
4923      <para>
4924       Fix planner bug that could improperly push down <literal>IS NULL</>
4925       tests below an outer join (Tom)
4926      </para>
4927
4928      <para>
4929       This was triggered by occurrence of <literal>IS NULL</> tests for
4930       the same relation in all arms of an upper <literal>OR</> clause.
4931      </para>
4932     </listitem>
4933
4934     <listitem>
4935      <para>
4936       Fix planner bug with nested sub-select expressions (Tom)
4937      </para>
4938
4939      <para>
4940       If the outer sub-select has no direct dependency on the parent query,
4941       but the inner one does, the outer value might not get recalculated
4942       for new parent query rows.
4943      </para>
4944     </listitem>
4945
4946     <listitem>
4947      <para>
4948       Fix planner to estimate that <literal>GROUP BY</> expressions yielding
4949       boolean results always result in two groups, regardless of the
4950       expressions' contents (Tom)
4951      </para>
4952
4953      <para>
4954       This is very substantially more accurate than the regular <literal>GROUP
4955       BY</> estimate for certain boolean tests like <replaceable>col</>
4956       <literal>IS NULL</>.
4957      </para>
4958     </listitem>
4959
4960     <listitem>
4961      <para>
4962       Fix PL/pgSQL to not fail when a <literal>FOR</> loop's target variable
4963       is a record containing composite-type fields (Tom)
4964      </para>
4965     </listitem>
4966
4967     <listitem>
4968      <para>
4969       Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful
4970       about the encoding of data sent to or from Tcl (Tom)
4971      </para>
4972     </listitem>
4973
4974     <listitem>
4975      <para>
4976       Improve performance of <function>PQescapeBytea()</> (Rudolf Leitgeb)
4977      </para>
4978     </listitem>
4979
4980     <listitem>
4981      <para>
4982       On Windows, work around a Microsoft bug by preventing
4983       <application>libpq</> from trying to send more than 64kB per system call
4984       (Magnus)
4985      </para>
4986     </listitem>
4987
4988     <listitem>
4989      <para>
4990       Fix <application>ecpg</> to handle variables properly in <command>SET</>
4991       commands (Michael)
4992      </para>
4993     </listitem>
4994
4995     <listitem>
4996      <para>
4997       Improve <application>pg_dump</> and <application>pg_restore</>'s
4998       error reporting after failure to send a SQL command (Tom)
4999      </para>
5000     </listitem>
5001
5002     <listitem>
5003      <para>
5004       Fix <application>pg_ctl</> to properly preserve postmaster
5005       command-line arguments across a <literal>restart</> (Bruce)
5006      </para>
5007     </listitem>
5008
5009     <listitem>
5010      <para>
5011       Fix erroneous WAL file cutoff point calculation in
5012       <application>pg_standby</> (Simon)
5013      </para>
5014     </listitem>
5015
5016     <listitem>
5017      <para>
5018       Update time zone data files to <application>tzdata</> release 2008f (for
5019       DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco,
5020       Pakistan, Palestine, and Paraguay)
5021      </para>
5022     </listitem>
5023
5024    </itemizedlist>
5025
5026   </sect2>
5027  </sect1>
5028
5029  <sect1 id="release-8-3-3">
5030   <title>Release 8.3.3</title>
5031
5032   <note>
5033   <title>Release Date</title>
5034   <simpara>2008-06-12</simpara>
5035   </note>
5036
5037   <para>
5038    This release contains one serious and one minor bug fix over 8.3.2.
5039    For information about new features in the 8.3 major release, see
5040    <xref linkend="release-8-3">.
5041   </para>
5042
5043   <sect2>
5044    <title>Migration to Version 8.3.3</title>
5045
5046    <para>
5047     A dump/restore is not required for those running 8.3.X.
5048     However, if you are upgrading from a version earlier than 8.3.1,
5049     see the release notes for 8.3.1.
5050    </para>
5051
5052   </sect2>
5053
5054   <sect2>
5055    <title>Changes</title>
5056
5057    <itemizedlist>
5058
5059     <listitem>
5060      <para>
5061       Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom)
5062      </para>
5063
5064      <para>
5065       Before this fix, a negative constant in a view or rule might be dumped
5066       as, say, <literal>-42::integer</>, which is subtly incorrect: it should
5067       be <literal>(-42)::integer</> due to operator precedence rules.
5068       Usually this would make little difference, but it could interact with
5069       another recent patch to cause
5070       <productname>PostgreSQL</> to reject what had been a valid
5071       <command>SELECT DISTINCT</> view query.  Since this could result in
5072       <application>pg_dump</> output failing to reload, it is being treated
5073       as a high-priority fix.  The only released versions in which dump
5074       output is actually incorrect are 8.3.1 and 8.2.7.
5075      </para>
5076     </listitem>
5077
5078     <listitem>
5079      <para>
5080       Make <command>ALTER AGGREGATE ... OWNER TO</> update
5081       <structname>pg_shdepend</> (Tom)
5082      </para>
5083
5084      <para>
5085       This oversight could lead to problems if the aggregate was later
5086       involved in a <command>DROP OWNED</> or <command>REASSIGN OWNED</>
5087       operation.
5088      </para>
5089     </listitem>
5090
5091    </itemizedlist>
5092
5093   </sect2>
5094  </sect1>
5095
5096  <sect1 id="release-8-3-2">
5097   <title>Release 8.3.2</title>
5098
5099   <note>
5100   <title>Release Date</title>
5101   <simpara>never released</simpara>
5102   </note>
5103
5104   <para>
5105    This release contains a variety of fixes from 8.3.1.
5106    For information about new features in the 8.3 major release, see
5107    <xref linkend="release-8-3">.
5108   </para>
5109
5110   <sect2>
5111    <title>Migration to Version 8.3.2</title>
5112
5113    <para>
5114     A dump/restore is not required for those running 8.3.X.
5115     However, if you are upgrading from a version earlier than 8.3.1,
5116     see the release notes for 8.3.1.
5117    </para>
5118
5119   </sect2>
5120
5121   <sect2>
5122    <title>Changes</title>
5123
5124    <itemizedlist>
5125
5126     <listitem>
5127      <para>
5128       Fix <literal>ERRORDATA_STACK_SIZE exceeded</literal> crash that
5129       occurred on Windows when using UTF-8 database encoding and a different
5130       client encoding (Tom)
5131      </para>
5132     </listitem>
5133
5134     <listitem>
5135      <para>
5136       Fix incorrect archive truncation point calculation for the
5137       <literal>%r</> macro in <varname>recovery_command</> parameters
5138       (Simon)
5139      </para>
5140
5141      <para>
5142       This could lead to data loss if a warm-standby script relied on
5143       <literal>%r</> to decide when to throw away WAL segment files.
5144      </para>
5145     </listitem>
5146
5147     <listitem>
5148      <para>
5149       Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</> so that the new
5150       column is correctly checked to see if it's been initialized to all
5151       non-nulls (Brendan Jurd)
5152      </para>
5153
5154      <para>
5155       Previous versions neglected to check this requirement at all.
5156      </para>
5157     </listitem>
5158
5159     <listitem>
5160      <para>
5161       Fix <command>REASSIGN OWNED</> so that it works on procedural
5162       languages too (Alvaro)
5163      </para>
5164     </listitem>
5165
5166     <listitem>
5167      <para>
5168       Fix problems with <command>SELECT FOR UPDATE/SHARE</> occurring as a
5169       subquery in a query with a non-<command>SELECT</> top-level operation
5170       (Tom)
5171      </para>
5172     </listitem>
5173
5174     <listitem>
5175      <para>
5176       Fix possible <command>CREATE TABLE</> failure when inheriting the
5177       <quote>same</> constraint from multiple parent relations that
5178       inherited that constraint from a common ancestor (Tom)
5179      </para>
5180     </listitem>
5181
5182     <listitem>
5183      <para>
5184       Fix <function>pg_get_ruledef()</> to show the alias, if any, attached
5185       to the target table of an <command>UPDATE</> or <command>DELETE</>
5186       (Tom)
5187      </para>
5188     </listitem>
5189
5190     <listitem>
5191      <para>
5192       Restore the pre-8.3 behavior that an out-of-range block number in a
5193       TID being used in a TidScan plan results in silently not matching any
5194       rows (Tom)
5195      </para>
5196
5197      <para>
5198       8.3.0 and 8.3.1 threw an error instead.
5199      </para>
5200     </listitem>
5201
5202     <listitem>
5203      <para>
5204       Fix GIN bug that could result in a <literal>too many LWLocks
5205       taken</literal> failure (Teodor)
5206      </para>
5207     </listitem>
5208
5209     <listitem>
5210      <para>
5211       Fix broken GiST comparison function for <type>tsquery</> (Teodor)
5212      </para>
5213     </listitem>
5214
5215     <listitem>
5216      <para>
5217       Fix <function>tsvector_update_trigger()</> and <function>ts_stat()</>
5218       to accept domains over the types they expect to work with (Tom)
5219      </para>
5220     </listitem>
5221
5222     <listitem>
5223      <para>
5224       Fix failure to support enum data types as foreign keys (Tom)
5225      </para>
5226     </listitem>
5227
5228     <listitem>
5229      <para>
5230       Avoid possible crash when decompressing corrupted data
5231       (Zdenek Kotala)
5232      </para>
5233     </listitem>
5234
5235     <listitem>
5236      <para>
5237       Fix race conditions between delayed unlinks and <command>DROP
5238       DATABASE</> (Heikki)
5239      </para>
5240
5241      <para>
5242       In the worst case this could result in deleting a newly created table
5243       in a new database that happened to get the same OID as the
5244       recently-dropped one; but of course that is an extremely
5245       low-probability scenario.
5246      </para>
5247     </listitem>
5248
5249     <listitem>
5250      <para>
5251       Repair two places where SIGTERM exit of a backend could leave corrupted
5252       state in shared memory (Tom)
5253      </para>
5254
5255      <para>
5256       Neither case is very important if SIGTERM is used to shut down the
5257       whole database cluster together, but there was a problem if someone
5258       tried to SIGTERM individual backends.
5259      </para>
5260     </listitem>
5261
5262     <listitem>
5263      <para>
5264       Fix possible crash due to incorrect plan generated for an
5265       <literal><replaceable>x</> IN (SELECT <replaceable>y</>
5266       FROM ...)</literal> clause when <replaceable>x</> and <replaceable>y</>
5267       have different data types; and make sure the behavior is semantically
5268       correct when the conversion from <replaceable>y</>'s type to
5269       <replaceable>x</>'s type is lossy (Tom)
5270      </para>
5271     </listitem>
5272
5273     <listitem>
5274      <para>
5275       Fix oversight that prevented the planner from substituting known Param
5276       values as if they were constants (Tom)
5277      </para>
5278
5279      <para>
5280       This mistake partially disabled optimization of unnamed
5281       extended-Query statements in 8.3.0 and 8.3.1: in particular the
5282       LIKE-to-indexscan optimization would never be applied if the LIKE
5283       pattern was passed as a parameter, and constraint exclusion
5284       depending on a parameter value didn't work either.
5285      </para>
5286     </listitem>
5287
5288     <listitem>
5289      <para>
5290       Fix planner failure when an indexable <function>MIN</> or
5291       <function>MAX</> aggregate is used with <literal>DISTINCT</> or
5292       <literal>ORDER BY</> (Tom)
5293      </para>
5294     </listitem>
5295
5296     <listitem>
5297      <para>
5298       Fix planner to ensure it never uses a <quote>physical tlist</> for a
5299       plan node that is feeding a Sort node (Tom)
5300      </para>
5301
5302      <para>
5303       This led to the sort having to push around more data than it really
5304       needed to, since unused column values were included in the sorted
5305       data.
5306      </para>
5307     </listitem>
5308
5309     <listitem>
5310      <para>
5311       Avoid unnecessary copying of query strings (Tom)
5312      </para>
5313
5314      <para>
5315       This fixes a performance problem introduced in 8.3.0 when a very large
5316       number of commands are submitted as a single query string.
5317      </para>
5318     </listitem>
5319
5320     <listitem>
5321      <para>
5322       Make <function>TransactionIdIsCurrentTransactionId()</> use binary
5323       search instead of linear search when checking child-transaction XIDs
5324       (Heikki)
5325      </para>
5326
5327      <para>
5328       This fixes some cases in which 8.3.0 was significantly
5329       slower than earlier releases.
5330      </para>
5331     </listitem>
5332
5333     <listitem>
5334      <para>
5335       Fix conversions between ISO-8859-5 and other encodings to handle
5336       Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with
5337       two dots) (Sergey Burladyan)
5338      </para>
5339     </listitem>
5340
5341     <listitem>
5342      <para>
5343       Fix several datatype input functions, notably <function>array_in()</>,
5344       that were allowing unused bytes in their results to contain
5345       uninitialized, unpredictable values (Tom)
5346      </para>
5347
5348      <para>
5349       This could lead to failures in which two apparently identical literal
5350       values were not seen as equal, resulting in the parser complaining
5351       about unmatched <literal>ORDER BY</> and <literal>DISTINCT</>
5352       expressions.
5353      </para>
5354     </listitem>
5355
5356     <listitem>
5357      <para>
5358       Fix a corner case in regular-expression substring matching
5359       (<literal>substring(<replaceable>string</> from
5360       <replaceable>pattern</>)</literal>) (Tom)
5361      </para>
5362
5363      <para>
5364       The problem occurs when there is a match to the pattern overall but
5365       the user has specified a parenthesized subexpression and that
5366       subexpression hasn't got a match.  An example is
5367       <literal>substring('foo' from 'foo(bar)?')</>.
5368       This should return NULL, since <literal>(bar)</> isn't matched, but
5369       it was mistakenly returning the whole-pattern match instead (ie,
5370       <literal>foo</>).
5371      </para>
5372     </listitem>
5373
5374     <listitem>
5375      <para>
5376       Prevent cancellation of an auto-vacuum that was launched to prevent
5377       XID wraparound (Alvaro)
5378      </para>
5379     </listitem>
5380
5381     <listitem>
5382      <para>
5383       Improve <command>ANALYZE</>'s handling of in-doubt tuples (those
5384       inserted or deleted by a not-yet-committed transaction) so that the
5385       counts it reports to the stats collector are more likely to be correct
5386       (Pavan Deolasee)
5387      </para>
5388     </listitem>
5389
5390     <listitem>
5391      <para>
5392       Fix <application>initdb</> to reject a relative path for its
5393       <literal>--xlogdir</> (<literal>-X</>) option (Tom)
5394      </para>
5395     </listitem>
5396
5397     <listitem>
5398      <para>
5399       Make <application>psql</> print tab characters as an appropriate
5400       number of spaces, rather than <literal>\x09</literal> as was done in
5401       8.3.0 and 8.3.1 (Bruce)
5402      </para>
5403     </listitem>
5404
5405     <listitem>
5406      <para>
5407       Update time zone data files to <application>tzdata</> release 2008c (for
5408       DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, and
5409       Argentina/San_Luis)
5410      </para>
5411     </listitem>
5412
5413     <listitem>
5414      <para>
5415       Add <function>ECPGget_PGconn()</> function to
5416       <application>ecpglib</> (Michael)
5417      </para>
5418     </listitem>
5419
5420     <listitem>
5421      <para>
5422       Fix incorrect result from <application>ecpg</>'s
5423       <function>PGTYPEStimestamp_sub()</> function (Michael)
5424      </para>
5425     </listitem>
5426
5427     <listitem>
5428      <para>
5429       Fix handling of continuation line markers in <application>ecpg</>
5430       (Michael)
5431      </para>
5432     </listitem>
5433
5434     <listitem>
5435      <para>
5436       Fix possible crashes in <filename>contrib/cube</> functions (Tom)
5437      </para>
5438     </listitem>
5439
5440     <listitem>
5441      <para>
5442       Fix core dump in <filename>contrib/xml2</>'s
5443       <function>xpath_table()</> function when the input query returns a
5444       NULL value (Tom)
5445      </para>
5446     </listitem>
5447
5448     <listitem>
5449      <para>
5450       Fix <filename>contrib/xml2</>'s makefile to not override
5451       <literal>CFLAGS</>, and make it auto-configure properly for
5452       <application>libxslt</> present or not (Tom)
5453      </para>
5454     </listitem>
5455
5456    </itemizedlist>
5457
5458   </sect2>
5459  </sect1>
5460
5461  <sect1 id="release-8-3-1">
5462   <title>Release 8.3.1</title>
5463
5464   <note>
5465   <title>Release Date</title>
5466   <simpara>2008-03-17</simpara>
5467   </note>
5468
5469   <para>
5470    This release contains a variety of fixes from 8.3.0.
5471    For information about new features in the 8.3 major release, see
5472    <xref linkend="release-8-3">.
5473   </para>
5474
5475   <sect2>
5476    <title>Migration to Version 8.3.1</title>
5477
5478    <para>
5479     A dump/restore is not required for those running 8.3.X.
5480     However, you might need to <command>REINDEX</> indexes on textual
5481     columns after updating, if you are affected by the Windows locale
5482     issue described below.
5483    </para>
5484
5485   </sect2>
5486
5487   <sect2>
5488    <title>Changes</title>
5489
5490    <itemizedlist>
5491
5492     <listitem>
5493      <para>
5494       Fix character string comparison for Windows locales that consider
5495       different character combinations as equal (Tom)
5496      </para>
5497
5498      <para>
5499       This fix applies only on Windows and only when using UTF-8
5500       database encoding.  The same fix was made for all other cases
5501       over two years ago, but Windows with UTF-8 uses a separate code
5502       path that was not updated.  If you are using a locale that
5503       considers some non-identical strings as equal, you may need to
5504       <command>REINDEX</> to fix existing indexes on textual columns.
5505      </para>
5506     </listitem>
5507
5508     <listitem>
5509      <para>
5510       Repair corner-case bugs in <command>VACUUM FULL</> (Tom)
5511      </para>
5512
5513      <para>
5514       A potential deadlock between concurrent <command>VACUUM FULL</>
5515       operations on different system catalogs was introduced in 8.2.
5516       This has now been corrected.  8.3 made this worse because the
5517       deadlock could occur within a critical code section, making it
5518       a PANIC rather than just ERROR condition.
5519      </para>
5520
5521      <para>
5522       Also, a <command>VACUUM FULL</> that failed partway through
5523       vacuuming a system catalog could result in cache corruption in
5524       concurrent database sessions.
5525      </para>
5526
5527      <para>
5528       Another <command>VACUUM FULL</> bug introduced in 8.3 could
5529       result in a crash or out-of-memory report when dealing with
5530       pages containing no live tuples.
5531      </para>
5532     </listitem>
5533
5534     <listitem>
5535      <para>
5536       Fix misbehavior of foreign key checks involving <type>character</>
5537       or <type>bit</> columns (Tom)
5538      </para>
5539
5540      <para>
5541       If the referencing column were of a different but compatible type
5542       (for instance <type>varchar</>), the constraint was enforced incorrectly.
5543      </para>
5544     </listitem>
5545
5546     <listitem>
5547      <para>
5548       Avoid needless deadlock failures in no-op foreign-key checks (Stephan
5549       Szabo, Tom)
5550      </para>
5551     </listitem>
5552
5553     <listitem>
5554      <para>
5555       Fix possible core dump when re-planning a prepared query (Tom)
5556      </para>
5557
5558      <para>
5559       This bug affected only protocol-level prepare operations, not
5560       SQL <command>PREPARE</>, and so tended to be seen only with
5561       JDBC, DBI, and other client-side drivers that use prepared
5562       statements heavily.
5563      </para>
5564     </listitem>
5565
5566     <listitem>
5567      <para>
5568       Fix possible failure when re-planning a query that calls an SPI-using
5569       function (Tom)
5570      </para>
5571     </listitem>
5572
5573     <listitem>
5574      <para>
5575       Fix failure in row-wise comparisons involving columns of different
5576       datatypes (Tom)
5577      </para>
5578     </listitem>
5579
5580     <listitem>
5581      <para>
5582       Fix longstanding <command>LISTEN</>/<command>NOTIFY</>
5583       race condition (Tom)
5584      </para>
5585
5586      <para>
5587       In rare cases a session that had just executed a
5588       <command>LISTEN</> might not get a notification, even though
5589       one would be expected because the concurrent transaction executing
5590       <command>NOTIFY</> was observed to commit later.
5591      </para>
5592
5593      <para>
5594       A side effect of the fix is that a transaction that has executed
5595       a not-yet-committed <command>LISTEN</> command will not see any
5596       row in <structname>pg_listener</> for the <command>LISTEN</>,
5597       should it choose to look; formerly it would have.  This behavior
5598       was never documented one way or the other, but it is possible that
5599       some applications depend on the old behavior.
5600      </para>
5601     </listitem>
5602
5603     <listitem>
5604      <para>
5605       Disallow <command>LISTEN</> and <command>UNLISTEN</> within a
5606       prepared transaction (Tom)
5607      </para>
5608
5609      <para>
5610       This was formerly allowed but trying to do it had various unpleasant
5611       consequences, notably that the originating backend could not exit
5612       as long as an <command>UNLISTEN</> remained uncommitted.
5613      </para>
5614     </listitem>
5615
5616     <listitem>
5617      <para>
5618       Disallow dropping a temporary table within a
5619       prepared transaction (Heikki)
5620      </para>
5621
5622      <para>
5623       This was correctly disallowed by 8.1, but the check was inadvertently
5624       broken in 8.2 and 8.3.
5625      </para>
5626     </listitem>
5627
5628     <listitem>
5629      <para>
5630       Fix rare crash when an error occurs during a query using a hash index
5631       (Heikki)
5632      </para>
5633     </listitem>
5634
5635     <listitem>
5636      <para>
5637       Fix incorrect comparison of <type>tsquery</> values (Teodor)
5638      </para>
5639     </listitem>
5640
5641     <listitem>
5642      <para>
5643       Fix incorrect behavior of <literal>LIKE</> with non-ASCII characters
5644       in single-byte encodings (Rolf Jentsch)
5645      </para>
5646     </listitem>
5647
5648     <listitem>
5649      <para>
5650       Disable <function>xmlvalidate</> (Tom)
5651      </para>
5652
5653      <para>
5654       This function should have been removed before 8.3 release, but
5655       was inadvertently left in the source code.  It poses a small
5656       security risk since unprivileged users could use it to read the
5657       first few characters of any file accessible to the server.
5658      </para>
5659     </listitem>
5660
5661     <listitem>
5662      <para>
5663       Fix memory leaks in certain usages of set-returning functions (Neil)
5664      </para>
5665     </listitem>
5666
5667     <listitem>
5668      <para>
5669       Make <function>encode(<replaceable>bytea</>, 'escape')</> convert all
5670       high-bit-set byte values into <literal>\</><replaceable>nnn</> octal
5671       escape sequences (Tom)
5672      </para>
5673
5674      <para>
5675       This is necessary to avoid encoding problems when the database
5676       encoding is multi-byte.  This change could pose compatibility issues
5677       for applications that are expecting specific results from
5678       <function>encode</>.
5679      </para>
5680     </listitem>
5681
5682     <listitem>
5683      <para>
5684       Fix input of datetime values for February 29 in years BC (Tom)
5685      </para>
5686
5687      <para>
5688       The former coding was mistaken about which years were leap years.
5689      </para>
5690     </listitem>
5691
5692     <listitem>
5693      <para>
5694       Fix <quote>unrecognized node type</> error in some variants of
5695       <command>ALTER OWNER</> (Tom)
5696      </para>
5697     </listitem>
5698
5699     <listitem>
5700      <para>
5701       Avoid tablespace permissions errors in <command>CREATE TABLE LIKE
5702       INCLUDING INDEXES</> (Tom)
5703      </para>
5704     </listitem>
5705
5706     <listitem>
5707      <para>
5708       Ensure <structname>pg_stat_activity</>.<structfield>waiting</> flag
5709       is cleared when a lock wait is aborted (Tom)
5710      </para>
5711     </listitem>
5712
5713     <listitem>
5714      <para>
5715       Fix handling of process permissions on Windows Vista (Dave, Magnus)
5716      </para>
5717
5718      <para>
5719       In particular, this fix allows starting the server as the Administrator
5720       user.
5721      </para>
5722     </listitem>
5723
5724     <listitem>
5725      <para>
5726       Update time zone data files to <application>tzdata</> release 2008a
5727       (in particular, recent Chile changes); adjust timezone abbreviation
5728       <literal>VET</> (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom)
5729      </para>
5730     </listitem>
5731
5732     <listitem>
5733      <para>
5734       Fix <application>ecpg</> problems with arrays (Michael)
5735      </para>
5736     </listitem>
5737
5738     <listitem>
5739      <para>
5740       Fix <application>pg_ctl</> to correctly extract the postmaster's port
5741       number from command-line options (Itagaki Takahiro, Tom)
5742      </para>
5743
5744      <para>
5745       Previously, <literal>pg_ctl start -w</> could try to contact the
5746       postmaster on the wrong port, leading to bogus reports of startup
5747       failure.
5748      </para>
5749     </listitem>
5750
5751     <listitem>
5752      <para>
5753       Use <option>-fwrapv</> to defend against possible misoptimization
5754       in recent <application>gcc</> versions (Tom)
5755      </para>
5756
5757      <para>
5758       This is known to be necessary when building <productname>PostgreSQL</>
5759       with <application>gcc</> 4.3 or later.
5760      </para>
5761     </listitem>
5762
5763     <listitem>
5764      <para>
5765       Enable building <filename>contrib/uuid-ossp</> with MSVC (Hiroshi Saito)
5766      </para>
5767     </listitem>
5768
5769    </itemizedlist>
5770
5771   </sect2>
5772  </sect1>
5773
5774  <sect1 id="release-8-3">
5775   <title>Release 8.3</title>
5776
5777   <note>
5778    <title>Release Date</title>
5779    <simpara>2008-02-04</simpara>
5780   </note>
5781
5782   <sect2>
5783    <title>Overview</title>
5784
5785    <para>
5786     With significant new functionality and performance enhancements,
5787     this release represents a major leap forward for
5788     <productname>PostgreSQL</>. This was made possible by a growing
5789     community that has dramatically accelerated the pace of
5790     development. This release adds the following major features:
5791    </para>
5792
5793    <itemizedlist>
5794
5795     <listitem>
5796      <para>
5797       Full text search is integrated into the core database system
5798      </para>
5799     </listitem>
5800
5801     <listitem>
5802      <para>
5803       Support for the SQL/XML standard, including new operators and an
5804       <type>XML</type> data type
5805      </para>
5806     </listitem>
5807
5808     <listitem>
5809      <para>
5810       Enumerated data types (<type>ENUM</type>)
5811      </para>
5812     </listitem>
5813
5814     <listitem>
5815      <para>
5816       Arrays of composite types
5817      </para>
5818     </listitem>
5819
5820     <listitem>
5821      <para>
5822       Universally Unique Identifier (<type>UUID</>) data type
5823      </para>
5824     </listitem>
5825
5826     <listitem>
5827      <para>
5828       Add control over whether <literal>NULL</>s sort first or last
5829      </para>
5830     </listitem>
5831
5832     <listitem>
5833      <para>
5834       Updatable cursors
5835      </para>
5836     </listitem>
5837
5838     <listitem>
5839      <para>
5840       Server configuration parameters can now be set on a per-function
5841       basis
5842      </para>
5843     </listitem>
5844
5845     <listitem>
5846      <para>
5847       User-defined types can now have type modifiers
5848      </para>
5849     </listitem>
5850
5851     <listitem>
5852      <para>
5853       Automatically re-plan cached queries when table
5854       definitions change or statistics are updated
5855      </para>
5856     </listitem>
5857
5858     <listitem>
5859      <para>
5860       Numerous improvements in logging and statistics collection
5861      </para>
5862     </listitem>
5863
5864     <listitem>
5865      <para>
5866       Support Security Service Provider Interface (<acronym>SSPI</>) for
5867       authentication on Windows
5868      </para>
5869     </listitem>
5870
5871     <listitem>
5872      <para>
5873       Support multiple concurrent autovacuum processes, and other
5874       autovacuum improvements
5875      </para>
5876     </listitem>
5877
5878     <listitem>
5879      <para>
5880       Allow the whole <productname>PostgreSQL</> distribution to be compiled
5881       with <productname>Microsoft Visual C++</>
5882      </para>
5883     </listitem>
5884
5885    </itemizedlist>
5886
5887    <para>
5888     Major performance improvements are listed below.  Most of
5889     these enhancements are automatic and do not require user changes or
5890     tuning:
5891    </para>
5892
5893   <itemizedlist>
5894
5895     <listitem>
5896      <para>
5897       Asynchronous commit delays writes to WAL during transaction commit
5898      </para>
5899     </listitem>
5900
5901     <listitem>
5902      <para>
5903       Checkpoint writes can be spread over a longer time period to smooth
5904       the I/O spike during each checkpoint
5905      </para>
5906     </listitem>
5907
5908     <listitem>
5909      <para>
5910       Heap-Only Tuples (<acronym>HOT</>) accelerate space reuse for
5911       most <command>UPDATE</>s and <command>DELETE</>s
5912      </para>
5913     </listitem>
5914
5915     <listitem>
5916      <para>
5917       Just-in-time background writer strategy improves disk write
5918       efficiency
5919      </para>
5920     </listitem>
5921
5922     <listitem>
5923      <para>
5924       Using non-persistent transaction IDs for read-only transactions
5925       reduces overhead and <command>VACUUM</> requirements
5926      </para>
5927     </listitem>
5928
5929     <listitem>
5930      <para>
5931       Per-field and per-row storage overhead has been reduced
5932      </para>
5933     </listitem>
5934
5935     <listitem>
5936      <para>
5937       Large sequential scans no longer force out frequently used
5938       cached pages
5939      </para>
5940     </listitem>
5941
5942     <listitem>
5943      <para>
5944       Concurrent large sequential scans can now share disk reads
5945      </para>
5946     </listitem>
5947
5948     <listitem>
5949      <para>
5950       <literal>ORDER BY ... LIMIT</> can be done without sorting
5951      </para>
5952     </listitem>
5953
5954    </itemizedlist>
5955
5956    <para>
5957     The above items are explained in more detail in the sections below.
5958    </para>
5959
5960   </sect2>
5961
5962   <sect2>
5963    <title>Migration to Version 8.3</title>
5964
5965    <para>
5966     A dump/restore using <application>pg_dump</application> is
5967     required for those wishing to migrate data from any previous
5968     release.
5969    </para>
5970
5971    <para>
5972     Observe the following incompatibilities:
5973    </para>
5974
5975    <sect3>
5976     <title>General</title>
5977     <itemizedlist>
5978
5979      <listitem>
5980       <para>
5981        Non-character data types are no longer automatically cast to
5982        <type>TEXT</> (Peter, Tom)
5983       </para>
5984
5985       <para>
5986        Previously, if a non-character value was supplied to an operator or
5987        function that requires <type>text</> input, it was automatically
5988        cast to <type>text</>, for most (though not all) built-in data types.
5989        This no longer happens: an explicit cast to <type>text</> is now
5990        required for all non-character-string types.  For example, these
5991        expressions formerly worked:
5992
5993 <programlisting>
5994 substr(current_date, 1, 4)
5995 23 LIKE '2%'
5996 </programlisting>
5997
5998        but will now draw <quote>function does not exist</> and <quote>operator
5999        does not exist</> errors respectively.  Use an explicit cast instead:
6000
6001 <programlisting>
6002 substr(current_date::text, 1, 4)
6003 23::text LIKE '2%'
6004 </programlisting>
6005
6006        (Of course, you can use the more verbose <literal>CAST()</> syntax too.)
6007        The reason for the change is that these automatic casts too often caused
6008        surprising behavior.  An example is that in previous releases, this
6009        expression was accepted but did not do what was expected:
6010
6011 <programlisting>
6012 current_date &lt; 2017-11-17
6013 </programlisting>
6014
6015        This is actually comparing a date to an integer, which should be
6016        (and now is) rejected &mdash; but in the presence of automatic
6017        casts both sides were cast to <type>text</> and a textual comparison
6018        was done, because the <literal>text &lt; text</> operator was able
6019        to match the expression when no other <literal>&lt;</> operator could.
6020       </para>
6021
6022       <para>
6023        Types <type>char(<replaceable>n</>)</type> and
6024        <type>varchar(<replaceable>n</>)</type> still cast to <type>text</>
6025        automatically.  Also, automatic casting to <type>text</> still works for
6026        inputs to the concatenation (<literal>||</>) operator, so long as least
6027        one input is a character-string type.
6028       </para>
6029      </listitem>
6030
6031      <listitem>
6032       <para>
6033         Full text search features from <filename>contrib/tsearch2</> have
6034         been moved into the core server, with some minor syntax changes
6035       </para>
6036
6037       <para>
6038        <filename>contrib/tsearch2</> now contains a compatibility
6039        interface.
6040       </para>
6041      </listitem>
6042
6043      <listitem>
6044       <para>
6045        <literal>ARRAY(SELECT ...)</literal>, where the <command>SELECT</>
6046        returns no rows, now returns an empty array, rather than NULL
6047        (Tom)
6048       </para>
6049      </listitem>
6050
6051      <listitem>
6052       <para>
6053        The array type name for a base data type is no longer always the base
6054        type's name with an underscore prefix
6055       </para>
6056
6057       <para>
6058        The old naming convention is still honored when possible, but
6059        application code should no longer depend on it. Instead
6060        use the new <literal>pg_type.typarray</literal> column to
6061        identify the array data type associated with a given type.
6062       </para>
6063      </listitem>
6064
6065      <listitem>
6066       <para>
6067        <literal>ORDER BY ... USING</> <replaceable>operator</> must now
6068        use a less-than or greater-than <replaceable>operator</> that is
6069        defined in a btree operator class
6070       </para>
6071
6072       <para>
6073        This restriction was added to prevent inconsistent results.
6074       </para>
6075      </listitem>
6076
6077      <listitem>
6078       <para>
6079        <command>SET LOCAL</command> changes now persist until
6080        the end of the outermost transaction, unless rolled back (Tom)
6081       </para>
6082
6083       <para>
6084        Previously <command>SET LOCAL</command>'s effects were lost
6085        after subtransaction commit (<command>RELEASE SAVEPOINT</>
6086        or exit from a PL/pgSQL exception block).
6087       </para>
6088      </listitem>
6089
6090      <listitem>
6091       <para>
6092        Commands rejected in transaction blocks are now also rejected in
6093        multiple-statement query strings (Tom)
6094       </para>
6095
6096       <para>
6097        For example, <literal>"BEGIN; DROP DATABASE; COMMIT"</> will now be
6098        rejected even if submitted as a single query message.
6099       </para>
6100      </listitem>
6101
6102      <listitem>
6103       <para>
6104        <command>ROLLBACK</> outside a transaction block now
6105        issues <literal>NOTICE</> instead of <literal>WARNING</> (Bruce)
6106       </para>
6107      </listitem>
6108
6109      <listitem>
6110       <para>
6111        Prevent <command>NOTIFY</command>/<command>LISTEN</command>/<command>UNLISTEN</command>
6112        from accepting schema-qualified names (Bruce)
6113       </para>
6114
6115       <para>
6116        Formerly, these commands accepted <literal>schema.relation</> but
6117        ignored the schema part, which was confusing.
6118       </para>
6119      </listitem>
6120
6121      <listitem>
6122       <para>
6123        <command>ALTER SEQUENCE</> no longer affects the sequence's
6124        <function>currval()</> state (Tom)
6125       </para>
6126      </listitem>
6127
6128      <listitem>
6129       <para>
6130        Foreign keys now must match indexable conditions for
6131        cross-data-type references (Tom)
6132       </para>
6133
6134       <para>
6135        This improves semantic consistency and helps avoid
6136        performance problems.
6137       </para>
6138      </listitem>
6139
6140      <listitem>
6141       <para>
6142        Restrict object size functions to users who have reasonable
6143        permissions to view such information (Tom)
6144       </para>
6145
6146       <para>
6147        For example, <function>pg_database_size()</function> now requires
6148        <literal>CONNECT</> permission, which is granted to everyone by
6149        default. <function>pg_tablespace_size()</function> requires
6150        <literal>CREATE</> permission in the tablespace, or is allowed if
6151        the tablespace is the default tablespace for the database.
6152       </para>
6153      </listitem>
6154
6155      <listitem>
6156       <para>
6157        Remove the undocumented <literal>!!=</> (not in) operator (Tom)
6158       </para>
6159
6160       <para>
6161        <literal>NOT IN (SELECT ...)</literal> is the proper way to
6162        perform this operation.
6163       </para>
6164      </listitem>
6165
6166      <listitem>
6167       <para>
6168        Internal hashing functions are now more uniformly-distributed (Tom)
6169       </para>
6170
6171       <para>
6172        If application code was computing and storing hash values using
6173        internal <productname>PostgreSQL</> hashing functions, the hash
6174        values must be regenerated.
6175       </para>
6176      </listitem>
6177
6178      <listitem>
6179       <para>
6180        C-code conventions for handling variable-length data values
6181        have changed (Greg Stark, Tom)
6182       </para>
6183
6184       <para>
6185        The new <function>SET_VARSIZE()</> macro <emphasis>must</> be used
6186        to set the length of generated <type>varlena</> values. Also, it
6187        might be necessary to expand (<quote>de-TOAST</quote>) input values
6188        in more cases.
6189       </para>
6190      </listitem>
6191
6192      <listitem>
6193       <para>
6194        Continuous archiving no longer reports each successful archive
6195        operation to the server logs unless <literal>DEBUG</> level is used
6196        (Simon)
6197       </para>
6198      </listitem>
6199
6200     </itemizedlist>
6201
6202     </sect3>
6203
6204     <sect3>
6205      <title>Configuration Parameters</title>
6206
6207     <itemizedlist>
6208
6209      <listitem>
6210       <para>
6211        Numerous changes in administrative server parameters
6212       </para>
6213
6214       <para>
6215        <varname>bgwriter_lru_percent</>,
6216        <varname>bgwriter_all_percent</>,
6217        <varname>bgwriter_all_maxpages</>,
6218        <varname>stats_start_collector</>, and
6219        <varname>stats_reset_on_server_start</> are removed.
6220        <varname>redirect_stderr</> is renamed to
6221        <varname>logging_collector</>.
6222        <varname>stats_command_string</> is renamed to
6223        <varname>track_activities</>.
6224        <varname>stats_block_level</> and <varname>stats_row_level</>
6225        are merged into <varname>track_counts</>.
6226        A new boolean configuration parameter, <varname>archive_mode</>,
6227        controls archiving. Autovacuum's default settings have changed.
6228       </para>
6229      </listitem>
6230
6231      <listitem>
6232       <para>
6233        Remove <varname>stats_start_collector</varname> parameter (Tom)
6234       </para>
6235
6236       <para>
6237        We now always start the collector process, unless <acronym>UDP</>
6238        socket creation fails.
6239       </para>
6240      </listitem>
6241
6242      <listitem>
6243       <para>
6244        Remove <varname>stats_reset_on_server_start</varname> parameter (Tom)
6245       </para>
6246
6247       <para>
6248        This was removed because <function>pg_stat_reset()</function>
6249        can be used for this purpose.
6250       </para>
6251      </listitem>
6252
6253      <listitem>
6254       <para>
6255        Commenting out a parameter in <filename>postgresql.conf</> now
6256        causes it to revert to its default value (Joachim Wieland)
6257       </para>
6258
6259       <para>
6260        Previously, commenting out an entry left the parameter's value unchanged
6261        until the next server restart.
6262       </para>
6263      </listitem>
6264
6265     </itemizedlist>
6266
6267     </sect3>
6268
6269
6270     <sect3>
6271      <title>Character Encodings</title>
6272
6273     <itemizedlist>
6274
6275      <listitem>
6276       <para>
6277        Add more checks for invalidly-encoded data (Andrew)
6278       </para>
6279
6280       <para>
6281        This change plugs some holes that existed in literal backslash
6282        escape string processing and <command>COPY</command> escape
6283        processing. Now the de-escaped string is rechecked to see if the
6284        result created an invalid multi-byte character.
6285       </para>
6286      </listitem>
6287
6288      <listitem>
6289       <para>
6290        Disallow database encodings that are inconsistent with the server's
6291        locale setting (Tom)
6292       </para>
6293
6294       <para>
6295        On most platforms, <literal>C</> locale is the only locale that
6296        will work with any database encoding.  Other locale settings imply
6297        a specific encoding and will misbehave if the database encoding
6298        is something different.  (Typical symptoms include bogus textual
6299        sort order and wrong results from <function>upper()</> or
6300        <function>lower()</>.)  The server now rejects attempts to create
6301        databases that have an incompatible encoding.
6302       </para>
6303      </listitem>
6304
6305      <listitem>
6306       <para>
6307        Ensure that <function>chr()</function> cannot create
6308        invalidly-encoded values (Andrew)
6309       </para>
6310
6311       <para>
6312        In UTF8-encoded databases the argument of <function>chr()</function> is
6313        now treated as a Unicode code point. In other multi-byte encodings
6314        <function>chr()</function>'s argument must designate a 7-bit ASCII
6315        character.  Zero is no longer accepted.
6316        <function>ascii()</function> has been adjusted to match.
6317       </para>
6318      </listitem>
6319
6320      <listitem>
6321       <para>
6322        Adjust <function>convert()</function> behavior to ensure encoding
6323        validity (Andrew)
6324       </para>
6325
6326       <para>
6327        The two argument form of <function>convert()</function> has been
6328        removed. The three argument form now takes a <type>bytea</type>
6329        first argument and returns a <type>bytea</type>. To cover the
6330        loss of functionality, three new functions have been added:
6331       </para>
6332
6333       <itemizedlist>
6334        <listitem>
6335         <para>
6336          <function>convert_from(bytea, name)</function> returns
6337          <type>text</> &mdash; converts the first argument from the named
6338          encoding to the database encoding
6339         </para>
6340        </listitem>
6341
6342        <listitem>
6343         <para>
6344          <function>convert_to(text, name)</function> returns
6345          <type>bytea</> &mdash; converts the first argument from the
6346          database encoding to the named encoding
6347         </para>
6348        </listitem>
6349
6350        <listitem>
6351         <para>
6352          <function>length(bytea, name)</function> returns
6353          <type>integer</> &mdash; gives the length of the first
6354          argument in characters in the named encoding
6355         </para>
6356        </listitem>
6357       </itemizedlist>
6358      </listitem>
6359
6360      <listitem>
6361       <para>
6362        Remove <literal>convert(argument USING conversion_name)</literal>
6363        (Andrew)
6364       </para>
6365
6366       <para>
6367        Its behavior did not match the SQL standard.
6368       </para>
6369      </listitem>
6370
6371      <listitem>
6372       <para>
6373        Make JOHAB encoding client-only (Tatsuo)
6374       </para>
6375
6376       <para>
6377        JOHAB is not safe as a server-side encoding.
6378       </para>
6379      </listitem>
6380
6381     </itemizedlist>
6382
6383    </sect3>
6384
6385   </sect2>
6386
6387   <sect2>
6388    <title>Changes</title>
6389
6390    <para>
6391     Below you will find a detailed account of the
6392     changes between <productname>PostgreSQL</productname> 8.3 and
6393     the previous major release.
6394    </para>
6395
6396    <sect3>
6397     <title>Performance</title>
6398     <itemizedlist>
6399
6400      <listitem>
6401       <para>
6402        Asynchronous commit delays writes to WAL during transaction commit
6403        (Simon)
6404       </para>
6405
6406       <para>
6407        This feature dramatically increases performance for short data-modifying
6408        transactions.  The disadvantage is that because disk writes are delayed,
6409        if the database or operating system crashes before data is written to
6410        the disk, committed data will be lost.  This feature is useful for
6411        applications that can accept some data loss.  Unlike turning off
6412        <varname>fsync</varname>, using asynchronous commit does not put
6413        database consistency at risk; the worst case is that after a crash the
6414        last few reportedly-committed transactions might not be committed after
6415        all.
6416        This feature is enabled by turning off <varname>synchronous_commit</>
6417        (which can be done per-session or per-transaction, if some transactions
6418        are critical and others are not).
6419        <varname>wal_writer_delay</> can be adjusted to control the maximum
6420        delay before transactions actually reach disk.
6421       </para>
6422      </listitem>
6423
6424      <listitem>
6425       <para>
6426        Checkpoint writes can be spread over a longer time period to smooth
6427        the I/O spike during each checkpoint (Itagaki Takahiro and Heikki
6428        Linnakangas)
6429       </para>
6430
6431       <para>
6432        Previously all modified buffers were forced to disk as quickly as
6433        possible during a
6434        checkpoint, causing an I/O spike that decreased server performance.
6435        This new approach spreads out disk writes during checkpoints,
6436        reducing peak I/O usage. (User-requested and shutdown checkpoints
6437        are still written as quickly as possible.)
6438       </para>
6439      </listitem>
6440
6441      <listitem>
6442       <para>
6443        Heap-Only Tuples (<acronym>HOT</>) accelerate space reuse for most
6444        <command>UPDATE</>s and <command>DELETE</>s (Pavan Deolasee, with
6445        ideas from many others)
6446       </para>
6447
6448       <para>
6449        <command>UPDATE</>s and <command>DELETE</>s leave dead tuples
6450        behind, as do failed <command>INSERT</>s.  Previously only
6451        <command>VACUUM</> could reclaim space taken by dead tuples. With
6452        <acronym>HOT</> dead tuple space can be automatically reclaimed at
6453        the time of <command>INSERT</> or <command>UPDATE</> if no changes
6454        are made to indexed columns.  This allows for more consistent
6455        performance.  Also, <acronym>HOT</> avoids adding duplicate index
6456        entries.
6457       </para>
6458      </listitem>
6459
6460      <listitem>
6461       <para>
6462        Just-in-time background writer strategy improves disk write
6463        efficiency (Greg Smith, Itagaki Takahiro)
6464       </para>
6465
6466       <para>
6467        This greatly reduces the need for manual tuning of the background
6468        writer.
6469       </para>
6470      </listitem>
6471
6472      <listitem>
6473       <para>
6474        Per-field and per-row storage overhead have been reduced
6475        (Greg Stark, Heikki Linnakangas)
6476       </para>
6477
6478       <para>
6479        Variable-length data types with data values less than 128 bytes long
6480        will see a storage decrease of 3 to 6 bytes. For example, two adjacent
6481        <type>char(1)</type> fields now use 4 bytes instead of 16. Row headers
6482        are also 4 bytes shorter than before.
6483       </para>
6484      </listitem>
6485
6486      <listitem>
6487       <para>
6488        Using non-persistent transaction IDs for read-only transactions
6489        reduces overhead and <command>VACUUM</> requirements (Florian Pflug)
6490       </para>
6491
6492       <para>
6493        Non-persistent transaction IDs do not increment the global
6494        transaction counter. Therefore, they reduce the load on
6495        <structname>pg_clog</> and increase the time between forced
6496        vacuums to prevent transaction ID wraparound.
6497        Other performance
6498        improvements were also made that should improve concurrency.
6499       </para>
6500      </listitem>
6501
6502      <listitem>
6503       <para>
6504        Avoid incrementing the command counter after a read-only command (Tom)
6505       </para>
6506
6507       <para>
6508        There was formerly a hard limit of 2<superscript>32</>
6509        (4 billion) commands per transaction.  Now only commands that
6510        actually changed the database count, so while this limit still
6511        exists, it should be significantly less annoying.
6512       </para>
6513      </listitem>
6514
6515      <listitem>
6516       <para>
6517        Create a dedicated <acronym>WAL</> writer process to off-load
6518        work from backends (Simon)
6519       </para>
6520      </listitem>
6521
6522      <listitem>
6523       <para>
6524        Skip unnecessary WAL writes for <command>CLUSTER</command> and
6525        <command>COPY</command> (Simon)
6526       </para>
6527
6528       <para>
6529        Unless WAL archiving is enabled, the system now avoids WAL writes
6530        for <command>CLUSTER</command> and just <function>fsync()</>s the
6531        table at the end of the command.  It also does the same for
6532        <command>COPY</command> if the table was created in the same
6533        transaction.
6534       </para>
6535      </listitem>
6536
6537      <listitem>
6538       <para>
6539        Large sequential scans no longer force out frequently used
6540        cached pages (Simon, Heikki, Tom)
6541       </para>
6542      </listitem>
6543
6544      <listitem>
6545       <para>
6546        Concurrent large sequential scans can now share disk reads (Jeff Davis)
6547       </para>
6548
6549       <para>
6550        This is accomplished by starting the new sequential scan in the
6551        middle of the table (where another sequential scan is already
6552        in-progress) and wrapping around to the beginning to finish.  This
6553        can affect the order of returned rows in a query that does not
6554        specify <literal>ORDER BY</>.  The <varname>synchronize_seqscans</>
6555        configuration parameter can be used to disable this if necessary.
6556       </para>
6557      </listitem>
6558
6559      <listitem>
6560       <para>
6561        <literal>ORDER BY ... LIMIT</> can be done without sorting
6562        (Greg Stark)
6563       </para>
6564
6565       <para>
6566        This is done by sequentially scanning the table and tracking just
6567        the <quote>top N</> candidate rows, rather than performing a
6568        full sort of the entire table.  This is useful when there is no
6569        matching index and the <literal>LIMIT</> is not large.
6570       </para>
6571      </listitem>
6572
6573      <listitem>
6574       <para>
6575        Put a rate limit on messages sent to the statistics
6576        collector by backends
6577        (Tom)
6578       </para>
6579
6580       <para>
6581        This reduces overhead for short transactions, but might sometimes
6582        increase the delay before statistics are tallied.
6583       </para>
6584      </listitem>
6585
6586      <listitem>
6587       <para>
6588        Improve hash join performance for cases with many NULLs (Tom)
6589       </para>
6590      </listitem>
6591
6592      <listitem>
6593       <para>
6594        Speed up operator lookup for cases with non-exact datatype matches (Tom)
6595       </para>
6596      </listitem>
6597
6598     </itemizedlist>
6599
6600    </sect3>
6601
6602    <sect3>
6603     <title>Server</title>
6604     <itemizedlist>
6605
6606      <listitem>
6607       <para>
6608        Autovacuum is now enabled by default (Alvaro)
6609       </para>
6610
6611       <para>
6612        Several changes were made to eliminate disadvantages of having
6613        autovacuum enabled, thereby justifying the change in default.
6614        Several other autovacuum parameter defaults were also modified.
6615       </para>
6616      </listitem>
6617
6618      <listitem>
6619       <para>
6620        Support multiple concurrent autovacuum processes (Alvaro, Itagaki
6621        Takahiro)
6622       </para>
6623
6624       <para>
6625        This allows multiple vacuums to run concurrently.  This prevents
6626        vacuuming of a large table from delaying vacuuming of smaller tables.
6627       </para>
6628      </listitem>
6629
6630      <listitem>
6631       <para>
6632        Automatically re-plan cached queries when table
6633        definitions change or statistics are updated (Tom)
6634       </para>
6635
6636       <para>
6637        Previously PL/pgSQL functions that referenced temporary tables
6638        would fail if the temporary table was dropped and recreated
6639        between function invocations, unless <literal>EXECUTE</> was
6640        used.  This improvement fixes that problem and many related issues.
6641       </para>
6642      </listitem>
6643
6644      <listitem>
6645       <para>
6646        Add a <varname>temp_tablespaces</varname> parameter to control
6647        the tablespaces for temporary tables and files (Jaime Casanova,
6648        Albert Cervera, Bernd Helmle)
6649       </para>
6650
6651       <para>
6652        This parameter defines a list of tablespaces to be used.  This
6653        enables spreading the I/O load across multiple tablespaces. A random
6654        tablespace is chosen each time a temporary object is created.
6655        Temporary files are no longer stored in per-database
6656        <filename>pgsql_tmp/</filename> directories but in per-tablespace
6657        directories.
6658       </para>
6659      </listitem>
6660
6661      <listitem>
6662       <para>
6663        Place temporary tables' TOAST tables in special schemas named
6664        <literal>pg_toast_temp_<replaceable>nnn</></literal> (Tom)
6665       </para>
6666
6667       <para>
6668        This allows low-level code to recognize these tables as temporary,
6669        which enables various optimizations such as not WAL-logging changes
6670        and using local rather than shared buffers for access. This also
6671        fixes a bug wherein backends unexpectedly held open file references
6672        to temporary TOAST tables.
6673       </para>
6674      </listitem>
6675
6676      <listitem>
6677       <para>
6678        Fix problem that a constant flow of new connection requests could
6679        indefinitely delay the postmaster from completing a shutdown or
6680        a crash restart (Tom)
6681       </para>
6682      </listitem>
6683
6684      <listitem>
6685       <para>
6686        Guard against a very-low-probability data loss scenario by preventing
6687        re-use of a deleted table's relfilenode until after the next
6688        checkpoint (Heikki)
6689       </para>
6690      </listitem>
6691
6692      <listitem>
6693       <para>
6694        Fix <command>CREATE CONSTRAINT TRIGGER</>
6695        to convert old-style foreign key trigger definitions into regular
6696        foreign key constraints (Tom)
6697       </para>
6698
6699       <para>
6700        This will ease porting of foreign key constraints carried forward from
6701        pre-7.3 databases, if they were never converted using
6702        <filename>contrib/adddepend</>.
6703       </para>
6704      </listitem>
6705
6706      <listitem>
6707       <para>
6708        Fix <literal>DEFAULT NULL</> to override inherited defaults (Tom)
6709       </para>
6710
6711       <para>
6712        <literal>DEFAULT NULL</> was formerly considered a noise phrase, but it
6713        should (and now does) override non-null defaults that would otherwise
6714        be inherited from a parent table or domain.
6715       </para>
6716      </listitem>
6717
6718      <listitem>
6719       <para>
6720        Add new encodings EUC_JIS_2004 and SHIFT_JIS_2004 (Tatsuo)
6721       </para>
6722
6723       <para>
6724        These new encodings can be converted to and from UTF-8.
6725       </para>
6726      </listitem>
6727
6728      <listitem>
6729       <para>
6730        Change server startup log message from <quote>database system is
6731        ready</quote> to <quote>database system is ready to accept
6732        connections</quote>, and adjust its timing
6733       </para>
6734
6735       <para>
6736        The message now appears only when the postmaster is really ready
6737        to accept connections.
6738       </para>
6739      </listitem>
6740
6741     </itemizedlist>
6742
6743    </sect3>
6744
6745    <sect3>
6746     <title>Monitoring</title>
6747     <itemizedlist>
6748
6749      <listitem>
6750       <para>
6751        Add <varname>log_autovacuum_min_duration</varname> parameter to
6752        support configurable logging of autovacuum activity (Simon, Alvaro)
6753       </para>
6754      </listitem>
6755
6756      <listitem>
6757       <para>
6758        Add <varname>log_lock_waits</varname> parameter to log lock waiting
6759        (Simon)
6760       </para>
6761      </listitem>
6762
6763      <listitem>
6764       <para>
6765        Add <varname>log_temp_files</varname> parameter to log temporary
6766        file usage (Bill Moran)
6767       </para>
6768      </listitem>
6769
6770      <listitem>
6771       <para>
6772        Add <varname>log_checkpoints</varname> parameter to improve logging
6773        of checkpoints (Greg Smith, Heikki)
6774       </para>
6775      </listitem>
6776
6777      <listitem>
6778       <para>
6779        <varname>log_line_prefix</varname> now supports
6780        <literal>%s</literal> and <literal>%c</literal> escapes in all
6781        processes (Andrew)
6782       </para>
6783
6784       <para>
6785        Previously these escapes worked only for user sessions, not for
6786        background database processes.
6787       </para>
6788      </listitem>
6789
6790      <listitem>
6791       <para>
6792        Add <varname>log_restartpoints</varname> to control logging of
6793        point-in-time recovery restart points (Simon)
6794       </para>
6795      </listitem>
6796
6797      <listitem>
6798       <para>
6799        Last transaction end time is now logged at end of recovery and at
6800        each logged restart point (Simon)
6801       </para>
6802      </listitem>
6803
6804      <listitem>
6805       <para>
6806        Autovacuum now reports its activity start time in
6807        <literal>pg_stat_activity</literal> (Tom)
6808       </para>
6809      </listitem>
6810
6811      <listitem>
6812       <para>
6813        Allow server log output in comma-separated value (CSV) format (Arul
6814        Shaji, Greg Smith, Andrew Dunstan)
6815       </para>
6816
6817       <para>
6818        CSV-format log files can easily be loaded into a database table for
6819        subsequent analysis.
6820       </para>
6821      </listitem>
6822
6823      <listitem>
6824       <para>
6825        Use PostgreSQL-supplied timezone support for formatting timestamps
6826        displayed in the server log (Tom)
6827       </para>
6828
6829       <para>
6830        This avoids Windows-specific problems with localized time zone
6831        names that are in the wrong encoding. There is a new
6832        <varname>log_timezone</> parameter that controls the timezone
6833        used in log messages, independently of the client-visible
6834        <varname>timezone</> parameter.
6835       </para>
6836      </listitem>
6837
6838      <listitem>
6839       <para>
6840        New system view <literal>pg_stat_bgwriter</literal> displays
6841        statistics about background writer activity (Magnus)
6842       </para>
6843      </listitem>
6844
6845      <listitem>
6846       <para>
6847        Add new columns for database-wide tuple statistics to
6848        <literal>pg_stat_database</literal> (Magnus)
6849       </para>
6850      </listitem>
6851
6852      <listitem>
6853       <para>
6854        Add an <literal>xact_start</literal> (transaction start time) column to
6855        <literal>pg_stat_activity</literal> (Neil)
6856       </para>
6857
6858       <para>
6859        This makes it easier to identify long-running transactions.
6860       </para>
6861      </listitem>
6862
6863      <listitem>
6864       <para>
6865        Add <literal>n_live_tuples</> and <literal>n_dead_tuples</> columns
6866        to <literal>pg_stat_all_tables</literal> and related views (Glen
6867        Parker)
6868       </para>
6869      </listitem>
6870
6871      <listitem>
6872       <para>
6873        Merge <varname>stats_block_level</> and <varname>stats_row_level</>
6874        parameters into a single parameter <varname>track_counts</>, which
6875        controls all messages sent to the statistics collector process
6876        (Tom)
6877       </para>
6878      </listitem>
6879
6880      <listitem>
6881       <para>
6882        Rename <varname>stats_command_string</varname> parameter to
6883        <varname>track_activities</varname> (Tom)
6884       </para>
6885      </listitem>
6886
6887      <listitem>
6888       <para>
6889        Fix statistical counting of live and dead tuples to recognize that
6890        committed and aborted transactions have different effects (Tom)
6891       </para>
6892      </listitem>
6893
6894     </itemizedlist>
6895
6896    </sect3>
6897
6898    <sect3>
6899     <title>Authentication</title>
6900     <itemizedlist>
6901
6902      <listitem>
6903       <para>
6904        Support Security Service Provider Interface (<acronym>SSPI</>) for
6905        authentication on Windows (Magnus)
6906       </para>
6907      </listitem>
6908
6909      <listitem>
6910       <para>
6911        Support GSSAPI authentication (Henry Hotz, Magnus)
6912       </para>
6913
6914       <para>
6915        This should be preferred to native Kerberos authentication because
6916        GSSAPI is an industry standard.
6917       </para>
6918      </listitem>
6919
6920      <listitem>
6921       <para>
6922        Support a global SSL configuration file (Victor Wagner)
6923       </para>
6924      </listitem>
6925
6926      <listitem>
6927       <para>
6928        Add <varname>ssl_ciphers</> parameter to control accepted SSL ciphers
6929        (Victor Wagner)
6930       </para>
6931      </listitem>
6932
6933      <listitem>
6934       <para>
6935        Add a Kerberos realm parameter, <varname>krb_realm</> (Magnus)
6936       </para>
6937      </listitem>
6938
6939     </itemizedlist>
6940
6941    </sect3>
6942
6943    <sect3>
6944     <title>Write-Ahead Log (<acronym>WAL</>) and Continuous Archiving</title>
6945     <itemizedlist>
6946
6947      <listitem>
6948       <para>
6949        Change the timestamps recorded in transaction WAL records from
6950        time_t to TimestampTz representation (Tom)
6951       </para>
6952
6953       <para>
6954        This provides sub-second resolution in WAL, which can be useful for
6955        point-in-time recovery.
6956       </para>
6957      </listitem>
6958
6959      <listitem>
6960       <para>
6961        Reduce WAL disk space needed by warm standby servers (Simon)
6962       </para>
6963
6964       <para>
6965        This change allows a warm standby server to pass the name of the earliest
6966        still-needed WAL file to the recovery script, allowing automatic removal
6967        of no-longer-needed WAL files.  This is done using <literal>%r</> in
6968        the <varname>restore_command</varname> parameter of
6969        <filename>recovery.conf</filename>.
6970       </para>
6971      </listitem>
6972
6973      <listitem>
6974       <para>
6975        New boolean configuration parameter, <varname>archive_mode</>,
6976        controls archiving (Simon)
6977       </para>
6978
6979       <para>
6980        Previously setting <varname>archive_command</> to an empty string
6981        turned off archiving. Now <varname>archive_mode</> turns archiving
6982        on and off, independently of <varname>archive_command</>. This is
6983        useful for stopping archiving temporarily.
6984       </para>
6985      </listitem>
6986
6987     </itemizedlist>
6988
6989    </sect3>
6990
6991    <sect3>
6992     <title>Queries</title>
6993     <itemizedlist>
6994
6995      <listitem>
6996       <para>
6997        Full text search is integrated into the core database
6998        system (Teodor, Oleg)
6999       </para>
7000
7001       <para>
7002        Text search has been improved, moved into the core code, and is now
7003        installed by default.  <filename>contrib/tsearch2</> now contains
7004        a compatibility interface.
7005       </para>
7006      </listitem>
7007
7008      <listitem>
7009       <para>
7010        Add control over whether <literal>NULL</>s sort first or last (Teodor, Tom)
7011       </para>
7012
7013       <para>
7014        The syntax is <literal>ORDER BY ... NULLS FIRST/LAST</>.
7015       </para>
7016      </listitem>
7017
7018      <listitem>
7019       <para>
7020        Allow per-column ascending/descending (<literal>ASC</>/<literal>DESC</>)
7021        ordering options for indexes (Teodor, Tom)
7022       </para>
7023
7024       <para>
7025        Previously a query using <literal>ORDER BY</> with mixed
7026        <literal>ASC</>/<literal>DESC</> specifiers could not fully use
7027        an index. Now an index can be fully used in such cases if the
7028        index was created with matching
7029        <literal>ASC</>/<literal>DESC</> specifications.
7030        <literal>NULL</> sort order within an index can be controlled, too.
7031       </para>
7032      </listitem>
7033
7034      <listitem>
7035       <para>
7036        Allow <literal>col IS NULL</> to use an index (Teodor)
7037       </para>
7038      </listitem>
7039
7040      <listitem>
7041       <para>
7042        Updatable cursors (Arul Shaji, Tom)
7043       </para>
7044
7045       <para>
7046        This eliminates the need to reference a primary key to
7047        <command>UPDATE</> or <command>DELETE</> rows returned by a cursor.
7048        The syntax is <literal>UPDATE/DELETE WHERE CURRENT OF</>.
7049       </para>
7050      </listitem>
7051
7052      <listitem>
7053       <para>
7054        Allow <literal>FOR UPDATE</literal> in cursors (Arul Shaji, Tom)
7055       </para>
7056      </listitem>
7057
7058      <listitem>
7059       <para>
7060        Create a general mechanism that supports casts to and from the
7061        standard string types (<type>TEXT</type>, <type>VARCHAR</type>,
7062        <type>CHAR</type>) for <emphasis>every</emphasis> datatype, by
7063        invoking the datatype's I/O functions (Tom)
7064       </para>
7065
7066       <para>
7067        Previously, such casts were available only for types that had
7068        specialized function(s) for the purpose.
7069        These new casts are assignment-only in the to-string direction,
7070        explicit-only in the other direction, and therefore should create no
7071        surprising behavior.
7072       </para>
7073      </listitem>
7074
7075      <listitem>
7076       <para>
7077        Allow <literal>UNION</> and related constructs to return a domain
7078        type, when all inputs are of that domain type (Tom)
7079       </para>
7080
7081       <para>
7082        Formerly, the output would be considered to be of the domain's base
7083        type.
7084       </para>
7085      </listitem>
7086
7087      <listitem>
7088       <para>
7089        Allow limited hashing when using two different data types (Tom)
7090       </para>
7091
7092       <para>
7093        This allows hash joins, hash indexes, hashed subplans, and hash
7094        aggregation to be used in situations involving cross-data-type
7095        comparisons, if the data types have compatible hash functions.
7096        Currently, cross-data-type hashing support exists for
7097        <type>smallint</type>/<type>integer</type>/<type>bigint</type>,
7098        and for <type>float4</type>/<type>float8</type>.
7099       </para>
7100      </listitem>
7101
7102      <listitem>
7103       <para>
7104        Improve optimizer logic for detecting when variables are equal
7105        in a <literal>WHERE</> clause (Tom)
7106       </para>
7107
7108       <para>
7109        This allows mergejoins to work with descending sort orders, and
7110        improves recognition of redundant sort columns.
7111       </para>
7112      </listitem>
7113
7114      <listitem>
7115       <para>
7116        Improve performance when planning large inheritance trees in
7117        cases where most tables are excluded by constraints (Tom)
7118       </para>
7119      </listitem>
7120
7121     </itemizedlist>
7122
7123    </sect3>
7124
7125    <sect3>
7126     <title>Object Manipulation</title>
7127     <itemizedlist>
7128
7129      <listitem>
7130
7131       <para>
7132        Arrays of composite types (David Fetter, Andrew, Tom)
7133       </para>
7134
7135       <para>
7136        In addition to arrays of explicitly-declared composite types,
7137        arrays of the rowtypes of regular tables and views are now
7138        supported, except for rowtypes of system catalogs, sequences, and TOAST
7139        tables.
7140       </para>
7141
7142      </listitem>
7143
7144      <listitem>
7145       <para>
7146        Server configuration parameters can now be set on a per-function
7147        basis (Tom)
7148       </para>
7149
7150       <para>
7151        For example, functions can now set their own
7152        <varname>search_path</> to prevent unexpected behavior if a
7153        different <varname>search_path</> exists at run-time.  Security
7154        definer functions should set <varname>search_path</varname> to
7155        avoid security loopholes.
7156       </para>
7157      </listitem>
7158
7159      <listitem>
7160       <para>
7161        <command>CREATE/ALTER FUNCTION</command> now supports
7162        <literal>COST</literal> and <literal>ROWS</literal> options (Tom)
7163       </para>
7164
7165       <para>
7166        <literal>COST</literal> allows specification of the cost of a
7167        function call.  <literal>ROWS</literal> allows specification of
7168        the average number or rows returned by a set-returning function.
7169        These values are used by the optimizer in choosing the best plan.
7170       </para>
7171      </listitem>
7172
7173      <listitem>
7174       <para>
7175        Implement <command>CREATE TABLE LIKE ...  INCLUDING
7176        INDEXES</command> (Trevor Hardcastle, Nikhil Sontakke, Neil)
7177       </para>
7178      </listitem>
7179
7180      <listitem>
7181       <para>
7182        Allow <command>CREATE INDEX CONCURRENTLY</command> to ignore
7183        transactions in other databases (Simon)
7184       </para>
7185      </listitem>
7186
7187      <listitem>
7188       <para>
7189        Add <command>ALTER VIEW ... RENAME TO</command> and <command>ALTER
7190        SEQUENCE ... RENAME TO</command> (David Fetter, Neil)
7191       </para>
7192
7193       <para>
7194        Previously this could only be done via <command>ALTER TABLE ...
7195        RENAME TO</command>.
7196       </para>
7197      </listitem>
7198
7199      <listitem>
7200       <para>
7201        Make <command>CREATE/DROP/RENAME DATABASE</> wait briefly for
7202        conflicting backends to exit before failing (Tom)
7203       </para>
7204
7205       <para>
7206        This increases the likelihood that these commands will succeed.
7207       </para>
7208      </listitem>
7209
7210      <listitem>
7211       <para>
7212        Allow triggers and rules to be deactivated in groups using a
7213        configuration parameter, for replication purposes (Jan)
7214       </para>
7215
7216       <para>
7217        This allows replication systems to disable triggers and rewrite
7218        rules as a group without modifying the system catalogs directly.
7219        The behavior is controlled by <command>ALTER TABLE</> and a new
7220        parameter <varname>session_replication_role</varname>.
7221       </para>
7222      </listitem>
7223
7224      <listitem>
7225       <para>
7226        User-defined types can now have type modifiers (Teodor, Tom)
7227       </para>
7228
7229       <para>
7230        This allows a user-defined type to take a modifier, like
7231        <type>ssnum(7)</>.  Previously only built-in
7232        data types could have modifiers.
7233       </para>
7234      </listitem>
7235
7236     </itemizedlist>
7237
7238    </sect3>
7239
7240    <sect3>
7241     <title>Utility Commands</title>
7242     <itemizedlist>
7243
7244      <listitem>
7245       <para>
7246        Non-superuser database owners now are able to add trusted procedural
7247        languages to their databases by default (Jeremy Drake)
7248       </para>
7249
7250       <para>
7251        While this is reasonably safe, some administrators might wish to
7252        revoke the privilege. It is controlled by
7253        <structname>pg_pltemplate</>.<structfield>tmpldbacreate</>.
7254       </para>
7255      </listitem>
7256
7257      <listitem>
7258       <para>
7259        Allow a session's current parameter setting to be used as the
7260        default for future sessions (Tom)
7261       </para>
7262
7263       <para>
7264        This is done with <literal>SET ... FROM CURRENT</literal> in
7265        <command>CREATE/ALTER FUNCTION</command>, <command>ALTER
7266        DATABASE</command>, or <command>ALTER ROLE</command>.
7267       </para>
7268      </listitem>
7269
7270      <listitem>
7271       <para>
7272        Implement new commands <command>DISCARD ALL</command>,
7273        <command>DISCARD PLANS</command>, <command>DISCARD
7274        TEMPORARY</command>, <command>CLOSE ALL</command>, and
7275        <command>DEALLOCATE ALL</command> (Marko Kreen, Neil)
7276       </para>
7277
7278       <para>
7279        These commands simplify resetting a database session to its initial
7280        state, and are particularly useful for connection-pooling software.
7281       </para>
7282      </listitem>
7283
7284      <listitem>
7285       <para>
7286        Make <command>CLUSTER</command> MVCC-safe (Heikki Linnakangas)
7287       </para>
7288
7289       <para>
7290        Formerly, <command>CLUSTER</command> would discard all tuples
7291        that were committed dead, even if there were still transactions
7292        that should be able to see them under MVCC visibility rules.
7293       </para>
7294      </listitem>
7295
7296      <listitem>
7297       <para>
7298        Add new <command>CLUSTER</command> syntax: <literal>CLUSTER
7299        <replaceable>table</> USING <replaceable>index</></literal>
7300        (Holger Schurig)
7301      </para>
7302
7303       <para>
7304        The old <command>CLUSTER</command> syntax is still supported, but
7305        the new form is considered more logical.
7306       </para>
7307      </listitem>
7308
7309      <listitem>
7310       <para>
7311        Fix <command>EXPLAIN</command> so it can show complex plans
7312        more accurately (Tom)
7313       </para>
7314
7315       <para>
7316        References to subplan outputs are now always shown correctly,
7317        instead of using <literal>?column<replaceable>N</>?</literal>
7318        for complicated cases.
7319       </para>
7320      </listitem>
7321
7322      <listitem>
7323       <para>
7324        Limit the amount of information reported when a user is dropped
7325        (Alvaro)
7326       </para>
7327
7328       <para>
7329        Previously, dropping (or attempting to drop) a user who owned many
7330        objects could result in large <literal>NOTICE</literal> or
7331        <literal>ERROR</literal> messages listing all these objects; this
7332        caused problems for some client applications.  The length of the
7333        message is now limited, although a full list is still sent to the
7334        server log.
7335       </para>
7336      </listitem>
7337
7338     </itemizedlist>
7339
7340    </sect3>
7341
7342    <sect3>
7343     <title>Data Types</title>
7344     <itemizedlist>
7345
7346      <listitem>
7347       <para>
7348        Support for the SQL/XML standard, including new operators and an
7349        <type>XML</type> data type (Nikolay Samokhvalov, Pavel Stehule, Peter)
7350       </para>
7351      </listitem>
7352
7353      <listitem>
7354       <para>
7355        Enumerated data types (<type>ENUM</type>) (Tom Dunstan)
7356       </para>
7357
7358       <para>
7359        This feature provides convenient support for fields that have a
7360        small, fixed set of allowed values.  An example of creating an
7361        <literal>ENUM</> type is
7362        <literal>CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy')</>.
7363       </para>
7364      </listitem>
7365
7366      <listitem>
7367       <para>
7368        Universally Unique Identifier (<type>UUID</>) data type (Gevik
7369        Babakhani, Neil)
7370       </para>
7371
7372       <para>
7373        This closely matches <acronym>RFC</> 4122.
7374       </para>
7375      </listitem>
7376
7377      <listitem>
7378       <para>
7379        Widen the <type>MONEY</type> data type to 64 bits (D'Arcy Cain)
7380       </para>
7381
7382       <para>
7383        This greatly increases the range of supported <type>MONEY</>
7384        values.
7385       </para>
7386      </listitem>
7387
7388      <listitem>
7389       <para>
7390        Fix <type>float4</type>/<type>float8</type> to handle
7391        <literal>Infinity</> and <literal>NAN</> (Not A Number)
7392        consistently (Bruce)
7393       </para>
7394
7395       <para>
7396        The code formerly was not consistent about distinguishing
7397        <literal>Infinity</> from overflow conditions.
7398       </para>
7399      </listitem>
7400
7401      <listitem>
7402       <para>
7403        Allow leading and trailing whitespace during input of
7404        <type>boolean</type> values (Neil)
7405       </para>
7406      </listitem>
7407
7408      <listitem>
7409       <para>
7410        Prevent <command>COPY</> from using digits and lowercase letters as
7411        delimiters (Tom)
7412       </para>
7413      </listitem>
7414
7415     </itemizedlist>
7416
7417    </sect3>
7418
7419    <sect3>
7420     <title>Functions</title>
7421     <itemizedlist>
7422
7423      <listitem>
7424       <para>
7425        Add new regular expression functions
7426        <function>regexp_matches()</function>,
7427        <function>regexp_split_to_array()</function>, and
7428        <function>regexp_split_to_table()</function> (Jeremy Drake, Neil)
7429       </para>
7430
7431       <para>
7432        These functions provide extraction of regular expression
7433        subexpressions and allow splitting a string using a POSIX regular
7434        expression.
7435       </para>
7436      </listitem>
7437
7438      <listitem>
7439       <para>
7440        Add <function>lo_truncate()</function> for large object truncation
7441        (Kris Jurka)
7442       </para>
7443      </listitem>
7444
7445      <listitem>
7446       <para>
7447        Implement <function>width_bucket()</function> for the <type>float8</>
7448        data type (Neil)
7449       </para>
7450      </listitem>
7451
7452      <listitem>
7453       <para>
7454        Add <function>pg_stat_clear_snapshot()</function> to discard
7455        statistics snapshots collected during the current transaction
7456        (Tom)
7457       </para>
7458
7459       <para>
7460        The first request for statistics in a transaction takes a statistics
7461        snapshot that does not change during the transaction.  This function
7462        allows the snapshot to be discarded and a new snapshot loaded during
7463        the next statistics query. This is particularly useful for PL/pgSQL
7464        functions, which are confined to a single transaction.
7465       </para>
7466      </listitem>
7467
7468      <listitem>
7469       <para>
7470        Add <literal>isodow</> option to <function>EXTRACT()</> and
7471        <function>date_part()</> (Bruce)
7472       </para>
7473
7474       <para>
7475        This returns the day of the week, with Sunday as seven.
7476        (<literal>dow</> returns Sunday as zero.)
7477       </para>
7478      </listitem>
7479
7480      <listitem>
7481       <para>
7482        Add <literal>ID</> (ISO day of week) and <literal>IDDD</> (ISO
7483        day of year) format codes for <function>to_char()</>,
7484        <function>to_date()</>, and <function>to_timestamp()</> (Brendan
7485        Jurd)
7486       </para>
7487      </listitem>
7488
7489      <listitem>
7490       <para>
7491        Make <function>to_timestamp()</> and <function>to_date()</>
7492        assume <literal>TM</literal> (trim) option for potentially
7493        variable-width fields (Bruce)
7494       </para>
7495
7496       <para>
7497        This matches <productname>Oracle</>'s behavior.
7498       </para>
7499      </listitem>
7500
7501      <listitem>
7502       <para>
7503        Fix off-by-one conversion error in
7504        <function>to_date()</function>/<function>to_timestamp()</function>
7505        <literal>D</> (non-ISO day of week) fields (Bruce)
7506       </para>
7507      </listitem>
7508
7509      <listitem>
7510       <para>
7511        Make <function>setseed()</function> return void, rather than a
7512        useless integer value (Neil)
7513       </para>
7514      </listitem>
7515
7516      <listitem>
7517       <para>
7518        Add a hash function for <type>NUMERIC</type> (Neil)
7519       </para>
7520
7521       <para>
7522        This allows hash indexes and hash-based plans to be used with
7523        <type>NUMERIC</type> columns.
7524       </para>
7525      </listitem>
7526
7527      <listitem>
7528       <para>
7529        Improve efficiency of
7530        <literal>LIKE</literal>/<literal>ILIKE</literal>, especially for
7531        multi-byte character sets like UTF-8 (Andrew, Itagaki Takahiro)
7532       </para>
7533      </listitem>
7534
7535      <listitem>
7536       <para>
7537        Make <function>currtid()</function> functions require
7538        <literal>SELECT</literal> privileges on the target table (Tom)
7539       </para>
7540      </listitem>
7541
7542      <listitem>
7543       <para>
7544        Add several <function>txid_*()</function> functions to query
7545        active transaction IDs (Jan)
7546       </para>
7547
7548       <para>
7549        This is useful for various replication solutions.
7550       </para>
7551      </listitem>
7552
7553     </itemizedlist>
7554
7555    </sect3>
7556
7557    <sect3>
7558     <title>PL/pgSQL Server-Side Language</title>
7559     <itemizedlist>
7560
7561      <listitem>
7562       <para>
7563        Add scrollable cursor support, including directional control in
7564        <command>FETCH</command> (Pavel Stehule)
7565       </para>
7566      </listitem>
7567
7568      <listitem>
7569       <para>
7570        Allow <literal>IN</literal> as an alternative to
7571        <literal>FROM</literal> in PL/pgSQL's <command>FETCH</command>
7572        statement, for consistency with the backend's
7573        <command>FETCH</command> command (Pavel Stehule)
7574       </para>
7575      </listitem>
7576
7577      <listitem>
7578       <para>
7579        Add <command>MOVE</command> to PL/pgSQL (Magnus, Pavel Stehule,
7580        Neil)
7581       </para>
7582      </listitem>
7583
7584      <listitem>
7585       <para>
7586        Implement <command>RETURN QUERY</command> (Pavel Stehule, Neil)
7587       </para>
7588
7589       <para>
7590        This adds convenient syntax for PL/pgSQL set-returning functions
7591        that want to return the result of a query.  <command>RETURN QUERY</>
7592        is easier and more efficient than a loop
7593        around <command>RETURN NEXT</command>.
7594       </para>
7595      </listitem>
7596
7597      <listitem>
7598       <para>
7599        Allow function parameter names to be qualified with the
7600        function's name (Tom)
7601       </para>
7602
7603       <para>
7604        For example, <literal>myfunc.myvar</>. This is particularly
7605        useful for specifying variables in a query where the variable
7606        name might match a column name.
7607       </para>
7608      </listitem>
7609
7610      <listitem>
7611       <para>
7612        Make qualification of variables with block labels work properly (Tom)
7613       </para>
7614
7615       <para>
7616        Formerly, outer-level block labels could unexpectedly interfere with
7617        recognition of inner-level record or row references.
7618       </para>
7619      </listitem>
7620
7621      <listitem>
7622       <para>
7623        Tighten requirements for <literal>FOR</literal> loop
7624        <literal>STEP</> values (Tom)
7625       </para>
7626
7627       <para>
7628        Prevent non-positive <literal>STEP</> values, and handle
7629        loop overflows.
7630       </para>
7631      </listitem>
7632
7633      <listitem>
7634       <para>
7635        Improve accuracy when reporting syntax error locations (Tom)
7636       </para>
7637      </listitem>
7638
7639     </itemizedlist>
7640
7641    </sect3>
7642
7643    <sect3>
7644     <title>Other Server-Side Languages</title>
7645     <itemizedlist>
7646
7647      <listitem>
7648       <para>
7649        Allow type-name arguments to PL/Perl
7650        <function>spi_prepare()</function> to be data type aliases in
7651        addition to names found in <literal>pg_type</literal> (Andrew)
7652       </para>
7653      </listitem>
7654
7655      <listitem>
7656       <para>
7657        Allow type-name arguments to PL/Python
7658        <function>plpy.prepare()</function> to be data type aliases in
7659        addition to names found in <literal>pg_type</literal> (Andrew)
7660       </para>
7661      </listitem>
7662
7663      <listitem>
7664       <para>
7665        Allow type-name arguments to PL/Tcl <function>spi_prepare</> to
7666        be data type aliases in addition to names found in
7667        <literal>pg_type</literal> (Andrew)
7668       </para>
7669      </listitem>
7670
7671      <listitem>
7672       <para>
7673        Enable PL/PythonU to compile on Python 2.5 (Marko Kreen)
7674       </para>
7675      </listitem>
7676
7677      <listitem>
7678       <para>
7679        Support a true PL/Python boolean type in compatible Python versions
7680        (Python 2.3 and later) (Marko Kreen)
7681       </para>
7682      </listitem>
7683
7684      <listitem>
7685       <para>
7686        Fix PL/Tcl problems with thread-enabled <filename>libtcl</> spawning
7687        multiple threads within the backend (Steve Marshall, Paul Bayer,
7688        Doug Knight)
7689       </para>
7690
7691       <para>
7692        This caused all sorts of unpleasantness.
7693       </para>
7694      </listitem>
7695
7696     </itemizedlist>
7697
7698    </sect3>
7699
7700    <sect3>
7701     <title><link linkend="APP-PSQL"><application>psql</></link></title>
7702     <itemizedlist>
7703
7704      <listitem>
7705       <para>
7706        List disabled triggers separately in <literal>\d</literal> output
7707        (Brendan Jurd)
7708       </para>
7709      </listitem>
7710
7711      <listitem>
7712       <para>
7713        In <literal>\d</literal> patterns, always match <literal>$</literal>
7714        literally (Tom)
7715       </para>
7716      </listitem>
7717
7718      <listitem>
7719       <para>
7720        Show aggregate return types in <literal>\da</literal> output
7721        (Greg Sabino Mullane)
7722       </para>
7723      </listitem>
7724
7725      <listitem>
7726       <para>
7727        Add the function's volatility status to the output of
7728        <literal>\df+</literal> (Neil)
7729       </para>
7730      </listitem>
7731
7732      <listitem>
7733       <para>
7734        Add <literal>\prompt</literal> capability (Chad Wagner)
7735       </para>
7736      </listitem>
7737
7738      <listitem>
7739       <para>
7740        Allow <literal>\pset</literal>, <literal>\t</literal>, and
7741        <literal>\x</literal> to specify <literal>on</> or <literal>off</>,
7742        rather than just toggling (Chad Wagner)
7743       </para>
7744      </listitem>
7745
7746      <listitem>
7747       <para>
7748        Add <literal>\sleep</> capability (Jan)
7749       </para>
7750      </listitem>
7751
7752      <listitem>
7753       <para>
7754        Enable <literal>\timing</> output for <literal>\copy</> (Andrew)
7755       </para>
7756      </listitem>
7757
7758      <listitem>
7759       <para>
7760        Improve <literal>\timing</literal> resolution on Windows
7761        (Itagaki Takahiro)
7762       </para>
7763      </listitem>
7764
7765      <listitem>
7766       <para>
7767        Flush <literal>\o</> output after each backslash command (Tom)
7768       </para>
7769      </listitem>
7770
7771      <listitem>
7772       <para>
7773        Correctly detect and report errors while reading a <literal>-f</>
7774        input file (Peter)
7775       </para>
7776      </listitem>
7777
7778      <listitem>
7779       <para>
7780        Remove <literal>-u</> option (this option has long been deprecated)
7781        (Tom)
7782       </para>
7783      </listitem>
7784
7785     </itemizedlist>
7786
7787    </sect3>
7788
7789    <sect3>
7790     <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
7791     <itemizedlist>
7792
7793      <listitem>
7794       <para>
7795        Add <literal>--tablespaces-only</> and <literal>--roles-only</>
7796        options to <application>pg_dumpall</application> (Dave Page)
7797       </para>
7798      </listitem>
7799
7800      <listitem>
7801       <para>
7802        Add an output file option to
7803        <application>pg_dumpall</application> (Dave Page)
7804       </para>
7805
7806       <para>
7807        This is primarily useful on Windows, where output redirection of
7808        child <application>pg_dump</application> processes does not work.
7809       </para>
7810      </listitem>
7811
7812      <listitem>
7813       <para>
7814        Allow <application>pg_dumpall</> to accept an initial-connection
7815        database name rather than the default
7816        <literal>template1</literal> (Dave Page)
7817       </para>
7818      </listitem>
7819
7820      <listitem>
7821       <para>
7822        In <literal>-n</> and <literal>-t</> switches, always match
7823        <literal>$</literal> literally (Tom)
7824       </para>
7825      </listitem>
7826
7827      <listitem>
7828       <para>
7829        Improve performance when a database has thousands of objects (Tom)
7830       </para>
7831      </listitem>
7832
7833      <listitem>
7834       <para>
7835        Remove <literal>-u</> option (this option has long been deprecated)
7836        (Tom)
7837       </para>
7838      </listitem>
7839
7840     </itemizedlist>
7841
7842    </sect3>
7843
7844    <sect3>
7845     <title>Other Client Applications</title>
7846     <itemizedlist>
7847
7848      <listitem>
7849       <para>
7850        In <application>initdb</>, allow the location of the
7851        <filename>pg_xlog</filename> directory to be specified
7852        (Euler Taveira de Oliveira)
7853       </para>
7854      </listitem>
7855
7856      <listitem>
7857       <para>
7858        Enable server core dump generation in <application>pg_regress</>
7859        on supported operating systems (Andrew)
7860       </para>
7861      </listitem>
7862
7863      <listitem>
7864       <para>
7865        Add a <literal>-t</> (timeout) parameter to <application>pg_ctl</>
7866        (Bruce)
7867       </para>
7868
7869       <para>
7870        This controls how long <application>pg_ctl</> will wait when waiting
7871        for server startup or shutdown.  Formerly the timeout was hard-wired
7872        as 60 seconds.
7873       </para>
7874      </listitem>
7875
7876      <listitem>
7877       <para>
7878        Add a <application>pg_ctl</> option to control generation
7879        of server core dumps (Andrew)
7880       </para>
7881      </listitem>
7882
7883      <listitem>
7884       <para>
7885        Allow Control-C to cancel <application>clusterdb</>,
7886        <application>reindexdb</>, and <application>vacuumdb</> (Itagaki
7887        Takahiro, Magnus)
7888       </para>
7889      </listitem>
7890
7891      <listitem>
7892       <para>
7893        Suppress command tag output for <application>createdb</>,
7894        <application>createuser</>, <application>dropdb</>, and
7895        <application>dropuser</> (Peter)
7896       </para>
7897
7898       <para>
7899        The <literal>--quiet</> option is ignored and will be removed in 8.4.
7900        Progress messages when acting on all databases now go to stdout
7901        instead of stderr because they are not actually errors.
7902       </para>
7903      </listitem>
7904
7905     </itemizedlist>
7906
7907    </sect3>
7908
7909    <sect3>
7910     <title><link linkend="libpq"><application>libpq</></link></title>
7911     <itemizedlist>
7912
7913      <listitem>
7914       <para>
7915        Interpret the <literal>dbName</> parameter of
7916        <function>PQsetdbLogin()</> as a <literal>conninfo</> string if
7917        it contains an equals sign (Andrew)
7918       </para>
7919
7920       <para>
7921        This allows use of <literal>conninfo</> strings in client
7922        programs that still use <literal>PQsetdbLogin()</>.
7923       </para>
7924      </listitem>
7925
7926      <listitem>
7927       <para>
7928        Support a global <acronym>SSL</> configuration file (Victor
7929        Wagner)
7930       </para>
7931      </listitem>
7932
7933      <listitem>
7934       <para>
7935        Add environment variable <varname>PGSSLKEY</> to control
7936        <acronym>SSL</> hardware keys (Victor Wagner)
7937       </para>
7938      </listitem>
7939
7940      <listitem>
7941       <para>
7942        Add <function>lo_truncate()</function> for large object
7943        truncation (Kris Jurka)
7944       </para>
7945      </listitem>
7946
7947      <listitem>
7948       <para>
7949        Add <function>PQconnectionNeedsPassword()</function> that returns
7950        true if the server required a password but none was supplied
7951        (Joe Conway, Tom)
7952       </para>
7953
7954       <para>
7955        If this returns true after a failed connection attempt, a client
7956        application should prompt the user for a password.  In the past
7957        applications have had to check for a specific error message string to
7958        decide whether a password is needed; that approach is now
7959        deprecated.
7960       </para>
7961      </listitem>
7962
7963      <listitem>
7964       <para>
7965        Add <function>PQconnectionUsedPassword()</function> that returns
7966        true if the supplied password was actually used
7967        (Joe Conway, Tom)
7968       </para>
7969
7970       <para>
7971        This is useful in some security contexts where it is important
7972        to know whether a user-supplied password is actually valid.
7973       </para>
7974      </listitem>
7975
7976     </itemizedlist>
7977
7978    </sect3>
7979
7980    <sect3>
7981     <title><link linkend="ecpg"><application>ecpg</></link></title>
7982     <itemizedlist>
7983
7984      <listitem>
7985       <para>
7986        Use V3 frontend/backend protocol (Michael)
7987       </para>
7988
7989       <para>
7990        This adds support for server-side prepared statements.
7991       </para>
7992      </listitem>
7993
7994      <listitem>
7995       <para>
7996        Use native threads, instead of pthreads, on Windows (Magnus)
7997       </para>
7998      </listitem>
7999
8000      <listitem>
8001       <para>
8002        Improve thread-safety of ecpglib (Itagaki Takahiro)
8003       </para>
8004      </listitem>
8005
8006      <listitem>
8007       <para>
8008        Make the ecpg libraries export only necessary API symbols (Michael)
8009       </para>
8010      </listitem>
8011
8012     </itemizedlist>
8013
8014    </sect3>
8015
8016    <sect3>
8017     <title><application>Windows</> Port</title>
8018     <itemizedlist>
8019
8020      <listitem>
8021       <para>
8022        Allow the whole <productname>PostgreSQL</> distribution to be compiled
8023        with <productname>Microsoft Visual C++</> (Magnus and others)
8024       </para>
8025
8026       <para>
8027        This allows Windows-based developers to use familiar development
8028        and debugging tools.
8029        Windows executables made with Visual C++ might also have better
8030        stability and performance than those made with other tool sets.
8031        The client-only Visual C++ build scripts have been removed.
8032       </para>
8033      </listitem>
8034
8035      <listitem>
8036       <para>
8037        Drastically reduce postmaster's memory usage when it has many child
8038        processes (Magnus)
8039       </para>
8040      </listitem>
8041
8042      <listitem>
8043       <para>
8044        Allow regression tests to be started by an administrative
8045        user (Magnus)
8046       </para>
8047      </listitem>
8048
8049      <listitem>
8050       <para>
8051        Add native shared memory implementation (Magnus)
8052       </para>
8053      </listitem>
8054
8055     </itemizedlist>
8056
8057    </sect3>
8058
8059    <sect3>
8060     <title>Server Programming Interface (<acronym>SPI</>)</title>
8061     <itemizedlist>
8062
8063      <listitem>
8064       <para>
8065        Add cursor-related functionality in SPI (Pavel Stehule)
8066       </para>
8067
8068       <para>
8069        Allow access to the cursor-related planning options, and add
8070        <command>FETCH</>/<command>MOVE</> routines.
8071       </para>
8072      </listitem>
8073
8074      <listitem>
8075       <para>
8076        Allow execution of cursor commands through
8077        <function>SPI_execute</function> (Tom)
8078       </para>
8079
8080       <para>
8081        The macro <literal>SPI_ERROR_CURSOR</> still exists but will
8082        never be returned.
8083       </para>
8084      </listitem>
8085
8086      <listitem>
8087       <para>
8088        SPI plan pointers are now declared as <literal>SPIPlanPtr</> instead of
8089        <literal>void *</> (Tom)
8090       </para>
8091
8092       <para>
8093        This does not break application code, but switching is
8094        recommended to help catch simple programming mistakes.
8095       </para>
8096      </listitem>
8097
8098     </itemizedlist>
8099
8100    </sect3>
8101
8102    <sect3>
8103     <title>Build Options</title>
8104     <itemizedlist>
8105
8106      <listitem>
8107       <para>
8108        Add <application>configure</> option <literal>--enable-profiling</>
8109        to enable code profiling (works only with <application>gcc</>)
8110        (Korry Douglas and Nikhil Sontakke)
8111       </para>
8112      </listitem>
8113
8114      <listitem>
8115       <para>
8116        Add <application>configure</> option <literal>--with-system-tzdata</>
8117        to use the operating system's time zone database (Peter)
8118       </para>
8119      </listitem>
8120
8121      <listitem>
8122       <para>
8123        Fix <acronym>PGXS</> so extensions can be built against PostgreSQL
8124        installations whose <application>pg_config</> program does not
8125        appear first in the <varname>PATH</> (Tom)
8126       </para>
8127      </listitem>
8128
8129      <listitem>
8130       <para>
8131        Support <command>gmake draft</command> when building the
8132        <acronym>SGML</> documentation (Bruce)
8133       </para>
8134
8135       <para>
8136        Unless <literal>draft</> is used, the documentation build will
8137        now be repeated if necessary to ensure the index is up-to-date.
8138       </para>
8139      </listitem>
8140
8141     </itemizedlist>
8142
8143    </sect3>
8144
8145    <sect3>
8146     <title>Source Code</title>
8147     <itemizedlist>
8148
8149      <listitem>
8150       <para>
8151        Rename macro <literal>DLLIMPORT</> to <literal>PGDLLIMPORT</> to
8152        avoid conflicting with third party includes (like Tcl) that
8153        define <literal>DLLIMPORT</> (Magnus)
8154       </para>
8155      </listitem>
8156
8157      <listitem>
8158       <para>
8159        Create <quote>operator families</quote> to improve planning of
8160        queries involving cross-data-type comparisons (Tom)
8161       </para>
8162      </listitem>
8163
8164      <listitem>
8165       <para>
8166        Update GIN <function>extractQuery()</> API to allow signalling
8167        that nothing can satisfy the query (Teodor)
8168       </para>
8169      </listitem>
8170
8171      <listitem>
8172       <para>
8173        Move <literal>NAMEDATALEN</> definition from
8174        <filename>postgres_ext.h</> to <filename>pg_config_manual.h</>
8175        (Peter)
8176       </para>
8177      </listitem>
8178
8179      <listitem>
8180       <para>
8181        Provide <function>strlcpy()</function> and
8182        <function>strlcat()</function> on all platforms, and replace
8183        error-prone uses of <function>strncpy()</function>,
8184        <function>strncat()</function>, etc (Peter)
8185       </para>
8186      </listitem>
8187
8188      <listitem>
8189       <para>
8190        Create hooks to let an external plugin monitor (or even replace) the
8191        planner and create plans for hypothetical situations (Gurjeet
8192        Singh, Tom)
8193       </para>
8194      </listitem>
8195
8196      <listitem>
8197       <para>
8198        Create a function variable <literal>join_search_hook</> to let plugins
8199        override the join search order portion of the planner (Julius
8200        Stroffek)
8201       </para>
8202      </listitem>
8203
8204      <listitem>
8205       <para>
8206        Add <function>tas()</> support for Renesas' M32R processor
8207        (Kazuhiro Inaoka)
8208       </para>
8209      </listitem>
8210
8211      <listitem>
8212       <para>
8213        <function>quote_identifier()</function> and
8214        <application>pg_dump</application> no longer quote keywords that are
8215        unreserved according to the grammar (Tom)
8216       </para>
8217      </listitem>
8218
8219      <listitem>
8220       <para>
8221        Change the on-disk representation of the <type>NUMERIC</type>
8222        data type so that the <structfield>sign_dscale</> word comes
8223        before the weight (Tom)
8224       </para>
8225      </listitem>
8226
8227      <listitem>
8228       <para>
8229        Use <acronym>SYSV</> semaphores rather than POSIX on Darwin
8230        &gt;= 6.0, i.e., OS X 10.2 and up (Chris Marcellino)
8231       </para>
8232      </listitem>
8233
8234      <listitem>
8235       <para>
8236        Add <link linkend="acronyms">acronym</link> and <link
8237        linkend="creating-cluster-nfs">NFS</link> documentation
8238        sections (Bruce)
8239       </para>
8240      </listitem>
8241
8242      <listitem>
8243       <para>
8244        "Postgres" is now documented as an accepted alias for
8245        "PostgreSQL" (Peter)
8246       </para>
8247      </listitem>
8248
8249      <listitem>
8250       <para>
8251        Add documentation about preventing database server spoofing when
8252        the server is down (Bruce)
8253       </para>
8254      </listitem>
8255
8256     </itemizedlist>
8257
8258    </sect3>
8259
8260    <sect3>
8261     <title>Contrib</title>
8262     <itemizedlist>
8263
8264      <listitem>
8265       <para>
8266        Move <filename>contrib</> <filename>README</> content into the
8267        main <productname>PostgreSQL</> documentation (Albert Cervera i
8268        Areny)
8269       </para>
8270      </listitem>
8271
8272      <listitem>
8273       <para>
8274        Add <filename>contrib/pageinspect</filename> module for low-level
8275        page inspection (Simon, Heikki)
8276       </para>
8277      </listitem>
8278
8279      <listitem>
8280       <para>
8281        Add <filename>contrib/pg_standby</filename> module for controlling
8282        warm standby operation (Simon)
8283       </para>
8284      </listitem>
8285
8286      <listitem>
8287       <para>
8288        Add <filename>contrib/uuid-ossp</filename> module for generating
8289        <type>UUID</> values using the OSSP UUID library (Peter)
8290       </para>
8291
8292       <para>
8293        Use <application>configure</>
8294        <literal>--with-ossp-uuid</literal> to activate. This takes
8295        advantage of the new <type>UUID</type> builtin type.
8296       </para>
8297      </listitem>
8298
8299      <listitem>
8300       <para>
8301        Add <filename>contrib/dict_int</filename>,
8302        <filename>contrib/dict_xsyn</filename>, and
8303        <filename>contrib/test_parser</filename> modules to provide
8304        sample add-on text search dictionary templates and parsers
8305        (Sergey Karpov)
8306       </para>
8307      </listitem>
8308
8309      <listitem>
8310       <para>
8311        Allow <application>contrib/pgbench</> to set the fillfactor (Pavan
8312        Deolasee)
8313       </para>
8314      </listitem>
8315
8316      <listitem>
8317       <para>
8318        Add timestamps to <application>contrib/pgbench</> <literal>-l</>
8319        (Greg Smith)
8320       </para>
8321      </listitem>
8322
8323      <listitem>
8324       <para>
8325        Add usage count statistics to
8326        <filename>contrib/pgbuffercache</filename> (Greg Smith)
8327       </para>
8328      </listitem>
8329
8330      <listitem>
8331       <para>
8332        Add GIN support for <filename>contrib/hstore</> (Teodor)
8333       </para>
8334      </listitem>
8335
8336      <listitem>
8337       <para>
8338        Add GIN support for <filename>contrib/pg_trgm</> (Guillaume Smet, Teodor)
8339       </para>
8340      </listitem>
8341
8342      <listitem>
8343       <para>
8344        Update OS/X startup scripts in
8345        <filename>contrib/start-scripts</filename> (Mark Cotner, David
8346        Fetter)
8347       </para>
8348      </listitem>
8349
8350      <listitem>
8351       <para>
8352        Restrict <function>pgrowlocks()</function> and
8353        <function>dblink_get_pkey()</function> to users who have
8354        <literal>SELECT</literal> privilege on the target table (Tom)
8355       </para>
8356      </listitem>
8357
8358      <listitem>
8359       <para>
8360        Restrict <filename>contrib/pgstattuple</filename> functions to
8361        superusers (Tom)
8362       </para>
8363      </listitem>
8364
8365      <listitem>
8366       <para>
8367        <filename>contrib/xml2</filename> is deprecated and planned for
8368        removal in 8.4 (Peter)
8369       </para>
8370
8371       <para>
8372        The new XML support in core PostgreSQL supersedes this module.
8373       </para>
8374      </listitem>
8375
8376     </itemizedlist>
8377
8378    </sect3>
8379   </sect2>
8380  </sect1>