1 <!-- doc/src/sgml/release-8.2.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
4 <sect1 id="release-8-2-23">
5 <title>Release 8.2.23</title>
8 <title>Release date:</title>
9 <para>2011-12-05</para>
13 This release contains a variety of fixes from 8.2.22.
14 For information about new features in the 8.2 major release, see
15 <xref linkend="release-8-2">.
19 This is expected to be the last <productname>PostgreSQL</> release
20 in the 8.2.X series. Users are encouraged to update to a newer
25 <title>Migration to Version 8.2.23</title>
28 A dump/restore is not required for those running 8.2.X.
32 However, a longstanding error was discovered in the definition of the
33 <literal>information_schema.referential_constraints</> view. If you
34 rely on correct results from that view, you should replace its
35 definition as explained in the first changelog item below.
39 Also, if you are upgrading from a version earlier than 8.2.14,
40 see <xref linkend="release-8-2-14">.
46 <title>Changes</title>
52 Fix bugs in <literal>information_schema.referential_constraints</> view
57 This view was being insufficiently careful about matching the
58 foreign-key constraint to the depended-on primary or unique key
59 constraint. That could result in failure to show a foreign key
60 constraint at all, or showing it multiple times, or claiming that it
61 depends on a different constraint than the one it really does.
65 Since the view definition is installed by <application>initdb</>,
66 merely upgrading will not fix the problem. If you need to fix this
67 in an existing installation, you can (as a superuser) drop the
68 <literal>information_schema</> schema then re-create it by sourcing
69 <filename><replaceable>SHAREDIR</>/information_schema.sql</filename>.
70 (Run <literal>pg_config --sharedir</> if you're uncertain where
71 <replaceable>SHAREDIR</> is.) This must be repeated in each database
78 Fix TOAST-related data corruption during <literal>CREATE TABLE dest AS
79 SELECT * FROM src</> or <literal>INSERT INTO dest SELECT * FROM src</>
84 If a table has been modified by <command>ALTER TABLE ADD COLUMN</>,
85 attempts to copy its data verbatim to another table could produce
86 corrupt results in certain corner cases.
87 The problem can only manifest in this precise form in 8.4 and later,
88 but we patched earlier versions as well in case there are other code
89 paths that could trigger the same bug.
95 Fix race condition during toast table access from stale syscache entries
100 The typical symptom was transient errors like <quote>missing chunk
101 number 0 for toast value NNNNN in pg_toast_2619</>, where the cited
102 toast table would always belong to a system catalog.
108 Improve locale support in <type>money</> type's input and output
113 Aside from not supporting all standard
114 <link linkend="guc-lc-monetary"><varname>lc_monetary</></link>
115 formatting options, the input and output functions were inconsistent,
116 meaning there were locales in which dumped <type>money</> values could
124 linkend="guc-transform-null-equals"><varname>transform_null_equals</></link>
125 affect <literal>CASE foo WHEN NULL ...</> constructs
130 <varname>transform_null_equals</> is only supposed to affect
131 <literal>foo = NULL</> expressions written directly by the user, not
132 equality checks generated internally by this form of <literal>CASE</>.
138 Change foreign-key trigger creation order to better support
139 self-referential foreign keys (Tom Lane)
143 For a cascading foreign key that references its own table, a row update
144 will fire both the <literal>ON UPDATE</> trigger and the
145 <literal>CHECK</> trigger as one event. The <literal>ON UPDATE</>
146 trigger must execute first, else the <literal>CHECK</> will check a
147 non-final state of the row and possibly throw an inappropriate error.
148 However, the firing order of these triggers is determined by their
149 names, which generally sort in creation order since the triggers have
150 auto-generated names following the convention
151 <quote>RI_ConstraintTrigger_NNNN</>. A proper fix would require
152 modifying that convention, which we will do in 9.2, but it seems risky
153 to change it in existing releases. So this patch just changes the
154 creation order of the triggers. Users encountering this type of error
155 should drop and re-create the foreign key constraint to get its
156 triggers into the right order.
162 Preserve blank lines within commands in <application>psql</>'s command
163 history (Robert Haas)
167 The former behavior could cause problems if an empty line was removed
168 from within a string literal, for example.
174 Use the preferred version of <application>xsubpp</> to build PL/Perl,
175 not necessarily the operating system's main copy
176 (David Wheeler and Alex Hunsaker)
182 Honor query cancel interrupts promptly in <function>pgstatindex()</>
189 Ensure VPATH builds properly install all server header files
196 Shorten file names reported in verbose error messages (Peter Eisentraut)
200 Regular builds have always reported just the name of the C file
201 containing the error message call, but VPATH builds formerly
202 reported an absolute path name.
208 Fix interpretation of Windows timezone names for Central America
213 Map <quote>Central America Standard Time</> to <literal>CST6</>, not
214 <literal>CST6CDT</>, because DST is generally not observed anywhere in
221 Update time zone data files to <application>tzdata</> release 2011n
222 for DST law changes in Brazil, Cuba, Fiji, Palestine, Russia, and Samoa;
223 also historical corrections for Alaska and British East Africa.
232 <sect1 id="release-8-2-22">
233 <title>Release 8.2.22</title>
236 <title>Release date:</title>
237 <para>2011-09-26</para>
241 This release contains a variety of fixes from 8.2.21.
242 For information about new features in the 8.2 major release, see
243 <xref linkend="release-8-2">.
247 The <productname>PostgreSQL</> community will stop releasing updates
248 for the 8.2.X release series in December 2011.
249 Users are encouraged to update to a newer release branch soon.
253 <title>Migration to Version 8.2.22</title>
256 A dump/restore is not required for those running 8.2.X.
257 However, if you are upgrading from a version earlier than 8.2.14,
258 see <xref linkend="release-8-2-14">.
264 <title>Changes</title>
270 Fix multiple bugs in GiST index page split processing (Heikki
275 The probability of occurrence was low, but these could lead to index
282 Avoid possibly accessing off the end of memory in <command>ANALYZE</>
287 This fixes a very-low-probability server crash scenario.
293 Fix race condition in relcache init file invalidation (Tom Lane)
297 There was a window wherein a new backend process could read a stale init
298 file but miss the inval messages that would tell it the data is stale.
299 The result would be bizarre failures in catalog accesses, typically
300 <quote>could not read block 0 in file ...</> later during startup.
306 Fix memory leak at end of a GiST index scan (Tom Lane)
310 Commands that perform many separate GiST index scans, such as
311 verification of a new GiST-based exclusion constraint on a table
312 already containing many rows, could transiently require large amounts of
313 memory due to this leak.
319 Fix performance problem when constructing a large, lossy bitmap
326 Fix array- and path-creating functions to ensure padding bytes are
331 This avoids some situations where the planner will think that
332 semantically-equal constants are not equal, resulting in poor
339 Work around gcc 4.6.0 bug that breaks WAL replay (Tom Lane)
343 This could lead to loss of committed transactions after a server crash.
349 Fix dump bug for <literal>VALUES</> in a view (Tom Lane)
355 Disallow <literal>SELECT FOR UPDATE/SHARE</> on sequences (Tom Lane)
359 This operation doesn't work as expected and can lead to failures.
365 Defend against integer overflow when computing size of a hash table (Tom
372 Fix portability bugs in use of credentials control messages for
373 <quote>peer</> authentication (Tom Lane)
379 Fix typo in <function>pg_srand48</> seed initialization (Andres Freund)
383 This led to failure to use all bits of the provided seed. This function
384 is not used on most platforms (only those without <function>srandom</>),
385 and the potential security exposure from a less-random-than-expected
386 seed seems minimal in any case.
392 Avoid integer overflow when the sum of <literal>LIMIT</> and
393 <literal>OFFSET</> values exceeds 2^63 (Heikki Linnakangas)
399 Add overflow checks to <type>int4</> and <type>int8</> versions of
400 <function>generate_series()</> (Robert Haas)
406 Fix trailing-zero removal in <function>to_char()</> (Marti Raudsepp)
410 In a format with <literal>FM</> and no digit positions
411 after the decimal point, zeroes to the left of the decimal point could
412 be removed incorrectly.
418 Fix <function>pg_size_pretty()</> to avoid overflow for inputs close to
425 Fix <application>psql</>'s counting of script file line numbers during
426 <literal>COPY</> from a different file (Tom Lane)
432 Fix <application>pg_restore</>'s direct-to-database mode for
433 <varname>standard_conforming_strings</> (Tom Lane)
437 <application>pg_restore</> could emit incorrect commands when restoring
438 directly to a database server from an archive file that had been made
439 with <varname>standard_conforming_strings</> set to <literal>on</>.
445 Fix write-past-buffer-end and memory leak in <application>libpq</>'s
446 LDAP service lookup code (Albe Laurenz)
452 In <application>libpq</>, avoid failures when using nonblocking I/O
453 and an SSL connection (Martin Pihlak, Tom Lane)
459 Improve libpq's handling of failures during connection startup
464 In particular, the response to a server report of <function>fork()</>
465 failure during SSL connection startup is now saner.
471 Make <application>ecpglib</> write <type>double</> values with 15 digits
472 precision (Akira Kurosawa)
478 Apply upstream fix for blowfish signed-character bug (CVE-2011-2483)
483 <filename>contrib/pg_crypto</>'s blowfish encryption code could give
484 wrong results on platforms where char is signed (which is most),
485 leading to encrypted passwords being weaker than they should be.
491 Fix memory leak in <filename>contrib/seg</> (Heikki Linnakangas)
497 Fix <function>pgstatindex()</> to give consistent results for empty
504 Allow building with perl 5.14 (Alex Hunsaker)
510 Update configure script's method for probing existence of system
515 The version of autoconf we used in 8.3 and 8.2 could be fooled by
516 compilers that perform link-time optimization.
522 Fix assorted issues with build and install file paths containing spaces
529 Update time zone data files to <application>tzdata</> release 2011i
530 for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan.
539 <sect1 id="release-8-2-21">
540 <title>Release 8.2.21</title>
543 <title>Release date:</title>
544 <para>2011-04-18</para>
548 This release contains a variety of fixes from 8.2.20.
549 For information about new features in the 8.2 major release, see
550 <xref linkend="release-8-2">.
554 <title>Migration to Version 8.2.21</title>
557 A dump/restore is not required for those running 8.2.X.
558 However, if you are upgrading from a version earlier than 8.2.14,
559 see <xref linkend="release-8-2-14">.
565 <title>Changes</title>
571 Avoid potential deadlock during catalog cache initialization
576 In some cases the cache loading code would acquire share lock on a
577 system index before locking the index's catalog. This could deadlock
578 against processes trying to acquire exclusive locks in the other,
585 Fix dangling-pointer problem in <literal>BEFORE ROW UPDATE</> trigger
586 handling when there was a concurrent update to the target tuple
591 This bug has been observed to result in intermittent <quote>cannot
592 extract system attribute from virtual tuple</> failures while trying to
593 do <literal>UPDATE RETURNING ctid</>. There is a very small probability
594 of more serious errors, such as generating incorrect index entries for
601 Disallow <command>DROP TABLE</> when there are pending deferred trigger
602 events for the table (Tom Lane)
606 Formerly the <command>DROP</> would go through, leading to
607 <quote>could not open relation with OID nnn</> errors when the
608 triggers were eventually fired.
614 Fix PL/Python memory leak involving array slices (Daniel Popowich)
620 Fix <application>pg_restore</> to cope with long lines (over 1KB) in
627 Put in more safeguards against crashing due to division-by-zero
628 with overly enthusiastic compiler optimization (Aurelien Jarno)
634 Support use of dlopen() in FreeBSD and OpenBSD on MIPS (Tom Lane)
638 There was a hard-wired assumption that this system function was not
639 available on MIPS hardware on these systems. Use a compile-time test
640 instead, since more recent versions have it.
646 Fix compilation failures on HP-UX (Heikki Linnakangas)
652 Fix path separator used by <application>pg_regress</> on Cygwin
659 Update time zone data files to <application>tzdata</> release 2011f
660 for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa,
661 and Turkey; also historical corrections for South Australia, Alaska,
671 <sect1 id="release-8-2-20">
672 <title>Release 8.2.20</title>
675 <title>Release date:</title>
676 <para>2011-01-31</para>
680 This release contains a variety of fixes from 8.2.19.
681 For information about new features in the 8.2 major release, see
682 <xref linkend="release-8-2">.
686 <title>Migration to Version 8.2.20</title>
689 A dump/restore is not required for those running 8.2.X.
690 However, if you are upgrading from a version earlier than 8.2.14,
691 see <xref linkend="release-8-2-14">.
697 <title>Changes</title>
703 Avoid failures when <command>EXPLAIN</> tries to display a simple-form
704 <literal>CASE</> expression (Tom Lane)
708 If the <literal>CASE</>'s test expression was a constant, the planner
709 could simplify the <literal>CASE</> into a form that confused the
710 expression-display code, resulting in <quote>unexpected CASE WHEN
717 Fix assignment to an array slice that is before the existing range
718 of subscripts (Tom Lane)
722 If there was a gap between the newly added subscripts and the first
723 pre-existing subscript, the code miscalculated how many entries needed
724 to be copied from the old array's null bitmap, potentially leading to
725 data corruption or crash.
731 Avoid unexpected conversion overflow in planner for very distant date
736 The <type>date</> type supports a wider range of dates than can be
737 represented by the <type>timestamp</> types, but the planner assumed it
738 could always convert a date to timestamp with impunity.
744 Fix <application>pg_restore</>'s text output for large objects (BLOBs)
745 when <varname>standard_conforming_strings</> is on (Tom Lane)
749 Although restoring directly to a database worked correctly, string
750 escaping was incorrect if <application>pg_restore</> was asked for
751 SQL text output and <varname>standard_conforming_strings</> had been
752 enabled in the source database.
758 Fix erroneous parsing of <type>tsquery</> values containing
759 <literal>... & !(subexpression) | ...</literal> (Tom Lane)
763 Queries containing this combination of operators were not executed
764 correctly. The same error existed in <filename>contrib/intarray</>'s
765 <type>query_int</> type and <filename>contrib/ltree</>'s
766 <type>ltxtquery</> type.
772 Fix buffer overrun in <filename>contrib/intarray</>'s input function
773 for the <type>query_int</> type (Apple)
777 This bug is a security risk since the function's return address could
778 be overwritten. Thanks to Apple Inc's security team for reporting this
779 issue and supplying the fix. (CVE-2010-4015)
785 Fix bug in <filename>contrib/seg</>'s GiST picksplit algorithm
790 This could result in considerable inefficiency, though not actually
791 incorrect answers, in a GiST index on a <type>seg</> column.
792 If you have such an index, consider <command>REINDEX</>ing it after
793 installing this update. (This is identical to the bug that was fixed in
794 <filename>contrib/cube</> in the previous update.)
803 <sect1 id="release-8-2-19">
804 <title>Release 8.2.19</title>
807 <title>Release date:</title>
808 <para>2010-12-16</para>
812 This release contains a variety of fixes from 8.2.18.
813 For information about new features in the 8.2 major release, see
814 <xref linkend="release-8-2">.
818 <title>Migration to Version 8.2.19</title>
821 A dump/restore is not required for those running 8.2.X.
822 However, if you are upgrading from a version earlier than 8.2.14,
823 see <xref linkend="release-8-2-14">.
829 <title>Changes</title>
836 <link linkend="guc-wal-sync-method"><varname>wal_sync_method</></link>
837 to be <literal>fdatasync</> on Linux (Tom Lane, Marti Raudsepp)
841 The default on Linux has actually been <literal>fdatasync</> for many
842 years, but recent kernel changes caused <productname>PostgreSQL</> to
843 choose <literal>open_datasync</> instead. This choice did not result
844 in any performance improvement, and caused outright failures on
845 certain filesystems, notably <literal>ext4</> with the
846 <literal>data=journal</> mount option.
852 Fix assorted bugs in WAL replay logic for GIN indexes (Tom Lane)
856 This could result in <quote>bad buffer id: 0</> failures or
857 corruption of index contents during replication.
863 Fix recovery from base backup when the starting checkpoint WAL record
864 is not in the same WAL segment as its redo point (Jeff Davis)
870 Add support for detecting register-stack overrun on <literal>IA64</>
875 The <literal>IA64</> architecture has two hardware stacks. Full
876 prevention of stack-overrun failures requires checking both.
882 Add a check for stack overflow in <function>copyObject()</> (Tom Lane)
886 Certain code paths could crash due to stack overflow given a
887 sufficiently complex query.
893 Fix detection of page splits in temporary GiST indexes (Heikki
898 It is possible to have a <quote>concurrent</> page split in a
899 temporary index, if for example there is an open cursor scanning the
900 index when an insertion is done. GiST failed to detect this case and
901 hence could deliver wrong results when execution of the cursor
908 Avoid memory leakage while <command>ANALYZE</>'ing complex index
909 expressions (Tom Lane)
915 Ensure an index that uses a whole-row Var still depends on its table
920 An index declared like <literal>create index i on t (foo(t.*))</>
921 would not automatically get dropped when its table was dropped.
927 Do not <quote>inline</> a SQL function with multiple <literal>OUT</>
928 parameters (Tom Lane)
932 This avoids a possible crash due to loss of information about the
933 expected result rowtype.
939 Behave correctly if <literal>ORDER BY</>, <literal>LIMIT</>,
940 <literal>FOR UPDATE</>, or <literal>WITH</> is attached to the
941 <literal>VALUES</> part of <literal>INSERT ... VALUES</> (Tom Lane)
947 Fix constant-folding of <literal>COALESCE()</> expressions (Tom Lane)
951 The planner would sometimes attempt to evaluate sub-expressions that
952 in fact could never be reached, possibly leading to unexpected errors.
958 Add print functionality for <structname>InhRelation</> nodes (Tom Lane)
962 This avoids a failure when <varname>debug_print_parse</> is enabled
963 and certain types of query are executed.
969 Fix incorrect calculation of distance from a point to a horizontal
970 line segment (Tom Lane)
974 This bug affected several different geometric distance-measurement
981 Fix <application>PL/pgSQL</>'s handling of <quote>simple</>
982 expressions to not fail in recursion or error-recovery cases (Tom Lane)
988 Fix <application>PL/Python</>'s handling of set-returning functions
993 Attempts to call SPI functions within the iterator generating a set
1000 Fix bug in <filename>contrib/cube</>'s GiST picksplit algorithm
1001 (Alexander Korotkov)
1005 This could result in considerable inefficiency, though not actually
1006 incorrect answers, in a GiST index on a <type>cube</> column.
1007 If you have such an index, consider <command>REINDEX</>ing it after
1008 installing this update.
1014 Don't emit <quote>identifier will be truncated</> notices in
1015 <filename>contrib/dblink</> except when creating new connections
1022 Fix potential coredump on missing public key in
1023 <filename>contrib/pgcrypto</> (Marti Raudsepp)
1029 Fix memory leak in <filename>contrib/xml2</>'s XPath query functions
1036 Update time zone data files to <application>tzdata</> release 2010o
1037 for DST law changes in Fiji and Samoa;
1038 also historical corrections for Hong Kong.
1047 <sect1 id="release-8-2-18">
1048 <title>Release 8.2.18</title>
1051 <title>Release date:</title>
1052 <para>2010-10-04</para>
1056 This release contains a variety of fixes from 8.2.17.
1057 For information about new features in the 8.2 major release, see
1058 <xref linkend="release-8-2">.
1062 <title>Migration to Version 8.2.18</title>
1065 A dump/restore is not required for those running 8.2.X.
1066 However, if you are upgrading from a version earlier than 8.2.14,
1067 see <xref linkend="release-8-2-14">.
1073 <title>Changes</title>
1079 Use a separate interpreter for each calling SQL userid in PL/Perl and
1084 This change prevents security problems that can be caused by subverting
1085 Perl or Tcl code that will be executed later in the same session under
1086 another SQL user identity (for example, within a <literal>SECURITY
1087 DEFINER</> function). Most scripting languages offer numerous ways that
1088 that might be done, such as redefining standard functions or operators
1089 called by the target function. Without this change, any SQL user with
1090 Perl or Tcl language usage rights can do essentially anything with the
1091 SQL privileges of the target function's owner.
1095 The cost of this change is that intentional communication among Perl
1096 and Tcl functions becomes more difficult. To provide an escape hatch,
1097 PL/PerlU and PL/TclU functions continue to use only one interpreter
1098 per session. This is not considered a security issue since all such
1099 functions execute at the trust level of a database superuser already.
1103 It is likely that third-party procedural languages that claim to offer
1104 trusted execution have similar security issues. We advise contacting
1105 the authors of any PL you are depending on for security-critical
1110 Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433).
1116 Prevent possible crashes in <function>pg_get_expr()</> by disallowing
1117 it from being called with an argument that is not one of the system
1118 catalog columns it's intended to be used with
1119 (Heikki Linnakangas, Tom Lane)
1125 Fix Windows shared-memory allocation code
1126 (Tsutomu Yamada, Magnus Hagander)
1130 This bug led to the often-reported <quote>could not reattach to shared
1131 memory</quote> error message. This is a back-patch of a fix that was
1132 applied to newer branches some time ago.
1138 Treat exit code 128 (<literal>ERROR_WAIT_NO_CHILDREN</>) as non-fatal on
1139 Windows (Magnus Hagander)
1143 Under high load, Windows processes will sometimes fail at startup with
1144 this error code. Formerly the postmaster treated this as a panic
1145 condition and restarted the whole database, but that seems to be
1152 Fix possible duplicate scans of <literal>UNION ALL</> member relations
1159 Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane)
1163 This occurred when a sub-select contains a join alias reference that
1164 expands into an expression containing another sub-select.
1170 Reduce PANIC to ERROR in some occasionally-reported btree failure cases,
1171 and provide additional detail in the resulting error messages
1176 This should improve the system's robustness with corrupted indexes.
1182 Prevent show_session_authorization() from crashing within autovacuum
1183 processes (Tom Lane)
1189 Defend against functions returning setof record where not all the
1190 returned rows are actually of the same rowtype (Tom Lane)
1196 Fix possible failure when hashing a pass-by-reference function result
1203 Take care to fsync the contents of lockfiles (both
1204 <filename>postmaster.pid</> and the socket lockfile) while writing them
1209 This omission could result in corrupted lockfile contents if the
1210 machine crashes shortly after postmaster start. That could in turn
1211 prevent subsequent attempts to start the postmaster from succeeding,
1212 until the lockfile is manually removed.
1218 Avoid recursion while assigning XIDs to heavily-nested
1219 subtransactions (Andres Freund, Robert Haas)
1223 The original coding could result in a crash if there was limited
1230 Fix <varname>log_line_prefix</>'s <literal>%i</> escape,
1231 which could produce junk early in backend startup (Tom Lane)
1237 Fix possible data corruption in <command>ALTER TABLE ... SET
1238 TABLESPACE</> when archiving is enabled (Jeff Davis)
1244 Allow <command>CREATE DATABASE</> and <command>ALTER DATABASE ... SET
1245 TABLESPACE</> to be interrupted by query-cancel (Guillaume Lelarge)
1251 In PL/Python, defend against null pointer results from
1252 <function>PyCObject_AsVoidPtr</> and <function>PyCObject_FromVoidPtr</>
1259 Improve <filename>contrib/dblink</>'s handling of tables containing
1260 dropped columns (Tom Lane)
1266 Fix connection leak after <quote>duplicate connection name</quote>
1267 errors in <filename>contrib/dblink</> (Itagaki Takahiro)
1273 Fix <filename>contrib/dblink</> to handle connection names longer than
1274 62 bytes correctly (Itagaki Takahiro)
1280 Add <function>hstore(text, text)</>
1281 function to <filename>contrib/hstore</> (Robert Haas)
1285 This function is the recommended substitute for the now-deprecated
1286 <literal>=></> operator. It was back-patched so that future-proofed
1287 code can be used with older server versions. Note that the patch will
1288 be effective only after <filename>contrib/hstore</> is installed or
1289 reinstalled in a particular database. Users might prefer to execute
1290 the <command>CREATE FUNCTION</> command by hand, instead.
1296 Update build infrastructure and documentation to reflect the source code
1297 repository's move from CVS to Git (Magnus Hagander and others)
1303 Update time zone data files to <application>tzdata</> release 2010l
1304 for DST law changes in Egypt and Palestine; also historical corrections
1309 This change also adds new names for two Micronesian timezones:
1310 Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred
1311 abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over
1318 Make Windows' <quote>N. Central Asia Standard Time</> timezone map to
1319 Asia/Novosibirsk, not Asia/Almaty (Magnus Hagander)
1323 Microsoft changed the DST behavior of this zone in the timezone update
1324 from KB976098. Asia/Novosibirsk is a better match to its new behavior.
1333 <sect1 id="release-8-2-17">
1334 <title>Release 8.2.17</title>
1337 <title>Release date:</title>
1338 <para>2010-05-17</para>
1342 This release contains a variety of fixes from 8.2.16.
1343 For information about new features in the 8.2 major release, see
1344 <xref linkend="release-8-2">.
1348 <title>Migration to Version 8.2.17</title>
1351 A dump/restore is not required for those running 8.2.X.
1352 However, if you are upgrading from a version earlier than 8.2.14,
1353 see <xref linkend="release-8-2-14">.
1359 <title>Changes</title>
1365 Enforce restrictions in <literal>plperl</> using an opmask applied to
1366 the whole interpreter, instead of using <filename>Safe.pm</>
1367 (Tim Bunce, Andrew Dunstan)
1371 Recent developments have convinced us that <filename>Safe.pm</> is too
1372 insecure to rely on for making <literal>plperl</> trustable. This
1373 change removes use of <filename>Safe.pm</> altogether, in favor of using
1374 a separate interpreter with an opcode mask that is always applied.
1375 Pleasant side effects of the change include that it is now possible to
1376 use Perl's <literal>strict</> pragma in a natural way in
1377 <literal>plperl</>, and that Perl's <literal>$a</> and <literal>$b</>
1378 variables work as expected in sort routines, and that function
1379 compilation is significantly faster. (CVE-2010-1169)
1385 Prevent PL/Tcl from executing untrustworthy code from
1386 <structname>pltcl_modules</> (Tom)
1390 PL/Tcl's feature for autoloading Tcl code from a database table
1391 could be exploited for trojan-horse attacks, because there was no
1392 restriction on who could create or insert into that table. This change
1393 disables the feature unless <structname>pltcl_modules</> is owned by a
1394 superuser. (However, the permissions on the table are not checked, so
1395 installations that really need a less-than-secure modules table can
1396 still grant suitable privileges to trusted non-superusers.) Also,
1397 prevent loading code into the unrestricted <quote>normal</> Tcl
1398 interpreter unless we are really going to execute a <literal>pltclu</>
1399 function. (CVE-2010-1170)
1405 Fix possible crash if a cache reset message is received during
1406 rebuild of a relcache entry (Heikki)
1410 This error was introduced in 8.2.16 while fixing a related failure.
1416 Do not allow an unprivileged user to reset superuser-only parameter
1421 Previously, if an unprivileged user ran <literal>ALTER USER ... RESET
1422 ALL</> for himself, or <literal>ALTER DATABASE ... RESET ALL</> for
1423 a database he owns, this would remove all special parameter settings
1424 for the user or database, even ones that are only supposed to be
1425 changeable by a superuser. Now, the <command>ALTER</> will only
1426 remove the parameters that the user has permission to change.
1432 Avoid possible crash during backend shutdown if shutdown occurs
1433 when a <literal>CONTEXT</> addition would be made to log entries (Tom)
1437 In some cases the context-printing function would fail because the
1438 current transaction had already been rolled back when it came time
1439 to print a log message.
1445 Update PL/Perl's <filename>ppport.h</> for modern Perl versions
1452 Fix assorted memory leaks in PL/Python (Andreas Freund, Tom)
1458 Prevent infinite recursion in <application>psql</> when expanding
1459 a variable that refers to itself (Tom)
1465 Fix <application>psql</>'s <literal>\copy</> to not add spaces around
1466 a dot within <literal>\copy (select ...)</> (Tom)
1470 Addition of spaces around the decimal point in a numeric literal would
1471 result in a syntax error.
1477 Ensure that <filename>contrib/pgstattuple</> functions respond to cancel
1478 interrupts promptly (Tatsuhito Kasahara)
1484 Make server startup deal properly with the case that
1485 <function>shmget()</> returns <literal>EINVAL</> for an existing
1486 shared memory segment (Tom)
1490 This behavior has been observed on BSD-derived kernels including macOS.
1491 It resulted in an entirely-misleading startup failure complaining that
1492 the shared memory request size was too large.
1498 Avoid possible crashes in syslogger process on Windows (Heikki)
1504 Deal more robustly with incomplete time zone information in the
1505 Windows registry (Magnus)
1511 Update the set of known Windows time zone names (Magnus)
1517 Update time zone data files to <application>tzdata</> release 2010j
1518 for DST law changes in Argentina, Australian Antarctic, Bangladesh,
1519 Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia;
1520 also historical corrections for Taiwan.
1524 Also, add <literal>PKST</> (Pakistan Summer Time) to the default set of
1525 timezone abbreviations.
1534 <sect1 id="release-8-2-16">
1535 <title>Release 8.2.16</title>
1538 <title>Release date:</title>
1539 <para>2010-03-15</para>
1543 This release contains a variety of fixes from 8.2.15.
1544 For information about new features in the 8.2 major release, see
1545 <xref linkend="release-8-2">.
1549 <title>Migration to Version 8.2.16</title>
1552 A dump/restore is not required for those running 8.2.X.
1553 However, if you are upgrading from a version earlier than 8.2.14,
1554 see <xref linkend="release-8-2-14">.
1560 <title>Changes</title>
1566 Add new configuration parameter <varname>ssl_renegotiation_limit</> to
1567 control how often we do session key renegotiation for an SSL connection
1572 This can be set to zero to disable renegotiation completely, which may
1573 be required if a broken SSL library is used. In particular, some
1574 vendors are shipping stopgap patches for CVE-2009-3555 that cause
1575 renegotiation attempts to fail.
1581 Fix possible deadlock during backend startup (Tom)
1587 Fix possible crashes due to not handling errors during relcache reload
1594 Fix possible crashes when trying to recover from a failure in
1595 subtransaction start (Tom)
1601 Fix server memory leak associated with use of savepoints and a client
1602 encoding different from server's encoding (Tom)
1608 Fix incorrect WAL data emitted during end-of-recovery cleanup of a GIST
1609 index page split (Yoichi Hirai)
1613 This would result in index corruption, or even more likely an error
1614 during WAL replay, if we were unlucky enough to crash during
1615 end-of-recovery cleanup after having completed an incomplete GIST
1622 Make <function>substring()</> for <type>bit</> types treat any negative
1623 length as meaning <quote>all the rest of the string</> (Tom)
1627 The previous coding treated only -1 that way, and would produce an
1628 invalid result value for other negative values, possibly leading to
1629 a crash (CVE-2010-0442).
1635 Fix integer-to-bit-string conversions to handle the first fractional
1636 byte correctly when the output bit width is wider than the given
1637 integer by something other than a multiple of 8 bits (Tom)
1643 Fix some cases of pathologically slow regular expression matching (Tom)
1649 Fix the <literal>STOP WAL LOCATION</> entry in backup history files to
1650 report the next WAL segment's name when the end location is exactly at a
1651 segment boundary (Itagaki Takahiro)
1657 Fix some more cases of temporary-file leakage (Heikki)
1661 This corrects a problem introduced in the previous minor release.
1662 One case that failed is when a plpgsql function returning set is
1663 called within another function's exception handler.
1669 Improve constraint exclusion processing of boolean-variable cases,
1670 in particular make it possible to exclude a partition that has a
1671 <quote>bool_column = false</> constraint (Tom)
1677 When reading <filename>pg_hba.conf</> and related files, do not treat
1678 <literal>@something</> as a file inclusion request if the <literal>@</>
1679 appears inside quote marks; also, never treat <literal>@</> by itself
1680 as a file inclusion request (Tom)
1684 This prevents erratic behavior if a role or database name starts with
1685 <literal>@</>. If you need to include a file whose path name
1686 contains spaces, you can still do so, but you must write
1687 <literal>@"/path to/file"</> rather than putting the quotes around
1688 the whole construct.
1694 Prevent infinite loop on some platforms if a directory is named as
1695 an inclusion target in <filename>pg_hba.conf</> and related files
1702 Fix possible infinite loop if <function>SSL_read</> or
1703 <function>SSL_write</> fails without setting <varname>errno</> (Tom)
1707 This is reportedly possible with some Windows versions of
1708 <application>openssl</>.
1714 Fix <application>psql</>'s <literal>numericlocale</> option to not
1715 format strings it shouldn't in latex and troff output formats (Heikki)
1721 Make <application>psql</> return the correct exit status (3) when
1722 <literal>ON_ERROR_STOP</> and <literal>--single-transaction</> are
1723 both specified and an error occurs during the implied <command>COMMIT</>
1730 Fix plpgsql failure in one case where a composite column is set to NULL
1737 Fix possible failure when calling PL/Perl functions from PL/PerlU
1738 or vice versa (Tim Bunce)
1744 Add <literal>volatile</> markings in PL/Python to avoid possible
1745 compiler-specific misbehavior (Zdenek Kotala)
1751 Ensure PL/Tcl initializes the Tcl interpreter fully (Tom)
1755 The only known symptom of this oversight is that the Tcl
1756 <literal>clock</> command misbehaves if using Tcl 8.5 or later.
1762 Prevent crash in <filename>contrib/dblink</> when too many key
1763 columns are specified to a <function>dblink_build_sql_*</> function
1764 (Rushabh Lathia, Joe Conway)
1770 Fix assorted crashes in <filename>contrib/xml2</> caused by sloppy
1771 memory management (Tom)
1777 Make building of <filename>contrib/xml2</> more robust on Windows
1784 Fix race condition in Windows signal handling (Radu Ilie)
1788 One known symptom of this bug is that rows in <structname>pg_listener</>
1789 could be dropped under heavy load.
1795 Update time zone data files to <application>tzdata</> release 2010e
1796 for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
1805 <sect1 id="release-8-2-15">
1806 <title>Release 8.2.15</title>
1809 <title>Release date:</title>
1810 <para>2009-12-14</para>
1814 This release contains a variety of fixes from 8.2.14.
1815 For information about new features in the 8.2 major release, see
1816 <xref linkend="release-8-2">.
1820 <title>Migration to Version 8.2.15</title>
1823 A dump/restore is not required for those running 8.2.X.
1824 However, if you are upgrading from a version earlier than 8.2.14,
1825 see <xref linkend="release-8-2-14">.
1831 <title>Changes</title>
1837 Protect against indirect security threats caused by index functions
1838 changing session-local state (Gurjeet Singh, Tom)
1842 This change prevents allegedly-immutable index functions from possibly
1843 subverting a superuser's session (CVE-2009-4136).
1849 Reject SSL certificates containing an embedded null byte in the common
1850 name (CN) field (Magnus)
1854 This prevents unintended matching of a certificate to a server or client
1855 name during SSL validation (CVE-2009-4034).
1861 Fix possible crash during backend-startup-time cache initialization (Tom)
1867 Prevent signals from interrupting <literal>VACUUM</> at unsafe times
1872 This fix prevents a PANIC if a <literal>VACUUM FULL</> is canceled
1873 after it's already committed its tuple movements, as well as transient
1874 errors if a plain <literal>VACUUM</> is interrupted after having
1875 truncated the table.
1881 Fix possible crash due to integer overflow in hash table size
1886 This could occur with extremely large planner estimates for the size of
1887 a hashjoin's result.
1893 Fix very rare crash in <type>inet</>/<type>cidr</> comparisons (Chris
1900 Ensure that shared tuple-level locks held by prepared transactions are
1901 not ignored (Heikki)
1907 Fix premature drop of temporary files used for a cursor that is accessed
1908 within a subtransaction (Heikki)
1914 Fix incorrect logic for GiST index page splits, when the split depends
1915 on a non-first column of the index (Paul Ramsey)
1921 Don't error out if recycling or removing an old WAL file fails at the
1922 end of checkpoint (Heikki)
1926 It's better to treat the problem as non-fatal and allow the checkpoint
1927 to complete. Future checkpoints will retry the removal. Such problems
1928 are not expected in normal operation, but have been seen to be
1929 caused by misdesigned Windows anti-virus and backup software.
1935 Ensure WAL files aren't repeatedly archived on Windows (Heikki)
1939 This is another symptom that could happen if some other process
1940 interfered with deletion of a no-longer-needed file.
1946 Fix PAM password processing to be more robust (Tom)
1950 The previous code is known to fail with the combination of the Linux
1951 <literal>pam_krb5</> PAM module with Microsoft Active Directory as the
1952 domain controller. It might have problems elsewhere too, since it was
1953 making unjustified assumptions about what arguments the PAM stack would
1960 Fix processing of ownership dependencies during <literal>CREATE OR
1961 REPLACE FUNCTION</> (Tom)
1967 Fix bug with calling <literal>plperl</> from <literal>plperlu</> or vice
1972 An error exit from the inner function could result in crashes due to
1973 failure to re-select the correct Perl interpreter for the outer function.
1979 Fix session-lifespan memory leak when a PL/Perl function is redefined
1986 Ensure that Perl arrays are properly converted to
1987 <productname>PostgreSQL</> arrays when returned by a set-returning
1988 PL/Perl function (Andrew Dunstan, Abhijit Menon-Sen)
1992 This worked correctly already for non-set-returning functions.
1998 Fix rare crash in exception processing in PL/Python (Peter)
2004 Ensure <application>psql</>'s flex module is compiled with the correct
2005 system header definitions (Tom)
2009 This fixes build failures on platforms where
2010 <literal>--enable-largefile</> causes incompatible changes in the
2017 Make the postmaster ignore any <literal>application_name</> parameter in
2018 connection request packets, to improve compatibility with future libpq
2025 Update the timezone abbreviation files to match current reality (Joachim
2030 This includes adding <literal>IDT</> and <literal>SGT</> to the default
2031 timezone abbreviation set.
2037 Update time zone data files to <application>tzdata</> release 2009s
2038 for DST law changes in Antarctica, Argentina, Bangladesh, Fiji,
2039 Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical
2040 corrections for Hong Kong.
2049 <sect1 id="release-8-2-14">
2050 <title>Release 8.2.14</title>
2053 <title>Release date:</title>
2054 <para>2009-09-09</para>
2058 This release contains a variety of fixes from 8.2.13.
2059 For information about new features in the 8.2 major release, see
2060 <xref linkend="release-8-2">.
2064 <title>Migration to Version 8.2.14</title>
2067 A dump/restore is not required for those running 8.2.X.
2068 However, if you have any hash indexes on <type>interval</> columns,
2069 you must <command>REINDEX</> them after updating to 8.2.14.
2070 Also, if you are upgrading from a version earlier than 8.2.11,
2071 see <xref linkend="release-8-2-11">.
2077 <title>Changes</title>
2083 Force WAL segment switch during <function>pg_start_backup()</>
2088 This avoids corner cases that could render a base backup unusable.
2094 Disallow <command>RESET ROLE</> and <command>RESET SESSION
2095 AUTHORIZATION</> inside security-definer functions (Tom, Heikki)
2099 This covers a case that was missed in the previous patch that
2100 disallowed <command>SET ROLE</> and <command>SET SESSION
2101 AUTHORIZATION</> inside security-definer functions.
2108 Make <command>LOAD</> of an already-loaded loadable module
2113 Formerly, <command>LOAD</> would attempt to unload and re-load the
2114 module, but this is unsafe and not all that useful.
2120 Disallow empty passwords during LDAP authentication (Magnus)
2126 Fix handling of sub-SELECTs appearing in the arguments of
2127 an outer-level aggregate function (Tom)
2133 Fix bugs associated with fetching a whole-row value from the
2134 output of a Sort or Materialize plan node (Tom)
2140 Revert planner change that disabled partial-index and constraint
2141 exclusion optimizations when there were more than 100 clauses in
2142 an AND or OR list (Tom)
2148 Fix hash calculation for data type <type>interval</> (Tom)
2152 This corrects wrong results for hash joins on interval values.
2153 It also changes the contents of hash indexes on interval columns.
2154 If you have any such indexes, you must <command>REINDEX</> them
2161 Treat <function>to_char(..., 'TH')</> as an uppercase ordinal
2162 suffix with <literal>'HH'</>/<literal>'HH12'</> (Heikki)
2166 It was previously handled as <literal>'th'</> (lowercase).
2172 Fix overflow for <literal>INTERVAL '<replaceable>x</> ms'</literal>
2173 when <replaceable>x</> is more than 2 million and integer
2174 datetimes are in use (Alex Hunsaker)
2180 Fix calculation of distance between a point and a line segment (Tom)
2184 This led to incorrect results from a number of geometric operators.
2190 Fix <type>money</> data type to work in locales where currency
2191 amounts have no fractional digits, e.g. Japan (Itagaki Takahiro)
2197 Properly round datetime input like
2198 <literal>00:12:57.9999999999999999999999999999</> (Tom)
2204 Fix poor choice of page split point in GiST R-tree operator classes
2211 Avoid performance degradation in bulk inserts into GIN indexes
2212 when the input values are (nearly) in sorted order (Tom)
2218 Correctly enforce NOT NULL domain constraints in some contexts in
2225 Fix portability issues in plperl initialization (Andrew Dunstan)
2231 Fix <application>pg_ctl</> to not go into an infinite loop if
2232 <filename>postgresql.conf</> is empty (Jeff Davis)
2238 Make <filename>contrib/hstore</> throw an error when a key or
2239 value is too long to fit in its data structure, rather than
2240 silently truncating it (Andrew Gierth)
2246 Fix <filename>contrib/xml2</>'s <function>xslt_process()</> to
2247 properly handle the maximum number of parameters (twenty) (Tom)
2253 Improve robustness of <application>libpq</>'s code to recover
2254 from errors during <command>COPY FROM STDIN</> (Tom)
2260 Avoid including conflicting readline and editline header files
2261 when both libraries are installed (Zdenek Kotala)
2267 Update time zone data files to <application>tzdata</> release 2009l
2268 for DST law changes in Bangladesh, Egypt, Jordan, Pakistan,
2269 Argentina/San_Luis, Cuba, Jordan (historical correction only),
2270 Mauritius, Morocco, Palestine, Syria, Tunisia.
2279 <sect1 id="release-8-2-13">
2280 <title>Release 8.2.13</title>
2283 <title>Release date:</title>
2284 <para>2009-03-16</para>
2288 This release contains a variety of fixes from 8.2.12.
2289 For information about new features in the 8.2 major release, see
2290 <xref linkend="release-8-2">.
2294 <title>Migration to Version 8.2.13</title>
2297 A dump/restore is not required for those running 8.2.X.
2298 However, if you are upgrading from a version earlier than 8.2.11,
2299 see <xref linkend="release-8-2-11">.
2305 <title>Changes</title>
2311 Prevent error recursion crashes when encoding conversion fails (Tom)
2315 This change extends fixes made in the last two minor releases for
2316 related failure scenarios. The previous fixes were narrowly tailored
2317 for the original problem reports, but we have now recognized that
2318 <emphasis>any</> error thrown by an encoding conversion function could
2319 potentially lead to infinite recursion while trying to report the
2320 error. The solution therefore is to disable translation and encoding
2321 conversion and report the plain-ASCII form of any error message,
2322 if we find we have gotten into a recursive error reporting situation.
2329 Disallow <command>CREATE CONVERSION</> with the wrong encodings
2330 for the specified conversion function (Heikki)
2334 This prevents one possible scenario for encoding conversion failure.
2335 The previous change is a backstop to guard against other kinds of
2336 failures in the same area.
2342 Fix core dump when <function>to_char()</> is given format codes that
2343 are inappropriate for the type of the data argument (Tom)
2349 Fix possible failure in <filename>contrib/tsearch2</> when C locale is
2350 used with a multi-byte encoding (Teodor)
2354 Crashes were possible on platforms where <type>wchar_t</> is narrower
2355 than <type>int</>; Windows in particular.
2361 Fix extreme inefficiency in <filename>contrib/tsearch2</> parser's
2362 handling of an email-like string containing multiple <literal>@</>
2369 Fix decompilation of <literal>CASE WHEN</> with an implicit coercion
2374 This mistake could lead to Assert failures in an Assert-enabled build,
2375 or an <quote>unexpected CASE WHEN clause</> error message in other
2376 cases, when trying to examine or dump a view.
2382 Fix possible misassignment of the owner of a TOAST table's rowtype (Tom)
2386 If <command>CLUSTER</> or a rewriting variant of <command>ALTER TABLE</>
2387 were executed by someone other than the table owner, the
2388 <structname>pg_type</> entry for the table's TOAST table would end up
2389 marked as owned by that someone. This caused no immediate problems,
2390 since the permissions on the TOAST rowtype aren't examined by any
2391 ordinary database operation. However, it could lead to unexpected
2392 failures if one later tried to drop the role that issued the command
2393 (in 8.1 or 8.2), or <quote>owner of data type appears to be invalid</>
2394 warnings from <application>pg_dump</> after having done so (in 8.3).
2400 Fix PL/pgSQL to not treat <literal>INTO</> after <command>INSERT</> as
2401 an INTO-variables clause anywhere in the string, not only at the start;
2402 in particular, don't fail for <command>INSERT INTO</> within
2403 <command>CREATE RULE</> (Tom)
2409 Clean up PL/pgSQL error status variables fully at block exit
2410 (Ashesh Vashi and Dave Page)
2414 This is not a problem for PL/pgSQL itself, but the omission could cause
2415 the PL/pgSQL Debugger to crash while examining the state of a function.
2421 Retry failed calls to <function>CallNamedPipe()</> on Windows
2422 (Steve Marshall, Magnus)
2426 It appears that this function can sometimes fail transiently;
2427 we previously treated any failure as a hard error, which could
2428 confuse <command>LISTEN</>/<command>NOTIFY</> as well as other
2435 Add <literal>MUST</> (Mauritius Island Summer Time) to the default list
2436 of known timezone abbreviations (Xavier Bugaud)
2445 <sect1 id="release-8-2-12">
2446 <title>Release 8.2.12</title>
2449 <title>Release date:</title>
2450 <para>2009-02-02</para>
2454 This release contains a variety of fixes from 8.2.11.
2455 For information about new features in the 8.2 major release, see
2456 <xref linkend="release-8-2">.
2460 <title>Migration to Version 8.2.12</title>
2463 A dump/restore is not required for those running 8.2.X.
2464 However, if you are upgrading from a version earlier than 8.2.11,
2465 see <xref linkend="release-8-2-11">.
2471 <title>Changes</title>
2477 Improve handling of URLs in <function>headline()</> function (Teodor)
2483 Improve handling of overlength headlines in <function>headline()</>
2490 Prevent possible Assert failure or misconversion if an encoding
2491 conversion is created with the wrong conversion function for the
2492 specified pair of encodings (Tom, Heikki)
2498 Fix possible Assert failure if a statement executed in PL/pgSQL is
2499 rewritten into another kind of statement, for example if an
2500 <command>INSERT</> is rewritten into an <command>UPDATE</> (Heikki)
2506 Ensure that a snapshot is available to datatype input functions (Tom)
2510 This primarily affects domains that are declared with <literal>CHECK</>
2511 constraints involving user-defined stable or immutable functions. Such
2512 functions typically fail if no snapshot has been set.
2518 Make it safer for SPI-using functions to be used within datatype I/O;
2519 in particular, to be used in domain check constraints (Tom)
2525 Avoid unnecessary locking of small tables in <command>VACUUM</>
2532 Fix a problem that made <literal>UPDATE RETURNING tableoid</>
2533 return zero instead of the correct OID (Tom)
2539 Fix planner misestimation of selectivity when transitive equality
2540 is applied to an outer-join clause (Tom)
2544 This could result in bad plans for queries like
2545 <literal>... from a left join b on a.a1 = b.b1 where a.a1 = 42 ...</>
2551 Improve optimizer's handling of long <literal>IN</> lists (Tom)
2555 This change avoids wasting large amounts of time on such lists
2556 when constraint exclusion is enabled.
2562 Ensure that the contents of a holdable cursor don't depend on the
2563 contents of TOAST tables (Tom)
2567 Previously, large field values in a cursor result might be represented
2568 as TOAST pointers, which would fail if the referenced table got dropped
2569 before the cursor is read, or if the large value is deleted and then
2570 vacuumed away. This cannot happen with an ordinary cursor,
2571 but it could with a cursor that is held past its creating transaction.
2577 Fix memory leak when a set-returning function is terminated without
2578 reading its whole result (Tom)
2584 Fix <filename>contrib/dblink</>'s
2585 <function>dblink_get_result(text,bool)</> function (Joe)
2591 Fix possible garbage output from <filename>contrib/sslinfo</> functions
2598 Fix <application>configure</> script to properly report failure when
2599 unable to obtain linkage information for PL/Perl (Andrew)
2605 Make all documentation reference <literal>pgsql-bugs</> and/or
2606 <literal>pgsql-hackers</> as appropriate, instead of the
2607 now-decommissioned <literal>pgsql-ports</> and <literal>pgsql-patches</>
2614 Update time zone data files to <application>tzdata</> release 2009a (for
2615 Kathmandu and historical DST corrections in Switzerland, Cuba)
2624 <sect1 id="release-8-2-11">
2625 <title>Release 8.2.11</title>
2628 <title>Release date:</title>
2629 <para>2008-11-03</para>
2633 This release contains a variety of fixes from 8.2.10.
2634 For information about new features in the 8.2 major release, see
2635 <xref linkend="release-8-2">.
2639 <title>Migration to Version 8.2.11</title>
2642 A dump/restore is not required for those running 8.2.X.
2643 However, if you are upgrading from a version earlier than 8.2.7,
2644 see <xref linkend="release-8-2-7">. Also, if you were running a previous
2645 8.2.X release, it is recommended to <command>REINDEX</> all GiST
2646 indexes after the upgrade.
2652 <title>Changes</title>
2658 Fix GiST index corruption due to marking the wrong index entry
2659 <quote>dead</> after a deletion (Teodor)
2663 This would result in index searches failing to find rows they
2664 should have found. Corrupted indexes can be fixed with
2665 <command>REINDEX</>.
2671 Fix backend crash when the client encoding cannot represent a localized
2676 We have addressed similar issues before, but it would still fail if
2677 the <quote>character has no equivalent</> message itself couldn't
2678 be converted. The fix is to disable localization and send the plain
2679 ASCII error message when we detect such a situation.
2685 Fix possible crash when deeply nested functions are invoked from
2692 Improve optimization of <replaceable>expression</> <literal>IN</>
2693 (<replaceable>expression-list</>) queries (Tom, per an idea from Robert
2698 Cases in which there are query variables on the right-hand side had been
2699 handled less efficiently in 8.2.x and 8.3.x than in prior versions.
2700 The fix restores 8.1 behavior for such cases.
2706 Fix mis-expansion of rule queries when a sub-<literal>SELECT</> appears
2707 in a function call in <literal>FROM</>, a multi-row <literal>VALUES</>
2708 list, or a <literal>RETURNING</> list (Tom)
2712 The usual symptom of this problem is an <quote>unrecognized node type</>
2719 Fix memory leak during rescan of a hashed aggregation plan (Neil)
2725 Ensure an error is reported when a newly-defined PL/pgSQL trigger
2726 function is invoked as a normal function (Tom)
2732 Prevent possible collision of <structfield>relfilenode</> numbers
2733 when moving a table to another tablespace with <command>ALTER SET
2734 TABLESPACE</> (Heikki)
2738 The command tried to re-use the existing filename, instead of
2739 picking one that is known unused in the destination directory.
2745 Fix incorrect tsearch2 headline generation when single query
2746 item matches first word of text (Sushant Sinha)
2752 Fix improper display of fractional seconds in interval values when
2753 using a non-ISO datestyle in an <option>--enable-integer-datetimes</>
2760 Ensure <function>SPI_getvalue</> and <function>SPI_getbinval</>
2761 behave correctly when the passed tuple and tuple descriptor have
2762 different numbers of columns (Tom)
2766 This situation is normal when a table has had columns added or removed,
2767 but these two functions didn't handle it properly.
2768 The only likely consequence is an incorrect error indication.
2774 Fix <application>ecpg</>'s parsing of <command>CREATE ROLE</> (Michael)
2780 Fix recent breakage of <literal>pg_ctl restart</> (Tom)
2786 Ensure <filename>pg_control</> is opened in binary mode
2791 <application>pg_controldata</> and <application>pg_resetxlog</>
2792 did this incorrectly, and so could fail on Windows.
2798 Update time zone data files to <application>tzdata</> release 2008i (for
2799 DST law changes in Argentina, Brazil, Mauritius, Syria)
2808 <sect1 id="release-8-2-10">
2809 <title>Release 8.2.10</title>
2812 <title>Release date:</title>
2813 <para>2008-09-22</para>
2817 This release contains a variety of fixes from 8.2.9.
2818 For information about new features in the 8.2 major release, see
2819 <xref linkend="release-8-2">.
2823 <title>Migration to Version 8.2.10</title>
2826 A dump/restore is not required for those running 8.2.X.
2827 However, if you are upgrading from a version earlier than 8.2.7,
2828 see <xref linkend="release-8-2-7">.
2834 <title>Changes</title>
2840 Fix bug in btree WAL recovery code (Heikki)
2844 Recovery failed if the WAL ended partway through a page split operation.
2850 Fix potential miscalculation of <structfield>datfrozenxid</> (Alvaro)
2854 This error may explain some recent reports of failure to remove old
2855 <structname>pg_clog</> data.
2861 Widen local lock counters from 32 to 64 bits (Tom)
2865 This responds to reports that the counters could overflow in
2866 sufficiently long transactions, leading to unexpected <quote>lock is
2867 already held</> errors.
2873 Fix possible duplicate output of tuples during a GiST index scan (Teodor)
2879 Fix missed permissions checks when a view contains a simple
2880 <literal>UNION ALL</> construct (Heikki)
2884 Permissions for the referenced tables were checked properly, but not
2885 permissions for the view itself.
2891 Add checks in executor startup to ensure that the tuples produced by an
2892 <command>INSERT</> or <command>UPDATE</> will match the target table's
2893 current rowtype (Tom)
2897 <command>ALTER COLUMN TYPE</>, followed by re-use of a previously
2898 cached plan, could produce this type of situation. The check protects
2899 against data corruption and/or crashes that could ensue.
2905 Fix possible repeated drops during <command>DROP OWNED</> (Tom)
2909 This would typically result in strange errors such as <quote>cache
2910 lookup failed for relation NNN</>.
2916 Fix <literal>AT TIME ZONE</> to first try to interpret its timezone
2917 argument as a timezone abbreviation, and only try it as a full timezone
2918 name if that fails, rather than the other way around as formerly (Tom)
2922 The timestamp input functions have always resolved ambiguous zone names
2923 in this order. Making <literal>AT TIME ZONE</> do so as well improves
2924 consistency, and fixes a compatibility bug introduced in 8.1:
2925 in ambiguous cases we now behave the same as 8.0 and before did,
2926 since in the older versions <literal>AT TIME ZONE</> accepted
2927 <emphasis>only</> abbreviations.
2933 Fix datetime input functions to correctly detect integer overflow when
2934 running on a 64-bit platform (Tom)
2940 Prevent integer overflows during units conversion when displaying a
2941 configuration parameter that has units (Tom)
2947 Improve performance of writing very long log messages to syslog (Tom)
2953 Allow spaces in the suffix part of an LDAP URL in
2954 <filename>pg_hba.conf</> (Tom)
2960 Fix bug in backwards scanning of a cursor on a <literal>SELECT DISTINCT
2967 Fix planner bug with nested sub-select expressions (Tom)
2971 If the outer sub-select has no direct dependency on the parent query,
2972 but the inner one does, the outer value might not get recalculated
2973 for new parent query rows.
2979 Fix planner to estimate that <literal>GROUP BY</> expressions yielding
2980 boolean results always result in two groups, regardless of the
2981 expressions' contents (Tom)
2985 This is very substantially more accurate than the regular <literal>GROUP
2986 BY</> estimate for certain boolean tests like <replaceable>col</>
2987 <literal>IS NULL</>.
2993 Fix PL/pgSQL to not fail when a <literal>FOR</> loop's target variable
2994 is a record containing composite-type fields (Tom)
3000 Fix PL/Tcl to behave correctly with Tcl 8.5, and to be more careful
3001 about the encoding of data sent to or from Tcl (Tom)
3007 On Windows, work around a Microsoft bug by preventing
3008 <application>libpq</> from trying to send more than 64kB per system call
3015 Improve <application>pg_dump</> and <application>pg_restore</>'s
3016 error reporting after failure to send a SQL command (Tom)
3022 Fix <application>pg_ctl</> to properly preserve postmaster
3023 command-line arguments across a <literal>restart</> (Bruce)
3029 Update time zone data files to <application>tzdata</> release 2008f (for
3030 DST law changes in Argentina, Bahamas, Brazil, Mauritius, Morocco,
3031 Pakistan, Palestine, and Paraguay)
3040 <sect1 id="release-8-2-9">
3041 <title>Release 8.2.9</title>
3044 <title>Release date:</title>
3045 <para>2008-06-12</para>
3049 This release contains one serious and one minor bug fix over 8.2.8.
3050 For information about new features in the 8.2 major release, see
3051 <xref linkend="release-8-2">.
3055 <title>Migration to Version 8.2.9</title>
3058 A dump/restore is not required for those running 8.2.X.
3059 However, if you are upgrading from a version earlier than 8.2.7,
3060 see <xref linkend="release-8-2-7">.
3066 <title>Changes</title>
3072 Make <function>pg_get_ruledef()</> parenthesize negative constants (Tom)
3076 Before this fix, a negative constant in a view or rule might be dumped
3077 as, say, <literal>-42::integer</>, which is subtly incorrect: it should
3078 be <literal>(-42)::integer</> due to operator precedence rules.
3079 Usually this would make little difference, but it could interact with
3080 another recent patch to cause
3081 <productname>PostgreSQL</> to reject what had been a valid
3082 <command>SELECT DISTINCT</> view query. Since this could result in
3083 <application>pg_dump</> output failing to reload, it is being treated
3084 as a high-priority fix. The only released versions in which dump
3085 output is actually incorrect are 8.3.1 and 8.2.7.
3091 Make <command>ALTER AGGREGATE ... OWNER TO</> update
3092 <structname>pg_shdepend</> (Tom)
3096 This oversight could lead to problems if the aggregate was later
3097 involved in a <command>DROP OWNED</> or <command>REASSIGN OWNED</>
3107 <sect1 id="release-8-2-8">
3108 <title>Release 8.2.8</title>
3111 <title>Release date:</title>
3112 <para>never released</para>
3116 This release contains a variety of fixes from 8.2.7.
3117 For information about new features in the 8.2 major release, see
3118 <xref linkend="release-8-2">.
3122 <title>Migration to Version 8.2.8</title>
3125 A dump/restore is not required for those running 8.2.X.
3126 However, if you are upgrading from a version earlier than 8.2.7,
3127 see <xref linkend="release-8-2-7">.
3133 <title>Changes</title>
3139 Fix <literal>ERRORDATA_STACK_SIZE exceeded</literal> crash that
3140 occurred on Windows when using UTF-8 database encoding and a different
3141 client encoding (Tom)
3147 Fix <command>ALTER TABLE ADD COLUMN ... PRIMARY KEY</> so that the new
3148 column is correctly checked to see if it's been initialized to all
3149 non-nulls (Brendan Jurd)
3153 Previous versions neglected to check this requirement at all.
3159 Fix possible <command>CREATE TABLE</> failure when inheriting the
3160 <quote>same</> constraint from multiple parent relations that
3161 inherited that constraint from a common ancestor (Tom)
3167 Fix <function>pg_get_ruledef()</> to show the alias, if any, attached
3168 to the target table of an <command>UPDATE</> or <command>DELETE</>
3175 Fix GIN bug that could result in a <literal>too many LWLocks
3176 taken</literal> failure (Teodor)
3182 Avoid possible crash when decompressing corrupted data
3189 Repair two places where SIGTERM exit of a backend could leave corrupted
3190 state in shared memory (Tom)
3194 Neither case is very important if SIGTERM is used to shut down the
3195 whole database cluster together, but there was a problem if someone
3196 tried to SIGTERM individual backends.
3202 Fix conversions between ISO-8859-5 and other encodings to handle
3203 Cyrillic <quote>Yo</> characters (<literal>e</> and <literal>E</> with
3204 two dots) (Sergey Burladyan)
3210 Fix several datatype input functions, notably <function>array_in()</>,
3211 that were allowing unused bytes in their results to contain
3212 uninitialized, unpredictable values (Tom)
3216 This could lead to failures in which two apparently identical literal
3217 values were not seen as equal, resulting in the parser complaining
3218 about unmatched <literal>ORDER BY</> and <literal>DISTINCT</>
3225 Fix a corner case in regular-expression substring matching
3226 (<literal>substring(<replaceable>string</> from
3227 <replaceable>pattern</>)</literal>) (Tom)
3231 The problem occurs when there is a match to the pattern overall but
3232 the user has specified a parenthesized subexpression and that
3233 subexpression hasn't got a match. An example is
3234 <literal>substring('foo' from 'foo(bar)?')</>.
3235 This should return NULL, since <literal>(bar)</> isn't matched, but
3236 it was mistakenly returning the whole-pattern match instead (ie,
3243 Update time zone data files to <application>tzdata</> release 2008c (for
3244 DST law changes in Morocco, Iraq, Choibalsan, Pakistan, Syria, Cuba, and
3251 Fix incorrect result from <application>ecpg</>'s
3252 <function>PGTYPEStimestamp_sub()</> function (Michael)
3258 Fix broken GiST comparison function for <filename>contrib/tsearch2</>'s
3259 <type>tsquery</> type (Teodor)
3265 Fix possible crashes in <filename>contrib/cube</> functions (Tom)
3271 Fix core dump in <filename>contrib/xml2</>'s
3272 <function>xpath_table()</> function when the input query returns a
3279 Fix <filename>contrib/xml2</>'s makefile to not override
3280 <literal>CFLAGS</> (Tom)
3286 Fix <literal>DatumGetBool</> macro to not fail with <application>gcc</>
3291 This problem affects <quote>old style</> (V0) C functions that
3292 return boolean. The fix is already in 8.3, but the need to
3293 back-patch it was not realized at the time.
3302 <sect1 id="release-8-2-7">
3303 <title>Release 8.2.7</title>
3306 <title>Release date:</title>
3307 <para>2008-03-17</para>
3311 This release contains a variety of fixes from 8.2.6.
3312 For information about new features in the 8.2 major release, see
3313 <xref linkend="release-8-2">.
3317 <title>Migration to Version 8.2.7</title>
3320 A dump/restore is not required for those running 8.2.X.
3321 However, you might need to <command>REINDEX</> indexes on textual
3322 columns after updating, if you are affected by the Windows locale
3323 issue described below.
3329 <title>Changes</title>
3335 Fix character string comparison for Windows locales that consider
3336 different character combinations as equal (Tom)
3340 This fix applies only on Windows and only when using UTF-8
3341 database encoding. The same fix was made for all other cases
3342 over two years ago, but Windows with UTF-8 uses a separate code
3343 path that was not updated. If you are using a locale that
3344 considers some non-identical strings as equal, you may need to
3345 <command>REINDEX</> to fix existing indexes on textual columns.
3351 Repair potential deadlock between concurrent <command>VACUUM FULL</>
3352 operations on different system catalogs (Tom)
3358 Fix longstanding <command>LISTEN</>/<command>NOTIFY</>
3359 race condition (Tom)
3363 In rare cases a session that had just executed a
3364 <command>LISTEN</> might not get a notification, even though
3365 one would be expected because the concurrent transaction executing
3366 <command>NOTIFY</> was observed to commit later.
3370 A side effect of the fix is that a transaction that has executed
3371 a not-yet-committed <command>LISTEN</> command will not see any
3372 row in <structname>pg_listener</> for the <command>LISTEN</>,
3373 should it choose to look; formerly it would have. This behavior
3374 was never documented one way or the other, but it is possible that
3375 some applications depend on the old behavior.
3381 Disallow <command>LISTEN</> and <command>UNLISTEN</> within a
3382 prepared transaction (Tom)
3386 This was formerly allowed but trying to do it had various unpleasant
3387 consequences, notably that the originating backend could not exit
3388 as long as an <command>UNLISTEN</> remained uncommitted.
3394 Disallow dropping a temporary table within a
3395 prepared transaction (Heikki)
3399 This was correctly disallowed by 8.1, but the check was inadvertently
3406 Fix rare crash when an error occurs during a query using a hash index
3413 Fix memory leaks in certain usages of set-returning functions (Neil)
3419 Fix input of datetime values for February 29 in years BC (Tom)
3423 The former coding was mistaken about which years were leap years.
3429 Fix <quote>unrecognized node type</> error in some variants of
3430 <command>ALTER OWNER</> (Tom)
3436 Ensure <structname>pg_stat_activity</>.<structfield>waiting</> flag
3437 is cleared when a lock wait is aborted (Tom)
3443 Fix handling of process permissions on Windows Vista (Dave, Magnus)
3447 In particular, this fix allows starting the server as the Administrator
3454 Update time zone data files to <application>tzdata</> release 2008a
3455 (in particular, recent Chile changes); adjust timezone abbreviation
3456 <literal>VET</> (Venezuela) to mean UTC-4:30, not UTC-4:00 (Tom)
3462 Fix <application>pg_ctl</> to correctly extract the postmaster's port
3463 number from command-line options (Itagaki Takahiro, Tom)
3467 Previously, <literal>pg_ctl start -w</> could try to contact the
3468 postmaster on the wrong port, leading to bogus reports of startup
3475 Use <option>-fwrapv</> to defend against possible misoptimization
3476 in recent <application>gcc</> versions (Tom)
3480 This is known to be necessary when building <productname>PostgreSQL</>
3481 with <application>gcc</> 4.3 or later.
3488 Correctly enforce <varname>statement_timeout</> values longer
3489 than <literal>INT_MAX</> microseconds (about 35 minutes) (Tom)
3493 This bug affects only builds with <option>--enable-integer-datetimes</>.
3499 Fix <quote>unexpected PARAM_SUBLINK ID</> planner error when
3500 constant-folding simplifies a sub-select (Tom)
3506 Fix logical errors in constraint-exclusion handling of <literal>IS
3507 NULL</> and <literal>NOT</> expressions (Tom)
3511 The planner would sometimes exclude partitions that should not
3512 have been excluded because of the possibility of NULL results.
3518 Fix another cause of <quote>failed to build any N-way joins</>
3519 planner errors (Tom)
3523 This could happen in cases where a clauseless join needed to be
3524 forced before a join clause could be exploited.
3530 Fix incorrect constant propagation in outer-join planning (Tom)
3534 The planner could sometimes incorrectly conclude that a variable
3535 could be constrained to be equal to a constant, leading
3536 to wrong query results.
3542 Fix display of constant expressions in <literal>ORDER BY</>
3543 and <literal>GROUP BY</> (Tom)
3547 An explicitly casted constant would be shown incorrectly. This could
3548 for example lead to corruption of a view definition during
3555 Fix <application>libpq</> to handle NOTICE messages correctly
3556 during COPY OUT (Tom)
3560 This failure has only been observed to occur when a user-defined
3561 datatype's output routine issues a NOTICE, but there is no
3562 guarantee it couldn't happen due to other causes.
3571 <sect1 id="release-8-2-6">
3572 <title>Release 8.2.6</title>
3575 <title>Release date:</title>
3576 <para>2008-01-07</para>
3580 This release contains a variety of fixes from 8.2.5,
3581 including fixes for significant security issues.
3582 For information about new features in the 8.2 major release, see
3583 <xref linkend="release-8-2">.
3587 <title>Migration to Version 8.2.6</title>
3590 A dump/restore is not required for those running 8.2.X.
3596 <title>Changes</title>
3602 Prevent functions in indexes from executing with the privileges of
3603 the user running <command>VACUUM</>, <command>ANALYZE</>, etc (Tom)
3607 Functions used in index expressions and partial-index
3608 predicates are evaluated whenever a new table entry is made. It has
3609 long been understood that this poses a risk of trojan-horse code
3610 execution if one modifies a table owned by an untrustworthy user.
3611 (Note that triggers, defaults, check constraints, etc. pose the
3612 same type of risk.) But functions in indexes pose extra danger
3613 because they will be executed by routine maintenance operations
3614 such as <command>VACUUM FULL</>, which are commonly performed
3615 automatically under a superuser account. For example, a nefarious user
3616 can execute code with superuser privileges by setting up a
3617 trojan-horse index definition and waiting for the next routine vacuum.
3618 The fix arranges for standard maintenance operations
3619 (including <command>VACUUM</>, <command>ANALYZE</>, <command>REINDEX</>,
3620 and <command>CLUSTER</>) to execute as the table owner rather than
3621 the calling user, using the same privilege-switching mechanism already
3622 used for <literal>SECURITY DEFINER</> functions. To prevent bypassing
3623 this security measure, execution of <command>SET SESSION
3624 AUTHORIZATION</> and <command>SET ROLE</> is now forbidden within a
3625 <literal>SECURITY DEFINER</> context. (CVE-2007-6600)
3631 Repair assorted bugs in the regular-expression package (Tom, Will Drewry)
3635 Suitably crafted regular-expression patterns could cause crashes,
3636 infinite or near-infinite looping, and/or massive memory consumption,
3637 all of which pose denial-of-service hazards for applications that
3638 accept regex search patterns from untrustworthy sources.
3639 (CVE-2007-4769, CVE-2007-4772, CVE-2007-6067)
3645 Require non-superusers who use <filename>/contrib/dblink</> to use only
3646 password authentication, as a security measure (Joe)
3650 The fix that appeared for this in 8.2.5 was incomplete, as it plugged
3651 the hole for only some <filename>dblink</> functions. (CVE-2007-6601,
3658 Fix bugs in WAL replay for GIN indexes (Teodor)
3664 Fix GIN index build to work properly when
3665 <varname>maintenance_work_mem</> is 4GB or more (Tom)
3671 Update time zone data files to <application>tzdata</> release 2007k
3672 (in particular, recent Argentina changes) (Tom)
3678 Improve planner's handling of LIKE/regex estimation in non-C locales
3685 Fix planning-speed problem for deep outer-join nests, as well as
3686 possible poor choice of join order (Tom)
3692 Fix planner failure in some cases of <literal>WHERE false AND var IN
3693 (SELECT ...)</> (Tom)
3699 Make <command>CREATE TABLE ... SERIAL</> and
3700 <command>ALTER SEQUENCE ... OWNED BY</> not change the
3701 <function>currval()</> state of the sequence (Tom)
3707 Preserve the tablespace and storage parameters of indexes that are
3708 rebuilt by <command>ALTER TABLE ... ALTER COLUMN TYPE</> (Tom)
3714 Make archive recovery always start a new WAL timeline, rather than only
3715 when a recovery stop time was used (Simon)
3719 This avoids a corner-case risk of trying to overwrite an existing
3720 archived copy of the last WAL segment, and seems simpler and cleaner
3721 than the original definition.
3727 Make <command>VACUUM</> not use all of <varname>maintenance_work_mem</>
3728 when the table is too small for it to be useful (Alvaro)
3734 Fix potential crash in <function>translate()</> when using a multibyte
3735 database encoding (Tom)
3741 Make <function>corr()</> return the correct result for negative
3742 correlation values (Neil)
3748 Fix overflow in <literal>extract(epoch from interval)</> for intervals
3749 exceeding 68 years (Tom)
3755 Fix PL/Perl to not fail when a UTF-8 regular expression is used
3756 in a trusted function (Andrew)
3762 Fix PL/Perl to cope when platform's Perl defines type <literal>bool</>
3763 as <literal>int</> rather than <literal>char</> (Tom)
3767 While this could theoretically happen anywhere, no standard build of
3768 Perl did things this way ... until <productname>macOS</> 10.5.
3774 Fix PL/Python to work correctly with Python 2.5 on 64-bit machines
3781 Fix PL/Python to not crash on long exception messages (Alvaro)
3787 Fix <application>pg_dump</> to correctly handle inheritance child tables
3788 that have default expressions different from their parent's (Tom)
3794 Fix <application>libpq</> crash when <varname>PGPASSFILE</> refers
3795 to a file that is not a plain file (Martin Pitt)
3801 <application>ecpg</> parser fixes (Michael)
3807 Make <filename>contrib/pgcrypto</> defend against
3808 <application>OpenSSL</> libraries that fail on keys longer than 128
3809 bits; which is the case at least on some Solaris versions (Marko Kreen)
3815 Make <filename>contrib/tablefunc</>'s <function>crosstab()</> handle
3816 NULL rowid as a category in its own right, rather than crashing (Joe)
3822 Fix <type>tsvector</> and <type>tsquery</> output routines to
3823 escape backslashes correctly (Teodor, Bruce)
3829 Fix crash of <function>to_tsvector()</> on huge input strings (Teodor)
3835 Require a specific version of <productname>Autoconf</> to be used
3836 when re-generating the <command>configure</> script (Peter)
3840 This affects developers and packagers only. The change was made
3841 to prevent accidental use of untested combinations of
3842 <productname>Autoconf</> and <productname>PostgreSQL</> versions.
3843 You can remove the version check if you really want to use a
3844 different <productname>Autoconf</> version, but it's
3845 your responsibility whether the result works or not.
3851 Update <function>gettimeofday</> configuration check so that
3852 <productname>PostgreSQL</> can be built on newer versions of
3853 <productname>MinGW</> (Magnus)
3862 <sect1 id="release-8-2-5">
3863 <title>Release 8.2.5</title>
3866 <title>Release date:</title>
3867 <para>2007-09-17</para>
3871 This release contains a variety of fixes from 8.2.4.
3872 For information about new features in the 8.2 major release, see
3873 <xref linkend="release-8-2">.
3877 <title>Migration to Version 8.2.5</title>
3880 A dump/restore is not required for those running 8.2.X.
3886 <title>Changes</title>
3892 Prevent index corruption when a transaction inserts rows and
3893 then aborts close to the end of a concurrent <command>VACUUM</>
3894 on the same table (Tom)
3900 Fix <literal>ALTER DOMAIN ADD CONSTRAINT</> for cases involving
3901 domains over domains (Tom)
3907 Make <command>CREATE DOMAIN ... DEFAULT NULL</> work properly (Tom)
3913 Fix some planner problems with outer joins, notably poor
3914 size estimation for <literal>t1 LEFT JOIN t2 WHERE t2.col IS NULL</>
3921 Allow the <type>interval</> data type to accept input consisting only of
3922 milliseconds or microseconds (Neil)
3928 Allow timezone name to appear before the year in <type>timestamp</> input (Tom)
3934 Fixes for <acronym>GIN</> indexes used by <filename>/contrib/tsearch2</> (Teodor)
3940 Speed up rtree index insertion (Teodor)
3946 Fix excessive logging of <acronym>SSL</> error messages (Tom)
3952 Fix logging so that log messages are never interleaved when using
3953 the syslogger process (Andrew)
3959 Fix crash when <varname>log_min_error_statement</> logging runs out
3966 Fix incorrect handling of some foreign-key corner cases (Tom)
3972 Fix <function>stddev_pop(numeric)</> and <function>var_pop(numeric)</> (Tom)
3978 Prevent <command>REINDEX</> and <command>CLUSTER</> from failing
3979 due to attempting to process temporary tables of other sessions (Alvaro)
3985 Update the time zone database rules, particularly New Zealand's upcoming changes (Tom)
3991 Windows socket and semaphore improvements (Magnus)
3997 Make <command>pg_ctl -w</> work properly in Windows service mode (Dave Page)
4003 Fix memory allocation bug when using <application>MIT Kerberos</> on Windows (Magnus)
4009 Suppress timezone name (<literal>%Z</>) in log timestamps on Windows
4010 because of possible encoding mismatches (Tom)
4016 Require non-superusers who use <filename>/contrib/dblink</> to use only
4017 password authentication, as a security measure (Joe)
4023 Restrict <filename>/contrib/pgstattuple</> functions to superusers, for security reasons (Tom)
4029 Do not let <filename>/contrib/intarray</> try to make its GIN opclass
4030 the default (this caused problems at dump/restore) (Tom)
4039 <sect1 id="release-8-2-4">
4040 <title>Release 8.2.4</title>
4043 <title>Release date:</title>
4044 <para>2007-04-23</para>
4048 This release contains a variety of fixes from 8.2.3,
4049 including a security fix.
4050 For information about new features in the 8.2 major release, see
4051 <xref linkend="release-8-2">.
4055 <title>Migration to Version 8.2.4</title>
4058 A dump/restore is not required for those running 8.2.X.
4064 <title>Changes</title>
4070 Support explicit placement of the temporary-table schema within
4071 <varname>search_path</>, and disable searching it for functions
4076 This is needed to allow a security-definer function to set a
4077 truly secure value of <varname>search_path</>. Without it,
4078 an unprivileged SQL user can use temporary objects to execute code
4079 with the privileges of the security-definer function (CVE-2007-2138).
4080 See <command>CREATE FUNCTION</> for more information.
4086 Fix <varname>shared_preload_libraries</> for Windows
4087 by forcing reload in each backend (Korry Douglas)
4093 Fix <function>to_char()</> so it properly upper/lower cases localized day or month
4094 names (Pavel Stehule)
4100 <filename>/contrib/tsearch2</> crash fixes (Teodor)
4106 Require <command>COMMIT PREPARED</> to be executed in the same
4107 database as the transaction was prepared in (Heikki)
4113 Allow <command>pg_dump</> to do binary backups larger than two gigabytes
4120 New traditional (Taiwan) Chinese <acronym>FAQ</> (Zhou Daojing)
4126 Prevent the statistics collector from writing to disk too frequently (Tom)
4132 Fix potential-data-corruption bug in how <command>VACUUM FULL</> handles
4133 <command>UPDATE</> chains (Tom, Pavan Deolasee)
4139 Fix bug in domains that use array types (Tom)
4145 Fix <command>pg_dump</> so it can dump a serial column's sequence
4146 using <option>-t</> when not also dumping the owning table
4153 Planner fixes, including improving outer join and bitmap scan
4154 selection logic (Tom)
4160 Fix possible wrong answers or crash when a PL/pgSQL function tries
4161 to <literal>RETURN</> from within an <literal>EXCEPTION</> block
4168 Fix PANIC during enlargement of a hash index (Tom)
4174 Fix POSIX-style timezone specs to follow new USA DST rules (Tom)
4183 <sect1 id="release-8-2-3">
4184 <title>Release 8.2.3</title>
4187 <title>Release date:</title>
4188 <para>2007-02-07</para>
4192 This release contains two fixes from 8.2.2.
4193 For information about new features in the 8.2 major release, see
4194 <xref linkend="release-8-2">.
4198 <title>Migration to Version 8.2.3</title>
4201 A dump/restore is not required for those running 8.2.X.
4207 <title>Changes</title>
4213 Remove overly-restrictive check for type length in constraints and
4214 functional indexes(Tom)
4220 Fix optimization so MIN/MAX in subqueries can again use indexes (Tom)
4229 <sect1 id="release-8-2-2">
4230 <title>Release 8.2.2</title>
4233 <title>Release date:</title>
4234 <para>2007-02-05</para>
4238 This release contains a variety of fixes from 8.2.1, including
4240 For information about new features in the 8.2 major release, see
4241 <xref linkend="release-8-2">.
4245 <title>Migration to Version 8.2.2</title>
4248 A dump/restore is not required for those running 8.2.X.
4254 <title>Changes</title>
4260 Remove security vulnerabilities that allowed connected users
4261 to read backend memory (Tom)
4265 The vulnerabilities involve suppressing the normal check that a SQL
4266 function returns the data type it's declared to, and changing the
4267 data type of a table column (CVE-2007-0555, CVE-2007-0556). These
4268 errors can easily be exploited to cause a backend crash, and in
4269 principle might be used to read database content that the user
4270 should not be able to access.
4276 Fix not-so-rare-anymore bug wherein btree index page splits could fail
4277 due to choosing an infeasible split point (Heikki Linnakangas)
4283 Fix Borland C compile scripts (L Bayuk)
4289 Properly handle <function>to_char('CC')</> for years ending in
4290 <literal>00</> (Tom)
4294 Year 2000 is in the twentieth century, not the twenty-first.
4300 <filename>/contrib/tsearch2</> localization improvements (Tatsuo, Teodor)
4306 Fix incorrect permission check in
4307 <literal>information_schema.key_column_usage</> view (Tom)
4311 The symptom is <quote>relation with OID nnnnn does not exist</> errors.
4312 To get this fix without using <command>initdb</>, use <command>CREATE OR
4313 REPLACE VIEW</> to install the corrected definition found in
4314 <filename>share/information_schema.sql</>. Note you will need to do
4315 this in each database.
4321 Improve <command>VACUUM</> performance for databases with many tables (Tom)
4327 Fix for rare Assert() crash triggered by <literal>UNION</> (Tom)
4333 Fix potentially incorrect results from index searches using
4334 <literal>ROW</> inequality conditions (Tom)
4340 Tighten security of multi-byte character processing for UTF8 sequences
4341 over three bytes long (Tom)
4347 Fix bogus <quote>permission denied</> failures occurring on Windows
4348 due to attempts to fsync already-deleted files (Magnus, Tom)
4354 Fix bug that could cause the statistics collector
4355 to hang on Windows (Magnus)
4359 This would in turn lead to autovacuum not working.
4365 Fix possible crashes when an already-in-use PL/pgSQL function is
4372 Improve PL/pgSQL handling of domain types (Sergiy Vyshnevetskiy, Tom)
4378 Fix possible errors in processing PL/pgSQL exception blocks (Tom)
4387 <sect1 id="release-8-2-1">
4388 <title>Release 8.2.1</title>
4391 <title>Release date:</title>
4392 <para>2007-01-08</para>
4396 This release contains a variety of fixes from 8.2.
4397 For information about new features in the 8.2 major release, see
4398 <xref linkend="release-8-2">.
4402 <title>Migration to Version 8.2.1</title>
4405 A dump/restore is not required for those running 8.2.
4411 <title>Changes</title>
4417 Fix crash with <literal>SELECT</> ... <literal>LIMIT ALL</> (also
4418 <literal>LIMIT NULL</>) (Tom)
4424 <filename>Several /contrib/tsearch2</> fixes (Teodor)
4430 On Windows, make log messages coming from the operating system use
4431 <acronym>ASCII</> encoding (Hiroshi Saito)
4435 This fixes a conversion problem when there is a mismatch between
4436 the encoding of the operating system and database server.
4442 Fix Windows linking of <application>pg_dump</> using
4443 <filename>win32.mak</>
4450 Fix planner mistakes for outer join queries (Tom)
4456 Fix several problems in queries involving sub-SELECTs (Tom)
4462 Fix potential crash in SPI during subtransaction abort (Tom)
4466 This affects all PL functions since they all use SPI.
4472 Improve build speed of <acronym>PDF</> documentation (Peter)
4478 Re-add <acronym>JST</> (Japan) timezone abbreviation (Tom)
4484 Improve optimization decisions related to index scans (Tom)
4490 Have <application>psql</> print multi-byte combining characters as
4491 before, rather than output as <literal>\u</> (Tom)
4497 Improve index usage of regular expressions that use parentheses (Tom)
4501 This improves <application>psql</> <literal>\d</> performance also.
4507 Make <application>pg_dumpall</> assume that databases have public
4508 <literal>CONNECT</> privilege, when dumping from a pre-8.2 server (Tom)
4512 This preserves the previous behavior that anyone can connect to a
4513 database if allowed by <filename>pg_hba.conf</>.
4522 <sect1 id="release-8-2">
4523 <title>Release 8.2</title>
4526 <title>Release date:</title>
4527 <para>2006-12-05</para>
4531 <title>Overview</title>
4534 This release adds many functionality and performance improvements that
4535 were requested by users, including:
4541 Query language enhancements including <command>INSERT/UPDATE/DELETE
4542 RETURNING</command>, multirow <literal>VALUES</literal> lists, and
4543 optional target-table alias in
4544 <command>UPDATE</>/<command>DELETE</command>
4550 Index creation without blocking concurrent
4551 <command>INSERT</>/<command>UPDATE</>/<command>DELETE</>
4558 Many query optimization improvements, including support for
4559 reordering outer joins
4565 Improved sorting performance with lower memory usage
4571 More efficient locking with better concurrency
4577 More efficient vacuuming
4583 Easier administration of warm standby servers
4589 New <literal>FILLFACTOR</literal> support for tables and indexes
4595 Monitoring, logging, and performance tuning additions
4601 More control over creating and dropping objects
4607 Table inheritance relationships can be defined
4608 for and removed from pre-existing tables
4614 <command>COPY TO</command> can copy the output of an arbitrary
4615 <command>SELECT</command> statement
4621 Array improvements, including nulls in arrays
4627 Aggregate-function improvements, including multiple-input
4628 aggregates and SQL:2003 statistical functions
4634 Many <filename>contrib/</filename> improvements
4645 <title>Migration to Version 8.2</title>
4648 A dump/restore using <application>pg_dump</application> is
4649 required for those wishing to migrate data from any previous
4654 Observe the following incompatibilities:
4662 linkend="guc-escape-string-warning"><varname>escape_string_warning</></link>
4663 to <literal>on</> by default (Bruce)
4667 This issues a warning if backslash escapes are used in
4668 <link linkend="sql-syntax-strings">non-escape (non-<literal>E''</>)
4675 Change the <link linkend="sql-syntax-row-constructors">row
4676 constructor syntax</link> (<literal>ROW(...)</>) so that
4677 list elements <literal>foo.*</> will be expanded to a list
4678 of their member fields, rather than creating a nested
4679 row type field as formerly (Tom)
4683 The new behavior is substantially more useful since it
4684 allows, for example, triggers to check for data changes
4685 with <literal>IF row(new.*) IS DISTINCT FROM row(old.*)</>.
4686 The old behavior is still available by omitting <literal>.*</>.
4692 Make <link linkend="row-wise-comparison">row comparisons</link>
4693 follow <acronym>SQL</> standard semantics and allow them
4694 to be used in index scans (Tom)
4698 Previously, row = and <> comparisons followed the
4699 standard but < <= > >= did not. A row comparison
4700 can now be used as an index constraint for a multicolumn
4701 index matching the row value.
4707 Make <link linkend="functions-comparison">row <literal>IS <optional>NOT</> NULL</literal></link>
4708 tests follow <acronym>SQL</> standard semantics (Tom)
4712 The former behavior conformed to the standard for simple cases
4713 with <literal>IS NULL</>, but <literal>IS NOT NULL</> would return
4714 true if any row field was non-null, whereas the standard says it
4715 should return true only when all fields are non-null.
4721 Make <link linkend="SQL-SET-CONSTRAINTS"><command>SET
4722 CONSTRAINT</></link> affect only one constraint (Kris Jurka)
4726 In previous releases, <command>SET CONSTRAINT</> modified
4727 all constraints with a matching name. In this release,
4728 the schema search path is used to modify only the first
4729 matching constraint. A schema specification is also
4730 supported. This more nearly conforms to the SQL standard.
4736 Remove <literal>RULE</> permission for tables, for security reasons
4741 As of this release, only a table's owner can create or modify
4742 rules for the table. For backwards compatibility,
4743 <command>GRANT</>/<command>REVOKE RULE</> is still accepted,
4744 but it does nothing.
4750 Array comparison improvements (Tom)
4754 Now array dimensions are also compared.
4760 Change <link linkend="functions-array">array concatenation</link>
4761 to match documented behavior (Tom)
4765 This changes the previous behavior where concatenation
4766 would modify the array lower bound.
4772 Make command-line options of <application>postmaster</>
4773 and <link linkend="app-postgres"><application>postgres</></link>
4778 This allows the postmaster to pass arguments to each backend
4779 without using <literal>-o</>. Note that some options are now
4780 only available as long-form options, because there were conflicting
4781 single-letter options.
4787 Deprecate use of <application>postmaster</> symbolic link (Peter)
4791 <application>postmaster</> and <application>postgres</>
4792 commands now act identically, with the behavior determined
4793 by command-line options. The <application>postmaster</> symbolic link is
4794 kept for compatibility, but is not really needed.
4801 linkend="guc-log-duration"><varname>log_duration</></link>
4802 to output even if the query is not output (Tom)
4806 In prior releases, <varname>log_duration</> only printed if
4807 the query appeared earlier in the log.
4814 linkend="functions-formatting"><function>to_char(time)</></link>
4816 linkend="functions-formatting"><function>to_char(interval)</></link>
4817 treat <literal>HH</> and <literal>HH12</> as 12-hour
4822 Most applications should use <literal>HH24</> unless they
4823 want a 12-hour display.
4829 Zero unmasked bits in conversion from <link
4830 linkend="datatype-inet"><type>INET</></link> to <link
4831 linkend="datatype-inet"><type>CIDR</></link> (Tom)
4835 This ensures that the converted value is actually valid for
4842 Remove <varname>australian_timezones</> configuration variable
4847 This variable has been superseded by a more general facility
4848 for configuring timezone abbreviations.
4854 Improve cost estimation for nested-loop index scans (Tom)
4858 This might eliminate the need to set unrealistically small
4860 linkend="guc-random-page-cost"><varname>random_page_cost</></link>.
4861 If you have been using a very small <varname>random_page_cost</>,
4862 please recheck your test cases.
4868 Change behavior of <command>pg_dump</> <literal>-n</> and
4869 <literal>-t</> options. (Greg Sabino Mullane)
4872 See the <command>pg_dump</> manual page for details.
4878 Change <link linkend="libpq"><application>libpq</></link>
4879 <function>PQdsplen()</> to return a useful value (Martijn
4886 Declare <link linkend="libpq"><application>libpq</></link>
4887 <function>PQgetssl()</> as returning <literal>void *</>,
4888 rather than <literal>SSL *</> (Martijn van Oosterhout)
4892 This allows applications to use the function without including
4893 the OpenSSL headers.
4899 C-language loadable modules must now include a
4900 <link linkend="xfunc-c-dynload"><literal>PG_MODULE_MAGIC</></link>
4901 macro call for version compatibility checking
4902 (Martijn van Oosterhout)
4908 For security's sake, modules used by a PL/PerlU function are no
4909 longer available to PL/Perl functions (Andrew)
4913 This also implies that data can no longer be shared between a PL/Perl
4914 function and a PL/PerlU function.
4915 Some Perl installations have not been compiled with the correct flags
4916 to allow multiple interpreters to exist within a single process.
4917 In this situation PL/Perl and PL/PerlU cannot both be used in a
4918 single backend. The solution is to get a Perl installation which
4919 supports multiple interpreters.
4926 In <filename>contrib/xml2/</>, rename <function>xml_valid()</> to
4927 <function>xml_is_well_formed()</> (Tom)
4931 <function>xml_valid()</> will remain for backward compatibility,
4932 but its behavior will change to do schema checking in a future
4939 Remove <filename>contrib/ora2pg/</>, now at <ulink
4940 url="http://www.samse.fr/GPL/ora2pg"></ulink>
4946 Remove contrib modules that have been migrated to PgFoundry:
4947 <filename>adddepend</>, <filename>dbase</>, <filename>dbmirror</>,
4948 <filename>fulltextindex</>, <filename>mac</>, <filename>userlock</>
4954 Remove abandoned contrib modules:
4955 <filename>mSQL-interface</>, <filename>tips</>
4961 Remove <acronym>QNX</> and <acronym>BEOS</> ports (Bruce)
4965 These ports no longer had active maintainers.
4973 <title>Changes</title>
4976 Below you will find a detailed account of the
4977 changes between <productname>PostgreSQL</productname> 8.2 and
4978 the previous major release.
4982 <title>Performance Improvements</title>
4987 Allow the planner to reorder <link linkend="queries-join">outer
4988 joins</link> in some circumstances (Tom)
4992 In previous releases, outer joins would always be evaluated in
4993 the order written in the query. This change allows the
4994 query optimizer to consider reordering outer joins, in cases where
4995 it can determine that the join order can be changed without
4996 altering the meaning of the query. This can make a
4997 considerable performance difference for queries involving
4998 multiple outer joins or mixed inner and outer joins.
5004 Improve efficiency of <link
5005 linkend="functions-comparisons"><literal>IN</>
5006 (list-of-expressions)</link> clauses (Tom)
5012 Improve sorting speed and reduce memory usage (Simon, Tom)
5018 Improve subtransaction performance (Alvaro, Itagaki Takahiro,
5025 Add <literal>FILLFACTOR</> to <link
5026 linkend="SQL-CREATETABLE">table</link> and <link
5027 linkend="SQL-CREATEINDEX">index</link> creation (ITAGAKI
5032 This leaves extra free space in each table or index page,
5033 allowing improved performance as the database grows. This
5034 is particularly valuable to maintain clustering.
5040 Increase default values for <link
5041 linkend="guc-shared-buffers"><varname>shared_buffers</></link>
5042 and <varname>max_fsm_pages</>
5049 Improve locking performance by breaking the lock manager tables into
5055 This allows locking to be more fine-grained, reducing
5062 Reduce locking requirements of sequential scans (Qingqing
5069 Reduce locking required for database creation and destruction
5076 Improve the optimizer's selectivity estimates for <link
5077 linkend="functions-like"><literal>LIKE</></link>, <link
5078 linkend="functions-like"><literal>ILIKE</></link>, and
5079 <link linkend="functions-posix-regexp">regular expression</link>
5086 Improve planning of joins to <link linkend="ddl-inherit">inherited
5087 tables</link> and <link linkend="queries-union"><literal>UNION
5088 ALL</></link> views (Tom)
5094 Allow <link linkend="guc-constraint-exclusion">constraint
5095 exclusion</link> to be applied to <link
5096 linkend="ddl-inherit">inherited</link> <command>UPDATE</> and
5097 <command>DELETE</> queries (Tom)
5101 <command>SELECT</> already honored constraint exclusion.
5107 Improve planning of constant <literal>WHERE</> clauses, such as
5108 a condition that depends only on variables inherited from an
5109 outer query level (Tom)
5115 Protocol-level unnamed prepared statements are re-planned
5116 for each set of <literal>BIND</> values (Tom)
5120 This improves performance because the exact parameter values
5121 can be used in the plan.
5127 Speed up vacuuming of B-Tree indexes (Heikki Linnakangas,
5134 Avoid extra scan of tables without indexes during <link
5135 linkend="SQL-VACUUM"><command>VACUUM</></link> (Greg Stark)
5141 Improve multicolumn <link linkend="GiST"><acronym>GiST</></link>
5142 indexing (Oleg, Teodor)
5148 Remove dead index entries before B-Tree page split (Junji
5158 <title>Server Changes</title>
5163 Allow a forced switch to a new transaction log file (Simon, Tom)
5167 This is valuable for keeping warm standby slave servers
5168 in sync with the master. Transaction log file switching now also happens
5169 automatically during <link
5170 linkend="functions-admin"><function>pg_stop_backup()</></link>.
5171 This ensures that all
5172 transaction log files needed for recovery can be archived immediately.
5178 Add <acronym>WAL</> informational functions (Simon)
5182 Add functions for interrogating the current transaction log insertion
5183 point and determining <acronym>WAL</> filenames from the
5184 hex <acronym>WAL</> locations displayed by <link
5185 linkend="functions-admin"><function>pg_stop_backup()</></link>
5186 and related functions.
5192 Improve recovery from a crash during <acronym>WAL</> replay (Simon)
5196 The server now does periodic checkpoints during <acronym>WAL</>
5197 recovery, so if there is a crash, future <acronym>WAL</>
5198 recovery is shortened. This also eliminates the need for
5199 warm standby servers to replay the entire log since the
5200 base backup if they crash.
5206 Improve reliability of long-term <acronym>WAL</> replay
5207 (Heikki, Simon, Tom)
5211 Formerly, trying to roll forward through more than 2 billion
5212 transactions would not work due to XID wraparound. This meant
5213 warm standby servers had to be reloaded
5214 from fresh base backups periodically.
5221 linkend="guc-archive-timeout"><varname>archive_timeout</></link>
5222 to force transaction log file switches at a given interval (Simon)
5226 This enforces a maximum replication delay for warm standby servers.
5232 Add native <link linkend="auth-ldap"><acronym>LDAP</></link>
5233 authentication (Magnus Hagander)
5237 This is particularly useful for platforms that do not
5238 support <acronym>PAM</>, such as Windows.
5244 Add <link linkend="sql-grant-description-objects"><literal>GRANT
5245 CONNECT ON DATABASE</></link> (Gevik Babakhani)
5249 This gives SQL-level control over database access. It works as
5250 an additional filter on top of the existing
5251 <link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></link>
5258 Add support for <link linkend="ssl-tcp"><acronym>SSL</>
5259 Certificate Revocation List</link> (<acronym>CRL</>) files
5260 (Libor Hohoš)
5264 The server and <application>libpq</> both recognize <acronym>CRL</>
5271 <link linkend="GiST"><acronym>GiST</></link> indexes are
5272 now clusterable (Teodor)
5278 Remove routine autovacuum server log entries (Bruce)
5283 linkend="monitoring-stats-views-table"><literal>pg_stat_activity</></link>
5284 now shows autovacuum activity.
5290 Track maximum XID age within individual tables, instead of whole databases (Alvaro)
5294 This reduces the overhead involved in preventing transaction
5295 ID wraparound, by avoiding unnecessary VACUUMs.
5301 Add last vacuum and analyze timestamp columns to the stats
5302 collector (Larry Rosenman)
5306 These values now appear in the <link
5307 linkend="monitoring-stats-views-table"><literal>pg_stat_*_tables</></link>
5314 Improve performance of statistics monitoring, especially
5315 <varname>stats_command_string</>
5320 This release enables <varname>stats_command_string</> by
5321 default, now that its overhead is minimal. This means
5323 linkend="monitoring-stats-views-table"><literal>pg_stat_activity</></link>
5324 will now show all active queries by default.
5330 Add a <literal>waiting</> column to <link
5331 linkend="monitoring-stats-views-table"><literal>pg_stat_activity</></link>
5336 This allows <structname>pg_stat_activity</> to show all the
5337 information included in the <application>ps</> display.
5343 Add configuration parameter <link
5344 linkend="guc-update-process-title"><varname>update_process_title</></link>
5345 to control whether the <application>ps</> display is updated
5346 for every command (Bruce)
5350 On platforms where it is expensive to update the <application>ps</>
5351 display, it might be worthwhile to turn this off and rely solely on
5352 <structname>pg_stat_activity</> for status information.
5358 Allow units to be specified in configuration settings
5363 For example, you can now set <link
5364 linkend="guc-shared-buffers"><varname>shared_buffers</></link>
5365 to <literal>32MB</> rather than mentally converting sizes.
5371 Add support for <link linkend="config-setting">include
5372 directives</link> in <filename>postgresql.conf</> (Joachim
5379 Improve logging of protocol-level prepare/bind/execute
5380 messages (Bruce, Tom)
5384 Such logging now shows statement names, bind parameter
5385 values, and the text of the query being executed. Also,
5386 the query text is properly included in logged error messages
5387 when enabled by <varname>log_min_error_statement</>.
5394 linkend="guc-max-stack-depth"><varname>max_stack_depth</></link>
5395 from being set to unsafe values
5399 On platforms where we can determine the actual kernel stack depth
5400 limit (which is most), make sure that the initial default value of
5401 <varname>max_stack_depth</> is safe, and reject attempts to set it
5402 to unsafely large values.
5408 Enable highlighting of error location in query in more
5413 The server is now able to report a specific error location for
5414 some semantic errors (such as unrecognized column name), rather
5415 than just for basic syntax errors as before.
5421 Fix <quote>failed to re-find parent key</> errors in
5422 <command>VACUUM</> (Tom)
5428 Clean out <filename>pg_internal.init</> cache files during server
5433 This avoids a hazard that the cache files might contain stale
5434 data after PITR recovery.
5440 Fix race condition for truncation of a large relation across a
5441 gigabyte boundary by <command>VACUUM</> (Tom)
5447 Fix bug causing needless deadlock errors on row-level locks (Tom)
5453 Fix bugs affecting multi-gigabyte hash indexes (Tom)
5459 Each backend process is now its own process group leader (Tom)
5463 This allows query cancel to abort subprocesses invoked from a
5464 backend or archive/recovery process.
5473 <title>Query Changes</title>
5478 Add <link linkend="SQL-INSERT"><command>INSERT</></link>/<link
5479 linkend="SQL-UPDATE"><command>UPDATE</></link>/<link
5480 linkend="SQL-DELETE"><command>DELETE</></link>
5481 <literal>RETURNING</> (Jonah Harris, Tom)
5485 This allows these commands to return values, such as the
5486 computed serial key for a new row. In the <command>UPDATE</>
5487 case, values from the updated version of the row are returned.
5493 Add support for multiple-row <link
5494 linkend="queries-values"><literal>VALUES</></link> clauses,
5495 per SQL standard (Joe, Tom)
5499 This allows <command>INSERT</> to insert multiple rows of
5500 constants, or queries to generate result sets using constants.
5501 For example, <literal>INSERT ... VALUES (...), (...),
5502 ....</>, and <literal>SELECT * FROM (VALUES (...), (...),
5503 ....) AS alias(f1, ...)</>.
5509 Allow <link linkend="SQL-UPDATE"><command>UPDATE</></link>
5510 and <link linkend="SQL-DELETE"><command>DELETE</></link>
5511 to use an alias for the target table (Atsushi Ogawa)
5515 The SQL standard does not permit an alias in these commands, but
5516 many database systems allow one anyway for notational convenience.
5522 Allow <link linkend="SQL-UPDATE"><command>UPDATE</></link>
5523 to set multiple columns with a list of values (Susanne
5528 This is basically a short-hand for assigning the columns
5529 and values in pairs. The syntax is <literal>UPDATE tab
5530 SET (<replaceable>column</>, ...) = (<replaceable>val</>, ...)</>.
5536 Make row comparisons work per standard (Tom)
5540 The forms <, <=, >, >= now compare rows lexicographically,
5541 that is, compare the first elements, if equal compare the second
5542 elements, and so on. Formerly they expanded to an AND condition
5543 across all the elements, which was neither standard nor very useful.
5549 Add <link linkend="SQL-TRUNCATE"><literal>CASCADE</></link>
5550 option to <command>TRUNCATE</> (Joachim Wieland)
5554 This causes <command>TRUNCATE</> to automatically include all tables
5555 that reference the specified table(s) via foreign keys. While
5556 convenient, this is a dangerous tool — use with caution!
5562 Support <literal>FOR UPDATE</> and <literal>FOR SHARE</>
5563 in the same <link linkend="SQL-INSERT"><literal>SELECT</></link>
5570 Add <link linkend="functions-comparisons"><literal>IS NOT
5571 DISTINCT FROM</></link> (Pavel Stehule)
5575 This operator is similar to equality (<literal>=</>), but
5576 evaluates to true when both left and right operands are
5577 <literal>NULL</>, and to false when just one is, rather than
5578 yielding <literal>NULL</> in these cases.
5584 Improve the length output used by <link
5585 linkend="queries-union"><literal>UNION</></link>/<literal>INTERSECT</>/<literal>EXCEPT</>
5590 When all corresponding columns are of the same defined length, that
5591 length is used for the result, rather than a generic length.
5597 Allow <link linkend="functions-like"><literal>ILIKE</></link>
5598 to work for multi-byte encodings (Tom)
5602 Internally, <literal>ILIKE</> now calls <function>lower()</>
5603 and then uses <literal>LIKE</>. Locale-specific regular
5604 expression patterns still do not work in these encodings.
5611 linkend="guc-standard-conforming-strings"><varname>standard_conforming_strings</></link>
5612 to be turned <literal>on</> (Kevin Grittner)
5616 This allows backslash escaping in strings to be disabled,
5617 making <productname>PostgreSQL</> more
5618 standards-compliant. The default is <literal>off</> for backwards
5619 compatibility, but future releases will default this to <literal>on</>.
5625 Do not flatten subqueries that contain <literal>volatile</>
5626 functions in their target lists (Jaime Casanova)
5630 This prevents surprising behavior due to multiple evaluation
5631 of a <literal>volatile</> function (such as <function>random()</>
5632 or <function>nextval()</>). It might cause performance
5633 degradation in the presence of functions that are unnecessarily
5634 marked as <literal>volatile</>.
5640 Add system views <link
5641 linkend="view-pg-prepared-statements"><literal>pg_prepared_statements</></link>
5643 linkend="view-pg-cursors"><literal>pg_cursors</></link>
5644 to show prepared statements and open cursors (Joachim Wieland, Neil)
5648 These are very useful in pooled connection setups.
5654 Support portal parameters in <link
5655 linkend="SQL-EXPLAIN"><command>EXPLAIN</></link> and <link
5656 linkend="SQL-EXECUTE"><command>EXECUTE</></link> (Tom)
5660 This allows, for example, <acronym>JDBC</> <literal>?</> parameters to
5661 work in these commands.
5667 If <acronym>SQL</>-level <link
5668 linkend="SQL-PREPARE"><command>PREPARE</></link> parameters
5669 are unspecified, infer their types from the content of the
5674 Protocol-level <command>PREPARE</> already did this.
5680 Allow <literal>LIMIT</> and <literal>OFFSET</> to exceed
5681 two billion (Dhanaraj M)
5690 <title>Object Manipulation Changes</title>
5695 Add <literal>TABLESPACE</> clause to <link
5696 linkend="SQL-CREATETABLEAS"><command>CREATE TABLE AS</></link>
5701 This allows a tablespace to be specified for the new table.
5707 Add <literal>ON COMMIT</> clause to <link
5708 linkend="SQL-CREATETABLEAS"><command>CREATE TABLE AS</></link>
5713 This allows temporary tables to be truncated or dropped on
5714 transaction commit. The default behavior is for the table
5715 to remain until the session ends.
5721 Add <literal>INCLUDING CONSTRAINTS</> to <link
5722 linkend="SQL-CREATETABLE"><command>CREATE TABLE LIKE</></link>
5727 This allows easy copying of <literal>CHECK</> constraints to a new
5734 Allow the creation of placeholder (shell) <link
5735 linkend="SQL-CREATETYPE">types</link> (Martijn van Oosterhout)
5739 A shell type declaration creates a type name, without specifying
5740 any of the details of the type. Making a shell type is useful
5741 because it allows cleaner declaration of the type's input/output
5742 functions, which must exist before the type can be defined <quote>for
5743 real</>. The syntax is <command>CREATE TYPE <replaceable
5744 class="parameter">typename</replaceable></>.
5750 <link linkend="SQL-CREATEAGGREGATE">Aggregate functions</link>
5751 now support multiple input parameters (Sergey Koposov, Tom)
5757 Add new aggregate creation <link
5758 linkend="SQL-CREATEAGGREGATE">syntax</link> (Tom)
5762 The new syntax is <command>CREATE AGGREGATE
5763 <replaceable>aggname</> (<replaceable>input_type</>)
5764 (<replaceable>parameter_list</>)</command>. This more
5765 naturally supports the new multi-parameter aggregate
5766 functionality. The previous syntax is still supported.
5773 linkend="SQL-ALTERROLE"><command>ALTER ROLE PASSWORD NULL</></link>
5774 to remove a previously set role password (Peter)
5780 Add <command>DROP</> object <literal>IF EXISTS</> for many
5781 object types (Andrew)
5785 This allows <command>DROP</> operations on non-existent
5786 objects without generating an error.
5792 Add <link linkend="SQL-DROP-OWNED"><literal>DROP OWNED</></link>
5793 to drop all objects owned by a role (Alvaro)
5799 Add <link linkend="SQL-REASSIGN-OWNED"><literal>REASSIGN
5800 OWNED</></link> to reassign ownership of all objects owned
5805 This, and <literal>DROP OWNED</> above, facilitate dropping
5812 Add <link linkend="SQL-GRANT"><command>GRANT ON SEQUENCE</></link>
5817 This was added for setting sequence-specific permissions.
5818 <literal>GRANT ON TABLE</> for sequences is still supported
5819 for backward compatibility.
5825 Add <link linkend="SQL-GRANT"><literal>USAGE</></link>
5826 permission for sequences that allows only <function>currval()</>
5827 and <function>nextval()</>, not <function>setval()</>
5832 <literal>USAGE</> permission allows more fine-grained
5833 control over sequence access. Granting <literal>USAGE</>
5834 allows users to increment
5835 a sequence, but prevents them from setting the sequence to
5836 an arbitrary value using <function>setval()</>.
5842 Add <link linkend="SQL-ALTERTABLE"><literal>ALTER TABLE
5843 [ NO ] INHERIT</></link> (Greg Stark)
5847 This allows inheritance to be adjusted dynamically, rather than
5848 just at table creation and destruction. This is very valuable
5849 when using inheritance to implement table partitioning.
5855 Allow <link linkend="SQL-COMMENT">comments</link> on global
5856 objects to be stored globally (Kris Jurka)
5860 Previously, comments attached to databases were stored in individual
5861 databases, making them ineffective, and there was no provision
5862 at all for comments on roles or tablespaces. This change adds a new
5863 shared catalog <link
5864 linkend="catalog-pg-shdescription"><structname>pg_shdescription</structname></link>
5865 and stores comments on databases, roles, and tablespaces therein.
5874 <title>Utility Command Changes</title>
5879 Add option to allow indexes to be created without blocking
5880 concurrent writes to the table (Greg Stark, Tom)
5884 The new syntax is <link linkend="SQL-CREATEINDEX"><command>CREATE
5885 INDEX CONCURRENTLY</></link>. The default behavior is
5886 still to block table modification while an index is being
5893 Provide <link linkend="functions-advisory-locks">advisory
5894 locking</link> functionality (Abhijit Menon-Sen, Tom)
5898 This is a new locking API designed to replace what used to be
5899 in /contrib/userlock. The userlock code is now on pgfoundry.
5905 Allow <link linkend="SQL-COPY"><command>COPY</></link> to
5906 dump a <command>SELECT</> query (Zoltan Boszormenyi, Karel
5911 This allows <command>COPY</> to dump arbitrary <acronym>SQL</>
5912 queries. The syntax is <literal>COPY (SELECT ...) TO</>.
5918 Make the <link linkend="SQL-COPY"><command>COPY</></link>
5919 command return a command tag that includes the number of
5920 rows copied (Volkan YAZICI)
5926 Allow <link linkend="SQL-VACUUM"><command>VACUUM</></link>
5927 to expire rows without being affected by other concurrent
5928 <command>VACUUM</> operations (Hannu Krossing, Alvaro, Tom)
5934 Make <link linkend="APP-INITDB"><application>initdb</></link>
5935 detect the operating system locale and set the default
5936 <varname>DateStyle</> accordingly (Peter)
5940 This makes it more likely that the installed
5941 <filename>postgresql.conf</> <varname>DateStyle</> value will
5948 Reduce number of progress messages displayed by <application>initdb</> (Tom)
5957 <title>Date/Time Changes</title>
5962 Allow full timezone names in <link
5963 linkend="datatype-datetime"><type>timestamp</></link> input values
5968 For example, <literal>'2006-05-24 21:11
5969 America/New_York'::timestamptz</>.
5975 Support configurable timezone abbreviations (Joachim Wieland)
5979 A desired set of timezone abbreviations can be chosen via the
5980 configuration parameter <link
5981 linkend="guc-timezone-abbreviations"><varname>timezone_abbreviations</></link>.
5988 linkend="view-pg-timezone-abbrevs"><varname>pg_timezone_abbrevs</></link>
5990 linkend="view-pg-timezone-names"><varname>pg_timezone_names</></link>
5991 views to show supported timezones (Magnus Hagander)
5998 linkend="functions-datetime-table"><function>clock_timestamp()</></link>,
6000 linkend="functions-datetime-table"><function>statement_timestamp()</></link>,
6002 linkend="functions-datetime-table"><function>transaction_timestamp()</></link>
6007 <function>clock_timestamp()</> is the current wall-clock time,
6008 <function>statement_timestamp()</> is the time the current
6009 statement arrived at the server, and
6010 <function>transaction_timestamp()</> is an alias for
6018 linkend="functions-formatting"><function>to_char()</></link>
6019 to print localized month and day names (Euler Taveira de
6027 linkend="functions-formatting"><function>to_char(time)</></link>
6029 linkend="functions-formatting"><function>to_char(interval)</></link>
6030 to output <acronym>AM</>/<acronym>PM</> specifications
6035 Intervals and times are treated as 24-hour periods, e.g.
6036 <literal>25 hours</> is considered <acronym>AM</>.
6042 Add new function <link
6043 linkend="functions-datetime-table"><function>justify_interval()</></link>
6044 to adjust interval units (Mark Dilger)
6050 Allow timezone offsets up to 14:59 away from GMT
6054 Kiribati uses GMT+14, so we'd better accept that.
6060 Interval computation improvements (Michael Glaesemann, Bruce)
6069 <title>Other Data Type and Function Changes</title>
6074 Allow arrays to contain <literal>NULL</> elements (Tom)
6080 Allow assignment to array elements not contiguous with the existing
6085 The intervening array positions will be filled with nulls.
6086 This is per SQL standard.
6092 New built-in <link linkend="functions-array">operators</link>
6093 for array-subset comparisons (<literal>@></>,
6094 <literal><@</>, <literal>&&</>) (Teodor, Tom)
6098 These operators can be indexed for many data types using
6099 <acronym>GiST</> or <acronym>GIN</> indexes.
6105 Add convenient arithmetic <link
6106 linkend="cidr-inet-operators-table">operations</link> on
6107 <type>INET</>/<type>CIDR</> values (Stephen R. van den
6112 The new operators are <literal>&</> (and), <literal>|</>
6113 (or), <literal>~</> (not), <type>inet</> <literal>+</> <type>int8</>,
6114 <type>inet</> <literal>-</> <type>int8</>, and
6115 <type>inet</> <literal>-</> <type>inet</>.
6122 linkend="functions-aggregate-statistics-table">aggregate functions</link>
6123 from SQL:2003 (Neil)
6127 The new functions are <function>var_pop()</>,
6128 <function>var_samp()</>, <function>stddev_pop()</>, and
6129 <function>stddev_samp()</>. <function>var_samp()</> and
6130 <function>stddev_samp()</> are merely renamings of the
6131 existing aggregates <function>variance()</> and
6132 <function>stddev()</>. The latter names remain available
6133 for backward compatibility.
6139 Add SQL:2003 statistical <link
6140 linkend="functions-aggregate-statistics-table">aggregates</link>
6145 New functions: <function>regr_intercept()</>,
6146 <function>regr_slope()</>, <function>regr_r2()</>,
6147 <function>corr()</>, <function>covar_samp()</>,
6148 <function>covar_pop()</>, <function>regr_avgx()</>,
6149 <function>regr_avgy()</>, <function>regr_sxy()</>,
6150 <function>regr_sxx()</>, <function>regr_syy()</>,
6151 <function>regr_count()</>.
6157 Allow <link linkend="SQL-CREATEDOMAIN">domains</link> to be
6158 based on other domains (Tom)
6164 Properly enforce domain <link
6165 linkend="ddl-constraints"><literal>CHECK</></link> constraints
6166 everywhere (Neil, Tom)
6170 For example, the result of a user-defined function that is
6171 declared to return a domain type is now checked against the
6172 domain's constraints. This closes a significant hole in the domain
6179 Fix problems with dumping renamed <link
6180 linkend="datatype-serial"><type>SERIAL</></link> columns
6185 The fix is to dump a <type>SERIAL</> column by explicitly
6186 specifying its <literal>DEFAULT</> and sequence elements,
6187 and reconstructing the <type>SERIAL</> column on reload
6188 using a new <link linkend="SQL-ALTERSEQUENCE"><command>ALTER
6189 SEQUENCE OWNED BY</></link> command. This also allows
6190 dropping a <type>SERIAL</> column specification.
6196 Add a server-side sleep function <link
6197 linkend="functions-datetime-delay"><function>pg_sleep()</></link>
6204 Add all comparison operators for the <link
6205 linkend="datatype-oid"><type>tid</></link> (tuple id) data
6206 type (Mark Kirkwood, Greg Stark, Tom)
6215 <title>PL/pgSQL Server-Side Language Changes</title>
6220 Add <literal>TG_table_name</> and <literal>TG_table_schema</> to
6221 trigger parameters (Andrew)
6225 <literal>TG_relname</> is now deprecated. Comparable
6226 changes have been made in the trigger parameters for the other
6233 Allow <literal>FOR</> statements to return values to scalars
6234 as well as records and row types (Pavel Stehule)
6240 Add a <literal>BY</> clause to the <literal>FOR</> loop,
6241 to control the iteration increment (Jaime Casanova)
6247 Add <literal>STRICT</> to <link
6248 linkend="plpgsql-statements-sql-onerow"><command>SELECT
6249 INTO</></link> (Matt Miller)
6253 <literal>STRICT</> mode throws an exception if more or less
6254 than one row is returned by the <command>SELECT</>, for
6255 <productname>Oracle PL/SQL</> compatibility.
6264 <title>PL/Perl Server-Side Language Changes</title>
6269 Add <literal>table_name</> and <literal>table_schema</> to
6270 trigger parameters (Adam Sjøgren)
6276 Add prepared queries (Dmitry Karasik)
6282 Make <literal>$_TD</> trigger data a global variable (Andrew)
6286 Previously, it was lexical, which caused unexpected sharing
6293 Run PL/Perl and PL/PerlU in separate interpreters, for security
6297 In consequence, they can no longer share data nor loaded modules.
6298 Also, if Perl has not been compiled with the requisite flags to
6299 allow multiple interpreters, only one of these languages can be used
6300 in any given backend process.
6309 <title>PL/Python Server-Side Language Changes</title>
6314 Named parameters are passed as ordinary variables, as well as in the
6315 <literal>args[]</> array (Sven Suursoho)
6321 Add <literal>table_name</> and <literal>table_schema</> to
6322 trigger parameters (Andrew)
6328 Allow returning of composite types and result sets (Sven Suursoho)
6334 Return result-set as <literal>list</>, <literal>iterator</>,
6335 or <literal>generator </>(Sven Suursoho)
6341 Allow functions to return <literal>void</> (Neil)
6347 Python 2.5 is now supported (Tom)
6356 <title><link linkend="APP-PSQL"><application>psql</></link> Changes</title>
6361 Add new command <literal>\password</> for changing role
6362 password with client-side password encryption (Peter)
6368 Allow <literal>\c</> to connect to a new host and port
6369 number (David, Volkan YAZICI)
6375 Add tablespace display to <literal>\l+</> (Philip Yarra)
6381 Improve <literal>\df</> slash command to include the argument
6382 names and modes (<literal>OUT</> or <literal>INOUT</>) of
6383 the function (David Fetter)
6389 Support binary <command>COPY</> (Andreas Pflug)
6395 Add option to run the entire session in a single transaction
6400 Use option <literal>-1</> or <literal>--single-transaction</>.
6406 Support for automatically retrieving <command>SELECT</>
6407 results in batches using a cursor (Chris Mair)
6411 This is enabled using <command>\set FETCH_COUNT
6412 <replaceable>n</></command>. This
6413 feature allows large result sets to be retrieved in
6414 <application>psql</> without attempting to buffer the entire
6415 result set in memory.
6421 Make multi-line values align in the proper column
6422 (Martijn van Oosterhout)
6426 Field values containing newlines are now displayed in a more
6433 Save multi-line statements as a single entry, rather than
6434 one line at a time (Sergey E. Koposov)
6438 This makes up-arrow recall of queries easier. (This is
6439 not available on Windows, because that platform uses the native
6440 command-line editing present in the operating system.)
6446 Make the line counter 64-bit so it can handle files with more
6447 than two billion lines (David Fetter)
6453 Report both the returned data and the command status tag
6454 for <command>INSERT</>/<command>UPDATE</>/<command>DELETE
6464 <title><link linkend="APP-PGDUMP"><application>pg_dump</></link> Changes</title>
6469 Allow complex selection of objects to be included or excluded
6470 by <application>pg_dump</> (Greg Sabino Mullane)
6474 <application>pg_dump</> now supports multiple <literal>-n</>
6475 (schema) and <literal>-t</> (table) options, and adds
6476 <literal>-N</> and <literal>-T</> options to exclude objects.
6477 Also, the arguments of these switches can now be wild-card expressions
6478 rather than single object names, for example
6479 <literal>-t 'foo*'</>, and a schema can be part of
6480 a <literal>-t</> or <literal>-T</> switch, for example
6481 <literal>-t schema1.table1</>.
6487 Add <link linkend="APP-PGRESTORE"><application>pg_restore</></link>
6488 <literal>--no-data-for-failed-tables</> option to suppress
6489 loading data if table creation failed (i.e., the table already
6490 exists) (Martin Pitt)
6496 Add <link linkend="APP-PGRESTORE"><application>pg_restore</></link>
6497 option to run the entire session in a single transaction
6502 Use option <literal>-1</> or <literal>--single-transaction</>.
6511 <title><link linkend="libpq"><application>libpq</></link> Changes</title>
6517 linkend="libpq-misc"><function>PQencryptPassword()</></link>
6518 to encrypt passwords (Tom)
6522 This allows passwords to be sent pre-encrypted for commands
6523 like <link linkend="SQL-ALTERROLE"><command>ALTER ROLE ...
6531 linkend="libpq-threading"><function>PQisthreadsafe()</></link>
6536 This allows applications to query the thread-safety status
6544 linkend="libpq-exec-main"><function>PQdescribePrepared()</></link>,
6546 linkend="libpq-exec-main"><function>PQdescribePortal()</></link>,
6547 and related functions to return information about previously
6548 prepared statements and open cursors (Volkan YAZICI)
6554 Allow <link linkend="libpq-ldap"><acronym>LDAP</></link> lookups
6556 linkend="libpq-pgservice"><filename>pg_service.conf</></link>
6563 Allow a hostname in <link
6564 linkend="libpq-pgpass"><filename>~/.pgpass</></link>
6565 to match the default socket directory (Bruce)
6569 A blank hostname continues to match any Unix-socket connection,
6570 but this addition allows entries that are specific to one of
6571 several postmasters on the machine.
6580 <title><link linkend="ecpg"><application>ecpg</></link> Changes</title>
6585 Allow <link linkend="SQL-SHOW"><command>SHOW</></link> to
6586 put its result into a variable (Joachim Wieland)
6592 Add <link linkend="SQL-COPY"><command>COPY TO STDOUT</></link>
6599 Add regression tests (Joachim Wieland, Michael)
6605 Major source code cleanups (Joachim Wieland, Michael)
6614 <title><application>Windows</> Port</title>
6619 Allow <acronym>MSVC</> to compile the <productname>PostgreSQL</>
6620 server (Magnus, Hiroshi Saito)
6626 Add <acronym>MSVC</> support for utility commands and <link
6627 linkend="APP-PGDUMP"><application>pg_dump</></link> (Hiroshi
6634 Add support for Windows code pages <literal>1253</>,
6635 <literal>1254</>, <literal>1255</>, and <literal>1257</>
6642 Drop privileges on startup, so that the server can be started from
6643 an administrative account (Magnus)
6649 Stability fixes (Qingqing Zhou, Magnus)
6655 Add native semaphore implementation (Qingqing Zhou)
6659 The previous code mimicked SysV semaphores.
6668 <title>Source Code Changes</title>
6673 Add <link linkend="GIN"><acronym>GIN</></link> (Generalized
6674 Inverted iNdex) index access method (Teodor, Oleg)
6680 Remove R-tree indexing (Tom)
6684 Rtree has been re-implemented using <link
6685 linkend="GiST"><acronym>GiST</></link>. Among other
6686 differences, this means that rtree indexes now have support
6687 for crash recovery via write-ahead logging (WAL).
6693 Reduce libraries needlessly linked into the backend (Martijn
6694 van Oosterhout, Tom)
6700 Add a configure flag to allow libedit to be preferred over
6701 <acronym>GNU</> readline (Bruce)
6706 linkend="configure"><literal>--with-libedit-preferred</></link>.
6712 Allow installation into directories containing spaces
6719 Improve ability to relocate installation directories (Tom)
6725 Add support for <productname>Solaris x86_64</> using the
6726 <productname>Solaris</> compiler (Pierre Girard, Theo
6727 Schlossnagle, Bruce)
6733 Add <application>DTrace</> support (Robert Lor)
6739 Add <literal>PG_VERSION_NUM</> for use by third-party
6740 applications wanting to test the backend version in C using >
6741 and < comparisons (Bruce)
6747 Add <literal>XLOG_BLCKSZ</> as independent from <literal>BLCKSZ</>
6754 Add <literal>LWLOCK_STATS</> define to report locking
6761 Emit warnings for unknown <application>configure</> options
6762 (Martijn van Oosterhout)
6768 Add server support for <quote>plugin</> libraries
6769 that can be used for add-on tasks such as debugging and performance
6770 measurement (Korry Douglas)
6774 This consists of two features: a table of <quote>rendezvous
6775 variables</> that allows separately-loaded shared libraries to
6776 communicate, and a new configuration parameter <link
6777 linkend="guc-local-preload-libraries"><varname>local_preload_libraries</></link>
6778 that allows libraries to be loaded into specific sessions without
6779 explicit cooperation from the client application. This allows
6780 external add-ons to implement features such as a PL/pgSQL debugger.
6786 Rename existing configuration parameter
6787 <varname>preload_libraries</> to <link
6788 linkend="guc-shared-preload-libraries"><varname>shared_preload_libraries</></link>
6793 This was done for clarity in comparison to
6794 <varname>local_preload_libraries</>.
6800 Add new configuration parameter <link
6801 linkend="guc-server-version-num"><varname>server_version_num</></link>
6802 (Greg Sabino Mullane)
6806 This is like <varname>server_version</varname>, but is an
6807 integer, e.g. <literal>80200</>. This allows applications to
6808 make version checks more easily.
6814 Add a configuration parameter <link
6815 linkend="guc-seq-page-cost"><varname>seq_page_cost</></link>
6822 Re-implement the <link linkend="regress">regression test</link> script as a C program
6829 Allow loadable modules to allocate shared memory and
6830 lightweight locks (Marc Munro)
6836 Add automatic initialization and finalization of dynamically
6837 loaded libraries (Ralf Engelschall, Tom)
6841 New <link linkend="xfunc-c-dynload">functions</link>
6842 <function>_PG_init()</> and <function>_PG_fini()</> are
6843 called if the library defines such symbols. Hence we no
6844 longer need to specify an initialization function in
6845 <varname>shared_preload_libraries</>; we can assume that
6846 the library used the <function>_PG_init()</> convention
6854 linkend="xfunc-c-dynload"><literal>PG_MODULE_MAGIC</></link>
6855 header block to all shared object files (Martijn van
6860 The magic block prevents version mismatches between loadable object
6867 Add shared library support for AIX (Laurenz Albe)
6873 New <link linkend="datatype-xml"><acronym>XML</></link>
6874 documentation section (Bruce)
6883 <title>Contrib Changes</title>
6888 Major tsearch2 improvements (Oleg, Teodor)
6895 multibyte encoding support, including <acronym>UTF8</>
6900 query rewriting support
6905 improved ranking functions
6910 thesaurus dictionary support
6915 Ispell dictionaries now recognize <application>MySpell</>
6916 format, used by <application>OpenOffice</>
6921 <acronym>GIN</> support
6931 Add adminpack module containing <application>Pgadmin</> administration
6936 These functions provide additional file system access
6937 routines not present in the default <productname>PostgreSQL</>
6944 Add sslinfo module (Victor Wagner)
6948 Reports information about the current connection's <acronym>SSL</>
6955 Add pgrowlocks module (Tatsuo)
6959 This shows row locking information for a specified table.
6965 Add hstore module (Oleg, Teodor)
6971 Add isn module, replacing isbn_issn (Jeremy Kronuz)
6975 This new implementation supports <acronym>EAN13</>, <acronym>UPC</>,
6976 <acronym>ISBN</> (books), <acronym>ISMN</> (music), and
6977 <acronym>ISSN</> (serials).
6983 Add index information functions to pgstattuple (ITAGAKI Takahiro,
6990 Add pg_freespacemap module to display free space map information
6997 pgcrypto now has all planned functionality (Marko Kreen)
7002 Include iMath library in pgcrypto to have the public-key encryption
7003 functions always available.
7008 Add SHA224 algorithm that was missing in OpenBSD code.
7013 Activate builtin code for SHA224/256/384/512 hashes on older
7014 OpenSSL to have those algorithms always available.
7019 New function gen_random_bytes() that returns cryptographically strong
7020 randomness. Useful for generating encryption keys.
7025 Remove digest_exists(), hmac_exists() and cipher_exists() functions.
7033 Improvements to cube module (Joshua Reich)
7037 New functions are <function>cube(float[])</>,
7038 <function>cube(float[], float[])</>, and
7039 <function>cube_subset(cube, int4[])</>.
7045 Add async query capability to dblink (Kai Londenberg,
7052 New operators for array-subset comparisons (<literal>@></>,
7053 <literal><@</>, <literal>&&</>) (Tom)
7057 Various contrib packages already had these operators for their
7058 datatypes, but the naming wasn't consistent. We have now added
7059 consistently named array-subset comparison operators to the core code
7060 and all the contrib packages that have such functionality.
7061 (The old names remain available, but are deprecated.)
7067 Add uninstall scripts for all contrib packages that have install
7068 scripts (David, Josh Drake)