1 <!-- doc/src/sgml/release-8.3.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
4 <sect1 id="release-8-3-22">
5 <title>Release 8.3.22</title>
8 <title>Release Date</title>
9 <simpara>2012-12-06</simpara>
13 This release contains a variety of fixes from 8.3.21.
14 For information about new features in the 8.3 major release, see
15 <xref linkend="release-8-3">.
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.22</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 Fix multiple bugs associated with <command>CREATE INDEX
46 CONCURRENTLY</> (Andres Freund, Tom Lane)
50 Fix <command>CREATE INDEX CONCURRENTLY</> to use
51 in-place updates when changing the state of an index's
52 <structname>pg_index</> row. This prevents race conditions that could
53 cause concurrent sessions to miss updating the target index, thus
54 resulting in corrupt concurrently-created indexes.
58 Also, fix various other operations to ensure that they ignore
59 invalid indexes resulting from a failed <command>CREATE INDEX
60 CONCURRENTLY</> command. The most important of these is
61 <command>VACUUM</>, because an auto-vacuum could easily be launched
62 on the table before corrective action can be taken to fix or remove
69 Avoid corruption of internal hash tables when out of memory
76 Fix planning of non-strict equivalence clauses above outer joins
81 The planner could derive incorrect constraints from a clause equating
82 a non-strict construct to something else, for example
83 <literal>WHERE COALESCE(foo, 0) = 0</>
84 when <literal>foo</> is coming from the nullable side of an outer join.
90 Improve planner's ability to prove exclusion constraints from
91 equivalence classes (Tom Lane)
97 Fix partial-row matching in hashed subplans to handle cross-type cases
102 This affects multicolumn <literal>NOT IN</> subplans, such as
103 <literal>WHERE (a, b) NOT IN (SELECT x, y FROM ...)</>
104 when for instance <literal>b</> and <literal>y</> are <type>int4</>
105 and <type>int8</> respectively. This mistake led to wrong answers
106 or crashes depending on the specific datatypes involved.
112 Acquire buffer lock when re-fetching the old tuple for an
113 <literal>AFTER ROW UPDATE/DELETE</> trigger (Andres Freund)
117 In very unusual circumstances, this oversight could result in passing
118 incorrect data to the precheck logic for a foreign-key enforcement
119 trigger. That could result in a crash, or in an incorrect decision
120 about whether to fire the trigger.
126 Fix <command>REASSIGN OWNED</> to handle grants on tablespaces
127 (Álvaro Herrera)
133 Ignore incorrect <structname>pg_attribute</> entries for system
134 columns for views (Tom Lane)
138 Views do not have any system columns. However, we forgot to
139 remove such entries when converting a table to a view. That's fixed
140 properly for 9.3 and later, but in previous branches we need to defend
141 against existing mis-converted views.
147 Fix rule printing to dump <literal>INSERT INTO <replaceable>table</>
148 DEFAULT VALUES</literal> correctly (Tom Lane)
154 Guard against stack overflow when there are too many
155 <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> clauses
156 in a query (Tom Lane)
162 Prevent platform-dependent failures when dividing the minimum possible
163 integer value by -1 (Xi Wang, Tom Lane)
169 Fix possible access past end of string in date parsing
176 Produce an understandable error message if the length of the path name
177 for a Unix-domain socket exceeds the platform-specific limit
178 (Tom Lane, Andrew Dunstan)
182 Formerly, this would result in something quite unhelpful, such as
183 <quote>Non-recoverable failure in name resolution</>.
189 Fix memory leaks when sending composite column values to the client
196 Make <application>pg_ctl</> more robust about reading the
197 <filename>postmaster.pid</> file (Heikki Linnakangas)
201 Fix race conditions and possible file descriptor leakage.
207 Fix possible crash in <application>psql</> if incorrectly-encoded data
208 is presented and the <varname>client_encoding</> setting is a
209 client-only encoding, such as SJIS (Jiang Guiqing)
215 Fix bugs in the <filename>restore.sql</> script emitted by
216 <application>pg_dump</> in <literal>tar</> output format (Tom Lane)
220 The script would fail outright on tables whose names include
221 upper-case characters. Also, make the script capable of restoring
222 data in <option>--inserts</> mode as well as the regular COPY mode.
228 Fix <application>pg_restore</> to accept POSIX-conformant
229 <literal>tar</> files (Brian Weaver, Tom Lane)
233 The original coding of <application>pg_dump</>'s <literal>tar</>
234 output mode produced files that are not fully conformant with the
235 POSIX standard. This has been corrected for version 9.3. This
236 patch updates previous branches so that they will accept both the
237 incorrect and the corrected formats, in hopes of avoiding
238 compatibility problems when 9.3 comes out.
244 Fix <application>pg_resetxlog</> to locate <filename>postmaster.pid</>
245 correctly when given a relative path to the data directory (Tom Lane)
249 This mistake could lead to <application>pg_resetxlog</> not noticing
250 that there is an active postmaster using the data directory.
256 Fix <application>libpq</>'s <function>lo_import()</> and
257 <function>lo_export()</> functions to report file I/O errors properly
264 Fix <application>ecpg</>'s processing of nested structure pointer
265 variables (Muhammad Usama)
271 Make <filename>contrib/pageinspect</>'s btree page inspection
272 functions take buffer locks while examining pages (Tom Lane)
278 Fix <application>pgxs</> support for building loadable modules on AIX
283 Building modules outside the original source tree didn't work on AIX.
289 Update time zone data files to <application>tzdata</> release 2012j
290 for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western
291 Samoa, and portions of Brazil.
300 <sect1 id="release-8-3-21">
301 <title>Release 8.3.21</title>
304 <title>Release Date</title>
305 <simpara>2012-09-24</simpara>
309 This release contains a variety of fixes from 8.3.20.
310 For information about new features in the 8.3 major release, see
311 <xref linkend="release-8-3">.
315 The <productname>PostgreSQL</> community will stop releasing updates
316 for the 8.3.X release series in February 2013.
317 Users are encouraged to update to a newer release branch soon.
321 <title>Migration to Version 8.3.21</title>
324 A dump/restore is not required for those running 8.3.X.
328 However, if you are upgrading from a version earlier than 8.3.17,
329 see the release notes for 8.3.17.
335 <title>Changes</title>
341 Improve page-splitting decisions in GiST indexes (Alexander Korotkov,
342 Robert Haas, Tom Lane)
346 Multi-column GiST indexes might suffer unexpected bloat due to this
353 Fix cascading privilege revoke to stop if privileges are still held
358 If we revoke a grant option from some role <replaceable>X</>, but
359 <replaceable>X</> still holds that option via a grant from someone
360 else, we should not recursively revoke the corresponding privilege
361 from role(s) <replaceable>Y</> that <replaceable>X</> had granted it
368 Fix handling of <literal>SIGFPE</> when PL/Perl is in use (Andres Freund)
372 Perl resets the process's <literal>SIGFPE</> handler to
373 <literal>SIG_IGN</>, which could result in crashes later on. Restore
374 the normal Postgres signal handler after initializing PL/Perl.
380 Prevent PL/Perl from crashing if a recursive PL/Perl function is
381 redefined while being executed (Tom Lane)
387 Work around possible misoptimization in PL/Perl (Tom Lane)
391 Some Linux distributions contain an incorrect version of
392 <filename>pthread.h</> that results in incorrect compiled code in
393 PL/Perl, leading to crashes if a PL/Perl function calls another one
394 that throws an error.
400 Update time zone data files to <application>tzdata</> release 2012f
401 for DST law changes in Fiji
410 <sect1 id="release-8-3-20">
411 <title>Release 8.3.20</title>
414 <title>Release Date</title>
415 <simpara>2012-08-17</simpara>
419 This release contains a variety of fixes from 8.3.19.
420 For information about new features in the 8.3 major release, see
421 <xref linkend="release-8-3">.
425 The <productname>PostgreSQL</> community will stop releasing updates
426 for the 8.3.X release series in February 2013.
427 Users are encouraged to update to a newer release branch soon.
431 <title>Migration to Version 8.3.20</title>
434 A dump/restore is not required for those running 8.3.X.
438 However, if you are upgrading from a version earlier than 8.3.17,
439 see the release notes for 8.3.17.
445 <title>Changes</title>
451 Prevent access to external files/URLs via XML entity references
452 (Noah Misch, Tom Lane)
456 <function>xml_parse()</> would attempt to fetch external files or
457 URLs as needed to resolve DTD and entity references in an XML value,
458 thus allowing unprivileged database users to attempt to fetch data
459 with the privileges of the database server. While the external data
460 wouldn't get returned directly to the user, portions of it could be
461 exposed in error messages if the data didn't parse as valid XML; and
462 in any case the mere ability to check existence of a file might be
463 useful to an attacker. (CVE-2012-3489)
469 Prevent access to external files/URLs via <filename>contrib/xml2</>'s
470 <function>xslt_process()</> (Peter Eisentraut)
474 <application>libxslt</> offers the ability to read and write both
475 files and URLs through stylesheet commands, thus allowing
476 unprivileged database users to both read and write data with the
477 privileges of the database server. Disable that through proper use
478 of <application>libxslt</>'s security options. (CVE-2012-3488)
482 Also, remove <function>xslt_process()</>'s ability to fetch documents
483 and stylesheets from external files/URLs. While this was a
484 documented <quote>feature</>, it was long regarded as a bad idea.
485 The fix for CVE-2012-3489 broke that capability, and rather than
486 expend effort on trying to fix it, we're just going to summarily
493 Prevent too-early recycling of btree index pages (Noah Misch)
497 When we allowed read-only transactions to skip assigning XIDs, we
498 introduced the possibility that a deleted btree page could be
499 recycled while a read-only transaction was still in flight to it.
500 This would result in incorrect index search results. The probability
501 of such an error occurring in the field seems very low because of the
502 timing requirements, but nonetheless it should be fixed.
508 Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane)
512 If <command>ALTER SEQUENCE</> was executed on a freshly created or
513 reset sequence, and then precisely one <function>nextval()</> call
514 was made on it, and then the server crashed, WAL replay would restore
515 the sequence to a state in which it appeared that no
516 <function>nextval()</> had been done, thus allowing the first
517 sequence value to be returned again by the next
518 <function>nextval()</> call. In particular this could manifest for
519 <type>serial</> columns, since creation of a serial column's sequence
520 includes an <command>ALTER SEQUENCE OWNED BY</> step.
526 Ensure the <filename>backup_label</> file is fsync'd after
527 <function>pg_start_backup()</> (Dave Kerr)
533 Back-patch 9.1 improvement to compress the fsync request queue
538 This improves performance during checkpoints. The 9.1 change
539 has now seen enough field testing to seem safe to back-patch.
545 Only allow autovacuum to be auto-canceled by a directly blocked
550 The original coding could allow inconsistent behavior in some cases;
551 in particular, an autovacuum could get canceled after less than
552 <literal>deadlock_timeout</> grace period.
558 Improve logging of autovacuum cancels (Robert Haas)
564 Fix log collector so that <literal>log_truncate_on_rotation</> works
565 during the very first log rotation after server start (Tom Lane)
571 Ensure that a whole-row reference to a subquery doesn't include any
572 extra <literal>GROUP BY</> or <literal>ORDER BY</> columns (Tom Lane)
578 Disallow copying whole-row references in <literal>CHECK</>
579 constraints and index definitions during <command>CREATE TABLE</>
584 This situation can arise in <command>CREATE TABLE</> with
585 <literal>LIKE</> or <literal>INHERITS</>. The copied whole-row
586 variable was incorrectly labeled with the row type of the original
587 table not the new one. Rejecting the case seems reasonable for
588 <literal>LIKE</>, since the row types might well diverge later. For
589 <literal>INHERITS</> we should ideally allow it, with an implicit
590 coercion to the parent table's row type; but that will require more
591 work than seems safe to back-patch.
597 Fix memory leak in <literal>ARRAY(SELECT ...)</> subqueries (Heikki
598 Linnakangas, Tom Lane)
604 Fix extraction of common prefixes from regular expressions (Tom Lane)
608 The code could get confused by quantified parenthesized
609 subexpressions, such as <literal>^(foo)?bar</>. This would lead to
610 incorrect index optimization of searches for such patterns.
616 Report errors properly in <filename>contrib/xml2</>'s
617 <function>xslt_process()</> (Tom Lane)
623 Update time zone data files to <application>tzdata</> release 2012e
624 for DST law changes in Morocco and Tokelau
633 <sect1 id="release-8-3-19">
634 <title>Release 8.3.19</title>
637 <title>Release Date</title>
638 <simpara>2012-06-04</simpara>
642 This release contains a variety of fixes from 8.3.18.
643 For information about new features in the 8.3 major release, see
644 <xref linkend="release-8-3">.
648 <title>Migration to Version 8.3.19</title>
651 A dump/restore is not required for those running 8.3.X.
655 However, if you are upgrading from a version earlier than 8.3.17,
656 see the release notes for 8.3.17.
662 <title>Changes</title>
668 Fix incorrect password transformation in
669 <filename>contrib/pgcrypto</>'s DES <function>crypt()</> function
674 If a password string contained the byte value <literal>0x80</>, the
675 remainder of the password was ignored, causing the password to be much
676 weaker than it appeared. With this fix, the rest of the string is
677 properly included in the DES hash. Any stored password values that are
678 affected by this bug will thus no longer match, so the stored values may
679 need to be updated. (CVE-2012-2143)
685 Ignore <literal>SECURITY DEFINER</> and <literal>SET</> attributes for
686 a procedural language's call handler (Tom Lane)
690 Applying such attributes to a call handler could crash the server.
697 Allow numeric timezone offsets in <type>timestamp</> input to be up to
698 16 hours away from UTC (Tom Lane)
702 Some historical time zones have offsets larger than 15 hours, the
703 previous limit. This could result in dumped data values being rejected
710 Fix timestamp conversion to cope when the given time is exactly the
711 last DST transition time for the current timezone (Tom Lane)
715 This oversight has been there a long time, but was not noticed
716 previously because most DST-using zones are presumed to have an
717 indefinite sequence of future DST transitions.
723 Fix <type>text</> to <type>name</> and <type>char</> to <type>name</>
724 casts to perform string truncation correctly in multibyte encodings
731 Fix memory copying bug in <function>to_tsquery()</> (Heikki Linnakangas)
737 Fix slow session startup when <structname>pg_attribute</> is very large
742 If <structname>pg_attribute</> exceeds one-fourth of
743 <varname>shared_buffers</>, cache rebuilding code that is sometimes
744 needed during session start would trigger the synchronized-scan logic,
745 causing it to take many times longer than normal. The problem was
746 particularly acute if many new sessions were starting at once.
752 Ensure sequential scans check for query cancel reasonably often (Merlin
757 A scan encountering many consecutive pages that contain no live tuples
758 would not respond to interrupts meanwhile.
764 Ensure the Windows implementation of <function>PGSemaphoreLock()</>
765 clears <varname>ImmediateInterruptOK</> before returning (Tom Lane)
769 This oversight meant that a query-cancel interrupt received later
770 in the same query could be accepted at an unsafe time, with
771 unpredictable but not good consequences.
777 Show whole-row variables safely when printing views or rules
778 (Abbas Butt, Tom Lane)
782 Corner cases involving ambiguous names (that is, the name could be
783 either a table or column name of the query) were printed in an
784 ambiguous way, risking that the view or rule would be interpreted
785 differently after dump and reload. Avoid the ambiguous case by
786 attaching a no-op cast.
792 Ensure autovacuum worker processes perform stack depth checking
793 properly (Heikki Linnakangas)
797 Previously, infinite recursion in a function invoked by
798 auto-<command>ANALYZE</> could crash worker processes.
804 Fix logging collector to not lose log coherency under high load (Andrew
809 The collector previously could fail to reassemble large messages if it
816 Fix logging collector to ensure it will restart file rotation
817 after receiving <systemitem>SIGHUP</> (Tom Lane)
823 Fix PL/pgSQL's <command>GET DIAGNOSTICS</> command when the target
824 is the function's first variable (Tom Lane)
830 Fix several performance problems in <application>pg_dump</> when
831 the database contains many objects (Jeff Janes, Tom Lane)
835 <application>pg_dump</> could get very slow if the database contained
836 many schemas, or if many objects are in dependency loops, or if there
837 are many owned sequences.
843 Fix <filename>contrib/dblink</>'s <function>dblink_exec()</> to not leak
844 temporary database connections upon error (Tom Lane)
850 Update time zone data files to <application>tzdata</> release 2012c
851 for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland
852 Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands;
853 also historical corrections for Canada.
862 <sect1 id="release-8-3-18">
863 <title>Release 8.3.18</title>
866 <title>Release Date</title>
867 <simpara>2012-02-27</simpara>
871 This release contains a variety of fixes from 8.3.17.
872 For information about new features in the 8.3 major release, see
873 <xref linkend="release-8-3">.
877 <title>Migration to Version 8.3.18</title>
880 A dump/restore is not required for those running 8.3.X.
884 However, if you are upgrading from a version earlier than 8.3.17,
885 see the release notes for 8.3.17.
891 <title>Changes</title>
897 Require execute permission on the trigger function for
898 <command>CREATE TRIGGER</> (Robert Haas)
902 This missing check could allow another user to execute a trigger
903 function with forged input data, by installing it on a table he owns.
904 This is only of significance for trigger functions marked
905 <literal>SECURITY DEFINER</>, since otherwise trigger functions run
906 as the table owner anyway. (CVE-2012-0866)
912 Convert newlines to spaces in names written in <application>pg_dump</>
913 comments (Robert Haas)
917 <application>pg_dump</> was incautious about sanitizing object names
918 that are emitted within SQL comments in its output script. A name
919 containing a newline would at least render the script syntactically
920 incorrect. Maliciously crafted object names could present a SQL
921 injection risk when the script is reloaded. (CVE-2012-0868)
927 Fix btree index corruption from insertions concurrent with vacuuming
932 An index page split caused by an insertion could sometimes cause a
933 concurrently-running <command>VACUUM</> to miss removing index entries
934 that it should remove. After the corresponding table rows are removed,
935 the dangling index entries would cause errors (such as <quote>could not
936 read block N in file ...</>) or worse, silently wrong query results
937 after unrelated rows are re-inserted at the now-free table locations.
938 This bug has been present since release 8.2, but occurs so infrequently
939 that it was not diagnosed until now. If you have reason to suspect
940 that it has happened in your database, reindexing the affected index
947 Allow non-existent values for some settings in <command>ALTER
948 USER/DATABASE SET</> (Heikki Linnakangas)
952 Allow <varname>default_text_search_config</>,
953 <varname>default_tablespace</>, and <varname>temp_tablespaces</> to be
954 set to names that are not known. This is because they might be known
955 in another database where the setting is intended to be used, or for the
956 tablespace cases because the tablespace might not be created yet. The
957 same issue was previously recognized for <varname>search_path</>, and
958 these settings now act like that one.
964 Track the OID counter correctly during WAL replay, even when it wraps
969 Previously the OID counter would remain stuck at a high value until the
970 system exited replay mode. The practical consequences of that are
971 usually nil, but there are scenarios wherein a standby server that's
972 been promoted to master might take a long time to advance the OID
973 counter to a reasonable value once values are needed.
979 Fix regular expression back-references with <literal>*</> attached
984 Rather than enforcing an exact string match, the code would effectively
985 accept any string that satisfies the pattern sub-expression referenced
986 by the back-reference symbol.
990 A similar problem still afflicts back-references that are embedded in a
991 larger quantified expression, rather than being the immediate subject
992 of the quantifier. This will be addressed in a future
993 <productname>PostgreSQL</> release.
999 Fix recently-introduced memory leak in processing of
1000 <type>inet</>/<type>cidr</> values (Heikki Linnakangas)
1004 A patch in the December 2011 releases of <productname>PostgreSQL</>
1005 caused memory leakage in these operations, which could be significant
1006 in scenarios such as building a btree index on such a column.
1012 Avoid double close of file handle in syslogger on Windows (MauMau)
1016 Ordinarily this error was invisible, but it would cause an exception
1017 when running on a debug version of Windows.
1023 Fix I/O-conversion-related memory leaks in plpgsql
1024 (Andres Freund, Jan Urbanski, Tom Lane)
1028 Certain operations would leak memory until the end of the current
1035 Improve <application>pg_dump</>'s handling of inherited table columns
1040 <application>pg_dump</> mishandled situations where a child column has
1041 a different default expression than its parent column. If the default
1042 is textually identical to the parent's default, but not actually the
1043 same (for instance, because of schema search path differences) it would
1044 not be recognized as different, so that after dump and restore the
1045 child would be allowed to inherit the parent's default. Child columns
1046 that are <literal>NOT NULL</> where their parent is not could also be
1047 restored subtly incorrectly.
1053 Fix <application>pg_restore</>'s direct-to-database mode for
1054 INSERT-style table data (Tom Lane)
1058 Direct-to-database restores from archive files made with
1059 <option>--inserts</> or <option>--column-inserts</> options fail when
1060 using <application>pg_restore</> from a release dated September or
1061 December 2011, as a result of an oversight in a fix for another
1062 problem. The archive file itself is not at fault, and text-mode
1069 Fix error in <filename>contrib/intarray</>'s <literal>int[] &
1070 int[]</> operator (Guillaume Lelarge)
1074 If the smallest integer the two input arrays have in common is 1,
1075 and there are smaller values in either array, then 1 would be
1076 incorrectly omitted from the result.
1082 Fix error detection in <filename>contrib/pgcrypto</>'s
1083 <function>encrypt_iv()</> and <function>decrypt_iv()</>
1088 These functions failed to report certain types of invalid-input errors,
1089 and would instead return random garbage values for incorrect input.
1095 Fix one-byte buffer overrun in <filename>contrib/test_parser</>
1100 The code would try to read one more byte than it should, which would
1101 crash in corner cases.
1102 Since <filename>contrib/test_parser</> is only example code, this is
1103 not a security issue in itself, but bad example code is still bad.
1109 Use <function>__sync_lock_test_and_set()</> for spinlocks on ARM, if
1110 available (Martin Pitt)
1114 This function replaces our previous use of the <literal>SWPB</>
1115 instruction, which is deprecated and not available on ARMv6 and later.
1116 Reports suggest that the old code doesn't fail in an obvious way on
1117 recent ARM boards, but simply doesn't interlock concurrent accesses,
1118 leading to bizarre failures in multiprocess operation.
1124 Use <option>-fexcess-precision=standard</> option when building with
1125 gcc versions that accept it (Andrew Dunstan)
1129 This prevents assorted scenarios wherein recent versions of gcc will
1130 produce creative results.
1136 Allow use of threaded Python on FreeBSD (Chris Rees)
1140 Our configure script previously believed that this combination wouldn't
1141 work; but FreeBSD fixed the problem, so remove that error check.
1150 <sect1 id="release-8-3-17">
1151 <title>Release 8.3.17</title>
1154 <title>Release Date</title>
1155 <simpara>2011-12-05</simpara>
1159 This release contains a variety of fixes from 8.3.16.
1160 For information about new features in the 8.3 major release, see
1161 <xref linkend="release-8-3">.
1165 <title>Migration to Version 8.3.17</title>
1168 A dump/restore is not required for those running 8.3.X.
1172 However, a longstanding error was discovered in the definition of the
1173 <literal>information_schema.referential_constraints</> view. If you
1174 rely on correct results from that view, you should replace its
1175 definition as explained in the first changelog item below.
1179 Also, if you are upgrading from a version earlier than 8.3.8,
1180 see the release notes for 8.3.8.
1186 <title>Changes</title>
1192 Fix bugs in <literal>information_schema.referential_constraints</> view
1197 This view was being insufficiently careful about matching the
1198 foreign-key constraint to the depended-on primary or unique key
1199 constraint. That could result in failure to show a foreign key
1200 constraint at all, or showing it multiple times, or claiming that it
1201 depends on a different constraint than the one it really does.
1205 Since the view definition is installed by <application>initdb</>,
1206 merely upgrading will not fix the problem. If you need to fix this
1207 in an existing installation, you can (as a superuser) drop the
1208 <literal>information_schema</> schema then re-create it by sourcing
1209 <filename><replaceable>SHAREDIR</>/information_schema.sql</filename>.
1210 (Run <literal>pg_config --sharedir</> if you're uncertain where
1211 <replaceable>SHAREDIR</> is.) This must be repeated in each database
1218 Fix TOAST-related data corruption during <literal>CREATE TABLE dest AS
1219 SELECT * FROM src</> or <literal>INSERT INTO dest SELECT * FROM src</>
1224 If a table has been modified by <command>ALTER TABLE ADD COLUMN</>,
1225 attempts to copy its data verbatim to another table could produce
1226 corrupt results in certain corner cases.
1227 The problem can only manifest in this precise form in 8.4 and later,
1228 but we patched earlier versions as well in case there are other code
1229 paths that could trigger the same bug.
1235 Fix race condition during toast table access from stale syscache entries
1240 The typical symptom was transient errors like <quote>missing chunk
1241 number 0 for toast value NNNNN in pg_toast_2619</>, where the cited
1242 toast table would always belong to a system catalog.
1248 Make <function>DatumGetInetP()</> unpack inet datums that have a 1-byte
1249 header, and add a new macro, <function>DatumGetInetPP()</>, that does
1250 not (Heikki Linnakangas)
1254 This change affects no core code, but might prevent crashes in add-on
1255 code that expects <function>DatumGetInetP()</> to produce an unpacked
1256 datum as per usual convention.
1262 Improve locale support in <type>money</> type's input and output
1267 Aside from not supporting all standard
1268 <link linkend="guc-lc-monetary"><varname>lc_monetary</></link>
1269 formatting options, the input and output functions were inconsistent,
1270 meaning there were locales in which dumped <type>money</> values could
1278 linkend="guc-transform-null-equals"><varname>transform_null_equals</></link>
1279 affect <literal>CASE foo WHEN NULL ...</> constructs
1280 (Heikki Linnakangas)
1284 <varname>transform_null_equals</> is only supposed to affect
1285 <literal>foo = NULL</> expressions written directly by the user, not
1286 equality checks generated internally by this form of <literal>CASE</>.
1292 Change foreign-key trigger creation order to better support
1293 self-referential foreign keys (Tom Lane)
1297 For a cascading foreign key that references its own table, a row update
1298 will fire both the <literal>ON UPDATE</> trigger and the
1299 <literal>CHECK</> trigger as one event. The <literal>ON UPDATE</>
1300 trigger must execute first, else the <literal>CHECK</> will check a
1301 non-final state of the row and possibly throw an inappropriate error.
1302 However, the firing order of these triggers is determined by their
1303 names, which generally sort in creation order since the triggers have
1304 auto-generated names following the convention
1305 <quote>RI_ConstraintTrigger_NNNN</>. A proper fix would require
1306 modifying that convention, which we will do in 9.2, but it seems risky
1307 to change it in existing releases. So this patch just changes the
1308 creation order of the triggers. Users encountering this type of error
1309 should drop and re-create the foreign key constraint to get its
1310 triggers into the right order.
1316 Avoid floating-point underflow while tracking buffer allocation rate
1321 While harmless in itself, on certain platforms this would result in
1322 annoying kernel log messages.
1328 Preserve blank lines within commands in <application>psql</>'s command
1329 history (Robert Haas)
1333 The former behavior could cause problems if an empty line was removed
1334 from within a string literal, for example.
1340 Fix <application>pg_dump</> to dump user-defined casts between
1341 auto-generated types, such as table rowtypes (Tom Lane)
1347 Use the preferred version of <application>xsubpp</> to build PL/Perl,
1348 not necessarily the operating system's main copy
1349 (David Wheeler and Alex Hunsaker)
1355 Fix incorrect coding in <filename>contrib/dict_int</> and
1356 <filename>contrib/dict_xsyn</> (Tom Lane)
1360 Some functions incorrectly assumed that memory returned by
1361 <function>palloc()</> is guaranteed zeroed.
1367 Honor query cancel interrupts promptly in <function>pgstatindex()</>
1374 Ensure VPATH builds properly install all server header files
1381 Shorten file names reported in verbose error messages (Peter Eisentraut)
1385 Regular builds have always reported just the name of the C file
1386 containing the error message call, but VPATH builds formerly
1387 reported an absolute path name.
1393 Fix interpretation of Windows timezone names for Central America
1398 Map <quote>Central America Standard Time</> to <literal>CST6</>, not
1399 <literal>CST6CDT</>, because DST is generally not observed anywhere in
1406 Update time zone data files to <application>tzdata</> release 2011n
1407 for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa;
1408 also historical corrections for Alaska and British East Africa.
1417 <sect1 id="release-8-3-16">
1418 <title>Release 8.3.16</title>
1421 <title>Release Date</title>
1422 <simpara>2011-09-26</simpara>
1426 This release contains a variety of fixes from 8.3.15.
1427 For information about new features in the 8.3 major release, see
1428 <xref linkend="release-8-3">.
1432 <title>Migration to Version 8.3.16</title>
1435 A dump/restore is not required for those running 8.3.X.
1436 However, if you are upgrading from a version earlier than 8.3.8,
1437 see the release notes for 8.3.8.
1443 <title>Changes</title>
1449 Fix bugs in indexing of in-doubt HOT-updated tuples (Tom Lane)
1453 These bugs could result in index corruption after reindexing a system
1454 catalog. They are not believed to affect user indexes.
1460 Fix multiple bugs in GiST index page split processing (Heikki
1465 The probability of occurrence was low, but these could lead to index
1472 Fix possible buffer overrun in <function>tsvector_concat()</>
1477 The function could underestimate the amount of memory needed for its
1478 result, leading to server crashes.
1484 Fix crash in <function>xml_recv</> when processing a
1485 <quote>standalone</> parameter (Tom Lane)
1491 Avoid possibly accessing off the end of memory in <command>ANALYZE</>
1492 and in SJIS-2004 encoding conversion (Noah Misch)
1496 This fixes some very-low-probability server crash scenarios.
1502 Fix race condition in relcache init file invalidation (Tom Lane)
1506 There was a window wherein a new backend process could read a stale init
1507 file but miss the inval messages that would tell it the data is stale.
1508 The result would be bizarre failures in catalog accesses, typically
1509 <quote>could not read block 0 in file ...</> later during startup.
1515 Fix memory leak at end of a GiST index scan (Tom Lane)
1519 Commands that perform many separate GiST index scans, such as
1520 verification of a new GiST-based exclusion constraint on a table
1521 already containing many rows, could transiently require large amounts of
1522 memory due to this leak.
1528 Fix performance problem when constructing a large, lossy bitmap
1535 Fix array- and path-creating functions to ensure padding bytes are
1540 This avoids some situations where the planner will think that
1541 semantically-equal constants are not equal, resulting in poor
1548 Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane)
1552 This could lead to loss of committed transactions after a server crash.
1558 Fix dump bug for <literal>VALUES</> in a view (Tom Lane)
1564 Disallow <literal>SELECT FOR UPDATE/SHARE</> on sequences (Tom Lane)
1568 This operation doesn't work as expected and can lead to failures.
1574 Defend against integer overflow when computing size of a hash table (Tom
1581 Fix cases where <command>CLUSTER</> might attempt to access
1582 already-removed TOAST data (Tom Lane)
1588 Fix portability bugs in use of credentials control messages for
1589 <quote>peer</> authentication (Tom Lane)
1595 Fix SSPI login when multiple roundtrips are required (Ahmed Shinwari,
1600 The typical symptom of this problem was <quote>The function requested is
1601 not supported</> errors during SSPI login.
1607 Fix typo in <function>pg_srand48</> seed initialization (Andres Freund)
1611 This led to failure to use all bits of the provided seed. This function
1612 is not used on most platforms (only those without <function>srandom</>),
1613 and the potential security exposure from a less-random-than-expected
1614 seed seems minimal in any case.
1620 Avoid integer overflow when the sum of <literal>LIMIT</> and
1621 <literal>OFFSET</> values exceeds 2^63 (Heikki Linnakangas)
1627 Add overflow checks to <type>int4</> and <type>int8</> versions of
1628 <function>generate_series()</> (Robert Haas)
1634 Fix trailing-zero removal in <function>to_char()</> (Marti Raudsepp)
1638 In a format with <literal>FM</> and no digit positions
1639 after the decimal point, zeroes to the left of the decimal point could
1640 be removed incorrectly.
1646 Fix <function>pg_size_pretty()</> to avoid overflow for inputs close to
1653 In <application>pg_ctl</>, support silent mode for service registrations
1660 Fix <application>psql</>'s counting of script file line numbers during
1661 <literal>COPY</> from a different file (Tom Lane)
1667 Fix <application>pg_restore</>'s direct-to-database mode for
1668 <varname>standard_conforming_strings</> (Tom Lane)
1672 <application>pg_restore</> could emit incorrect commands when restoring
1673 directly to a database server from an archive file that had been made
1674 with <varname>standard_conforming_strings</> set to <literal>on</>.
1680 Fix write-past-buffer-end and memory leak in <application>libpq</>'s
1681 LDAP service lookup code (Albe Laurenz)
1687 In <application>libpq</>, avoid failures when using nonblocking I/O
1688 and an SSL connection (Martin Pihlak, Tom Lane)
1694 Improve libpq's handling of failures during connection startup
1699 In particular, the response to a server report of <function>fork()</>
1700 failure during SSL connection startup is now saner.
1706 Improve <application>libpq</>'s error reporting for SSL failures (Tom
1713 Make <application>ecpglib</> write <type>double</> values with 15 digits
1714 precision (Akira Kurosawa)
1720 In <application>ecpglib</>, be sure <literal>LC_NUMERIC</> setting is
1721 restored after an error (Michael Meskes)
1727 Apply upstream fix for blowfish signed-character bug (CVE-2011-2483)
1732 <filename>contrib/pg_crypto</>'s blowfish encryption code could give
1733 wrong results on platforms where char is signed (which is most),
1734 leading to encrypted passwords being weaker than they should be.
1740 Fix memory leak in <filename>contrib/seg</> (Heikki Linnakangas)
1746 Fix <function>pgstatindex()</> to give consistent results for empty
1753 Allow building with perl 5.14 (Alex Hunsaker)
1759 Update configure script's method for probing existence of system
1760 functions (Tom Lane)
1764 The version of autoconf we used in 8.3 and 8.2 could be fooled by
1765 compilers that perform link-time optimization.
1771 Fix assorted issues with build and install file paths containing spaces
1778 Update time zone data files to <application>tzdata</> release 2011i
1779 for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan.
1788 <sect1 id="release-8-3-15">
1789 <title>Release 8.3.15</title>
1792 <title>Release Date</title>
1793 <simpara>2011-04-18</simpara>
1797 This release contains a variety of fixes from 8.3.14.
1798 For information about new features in the 8.3 major release, see
1799 <xref linkend="release-8-3">.
1803 <title>Migration to Version 8.3.15</title>
1806 A dump/restore is not required for those running 8.3.X.
1807 However, if you are upgrading from a version earlier than 8.3.8,
1808 see the release notes for 8.3.8.
1814 <title>Changes</title>
1820 Disallow including a composite type in itself (Tom Lane)
1824 This prevents scenarios wherein the server could recurse infinitely
1825 while processing the composite type. While there are some possible
1826 uses for such a structure, they don't seem compelling enough to
1827 justify the effort required to make sure it always works safely.
1833 Avoid potential deadlock during catalog cache initialization
1838 In some cases the cache loading code would acquire share lock on a
1839 system index before locking the index's catalog. This could deadlock
1840 against processes trying to acquire exclusive locks in the other,
1841 more standard order.
1847 Fix dangling-pointer problem in <literal>BEFORE ROW UPDATE</> trigger
1848 handling when there was a concurrent update to the target tuple
1853 This bug has been observed to result in intermittent <quote>cannot
1854 extract system attribute from virtual tuple</> failures while trying to
1855 do <literal>UPDATE RETURNING ctid</>. There is a very small probability
1856 of more serious errors, such as generating incorrect index entries for
1863 Disallow <command>DROP TABLE</> when there are pending deferred trigger
1864 events for the table (Tom Lane)
1868 Formerly the <command>DROP</> would go through, leading to
1869 <quote>could not open relation with OID nnn</> errors when the
1870 triggers were eventually fired.
1876 Fix PL/Python memory leak involving array slices (Daniel Popowich)
1882 Fix <application>pg_restore</> to cope with long lines (over 1KB) in
1883 TOC files (Tom Lane)
1889 Put in more safeguards against crashing due to division-by-zero
1890 with overly enthusiastic compiler optimization (Aurelien Jarno)
1896 Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane)
1900 There was a hard-wired assumption that this system function was not
1901 available on MIPS hardware on these systems. Use a compile-time test
1902 instead, since more recent versions have it.
1908 Fix compilation failures on HP-UX (Heikki Linnakangas)
1914 Fix version-incompatibility problem with <application>libintl</> on
1915 Windows (Hiroshi Inoue)
1921 Fix usage of <application>xcopy</> in Windows build scripts to
1922 work correctly under Windows 7 (Andrew Dunstan)
1926 This affects the build scripts only, not installation or usage.
1932 Fix path separator used by <application>pg_regress</> on Cygwin
1939 Update time zone data files to <application>tzdata</> release 2011f
1940 for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa,
1941 and Turkey; also historical corrections for South Australia, Alaska,
1951 <sect1 id="release-8-3-14">
1952 <title>Release 8.3.14</title>
1955 <title>Release Date</title>
1956 <simpara>2011-01-31</simpara>
1960 This release contains a variety of fixes from 8.3.13.
1961 For information about new features in the 8.3 major release, see
1962 <xref linkend="release-8-3">.
1966 <title>Migration to Version 8.3.14</title>
1969 A dump/restore is not required for those running 8.3.X.
1970 However, if you are upgrading from a version earlier than 8.3.8,
1971 see the release notes for 8.3.8.
1977 <title>Changes</title>
1983 Avoid failures when <command>EXPLAIN</> tries to display a simple-form
1984 <literal>CASE</> expression (Tom Lane)
1988 If the <literal>CASE</>'s test expression was a constant, the planner
1989 could simplify the <literal>CASE</> into a form that confused the
1990 expression-display code, resulting in <quote>unexpected CASE WHEN
1997 Fix assignment to an array slice that is before the existing range
1998 of subscripts (Tom Lane)
2002 If there was a gap between the newly added subscripts and the first
2003 pre-existing subscript, the code miscalculated how many entries needed
2004 to be copied from the old array's null bitmap, potentially leading to
2005 data corruption or crash.
2011 Avoid unexpected conversion overflow in planner for very distant date
2016 The <type>date</> type supports a wider range of dates than can be
2017 represented by the <type>timestamp</> types, but the planner assumed it
2018 could always convert a date to timestamp with impunity.
2024 Fix <application>pg_restore</>'s text output for large objects (BLOBs)
2025 when <varname>standard_conforming_strings</> is on (Tom Lane)
2029 Although restoring directly to a database worked correctly, string
2030 escaping was incorrect if <application>pg_restore</> was asked for
2031 SQL text output and <varname>standard_conforming_strings</> had been
2032 enabled in the source database.
2038 Fix erroneous parsing of <type>tsquery</> values containing
2039 <literal>... & !(subexpression) | ...</literal> (Tom Lane)
2043 Queries containing this combination of operators were not executed
2044 correctly. The same error existed in <filename>contrib/intarray</>'s
2045 <type>query_int</> type and <filename>contrib/ltree</>'s
2046 <type>ltxtquery</> type.
2052 Fix buffer overrun in <filename>contrib/intarray</>'s input function
2053 for the <type>query_int</> type (Apple)
2057 This bug is a security risk since the function's return address could
2058 be overwritten. Thanks to Apple Inc's security team for reporting this
2059 issue and supplying the fix. (CVE-2010-4015)
2065 Fix bug in <filename>contrib/seg</>'s GiST picksplit algorithm
2066 (Alexander Korotkov)
2070 This could result in considerable inefficiency, though not actually
2071 incorrect answers, in a GiST index on a <type>seg</> column.
2072 If you have such an index, consider <command>REINDEX</>ing it after
2073 installing this update. (This is identical to the bug that was fixed in
2074 <filename>contrib/cube</> in the previous update.)
2083 <sect1 id="release-8-3-13">
2084 <title>Release 8.3.13</title>
2087 <title>Release Date</title>
2088 <simpara>2010-12-16</simpara>
2092 This release contains a variety of fixes from 8.3.12.
2093 For information about new features in the 8.3 major release, see
2094 <xref linkend="release-8-3">.
2098 <title>Migration to Version 8.3.13</title>
2101 A dump/restore is not required for those running 8.3.X.
2102 However, if you are upgrading from a version earlier than 8.3.8,
2103 see the release notes for 8.3.8.
2109 <title>Changes</title>
2116 <link linkend="guc-wal-sync-method"><varname>wal_sync_method</></link>
2117 to be <literal>fdatasync</> on Linux (Tom Lane, Marti Raudsepp)
2121 The default on Linux has actually been <literal>fdatasync</> for many
2122 years, but recent kernel changes caused <productname>PostgreSQL</> to
2123 choose <literal>open_datasync</> instead. This choice did not result
2124 in any performance improvement, and caused outright failures on
2125 certain filesystems, notably <literal>ext4</> with the
2126 <literal>data=journal</> mount option.
2132 Fix assorted bugs in WAL replay logic for GIN indexes (Tom Lane)
2136 This could result in <quote>bad buffer id: 0</> failures or
2137 corruption of index contents during replication.
2143 Fix recovery from base backup when the starting checkpoint WAL record
2144 is not in the same WAL segment as its redo point (Jeff Davis)
2150 Fix persistent slowdown of autovacuum workers when multiple workers
2151 remain active for a long time (Tom Lane)
2155 The effective <varname>vacuum_cost_limit</> for an autovacuum worker
2156 could drop to nearly zero if it processed enough tables, causing it
2157 to run extremely slowly.
2163 Add support for detecting register-stack overrun on <literal>IA64</>
2168 The <literal>IA64</> architecture has two hardware stacks. Full
2169 prevention of stack-overrun failures requires checking both.
2175 Add a check for stack overflow in <function>copyObject()</> (Tom Lane)
2179 Certain code paths could crash due to stack overflow given a
2180 sufficiently complex query.
2186 Fix detection of page splits in temporary GiST indexes (Heikki
2191 It is possible to have a <quote>concurrent</> page split in a
2192 temporary index, if for example there is an open cursor scanning the
2193 index when an insertion is done. GiST failed to detect this case and
2194 hence could deliver wrong results when execution of the cursor
2201 Avoid memory leakage while <command>ANALYZE</>'ing complex index
2202 expressions (Tom Lane)
2208 Ensure an index that uses a whole-row Var still depends on its table
2213 An index declared like <literal>create index i on t (foo(t.*))</>
2214 would not automatically get dropped when its table was dropped.
2220 Do not <quote>inline</> a SQL function with multiple <literal>OUT</>
2221 parameters (Tom Lane)
2225 This avoids a possible crash due to loss of information about the
2226 expected result rowtype.
2232 Behave correctly if <literal>ORDER BY</>, <literal>LIMIT</>,
2233 <literal>FOR UPDATE</>, or <literal>WITH</> is attached to the
2234 <literal>VALUES</> part of <literal>INSERT ... VALUES</> (Tom Lane)
2240 Fix constant-folding of <literal>COALESCE()</> expressions (Tom Lane)
2244 The planner would sometimes attempt to evaluate sub-expressions that
2245 in fact could never be reached, possibly leading to unexpected errors.
2251 Fix postmaster crash when connection acceptance
2252 (<function>accept()</> or one of the calls made immediately after it)
2253 fails, and the postmaster was compiled with GSSAPI support (Alexander
2260 Fix missed unlink of temporary files when <varname>log_temp_files</>
2261 is active (Tom Lane)
2265 If an error occurred while attempting to emit the log message, the
2266 unlink was not done, resulting in accumulation of temp files.
2272 Add print functionality for <structname>InhRelation</> nodes (Tom Lane)
2276 This avoids a failure when <varname>debug_print_parse</> is enabled
2277 and certain types of query are executed.
2283 Fix incorrect calculation of distance from a point to a horizontal
2284 line segment (Tom Lane)
2288 This bug affected several different geometric distance-measurement
2295 Fix <application>PL/pgSQL</>'s handling of <quote>simple</>
2296 expressions to not fail in recursion or error-recovery cases (Tom Lane)
2302 Fix <application>PL/Python</>'s handling of set-returning functions
2307 Attempts to call SPI functions within the iterator generating a set
2314 Fix bug in <filename>contrib/cube</>'s GiST picksplit algorithm
2315 (Alexander Korotkov)
2319 This could result in considerable inefficiency, though not actually
2320 incorrect answers, in a GiST index on a <type>cube</> column.
2321 If you have such an index, consider <command>REINDEX</>ing it after
2322 installing this update.
2328 Don't emit <quote>identifier will be truncated</> notices in
2329 <filename>contrib/dblink</> except when creating new connections
2336 Fix potential coredump on missing public key in
2337 <filename>contrib/pgcrypto</> (Marti Raudsepp)
2343 Fix memory leak in <filename>contrib/xml2</>'s XPath query functions
2350 Update time zone data files to <application>tzdata</> release 2010o
2351 for DST law changes in Fiji and Samoa;
2352 also historical corrections for Hong Kong.
2361 <sect1 id="release-8-3-12">
2362 <title>Release 8.3.12</title>
2365 <title>Release Date</title>
2366 <simpara>2010-10-04</simpara>
2370 This release contains a variety of fixes from 8.3.11.
2371 For information about new features in the 8.3 major release, see
2372 <xref linkend="release-8-3">.
2376 <title>Migration to Version 8.3.12</title>
2379 A dump/restore is not required for those running 8.3.X.
2380 However, if you are upgrading from a version earlier than 8.3.8,
2381 see the release notes for 8.3.8.
2387 <title>Changes</title>
2393 Use a separate interpreter for each calling SQL userid in PL/Perl and
2398 This change prevents security problems that can be caused by subverting
2399 Perl or Tcl code that will be executed later in the same session under
2400 another SQL user identity (for example, within a <literal>SECURITY
2401 DEFINER</> function). Most scripting languages offer numerous ways that
2402 that might be done, such as redefining standard functions or operators
2403 called by the target function. Without this change, any SQL user with
2404 Perl or Tcl language usage rights can do essentially anything with the
2405 SQL privileges of the target function's owner.
2409 The cost of this change is that intentional communication among Perl
2410 and Tcl functions becomes more difficult. To provide an escape hatch,
2411 PL/PerlU and PL/TclU functions continue to use only one interpreter
2412 per session. This is not considered a security issue since all such
2413 functions execute at the trust level of a database superuser already.
2417 It is likely that third-party procedural languages that claim to offer
2418 trusted execution have similar security issues. We advise contacting
2419 the authors of any PL you are depending on for security-critical
2424 Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433).
2430 Prevent possible crashes in <function>pg_get_expr()</> by disallowing
2431 it from being called with an argument that is not one of the system
2432 catalog columns it's intended to be used with
2433 (Heikki Linnakangas, Tom Lane)
2439 Treat exit code 128 (<literal>ERROR_WAIT_NO_CHILDREN</>) as non-fatal on
2440 Windows (Magnus Hagander)
2444 Under high load, Windows processes will sometimes fail at startup with
2445 this error code. Formerly the postmaster treated this as a panic
2446 condition and restarted the whole database, but that seems to be
2453 Fix incorrect usage of non-strict OR joinclauses in Append indexscans
2458 This is a back-patch of an 8.4 fix that was missed in the 8.3 branch.
2459 This corrects an error introduced in 8.3.8 that could cause incorrect
2460 results for outer joins when the inner relation is an inheritance tree
2461 or <literal>UNION ALL</> subquery.
2467 Fix possible duplicate scans of <literal>UNION ALL</> member relations
2474 Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane)
2478 This occurred when a sub-select contains a join alias reference that
2479 expands into an expression containing another sub-select.
2485 Fix failure to mark cached plans as transient (Tom Lane)
2489 If a plan is prepared while <command>CREATE INDEX CONCURRENTLY</> is
2490 in progress for one of the referenced tables, it is supposed to be
2491 re-planned once the index is ready for use. This was not happening
2498 Reduce PANIC to ERROR in some occasionally-reported btree failure cases,
2499 and provide additional detail in the resulting error messages
2504 This should improve the system's robustness with corrupted indexes.
2510 Prevent show_session_authorization() from crashing within autovacuum
2511 processes (Tom Lane)
2517 Defend against functions returning setof record where not all the
2518 returned rows are actually of the same rowtype (Tom Lane)
2524 Fix possible failure when hashing a pass-by-reference function result
2531 Improve merge join's handling of NULLs in the join columns (Tom Lane)
2535 A merge join can now stop entirely upon reaching the first NULL,
2536 if the sort order is such that NULLs sort high.
2542 Take care to fsync the contents of lockfiles (both
2543 <filename>postmaster.pid</> and the socket lockfile) while writing them
2548 This omission could result in corrupted lockfile contents if the
2549 machine crashes shortly after postmaster start. That could in turn
2550 prevent subsequent attempts to start the postmaster from succeeding,
2551 until the lockfile is manually removed.
2557 Avoid recursion while assigning XIDs to heavily-nested
2558 subtransactions (Andres Freund, Robert Haas)
2562 The original coding could result in a crash if there was limited
2569 Avoid holding open old WAL segments in the walwriter process
2570 (Magnus Hagander, Heikki Linnakangas)
2574 The previous coding would prevent removal of no-longer-needed segments.
2580 Fix <varname>log_line_prefix</>'s <literal>%i</> escape,
2581 which could produce junk early in backend startup (Tom Lane)
2587 Fix possible data corruption in <command>ALTER TABLE ... SET
2588 TABLESPACE</> when archiving is enabled (Jeff Davis)
2594 Allow <command>CREATE DATABASE</> and <command>ALTER DATABASE ... SET
2595 TABLESPACE</> to be interrupted by query-cancel (Guillaume Lelarge)
2601 Fix <command>REASSIGN OWNED</> to handle operator classes and families
2608 Fix possible core dump when comparing two empty <type>tsquery</> values
2615 Fix <literal>LIKE</>'s handling of patterns containing <literal>%</>
2616 followed by <literal>_</> (Tom Lane)
2620 We've fixed this before, but there were still some incorrectly-handled
2627 In PL/Python, defend against null pointer results from
2628 <function>PyCObject_AsVoidPtr</> and <function>PyCObject_FromVoidPtr</>
2635 Make psql recognize <command>DISCARD ALL</> as a command that should
2636 not be encased in a transaction block in autocommit-off mode
2643 Fix <application>ecpg</> to process data from <literal>RETURNING</>
2644 clauses correctly (Michael Meskes)
2650 Improve <filename>contrib/dblink</>'s handling of tables containing
2651 dropped columns (Tom Lane)
2657 Fix connection leak after <quote>duplicate connection name</quote>
2658 errors in <filename>contrib/dblink</> (Itagaki Takahiro)
2664 Fix <filename>contrib/dblink</> to handle connection names longer than
2665 62 bytes correctly (Itagaki Takahiro)
2671 Add <function>hstore(text, text)</>
2672 function to <filename>contrib/hstore</> (Robert Haas)
2676 This function is the recommended substitute for the now-deprecated
2677 <literal>=></> operator. It was back-patched so that future-proofed
2678 code can be used with older server versions. Note that the patch will
2679 be effective only after <filename>contrib/hstore</> is installed or
2680 reinstalled in a particular database. Users might prefer to execute
2681 the <command>CREATE FUNCTION</> command by hand, instead.
2687 Update build infrastructure and documentation to reflect the source code
2688 repository's move from CVS to Git (Magnus Hagander and others)
2694 Update time zone data files to <application>tzdata</> release 2010l
2695 for DST law changes in Egypt and Palestine; also historical corrections
2700 This change also adds new names for two Micronesian timezones:
2701 Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred
2702 abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over
2709 Make Windows' <quote>N. Central Asia Standard Time</> timezone map to
2710 Asia/Novosibirsk, not Asia/Almaty (Magnus Hagander)
2714 Microsoft changed the DST behavior of this zone in the timezone update
2715 from KB976098. Asia/Novosibirsk is a better match to its new behavior.
2724 <sect1 id="release-8-3-11">
2725 <title>Release 8.3.11</title>
2728 <title>Release Date</title>
2729 <simpara>2010-05-17</simpara>
2733 This release contains a variety of fixes from 8.3.10.
2734 For information about new features in the 8.3 major release, see
2735 <xref linkend="release-8-3">.
2739 <title>Migration to Version 8.3.11</title>
2742 A dump/restore is not required for those running 8.3.X.
2743 However, if you are upgrading from a version earlier than 8.3.8,
2744 see the release notes for 8.3.8.
2750 <title>Changes</title>
2756 Enforce restrictions in <literal>plperl</> using an opmask applied to
2757 the whole interpreter, instead of using <filename>Safe.pm</>
2758 (Tim Bunce, Andrew Dunstan)
2762 Recent developments have convinced us that <filename>Safe.pm</> is too
2763 insecure to rely on for making <literal>plperl</> trustable. This
2764 change removes use of <filename>Safe.pm</> altogether, in favor of using
2765 a separate interpreter with an opcode mask that is always applied.
2766 Pleasant side effects of the change include that it is now possible to
2767 use Perl's <literal>strict</> pragma in a natural way in
2768 <literal>plperl</>, and that Perl's <literal>$a</> and <literal>$b</>
2769 variables work as expected in sort routines, and that function
2770 compilation is significantly faster. (CVE-2010-1169)
2776 Prevent PL/Tcl from executing untrustworthy code from
2777 <structname>pltcl_modules</> (Tom)
2781 PL/Tcl's feature for autoloading Tcl code from a database table
2782 could be exploited for trojan-horse attacks, because there was no
2783 restriction on who could create or insert into that table. This change
2784 disables the feature unless <structname>pltcl_modules</> is owned by a
2785 superuser. (However, the permissions on the table are not checked, so
2786 installations that really need a less-than-secure modules table can
2787 still grant suitable privileges to trusted non-superusers.) Also,
2788 prevent loading code into the unrestricted <quote>normal</> Tcl
2789 interpreter unless we are really going to execute a <literal>pltclu</>
2790 function. (CVE-2010-1170)
2796 Fix possible crash if a cache reset message is received during
2797 rebuild of a relcache entry (Heikki)
2801 This error was introduced in 8.3.10 while fixing a related failure.
2807 Apply per-function GUC settings while running the language validator
2808 for the function (Itagaki Takahiro)
2812 This avoids failures if the function's code is invalid without the
2813 setting; an example is that SQL functions may not parse if the
2814 <varname>search_path</> is not correct.
2820 Do not allow an unprivileged user to reset superuser-only parameter
2825 Previously, if an unprivileged user ran <literal>ALTER USER ... RESET
2826 ALL</> for himself, or <literal>ALTER DATABASE ... RESET ALL</> for
2827 a database he owns, this would remove all special parameter settings
2828 for the user or database, even ones that are only supposed to be
2829 changeable by a superuser. Now, the <command>ALTER</> will only
2830 remove the parameters that the user has permission to change.
2836 Avoid possible crash during backend shutdown if shutdown occurs
2837 when a <literal>CONTEXT</> addition would be made to log entries (Tom)
2841 In some cases the context-printing function would fail because the
2842 current transaction had already been rolled back when it came time
2843 to print a log message.
2849 Ensure the archiver process responds to changes in
2850 <varname>archive_command</> as soon as possible (Tom)
2856 Update pl/perl's <filename>ppport.h</> for modern Perl versions
2863 Fix assorted memory leaks in pl/python (Andreas Freund, Tom)
2869 Prevent infinite recursion in <application>psql</> when expanding
2870 a variable that refers to itself (Tom)
2876 Fix <application>psql</>'s <literal>\copy</> to not add spaces around
2877 a dot within <literal>\copy (select ...)</> (Tom)
2881 Addition of spaces around the decimal point in a numeric literal would
2882 result in a syntax error.
2888 Fix unnecessary <quote>GIN indexes do not support whole-index scans</>
2889 errors for unsatisfiable queries using <filename>contrib/intarray</>
2896 Ensure that <filename>contrib/pgstattuple</> functions respond to cancel
2897 interrupts promptly (Tatsuhito Kasahara)
2903 Make server startup deal properly with the case that
2904 <function>shmget()</> returns <literal>EINVAL</> for an existing
2905 shared memory segment (Tom)
2909 This behavior has been observed on BSD-derived kernels including OS X.
2910 It resulted in an entirely-misleading startup failure complaining that
2911 the shared memory request size was too large.
2917 Avoid possible crashes in syslogger process on Windows (Heikki)
2923 Deal more robustly with incomplete time zone information in the
2924 Windows registry (Magnus)
2930 Update the set of known Windows time zone names (Magnus)
2936 Update time zone data files to <application>tzdata</> release 2010j
2937 for DST law changes in Argentina, Australian Antarctic, Bangladesh,
2938 Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia;
2939 also historical corrections for Taiwan.
2943 Also, add <literal>PKST</> (Pakistan Summer Time) to the default set of
2944 timezone abbreviations.
2953 <sect1 id="release-8-3-10">
2954 <title>Release 8.3.10</title>
2957 <title>Release Date</title>
2958 <simpara>2010-03-15</simpara>
2962 This release contains a variety of fixes from 8.3.9.
2963 For information about new features in the 8.3 major release, see
2964 <xref linkend="release-8-3">.
2968 <title>Migration to Version 8.3.10</title>
2971 A dump/restore is not required for those running 8.3.X.
2972 However, if you are upgrading from a version earlier than 8.3.8,
2973 see the release notes for 8.3.8.
2979 <title>Changes</title>
2985 Add new configuration parameter <varname>ssl_renegotiation_limit</> to
2986 control how often we do session key renegotiation for an SSL connection
2991 This can be set to zero to disable renegotiation completely, which may
2992 be required if a broken SSL library is used. In particular, some
2993 vendors are shipping stopgap patches for CVE-2009-3555 that cause
2994 renegotiation attempts to fail.
3000 Fix possible deadlock during backend startup (Tom)
3006 Fix possible crashes due to not handling errors during relcache reload
3013 Fix possible crash due to use of dangling pointer to a cached plan
3020 Fix possible crashes when trying to recover from a failure in
3021 subtransaction start (Tom)
3027 Fix server memory leak associated with use of savepoints and a client
3028 encoding different from server's encoding (Tom)
3034 Fix incorrect WAL data emitted during end-of-recovery cleanup of a GIST
3035 index page split (Yoichi Hirai)
3039 This would result in index corruption, or even more likely an error
3040 during WAL replay, if we were unlucky enough to crash during
3041 end-of-recovery cleanup after having completed an incomplete GIST
3048 Make <function>substring()</> for <type>bit</> types treat any negative
3049 length as meaning <quote>all the rest of the string</> (Tom)
3053 The previous coding treated only -1 that way, and would produce an
3054 invalid result value for other negative values, possibly leading to
3055 a crash (CVE-2010-0442).
3061 Fix integer-to-bit-string conversions to handle the first fractional
3062 byte correctly when the output bit width is wider than the given
3063 integer by something other than a multiple of 8 bits (Tom)
3069 Fix some cases of pathologically slow regular expression matching (Tom)
3075 Fix assorted crashes in <type>xml</> processing caused by sloppy
3076 memory management (Tom)
3080 This is a back-patch of changes first applied in 8.4. The 8.3 code
3081 was known buggy, but the new code was sufficiently different to not
3082 want to back-patch it until it had gotten some field testing.
3088 Fix bug with trying to update a field of an element of a
3089 composite-type array column (Tom)
3095 Fix the <literal>STOP WAL LOCATION</> entry in backup history files to
3096 report the next WAL segment's name when the end location is exactly at a
3097 segment boundary (Itagaki Takahiro)
3103 Fix some more cases of temporary-file leakage (Heikki)
3107 This corrects a problem introduced in the previous minor release.
3108 One case that failed is when a plpgsql function returning set is
3109 called within another function's exception handler.
3115 Improve constraint exclusion processing of boolean-variable cases,
3116 in particular make it possible to exclude a partition that has a
3117 <quote>bool_column = false</> constraint (Tom)
3123 When reading <filename>pg_hba.conf</> and related files, do not treat
3124 <literal>@something</> as a file inclusion request if the <literal>@</>
3125 appears inside quote marks; also, never treat <literal>@</> by itself
3126 as a file inclusion request (Tom)
3130 This prevents erratic behavior if a role or database name starts with
3131 <literal>@</>. If you need to include a file whose path name
3132 contains spaces, you can still do so, but you must write
3133 <literal>@"/path to/file"</> rather than putting the quotes around
3134 the whole construct.
3140 Prevent infinite loop on some platforms if a directory is named as
3141 an inclusion target in <filename>pg_hba.conf</> and related files
3148 Fix possible infinite loop if <function>SSL_read</> or
3149 <function>SSL_write</> fails without setting <varname>errno</> (Tom)
3153 This is reportedly possible with some Windows versions of
3154 <application>openssl</>.
3160 Disallow <acronym>GSSAPI</> authentication on local connections,
3161 since it requires a hostname to function correctly (Magnus)
3167 Make <application>ecpg</> report the proper SQLSTATE if the connection
3168 disappears (Michael)
3174 Fix <application>psql</>'s <literal>numericlocale</> option to not
3175 format strings it shouldn't in latex and troff output formats (Heikki)
3181 Make <application>psql</> return the correct exit status (3) when
3182 <literal>ON_ERROR_STOP</> and <literal>--single-transaction</> are
3183 both specified and an error occurs during the implied <command>COMMIT</>
3190 Fix plpgsql failure in one case where a composite column is set to NULL
3197 Fix possible failure when calling PL/Perl functions from PL/PerlU
3198 or vice versa (Tim Bunce)
3204 Add <literal>volatile</> markings in PL/Python to avoid possible
3205 compiler-specific misbehavior (Zdenek Kotala)
3211 Ensure PL/Tcl initializes the Tcl interpreter fully (Tom)
3215 The only known symptom of this oversight is that the Tcl
3216 <literal>clock</> command misbehaves if using Tcl 8.5 or later.
3222 Prevent crash in <filename>contrib/dblink</> when too many key
3223 columns are specified to a <function>dblink_build_sql_*</> function
3224 (Rushabh Lathia, Joe Conway)
3230 Allow zero-dimensional arrays in <filename>contrib/ltree</> operations
3235 This case was formerly rejected as an error, but it's more convenient to
3236 treat it the same as a zero-element array. In particular this avoids
3237 unnecessary failures when an <type>ltree</> operation is applied to the
3238 result of <literal>ARRAY(SELECT ...)</> and the sub-select returns no
3245 Fix assorted crashes in <filename>contrib/xml2</> caused by sloppy
3246 memory management (Tom)
3252 Make building of <filename>contrib/xml2</> more robust on Windows
3259 Fix race condition in Windows signal handling (Radu Ilie)
3263 One known symptom of this bug is that rows in <structname>pg_listener</>
3264 could be dropped under heavy load.
3270 Update time zone data files to <application>tzdata</> release 2010e
3271 for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
3280 <sect1 id="release-8-3-9">
3281 <title>Release 8.3.9</title>
3284 <title>Release Date</title>
3285 <simpara>2009-12-14</simpara>
3289 This release contains a variety of fixes from 8.3.8.
3290 For information about new features in the 8.3 major release, see
3291 <xref linkend="release-8-3">.
3295 <title>Migration to Version 8.3.9</title>
3298 A dump/restore is not required for those running 8.3.X.
3299 However, if you are upgrading from a version earlier than 8.3.8,
3300 see the release notes for 8.3.8.
3306 <title>Changes</title>
3312 Protect against indirect security threats caused by index functions
3313 changing session-local state (Gurjeet Singh, Tom)
3317 This change prevents allegedly-immutable index functions from possibly
3318 subverting a superuser's session (CVE-2009-4136).
3324 Reject SSL certificates containing an embedded null byte in the common
3325 name (CN) field (Magnus)
3329 This prevents unintended matching of a certificate to a server or client
3330 name during SSL validation (CVE-2009-4034).
3336 Fix possible crash during backend-startup-time cache initialization (Tom)
3342 Avoid crash on empty thesaurus dictionary (Tom)
3348 Prevent signals from interrupting <literal>VACUUM</> at unsafe times
3353 This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled
3354 after it's already committed its tuple movements, as well as transient
3355 errors if a plain <literal>VACUUM</> is interrupted after having
3356 truncated the table.
3362 Fix possible crash due to integer overflow in hash table size
3367 This could occur with extremely large planner estimates for the size of
3368 a hashjoin's result.
3374 Fix very rare crash in <type>inet</>/<type>cidr</> comparisons (Chris
3381 Ensure that shared tuple-level locks held by prepared transactions are
3382 not ignored (Heikki)
3388 Fix premature drop of temporary files used for a cursor that is accessed
3389 within a subtransaction (Heikki)
3395 Fix memory leak in syslogger process when rotating to a new CSV logfile
3402 Fix Windows permission-downgrade logic (Jesse Morris)
3406 This fixes some cases where the database failed to start on Windows,
3407 often with misleading error messages such as <quote>could not locate
3408 matching postgres executable</quote>.
3414 Fix incorrect logic for GiST index page splits, when the split depends
3415 on a non-first column of the index (Paul Ramsey)
3421 Don't error out if recycling or removing an old WAL file fails at the
3422 end of checkpoint (Heikki)
3426 It's better to treat the problem as non-fatal and allow the checkpoint
3427 to complete. Future checkpoints will retry the removal. Such problems
3428 are not expected in normal operation, but have been seen to be
3429 caused by misdesigned Windows anti-virus and backup software.
3435 Ensure WAL files aren't repeatedly archived on Windows (Heikki)
3439 This is another symptom that could happen if some other process
3440 interfered with deletion of a no-longer-needed file.
3446 Fix PAM password processing to be more robust (Tom)
3450 The previous code is known to fail with the combination of the Linux
3451 <literal>pam_krb5</> PAM module with Microsoft Active Directory as the
3452 domain controller. It might have problems elsewhere too, since it was
3453 making unjustified assumptions about what arguments the PAM stack would
3460 Raise the maximum authentication token (Kerberos ticket) size in GSSAPI
3461 and SSPI authentication methods (Ian Turner)
3465 While the old 2000-byte limit was more than enough for Unix Kerberos
3466 implementations, tickets issued by Windows Domain Controllers can be
3473 Re-enable collection of access statistics for sequences (Akira Kurosawa)
3477 This used to work but was broken in 8.3.
3483 Fix processing of ownership dependencies during <literal>CREATE OR
3484 REPLACE FUNCTION</> (Tom)
3490 Fix incorrect handling of <literal>WHERE</>
3491 <replaceable>x</>=<replaceable>x</> conditions (Tom)
3495 In some cases these could get ignored as redundant, but they aren't
3496 — they're equivalent to <replaceable>x</> <literal>IS NOT NULL</>.
3502 Make text search parser accept underscores in XML attributes (Peter)
3508 Fix encoding handling in <type>xml</> binary input (Heikki)
3512 If the XML header doesn't specify an encoding, we now assume UTF-8 by
3513 default; the previous handling was inconsistent.
3519 Fix bug with calling <literal>plperl</> from <literal>plperlu</> or vice
3524 An error exit from the inner function could result in crashes due to
3525 failure to re-select the correct Perl interpreter for the outer function.
3531 Fix session-lifespan memory leak when a PL/Perl function is redefined
3538 Ensure that Perl arrays are properly converted to
3539 <productname>PostgreSQL</> arrays when returned by a set-returning
3540 PL/Perl function (Andrew Dunstan, Abhijit Menon-Sen)
3544 This worked correctly already for non-set-returning functions.
3550 Fix rare crash in exception processing in PL/Python (Peter)
3556 In <filename>contrib/pg_standby</>, disable triggering failover with a
3557 signal on Windows (Fujii Masao)
3561 This never did anything useful, because Windows doesn't have Unix-style
3562 signals, but recent changes made it actually crash.
3568 Ensure <application>psql</>'s flex module is compiled with the correct
3569 system header definitions (Tom)
3573 This fixes build failures on platforms where
3574 <literal>--enable-largefile</> causes incompatible changes in the
3581 Make the postmaster ignore any <literal>application_name</> parameter in
3582 connection request packets, to improve compatibility with future libpq
3589 Update the timezone abbreviation files to match current reality (Joachim
3594 This includes adding <literal>IDT</> and <literal>SGT</> to the default
3595 timezone abbreviation set.
3601 Update time zone data files to <application>tzdata</> release 2009s
3602 for DST law changes in Antarctica, Argentina, Bangladesh, Fiji,
3603 Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical
3604 corrections for Hong Kong.
3613 <sect1 id="release-8-3-8">
3614 <title>Release 8.3.8</title>
3617 <title>Release Date</title>
3618 <simpara>2009-09-09</simpara>
3622 This release contains a variety of fixes from 8.3.7.
3623 For information about new features in the 8.3 major release, see
3624 <xref linkend="release-8-3">.
3628 <title>Migration to Version 8.3.8</title>
3631 A dump/restore is not required for those running 8.3.X.
3632 However, if you have any hash indexes on <type>interval</> columns,
3633 you must <command>REINDEX</> them after updating to 8.3.8.
3634 Also, if you are upgrading from a version earlier than 8.3.5,
3635 see the release notes for 8.3.5.
3641 <title>Changes</title>
3647 Fix Windows shared-memory allocation code (Tsutomu Yamada, Magnus)
3651 This bug led to the often-reported <quote>could not reattach
3652 to shared memory</> error message.
3658 Force WAL segment switch during <function>pg_start_backup()</>
3663 This avoids corner cases that could render a base backup unusable.
3669 Disallow <command>RESET ROLE</> and <command>RESET SESSION
3670 AUTHORIZATION</> inside security-definer functions (Tom, Heikki)
3674 This covers a case that was missed in the previous patch that
3675 disallowed <command>SET ROLE</> and <command>SET SESSION
3676 AUTHORIZATION</> inside security-definer functions.
3683 Make <command>LOAD</> of an already-loaded loadable module
3688 Formerly, <command>LOAD</> would attempt to unload and re-load the
3689 module, but this is unsafe and not all that useful.
3695 Disallow empty passwords during LDAP authentication (Magnus)
3701 Fix handling of sub-SELECTs appearing in the arguments of
3702 an outer-level aggregate function (Tom)
3708 Fix bugs associated with fetching a whole-row value from the
3709 output of a Sort or Materialize plan node (Tom)
3715 Prevent <varname>synchronize_seqscans</> from changing the results of
3716 scrollable and <literal>WITH HOLD</> cursors (Tom)
3722 Revert planner change that disabled partial-index and constraint
3723 exclusion optimizations when there were more than 100 clauses in
3724 an AND or OR list (Tom)
3730 Fix hash calculation for data type <type>interval</> (Tom)
3734 This corrects wrong results for hash joins on interval values.
3735 It also changes the contents of hash indexes on interval columns.
3736 If you have any such indexes, you must <command>REINDEX</> them
3743 Treat <function>to_char(..., 'TH')</> as an uppercase ordinal
3744 suffix with <literal>'HH'</>/<literal>'HH12'</> (Heikki)
3748 It was previously handled as <literal>'th'</> (lowercase).
3754 Fix overflow for <literal>INTERVAL '<replaceable>x</> ms'</literal>
3755 when <replaceable>x</> is more than 2 million and integer
3756 datetimes are in use (Alex Hunsaker)
3762 Fix calculation of distance between a point and a line segment (Tom)
3766 This led to incorrect results from a number of geometric operators.
3772 Fix <type>money</> data type to work in locales where currency
3773 amounts have no fractional digits, e.g. Japan (Itagaki Takahiro)
3779 Fix <literal>LIKE</> for case where pattern contains <literal>%_</>
3786 Properly round datetime input like
3787 <literal>00:12:57.9999999999999999999999999999</> (Tom)
3793 Fix memory leaks in XML operations (Tom)
3799 Fix poor choice of page split point in GiST R-tree operator classes
3806 Ensure that a <quote>fast shutdown</> request will forcibly terminate
3807 open sessions, even if a <quote>smart shutdown</> was already in progress
3814 Avoid performance degradation in bulk inserts into GIN indexes
3815 when the input values are (nearly) in sorted order (Tom)
3821 Correctly enforce NOT NULL domain constraints in some contexts in
3828 Fix portability issues in plperl initialization (Andrew Dunstan)
3834 Fix <application>pg_ctl</> to not go into an infinite loop if
3835 <filename>postgresql.conf</> is empty (Jeff Davis)
3841 Improve <application>pg_dump</>'s efficiency when there are
3842 many large objects (Tamas Vincze)
3848 Use <literal>SIGUSR1</>, not <literal>SIGQUIT</>, as the
3849 failover signal for <application>pg_standby</> (Heikki)
3855 Make <application>pg_standby</>'s <literal>maxretries</> option
3856 behave as documented (Fujii Masao)
3862 Make <filename>contrib/hstore</> throw an error when a key or
3863 value is too long to fit in its data structure, rather than
3864 silently truncating it (Andrew Gierth)
3870 Fix <filename>contrib/xml2</>'s <function>xslt_process()</> to
3871 properly handle the maximum number of parameters (twenty) (Tom)
3877 Improve robustness of <application>libpq</>'s code to recover
3878 from errors during <command>COPY FROM STDIN</> (Tom)
3884 Avoid including conflicting readline and editline header files
3885 when both libraries are installed (Zdenek Kotala)
3891 Update time zone data files to <application>tzdata</> release 2009l
3892 for DST law changes in Bangladesh, Egypt, Jordan, Pakistan,
3893 Argentina/San_Luis, Cuba, Jordan (historical correction only),
3894 Mauritius, Morocco, Palestine, Syria, Tunisia.
3903 <sect1 id="release-8-3-7">
3904 <title>Release 8.3.7</title>
3907 <title>Release Date</title>
3908 <simpara>2009-03-16</simpara>
3912 This release contains a variety of fixes from 8.3.6.
3913 For information about new features in the 8.3 major release, see
3914 <xref linkend="release-8-3">.
3918 <title>Migration to Version 8.3.7</title>
3921 A dump/restore is not required for those running 8.3.X.
3922 However, if you are upgrading from a version earlier than 8.3.5,
3923 see the release notes for 8.3.5.
3929 <title>Changes</title>
3935 Prevent error recursion crashes when encoding conversion fails (Tom)
3939 This change extends fixes made in the last two minor releases for
3940 related failure scenarios. The previous fixes were narrowly tailored
3941 for the original problem reports, but we have now recognized that
3942 <emphasis>any</> error thrown by an encoding conversion function could
3943 potentially lead to infinite recursion while trying to report the
3944 error. The solution therefore is to disable translation and encoding
3945 conversion and report the plain-ASCII form of any error message,
3946 if we find we have gotten into a recursive error reporting situation.
3953 Disallow <command>CREATE CONVERSION</> with the wrong encodings
3954 for the specified conversion function (Heikki)
3958 This prevents one possible scenario for encoding conversion failure.
3959 The previous change is a backstop to guard against other kinds of
3960 failures in the same area.
3966 Fix <function>xpath()</> to not modify the path expression unless
3967 necessary, and to make a saner attempt at it when necessary (Andrew)
3971 The SQL standard suggests that <function>xpath</> should work on data
3972 that is a document fragment, but <application>libxml</> doesn't support
3973 that, and indeed it's not clear that this is sensible according to the
3974 XPath standard. <function>xpath</> attempted to work around this
3975 mismatch by modifying both the data and the path expression, but the
3976 modification was buggy and could cause valid searches to fail. Now,
3977 <function>xpath</> checks whether the data is in fact a well-formed
3978 document, and if so invokes <application>libxml</> with no change to the
3979 data or path expression. Otherwise, a different modification method
3980 that is somewhat less likely to fail is used.
3985 The new modification method is still not 100% satisfactory, and it
3986 seems likely that no real solution is possible. This patch should
3987 therefore be viewed as a band-aid to keep from breaking existing
3988 applications unnecessarily. It is likely that
3989 <productname>PostgreSQL</> 8.4 will simply reject use of
3990 <function>xpath</> on data that is not a well-formed document.
3997 Fix core dump when <function>to_char()</> is given format codes that
3998 are inappropriate for the type of the data argument (Tom)
4004 Fix possible failure in text search when C locale is used with
4005 a multi-byte encoding (Teodor)
4009 Crashes were possible on platforms where <type>wchar_t</> is narrower
4010 than <type>int</>; Windows in particular.
4016 Fix extreme inefficiency in text search parser's handling of an
4017 email-like string containing multiple <literal>@</> characters (Heikki)
4023 Fix planner problem with sub-<command>SELECT</> in the output list
4024 of a larger subquery (Tom)
4028 The known symptom of this bug is a <quote>failed to locate grouping
4029 columns</> error that is dependent on the datatype involved;
4030 but there could be other issues as well.
4036 Fix decompilation of <literal>CASE WHEN</> with an implicit coercion
4041 This mistake could lead to Assert failures in an Assert-enabled build,
4042 or an <quote>unexpected CASE WHEN clause</> error message in other
4043 cases, when trying to examine or dump a view.
4049 Fix possible misassignment of the owner of a TOAST table's rowtype (Tom)
4053 If <command>CLUSTER</> or a rewriting variant of <command>ALTER TABLE</>
4054 were executed by someone other than the table owner, the
4055 <structname>pg_type</> entry for the table's TOAST table would end up
4056 marked as owned by that someone. This caused no immediate problems,
4057 since the permissions on the TOAST rowtype aren't examined by any
4058 ordinary database operation. However, it could lead to unexpected
4059 failures if one later tried to drop the role that issued the command
4060 (in 8.1 or 8.2), or <quote>owner of data type appears to be invalid</>
4061 warnings from <application>pg_dump</> after having done so (in 8.3).
4067 Change <command>UNLISTEN</> to exit quickly if the current session has
4068 never executed any <command>LISTEN</> command (Tom)
4072 Most of the time this is not a particularly useful optimization, but
4073 since <command>DISCARD ALL</> invokes <command>UNLISTEN</>, the previous
4074 coding caused a substantial performance problem for applications that
4075 made heavy use of <command>DISCARD ALL</>.
4081 Fix PL/pgSQL to not treat <literal>INTO</> after <command>INSERT</> as
4082 an INTO-variables clause anywhere in the string, not only at the start;
4083 in particular, don't fail for <command>INSERT INTO</> within
4084 <command>CREATE RULE</> (Tom)
4090 Clean up PL/pgSQL error status variables fully at block exit
4091 (Ashesh Vashi and Dave Page)
4095 This is not a problem for PL/pgSQL itself, but the omission could cause
4096 the PL/pgSQL Debugger to crash while examining the state of a function.
4102 Retry failed calls to <function>CallNamedPipe()</> on Windows
4103 (Steve Marshall, Magnus)
4107 It appears that this function can sometimes fail transiently;
4108 we previously treated any failure as a hard error, which could
4109 confuse <command>LISTEN</>/<command>NOTIFY</> as well as other
4116 Add <literal>MUST</> (Mauritius Island Summer Time) to the default list
4117 of known timezone abbreviations (Xavier Bugaud)
4126 <sect1 id="release-8-3-6">
4127 <title>Release 8.3.6</title>
4130 <title>Release Date</title>
4131 <simpara>2009-02-02</simpara>
4135 This release contains a variety of fixes from 8.3.5.
4136 For information about new features in the 8.3 major release, see
4137 <xref linkend="release-8-3">.
4141 <title>Migration to Version 8.3.6</title>
4144 A dump/restore is not required for those running 8.3.X.
4145 However, if you are upgrading from a version earlier than 8.3.5,
4146 see the release notes for 8.3.5.
4152 <title>Changes</title>
4158 Make <command>DISCARD ALL</> release advisory locks, in addition
4159 to everything it already did (Tom)
4163 This was decided to be the most appropriate behavior. This could
4164 affect existing applications, however.
4170 Fix whole-index GiST scans to work correctly (Teodor)
4174 This error could cause rows to be lost if a table is clustered
4181 Fix crash of <literal>xmlconcat(NULL)</> (Peter)
4187 Fix possible crash in <literal>ispell</> dictionary if high-bit-set
4188 characters are used as flags (Teodor)
4192 This is known to be done by one widely available Norwegian dictionary,
4193 and the same condition may exist in others.
4199 Fix misordering of <application>pg_dump</> output for composite types
4204 The most likely problem was for user-defined operator classes to
4205 be dumped after indexes or views that needed them.
4211 Improve handling of URLs in <function>headline()</> function (Teodor)
4217 Improve handling of overlength headlines in <function>headline()</>
4224 Prevent possible Assert failure or misconversion if an encoding
4225 conversion is created with the wrong conversion function for the
4226 specified pair of encodings (Tom, Heikki)
4232 Fix possible Assert failure if a statement executed in PL/pgSQL is
4233 rewritten into another kind of statement, for example if an
4234 <command>INSERT</> is rewritten into an <command>UPDATE</> (Heikki)
4240 Ensure that a snapshot is available to datatype input functions (Tom)
4244 This primarily affects domains that are declared with <literal>CHECK</>
4245 constraints involving user-defined stable or immutable functions. Such
4246 functions typically fail if no snapshot has been set.
4252 Make it safer for SPI-using functions to be used within datatype I/O;
4253 in particular, to be used in domain check constraints (Tom)
4259 Avoid unnecessary locking of small tables in <command>VACUUM</>
4266 Fix a problem that sometimes kept <command>ALTER TABLE ENABLE/DISABLE
4267 RULE</> from being recognized by active sessions (Tom)
4273 Fix a problem that made <literal>UPDATE RETURNING tableoid</>
4274 return zero instead of the correct OID (Tom)
4280 Allow functions declared as taking <type>ANYARRAY</> to work on
4281 the <structname>pg_statistic</> columns of that type (Tom)
4285 This used to work, but was unintentionally broken in 8.3.
4291 Fix planner misestimation of selectivity when transitive equality
4292 is applied to an outer-join clause (Tom)
4296 This could result in bad plans for queries like
4297 <literal>... from a left join b on a.a1 = b.b1 where a.a1 = 42 ...</>
4303 Improve optimizer's handling of long <literal>IN</> lists (Tom)
4307 This change avoids wasting large amounts of time on such lists
4308 when constraint exclusion is enabled.
4314 Prevent synchronous scan during GIN index build (Tom)
4318 Because GIN is optimized for inserting tuples in increasing TID order,
4319 choosing to use a synchronous scan could slow the build by a factor of
4326 Ensure that the contents of a holdable cursor don't depend on the
4327 contents of TOAST tables (Tom)
4331 Previously, large field values in a cursor result might be represented
4332 as TOAST pointers, which would fail if the referenced table got dropped
4333 before the cursor is read, or if the large value is deleted and then
4334 vacuumed away. This cannot happen with an ordinary cursor,
4335 but it could with a cursor that is held past its creating transaction.
4341 Fix memory leak when a set-returning function is terminated without
4342 reading its whole result (Tom)
4348 Fix encoding conversion problems in XML functions when the database
4349 encoding isn't UTF-8 (Tom)
4355 Fix <filename>contrib/dblink</>'s
4356 <function>dblink_get_result(text,bool)</> function (Joe)
4362 Fix possible garbage output from <filename>contrib/sslinfo</> functions
4369 Fix incorrect behavior of <filename>contrib/tsearch2</> compatibility
4370 trigger when it's fired more than once in a command (Teodor)
4376 Fix possible mis-signaling in autovacuum (Heikki)
4382 Support running as a service on Windows 7 beta (Dave and Magnus)
4388 Fix <application>ecpg</>'s handling of varchar structs (Michael)
4394 Fix <application>configure</> script to properly report failure when
4395 unable to obtain linkage information for PL/Perl (Andrew)
4401 Make all documentation reference <literal>pgsql-bugs</> and/or
4402 <literal>pgsql-hackers</> as appropriate, instead of the
4403 now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</>
4410 Update time zone data files to <application>tzdata</> release 2009a (for
4411 Kathmandu and historical DST corrections in Switzerland, Cuba)
4420 <sect1 id="release-8-3-5">
4421 <title>Release 8.3.5</title>
4424 <title>Release Date</title>
4425 <simpara>2008-11-03</simpara>
4429 This release contains a variety of fixes from 8.3.4.
4430 For information about new features in the 8.3 major release, see
4431 <xref linkend="release-8-3">.
4435 <title>Migration to Version 8.3.5</title>
4438 A dump/restore is not required for those running 8.3.X.
4439 However, if you are upgrading from a version earlier than 8.3.1,
4440 see the release notes for 8.3.1. Also, if you were running a previous
4441 8.3.X release, it is recommended to <command>REINDEX</> all GiST
4442 indexes after the upgrade.
4448 <title>Changes</title>
4454 Fix GiST index corruption due to marking the wrong index entry
4455 <quote>dead</> after a deletion (Teodor)
4459 This would result in index searches failing to find rows they
4460 should have found. Corrupted indexes can be fixed with
4461 <command>REINDEX</>.
4467 Fix backend crash when the client encoding cannot represent a localized
4472 We have addressed similar issues before, but it would still fail if
4473 the <quote>character has no equivalent</> message itself couldn't
4474 be converted. The fix is to disable localization and send the plain
4475 ASCII error message when we detect such a situation.
4481 Fix possible crash in <type>bytea</>-to-XML mapping (Michael McMaster)
4487 Fix possible crash when deeply nested functions are invoked from
4494 Improve optimization of <replaceable>expression</> <literal>IN</>
4495 (<replaceable>expression-list</>) queries (Tom, per an idea from Robert
4500 Cases in which there are query variables on the right-hand side had been
4501 handled less efficiently in 8.2.x and 8.3.x than in prior versions.
4502 The fix restores 8.1 behavior for such cases.
4508 Fix mis-expansion of rule queries when a sub-<literal>SELECT</> appears
4509 in a function call in <literal>FROM</>, a multi-row <literal>VALUES</>
4510 list, or a <literal>RETURNING</> list (Tom)
4514 The usual symptom of this problem is an <quote>unrecognized node type</>
4521 Fix Assert failure during rescan of an <literal>IS NULL</>
4522 search of a GiST index (Teodor)
4528 Fix memory leak during rescan of a hashed aggregation plan (Neil)
4534 Ensure an error is reported when a newly-defined PL/pgSQL trigger
4535 function is invoked as a normal function (Tom)
4541 Force a checkpoint before <command>CREATE DATABASE</> starts to copy
4546 This prevents a possible failure if files had recently been deleted
4547 in the source database.
4553 Prevent possible collision of <structfield>relfilenode</> numbers
4554 when moving a table to another tablespace with <command>ALTER SET
4555 TABLESPACE</> (Heikki)
4559 The command tried to re-use the existing filename, instead of
4560 picking one that is known unused in the destination directory.
4566 Fix incorrect text search headline generation when single query
4567 item matches first word of text (Sushant Sinha)
4573 Fix improper display of fractional seconds in interval values when
4574 using a non-ISO datestyle in an <option>--enable-integer-datetimes</>
4581 Make <literal>ILIKE</> compare characters case-insensitively
4582 even when they're escaped (Andrew)
4588 Ensure <command>DISCARD</> is handled properly by statement logging (Tom)
4594 Fix incorrect logging of last-completed-transaction time during
4601 Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</>
4602 behave correctly when the passed tuple and tuple descriptor have
4603 different numbers of columns (Tom)
4607 This situation is normal when a table has had columns added or removed,
4608 but these two functions didn't handle it properly.
4609 The only likely consequence is an incorrect error indication.
4615 Mark <varname>SessionReplicationRole</> as <literal>PGDLLIMPORT</>
4616 so it can be used by <application>Slony</> on Windows (Magnus)
4622 Fix small memory leak when using <application>libpq</>'s
4623 <literal>gsslib</> parameter (Magnus)
4627 The space used by the parameter string was not freed at connection
4634 Ensure <application>libgssapi</> is linked into <application>libpq</>
4635 if needed (Markus Schaaf)
4641 Fix <application>ecpg</>'s parsing of <command>CREATE ROLE</> (Michael)
4647 Fix recent breakage of <literal>pg_ctl restart</> (Tom)
4653 Ensure <filename>pg_control</> is opened in binary mode
4658 <application>pg_controldata</> and <application>pg_resetxlog</>
4659 did this incorrectly, and so could fail on Windows.
4665 Update time zone data files to <application>tzdata</> release 2008i (for
4666 DST law changes in Argentina, Brazil, Mauritius, Syria)
4675 <sect1 id="release-8-3-4">
4676 <title>Release 8.3.4</title>
4679 <title>Release Date</title>
4680 <simpara>2008-09-22</simpara>
4684 This release contains a variety of fixes from 8.3.3.
4685 For information about new features in the 8.3 major release, see
4686 <xref linkend="release-8-3">.
4690 <title>Migration to Version 8.3.4</title>
4693 A dump/restore is not required for those running 8.3.X.
4694 However, if you are upgrading from a version earlier than 8.3.1,
4695 see the release notes for 8.3.1.
4701 <title>Changes</title>
4707 Fix bug in btree WAL recovery code (Heikki)
4711 Recovery failed if the WAL ended partway through a page split operation.
4717 Fix potential use of wrong cutoff XID for HOT page pruning (Alvaro)
4721 This error created a risk of corruption in system
4722 catalogs that are consulted by <command>VACUUM</>: dead tuple versions
4723 might be removed too soon. The impact of this on actual database
4724 operations would be minimal, since the system doesn't follow MVCC
4725 rules while examining catalogs, but it might result in transiently
4726 wrong output from <application>pg_dump</> or other client programs.
4732 Fix potential miscalculation of <structfield>datfrozenxid</> (Alvaro)
4736 This error may explain some recent reports of failure to remove old
4737 <structname>pg_clog</> data.
4743 Fix incorrect HOT updates after <structname>pg_class</> is reindexed
4748 Corruption of <structname>pg_class</> could occur if <literal>REINDEX
4749 TABLE pg_class</> was followed in the same session by an <literal>ALTER
4750 TABLE RENAME</> or <literal>ALTER TABLE SET SCHEMA</> command.
4756 Fix missed <quote>combo cid</> case (Karl Schnaitter)
4760 This error made rows incorrectly invisible to a transaction in which they
4761 had been deleted by multiple subtransactions that all aborted.
4767 Prevent autovacuum from crashing if the table it's currently
4768 checking is deleted at just the wrong time (Alvaro)
4774 Widen local lock counters from 32 to 64 bits (Tom)
4778 This responds to reports that the counters could overflow in
4779 sufficiently long transactions, leading to unexpected <quote>lock is
4780 already held</> errors.
4786 Fix possible duplicate output of tuples during a GiST index scan (Teodor)
4792 Regenerate foreign key checking queries from scratch when either
4793 table is modified (Tom)
4797 Previously, 8.3 would attempt to replan the query, but would work from
4798 previously generated query text. This led to failures if a
4799 table or column was renamed.
4805 Fix missed permissions checks when a view contains a simple
4806 <literal>UNION ALL</> construct (Heikki)
4810 Permissions for the referenced tables were checked properly, but not
4811 permissions for the view itself.
4817 Add checks in executor startup to ensure that the tuples produced by an
4818 <command>INSERT</> or <command>UPDATE</> will match the target table's
4819 current rowtype (Tom)
4823 This situation is believed to be impossible in 8.3, but it can happen in
4824 prior releases, so a check seems prudent.
4830 Fix possible repeated drops during <command>DROP OWNED</> (Tom)
4834 This would typically result in strange errors such as <quote>cache
4835 lookup failed for relation NNN</>.
4841 Fix several memory leaks in XML operations (Kris Jurka, Tom)
4847 Fix <function>xmlserialize()</> to raise error properly for
4848 unacceptable target data type (Tom)
4854 Fix a couple of places that mis-handled multibyte characters in text
4855 search configuration file parsing (Tom)
4859 Certain characters occurring in configuration files would always cause
4860 <quote>invalid byte sequence for encoding</> failures.
4866 Provide file name and line number location for all errors reported
4867 in text search configuration files (Tom)
4873 Fix <literal>AT TIME ZONE</> to first try to interpret its timezone
4874 argument as a timezone abbreviation, and only try it as a full timezone
4875 name if that fails, rather than the other way around as formerly (Tom)
4879 The timestamp input functions have always resolved ambiguous zone names
4880 in this order. Making <literal>AT TIME ZONE</> do so as well improves
4881 consistency, and fixes a compatibility bug introduced in 8.1:
4882 in ambiguous cases we now behave the same as 8.0 and before did,
4883 since in the older versions <literal>AT TIME ZONE</> accepted
4884 <emphasis>only</> abbreviations.
4890 Fix datetime input functions to correctly detect integer overflow when
4891 running on a 64-bit platform (Tom)
4897 Prevent integer overflows during units conversion when displaying a
4898 configuration parameter that has units (Tom)
4904 Improve performance of writing very long log messages to syslog (Tom)
4910 Allow spaces in the suffix part of an LDAP URL in
4911 <filename>pg_hba.conf</> (Tom)
4917 Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
4924 Fix planner bug that could improperly push down <literal>IS NULL</>
4925 tests below an outer join (Tom)
4929 This was triggered by occurrence of <literal>IS NULL</> tests for
4930 the same relation in all arms of an upper <literal>OR</> clause.
4936 Fix planner bug with nested sub-select expressions (Tom)
4940 If the outer sub-select has no direct dependency on the parent query,
4941 but the inner one does, the outer value might not get recalculated
4942 for new parent query rows.
4948 Fix planner to estimate that <literal>GROUP BY</> expressions yielding
4949 boolean results always result in two groups, regardless of the
4950 expressions' contents (Tom)
4954 This is very substantially more accurate than the regular <literal>GROUP
4955 BY</> estimate for certain boolean tests like <replaceable>col</>
4956 <literal>IS NULL</>.
4962 Fix PL/pgSQL to not fail when a <literal>FOR</> loop's target variable
4963 is a record containing composite-type fields (Tom)
4969 Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful
4970 about the encoding of data sent to or from Tcl (Tom)
4976 Improve performance of <function>PQescapeBytea()</> (Rudolf Leitgeb)
4982 On Windows, work around a Microsoft bug by preventing
4983 <application>libpq</> from trying to send more than 64kB per system call
4990 Fix <application>ecpg</> to handle variables properly in <command>SET</>
4997 Improve <application>pg_dump</> and <application>pg_restore</>'s
4998 error reporting after failure to send a SQL command (Tom)
5004 Fix <application>pg_ctl</> to properly preserve postmaster
5005 command-line arguments across a <literal>restart</> (Bruce)
5011 Fix erroneous WAL file cutoff point calculation in
5012 <application>pg_standby</> (Simon)
5018 Update time zone data files to <application>tzdata</> release 2008f (for
5019 DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco,
5020 Pakistan, Palestine, and Paraguay)
5029 <sect1 id="release-8-3-3">
5030 <title>Release 8.3.3</title>
5033 <title>Release Date</title>
5034 <simpara>2008-06-12</simpara>
5038 This release contains one serious and one minor bug fix over 8.3.2.
5039 For information about new features in the 8.3 major release, see
5040 <xref linkend="release-8-3">.
5044 <title>Migration to Version 8.3.3</title>
5047 A dump/restore is not required for those running 8.3.X.
5048 However, if you are upgrading from a version earlier than 8.3.1,
5049 see the release notes for 8.3.1.
5055 <title>Changes</title>
5061 Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom)
5065 Before this fix, a negative constant in a view or rule might be dumped
5066 as, say, <literal>-42::integer</>, which is subtly incorrect: it should
5067 be <literal>(-42)::integer</> due to operator precedence rules.
5068 Usually this would make little difference, but it could interact with
5069 another recent patch to cause
5070 <productname>PostgreSQL</> to reject what had been a valid
5071 <command>SELECT DISTINCT</> view query. Since this could result in
5072 <application>pg_dump</> output failing to reload, it is being treated
5073 as a high-priority fix. The only released versions in which dump
5074 output is actually incorrect are 8.3.1 and 8.2.7.
5080 Make <command>ALTER AGGREGATE ... OWNER TO</> update
5081 <structname>pg_shdepend</> (Tom)
5085 This oversight could lead to problems if the aggregate was later
5086 involved in a <command>DROP OWNED</> or <command>REASSIGN OWNED</>
5096 <sect1 id="release-8-3-2">
5097 <title>Release 8.3.2</title>
5100 <title>Release Date</title>
5101 <simpara>never released</simpara>
5105 This release contains a variety of fixes from 8.3.1.
5106 For information about new features in the 8.3 major release, see
5107 <xref linkend="release-8-3">.
5111 <title>Migration to Version 8.3.2</title>
5114 A dump/restore is not required for those running 8.3.X.
5115 However, if you are upgrading from a version earlier than 8.3.1,
5116 see the release notes for 8.3.1.
5122 <title>Changes</title>
5128 Fix <literal>ERRORDATA_STACK_SIZE exceeded</literal> crash that
5129 occurred on Windows when using UTF-8 database encoding and a different
5130 client encoding (Tom)
5136 Fix incorrect archive truncation point calculation for the
5137 <literal>%r</> macro in <varname>recovery_command</> parameters
5142 This could lead to data loss if a warm-standby script relied on
5143 <literal>%r</> to decide when to throw away WAL segment files.
5149 Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</> so that the new
5150 column is correctly checked to see if it's been initialized to all
5151 non-nulls (Brendan Jurd)
5155 Previous versions neglected to check this requirement at all.
5161 Fix <command>REASSIGN OWNED</> so that it works on procedural
5162 languages too (Alvaro)
5168 Fix problems with <command>SELECT FOR UPDATE/SHARE</> occurring as a
5169 subquery in a query with a non-<command>SELECT</> top-level operation
5176 Fix possible <command>CREATE TABLE</> failure when inheriting the
5177 <quote>same</> constraint from multiple parent relations that
5178 inherited that constraint from a common ancestor (Tom)
5184 Fix <function>pg_get_ruledef()</> to show the alias, if any, attached
5185 to the target table of an <command>UPDATE</> or <command>DELETE</>
5192 Restore the pre-8.3 behavior that an out-of-range block number in a
5193 TID being used in a TidScan plan results in silently not matching any
5198 8.3.0 and 8.3.1 threw an error instead.
5204 Fix GIN bug that could result in a <literal>too many LWLocks
5205 taken</literal> failure (Teodor)
5211 Fix broken GiST comparison function for <type>tsquery</> (Teodor)
5217 Fix <function>tsvector_update_trigger()</> and <function>ts_stat()</>
5218 to accept domains over the types they expect to work with (Tom)
5224 Fix failure to support enum data types as foreign keys (Tom)
5230 Avoid possible crash when decompressing corrupted data
5237 Fix race conditions between delayed unlinks and <command>DROP
5238 DATABASE</> (Heikki)
5242 In the worst case this could result in deleting a newly created table
5243 in a new database that happened to get the same OID as the
5244 recently-dropped one; but of course that is an extremely
5245 low-probability scenario.
5251 Repair two places where SIGTERM exit of a backend could leave corrupted
5252 state in shared memory (Tom)
5256 Neither case is very important if SIGTERM is used to shut down the
5257 whole database cluster together, but there was a problem if someone
5258 tried to SIGTERM individual backends.
5264 Fix possible crash due to incorrect plan generated for an
5265 <literal><replaceable>x</> IN (SELECT <replaceable>y</>
5266 FROM ...)</literal> clause when <replaceable>x</> and <replaceable>y</>
5267 have different data types; and make sure the behavior is semantically
5268 correct when the conversion from <replaceable>y</>'s type to
5269 <replaceable>x</>'s type is lossy (Tom)
5275 Fix oversight that prevented the planner from substituting known Param
5276 values as if they were constants (Tom)
5280 This mistake partially disabled optimization of unnamed
5281 extended-Query statements in 8.3.0 and 8.3.1: in particular the
5282 LIKE-to-indexscan optimization would never be applied if the LIKE
5283 pattern was passed as a parameter, and constraint exclusion
5284 depending on a parameter value didn't work either.
5290 Fix planner failure when an indexable <function>MIN</> or
5291 <function>MAX</> aggregate is used with <literal>DISTINCT</> or
5292 <literal>ORDER BY</> (Tom)
5298 Fix planner to ensure it never uses a <quote>physical tlist</> for a
5299 plan node that is feeding a Sort node (Tom)
5303 This led to the sort having to push around more data than it really
5304 needed to, since unused column values were included in the sorted
5311 Avoid unnecessary copying of query strings (Tom)
5315 This fixes a performance problem introduced in 8.3.0 when a very large
5316 number of commands are submitted as a single query string.
5322 Make <function>TransactionIdIsCurrentTransactionId()</> use binary
5323 search instead of linear search when checking child-transaction XIDs
5328 This fixes some cases in which 8.3.0 was significantly
5329 slower than earlier releases.
5335 Fix conversions between ISO-8859-5 and other encodings to handle
5336 Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with
5337 two dots) (Sergey Burladyan)
5343 Fix several datatype input functions, notably <function>array_in()</>,
5344 that were allowing unused bytes in their results to contain
5345 uninitialized, unpredictable values (Tom)
5349 This could lead to failures in which two apparently identical literal
5350 values were not seen as equal, resulting in the parser complaining
5351 about unmatched <literal>ORDER BY</> and <literal>DISTINCT</>
5358 Fix a corner case in regular-expression substring matching
5359 (<literal>substring(<replaceable>string</> from
5360 <replaceable>pattern</>)</literal>) (Tom)
5364 The problem occurs when there is a match to the pattern overall but
5365 the user has specified a parenthesized subexpression and that
5366 subexpression hasn't got a match. An example is
5367 <literal>substring('foo' from 'foo(bar)?')</>.
5368 This should return NULL, since <literal>(bar)</> isn't matched, but
5369 it was mistakenly returning the whole-pattern match instead (ie,
5376 Prevent cancellation of an auto-vacuum that was launched to prevent
5377 XID wraparound (Alvaro)
5383 Improve <command>ANALYZE</>'s handling of in-doubt tuples (those
5384 inserted or deleted by a not-yet-committed transaction) so that the
5385 counts it reports to the stats collector are more likely to be correct
5392 Fix <application>initdb</> to reject a relative path for its
5393 <literal>--xlogdir</> (<literal>-X</>) option (Tom)
5399 Make <application>psql</> print tab characters as an appropriate
5400 number of spaces, rather than <literal>\x09</literal> as was done in
5401 8.3.0 and 8.3.1 (Bruce)
5407 Update time zone data files to <application>tzdata</> release 2008c (for
5408 DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, and
5415 Add <function>ECPGget_PGconn()</> function to
5416 <application>ecpglib</> (Michael)
5422 Fix incorrect result from <application>ecpg</>'s
5423 <function>PGTYPEStimestamp_sub()</> function (Michael)
5429 Fix handling of continuation line markers in <application>ecpg</>
5436 Fix possible crashes in <filename>contrib/cube</> functions (Tom)
5442 Fix core dump in <filename>contrib/xml2</>'s
5443 <function>xpath_table()</> function when the input query returns a
5450 Fix <filename>contrib/xml2</>'s makefile to not override
5451 <literal>CFLAGS</>, and make it auto-configure properly for
5452 <application>libxslt</> present or not (Tom)
5461 <sect1 id="release-8-3-1">
5462 <title>Release 8.3.1</title>
5465 <title>Release Date</title>
5466 <simpara>2008-03-17</simpara>
5470 This release contains a variety of fixes from 8.3.0.
5471 For information about new features in the 8.3 major release, see
5472 <xref linkend="release-8-3">.
5476 <title>Migration to Version 8.3.1</title>
5479 A dump/restore is not required for those running 8.3.X.
5480 However, you might need to <command>REINDEX</> indexes on textual
5481 columns after updating, if you are affected by the Windows locale
5482 issue described below.
5488 <title>Changes</title>
5494 Fix character string comparison for Windows locales that consider
5495 different character combinations as equal (Tom)
5499 This fix applies only on Windows and only when using UTF-8
5500 database encoding. The same fix was made for all other cases
5501 over two years ago, but Windows with UTF-8 uses a separate code
5502 path that was not updated. If you are using a locale that
5503 considers some non-identical strings as equal, you may need to
5504 <command>REINDEX</> to fix existing indexes on textual columns.
5510 Repair corner-case bugs in <command>VACUUM FULL</> (Tom)
5514 A potential deadlock between concurrent <command>VACUUM FULL</>
5515 operations on different system catalogs was introduced in 8.2.
5516 This has now been corrected. 8.3 made this worse because the
5517 deadlock could occur within a critical code section, making it
5518 a PANIC rather than just ERROR condition.
5522 Also, a <command>VACUUM FULL</> that failed partway through
5523 vacuuming a system catalog could result in cache corruption in
5524 concurrent database sessions.
5528 Another <command>VACUUM FULL</> bug introduced in 8.3 could
5529 result in a crash or out-of-memory report when dealing with
5530 pages containing no live tuples.
5536 Fix misbehavior of foreign key checks involving <type>character</>
5537 or <type>bit</> columns (Tom)
5541 If the referencing column were of a different but compatible type
5542 (for instance <type>varchar</>), the constraint was enforced incorrectly.
5548 Avoid needless deadlock failures in no-op foreign-key checks (Stephan
5555 Fix possible core dump when re-planning a prepared query (Tom)
5559 This bug affected only protocol-level prepare operations, not
5560 SQL <command>PREPARE</>, and so tended to be seen only with
5561 JDBC, DBI, and other client-side drivers that use prepared
5568 Fix possible failure when re-planning a query that calls an SPI-using
5575 Fix failure in row-wise comparisons involving columns of different
5582 Fix longstanding <command>LISTEN</>/<command>NOTIFY</>
5583 race condition (Tom)
5587 In rare cases a session that had just executed a
5588 <command>LISTEN</> might not get a notification, even though
5589 one would be expected because the concurrent transaction executing
5590 <command>NOTIFY</> was observed to commit later.
5594 A side effect of the fix is that a transaction that has executed
5595 a not-yet-committed <command>LISTEN</> command will not see any
5596 row in <structname>pg_listener</> for the <command>LISTEN</>,
5597 should it choose to look; formerly it would have. This behavior
5598 was never documented one way or the other, but it is possible that
5599 some applications depend on the old behavior.
5605 Disallow <command>LISTEN</> and <command>UNLISTEN</> within a
5606 prepared transaction (Tom)
5610 This was formerly allowed but trying to do it had various unpleasant
5611 consequences, notably that the originating backend could not exit
5612 as long as an <command>UNLISTEN</> remained uncommitted.
5618 Disallow dropping a temporary table within a
5619 prepared transaction (Heikki)
5623 This was correctly disallowed by 8.1, but the check was inadvertently
5624 broken in 8.2 and 8.3.
5630 Fix rare crash when an error occurs during a query using a hash index
5637 Fix incorrect comparison of <type>tsquery</> values (Teodor)
5643 Fix incorrect behavior of <literal>LIKE</> with non-ASCII characters
5644 in single-byte encodings (Rolf Jentsch)
5650 Disable <function>xmlvalidate</> (Tom)
5654 This function should have been removed before 8.3 release, but
5655 was inadvertently left in the source code. It poses a small
5656 security risk since unprivileged users could use it to read the
5657 first few characters of any file accessible to the server.
5663 Fix memory leaks in certain usages of set-returning functions (Neil)
5669 Make <function>encode(<replaceable>bytea</>, 'escape')</> convert all
5670 high-bit-set byte values into <literal>\</><replaceable>nnn</> octal
5671 escape sequences (Tom)
5675 This is necessary to avoid encoding problems when the database
5676 encoding is multi-byte. This change could pose compatibility issues
5677 for applications that are expecting specific results from
5678 <function>encode</>.
5684 Fix input of datetime values for February 29 in years BC (Tom)
5688 The former coding was mistaken about which years were leap years.
5694 Fix <quote>unrecognized node type</> error in some variants of
5695 <command>ALTER OWNER</> (Tom)
5701 Avoid tablespace permissions errors in <command>CREATE TABLE LIKE
5702 INCLUDING INDEXES</> (Tom)
5708 Ensure <structname>pg_stat_activity</>.<structfield>waiting</> flag
5709 is cleared when a lock wait is aborted (Tom)
5715 Fix handling of process permissions on Windows Vista (Dave, Magnus)
5719 In particular, this fix allows starting the server as the Administrator
5726 Update time zone data files to <application>tzdata</> release 2008a
5727 (in particular, recent Chile changes); adjust timezone abbreviation
5728 <literal>VET</> (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom)
5734 Fix <application>ecpg</> problems with arrays (Michael)
5740 Fix <application>pg_ctl</> to correctly extract the postmaster's port
5741 number from command-line options (Itagaki Takahiro, Tom)
5745 Previously, <literal>pg_ctl start -w</> could try to contact the
5746 postmaster on the wrong port, leading to bogus reports of startup
5753 Use <option>-fwrapv</> to defend against possible misoptimization
5754 in recent <application>gcc</> versions (Tom)
5758 This is known to be necessary when building <productname>PostgreSQL</>
5759 with <application>gcc</> 4.3 or later.
5765 Enable building <filename>contrib/uuid-ossp</> with MSVC (Hiroshi Saito)
5774 <sect1 id="release-8-3">
5775 <title>Release 8.3</title>
5778 <title>Release Date</title>
5779 <simpara>2008-02-04</simpara>
5783 <title>Overview</title>
5786 With significant new functionality and performance enhancements,
5787 this release represents a major leap forward for
5788 <productname>PostgreSQL</>. This was made possible by a growing
5789 community that has dramatically accelerated the pace of
5790 development. This release adds the following major features:
5797 Full text search is integrated into the core database system
5803 Support for the SQL/XML standard, including new operators and an
5804 <type>XML</type> data type
5810 Enumerated data types (<type>ENUM</type>)
5816 Arrays of composite types
5822 Universally Unique Identifier (<type>UUID</>) data type
5828 Add control over whether <literal>NULL</>s sort first or last
5840 Server configuration parameters can now be set on a per-function
5847 User-defined types can now have type modifiers
5853 Automatically re-plan cached queries when table
5854 definitions change or statistics are updated
5860 Numerous improvements in logging and statistics collection
5866 Support Security Service Provider Interface (<acronym>SSPI</>) for
5867 authentication on Windows
5873 Support multiple concurrent autovacuum processes, and other
5874 autovacuum improvements
5880 Allow the whole <productname>PostgreSQL</> distribution to be compiled
5881 with <productname>Microsoft Visual C++</>
5888 Major performance improvements are listed below. Most of
5889 these enhancements are automatic and do not require user changes or
5897 Asynchronous commit delays writes to WAL during transaction commit
5903 Checkpoint writes can be spread over a longer time period to smooth
5904 the I/O spike during each checkpoint
5910 Heap-Only Tuples (<acronym>HOT</>) accelerate space reuse for
5911 most <command>UPDATE</>s and <command>DELETE</>s
5917 Just-in-time background writer strategy improves disk write
5924 Using non-persistent transaction IDs for read-only transactions
5925 reduces overhead and <command>VACUUM</> requirements
5931 Per-field and per-row storage overhead has been reduced
5937 Large sequential scans no longer force out frequently used
5944 Concurrent large sequential scans can now share disk reads
5950 <literal>ORDER BY ... LIMIT</> can be done without sorting
5957 The above items are explained in more detail in the sections below.
5963 <title>Migration to Version 8.3</title>
5966 A dump/restore using <application>pg_dump</application> is
5967 required for those wishing to migrate data from any previous
5972 Observe the following incompatibilities:
5976 <title>General</title>
5981 Non-character data types are no longer automatically cast to
5982 <type>TEXT</> (Peter, Tom)
5986 Previously, if a non-character value was supplied to an operator or
5987 function that requires <type>text</> input, it was automatically
5988 cast to <type>text</>, for most (though not all) built-in data types.
5989 This no longer happens: an explicit cast to <type>text</> is now
5990 required for all non-character-string types. For example, these
5991 expressions formerly worked:
5994 substr(current_date, 1, 4)
5998 but will now draw <quote>function does not exist</> and <quote>operator
5999 does not exist</> errors respectively. Use an explicit cast instead:
6002 substr(current_date::text, 1, 4)
6006 (Of course, you can use the more verbose <literal>CAST()</> syntax too.)
6007 The reason for the change is that these automatic casts too often caused
6008 surprising behavior. An example is that in previous releases, this
6009 expression was accepted but did not do what was expected:
6012 current_date < 2017-11-17
6015 This is actually comparing a date to an integer, which should be
6016 (and now is) rejected — but in the presence of automatic
6017 casts both sides were cast to <type>text</> and a textual comparison
6018 was done, because the <literal>text < text</> operator was able
6019 to match the expression when no other <literal><</> operator could.
6023 Types <type>char(<replaceable>n</>)</type> and
6024 <type>varchar(<replaceable>n</>)</type> still cast to <type>text</>
6025 automatically. Also, automatic casting to <type>text</> still works for
6026 inputs to the concatenation (<literal>||</>) operator, so long as least
6027 one input is a character-string type.
6033 Full text search features from <filename>contrib/tsearch2</> have
6034 been moved into the core server, with some minor syntax changes
6038 <filename>contrib/tsearch2</> now contains a compatibility
6045 <literal>ARRAY(SELECT ...)</literal>, where the <command>SELECT</>
6046 returns no rows, now returns an empty array, rather than NULL
6053 The array type name for a base data type is no longer always the base
6054 type's name with an underscore prefix
6058 The old naming convention is still honored when possible, but
6059 application code should no longer depend on it. Instead
6060 use the new <literal>pg_type.typarray</literal> column to
6061 identify the array data type associated with a given type.
6067 <literal>ORDER BY ... USING</> <replaceable>operator</> must now
6068 use a less-than or greater-than <replaceable>operator</> that is
6069 defined in a btree operator class
6073 This restriction was added to prevent inconsistent results.
6079 <command>SET LOCAL</command> changes now persist until
6080 the end of the outermost transaction, unless rolled back (Tom)
6084 Previously <command>SET LOCAL</command>'s effects were lost
6085 after subtransaction commit (<command>RELEASE SAVEPOINT</>
6086 or exit from a PL/pgSQL exception block).
6092 Commands rejected in transaction blocks are now also rejected in
6093 multiple-statement query strings (Tom)
6097 For example, <literal>"BEGIN; DROP DATABASE; COMMIT"</> will now be
6098 rejected even if submitted as a single query message.
6104 <command>ROLLBACK</> outside a transaction block now
6105 issues <literal>NOTICE</> instead of <literal>WARNING</> (Bruce)
6111 Prevent <command>NOTIFY</command>/<command>LISTEN</command>/<command>UNLISTEN</command>
6112 from accepting schema-qualified names (Bruce)
6116 Formerly, these commands accepted <literal>schema.relation</> but
6117 ignored the schema part, which was confusing.
6123 <command>ALTER SEQUENCE</> no longer affects the sequence's
6124 <function>currval()</> state (Tom)
6130 Foreign keys now must match indexable conditions for
6131 cross-data-type references (Tom)
6135 This improves semantic consistency and helps avoid
6136 performance problems.
6142 Restrict object size functions to users who have reasonable
6143 permissions to view such information (Tom)
6147 For example, <function>pg_database_size()</function> now requires
6148 <literal>CONNECT</> permission, which is granted to everyone by
6149 default. <function>pg_tablespace_size()</function> requires
6150 <literal>CREATE</> permission in the tablespace, or is allowed if
6151 the tablespace is the default tablespace for the database.
6157 Remove the undocumented <literal>!!=</> (not in) operator (Tom)
6161 <literal>NOT IN (SELECT ...)</literal> is the proper way to
6162 perform this operation.
6168 Internal hashing functions are now more uniformly-distributed (Tom)
6172 If application code was computing and storing hash values using
6173 internal <productname>PostgreSQL</> hashing functions, the hash
6174 values must be regenerated.
6180 C-code conventions for handling variable-length data values
6181 have changed (Greg Stark, Tom)
6185 The new <function>SET_VARSIZE()</> macro <emphasis>must</> be used
6186 to set the length of generated <type>varlena</> values. Also, it
6187 might be necessary to expand (<quote>de-TOAST</quote>) input values
6194 Continuous archiving no longer reports each successful archive
6195 operation to the server logs unless <literal>DEBUG</> level is used
6205 <title>Configuration Parameters</title>
6211 Numerous changes in administrative server parameters
6215 <varname>bgwriter_lru_percent</>,
6216 <varname>bgwriter_all_percent</>,
6217 <varname>bgwriter_all_maxpages</>,
6218 <varname>stats_start_collector</>, and
6219 <varname>stats_reset_on_server_start</> are removed.
6220 <varname>redirect_stderr</> is renamed to
6221 <varname>logging_collector</>.
6222 <varname>stats_command_string</> is renamed to
6223 <varname>track_activities</>.
6224 <varname>stats_block_level</> and <varname>stats_row_level</>
6225 are merged into <varname>track_counts</>.
6226 A new boolean configuration parameter, <varname>archive_mode</>,
6227 controls archiving. Autovacuum's default settings have changed.
6233 Remove <varname>stats_start_collector</varname> parameter (Tom)
6237 We now always start the collector process, unless <acronym>UDP</>
6238 socket creation fails.
6244 Remove <varname>stats_reset_on_server_start</varname> parameter (Tom)
6248 This was removed because <function>pg_stat_reset()</function>
6249 can be used for this purpose.
6255 Commenting out a parameter in <filename>postgresql.conf</> now
6256 causes it to revert to its default value (Joachim Wieland)
6260 Previously, commenting out an entry left the parameter's value unchanged
6261 until the next server restart.
6271 <title>Character Encodings</title>
6277 Add more checks for invalidly-encoded data (Andrew)
6281 This change plugs some holes that existed in literal backslash
6282 escape string processing and <command>COPY</command> escape
6283 processing. Now the de-escaped string is rechecked to see if the
6284 result created an invalid multi-byte character.
6290 Disallow database encodings that are inconsistent with the server's
6291 locale setting (Tom)
6295 On most platforms, <literal>C</> locale is the only locale that
6296 will work with any database encoding. Other locale settings imply
6297 a specific encoding and will misbehave if the database encoding
6298 is something different. (Typical symptoms include bogus textual
6299 sort order and wrong results from <function>upper()</> or
6300 <function>lower()</>.) The server now rejects attempts to create
6301 databases that have an incompatible encoding.
6307 Ensure that <function>chr()</function> cannot create
6308 invalidly-encoded values (Andrew)
6312 In UTF8-encoded databases the argument of <function>chr()</function> is
6313 now treated as a Unicode code point. In other multi-byte encodings
6314 <function>chr()</function>'s argument must designate a 7-bit ASCII
6315 character. Zero is no longer accepted.
6316 <function>ascii()</function> has been adjusted to match.
6322 Adjust <function>convert()</function> behavior to ensure encoding
6327 The two argument form of <function>convert()</function> has been
6328 removed. The three argument form now takes a <type>bytea</type>
6329 first argument and returns a <type>bytea</type>. To cover the
6330 loss of functionality, three new functions have been added:
6336 <function>convert_from(bytea, name)</function> returns
6337 <type>text</> — converts the first argument from the named
6338 encoding to the database encoding
6344 <function>convert_to(text, name)</function> returns
6345 <type>bytea</> — converts the first argument from the
6346 database encoding to the named encoding
6352 <function>length(bytea, name)</function> returns
6353 <type>integer</> — gives the length of the first
6354 argument in characters in the named encoding
6362 Remove <literal>convert(argument USING conversion_name)</literal>
6367 Its behavior did not match the SQL standard.
6373 Make JOHAB encoding client-only (Tatsuo)
6377 JOHAB is not safe as a server-side encoding.
6388 <title>Changes</title>
6391 Below you will find a detailed account of the
6392 changes between <productname>PostgreSQL</productname> 8.3 and
6393 the previous major release.
6397 <title>Performance</title>
6402 Asynchronous commit delays writes to WAL during transaction commit
6407 This feature dramatically increases performance for short data-modifying
6408 transactions. The disadvantage is that because disk writes are delayed,
6409 if the database or operating system crashes before data is written to
6410 the disk, committed data will be lost. This feature is useful for
6411 applications that can accept some data loss. Unlike turning off
6412 <varname>fsync</varname>, using asynchronous commit does not put
6413 database consistency at risk; the worst case is that after a crash the
6414 last few reportedly-committed transactions might not be committed after
6416 This feature is enabled by turning off <varname>synchronous_commit</>
6417 (which can be done per-session or per-transaction, if some transactions
6418 are critical and others are not).
6419 <varname>wal_writer_delay</> can be adjusted to control the maximum
6420 delay before transactions actually reach disk.
6426 Checkpoint writes can be spread over a longer time period to smooth
6427 the I/O spike during each checkpoint (Itagaki Takahiro and Heikki
6432 Previously all modified buffers were forced to disk as quickly as
6434 checkpoint, causing an I/O spike that decreased server performance.
6435 This new approach spreads out disk writes during checkpoints,
6436 reducing peak I/O usage. (User-requested and shutdown checkpoints
6437 are still written as quickly as possible.)
6443 Heap-Only Tuples (<acronym>HOT</>) accelerate space reuse for most
6444 <command>UPDATE</>s and <command>DELETE</>s (Pavan Deolasee, with
6445 ideas from many others)
6449 <command>UPDATE</>s and <command>DELETE</>s leave dead tuples
6450 behind, as do failed <command>INSERT</>s. Previously only
6451 <command>VACUUM</> could reclaim space taken by dead tuples. With
6452 <acronym>HOT</> dead tuple space can be automatically reclaimed at
6453 the time of <command>INSERT</> or <command>UPDATE</> if no changes
6454 are made to indexed columns. This allows for more consistent
6455 performance. Also, <acronym>HOT</> avoids adding duplicate index
6462 Just-in-time background writer strategy improves disk write
6463 efficiency (Greg Smith, Itagaki Takahiro)
6467 This greatly reduces the need for manual tuning of the background
6474 Per-field and per-row storage overhead have been reduced
6475 (Greg Stark, Heikki Linnakangas)
6479 Variable-length data types with data values less than 128 bytes long
6480 will see a storage decrease of 3 to 6 bytes. For example, two adjacent
6481 <type>char(1)</type> fields now use 4 bytes instead of 16. Row headers
6482 are also 4 bytes shorter than before.
6488 Using non-persistent transaction IDs for read-only transactions
6489 reduces overhead and <command>VACUUM</> requirements (Florian Pflug)
6493 Non-persistent transaction IDs do not increment the global
6494 transaction counter. Therefore, they reduce the load on
6495 <structname>pg_clog</> and increase the time between forced
6496 vacuums to prevent transaction ID wraparound.
6498 improvements were also made that should improve concurrency.
6504 Avoid incrementing the command counter after a read-only command (Tom)
6508 There was formerly a hard limit of 2<superscript>32</>
6509 (4 billion) commands per transaction. Now only commands that
6510 actually changed the database count, so while this limit still
6511 exists, it should be significantly less annoying.
6517 Create a dedicated <acronym>WAL</> writer process to off-load
6518 work from backends (Simon)
6524 Skip unnecessary WAL writes for <command>CLUSTER</command> and
6525 <command>COPY</command> (Simon)
6529 Unless WAL archiving is enabled, the system now avoids WAL writes
6530 for <command>CLUSTER</command> and just <function>fsync()</>s the
6531 table at the end of the command. It also does the same for
6532 <command>COPY</command> if the table was created in the same
6539 Large sequential scans no longer force out frequently used
6540 cached pages (Simon, Heikki, Tom)
6546 Concurrent large sequential scans can now share disk reads (Jeff Davis)
6550 This is accomplished by starting the new sequential scan in the
6551 middle of the table (where another sequential scan is already
6552 in-progress) and wrapping around to the beginning to finish. This
6553 can affect the order of returned rows in a query that does not
6554 specify <literal>ORDER BY</>. The <varname>synchronize_seqscans</>
6555 configuration parameter can be used to disable this if necessary.
6561 <literal>ORDER BY ... LIMIT</> can be done without sorting
6566 This is done by sequentially scanning the table and tracking just
6567 the <quote>top N</> candidate rows, rather than performing a
6568 full sort of the entire table. This is useful when there is no
6569 matching index and the <literal>LIMIT</> is not large.
6575 Put a rate limit on messages sent to the statistics
6576 collector by backends
6581 This reduces overhead for short transactions, but might sometimes
6582 increase the delay before statistics are tallied.
6588 Improve hash join performance for cases with many NULLs (Tom)
6594 Speed up operator lookup for cases with non-exact datatype matches (Tom)
6603 <title>Server</title>
6608 Autovacuum is now enabled by default (Alvaro)
6612 Several changes were made to eliminate disadvantages of having
6613 autovacuum enabled, thereby justifying the change in default.
6614 Several other autovacuum parameter defaults were also modified.
6620 Support multiple concurrent autovacuum processes (Alvaro, Itagaki
6625 This allows multiple vacuums to run concurrently. This prevents
6626 vacuuming of a large table from delaying vacuuming of smaller tables.
6632 Automatically re-plan cached queries when table
6633 definitions change or statistics are updated (Tom)
6637 Previously PL/pgSQL functions that referenced temporary tables
6638 would fail if the temporary table was dropped and recreated
6639 between function invocations, unless <literal>EXECUTE</> was
6640 used. This improvement fixes that problem and many related issues.
6646 Add a <varname>temp_tablespaces</varname> parameter to control
6647 the tablespaces for temporary tables and files (Jaime Casanova,
6648 Albert Cervera, Bernd Helmle)
6652 This parameter defines a list of tablespaces to be used. This
6653 enables spreading the I/O load across multiple tablespaces. A random
6654 tablespace is chosen each time a temporary object is created.
6655 Temporary files are no longer stored in per-database
6656 <filename>pgsql_tmp/</filename> directories but in per-tablespace
6663 Place temporary tables' TOAST tables in special schemas named
6664 <literal>pg_toast_temp_<replaceable>nnn</></literal> (Tom)
6668 This allows low-level code to recognize these tables as temporary,
6669 which enables various optimizations such as not WAL-logging changes
6670 and using local rather than shared buffers for access. This also
6671 fixes a bug wherein backends unexpectedly held open file references
6672 to temporary TOAST tables.
6678 Fix problem that a constant flow of new connection requests could
6679 indefinitely delay the postmaster from completing a shutdown or
6680 a crash restart (Tom)
6686 Guard against a very-low-probability data loss scenario by preventing
6687 re-use of a deleted table's relfilenode until after the next
6694 Fix <command>CREATE CONSTRAINT TRIGGER</>
6695 to convert old-style foreign key trigger definitions into regular
6696 foreign key constraints (Tom)
6700 This will ease porting of foreign key constraints carried forward from
6701 pre-7.3 databases, if they were never converted using
6702 <filename>contrib/adddepend</>.
6708 Fix <literal>DEFAULT NULL</> to override inherited defaults (Tom)
6712 <literal>DEFAULT NULL</> was formerly considered a noise phrase, but it
6713 should (and now does) override non-null defaults that would otherwise
6714 be inherited from a parent table or domain.
6720 Add new encodings EUC_JIS_2004 and SHIFT_JIS_2004 (Tatsuo)
6724 These new encodings can be converted to and from UTF-8.
6730 Change server startup log message from <quote>database system is
6731 ready</quote> to <quote>database system is ready to accept
6732 connections</quote>, and adjust its timing
6736 The message now appears only when the postmaster is really ready
6737 to accept connections.
6746 <title>Monitoring</title>
6751 Add <varname>log_autovacuum_min_duration</varname> parameter to
6752 support configurable logging of autovacuum activity (Simon, Alvaro)
6758 Add <varname>log_lock_waits</varname> parameter to log lock waiting
6765 Add <varname>log_temp_files</varname> parameter to log temporary
6766 file usage (Bill Moran)
6772 Add <varname>log_checkpoints</varname> parameter to improve logging
6773 of checkpoints (Greg Smith, Heikki)
6779 <varname>log_line_prefix</varname> now supports
6780 <literal>%s</literal> and <literal>%c</literal> escapes in all
6785 Previously these escapes worked only for user sessions, not for
6786 background database processes.
6792 Add <varname>log_restartpoints</varname> to control logging of
6793 point-in-time recovery restart points (Simon)
6799 Last transaction end time is now logged at end of recovery and at
6800 each logged restart point (Simon)
6806 Autovacuum now reports its activity start time in
6807 <literal>pg_stat_activity</literal> (Tom)
6813 Allow server log output in comma-separated value (CSV) format (Arul
6814 Shaji, Greg Smith, Andrew Dunstan)
6818 CSV-format log files can easily be loaded into a database table for
6819 subsequent analysis.
6825 Use PostgreSQL-supplied timezone support for formatting timestamps
6826 displayed in the server log (Tom)
6830 This avoids Windows-specific problems with localized time zone
6831 names that are in the wrong encoding. There is a new
6832 <varname>log_timezone</> parameter that controls the timezone
6833 used in log messages, independently of the client-visible
6834 <varname>timezone</> parameter.
6840 New system view <literal>pg_stat_bgwriter</literal> displays
6841 statistics about background writer activity (Magnus)
6847 Add new columns for database-wide tuple statistics to
6848 <literal>pg_stat_database</literal> (Magnus)
6854 Add an <literal>xact_start</literal> (transaction start time) column to
6855 <literal>pg_stat_activity</literal> (Neil)
6859 This makes it easier to identify long-running transactions.
6865 Add <literal>n_live_tuples</> and <literal>n_dead_tuples</> columns
6866 to <literal>pg_stat_all_tables</literal> and related views (Glen
6873 Merge <varname>stats_block_level</> and <varname>stats_row_level</>
6874 parameters into a single parameter <varname>track_counts</>, which
6875 controls all messages sent to the statistics collector process
6882 Rename <varname>stats_command_string</varname> parameter to
6883 <varname>track_activities</varname> (Tom)
6889 Fix statistical counting of live and dead tuples to recognize that
6890 committed and aborted transactions have different effects (Tom)
6899 <title>Authentication</title>
6904 Support Security Service Provider Interface (<acronym>SSPI</>) for
6905 authentication on Windows (Magnus)
6911 Support GSSAPI authentication (Henry Hotz, Magnus)
6915 This should be preferred to native Kerberos authentication because
6916 GSSAPI is an industry standard.
6922 Support a global SSL configuration file (Victor Wagner)
6928 Add <varname>ssl_ciphers</> parameter to control accepted SSL ciphers
6935 Add a Kerberos realm parameter, <varname>krb_realm</> (Magnus)
6944 <title>Write-Ahead Log (<acronym>WAL</>) and Continuous Archiving</title>
6949 Change the timestamps recorded in transaction WAL records from
6950 time_t to TimestampTz representation (Tom)
6954 This provides sub-second resolution in WAL, which can be useful for
6955 point-in-time recovery.
6961 Reduce WAL disk space needed by warm standby servers (Simon)
6965 This change allows a warm standby server to pass the name of the earliest
6966 still-needed WAL file to the recovery script, allowing automatic removal
6967 of no-longer-needed WAL files. This is done using <literal>%r</> in
6968 the <varname>restore_command</varname> parameter of
6969 <filename>recovery.conf</filename>.
6975 New boolean configuration parameter, <varname>archive_mode</>,
6976 controls archiving (Simon)
6980 Previously setting <varname>archive_command</> to an empty string
6981 turned off archiving. Now <varname>archive_mode</> turns archiving
6982 on and off, independently of <varname>archive_command</>. This is
6983 useful for stopping archiving temporarily.
6992 <title>Queries</title>
6997 Full text search is integrated into the core database
6998 system (Teodor, Oleg)
7002 Text search has been improved, moved into the core code, and is now
7003 installed by default. <filename>contrib/tsearch2</> now contains
7004 a compatibility interface.
7010 Add control over whether <literal>NULL</>s sort first or last (Teodor, Tom)
7014 The syntax is <literal>ORDER BY ... NULLS FIRST/LAST</>.
7020 Allow per-column ascending/descending (<literal>ASC</>/<literal>DESC</>)
7021 ordering options for indexes (Teodor, Tom)
7025 Previously a query using <literal>ORDER BY</> with mixed
7026 <literal>ASC</>/<literal>DESC</> specifiers could not fully use
7027 an index. Now an index can be fully used in such cases if the
7028 index was created with matching
7029 <literal>ASC</>/<literal>DESC</> specifications.
7030 <literal>NULL</> sort order within an index can be controlled, too.
7036 Allow <literal>col IS NULL</> to use an index (Teodor)
7042 Updatable cursors (Arul Shaji, Tom)
7046 This eliminates the need to reference a primary key to
7047 <command>UPDATE</> or <command>DELETE</> rows returned by a cursor.
7048 The syntax is <literal>UPDATE/DELETE WHERE CURRENT OF</>.
7054 Allow <literal>FOR UPDATE</literal> in cursors (Arul Shaji, Tom)
7060 Create a general mechanism that supports casts to and from the
7061 standard string types (<type>TEXT</type>, <type>VARCHAR</type>,
7062 <type>CHAR</type>) for <emphasis>every</emphasis> datatype, by
7063 invoking the datatype's I/O functions (Tom)
7067 Previously, such casts were available only for types that had
7068 specialized function(s) for the purpose.
7069 These new casts are assignment-only in the to-string direction,
7070 explicit-only in the other direction, and therefore should create no
7071 surprising behavior.
7077 Allow <literal>UNION</> and related constructs to return a domain
7078 type, when all inputs are of that domain type (Tom)
7082 Formerly, the output would be considered to be of the domain's base
7089 Allow limited hashing when using two different data types (Tom)
7093 This allows hash joins, hash indexes, hashed subplans, and hash
7094 aggregation to be used in situations involving cross-data-type
7095 comparisons, if the data types have compatible hash functions.
7096 Currently, cross-data-type hashing support exists for
7097 <type>smallint</type>/<type>integer</type>/<type>bigint</type>,
7098 and for <type>float4</type>/<type>float8</type>.
7104 Improve optimizer logic for detecting when variables are equal
7105 in a <literal>WHERE</> clause (Tom)
7109 This allows mergejoins to work with descending sort orders, and
7110 improves recognition of redundant sort columns.
7116 Improve performance when planning large inheritance trees in
7117 cases where most tables are excluded by constraints (Tom)
7126 <title>Object Manipulation</title>
7132 Arrays of composite types (David Fetter, Andrew, Tom)
7136 In addition to arrays of explicitly-declared composite types,
7137 arrays of the rowtypes of regular tables and views are now
7138 supported, except for rowtypes of system catalogs, sequences, and TOAST
7146 Server configuration parameters can now be set on a per-function
7151 For example, functions can now set their own
7152 <varname>search_path</> to prevent unexpected behavior if a
7153 different <varname>search_path</> exists at run-time. Security
7154 definer functions should set <varname>search_path</varname> to
7155 avoid security loopholes.
7161 <command>CREATE/ALTER FUNCTION</command> now supports
7162 <literal>COST</literal> and <literal>ROWS</literal> options (Tom)
7166 <literal>COST</literal> allows specification of the cost of a
7167 function call. <literal>ROWS</literal> allows specification of
7168 the average number or rows returned by a set-returning function.
7169 These values are used by the optimizer in choosing the best plan.
7175 Implement <command>CREATE TABLE LIKE ... INCLUDING
7176 INDEXES</command> (Trevor Hardcastle, Nikhil Sontakke, Neil)
7182 Allow <command>CREATE INDEX CONCURRENTLY</command> to ignore
7183 transactions in other databases (Simon)
7189 Add <command>ALTER VIEW ... RENAME TO</command> and <command>ALTER
7190 SEQUENCE ... RENAME TO</command> (David Fetter, Neil)
7194 Previously this could only be done via <command>ALTER TABLE ...
7195 RENAME TO</command>.
7201 Make <command>CREATE/DROP/RENAME DATABASE</> wait briefly for
7202 conflicting backends to exit before failing (Tom)
7206 This increases the likelihood that these commands will succeed.
7212 Allow triggers and rules to be deactivated in groups using a
7213 configuration parameter, for replication purposes (Jan)
7217 This allows replication systems to disable triggers and rewrite
7218 rules as a group without modifying the system catalogs directly.
7219 The behavior is controlled by <command>ALTER TABLE</> and a new
7220 parameter <varname>session_replication_role</varname>.
7226 User-defined types can now have type modifiers (Teodor, Tom)
7230 This allows a user-defined type to take a modifier, like
7231 <type>ssnum(7)</>. Previously only built-in
7232 data types could have modifiers.
7241 <title>Utility Commands</title>
7246 Non-superuser database owners now are able to add trusted procedural
7247 languages to their databases by default (Jeremy Drake)
7251 While this is reasonably safe, some administrators might wish to
7252 revoke the privilege. It is controlled by
7253 <structname>pg_pltemplate</>.<structfield>tmpldbacreate</>.
7259 Allow a session's current parameter setting to be used as the
7260 default for future sessions (Tom)
7264 This is done with <literal>SET ... FROM CURRENT</literal> in
7265 <command>CREATE/ALTER FUNCTION</command>, <command>ALTER
7266 DATABASE</command>, or <command>ALTER ROLE</command>.
7272 Implement new commands <command>DISCARD ALL</command>,
7273 <command>DISCARD PLANS</command>, <command>DISCARD
7274 TEMPORARY</command>, <command>CLOSE ALL</command>, and
7275 <command>DEALLOCATE ALL</command> (Marko Kreen, Neil)
7279 These commands simplify resetting a database session to its initial
7280 state, and are particularly useful for connection-pooling software.
7286 Make <command>CLUSTER</command> MVCC-safe (Heikki Linnakangas)
7290 Formerly, <command>CLUSTER</command> would discard all tuples
7291 that were committed dead, even if there were still transactions
7292 that should be able to see them under MVCC visibility rules.
7298 Add new <command>CLUSTER</command> syntax: <literal>CLUSTER
7299 <replaceable>table</> USING <replaceable>index</></literal>
7304 The old <command>CLUSTER</command> syntax is still supported, but
7305 the new form is considered more logical.
7311 Fix <command>EXPLAIN</command> so it can show complex plans
7312 more accurately (Tom)
7316 References to subplan outputs are now always shown correctly,
7317 instead of using <literal>?column<replaceable>N</>?</literal>
7318 for complicated cases.
7324 Limit the amount of information reported when a user is dropped
7329 Previously, dropping (or attempting to drop) a user who owned many
7330 objects could result in large <literal>NOTICE</literal> or
7331 <literal>ERROR</literal> messages listing all these objects; this
7332 caused problems for some client applications. The length of the
7333 message is now limited, although a full list is still sent to the
7343 <title>Data Types</title>
7348 Support for the SQL/XML standard, including new operators and an
7349 <type>XML</type> data type (Nikolay Samokhvalov, Pavel Stehule, Peter)
7355 Enumerated data types (<type>ENUM</type>) (Tom Dunstan)
7359 This feature provides convenient support for fields that have a
7360 small, fixed set of allowed values. An example of creating an
7361 <literal>ENUM</> type is
7362 <literal>CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy')</>.
7368 Universally Unique Identifier (<type>UUID</>) data type (Gevik
7373 This closely matches <acronym>RFC</> 4122.
7379 Widen the <type>MONEY</type> data type to 64 bits (D'Arcy Cain)
7383 This greatly increases the range of supported <type>MONEY</>
7390 Fix <type>float4</type>/<type>float8</type> to handle
7391 <literal>Infinity</> and <literal>NAN</> (Not A Number)
7392 consistently (Bruce)
7396 The code formerly was not consistent about distinguishing
7397 <literal>Infinity</> from overflow conditions.
7403 Allow leading and trailing whitespace during input of
7404 <type>boolean</type> values (Neil)
7410 Prevent <command>COPY</> from using digits and lowercase letters as
7420 <title>Functions</title>
7425 Add new regular expression functions
7426 <function>regexp_matches()</function>,
7427 <function>regexp_split_to_array()</function>, and
7428 <function>regexp_split_to_table()</function> (Jeremy Drake, Neil)
7432 These functions provide extraction of regular expression
7433 subexpressions and allow splitting a string using a POSIX regular
7440 Add <function>lo_truncate()</function> for large object truncation
7447 Implement <function>width_bucket()</function> for the <type>float8</>
7454 Add <function>pg_stat_clear_snapshot()</function> to discard
7455 statistics snapshots collected during the current transaction
7460 The first request for statistics in a transaction takes a statistics
7461 snapshot that does not change during the transaction. This function
7462 allows the snapshot to be discarded and a new snapshot loaded during
7463 the next statistics query. This is particularly useful for PL/pgSQL
7464 functions, which are confined to a single transaction.
7470 Add <literal>isodow</> option to <function>EXTRACT()</> and
7471 <function>date_part()</> (Bruce)
7475 This returns the day of the week, with Sunday as seven.
7476 (<literal>dow</> returns Sunday as zero.)
7482 Add <literal>ID</> (ISO day of week) and <literal>IDDD</> (ISO
7483 day of year) format codes for <function>to_char()</>,
7484 <function>to_date()</>, and <function>to_timestamp()</> (Brendan
7491 Make <function>to_timestamp()</> and <function>to_date()</>
7492 assume <literal>TM</literal> (trim) option for potentially
7493 variable-width fields (Bruce)
7497 This matches <productname>Oracle</>'s behavior.
7503 Fix off-by-one conversion error in
7504 <function>to_date()</function>/<function>to_timestamp()</function>
7505 <literal>D</> (non-ISO day of week) fields (Bruce)
7511 Make <function>setseed()</function> return void, rather than a
7512 useless integer value (Neil)
7518 Add a hash function for <type>NUMERIC</type> (Neil)
7522 This allows hash indexes and hash-based plans to be used with
7523 <type>NUMERIC</type> columns.
7529 Improve efficiency of
7530 <literal>LIKE</literal>/<literal>ILIKE</literal>, especially for
7531 multi-byte character sets like UTF-8 (Andrew, Itagaki Takahiro)
7537 Make <function>currtid()</function> functions require
7538 <literal>SELECT</literal> privileges on the target table (Tom)
7544 Add several <function>txid_*()</function> functions to query
7545 active transaction IDs (Jan)
7549 This is useful for various replication solutions.
7558 <title>PL/pgSQL Server-Side Language</title>
7563 Add scrollable cursor support, including directional control in
7564 <command>FETCH</command> (Pavel Stehule)
7570 Allow <literal>IN</literal> as an alternative to
7571 <literal>FROM</literal> in PL/pgSQL's <command>FETCH</command>
7572 statement, for consistency with the backend's
7573 <command>FETCH</command> command (Pavel Stehule)
7579 Add <command>MOVE</command> to PL/pgSQL (Magnus, Pavel Stehule,
7586 Implement <command>RETURN QUERY</command> (Pavel Stehule, Neil)
7590 This adds convenient syntax for PL/pgSQL set-returning functions
7591 that want to return the result of a query. <command>RETURN QUERY</>
7592 is easier and more efficient than a loop
7593 around <command>RETURN NEXT</command>.
7599 Allow function parameter names to be qualified with the
7600 function's name (Tom)
7604 For example, <literal>myfunc.myvar</>. This is particularly
7605 useful for specifying variables in a query where the variable
7606 name might match a column name.
7612 Make qualification of variables with block labels work properly (Tom)
7616 Formerly, outer-level block labels could unexpectedly interfere with
7617 recognition of inner-level record or row references.
7623 Tighten requirements for <literal>FOR</literal> loop
7624 <literal>STEP</> values (Tom)
7628 Prevent non-positive <literal>STEP</> values, and handle
7635 Improve accuracy when reporting syntax error locations (Tom)
7644 <title>Other Server-Side Languages</title>
7649 Allow type-name arguments to PL/Perl
7650 <function>spi_prepare()</function> to be data type aliases in
7651 addition to names found in <literal>pg_type</literal> (Andrew)
7657 Allow type-name arguments to PL/Python
7658 <function>plpy.prepare()</function> to be data type aliases in
7659 addition to names found in <literal>pg_type</literal> (Andrew)
7665 Allow type-name arguments to PL/Tcl <function>spi_prepare</> to
7666 be data type aliases in addition to names found in
7667 <literal>pg_type</literal> (Andrew)
7673 Enable PL/PythonU to compile on Python 2.5 (Marko Kreen)
7679 Support a true PL/Python boolean type in compatible Python versions
7680 (Python 2.3 and later) (Marko Kreen)
7686 Fix PL/Tcl problems with thread-enabled <filename>libtcl</> spawning
7687 multiple threads within the backend (Steve Marshall, Paul Bayer,
7692 This caused all sorts of unpleasantness.
7701 <title><link linkend="APP-PSQL"><application>psql</></link></title>
7706 List disabled triggers separately in <literal>\d</literal> output
7713 In <literal>\d</literal> patterns, always match <literal>$</literal>
7720 Show aggregate return types in <literal>\da</literal> output
7721 (Greg Sabino Mullane)
7727 Add the function's volatility status to the output of
7728 <literal>\df+</literal> (Neil)
7734 Add <literal>\prompt</literal> capability (Chad Wagner)
7740 Allow <literal>\pset</literal>, <literal>\t</literal>, and
7741 <literal>\x</literal> to specify <literal>on</> or <literal>off</>,
7742 rather than just toggling (Chad Wagner)
7748 Add <literal>\sleep</> capability (Jan)
7754 Enable <literal>\timing</> output for <literal>\copy</> (Andrew)
7760 Improve <literal>\timing</literal> resolution on Windows
7767 Flush <literal>\o</> output after each backslash command (Tom)
7773 Correctly detect and report errors while reading a <literal>-f</>
7780 Remove <literal>-u</> option (this option has long been deprecated)
7790 <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
7795 Add <literal>--tablespaces-only</> and <literal>--roles-only</>
7796 options to <application>pg_dumpall</application> (Dave Page)
7802 Add an output file option to
7803 <application>pg_dumpall</application> (Dave Page)
7807 This is primarily useful on Windows, where output redirection of
7808 child <application>pg_dump</application> processes does not work.
7814 Allow <application>pg_dumpall</> to accept an initial-connection
7815 database name rather than the default
7816 <literal>template1</literal> (Dave Page)
7822 In <literal>-n</> and <literal>-t</> switches, always match
7823 <literal>$</literal> literally (Tom)
7829 Improve performance when a database has thousands of objects (Tom)
7835 Remove <literal>-u</> option (this option has long been deprecated)
7845 <title>Other Client Applications</title>
7850 In <application>initdb</>, allow the location of the
7851 <filename>pg_xlog</filename> directory to be specified
7852 (Euler Taveira de Oliveira)
7858 Enable server core dump generation in <application>pg_regress</>
7859 on supported operating systems (Andrew)
7865 Add a <literal>-t</> (timeout) parameter to <application>pg_ctl</>
7870 This controls how long <application>pg_ctl</> will wait when waiting
7871 for server startup or shutdown. Formerly the timeout was hard-wired
7878 Add a <application>pg_ctl</> option to control generation
7879 of server core dumps (Andrew)
7885 Allow Control-C to cancel <application>clusterdb</>,
7886 <application>reindexdb</>, and <application>vacuumdb</> (Itagaki
7893 Suppress command tag output for <application>createdb</>,
7894 <application>createuser</>, <application>dropdb</>, and
7895 <application>dropuser</> (Peter)
7899 The <literal>--quiet</> option is ignored and will be removed in 8.4.
7900 Progress messages when acting on all databases now go to stdout
7901 instead of stderr because they are not actually errors.
7910 <title><link linkend="libpq"><application>libpq</></link></title>
7915 Interpret the <literal>dbName</> parameter of
7916 <function>PQsetdbLogin()</> as a <literal>conninfo</> string if
7917 it contains an equals sign (Andrew)
7921 This allows use of <literal>conninfo</> strings in client
7922 programs that still use <literal>PQsetdbLogin()</>.
7928 Support a global <acronym>SSL</> configuration file (Victor
7935 Add environment variable <varname>PGSSLKEY</> to control
7936 <acronym>SSL</> hardware keys (Victor Wagner)
7942 Add <function>lo_truncate()</function> for large object
7943 truncation (Kris Jurka)
7949 Add <function>PQconnectionNeedsPassword()</function> that returns
7950 true if the server required a password but none was supplied
7955 If this returns true after a failed connection attempt, a client
7956 application should prompt the user for a password. In the past
7957 applications have had to check for a specific error message string to
7958 decide whether a password is needed; that approach is now
7965 Add <function>PQconnectionUsedPassword()</function> that returns
7966 true if the supplied password was actually used
7971 This is useful in some security contexts where it is important
7972 to know whether a user-supplied password is actually valid.
7981 <title><link linkend="ecpg"><application>ecpg</></link></title>
7986 Use V3 frontend/backend protocol (Michael)
7990 This adds support for server-side prepared statements.
7996 Use native threads, instead of pthreads, on Windows (Magnus)
8002 Improve thread-safety of ecpglib (Itagaki Takahiro)
8008 Make the ecpg libraries export only necessary API symbols (Michael)
8017 <title><application>Windows</> Port</title>
8022 Allow the whole <productname>PostgreSQL</> distribution to be compiled
8023 with <productname>Microsoft Visual C++</> (Magnus and others)
8027 This allows Windows-based developers to use familiar development
8028 and debugging tools.
8029 Windows executables made with Visual C++ might also have better
8030 stability and performance than those made with other tool sets.
8031 The client-only Visual C++ build scripts have been removed.
8037 Drastically reduce postmaster's memory usage when it has many child
8044 Allow regression tests to be started by an administrative
8051 Add native shared memory implementation (Magnus)
8060 <title>Server Programming Interface (<acronym>SPI</>)</title>
8065 Add cursor-related functionality in SPI (Pavel Stehule)
8069 Allow access to the cursor-related planning options, and add
8070 <command>FETCH</>/<command>MOVE</> routines.
8076 Allow execution of cursor commands through
8077 <function>SPI_execute</function> (Tom)
8081 The macro <literal>SPI_ERROR_CURSOR</> still exists but will
8088 SPI plan pointers are now declared as <literal>SPIPlanPtr</> instead of
8089 <literal>void *</> (Tom)
8093 This does not break application code, but switching is
8094 recommended to help catch simple programming mistakes.
8103 <title>Build Options</title>
8108 Add <application>configure</> option <literal>--enable-profiling</>
8109 to enable code profiling (works only with <application>gcc</>)
8110 (Korry Douglas and Nikhil Sontakke)
8116 Add <application>configure</> option <literal>--with-system-tzdata</>
8117 to use the operating system's time zone database (Peter)
8123 Fix <acronym>PGXS</> so extensions can be built against PostgreSQL
8124 installations whose <application>pg_config</> program does not
8125 appear first in the <varname>PATH</> (Tom)
8131 Support <command>gmake draft</command> when building the
8132 <acronym>SGML</> documentation (Bruce)
8136 Unless <literal>draft</> is used, the documentation build will
8137 now be repeated if necessary to ensure the index is up-to-date.
8146 <title>Source Code</title>
8151 Rename macro <literal>DLLIMPORT</> to <literal>PGDLLIMPORT</> to
8152 avoid conflicting with third party includes (like Tcl) that
8153 define <literal>DLLIMPORT</> (Magnus)
8159 Create <quote>operator families</quote> to improve planning of
8160 queries involving cross-data-type comparisons (Tom)
8166 Update GIN <function>extractQuery()</> API to allow signalling
8167 that nothing can satisfy the query (Teodor)
8173 Move <literal>NAMEDATALEN</> definition from
8174 <filename>postgres_ext.h</> to <filename>pg_config_manual.h</>
8181 Provide <function>strlcpy()</function> and
8182 <function>strlcat()</function> on all platforms, and replace
8183 error-prone uses of <function>strncpy()</function>,
8184 <function>strncat()</function>, etc (Peter)
8190 Create hooks to let an external plugin monitor (or even replace) the
8191 planner and create plans for hypothetical situations (Gurjeet
8198 Create a function variable <literal>join_search_hook</> to let plugins
8199 override the join search order portion of the planner (Julius
8206 Add <function>tas()</> support for Renesas' M32R processor
8213 <function>quote_identifier()</function> and
8214 <application>pg_dump</application> no longer quote keywords that are
8215 unreserved according to the grammar (Tom)
8221 Change the on-disk representation of the <type>NUMERIC</type>
8222 data type so that the <structfield>sign_dscale</> word comes
8223 before the weight (Tom)
8229 Use <acronym>SYSV</> semaphores rather than POSIX on Darwin
8230 >= 6.0, i.e., OS X 10.2 and up (Chris Marcellino)
8236 Add <link linkend="acronyms">acronym</link> and <link
8237 linkend="creating-cluster-nfs">NFS</link> documentation
8244 "Postgres" is now documented as an accepted alias for
8245 "PostgreSQL" (Peter)
8251 Add documentation about preventing database server spoofing when
8252 the server is down (Bruce)
8261 <title>Contrib</title>
8266 Move <filename>contrib</> <filename>README</> content into the
8267 main <productname>PostgreSQL</> documentation (Albert Cervera i
8274 Add <filename>contrib/pageinspect</filename> module for low-level
8275 page inspection (Simon, Heikki)
8281 Add <filename>contrib/pg_standby</filename> module for controlling
8282 warm standby operation (Simon)
8288 Add <filename>contrib/uuid-ossp</filename> module for generating
8289 <type>UUID</> values using the OSSP UUID library (Peter)
8293 Use <application>configure</>
8294 <literal>--with-ossp-uuid</literal> to activate. This takes
8295 advantage of the new <type>UUID</type> builtin type.
8301 Add <filename>contrib/dict_int</filename>,
8302 <filename>contrib/dict_xsyn</filename>, and
8303 <filename>contrib/test_parser</filename> modules to provide
8304 sample add-on text search dictionary templates and parsers
8311 Allow <application>contrib/pgbench</> to set the fillfactor (Pavan
8318 Add timestamps to <application>contrib/pgbench</> <literal>-l</>
8325 Add usage count statistics to
8326 <filename>contrib/pgbuffercache</filename> (Greg Smith)
8332 Add GIN support for <filename>contrib/hstore</> (Teodor)
8338 Add GIN support for <filename>contrib/pg_trgm</> (Guillaume Smet, Teodor)
8344 Update OS/X startup scripts in
8345 <filename>contrib/start-scripts</filename> (Mark Cotner, David
8352 Restrict <function>pgrowlocks()</function> and
8353 <function>dblink_get_pkey()</function> to users who have
8354 <literal>SELECT</literal> privilege on the target table (Tom)
8360 Restrict <filename>contrib/pgstattuple</filename> functions to
8367 <filename>contrib/xml2</filename> is deprecated and planned for
8368 removal in 8.4 (Peter)
8372 The new XML support in core PostgreSQL supersedes this module.