1 <!-- doc/src/sgml/release-8.3.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
4 <sect1 id="release-8-3-23">
5 <title>Release 8.3.23</title>
8 <title>Release Date</title>
9 <simpara>2013-02-07</simpara>
13 This release contains a variety of fixes from 8.3.22.
14 For information about new features in the 8.3 major release, see
15 <xref linkend="release-8-3">.
19 This is expected to be the last <productname>PostgreSQL</> release
20 in the 8.3.X series. Users are encouraged to update to a newer
25 <title>Migration to Version 8.3.23</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 SQL grammar to allow subscripting or field selection from a
46 sub-SELECT result (Tom Lane)
52 Protect against race conditions when scanning
53 <structname>pg_tablespace</> (Stephen Frost, Tom Lane)
57 <command>CREATE DATABASE</> and <command>DROP DATABASE</> could
58 misbehave if there were concurrent updates of
59 <structname>pg_tablespace</> entries.
65 Prevent <command>DROP OWNED</> from trying to drop whole databases or
66 tablespaces (Álvaro Herrera)
70 For safety, ownership of these objects must be reassigned, not dropped.
76 Prevent misbehavior when a <symbol>RowExpr</> or <symbol>XmlExpr</>
77 is parse-analyzed twice (Andres Freund, Tom Lane)
81 This mistake could be user-visible in contexts such as
82 <literal>CREATE TABLE LIKE INCLUDING INDEXES</>.
88 Improve defenses against integer overflow in hashtable sizing
89 calculations (Jeff Davis)
95 Ensure that non-ASCII prompt strings are translated to the correct
96 code page on Windows (Alexander Law, Noah Misch)
100 This bug affected <application>psql</> and some other client programs.
106 Fix possible crash in <application>psql</>'s <command>\?</> command
107 when not connected to a database (Meng Qingzhong)
113 Fix one-byte buffer overrun in <application>libpq</>'s
114 <function>PQprintTuples</> (Xi Wang)
118 This ancient function is not used anywhere by
119 <productname>PostgreSQL</> itself, but it might still be used by some
126 Rearrange configure's tests for supplied functions so it is not
127 fooled by bogus exports from libedit/libreadline (Christoph Berg)
133 Ensure Windows build number increases over time (Magnus Hagander)
139 Make <application>pgxs</> build executables with the right
140 <literal>.exe</> suffix when cross-compiling for Windows
147 Add new timezone abbreviation <literal>FET</> (Tom Lane)
151 This is now used in some eastern-European time zones.
160 <sect1 id="release-8-3-22">
161 <title>Release 8.3.22</title>
164 <title>Release Date</title>
165 <simpara>2012-12-06</simpara>
169 This release contains a variety of fixes from 8.3.21.
170 For information about new features in the 8.3 major release, see
171 <xref linkend="release-8-3">.
175 The <productname>PostgreSQL</> community will stop releasing updates
176 for the 8.3.X release series in February 2013.
177 Users are encouraged to update to a newer release branch soon.
181 <title>Migration to Version 8.3.22</title>
184 A dump/restore is not required for those running 8.3.X.
188 However, if you are upgrading from a version earlier than 8.3.17,
189 see the release notes for 8.3.17.
195 <title>Changes</title>
201 Fix multiple bugs associated with <command>CREATE INDEX
202 CONCURRENTLY</> (Andres Freund, Tom Lane)
206 Fix <command>CREATE INDEX CONCURRENTLY</> to use
207 in-place updates when changing the state of an index's
208 <structname>pg_index</> row. This prevents race conditions that could
209 cause concurrent sessions to miss updating the target index, thus
210 resulting in corrupt concurrently-created indexes.
214 Also, fix various other operations to ensure that they ignore
215 invalid indexes resulting from a failed <command>CREATE INDEX
216 CONCURRENTLY</> command. The most important of these is
217 <command>VACUUM</>, because an auto-vacuum could easily be launched
218 on the table before corrective action can be taken to fix or remove
225 Avoid corruption of internal hash tables when out of memory
232 Fix planning of non-strict equivalence clauses above outer joins
237 The planner could derive incorrect constraints from a clause equating
238 a non-strict construct to something else, for example
239 <literal>WHERE COALESCE(foo, 0) = 0</>
240 when <literal>foo</> is coming from the nullable side of an outer join.
246 Improve planner's ability to prove exclusion constraints from
247 equivalence classes (Tom Lane)
253 Fix partial-row matching in hashed subplans to handle cross-type cases
258 This affects multicolumn <literal>NOT IN</> subplans, such as
259 <literal>WHERE (a, b) NOT IN (SELECT x, y FROM ...)</>
260 when for instance <literal>b</> and <literal>y</> are <type>int4</>
261 and <type>int8</> respectively. This mistake led to wrong answers
262 or crashes depending on the specific datatypes involved.
268 Acquire buffer lock when re-fetching the old tuple for an
269 <literal>AFTER ROW UPDATE/DELETE</> trigger (Andres Freund)
273 In very unusual circumstances, this oversight could result in passing
274 incorrect data to the precheck logic for a foreign-key enforcement
275 trigger. That could result in a crash, or in an incorrect decision
276 about whether to fire the trigger.
282 Fix <command>REASSIGN OWNED</> to handle grants on tablespaces
283 (Álvaro Herrera)
289 Ignore incorrect <structname>pg_attribute</> entries for system
290 columns for views (Tom Lane)
294 Views do not have any system columns. However, we forgot to
295 remove such entries when converting a table to a view. That's fixed
296 properly for 9.3 and later, but in previous branches we need to defend
297 against existing mis-converted views.
303 Fix rule printing to dump <literal>INSERT INTO <replaceable>table</>
304 DEFAULT VALUES</literal> correctly (Tom Lane)
310 Guard against stack overflow when there are too many
311 <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> clauses
312 in a query (Tom Lane)
318 Prevent platform-dependent failures when dividing the minimum possible
319 integer value by -1 (Xi Wang, Tom Lane)
325 Fix possible access past end of string in date parsing
332 Produce an understandable error message if the length of the path name
333 for a Unix-domain socket exceeds the platform-specific limit
334 (Tom Lane, Andrew Dunstan)
338 Formerly, this would result in something quite unhelpful, such as
339 <quote>Non-recoverable failure in name resolution</>.
345 Fix memory leaks when sending composite column values to the client
352 Make <application>pg_ctl</> more robust about reading the
353 <filename>postmaster.pid</> file (Heikki Linnakangas)
357 Fix race conditions and possible file descriptor leakage.
363 Fix possible crash in <application>psql</> if incorrectly-encoded data
364 is presented and the <varname>client_encoding</> setting is a
365 client-only encoding, such as SJIS (Jiang Guiqing)
371 Fix bugs in the <filename>restore.sql</> script emitted by
372 <application>pg_dump</> in <literal>tar</> output format (Tom Lane)
376 The script would fail outright on tables whose names include
377 upper-case characters. Also, make the script capable of restoring
378 data in <option>--inserts</> mode as well as the regular COPY mode.
384 Fix <application>pg_restore</> to accept POSIX-conformant
385 <literal>tar</> files (Brian Weaver, Tom Lane)
389 The original coding of <application>pg_dump</>'s <literal>tar</>
390 output mode produced files that are not fully conformant with the
391 POSIX standard. This has been corrected for version 9.3. This
392 patch updates previous branches so that they will accept both the
393 incorrect and the corrected formats, in hopes of avoiding
394 compatibility problems when 9.3 comes out.
400 Fix <application>pg_resetxlog</> to locate <filename>postmaster.pid</>
401 correctly when given a relative path to the data directory (Tom Lane)
405 This mistake could lead to <application>pg_resetxlog</> not noticing
406 that there is an active postmaster using the data directory.
412 Fix <application>libpq</>'s <function>lo_import()</> and
413 <function>lo_export()</> functions to report file I/O errors properly
420 Fix <application>ecpg</>'s processing of nested structure pointer
421 variables (Muhammad Usama)
427 Make <filename>contrib/pageinspect</>'s btree page inspection
428 functions take buffer locks while examining pages (Tom Lane)
434 Fix <application>pgxs</> support for building loadable modules on AIX
439 Building modules outside the original source tree didn't work on AIX.
445 Update time zone data files to <application>tzdata</> release 2012j
446 for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western
447 Samoa, and portions of Brazil.
456 <sect1 id="release-8-3-21">
457 <title>Release 8.3.21</title>
460 <title>Release Date</title>
461 <simpara>2012-09-24</simpara>
465 This release contains a variety of fixes from 8.3.20.
466 For information about new features in the 8.3 major release, see
467 <xref linkend="release-8-3">.
471 The <productname>PostgreSQL</> community will stop releasing updates
472 for the 8.3.X release series in February 2013.
473 Users are encouraged to update to a newer release branch soon.
477 <title>Migration to Version 8.3.21</title>
480 A dump/restore is not required for those running 8.3.X.
484 However, if you are upgrading from a version earlier than 8.3.17,
485 see the release notes for 8.3.17.
491 <title>Changes</title>
497 Improve page-splitting decisions in GiST indexes (Alexander Korotkov,
498 Robert Haas, Tom Lane)
502 Multi-column GiST indexes might suffer unexpected bloat due to this
509 Fix cascading privilege revoke to stop if privileges are still held
514 If we revoke a grant option from some role <replaceable>X</>, but
515 <replaceable>X</> still holds that option via a grant from someone
516 else, we should not recursively revoke the corresponding privilege
517 from role(s) <replaceable>Y</> that <replaceable>X</> had granted it
524 Fix handling of <literal>SIGFPE</> when PL/Perl is in use (Andres Freund)
528 Perl resets the process's <literal>SIGFPE</> handler to
529 <literal>SIG_IGN</>, which could result in crashes later on. Restore
530 the normal Postgres signal handler after initializing PL/Perl.
536 Prevent PL/Perl from crashing if a recursive PL/Perl function is
537 redefined while being executed (Tom Lane)
543 Work around possible misoptimization in PL/Perl (Tom Lane)
547 Some Linux distributions contain an incorrect version of
548 <filename>pthread.h</> that results in incorrect compiled code in
549 PL/Perl, leading to crashes if a PL/Perl function calls another one
550 that throws an error.
556 Update time zone data files to <application>tzdata</> release 2012f
557 for DST law changes in Fiji
566 <sect1 id="release-8-3-20">
567 <title>Release 8.3.20</title>
570 <title>Release Date</title>
571 <simpara>2012-08-17</simpara>
575 This release contains a variety of fixes from 8.3.19.
576 For information about new features in the 8.3 major release, see
577 <xref linkend="release-8-3">.
581 The <productname>PostgreSQL</> community will stop releasing updates
582 for the 8.3.X release series in February 2013.
583 Users are encouraged to update to a newer release branch soon.
587 <title>Migration to Version 8.3.20</title>
590 A dump/restore is not required for those running 8.3.X.
594 However, if you are upgrading from a version earlier than 8.3.17,
595 see the release notes for 8.3.17.
601 <title>Changes</title>
607 Prevent access to external files/URLs via XML entity references
608 (Noah Misch, Tom Lane)
612 <function>xml_parse()</> would attempt to fetch external files or
613 URLs as needed to resolve DTD and entity references in an XML value,
614 thus allowing unprivileged database users to attempt to fetch data
615 with the privileges of the database server. While the external data
616 wouldn't get returned directly to the user, portions of it could be
617 exposed in error messages if the data didn't parse as valid XML; and
618 in any case the mere ability to check existence of a file might be
619 useful to an attacker. (CVE-2012-3489)
625 Prevent access to external files/URLs via <filename>contrib/xml2</>'s
626 <function>xslt_process()</> (Peter Eisentraut)
630 <application>libxslt</> offers the ability to read and write both
631 files and URLs through stylesheet commands, thus allowing
632 unprivileged database users to both read and write data with the
633 privileges of the database server. Disable that through proper use
634 of <application>libxslt</>'s security options. (CVE-2012-3488)
638 Also, remove <function>xslt_process()</>'s ability to fetch documents
639 and stylesheets from external files/URLs. While this was a
640 documented <quote>feature</>, it was long regarded as a bad idea.
641 The fix for CVE-2012-3489 broke that capability, and rather than
642 expend effort on trying to fix it, we're just going to summarily
649 Prevent too-early recycling of btree index pages (Noah Misch)
653 When we allowed read-only transactions to skip assigning XIDs, we
654 introduced the possibility that a deleted btree page could be
655 recycled while a read-only transaction was still in flight to it.
656 This would result in incorrect index search results. The probability
657 of such an error occurring in the field seems very low because of the
658 timing requirements, but nonetheless it should be fixed.
664 Fix crash-safety bug with newly-created-or-reset sequences (Tom Lane)
668 If <command>ALTER SEQUENCE</> was executed on a freshly created or
669 reset sequence, and then precisely one <function>nextval()</> call
670 was made on it, and then the server crashed, WAL replay would restore
671 the sequence to a state in which it appeared that no
672 <function>nextval()</> had been done, thus allowing the first
673 sequence value to be returned again by the next
674 <function>nextval()</> call. In particular this could manifest for
675 <type>serial</> columns, since creation of a serial column's sequence
676 includes an <command>ALTER SEQUENCE OWNED BY</> step.
682 Ensure the <filename>backup_label</> file is fsync'd after
683 <function>pg_start_backup()</> (Dave Kerr)
689 Back-patch 9.1 improvement to compress the fsync request queue
694 This improves performance during checkpoints. The 9.1 change
695 has now seen enough field testing to seem safe to back-patch.
701 Only allow autovacuum to be auto-canceled by a directly blocked
706 The original coding could allow inconsistent behavior in some cases;
707 in particular, an autovacuum could get canceled after less than
708 <literal>deadlock_timeout</> grace period.
714 Improve logging of autovacuum cancels (Robert Haas)
720 Fix log collector so that <literal>log_truncate_on_rotation</> works
721 during the very first log rotation after server start (Tom Lane)
727 Ensure that a whole-row reference to a subquery doesn't include any
728 extra <literal>GROUP BY</> or <literal>ORDER BY</> columns (Tom Lane)
734 Disallow copying whole-row references in <literal>CHECK</>
735 constraints and index definitions during <command>CREATE TABLE</>
740 This situation can arise in <command>CREATE TABLE</> with
741 <literal>LIKE</> or <literal>INHERITS</>. The copied whole-row
742 variable was incorrectly labeled with the row type of the original
743 table not the new one. Rejecting the case seems reasonable for
744 <literal>LIKE</>, since the row types might well diverge later. For
745 <literal>INHERITS</> we should ideally allow it, with an implicit
746 coercion to the parent table's row type; but that will require more
747 work than seems safe to back-patch.
753 Fix memory leak in <literal>ARRAY(SELECT ...)</> subqueries (Heikki
754 Linnakangas, Tom Lane)
760 Fix extraction of common prefixes from regular expressions (Tom Lane)
764 The code could get confused by quantified parenthesized
765 subexpressions, such as <literal>^(foo)?bar</>. This would lead to
766 incorrect index optimization of searches for such patterns.
772 Report errors properly in <filename>contrib/xml2</>'s
773 <function>xslt_process()</> (Tom Lane)
779 Update time zone data files to <application>tzdata</> release 2012e
780 for DST law changes in Morocco and Tokelau
789 <sect1 id="release-8-3-19">
790 <title>Release 8.3.19</title>
793 <title>Release Date</title>
794 <simpara>2012-06-04</simpara>
798 This release contains a variety of fixes from 8.3.18.
799 For information about new features in the 8.3 major release, see
800 <xref linkend="release-8-3">.
804 <title>Migration to Version 8.3.19</title>
807 A dump/restore is not required for those running 8.3.X.
811 However, if you are upgrading from a version earlier than 8.3.17,
812 see the release notes for 8.3.17.
818 <title>Changes</title>
824 Fix incorrect password transformation in
825 <filename>contrib/pgcrypto</>'s DES <function>crypt()</> function
830 If a password string contained the byte value <literal>0x80</>, the
831 remainder of the password was ignored, causing the password to be much
832 weaker than it appeared. With this fix, the rest of the string is
833 properly included in the DES hash. Any stored password values that are
834 affected by this bug will thus no longer match, so the stored values may
835 need to be updated. (CVE-2012-2143)
841 Ignore <literal>SECURITY DEFINER</> and <literal>SET</> attributes for
842 a procedural language's call handler (Tom Lane)
846 Applying such attributes to a call handler could crash the server.
853 Allow numeric timezone offsets in <type>timestamp</> input to be up to
854 16 hours away from UTC (Tom Lane)
858 Some historical time zones have offsets larger than 15 hours, the
859 previous limit. This could result in dumped data values being rejected
866 Fix timestamp conversion to cope when the given time is exactly the
867 last DST transition time for the current timezone (Tom Lane)
871 This oversight has been there a long time, but was not noticed
872 previously because most DST-using zones are presumed to have an
873 indefinite sequence of future DST transitions.
879 Fix <type>text</> to <type>name</> and <type>char</> to <type>name</>
880 casts to perform string truncation correctly in multibyte encodings
887 Fix memory copying bug in <function>to_tsquery()</> (Heikki Linnakangas)
893 Fix slow session startup when <structname>pg_attribute</> is very large
898 If <structname>pg_attribute</> exceeds one-fourth of
899 <varname>shared_buffers</>, cache rebuilding code that is sometimes
900 needed during session start would trigger the synchronized-scan logic,
901 causing it to take many times longer than normal. The problem was
902 particularly acute if many new sessions were starting at once.
908 Ensure sequential scans check for query cancel reasonably often (Merlin
913 A scan encountering many consecutive pages that contain no live tuples
914 would not respond to interrupts meanwhile.
920 Ensure the Windows implementation of <function>PGSemaphoreLock()</>
921 clears <varname>ImmediateInterruptOK</> before returning (Tom Lane)
925 This oversight meant that a query-cancel interrupt received later
926 in the same query could be accepted at an unsafe time, with
927 unpredictable but not good consequences.
933 Show whole-row variables safely when printing views or rules
934 (Abbas Butt, Tom Lane)
938 Corner cases involving ambiguous names (that is, the name could be
939 either a table or column name of the query) were printed in an
940 ambiguous way, risking that the view or rule would be interpreted
941 differently after dump and reload. Avoid the ambiguous case by
942 attaching a no-op cast.
948 Ensure autovacuum worker processes perform stack depth checking
949 properly (Heikki Linnakangas)
953 Previously, infinite recursion in a function invoked by
954 auto-<command>ANALYZE</> could crash worker processes.
960 Fix logging collector to not lose log coherency under high load (Andrew
965 The collector previously could fail to reassemble large messages if it
972 Fix logging collector to ensure it will restart file rotation
973 after receiving <systemitem>SIGHUP</> (Tom Lane)
979 Fix PL/pgSQL's <command>GET DIAGNOSTICS</> command when the target
980 is the function's first variable (Tom Lane)
986 Fix several performance problems in <application>pg_dump</> when
987 the database contains many objects (Jeff Janes, Tom Lane)
991 <application>pg_dump</> could get very slow if the database contained
992 many schemas, or if many objects are in dependency loops, or if there
993 are many owned sequences.
999 Fix <filename>contrib/dblink</>'s <function>dblink_exec()</> to not leak
1000 temporary database connections upon error (Tom Lane)
1006 Update time zone data files to <application>tzdata</> release 2012c
1007 for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland
1008 Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands;
1009 also historical corrections for Canada.
1018 <sect1 id="release-8-3-18">
1019 <title>Release 8.3.18</title>
1022 <title>Release Date</title>
1023 <simpara>2012-02-27</simpara>
1027 This release contains a variety of fixes from 8.3.17.
1028 For information about new features in the 8.3 major release, see
1029 <xref linkend="release-8-3">.
1033 <title>Migration to Version 8.3.18</title>
1036 A dump/restore is not required for those running 8.3.X.
1040 However, if you are upgrading from a version earlier than 8.3.17,
1041 see the release notes for 8.3.17.
1047 <title>Changes</title>
1053 Require execute permission on the trigger function for
1054 <command>CREATE TRIGGER</> (Robert Haas)
1058 This missing check could allow another user to execute a trigger
1059 function with forged input data, by installing it on a table he owns.
1060 This is only of significance for trigger functions marked
1061 <literal>SECURITY DEFINER</>, since otherwise trigger functions run
1062 as the table owner anyway. (CVE-2012-0866)
1068 Convert newlines to spaces in names written in <application>pg_dump</>
1069 comments (Robert Haas)
1073 <application>pg_dump</> was incautious about sanitizing object names
1074 that are emitted within SQL comments in its output script. A name
1075 containing a newline would at least render the script syntactically
1076 incorrect. Maliciously crafted object names could present a SQL
1077 injection risk when the script is reloaded. (CVE-2012-0868)
1083 Fix btree index corruption from insertions concurrent with vacuuming
1088 An index page split caused by an insertion could sometimes cause a
1089 concurrently-running <command>VACUUM</> to miss removing index entries
1090 that it should remove. After the corresponding table rows are removed,
1091 the dangling index entries would cause errors (such as <quote>could not
1092 read block N in file ...</>) or worse, silently wrong query results
1093 after unrelated rows are re-inserted at the now-free table locations.
1094 This bug has been present since release 8.2, but occurs so infrequently
1095 that it was not diagnosed until now. If you have reason to suspect
1096 that it has happened in your database, reindexing the affected index
1103 Allow non-existent values for some settings in <command>ALTER
1104 USER/DATABASE SET</> (Heikki Linnakangas)
1108 Allow <varname>default_text_search_config</>,
1109 <varname>default_tablespace</>, and <varname>temp_tablespaces</> to be
1110 set to names that are not known. This is because they might be known
1111 in another database where the setting is intended to be used, or for the
1112 tablespace cases because the tablespace might not be created yet. The
1113 same issue was previously recognized for <varname>search_path</>, and
1114 these settings now act like that one.
1120 Track the OID counter correctly during WAL replay, even when it wraps
1125 Previously the OID counter would remain stuck at a high value until the
1126 system exited replay mode. The practical consequences of that are
1127 usually nil, but there are scenarios wherein a standby server that's
1128 been promoted to master might take a long time to advance the OID
1129 counter to a reasonable value once values are needed.
1135 Fix regular expression back-references with <literal>*</> attached
1140 Rather than enforcing an exact string match, the code would effectively
1141 accept any string that satisfies the pattern sub-expression referenced
1142 by the back-reference symbol.
1146 A similar problem still afflicts back-references that are embedded in a
1147 larger quantified expression, rather than being the immediate subject
1148 of the quantifier. This will be addressed in a future
1149 <productname>PostgreSQL</> release.
1155 Fix recently-introduced memory leak in processing of
1156 <type>inet</>/<type>cidr</> values (Heikki Linnakangas)
1160 A patch in the December 2011 releases of <productname>PostgreSQL</>
1161 caused memory leakage in these operations, which could be significant
1162 in scenarios such as building a btree index on such a column.
1168 Avoid double close of file handle in syslogger on Windows (MauMau)
1172 Ordinarily this error was invisible, but it would cause an exception
1173 when running on a debug version of Windows.
1179 Fix I/O-conversion-related memory leaks in plpgsql
1180 (Andres Freund, Jan Urbanski, Tom Lane)
1184 Certain operations would leak memory until the end of the current
1191 Improve <application>pg_dump</>'s handling of inherited table columns
1196 <application>pg_dump</> mishandled situations where a child column has
1197 a different default expression than its parent column. If the default
1198 is textually identical to the parent's default, but not actually the
1199 same (for instance, because of schema search path differences) it would
1200 not be recognized as different, so that after dump and restore the
1201 child would be allowed to inherit the parent's default. Child columns
1202 that are <literal>NOT NULL</> where their parent is not could also be
1203 restored subtly incorrectly.
1209 Fix <application>pg_restore</>'s direct-to-database mode for
1210 INSERT-style table data (Tom Lane)
1214 Direct-to-database restores from archive files made with
1215 <option>--inserts</> or <option>--column-inserts</> options fail when
1216 using <application>pg_restore</> from a release dated September or
1217 December 2011, as a result of an oversight in a fix for another
1218 problem. The archive file itself is not at fault, and text-mode
1225 Fix error in <filename>contrib/intarray</>'s <literal>int[] &
1226 int[]</> operator (Guillaume Lelarge)
1230 If the smallest integer the two input arrays have in common is 1,
1231 and there are smaller values in either array, then 1 would be
1232 incorrectly omitted from the result.
1238 Fix error detection in <filename>contrib/pgcrypto</>'s
1239 <function>encrypt_iv()</> and <function>decrypt_iv()</>
1244 These functions failed to report certain types of invalid-input errors,
1245 and would instead return random garbage values for incorrect input.
1251 Fix one-byte buffer overrun in <filename>contrib/test_parser</>
1256 The code would try to read one more byte than it should, which would
1257 crash in corner cases.
1258 Since <filename>contrib/test_parser</> is only example code, this is
1259 not a security issue in itself, but bad example code is still bad.
1265 Use <function>__sync_lock_test_and_set()</> for spinlocks on ARM, if
1266 available (Martin Pitt)
1270 This function replaces our previous use of the <literal>SWPB</>
1271 instruction, which is deprecated and not available on ARMv6 and later.
1272 Reports suggest that the old code doesn't fail in an obvious way on
1273 recent ARM boards, but simply doesn't interlock concurrent accesses,
1274 leading to bizarre failures in multiprocess operation.
1280 Use <option>-fexcess-precision=standard</> option when building with
1281 gcc versions that accept it (Andrew Dunstan)
1285 This prevents assorted scenarios wherein recent versions of gcc will
1286 produce creative results.
1292 Allow use of threaded Python on FreeBSD (Chris Rees)
1296 Our configure script previously believed that this combination wouldn't
1297 work; but FreeBSD fixed the problem, so remove that error check.
1306 <sect1 id="release-8-3-17">
1307 <title>Release 8.3.17</title>
1310 <title>Release Date</title>
1311 <simpara>2011-12-05</simpara>
1315 This release contains a variety of fixes from 8.3.16.
1316 For information about new features in the 8.3 major release, see
1317 <xref linkend="release-8-3">.
1321 <title>Migration to Version 8.3.17</title>
1324 A dump/restore is not required for those running 8.3.X.
1328 However, a longstanding error was discovered in the definition of the
1329 <literal>information_schema.referential_constraints</> view. If you
1330 rely on correct results from that view, you should replace its
1331 definition as explained in the first changelog item below.
1335 Also, if you are upgrading from a version earlier than 8.3.8,
1336 see the release notes for 8.3.8.
1342 <title>Changes</title>
1348 Fix bugs in <literal>information_schema.referential_constraints</> view
1353 This view was being insufficiently careful about matching the
1354 foreign-key constraint to the depended-on primary or unique key
1355 constraint. That could result in failure to show a foreign key
1356 constraint at all, or showing it multiple times, or claiming that it
1357 depends on a different constraint than the one it really does.
1361 Since the view definition is installed by <application>initdb</>,
1362 merely upgrading will not fix the problem. If you need to fix this
1363 in an existing installation, you can (as a superuser) drop the
1364 <literal>information_schema</> schema then re-create it by sourcing
1365 <filename><replaceable>SHAREDIR</>/information_schema.sql</filename>.
1366 (Run <literal>pg_config --sharedir</> if you're uncertain where
1367 <replaceable>SHAREDIR</> is.) This must be repeated in each database
1374 Fix TOAST-related data corruption during <literal>CREATE TABLE dest AS
1375 SELECT * FROM src</> or <literal>INSERT INTO dest SELECT * FROM src</>
1380 If a table has been modified by <command>ALTER TABLE ADD COLUMN</>,
1381 attempts to copy its data verbatim to another table could produce
1382 corrupt results in certain corner cases.
1383 The problem can only manifest in this precise form in 8.4 and later,
1384 but we patched earlier versions as well in case there are other code
1385 paths that could trigger the same bug.
1391 Fix race condition during toast table access from stale syscache entries
1396 The typical symptom was transient errors like <quote>missing chunk
1397 number 0 for toast value NNNNN in pg_toast_2619</>, where the cited
1398 toast table would always belong to a system catalog.
1404 Make <function>DatumGetInetP()</> unpack inet datums that have a 1-byte
1405 header, and add a new macro, <function>DatumGetInetPP()</>, that does
1406 not (Heikki Linnakangas)
1410 This change affects no core code, but might prevent crashes in add-on
1411 code that expects <function>DatumGetInetP()</> to produce an unpacked
1412 datum as per usual convention.
1418 Improve locale support in <type>money</> type's input and output
1423 Aside from not supporting all standard
1424 <link linkend="guc-lc-monetary"><varname>lc_monetary</></link>
1425 formatting options, the input and output functions were inconsistent,
1426 meaning there were locales in which dumped <type>money</> values could
1434 linkend="guc-transform-null-equals"><varname>transform_null_equals</></link>
1435 affect <literal>CASE foo WHEN NULL ...</> constructs
1436 (Heikki Linnakangas)
1440 <varname>transform_null_equals</> is only supposed to affect
1441 <literal>foo = NULL</> expressions written directly by the user, not
1442 equality checks generated internally by this form of <literal>CASE</>.
1448 Change foreign-key trigger creation order to better support
1449 self-referential foreign keys (Tom Lane)
1453 For a cascading foreign key that references its own table, a row update
1454 will fire both the <literal>ON UPDATE</> trigger and the
1455 <literal>CHECK</> trigger as one event. The <literal>ON UPDATE</>
1456 trigger must execute first, else the <literal>CHECK</> will check a
1457 non-final state of the row and possibly throw an inappropriate error.
1458 However, the firing order of these triggers is determined by their
1459 names, which generally sort in creation order since the triggers have
1460 auto-generated names following the convention
1461 <quote>RI_ConstraintTrigger_NNNN</>. A proper fix would require
1462 modifying that convention, which we will do in 9.2, but it seems risky
1463 to change it in existing releases. So this patch just changes the
1464 creation order of the triggers. Users encountering this type of error
1465 should drop and re-create the foreign key constraint to get its
1466 triggers into the right order.
1472 Avoid floating-point underflow while tracking buffer allocation rate
1477 While harmless in itself, on certain platforms this would result in
1478 annoying kernel log messages.
1484 Preserve blank lines within commands in <application>psql</>'s command
1485 history (Robert Haas)
1489 The former behavior could cause problems if an empty line was removed
1490 from within a string literal, for example.
1496 Fix <application>pg_dump</> to dump user-defined casts between
1497 auto-generated types, such as table rowtypes (Tom Lane)
1503 Use the preferred version of <application>xsubpp</> to build PL/Perl,
1504 not necessarily the operating system's main copy
1505 (David Wheeler and Alex Hunsaker)
1511 Fix incorrect coding in <filename>contrib/dict_int</> and
1512 <filename>contrib/dict_xsyn</> (Tom Lane)
1516 Some functions incorrectly assumed that memory returned by
1517 <function>palloc()</> is guaranteed zeroed.
1523 Honor query cancel interrupts promptly in <function>pgstatindex()</>
1530 Ensure VPATH builds properly install all server header files
1537 Shorten file names reported in verbose error messages (Peter Eisentraut)
1541 Regular builds have always reported just the name of the C file
1542 containing the error message call, but VPATH builds formerly
1543 reported an absolute path name.
1549 Fix interpretation of Windows timezone names for Central America
1554 Map <quote>Central America Standard Time</> to <literal>CST6</>, not
1555 <literal>CST6CDT</>, because DST is generally not observed anywhere in
1562 Update time zone data files to <application>tzdata</> release 2011n
1563 for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa;
1564 also historical corrections for Alaska and British East Africa.
1573 <sect1 id="release-8-3-16">
1574 <title>Release 8.3.16</title>
1577 <title>Release Date</title>
1578 <simpara>2011-09-26</simpara>
1582 This release contains a variety of fixes from 8.3.15.
1583 For information about new features in the 8.3 major release, see
1584 <xref linkend="release-8-3">.
1588 <title>Migration to Version 8.3.16</title>
1591 A dump/restore is not required for those running 8.3.X.
1592 However, if you are upgrading from a version earlier than 8.3.8,
1593 see the release notes for 8.3.8.
1599 <title>Changes</title>
1605 Fix bugs in indexing of in-doubt HOT-updated tuples (Tom Lane)
1609 These bugs could result in index corruption after reindexing a system
1610 catalog. They are not believed to affect user indexes.
1616 Fix multiple bugs in GiST index page split processing (Heikki
1621 The probability of occurrence was low, but these could lead to index
1628 Fix possible buffer overrun in <function>tsvector_concat()</>
1633 The function could underestimate the amount of memory needed for its
1634 result, leading to server crashes.
1640 Fix crash in <function>xml_recv</> when processing a
1641 <quote>standalone</> parameter (Tom Lane)
1647 Avoid possibly accessing off the end of memory in <command>ANALYZE</>
1648 and in SJIS-2004 encoding conversion (Noah Misch)
1652 This fixes some very-low-probability server crash scenarios.
1658 Fix race condition in relcache init file invalidation (Tom Lane)
1662 There was a window wherein a new backend process could read a stale init
1663 file but miss the inval messages that would tell it the data is stale.
1664 The result would be bizarre failures in catalog accesses, typically
1665 <quote>could not read block 0 in file ...</> later during startup.
1671 Fix memory leak at end of a GiST index scan (Tom Lane)
1675 Commands that perform many separate GiST index scans, such as
1676 verification of a new GiST-based exclusion constraint on a table
1677 already containing many rows, could transiently require large amounts of
1678 memory due to this leak.
1684 Fix performance problem when constructing a large, lossy bitmap
1691 Fix array- and path-creating functions to ensure padding bytes are
1696 This avoids some situations where the planner will think that
1697 semantically-equal constants are not equal, resulting in poor
1704 Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane)
1708 This could lead to loss of committed transactions after a server crash.
1714 Fix dump bug for <literal>VALUES</> in a view (Tom Lane)
1720 Disallow <literal>SELECT FOR UPDATE/SHARE</> on sequences (Tom Lane)
1724 This operation doesn't work as expected and can lead to failures.
1730 Defend against integer overflow when computing size of a hash table (Tom
1737 Fix cases where <command>CLUSTER</> might attempt to access
1738 already-removed TOAST data (Tom Lane)
1744 Fix portability bugs in use of credentials control messages for
1745 <quote>peer</> authentication (Tom Lane)
1751 Fix SSPI login when multiple roundtrips are required (Ahmed Shinwari,
1756 The typical symptom of this problem was <quote>The function requested is
1757 not supported</> errors during SSPI login.
1763 Fix typo in <function>pg_srand48</> seed initialization (Andres Freund)
1767 This led to failure to use all bits of the provided seed. This function
1768 is not used on most platforms (only those without <function>srandom</>),
1769 and the potential security exposure from a less-random-than-expected
1770 seed seems minimal in any case.
1776 Avoid integer overflow when the sum of <literal>LIMIT</> and
1777 <literal>OFFSET</> values exceeds 2^63 (Heikki Linnakangas)
1783 Add overflow checks to <type>int4</> and <type>int8</> versions of
1784 <function>generate_series()</> (Robert Haas)
1790 Fix trailing-zero removal in <function>to_char()</> (Marti Raudsepp)
1794 In a format with <literal>FM</> and no digit positions
1795 after the decimal point, zeroes to the left of the decimal point could
1796 be removed incorrectly.
1802 Fix <function>pg_size_pretty()</> to avoid overflow for inputs close to
1809 In <application>pg_ctl</>, support silent mode for service registrations
1816 Fix <application>psql</>'s counting of script file line numbers during
1817 <literal>COPY</> from a different file (Tom Lane)
1823 Fix <application>pg_restore</>'s direct-to-database mode for
1824 <varname>standard_conforming_strings</> (Tom Lane)
1828 <application>pg_restore</> could emit incorrect commands when restoring
1829 directly to a database server from an archive file that had been made
1830 with <varname>standard_conforming_strings</> set to <literal>on</>.
1836 Fix write-past-buffer-end and memory leak in <application>libpq</>'s
1837 LDAP service lookup code (Albe Laurenz)
1843 In <application>libpq</>, avoid failures when using nonblocking I/O
1844 and an SSL connection (Martin Pihlak, Tom Lane)
1850 Improve libpq's handling of failures during connection startup
1855 In particular, the response to a server report of <function>fork()</>
1856 failure during SSL connection startup is now saner.
1862 Improve <application>libpq</>'s error reporting for SSL failures (Tom
1869 Make <application>ecpglib</> write <type>double</> values with 15 digits
1870 precision (Akira Kurosawa)
1876 In <application>ecpglib</>, be sure <literal>LC_NUMERIC</> setting is
1877 restored after an error (Michael Meskes)
1883 Apply upstream fix for blowfish signed-character bug (CVE-2011-2483)
1888 <filename>contrib/pg_crypto</>'s blowfish encryption code could give
1889 wrong results on platforms where char is signed (which is most),
1890 leading to encrypted passwords being weaker than they should be.
1896 Fix memory leak in <filename>contrib/seg</> (Heikki Linnakangas)
1902 Fix <function>pgstatindex()</> to give consistent results for empty
1909 Allow building with perl 5.14 (Alex Hunsaker)
1915 Update configure script's method for probing existence of system
1916 functions (Tom Lane)
1920 The version of autoconf we used in 8.3 and 8.2 could be fooled by
1921 compilers that perform link-time optimization.
1927 Fix assorted issues with build and install file paths containing spaces
1934 Update time zone data files to <application>tzdata</> release 2011i
1935 for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan.
1944 <sect1 id="release-8-3-15">
1945 <title>Release 8.3.15</title>
1948 <title>Release Date</title>
1949 <simpara>2011-04-18</simpara>
1953 This release contains a variety of fixes from 8.3.14.
1954 For information about new features in the 8.3 major release, see
1955 <xref linkend="release-8-3">.
1959 <title>Migration to Version 8.3.15</title>
1962 A dump/restore is not required for those running 8.3.X.
1963 However, if you are upgrading from a version earlier than 8.3.8,
1964 see the release notes for 8.3.8.
1970 <title>Changes</title>
1976 Disallow including a composite type in itself (Tom Lane)
1980 This prevents scenarios wherein the server could recurse infinitely
1981 while processing the composite type. While there are some possible
1982 uses for such a structure, they don't seem compelling enough to
1983 justify the effort required to make sure it always works safely.
1989 Avoid potential deadlock during catalog cache initialization
1994 In some cases the cache loading code would acquire share lock on a
1995 system index before locking the index's catalog. This could deadlock
1996 against processes trying to acquire exclusive locks in the other,
1997 more standard order.
2003 Fix dangling-pointer problem in <literal>BEFORE ROW UPDATE</> trigger
2004 handling when there was a concurrent update to the target tuple
2009 This bug has been observed to result in intermittent <quote>cannot
2010 extract system attribute from virtual tuple</> failures while trying to
2011 do <literal>UPDATE RETURNING ctid</>. There is a very small probability
2012 of more serious errors, such as generating incorrect index entries for
2019 Disallow <command>DROP TABLE</> when there are pending deferred trigger
2020 events for the table (Tom Lane)
2024 Formerly the <command>DROP</> would go through, leading to
2025 <quote>could not open relation with OID nnn</> errors when the
2026 triggers were eventually fired.
2032 Fix PL/Python memory leak involving array slices (Daniel Popowich)
2038 Fix <application>pg_restore</> to cope with long lines (over 1KB) in
2039 TOC files (Tom Lane)
2045 Put in more safeguards against crashing due to division-by-zero
2046 with overly enthusiastic compiler optimization (Aurelien Jarno)
2052 Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane)
2056 There was a hard-wired assumption that this system function was not
2057 available on MIPS hardware on these systems. Use a compile-time test
2058 instead, since more recent versions have it.
2064 Fix compilation failures on HP-UX (Heikki Linnakangas)
2070 Fix version-incompatibility problem with <application>libintl</> on
2071 Windows (Hiroshi Inoue)
2077 Fix usage of <application>xcopy</> in Windows build scripts to
2078 work correctly under Windows 7 (Andrew Dunstan)
2082 This affects the build scripts only, not installation or usage.
2088 Fix path separator used by <application>pg_regress</> on Cygwin
2095 Update time zone data files to <application>tzdata</> release 2011f
2096 for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa,
2097 and Turkey; also historical corrections for South Australia, Alaska,
2107 <sect1 id="release-8-3-14">
2108 <title>Release 8.3.14</title>
2111 <title>Release Date</title>
2112 <simpara>2011-01-31</simpara>
2116 This release contains a variety of fixes from 8.3.13.
2117 For information about new features in the 8.3 major release, see
2118 <xref linkend="release-8-3">.
2122 <title>Migration to Version 8.3.14</title>
2125 A dump/restore is not required for those running 8.3.X.
2126 However, if you are upgrading from a version earlier than 8.3.8,
2127 see the release notes for 8.3.8.
2133 <title>Changes</title>
2139 Avoid failures when <command>EXPLAIN</> tries to display a simple-form
2140 <literal>CASE</> expression (Tom Lane)
2144 If the <literal>CASE</>'s test expression was a constant, the planner
2145 could simplify the <literal>CASE</> into a form that confused the
2146 expression-display code, resulting in <quote>unexpected CASE WHEN
2153 Fix assignment to an array slice that is before the existing range
2154 of subscripts (Tom Lane)
2158 If there was a gap between the newly added subscripts and the first
2159 pre-existing subscript, the code miscalculated how many entries needed
2160 to be copied from the old array's null bitmap, potentially leading to
2161 data corruption or crash.
2167 Avoid unexpected conversion overflow in planner for very distant date
2172 The <type>date</> type supports a wider range of dates than can be
2173 represented by the <type>timestamp</> types, but the planner assumed it
2174 could always convert a date to timestamp with impunity.
2180 Fix <application>pg_restore</>'s text output for large objects (BLOBs)
2181 when <varname>standard_conforming_strings</> is on (Tom Lane)
2185 Although restoring directly to a database worked correctly, string
2186 escaping was incorrect if <application>pg_restore</> was asked for
2187 SQL text output and <varname>standard_conforming_strings</> had been
2188 enabled in the source database.
2194 Fix erroneous parsing of <type>tsquery</> values containing
2195 <literal>... & !(subexpression) | ...</literal> (Tom Lane)
2199 Queries containing this combination of operators were not executed
2200 correctly. The same error existed in <filename>contrib/intarray</>'s
2201 <type>query_int</> type and <filename>contrib/ltree</>'s
2202 <type>ltxtquery</> type.
2208 Fix buffer overrun in <filename>contrib/intarray</>'s input function
2209 for the <type>query_int</> type (Apple)
2213 This bug is a security risk since the function's return address could
2214 be overwritten. Thanks to Apple Inc's security team for reporting this
2215 issue and supplying the fix. (CVE-2010-4015)
2221 Fix bug in <filename>contrib/seg</>'s GiST picksplit algorithm
2222 (Alexander Korotkov)
2226 This could result in considerable inefficiency, though not actually
2227 incorrect answers, in a GiST index on a <type>seg</> column.
2228 If you have such an index, consider <command>REINDEX</>ing it after
2229 installing this update. (This is identical to the bug that was fixed in
2230 <filename>contrib/cube</> in the previous update.)
2239 <sect1 id="release-8-3-13">
2240 <title>Release 8.3.13</title>
2243 <title>Release Date</title>
2244 <simpara>2010-12-16</simpara>
2248 This release contains a variety of fixes from 8.3.12.
2249 For information about new features in the 8.3 major release, see
2250 <xref linkend="release-8-3">.
2254 <title>Migration to Version 8.3.13</title>
2257 A dump/restore is not required for those running 8.3.X.
2258 However, if you are upgrading from a version earlier than 8.3.8,
2259 see the release notes for 8.3.8.
2265 <title>Changes</title>
2272 <link linkend="guc-wal-sync-method"><varname>wal_sync_method</></link>
2273 to be <literal>fdatasync</> on Linux (Tom Lane, Marti Raudsepp)
2277 The default on Linux has actually been <literal>fdatasync</> for many
2278 years, but recent kernel changes caused <productname>PostgreSQL</> to
2279 choose <literal>open_datasync</> instead. This choice did not result
2280 in any performance improvement, and caused outright failures on
2281 certain filesystems, notably <literal>ext4</> with the
2282 <literal>data=journal</> mount option.
2288 Fix assorted bugs in WAL replay logic for GIN indexes (Tom Lane)
2292 This could result in <quote>bad buffer id: 0</> failures or
2293 corruption of index contents during replication.
2299 Fix recovery from base backup when the starting checkpoint WAL record
2300 is not in the same WAL segment as its redo point (Jeff Davis)
2306 Fix persistent slowdown of autovacuum workers when multiple workers
2307 remain active for a long time (Tom Lane)
2311 The effective <varname>vacuum_cost_limit</> for an autovacuum worker
2312 could drop to nearly zero if it processed enough tables, causing it
2313 to run extremely slowly.
2319 Add support for detecting register-stack overrun on <literal>IA64</>
2324 The <literal>IA64</> architecture has two hardware stacks. Full
2325 prevention of stack-overrun failures requires checking both.
2331 Add a check for stack overflow in <function>copyObject()</> (Tom Lane)
2335 Certain code paths could crash due to stack overflow given a
2336 sufficiently complex query.
2342 Fix detection of page splits in temporary GiST indexes (Heikki
2347 It is possible to have a <quote>concurrent</> page split in a
2348 temporary index, if for example there is an open cursor scanning the
2349 index when an insertion is done. GiST failed to detect this case and
2350 hence could deliver wrong results when execution of the cursor
2357 Avoid memory leakage while <command>ANALYZE</>'ing complex index
2358 expressions (Tom Lane)
2364 Ensure an index that uses a whole-row Var still depends on its table
2369 An index declared like <literal>create index i on t (foo(t.*))</>
2370 would not automatically get dropped when its table was dropped.
2376 Do not <quote>inline</> a SQL function with multiple <literal>OUT</>
2377 parameters (Tom Lane)
2381 This avoids a possible crash due to loss of information about the
2382 expected result rowtype.
2388 Behave correctly if <literal>ORDER BY</>, <literal>LIMIT</>,
2389 <literal>FOR UPDATE</>, or <literal>WITH</> is attached to the
2390 <literal>VALUES</> part of <literal>INSERT ... VALUES</> (Tom Lane)
2396 Fix constant-folding of <literal>COALESCE()</> expressions (Tom Lane)
2400 The planner would sometimes attempt to evaluate sub-expressions that
2401 in fact could never be reached, possibly leading to unexpected errors.
2407 Fix postmaster crash when connection acceptance
2408 (<function>accept()</> or one of the calls made immediately after it)
2409 fails, and the postmaster was compiled with GSSAPI support (Alexander
2416 Fix missed unlink of temporary files when <varname>log_temp_files</>
2417 is active (Tom Lane)
2421 If an error occurred while attempting to emit the log message, the
2422 unlink was not done, resulting in accumulation of temp files.
2428 Add print functionality for <structname>InhRelation</> nodes (Tom Lane)
2432 This avoids a failure when <varname>debug_print_parse</> is enabled
2433 and certain types of query are executed.
2439 Fix incorrect calculation of distance from a point to a horizontal
2440 line segment (Tom Lane)
2444 This bug affected several different geometric distance-measurement
2451 Fix <application>PL/pgSQL</>'s handling of <quote>simple</>
2452 expressions to not fail in recursion or error-recovery cases (Tom Lane)
2458 Fix <application>PL/Python</>'s handling of set-returning functions
2463 Attempts to call SPI functions within the iterator generating a set
2470 Fix bug in <filename>contrib/cube</>'s GiST picksplit algorithm
2471 (Alexander Korotkov)
2475 This could result in considerable inefficiency, though not actually
2476 incorrect answers, in a GiST index on a <type>cube</> column.
2477 If you have such an index, consider <command>REINDEX</>ing it after
2478 installing this update.
2484 Don't emit <quote>identifier will be truncated</> notices in
2485 <filename>contrib/dblink</> except when creating new connections
2492 Fix potential coredump on missing public key in
2493 <filename>contrib/pgcrypto</> (Marti Raudsepp)
2499 Fix memory leak in <filename>contrib/xml2</>'s XPath query functions
2506 Update time zone data files to <application>tzdata</> release 2010o
2507 for DST law changes in Fiji and Samoa;
2508 also historical corrections for Hong Kong.
2517 <sect1 id="release-8-3-12">
2518 <title>Release 8.3.12</title>
2521 <title>Release Date</title>
2522 <simpara>2010-10-04</simpara>
2526 This release contains a variety of fixes from 8.3.11.
2527 For information about new features in the 8.3 major release, see
2528 <xref linkend="release-8-3">.
2532 <title>Migration to Version 8.3.12</title>
2535 A dump/restore is not required for those running 8.3.X.
2536 However, if you are upgrading from a version earlier than 8.3.8,
2537 see the release notes for 8.3.8.
2543 <title>Changes</title>
2549 Use a separate interpreter for each calling SQL userid in PL/Perl and
2554 This change prevents security problems that can be caused by subverting
2555 Perl or Tcl code that will be executed later in the same session under
2556 another SQL user identity (for example, within a <literal>SECURITY
2557 DEFINER</> function). Most scripting languages offer numerous ways that
2558 that might be done, such as redefining standard functions or operators
2559 called by the target function. Without this change, any SQL user with
2560 Perl or Tcl language usage rights can do essentially anything with the
2561 SQL privileges of the target function's owner.
2565 The cost of this change is that intentional communication among Perl
2566 and Tcl functions becomes more difficult. To provide an escape hatch,
2567 PL/PerlU and PL/TclU functions continue to use only one interpreter
2568 per session. This is not considered a security issue since all such
2569 functions execute at the trust level of a database superuser already.
2573 It is likely that third-party procedural languages that claim to offer
2574 trusted execution have similar security issues. We advise contacting
2575 the authors of any PL you are depending on for security-critical
2580 Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433).
2586 Prevent possible crashes in <function>pg_get_expr()</> by disallowing
2587 it from being called with an argument that is not one of the system
2588 catalog columns it's intended to be used with
2589 (Heikki Linnakangas, Tom Lane)
2595 Treat exit code 128 (<literal>ERROR_WAIT_NO_CHILDREN</>) as non-fatal on
2596 Windows (Magnus Hagander)
2600 Under high load, Windows processes will sometimes fail at startup with
2601 this error code. Formerly the postmaster treated this as a panic
2602 condition and restarted the whole database, but that seems to be
2609 Fix incorrect usage of non-strict OR joinclauses in Append indexscans
2614 This is a back-patch of an 8.4 fix that was missed in the 8.3 branch.
2615 This corrects an error introduced in 8.3.8 that could cause incorrect
2616 results for outer joins when the inner relation is an inheritance tree
2617 or <literal>UNION ALL</> subquery.
2623 Fix possible duplicate scans of <literal>UNION ALL</> member relations
2630 Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane)
2634 This occurred when a sub-select contains a join alias reference that
2635 expands into an expression containing another sub-select.
2641 Fix failure to mark cached plans as transient (Tom Lane)
2645 If a plan is prepared while <command>CREATE INDEX CONCURRENTLY</> is
2646 in progress for one of the referenced tables, it is supposed to be
2647 re-planned once the index is ready for use. This was not happening
2654 Reduce PANIC to ERROR in some occasionally-reported btree failure cases,
2655 and provide additional detail in the resulting error messages
2660 This should improve the system's robustness with corrupted indexes.
2666 Prevent show_session_authorization() from crashing within autovacuum
2667 processes (Tom Lane)
2673 Defend against functions returning setof record where not all the
2674 returned rows are actually of the same rowtype (Tom Lane)
2680 Fix possible failure when hashing a pass-by-reference function result
2687 Improve merge join's handling of NULLs in the join columns (Tom Lane)
2691 A merge join can now stop entirely upon reaching the first NULL,
2692 if the sort order is such that NULLs sort high.
2698 Take care to fsync the contents of lockfiles (both
2699 <filename>postmaster.pid</> and the socket lockfile) while writing them
2704 This omission could result in corrupted lockfile contents if the
2705 machine crashes shortly after postmaster start. That could in turn
2706 prevent subsequent attempts to start the postmaster from succeeding,
2707 until the lockfile is manually removed.
2713 Avoid recursion while assigning XIDs to heavily-nested
2714 subtransactions (Andres Freund, Robert Haas)
2718 The original coding could result in a crash if there was limited
2725 Avoid holding open old WAL segments in the walwriter process
2726 (Magnus Hagander, Heikki Linnakangas)
2730 The previous coding would prevent removal of no-longer-needed segments.
2736 Fix <varname>log_line_prefix</>'s <literal>%i</> escape,
2737 which could produce junk early in backend startup (Tom Lane)
2743 Fix possible data corruption in <command>ALTER TABLE ... SET
2744 TABLESPACE</> when archiving is enabled (Jeff Davis)
2750 Allow <command>CREATE DATABASE</> and <command>ALTER DATABASE ... SET
2751 TABLESPACE</> to be interrupted by query-cancel (Guillaume Lelarge)
2757 Fix <command>REASSIGN OWNED</> to handle operator classes and families
2764 Fix possible core dump when comparing two empty <type>tsquery</> values
2771 Fix <literal>LIKE</>'s handling of patterns containing <literal>%</>
2772 followed by <literal>_</> (Tom Lane)
2776 We've fixed this before, but there were still some incorrectly-handled
2783 In PL/Python, defend against null pointer results from
2784 <function>PyCObject_AsVoidPtr</> and <function>PyCObject_FromVoidPtr</>
2791 Make psql recognize <command>DISCARD ALL</> as a command that should
2792 not be encased in a transaction block in autocommit-off mode
2799 Fix <application>ecpg</> to process data from <literal>RETURNING</>
2800 clauses correctly (Michael Meskes)
2806 Improve <filename>contrib/dblink</>'s handling of tables containing
2807 dropped columns (Tom Lane)
2813 Fix connection leak after <quote>duplicate connection name</quote>
2814 errors in <filename>contrib/dblink</> (Itagaki Takahiro)
2820 Fix <filename>contrib/dblink</> to handle connection names longer than
2821 62 bytes correctly (Itagaki Takahiro)
2827 Add <function>hstore(text, text)</>
2828 function to <filename>contrib/hstore</> (Robert Haas)
2832 This function is the recommended substitute for the now-deprecated
2833 <literal>=></> operator. It was back-patched so that future-proofed
2834 code can be used with older server versions. Note that the patch will
2835 be effective only after <filename>contrib/hstore</> is installed or
2836 reinstalled in a particular database. Users might prefer to execute
2837 the <command>CREATE FUNCTION</> command by hand, instead.
2843 Update build infrastructure and documentation to reflect the source code
2844 repository's move from CVS to Git (Magnus Hagander and others)
2850 Update time zone data files to <application>tzdata</> release 2010l
2851 for DST law changes in Egypt and Palestine; also historical corrections
2856 This change also adds new names for two Micronesian timezones:
2857 Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred
2858 abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over
2865 Make Windows' <quote>N. Central Asia Standard Time</> timezone map to
2866 Asia/Novosibirsk, not Asia/Almaty (Magnus Hagander)
2870 Microsoft changed the DST behavior of this zone in the timezone update
2871 from KB976098. Asia/Novosibirsk is a better match to its new behavior.
2880 <sect1 id="release-8-3-11">
2881 <title>Release 8.3.11</title>
2884 <title>Release Date</title>
2885 <simpara>2010-05-17</simpara>
2889 This release contains a variety of fixes from 8.3.10.
2890 For information about new features in the 8.3 major release, see
2891 <xref linkend="release-8-3">.
2895 <title>Migration to Version 8.3.11</title>
2898 A dump/restore is not required for those running 8.3.X.
2899 However, if you are upgrading from a version earlier than 8.3.8,
2900 see the release notes for 8.3.8.
2906 <title>Changes</title>
2912 Enforce restrictions in <literal>plperl</> using an opmask applied to
2913 the whole interpreter, instead of using <filename>Safe.pm</>
2914 (Tim Bunce, Andrew Dunstan)
2918 Recent developments have convinced us that <filename>Safe.pm</> is too
2919 insecure to rely on for making <literal>plperl</> trustable. This
2920 change removes use of <filename>Safe.pm</> altogether, in favor of using
2921 a separate interpreter with an opcode mask that is always applied.
2922 Pleasant side effects of the change include that it is now possible to
2923 use Perl's <literal>strict</> pragma in a natural way in
2924 <literal>plperl</>, and that Perl's <literal>$a</> and <literal>$b</>
2925 variables work as expected in sort routines, and that function
2926 compilation is significantly faster. (CVE-2010-1169)
2932 Prevent PL/Tcl from executing untrustworthy code from
2933 <structname>pltcl_modules</> (Tom)
2937 PL/Tcl's feature for autoloading Tcl code from a database table
2938 could be exploited for trojan-horse attacks, because there was no
2939 restriction on who could create or insert into that table. This change
2940 disables the feature unless <structname>pltcl_modules</> is owned by a
2941 superuser. (However, the permissions on the table are not checked, so
2942 installations that really need a less-than-secure modules table can
2943 still grant suitable privileges to trusted non-superusers.) Also,
2944 prevent loading code into the unrestricted <quote>normal</> Tcl
2945 interpreter unless we are really going to execute a <literal>pltclu</>
2946 function. (CVE-2010-1170)
2952 Fix possible crash if a cache reset message is received during
2953 rebuild of a relcache entry (Heikki)
2957 This error was introduced in 8.3.10 while fixing a related failure.
2963 Apply per-function GUC settings while running the language validator
2964 for the function (Itagaki Takahiro)
2968 This avoids failures if the function's code is invalid without the
2969 setting; an example is that SQL functions may not parse if the
2970 <varname>search_path</> is not correct.
2976 Do not allow an unprivileged user to reset superuser-only parameter
2981 Previously, if an unprivileged user ran <literal>ALTER USER ... RESET
2982 ALL</> for himself, or <literal>ALTER DATABASE ... RESET ALL</> for
2983 a database he owns, this would remove all special parameter settings
2984 for the user or database, even ones that are only supposed to be
2985 changeable by a superuser. Now, the <command>ALTER</> will only
2986 remove the parameters that the user has permission to change.
2992 Avoid possible crash during backend shutdown if shutdown occurs
2993 when a <literal>CONTEXT</> addition would be made to log entries (Tom)
2997 In some cases the context-printing function would fail because the
2998 current transaction had already been rolled back when it came time
2999 to print a log message.
3005 Ensure the archiver process responds to changes in
3006 <varname>archive_command</> as soon as possible (Tom)
3012 Update pl/perl's <filename>ppport.h</> for modern Perl versions
3019 Fix assorted memory leaks in pl/python (Andreas Freund, Tom)
3025 Prevent infinite recursion in <application>psql</> when expanding
3026 a variable that refers to itself (Tom)
3032 Fix <application>psql</>'s <literal>\copy</> to not add spaces around
3033 a dot within <literal>\copy (select ...)</> (Tom)
3037 Addition of spaces around the decimal point in a numeric literal would
3038 result in a syntax error.
3044 Fix unnecessary <quote>GIN indexes do not support whole-index scans</>
3045 errors for unsatisfiable queries using <filename>contrib/intarray</>
3052 Ensure that <filename>contrib/pgstattuple</> functions respond to cancel
3053 interrupts promptly (Tatsuhito Kasahara)
3059 Make server startup deal properly with the case that
3060 <function>shmget()</> returns <literal>EINVAL</> for an existing
3061 shared memory segment (Tom)
3065 This behavior has been observed on BSD-derived kernels including OS X.
3066 It resulted in an entirely-misleading startup failure complaining that
3067 the shared memory request size was too large.
3073 Avoid possible crashes in syslogger process on Windows (Heikki)
3079 Deal more robustly with incomplete time zone information in the
3080 Windows registry (Magnus)
3086 Update the set of known Windows time zone names (Magnus)
3092 Update time zone data files to <application>tzdata</> release 2010j
3093 for DST law changes in Argentina, Australian Antarctic, Bangladesh,
3094 Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia;
3095 also historical corrections for Taiwan.
3099 Also, add <literal>PKST</> (Pakistan Summer Time) to the default set of
3100 timezone abbreviations.
3109 <sect1 id="release-8-3-10">
3110 <title>Release 8.3.10</title>
3113 <title>Release Date</title>
3114 <simpara>2010-03-15</simpara>
3118 This release contains a variety of fixes from 8.3.9.
3119 For information about new features in the 8.3 major release, see
3120 <xref linkend="release-8-3">.
3124 <title>Migration to Version 8.3.10</title>
3127 A dump/restore is not required for those running 8.3.X.
3128 However, if you are upgrading from a version earlier than 8.3.8,
3129 see the release notes for 8.3.8.
3135 <title>Changes</title>
3141 Add new configuration parameter <varname>ssl_renegotiation_limit</> to
3142 control how often we do session key renegotiation for an SSL connection
3147 This can be set to zero to disable renegotiation completely, which may
3148 be required if a broken SSL library is used. In particular, some
3149 vendors are shipping stopgap patches for CVE-2009-3555 that cause
3150 renegotiation attempts to fail.
3156 Fix possible deadlock during backend startup (Tom)
3162 Fix possible crashes due to not handling errors during relcache reload
3169 Fix possible crash due to use of dangling pointer to a cached plan
3176 Fix possible crashes when trying to recover from a failure in
3177 subtransaction start (Tom)
3183 Fix server memory leak associated with use of savepoints and a client
3184 encoding different from server's encoding (Tom)
3190 Fix incorrect WAL data emitted during end-of-recovery cleanup of a GIST
3191 index page split (Yoichi Hirai)
3195 This would result in index corruption, or even more likely an error
3196 during WAL replay, if we were unlucky enough to crash during
3197 end-of-recovery cleanup after having completed an incomplete GIST
3204 Make <function>substring()</> for <type>bit</> types treat any negative
3205 length as meaning <quote>all the rest of the string</> (Tom)
3209 The previous coding treated only -1 that way, and would produce an
3210 invalid result value for other negative values, possibly leading to
3211 a crash (CVE-2010-0442).
3217 Fix integer-to-bit-string conversions to handle the first fractional
3218 byte correctly when the output bit width is wider than the given
3219 integer by something other than a multiple of 8 bits (Tom)
3225 Fix some cases of pathologically slow regular expression matching (Tom)
3231 Fix assorted crashes in <type>xml</> processing caused by sloppy
3232 memory management (Tom)
3236 This is a back-patch of changes first applied in 8.4. The 8.3 code
3237 was known buggy, but the new code was sufficiently different to not
3238 want to back-patch it until it had gotten some field testing.
3244 Fix bug with trying to update a field of an element of a
3245 composite-type array column (Tom)
3251 Fix the <literal>STOP WAL LOCATION</> entry in backup history files to
3252 report the next WAL segment's name when the end location is exactly at a
3253 segment boundary (Itagaki Takahiro)
3259 Fix some more cases of temporary-file leakage (Heikki)
3263 This corrects a problem introduced in the previous minor release.
3264 One case that failed is when a plpgsql function returning set is
3265 called within another function's exception handler.
3271 Improve constraint exclusion processing of boolean-variable cases,
3272 in particular make it possible to exclude a partition that has a
3273 <quote>bool_column = false</> constraint (Tom)
3279 When reading <filename>pg_hba.conf</> and related files, do not treat
3280 <literal>@something</> as a file inclusion request if the <literal>@</>
3281 appears inside quote marks; also, never treat <literal>@</> by itself
3282 as a file inclusion request (Tom)
3286 This prevents erratic behavior if a role or database name starts with
3287 <literal>@</>. If you need to include a file whose path name
3288 contains spaces, you can still do so, but you must write
3289 <literal>@"/path to/file"</> rather than putting the quotes around
3290 the whole construct.
3296 Prevent infinite loop on some platforms if a directory is named as
3297 an inclusion target in <filename>pg_hba.conf</> and related files
3304 Fix possible infinite loop if <function>SSL_read</> or
3305 <function>SSL_write</> fails without setting <varname>errno</> (Tom)
3309 This is reportedly possible with some Windows versions of
3310 <application>openssl</>.
3316 Disallow <acronym>GSSAPI</> authentication on local connections,
3317 since it requires a hostname to function correctly (Magnus)
3323 Make <application>ecpg</> report the proper SQLSTATE if the connection
3324 disappears (Michael)
3330 Fix <application>psql</>'s <literal>numericlocale</> option to not
3331 format strings it shouldn't in latex and troff output formats (Heikki)
3337 Make <application>psql</> return the correct exit status (3) when
3338 <literal>ON_ERROR_STOP</> and <literal>--single-transaction</> are
3339 both specified and an error occurs during the implied <command>COMMIT</>
3346 Fix plpgsql failure in one case where a composite column is set to NULL
3353 Fix possible failure when calling PL/Perl functions from PL/PerlU
3354 or vice versa (Tim Bunce)
3360 Add <literal>volatile</> markings in PL/Python to avoid possible
3361 compiler-specific misbehavior (Zdenek Kotala)
3367 Ensure PL/Tcl initializes the Tcl interpreter fully (Tom)
3371 The only known symptom of this oversight is that the Tcl
3372 <literal>clock</> command misbehaves if using Tcl 8.5 or later.
3378 Prevent crash in <filename>contrib/dblink</> when too many key
3379 columns are specified to a <function>dblink_build_sql_*</> function
3380 (Rushabh Lathia, Joe Conway)
3386 Allow zero-dimensional arrays in <filename>contrib/ltree</> operations
3391 This case was formerly rejected as an error, but it's more convenient to
3392 treat it the same as a zero-element array. In particular this avoids
3393 unnecessary failures when an <type>ltree</> operation is applied to the
3394 result of <literal>ARRAY(SELECT ...)</> and the sub-select returns no
3401 Fix assorted crashes in <filename>contrib/xml2</> caused by sloppy
3402 memory management (Tom)
3408 Make building of <filename>contrib/xml2</> more robust on Windows
3415 Fix race condition in Windows signal handling (Radu Ilie)
3419 One known symptom of this bug is that rows in <structname>pg_listener</>
3420 could be dropped under heavy load.
3426 Update time zone data files to <application>tzdata</> release 2010e
3427 for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
3436 <sect1 id="release-8-3-9">
3437 <title>Release 8.3.9</title>
3440 <title>Release Date</title>
3441 <simpara>2009-12-14</simpara>
3445 This release contains a variety of fixes from 8.3.8.
3446 For information about new features in the 8.3 major release, see
3447 <xref linkend="release-8-3">.
3451 <title>Migration to Version 8.3.9</title>
3454 A dump/restore is not required for those running 8.3.X.
3455 However, if you are upgrading from a version earlier than 8.3.8,
3456 see the release notes for 8.3.8.
3462 <title>Changes</title>
3468 Protect against indirect security threats caused by index functions
3469 changing session-local state (Gurjeet Singh, Tom)
3473 This change prevents allegedly-immutable index functions from possibly
3474 subverting a superuser's session (CVE-2009-4136).
3480 Reject SSL certificates containing an embedded null byte in the common
3481 name (CN) field (Magnus)
3485 This prevents unintended matching of a certificate to a server or client
3486 name during SSL validation (CVE-2009-4034).
3492 Fix possible crash during backend-startup-time cache initialization (Tom)
3498 Avoid crash on empty thesaurus dictionary (Tom)
3504 Prevent signals from interrupting <literal>VACUUM</> at unsafe times
3509 This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled
3510 after it's already committed its tuple movements, as well as transient
3511 errors if a plain <literal>VACUUM</> is interrupted after having
3512 truncated the table.
3518 Fix possible crash due to integer overflow in hash table size
3523 This could occur with extremely large planner estimates for the size of
3524 a hashjoin's result.
3530 Fix very rare crash in <type>inet</>/<type>cidr</> comparisons (Chris
3537 Ensure that shared tuple-level locks held by prepared transactions are
3538 not ignored (Heikki)
3544 Fix premature drop of temporary files used for a cursor that is accessed
3545 within a subtransaction (Heikki)
3551 Fix memory leak in syslogger process when rotating to a new CSV logfile
3558 Fix Windows permission-downgrade logic (Jesse Morris)
3562 This fixes some cases where the database failed to start on Windows,
3563 often with misleading error messages such as <quote>could not locate
3564 matching postgres executable</quote>.
3570 Fix incorrect logic for GiST index page splits, when the split depends
3571 on a non-first column of the index (Paul Ramsey)
3577 Don't error out if recycling or removing an old WAL file fails at the
3578 end of checkpoint (Heikki)
3582 It's better to treat the problem as non-fatal and allow the checkpoint
3583 to complete. Future checkpoints will retry the removal. Such problems
3584 are not expected in normal operation, but have been seen to be
3585 caused by misdesigned Windows anti-virus and backup software.
3591 Ensure WAL files aren't repeatedly archived on Windows (Heikki)
3595 This is another symptom that could happen if some other process
3596 interfered with deletion of a no-longer-needed file.
3602 Fix PAM password processing to be more robust (Tom)
3606 The previous code is known to fail with the combination of the Linux
3607 <literal>pam_krb5</> PAM module with Microsoft Active Directory as the
3608 domain controller. It might have problems elsewhere too, since it was
3609 making unjustified assumptions about what arguments the PAM stack would
3616 Raise the maximum authentication token (Kerberos ticket) size in GSSAPI
3617 and SSPI authentication methods (Ian Turner)
3621 While the old 2000-byte limit was more than enough for Unix Kerberos
3622 implementations, tickets issued by Windows Domain Controllers can be
3629 Re-enable collection of access statistics for sequences (Akira Kurosawa)
3633 This used to work but was broken in 8.3.
3639 Fix processing of ownership dependencies during <literal>CREATE OR
3640 REPLACE FUNCTION</> (Tom)
3646 Fix incorrect handling of <literal>WHERE</>
3647 <replaceable>x</>=<replaceable>x</> conditions (Tom)
3651 In some cases these could get ignored as redundant, but they aren't
3652 — they're equivalent to <replaceable>x</> <literal>IS NOT NULL</>.
3658 Make text search parser accept underscores in XML attributes (Peter)
3664 Fix encoding handling in <type>xml</> binary input (Heikki)
3668 If the XML header doesn't specify an encoding, we now assume UTF-8 by
3669 default; the previous handling was inconsistent.
3675 Fix bug with calling <literal>plperl</> from <literal>plperlu</> or vice
3680 An error exit from the inner function could result in crashes due to
3681 failure to re-select the correct Perl interpreter for the outer function.
3687 Fix session-lifespan memory leak when a PL/Perl function is redefined
3694 Ensure that Perl arrays are properly converted to
3695 <productname>PostgreSQL</> arrays when returned by a set-returning
3696 PL/Perl function (Andrew Dunstan, Abhijit Menon-Sen)
3700 This worked correctly already for non-set-returning functions.
3706 Fix rare crash in exception processing in PL/Python (Peter)
3712 In <filename>contrib/pg_standby</>, disable triggering failover with a
3713 signal on Windows (Fujii Masao)
3717 This never did anything useful, because Windows doesn't have Unix-style
3718 signals, but recent changes made it actually crash.
3724 Ensure <application>psql</>'s flex module is compiled with the correct
3725 system header definitions (Tom)
3729 This fixes build failures on platforms where
3730 <literal>--enable-largefile</> causes incompatible changes in the
3737 Make the postmaster ignore any <literal>application_name</> parameter in
3738 connection request packets, to improve compatibility with future libpq
3745 Update the timezone abbreviation files to match current reality (Joachim
3750 This includes adding <literal>IDT</> and <literal>SGT</> to the default
3751 timezone abbreviation set.
3757 Update time zone data files to <application>tzdata</> release 2009s
3758 for DST law changes in Antarctica, Argentina, Bangladesh, Fiji,
3759 Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical
3760 corrections for Hong Kong.
3769 <sect1 id="release-8-3-8">
3770 <title>Release 8.3.8</title>
3773 <title>Release Date</title>
3774 <simpara>2009-09-09</simpara>
3778 This release contains a variety of fixes from 8.3.7.
3779 For information about new features in the 8.3 major release, see
3780 <xref linkend="release-8-3">.
3784 <title>Migration to Version 8.3.8</title>
3787 A dump/restore is not required for those running 8.3.X.
3788 However, if you have any hash indexes on <type>interval</> columns,
3789 you must <command>REINDEX</> them after updating to 8.3.8.
3790 Also, if you are upgrading from a version earlier than 8.3.5,
3791 see the release notes for 8.3.5.
3797 <title>Changes</title>
3803 Fix Windows shared-memory allocation code (Tsutomu Yamada, Magnus)
3807 This bug led to the often-reported <quote>could not reattach
3808 to shared memory</> error message.
3814 Force WAL segment switch during <function>pg_start_backup()</>
3819 This avoids corner cases that could render a base backup unusable.
3825 Disallow <command>RESET ROLE</> and <command>RESET SESSION
3826 AUTHORIZATION</> inside security-definer functions (Tom, Heikki)
3830 This covers a case that was missed in the previous patch that
3831 disallowed <command>SET ROLE</> and <command>SET SESSION
3832 AUTHORIZATION</> inside security-definer functions.
3839 Make <command>LOAD</> of an already-loaded loadable module
3844 Formerly, <command>LOAD</> would attempt to unload and re-load the
3845 module, but this is unsafe and not all that useful.
3851 Disallow empty passwords during LDAP authentication (Magnus)
3857 Fix handling of sub-SELECTs appearing in the arguments of
3858 an outer-level aggregate function (Tom)
3864 Fix bugs associated with fetching a whole-row value from the
3865 output of a Sort or Materialize plan node (Tom)
3871 Prevent <varname>synchronize_seqscans</> from changing the results of
3872 scrollable and <literal>WITH HOLD</> cursors (Tom)
3878 Revert planner change that disabled partial-index and constraint
3879 exclusion optimizations when there were more than 100 clauses in
3880 an AND or OR list (Tom)
3886 Fix hash calculation for data type <type>interval</> (Tom)
3890 This corrects wrong results for hash joins on interval values.
3891 It also changes the contents of hash indexes on interval columns.
3892 If you have any such indexes, you must <command>REINDEX</> them
3899 Treat <function>to_char(..., 'TH')</> as an uppercase ordinal
3900 suffix with <literal>'HH'</>/<literal>'HH12'</> (Heikki)
3904 It was previously handled as <literal>'th'</> (lowercase).
3910 Fix overflow for <literal>INTERVAL '<replaceable>x</> ms'</literal>
3911 when <replaceable>x</> is more than 2 million and integer
3912 datetimes are in use (Alex Hunsaker)
3918 Fix calculation of distance between a point and a line segment (Tom)
3922 This led to incorrect results from a number of geometric operators.
3928 Fix <type>money</> data type to work in locales where currency
3929 amounts have no fractional digits, e.g. Japan (Itagaki Takahiro)
3935 Fix <literal>LIKE</> for case where pattern contains <literal>%_</>
3942 Properly round datetime input like
3943 <literal>00:12:57.9999999999999999999999999999</> (Tom)
3949 Fix memory leaks in XML operations (Tom)
3955 Fix poor choice of page split point in GiST R-tree operator classes
3962 Ensure that a <quote>fast shutdown</> request will forcibly terminate
3963 open sessions, even if a <quote>smart shutdown</> was already in progress
3970 Avoid performance degradation in bulk inserts into GIN indexes
3971 when the input values are (nearly) in sorted order (Tom)
3977 Correctly enforce NOT NULL domain constraints in some contexts in
3984 Fix portability issues in plperl initialization (Andrew Dunstan)
3990 Fix <application>pg_ctl</> to not go into an infinite loop if
3991 <filename>postgresql.conf</> is empty (Jeff Davis)
3997 Improve <application>pg_dump</>'s efficiency when there are
3998 many large objects (Tamas Vincze)
4004 Use <literal>SIGUSR1</>, not <literal>SIGQUIT</>, as the
4005 failover signal for <application>pg_standby</> (Heikki)
4011 Make <application>pg_standby</>'s <literal>maxretries</> option
4012 behave as documented (Fujii Masao)
4018 Make <filename>contrib/hstore</> throw an error when a key or
4019 value is too long to fit in its data structure, rather than
4020 silently truncating it (Andrew Gierth)
4026 Fix <filename>contrib/xml2</>'s <function>xslt_process()</> to
4027 properly handle the maximum number of parameters (twenty) (Tom)
4033 Improve robustness of <application>libpq</>'s code to recover
4034 from errors during <command>COPY FROM STDIN</> (Tom)
4040 Avoid including conflicting readline and editline header files
4041 when both libraries are installed (Zdenek Kotala)
4047 Update time zone data files to <application>tzdata</> release 2009l
4048 for DST law changes in Bangladesh, Egypt, Jordan, Pakistan,
4049 Argentina/San_Luis, Cuba, Jordan (historical correction only),
4050 Mauritius, Morocco, Palestine, Syria, Tunisia.
4059 <sect1 id="release-8-3-7">
4060 <title>Release 8.3.7</title>
4063 <title>Release Date</title>
4064 <simpara>2009-03-16</simpara>
4068 This release contains a variety of fixes from 8.3.6.
4069 For information about new features in the 8.3 major release, see
4070 <xref linkend="release-8-3">.
4074 <title>Migration to Version 8.3.7</title>
4077 A dump/restore is not required for those running 8.3.X.
4078 However, if you are upgrading from a version earlier than 8.3.5,
4079 see the release notes for 8.3.5.
4085 <title>Changes</title>
4091 Prevent error recursion crashes when encoding conversion fails (Tom)
4095 This change extends fixes made in the last two minor releases for
4096 related failure scenarios. The previous fixes were narrowly tailored
4097 for the original problem reports, but we have now recognized that
4098 <emphasis>any</> error thrown by an encoding conversion function could
4099 potentially lead to infinite recursion while trying to report the
4100 error. The solution therefore is to disable translation and encoding
4101 conversion and report the plain-ASCII form of any error message,
4102 if we find we have gotten into a recursive error reporting situation.
4109 Disallow <command>CREATE CONVERSION</> with the wrong encodings
4110 for the specified conversion function (Heikki)
4114 This prevents one possible scenario for encoding conversion failure.
4115 The previous change is a backstop to guard against other kinds of
4116 failures in the same area.
4122 Fix <function>xpath()</> to not modify the path expression unless
4123 necessary, and to make a saner attempt at it when necessary (Andrew)
4127 The SQL standard suggests that <function>xpath</> should work on data
4128 that is a document fragment, but <application>libxml</> doesn't support
4129 that, and indeed it's not clear that this is sensible according to the
4130 XPath standard. <function>xpath</> attempted to work around this
4131 mismatch by modifying both the data and the path expression, but the
4132 modification was buggy and could cause valid searches to fail. Now,
4133 <function>xpath</> checks whether the data is in fact a well-formed
4134 document, and if so invokes <application>libxml</> with no change to the
4135 data or path expression. Otherwise, a different modification method
4136 that is somewhat less likely to fail is used.
4141 The new modification method is still not 100% satisfactory, and it
4142 seems likely that no real solution is possible. This patch should
4143 therefore be viewed as a band-aid to keep from breaking existing
4144 applications unnecessarily. It is likely that
4145 <productname>PostgreSQL</> 8.4 will simply reject use of
4146 <function>xpath</> on data that is not a well-formed document.
4153 Fix core dump when <function>to_char()</> is given format codes that
4154 are inappropriate for the type of the data argument (Tom)
4160 Fix possible failure in text search when C locale is used with
4161 a multi-byte encoding (Teodor)
4165 Crashes were possible on platforms where <type>wchar_t</> is narrower
4166 than <type>int</>; Windows in particular.
4172 Fix extreme inefficiency in text search parser's handling of an
4173 email-like string containing multiple <literal>@</> characters (Heikki)
4179 Fix planner problem with sub-<command>SELECT</> in the output list
4180 of a larger subquery (Tom)
4184 The known symptom of this bug is a <quote>failed to locate grouping
4185 columns</> error that is dependent on the datatype involved;
4186 but there could be other issues as well.
4192 Fix decompilation of <literal>CASE WHEN</> with an implicit coercion
4197 This mistake could lead to Assert failures in an Assert-enabled build,
4198 or an <quote>unexpected CASE WHEN clause</> error message in other
4199 cases, when trying to examine or dump a view.
4205 Fix possible misassignment of the owner of a TOAST table's rowtype (Tom)
4209 If <command>CLUSTER</> or a rewriting variant of <command>ALTER TABLE</>
4210 were executed by someone other than the table owner, the
4211 <structname>pg_type</> entry for the table's TOAST table would end up
4212 marked as owned by that someone. This caused no immediate problems,
4213 since the permissions on the TOAST rowtype aren't examined by any
4214 ordinary database operation. However, it could lead to unexpected
4215 failures if one later tried to drop the role that issued the command
4216 (in 8.1 or 8.2), or <quote>owner of data type appears to be invalid</>
4217 warnings from <application>pg_dump</> after having done so (in 8.3).
4223 Change <command>UNLISTEN</> to exit quickly if the current session has
4224 never executed any <command>LISTEN</> command (Tom)
4228 Most of the time this is not a particularly useful optimization, but
4229 since <command>DISCARD ALL</> invokes <command>UNLISTEN</>, the previous
4230 coding caused a substantial performance problem for applications that
4231 made heavy use of <command>DISCARD ALL</>.
4237 Fix PL/pgSQL to not treat <literal>INTO</> after <command>INSERT</> as
4238 an INTO-variables clause anywhere in the string, not only at the start;
4239 in particular, don't fail for <command>INSERT INTO</> within
4240 <command>CREATE RULE</> (Tom)
4246 Clean up PL/pgSQL error status variables fully at block exit
4247 (Ashesh Vashi and Dave Page)
4251 This is not a problem for PL/pgSQL itself, but the omission could cause
4252 the PL/pgSQL Debugger to crash while examining the state of a function.
4258 Retry failed calls to <function>CallNamedPipe()</> on Windows
4259 (Steve Marshall, Magnus)
4263 It appears that this function can sometimes fail transiently;
4264 we previously treated any failure as a hard error, which could
4265 confuse <command>LISTEN</>/<command>NOTIFY</> as well as other
4272 Add <literal>MUST</> (Mauritius Island Summer Time) to the default list
4273 of known timezone abbreviations (Xavier Bugaud)
4282 <sect1 id="release-8-3-6">
4283 <title>Release 8.3.6</title>
4286 <title>Release Date</title>
4287 <simpara>2009-02-02</simpara>
4291 This release contains a variety of fixes from 8.3.5.
4292 For information about new features in the 8.3 major release, see
4293 <xref linkend="release-8-3">.
4297 <title>Migration to Version 8.3.6</title>
4300 A dump/restore is not required for those running 8.3.X.
4301 However, if you are upgrading from a version earlier than 8.3.5,
4302 see the release notes for 8.3.5.
4308 <title>Changes</title>
4314 Make <command>DISCARD ALL</> release advisory locks, in addition
4315 to everything it already did (Tom)
4319 This was decided to be the most appropriate behavior. This could
4320 affect existing applications, however.
4326 Fix whole-index GiST scans to work correctly (Teodor)
4330 This error could cause rows to be lost if a table is clustered
4337 Fix crash of <literal>xmlconcat(NULL)</> (Peter)
4343 Fix possible crash in <literal>ispell</> dictionary if high-bit-set
4344 characters are used as flags (Teodor)
4348 This is known to be done by one widely available Norwegian dictionary,
4349 and the same condition may exist in others.
4355 Fix misordering of <application>pg_dump</> output for composite types
4360 The most likely problem was for user-defined operator classes to
4361 be dumped after indexes or views that needed them.
4367 Improve handling of URLs in <function>headline()</> function (Teodor)
4373 Improve handling of overlength headlines in <function>headline()</>
4380 Prevent possible Assert failure or misconversion if an encoding
4381 conversion is created with the wrong conversion function for the
4382 specified pair of encodings (Tom, Heikki)
4388 Fix possible Assert failure if a statement executed in PL/pgSQL is
4389 rewritten into another kind of statement, for example if an
4390 <command>INSERT</> is rewritten into an <command>UPDATE</> (Heikki)
4396 Ensure that a snapshot is available to datatype input functions (Tom)
4400 This primarily affects domains that are declared with <literal>CHECK</>
4401 constraints involving user-defined stable or immutable functions. Such
4402 functions typically fail if no snapshot has been set.
4408 Make it safer for SPI-using functions to be used within datatype I/O;
4409 in particular, to be used in domain check constraints (Tom)
4415 Avoid unnecessary locking of small tables in <command>VACUUM</>
4422 Fix a problem that sometimes kept <command>ALTER TABLE ENABLE/DISABLE
4423 RULE</> from being recognized by active sessions (Tom)
4429 Fix a problem that made <literal>UPDATE RETURNING tableoid</>
4430 return zero instead of the correct OID (Tom)
4436 Allow functions declared as taking <type>ANYARRAY</> to work on
4437 the <structname>pg_statistic</> columns of that type (Tom)
4441 This used to work, but was unintentionally broken in 8.3.
4447 Fix planner misestimation of selectivity when transitive equality
4448 is applied to an outer-join clause (Tom)
4452 This could result in bad plans for queries like
4453 <literal>... from a left join b on a.a1 = b.b1 where a.a1 = 42 ...</>
4459 Improve optimizer's handling of long <literal>IN</> lists (Tom)
4463 This change avoids wasting large amounts of time on such lists
4464 when constraint exclusion is enabled.
4470 Prevent synchronous scan during GIN index build (Tom)
4474 Because GIN is optimized for inserting tuples in increasing TID order,
4475 choosing to use a synchronous scan could slow the build by a factor of
4482 Ensure that the contents of a holdable cursor don't depend on the
4483 contents of TOAST tables (Tom)
4487 Previously, large field values in a cursor result might be represented
4488 as TOAST pointers, which would fail if the referenced table got dropped
4489 before the cursor is read, or if the large value is deleted and then
4490 vacuumed away. This cannot happen with an ordinary cursor,
4491 but it could with a cursor that is held past its creating transaction.
4497 Fix memory leak when a set-returning function is terminated without
4498 reading its whole result (Tom)
4504 Fix encoding conversion problems in XML functions when the database
4505 encoding isn't UTF-8 (Tom)
4511 Fix <filename>contrib/dblink</>'s
4512 <function>dblink_get_result(text,bool)</> function (Joe)
4518 Fix possible garbage output from <filename>contrib/sslinfo</> functions
4525 Fix incorrect behavior of <filename>contrib/tsearch2</> compatibility
4526 trigger when it's fired more than once in a command (Teodor)
4532 Fix possible mis-signaling in autovacuum (Heikki)
4538 Support running as a service on Windows 7 beta (Dave and Magnus)
4544 Fix <application>ecpg</>'s handling of varchar structs (Michael)
4550 Fix <application>configure</> script to properly report failure when
4551 unable to obtain linkage information for PL/Perl (Andrew)
4557 Make all documentation reference <literal>pgsql-bugs</> and/or
4558 <literal>pgsql-hackers</> as appropriate, instead of the
4559 now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</>
4566 Update time zone data files to <application>tzdata</> release 2009a (for
4567 Kathmandu and historical DST corrections in Switzerland, Cuba)
4576 <sect1 id="release-8-3-5">
4577 <title>Release 8.3.5</title>
4580 <title>Release Date</title>
4581 <simpara>2008-11-03</simpara>
4585 This release contains a variety of fixes from 8.3.4.
4586 For information about new features in the 8.3 major release, see
4587 <xref linkend="release-8-3">.
4591 <title>Migration to Version 8.3.5</title>
4594 A dump/restore is not required for those running 8.3.X.
4595 However, if you are upgrading from a version earlier than 8.3.1,
4596 see the release notes for 8.3.1. Also, if you were running a previous
4597 8.3.X release, it is recommended to <command>REINDEX</> all GiST
4598 indexes after the upgrade.
4604 <title>Changes</title>
4610 Fix GiST index corruption due to marking the wrong index entry
4611 <quote>dead</> after a deletion (Teodor)
4615 This would result in index searches failing to find rows they
4616 should have found. Corrupted indexes can be fixed with
4617 <command>REINDEX</>.
4623 Fix backend crash when the client encoding cannot represent a localized
4628 We have addressed similar issues before, but it would still fail if
4629 the <quote>character has no equivalent</> message itself couldn't
4630 be converted. The fix is to disable localization and send the plain
4631 ASCII error message when we detect such a situation.
4637 Fix possible crash in <type>bytea</>-to-XML mapping (Michael McMaster)
4643 Fix possible crash when deeply nested functions are invoked from
4650 Improve optimization of <replaceable>expression</> <literal>IN</>
4651 (<replaceable>expression-list</>) queries (Tom, per an idea from Robert
4656 Cases in which there are query variables on the right-hand side had been
4657 handled less efficiently in 8.2.x and 8.3.x than in prior versions.
4658 The fix restores 8.1 behavior for such cases.
4664 Fix mis-expansion of rule queries when a sub-<literal>SELECT</> appears
4665 in a function call in <literal>FROM</>, a multi-row <literal>VALUES</>
4666 list, or a <literal>RETURNING</> list (Tom)
4670 The usual symptom of this problem is an <quote>unrecognized node type</>
4677 Fix Assert failure during rescan of an <literal>IS NULL</>
4678 search of a GiST index (Teodor)
4684 Fix memory leak during rescan of a hashed aggregation plan (Neil)
4690 Ensure an error is reported when a newly-defined PL/pgSQL trigger
4691 function is invoked as a normal function (Tom)
4697 Force a checkpoint before <command>CREATE DATABASE</> starts to copy
4702 This prevents a possible failure if files had recently been deleted
4703 in the source database.
4709 Prevent possible collision of <structfield>relfilenode</> numbers
4710 when moving a table to another tablespace with <command>ALTER SET
4711 TABLESPACE</> (Heikki)
4715 The command tried to re-use the existing filename, instead of
4716 picking one that is known unused in the destination directory.
4722 Fix incorrect text search headline generation when single query
4723 item matches first word of text (Sushant Sinha)
4729 Fix improper display of fractional seconds in interval values when
4730 using a non-ISO datestyle in an <option>--enable-integer-datetimes</>
4737 Make <literal>ILIKE</> compare characters case-insensitively
4738 even when they're escaped (Andrew)
4744 Ensure <command>DISCARD</> is handled properly by statement logging (Tom)
4750 Fix incorrect logging of last-completed-transaction time during
4757 Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</>
4758 behave correctly when the passed tuple and tuple descriptor have
4759 different numbers of columns (Tom)
4763 This situation is normal when a table has had columns added or removed,
4764 but these two functions didn't handle it properly.
4765 The only likely consequence is an incorrect error indication.
4771 Mark <varname>SessionReplicationRole</> as <literal>PGDLLIMPORT</>
4772 so it can be used by <application>Slony</> on Windows (Magnus)
4778 Fix small memory leak when using <application>libpq</>'s
4779 <literal>gsslib</> parameter (Magnus)
4783 The space used by the parameter string was not freed at connection
4790 Ensure <application>libgssapi</> is linked into <application>libpq</>
4791 if needed (Markus Schaaf)
4797 Fix <application>ecpg</>'s parsing of <command>CREATE ROLE</> (Michael)
4803 Fix recent breakage of <literal>pg_ctl restart</> (Tom)
4809 Ensure <filename>pg_control</> is opened in binary mode
4814 <application>pg_controldata</> and <application>pg_resetxlog</>
4815 did this incorrectly, and so could fail on Windows.
4821 Update time zone data files to <application>tzdata</> release 2008i (for
4822 DST law changes in Argentina, Brazil, Mauritius, Syria)
4831 <sect1 id="release-8-3-4">
4832 <title>Release 8.3.4</title>
4835 <title>Release Date</title>
4836 <simpara>2008-09-22</simpara>
4840 This release contains a variety of fixes from 8.3.3.
4841 For information about new features in the 8.3 major release, see
4842 <xref linkend="release-8-3">.
4846 <title>Migration to Version 8.3.4</title>
4849 A dump/restore is not required for those running 8.3.X.
4850 However, if you are upgrading from a version earlier than 8.3.1,
4851 see the release notes for 8.3.1.
4857 <title>Changes</title>
4863 Fix bug in btree WAL recovery code (Heikki)
4867 Recovery failed if the WAL ended partway through a page split operation.
4873 Fix potential use of wrong cutoff XID for HOT page pruning (Alvaro)
4877 This error created a risk of corruption in system
4878 catalogs that are consulted by <command>VACUUM</>: dead tuple versions
4879 might be removed too soon. The impact of this on actual database
4880 operations would be minimal, since the system doesn't follow MVCC
4881 rules while examining catalogs, but it might result in transiently
4882 wrong output from <application>pg_dump</> or other client programs.
4888 Fix potential miscalculation of <structfield>datfrozenxid</> (Alvaro)
4892 This error may explain some recent reports of failure to remove old
4893 <structname>pg_clog</> data.
4899 Fix incorrect HOT updates after <structname>pg_class</> is reindexed
4904 Corruption of <structname>pg_class</> could occur if <literal>REINDEX
4905 TABLE pg_class</> was followed in the same session by an <literal>ALTER
4906 TABLE RENAME</> or <literal>ALTER TABLE SET SCHEMA</> command.
4912 Fix missed <quote>combo cid</> case (Karl Schnaitter)
4916 This error made rows incorrectly invisible to a transaction in which they
4917 had been deleted by multiple subtransactions that all aborted.
4923 Prevent autovacuum from crashing if the table it's currently
4924 checking is deleted at just the wrong time (Alvaro)
4930 Widen local lock counters from 32 to 64 bits (Tom)
4934 This responds to reports that the counters could overflow in
4935 sufficiently long transactions, leading to unexpected <quote>lock is
4936 already held</> errors.
4942 Fix possible duplicate output of tuples during a GiST index scan (Teodor)
4948 Regenerate foreign key checking queries from scratch when either
4949 table is modified (Tom)
4953 Previously, 8.3 would attempt to replan the query, but would work from
4954 previously generated query text. This led to failures if a
4955 table or column was renamed.
4961 Fix missed permissions checks when a view contains a simple
4962 <literal>UNION ALL</> construct (Heikki)
4966 Permissions for the referenced tables were checked properly, but not
4967 permissions for the view itself.
4973 Add checks in executor startup to ensure that the tuples produced by an
4974 <command>INSERT</> or <command>UPDATE</> will match the target table's
4975 current rowtype (Tom)
4979 This situation is believed to be impossible in 8.3, but it can happen in
4980 prior releases, so a check seems prudent.
4986 Fix possible repeated drops during <command>DROP OWNED</> (Tom)
4990 This would typically result in strange errors such as <quote>cache
4991 lookup failed for relation NNN</>.
4997 Fix several memory leaks in XML operations (Kris Jurka, Tom)
5003 Fix <function>xmlserialize()</> to raise error properly for
5004 unacceptable target data type (Tom)
5010 Fix a couple of places that mis-handled multibyte characters in text
5011 search configuration file parsing (Tom)
5015 Certain characters occurring in configuration files would always cause
5016 <quote>invalid byte sequence for encoding</> failures.
5022 Provide file name and line number location for all errors reported
5023 in text search configuration files (Tom)
5029 Fix <literal>AT TIME ZONE</> to first try to interpret its timezone
5030 argument as a timezone abbreviation, and only try it as a full timezone
5031 name if that fails, rather than the other way around as formerly (Tom)
5035 The timestamp input functions have always resolved ambiguous zone names
5036 in this order. Making <literal>AT TIME ZONE</> do so as well improves
5037 consistency, and fixes a compatibility bug introduced in 8.1:
5038 in ambiguous cases we now behave the same as 8.0 and before did,
5039 since in the older versions <literal>AT TIME ZONE</> accepted
5040 <emphasis>only</> abbreviations.
5046 Fix datetime input functions to correctly detect integer overflow when
5047 running on a 64-bit platform (Tom)
5053 Prevent integer overflows during units conversion when displaying a
5054 configuration parameter that has units (Tom)
5060 Improve performance of writing very long log messages to syslog (Tom)
5066 Allow spaces in the suffix part of an LDAP URL in
5067 <filename>pg_hba.conf</> (Tom)
5073 Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
5080 Fix planner bug that could improperly push down <literal>IS NULL</>
5081 tests below an outer join (Tom)
5085 This was triggered by occurrence of <literal>IS NULL</> tests for
5086 the same relation in all arms of an upper <literal>OR</> clause.
5092 Fix planner bug with nested sub-select expressions (Tom)
5096 If the outer sub-select has no direct dependency on the parent query,
5097 but the inner one does, the outer value might not get recalculated
5098 for new parent query rows.
5104 Fix planner to estimate that <literal>GROUP BY</> expressions yielding
5105 boolean results always result in two groups, regardless of the
5106 expressions' contents (Tom)
5110 This is very substantially more accurate than the regular <literal>GROUP
5111 BY</> estimate for certain boolean tests like <replaceable>col</>
5112 <literal>IS NULL</>.
5118 Fix PL/pgSQL to not fail when a <literal>FOR</> loop's target variable
5119 is a record containing composite-type fields (Tom)
5125 Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful
5126 about the encoding of data sent to or from Tcl (Tom)
5132 Improve performance of <function>PQescapeBytea()</> (Rudolf Leitgeb)
5138 On Windows, work around a Microsoft bug by preventing
5139 <application>libpq</> from trying to send more than 64kB per system call
5146 Fix <application>ecpg</> to handle variables properly in <command>SET</>
5153 Improve <application>pg_dump</> and <application>pg_restore</>'s
5154 error reporting after failure to send a SQL command (Tom)
5160 Fix <application>pg_ctl</> to properly preserve postmaster
5161 command-line arguments across a <literal>restart</> (Bruce)
5167 Fix erroneous WAL file cutoff point calculation in
5168 <application>pg_standby</> (Simon)
5174 Update time zone data files to <application>tzdata</> release 2008f (for
5175 DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco,
5176 Pakistan, Palestine, and Paraguay)
5185 <sect1 id="release-8-3-3">
5186 <title>Release 8.3.3</title>
5189 <title>Release Date</title>
5190 <simpara>2008-06-12</simpara>
5194 This release contains one serious and one minor bug fix over 8.3.2.
5195 For information about new features in the 8.3 major release, see
5196 <xref linkend="release-8-3">.
5200 <title>Migration to Version 8.3.3</title>
5203 A dump/restore is not required for those running 8.3.X.
5204 However, if you are upgrading from a version earlier than 8.3.1,
5205 see the release notes for 8.3.1.
5211 <title>Changes</title>
5217 Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom)
5221 Before this fix, a negative constant in a view or rule might be dumped
5222 as, say, <literal>-42::integer</>, which is subtly incorrect: it should
5223 be <literal>(-42)::integer</> due to operator precedence rules.
5224 Usually this would make little difference, but it could interact with
5225 another recent patch to cause
5226 <productname>PostgreSQL</> to reject what had been a valid
5227 <command>SELECT DISTINCT</> view query. Since this could result in
5228 <application>pg_dump</> output failing to reload, it is being treated
5229 as a high-priority fix. The only released versions in which dump
5230 output is actually incorrect are 8.3.1 and 8.2.7.
5236 Make <command>ALTER AGGREGATE ... OWNER TO</> update
5237 <structname>pg_shdepend</> (Tom)
5241 This oversight could lead to problems if the aggregate was later
5242 involved in a <command>DROP OWNED</> or <command>REASSIGN OWNED</>
5252 <sect1 id="release-8-3-2">
5253 <title>Release 8.3.2</title>
5256 <title>Release Date</title>
5257 <simpara>never released</simpara>
5261 This release contains a variety of fixes from 8.3.1.
5262 For information about new features in the 8.3 major release, see
5263 <xref linkend="release-8-3">.
5267 <title>Migration to Version 8.3.2</title>
5270 A dump/restore is not required for those running 8.3.X.
5271 However, if you are upgrading from a version earlier than 8.3.1,
5272 see the release notes for 8.3.1.
5278 <title>Changes</title>
5284 Fix <literal>ERRORDATA_STACK_SIZE exceeded</literal> crash that
5285 occurred on Windows when using UTF-8 database encoding and a different
5286 client encoding (Tom)
5292 Fix incorrect archive truncation point calculation for the
5293 <literal>%r</> macro in <varname>recovery_command</> parameters
5298 This could lead to data loss if a warm-standby script relied on
5299 <literal>%r</> to decide when to throw away WAL segment files.
5305 Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</> so that the new
5306 column is correctly checked to see if it's been initialized to all
5307 non-nulls (Brendan Jurd)
5311 Previous versions neglected to check this requirement at all.
5317 Fix <command>REASSIGN OWNED</> so that it works on procedural
5318 languages too (Alvaro)
5324 Fix problems with <command>SELECT FOR UPDATE/SHARE</> occurring as a
5325 subquery in a query with a non-<command>SELECT</> top-level operation
5332 Fix possible <command>CREATE TABLE</> failure when inheriting the
5333 <quote>same</> constraint from multiple parent relations that
5334 inherited that constraint from a common ancestor (Tom)
5340 Fix <function>pg_get_ruledef()</> to show the alias, if any, attached
5341 to the target table of an <command>UPDATE</> or <command>DELETE</>
5348 Restore the pre-8.3 behavior that an out-of-range block number in a
5349 TID being used in a TidScan plan results in silently not matching any
5354 8.3.0 and 8.3.1 threw an error instead.
5360 Fix GIN bug that could result in a <literal>too many LWLocks
5361 taken</literal> failure (Teodor)
5367 Fix broken GiST comparison function for <type>tsquery</> (Teodor)
5373 Fix <function>tsvector_update_trigger()</> and <function>ts_stat()</>
5374 to accept domains over the types they expect to work with (Tom)
5380 Fix failure to support enum data types as foreign keys (Tom)
5386 Avoid possible crash when decompressing corrupted data
5393 Fix race conditions between delayed unlinks and <command>DROP
5394 DATABASE</> (Heikki)
5398 In the worst case this could result in deleting a newly created table
5399 in a new database that happened to get the same OID as the
5400 recently-dropped one; but of course that is an extremely
5401 low-probability scenario.
5407 Repair two places where SIGTERM exit of a backend could leave corrupted
5408 state in shared memory (Tom)
5412 Neither case is very important if SIGTERM is used to shut down the
5413 whole database cluster together, but there was a problem if someone
5414 tried to SIGTERM individual backends.
5420 Fix possible crash due to incorrect plan generated for an
5421 <literal><replaceable>x</> IN (SELECT <replaceable>y</>
5422 FROM ...)</literal> clause when <replaceable>x</> and <replaceable>y</>
5423 have different data types; and make sure the behavior is semantically
5424 correct when the conversion from <replaceable>y</>'s type to
5425 <replaceable>x</>'s type is lossy (Tom)
5431 Fix oversight that prevented the planner from substituting known Param
5432 values as if they were constants (Tom)
5436 This mistake partially disabled optimization of unnamed
5437 extended-Query statements in 8.3.0 and 8.3.1: in particular the
5438 LIKE-to-indexscan optimization would never be applied if the LIKE
5439 pattern was passed as a parameter, and constraint exclusion
5440 depending on a parameter value didn't work either.
5446 Fix planner failure when an indexable <function>MIN</> or
5447 <function>MAX</> aggregate is used with <literal>DISTINCT</> or
5448 <literal>ORDER BY</> (Tom)
5454 Fix planner to ensure it never uses a <quote>physical tlist</> for a
5455 plan node that is feeding a Sort node (Tom)
5459 This led to the sort having to push around more data than it really
5460 needed to, since unused column values were included in the sorted
5467 Avoid unnecessary copying of query strings (Tom)
5471 This fixes a performance problem introduced in 8.3.0 when a very large
5472 number of commands are submitted as a single query string.
5478 Make <function>TransactionIdIsCurrentTransactionId()</> use binary
5479 search instead of linear search when checking child-transaction XIDs
5484 This fixes some cases in which 8.3.0 was significantly
5485 slower than earlier releases.
5491 Fix conversions between ISO-8859-5 and other encodings to handle
5492 Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with
5493 two dots) (Sergey Burladyan)
5499 Fix several datatype input functions, notably <function>array_in()</>,
5500 that were allowing unused bytes in their results to contain
5501 uninitialized, unpredictable values (Tom)
5505 This could lead to failures in which two apparently identical literal
5506 values were not seen as equal, resulting in the parser complaining
5507 about unmatched <literal>ORDER BY</> and <literal>DISTINCT</>
5514 Fix a corner case in regular-expression substring matching
5515 (<literal>substring(<replaceable>string</> from
5516 <replaceable>pattern</>)</literal>) (Tom)
5520 The problem occurs when there is a match to the pattern overall but
5521 the user has specified a parenthesized subexpression and that
5522 subexpression hasn't got a match. An example is
5523 <literal>substring('foo' from 'foo(bar)?')</>.
5524 This should return NULL, since <literal>(bar)</> isn't matched, but
5525 it was mistakenly returning the whole-pattern match instead (ie,
5532 Prevent cancellation of an auto-vacuum that was launched to prevent
5533 XID wraparound (Alvaro)
5539 Improve <command>ANALYZE</>'s handling of in-doubt tuples (those
5540 inserted or deleted by a not-yet-committed transaction) so that the
5541 counts it reports to the stats collector are more likely to be correct
5548 Fix <application>initdb</> to reject a relative path for its
5549 <literal>--xlogdir</> (<literal>-X</>) option (Tom)
5555 Make <application>psql</> print tab characters as an appropriate
5556 number of spaces, rather than <literal>\x09</literal> as was done in
5557 8.3.0 and 8.3.1 (Bruce)
5563 Update time zone data files to <application>tzdata</> release 2008c (for
5564 DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, and
5571 Add <function>ECPGget_PGconn()</> function to
5572 <application>ecpglib</> (Michael)
5578 Fix incorrect result from <application>ecpg</>'s
5579 <function>PGTYPEStimestamp_sub()</> function (Michael)
5585 Fix handling of continuation line markers in <application>ecpg</>
5592 Fix possible crashes in <filename>contrib/cube</> functions (Tom)
5598 Fix core dump in <filename>contrib/xml2</>'s
5599 <function>xpath_table()</> function when the input query returns a
5606 Fix <filename>contrib/xml2</>'s makefile to not override
5607 <literal>CFLAGS</>, and make it auto-configure properly for
5608 <application>libxslt</> present or not (Tom)
5617 <sect1 id="release-8-3-1">
5618 <title>Release 8.3.1</title>
5621 <title>Release Date</title>
5622 <simpara>2008-03-17</simpara>
5626 This release contains a variety of fixes from 8.3.0.
5627 For information about new features in the 8.3 major release, see
5628 <xref linkend="release-8-3">.
5632 <title>Migration to Version 8.3.1</title>
5635 A dump/restore is not required for those running 8.3.X.
5636 However, you might need to <command>REINDEX</> indexes on textual
5637 columns after updating, if you are affected by the Windows locale
5638 issue described below.
5644 <title>Changes</title>
5650 Fix character string comparison for Windows locales that consider
5651 different character combinations as equal (Tom)
5655 This fix applies only on Windows and only when using UTF-8
5656 database encoding. The same fix was made for all other cases
5657 over two years ago, but Windows with UTF-8 uses a separate code
5658 path that was not updated. If you are using a locale that
5659 considers some non-identical strings as equal, you may need to
5660 <command>REINDEX</> to fix existing indexes on textual columns.
5666 Repair corner-case bugs in <command>VACUUM FULL</> (Tom)
5670 A potential deadlock between concurrent <command>VACUUM FULL</>
5671 operations on different system catalogs was introduced in 8.2.
5672 This has now been corrected. 8.3 made this worse because the
5673 deadlock could occur within a critical code section, making it
5674 a PANIC rather than just ERROR condition.
5678 Also, a <command>VACUUM FULL</> that failed partway through
5679 vacuuming a system catalog could result in cache corruption in
5680 concurrent database sessions.
5684 Another <command>VACUUM FULL</> bug introduced in 8.3 could
5685 result in a crash or out-of-memory report when dealing with
5686 pages containing no live tuples.
5692 Fix misbehavior of foreign key checks involving <type>character</>
5693 or <type>bit</> columns (Tom)
5697 If the referencing column were of a different but compatible type
5698 (for instance <type>varchar</>), the constraint was enforced incorrectly.
5704 Avoid needless deadlock failures in no-op foreign-key checks (Stephan
5711 Fix possible core dump when re-planning a prepared query (Tom)
5715 This bug affected only protocol-level prepare operations, not
5716 SQL <command>PREPARE</>, and so tended to be seen only with
5717 JDBC, DBI, and other client-side drivers that use prepared
5724 Fix possible failure when re-planning a query that calls an SPI-using
5731 Fix failure in row-wise comparisons involving columns of different
5738 Fix longstanding <command>LISTEN</>/<command>NOTIFY</>
5739 race condition (Tom)
5743 In rare cases a session that had just executed a
5744 <command>LISTEN</> might not get a notification, even though
5745 one would be expected because the concurrent transaction executing
5746 <command>NOTIFY</> was observed to commit later.
5750 A side effect of the fix is that a transaction that has executed
5751 a not-yet-committed <command>LISTEN</> command will not see any
5752 row in <structname>pg_listener</> for the <command>LISTEN</>,
5753 should it choose to look; formerly it would have. This behavior
5754 was never documented one way or the other, but it is possible that
5755 some applications depend on the old behavior.
5761 Disallow <command>LISTEN</> and <command>UNLISTEN</> within a
5762 prepared transaction (Tom)
5766 This was formerly allowed but trying to do it had various unpleasant
5767 consequences, notably that the originating backend could not exit
5768 as long as an <command>UNLISTEN</> remained uncommitted.
5774 Disallow dropping a temporary table within a
5775 prepared transaction (Heikki)
5779 This was correctly disallowed by 8.1, but the check was inadvertently
5780 broken in 8.2 and 8.3.
5786 Fix rare crash when an error occurs during a query using a hash index
5793 Fix incorrect comparison of <type>tsquery</> values (Teodor)
5799 Fix incorrect behavior of <literal>LIKE</> with non-ASCII characters
5800 in single-byte encodings (Rolf Jentsch)
5806 Disable <function>xmlvalidate</> (Tom)
5810 This function should have been removed before 8.3 release, but
5811 was inadvertently left in the source code. It poses a small
5812 security risk since unprivileged users could use it to read the
5813 first few characters of any file accessible to the server.
5819 Fix memory leaks in certain usages of set-returning functions (Neil)
5825 Make <function>encode(<replaceable>bytea</>, 'escape')</> convert all
5826 high-bit-set byte values into <literal>\</><replaceable>nnn</> octal
5827 escape sequences (Tom)
5831 This is necessary to avoid encoding problems when the database
5832 encoding is multi-byte. This change could pose compatibility issues
5833 for applications that are expecting specific results from
5834 <function>encode</>.
5840 Fix input of datetime values for February 29 in years BC (Tom)
5844 The former coding was mistaken about which years were leap years.
5850 Fix <quote>unrecognized node type</> error in some variants of
5851 <command>ALTER OWNER</> (Tom)
5857 Avoid tablespace permissions errors in <command>CREATE TABLE LIKE
5858 INCLUDING INDEXES</> (Tom)
5864 Ensure <structname>pg_stat_activity</>.<structfield>waiting</> flag
5865 is cleared when a lock wait is aborted (Tom)
5871 Fix handling of process permissions on Windows Vista (Dave, Magnus)
5875 In particular, this fix allows starting the server as the Administrator
5882 Update time zone data files to <application>tzdata</> release 2008a
5883 (in particular, recent Chile changes); adjust timezone abbreviation
5884 <literal>VET</> (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom)
5890 Fix <application>ecpg</> problems with arrays (Michael)
5896 Fix <application>pg_ctl</> to correctly extract the postmaster's port
5897 number from command-line options (Itagaki Takahiro, Tom)
5901 Previously, <literal>pg_ctl start -w</> could try to contact the
5902 postmaster on the wrong port, leading to bogus reports of startup
5909 Use <option>-fwrapv</> to defend against possible misoptimization
5910 in recent <application>gcc</> versions (Tom)
5914 This is known to be necessary when building <productname>PostgreSQL</>
5915 with <application>gcc</> 4.3 or later.
5921 Enable building <filename>contrib/uuid-ossp</> with MSVC (Hiroshi Saito)
5930 <sect1 id="release-8-3">
5931 <title>Release 8.3</title>
5934 <title>Release Date</title>
5935 <simpara>2008-02-04</simpara>
5939 <title>Overview</title>
5942 With significant new functionality and performance enhancements,
5943 this release represents a major leap forward for
5944 <productname>PostgreSQL</>. This was made possible by a growing
5945 community that has dramatically accelerated the pace of
5946 development. This release adds the following major features:
5953 Full text search is integrated into the core database system
5959 Support for the SQL/XML standard, including new operators and an
5960 <type>XML</type> data type
5966 Enumerated data types (<type>ENUM</type>)
5972 Arrays of composite types
5978 Universally Unique Identifier (<type>UUID</>) data type
5984 Add control over whether <literal>NULL</>s sort first or last
5996 Server configuration parameters can now be set on a per-function
6003 User-defined types can now have type modifiers
6009 Automatically re-plan cached queries when table
6010 definitions change or statistics are updated
6016 Numerous improvements in logging and statistics collection
6022 Support Security Service Provider Interface (<acronym>SSPI</>) for
6023 authentication on Windows
6029 Support multiple concurrent autovacuum processes, and other
6030 autovacuum improvements
6036 Allow the whole <productname>PostgreSQL</> distribution to be compiled
6037 with <productname>Microsoft Visual C++</>
6044 Major performance improvements are listed below. Most of
6045 these enhancements are automatic and do not require user changes or
6053 Asynchronous commit delays writes to WAL during transaction commit
6059 Checkpoint writes can be spread over a longer time period to smooth
6060 the I/O spike during each checkpoint
6066 Heap-Only Tuples (<acronym>HOT</>) accelerate space reuse for
6067 most <command>UPDATE</>s and <command>DELETE</>s
6073 Just-in-time background writer strategy improves disk write
6080 Using non-persistent transaction IDs for read-only transactions
6081 reduces overhead and <command>VACUUM</> requirements
6087 Per-field and per-row storage overhead has been reduced
6093 Large sequential scans no longer force out frequently used
6100 Concurrent large sequential scans can now share disk reads
6106 <literal>ORDER BY ... LIMIT</> can be done without sorting
6113 The above items are explained in more detail in the sections below.
6119 <title>Migration to Version 8.3</title>
6122 A dump/restore using <application>pg_dump</application> is
6123 required for those wishing to migrate data from any previous
6128 Observe the following incompatibilities:
6132 <title>General</title>
6137 Non-character data types are no longer automatically cast to
6138 <type>TEXT</> (Peter, Tom)
6142 Previously, if a non-character value was supplied to an operator or
6143 function that requires <type>text</> input, it was automatically
6144 cast to <type>text</>, for most (though not all) built-in data types.
6145 This no longer happens: an explicit cast to <type>text</> is now
6146 required for all non-character-string types. For example, these
6147 expressions formerly worked:
6150 substr(current_date, 1, 4)
6154 but will now draw <quote>function does not exist</> and <quote>operator
6155 does not exist</> errors respectively. Use an explicit cast instead:
6158 substr(current_date::text, 1, 4)
6162 (Of course, you can use the more verbose <literal>CAST()</> syntax too.)
6163 The reason for the change is that these automatic casts too often caused
6164 surprising behavior. An example is that in previous releases, this
6165 expression was accepted but did not do what was expected:
6168 current_date < 2017-11-17
6171 This is actually comparing a date to an integer, which should be
6172 (and now is) rejected — but in the presence of automatic
6173 casts both sides were cast to <type>text</> and a textual comparison
6174 was done, because the <literal>text < text</> operator was able
6175 to match the expression when no other <literal><</> operator could.
6179 Types <type>char(<replaceable>n</>)</type> and
6180 <type>varchar(<replaceable>n</>)</type> still cast to <type>text</>
6181 automatically. Also, automatic casting to <type>text</> still works for
6182 inputs to the concatenation (<literal>||</>) operator, so long as least
6183 one input is a character-string type.
6189 Full text search features from <filename>contrib/tsearch2</> have
6190 been moved into the core server, with some minor syntax changes
6194 <filename>contrib/tsearch2</> now contains a compatibility
6201 <literal>ARRAY(SELECT ...)</literal>, where the <command>SELECT</>
6202 returns no rows, now returns an empty array, rather than NULL
6209 The array type name for a base data type is no longer always the base
6210 type's name with an underscore prefix
6214 The old naming convention is still honored when possible, but
6215 application code should no longer depend on it. Instead
6216 use the new <literal>pg_type.typarray</literal> column to
6217 identify the array data type associated with a given type.
6223 <literal>ORDER BY ... USING</> <replaceable>operator</> must now
6224 use a less-than or greater-than <replaceable>operator</> that is
6225 defined in a btree operator class
6229 This restriction was added to prevent inconsistent results.
6235 <command>SET LOCAL</command> changes now persist until
6236 the end of the outermost transaction, unless rolled back (Tom)
6240 Previously <command>SET LOCAL</command>'s effects were lost
6241 after subtransaction commit (<command>RELEASE SAVEPOINT</>
6242 or exit from a PL/pgSQL exception block).
6248 Commands rejected in transaction blocks are now also rejected in
6249 multiple-statement query strings (Tom)
6253 For example, <literal>"BEGIN; DROP DATABASE; COMMIT"</> will now be
6254 rejected even if submitted as a single query message.
6260 <command>ROLLBACK</> outside a transaction block now
6261 issues <literal>NOTICE</> instead of <literal>WARNING</> (Bruce)
6267 Prevent <command>NOTIFY</command>/<command>LISTEN</command>/<command>UNLISTEN</command>
6268 from accepting schema-qualified names (Bruce)
6272 Formerly, these commands accepted <literal>schema.relation</> but
6273 ignored the schema part, which was confusing.
6279 <command>ALTER SEQUENCE</> no longer affects the sequence's
6280 <function>currval()</> state (Tom)
6286 Foreign keys now must match indexable conditions for
6287 cross-data-type references (Tom)
6291 This improves semantic consistency and helps avoid
6292 performance problems.
6298 Restrict object size functions to users who have reasonable
6299 permissions to view such information (Tom)
6303 For example, <function>pg_database_size()</function> now requires
6304 <literal>CONNECT</> permission, which is granted to everyone by
6305 default. <function>pg_tablespace_size()</function> requires
6306 <literal>CREATE</> permission in the tablespace, or is allowed if
6307 the tablespace is the default tablespace for the database.
6313 Remove the undocumented <literal>!!=</> (not in) operator (Tom)
6317 <literal>NOT IN (SELECT ...)</literal> is the proper way to
6318 perform this operation.
6324 Internal hashing functions are now more uniformly-distributed (Tom)
6328 If application code was computing and storing hash values using
6329 internal <productname>PostgreSQL</> hashing functions, the hash
6330 values must be regenerated.
6336 C-code conventions for handling variable-length data values
6337 have changed (Greg Stark, Tom)
6341 The new <function>SET_VARSIZE()</> macro <emphasis>must</> be used
6342 to set the length of generated <type>varlena</> values. Also, it
6343 might be necessary to expand (<quote>de-TOAST</quote>) input values
6350 Continuous archiving no longer reports each successful archive
6351 operation to the server logs unless <literal>DEBUG</> level is used
6361 <title>Configuration Parameters</title>
6367 Numerous changes in administrative server parameters
6371 <varname>bgwriter_lru_percent</>,
6372 <varname>bgwriter_all_percent</>,
6373 <varname>bgwriter_all_maxpages</>,
6374 <varname>stats_start_collector</>, and
6375 <varname>stats_reset_on_server_start</> are removed.
6376 <varname>redirect_stderr</> is renamed to
6377 <varname>logging_collector</>.
6378 <varname>stats_command_string</> is renamed to
6379 <varname>track_activities</>.
6380 <varname>stats_block_level</> and <varname>stats_row_level</>
6381 are merged into <varname>track_counts</>.
6382 A new boolean configuration parameter, <varname>archive_mode</>,
6383 controls archiving. Autovacuum's default settings have changed.
6389 Remove <varname>stats_start_collector</varname> parameter (Tom)
6393 We now always start the collector process, unless <acronym>UDP</>
6394 socket creation fails.
6400 Remove <varname>stats_reset_on_server_start</varname> parameter (Tom)
6404 This was removed because <function>pg_stat_reset()</function>
6405 can be used for this purpose.
6411 Commenting out a parameter in <filename>postgresql.conf</> now
6412 causes it to revert to its default value (Joachim Wieland)
6416 Previously, commenting out an entry left the parameter's value unchanged
6417 until the next server restart.
6427 <title>Character Encodings</title>
6433 Add more checks for invalidly-encoded data (Andrew)
6437 This change plugs some holes that existed in literal backslash
6438 escape string processing and <command>COPY</command> escape
6439 processing. Now the de-escaped string is rechecked to see if the
6440 result created an invalid multi-byte character.
6446 Disallow database encodings that are inconsistent with the server's
6447 locale setting (Tom)
6451 On most platforms, <literal>C</> locale is the only locale that
6452 will work with any database encoding. Other locale settings imply
6453 a specific encoding and will misbehave if the database encoding
6454 is something different. (Typical symptoms include bogus textual
6455 sort order and wrong results from <function>upper()</> or
6456 <function>lower()</>.) The server now rejects attempts to create
6457 databases that have an incompatible encoding.
6463 Ensure that <function>chr()</function> cannot create
6464 invalidly-encoded values (Andrew)
6468 In UTF8-encoded databases the argument of <function>chr()</function> is
6469 now treated as a Unicode code point. In other multi-byte encodings
6470 <function>chr()</function>'s argument must designate a 7-bit ASCII
6471 character. Zero is no longer accepted.
6472 <function>ascii()</function> has been adjusted to match.
6478 Adjust <function>convert()</function> behavior to ensure encoding
6483 The two argument form of <function>convert()</function> has been
6484 removed. The three argument form now takes a <type>bytea</type>
6485 first argument and returns a <type>bytea</type>. To cover the
6486 loss of functionality, three new functions have been added:
6492 <function>convert_from(bytea, name)</function> returns
6493 <type>text</> — converts the first argument from the named
6494 encoding to the database encoding
6500 <function>convert_to(text, name)</function> returns
6501 <type>bytea</> — converts the first argument from the
6502 database encoding to the named encoding
6508 <function>length(bytea, name)</function> returns
6509 <type>integer</> — gives the length of the first
6510 argument in characters in the named encoding
6518 Remove <literal>convert(argument USING conversion_name)</literal>
6523 Its behavior did not match the SQL standard.
6529 Make JOHAB encoding client-only (Tatsuo)
6533 JOHAB is not safe as a server-side encoding.
6544 <title>Changes</title>
6547 Below you will find a detailed account of the
6548 changes between <productname>PostgreSQL</productname> 8.3 and
6549 the previous major release.
6553 <title>Performance</title>
6558 Asynchronous commit delays writes to WAL during transaction commit
6563 This feature dramatically increases performance for short data-modifying
6564 transactions. The disadvantage is that because disk writes are delayed,
6565 if the database or operating system crashes before data is written to
6566 the disk, committed data will be lost. This feature is useful for
6567 applications that can accept some data loss. Unlike turning off
6568 <varname>fsync</varname>, using asynchronous commit does not put
6569 database consistency at risk; the worst case is that after a crash the
6570 last few reportedly-committed transactions might not be committed after
6572 This feature is enabled by turning off <varname>synchronous_commit</>
6573 (which can be done per-session or per-transaction, if some transactions
6574 are critical and others are not).
6575 <varname>wal_writer_delay</> can be adjusted to control the maximum
6576 delay before transactions actually reach disk.
6582 Checkpoint writes can be spread over a longer time period to smooth
6583 the I/O spike during each checkpoint (Itagaki Takahiro and Heikki
6588 Previously all modified buffers were forced to disk as quickly as
6590 checkpoint, causing an I/O spike that decreased server performance.
6591 This new approach spreads out disk writes during checkpoints,
6592 reducing peak I/O usage. (User-requested and shutdown checkpoints
6593 are still written as quickly as possible.)
6599 Heap-Only Tuples (<acronym>HOT</>) accelerate space reuse for most
6600 <command>UPDATE</>s and <command>DELETE</>s (Pavan Deolasee, with
6601 ideas from many others)
6605 <command>UPDATE</>s and <command>DELETE</>s leave dead tuples
6606 behind, as do failed <command>INSERT</>s. Previously only
6607 <command>VACUUM</> could reclaim space taken by dead tuples. With
6608 <acronym>HOT</> dead tuple space can be automatically reclaimed at
6609 the time of <command>INSERT</> or <command>UPDATE</> if no changes
6610 are made to indexed columns. This allows for more consistent
6611 performance. Also, <acronym>HOT</> avoids adding duplicate index
6618 Just-in-time background writer strategy improves disk write
6619 efficiency (Greg Smith, Itagaki Takahiro)
6623 This greatly reduces the need for manual tuning of the background
6630 Per-field and per-row storage overhead have been reduced
6631 (Greg Stark, Heikki Linnakangas)
6635 Variable-length data types with data values less than 128 bytes long
6636 will see a storage decrease of 3 to 6 bytes. For example, two adjacent
6637 <type>char(1)</type> fields now use 4 bytes instead of 16. Row headers
6638 are also 4 bytes shorter than before.
6644 Using non-persistent transaction IDs for read-only transactions
6645 reduces overhead and <command>VACUUM</> requirements (Florian Pflug)
6649 Non-persistent transaction IDs do not increment the global
6650 transaction counter. Therefore, they reduce the load on
6651 <structname>pg_clog</> and increase the time between forced
6652 vacuums to prevent transaction ID wraparound.
6654 improvements were also made that should improve concurrency.
6660 Avoid incrementing the command counter after a read-only command (Tom)
6664 There was formerly a hard limit of 2<superscript>32</>
6665 (4 billion) commands per transaction. Now only commands that
6666 actually changed the database count, so while this limit still
6667 exists, it should be significantly less annoying.
6673 Create a dedicated <acronym>WAL</> writer process to off-load
6674 work from backends (Simon)
6680 Skip unnecessary WAL writes for <command>CLUSTER</command> and
6681 <command>COPY</command> (Simon)
6685 Unless WAL archiving is enabled, the system now avoids WAL writes
6686 for <command>CLUSTER</command> and just <function>fsync()</>s the
6687 table at the end of the command. It also does the same for
6688 <command>COPY</command> if the table was created in the same
6695 Large sequential scans no longer force out frequently used
6696 cached pages (Simon, Heikki, Tom)
6702 Concurrent large sequential scans can now share disk reads (Jeff Davis)
6706 This is accomplished by starting the new sequential scan in the
6707 middle of the table (where another sequential scan is already
6708 in-progress) and wrapping around to the beginning to finish. This
6709 can affect the order of returned rows in a query that does not
6710 specify <literal>ORDER BY</>. The <varname>synchronize_seqscans</>
6711 configuration parameter can be used to disable this if necessary.
6717 <literal>ORDER BY ... LIMIT</> can be done without sorting
6722 This is done by sequentially scanning the table and tracking just
6723 the <quote>top N</> candidate rows, rather than performing a
6724 full sort of the entire table. This is useful when there is no
6725 matching index and the <literal>LIMIT</> is not large.
6731 Put a rate limit on messages sent to the statistics
6732 collector by backends
6737 This reduces overhead for short transactions, but might sometimes
6738 increase the delay before statistics are tallied.
6744 Improve hash join performance for cases with many NULLs (Tom)
6750 Speed up operator lookup for cases with non-exact datatype matches (Tom)
6759 <title>Server</title>
6764 Autovacuum is now enabled by default (Alvaro)
6768 Several changes were made to eliminate disadvantages of having
6769 autovacuum enabled, thereby justifying the change in default.
6770 Several other autovacuum parameter defaults were also modified.
6776 Support multiple concurrent autovacuum processes (Alvaro, Itagaki
6781 This allows multiple vacuums to run concurrently. This prevents
6782 vacuuming of a large table from delaying vacuuming of smaller tables.
6788 Automatically re-plan cached queries when table
6789 definitions change or statistics are updated (Tom)
6793 Previously PL/pgSQL functions that referenced temporary tables
6794 would fail if the temporary table was dropped and recreated
6795 between function invocations, unless <literal>EXECUTE</> was
6796 used. This improvement fixes that problem and many related issues.
6802 Add a <varname>temp_tablespaces</varname> parameter to control
6803 the tablespaces for temporary tables and files (Jaime Casanova,
6804 Albert Cervera, Bernd Helmle)
6808 This parameter defines a list of tablespaces to be used. This
6809 enables spreading the I/O load across multiple tablespaces. A random
6810 tablespace is chosen each time a temporary object is created.
6811 Temporary files are no longer stored in per-database
6812 <filename>pgsql_tmp/</filename> directories but in per-tablespace
6819 Place temporary tables' TOAST tables in special schemas named
6820 <literal>pg_toast_temp_<replaceable>nnn</></literal> (Tom)
6824 This allows low-level code to recognize these tables as temporary,
6825 which enables various optimizations such as not WAL-logging changes
6826 and using local rather than shared buffers for access. This also
6827 fixes a bug wherein backends unexpectedly held open file references
6828 to temporary TOAST tables.
6834 Fix problem that a constant flow of new connection requests could
6835 indefinitely delay the postmaster from completing a shutdown or
6836 a crash restart (Tom)
6842 Guard against a very-low-probability data loss scenario by preventing
6843 re-use of a deleted table's relfilenode until after the next
6850 Fix <command>CREATE CONSTRAINT TRIGGER</>
6851 to convert old-style foreign key trigger definitions into regular
6852 foreign key constraints (Tom)
6856 This will ease porting of foreign key constraints carried forward from
6857 pre-7.3 databases, if they were never converted using
6858 <filename>contrib/adddepend</>.
6864 Fix <literal>DEFAULT NULL</> to override inherited defaults (Tom)
6868 <literal>DEFAULT NULL</> was formerly considered a noise phrase, but it
6869 should (and now does) override non-null defaults that would otherwise
6870 be inherited from a parent table or domain.
6876 Add new encodings EUC_JIS_2004 and SHIFT_JIS_2004 (Tatsuo)
6880 These new encodings can be converted to and from UTF-8.
6886 Change server startup log message from <quote>database system is
6887 ready</quote> to <quote>database system is ready to accept
6888 connections</quote>, and adjust its timing
6892 The message now appears only when the postmaster is really ready
6893 to accept connections.
6902 <title>Monitoring</title>
6907 Add <varname>log_autovacuum_min_duration</varname> parameter to
6908 support configurable logging of autovacuum activity (Simon, Alvaro)
6914 Add <varname>log_lock_waits</varname> parameter to log lock waiting
6921 Add <varname>log_temp_files</varname> parameter to log temporary
6922 file usage (Bill Moran)
6928 Add <varname>log_checkpoints</varname> parameter to improve logging
6929 of checkpoints (Greg Smith, Heikki)
6935 <varname>log_line_prefix</varname> now supports
6936 <literal>%s</literal> and <literal>%c</literal> escapes in all
6941 Previously these escapes worked only for user sessions, not for
6942 background database processes.
6948 Add <varname>log_restartpoints</varname> to control logging of
6949 point-in-time recovery restart points (Simon)
6955 Last transaction end time is now logged at end of recovery and at
6956 each logged restart point (Simon)
6962 Autovacuum now reports its activity start time in
6963 <literal>pg_stat_activity</literal> (Tom)
6969 Allow server log output in comma-separated value (CSV) format (Arul
6970 Shaji, Greg Smith, Andrew Dunstan)
6974 CSV-format log files can easily be loaded into a database table for
6975 subsequent analysis.
6981 Use PostgreSQL-supplied timezone support for formatting timestamps
6982 displayed in the server log (Tom)
6986 This avoids Windows-specific problems with localized time zone
6987 names that are in the wrong encoding. There is a new
6988 <varname>log_timezone</> parameter that controls the timezone
6989 used in log messages, independently of the client-visible
6990 <varname>timezone</> parameter.
6996 New system view <literal>pg_stat_bgwriter</literal> displays
6997 statistics about background writer activity (Magnus)
7003 Add new columns for database-wide tuple statistics to
7004 <literal>pg_stat_database</literal> (Magnus)
7010 Add an <literal>xact_start</literal> (transaction start time) column to
7011 <literal>pg_stat_activity</literal> (Neil)
7015 This makes it easier to identify long-running transactions.
7021 Add <literal>n_live_tuples</> and <literal>n_dead_tuples</> columns
7022 to <literal>pg_stat_all_tables</literal> and related views (Glen
7029 Merge <varname>stats_block_level</> and <varname>stats_row_level</>
7030 parameters into a single parameter <varname>track_counts</>, which
7031 controls all messages sent to the statistics collector process
7038 Rename <varname>stats_command_string</varname> parameter to
7039 <varname>track_activities</varname> (Tom)
7045 Fix statistical counting of live and dead tuples to recognize that
7046 committed and aborted transactions have different effects (Tom)
7055 <title>Authentication</title>
7060 Support Security Service Provider Interface (<acronym>SSPI</>) for
7061 authentication on Windows (Magnus)
7067 Support GSSAPI authentication (Henry Hotz, Magnus)
7071 This should be preferred to native Kerberos authentication because
7072 GSSAPI is an industry standard.
7078 Support a global SSL configuration file (Victor Wagner)
7084 Add <varname>ssl_ciphers</> parameter to control accepted SSL ciphers
7091 Add a Kerberos realm parameter, <varname>krb_realm</> (Magnus)
7100 <title>Write-Ahead Log (<acronym>WAL</>) and Continuous Archiving</title>
7105 Change the timestamps recorded in transaction WAL records from
7106 time_t to TimestampTz representation (Tom)
7110 This provides sub-second resolution in WAL, which can be useful for
7111 point-in-time recovery.
7117 Reduce WAL disk space needed by warm standby servers (Simon)
7121 This change allows a warm standby server to pass the name of the earliest
7122 still-needed WAL file to the recovery script, allowing automatic removal
7123 of no-longer-needed WAL files. This is done using <literal>%r</> in
7124 the <varname>restore_command</varname> parameter of
7125 <filename>recovery.conf</filename>.
7131 New boolean configuration parameter, <varname>archive_mode</>,
7132 controls archiving (Simon)
7136 Previously setting <varname>archive_command</> to an empty string
7137 turned off archiving. Now <varname>archive_mode</> turns archiving
7138 on and off, independently of <varname>archive_command</>. This is
7139 useful for stopping archiving temporarily.
7148 <title>Queries</title>
7153 Full text search is integrated into the core database
7154 system (Teodor, Oleg)
7158 Text search has been improved, moved into the core code, and is now
7159 installed by default. <filename>contrib/tsearch2</> now contains
7160 a compatibility interface.
7166 Add control over whether <literal>NULL</>s sort first or last (Teodor, Tom)
7170 The syntax is <literal>ORDER BY ... NULLS FIRST/LAST</>.
7176 Allow per-column ascending/descending (<literal>ASC</>/<literal>DESC</>)
7177 ordering options for indexes (Teodor, Tom)
7181 Previously a query using <literal>ORDER BY</> with mixed
7182 <literal>ASC</>/<literal>DESC</> specifiers could not fully use
7183 an index. Now an index can be fully used in such cases if the
7184 index was created with matching
7185 <literal>ASC</>/<literal>DESC</> specifications.
7186 <literal>NULL</> sort order within an index can be controlled, too.
7192 Allow <literal>col IS NULL</> to use an index (Teodor)
7198 Updatable cursors (Arul Shaji, Tom)
7202 This eliminates the need to reference a primary key to
7203 <command>UPDATE</> or <command>DELETE</> rows returned by a cursor.
7204 The syntax is <literal>UPDATE/DELETE WHERE CURRENT OF</>.
7210 Allow <literal>FOR UPDATE</literal> in cursors (Arul Shaji, Tom)
7216 Create a general mechanism that supports casts to and from the
7217 standard string types (<type>TEXT</type>, <type>VARCHAR</type>,
7218 <type>CHAR</type>) for <emphasis>every</emphasis> datatype, by
7219 invoking the datatype's I/O functions (Tom)
7223 Previously, such casts were available only for types that had
7224 specialized function(s) for the purpose.
7225 These new casts are assignment-only in the to-string direction,
7226 explicit-only in the other direction, and therefore should create no
7227 surprising behavior.
7233 Allow <literal>UNION</> and related constructs to return a domain
7234 type, when all inputs are of that domain type (Tom)
7238 Formerly, the output would be considered to be of the domain's base
7245 Allow limited hashing when using two different data types (Tom)
7249 This allows hash joins, hash indexes, hashed subplans, and hash
7250 aggregation to be used in situations involving cross-data-type
7251 comparisons, if the data types have compatible hash functions.
7252 Currently, cross-data-type hashing support exists for
7253 <type>smallint</type>/<type>integer</type>/<type>bigint</type>,
7254 and for <type>float4</type>/<type>float8</type>.
7260 Improve optimizer logic for detecting when variables are equal
7261 in a <literal>WHERE</> clause (Tom)
7265 This allows mergejoins to work with descending sort orders, and
7266 improves recognition of redundant sort columns.
7272 Improve performance when planning large inheritance trees in
7273 cases where most tables are excluded by constraints (Tom)
7282 <title>Object Manipulation</title>
7288 Arrays of composite types (David Fetter, Andrew, Tom)
7292 In addition to arrays of explicitly-declared composite types,
7293 arrays of the rowtypes of regular tables and views are now
7294 supported, except for rowtypes of system catalogs, sequences, and TOAST
7302 Server configuration parameters can now be set on a per-function
7307 For example, functions can now set their own
7308 <varname>search_path</> to prevent unexpected behavior if a
7309 different <varname>search_path</> exists at run-time. Security
7310 definer functions should set <varname>search_path</varname> to
7311 avoid security loopholes.
7317 <command>CREATE/ALTER FUNCTION</command> now supports
7318 <literal>COST</literal> and <literal>ROWS</literal> options (Tom)
7322 <literal>COST</literal> allows specification of the cost of a
7323 function call. <literal>ROWS</literal> allows specification of
7324 the average number or rows returned by a set-returning function.
7325 These values are used by the optimizer in choosing the best plan.
7331 Implement <command>CREATE TABLE LIKE ... INCLUDING
7332 INDEXES</command> (Trevor Hardcastle, Nikhil Sontakke, Neil)
7338 Allow <command>CREATE INDEX CONCURRENTLY</command> to ignore
7339 transactions in other databases (Simon)
7345 Add <command>ALTER VIEW ... RENAME TO</command> and <command>ALTER
7346 SEQUENCE ... RENAME TO</command> (David Fetter, Neil)
7350 Previously this could only be done via <command>ALTER TABLE ...
7351 RENAME TO</command>.
7357 Make <command>CREATE/DROP/RENAME DATABASE</> wait briefly for
7358 conflicting backends to exit before failing (Tom)
7362 This increases the likelihood that these commands will succeed.
7368 Allow triggers and rules to be deactivated in groups using a
7369 configuration parameter, for replication purposes (Jan)
7373 This allows replication systems to disable triggers and rewrite
7374 rules as a group without modifying the system catalogs directly.
7375 The behavior is controlled by <command>ALTER TABLE</> and a new
7376 parameter <varname>session_replication_role</varname>.
7382 User-defined types can now have type modifiers (Teodor, Tom)
7386 This allows a user-defined type to take a modifier, like
7387 <type>ssnum(7)</>. Previously only built-in
7388 data types could have modifiers.
7397 <title>Utility Commands</title>
7402 Non-superuser database owners now are able to add trusted procedural
7403 languages to their databases by default (Jeremy Drake)
7407 While this is reasonably safe, some administrators might wish to
7408 revoke the privilege. It is controlled by
7409 <structname>pg_pltemplate</>.<structfield>tmpldbacreate</>.
7415 Allow a session's current parameter setting to be used as the
7416 default for future sessions (Tom)
7420 This is done with <literal>SET ... FROM CURRENT</literal> in
7421 <command>CREATE/ALTER FUNCTION</command>, <command>ALTER
7422 DATABASE</command>, or <command>ALTER ROLE</command>.
7428 Implement new commands <command>DISCARD ALL</command>,
7429 <command>DISCARD PLANS</command>, <command>DISCARD
7430 TEMPORARY</command>, <command>CLOSE ALL</command>, and
7431 <command>DEALLOCATE ALL</command> (Marko Kreen, Neil)
7435 These commands simplify resetting a database session to its initial
7436 state, and are particularly useful for connection-pooling software.
7442 Make <command>CLUSTER</command> MVCC-safe (Heikki Linnakangas)
7446 Formerly, <command>CLUSTER</command> would discard all tuples
7447 that were committed dead, even if there were still transactions
7448 that should be able to see them under MVCC visibility rules.
7454 Add new <command>CLUSTER</command> syntax: <literal>CLUSTER
7455 <replaceable>table</> USING <replaceable>index</></literal>
7460 The old <command>CLUSTER</command> syntax is still supported, but
7461 the new form is considered more logical.
7467 Fix <command>EXPLAIN</command> so it can show complex plans
7468 more accurately (Tom)
7472 References to subplan outputs are now always shown correctly,
7473 instead of using <literal>?column<replaceable>N</>?</literal>
7474 for complicated cases.
7480 Limit the amount of information reported when a user is dropped
7485 Previously, dropping (or attempting to drop) a user who owned many
7486 objects could result in large <literal>NOTICE</literal> or
7487 <literal>ERROR</literal> messages listing all these objects; this
7488 caused problems for some client applications. The length of the
7489 message is now limited, although a full list is still sent to the
7499 <title>Data Types</title>
7504 Support for the SQL/XML standard, including new operators and an
7505 <type>XML</type> data type (Nikolay Samokhvalov, Pavel Stehule, Peter)
7511 Enumerated data types (<type>ENUM</type>) (Tom Dunstan)
7515 This feature provides convenient support for fields that have a
7516 small, fixed set of allowed values. An example of creating an
7517 <literal>ENUM</> type is
7518 <literal>CREATE TYPE mood AS ENUM ('sad', 'ok', 'happy')</>.
7524 Universally Unique Identifier (<type>UUID</>) data type (Gevik
7529 This closely matches <acronym>RFC</> 4122.
7535 Widen the <type>MONEY</type> data type to 64 bits (D'Arcy Cain)
7539 This greatly increases the range of supported <type>MONEY</>
7546 Fix <type>float4</type>/<type>float8</type> to handle
7547 <literal>Infinity</> and <literal>NAN</> (Not A Number)
7548 consistently (Bruce)
7552 The code formerly was not consistent about distinguishing
7553 <literal>Infinity</> from overflow conditions.
7559 Allow leading and trailing whitespace during input of
7560 <type>boolean</type> values (Neil)
7566 Prevent <command>COPY</> from using digits and lowercase letters as
7576 <title>Functions</title>
7581 Add new regular expression functions
7582 <function>regexp_matches()</function>,
7583 <function>regexp_split_to_array()</function>, and
7584 <function>regexp_split_to_table()</function> (Jeremy Drake, Neil)
7588 These functions provide extraction of regular expression
7589 subexpressions and allow splitting a string using a POSIX regular
7596 Add <function>lo_truncate()</function> for large object truncation
7603 Implement <function>width_bucket()</function> for the <type>float8</>
7610 Add <function>pg_stat_clear_snapshot()</function> to discard
7611 statistics snapshots collected during the current transaction
7616 The first request for statistics in a transaction takes a statistics
7617 snapshot that does not change during the transaction. This function
7618 allows the snapshot to be discarded and a new snapshot loaded during
7619 the next statistics query. This is particularly useful for PL/pgSQL
7620 functions, which are confined to a single transaction.
7626 Add <literal>isodow</> option to <function>EXTRACT()</> and
7627 <function>date_part()</> (Bruce)
7631 This returns the day of the week, with Sunday as seven.
7632 (<literal>dow</> returns Sunday as zero.)
7638 Add <literal>ID</> (ISO day of week) and <literal>IDDD</> (ISO
7639 day of year) format codes for <function>to_char()</>,
7640 <function>to_date()</>, and <function>to_timestamp()</> (Brendan
7647 Make <function>to_timestamp()</> and <function>to_date()</>
7648 assume <literal>TM</literal> (trim) option for potentially
7649 variable-width fields (Bruce)
7653 This matches <productname>Oracle</>'s behavior.
7659 Fix off-by-one conversion error in
7660 <function>to_date()</function>/<function>to_timestamp()</function>
7661 <literal>D</> (non-ISO day of week) fields (Bruce)
7667 Make <function>setseed()</function> return void, rather than a
7668 useless integer value (Neil)
7674 Add a hash function for <type>NUMERIC</type> (Neil)
7678 This allows hash indexes and hash-based plans to be used with
7679 <type>NUMERIC</type> columns.
7685 Improve efficiency of
7686 <literal>LIKE</literal>/<literal>ILIKE</literal>, especially for
7687 multi-byte character sets like UTF-8 (Andrew, Itagaki Takahiro)
7693 Make <function>currtid()</function> functions require
7694 <literal>SELECT</literal> privileges on the target table (Tom)
7700 Add several <function>txid_*()</function> functions to query
7701 active transaction IDs (Jan)
7705 This is useful for various replication solutions.
7714 <title>PL/pgSQL Server-Side Language</title>
7719 Add scrollable cursor support, including directional control in
7720 <command>FETCH</command> (Pavel Stehule)
7726 Allow <literal>IN</literal> as an alternative to
7727 <literal>FROM</literal> in PL/pgSQL's <command>FETCH</command>
7728 statement, for consistency with the backend's
7729 <command>FETCH</command> command (Pavel Stehule)
7735 Add <command>MOVE</command> to PL/pgSQL (Magnus, Pavel Stehule,
7742 Implement <command>RETURN QUERY</command> (Pavel Stehule, Neil)
7746 This adds convenient syntax for PL/pgSQL set-returning functions
7747 that want to return the result of a query. <command>RETURN QUERY</>
7748 is easier and more efficient than a loop
7749 around <command>RETURN NEXT</command>.
7755 Allow function parameter names to be qualified with the
7756 function's name (Tom)
7760 For example, <literal>myfunc.myvar</>. This is particularly
7761 useful for specifying variables in a query where the variable
7762 name might match a column name.
7768 Make qualification of variables with block labels work properly (Tom)
7772 Formerly, outer-level block labels could unexpectedly interfere with
7773 recognition of inner-level record or row references.
7779 Tighten requirements for <literal>FOR</literal> loop
7780 <literal>STEP</> values (Tom)
7784 Prevent non-positive <literal>STEP</> values, and handle
7791 Improve accuracy when reporting syntax error locations (Tom)
7800 <title>Other Server-Side Languages</title>
7805 Allow type-name arguments to PL/Perl
7806 <function>spi_prepare()</function> to be data type aliases in
7807 addition to names found in <literal>pg_type</literal> (Andrew)
7813 Allow type-name arguments to PL/Python
7814 <function>plpy.prepare()</function> to be data type aliases in
7815 addition to names found in <literal>pg_type</literal> (Andrew)
7821 Allow type-name arguments to PL/Tcl <function>spi_prepare</> to
7822 be data type aliases in addition to names found in
7823 <literal>pg_type</literal> (Andrew)
7829 Enable PL/PythonU to compile on Python 2.5 (Marko Kreen)
7835 Support a true PL/Python boolean type in compatible Python versions
7836 (Python 2.3 and later) (Marko Kreen)
7842 Fix PL/Tcl problems with thread-enabled <filename>libtcl</> spawning
7843 multiple threads within the backend (Steve Marshall, Paul Bayer,
7848 This caused all sorts of unpleasantness.
7857 <title><link linkend="APP-PSQL"><application>psql</></link></title>
7862 List disabled triggers separately in <literal>\d</literal> output
7869 In <literal>\d</literal> patterns, always match <literal>$</literal>
7876 Show aggregate return types in <literal>\da</literal> output
7877 (Greg Sabino Mullane)
7883 Add the function's volatility status to the output of
7884 <literal>\df+</literal> (Neil)
7890 Add <literal>\prompt</literal> capability (Chad Wagner)
7896 Allow <literal>\pset</literal>, <literal>\t</literal>, and
7897 <literal>\x</literal> to specify <literal>on</> or <literal>off</>,
7898 rather than just toggling (Chad Wagner)
7904 Add <literal>\sleep</> capability (Jan)
7910 Enable <literal>\timing</> output for <literal>\copy</> (Andrew)
7916 Improve <literal>\timing</literal> resolution on Windows
7923 Flush <literal>\o</> output after each backslash command (Tom)
7929 Correctly detect and report errors while reading a <literal>-f</>
7936 Remove <literal>-u</> option (this option has long been deprecated)
7946 <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
7951 Add <literal>--tablespaces-only</> and <literal>--roles-only</>
7952 options to <application>pg_dumpall</application> (Dave Page)
7958 Add an output file option to
7959 <application>pg_dumpall</application> (Dave Page)
7963 This is primarily useful on Windows, where output redirection of
7964 child <application>pg_dump</application> processes does not work.
7970 Allow <application>pg_dumpall</> to accept an initial-connection
7971 database name rather than the default
7972 <literal>template1</literal> (Dave Page)
7978 In <literal>-n</> and <literal>-t</> switches, always match
7979 <literal>$</literal> literally (Tom)
7985 Improve performance when a database has thousands of objects (Tom)
7991 Remove <literal>-u</> option (this option has long been deprecated)
8001 <title>Other Client Applications</title>
8006 In <application>initdb</>, allow the location of the
8007 <filename>pg_xlog</filename> directory to be specified
8008 (Euler Taveira de Oliveira)
8014 Enable server core dump generation in <application>pg_regress</>
8015 on supported operating systems (Andrew)
8021 Add a <literal>-t</> (timeout) parameter to <application>pg_ctl</>
8026 This controls how long <application>pg_ctl</> will wait when waiting
8027 for server startup or shutdown. Formerly the timeout was hard-wired
8034 Add a <application>pg_ctl</> option to control generation
8035 of server core dumps (Andrew)
8041 Allow Control-C to cancel <application>clusterdb</>,
8042 <application>reindexdb</>, and <application>vacuumdb</> (Itagaki
8049 Suppress command tag output for <application>createdb</>,
8050 <application>createuser</>, <application>dropdb</>, and
8051 <application>dropuser</> (Peter)
8055 The <literal>--quiet</> option is ignored and will be removed in 8.4.
8056 Progress messages when acting on all databases now go to stdout
8057 instead of stderr because they are not actually errors.
8066 <title><link linkend="libpq"><application>libpq</></link></title>
8071 Interpret the <literal>dbName</> parameter of
8072 <function>PQsetdbLogin()</> as a <literal>conninfo</> string if
8073 it contains an equals sign (Andrew)
8077 This allows use of <literal>conninfo</> strings in client
8078 programs that still use <literal>PQsetdbLogin()</>.
8084 Support a global <acronym>SSL</> configuration file (Victor
8091 Add environment variable <varname>PGSSLKEY</> to control
8092 <acronym>SSL</> hardware keys (Victor Wagner)
8098 Add <function>lo_truncate()</function> for large object
8099 truncation (Kris Jurka)
8105 Add <function>PQconnectionNeedsPassword()</function> that returns
8106 true if the server required a password but none was supplied
8111 If this returns true after a failed connection attempt, a client
8112 application should prompt the user for a password. In the past
8113 applications have had to check for a specific error message string to
8114 decide whether a password is needed; that approach is now
8121 Add <function>PQconnectionUsedPassword()</function> that returns
8122 true if the supplied password was actually used
8127 This is useful in some security contexts where it is important
8128 to know whether a user-supplied password is actually valid.
8137 <title><link linkend="ecpg"><application>ecpg</></link></title>
8142 Use V3 frontend/backend protocol (Michael)
8146 This adds support for server-side prepared statements.
8152 Use native threads, instead of pthreads, on Windows (Magnus)
8158 Improve thread-safety of ecpglib (Itagaki Takahiro)
8164 Make the ecpg libraries export only necessary API symbols (Michael)
8173 <title><application>Windows</> Port</title>
8178 Allow the whole <productname>PostgreSQL</> distribution to be compiled
8179 with <productname>Microsoft Visual C++</> (Magnus and others)
8183 This allows Windows-based developers to use familiar development
8184 and debugging tools.
8185 Windows executables made with Visual C++ might also have better
8186 stability and performance than those made with other tool sets.
8187 The client-only Visual C++ build scripts have been removed.
8193 Drastically reduce postmaster's memory usage when it has many child
8200 Allow regression tests to be started by an administrative
8207 Add native shared memory implementation (Magnus)
8216 <title>Server Programming Interface (<acronym>SPI</>)</title>
8221 Add cursor-related functionality in SPI (Pavel Stehule)
8225 Allow access to the cursor-related planning options, and add
8226 <command>FETCH</>/<command>MOVE</> routines.
8232 Allow execution of cursor commands through
8233 <function>SPI_execute</function> (Tom)
8237 The macro <literal>SPI_ERROR_CURSOR</> still exists but will
8244 SPI plan pointers are now declared as <literal>SPIPlanPtr</> instead of
8245 <literal>void *</> (Tom)
8249 This does not break application code, but switching is
8250 recommended to help catch simple programming mistakes.
8259 <title>Build Options</title>
8264 Add <application>configure</> option <literal>--enable-profiling</>
8265 to enable code profiling (works only with <application>gcc</>)
8266 (Korry Douglas and Nikhil Sontakke)
8272 Add <application>configure</> option <literal>--with-system-tzdata</>
8273 to use the operating system's time zone database (Peter)
8279 Fix <acronym>PGXS</> so extensions can be built against PostgreSQL
8280 installations whose <application>pg_config</> program does not
8281 appear first in the <varname>PATH</> (Tom)
8287 Support <command>gmake draft</command> when building the
8288 <acronym>SGML</> documentation (Bruce)
8292 Unless <literal>draft</> is used, the documentation build will
8293 now be repeated if necessary to ensure the index is up-to-date.
8302 <title>Source Code</title>
8307 Rename macro <literal>DLLIMPORT</> to <literal>PGDLLIMPORT</> to
8308 avoid conflicting with third party includes (like Tcl) that
8309 define <literal>DLLIMPORT</> (Magnus)
8315 Create <quote>operator families</quote> to improve planning of
8316 queries involving cross-data-type comparisons (Tom)
8322 Update GIN <function>extractQuery()</> API to allow signalling
8323 that nothing can satisfy the query (Teodor)
8329 Move <literal>NAMEDATALEN</> definition from
8330 <filename>postgres_ext.h</> to <filename>pg_config_manual.h</>
8337 Provide <function>strlcpy()</function> and
8338 <function>strlcat()</function> on all platforms, and replace
8339 error-prone uses of <function>strncpy()</function>,
8340 <function>strncat()</function>, etc (Peter)
8346 Create hooks to let an external plugin monitor (or even replace) the
8347 planner and create plans for hypothetical situations (Gurjeet
8354 Create a function variable <literal>join_search_hook</> to let plugins
8355 override the join search order portion of the planner (Julius
8362 Add <function>tas()</> support for Renesas' M32R processor
8369 <function>quote_identifier()</function> and
8370 <application>pg_dump</application> no longer quote keywords that are
8371 unreserved according to the grammar (Tom)
8377 Change the on-disk representation of the <type>NUMERIC</type>
8378 data type so that the <structfield>sign_dscale</> word comes
8379 before the weight (Tom)
8385 Use <acronym>SYSV</> semaphores rather than POSIX on Darwin
8386 >= 6.0, i.e., OS X 10.2 and up (Chris Marcellino)
8392 Add <link linkend="acronyms">acronym</link> and <link
8393 linkend="creating-cluster-nfs">NFS</link> documentation
8400 "Postgres" is now documented as an accepted alias for
8401 "PostgreSQL" (Peter)
8407 Add documentation about preventing database server spoofing when
8408 the server is down (Bruce)
8417 <title>Contrib</title>
8422 Move <filename>contrib</> <filename>README</> content into the
8423 main <productname>PostgreSQL</> documentation (Albert Cervera i
8430 Add <filename>contrib/pageinspect</filename> module for low-level
8431 page inspection (Simon, Heikki)
8437 Add <filename>contrib/pg_standby</filename> module for controlling
8438 warm standby operation (Simon)
8444 Add <filename>contrib/uuid-ossp</filename> module for generating
8445 <type>UUID</> values using the OSSP UUID library (Peter)
8449 Use <application>configure</>
8450 <literal>--with-ossp-uuid</literal> to activate. This takes
8451 advantage of the new <type>UUID</type> builtin type.
8457 Add <filename>contrib/dict_int</filename>,
8458 <filename>contrib/dict_xsyn</filename>, and
8459 <filename>contrib/test_parser</filename> modules to provide
8460 sample add-on text search dictionary templates and parsers
8467 Allow <application>contrib/pgbench</> to set the fillfactor (Pavan
8474 Add timestamps to <application>contrib/pgbench</> <literal>-l</>
8481 Add usage count statistics to
8482 <filename>contrib/pgbuffercache</filename> (Greg Smith)
8488 Add GIN support for <filename>contrib/hstore</> (Teodor)
8494 Add GIN support for <filename>contrib/pg_trgm</> (Guillaume Smet, Teodor)
8500 Update OS/X startup scripts in
8501 <filename>contrib/start-scripts</filename> (Mark Cotner, David
8508 Restrict <function>pgrowlocks()</function> and
8509 <function>dblink_get_pkey()</function> to users who have
8510 <literal>SELECT</literal> privilege on the target table (Tom)
8516 Restrict <filename>contrib/pgstattuple</filename> functions to
8523 <filename>contrib/xml2</filename> is deprecated and planned for
8524 removal in 8.4 (Peter)
8528 The new XML support in core PostgreSQL supersedes this module.