1 <!-- doc/src/sgml/release-8.3.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
4 <sect1 id="release-8-3-20">
5 <title>Release 8.3.20</title>
8 <title>Release Date</title>
9 <simpara>2012-08-17</simpara>
13 This release contains a variety of fixes from 8.3.19.
14 For information about new features in the 8.3 major release, see
15 <xref linkend="release-8-3">.
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.
25 <title>Migration to Version 8.3.20</title>
28 A dump/restore is not required for those running 8.3.X.
32 However, if you are upgrading from a version earlier than 8.3.17,
33 see the release notes for 8.3.17.
39 <title>Changes</title>
45 Prevent access to external files/URLs via XML entity references
46 (Noah Misch, Tom Lane)
50 <function>xml_parse()</> would attempt to fetch external files or
51 URLs as needed to resolve DTD and entity references in an XML value,
52 thus allowing unprivileged database users to attempt to fetch data
53 with the privileges of the database server. While the external data
54 wouldn't get returned directly to the user, portions of it could be
55 exposed in error messages if the data didn't parse as valid XML; and
56 in any case the mere ability to check existence of a file might be
57 useful to an attacker. (CVE-2012-3489)
63 Prevent access to external files/URLs via <filename>contrib/xml2</>'s
64 <function>xslt_process()</> (Peter Eisentraut)
68 <application>libxslt</> offers the ability to read and write both
69 files and URLs through stylesheet commands, thus allowing
70 unprivileged database users to both read and write data with the
71 privileges of the database server. Disable that through proper use
72 of <application>libxslt</>'s security options. (CVE-2012-3488)
76 Also, remove <function>xslt_process()</>'s ability to fetch documents
77 and stylesheets from external files/URLs. While this was a
78 documented <quote>feature</>, it was long regarded as a bad idea.
79 The fix for CVE-2012-3489 broke that capability, and rather than
80 expend effort on trying to fix it, we're just going to summarily
87 Prevent too-early recycling of btree index pages (Noah Misch)
91 When we allowed read-only transactions to skip assigning XIDs, we
92 introduced the possibility that a deleted btree page could be
93 recycled while a read-only transaction was still in flight to it.
94 This would result in incorrect index search results. The probability
95 of such an error occurring in the field seems very low because of the
96 timing requirements, but nonetheless it should be fixed.
102 Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane)
106 If <command>ALTER SEQUENCE</> was executed on a freshly created or
107 reset sequence, and then precisely one <function>nextval()</> call
108 was made on it, and then the server crashed, WAL replay would restore
109 the sequence to a state in which it appeared that no
110 <function>nextval()</> had been done, thus allowing the first
111 sequence value to be returned again by the next
112 <function>nextval()</> call. In particular this could manifest for
113 <type>serial</> columns, since creation of a serial column's sequence
114 includes an <command>ALTER SEQUENCE OWNED BY</> step.
120 Ensure the <filename>backup_label</> file is fsync'd after
121 <function>pg_start_backup()</> (Dave Kerr)
127 Back-patch 9.1 improvement to compress the fsync request queue
132 This improves performance during checkpoints. The 9.1 change
133 has now seen enough field testing to seem safe to back-patch.
139 Only allow autovacuum to be auto-canceled by a directly blocked
144 The original coding could allow inconsistent behavior in some cases;
145 in particular, an autovacuum could get canceled after less than
146 <literal>deadlock_timeout</> grace period.
152 Improve logging of autovacuum cancels (Robert Haas)
158 Fix log collector so that <literal>log_truncate_on_rotation</> works
159 during the very first log rotation after server start (Tom Lane)
165 Ensure that a whole-row reference to a subquery doesn't include any
166 extra <literal>GROUP BY</> or <literal>ORDER BY</> columns (Tom Lane)
172 Disallow copying whole-row references in <literal>CHECK</>
173 constraints and index definitions during <command>CREATE TABLE</>
178 This situation can arise in <command>CREATE TABLE</> with
179 <literal>LIKE</> or <literal>INHERITS</>. The copied whole-row
180 variable was incorrectly labeled with the row type of the original
181 table not the new one. Rejecting the case seems reasonable for
182 <literal>LIKE</>, since the row types might well diverge later. For
183 <literal>INHERITS</> we should ideally allow it, with an implicit
184 coercion to the parent table's row type; but that will require more
185 work than seems safe to back-patch.
191 Fix memory leak in <literal>ARRAY(SELECT ...)</> subqueries (Heikki
192 Linnakangas, Tom Lane)
198 Fix extraction of common prefixes from regular expressions (Tom Lane)
202 The code could get confused by quantified parenthesized
203 subexpressions, such as <literal>^(foo)?bar</>. This would lead to
204 incorrect index optimization of searches for such patterns.
210 Report errors properly in <filename>contrib/xml2</>'s
211 <function>xslt_process()</> (Tom Lane)
217 Update time zone data files to <application>tzdata</> release 2012e
218 for DST law changes in Morocco and Tokelau
227 <sect1 id="release-8-3-19">
228 <title>Release 8.3.19</title>
231 <title>Release Date</title>
232 <simpara>2012-06-04</simpara>
236 This release contains a variety of fixes from 8.3.18.
237 For information about new features in the 8.3 major release, see
238 <xref linkend="release-8-3">.
242 <title>Migration to Version 8.3.19</title>
245 A dump/restore is not required for those running 8.3.X.
249 However, if you are upgrading from a version earlier than 8.3.17,
250 see the release notes for 8.3.17.
256 <title>Changes</title>
262 Fix incorrect password transformation in
263 <filename>contrib/pgcrypto</>'s DES <function>crypt()</> function
268 If a password string contained the byte value <literal>0x80</>, the
269 remainder of the password was ignored, causing the password to be much
270 weaker than it appeared. With this fix, the rest of the string is
271 properly included in the DES hash. Any stored password values that are
272 affected by this bug will thus no longer match, so the stored values may
273 need to be updated. (CVE-2012-2143)
279 Ignore <literal>SECURITY DEFINER</> and <literal>SET</> attributes for
280 a procedural language's call handler (Tom Lane)
284 Applying such attributes to a call handler could crash the server.
291 Allow numeric timezone offsets in <type>timestamp</> input to be up to
292 16 hours away from UTC (Tom Lane)
296 Some historical time zones have offsets larger than 15 hours, the
297 previous limit. This could result in dumped data values being rejected
304 Fix timestamp conversion to cope when the given time is exactly the
305 last DST transition time for the current timezone (Tom Lane)
309 This oversight has been there a long time, but was not noticed
310 previously because most DST-using zones are presumed to have an
311 indefinite sequence of future DST transitions.
317 Fix <type>text</> to <type>name</> and <type>char</> to <type>name</>
318 casts to perform string truncation correctly in multibyte encodings
325 Fix memory copying bug in <function>to_tsquery()</> (Heikki Linnakangas)
331 Fix slow session startup when <structname>pg_attribute</> is very large
336 If <structname>pg_attribute</> exceeds one-fourth of
337 <varname>shared_buffers</>, cache rebuilding code that is sometimes
338 needed during session start would trigger the synchronized-scan logic,
339 causing it to take many times longer than normal. The problem was
340 particularly acute if many new sessions were starting at once.
346 Ensure sequential scans check for query cancel reasonably often (Merlin
351 A scan encountering many consecutive pages that contain no live tuples
352 would not respond to interrupts meanwhile.
358 Ensure the Windows implementation of <function>PGSemaphoreLock()</>
359 clears <varname>ImmediateInterruptOK</> before returning (Tom Lane)
363 This oversight meant that a query-cancel interrupt received later
364 in the same query could be accepted at an unsafe time, with
365 unpredictable but not good consequences.
371 Show whole-row variables safely when printing views or rules
372 (Abbas Butt, Tom Lane)
376 Corner cases involving ambiguous names (that is, the name could be
377 either a table or column name of the query) were printed in an
378 ambiguous way, risking that the view or rule would be interpreted
379 differently after dump and reload. Avoid the ambiguous case by
380 attaching a no-op cast.
386 Ensure autovacuum worker processes perform stack depth checking
387 properly (Heikki Linnakangas)
391 Previously, infinite recursion in a function invoked by
392 auto-<command>ANALYZE</> could crash worker processes.
398 Fix logging collector to not lose log coherency under high load (Andrew
403 The collector previously could fail to reassemble large messages if it
410 Fix logging collector to ensure it will restart file rotation
411 after receiving <systemitem>SIGHUP</> (Tom Lane)
417 Fix PL/pgSQL's <command>GET DIAGNOSTICS</> command when the target
418 is the function's first variable (Tom Lane)
424 Fix several performance problems in <application>pg_dump</> when
425 the database contains many objects (Jeff Janes, Tom Lane)
429 <application>pg_dump</> could get very slow if the database contained
430 many schemas, or if many objects are in dependency loops, or if there
431 are many owned sequences.
437 Fix <filename>contrib/dblink</>'s <function>dblink_exec()</> to not leak
438 temporary database connections upon error (Tom Lane)
444 Update time zone data files to <application>tzdata</> release 2012c
445 for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland
446 Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands;
447 also historical corrections for Canada.
456 <sect1 id="release-8-3-18">
457 <title>Release 8.3.18</title>
460 <title>Release Date</title>
461 <simpara>2012-02-27</simpara>
465 This release contains a variety of fixes from 8.3.17.
466 For information about new features in the 8.3 major release, see
467 <xref linkend="release-8-3">.
471 <title>Migration to Version 8.3.18</title>
474 A dump/restore is not required for those running 8.3.X.
478 However, if you are upgrading from a version earlier than 8.3.17,
479 see the release notes for 8.3.17.
485 <title>Changes</title>
491 Require execute permission on the trigger function for
492 <command>CREATE TRIGGER</> (Robert Haas)
496 This missing check could allow another user to execute a trigger
497 function with forged input data, by installing it on a table he owns.
498 This is only of significance for trigger functions marked
499 <literal>SECURITY DEFINER</>, since otherwise trigger functions run
500 as the table owner anyway. (CVE-2012-0866)
506 Convert newlines to spaces in names written in <application>pg_dump</>
507 comments (Robert Haas)
511 <application>pg_dump</> was incautious about sanitizing object names
512 that are emitted within SQL comments in its output script. A name
513 containing a newline would at least render the script syntactically
514 incorrect. Maliciously crafted object names could present a SQL
515 injection risk when the script is reloaded. (CVE-2012-0868)
521 Fix btree index corruption from insertions concurrent with vacuuming
526 An index page split caused by an insertion could sometimes cause a
527 concurrently-running <command>VACUUM</> to miss removing index entries
528 that it should remove. After the corresponding table rows are removed,
529 the dangling index entries would cause errors (such as <quote>could not
530 read block N in file ...</>) or worse, silently wrong query results
531 after unrelated rows are re-inserted at the now-free table locations.
532 This bug has been present since release 8.2, but occurs so infrequently
533 that it was not diagnosed until now. If you have reason to suspect
534 that it has happened in your database, reindexing the affected index
541 Allow non-existent values for some settings in <command>ALTER
542 USER/DATABASE SET</> (Heikki Linnakangas)
546 Allow <varname>default_text_search_config</>,
547 <varname>default_tablespace</>, and <varname>temp_tablespaces</> to be
548 set to names that are not known. This is because they might be known
549 in another database where the setting is intended to be used, or for the
550 tablespace cases because the tablespace might not be created yet. The
551 same issue was previously recognized for <varname>search_path</>, and
552 these settings now act like that one.
558 Track the OID counter correctly during WAL replay, even when it wraps
563 Previously the OID counter would remain stuck at a high value until the
564 system exited replay mode. The practical consequences of that are
565 usually nil, but there are scenarios wherein a standby server that's
566 been promoted to master might take a long time to advance the OID
567 counter to a reasonable value once values are needed.
573 Fix regular expression back-references with <literal>*</> attached
578 Rather than enforcing an exact string match, the code would effectively
579 accept any string that satisfies the pattern sub-expression referenced
580 by the back-reference symbol.
584 A similar problem still afflicts back-references that are embedded in a
585 larger quantified expression, rather than being the immediate subject
586 of the quantifier. This will be addressed in a future
587 <productname>PostgreSQL</> release.
593 Fix recently-introduced memory leak in processing of
594 <type>inet</>/<type>cidr</> values (Heikki Linnakangas)
598 A patch in the December 2011 releases of <productname>PostgreSQL</>
599 caused memory leakage in these operations, which could be significant
600 in scenarios such as building a btree index on such a column.
606 Avoid double close of file handle in syslogger on Windows (MauMau)
610 Ordinarily this error was invisible, but it would cause an exception
611 when running on a debug version of Windows.
617 Fix I/O-conversion-related memory leaks in plpgsql
618 (Andres Freund, Jan Urbanski, Tom Lane)
622 Certain operations would leak memory until the end of the current
629 Improve <application>pg_dump</>'s handling of inherited table columns
634 <application>pg_dump</> mishandled situations where a child column has
635 a different default expression than its parent column. If the default
636 is textually identical to the parent's default, but not actually the
637 same (for instance, because of schema search path differences) it would
638 not be recognized as different, so that after dump and restore the
639 child would be allowed to inherit the parent's default. Child columns
640 that are <literal>NOT NULL</> where their parent is not could also be
641 restored subtly incorrectly.
647 Fix <application>pg_restore</>'s direct-to-database mode for
648 INSERT-style table data (Tom Lane)
652 Direct-to-database restores from archive files made with
653 <option>--inserts</> or <option>--column-inserts</> options fail when
654 using <application>pg_restore</> from a release dated September or
655 December 2011, as a result of an oversight in a fix for another
656 problem. The archive file itself is not at fault, and text-mode
663 Fix error in <filename>contrib/intarray</>'s <literal>int[] &
664 int[]</> operator (Guillaume Lelarge)
668 If the smallest integer the two input arrays have in common is 1,
669 and there are smaller values in either array, then 1 would be
670 incorrectly omitted from the result.
676 Fix error detection in <filename>contrib/pgcrypto</>'s
677 <function>encrypt_iv()</> and <function>decrypt_iv()</>
682 These functions failed to report certain types of invalid-input errors,
683 and would instead return random garbage values for incorrect input.
689 Fix one-byte buffer overrun in <filename>contrib/test_parser</>
694 The code would try to read one more byte than it should, which would
695 crash in corner cases.
696 Since <filename>contrib/test_parser</> is only example code, this is
697 not a security issue in itself, but bad example code is still bad.
703 Use <function>__sync_lock_test_and_set()</> for spinlocks on ARM, if
704 available (Martin Pitt)
708 This function replaces our previous use of the <literal>SWPB</>
709 instruction, which is deprecated and not available on ARMv6 and later.
710 Reports suggest that the old code doesn't fail in an obvious way on
711 recent ARM boards, but simply doesn't interlock concurrent accesses,
712 leading to bizarre failures in multiprocess operation.
718 Use <option>-fexcess-precision=standard</> option when building with
719 gcc versions that accept it (Andrew Dunstan)
723 This prevents assorted scenarios wherein recent versions of gcc will
724 produce creative results.
730 Allow use of threaded Python on FreeBSD (Chris Rees)
734 Our configure script previously believed that this combination wouldn't
735 work; but FreeBSD fixed the problem, so remove that error check.
744 <sect1 id="release-8-3-17">
745 <title>Release 8.3.17</title>
748 <title>Release Date</title>
749 <simpara>2011-12-05</simpara>
753 This release contains a variety of fixes from 8.3.16.
754 For information about new features in the 8.3 major release, see
755 <xref linkend="release-8-3">.
759 <title>Migration to Version 8.3.17</title>
762 A dump/restore is not required for those running 8.3.X.
766 However, a longstanding error was discovered in the definition of the
767 <literal>information_schema.referential_constraints</> view. If you
768 rely on correct results from that view, you should replace its
769 definition as explained in the first changelog item below.
773 Also, if you are upgrading from a version earlier than 8.3.8,
774 see the release notes for 8.3.8.
780 <title>Changes</title>
786 Fix bugs in <literal>information_schema.referential_constraints</> view
791 This view was being insufficiently careful about matching the
792 foreign-key constraint to the depended-on primary or unique key
793 constraint. That could result in failure to show a foreign key
794 constraint at all, or showing it multiple times, or claiming that it
795 depends on a different constraint than the one it really does.
799 Since the view definition is installed by <application>initdb</>,
800 merely upgrading will not fix the problem. If you need to fix this
801 in an existing installation, you can (as a superuser) drop the
802 <literal>information_schema</> schema then re-create it by sourcing
803 <filename><replaceable>SHAREDIR</>/information_schema.sql</filename>.
804 (Run <literal>pg_config --sharedir</> if you're uncertain where
805 <replaceable>SHAREDIR</> is.) This must be repeated in each database
812 Fix TOAST-related data corruption during <literal>CREATE TABLE dest AS
813 SELECT * FROM src</> or <literal>INSERT INTO dest SELECT * FROM src</>
818 If a table has been modified by <command>ALTER TABLE ADD COLUMN</>,
819 attempts to copy its data verbatim to another table could produce
820 corrupt results in certain corner cases.
821 The problem can only manifest in this precise form in 8.4 and later,
822 but we patched earlier versions as well in case there are other code
823 paths that could trigger the same bug.
829 Fix race condition during toast table access from stale syscache entries
834 The typical symptom was transient errors like <quote>missing chunk
835 number 0 for toast value NNNNN in pg_toast_2619</>, where the cited
836 toast table would always belong to a system catalog.
842 Make <function>DatumGetInetP()</> unpack inet datums that have a 1-byte
843 header, and add a new macro, <function>DatumGetInetPP()</>, that does
844 not (Heikki Linnakangas)
848 This change affects no core code, but might prevent crashes in add-on
849 code that expects <function>DatumGetInetP()</> to produce an unpacked
850 datum as per usual convention.
856 Improve locale support in <type>money</> type's input and output
861 Aside from not supporting all standard
862 <link linkend="guc-lc-monetary"><varname>lc_monetary</></link>
863 formatting options, the input and output functions were inconsistent,
864 meaning there were locales in which dumped <type>money</> values could
872 linkend="guc-transform-null-equals"><varname>transform_null_equals</></link>
873 affect <literal>CASE foo WHEN NULL ...</> constructs
878 <varname>transform_null_equals</> is only supposed to affect
879 <literal>foo = NULL</> expressions written directly by the user, not
880 equality checks generated internally by this form of <literal>CASE</>.
886 Change foreign-key trigger creation order to better support
887 self-referential foreign keys (Tom Lane)
891 For a cascading foreign key that references its own table, a row update
892 will fire both the <literal>ON UPDATE</> trigger and the
893 <literal>CHECK</> trigger as one event. The <literal>ON UPDATE</>
894 trigger must execute first, else the <literal>CHECK</> will check a
895 non-final state of the row and possibly throw an inappropriate error.
896 However, the firing order of these triggers is determined by their
897 names, which generally sort in creation order since the triggers have
898 auto-generated names following the convention
899 <quote>RI_ConstraintTrigger_NNNN</>. A proper fix would require
900 modifying that convention, which we will do in 9.2, but it seems risky
901 to change it in existing releases. So this patch just changes the
902 creation order of the triggers. Users encountering this type of error
903 should drop and re-create the foreign key constraint to get its
904 triggers into the right order.
910 Avoid floating-point underflow while tracking buffer allocation rate
915 While harmless in itself, on certain platforms this would result in
916 annoying kernel log messages.
922 Preserve blank lines within commands in <application>psql</>'s command
923 history (Robert Haas)
927 The former behavior could cause problems if an empty line was removed
928 from within a string literal, for example.
934 Fix <application>pg_dump</> to dump user-defined casts between
935 auto-generated types, such as table rowtypes (Tom Lane)
941 Use the preferred version of <application>xsubpp</> to build PL/Perl,
942 not necessarily the operating system's main copy
943 (David Wheeler and Alex Hunsaker)
949 Fix incorrect coding in <filename>contrib/dict_int</> and
950 <filename>contrib/dict_xsyn</> (Tom Lane)
954 Some functions incorrectly assumed that memory returned by
955 <function>palloc()</> is guaranteed zeroed.
961 Honor query cancel interrupts promptly in <function>pgstatindex()</>
968 Ensure VPATH builds properly install all server header files
975 Shorten file names reported in verbose error messages (Peter Eisentraut)
979 Regular builds have always reported just the name of the C file
980 containing the error message call, but VPATH builds formerly
981 reported an absolute path name.
987 Fix interpretation of Windows timezone names for Central America
992 Map <quote>Central America Standard Time</> to <literal>CST6</>, not
993 <literal>CST6CDT</>, because DST is generally not observed anywhere in
1000 Update time zone data files to <application>tzdata</> release 2011n
1001 for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa;
1002 also historical corrections for Alaska and British East Africa.
1011 <sect1 id="release-8-3-16">
1012 <title>Release 8.3.16</title>
1015 <title>Release Date</title>
1016 <simpara>2011-09-26</simpara>
1020 This release contains a variety of fixes from 8.3.15.
1021 For information about new features in the 8.3 major release, see
1022 <xref linkend="release-8-3">.
1026 <title>Migration to Version 8.3.16</title>
1029 A dump/restore is not required for those running 8.3.X.
1030 However, if you are upgrading from a version earlier than 8.3.8,
1031 see the release notes for 8.3.8.
1037 <title>Changes</title>
1043 Fix bugs in indexing of in-doubt HOT-updated tuples (Tom Lane)
1047 These bugs could result in index corruption after reindexing a system
1048 catalog. They are not believed to affect user indexes.
1054 Fix multiple bugs in GiST index page split processing (Heikki
1059 The probability of occurrence was low, but these could lead to index
1066 Fix possible buffer overrun in <function>tsvector_concat()</>
1071 The function could underestimate the amount of memory needed for its
1072 result, leading to server crashes.
1078 Fix crash in <function>xml_recv</> when processing a
1079 <quote>standalone</> parameter (Tom Lane)
1085 Avoid possibly accessing off the end of memory in <command>ANALYZE</>
1086 and in SJIS-2004 encoding conversion (Noah Misch)
1090 This fixes some very-low-probability server crash scenarios.
1096 Fix race condition in relcache init file invalidation (Tom Lane)
1100 There was a window wherein a new backend process could read a stale init
1101 file but miss the inval messages that would tell it the data is stale.
1102 The result would be bizarre failures in catalog accesses, typically
1103 <quote>could not read block 0 in file ...</> later during startup.
1109 Fix memory leak at end of a GiST index scan (Tom Lane)
1113 Commands that perform many separate GiST index scans, such as
1114 verification of a new GiST-based exclusion constraint on a table
1115 already containing many rows, could transiently require large amounts of
1116 memory due to this leak.
1122 Fix performance problem when constructing a large, lossy bitmap
1129 Fix array- and path-creating functions to ensure padding bytes are
1134 This avoids some situations where the planner will think that
1135 semantically-equal constants are not equal, resulting in poor
1142 Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane)
1146 This could lead to loss of committed transactions after a server crash.
1152 Fix dump bug for <literal>VALUES</> in a view (Tom Lane)
1158 Disallow <literal>SELECT FOR UPDATE/SHARE</> on sequences (Tom Lane)
1162 This operation doesn't work as expected and can lead to failures.
1168 Defend against integer overflow when computing size of a hash table (Tom
1175 Fix cases where <command>CLUSTER</> might attempt to access
1176 already-removed TOAST data (Tom Lane)
1182 Fix portability bugs in use of credentials control messages for
1183 <quote>peer</> authentication (Tom Lane)
1189 Fix SSPI login when multiple roundtrips are required (Ahmed Shinwari,
1194 The typical symptom of this problem was <quote>The function requested is
1195 not supported</> errors during SSPI login.
1201 Fix typo in <function>pg_srand48</> seed initialization (Andres Freund)
1205 This led to failure to use all bits of the provided seed. This function
1206 is not used on most platforms (only those without <function>srandom</>),
1207 and the potential security exposure from a less-random-than-expected
1208 seed seems minimal in any case.
1214 Avoid integer overflow when the sum of <literal>LIMIT</> and
1215 <literal>OFFSET</> values exceeds 2^63 (Heikki Linnakangas)
1221 Add overflow checks to <type>int4</> and <type>int8</> versions of
1222 <function>generate_series()</> (Robert Haas)
1228 Fix trailing-zero removal in <function>to_char()</> (Marti Raudsepp)
1232 In a format with <literal>FM</> and no digit positions
1233 after the decimal point, zeroes to the left of the decimal point could
1234 be removed incorrectly.
1240 Fix <function>pg_size_pretty()</> to avoid overflow for inputs close to
1247 In <application>pg_ctl</>, support silent mode for service registrations
1254 Fix <application>psql</>'s counting of script file line numbers during
1255 <literal>COPY</> from a different file (Tom Lane)
1261 Fix <application>pg_restore</>'s direct-to-database mode for
1262 <varname>standard_conforming_strings</> (Tom Lane)
1266 <application>pg_restore</> could emit incorrect commands when restoring
1267 directly to a database server from an archive file that had been made
1268 with <varname>standard_conforming_strings</> set to <literal>on</>.
1274 Fix write-past-buffer-end and memory leak in <application>libpq</>'s
1275 LDAP service lookup code (Albe Laurenz)
1281 In <application>libpq</>, avoid failures when using nonblocking I/O
1282 and an SSL connection (Martin Pihlak, Tom Lane)
1288 Improve libpq's handling of failures during connection startup
1293 In particular, the response to a server report of <function>fork()</>
1294 failure during SSL connection startup is now saner.
1300 Improve <application>libpq</>'s error reporting for SSL failures (Tom
1307 Make <application>ecpglib</> write <type>double</> values with 15 digits
1308 precision (Akira Kurosawa)
1314 In <application>ecpglib</>, be sure <literal>LC_NUMERIC</> setting is
1315 restored after an error (Michael Meskes)
1321 Apply upstream fix for blowfish signed-character bug (CVE-2011-2483)
1326 <filename>contrib/pg_crypto</>'s blowfish encryption code could give
1327 wrong results on platforms where char is signed (which is most),
1328 leading to encrypted passwords being weaker than they should be.
1334 Fix memory leak in <filename>contrib/seg</> (Heikki Linnakangas)
1340 Fix <function>pgstatindex()</> to give consistent results for empty
1347 Allow building with perl 5.14 (Alex Hunsaker)
1353 Update configure script's method for probing existence of system
1354 functions (Tom Lane)
1358 The version of autoconf we used in 8.3 and 8.2 could be fooled by
1359 compilers that perform link-time optimization.
1365 Fix assorted issues with build and install file paths containing spaces
1372 Update time zone data files to <application>tzdata</> release 2011i
1373 for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan.
1382 <sect1 id="release-8-3-15">
1383 <title>Release 8.3.15</title>
1386 <title>Release Date</title>
1387 <simpara>2011-04-18</simpara>
1391 This release contains a variety of fixes from 8.3.14.
1392 For information about new features in the 8.3 major release, see
1393 <xref linkend="release-8-3">.
1397 <title>Migration to Version 8.3.15</title>
1400 A dump/restore is not required for those running 8.3.X.
1401 However, if you are upgrading from a version earlier than 8.3.8,
1402 see the release notes for 8.3.8.
1408 <title>Changes</title>
1414 Disallow including a composite type in itself (Tom Lane)
1418 This prevents scenarios wherein the server could recurse infinitely
1419 while processing the composite type. While there are some possible
1420 uses for such a structure, they don't seem compelling enough to
1421 justify the effort required to make sure it always works safely.
1427 Avoid potential deadlock during catalog cache initialization
1432 In some cases the cache loading code would acquire share lock on a
1433 system index before locking the index's catalog. This could deadlock
1434 against processes trying to acquire exclusive locks in the other,
1435 more standard order.
1441 Fix dangling-pointer problem in <literal>BEFORE ROW UPDATE</> trigger
1442 handling when there was a concurrent update to the target tuple
1447 This bug has been observed to result in intermittent <quote>cannot
1448 extract system attribute from virtual tuple</> failures while trying to
1449 do <literal>UPDATE RETURNING ctid</>. There is a very small probability
1450 of more serious errors, such as generating incorrect index entries for
1457 Disallow <command>DROP TABLE</> when there are pending deferred trigger
1458 events for the table (Tom Lane)
1462 Formerly the <command>DROP</> would go through, leading to
1463 <quote>could not open relation with OID nnn</> errors when the
1464 triggers were eventually fired.
1470 Fix PL/Python memory leak involving array slices (Daniel Popowich)
1476 Fix <application>pg_restore</> to cope with long lines (over 1KB) in
1477 TOC files (Tom Lane)
1483 Put in more safeguards against crashing due to division-by-zero
1484 with overly enthusiastic compiler optimization (Aurelien Jarno)
1490 Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane)
1494 There was a hard-wired assumption that this system function was not
1495 available on MIPS hardware on these systems. Use a compile-time test
1496 instead, since more recent versions have it.
1502 Fix compilation failures on HP-UX (Heikki Linnakangas)
1508 Fix version-incompatibility problem with <application>libintl</> on
1509 Windows (Hiroshi Inoue)
1515 Fix usage of <application>xcopy</> in Windows build scripts to
1516 work correctly under Windows 7 (Andrew Dunstan)
1520 This affects the build scripts only, not installation or usage.
1526 Fix path separator used by <application>pg_regress</> on Cygwin
1533 Update time zone data files to <application>tzdata</> release 2011f
1534 for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa,
1535 and Turkey; also historical corrections for South Australia, Alaska,
1545 <sect1 id="release-8-3-14">
1546 <title>Release 8.3.14</title>
1549 <title>Release Date</title>
1550 <simpara>2011-01-31</simpara>
1554 This release contains a variety of fixes from 8.3.13.
1555 For information about new features in the 8.3 major release, see
1556 <xref linkend="release-8-3">.
1560 <title>Migration to Version 8.3.14</title>
1563 A dump/restore is not required for those running 8.3.X.
1564 However, if you are upgrading from a version earlier than 8.3.8,
1565 see the release notes for 8.3.8.
1571 <title>Changes</title>
1577 Avoid failures when <command>EXPLAIN</> tries to display a simple-form
1578 <literal>CASE</> expression (Tom Lane)
1582 If the <literal>CASE</>'s test expression was a constant, the planner
1583 could simplify the <literal>CASE</> into a form that confused the
1584 expression-display code, resulting in <quote>unexpected CASE WHEN
1591 Fix assignment to an array slice that is before the existing range
1592 of subscripts (Tom Lane)
1596 If there was a gap between the newly added subscripts and the first
1597 pre-existing subscript, the code miscalculated how many entries needed
1598 to be copied from the old array's null bitmap, potentially leading to
1599 data corruption or crash.
1605 Avoid unexpected conversion overflow in planner for very distant date
1610 The <type>date</> type supports a wider range of dates than can be
1611 represented by the <type>timestamp</> types, but the planner assumed it
1612 could always convert a date to timestamp with impunity.
1618 Fix <application>pg_restore</>'s text output for large objects (BLOBs)
1619 when <varname>standard_conforming_strings</> is on (Tom Lane)
1623 Although restoring directly to a database worked correctly, string
1624 escaping was incorrect if <application>pg_restore</> was asked for
1625 SQL text output and <varname>standard_conforming_strings</> had been
1626 enabled in the source database.
1632 Fix erroneous parsing of <type>tsquery</> values containing
1633 <literal>... & !(subexpression) | ...</literal> (Tom Lane)
1637 Queries containing this combination of operators were not executed
1638 correctly. The same error existed in <filename>contrib/intarray</>'s
1639 <type>query_int</> type and <filename>contrib/ltree</>'s
1640 <type>ltxtquery</> type.
1646 Fix buffer overrun in <filename>contrib/intarray</>'s input function
1647 for the <type>query_int</> type (Apple)
1651 This bug is a security risk since the function's return address could
1652 be overwritten. Thanks to Apple Inc's security team for reporting this
1653 issue and supplying the fix. (CVE-2010-4015)
1659 Fix bug in <filename>contrib/seg</>'s GiST picksplit algorithm
1660 (Alexander Korotkov)
1664 This could result in considerable inefficiency, though not actually
1665 incorrect answers, in a GiST index on a <type>seg</> column.
1666 If you have such an index, consider <command>REINDEX</>ing it after
1667 installing this update. (This is identical to the bug that was fixed in
1668 <filename>contrib/cube</> in the previous update.)
1677 <sect1 id="release-8-3-13">
1678 <title>Release 8.3.13</title>
1681 <title>Release Date</title>
1682 <simpara>2010-12-16</simpara>
1686 This release contains a variety of fixes from 8.3.12.
1687 For information about new features in the 8.3 major release, see
1688 <xref linkend="release-8-3">.
1692 <title>Migration to Version 8.3.13</title>
1695 A dump/restore is not required for those running 8.3.X.
1696 However, if you are upgrading from a version earlier than 8.3.8,
1697 see the release notes for 8.3.8.
1703 <title>Changes</title>
1710 <link linkend="guc-wal-sync-method"><varname>wal_sync_method</></link>
1711 to be <literal>fdatasync</> on Linux (Tom Lane, Marti Raudsepp)
1715 The default on Linux has actually been <literal>fdatasync</> for many
1716 years, but recent kernel changes caused <productname>PostgreSQL</> to
1717 choose <literal>open_datasync</> instead. This choice did not result
1718 in any performance improvement, and caused outright failures on
1719 certain filesystems, notably <literal>ext4</> with the
1720 <literal>data=journal</> mount option.
1726 Fix assorted bugs in WAL replay logic for GIN indexes (Tom Lane)
1730 This could result in <quote>bad buffer id: 0</> failures or
1731 corruption of index contents during replication.
1737 Fix recovery from base backup when the starting checkpoint WAL record
1738 is not in the same WAL segment as its redo point (Jeff Davis)
1744 Fix persistent slowdown of autovacuum workers when multiple workers
1745 remain active for a long time (Tom Lane)
1749 The effective <varname>vacuum_cost_limit</> for an autovacuum worker
1750 could drop to nearly zero if it processed enough tables, causing it
1751 to run extremely slowly.
1757 Add support for detecting register-stack overrun on <literal>IA64</>
1762 The <literal>IA64</> architecture has two hardware stacks. Full
1763 prevention of stack-overrun failures requires checking both.
1769 Add a check for stack overflow in <function>copyObject()</> (Tom Lane)
1773 Certain code paths could crash due to stack overflow given a
1774 sufficiently complex query.
1780 Fix detection of page splits in temporary GiST indexes (Heikki
1785 It is possible to have a <quote>concurrent</> page split in a
1786 temporary index, if for example there is an open cursor scanning the
1787 index when an insertion is done. GiST failed to detect this case and
1788 hence could deliver wrong results when execution of the cursor
1795 Avoid memory leakage while <command>ANALYZE</>'ing complex index
1796 expressions (Tom Lane)
1802 Ensure an index that uses a whole-row Var still depends on its table
1807 An index declared like <literal>create index i on t (foo(t.*))</>
1808 would not automatically get dropped when its table was dropped.
1814 Do not <quote>inline</> a SQL function with multiple <literal>OUT</>
1815 parameters (Tom Lane)
1819 This avoids a possible crash due to loss of information about the
1820 expected result rowtype.
1826 Behave correctly if <literal>ORDER BY</>, <literal>LIMIT</>,
1827 <literal>FOR UPDATE</>, or <literal>WITH</> is attached to the
1828 <literal>VALUES</> part of <literal>INSERT ... VALUES</> (Tom Lane)
1834 Fix constant-folding of <literal>COALESCE()</> expressions (Tom Lane)
1838 The planner would sometimes attempt to evaluate sub-expressions that
1839 in fact could never be reached, possibly leading to unexpected errors.
1845 Fix postmaster crash when connection acceptance
1846 (<function>accept()</> or one of the calls made immediately after it)
1847 fails, and the postmaster was compiled with GSSAPI support (Alexander
1854 Fix missed unlink of temporary files when <varname>log_temp_files</>
1855 is active (Tom Lane)
1859 If an error occurred while attempting to emit the log message, the
1860 unlink was not done, resulting in accumulation of temp files.
1866 Add print functionality for <structname>InhRelation</> nodes (Tom Lane)
1870 This avoids a failure when <varname>debug_print_parse</> is enabled
1871 and certain types of query are executed.
1877 Fix incorrect calculation of distance from a point to a horizontal
1878 line segment (Tom Lane)
1882 This bug affected several different geometric distance-measurement
1889 Fix <application>PL/pgSQL</>'s handling of <quote>simple</>
1890 expressions to not fail in recursion or error-recovery cases (Tom Lane)
1896 Fix <application>PL/Python</>'s handling of set-returning functions
1901 Attempts to call SPI functions within the iterator generating a set
1908 Fix bug in <filename>contrib/cube</>'s GiST picksplit algorithm
1909 (Alexander Korotkov)
1913 This could result in considerable inefficiency, though not actually
1914 incorrect answers, in a GiST index on a <type>cube</> column.
1915 If you have such an index, consider <command>REINDEX</>ing it after
1916 installing this update.
1922 Don't emit <quote>identifier will be truncated</> notices in
1923 <filename>contrib/dblink</> except when creating new connections
1930 Fix potential coredump on missing public key in
1931 <filename>contrib/pgcrypto</> (Marti Raudsepp)
1937 Fix memory leak in <filename>contrib/xml2</>'s XPath query functions
1944 Update time zone data files to <application>tzdata</> release 2010o
1945 for DST law changes in Fiji and Samoa;
1946 also historical corrections for Hong Kong.
1955 <sect1 id="release-8-3-12">
1956 <title>Release 8.3.12</title>
1959 <title>Release Date</title>
1960 <simpara>2010-10-04</simpara>
1964 This release contains a variety of fixes from 8.3.11.
1965 For information about new features in the 8.3 major release, see
1966 <xref linkend="release-8-3">.
1970 <title>Migration to Version 8.3.12</title>
1973 A dump/restore is not required for those running 8.3.X.
1974 However, if you are upgrading from a version earlier than 8.3.8,
1975 see the release notes for 8.3.8.
1981 <title>Changes</title>
1987 Use a separate interpreter for each calling SQL userid in PL/Perl and
1992 This change prevents security problems that can be caused by subverting
1993 Perl or Tcl code that will be executed later in the same session under
1994 another SQL user identity (for example, within a <literal>SECURITY
1995 DEFINER</> function). Most scripting languages offer numerous ways that
1996 that might be done, such as redefining standard functions or operators
1997 called by the target function. Without this change, any SQL user with
1998 Perl or Tcl language usage rights can do essentially anything with the
1999 SQL privileges of the target function's owner.
2003 The cost of this change is that intentional communication among Perl
2004 and Tcl functions becomes more difficult. To provide an escape hatch,
2005 PL/PerlU and PL/TclU functions continue to use only one interpreter
2006 per session. This is not considered a security issue since all such
2007 functions execute at the trust level of a database superuser already.
2011 It is likely that third-party procedural languages that claim to offer
2012 trusted execution have similar security issues. We advise contacting
2013 the authors of any PL you are depending on for security-critical
2018 Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433).
2024 Prevent possible crashes in <function>pg_get_expr()</> by disallowing
2025 it from being called with an argument that is not one of the system
2026 catalog columns it's intended to be used with
2027 (Heikki Linnakangas, Tom Lane)
2033 Treat exit code 128 (<literal>ERROR_WAIT_NO_CHILDREN</>) as non-fatal on
2034 Windows (Magnus Hagander)
2038 Under high load, Windows processes will sometimes fail at startup with
2039 this error code. Formerly the postmaster treated this as a panic
2040 condition and restarted the whole database, but that seems to be
2047 Fix incorrect usage of non-strict OR joinclauses in Append indexscans
2052 This is a back-patch of an 8.4 fix that was missed in the 8.3 branch.
2053 This corrects an error introduced in 8.3.8 that could cause incorrect
2054 results for outer joins when the inner relation is an inheritance tree
2055 or <literal>UNION ALL</> subquery.
2061 Fix possible duplicate scans of <literal>UNION ALL</> member relations
2068 Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane)
2072 This occurred when a sub-select contains a join alias reference that
2073 expands into an expression containing another sub-select.
2079 Fix failure to mark cached plans as transient (Tom Lane)
2083 If a plan is prepared while <command>CREATE INDEX CONCURRENTLY</> is
2084 in progress for one of the referenced tables, it is supposed to be
2085 re-planned once the index is ready for use. This was not happening
2092 Reduce PANIC to ERROR in some occasionally-reported btree failure cases,
2093 and provide additional detail in the resulting error messages
2098 This should improve the system's robustness with corrupted indexes.
2104 Prevent show_session_authorization() from crashing within autovacuum
2105 processes (Tom Lane)
2111 Defend against functions returning setof record where not all the
2112 returned rows are actually of the same rowtype (Tom Lane)
2118 Fix possible failure when hashing a pass-by-reference function result
2125 Improve merge join's handling of NULLs in the join columns (Tom Lane)
2129 A merge join can now stop entirely upon reaching the first NULL,
2130 if the sort order is such that NULLs sort high.
2136 Take care to fsync the contents of lockfiles (both
2137 <filename>postmaster.pid</> and the socket lockfile) while writing them
2142 This omission could result in corrupted lockfile contents if the
2143 machine crashes shortly after postmaster start. That could in turn
2144 prevent subsequent attempts to start the postmaster from succeeding,
2145 until the lockfile is manually removed.
2151 Avoid recursion while assigning XIDs to heavily-nested
2152 subtransactions (Andres Freund, Robert Haas)
2156 The original coding could result in a crash if there was limited
2163 Avoid holding open old WAL segments in the walwriter process
2164 (Magnus Hagander, Heikki Linnakangas)
2168 The previous coding would prevent removal of no-longer-needed segments.
2174 Fix <varname>log_line_prefix</>'s <literal>%i</> escape,
2175 which could produce junk early in backend startup (Tom Lane)
2181 Fix possible data corruption in <command>ALTER TABLE ... SET
2182 TABLESPACE</> when archiving is enabled (Jeff Davis)
2188 Allow <command>CREATE DATABASE</> and <command>ALTER DATABASE ... SET
2189 TABLESPACE</> to be interrupted by query-cancel (Guillaume Lelarge)
2195 Fix <command>REASSIGN OWNED</> to handle operator classes and families
2202 Fix possible core dump when comparing two empty <type>tsquery</> values
2209 Fix <literal>LIKE</>'s handling of patterns containing <literal>%</>
2210 followed by <literal>_</> (Tom Lane)
2214 We've fixed this before, but there were still some incorrectly-handled
2221 In PL/Python, defend against null pointer results from
2222 <function>PyCObject_AsVoidPtr</> and <function>PyCObject_FromVoidPtr</>
2229 Make psql recognize <command>DISCARD ALL</> as a command that should
2230 not be encased in a transaction block in autocommit-off mode
2237 Fix <application>ecpg</> to process data from <literal>RETURNING</>
2238 clauses correctly (Michael Meskes)
2244 Improve <filename>contrib/dblink</>'s handling of tables containing
2245 dropped columns (Tom Lane)
2251 Fix connection leak after <quote>duplicate connection name</quote>
2252 errors in <filename>contrib/dblink</> (Itagaki Takahiro)
2258 Fix <filename>contrib/dblink</> to handle connection names longer than
2259 62 bytes correctly (Itagaki Takahiro)
2265 Add <function>hstore(text, text)</>
2266 function to <filename>contrib/hstore</> (Robert Haas)
2270 This function is the recommended substitute for the now-deprecated
2271 <literal>=></> operator. It was back-patched so that future-proofed
2272 code can be used with older server versions. Note that the patch will
2273 be effective only after <filename>contrib/hstore</> is installed or
2274 reinstalled in a particular database. Users might prefer to execute
2275 the <command>CREATE FUNCTION</> command by hand, instead.
2281 Update build infrastructure and documentation to reflect the source code
2282 repository's move from CVS to Git (Magnus Hagander and others)
2288 Update time zone data files to <application>tzdata</> release 2010l
2289 for DST law changes in Egypt and Palestine; also historical corrections
2294 This change also adds new names for two Micronesian timezones:
2295 Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred
2296 abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over
2303 Make Windows' <quote>N. Central Asia Standard Time</> timezone map to
2304 Asia/Novosibirsk, not Asia/Almaty (Magnus Hagander)
2308 Microsoft changed the DST behavior of this zone in the timezone update
2309 from KB976098. Asia/Novosibirsk is a better match to its new behavior.
2318 <sect1 id="release-8-3-11">
2319 <title>Release 8.3.11</title>
2322 <title>Release Date</title>
2323 <simpara>2010-05-17</simpara>
2327 This release contains a variety of fixes from 8.3.10.
2328 For information about new features in the 8.3 major release, see
2329 <xref linkend="release-8-3">.
2333 <title>Migration to Version 8.3.11</title>
2336 A dump/restore is not required for those running 8.3.X.
2337 However, if you are upgrading from a version earlier than 8.3.8,
2338 see the release notes for 8.3.8.
2344 <title>Changes</title>
2350 Enforce restrictions in <literal>plperl</> using an opmask applied to
2351 the whole interpreter, instead of using <filename>Safe.pm</>
2352 (Tim Bunce, Andrew Dunstan)
2356 Recent developments have convinced us that <filename>Safe.pm</> is too
2357 insecure to rely on for making <literal>plperl</> trustable. This
2358 change removes use of <filename>Safe.pm</> altogether, in favor of using
2359 a separate interpreter with an opcode mask that is always applied.
2360 Pleasant side effects of the change include that it is now possible to
2361 use Perl's <literal>strict</> pragma in a natural way in
2362 <literal>plperl</>, and that Perl's <literal>$a</> and <literal>$b</>
2363 variables work as expected in sort routines, and that function
2364 compilation is significantly faster. (CVE-2010-1169)
2370 Prevent PL/Tcl from executing untrustworthy code from
2371 <structname>pltcl_modules</> (Tom)
2375 PL/Tcl's feature for autoloading Tcl code from a database table
2376 could be exploited for trojan-horse attacks, because there was no
2377 restriction on who could create or insert into that table. This change
2378 disables the feature unless <structname>pltcl_modules</> is owned by a
2379 superuser. (However, the permissions on the table are not checked, so
2380 installations that really need a less-than-secure modules table can
2381 still grant suitable privileges to trusted non-superusers.) Also,
2382 prevent loading code into the unrestricted <quote>normal</> Tcl
2383 interpreter unless we are really going to execute a <literal>pltclu</>
2384 function. (CVE-2010-1170)
2390 Fix possible crash if a cache reset message is received during
2391 rebuild of a relcache entry (Heikki)
2395 This error was introduced in 8.3.10 while fixing a related failure.
2401 Apply per-function GUC settings while running the language validator
2402 for the function (Itagaki Takahiro)
2406 This avoids failures if the function's code is invalid without the
2407 setting; an example is that SQL functions may not parse if the
2408 <varname>search_path</> is not correct.
2414 Do not allow an unprivileged user to reset superuser-only parameter
2419 Previously, if an unprivileged user ran <literal>ALTER USER ... RESET
2420 ALL</> for himself, or <literal>ALTER DATABASE ... RESET ALL</> for
2421 a database he owns, this would remove all special parameter settings
2422 for the user or database, even ones that are only supposed to be
2423 changeable by a superuser. Now, the <command>ALTER</> will only
2424 remove the parameters that the user has permission to change.
2430 Avoid possible crash during backend shutdown if shutdown occurs
2431 when a <literal>CONTEXT</> addition would be made to log entries (Tom)
2435 In some cases the context-printing function would fail because the
2436 current transaction had already been rolled back when it came time
2437 to print a log message.
2443 Ensure the archiver process responds to changes in
2444 <varname>archive_command</> as soon as possible (Tom)
2450 Update pl/perl's <filename>ppport.h</> for modern Perl versions
2457 Fix assorted memory leaks in pl/python (Andreas Freund, Tom)
2463 Prevent infinite recursion in <application>psql</> when expanding
2464 a variable that refers to itself (Tom)
2470 Fix <application>psql</>'s <literal>\copy</> to not add spaces around
2471 a dot within <literal>\copy (select ...)</> (Tom)
2475 Addition of spaces around the decimal point in a numeric literal would
2476 result in a syntax error.
2482 Fix unnecessary <quote>GIN indexes do not support whole-index scans</>
2483 errors for unsatisfiable queries using <filename>contrib/intarray</>
2490 Ensure that <filename>contrib/pgstattuple</> functions respond to cancel
2491 interrupts promptly (Tatsuhito Kasahara)
2497 Make server startup deal properly with the case that
2498 <function>shmget()</> returns <literal>EINVAL</> for an existing
2499 shared memory segment (Tom)
2503 This behavior has been observed on BSD-derived kernels including OS X.
2504 It resulted in an entirely-misleading startup failure complaining that
2505 the shared memory request size was too large.
2511 Avoid possible crashes in syslogger process on Windows (Heikki)
2517 Deal more robustly with incomplete time zone information in the
2518 Windows registry (Magnus)
2524 Update the set of known Windows time zone names (Magnus)
2530 Update time zone data files to <application>tzdata</> release 2010j
2531 for DST law changes in Argentina, Australian Antarctic, Bangladesh,
2532 Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia;
2533 also historical corrections for Taiwan.
2537 Also, add <literal>PKST</> (Pakistan Summer Time) to the default set of
2538 timezone abbreviations.
2547 <sect1 id="release-8-3-10">
2548 <title>Release 8.3.10</title>
2551 <title>Release Date</title>
2552 <simpara>2010-03-15</simpara>
2556 This release contains a variety of fixes from 8.3.9.
2557 For information about new features in the 8.3 major release, see
2558 <xref linkend="release-8-3">.
2562 <title>Migration to Version 8.3.10</title>
2565 A dump/restore is not required for those running 8.3.X.
2566 However, if you are upgrading from a version earlier than 8.3.8,
2567 see the release notes for 8.3.8.
2573 <title>Changes</title>
2579 Add new configuration parameter <varname>ssl_renegotiation_limit</> to
2580 control how often we do session key renegotiation for an SSL connection
2585 This can be set to zero to disable renegotiation completely, which may
2586 be required if a broken SSL library is used. In particular, some
2587 vendors are shipping stopgap patches for CVE-2009-3555 that cause
2588 renegotiation attempts to fail.
2594 Fix possible deadlock during backend startup (Tom)
2600 Fix possible crashes due to not handling errors during relcache reload
2607 Fix possible crash due to use of dangling pointer to a cached plan
2614 Fix possible crashes when trying to recover from a failure in
2615 subtransaction start (Tom)
2621 Fix server memory leak associated with use of savepoints and a client
2622 encoding different from server's encoding (Tom)
2628 Fix incorrect WAL data emitted during end-of-recovery cleanup of a GIST
2629 index page split (Yoichi Hirai)
2633 This would result in index corruption, or even more likely an error
2634 during WAL replay, if we were unlucky enough to crash during
2635 end-of-recovery cleanup after having completed an incomplete GIST
2642 Make <function>substring()</> for <type>bit</> types treat any negative
2643 length as meaning <quote>all the rest of the string</> (Tom)
2647 The previous coding treated only -1 that way, and would produce an
2648 invalid result value for other negative values, possibly leading to
2649 a crash (CVE-2010-0442).
2655 Fix integer-to-bit-string conversions to handle the first fractional
2656 byte correctly when the output bit width is wider than the given
2657 integer by something other than a multiple of 8 bits (Tom)
2663 Fix some cases of pathologically slow regular expression matching (Tom)
2669 Fix assorted crashes in <type>xml</> processing caused by sloppy
2670 memory management (Tom)
2674 This is a back-patch of changes first applied in 8.4. The 8.3 code
2675 was known buggy, but the new code was sufficiently different to not
2676 want to back-patch it until it had gotten some field testing.
2682 Fix bug with trying to update a field of an element of a
2683 composite-type array column (Tom)
2689 Fix the <literal>STOP WAL LOCATION</> entry in backup history files to
2690 report the next WAL segment's name when the end location is exactly at a
2691 segment boundary (Itagaki Takahiro)
2697 Fix some more cases of temporary-file leakage (Heikki)
2701 This corrects a problem introduced in the previous minor release.
2702 One case that failed is when a plpgsql function returning set is
2703 called within another function's exception handler.
2709 Improve constraint exclusion processing of boolean-variable cases,
2710 in particular make it possible to exclude a partition that has a
2711 <quote>bool_column = false</> constraint (Tom)
2717 When reading <filename>pg_hba.conf</> and related files, do not treat
2718 <literal>@something</> as a file inclusion request if the <literal>@</>
2719 appears inside quote marks; also, never treat <literal>@</> by itself
2720 as a file inclusion request (Tom)
2724 This prevents erratic behavior if a role or database name starts with
2725 <literal>@</>. If you need to include a file whose path name
2726 contains spaces, you can still do so, but you must write
2727 <literal>@"/path to/file"</> rather than putting the quotes around
2728 the whole construct.
2734 Prevent infinite loop on some platforms if a directory is named as
2735 an inclusion target in <filename>pg_hba.conf</> and related files
2742 Fix possible infinite loop if <function>SSL_read</> or
2743 <function>SSL_write</> fails without setting <varname>errno</> (Tom)
2747 This is reportedly possible with some Windows versions of
2748 <application>openssl</>.
2754 Disallow <acronym>GSSAPI</> authentication on local connections,
2755 since it requires a hostname to function correctly (Magnus)
2761 Make <application>ecpg</> report the proper SQLSTATE if the connection
2762 disappears (Michael)
2768 Fix <application>psql</>'s <literal>numericlocale</> option to not
2769 format strings it shouldn't in latex and troff output formats (Heikki)
2775 Make <application>psql</> return the correct exit status (3) when
2776 <literal>ON_ERROR_STOP</> and <literal>--single-transaction</> are
2777 both specified and an error occurs during the implied <command>COMMIT</>
2784 Fix plpgsql failure in one case where a composite column is set to NULL
2791 Fix possible failure when calling PL/Perl functions from PL/PerlU
2792 or vice versa (Tim Bunce)
2798 Add <literal>volatile</> markings in PL/Python to avoid possible
2799 compiler-specific misbehavior (Zdenek Kotala)
2805 Ensure PL/Tcl initializes the Tcl interpreter fully (Tom)
2809 The only known symptom of this oversight is that the Tcl
2810 <literal>clock</> command misbehaves if using Tcl 8.5 or later.
2816 Prevent crash in <filename>contrib/dblink</> when too many key
2817 columns are specified to a <function>dblink_build_sql_*</> function
2818 (Rushabh Lathia, Joe Conway)
2824 Allow zero-dimensional arrays in <filename>contrib/ltree</> operations
2829 This case was formerly rejected as an error, but it's more convenient to
2830 treat it the same as a zero-element array. In particular this avoids
2831 unnecessary failures when an <type>ltree</> operation is applied to the
2832 result of <literal>ARRAY(SELECT ...)</> and the sub-select returns no
2839 Fix assorted crashes in <filename>contrib/xml2</> caused by sloppy
2840 memory management (Tom)
2846 Make building of <filename>contrib/xml2</> more robust on Windows
2853 Fix race condition in Windows signal handling (Radu Ilie)
2857 One known symptom of this bug is that rows in <structname>pg_listener</>
2858 could be dropped under heavy load.
2864 Update time zone data files to <application>tzdata</> release 2010e
2865 for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
2874 <sect1 id="release-8-3-9">
2875 <title>Release 8.3.9</title>
2878 <title>Release Date</title>
2879 <simpara>2009-12-14</simpara>
2883 This release contains a variety of fixes from 8.3.8.
2884 For information about new features in the 8.3 major release, see
2885 <xref linkend="release-8-3">.
2889 <title>Migration to Version 8.3.9</title>
2892 A dump/restore is not required for those running 8.3.X.
2893 However, if you are upgrading from a version earlier than 8.3.8,
2894 see the release notes for 8.3.8.
2900 <title>Changes</title>
2906 Protect against indirect security threats caused by index functions
2907 changing session-local state (Gurjeet Singh, Tom)
2911 This change prevents allegedly-immutable index functions from possibly
2912 subverting a superuser's session (CVE-2009-4136).
2918 Reject SSL certificates containing an embedded null byte in the common
2919 name (CN) field (Magnus)
2923 This prevents unintended matching of a certificate to a server or client
2924 name during SSL validation (CVE-2009-4034).
2930 Fix possible crash during backend-startup-time cache initialization (Tom)
2936 Avoid crash on empty thesaurus dictionary (Tom)
2942 Prevent signals from interrupting <literal>VACUUM</> at unsafe times
2947 This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled
2948 after it's already committed its tuple movements, as well as transient
2949 errors if a plain <literal>VACUUM</> is interrupted after having
2950 truncated the table.
2956 Fix possible crash due to integer overflow in hash table size
2961 This could occur with extremely large planner estimates for the size of
2962 a hashjoin's result.
2968 Fix very rare crash in <type>inet</>/<type>cidr</> comparisons (Chris
2975 Ensure that shared tuple-level locks held by prepared transactions are
2976 not ignored (Heikki)
2982 Fix premature drop of temporary files used for a cursor that is accessed
2983 within a subtransaction (Heikki)
2989 Fix memory leak in syslogger process when rotating to a new CSV logfile
2996 Fix Windows permission-downgrade logic (Jesse Morris)
3000 This fixes some cases where the database failed to start on Windows,
3001 often with misleading error messages such as <quote>could not locate
3002 matching postgres executable</quote>.
3008 Fix incorrect logic for GiST index page splits, when the split depends
3009 on a non-first column of the index (Paul Ramsey)
3015 Don't error out if recycling or removing an old WAL file fails at the
3016 end of checkpoint (Heikki)
3020 It's better to treat the problem as non-fatal and allow the checkpoint
3021 to complete. Future checkpoints will retry the removal. Such problems
3022 are not expected in normal operation, but have been seen to be
3023 caused by misdesigned Windows anti-virus and backup software.
3029 Ensure WAL files aren't repeatedly archived on Windows (Heikki)
3033 This is another symptom that could happen if some other process
3034 interfered with deletion of a no-longer-needed file.
3040 Fix PAM password processing to be more robust (Tom)
3044 The previous code is known to fail with the combination of the Linux
3045 <literal>pam_krb5</> PAM module with Microsoft Active Directory as the
3046 domain controller. It might have problems elsewhere too, since it was
3047 making unjustified assumptions about what arguments the PAM stack would
3054 Raise the maximum authentication token (Kerberos ticket) size in GSSAPI
3055 and SSPI authentication methods (Ian Turner)
3059 While the old 2000-byte limit was more than enough for Unix Kerberos
3060 implementations, tickets issued by Windows Domain Controllers can be
3067 Re-enable collection of access statistics for sequences (Akira Kurosawa)
3071 This used to work but was broken in 8.3.
3077 Fix processing of ownership dependencies during <literal>CREATE OR
3078 REPLACE FUNCTION</> (Tom)
3084 Fix incorrect handling of <literal>WHERE</>
3085 <replaceable>x</>=<replaceable>x</> conditions (Tom)
3089 In some cases these could get ignored as redundant, but they aren't
3090 — they're equivalent to <replaceable>x</> <literal>IS NOT NULL</>.
3096 Make text search parser accept underscores in XML attributes (Peter)
3102 Fix encoding handling in <type>xml</> binary input (Heikki)
3106 If the XML header doesn't specify an encoding, we now assume UTF-8 by
3107 default; the previous handling was inconsistent.
3113 Fix bug with calling <literal>plperl</> from <literal>plperlu</> or vice
3118 An error exit from the inner function could result in crashes due to
3119 failure to re-select the correct Perl interpreter for the outer function.
3125 Fix session-lifespan memory leak when a PL/Perl function is redefined
3132 Ensure that Perl arrays are properly converted to
3133 <productname>PostgreSQL</> arrays when returned by a set-returning
3134 PL/Perl function (Andrew Dunstan, Abhijit Menon-Sen)
3138 This worked correctly already for non-set-returning functions.
3144 Fix rare crash in exception processing in PL/Python (Peter)
3150 In <filename>contrib/pg_standby</>, disable triggering failover with a
3151 signal on Windows (Fujii Masao)
3155 This never did anything useful, because Windows doesn't have Unix-style
3156 signals, but recent changes made it actually crash.
3162 Ensure <application>psql</>'s flex module is compiled with the correct
3163 system header definitions (Tom)
3167 This fixes build failures on platforms where
3168 <literal>--enable-largefile</> causes incompatible changes in the
3175 Make the postmaster ignore any <literal>application_name</> parameter in
3176 connection request packets, to improve compatibility with future libpq
3183 Update the timezone abbreviation files to match current reality (Joachim
3188 This includes adding <literal>IDT</> and <literal>SGT</> to the default
3189 timezone abbreviation set.
3195 Update time zone data files to <application>tzdata</> release 2009s
3196 for DST law changes in Antarctica, Argentina, Bangladesh, Fiji,
3197 Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical
3198 corrections for Hong Kong.
3207 <sect1 id="release-8-3-8">
3208 <title>Release 8.3.8</title>
3211 <title>Release Date</title>
3212 <simpara>2009-09-09</simpara>
3216 This release contains a variety of fixes from 8.3.7.
3217 For information about new features in the 8.3 major release, see
3218 <xref linkend="release-8-3">.
3222 <title>Migration to Version 8.3.8</title>
3225 A dump/restore is not required for those running 8.3.X.
3226 However, if you have any hash indexes on <type>interval</> columns,
3227 you must <command>REINDEX</> them after updating to 8.3.8.
3228 Also, if you are upgrading from a version earlier than 8.3.5,
3229 see the release notes for 8.3.5.
3235 <title>Changes</title>
3241 Fix Windows shared-memory allocation code (Tsutomu Yamada, Magnus)
3245 This bug led to the often-reported <quote>could not reattach
3246 to shared memory</> error message.
3252 Force WAL segment switch during <function>pg_start_backup()</>
3257 This avoids corner cases that could render a base backup unusable.
3263 Disallow <command>RESET ROLE</> and <command>RESET SESSION
3264 AUTHORIZATION</> inside security-definer functions (Tom, Heikki)
3268 This covers a case that was missed in the previous patch that
3269 disallowed <command>SET ROLE</> and <command>SET SESSION
3270 AUTHORIZATION</> inside security-definer functions.
3277 Make <command>LOAD</> of an already-loaded loadable module
3282 Formerly, <command>LOAD</> would attempt to unload and re-load the
3283 module, but this is unsafe and not all that useful.
3289 Disallow empty passwords during LDAP authentication (Magnus)
3295 Fix handling of sub-SELECTs appearing in the arguments of
3296 an outer-level aggregate function (Tom)
3302 Fix bugs associated with fetching a whole-row value from the
3303 output of a Sort or Materialize plan node (Tom)
3309 Prevent <varname>synchronize_seqscans</> from changing the results of
3310 scrollable and <literal>WITH HOLD</> cursors (Tom)
3316 Revert planner change that disabled partial-index and constraint
3317 exclusion optimizations when there were more than 100 clauses in
3318 an AND or OR list (Tom)
3324 Fix hash calculation for data type <type>interval</> (Tom)
3328 This corrects wrong results for hash joins on interval values.
3329 It also changes the contents of hash indexes on interval columns.
3330 If you have any such indexes, you must <command>REINDEX</> them
3337 Treat <function>to_char(..., 'TH')</> as an uppercase ordinal
3338 suffix with <literal>'HH'</>/<literal>'HH12'</> (Heikki)
3342 It was previously handled as <literal>'th'</> (lowercase).
3348 Fix overflow for <literal>INTERVAL '<replaceable>x</> ms'</literal>
3349 when <replaceable>x</> is more than 2 million and integer
3350 datetimes are in use (Alex Hunsaker)
3356 Fix calculation of distance between a point and a line segment (Tom)
3360 This led to incorrect results from a number of geometric operators.
3366 Fix <type>money</> data type to work in locales where currency
3367 amounts have no fractional digits, e.g. Japan (Itagaki Takahiro)
3373 Fix <literal>LIKE</> for case where pattern contains <literal>%_</>
3380 Properly round datetime input like
3381 <literal>00:12:57.9999999999999999999999999999</> (Tom)
3387 Fix memory leaks in XML operations (Tom)
3393 Fix poor choice of page split point in GiST R-tree operator classes
3400 Ensure that a <quote>fast shutdown</> request will forcibly terminate
3401 open sessions, even if a <quote>smart shutdown</> was already in progress
3408 Avoid performance degradation in bulk inserts into GIN indexes
3409 when the input values are (nearly) in sorted order (Tom)
3415 Correctly enforce NOT NULL domain constraints in some contexts in
3422 Fix portability issues in plperl initialization (Andrew Dunstan)
3428 Fix <application>pg_ctl</> to not go into an infinite loop if
3429 <filename>postgresql.conf</> is empty (Jeff Davis)
3435 Improve <application>pg_dump</>'s efficiency when there are
3436 many large objects (Tamas Vincze)
3442 Use <literal>SIGUSR1</>, not <literal>SIGQUIT</>, as the
3443 failover signal for <application>pg_standby</> (Heikki)
3449 Make <application>pg_standby</>'s <literal>maxretries</> option
3450 behave as documented (Fujii Masao)
3456 Make <filename>contrib/hstore</> throw an error when a key or
3457 value is too long to fit in its data structure, rather than
3458 silently truncating it (Andrew Gierth)
3464 Fix <filename>contrib/xml2</>'s <function>xslt_process()</> to
3465 properly handle the maximum number of parameters (twenty) (Tom)
3471 Improve robustness of <application>libpq</>'s code to recover
3472 from errors during <command>COPY FROM STDIN</> (Tom)
3478 Avoid including conflicting readline and editline header files
3479 when both libraries are installed (Zdenek Kotala)
3485 Update time zone data files to <application>tzdata</> release 2009l
3486 for DST law changes in Bangladesh, Egypt, Jordan, Pakistan,
3487 Argentina/San_Luis, Cuba, Jordan (historical correction only),
3488 Mauritius, Morocco, Palestine, Syria, Tunisia.
3497 <sect1 id="release-8-3-7">
3498 <title>Release 8.3.7</title>
3501 <title>Release Date</title>
3502 <simpara>2009-03-16</simpara>
3506 This release contains a variety of fixes from 8.3.6.
3507 For information about new features in the 8.3 major release, see
3508 <xref linkend="release-8-3">.
3512 <title>Migration to Version 8.3.7</title>
3515 A dump/restore is not required for those running 8.3.X.
3516 However, if you are upgrading from a version earlier than 8.3.5,
3517 see the release notes for 8.3.5.
3523 <title>Changes</title>
3529 Prevent error recursion crashes when encoding conversion fails (Tom)
3533 This change extends fixes made in the last two minor releases for
3534 related failure scenarios. The previous fixes were narrowly tailored
3535 for the original problem reports, but we have now recognized that
3536 <emphasis>any</> error thrown by an encoding conversion function could
3537 potentially lead to infinite recursion while trying to report the
3538 error. The solution therefore is to disable translation and encoding
3539 conversion and report the plain-ASCII form of any error message,
3540 if we find we have gotten into a recursive error reporting situation.
3547 Disallow <command>CREATE CONVERSION</> with the wrong encodings
3548 for the specified conversion function (Heikki)
3552 This prevents one possible scenario for encoding conversion failure.
3553 The previous change is a backstop to guard against other kinds of
3554 failures in the same area.
3560 Fix <function>xpath()</> to not modify the path expression unless
3561 necessary, and to make a saner attempt at it when necessary (Andrew)
3565 The SQL standard suggests that <function>xpath</> should work on data
3566 that is a document fragment, but <application>libxml</> doesn't support
3567 that, and indeed it's not clear that this is sensible according to the
3568 XPath standard. <function>xpath</> attempted to work around this
3569 mismatch by modifying both the data and the path expression, but the
3570 modification was buggy and could cause valid searches to fail. Now,
3571 <function>xpath</> checks whether the data is in fact a well-formed
3572 document, and if so invokes <application>libxml</> with no change to the
3573 data or path expression. Otherwise, a different modification method
3574 that is somewhat less likely to fail is used.
3579 The new modification method is still not 100% satisfactory, and it
3580 seems likely that no real solution is possible. This patch should
3581 therefore be viewed as a band-aid to keep from breaking existing
3582 applications unnecessarily. It is likely that
3583 <productname>PostgreSQL</> 8.4 will simply reject use of
3584 <function>xpath</> on data that is not a well-formed document.
3591 Fix core dump when <function>to_char()</> is given format codes that
3592 are inappropriate for the type of the data argument (Tom)
3598 Fix possible failure in text search when C locale is used with
3599 a multi-byte encoding (Teodor)
3603 Crashes were possible on platforms where <type>wchar_t</> is narrower
3604 than <type>int</>; Windows in particular.
3610 Fix extreme inefficiency in text search parser's handling of an
3611 email-like string containing multiple <literal>@</> characters (Heikki)
3617 Fix planner problem with sub-<command>SELECT</> in the output list
3618 of a larger subquery (Tom)
3622 The known symptom of this bug is a <quote>failed to locate grouping
3623 columns</> error that is dependent on the datatype involved;
3624 but there could be other issues as well.
3630 Fix decompilation of <literal>CASE WHEN</> with an implicit coercion
3635 This mistake could lead to Assert failures in an Assert-enabled build,
3636 or an <quote>unexpected CASE WHEN clause</> error message in other
3637 cases, when trying to examine or dump a view.
3643 Fix possible misassignment of the owner of a TOAST table's rowtype (Tom)
3647 If <command>CLUSTER</> or a rewriting variant of <command>ALTER TABLE</>
3648 were executed by someone other than the table owner, the
3649 <structname>pg_type</> entry for the table's TOAST table would end up
3650 marked as owned by that someone. This caused no immediate problems,
3651 since the permissions on the TOAST rowtype aren't examined by any
3652 ordinary database operation. However, it could lead to unexpected
3653 failures if one later tried to drop the role that issued the command
3654 (in 8.1 or 8.2), or <quote>owner of data type appears to be invalid</>
3655 warnings from <application>pg_dump</> after having done so (in 8.3).
3661 Change <command>UNLISTEN</> to exit quickly if the current session has
3662 never executed any <command>LISTEN</> command (Tom)
3666 Most of the time this is not a particularly useful optimization, but
3667 since <command>DISCARD ALL</> invokes <command>UNLISTEN</>, the previous
3668 coding caused a substantial performance problem for applications that
3669 made heavy use of <command>DISCARD ALL</>.
3675 Fix PL/pgSQL to not treat <literal>INTO</> after <command>INSERT</> as
3676 an INTO-variables clause anywhere in the string, not only at the start;
3677 in particular, don't fail for <command>INSERT INTO</> within
3678 <command>CREATE RULE</> (Tom)
3684 Clean up PL/pgSQL error status variables fully at block exit
3685 (Ashesh Vashi and Dave Page)
3689 This is not a problem for PL/pgSQL itself, but the omission could cause
3690 the PL/pgSQL Debugger to crash while examining the state of a function.
3696 Retry failed calls to <function>CallNamedPipe()</> on Windows
3697 (Steve Marshall, Magnus)
3701 It appears that this function can sometimes fail transiently;
3702 we previously treated any failure as a hard error, which could
3703 confuse <command>LISTEN</>/<command>NOTIFY</> as well as other
3710 Add <literal>MUST</> (Mauritius Island Summer Time) to the default list
3711 of known timezone abbreviations (Xavier Bugaud)
3720 <sect1 id="release-8-3-6">
3721 <title>Release 8.3.6</title>
3724 <title>Release Date</title>
3725 <simpara>2009-02-02</simpara>
3729 This release contains a variety of fixes from 8.3.5.
3730 For information about new features in the 8.3 major release, see
3731 <xref linkend="release-8-3">.
3735 <title>Migration to Version 8.3.6</title>
3738 A dump/restore is not required for those running 8.3.X.
3739 However, if you are upgrading from a version earlier than 8.3.5,
3740 see the release notes for 8.3.5.
3746 <title>Changes</title>
3752 Make <command>DISCARD ALL</> release advisory locks, in addition
3753 to everything it already did (Tom)
3757 This was decided to be the most appropriate behavior. This could
3758 affect existing applications, however.
3764 Fix whole-index GiST scans to work correctly (Teodor)
3768 This error could cause rows to be lost if a table is clustered
3775 Fix crash of <literal>xmlconcat(NULL)</> (Peter)
3781 Fix possible crash in <literal>ispell</> dictionary if high-bit-set
3782 characters are used as flags (Teodor)
3786 This is known to be done by one widely available Norwegian dictionary,
3787 and the same condition may exist in others.
3793 Fix misordering of <application>pg_dump</> output for composite types
3798 The most likely problem was for user-defined operator classes to
3799 be dumped after indexes or views that needed them.
3805 Improve handling of URLs in <function>headline()</> function (Teodor)
3811 Improve handling of overlength headlines in <function>headline()</>
3818 Prevent possible Assert failure or misconversion if an encoding
3819 conversion is created with the wrong conversion function for the
3820 specified pair of encodings (Tom, Heikki)
3826 Fix possible Assert failure if a statement executed in PL/pgSQL is
3827 rewritten into another kind of statement, for example if an
3828 <command>INSERT</> is rewritten into an <command>UPDATE</> (Heikki)
3834 Ensure that a snapshot is available to datatype input functions (Tom)
3838 This primarily affects domains that are declared with <literal>CHECK</>
3839 constraints involving user-defined stable or immutable functions. Such
3840 functions typically fail if no snapshot has been set.
3846 Make it safer for SPI-using functions to be used within datatype I/O;
3847 in particular, to be used in domain check constraints (Tom)
3853 Avoid unnecessary locking of small tables in <command>VACUUM</>
3860 Fix a problem that sometimes kept <command>ALTER TABLE ENABLE/DISABLE
3861 RULE</> from being recognized by active sessions (Tom)
3867 Fix a problem that made <literal>UPDATE RETURNING tableoid</>
3868 return zero instead of the correct OID (Tom)
3874 Allow functions declared as taking <type>ANYARRAY</> to work on
3875 the <structname>pg_statistic</> columns of that type (Tom)
3879 This used to work, but was unintentionally broken in 8.3.
3885 Fix planner misestimation of selectivity when transitive equality
3886 is applied to an outer-join clause (Tom)
3890 This could result in bad plans for queries like
3891 <literal>... from a left join b on a.a1 = b.b1 where a.a1 = 42 ...</>
3897 Improve optimizer's handling of long <literal>IN</> lists (Tom)
3901 This change avoids wasting large amounts of time on such lists
3902 when constraint exclusion is enabled.
3908 Prevent synchronous scan during GIN index build (Tom)
3912 Because GIN is optimized for inserting tuples in increasing TID order,
3913 choosing to use a synchronous scan could slow the build by a factor of
3920 Ensure that the contents of a holdable cursor don't depend on the
3921 contents of TOAST tables (Tom)
3925 Previously, large field values in a cursor result might be represented
3926 as TOAST pointers, which would fail if the referenced table got dropped
3927 before the cursor is read, or if the large value is deleted and then
3928 vacuumed away. This cannot happen with an ordinary cursor,
3929 but it could with a cursor that is held past its creating transaction.
3935 Fix memory leak when a set-returning function is terminated without
3936 reading its whole result (Tom)
3942 Fix encoding conversion problems in XML functions when the database
3943 encoding isn't UTF-8 (Tom)
3949 Fix <filename>contrib/dblink</>'s
3950 <function>dblink_get_result(text,bool)</> function (Joe)
3956 Fix possible garbage output from <filename>contrib/sslinfo</> functions
3963 Fix incorrect behavior of <filename>contrib/tsearch2</> compatibility
3964 trigger when it's fired more than once in a command (Teodor)
3970 Fix possible mis-signaling in autovacuum (Heikki)
3976 Support running as a service on Windows 7 beta (Dave and Magnus)
3982 Fix <application>ecpg</>'s handling of varchar structs (Michael)
3988 Fix <application>configure</> script to properly report failure when
3989 unable to obtain linkage information for PL/Perl (Andrew)
3995 Make all documentation reference <literal>pgsql-bugs</> and/or
3996 <literal>pgsql-hackers</> as appropriate, instead of the
3997 now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</>
4004 Update time zone data files to <application>tzdata</> release 2009a (for
4005 Kathmandu and historical DST corrections in Switzerland, Cuba)
4014 <sect1 id="release-8-3-5">
4015 <title>Release 8.3.5</title>
4018 <title>Release Date</title>
4019 <simpara>2008-11-03</simpara>
4023 This release contains a variety of fixes from 8.3.4.
4024 For information about new features in the 8.3 major release, see
4025 <xref linkend="release-8-3">.
4029 <title>Migration to Version 8.3.5</title>
4032 A dump/restore is not required for those running 8.3.X.
4033 However, if you are upgrading from a version earlier than 8.3.1,
4034 see the release notes for 8.3.1. Also, if you were running a previous
4035 8.3.X release, it is recommended to <command>REINDEX</> all GiST
4036 indexes after the upgrade.
4042 <title>Changes</title>
4048 Fix GiST index corruption due to marking the wrong index entry
4049 <quote>dead</> after a deletion (Teodor)
4053 This would result in index searches failing to find rows they
4054 should have found. Corrupted indexes can be fixed with
4055 <command>REINDEX</>.
4061 Fix backend crash when the client encoding cannot represent a localized
4066 We have addressed similar issues before, but it would still fail if
4067 the <quote>character has no equivalent</> message itself couldn't
4068 be converted. The fix is to disable localization and send the plain
4069 ASCII error message when we detect such a situation.
4075 Fix possible crash in <type>bytea</>-to-XML mapping (Michael McMaster)
4081 Fix possible crash when deeply nested functions are invoked from
4088 Improve optimization of <replaceable>expression</> <literal>IN</>
4089 (<replaceable>expression-list</>) queries (Tom, per an idea from Robert
4094 Cases in which there are query variables on the right-hand side had been
4095 handled less efficiently in 8.2.x and 8.3.x than in prior versions.
4096 The fix restores 8.1 behavior for such cases.
4102 Fix mis-expansion of rule queries when a sub-<literal>SELECT</> appears
4103 in a function call in <literal>FROM</>, a multi-row <literal>VALUES</>
4104 list, or a <literal>RETURNING</> list (Tom)
4108 The usual symptom of this problem is an <quote>unrecognized node type</>
4115 Fix Assert failure during rescan of an <literal>IS NULL</>
4116 search of a GiST index (Teodor)
4122 Fix memory leak during rescan of a hashed aggregation plan (Neil)
4128 Ensure an error is reported when a newly-defined PL/pgSQL trigger
4129 function is invoked as a normal function (Tom)
4135 Force a checkpoint before <command>CREATE DATABASE</> starts to copy
4140 This prevents a possible failure if files had recently been deleted
4141 in the source database.
4147 Prevent possible collision of <structfield>relfilenode</> numbers
4148 when moving a table to another tablespace with <command>ALTER SET
4149 TABLESPACE</> (Heikki)
4153 The command tried to re-use the existing filename, instead of
4154 picking one that is known unused in the destination directory.
4160 Fix incorrect text search headline generation when single query
4161 item matches first word of text (Sushant Sinha)
4167 Fix improper display of fractional seconds in interval values when
4168 using a non-ISO datestyle in an <option>--enable-integer-datetimes</>
4175 Make <literal>ILIKE</> compare characters case-insensitively
4176 even when they're escaped (Andrew)
4182 Ensure <command>DISCARD</> is handled properly by statement logging (Tom)
4188 Fix incorrect logging of last-completed-transaction time during
4195 Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</>
4196 behave correctly when the passed tuple and tuple descriptor have
4197 different numbers of columns (Tom)
4201 This situation is normal when a table has had columns added or removed,
4202 but these two functions didn't handle it properly.
4203 The only likely consequence is an incorrect error indication.
4209 Mark <varname>SessionReplicationRole</> as <literal>PGDLLIMPORT</>
4210 so it can be used by <application>Slony</> on Windows (Magnus)
4216 Fix small memory leak when using <application>libpq</>'s
4217 <literal>gsslib</> parameter (Magnus)
4221 The space used by the parameter string was not freed at connection
4228 Ensure <application>libgssapi</> is linked into <application>libpq</>
4229 if needed (Markus Schaaf)
4235 Fix <application>ecpg</>'s parsing of <command>CREATE ROLE</> (Michael)
4241 Fix recent breakage of <literal>pg_ctl restart</> (Tom)
4247 Ensure <filename>pg_control</> is opened in binary mode
4252 <application>pg_controldata</> and <application>pg_resetxlog</>
4253 did this incorrectly, and so could fail on Windows.
4259 Update time zone data files to <application>tzdata</> release 2008i (for
4260 DST law changes in Argentina, Brazil, Mauritius, Syria)
4269 <sect1 id="release-8-3-4">
4270 <title>Release 8.3.4</title>
4273 <title>Release Date</title>
4274 <simpara>2008-09-22</simpara>
4278 This release contains a variety of fixes from 8.3.3.
4279 For information about new features in the 8.3 major release, see
4280 <xref linkend="release-8-3">.
4284 <title>Migration to Version 8.3.4</title>
4287 A dump/restore is not required for those running 8.3.X.
4288 However, if you are upgrading from a version earlier than 8.3.1,
4289 see the release notes for 8.3.1.
4295 <title>Changes</title>
4301 Fix bug in btree WAL recovery code (Heikki)
4305 Recovery failed if the WAL ended partway through a page split operation.
4311 Fix potential use of wrong cutoff XID for HOT page pruning (Alvaro)
4315 This error created a risk of corruption in system
4316 catalogs that are consulted by <command>VACUUM</>: dead tuple versions
4317 might be removed too soon. The impact of this on actual database
4318 operations would be minimal, since the system doesn't follow MVCC
4319 rules while examining catalogs, but it might result in transiently
4320 wrong output from <application>pg_dump</> or other client programs.
4326 Fix potential miscalculation of <structfield>datfrozenxid</> (Alvaro)
4330 This error may explain some recent reports of failure to remove old
4331 <structname>pg_clog</> data.
4337 Fix incorrect HOT updates after <structname>pg_class</> is reindexed
4342 Corruption of <structname>pg_class</> could occur if <literal>REINDEX
4343 TABLE pg_class</> was followed in the same session by an <literal>ALTER
4344 TABLE RENAME</> or <literal>ALTER TABLE SET SCHEMA</> command.
4350 Fix missed <quote>combo cid</> case (Karl Schnaitter)
4354 This error made rows incorrectly invisible to a transaction in which they
4355 had been deleted by multiple subtransactions that all aborted.
4361 Prevent autovacuum from crashing if the table it's currently
4362 checking is deleted at just the wrong time (Alvaro)
4368 Widen local lock counters from 32 to 64 bits (Tom)
4372 This responds to reports that the counters could overflow in
4373 sufficiently long transactions, leading to unexpected <quote>lock is
4374 already held</> errors.
4380 Fix possible duplicate output of tuples during a GiST index scan (Teodor)
4386 Regenerate foreign key checking queries from scratch when either
4387 table is modified (Tom)
4391 Previously, 8.3 would attempt to replan the query, but would work from
4392 previously generated query text. This led to failures if a
4393 table or column was renamed.
4399 Fix missed permissions checks when a view contains a simple
4400 <literal>UNION ALL</> construct (Heikki)
4404 Permissions for the referenced tables were checked properly, but not
4405 permissions for the view itself.
4411 Add checks in executor startup to ensure that the tuples produced by an
4412 <command>INSERT</> or <command>UPDATE</> will match the target table's
4413 current rowtype (Tom)
4417 This situation is believed to be impossible in 8.3, but it can happen in
4418 prior releases, so a check seems prudent.
4424 Fix possible repeated drops during <command>DROP OWNED</> (Tom)
4428 This would typically result in strange errors such as <quote>cache
4429 lookup failed for relation NNN</>.
4435 Fix several memory leaks in XML operations (Kris Jurka, Tom)
4441 Fix <function>xmlserialize()</> to raise error properly for
4442 unacceptable target data type (Tom)
4448 Fix a couple of places that mis-handled multibyte characters in text
4449 search configuration file parsing (Tom)
4453 Certain characters occurring in configuration files would always cause
4454 <quote>invalid byte sequence for encoding</> failures.
4460 Provide file name and line number location for all errors reported
4461 in text search configuration files (Tom)
4467 Fix <literal>AT TIME ZONE</> to first try to interpret its timezone
4468 argument as a timezone abbreviation, and only try it as a full timezone
4469 name if that fails, rather than the other way around as formerly (Tom)
4473 The timestamp input functions have always resolved ambiguous zone names
4474 in this order. Making <literal>AT TIME ZONE</> do so as well improves
4475 consistency, and fixes a compatibility bug introduced in 8.1:
4476 in ambiguous cases we now behave the same as 8.0 and before did,
4477 since in the older versions <literal>AT TIME ZONE</> accepted
4478 <emphasis>only</> abbreviations.
4484 Fix datetime input functions to correctly detect integer overflow when
4485 running on a 64-bit platform (Tom)
4491 Prevent integer overflows during units conversion when displaying a
4492 configuration parameter that has units (Tom)
4498 Improve performance of writing very long log messages to syslog (Tom)
4504 Allow spaces in the suffix part of an LDAP URL in
4505 <filename>pg_hba.conf</> (Tom)
4511 Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
4518 Fix planner bug that could improperly push down <literal>IS NULL</>
4519 tests below an outer join (Tom)
4523 This was triggered by occurrence of <literal>IS NULL</> tests for
4524 the same relation in all arms of an upper <literal>OR</> clause.
4530 Fix planner bug with nested sub-select expressions (Tom)
4534 If the outer sub-select has no direct dependency on the parent query,
4535 but the inner one does, the outer value might not get recalculated
4536 for new parent query rows.
4542 Fix planner to estimate that <literal>GROUP BY</> expressions yielding
4543 boolean results always result in two groups, regardless of the
4544 expressions' contents (Tom)
4548 This is very substantially more accurate than the regular <literal>GROUP
4549 BY</> estimate for certain boolean tests like <replaceable>col</>
4550 <literal>IS NULL</>.
4556 Fix PL/pgSQL to not fail when a <literal>FOR</> loop's target variable
4557 is a record containing composite-type fields (Tom)
4563 Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful
4564 about the encoding of data sent to or from Tcl (Tom)
4570 Improve performance of <function>PQescapeBytea()</> (Rudolf Leitgeb)
4576 On Windows, work around a Microsoft bug by preventing
4577 <application>libpq</> from trying to send more than 64kB per system call
4584 Fix <application>ecpg</> to handle variables properly in <command>SET</>
4591 Improve <application>pg_dump</> and <application>pg_restore</>'s
4592 error reporting after failure to send a SQL command (Tom)
4598 Fix <application>pg_ctl</> to properly preserve postmaster
4599 command-line arguments across a <literal>restart</> (Bruce)
4605 Fix erroneous WAL file cutoff point calculation in
4606 <application>pg_standby</> (Simon)
4612 Update time zone data files to <application>tzdata</> release 2008f (for
4613 DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco,
4614 Pakistan, Palestine, and Paraguay)
4623 <sect1 id="release-8-3-3">
4624 <title>Release 8.3.3</title>
4627 <title>Release Date</title>
4628 <simpara>2008-06-12</simpara>
4632 This release contains one serious and one minor bug fix over 8.3.2.
4633 For information about new features in the 8.3 major release, see
4634 <xref linkend="release-8-3">.
4638 <title>Migration to Version 8.3.3</title>
4641 A dump/restore is not required for those running 8.3.X.
4642 However, if you are upgrading from a version earlier than 8.3.1,
4643 see the release notes for 8.3.1.
4649 <title>Changes</title>
4655 Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom)
4659 Before this fix, a negative constant in a view or rule might be dumped
4660 as, say, <literal>-42::integer</>, which is subtly incorrect: it should
4661 be <literal>(-42)::integer</> due to operator precedence rules.
4662 Usually this would make little difference, but it could interact with
4663 another recent patch to cause
4664 <productname>PostgreSQL</> to reject what had been a valid
4665 <command>SELECT DISTINCT</> view query. Since this could result in
4666 <application>pg_dump</> output failing to reload, it is being treated
4667 as a high-priority fix. The only released versions in which dump
4668 output is actually incorrect are 8.3.1 and 8.2.7.
4674 Make <command>ALTER AGGREGATE ... OWNER TO</> update
4675 <structname>pg_shdepend</> (Tom)
4679 This oversight could lead to problems if the aggregate was later
4680 involved in a <command>DROP OWNED</> or <command>REASSIGN OWNED</>
4690 <sect1 id="release-8-3-2">
4691 <title>Release 8.3.2</title>
4694 <title>Release Date</title>
4695 <simpara>never released</simpara>
4699 This release contains a variety of fixes from 8.3.1.
4700 For information about new features in the 8.3 major release, see
4701 <xref linkend="release-8-3">.
4705 <title>Migration to Version 8.3.2</title>
4708 A dump/restore is not required for those running 8.3.X.
4709 However, if you are upgrading from a version earlier than 8.3.1,
4710 see the release notes for 8.3.1.
4716 <title>Changes</title>
4722 Fix <literal>ERRORDATA_STACK_SIZE exceeded</literal> crash that
4723 occurred on Windows when using UTF-8 database encoding and a different
4724 client encoding (Tom)
4730 Fix incorrect archive truncation point calculation for the
4731 <literal>%r</> macro in <varname>recovery_command</> parameters
4736 This could lead to data loss if a warm-standby script relied on
4737 <literal>%r</> to decide when to throw away WAL segment files.
4743 Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</> so that the new
4744 column is correctly checked to see if it's been initialized to all
4745 non-nulls (Brendan Jurd)
4749 Previous versions neglected to check this requirement at all.
4755 Fix <command>REASSIGN OWNED</> so that it works on procedural
4756 languages too (Alvaro)
4762 Fix problems with <command>SELECT FOR UPDATE/SHARE</> occurring as a
4763 subquery in a query with a non-<command>SELECT</> top-level operation
4770 Fix possible <command>CREATE TABLE</> failure when inheriting the
4771 <quote>same</> constraint from multiple parent relations that
4772 inherited that constraint from a common ancestor (Tom)
4778 Fix <function>pg_get_ruledef()</> to show the alias, if any, attached
4779 to the target table of an <command>UPDATE</> or <command>DELETE</>
4786 Restore the pre-8.3 behavior that an out-of-range block number in a
4787 TID being used in a TidScan plan results in silently not matching any
4792 8.3.0 and 8.3.1 threw an error instead.
4798 Fix GIN bug that could result in a <literal>too many LWLocks
4799 taken</literal> failure (Teodor)
4805 Fix broken GiST comparison function for <type>tsquery</> (Teodor)
4811 Fix <function>tsvector_update_trigger()</> and <function>ts_stat()</>
4812 to accept domains over the types they expect to work with (Tom)
4818 Fix failure to support enum data types as foreign keys (Tom)
4824 Avoid possible crash when decompressing corrupted data
4831 Fix race conditions between delayed unlinks and <command>DROP
4832 DATABASE</> (Heikki)
4836 In the worst case this could result in deleting a newly created table
4837 in a new database that happened to get the same OID as the
4838 recently-dropped one; but of course that is an extremely
4839 low-probability scenario.
4845 Repair two places where SIGTERM exit of a backend could leave corrupted
4846 state in shared memory (Tom)
4850 Neither case is very important if SIGTERM is used to shut down the
4851 whole database cluster together, but there was a problem if someone
4852 tried to SIGTERM individual backends.
4858 Fix possible crash due to incorrect plan generated for an
4859 <literal><replaceable>x</> IN (SELECT <replaceable>y</>
4860 FROM ...)</literal> clause when <replaceable>x</> and <replaceable>y</>
4861 have different data types; and make sure the behavior is semantically
4862 correct when the conversion from <replaceable>y</>'s type to
4863 <replaceable>x</>'s type is lossy (Tom)
4869 Fix oversight that prevented the planner from substituting known Param
4870 values as if they were constants (Tom)
4874 This mistake partially disabled optimization of unnamed
4875 extended-Query statements in 8.3.0 and 8.3.1: in particular the
4876 LIKE-to-indexscan optimization would never be applied if the LIKE
4877 pattern was passed as a parameter, and constraint exclusion
4878 depending on a parameter value didn't work either.
4884 Fix planner failure when an indexable <function>MIN</> or
4885 <function>MAX</> aggregate is used with <literal>DISTINCT</> or
4886 <literal>ORDER BY</> (Tom)
4892 Fix planner to ensure it never uses a <quote>physical tlist</> for a
4893 plan node that is feeding a Sort node (Tom)
4897 This led to the sort having to push around more data than it really
4898 needed to, since unused column values were included in the sorted
4905 Avoid unnecessary copying of query strings (Tom)
4909 This fixes a performance problem introduced in 8.3.0 when a very large
4910 number of commands are submitted as a single query string.
4916 Make <function>TransactionIdIsCurrentTransactionId()</> use binary
4917 search instead of linear search when checking child-transaction XIDs
4922 This fixes some cases in which 8.3.0 was significantly
4923 slower than earlier releases.
4929 Fix conversions between ISO-8859-5 and other encodings to handle
4930 Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with
4931 two dots) (Sergey Burladyan)
4937 Fix several datatype input functions, notably <function>array_in()</>,
4938 that were allowing unused bytes in their results to contain
4939 uninitialized, unpredictable values (Tom)
4943 This could lead to failures in which two apparently identical literal
4944 values were not seen as equal, resulting in the parser complaining
4945 about unmatched <literal>ORDER BY</> and <literal>DISTINCT</>
4952 Fix a corner case in regular-expression substring matching
4953 (<literal>substring(<replaceable>string</> from
4954 <replaceable>pattern</>)</literal>) (Tom)
4958 The problem occurs when there is a match to the pattern overall but
4959 the user has specified a parenthesized subexpression and that
4960 subexpression hasn't got a match. An example is
4961 <literal>substring('foo' from 'foo(bar)?')</>.
4962 This should return NULL, since <literal>(bar)</> isn't matched, but
4963 it was mistakenly returning the whole-pattern match instead (ie,
4970 Prevent cancellation of an auto-vacuum that was launched to prevent
4971 XID wraparound (Alvaro)
4977 Improve <command>ANALYZE</>'s handling of in-doubt tuples (those
4978 inserted or deleted by a not-yet-committed transaction) so that the
4979 counts it reports to the stats collector are more likely to be correct
4986 Fix <application>initdb</> to reject a relative path for its
4987 <literal>--xlogdir</> (<literal>-X</>) option (Tom)
4993 Make <application>psql</> print tab characters as an appropriate
4994 number of spaces, rather than <literal>\x09</literal> as was done in
4995 8.3.0 and 8.3.1 (Bruce)
5001 Update time zone data files to <application>tzdata</> release 2008c (for
5002 DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, and
5009 Add <function>ECPGget_PGconn()</> function to
5010 <application>ecpglib</> (Michael)
5016 Fix incorrect result from <application>ecpg</>'s
5017 <function>PGTYPEStimestamp_sub()</> function (Michael)
5023 Fix handling of continuation line markers in <application>ecpg</>
5030 Fix possible crashes in <filename>contrib/cube</> functions (Tom)
5036 Fix core dump in <filename>contrib/xml2</>'s
5037 <function>xpath_table()</> function when the input query returns a
5044 Fix <filename>contrib/xml2</>'s makefile to not override
5045 <literal>CFLAGS</>, and make it auto-configure properly for
5046 <application>libxslt</> present or not (Tom)
5055 <sect1 id="release-8-3-1">
5056 <title>Release 8.3.1</title>
5059 <title>Release Date</title>
5060 <simpara>2008-03-17</simpara>
5064 This release contains a variety of fixes from 8.3.0.
5065 For information about new features in the 8.3 major release, see
5066 <xref linkend="release-8-3">.
5070 <title>Migration to Version 8.3.1</title>
5073 A dump/restore is not required for those running 8.3.X.
5074 However, you might need to <command>REINDEX</> indexes on textual
5075 columns after updating, if you are affected by the Windows locale
5076 issue described below.
5082 <title>Changes</title>
5088 Fix character string comparison for Windows locales that consider
5089 different character combinations as equal (Tom)
5093 This fix applies only on Windows and only when using UTF-8
5094 database encoding. The same fix was made for all other cases
5095 over two years ago, but Windows with UTF-8 uses a separate code
5096 path that was not updated. If you are using a locale that
5097 considers some non-identical strings as equal, you may need to
5098 <command>REINDEX</> to fix existing indexes on textual columns.
5104 Repair corner-case bugs in <command>VACUUM FULL</> (Tom)
5108 A potential deadlock between concurrent <command>VACUUM FULL</>
5109 operations on different system catalogs was introduced in 8.2.
5110 This has now been corrected. 8.3 made this worse because the
5111 deadlock could occur within a critical code section, making it
5112 a PANIC rather than just ERROR condition.
5116 Also, a <command>VACUUM FULL</> that failed partway through
5117 vacuuming a system catalog could result in cache corruption in
5118 concurrent database sessions.
5122 Another <command>VACUUM FULL</> bug introduced in 8.3 could
5123 result in a crash or out-of-memory report when dealing with
5124 pages containing no live tuples.
5130 Fix misbehavior of foreign key checks involving <type>character</>
5131 or <type>bit</> columns (Tom)
5135 If the referencing column were of a different but compatible type
5136 (for instance <type>varchar</>), the constraint was enforced incorrectly.
5142 Avoid needless deadlock failures in no-op foreign-key checks (Stephan
5149 Fix possible core dump when re-planning a prepared query (Tom)
5153 This bug affected only protocol-level prepare operations, not
5154 SQL <command>PREPARE</>, and so tended to be seen only with
5155 JDBC, DBI, and other client-side drivers that use prepared
5162 Fix possible failure when re-planning a query that calls an SPI-using
5169 Fix failure in row-wise comparisons involving columns of different
5176 Fix longstanding <command>LISTEN</>/<command>NOTIFY</>
5177 race condition (Tom)
5181 In rare cases a session that had just executed a
5182 <command>LISTEN</> might not get a notification, even though
5183 one would be expected because the concurrent transaction executing
5184 <command>NOTIFY</> was observed to commit later.
5188 A side effect of the fix is that a transaction that has executed
5189 a not-yet-committed <command>LISTEN</> command will not see any
5190 row in <structname>pg_listener</> for the <command>LISTEN</>,
5191 should it choose to look; formerly it would have. This behavior
5192 was never documented one way or the other, but it is possible that
5193 some applications depend on the old behavior.
5199 Disallow <command>LISTEN</> and <command>UNLISTEN</> within a
5200 prepared transaction (Tom)
5204 This was formerly allowed but trying to do it had various unpleasant
5205 consequences, notably that the originating backend could not exit
5206 as long as an <command>UNLISTEN</> remained uncommitted.
5212 Disallow dropping a temporary table within a
5213 prepared transaction (Heikki)
5217 This was correctly disallowed by 8.1, but the check was inadvertently
5218 broken in 8.2 and 8.3.
5224 Fix rare crash when an error occurs during a query using a hash index
5231 Fix incorrect comparison of <type>tsquery</> values (Teodor)
5237 Fix incorrect behavior of <literal>LIKE</> with non-ASCII characters
5238 in single-byte encodings (Rolf Jentsch)
5244 Disable <function>xmlvalidate</> (Tom)
5248 This function should have been removed before 8.3 release, but
5249 was inadvertently left in the source code. It poses a small
5250 security risk since unprivileged users could use it to read the
5251 first few characters of any file accessible to the server.
5257 Fix memory leaks in certain usages of set-returning functions (Neil)
5263 Make <function>encode(<replaceable>bytea</>, 'escape')</> convert all
5264 high-bit-set byte values into <literal>\</><replaceable>nnn</> octal
5265 escape sequences (Tom)
5269 This is necessary to avoid encoding problems when the database
5270 encoding is multi-byte. This change could pose compatibility issues
5271 for applications that are expecting specific results from
5272 <function>encode</>.
5278 Fix input of datetime values for February 29 in years BC (Tom)
5282 The former coding was mistaken about which years were leap years.
5288 Fix <quote>unrecognized node type</> error in some variants of
5289 <command>ALTER OWNER</> (Tom)
5295 Avoid tablespace permissions errors in <command>CREATE TABLE LIKE
5296 INCLUDING INDEXES</> (Tom)
5302 Ensure <structname>pg_stat_activity</>.<structfield>waiting</> flag
5303 is cleared when a lock wait is aborted (Tom)
5309 Fix handling of process permissions on Windows Vista (Dave, Magnus)
5313 In particular, this fix allows starting the server as the Administrator
5320 Update time zone data files to <application>tzdata</> release 2008a
5321 (in particular, recent Chile changes); adjust timezone abbreviation
5322 <literal>VET</> (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom)
5328 Fix <application>ecpg</> problems with arrays (Michael)
5334 Fix <application>pg_ctl</> to correctly extract the postmaster's port
5335 number from command-line options (Itagaki Takahiro, Tom)
5339 Previously, <literal>pg_ctl start -w</> could try to contact the
5340 postmaster on the wrong port, leading to bogus reports of startup
5347 Use <option>-fwrapv</> to defend against possible misoptimization
5348 in recent <application>gcc</> versions (Tom)
5352 This is known to be necessary when building <productname>PostgreSQL</>
5353 with <application>gcc</> 4.3 or later.
5359 Enable building <filename>contrib/uuid-ossp</> with MSVC (Hiroshi Saito)
5368 <sect1 id="release-8-3">
5369 <title>Release 8.3</title>
5372 <title>Release Date</title>
5373 <simpara>2008-02-04</simpara>
5377 <title>Overview</title>
5380 With significant new functionality and performance enhancements,
5381 this release represents a major leap forward for
5382 <productname>PostgreSQL</>. This was made possible by a growing
5383 community that has dramatically accelerated the pace of
5384 development. This release adds the following major features:
5391 Full text search is integrated into the core database system
5397 Support for the SQL/XML standard, including new operators and an
5398 <type>XML</type> data type
5404 Enumerated data types (<type>ENUM</type>)
5410 Arrays of composite types
5416 Universally Unique Identifier (<type>UUID</>) data type
5422 Add control over whether <literal>NULL</>s sort first or last
5434 Server configuration parameters can now be set on a per-function
5441 User-defined types can now have type modifiers
5447 Automatically re-plan cached queries when table
5448 definitions change or statistics are updated
5454 Numerous improvements in logging and statistics collection
5460 Support Security Service Provider Interface (<acronym>SSPI</>) for
5461 authentication on Windows
5467 Support multiple concurrent autovacuum processes, and other
5468 autovacuum improvements
5474 Allow the whole <productname>PostgreSQL</> distribution to be compiled
5475 with <productname>Microsoft Visual C++</>
5482 Major performance improvements are listed below. Most of
5483 these enhancements are automatic and do not require user changes or
5491 Asynchronous commit delays writes to WAL during transaction commit
5497 Checkpoint writes can be spread over a longer time period to smooth
5498 the I/O spike during each checkpoint
5504 Heap-Only Tuples (<acronym>HOT</>) accelerate space reuse for
5505 most <command>UPDATE</>s and <command>DELETE</>s
5511 Just-in-time background writer strategy improves disk write
5518 Using non-persistent transaction IDs for read-only transactions
5519 reduces overhead and <command>VACUUM</> requirements
5525 Per-field and per-row storage overhead has been reduced
5531 Large sequential scans no longer force out frequently used
5538 Concurrent large sequential scans can now share disk reads
5544 <literal>ORDER BY ... LIMIT</> can be done without sorting
5551 The above items are explained in more detail in the sections below.
5557 <title>Migration to Version 8.3</title>
5560 A dump/restore using <application>pg_dump</application> is
5561 required for those wishing to migrate data from any previous
5566 Observe the following incompatibilities:
5570 <title>General</title>
5575 Non-character data types are no longer automatically cast to
5576 <type>TEXT</> (Peter, Tom)
5580 Previously, if a non-character value was supplied to an operator or
5581 function that requires <type>text</> input, it was automatically
5582 cast to <type>text</>, for most (though not all) built-in data types.
5583 This no longer happens: an explicit cast to <type>text</> is now
5584 required for all non-character-string types. For example, these
5585 expressions formerly worked:
5588 substr(current_date, 1, 4)
5592 but will now draw <quote>function does not exist</> and <quote>operator
5593 does not exist</> errors respectively. Use an explicit cast instead:
5596 substr(current_date::text, 1, 4)
5600 (Of course, you can use the more verbose <literal>CAST()</> syntax too.)
5601 The reason for the change is that these automatic casts too often caused
5602 surprising behavior. An example is that in previous releases, this
5603 expression was accepted but did not do what was expected:
5606 current_date < 2017-11-17
5609 This is actually comparing a date to an integer, which should be
5610 (and now is) rejected — but in the presence of automatic
5611 casts both sides were cast to <type>text</> and a textual comparison
5612 was done, because the <literal>text < text</> operator was able
5613 to match the expression when no other <literal><</> operator could.
5617 Types <type>char(<replaceable>n</>)</type> and
5618 <type>varchar(<replaceable>n</>)</type> still cast to <type>text</>
5619 automatically. Also, automatic casting to <type>text</> still works for
5620 inputs to the concatenation (<literal>||</>) operator, so long as least
5621 one input is a character-string type.
5627 Full text search features from <filename>contrib/tsearch2</> have
5628 been moved into the core server, with some minor syntax changes
5632 <filename>contrib/tsearch2</> now contains a compatibility
5639 <literal>ARRAY(SELECT ...)</literal>, where the <command>SELECT</>
5640 returns no rows, now returns an empty array, rather than NULL
5647 The array type name for a base data type is no longer always the base
5648 type's name with an underscore prefix
5652 The old naming convention is still honored when possible, but
5653 application code should no longer depend on it. Instead
5654 use the new <literal>pg_type.typarray</literal> column to
5655 identify the array data type associated with a given type.
5661 <literal>ORDER BY ... USING</> <replaceable>operator</> must now
5662 use a less-than or greater-than <replaceable>operator</> that is
5663 defined in a btree operator class
5667 This restriction was added to prevent inconsistent results.
5673 <command>SET LOCAL</command> changes now persist until
5674 the end of the outermost transaction, unless rolled back (Tom)
5678 Previously <command>SET LOCAL</command>'s effects were lost
5679 after subtransaction commit (<command>RELEASE SAVEPOINT</>
5680 or exit from a PL/pgSQL exception block).
5686 Commands rejected in transaction blocks are now also rejected in
5687 multiple-statement query strings (Tom)
5691 For example, <literal>"BEGIN; DROP DATABASE; COMMIT"</> will now be
5692 rejected even if submitted as a single query message.
5698 <command>ROLLBACK</> outside a transaction block now
5699 issues <literal>NOTICE</> instead of <literal>WARNING</> (Bruce)
5705 Prevent <command>NOTIFY</command>/<command>LISTEN</command>/<command>UNLISTEN</command>
5706 from accepting schema-qualified names (Bruce)
5710 Formerly, these commands accepted <literal>schema.relation</> but
5711 ignored the schema part, which was confusing.
5717 <command>ALTER SEQUENCE</> no longer affects the sequence's
5718 <function>currval()</> state (Tom)
5724 Foreign keys now must match indexable conditions for
5725 cross-data-type references (Tom)
5729 This improves semantic consistency and helps avoid
5730 performance problems.
5736 Restrict object size functions to users who have reasonable
5737 permissions to view such information (Tom)
5741 For example, <function>pg_database_size()</function> now requires
5742 <literal>CONNECT</> permission, which is granted to everyone by
5743 default. <function>pg_tablespace_size()</function> requires
5744 <literal>CREATE</> permission in the tablespace, or is allowed if
5745 the tablespace is the default tablespace for the database.
5751 Remove the undocumented <literal>!!=</> (not in) operator (Tom)
5755 <literal>NOT IN (SELECT ...)</literal> is the proper way to
5756 perform this operation.
5762 Internal hashing functions are now more uniformly-distributed (Tom)
5766 If application code was computing and storing hash values using
5767 internal <productname>PostgreSQL</> hashing functions, the hash
5768 values must be regenerated.
5774 C-code conventions for handling variable-length data values
5775 have changed (Greg Stark, Tom)
5779 The new <function>SET_VARSIZE()</> macro <emphasis>must</> be used
5780 to set the length of generated <type>varlena</> values. Also, it
5781 might be necessary to expand (<quote>de-TOAST</quote>) input values
5788 Continuous archiving no longer reports each successful archive
5789 operation to the server logs unless <literal>DEBUG</> level is used
5799 <title>Configuration Parameters</title>
5805 Numerous changes in administrative server parameters
5809 <varname>bgwriter_lru_percent</>,
5810 <varname>bgwriter_all_percent</>,
5811 <varname>bgwriter_all_maxpages</>,
5812 <varname>stats_start_collector</>, and
5813 <varname>stats_reset_on_server_start</> are removed.
5814 <varname>redirect_stderr</> is renamed to
5815 <varname>logging_collector</>.
5816 <varname>stats_command_string</> is renamed to
5817 <varname>track_activities</>.
5818 <varname>stats_block_level</> and <varname>stats_row_level</>
5819 are merged into <varname>track_counts</>.
5820 A new boolean configuration parameter, <varname>archive_mode</>,
5821 controls archiving. Autovacuum's default settings have changed.
5827 Remove <varname>stats_start_collector</varname> parameter (Tom)
5831 We now always start the collector process, unless <acronym>UDP</>
5832 socket creation fails.
5838 Remove <varname>stats_reset_on_server_start</varname> parameter (Tom)
5842 This was removed because <function>pg_stat_reset()</function>
5843 can be used for this purpose.
5849 Commenting out a parameter in <filename>postgresql.conf</> now
5850 causes it to revert to its default value (Joachim Wieland)
5854 Previously, commenting out an entry left the parameter's value unchanged
5855 until the next server restart.
5865 <title>Character Encodings</title>
5871 Add more checks for invalidly-encoded data (Andrew)
5875 This change plugs some holes that existed in literal backslash
5876 escape string processing and <command>COPY</command> escape
5877 processing. Now the de-escaped string is rechecked to see if the
5878 result created an invalid multi-byte character.
5884 Disallow database encodings that are inconsistent with the server's
5885 locale setting (Tom)
5889 On most platforms, <literal>C</> locale is the only locale that
5890 will work with any database encoding. Other locale settings imply
5891 a specific encoding and will misbehave if the database encoding
5892 is something different. (Typical symptoms include bogus textual
5893 sort order and wrong results from <function>upper()</> or
5894 <function>lower()</>.) The server now rejects attempts to create
5895 databases that have an incompatible encoding.
5901 Ensure that <function>chr()</function> cannot create
5902 invalidly-encoded values (Andrew)
5906 In UTF8-encoded databases the argument of <function>chr()</function> is
5907 now treated as a Unicode code point. In other multi-byte encodings
5908 <function>chr()</function>'s argument must designate a 7-bit ASCII
5909 character. Zero is no longer accepted.
5910 <function>ascii()</function> has been adjusted to match.
5916 Adjust <function>convert()</function> behavior to ensure encoding
5921 The two argument form of <function>convert()</function> has been
5922 removed. The three argument form now takes a <type>bytea</type>
5923 first argument and returns a <type>bytea</type>. To cover the
5924 loss of functionality, three new functions have been added:
5930 <function>convert_from(bytea, name)</function> returns
5931 <type>text</> — converts the first argument from the named
5932 encoding to the database encoding
5938 <function>convert_to(text, name)</function> returns
5939 <type>bytea</> — converts the first argument from the
5940 database encoding to the named encoding
5946 <function>length(bytea, name)</function> returns
5947 <type>integer</> — gives the length of the first
5948 argument in characters in the named encoding
5956 Remove <literal>convert(argument USING conversion_name)</literal>
5961 Its behavior did not match the SQL standard.
5967 Make JOHAB encoding client-only (Tatsuo)
5971 JOHAB is not safe as a server-side encoding.
5982 <title>Changes</title>
5985 Below you will find a detailed account of the
5986 changes between <productname>PostgreSQL</productname> 8.3 and
5987 the previous major release.
5991 <title>Performance</title>
5996 Asynchronous commit delays writes to WAL during transaction commit
6001 This feature dramatically increases performance for short data-modifying
6002 transactions. The disadvantage is that because disk writes are delayed,
6003 if the database or operating system crashes before data is written to
6004 the disk, committed data will be lost. This feature is useful for
6005 applications that can accept some data loss. Unlike turning off
6006 <varname>fsync</varname>, using asynchronous commit does not put
6007 database consistency at risk; the worst case is that after a crash the
6008 last few reportedly-committed transactions might not be committed after
6010 This feature is enabled by turning off <varname>synchronous_commit</>
6011 (which can be done per-session or per-transaction, if some transactions
6012 are critical and others are not).
6013 <varname>wal_writer_delay</> can be adjusted to control the maximum
6014 delay before transactions actually reach disk.
6020 Checkpoint writes can be spread over a longer time period to smooth
6021 the I/O spike during each checkpoint (Itagaki Takahiro and Heikki
6026 Previously all modified buffers were forced to disk as quickly as
6028 checkpoint, causing an I/O spike that decreased server performance.
6029 This new approach spreads out disk writes during checkpoints,
6030 reducing peak I/O usage. (User-requested and shutdown checkpoints
6031 are still written as quickly as possible.)
6037 Heap-Only Tuples (<acronym>HOT</>) accelerate space reuse for most
6038 <command>UPDATE</>s and <command>DELETE</>s (Pavan Deolasee, with
6039 ideas from many others)
6043 <command>UPDATE</>s and <command>DELETE</>s leave dead tuples
6044 behind, as do failed <command>INSERT</>s. Previously only
6045 <command>VACUUM</> could reclaim space taken by dead tuples. With
6046 <acronym>HOT</> dead tuple space can be automatically reclaimed at
6047 the time of <command>INSERT</> or <command>UPDATE</> if no changes
6048 are made to indexed columns. This allows for more consistent
6049 performance. Also, <acronym>HOT</> avoids adding duplicate index
6056 Just-in-time background writer strategy improves disk write
6057 efficiency (Greg Smith, Itagaki Takahiro)
6061 This greatly reduces the need for manual tuning of the background
6068 Per-field and per-row storage overhead have been reduced
6069 (Greg Stark, Heikki Linnakangas)
6073 Variable-length data types with data values less than 128 bytes long
6074 will see a storage decrease of 3 to 6 bytes. For example, two adjacent
6075 <type>char(1)</type> fields now use 4 bytes instead of 16. Row headers
6076 are also 4 bytes shorter than before.
6082 Using non-persistent transaction IDs for read-only transactions
6083 reduces overhead and <command>VACUUM</> requirements (Florian Pflug)
6087 Non-persistent transaction IDs do not increment the global
6088 transaction counter. Therefore, they reduce the load on
6089 <structname>pg_clog</> and increase the time between forced
6090 vacuums to prevent transaction ID wraparound.
6092 improvements were also made that should improve concurrency.
6098 Avoid incrementing the command counter after a read-only command (Tom)
6102 There was formerly a hard limit of 2<superscript>32</>
6103 (4 billion) commands per transaction. Now only commands that
6104 actually changed the database count, so while this limit still
6105 exists, it should be significantly less annoying.
6111 Create a dedicated <acronym>WAL</> writer process to off-load
6112 work from backends (Simon)
6118 Skip unnecessary WAL writes for <command>CLUSTER</command> and
6119 <command>COPY</command> (Simon)
6123 Unless WAL archiving is enabled, the system now avoids WAL writes
6124 for <command>CLUSTER</command> and just <function>fsync()</>s the
6125 table at the end of the command. It also does the same for
6126 <command>COPY</command> if the table was created in the same
6133 Large sequential scans no longer force out frequently used
6134 cached pages (Simon, Heikki, Tom)
6140 Concurrent large sequential scans can now share disk reads (Jeff Davis)
6144 This is accomplished by starting the new sequential scan in the
6145 middle of the table (where another sequential scan is already
6146 in-progress) and wrapping around to the beginning to finish. This
6147 can affect the order of returned rows in a query that does not
6148 specify <literal>ORDER BY</>. The <varname>synchronize_seqscans</>
6149 configuration parameter can be used to disable this if necessary.
6155 <literal>ORDER BY ... LIMIT</> can be done without sorting
6160 This is done by sequentially scanning the table and tracking just
6161 the <quote>top N</> candidate rows, rather than performing a
6162 full sort of the entire table. This is useful when there is no
6163 matching index and the <literal>LIMIT</> is not large.
6169 Put a rate limit on messages sent to the statistics
6170 collector by backends
6175 This reduces overhead for short transactions, but might sometimes
6176 increase the delay before statistics are tallied.
6182 Improve hash join performance for cases with many NULLs (Tom)
6188 Speed up operator lookup for cases with non-exact datatype matches (Tom)
6197 <title>Server</title>
6202 Autovacuum is now enabled by default (Alvaro)
6206 Several changes were made to eliminate disadvantages of having
6207 autovacuum enabled, thereby justifying the change in default.
6208 Several other autovacuum parameter defaults were also modified.
6214 Support multiple concurrent autovacuum processes (Alvaro, Itagaki
6219 This allows multiple vacuums to run concurrently. This prevents
6220 vacuuming of a large table from delaying vacuuming of smaller tables.
6226 Automatically re-plan cached queries when table
6227 definitions change or statistics are updated (Tom)
6231 Previously PL/pgSQL functions that referenced temporary tables
6232 would fail if the temporary table was dropped and recreated
6233 between function invocations, unless <literal>EXECUTE</> was
6234 used. This improvement fixes that problem and many related issues.
6240 Add a <varname>temp_tablespaces</varname> parameter to control
6241 the tablespaces for temporary tables and files (Jaime Casanova,
6242 Albert Cervera, Bernd Helmle)
6246 This parameter defines a list of tablespaces to be used. This
6247 enables spreading the I/O load across multiple tablespaces. A random
6248 tablespace is chosen each time a temporary object is created.
6249 Temporary files are no longer stored in per-database
6250 <filename>pgsql_tmp/</filename> directories but in per-tablespace
6257 Place temporary tables' TOAST tables in special schemas named
6258 <literal>pg_toast_temp_<replaceable>nnn</></literal> (Tom)
6262 This allows low-level code to recognize these tables as temporary,
6263 which enables various optimizations such as not WAL-logging changes
6264 and using local rather than shared buffers for access. This also
6265 fixes a bug wherein backends unexpectedly held open file references
6266 to temporary TOAST tables.
6272 Fix problem that a constant flow of new connection requests could
6273 indefinitely delay the postmaster from completing a shutdown or
6274 a crash restart (Tom)
6280 Guard against a very-low-probability data loss scenario by preventing
6281 re-use of a deleted table's relfilenode until after the next
6288 Fix <command>CREATE CONSTRAINT TRIGGER</>
6289 to convert old-style foreign key trigger definitions into regular
6290 foreign key constraints (Tom)
6294 This will ease porting of foreign key constraints carried forward from
6295 pre-7.3 databases, if they were never converted using
6296 <filename>contrib/adddepend</>.
6302 Fix <literal>DEFAULT NULL</> to override inherited defaults (Tom)
6306 <literal>DEFAULT NULL</> was formerly considered a noise phrase, but it
6307 should (and now does) override non-null defaults that would otherwise
6308 be inherited from a parent table or domain.
6314 Add new encodings EUC_JIS_2004 and SHIFT_JIS_2004 (Tatsuo)
6318 These new encodings can be converted to and from UTF-8.
6324 Change server startup log message from <quote>database system is
6325 ready</quote> to <quote>database system is ready to accept
6326 connections</quote>, and adjust its timing
6330 The message now appears only when the postmaster is really ready
6331 to accept connections.
6340 <title>Monitoring</title>
6345 Add <varname>log_autovacuum_min_duration</varname> parameter to
6346 support configurable logging of autovacuum activity (Simon, Alvaro)
6352 Add <varname>log_lock_waits</varname> parameter to log lock waiting
6359 Add <varname>log_temp_files</varname> parameter to log temporary
6360 file usage (Bill Moran)
6366 Add <varname>log_checkpoints</varname> parameter to improve logging
6367 of checkpoints (Greg Smith, Heikki)
6373 <varname>log_line_prefix</varname> now supports
6374 <literal>%s</literal> and <literal>%c</literal> escapes in all
6379 Previously these escapes worked only for user sessions, not for
6380 background database processes.
6386 Add <varname>log_restartpoints</varname> to control logging of
6387 point-in-time recovery restart points (Simon)
6393 Last transaction end time is now logged at end of recovery and at
6394 each logged restart point (Simon)
6400 Autovacuum now reports its activity start time in
6401 <literal>pg_stat_activity</literal> (Tom)
6407 Allow server log output in comma-separated value (CSV) format (Arul
6408 Shaji, Greg Smith, Andrew Dunstan)
6412 CSV-format log files can easily be loaded into a database table for
6413 subsequent analysis.
6419 Use PostgreSQL-supplied timezone support for formatting timestamps
6420 displayed in the server log (Tom)
6424 This avoids Windows-specific problems with localized time zone
6425 names that are in the wrong encoding. There is a new
6426 <varname>log_timezone</> parameter that controls the timezone
6427 used in log messages, independently of the client-visible
6428 <varname>timezone</> parameter.
6434 New system view <literal>pg_stat_bgwriter</literal> displays
6435 statistics about background writer activity (Magnus)
6441 Add new columns for database-wide tuple statistics to
6442 <literal>pg_stat_database</literal> (Magnus)
6448 Add an <literal>xact_start</literal> (transaction start time) column to
6449 <literal>pg_stat_activity</literal> (Neil)
6453 This makes it easier to identify long-running transactions.
6459 Add <literal>n_live_tuples</> and <literal>n_dead_tuples</> columns
6460 to <literal>pg_stat_all_tables</literal> and related views (Glen
6467 Merge <varname>stats_block_level</> and <varname>stats_row_level</>
6468 parameters into a single parameter <varname>track_counts</>, which
6469 controls all messages sent to the statistics collector process
6476 Rename <varname>stats_command_string</varname> parameter to
6477 <varname>track_activities</varname> (Tom)
6483 Fix statistical counting of live and dead tuples to recognize that
6484 committed and aborted transactions have different effects (Tom)
6493 <title>Authentication</title>
6498 Support Security Service Provider Interface (<acronym>SSPI</>) for
6499 authentication on Windows (Magnus)
6505 Support GSSAPI authentication (Henry Hotz, Magnus)
6509 This should be preferred to native Kerberos authentication because
6510 GSSAPI is an industry standard.
6516 Support a global SSL configuration file (Victor Wagner)
6522 Add <varname>ssl_ciphers</> parameter to control accepted SSL ciphers
6529 Add a Kerberos realm parameter, <varname>krb_realm</> (Magnus)
6538 <title>Write-Ahead Log (<acronym>WAL</>) and Continuous Archiving</title>
6543 Change the timestamps recorded in transaction WAL records from
6544 time_t to TimestampTz representation (Tom)
6548 This provides sub-second resolution in WAL, which can be useful for
6549 point-in-time recovery.
6555 Reduce WAL disk space needed by warm standby servers (Simon)
6559 This change allows a warm standby server to pass the name of the earliest
6560 still-needed WAL file to the recovery script, allowing automatic removal
6561 of no-longer-needed WAL files. This is done using <literal>%r</> in
6562 the <varname>restore_command</varname> parameter of
6563 <filename>recovery.conf</filename>.
6569 New boolean configuration parameter, <varname>archive_mode</>,
6570 controls archiving (Simon)
6574 Previously setting <varname>archive_command</> to an empty string
6575 turned off archiving. Now <varname>archive_mode</> turns archiving
6576 on and off, independently of <varname>archive_command</>. This is
6577 useful for stopping archiving temporarily.
6586 <title>Queries</title>
6591 Full text search is integrated into the core database
6592 system (Teodor, Oleg)
6596 Text search has been improved, moved into the core code, and is now
6597 installed by default. <filename>contrib/tsearch2</> now contains
6598 a compatibility interface.
6604 Add control over whether <literal>NULL</>s sort first or last (Teodor, Tom)
6608 The syntax is <literal>ORDER BY ... NULLS FIRST/LAST</>.
6614 Allow per-column ascending/descending (<literal>ASC</>/<literal>DESC</>)
6615 ordering options for indexes (Teodor, Tom)
6619 Previously a query using <literal>ORDER BY</> with mixed
6620 <literal>ASC</>/<literal>DESC</> specifiers could not fully use
6621 an index. Now an index can be fully used in such cases if the
6622 index was created with matching
6623 <literal>ASC</>/<literal>DESC</> specifications.
6624 <literal>NULL</> sort order within an index can be controlled, too.
6630 Allow <literal>col IS NULL</> to use an index (Teodor)
6636 Updatable cursors (Arul Shaji, Tom)
6640 This eliminates the need to reference a primary key to
6641 <command>UPDATE</> or <command>DELETE</> rows returned by a cursor.
6642 The syntax is <literal>UPDATE/DELETE WHERE CURRENT OF</>.
6648 Allow <literal>FOR UPDATE</literal> in cursors (Arul Shaji, Tom)
6654 Create a general mechanism that supports casts to and from the
6655 standard string types (<type>TEXT</type>, <type>VARCHAR</type>,
6656 <type>CHAR</type>) for <emphasis>every</emphasis> datatype, by
6657 invoking the datatype's I/O functions (Tom)
6661 Previously, such casts were available only for types that had
6662 specialized function(s) for the purpose.
6663 These new casts are assignment-only in the to-string direction,
6664 explicit-only in the other direction, and therefore should create no
6665 surprising behavior.
6671 Allow <literal>UNION</> and related constructs to return a domain
6672 type, when all inputs are of that domain type (Tom)
6676 Formerly, the output would be considered to be of the domain's base
6683 Allow limited hashing when using two different data types (Tom)
6687 This allows hash joins, hash indexes, hashed subplans, and hash
6688 aggregation to be used in situations involving cross-data-type
6689 comparisons, if the data types have compatible hash functions.
6690 Currently, cross-data-type hashing support exists for
6691 <type>smallint</type>/<type>integer</type>/<type>bigint</type>,
6692 and for <type>float4</type>/<type>float8</type>.
6698 Improve optimizer logic for detecting when variables are equal
6699 in a <literal>WHERE</> clause (Tom)
6703 This allows mergejoins to work with descending sort orders, and
6704 improves recognition of redundant sort columns.
6710 Improve performance when planning large inheritance trees in
6711 cases where most tables are excluded by constraints (Tom)
6720 <title>Object Manipulation</title>
6726 Arrays of composite types (David Fetter, Andrew, Tom)
6730 In addition to arrays of explicitly-declared composite types,
6731 arrays of the rowtypes of regular tables and views are now
6732 supported, except for rowtypes of system catalogs, sequences, and TOAST
6740 Server configuration parameters can now be set on a per-function
6745 For example, functions can now set their own
6746 <varname>search_path</> to prevent unexpected behavior if a
6747 different <varname>search_path</> exists at run-time. Security
6748 definer functions should set <varname>search_path</varname> to
6749 avoid security loopholes.
6755 <command>CREATE/ALTER FUNCTION</command> now supports
6756 <literal>COST</literal> and <literal>ROWS</literal> options (Tom)
6760 <literal>COST</literal> allows specification of the cost of a
6761 function call. <literal>ROWS</literal> allows specification of
6762 the average number or rows returned by a set-returning function.
6763 These values are used by the optimizer in choosing the best plan.
6769 Implement <command>CREATE TABLE LIKE ... INCLUDING
6770 INDEXES</command> (Trevor Hardcastle, Nikhil Sontakke, Neil)
6776 Allow <command>CREATE INDEX CONCURRENTLY</command> to ignore
6777 transactions in other databases (Simon)
6783 Add <command>ALTER VIEW ... RENAME TO</command> and <command>ALTER
6784 SEQUENCE ... RENAME TO</command> (David Fetter, Neil)
6788 Previously this could only be done via <command>ALTER TABLE ...
6789 RENAME TO</command>.
6795 Make <command>CREATE/DROP/RENAME DATABASE</> wait briefly for
6796 conflicting backends to exit before failing (Tom)
6800 This increases the likelihood that these commands will succeed.
6806 Allow triggers and rules to be deactivated in groups using a
6807 configuration parameter, for replication purposes (Jan)
6811 This allows replication systems to disable triggers and rewrite
6812 rules as a group without modifying the system catalogs directly.
6813 The behavior is controlled by <command>ALTER TABLE</> and a new
6814 parameter <varname>session_replication_role</varname>.
6820 User-defined types can now have type modifiers (Teodor, Tom)
6824 This allows a user-defined type to take a modifier, like
6825 <type>ssnum(7)</>. Previously only built-in
6826 data types could have modifiers.
6835 <title>Utility Commands</title>
6840 Non-superuser database owners now are able to add trusted procedural
6841 languages to their databases by default (Jeremy Drake)
6845 While this is reasonably safe, some administrators might wish to
6846 revoke the privilege. It is controlled by
6847 <structname>pg_pltemplate</>.<structfield>tmpldbacreate</>.
6853 Allow a session's current parameter setting to be used as the
6854 default for future sessions (Tom)
6858 This is done with <literal>SET ... FROM CURRENT</literal> in
6859 <command>CREATE/ALTER FUNCTION</command>, <command>ALTER
6860 DATABASE</command>, or <command>ALTER ROLE</command>.
6866 Implement new commands <command>DISCARD ALL</command>,
6867 <command>DISCARD PLANS</command>, <command>DISCARD
6868 TEMPORARY</command>, <command>CLOSE ALL</command>, and
6869 <command>DEALLOCATE ALL</command> (Marko Kreen, Neil)
6873 These commands simplify resetting a database session to its initial
6874 state, and are particularly useful for connection-pooling software.
6880 Make <command>CLUSTER</command> MVCC-safe (Heikki Linnakangas)
6884 Formerly, <command>CLUSTER</command> would discard all tuples
6885 that were committed dead, even if there were still transactions
6886 that should be able to see them under MVCC visibility rules.
6892 Add new <command>CLUSTER</command> syntax: <literal>CLUSTER
6893 <replaceable>table</> USING <replaceable>index</></literal>
6898 The old <command>CLUSTER</command> syntax is still supported, but
6899 the new form is considered more logical.
6905 Fix <command>EXPLAIN</command> so it can show complex plans
6906 more accurately (Tom)
6910 References to subplan outputs are now always shown correctly,
6911 instead of using <literal>?column<replaceable>N</>?</literal>
6912 for complicated cases.
6918 Limit the amount of information reported when a user is dropped
6923 Previously, dropping (or attempting to drop) a user who owned many
6924 objects could result in large <literal>NOTICE</literal> or
6925 <literal>ERROR</literal> messages listing all these objects; this
6926 caused problems for some client applications. The length of the
6927 message is now limited, although a full list is still sent to the
6937 <title>Data Types</title>
6942 Support for the SQL/XML standard, including new operators and an
6943 <type>XML</type> data type (Nikolay Samokhvalov, Pavel Stehule, Peter)
6949 Enumerated data types (<type>ENUM</type>) (Tom Dunstan)
6953 This feature provides convenient support for fields that have a
6954 small, fixed set of allowed values. An example of creating an
6955 <literal>ENUM</> type is
6956 <literal>CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy')</>.
6962 Universally Unique Identifier (<type>UUID</>) data type (Gevik
6967 This closely matches <acronym>RFC</> 4122.
6973 Widen the <type>MONEY</type> data type to 64 bits (D'Arcy Cain)
6977 This greatly increases the range of supported <type>MONEY</>
6984 Fix <type>float4</type>/<type>float8</type> to handle
6985 <literal>Infinity</> and <literal>NAN</> (Not A Number)
6986 consistently (Bruce)
6990 The code formerly was not consistent about distinguishing
6991 <literal>Infinity</> from overflow conditions.
6997 Allow leading and trailing whitespace during input of
6998 <type>boolean</type> values (Neil)
7004 Prevent <command>COPY</> from using digits and lowercase letters as
7014 <title>Functions</title>
7019 Add new regular expression functions
7020 <function>regexp_matches()</function>,
7021 <function>regexp_split_to_array()</function>, and
7022 <function>regexp_split_to_table()</function> (Jeremy Drake, Neil)
7026 These functions provide extraction of regular expression
7027 subexpressions and allow splitting a string using a POSIX regular
7034 Add <function>lo_truncate()</function> for large object truncation
7041 Implement <function>width_bucket()</function> for the <type>float8</>
7048 Add <function>pg_stat_clear_snapshot()</function> to discard
7049 statistics snapshots collected during the current transaction
7054 The first request for statistics in a transaction takes a statistics
7055 snapshot that does not change during the transaction. This function
7056 allows the snapshot to be discarded and a new snapshot loaded during
7057 the next statistics query. This is particularly useful for PL/pgSQL
7058 functions, which are confined to a single transaction.
7064 Add <literal>isodow</> option to <function>EXTRACT()</> and
7065 <function>date_part()</> (Bruce)
7069 This returns the day of the week, with Sunday as seven.
7070 (<literal>dow</> returns Sunday as zero.)
7076 Add <literal>ID</> (ISO day of week) and <literal>IDDD</> (ISO
7077 day of year) format codes for <function>to_char()</>,
7078 <function>to_date()</>, and <function>to_timestamp()</> (Brendan
7085 Make <function>to_timestamp()</> and <function>to_date()</>
7086 assume <literal>TM</literal> (trim) option for potentially
7087 variable-width fields (Bruce)
7091 This matches <productname>Oracle</>'s behavior.
7097 Fix off-by-one conversion error in
7098 <function>to_date()</function>/<function>to_timestamp()</function>
7099 <literal>D</> (non-ISO day of week) fields (Bruce)
7105 Make <function>setseed()</function> return void, rather than a
7106 useless integer value (Neil)
7112 Add a hash function for <type>NUMERIC</type> (Neil)
7116 This allows hash indexes and hash-based plans to be used with
7117 <type>NUMERIC</type> columns.
7123 Improve efficiency of
7124 <literal>LIKE</literal>/<literal>ILIKE</literal>, especially for
7125 multi-byte character sets like UTF-8 (Andrew, Itagaki Takahiro)
7131 Make <function>currtid()</function> functions require
7132 <literal>SELECT</literal> privileges on the target table (Tom)
7138 Add several <function>txid_*()</function> functions to query
7139 active transaction IDs (Jan)
7143 This is useful for various replication solutions.
7152 <title>PL/pgSQL Server-Side Language</title>
7157 Add scrollable cursor support, including directional control in
7158 <command>FETCH</command> (Pavel Stehule)
7164 Allow <literal>IN</literal> as an alternative to
7165 <literal>FROM</literal> in PL/pgSQL's <command>FETCH</command>
7166 statement, for consistency with the backend's
7167 <command>FETCH</command> command (Pavel Stehule)
7173 Add <command>MOVE</command> to PL/pgSQL (Magnus, Pavel Stehule,
7180 Implement <command>RETURN QUERY</command> (Pavel Stehule, Neil)
7184 This adds convenient syntax for PL/pgSQL set-returning functions
7185 that want to return the result of a query. <command>RETURN QUERY</>
7186 is easier and more efficient than a loop
7187 around <command>RETURN NEXT</command>.
7193 Allow function parameter names to be qualified with the
7194 function's name (Tom)
7198 For example, <literal>myfunc.myvar</>. This is particularly
7199 useful for specifying variables in a query where the variable
7200 name might match a column name.
7206 Make qualification of variables with block labels work properly (Tom)
7210 Formerly, outer-level block labels could unexpectedly interfere with
7211 recognition of inner-level record or row references.
7217 Tighten requirements for <literal>FOR</literal> loop
7218 <literal>STEP</> values (Tom)
7222 Prevent non-positive <literal>STEP</> values, and handle
7229 Improve accuracy when reporting syntax error locations (Tom)
7238 <title>Other Server-Side Languages</title>
7243 Allow type-name arguments to PL/Perl
7244 <function>spi_prepare()</function> to be data type aliases in
7245 addition to names found in <literal>pg_type</literal> (Andrew)
7251 Allow type-name arguments to PL/Python
7252 <function>plpy.prepare()</function> to be data type aliases in
7253 addition to names found in <literal>pg_type</literal> (Andrew)
7259 Allow type-name arguments to PL/Tcl <function>spi_prepare</> to
7260 be data type aliases in addition to names found in
7261 <literal>pg_type</literal> (Andrew)
7267 Enable PL/PythonU to compile on Python 2.5 (Marko Kreen)
7273 Support a true PL/Python boolean type in compatible Python versions
7274 (Python 2.3 and later) (Marko Kreen)
7280 Fix PL/Tcl problems with thread-enabled <filename>libtcl</> spawning
7281 multiple threads within the backend (Steve Marshall, Paul Bayer,
7286 This caused all sorts of unpleasantness.
7295 <title><link linkend="APP-PSQL"><application>psql</></link></title>
7300 List disabled triggers separately in <literal>\d</literal> output
7307 In <literal>\d</literal> patterns, always match <literal>$</literal>
7314 Show aggregate return types in <literal>\da</literal> output
7315 (Greg Sabino Mullane)
7321 Add the function's volatility status to the output of
7322 <literal>\df+</literal> (Neil)
7328 Add <literal>\prompt</literal> capability (Chad Wagner)
7334 Allow <literal>\pset</literal>, <literal>\t</literal>, and
7335 <literal>\x</literal> to specify <literal>on</> or <literal>off</>,
7336 rather than just toggling (Chad Wagner)
7342 Add <literal>\sleep</> capability (Jan)
7348 Enable <literal>\timing</> output for <literal>\copy</> (Andrew)
7354 Improve <literal>\timing</literal> resolution on Windows
7361 Flush <literal>\o</> output after each backslash command (Tom)
7367 Correctly detect and report errors while reading a <literal>-f</>
7374 Remove <literal>-u</> option (this option has long been deprecated)
7384 <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
7389 Add <literal>--tablespaces-only</> and <literal>--roles-only</>
7390 options to <application>pg_dumpall</application> (Dave Page)
7396 Add an output file option to
7397 <application>pg_dumpall</application> (Dave Page)
7401 This is primarily useful on Windows, where output redirection of
7402 child <application>pg_dump</application> processes does not work.
7408 Allow <application>pg_dumpall</> to accept an initial-connection
7409 database name rather than the default
7410 <literal>template1</literal> (Dave Page)
7416 In <literal>-n</> and <literal>-t</> switches, always match
7417 <literal>$</literal> literally (Tom)
7423 Improve performance when a database has thousands of objects (Tom)
7429 Remove <literal>-u</> option (this option has long been deprecated)
7439 <title>Other Client Applications</title>
7444 In <application>initdb</>, allow the location of the
7445 <filename>pg_xlog</filename> directory to be specified
7446 (Euler Taveira de Oliveira)
7452 Enable server core dump generation in <application>pg_regress</>
7453 on supported operating systems (Andrew)
7459 Add a <literal>-t</> (timeout) parameter to <application>pg_ctl</>
7464 This controls how long <application>pg_ctl</> will wait when waiting
7465 for server startup or shutdown. Formerly the timeout was hard-wired
7472 Add a <application>pg_ctl</> option to control generation
7473 of server core dumps (Andrew)
7479 Allow Control-C to cancel <application>clusterdb</>,
7480 <application>reindexdb</>, and <application>vacuumdb</> (Itagaki
7487 Suppress command tag output for <application>createdb</>,
7488 <application>createuser</>, <application>dropdb</>, and
7489 <application>dropuser</> (Peter)
7493 The <literal>--quiet</> option is ignored and will be removed in 8.4.
7494 Progress messages when acting on all databases now go to stdout
7495 instead of stderr because they are not actually errors.
7504 <title><link linkend="libpq"><application>libpq</></link></title>
7509 Interpret the <literal>dbName</> parameter of
7510 <function>PQsetdbLogin()</> as a <literal>conninfo</> string if
7511 it contains an equals sign (Andrew)
7515 This allows use of <literal>conninfo</> strings in client
7516 programs that still use <literal>PQsetdbLogin()</>.
7522 Support a global <acronym>SSL</> configuration file (Victor
7529 Add environment variable <varname>PGSSLKEY</> to control
7530 <acronym>SSL</> hardware keys (Victor Wagner)
7536 Add <function>lo_truncate()</function> for large object
7537 truncation (Kris Jurka)
7543 Add <function>PQconnectionNeedsPassword()</function> that returns
7544 true if the server required a password but none was supplied
7549 If this returns true after a failed connection attempt, a client
7550 application should prompt the user for a password. In the past
7551 applications have had to check for a specific error message string to
7552 decide whether a password is needed; that approach is now
7559 Add <function>PQconnectionUsedPassword()</function> that returns
7560 true if the supplied password was actually used
7565 This is useful in some security contexts where it is important
7566 to know whether a user-supplied password is actually valid.
7575 <title><link linkend="ecpg"><application>ecpg</></link></title>
7580 Use V3 frontend/backend protocol (Michael)
7584 This adds support for server-side prepared statements.
7590 Use native threads, instead of pthreads, on Windows (Magnus)
7596 Improve thread-safety of ecpglib (Itagaki Takahiro)
7602 Make the ecpg libraries export only necessary API symbols (Michael)
7611 <title><application>Windows</> Port</title>
7616 Allow the whole <productname>PostgreSQL</> distribution to be compiled
7617 with <productname>Microsoft Visual C++</> (Magnus and others)
7621 This allows Windows-based developers to use familiar development
7622 and debugging tools.
7623 Windows executables made with Visual C++ might also have better
7624 stability and performance than those made with other tool sets.
7625 The client-only Visual C++ build scripts have been removed.
7631 Drastically reduce postmaster's memory usage when it has many child
7638 Allow regression tests to be started by an administrative
7645 Add native shared memory implementation (Magnus)
7654 <title>Server Programming Interface (<acronym>SPI</>)</title>
7659 Add cursor-related functionality in SPI (Pavel Stehule)
7663 Allow access to the cursor-related planning options, and add
7664 <command>FETCH</>/<command>MOVE</> routines.
7670 Allow execution of cursor commands through
7671 <function>SPI_execute</function> (Tom)
7675 The macro <literal>SPI_ERROR_CURSOR</> still exists but will
7682 SPI plan pointers are now declared as <literal>SPIPlanPtr</> instead of
7683 <literal>void *</> (Tom)
7687 This does not break application code, but switching is
7688 recommended to help catch simple programming mistakes.
7697 <title>Build Options</title>
7702 Add <application>configure</> option <literal>--enable-profiling</>
7703 to enable code profiling (works only with <application>gcc</>)
7704 (Korry Douglas and Nikhil Sontakke)
7710 Add <application>configure</> option <literal>--with-system-tzdata</>
7711 to use the operating system's time zone database (Peter)
7717 Fix <acronym>PGXS</> so extensions can be built against PostgreSQL
7718 installations whose <application>pg_config</> program does not
7719 appear first in the <varname>PATH</> (Tom)
7725 Support <command>gmake draft</command> when building the
7726 <acronym>SGML</> documentation (Bruce)
7730 Unless <literal>draft</> is used, the documentation build will
7731 now be repeated if necessary to ensure the index is up-to-date.
7740 <title>Source Code</title>
7745 Rename macro <literal>DLLIMPORT</> to <literal>PGDLLIMPORT</> to
7746 avoid conflicting with third party includes (like Tcl) that
7747 define <literal>DLLIMPORT</> (Magnus)
7753 Create <quote>operator families</quote> to improve planning of
7754 queries involving cross-data-type comparisons (Tom)
7760 Update GIN <function>extractQuery()</> API to allow signalling
7761 that nothing can satisfy the query (Teodor)
7767 Move <literal>NAMEDATALEN</> definition from
7768 <filename>postgres_ext.h</> to <filename>pg_config_manual.h</>
7775 Provide <function>strlcpy()</function> and
7776 <function>strlcat()</function> on all platforms, and replace
7777 error-prone uses of <function>strncpy()</function>,
7778 <function>strncat()</function>, etc (Peter)
7784 Create hooks to let an external plugin monitor (or even replace) the
7785 planner and create plans for hypothetical situations (Gurjeet
7792 Create a function variable <literal>join_search_hook</> to let plugins
7793 override the join search order portion of the planner (Julius
7800 Add <function>tas()</> support for Renesas' M32R processor
7807 <function>quote_identifier()</function> and
7808 <application>pg_dump</application> no longer quote keywords that are
7809 unreserved according to the grammar (Tom)
7815 Change the on-disk representation of the <type>NUMERIC</type>
7816 data type so that the <structfield>sign_dscale</> word comes
7817 before the weight (Tom)
7823 Use <acronym>SYSV</> semaphores rather than POSIX on Darwin
7824 >= 6.0, i.e., OS X 10.2 and up (Chris Marcellino)
7830 Add <link linkend="acronyms">acronym</link> and <link
7831 linkend="creating-cluster-nfs">NFS</link> documentation
7838 "Postgres" is now documented as an accepted alias for
7839 "PostgreSQL" (Peter)
7845 Add documentation about preventing database server spoofing when
7846 the server is down (Bruce)
7855 <title>Contrib</title>
7860 Move <filename>contrib</> <filename>README</> content into the
7861 main <productname>PostgreSQL</> documentation (Albert Cervera i
7868 Add <filename>contrib/pageinspect</filename> module for low-level
7869 page inspection (Simon, Heikki)
7875 Add <filename>contrib/pg_standby</filename> module for controlling
7876 warm standby operation (Simon)
7882 Add <filename>contrib/uuid-ossp</filename> module for generating
7883 <type>UUID</> values using the OSSP UUID library (Peter)
7887 Use <application>configure</>
7888 <literal>--with-ossp-uuid</literal> to activate. This takes
7889 advantage of the new <type>UUID</type> builtin type.
7895 Add <filename>contrib/dict_int</filename>,
7896 <filename>contrib/dict_xsyn</filename>, and
7897 <filename>contrib/test_parser</filename> modules to provide
7898 sample add-on text search dictionary templates and parsers
7905 Allow <application>contrib/pgbench</> to set the fillfactor (Pavan
7912 Add timestamps to <application>contrib/pgbench</> <literal>-l</>
7919 Add usage count statistics to
7920 <filename>contrib/pgbuffercache</filename> (Greg Smith)
7926 Add GIN support for <filename>contrib/hstore</> (Teodor)
7932 Add GIN support for <filename>contrib/pg_trgm</> (Guillaume Smet, Teodor)
7938 Update OS/X startup scripts in
7939 <filename>contrib/start-scripts</filename> (Mark Cotner, David
7946 Restrict <function>pgrowlocks()</function> and
7947 <function>dblink_get_pkey()</function> to users who have
7948 <literal>SELECT</literal> privilege on the target table (Tom)
7954 Restrict <filename>contrib/pgstattuple</filename> functions to
7961 <filename>contrib/xml2</filename> is deprecated and planned for
7962 removal in 8.4 (Peter)
7966 The new XML support in core PostgreSQL supersedes this module.