1 <!-- doc/src/sgml/release-8.4.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
4 <sect1 id="release-8-4-7">
5 <title>Release 8.4.7</title>
8 <title>Release date</title>
9 <simpara>2011-01-31</simpara>
13 This release contains a variety of fixes from 8.4.6.
14 For information about new features in the 8.4 major release, see
15 <xref linkend="release-8-4">.
19 <title>Migration to Version 8.4.7</title>
22 A dump/restore is not required for those running 8.4.X.
23 However, if you are upgrading from a version earlier than 8.4.2,
24 see the release notes for 8.4.2.
30 <title>Changes</title>
36 Avoid failures when <command>EXPLAIN</> tries to display a simple-form
37 <literal>CASE</> expression (Tom Lane)
41 If the <literal>CASE</>'s test expression was a constant, the planner
42 could simplify the <literal>CASE</> into a form that confused the
43 expression-display code, resulting in <quote>unexpected CASE WHEN
50 Fix assignment to an array slice that is before the existing range
51 of subscripts (Tom Lane)
55 If there was a gap between the newly added subscripts and the first
56 pre-existing subscript, the code miscalculated how many entries needed
57 to be copied from the old array's null bitmap, potentially leading to
58 data corruption or crash.
64 Avoid unexpected conversion overflow in planner for very distant date
69 The <type>date</> type supports a wider range of dates than can be
70 represented by the <type>timestamp</> types, but the planner assumed it
71 could always convert a date to timestamp with impunity.
77 Fix <application>pg_restore</>'s text output for large objects (BLOBs)
78 when <varname>standard_conforming_strings</> is on (Tom Lane)
82 Although restoring directly to a database worked correctly, string
83 escaping was incorrect if <application>pg_restore</> was asked for
84 SQL text output and <varname>standard_conforming_strings</> had been
85 enabled in the source database.
91 Fix erroneous parsing of <type>tsquery</> values containing
92 <literal>... & !(subexpression) | ...</literal> (Tom Lane)
96 Queries containing this combination of operators were not executed
97 correctly. The same error existed in <filename>contrib/intarray</>'s
98 <type>query_int</> type and <filename>contrib/ltree</>'s
99 <type>ltxtquery</> type.
105 Fix bug in <filename>contrib/seg</>'s GiST picksplit algorithm
110 This could result in considerable inefficiency, though not actually
111 incorrect answers, in a GiST index on a <type>seg</> column.
112 If you have such an index, consider <command>REINDEX</>ing it after
113 installing this update. (This is identical to the bug that was fixed in
114 <filename>contrib/cube</> in the previous update.)
123 <sect1 id="release-8-4-6">
124 <title>Release 8.4.6</title>
127 <title>Release date</title>
128 <simpara>2010-12-16</simpara>
132 This release contains a variety of fixes from 8.4.5.
133 For information about new features in the 8.4 major release, see
134 <xref linkend="release-8-4">.
138 <title>Migration to Version 8.4.6</title>
141 A dump/restore is not required for those running 8.4.X.
142 However, if you are upgrading from a version earlier than 8.4.2,
143 see the release notes for 8.4.2.
149 <title>Changes</title>
156 <link linkend="guc-wal-sync-method"><varname>wal_sync_method</></link>
157 to be <literal>fdatasync</> on Linux (Tom Lane, Marti Raudsepp)
161 The default on Linux has actually been <literal>fdatasync</> for many
162 years, but recent kernel changes caused <productname>PostgreSQL</> to
163 choose <literal>open_datasync</> instead. This choice did not result
164 in any performance improvement, and caused outright failures on
165 certain filesystems, notably <literal>ext4</> with the
166 <literal>data=journal</> mount option.
172 Fix assorted bugs in WAL replay logic for GIN indexes (Tom Lane)
176 This could result in <quote>bad buffer id: 0</> failures or
177 corruption of index contents during replication.
183 Fix recovery from base backup when the starting checkpoint WAL record
184 is not in the same WAL segment as its redo point (Jeff Davis)
190 Fix persistent slowdown of autovacuum workers when multiple workers
191 remain active for a long time (Tom Lane)
195 The effective <varname>vacuum_cost_limit</> for an autovacuum worker
196 could drop to nearly zero if it processed enough tables, causing it
197 to run extremely slowly.
203 Add support for detecting register-stack overrun on <literal>IA64</>
208 The <literal>IA64</> architecture has two hardware stacks. Full
209 prevention of stack-overrun failures requires checking both.
215 Add a check for stack overflow in <function>copyObject()</> (Tom Lane)
219 Certain code paths could crash due to stack overflow given a
220 sufficiently complex query.
226 Fix detection of page splits in temporary GiST indexes (Heikki
231 It is possible to have a <quote>concurrent</> page split in a
232 temporary index, if for example there is an open cursor scanning the
233 index when an insertion is done. GiST failed to detect this case and
234 hence could deliver wrong results when execution of the cursor
241 Fix error checking during early connection processing (Tom Lane)
245 The check for too many child processes was skipped in some cases,
246 possibly leading to postmaster crash when attempting to add the new
247 child process to fixed-size arrays.
253 Improve efficiency of window functions (Tom Lane)
257 Certain cases where a large number of tuples needed to be read in
258 advance, but <varname>work_mem</> was large enough to allow them all
259 to be held in memory, were unexpectedly slow.
260 <function>percent_rank()</>, <function>cume_dist()</> and
261 <function>ntile()</> in particular were subject to this problem.
267 Avoid memory leakage while <command>ANALYZE</>'ing complex index
268 expressions (Tom Lane)
274 Ensure an index that uses a whole-row Var still depends on its table
279 An index declared like <literal>create index i on t (foo(t.*))</>
280 would not automatically get dropped when its table was dropped.
286 Do not <quote>inline</> a SQL function with multiple <literal>OUT</>
287 parameters (Tom Lane)
291 This avoids a possible crash due to loss of information about the
292 expected result rowtype.
298 Behave correctly if <literal>ORDER BY</>, <literal>LIMIT</>,
299 <literal>FOR UPDATE</>, or <literal>WITH</> is attached to the
300 <literal>VALUES</> part of <literal>INSERT ... VALUES</> (Tom Lane)
306 Fix constant-folding of <literal>COALESCE()</> expressions (Tom Lane)
310 The planner would sometimes attempt to evaluate sub-expressions that
311 in fact could never be reached, possibly leading to unexpected errors.
317 Fix postmaster crash when connection acceptance
318 (<function>accept()</> or one of the calls made immediately after it)
319 fails, and the postmaster was compiled with GSSAPI support (Alexander
326 Fix missed unlink of temporary files when <varname>log_temp_files</>
331 If an error occurred while attempting to emit the log message, the
332 unlink was not done, resulting in accumulation of temp files.
338 Add print functionality for <structname>InhRelation</> nodes (Tom Lane)
342 This avoids a failure when <varname>debug_print_parse</> is enabled
343 and certain types of query are executed.
349 Fix incorrect calculation of distance from a point to a horizontal
350 line segment (Tom Lane)
354 This bug affected several different geometric distance-measurement
361 Fix incorrect calculation of transaction status in
362 <application>ecpg</> (Itagaki Takahiro)
368 Fix <application>PL/pgSQL</>'s handling of <quote>simple</>
369 expressions to not fail in recursion or error-recovery cases (Tom Lane)
375 Fix <application>PL/Python</>'s handling of set-returning functions
380 Attempts to call SPI functions within the iterator generating a set
387 Fix bug in <filename>contrib/cube</>'s GiST picksplit algorithm
392 This could result in considerable inefficiency, though not actually
393 incorrect answers, in a GiST index on a <type>cube</> column.
394 If you have such an index, consider <command>REINDEX</>ing it after
395 installing this update.
401 Don't emit <quote>identifier will be truncated</> notices in
402 <filename>contrib/dblink</> except when creating new connections
409 Fix potential coredump on missing public key in
410 <filename>contrib/pgcrypto</> (Marti Raudsepp)
416 Fix memory leak in <filename>contrib/xml2</>'s XPath query functions
423 Update time zone data files to <application>tzdata</> release 2010o
424 for DST law changes in Fiji and Samoa;
425 also historical corrections for Hong Kong.
434 <sect1 id="release-8-4-5">
435 <title>Release 8.4.5</title>
438 <title>Release date</title>
439 <simpara>2010-10-04</simpara>
443 This release contains a variety of fixes from 8.4.4.
444 For information about new features in the 8.4 major release, see
445 <xref linkend="release-8-4">.
449 <title>Migration to Version 8.4.5</title>
452 A dump/restore is not required for those running 8.4.X.
453 However, if you are upgrading from a version earlier than 8.4.2,
454 see the release notes for 8.4.2.
460 <title>Changes</title>
466 Use a separate interpreter for each calling SQL userid in PL/Perl and
471 This change prevents security problems that can be caused by subverting
472 Perl or Tcl code that will be executed later in the same session under
473 another SQL user identity (for example, within a <literal>SECURITY
474 DEFINER</> function). Most scripting languages offer numerous ways that
475 that might be done, such as redefining standard functions or operators
476 called by the target function. Without this change, any SQL user with
477 Perl or Tcl language usage rights can do essentially anything with the
478 SQL privileges of the target function's owner.
482 The cost of this change is that intentional communication among Perl
483 and Tcl functions becomes more difficult. To provide an escape hatch,
484 PL/PerlU and PL/TclU functions continue to use only one interpreter
485 per session. This is not considered a security issue since all such
486 functions execute at the trust level of a database superuser already.
490 It is likely that third-party procedural languages that claim to offer
491 trusted execution have similar security issues. We advise contacting
492 the authors of any PL you are depending on for security-critical
497 Our thanks to Tim Bunce for pointing out this issue (CVE-2010-3433).
503 Prevent possible crashes in <function>pg_get_expr()</> by disallowing
504 it from being called with an argument that is not one of the system
505 catalog columns it's intended to be used with
506 (Heikki Linnakangas, Tom Lane)
512 Treat exit code 128 (<literal>ERROR_WAIT_NO_CHILDREN</>) as non-fatal on
513 Windows (Magnus Hagander)
517 Under high load, Windows processes will sometimes fail at startup with
518 this error code. Formerly the postmaster treated this as a panic
519 condition and restarted the whole database, but that seems to be
526 Fix incorrect placement of placeholder evaluation (Tom Lane)
530 This bug could result in query outputs being non-null when they
531 should be null, in cases where the inner side of an outer join
532 is a sub-select with non-strict expressions in its output list.
538 Fix possible duplicate scans of <literal>UNION ALL</> member relations
545 Fix <quote>cannot handle unplanned sub-select</quote> error (Tom Lane)
549 This occurred when a sub-select contains a join alias reference that
550 expands into an expression containing another sub-select.
556 Fix mishandling of whole-row Vars that reference a view or sub-select
557 and appear within a nested sub-select (Tom Lane)
563 Fix mishandling of cross-type <literal>IN</> comparisons (Tom Lane)
567 This could result in failures if the planner tried to implement an
568 <literal>IN</> join with a sort-then-unique-then-plain-join plan.
574 Fix computation of <command>ANALYZE</> statistics for <type>tsvector</>
575 columns (Jan Urbanski)
579 The original coding could produce incorrect statistics, leading to
580 poor plan choices later.
586 Improve planner's estimate of memory used by <function>array_agg()</>,
587 <function>string_agg()</>, and similar aggregate functions
592 The previous drastic underestimate could lead to out-of-memory failures
593 due to inappropriate choice of a hash-aggregation plan.
599 Fix failure to mark cached plans as transient (Tom Lane)
603 If a plan is prepared while <command>CREATE INDEX CONCURRENTLY</> is
604 in progress for one of the referenced tables, it is supposed to be
605 re-planned once the index is ready for use. This was not happening
612 Reduce PANIC to ERROR in some occasionally-reported btree failure cases,
613 and provide additional detail in the resulting error messages
618 This should improve the system's robustness with corrupted indexes.
624 Fix incorrect search logic for partial-match queries with GIN indexes
629 Cases involving AND/OR combination of several GIN index conditions
630 didn't always give the right answer, and were sometimes much slower
637 Prevent show_session_authorization() from crashing within autovacuum
644 Defend against functions returning setof record where not all the
645 returned rows are actually of the same rowtype (Tom Lane)
651 Fix possible corruption of pending trigger event lists during
652 subtransaction rollback (Tom Lane)
656 This could lead to a crash or incorrect firing of triggers.
662 Fix possible failure when hashing a pass-by-reference function result
669 Improve merge join's handling of NULLs in the join columns (Tom Lane)
673 A merge join can now stop entirely upon reaching the first NULL,
674 if the sort order is such that NULLs sort high.
680 Take care to fsync the contents of lockfiles (both
681 <filename>postmaster.pid</> and the socket lockfile) while writing them
686 This omission could result in corrupted lockfile contents if the
687 machine crashes shortly after postmaster start. That could in turn
688 prevent subsequent attempts to start the postmaster from succeeding,
689 until the lockfile is manually removed.
695 Avoid recursion while assigning XIDs to heavily-nested
696 subtransactions (Andres Freund, Robert Haas)
700 The original coding could result in a crash if there was limited
707 Avoid holding open old WAL segments in the walwriter process
708 (Magnus Hagander, Heikki Linnakangas)
712 The previous coding would prevent removal of no-longer-needed segments.
718 Fix <varname>log_line_prefix</>'s <literal>%i</> escape,
719 which could produce junk early in backend startup (Tom Lane)
725 Prevent misinterpretation of partially-specified relation options
726 for TOAST tables (Itagaki Takahiro)
730 In particular, <literal>fillfactor</> would be read as zero if any
731 other reloption had been set for the table, leading to serious bloat.
737 Fix inheritance count tracking in <command>ALTER TABLE ... ADD
738 CONSTRAINT</> (Robert Haas)
744 Fix possible data corruption in <command>ALTER TABLE ... SET
745 TABLESPACE</> when archiving is enabled (Jeff Davis)
751 Allow <command>CREATE DATABASE</> and <command>ALTER DATABASE ... SET
752 TABLESPACE</> to be interrupted by query-cancel (Guillaume Lelarge)
758 Improve <command>CREATE INDEX</>'s checking of whether proposed index
759 expressions are immutable (Tom Lane)
765 Fix <command>REASSIGN OWNED</> to handle operator classes and families
772 Fix possible core dump when comparing two empty <type>tsquery</> values
779 Fix <literal>LIKE</>'s handling of patterns containing <literal>%</>
780 followed by <literal>_</> (Tom Lane)
784 We've fixed this before, but there were still some incorrectly-handled
791 Re-allow input of Julian dates prior to 0001-01-01 AD (Tom Lane)
795 Input such as <literal>'J100000'::date</> worked before 8.4,
796 but was unintentionally broken by added error-checking.
802 Fix PL/pgSQL to throw an error, not crash, if a cursor is closed within
803 a <literal>FOR</> loop that is iterating over that cursor
810 In PL/Python, defend against null pointer results from
811 <function>PyCObject_AsVoidPtr</> and <function>PyCObject_FromVoidPtr</>
818 In <application>libpq</>, fix full SSL certificate verification for the
819 case where both <literal>host</> and <literal>hostaddr</> are specified
826 Make psql recognize <command>DISCARD ALL</> as a command that should
827 not be encased in a transaction block in autocommit-off mode
834 Fix some issues in <application>pg_dump</>'s handling of SQL/MED objects
839 Notably, <application>pg_dump</> would always fail if run by a
840 non-superuser, which was not intended.
846 Improve <application>pg_dump</> and <application>pg_restore</>'s
847 handling of non-seekable archive files (Tom Lane, Robert Haas)
851 This is important for proper functioning of parallel restore.
857 Improve parallel pg_restore's ability to cope with selective restore
858 (<literal>-L</> option) (Tom Lane)
862 The original code tended to fail if the <literal>-L</> file commanded
863 a non-default restore ordering.
869 Fix <application>ecpg</> to process data from <literal>RETURNING</>
870 clauses correctly (Michael Meskes)
876 Fix some memory leaks in <application>ecpg</> (Zoltan Boszormenyi)
882 Improve <filename>contrib/dblink</>'s handling of tables containing
883 dropped columns (Tom Lane)
889 Fix connection leak after <quote>duplicate connection name</quote>
890 errors in <filename>contrib/dblink</> (Itagaki Takahiro)
896 Fix <filename>contrib/dblink</> to handle connection names longer than
897 62 bytes correctly (Itagaki Takahiro)
903 Add <function>hstore(text, text)</>
904 function to <filename>contrib/hstore</> (Robert Haas)
908 This function is the recommended substitute for the now-deprecated
909 <literal>=></> operator. It was back-patched so that future-proofed
910 code can be used with older server versions. Note that the patch will
911 be effective only after <filename>contrib/hstore</> is installed or
912 reinstalled in a particular database. Users might prefer to execute
913 the <command>CREATE FUNCTION</> command by hand, instead.
919 Update build infrastructure and documentation to reflect the source code
920 repository's move from CVS to Git (Magnus Hagander and others)
926 Update time zone data files to <application>tzdata</> release 2010l
927 for DST law changes in Egypt and Palestine; also historical corrections
932 This change also adds new names for two Micronesian timezones:
933 Pacific/Chuuk is now preferred over Pacific/Truk (and the preferred
934 abbreviation is CHUT not TRUT) and Pacific/Pohnpei is preferred over
941 Make Windows' <quote>N. Central Asia Standard Time</> timezone map to
942 Asia/Novosibirsk, not Asia/Almaty (Magnus Hagander)
946 Microsoft changed the DST behavior of this zone in the timezone update
947 from KB976098. Asia/Novosibirsk is a better match to its new behavior.
956 <sect1 id="release-8-4-4">
957 <title>Release 8.4.4</title>
960 <title>Release date</title>
961 <simpara>2010-05-17</simpara>
965 This release contains a variety of fixes from 8.4.3.
966 For information about new features in the 8.4 major release, see
967 <xref linkend="release-8-4">.
971 <title>Migration to Version 8.4.4</title>
974 A dump/restore is not required for those running 8.4.X.
975 However, if you are upgrading from a version earlier than 8.4.2,
976 see the release notes for 8.4.2.
982 <title>Changes</title>
988 Enforce restrictions in <literal>plperl</> using an opmask applied to
989 the whole interpreter, instead of using <filename>Safe.pm</>
990 (Tim Bunce, Andrew Dunstan)
994 Recent developments have convinced us that <filename>Safe.pm</> is too
995 insecure to rely on for making <literal>plperl</> trustable. This
996 change removes use of <filename>Safe.pm</> altogether, in favor of using
997 a separate interpreter with an opcode mask that is always applied.
998 Pleasant side effects of the change include that it is now possible to
999 use Perl's <literal>strict</> pragma in a natural way in
1000 <literal>plperl</>, and that Perl's <literal>$a</> and <literal>$b</>
1001 variables work as expected in sort routines, and that function
1002 compilation is significantly faster. (CVE-2010-1169)
1008 Prevent PL/Tcl from executing untrustworthy code from
1009 <structname>pltcl_modules</> (Tom)
1013 PL/Tcl's feature for autoloading Tcl code from a database table
1014 could be exploited for trojan-horse attacks, because there was no
1015 restriction on who could create or insert into that table. This change
1016 disables the feature unless <structname>pltcl_modules</> is owned by a
1017 superuser. (However, the permissions on the table are not checked, so
1018 installations that really need a less-than-secure modules table can
1019 still grant suitable privileges to trusted non-superusers.) Also,
1020 prevent loading code into the unrestricted <quote>normal</> Tcl
1021 interpreter unless we are really going to execute a <literal>pltclu</>
1022 function. (CVE-2010-1170)
1028 Fix data corruption during WAL replay of
1029 <literal>ALTER ... SET TABLESPACE</> (Tom)
1033 When <varname>archive_mode</> is on, <literal>ALTER ... SET TABLESPACE</>
1034 generates a WAL record whose replay logic was incorrect. It could write
1035 the data to the wrong place, leading to possibly-unrecoverable data
1036 corruption. Data corruption would be observed on standby slaves, and
1037 could occur on the master as well if a database crash and recovery
1038 occurred after committing the <literal>ALTER</> and before the next
1045 Fix possible crash if a cache reset message is received during
1046 rebuild of a relcache entry (Heikki)
1050 This error was introduced in 8.4.3 while fixing a related failure.
1056 Apply per-function GUC settings while running the language validator
1057 for the function (Itagaki Takahiro)
1061 This avoids failures if the function's code is invalid without the
1062 setting; an example is that SQL functions may not parse if the
1063 <varname>search_path</> is not correct.
1069 Do constraint exclusion for inherited <command>UPDATE</> and
1070 <command>DELETE</> target tables when
1071 <varname>constraint_exclusion</> = <literal>partition</> (Tom)
1075 Due to an oversight, this setting previously only caused constraint
1076 exclusion to be checked in <command>SELECT</> commands.
1082 Do not allow an unprivileged user to reset superuser-only parameter
1087 Previously, if an unprivileged user ran <literal>ALTER USER ... RESET
1088 ALL</> for himself, or <literal>ALTER DATABASE ... RESET ALL</> for
1089 a database he owns, this would remove all special parameter settings
1090 for the user or database, even ones that are only supposed to be
1091 changeable by a superuser. Now, the <command>ALTER</> will only
1092 remove the parameters that the user has permission to change.
1098 Avoid possible crash during backend shutdown if shutdown occurs
1099 when a <literal>CONTEXT</> addition would be made to log entries (Tom)
1103 In some cases the context-printing function would fail because the
1104 current transaction had already been rolled back when it came time
1105 to print a log message.
1111 Fix erroneous handling of <literal>%r</> parameter in
1112 <varname>recovery_end_command</> (Heikki)
1116 The value always came out zero.
1122 Ensure the archiver process responds to changes in
1123 <varname>archive_command</> as soon as possible (Tom)
1129 Fix pl/pgsql's <literal>CASE</> statement to not fail when the
1130 case expression is a query that returns no rows (Tom)
1136 Update pl/perl's <filename>ppport.h</> for modern Perl versions
1143 Fix assorted memory leaks in pl/python (Andreas Freund, Tom)
1149 Handle empty-string connect parameters properly in ecpg (Michael)
1155 Prevent infinite recursion in <application>psql</> when expanding
1156 a variable that refers to itself (Tom)
1162 Fix <application>psql</>'s <literal>\copy</> to not add spaces around
1163 a dot within <literal>\copy (select ...)</> (Tom)
1167 Addition of spaces around the decimal point in a numeric literal would
1168 result in a syntax error.
1174 Avoid formatting failure in <application>psql</> when running in a
1175 locale context that doesn't match the <varname>client_encoding</>
1182 Fix unnecessary <quote>GIN indexes do not support whole-index scans</>
1183 errors for unsatisfiable queries using <filename>contrib/intarray</>
1190 Ensure that <filename>contrib/pgstattuple</> functions respond to cancel
1191 interrupts promptly (Tatsuhito Kasahara)
1197 Make server startup deal properly with the case that
1198 <function>shmget()</> returns <literal>EINVAL</> for an existing
1199 shared memory segment (Tom)
1203 This behavior has been observed on BSD-derived kernels including OS X.
1204 It resulted in an entirely-misleading startup failure complaining that
1205 the shared memory request size was too large.
1211 Avoid possible crashes in syslogger process on Windows (Heikki)
1217 Deal more robustly with incomplete time zone information in the
1218 Windows registry (Magnus)
1224 Update the set of known Windows time zone names (Magnus)
1230 Update time zone data files to <application>tzdata</> release 2010j
1231 for DST law changes in Argentina, Australian Antarctic, Bangladesh,
1232 Mexico, Morocco, Pakistan, Palestine, Russia, Syria, Tunisia;
1233 also historical corrections for Taiwan.
1237 Also, add <literal>PKST</> (Pakistan Summer Time) to the default set of
1238 timezone abbreviations.
1247 <sect1 id="release-8-4-3">
1248 <title>Release 8.4.3</title>
1251 <title>Release date</title>
1252 <simpara>2010-03-15</simpara>
1256 This release contains a variety of fixes from 8.4.2.
1257 For information about new features in the 8.4 major release, see
1258 <xref linkend="release-8-4">.
1262 <title>Migration to Version 8.4.3</title>
1265 A dump/restore is not required for those running 8.4.X.
1266 However, if you are upgrading from a version earlier than 8.4.2,
1267 see the release notes for 8.4.2.
1273 <title>Changes</title>
1279 Add new configuration parameter <varname>ssl_renegotiation_limit</> to
1280 control how often we do session key renegotiation for an SSL connection
1285 This can be set to zero to disable renegotiation completely, which may
1286 be required if a broken SSL library is used. In particular, some
1287 vendors are shipping stopgap patches for CVE-2009-3555 that cause
1288 renegotiation attempts to fail.
1294 Fix possible deadlock during backend startup (Tom)
1300 Fix possible crashes due to not handling errors during relcache reload
1307 Fix possible crash due to use of dangling pointer to a cached plan
1314 Fix possible crash due to overenthusiastic invalidation of cached
1315 plan for <command>ROLLBACK</> (Tom)
1321 Fix possible crashes when trying to recover from a failure in
1322 subtransaction start (Tom)
1328 Fix server memory leak associated with use of savepoints and a client
1329 encoding different from server's encoding (Tom)
1335 Fix incorrect WAL data emitted during end-of-recovery cleanup of a GIST
1336 index page split (Yoichi Hirai)
1340 This would result in index corruption, or even more likely an error
1341 during WAL replay, if we were unlucky enough to crash during
1342 end-of-recovery cleanup after having completed an incomplete GIST
1349 Fix bug in WAL redo cleanup method for GIN indexes (Heikki)
1355 Fix incorrect comparison of scan key in GIN index search (Teodor)
1361 Make <function>substring()</> for <type>bit</> types treat any negative
1362 length as meaning <quote>all the rest of the string</> (Tom)
1366 The previous coding treated only -1 that way, and would produce an
1367 invalid result value for other negative values, possibly leading to
1368 a crash (CVE-2010-0442).
1374 Fix integer-to-bit-string conversions to handle the first fractional
1375 byte correctly when the output bit width is wider than the given
1376 integer by something other than a multiple of 8 bits (Tom)
1382 Fix some cases of pathologically slow regular expression matching (Tom)
1388 Fix bug occurring when trying to inline a SQL function that returns
1389 a set of a composite type that contains dropped columns (Tom)
1395 Fix bug with trying to update a field of an element of a
1396 composite-type array column (Tom)
1402 Avoid failure when <command>EXPLAIN</> has to print a FieldStore or
1403 assignment ArrayRef expression (Tom)
1407 These cases can arise now that <command>EXPLAIN VERBOSE</> tries to
1408 print plan node target lists.
1414 Avoid an unnecessary coercion failure in some cases where an undecorated
1415 literal string appears in a subquery within
1416 <command>UNION</>/<command>INTERSECT</>/<command>EXCEPT</> (Tom)
1420 This fixes a regression for some cases that worked before 8.4.
1426 Avoid undesirable rowtype compatibility check failures in some cases
1427 where a whole-row Var has a rowtype that contains dropped columns (Tom)
1433 Fix the <literal>STOP WAL LOCATION</> entry in backup history files to
1434 report the next WAL segment's name when the end location is exactly at a
1435 segment boundary (Itagaki Takahiro)
1441 Always pass the catalog ID to an option validator function specified in
1442 <command>CREATE FOREIGN DATA WRAPPER</> (Martin Pihlak)
1448 Fix some more cases of temporary-file leakage (Heikki)
1452 This corrects a problem introduced in the previous minor release.
1453 One case that failed is when a plpgsql function returning set is
1454 called within another function's exception handler.
1460 Add support for doing <literal>FULL JOIN ON FALSE</> (Tom)
1464 This prevents a regression from pre-8.4 releases for some queries that
1465 can now be simplified to a constant-false join condition.
1471 Improve constraint exclusion processing of boolean-variable cases,
1472 in particular make it possible to exclude a partition that has a
1473 <quote>bool_column = false</> constraint (Tom)
1479 Prevent treating an <literal>INOUT</> cast as representing binary
1480 compatibility (Heikki)
1486 Include column name in the message when warning about inability to
1487 grant or revoke column-level privileges (Stephen Frost)
1491 This is more useful than before and helps to prevent confusion when
1492 a <command>REVOKE</> generates multiple messages, which formerly
1493 appeared to be duplicates.
1499 When reading <filename>pg_hba.conf</> and related files, do not treat
1500 <literal>@something</> as a file inclusion request if the <literal>@</>
1501 appears inside quote marks; also, never treat <literal>@</> by itself
1502 as a file inclusion request (Tom)
1506 This prevents erratic behavior if a role or database name starts with
1507 <literal>@</>. If you need to include a file whose path name
1508 contains spaces, you can still do so, but you must write
1509 <literal>@"/path to/file"</> rather than putting the quotes around
1510 the whole construct.
1516 Prevent infinite loop on some platforms if a directory is named as
1517 an inclusion target in <filename>pg_hba.conf</> and related files
1524 Fix possible infinite loop if <function>SSL_read</> or
1525 <function>SSL_write</> fails without setting <varname>errno</> (Tom)
1529 This is reportedly possible with some Windows versions of
1530 <application>openssl</>.
1536 Disallow <acronym>GSSAPI</> authentication on local connections,
1537 since it requires a hostname to function correctly (Magnus)
1543 Protect <application>ecpg</> against applications freeing strings
1544 unexpectedly (Michael)
1550 Make <application>ecpg</> report the proper SQLSTATE if the connection
1551 disappears (Michael)
1557 Fix translation of cell contents in <application>psql</> <literal>\d</>
1564 Fix <application>psql</>'s <literal>numericlocale</> option to not
1565 format strings it shouldn't in latex and troff output formats (Heikki)
1571 Fix a small per-query memory leak in <application>psql</> (Tom)
1577 Make <application>psql</> return the correct exit status (3) when
1578 <literal>ON_ERROR_STOP</> and <literal>--single-transaction</> are
1579 both specified and an error occurs during the implied <command>COMMIT</>
1586 Fix <application>pg_dump</>'s output of permissions for foreign servers
1593 Fix possible crash in parallel <application>pg_restore</> due to
1594 out-of-range dependency IDs (Tom)
1600 Fix plpgsql failure in one case where a composite column is set to NULL
1607 Fix possible failure when calling PL/Perl functions from PL/PerlU
1608 or vice versa (Tim Bunce)
1614 Add <literal>volatile</> markings in PL/Python to avoid possible
1615 compiler-specific misbehavior (Zdenek Kotala)
1621 Ensure PL/Tcl initializes the Tcl interpreter fully (Tom)
1625 The only known symptom of this oversight is that the Tcl
1626 <literal>clock</> command misbehaves if using Tcl 8.5 or later.
1632 Prevent <function>ExecutorEnd</> from being run on portals created
1633 within a failed transaction or subtransaction (Tom)
1637 This is known to cause issues when using
1638 <filename>contrib/auto_explain</>.
1644 Prevent crash in <filename>contrib/dblink</> when too many key
1645 columns are specified to a <function>dblink_build_sql_*</> function
1646 (Rushabh Lathia, Joe Conway)
1652 Allow zero-dimensional arrays in <filename>contrib/ltree</> operations
1657 This case was formerly rejected as an error, but it's more convenient to
1658 treat it the same as a zero-element array. In particular this avoids
1659 unnecessary failures when an <type>ltree</> operation is applied to the
1660 result of <literal>ARRAY(SELECT ...)</> and the sub-select returns no
1667 Fix assorted crashes in <filename>contrib/xml2</> caused by sloppy
1668 memory management (Tom)
1674 Make building of <filename>contrib/xml2</> more robust on Windows
1681 Fix race condition in Windows signal handling (Radu Ilie)
1685 One known symptom of this bug is that rows in <structname>pg_listener</>
1686 could be dropped under heavy load.
1692 Make the configure script report failure if the C compiler does
1693 not provide a working 64-bit integer datatype (Tom)
1697 This case has been broken for some time, and no longer seems worth
1698 supporting, so just reject it at configure time instead.
1704 Update time zone data files to <application>tzdata</> release 2010e
1705 for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa.
1714 <sect1 id="release-8-4-2">
1715 <title>Release 8.4.2</title>
1718 <title>Release date</title>
1719 <simpara>2009-12-14</simpara>
1723 This release contains a variety of fixes from 8.4.1.
1724 For information about new features in the 8.4 major release, see
1725 <xref linkend="release-8-4">.
1729 <title>Migration to Version 8.4.2</title>
1732 A dump/restore is not required for those running 8.4.X.
1733 However, if you have any hash indexes,
1734 you should <command>REINDEX</> them after updating to 8.4.2,
1735 to repair possible damage.
1741 <title>Changes</title>
1747 Protect against indirect security threats caused by index functions
1748 changing session-local state (Gurjeet Singh, Tom)
1752 This change prevents allegedly-immutable index functions from possibly
1753 subverting a superuser's session (CVE-2009-4136).
1759 Reject SSL certificates containing an embedded null byte in the common
1760 name (CN) field (Magnus)
1764 This prevents unintended matching of a certificate to a server or client
1765 name during SSL validation (CVE-2009-4034).
1771 Fix hash index corruption (Tom)
1775 The 8.4 change that made hash indexes keep entries sorted by hash value
1776 failed to update the bucket splitting and compaction routines to
1777 preserve the ordering. So application of either of those operations
1778 could lead to permanent corruption of an index, in the sense that
1779 searches might fail to find entries that are present. To deal with
1780 this, it is recommended to <literal>REINDEX</> any hash indexes you may
1781 have after installing this update.
1787 Fix possible crash during backend-startup-time cache initialization (Tom)
1793 Avoid crash on empty thesaurus dictionary (Tom)
1799 Prevent signals from interrupting <literal>VACUUM</> at unsafe times
1804 This fix prevents a PANIC if a <literal>VACUUM FULL</> is cancelled
1805 after it's already committed its tuple movements, as well as transient
1806 errors if a plain <literal>VACUUM</> is interrupted after having
1807 truncated the table.
1813 Fix possible crash due to integer overflow in hash table size
1818 This could occur with extremely large planner estimates for the size of
1819 a hashjoin's result.
1825 Fix crash if a <literal>DROP</> is attempted on an internally-dependent
1832 Fix very rare crash in <type>inet</>/<type>cidr</> comparisons (Chris
1839 Ensure that shared tuple-level locks held by prepared transactions are
1840 not ignored (Heikki)
1846 Fix premature drop of temporary files used for a cursor that is accessed
1847 within a subtransaction (Heikki)
1853 Fix memory leak in syslogger process when rotating to a new CSV logfile
1860 Fix memory leak in postmaster when re-parsing <filename>pg_hba.conf</>
1867 Fix Windows permission-downgrade logic (Jesse Morris)
1871 This fixes some cases where the database failed to start on Windows,
1872 often with misleading error messages such as <quote>could not locate
1873 matching postgres executable</quote>.
1879 Make <literal>FOR UPDATE/SHARE</> in the primary query not propagate
1880 into <literal>WITH</> queries (Tom)
1886 WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE
1888 the <literal>FOR UPDATE</> will now affect <literal>bar</> but not
1889 <literal>foo</>. This is more useful and consistent than the original
1890 8.4 behavior, which tried to propagate <literal>FOR UPDATE</> into the
1891 <literal>WITH</> query but always failed due to assorted implementation
1892 restrictions. It also follows the design rule that <literal>WITH</>
1893 queries are executed as if independent of the main query.
1899 Fix bug with a <literal>WITH RECURSIVE</> query immediately inside
1906 Fix concurrency bug in hash indexes (Tom)
1910 Concurrent insertions could cause index scans to transiently report
1917 Fix incorrect logic for GiST index page splits, when the split depends
1918 on a non-first column of the index (Paul Ramsey)
1924 Fix wrong search results for a multi-column GIN index with
1925 <literal>fastupdate</> enabled (Teodor)
1931 Fix bugs in WAL entry creation for GIN indexes (Tom)
1935 These bugs were masked when <varname>full_page_writes</> was on, but
1936 with it off a WAL replay failure was certain if a crash occurred before
1937 the next checkpoint.
1943 Don't error out if recycling or removing an old WAL file fails at the
1944 end of checkpoint (Heikki)
1948 It's better to treat the problem as non-fatal and allow the checkpoint
1949 to complete. Future checkpoints will retry the removal. Such problems
1950 are not expected in normal operation, but have been seen to be
1951 caused by misdesigned Windows anti-virus and backup software.
1957 Ensure WAL files aren't repeatedly archived on Windows (Heikki)
1961 This is another symptom that could happen if some other process
1962 interfered with deletion of a no-longer-needed file.
1968 Fix PAM password processing to be more robust (Tom)
1972 The previous code is known to fail with the combination of the Linux
1973 <literal>pam_krb5</> PAM module with Microsoft Active Directory as the
1974 domain controller. It might have problems elsewhere too, since it was
1975 making unjustified assumptions about what arguments the PAM stack would
1982 Raise the maximum authentication token (Kerberos ticket) size in GSSAPI
1983 and SSPI authentication methods (Ian Turner)
1987 While the old 2000-byte limit was more than enough for Unix Kerberos
1988 implementations, tickets issued by Windows Domain Controllers can be
1995 Ensure that domain constraints are enforced in constructs like
1996 <literal>ARRAY[...]::domain</>, where the domain is over an array type
2003 Fix foreign-key logic for some cases involving composite-type columns
2004 as foreign keys (Tom)
2010 Ensure that a cursor's snapshot is not modified after it is created
2015 This could lead to a cursor delivering wrong results if later operations
2016 in the same transaction modify the data the cursor is supposed to return.
2022 Fix <literal>CREATE TABLE</> to properly merge default expressions
2023 coming from different inheritance parent tables (Tom)
2027 This used to work but was broken in 8.4.
2033 Re-enable collection of access statistics for sequences (Akira Kurosawa)
2037 This used to work but was broken in 8.3.
2043 Fix processing of ownership dependencies during <literal>CREATE OR
2044 REPLACE FUNCTION</> (Tom)
2050 Fix incorrect handling of <literal>WHERE</>
2051 <replaceable>x</>=<replaceable>x</> conditions (Tom)
2055 In some cases these could get ignored as redundant, but they aren't
2056 — they're equivalent to <replaceable>x</> <literal>IS NOT NULL</>.
2062 Fix incorrect plan construction when using hash aggregation to implement
2063 <literal>DISTINCT</> for textually identical volatile expressions (Tom)
2069 Fix Assert failure for a volatile <literal>SELECT DISTINCT ON</>
2076 Fix <function>ts_stat()</> to not fail on an empty <type>tsvector</>
2083 Make text search parser accept underscores in XML attributes (Peter)
2089 Fix encoding handling in <type>xml</> binary input (Heikki)
2093 If the XML header doesn't specify an encoding, we now assume UTF-8 by
2094 default; the previous handling was inconsistent.
2100 Fix bug with calling <literal>plperl</> from <literal>plperlu</> or vice
2105 An error exit from the inner function could result in crashes due to
2106 failure to re-select the correct Perl interpreter for the outer function.
2112 Fix session-lifespan memory leak when a PL/Perl function is redefined
2119 Ensure that Perl arrays are properly converted to
2120 <productname>PostgreSQL</> arrays when returned by a set-returning
2121 PL/Perl function (Andrew Dunstan, Abhijit Menon-Sen)
2125 This worked correctly already for non-set-returning functions.
2131 Fix rare crash in exception processing in PL/Python (Peter)
2137 Fix <application>ecpg</> problem with comments in <literal>DECLARE
2138 CURSOR</> statements (Michael)
2144 Fix <application>ecpg</> to not treat recently-added keywords as
2145 reserved words (Tom)
2149 This affected the keywords <literal>CALLED</>, <literal>CATALOG</>,
2150 <literal>DEFINER</>, <literal>ENUM</>, <literal>FOLLOWING</>,
2151 <literal>INVOKER</>, <literal>OPTIONS</>, <literal>PARTITION</>,
2152 <literal>PRECEDING</>, <literal>RANGE</>, <literal>SECURITY</>,
2153 <literal>SERVER</>, <literal>UNBOUNDED</>, and <literal>WRAPPER</>.
2159 Re-allow regular expression special characters in <application>psql</>'s
2160 <literal>\df</> function name parameter (Tom)
2166 In <filename>contrib/fuzzystrmatch</>, correct the calculation of
2167 <function>levenshtein</> distances with non-default costs (Marcin Mank)
2173 In <filename>contrib/pg_standby</>, disable triggering failover with a
2174 signal on Windows (Fujii Masao)
2178 This never did anything useful, because Windows doesn't have Unix-style
2179 signals, but recent changes made it actually crash.
2185 Put <literal>FREEZE</> and <literal>VERBOSE</> options in the right
2186 order in the <literal>VACUUM</> command that
2187 <filename>contrib/vacuumdb</> produces (Heikki)
2193 Fix possible leak of connections when <filename>contrib/dblink</>
2194 encounters an error (Tatsuhito Kasahara)
2200 Ensure <application>psql</>'s flex module is compiled with the correct
2201 system header definitions (Tom)
2205 This fixes build failures on platforms where
2206 <literal>--enable-largefile</> causes incompatible changes in the
2213 Make the postmaster ignore any <literal>application_name</> parameter in
2214 connection request packets, to improve compatibility with future libpq
2221 Update the timezone abbreviation files to match current reality (Joachim
2226 This includes adding <literal>IDT</> to the default
2227 timezone abbreviation set.
2233 Update time zone data files to <application>tzdata</> release 2009s
2234 for DST law changes in Antarctica, Argentina, Bangladesh, Fiji,
2235 Novokuznetsk, Pakistan, Palestine, Samoa, Syria; also historical
2236 corrections for Hong Kong.
2245 <sect1 id="release-8-4-1">
2246 <title>Release 8.4.1</title>
2249 <title>Release date</title>
2250 <simpara>2009-09-09</simpara>
2254 This release contains a variety of fixes from 8.4.
2255 For information about new features in the 8.4 major release, see
2256 <xref linkend="release-8-4">.
2260 <title>Migration to Version 8.4.1</title>
2263 A dump/restore is not required for those running 8.4.X.
2269 <title>Changes</title>
2275 Fix WAL page header initialization at the end of archive recovery
2280 This could lead to failure to process the WAL in a subsequent
2287 Fix <quote>cannot make new WAL entries during recovery</> error (Tom)
2293 Fix problem that could make expired rows visible after a crash (Tom)
2297 This bug involved a page status bit potentially not being set
2298 correctly after a server crash.
2304 Disallow <command>RESET ROLE</> and <command>RESET SESSION
2305 AUTHORIZATION</> inside security-definer functions (Tom, Heikki)
2309 This covers a case that was missed in the previous patch that
2310 disallowed <command>SET ROLE</> and <command>SET SESSION
2311 AUTHORIZATION</> inside security-definer functions.
2318 Make <command>LOAD</> of an already-loaded loadable module
2323 Formerly, <command>LOAD</> would attempt to unload and re-load the
2324 module, but this is unsafe and not all that useful.
2330 Make window function <literal>PARTITION BY</> and <literal>ORDER BY</>
2331 items always be interpreted as simple expressions (Tom)
2335 In 8.4.0 these lists were parsed following the rules used for
2336 top-level <literal>GROUP BY</> and <literal>ORDER BY</> lists.
2337 But this was not correct per the SQL standard, and it led to possible
2344 Fix several errors in planning of semi-joins (Tom)
2348 These led to wrong query results in some cases where <literal>IN</>
2349 or <literal>EXISTS</> was used together with another join.
2355 Fix handling of whole-row references to subqueries that are within
2361 <literal>SELECT COUNT(ss.*) FROM ... LEFT JOIN (SELECT ...) ss ON ...</>.
2362 Here, <literal>ss.*</> would be treated as <literal>ROW(NULL,NULL,...)</>
2363 for null-extended join rows, which is not the same as a simple NULL.
2364 Now it is treated as a simple NULL.
2370 Fix Windows shared-memory allocation code (Tsutomu Yamada, Magnus)
2374 This bug led to the often-reported <quote>could not reattach
2375 to shared memory</> error message.
2381 Fix locale handling with plperl (Heikki)
2385 This bug could cause the server's locale setting to change when a
2386 plperl function is called, leading to data corruption.
2392 Fix handling of reloptions to ensure setting one option doesn't
2393 force default values for others (Itagaki Takahiro)
2399 Ensure that a <quote>fast shutdown</> request will forcibly terminate
2400 open sessions, even if a <quote>smart shutdown</> was already in progress
2407 Avoid memory leak for <function>array_agg()</> in <literal>GROUP BY</>
2414 Treat <function>to_char(..., 'TH')</> as an uppercase ordinal
2415 suffix with <literal>'HH'</>/<literal>'HH12'</> (Heikki)
2419 It was previously handled as <literal>'th'</> (lowercase).
2425 Include the fractional part in the result of
2426 <function>EXTRACT(second)</> and
2427 <function>EXTRACT(milliseconds)</> for
2428 <type>time</> and <type>time with time zone</> inputs (Tom)
2432 This has always worked for floating-point datetime configurations,
2433 but was broken in the integer datetime code.
2439 Fix overflow for <literal>INTERVAL '<replaceable>x</> ms'</literal>
2440 when <replaceable>x</> is more than 2 million and integer
2441 datetimes are in use (Alex Hunsaker)
2447 Improve performance when processing toasted values in index scans (Tom)
2451 This is particularly useful for <ulink
2452 url="http://postgis.refractions.net/">PostGIS</ulink>.
2458 Fix a typo that disabled <varname>commit_delay</> (Jeff Janes)
2464 Output early-startup messages to <filename>postmaster.log</> if the
2465 server is started in silent mode (Tom)
2469 Previously such error messages were discarded, leading to
2470 difficulty in debugging.
2476 Remove translated FAQs (Peter)
2480 They are now on the <ulink
2481 url="http://wiki.postgresql.org/wiki/FAQ">wiki</ulink>. The
2482 main FAQ was moved to the wiki some time ago.
2488 Fix <application>pg_ctl</> to not go into an infinite loop if
2489 <filename>postgresql.conf</> is empty (Jeff Davis)
2495 Fix several errors in <application>pg_dump</>'s
2496 <literal>--binary-upgrade</> mode (Bruce, Tom)
2500 <literal>pg_dump --binary-upgrade</> is used by pg_migrator.
2506 Fix <filename>contrib/xml2</>'s <function>xslt_process()</> to
2507 properly handle the maximum number of parameters (twenty) (Tom)
2513 Improve robustness of <application>libpq</>'s code to recover
2514 from errors during <command>COPY FROM STDIN</> (Tom)
2520 Avoid including conflicting readline and editline header files
2521 when both libraries are installed (Zdenek Kotala)
2527 Work around gcc bug that causes <quote>floating-point exception</>
2528 instead of <quote>division by zero</> on some platforms (Tom)
2534 Update time zone data files to <application>tzdata</> release 2009l
2535 for DST law changes in Bangladesh, Egypt, Mauritius.
2544 <sect1 id="release-8-4">
2545 <title>Release 8.4</title>
2548 <title>Release date</title>
2549 <simpara>2009-07-01</simpara>
2553 <title>Overview</title>
2556 After many years of development, <productname>PostgreSQL</> has
2557 become feature-complete in many areas. This release shows a
2558 targeted approach to adding features (e.g., authentication,
2559 monitoring, space reuse), and adds capabilities defined in the
2560 later SQL standards. The major areas of enhancement are:
2565 <!-- This list duplicates items below, but without authors or details-->
2575 Common Table Expressions and Recursive Queries
2581 Default and variadic parameters for functions
2599 Per-database locale settings
2605 Improved hash indexes
2611 Improved join performance for <literal>EXISTS</> and <literal>NOT EXISTS</> queries
2617 Easier-to-use Warm Standby
2623 Automatic sizing of the Free Space Map
2629 Visibility Map (greatly reduces vacuum overhead for slowly-changing tables)
2635 Version-aware psql (backslash commands work against older servers)
2641 Support SSL certificates for user authentication
2647 Per-function runtime statistics
2653 Easy editing of functions in psql
2659 New contrib modules: pg_stat_statements, auto_explain, citext, btree_gin
2666 The above items are explained in more detail in the sections below.
2672 <title>Migration to Version 8.4</title>
2675 A dump/restore using <application>pg_dump</application> is
2676 required for those wishing to migrate data from any previous
2681 Observe the following incompatibilities:
2685 <title>General</title>
2690 Use 64-bit integer datetimes by default (Neil Conway)
2694 Previously this was selected by <application>configure</>'s
2695 <option>--enable-integer-datetimes</> option. To retain
2696 the old behavior, build with <option>--disable-integer-datetimes</>.
2702 Remove <application>ipcclean</> utility command (Bruce)
2706 The utility only worked on a few platforms. Users should use
2707 their operating system tools instead.
2716 <title>Server Settings</title>
2721 Change default setting for
2722 <literal>log_min_messages</> to <literal>warning</> (previously
2723 it was <literal>notice</>) to reduce log file volume (Tom)
2729 Change default setting for <literal>max_prepared_transactions</> to
2730 zero (previously it was 5) (Tom)
2736 Make <literal>debug_print_parse</>, <literal>debug_print_rewritten</>,
2737 and <literal>debug_print_plan</>
2738 output appear at <literal>LOG</> message level, not
2739 <literal>DEBUG1</> as formerly (Tom)
2745 Make <literal>debug_pretty_print</> default to <literal>on</> (Tom)
2751 Remove <varname>explain_pretty_print</> parameter (no longer needed) (Tom)
2757 Make <varname>log_temp_files</> settable by superusers only, like other
2758 logging options (Simon Riggs)
2764 Remove automatic appending of the epoch timestamp when no <literal>%</>
2765 escapes are present in <literal>log_filename</> (Robert Haas)
2769 This change was made because some users wanted a fixed log filename,
2770 for use with an external log rotation tool.
2776 Remove <varname>log_restartpoints</> from <filename>recovery.conf</>;
2777 instead use <varname>log_checkpoints</> (Simon)
2783 Remove <varname>krb_realm</> and <varname>krb_server_hostname</>;
2784 these are now set in <filename>pg_hba.conf</> instead (Magnus)
2790 There are also significant changes in <link
2791 linkend="release-8-4-pg-hba-conf"><filename>pg_hba.conf</></link>,
2801 <title>Queries</title>
2807 Change <command>TRUNCATE</> and <command>LOCK</> to
2808 apply to child tables of the specified table(s) (Peter)
2812 These commands now accept an <literal>ONLY</> option that prevents
2813 processing child tables; this option must be used if the old
2820 <command>SELECT DISTINCT</> and
2821 <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</>
2822 no longer always produce sorted output (Tom)
2826 Previously, these types of queries always removed duplicate rows
2827 by means of Sort/Unique processing (i.e., sort then remove adjacent
2828 duplicates). Now they can be implemented by hashing, which will not
2829 produce sorted output. If an application relied on the output being
2830 in sorted order, the recommended fix is to add an <literal>ORDER BY</>
2831 clause. As a short-term workaround, the previous behavior can be
2832 restored by disabling <literal>enable_hashagg</>, but that is a very
2833 performance-expensive fix. <literal>SELECT DISTINCT ON</> never uses
2834 hashing, however, so its behavior is unchanged.
2840 Force child tables to inherit <literal>CHECK</> constraints from parents
2841 (Alex Hunsaker, Nikhil Sontakke, Tom)
2845 Formerly it was possible to drop such a constraint from a child
2846 table, allowing rows that violate the constraint to be visible
2847 when scanning the parent table. This was deemed inconsistent,
2848 as well as contrary to SQL standard.
2854 Disallow negative <literal>LIMIT</> or <literal>OFFSET</>
2855 values, rather than treating them as zero (Simon)
2861 Disallow <command>LOCK TABLE</> outside a transaction block
2866 Such an operation is useless because the lock would be released
2873 Sequences now contain an additional <structfield>start_value</> column
2874 (Zoltan Boszormenyi)
2878 This supports <command>ALTER SEQUENCE ... RESTART</>.
2888 <title>Functions and Operators</title>
2894 Make <type>numeric</> zero raised to a fractional power return
2895 <literal>0</>, rather than throwing an error, and make
2896 <type>numeric</> zero raised to the zero power return <literal>1</>,
2897 rather than error (Bruce)
2901 This matches the longstanding <type>float8</> behavior.
2907 Allow unary minus of floating-point values to produce minus zero (Tom)
2911 The changed behavior is more <acronym>IEEE</>-standard
2918 Throw an error if an escape character is the last character in
2919 a <literal>LIKE</> pattern (i.e., it has nothing to escape) (Tom)
2923 Previously, such an escape character was silently ignored,
2924 thus possibly masking application logic errors.
2930 Remove <literal>~=~</> and <literal>~<>~</> operators
2931 formerly used for <literal>LIKE</> index comparisons (Tom)
2935 Pattern indexes now use the regular equality operator.
2941 <function>xpath()</> now passes its arguments to <application>libxml</>
2942 without any changes (Andrew)
2946 This means that the XML argument must be a well-formed XML document.
2947 The previous coding attempted to allow XML fragments, but it did not
2954 Make <function>xmlelement()</> format attribute values just like
2955 content values (Peter)
2959 Previously, attribute values were formatted according to the
2960 normal SQL output behavior, which is sometimes at odds with
2967 Rewrite memory management for <application>libxml</>-using functions
2972 This change should avoid some compatibility problems with use of
2973 <application>libxml</> in PL/Perl and other add-on code.
2979 Adopt a faster algorithm for hash functions (Kenneth Marshall,
2980 based on work of Bob Jenkins)
2984 Many of the built-in hash functions now deliver different results on
2985 little-endian and big-endian platforms.
2992 <title>Temporal Functions and Operators</title>
2998 <varname>DateStyle</> no longer controls <type>interval</> output
2999 formatting; instead there is a new variable <varname>IntervalStyle</>
3006 Improve consistency of handling of fractional seconds in
3007 <type>timestamp</> and <type>interval</> output (Ron Mayer)
3011 This may result in displaying a different number of fractional
3012 digits than before, or rounding instead of truncating.
3018 Make <function>to_char()</>'s localized month/day names depend
3019 on <varname>LC_TIME</>, not <varname>LC_MESSAGES</> (Euler
3020 Taveira de Oliveira)
3026 Cause <function>to_date()</> and <function>to_timestamp()</>
3027 to more consistently report errors for invalid input (Brendan
3032 Previous versions would often ignore or silently misread input
3033 that did not match the format string. Such cases will now
3040 Fix <function>to_timestamp()</> to not require upper/lower case
3041 matching for meridian (<literal>AM</>/<literal>PM</>) and era
3042 (<literal>BC</>/<literal>AD</>) format designations (Brendan
3047 For example, input value <literal>ad</> now matches the format
3048 string <literal>AD</>.
3061 <title>Changes</title>
3064 Below you will find a detailed account of the changes between
3065 <productname>PostgreSQL</productname> 8.4 and the previous major
3070 <title>Performance</title>
3075 Improve optimizer statistics calculations (Jan Urbanski, Tom)
3079 In particular, estimates for full-text-search operators are
3086 Allow <command>SELECT DISTINCT</> and
3087 <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> to
3092 This means that these types of queries no longer automatically
3093 produce sorted output.
3099 Create explicit concepts of semi-joins and anti-joins (Tom)
3103 This work formalizes our previous ad-hoc treatment of <literal>IN
3104 (SELECT ...)</> clauses, and extends it to <literal>EXISTS</> and
3105 <literal>NOT EXISTS</> clauses. It should result in significantly
3106 better planning of <literal>EXISTS</> and <literal>NOT EXISTS</>
3107 queries. In general, logically equivalent <literal>IN</> and
3108 <literal>EXISTS</> clauses should now have similar performance,
3109 whereas previously <literal>IN</> often won.
3115 Improve optimization of sub-selects beneath outer joins (Tom)
3119 Formerly, a sub-select or view could not be optimized very well if it
3120 appeared within the nullable side of an outer join and contained
3121 non-strict expressions (for instance, constants) in its result list.
3127 Improve the performance of <function>text_position()</> and
3128 related functions by using Boyer-Moore-Horspool searching (David
3133 This is particularly helpful for long search patterns.
3139 Reduce I/O load of writing the statistics collection file
3140 by writing the file only when requested (Martin Pihlak)
3146 Improve performance for bulk inserts (Robert Haas, Simon)
3152 Increase the default value of <varname>default_statistics_target</>
3153 from <literal>10</> to <literal>100</> (Greg Sabino Mullane,
3158 The maximum value was also increased from <literal>1000</> to
3165 Perform <varname>constraint_exclusion</> checking by default
3166 in queries involving inheritance or <literal>UNION ALL</> (Tom)
3170 A new <varname>constraint_exclusion</> setting,
3171 <literal>partition</>, was added to specify this behavior.
3177 Allow I/O read-ahead for bitmap index scans (Greg Stark)
3181 The amount of read-ahead is controlled by
3182 <varname>effective_io_concurrency</>. This feature is available only
3183 if the kernel has <function>posix_fadvise()</> support.
3189 Inline simple set-returning <acronym>SQL</> functions in
3190 <literal>FROM</> clauses (Richard Rowell)
3196 Improve performance of multi-batch hash joins by providing a special
3197 case for join key values that are especially common in the outer
3198 relation (Bryce Cutt, Ramon Lawrence)
3204 Reduce volume of temporary data in multi-batch hash joins
3205 by suppressing <quote>physical tlist</> optimization (Michael
3206 Henderson, Ramon Lawrence)
3212 Avoid waiting for idle-in-transaction sessions during
3213 <command>CREATE INDEX CONCURRENTLY</> (Simon)
3219 Improve performance of shared cache invalidation (Tom)
3228 <title>Server</title>
3231 <title>Settings</title>
3237 Convert many <filename>postgresql.conf</> settings to enumerated
3238 values so that <literal>pg_settings</> can display the valid
3245 Add <varname>cursor_tuple_fraction</> parameter to control the
3246 fraction of a cursor's rows that the planner assumes will be
3247 fetched (Robert Hell)
3253 Allow underscores in the names of custom variable
3254 classes in <filename>postgresql.conf</> (Tom)
3263 <title>Authentication and security</title>
3268 Remove support for the (insecure) <literal>crypt</> authentication method
3273 This effectively obsoletes pre-<productname>PostgreSQL</> 7.2 client
3274 libraries, as there is no longer any non-plaintext password method that
3281 Support regular expressions in <filename>pg_ident.conf</>
3288 Allow <productname>Kerberos</>/<acronym>GSSAPI</> parameters
3289 to be changed without restarting the postmaster (Magnus)
3295 Support <acronym>SSL</> certificate chains in server certificate
3296 file (Andrew Gierth)
3300 Including the full certificate chain makes the client able
3301 to verify the certificate without having all intermediate CA
3302 certificates present in the local store, which is often the case for
3309 Report appropriate error message for combination of <literal>MD5</>
3310 authentication and <varname>db_user_namespace</> enabled (Bruce)
3317 <sect4 id="release-8-4-pg-hba-conf">
3318 <title><filename>pg_hba.conf</></title>
3323 Change all authentication options to use <literal>name=value</>
3328 This makes incompatible changes to the <literal>ldap</>,
3329 <literal>pam</> and <literal>ident</> authentication methods. All
3330 <filename>pg_hba.conf</> entries with these methods need to be
3331 rewritten using the new format.
3337 Remove the <literal>ident sameuser</> option, instead making that
3338 behavior the default if no usermap is specified (Magnus)
3344 Allow a usermap parameter for all external authentication methods
3349 Previously a usermap was only supported for <literal>ident</>
3356 Add <literal>clientcert</> option to control requesting of a
3357 client certificate (Magnus)
3361 Previously this was controlled by the presence of a root
3362 certificate file in the server's data directory.
3368 Add <literal>cert</> authentication method to allow
3369 <emphasis>user</> authentication via <acronym>SSL</> certificates
3374 Previously <acronym>SSL</> certificates could only verify that
3375 the client had access to a certificate, not authenticate a
3382 Allow <literal>krb5</>, <literal>gssapi</> and <literal>sspi</>
3383 realm and <literal>krb5</> host settings to be specified in
3384 <filename>pg_hba.conf</> (Magnus)
3388 These override the settings in <filename>postgresql.conf</>.
3394 Add <varname>include_realm</> parameter for <literal>krb5</>,
3395 <literal>gssapi</>, and <literal>sspi</> methods (Magnus)
3399 This allows identical usernames from different realms to be
3400 authenticated as different database users using usermaps.
3406 Parse <filename>pg_hba.conf</> fully when it is loaded,
3407 so that errors are reported immediately (Magnus)
3411 Previously, most errors in the file wouldn't be detected until clients
3412 tried to connect, so an erroneous file could render the system
3413 unusable. With the new behavior, if an error is detected during
3414 reload then the bad file is rejected and the postmaster continues
3415 to use its old copy.
3421 Show all parsing errors in <filename>pg_hba.conf</> instead of
3422 aborting after the first one (Selena Deckelmann)
3428 Support <literal>ident</> authentication over Unix-domain sockets
3429 on <productname>Solaris</> (Garick Hamlin)
3438 <title>Continuous Archiving</title>
3443 Provide an option to <function>pg_start_backup()</> to force its
3444 implied checkpoint to finish as quickly as possible (Tom)
3448 The default behavior avoids excess I/O consumption, but that is
3449 pointless if no concurrent query activity is going on.
3455 Make <function>pg_stop_backup()</> wait for modified <acronym>WAL</>
3456 files to be archived (Simon)
3460 This guarantees that the backup is valid at the time
3461 <function>pg_stop_backup()</> completes.
3467 When archiving is enabled, rotate the last WAL segment at shutdown
3468 so that all transactions can be archived immediately
3469 (Guillaume Smet, Heikki)
3475 Delay <quote>smart</> shutdown while a continuous archiving base backup
3476 is in progress (Laurenz Albe)
3482 Cancel a continuous archiving base backup if <quote>fast</> shutdown
3483 is requested (Laurenz Albe)
3489 Allow <filename>recovery.conf</> boolean variables to take the
3490 same range of string values as <filename>postgresql.conf</>
3501 <title>Monitoring</title>
3506 Add <function>pg_conf_load_time()</> to report when
3507 the <productname>PostgreSQL</> configuration files were last loaded
3514 Add <function>pg_terminate_backend()</> to safely terminate a
3515 backend (the <literal>SIGTERM</> signal works also) (Tom, Bruce)
3519 While it's always been possible to <literal>SIGTERM</> a single
3520 backend, this was previously considered unsupported; and testing
3521 of the case found some bugs that are now fixed.
3527 Add ability to track user-defined functions' call counts and
3528 runtimes (Martin Pihlak)
3532 Function statistics appear in a new system view,
3533 <literal>pg_stat_user_functions</>. Tracking is controlled
3534 by the new parameter <varname>track_functions</>.
3540 Allow specification of the maximum query string size in
3541 <literal>pg_stat_activity</> via new
3542 <varname>track_activity_query_size</> parameter (Thomas Lee)
3548 Increase the maximum line length sent to <application>syslog</>, in
3549 hopes of improving performance (Tom)
3555 Add read-only configuration variables <varname>segment_size</>,
3556 <varname>wal_block_size</>, and <varname>wal_segment_size</>
3563 When reporting a deadlock, report the text of all queries involved
3564 in the deadlock to the server log (Itagaki Takahiro)
3570 Add <function>pg_stat_get_activity(pid)</> function to return
3571 information about a specific process id (Magnus)
3577 Allow the location of the server's statistics file to be specified
3578 via <varname>stats_temp_directory</> (Magnus)
3582 This allows the statistics file to be placed in a
3583 <acronym>RAM</>-resident directory to reduce I/O requirements.
3584 On startup/shutdown, the file is copied to its traditional location
3585 (<literal>$PGDATA/global/</>) so it is preserved across restarts.
3596 <title>Queries</title>
3601 Add support for <literal>WINDOW</> functions (Hitoshi Harada)
3607 Add support for <literal>WITH</> clauses (CTEs), including <literal>WITH
3608 RECURSIVE</> (Yoshiyuki Asaba, Tatsuo Ishii, Tom)
3614 Add <command>TABLE</> command (Peter)
3618 <literal>TABLE tablename</> is a SQL standard short-hand for
3619 <literal>SELECT * FROM tablename</>.
3625 Allow <literal>AS</> to be optional when specifying a
3626 <command>SELECT</> (or <literal>RETURNING</>) column output
3627 label (Hiroshi Saito)
3631 This works so long as the column label is not any
3632 <productname>PostgreSQL</> keyword; otherwise <literal>AS</> is still
3639 Support set-returning functions in <command>SELECT</> result lists
3640 even for functions that return their result via a tuplestore (Tom)
3644 In particular, this means that functions written in PL/pgSQL
3645 and other PL languages can now be called this way.
3651 Support set-returning functions in the output of aggregation
3652 and grouping queries (Tom)
3658 Allow <command>SELECT FOR UPDATE</>/<literal>SHARE</> to work
3659 on inheritance trees (Tom)
3665 Add infrastructure for <acronym>SQL/MED</> (Martin Pihlak,
3670 There are no remote or external <acronym>SQL/MED</> capabilities
3671 yet, but this change provides a standardized and future-proof
3672 system for managing connection information for modules like
3673 <filename>dblink</> and <filename>plproxy</>.
3679 Invalidate cached plans when referenced schemas, functions, operators,
3680 or operator classes are modified (Martin Pihlak, Tom)
3684 This improves the system's ability to respond to on-the-fly
3690 Allow comparison of composite types and allow arrays of
3691 anonymous composite types (Tom)
3695 This allows constructs such as
3696 <literal>row(1, 1.1) = any (array[row(7, 7.7), row(1, 1.0)])</>.
3697 This is particularly useful in recursive queries.
3703 Add support for Unicode string literal and identifier specifications
3704 using code points, e.g. <literal>U&'d\0061t\+000061'</>
3711 Reject <literal>\000</> in string literals and <command>COPY</> data
3716 Previously, this was accepted but had the effect of terminating
3717 the string contents.
3723 Improve the parser's ability to report error locations (Tom)
3727 An error location is now reported for many semantic errors,
3728 such as mismatched datatypes, that previously could not be localized.
3735 <title><command>TRUNCATE</></title>
3740 Support statement-level <literal>ON TRUNCATE</> triggers (Simon)
3746 Add <literal>RESTART</>/<literal>CONTINUE IDENTITY</> options
3747 for <command>TRUNCATE TABLE</>
3748 (Zoltan Boszormenyi)
3752 The start value of a sequence can be changed by <command>ALTER
3753 SEQUENCE START WITH</>.
3759 Allow <command>TRUNCATE tab1, tab1</> to succeed (Bruce)
3765 Add a separate <command>TRUNCATE</> permission (Robert Haas)
3774 <title><command>EXPLAIN</></title>
3779 Make <command>EXPLAIN VERBOSE</> show the output columns of each
3784 Previously <command>EXPLAIN VERBOSE</> output an internal
3785 representation of the query plan. (That behavior is now
3786 available via <varname>debug_print_plan</>.)
3792 Make <command>EXPLAIN</> identify subplans and initplans with
3793 individual labels (Tom)
3799 Make <command>EXPLAIN</> honor <varname>debug_print_plan</> (Tom)
3805 Allow <command>EXPLAIN</> on <command>CREATE TABLE AS</> (Peter)
3814 <title><literal>LIMIT</>/<literal>OFFSET</></title>
3819 Allow sub-selects in <literal>LIMIT</> and <literal>OFFSET</> (Tom)
3825 Add <acronym>SQL</>-standard syntax for
3826 <literal>LIMIT</>/<literal>OFFSET</> capabilities (Peter)
3831 <literal>OFFSET num {ROW|ROWS} FETCH {FIRST|NEXT} [num] {ROW|ROWS}
3843 <title>Object Manipulation</title>
3848 Add support for column-level privileges (Stephen Frost, KaiGai
3855 Refactor multi-object <command>DROP</> operations to reduce the
3856 need for <literal>CASCADE</> (Alex Hunsaker)
3860 For example, if table <literal>B</> has a dependency on table
3861 <literal>A</>, the command <literal>DROP TABLE A, B</> no longer
3862 requires the <literal>CASCADE</> option.
3868 Fix various problems with concurrent <command>DROP</> commands
3869 by ensuring that locks are taken before we begin to drop dependencies
3876 Improve reporting of dependencies during <command>DROP</>
3883 Add <literal>WITH [NO] DATA</> clause to <command>CREATE TABLE
3884 AS</>, per the <acronym>SQL</> standard (Peter, Tom)
3890 Add support for user-defined I/O conversion casts (Heikki)
3896 Allow <command>CREATE AGGREGATE</> to use an <type>internal</>
3897 transition datatype (Tom)
3903 Add <literal>LIKE</> clause to <command>CREATE TYPE</> (Tom)
3907 This simplifies creation of data types that use the same internal
3908 representation as an existing type.
3914 Allow specification of the type category and <quote>preferred</>
3915 status for user-defined base types (Tom)
3919 This allows more control over the coercion behavior of user-defined
3926 Allow <command>CREATE OR REPLACE VIEW</> to add columns to the
3927 end of a view (Robert Haas)
3934 <title><command>ALTER</></title>
3939 Add <command>ALTER TYPE RENAME</> (Petr Jelinek)
3945 Add <command>ALTER SEQUENCE ... RESTART</> (with no parameter) to
3946 reset a sequence to its initial value (Zoltan Boszormenyi)
3952 Modify the <command>ALTER TABLE</> syntax to allow all reasonable
3953 combinations for tables, indexes, sequences, and views (Tom)
3957 This change allows the following new syntaxes:
3962 <command>ALTER SEQUENCE OWNER TO</>
3967 <command>ALTER VIEW ALTER COLUMN SET/DROP DEFAULT</>
3972 <command>ALTER VIEW OWNER TO</>
3977 <command>ALTER VIEW SET SCHEMA</>
3982 There is no actual new functionality here, but formerly
3983 you had to say <command>ALTER TABLE</> to do these things,
3984 which was confusing.
3990 Add support for the syntax <command>ALTER TABLE ... ALTER COLUMN
3991 ... SET DATA TYPE</> (Peter)
3995 This is <acronym>SQL</>-standard syntax for functionality that
3996 was already supported.
4002 Make <command>ALTER TABLE SET WITHOUT OIDS</> rewrite the table
4003 to physically remove <type>OID</> values (Tom)
4007 Also, add <command>ALTER TABLE SET WITH OIDS</> to rewrite the
4008 table to add <type>OID</>s.
4017 <title>Database Manipulation</title>
4022 Improve reporting of
4023 <command>CREATE</>/<command>DROP</>/<command>RENAME DATABASE</>
4024 failure when uncommitted prepared transactions are the cause
4031 Make <varname>LC_COLLATE</> and <varname>LC_CTYPE</> into
4032 per-database settings (Radek Strnad, Heikki)
4036 This makes collation similar to encoding, which was always
4037 configurable per database.
4043 Improve checks that the database encoding, collation
4044 (<varname>LC_COLLATE</>), and character classes
4045 (<varname>LC_CTYPE</>) match (Heikki, Tom)
4049 Note in particular that a new database's encoding and locale
4050 settings can be changed only when copying from <literal>template0</>.
4051 This prevents possibly copying data that doesn't match the settings.
4057 Add <command>ALTER DATABASE SET TABLESPACE</> to move a database
4058 to a new tablespace (Guillaume Lelarge, Bernd Helmle)
4069 <title>Utility Operations</title>
4075 Add a <literal>VERBOSE</> option to the <command>CLUSTER</> command and
4076 <application>clusterdb</> (Jim Cox)
4082 Decrease memory requirements for recording pending trigger
4090 <title>Indexes</title>
4095 Dramatically improve the speed of building and accessing hash
4096 indexes (Tom Raney, Shreya Bhargava)
4100 This allows hash indexes to be sometimes faster than btree
4101 indexes. However, hash indexes are still not crash-safe.
4107 Make hash indexes store only the hash code, not the full value of
4108 the indexed column (Xiao Meng)
4112 This greatly reduces the size of hash indexes for long indexed
4113 values, improving performance.
4119 Implement fast update option for GIN indexes (Teodor, Oleg)
4123 This option greatly improves update speed at a small penalty in search
4130 <literal>xxx_pattern_ops</> indexes can now be used for simple
4131 equality comparisons, not only for <literal>LIKE</> (Tom)
4140 <title>Full Text Indexes</title>
4145 Remove the requirement to use <literal>@@@</> when doing
4146 <acronym>GIN</> weighted lookups on full text indexes (Tom, Teodor)
4150 The normal <literal>@@</> text search operator can be used
4157 Add an optimizer selectivity function for <literal>@@</> text
4158 search operations (Jan Urbanski)
4164 Allow prefix matching in full text searches (Teodor Sigaev,
4171 Support multi-column <acronym>GIN</> indexes (Teodor Sigaev)
4177 Improve support for Nepali language and Devanagari alphabet (Teodor)
4186 <title><command>VACUUM</></title>
4191 Track free space in separate per-relation <quote>fork</> files (Heikki)
4195 Free space discovered by <command>VACUUM</> is now recorded in
4196 <filename>*_fsm</> files, rather than in a fixed-sized shared memory
4197 area. The <varname>max_fsm_pages</> and <varname>max_fsm_relations</>
4198 settings have been removed, greatly simplifying administration of
4199 free space management.
4205 Add a visibility map to track pages that do not require
4210 This allows <command>VACUUM</> to avoid scanning all of
4211 a table when only a portion of the table needs vacuuming.
4212 The visibility map is stored in per-relation <quote>fork</> files.
4218 Add <varname>vacuum_freeze_table_age</> parameter to control
4219 when <command>VACUUM</> should ignore the visibility map and
4220 do a full table scan to freeze tuples (Heikki)
4226 Track transaction snapshots more carefully (Alvaro)
4230 This improves <command>VACUUM</>'s ability to reclaim space
4231 in the presence of long-running transactions.
4237 Add ability to specify per-relation autovacuum and <acronym>TOAST</>
4238 parameters in <command>CREATE TABLE</> (Alvaro, Euler Taveira de
4243 Autovacuum options used to be stored in a system table.
4249 Add <literal>--freeze</> option to <application>vacuumdb</>
4261 <title>Data Types</title>
4266 Add a <literal>CaseSensitive</> option for text search synonym
4267 dictionaries (Simon)
4273 Improve the precision of <type>NUMERIC</> division (Tom)
4279 Add basic arithmetic operators for <type>int2</> with <type>int8</>
4284 This eliminates the need for explicit casting in some situations.
4290 Allow <type>UUID</> input to accept an optional hyphen after
4291 every fourth digit (Robert Haas)
4297 Allow <literal>on</>/<literal>off</> as input for the boolean data type
4304 Allow spaces around <literal>NaN</> in the input string for
4305 type <type>numeric</> (Sam Mason)
4312 <title>Temporal Data Types</title>
4317 Reject year <literal>0 BC</> and years <literal>000</> and
4318 <literal>0000</> (Tom)
4322 Previously these were interpreted as <literal>1 BC</>.
4323 (Note: years <literal>0</> and <literal>00</> are still assumed to be
4330 Include <literal>SGT</> (Singapore time) in the default list of
4331 known time zone abbreviations (Tom)
4337 Support <literal>infinity</> and <literal>-infinity</> as
4338 values of type <type>date</> (Tom)
4344 Make parsing of <type>interval</> literals more standard-compliant
4349 For example, <literal>INTERVAL '1' YEAR</> now does what it's
4356 Allow <type>interval</> fractional-seconds precision to be specified
4357 after the <literal>second</> keyword, for <acronym>SQL</> standard
4362 Formerly the precision had to be specified after the keyword
4363 <type>interval</>. (For backwards compatibility, this syntax is still
4364 supported, though deprecated.) Data type definitions will now be
4365 output using the standard format.
4371 Support the <acronym>IS0 8601</> <type>interval</> syntax (Ron
4372 Mayer, Kevin Grittner)
4376 For example, <literal>INTERVAL 'P1Y2M3DT4H5M6.7S'</> is now
4383 Add <varname>IntervalStyle</> parameter
4384 which controls how <type>interval</> values are output (Ron Mayer)
4388 Valid values are: <literal>postgres</>, <literal>postgres_verbose</>,
4389 <literal>sql_standard</>, <literal>iso_8601</>. This setting also
4390 controls the handling of negative <type>interval</> input when only
4391 some fields have positive/negative designations.
4397 Improve consistency of handling of fractional seconds in
4398 <type>timestamp</> and <type>interval</> output (Ron Mayer)
4407 <title>Arrays</title>
4412 Improve the handling of casts applied to <literal>ARRAY[]</>
4413 constructs, such as <literal>ARRAY[...]::integer[]</>
4418 Formerly <productname>PostgreSQL</> attempted to determine a data type
4419 for the <literal>ARRAY[]</> construct without reference to the ensuing
4420 cast. This could fail unnecessarily in many cases, in particular when
4421 the <literal>ARRAY[]</> construct was empty or contained only
4422 ambiguous entries such as <literal>NULL</>. Now the cast is consulted
4423 to determine the type that the array elements must be.
4429 Make <acronym>SQL</>-syntax <type>ARRAY</> dimensions optional
4430 to match the <acronym>SQL</> standard (Peter)
4436 Add <function>array_ndims()</> to return the number
4437 of dimensions of an array (Robert Haas)
4443 Add <function>array_length()</> to return the length
4444 of an array for a specified dimension (Jim Nasby, Robert
4445 Haas, Peter Eisentraut)
4451 Add aggregate function <function>array_agg()</>, which
4452 returns all aggregated values as a single array (Robert Haas,
4459 Add <function>unnest()</>, which converts an array to
4460 individual row values (Tom)
4464 This is the opposite of <function>array_agg()</>.
4470 Add <function>array_fill()</> to create arrays initialized with
4471 a value (Pavel Stehule)
4477 Add <function>generate_subscripts()</> to simplify generating
4478 the range of an array's subscripts (Pavel Stehule)
4487 <title>Wide-Value Storage (<acronym>TOAST</>)</title>
4492 Consider <acronym>TOAST</> compression on values as short as
4493 32 bytes (previously 256 bytes) (Greg Stark)
4499 Require 25% minimum space savings before using <acronym>TOAST</>
4500 compression (previously 20% for small values and any-savings-at-all
4501 for large values) (Greg)
4507 Improve <acronym>TOAST</> heuristics for rows that have a mix of large
4508 and small toastable fields, so that we prefer to push large values out
4509 of line and don't compress small values unnecessarily (Greg, Tom)
4520 <title>Functions</title>
4525 Document that <function>setseed()</> allows values from
4526 <literal>-1</> to <literal>1</> (not just <literal>0</> to
4527 <literal>1</>), and enforce the valid range (Kris Jurka)
4533 Add server-side function <function>lo_import(filename, oid)</>
4540 Add <function>quote_nullable()</>, which behaves like
4541 <function>quote_literal()</> but returns the string <literal>NULL</> for
4542 a null argument (Brendan Jurd)
4548 Improve full text search <function>headline()</> function to
4549 allow extracting several fragments of text (Sushant Sinha)
4555 Add <function>suppress_redundant_updates_trigger()</> trigger
4556 function to avoid overhead for non-data-changing updates (Andrew)
4562 Add <function>div(numeric, numeric)</> to perform <type>numeric</>
4563 division without rounding (Tom)
4569 Add <type>timestamp</> and <type>timestamptz</> versions of
4570 <function>generate_series()</> (Hitoshi Harada)
4577 <title>Object Information Functions</title>
4582 Implement <function>current_query()</> for use by functions
4583 that need to know the currently running query (Tomas Doran)
4589 Add <function>pg_get_keywords()</> to return a list of the
4590 parser keywords (Dave Page)
4596 Add <function>pg_get_functiondef()</> to see a function's
4597 definition (Abhijit Menon-Sen)
4603 Allow the second argument of <function>pg_get_expr()</> to be zero
4604 when deparsing an expression that does not contain variables (Tom)
4610 Modify <function>pg_relation_size()</> to use <literal>regclass</>
4615 <function>pg_relation_size(data_type_name)</> no longer works.
4621 Add <literal>boot_val</> and <literal>reset_val</> columns to
4622 <literal>pg_settings</> output (Greg Smith)
4628 Add source file name and line number columns to
4629 <literal>pg_settings</> output for variables set in a configuration
4630 file (Magnus, Alvaro)
4634 For security reasons, these columns are only visible to superusers.
4640 Add support for <varname>CURRENT_CATALOG</>,
4641 <varname>CURRENT_SCHEMA</>, <varname>SET CATALOG</>, <varname>SET
4646 These provide <acronym>SQL</>-standard syntax for existing features.
4652 Add <function>pg_typeof()</> which returns the data type
4653 of any value (Brendan Jurd)
4659 Make <function>version()</> return information about whether
4660 the server is a 32- or 64-bit binary (Bruce)
4666 Fix the behavior of information schema columns
4667 <structfield>is_insertable_into</> and <structfield>is_updatable</> to
4668 be consistent (Peter)
4674 Improve the behavior of information schema
4675 <structfield>datetime_precision</> columns (Peter)
4679 These columns now show zero for <type>date</> columns, and 6
4680 (the default precision) for <type>time</>, <type>timestamp</>, and
4681 <type>interval</> without a declared precision, rather than showing
4688 Convert remaining builtin set-returning functions to use
4689 <literal>OUT</> parameters (Jaime Casanova)
4693 This makes it possible to call these functions without specifying
4694 a column list: <function>pg_show_all_settings()</>,
4695 <function>pg_lock_status()</>, <function>pg_prepared_xact()</>,
4696 <function>pg_prepared_statement()</>, <function>pg_cursor()</>
4702 Make <function>pg_*_is_visible()</> and
4703 <function>has_*_privilege()</> functions return <literal>NULL</>
4704 for invalid OIDs, rather than reporting an error (Tom)
4710 Extend <function>has_*_privilege()</> functions to allow inquiring
4711 about the OR of multiple privileges in one call (Stephen
4718 Add <function>has_column_privilege()</> and
4719 <function>has_any_column_privilege()</> functions (Stephen
4729 <title>Function Creation</title>
4734 Support variadic functions (functions with a variable number
4735 of arguments) (Pavel Stehule)
4739 Only trailing arguments can be optional, and they all must be
4740 of the same data type.
4746 Support default values for function arguments (Pavel Stehule)
4752 Add <command>CREATE FUNCTION ... RETURNS TABLE</> clause (Pavel
4759 Allow <acronym>SQL</>-language functions to return the output
4760 of an <command>INSERT</>/<command>UPDATE</>/<command>DELETE</>
4761 <literal>RETURNING</> clause (Tom)
4770 <title>PL/pgSQL Server-Side Language</title>
4775 Support <literal>EXECUTE USING</> for easier insertion of data
4776 values into a dynamic query string (Pavel Stehule)
4782 Allow looping over the results of a cursor using a <literal>FOR</>
4783 loop (Pavel Stehule)
4789 Support <literal>RETURN QUERY EXECUTE</> (Pavel
4796 Improve the <literal>RAISE</> command (Pavel Stehule)
4801 Support <literal>DETAIL</> and <literal>HINT</> fields
4806 Support specification of the <literal>SQLSTATE</> error code
4811 Support an exception name parameter
4816 Allow <literal>RAISE</> without parameters in an exception
4817 block to re-throw the current error
4826 Allow specification of <varname>SQLSTATE</> codes
4827 in <literal>EXCEPTION</> lists (Pavel Stehule)
4831 This is useful for handling custom <varname>SQLSTATE</> codes.
4837 Support the <literal>CASE</> statement (Pavel Stehule)
4843 Make <command>RETURN QUERY</> set the special <literal>FOUND</> and
4844 <command>GET DIAGNOSTICS</> <literal>ROW_COUNT</> variables
4851 Make <command>FETCH</> and <command>MOVE</> set the
4852 <command>GET DIAGNOSTICS</> <literal>ROW_COUNT</> variable
4859 Make <command>EXIT</> without a label always exit the innermost
4864 Formerly, if there were a <literal>BEGIN</> block more closely nested
4865 than any loop, it would exit that block instead. The new behavior
4866 matches Oracle(TM) and is also what was previously stated by our own
4873 Make processing of string literals and nested block comments
4874 match the main SQL parser's processing (Tom)
4878 In particular, the format string in <command>RAISE</> now works
4879 the same as any other string literal, including being subject
4880 to <varname>standard_conforming_strings</>. This change also
4881 fixes other cases in which valid commands would fail when
4882 <varname>standard_conforming_strings</> is on.
4888 Avoid memory leakage when the same function is called at varying
4889 exception-block nesting depths (Tom)
4900 <title>Client Applications</title>
4906 Fix <literal>pg_ctl restart</> to preserve command-line arguments
4913 Add <literal>-w</>/<literal>--no-password</> option that
4914 prevents password prompting in all utilities that have a
4915 <literal>-W</>/<literal>--password</> option (Peter)
4921 Remove <option>-q</> (quiet) option of <application>createdb</>,
4922 <application>createuser</>, <application>dropdb</>,
4923 <application>dropuser</> (Peter)
4927 These options have had no effect since <productname>PostgreSQL</>
4935 <title><application>psql</></title>
4940 Remove verbose startup banner; now just suggest <literal>help</>
4947 Make <literal>help</> show common backslash commands (Greg
4954 Add <literal>\pset format wrapped</> mode to wrap output to the
4955 screen width, or file/pipe output too if <literal>\pset columns</>
4956 is set (Bryce Nesbitt)
4962 Allow all supported spellings of boolean values in <command>\pset</>,
4963 rather than just <literal>on</> and <literal>off</> (Bruce)
4967 Formerly, any string other than <quote>off</> was silently taken
4968 to mean <literal>true</>. <application>psql</> will now complain
4969 about unrecognized spellings (but still take them as <literal>true</>).
4975 Use the pager for wide output (Bruce)
4981 Require a space between a one-letter backslash command and its first
4982 argument (Bernd Helmle)
4986 This removes a historical source of ambiguity.
4992 Improve tab completion support for schema-qualified and
4993 quoted identifiers (Greg Sabino Mullane)
4999 Add optional <literal>on</>/<literal>off</> argument for
5000 <command>\timing</> (David Fetter)
5006 Display access control rights on multiple lines (Brendan
5007 Jurd, Andreas Scherbaum)
5013 Make <command>\l</> show database access privileges (Andrew Gilligan)
5019 Make <command>\l+</> show database sizes, if permissions
5020 allow (Andrew Gilligan)
5026 Add the <command>\ef</> command to edit function definitions
5036 <title><application>psql</> \d* commands</title>
5042 Make <command>\d*</> commands that do not have a pattern argument
5043 show system objects only if the <literal>S</> modifier is specified
5044 (Greg Sabino Mullane, Bruce)
5048 The former behavior was inconsistent across different variants
5049 of <command>\d</>, and in most cases it provided no easy way to see
5056 Improve <command>\d*</> commands to work with older
5057 <productname>PostgreSQL</> server versions (back to 7.4),
5058 not only the current server version
5065 Make <command>\d</> show foreign-key constraints that reference
5066 the selected table (Kenneth D'Souza)
5072 Make <command>\d</> on a sequence show its column values
5073 (Euler Taveira de Oliveira)
5079 Add column storage type and other relation options to the
5080 <command>\d+</> display (Gregory Stark, Euler Taveira de
5087 Show relation size in <command>\dt+</> output (Dickson S.
5094 Show the possible values of <literal>enum</> types in <command>\dT+</>
5101 Allow <command>\dC</> to accept a wildcard pattern, which matches
5102 either datatype involved in the cast (Tom)
5108 Add a function type column to <command>\df</>'s output, and add
5109 options to list only selected types of functions (David Fetter)
5115 Make <command>\df</> not hide functions that take or return
5116 type <type>cstring</> (Tom)
5120 Previously, such functions were hidden because most of them are
5121 datatype I/O functions, which were deemed uninteresting. The new
5122 policy about hiding system functions by default makes this wart
5132 <title><application>pg_dump</></title>
5137 Add a <literal>--no-tablespaces</> option to
5138 <application>pg_dump</>/<application>pg_dumpall</>/<application>pg_restore</>
5139 so that dumps can be restored to clusters that have non-matching
5140 tablespace layouts (Gavin Roy)
5146 Remove <option>-d</> and <option>-D</> options from
5147 <application>pg_dump</> and <application>pg_dumpall</> (Tom)
5151 These options were too frequently confused with the option to
5152 select a database name in other <productname>PostgreSQL</>
5153 client applications. The functionality is still available,
5154 but you must now spell out the long option name
5155 <option>--inserts</> or <option>--column-inserts</>.
5161 Remove <option>-i</>/<option>--ignore-version</> option from
5162 <application>pg_dump</> and <application>pg_dumpall</> (Tom)
5166 Use of this option does not throw an error, but it has no
5167 effect. This option was removed because the version checks
5168 are necessary for safety.
5174 Disable <varname>statement_timeout</> during dump and restore
5181 Add <application>pg_dump</>/<application>pg_dumpall</> option
5182 <option>--lock-wait-timeout</> (David Gould)
5186 This allows dumps to fail if unable to acquire a shared lock
5187 within the specified amount of time.
5193 Reorder <application>pg_dump</> <literal>--data-only</> output
5194 to dump tables referenced by foreign keys before
5195 the referencing tables (Tom)
5199 This allows data loads when foreign keys are already present.
5200 If circular references make a safe ordering impossible, a
5201 <literal>NOTICE</> is issued.
5207 Allow <application>pg_dump</>, <application>pg_dumpall</>, and
5208 <application>pg_restore</> to use a specified role (Benedek
5215 Allow <application>pg_restore</> to use multiple concurrent
5216 connections to do the restore (Andrew)
5220 The number of concurrent connections is controlled by the option
5221 <literal>--jobs</>. This is supported only for custom-format archives.
5232 <title>Programming Tools</title>
5235 <title><application>libpq</></title>
5240 Allow the <type>OID</> to be specified when importing a large
5241 object, via new function <function>lo_import_with_oid()</> (Tatsuo)
5247 Add <quote>events</> support (Andrew Chernow, Merlin Moncure)
5251 This adds the ability to register callbacks to manage private
5252 data associated with <structname>PGconn</> and <structname>PGresult</>
5259 Improve error handling to allow the return of multiple
5260 error messages as multi-line error reports (Magnus)
5266 Make <function>PQexecParams()</> and related functions return
5267 <varname>PGRES_EMPTY_QUERY</> for an empty query (Tom)
5271 They previously returned <varname>PGRES_COMMAND_OK</>.
5277 Document how to avoid the overhead of <function>WSACleanup()</>
5278 on Windows (Andrew Chernow)
5284 Do not rely on Kerberos tickets to determine the default database
5289 Previously, a Kerberos-capable build of libpq would use the
5290 principal name from any available Kerberos ticket as default
5291 database username, even if the connection wasn't using Kerberos
5292 authentication. This was deemed inconsistent and confusing.
5293 The default username is now determined the same way with or
5294 without Kerberos. Note however that the database username must still
5295 match the ticket when Kerberos authentication is used.
5303 <title><application>libpq</> <acronym>SSL</> (Secure Sockets Layer)
5309 Fix certificate validation for <acronym>SSL</> connections
5314 <application>libpq</> now supports verifying both the certificate
5315 and the name of the server when making <acronym>SSL</>
5316 connections. If a root certificate is not available to use for
5317 verification, <acronym>SSL</> connections will fail. The
5318 <literal>sslmode</> parameter is used to enable certificate
5319 verification and set the level of checking.
5320 The default is still not to do any verification, allowing connections
5321 to SSL-enabled servers without requiring a root certificate on the
5328 Support wildcard server certificates (Magnus)
5332 If a certificate <acronym>CN</> starts with <literal>*</>, it will
5333 be treated as a wildcard when matching the hostname, allowing the
5334 use of the same certificate for multiple servers.
5340 Allow the file locations for client certificates to be specified
5341 (Mark Woodward, Alvaro, Magnus)
5347 Add a <function>PQinitOpenSSL</> function to allow greater control
5348 over OpenSSL/libcrypto initialization (Andrew Chernow)
5354 Make <application>libpq</> unregister its <application>OpenSSL</>
5355 callbacks when no database connections remain open
5356 (Bruce, Magnus, Russell Smith)
5360 This is required for applications that unload the libpq library,
5361 otherwise invalid <application>OpenSSL</> callbacks will remain.
5370 <title><application>ecpg</></title>
5375 Add localization support for messages (Euler Taveira de
5382 ecpg parser is now automatically generated from the server
5387 Previously the ecpg parser was hand-maintained.
5396 <title>Server Programming Interface (<acronym>SPI</>)</title>
5401 Add support for single-use plans with out-of-line
5408 Add new <varname>SPI_OK_REWRITTEN</> return code for
5409 <function>SPI_execute()</> (Heikki)
5413 This is used when a command is rewritten to another type of
5420 Remove unnecessary inclusions from <filename>executor/spi.h</> (Tom)
5424 SPI-using modules might need to add some <literal>#include</>
5425 lines if they were depending on <filename>spi.h</> to include
5437 <title>Build Options</title>
5442 Update build system to use <productname>Autoconf</> 2.61 (Peter)
5448 Require <productname>GNU bison</> for source code builds (Peter)
5452 This has effectively been required for several years, but now there
5453 is no infrastructure claiming to support other parser tools.
5459 Add <application>pg_config</> <literal>--htmldir</> option
5466 Pass <type>float4</> by value inside the server (Zoltan
5471 Add <application>configure</> option
5472 <literal>--disable-float4-byval</> to use the old behavior.
5473 External C functions that use old-style (version 0) call convention
5474 and pass or return <type>float4</> values will be broken by this
5475 change, so you may need the <application>configure</> option if you
5476 have such functions and don't want to update them.
5482 Pass <type>float8</>, <type>int8</>, and related datatypes
5483 by value inside the server on 64-bit platforms (Zoltan Boszormenyi)
5487 Add <application>configure</> option
5488 <literal>--disable-float8-byval</> to use the old behavior.
5489 As above, this change might break old-style external C functions.
5495 Add configure options <literal>--with-segsize</>,
5496 <literal>--with-blocksize</>, <literal>--with-wal-blocksize</>,
5497 <literal>--with-wal-segsize</> (Zdenek Kotala, Tom)
5501 This simplifies build-time control over several constants that
5502 previously could only be changed by editing
5503 <filename>pg_config_manual.h</>.
5509 Allow threaded builds on <productname>Solaris</> 2.5 (Bruce)
5515 Use the system's <function>getopt_long()</> on <productname>Solaris</>
5516 (Zdenek Kotala, Tom)
5520 This makes option processing more consistent with what Solaris users
5527 Add support for the <productname>Sun Studio</> compiler on
5528 <productname>Linux</> (Julius Stroffek)
5534 Append the major version number to the backend <application>gettext</>
5535 domain, and the <literal>soname</> major version number to
5536 libraries' <application>gettext</> domain (Peter)
5540 This simplifies parallel installations of multiple versions.
5546 Add support for code coverage testing with <application>gcov</>
5553 Allow out-of-tree builds on <productname>Mingw</> and
5554 <productname>Cygwin</> (Richard Evans)
5560 Fix the use of <productname>Mingw</> as a cross-compiling source
5570 <title>Source Code</title>
5575 Support 64-bit time zone data files (Heikki)
5579 This adds support for daylight saving time (<acronym>DST</>)
5580 calculations beyond the year 2038.
5586 Deprecate use of platform's <type>time_t</> data type (Tom)
5590 Some platforms have migrated to 64-bit <type>time_t</>, some have
5591 not, and Windows can't make up its mind what it's doing. Define
5592 <type>pg_time_t</> to have the same meaning as <type>time_t</>,
5593 but always be 64 bits (unless the platform has no 64-bit integer type),
5594 and use that type in all module APIs and on-disk data formats.
5600 Fix bug in handling of the time zone database when cross-compiling
5607 Link backend object files in one step, rather than in stages
5614 Improve <application>gettext</> support to allow better translation
5621 Add message translation support to the PL languages (Alvaro, Peter)
5627 Add more <application>DTrace</> probes (Robert Lor)
5633 Enable <application>DTrace</> support on <application>Mac OS X
5634 Leopard</> and other non-Solaris platforms (Robert Lor)
5640 Simplify and standardize conversions between C strings and
5641 <type>text</> datums, by providing common functions for the purpose
5648 Clean up the <filename>include/catalog/</> header files so that
5649 frontend programs can include them without including
5650 <filename>postgres.h</>
5657 Make <type>name</> char-aligned, and suppress zero-padding of
5658 <type>name</> entries in indexes (Tom)
5664 Recover better if dynamically-loaded code executes <function>exit()</>
5671 Add a hook to let plug-ins monitor the executor (Itagaki
5678 Add a hook to allow the planner's statistics lookup behavior to
5679 be overridden (Simon Riggs)
5685 Add <function>shmem_startup_hook()</> for custom shared memory
5692 Replace the index access method <function>amgetmulti</> entry point
5693 with <function>amgetbitmap</>, and extend the API for
5694 <function>amgettuple</> to support run-time determination of
5695 operator lossiness (Heikki, Tom, Teodor)
5699 The API for GIN and GiST opclass <function>consistent</> functions
5700 has been extended as well.
5706 Add support for partial-match searches in <acronym>GIN</> indexes
5707 (Teodor Sigaev, Oleg Bartunov)
5713 Replace <structname>pg_class</> column <structfield>reltriggers</>
5714 with boolean <structfield>relhastriggers</> (Simon)
5718 Also remove unused <structname>pg_class</> columns
5719 <structfield>relukeys</>, <structfield>relfkeys</>, and
5720 <structfield>relrefs</>.
5726 Add a <structfield>relistemp</> column to <structname>pg_class</>
5727 to ease identification of temporary tables (Tom)
5733 Move platform <acronym>FAQ</>s into the main documentation
5740 Prevent parser input files from being built with any conflicts
5747 Add support for the <literal>KOI8U</> (Ukrainian) encoding
5754 Add Japanese message translations (Japan PostgreSQL Users Group)
5758 This used to be maintained as a separate project.
5764 Fix problem when setting <varname>LC_MESSAGES</> on
5765 <application>MSVC</>-built systems (Hiroshi Inoue, Hiroshi
5775 <title>Contrib</title>
5781 Add <filename>contrib/auto_explain</> to automatically run
5782 <command>EXPLAIN</> on queries exceeding a specified duration
5783 (Itagaki Takahiro, Tom)
5789 Add <filename>contrib/btree_gin</> to allow GIN indexes to
5790 handle more datatypes (Oleg, Teodor)
5796 Add <filename>contrib/citext</> to provide a case-insensitive,
5797 multibyte-aware text data type (David Wheeler)
5803 Add <filename>contrib/pg_stat_statements</> for server-wide
5804 tracking of statement execution statistics (Itagaki Takahiro)
5810 Add duration and query mode options to <filename>contrib/pgbench</>
5817 Make <filename>contrib/pgbench</> use table names
5818 <structname>pgbench_accounts</>, <structname>pgbench_branches</>,
5819 <structname>pgbench_history</>, and <structname>pgbench_tellers</>,
5820 rather than just <structname>accounts</>, <structname>branches</>,
5821 <structname>history</>, and <structname>tellers</> (Tom)
5825 This is to reduce the risk of accidentally destroying real data
5826 by running <application>pgbench</>.
5832 Fix <filename>contrib/pgstattuple</> to handle tables and
5833 indexes with over 2 billion pages (Tatsuhito Kasahara)
5839 In <filename>contrib/fuzzystrmatch</>, add a version of the
5840 Levenshtein string-distance function that allows the user to
5841 specify the costs of insertion, deletion, and substitution
5848 Make <filename>contrib/ltree</> support multibyte encodings
5855 Enable <filename>contrib/dblink</> to use connection information
5856 stored in the SQL/MED catalogs (Joe Conway)
5862 Improve <filename>contrib/dblink</>'s reporting of errors from
5863 the remote server (Joe Conway)
5869 Make <filename>contrib/dblink</> set <varname>client_encoding</>
5870 to match the local database's encoding (Joe Conway)
5874 This prevents encoding problems when communicating with a remote
5875 database that uses a different encoding.
5881 Make sure <filename>contrib/dblink</> uses a password supplied
5882 by the user, and not accidentally taken from the server's
5883 <filename>.pgpass</> file (Joe Conway)
5887 This is a minor security enhancement.
5893 Add <function>fsm_page_contents()</>
5894 to <filename>contrib/pageinspect</> (Heikki)
5900 Modify <function>get_raw_page()</> to support free space map
5901 (<filename>*_fsm</>) files. Also update
5902 <filename>contrib/pg_freespacemap</>.
5908 Add support for multibyte encodings to <filename>contrib/pg_trgm</>
5915 Rewrite <filename>contrib/intagg</> to use new
5916 functions <function>array_agg()</> and <function>unnest()</>
5923 Make <filename>contrib/pg_standby</> recover all available WAL before
5924 failover (Fujii Masao, Simon, Heikki)
5928 To make this work safely, you now need to set the new
5929 <literal>recovery_end_command</> option in <filename>recovery.conf</>
5930 to clean up the trigger file after failover. <application>pg_standby</>
5931 will no longer remove the trigger file itself.
5937 <filename>contrib/pg_standby</>'s <option>-l</> option is now a no-op,
5938 because it is unsafe to use a symlink (Simon)