1 <!-- $PostgreSQL: pgsql/doc/src/sgml/release-8.4.sgml,v 1.5 2009/05/14 21:01:49 heikki Exp $ -->
2 <!-- See header comment in release.sgml about typical markup -->
4 <sect1 id="release-8-4">
5 <title>Release 8.4</title>
8 <title>Release date</title>
9 <simpara>2009-??-??, ITEMS CURRENT AS OF 2009-05-11</simpara>
13 <title>Overview</title>
16 After many years of development, <productname>PostgreSQL</> has
17 become feature-complete in many areas. This release shows a
18 targeted approach to adding features (e.g., authentication,
19 monitoring, space reuse), and adds capabilities defined in the
20 later SQL standards. The major areas of enhancement are:
25 <!-- This list duplicates items below, but without authors or details-->
35 Common Table Expressions and Recursive Joins
41 Default and variadic parameters for functions
59 Per-database locale settings
71 Improved join performance for <literal>EXISTS</> and <literal>NOT EXISTS</> queries
77 Easier-to-use Warm Standby
83 Automatic sizing of the Free Space Map
89 Visibility Map (greatly reduces vacuum overhead for slowly-changing tables)
95 Version-aware psql (backslash commands work against older servers)
101 Support SSL certificates for user authentication
107 Per-function runtime statistics
113 Easy editing of functions in psql
119 New contrib modules: pg_stat_statements, auto_explain, citext, btree_gin
126 The above items are explained in more detail in the sections below.
132 <title>Migration to Version 8.4</title>
135 A dump/restore using <application>pg_dump</application> is
136 required for those wishing to migrate data from any previous
141 Observe the following incompatibilities:
145 <title>General</title>
150 Use 64-bit integer datetimes by default (Neil Conway)
154 Previously this was selected by <application>configure</>'s
155 <option>--enable-integer-datetimes</> option. To retain
156 the old behavior, build with <option>--disable-integer-datetimes</>.
162 Remove <application>ipcclean</> utility command (Bruce)
166 The utility only worked on a few platforms. Users should use
167 their operating system tools instead.
176 <title>Server Settings</title>
181 Change default setting for
182 <literal>log_min_messages</> to <literal>warning</> (previously
183 it was <literal>notice</>) to reduce log file volume (Tom)
189 Change default setting for <literal>max_prepared_transactions</> to
190 zero (previously it was 5) (Tom)
196 Make <literal>debug_print_parse</>, <literal>debug_print_rewritten</>,
197 and <literal>debug_print_plan</>
198 output appear at <literal>LOG</> message level, not
199 <literal>DEBUG1</> as formerly (Tom)
205 Make <literal>debug_pretty_print</> default to <literal>on</> (Tom)
211 Remove <varname>explain_pretty_print</> parameter (no longer needed) (Tom)
217 Make <varname>log_temp_files</> settable by superusers only, like other
218 logging options (Simon Riggs)
224 Remove automatic appending of the epoch timestamp when no <literal>%</>
225 escapes are present in <literal>log_filename</> (Robert Haas)
229 This change was made because some users wanted a fixed log filename,
230 for use with an external log rotation tool.
236 Remove <varname>log_restartpoints</> from <filename>recovery.conf</>;
237 instead use <varname>log_checkpoints</> (Simon)
243 Remove <varname>krb_realm</> and <varname>krb_server_hostname</>;
244 these are now set in <filename>pg_hba.conf</> instead (Magnus)
250 There are also significant changes in <link
251 linkend="release-8-4-pg-hba-conf"><filename>pg_hba.conf</></link>,
261 <title>Queries</title>
267 Change <command>TRUNCATE</> and <command>LOCK</> to
268 apply to child tables of the specified table(s) (Peter)
272 These commands now accept an <literal>ONLY</> option that prevents
273 processing child tables; this option must be used if the old
280 <command>SELECT DISTINCT</> and
281 <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</>
282 no longer always produce sorted output (Tom)
286 Previously, these types of queries always removed duplicate rows
287 by means of Sort/Unique processing (i.e., sort then remove adjacent
288 duplicates). Now they can be implemented by hashing, which will not
289 produce sorted output. If an application relied on the output being
290 in sorted order, the recommended fix is to add an <literal>ORDER BY</>
291 clause. As a short-term workaround, the previous behavior can be
292 restored by disabling <literal>enable_hashagg</>, but that is a very
293 performance-expensive fix. <literal>SELECT DISTINCT ON</> never uses
294 hashing, however, so its behavior is unchanged.
300 Force child tables to inherit <literal>CHECK</> constraints from parents
301 (Alex Hunsaker, Nikhil Sontakke, Tom)
305 Formerly it was possible to drop such a constraint from a child
306 table, allowing rows that violate the constraint to be visible
307 when scanning the parent table. This was deemed inconsistent,
308 as well as contrary to SQL standard.
314 Disallow negative <literal>LIMIT</> or <literal>OFFSET</>
315 values, rather than treating them as zero (Simon)
321 Disallow <command>LOCK TABLE</> outside a transaction block
326 Such an operation is useless because the lock would be released
333 Sequences now contain an additional <structfield>start_value</> column
338 This supports <command>ALTER SEQUENCE ... RESTART</>.
348 <title>Functions and Operators</title>
354 Make <type>numeric</> zero raised to a fractional power return
355 <literal>0</>, rather than throwing an error, and make
356 <type>numeric</> zero raised to the zero power return <literal>1</>,
357 rather than error (Bruce)
361 This matches the longstanding <type>float8</> behavior.
367 Allow unary minus of floating-point values to produce minus zero (Tom)
371 The changed behavior is more <acronym>IEEE</>-standard
378 Throw an error if an escape character is the last character in
379 a <literal>LIKE</> pattern (i.e., it has nothing to escape) (Tom)
383 Previously, such an escape character was silently ignored,
384 thus possibly masking application logic errors.
390 Remove <literal>~=~</> and <literal>~<>~</> operators
391 formerly used for <literal>LIKE</> index comparisons (Tom)
395 Pattern indexes now use the regular equality operator.
401 <function>xpath()</> now passes its arguments to <application>libxml</>
402 without any changes (Andrew)
406 This means that the XML argument must be a well-formed XML document.
407 The previous coding attempted to allow XML fragments, but it did not
414 Make <function>xmlelement()</> format attribute values just like
415 content values (Peter)
419 Previously, attribute values were formatted according to the
420 normal SQL output behavior, which is sometimes at odds with
427 Adopt a faster algorithm for hash functions (Kenneth Marshall,
428 based on work of Bob Jenkins)
432 Many of the built-in hash functions now deliver different results on
433 little-endian and big-endian platforms.
440 <title>Temporal Functions and Operators</title>
446 <varname>DateStyle</> no longer controls <type>interval</> output
447 formatting; instead there is a new variable <varname>IntervalStyle</>
454 Improve consistency of handling of fractional seconds in
455 <type>timestamp</> and <type>interval</> output (Ron Mayer)
459 This may result in displaying a different number of fractional
460 digits than before, or rounding instead of truncating.
466 Make <function>to_char()</>'s localized month/day names depend
467 on <varname>LC_TIME</>, not <varname>LC_MESSAGES</> (Euler
474 Cause <function>to_date()</> and <function>to_timestamp()</>
475 to more consistently report errors for invalid input (Brendan
480 Previous versions would often ignore or silently misread input
481 that did not match the format string. Such cases will now
488 Fix <function>to_timestamp()</> to not require upper/lower case
489 matching for meridian (<literal>AM</>/<literal>PM</>) and era
490 (<literal>BC</>/<literal>AD</>) format designations (Brendan
495 For example, input value <literal>ad</> now matches the format
496 string <literal>AD</>.
509 <title>Changes</title>
512 Below you will find a detailed account of the changes between
513 <productname>PostgreSQL</productname> 8.4 and the previous major
518 <title>Performance</title>
523 Improve optimizer statistics calculations (Jan Urbanski, Tom)
527 In particular, estimates for full-text-search operators are
534 Allow <command>SELECT DISTINCT</> and
535 <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> to
540 This means that these types of queries no longer automatically
541 produce sorted output.
547 Create explicit concepts of semi-joins and anti-joins (Tom)
551 This work formalizes our previous ad-hoc treatment of <literal>IN
552 (SELECT ...)</> clauses, and extends it to <literal>EXISTS</> and
553 <literal>NOT EXISTS</> clauses. It should result in significantly
554 better planning of <literal>EXISTS</> and <literal>NOT EXISTS</>
555 queries. In general, logically equivalent <literal>IN</> and
556 <literal>EXISTS</> clauses should now have similar performance,
557 whereas previously <literal>IN</> often won.
563 Improve optimization of sub-selects beneath outer joins (Tom)
567 Formerly, a sub-select or view could not be optimized very well if it
568 appeared within the nullable side of an outer join and contained
569 non-strict expressions (for instance, constants) in its result list.
575 Improve the performance of <function>text_position()</> and
576 related functions by using Boyer-Moore-Horspool searching (David
581 This is particularly helpful for long search patterns.
587 Reduce I/O load of writing the statistics collection file
588 by writing the file only when requested (Martin Pihlak)
594 Improve performance for bulk inserts (Robert Haas, Simon)
600 Increase the default value of <varname>default_statistics_target</>
601 from <literal>10</> to <literal>100</> (Greg Sabino Mullane,
606 The maximum value was also increased from <literal>1000</> to
613 Perform <varname>constraint_exclusion</> checking by default
614 in queries involving inheritance or <literal>UNION ALL</> (Tom)
618 A new <varname>constraint_exclusion</> setting,
619 <literal>partition</>, was added to specify this behavior.
625 Allow I/O read-ahead for bitmap index scans (Greg Stark)
629 The amount of read-ahead is controlled by
630 <varname>effective_io_concurrency</>. This feature is available only
631 if the kernel has <function>posix_fadvise()</> support.
637 Inline simple set-returning <acronym>SQL</> functions in
638 <literal>FROM</> clauses (Richard Rowell)
644 Improve performance of multi-batch hash joins by providing a special
645 case for join key values that are especially common in the outer
646 relation (Bryce Cutt, Ramon Lawrence)
652 Reduce volume of temporary data in multi-batch hash joins
653 by suppressing <quote>physical tlist</> optimization (Michael
654 Henderson, Ramon Lawrence)
660 Avoid waiting for idle-in-transaction sessions during
661 <command>CREATE INDEX CONCURRENTLY</> (Simon)
667 Improve performance of shared cache invalidation (Tom)
676 <title>Server</title>
679 <title>Settings</title>
685 Convert many <filename>postgresql.conf</> settings to enumerated
686 values so that <literal>pg_settings</> can display the valid
693 Add <varname>cursor_tuple_fraction</> parameter to control the
694 fraction of a cursor's rows that the planner assumes will be
695 fetched (Robert Hell)
701 Allow underscores in the names of custom variable
702 classes in <filename>postgresql.conf</> (Tom)
711 <title>Authentication and security</title>
716 Remove support for the (insecure) <literal>crypt</> authentication method
721 This effectively obsoletes pre-<productname>PostgreSQL</> 7.2 client
722 libraries, as there is no longer any non-plaintext password method that
729 Support regular expressions in <filename>pg_ident.conf</>
736 Allow <productname>Kerberos</>/<acronym>GSSAPI</> parameters
737 to be changed without restarting the postmaster (Magnus)
743 Support <acronym>SSL</> certificate chains in server certificate
748 Including the full certificate chain makes the client able
749 to verify the certificate without having all intermediate CA
750 certificates present in the local store, which is often the case for
757 Report appropriate error message for combination of <literal>MD5</>
758 authentication and <varname>db_user_namespace</> enabled (Bruce)
765 <sect4 id="release-8-4-pg-hba-conf">
766 <title><filename>pg_hba.conf</></title>
771 Change all authentication options to use <literal>name=value</>
776 This makes incompatible changes to the <literal>ldap</>,
777 <literal>pam</> and <literal>ident</> authentication methods. All
778 <filename>pg_hba.conf</> entries with these methods need to be
779 rewritten using the new format.
785 Remove the <literal>ident sameuser</> option, instead making that
786 behavior the default if no usermap is specified (Magnus)
792 Allow a usermap parameter for all external authentication methods
797 Previously a usermap was only supported for <literal>ident</>
804 Add <literal>clientcert</> option to control requesting of a
805 client certificate (Magnus)
809 Previously this was controlled by the presence of a root
810 certificate file in the server's data directory.
816 Add <literal>cert</> authentication method to allow
817 <emphasis>user</> authentication via <acronym>SSL</> certificates
822 Previously <acronym>SSL</> certificates could only verify that
823 the client had access to a certificate, not authenticate a
830 Allow <literal>krb5</>, <literal>gssapi</> and <literal>sspi</>
831 realm and <literal>krb5</> host settings to be specified in
832 <filename>pg_hba.conf</> (Magnus)
836 These override the settings in <filename>postgresql.conf</>.
842 Add <varname>include_realm</> parameter for <literal>krb5</>,
843 <literal>gssapi</>, and <literal>sspi</> methods (Magnus)
847 This allows identical usernames from different realms to be
848 authenticated as different database users using usermaps.
854 Parse <filename>pg_hba.conf</> fully when it is loaded,
855 so that errors are reported immediately (Magnus)
859 Previously, most errors in the file wouldn't be detected until clients
860 tried to connect, so an erroneous file could render the system
861 unusable. With the new behavior, if an error is detected during
862 reload then the bad file is rejected and the postmaster continues
869 Show all parsing errors in <filename>pg_hba.conf</> instead of
870 aborting after the first one (Selena Deckelmann)
876 Support <literal>ident</> authentication over Unix-domain sockets
877 on <productname>Solaris</> (Garick Hamlin)
886 <title>Continuous Archiving</title>
891 Provide an option to <function>pg_start_backup()</> to force its
892 implied checkpoint to finish as quickly as possible (Tom)
896 The default behavior avoids excess I/O consumption, but that is
897 pointless if no concurrent query activity is going on.
903 Make <function>pg_stop_backup()</> wait for modified <acronym>WAL</>
904 files to be archived (Simon)
908 This guarantees that the backup is valid at the time
909 <function>pg_stop_backup()</> completes.
915 Delay <quote>smart</> shutdown while a continuous archiving base backup
916 is in progress (Laurenz Albe)
922 Cancel a continuous archiving base backup if <quote>fast</> shutdown
923 is requested (Laurenz Albe)
929 Allow <filename>recovery.conf</> boolean variables to take the
930 same range of string values as <filename>postgresql.conf</>
941 <title>Monitoring</title>
946 Add <function>pg_conf_load_time()</> to report when
947 the <productname>PostgreSQL</> configuration files were last loaded
954 Add <function>pg_terminate_backend()</> to safely terminate a
955 backend (the <literal>SIGTERM</> signal works also) (Tom, Bruce)
959 While it's always been possible to <literal>SIGTERM</> a single
960 backend, this was previously considered unsupported; and testing
961 of the case found some bugs that are now fixed.
967 Add ability to track user-defined functions' call counts and
968 runtimes (Martin Pihlak)
972 Function statistics appear in a new system view,
973 <literal>pg_stat_user_functions</>. Tracking is controlled
974 by the new parameter <varname>track_functions</>.
980 Allow specification of the maximum query string size in
981 <literal>pg_stat_activity</> via new
982 <varname>track_activity_query_size</> parameter (Thomas Lee)
988 Increase the maximum line length sent to <application>syslog</>, in
989 hopes of improving performance (Tom)
995 Add read-only configuration variables <varname>segment_size</>,
996 <varname>wal_block_size</>, and <varname>wal_segment_size</>
1003 When reporting a deadlock, report the text of all queries involved
1004 in the deadlock to the server log (Itagaki Takahiro)
1010 Add <function>pg_stat_get_activity(pid)</> function to return
1011 information about a specific process id (Magnus)
1017 Allow the location of the server's statistics file to be specified
1018 via <varname>stats_temp_directory</> (Magnus)
1022 This allows the statistics file to be placed in a
1023 <acronym>RAM</>-resident directory to reduce I/O requirements.
1024 On startup/shutdown, the file is copied to its traditional location
1025 (<literal>$PGDATA/global/</>) so it is preserved across restarts.
1036 <title>Queries</title>
1041 Add support for <literal>WINDOW</> functions (Hitoshi Harada)
1047 Add support for <literal>WITH</> clauses (CTEs), including <literal>WITH
1048 RECURSIVE</> (Yoshiyuki Asaba, Tatsuo Ishii, Tom)
1054 Add <command>TABLE</> command (Peter)
1058 <literal>TABLE tablename</> is a SQL standard short-hand for
1059 <literal>SELECT * FROM tablename</>.
1065 Allow <literal>AS</> to be optional when specifying a
1066 <command>SELECT</> (or <literal>RETURNING</>) column output
1067 label (Hiroshi Saito)
1071 This works so long as the column label is not any
1072 <productname>PostgreSQL</> keyword; otherwise <literal>AS</> is still
1079 Support set-returning functions in <command>SELECT</> result lists
1080 even for functions that return their result via a tuplestore (Tom)
1084 In particular, this means that functions written in PL/PgSQL
1085 and other PL languages can now be called this way.
1091 Support set-returning functions in the output of aggregation
1092 and grouping queries (Tom)
1098 Allow <command>SELECT FOR UPDATE</>/<literal>SHARE</> to work
1099 on inheritance trees (Tom)
1105 Add infrastructure for <acronym>SQL/MED</> (Martin Pihlak,
1110 There are no remote or external <acronym>SQL/MED</> capabilities
1111 yet, but this change provides a standardized and future-proof
1112 system for managing connection information for modules like
1113 <filename>dblink</> and <filename>plproxy</>.
1119 Invalidate cached plans when referenced schemas, functions, operators,
1120 or operator classes are modified (Martin Pihlak, Tom)
1124 This improves the system's ability to respond to on-the-fly
1130 Allow comparison of composite types and allow arrays of
1131 anonymous composite types (Tom)
1135 This allows constructs such as
1136 <literal>row(1, 1.1) = any (array[row(7, 7.7), row(1, 1.0)])</>.
1137 This is particularly useful in recursive queries.
1143 Add support for Unicode string literal and identifier specifications
1144 using code points, e.g. <literal>U&'d\0061t\+000061'</>
1151 Reject <literal>\000</> in string literals and <command>COPY</> data
1156 Previously, this was accepted but had the effect of terminating
1157 the string contents.
1163 Improve the parser's ability to report error locations (Tom)
1167 An error location is now reported for many semantic errors,
1168 such as mismatched datatypes, that previously could not be localized.
1175 <title><command>TRUNCATE</></title>
1180 Support statement-level <literal>ON TRUNCATE</> triggers (Simon)
1186 Add <literal>RESTART</>/<literal>CONTINUE IDENTITY</> options
1187 for <command>TRUNCATE TABLE</>
1188 (Zoltan Boszormenyi)
1192 The start value of a sequence can be changed by <command>ALTER
1193 SEQUENCE START WITH</>.
1199 Allow <command>TRUNCATE tab1, tab1</> to succeed (Bruce)
1205 Add a separate <command>TRUNCATE</> permission (Robert Haas)
1214 <title><command>EXPLAIN</></title>
1219 Make <command>EXPLAIN VERBOSE</> show the output columns of each
1224 Previously <command>EXPLAIN VERBOSE</> output an internal
1225 representation of the query plan. (That behavior is now
1226 available via <varname>debug_print_plan</>.)
1232 Make <command>EXPLAIN</> identify subplans and initplans with
1233 individual labels (Tom)
1239 Make <command>EXPLAIN</> honor <varname>debug_print_plan</> (Tom)
1245 Allow <command>EXPLAIN</> on <command>CREATE TABLE AS</> (Peter)
1254 <title><literal>LIMIT</>/<literal>OFFSET</></title>
1259 Allow sub-selects in <literal>LIMIT</> and <literal>OFFSET</> (Tom)
1265 Add <acronym>SQL</>-standard syntax for
1266 <literal>LIMIT</>/<literal>OFFSET</> capabilities (Peter)
1271 <literal>OFFSET num {ROW|ROWS} FETCH {FIRST|NEXT} [num] {ROW|ROWS}
1283 <title>Object Manipulation</title>
1288 Add support for column-level privileges (Stephen Frost, KaiGai
1295 Refactor multi-object <command>DROP</> operations to reduce the
1296 need for <literal>CASCADE</> (Alex Hunsaker)
1300 For example, if table <literal>B</> has a dependency on table
1301 <literal>A</>, the command <literal>DROP TABLE A, B</> no longer
1302 requires the <literal>CASCADE</> option.
1308 Fix various problems with concurrent <command>DROP</> commands
1309 by ensuring that locks are taken before we begin to drop dependencies
1316 Improve reporting of dependencies during <command>DROP</>
1323 Add <literal>WITH [NO] DATA</> clause to <command>CREATE TABLE
1324 AS</>, per the <acronym>SQL</> standard (Peter, Tom)
1330 Add support for user-defined I/O conversion casts (Heikki)
1336 Allow <command>CREATE AGGREGATE</> to use an <type>internal</>
1337 transition datatype (Tom)
1343 Add <literal>LIKE</> clause to <command>CREATE TYPE</> (Tom)
1347 This simplifies creation of data types that use the same internal
1348 representation as an existing type.
1354 Allow specification of the type category and <quote>preferred</>
1355 status for user-defined base types (Tom)
1359 This allows more control over the coercion behavior of user-defined
1366 Allow <command>CREATE OR REPLACE VIEW</> to add columns to the
1367 end of a view (Robert Haas)
1374 <title><command>ALTER</></title>
1379 Add <command>ALTER TYPE RENAME</> (Petr Jelinek)
1385 Add <command>ALTER SEQUENCE ... RESTART</> (with no parameter) to
1386 reset a sequence to its initial value (Zoltan Boszormenyi)
1392 Modify the <command>ALTER TABLE</> syntax to allow all reasonable
1393 combinations for tables, indexes, sequences, and views (Tom)
1397 This change allows the following new syntaxes:
1402 <command>ALTER SEQUENCE OWNER TO</>
1407 <command>ALTER VIEW ALTER COLUMN SET/DROP DEFAULT</>
1412 <command>ALTER VIEW OWNER TO</>
1417 <command>ALTER VIEW SET SCHEMA</>
1422 There is no actual new functionality here, but formerly
1423 you had to say <command>ALTER TABLE</> to do these things,
1424 which was confusing.
1430 Add support for the syntax <command>ALTER TABLE ... ALTER COLUMN
1431 ... SET DATA TYPE</> (Peter)
1435 This is <acronym>SQL</>-standard syntax for functionality that
1436 was already supported.
1442 Make <command>ALTER TABLE SET WITHOUT OIDS</> rewrite the table
1443 to physically remove <type>OID</> values (Tom)
1447 Also, add <command>ALTER TABLE SET WITH OIDS</> to rewrite the
1448 table to add <type>OID</>s.
1457 <title>Database Manipulation</title>
1462 Improve reporting of
1463 <command>CREATE</>/<command>DROP</>/<command>RENAME DATABASE</>
1464 failure when uncommitted prepared transactions are the cause
1471 Make <varname>LC_COLLATE</> and <varname>LC_CTYPE</> into
1472 per-database settings (Radek Strnad, Heikki)
1476 This makes collation similar to encoding, which was always
1477 configurable per database.
1483 Improve checks that the database encoding, collation
1484 (<varname>LC_COLLATE</>), and character classes
1485 (<varname>LC_CTYPE</>) match (Heikki, Tom)
1489 Note in particular that a new database's encoding and locale
1490 settings can be changed only when copying from <literal>template0</>.
1491 This prevents possibly copying data that doesn't match the settings.
1497 Add <command>ALTER DATABASE SET TABLESPACE</> to move a database
1498 to a new tablespace (Guillaume Lelarge, Bernd Helmle)
1509 <title>Utility Operations</title>
1515 Add a <literal>VERBOSE</> option to the <command>CLUSTER</> command and
1516 <application>clusterdb</> (Jim Cox)
1522 Decrease memory requirements for recording pending trigger
1530 <title>Indexes</title>
1535 Dramatically improve the speed of building and accessing hash
1536 indexes (Tom Raney, Shreya Bhargava)
1540 This allows hash indexes to be sometimes faster than btree
1541 indexes. However, hash indexes are still not crash-safe.
1547 Make hash indexes store only the hash code, not the full value of
1548 the indexed column (Xiao Meng)
1552 This greatly reduces the size of hash indexes for long indexed
1553 values, improving performance.
1559 Implement fast update option for GIN indexes (Teodor, Oleg)
1563 This option greatly improves update speed at a small penalty in search
1570 <literal>xxx_pattern_ops</> indexes can now be used for simple
1571 equality comparisons, not only for <literal>LIKE</> (Tom)
1580 <title>Full Text Indexes</title>
1585 Remove the requirement to use <literal>@@@</> when doing
1586 <acronym>GIN</> weighted lookups on full text indexes (Tom, Teodor)
1590 The normal <literal>@@</> text search operator can be used
1597 Add an optimizer selectivity function for <literal>@@</> text
1598 search operations (Jan Urbanski)
1604 Allow prefix matching in full text searches (Teodor Sigaev,
1611 Support multi-column <acronym>GIN</> indexes (Teodor Sigaev)
1617 Improve support for Nepali language and Devanagari alphabet (Teodor)
1626 <title><command>VACUUM</></title>
1631 Track free space in separate per-relation <quote>fork</> files (Heikki)
1635 Free space discovered by <command>VACUUM</> is now recorded in
1636 <filename>*_fsm</> files, rather than in a fixed-sized shared memory
1637 area. The <varname>max_fsm_pages</> and <varname>max_fsm_relations</>
1638 settings have been removed, greatly simplifying administration of
1639 free space management.
1645 Add a visibility map to track pages that do not require
1650 This allows <command>VACUUM</> to avoid scanning all of
1651 a table when only a portion of the table needs vacuuming.
1652 The visibility map is stored in per-relation <quote>fork</> files.
1658 Add <varname>vacuum_freeze_table_age</> parameter to control
1659 when <command>VACUUM</> should ignore the visibility map and
1660 do a full table scan to freeze tuples (Heikki)
1666 Track transaction snapshots more carefully (Alvaro)
1670 This improves <command>VACUUM</>'s ability to reclaim space
1671 in the presence of long-running transactions.
1677 Add ability to specify per-relation autovacuum and <acronym>TOAST</>
1678 parameters in <command>CREATE TABLE</> (Alvaro, Euler Taveira de
1683 Autovacuum options used to be stored in a system table.
1689 Add <literal>--freeze</> option to <application>vacuumdb</>
1701 <title>Data Types</title>
1706 Add a <literal>CaseSensitive</> option for text search synonym
1707 dictionaries (Simon)
1713 Improve the precision of <type>NUMERIC</> division (Tom)
1719 Add basic arithmetic operators for <type>int2</> with <type>int8</>
1724 This eliminates the need for explicit casting in some situations.
1730 Allow <type>UUID</> input to accept an optional hyphen after
1731 every fourth digit (Robert Haas)
1737 Allow <literal>on</>/<literal>off</> as input for the boolean data type
1744 Allow spaces around <literal>NaN</> in the input string for
1745 type <type>numeric</> (Sam Mason)
1752 <title>Temporal Data Types</title>
1757 Reject year <literal>0 BC</> and years <literal>000</> and
1758 <literal>0000</> (Tom)
1762 Previously these were interpreted as <literal>1 BC</>.
1763 (Note: years <literal>0</> and <literal>00</> are still assumed to be
1770 Include <literal>SGT</> (Singapore time) in the default list of
1771 known time zone abbreviations (Tom)
1777 Support <literal>infinity</> and <literal>-infinity</> as
1778 values of type <type>date</> (Tom)
1784 Make parsing of <type>interval</> literals more standard-compliant (Tom)
1788 For example, <literal>INTERVAL '1' YEAR</> now does what it's
1795 Allow <type>interval</> fractional-seconds precision to be specified
1796 after the <literal>second</> keyword, for <acronym>SQL</> standard
1801 Formerly the precision had to be specified after the keyword
1802 <type>interval</>. (For backwards compatibility, this syntax is still
1803 supported, though deprecated.) Data type definitions will now be
1804 output using the standard format.
1810 Support the <acronym>IS0 8601</> <type>interval</> syntax (Ron
1811 Mayer, Kevin Grittner)
1815 For example, <literal>INTERVAL 'P1Y2M3DT4H5M6.7S'</> is now
1822 Add <varname>IntervalStyle</> parameter
1823 which controls how <type>interval</> values are output (Ron Mayer)
1827 Valid values are: <literal>postgres</>, <literal>postgres_verbose</>,
1828 <literal>sql_standard</>, <literal>iso_8601</>. This setting also
1829 controls the handling of negative <type>interval</> input when only
1830 some fields have positive/negative designations.
1836 Improve consistency of handling of fractional seconds in
1837 <type>timestamp</> and <type>interval</> output (Ron Mayer)
1846 <title>Arrays</title>
1851 Improve the handling of casts applied to <literal>ARRAY[]</>
1852 constructs, such as <literal>ARRAY[...]::integer[]</>
1857 Formerly <productname>PostgreSQL</> attempted to determine a data type
1858 for the <literal>ARRAY[]</> construct without reference to the ensuing
1859 cast. This could fail unnecessarily in many cases, in particular when
1860 the <literal>ARRAY[]</> construct was empty or contained only
1861 ambiguous entries such as <literal>NULL</>. Now the cast is consulted
1862 to determine the type that the array elements must be.
1868 Make <acronym>SQL</>-syntax <type>ARRAY</> dimensions optional
1869 to match the <acronym>SQL</> standard (Peter)
1875 Add <function>array_ndims()</> to return the number
1876 of dimensions of an array (Robert Haas)
1882 Add <function>array_length()</> to return the length
1883 of an array for a specified dimension (Jim Nasby, Robert
1884 Haas, Peter Eisentraut)
1890 Add aggregate function <function>array_agg()</>, which
1891 returns all aggregated values as a single array (Robert Haas,
1898 Add <function>unnest()</>, which converts an array to
1899 individual row values (Tom)
1903 This is the opposite of <function>array_agg()</>.
1909 Add <function>array_fill()</> to create arrays initialized with
1910 a value (Pavel Stehule)
1916 Add <function>generate_subscripts()</> to simplify generating
1917 the range of an array's subscripts (Pavel Stehule)
1926 <title>Wide-Value Storage (<acronym>TOAST</>)</title>
1931 Consider <acronym>TOAST</> compression on values as short as
1932 32 bytes (previously 256 bytes) (Greg Stark)
1938 Require 25% minimum space savings before using <acronym>TOAST</>
1939 compression (previously 20% for small values and any-savings-at-all
1940 for large values) (Greg)
1946 Improve <acronym>TOAST</> heuristics for rows that have a mix of large
1947 and small toastable fields, so that we prefer to push large values out
1948 of line and don't compress small values unnecessarily (Greg, Tom)
1959 <title>Functions</title>
1964 Document that <function>setseed()</> allows values from
1965 <literal>-1</> to <literal>1</> (not just <literal>0</> to
1966 <literal>1</>), and enforce the valid range (Kris Jurka)
1972 Add server-side function <function>lo_import(filename, oid)</>
1979 Add <function>quote_nullable()</>, which behaves like
1980 <function>quote_literal()</> but returns the string <literal>NULL</> for
1981 a null argument (Brendan Jurd)
1987 Improve full text search <function>headline()</> function to
1988 allow extracting several fragments of text (Sushant Sinha)
1994 Add <function>suppress_redundant_updates_trigger()</> trigger
1995 function to avoid overhead for non-data-changing updates (Andrew)
2001 Add <function>div(numeric, numeric)</> to perform <type>numeric</>
2002 division without rounding (Tom)
2008 Add <type>timestamp</> and <type>timestamptz</> versions of
2009 <function>generate_series()</> (Hitoshi Harada)
2016 <title>Object Information Functions</title>
2021 Implement <function>current_query()</> for use by functions
2022 that need to know the currently running query (Tomas Doran)
2028 Add <function>pg_get_keywords()</> to return a list of the
2029 parser keywords (Dave Page)
2035 Add <function>pg_get_functiondef()</> to see a function's
2036 definition (Abhijit Menon-Sen)
2042 Modify <function>pg_relation_size()</> to use <literal>regclass</>
2047 <function>pg_relation_size(data_type_name)</> no longer works.
2053 Add <literal>boot_val</> and <literal>reset_val</> columns to
2054 <literal>pg_settings</> output (Greg Smith)
2060 Add source file name and line number columns to
2061 <literal>pg_settings</> output for variables set in a configuration
2062 file (Magnus, Alvaro)
2066 For security reasons, these columns are only visible to superusers.
2072 Add support for <varname>CURRENT_CATALOG</>,
2073 <varname>CURRENT_SCHEMA</>, <varname>SET CATALOG</>, <varname>SET
2078 These provide <acronym>SQL</>-standard syntax for existing features.
2084 Add <function>pg_typeof()</> which returns the data type
2085 of any value (Brendan Jurd)
2091 Make <function>version()</> return information about whether
2092 the server is a 32- or 64-bit binary (Bruce)
2098 Fix the behavior of information schema columns
2099 <literal>is_insertable_into</> and <literal>is_updatable</> to
2100 be consistent (Peter)
2106 Convert remaining builtin set-returning functions to use
2107 <literal>OUT</> parameters (Jaime Casanova)
2111 This makes it possible to call these functions without specifying
2112 a column list: <function>pg_show_all_settings()</>,
2113 <function>pg_lock_status()</>, <function>pg_prepared_xact()</>,
2114 <function>pg_prepared_statement()</>, <function>pg_cursor()</>
2120 Make <function>pg_*_is_visible()</> and
2121 <function>has_*_privilege()</> functions return <literal>NULL</>
2122 for invalid OIDs, rather than reporting an error (Tom)
2128 Extend <function>has_*_privilege()</> functions to allow inquiring
2129 about the OR of multiple privileges in one call (Stephen
2136 Add <function>has_column_privilege()</> and
2137 <function>has_any_column_privilege()</> functions (Stephen
2147 <title>Function Creation</title>
2152 Support variadic functions (functions with a variable number
2153 of arguments) (Pavel Stehule)
2157 Only trailing arguments can be optional, and they all must be
2158 of the same data type.
2164 Support default values for function arguments (Pavel Stehule)
2170 Add <command>CREATE FUNCTION ... RETURNS TABLE</> clause (Pavel
2177 Allow <acronym>SQL</>-language functions to return the output
2178 of an <command>INSERT</>/<command>UPDATE</>/<command>DELETE</>
2179 <literal>RETURNING</> clause (Tom)
2188 <title>PL/PgSQL Server-Side Language</title>
2193 Support <literal>EXECUTE USING</> for easier insertion of data
2194 values into a dynamic query string (Pavel Stehule)
2200 Allow looping over the results of a cursor using a <literal>FOR</>
2201 loop (Pavel Stehule)
2207 Support <literal>RETURN QUERY EXECUTE</> (Pavel
2214 Improve the <literal>RAISE</> command (Pavel Stehule)
2219 Support <literal>DETAIL</> and <literal>HINT</> fields
2224 Support specification of the <literal>SQLSTATE</> error code
2229 Support an exception name parameter
2234 Allow <literal>RAISE</> without parameters in an exception
2235 block to re-throw the current error
2244 Allow specification of <varname>SQLSTATE</> codes
2245 in <literal>EXCEPTION</> lists (Pavel Stehule)
2249 This is useful for handling custom <varname>SQLSTATE</> codes.
2255 Support the <literal>CASE</> statement (Pavel Stehule)
2261 Make <command>RETURN QUERY</> set the special <literal>FOUND</> and
2262 <command>GET DIAGNOSTICS</> <literal>ROW_COUNT</> variables
2269 Make <command>FETCH</> and <command>MOVE</> set the
2270 <command>GET DIAGNOSTICS</> <literal>ROW_COUNT</> variable
2277 Make <command>EXIT</> without a label always exit the innermost
2282 Formerly, if there were a <literal>BEGIN</> block more closely nested
2283 than any loop, it would exit that block instead. The new behavior
2284 matches Oracle(TM) and is also what was previously stated by our own
2291 Make processing of string literals and nested block comments
2292 match the main SQL parser's processing (Tom)
2298 Avoid memory leakage when the same function is called at varying
2299 exception-block nesting depths (Tom)
2310 <title>Client Applications</title>
2316 Fix <literal>pg_ctl restart</> to preserve command-line arguments
2323 Add <literal>-w</>/<literal>--no-password</> option that
2324 prevents password prompting in all utilities that have a
2325 <literal>-W</>/<literal>--password</> option (Peter)
2331 Remove <option>-q</> (quiet) option of <application>createdb</>,
2332 <application>createuser</>, <application>dropdb</>,
2333 <application>dropuser</> (Peter)
2337 These options have had no effect since <productname>PostgreSQL</>
2345 <title><application>psql</></title>
2350 Remove verbose startup banner; now just suggest <literal>help</>
2357 Make <literal>help</> show common backslash commands (Greg
2364 Add <literal>\pset format wrapped</> mode to wrap output to the
2365 screen width, or file/pipe output too if <literal>\pset columns</>
2366 is set (Bryce Nesbitt)
2372 Allow all supported spellings of boolean values in <command>\pset</>,
2373 rather than just <literal>on</> and <literal>off</> (Bruce)
2377 Formerly, any string other than <quote>off</> was silently taken
2378 to mean <literal>true</>. <application>psql</> will now complain
2379 about unrecognized spellings (but still take them as <literal>true</>).
2385 Use the pager for wide output (Bruce)
2391 Require a space between a one-letter backslash command and its first
2392 argument (Bernd Helmle)
2396 This removes a historical source of ambiguity.
2402 Improve tab completion support for schema-qualified and
2403 quoted identifiers (Greg Sabino Mullane)
2409 Add optional <literal>on</>/<literal>off</> argument for
2410 <command>\timing</> (David Fetter)
2416 Display access control rights on multiple lines (Brendan
2417 Jurd, Andreas Scherbaum)
2423 Make <command>\l</> show database access privileges (Andrew Gilligan)
2429 Make <command>\l+</> show database sizes, if permissions
2430 allow (Andrew Gilligan)
2436 Add the <command>\ef</> command to edit function definitions
2446 <title><application>psql</> \d* commands</title>
2452 Make <command>\d*</> commands that do not have a pattern argument
2453 show system objects only if the <literal>S</> modifier is specified
2454 (Greg Sabino Mullane, Bruce)
2458 The former behavior was inconsistent across different variants
2459 of <command>\d</>, and in most cases it provided no easy way to see
2466 Improve <command>\d*</> commands to work with older
2467 <productname>PostgreSQL</> server versions (back to 7.4),
2468 not only the current server version
2475 Make <command>\d</> show foreign-key constraints that reference
2476 the selected table (Kenneth D'Souza)
2482 Make <command>\d</> on a sequence show its column values
2483 (Euler Taveira de Oliveira)
2489 Add column storage type and other relation options to the
2490 <command>\d+</> display (Gregory Stark, Euler Taveira de
2497 Show relation size in <command>\dt+</> output (Dickson S.
2504 Show the possible values of <literal>enum</> types in <command>\dT+</>
2511 Allow <command>\dC</> to accept a wildcard pattern, which matches
2512 either datatype involved in the cast (Tom)
2518 Add a function type column to <command>\df</>'s output, and add
2519 options to list only selected types of functions (David Fetter)
2525 Make <command>\df</> not hide functions that take or return
2526 type <type>cstring</> (Tom)
2530 Previously, such functions were hidden because most of them are
2531 datatype I/O functions, which were deemed uninteresting. The new
2532 policy about hiding system functions by default makes this wart
2542 <title><application>pg_dump</></title>
2547 Add a <literal>--no-tablespaces</> option to
2548 <application>pg_dump</>/<application>pg_dumpall</>/<application>pg_restore</>
2549 so that dumps can be restored to clusters that have non-matching
2550 tablespace layouts (Gavin Roy)
2556 Remove <option>-d</> and <option>-D</> options from
2557 <application>pg_dump</> and <application>pg_dumpall</> (Tom)
2561 These options were too frequently confused with the option to
2562 select a database name in other <productname>PostgreSQL</>
2563 client applications. The functionality is still available,
2564 but you must now spell out the long option name
2565 <option>--inserts</> or <option>--column-inserts</>.
2571 Remove <option>-i</>/<option>--ignore-version</> option from
2572 <application>pg_dump</> and <application>pg_dumpall</> (Tom)
2576 Use of this option does not throw an error, but it has no
2577 effect. This option was removed because the version checks
2578 are necessary for safety.
2584 Disable <varname>statement_timeout</> during dump and restore
2591 Add <application>pg_dump</>/<application>pg_dumpall</> option
2592 <option>--lock-wait-timeout</> (David Gould)
2596 This allows dumps to fail if unable to acquire a shared lock
2597 within the specified amount of time.
2603 Reorder <application>pg_dump</> <literal>--data-only</> output
2604 to dump tables referenced by foreign keys before
2605 the referencing tables (Tom)
2609 This allows data loads when foreign keys are already present.
2610 If circular references make a safe ordering impossible, a
2611 <literal>NOTICE</> is issued.
2617 Allow <application>pg_dump</>, <application>pg_dumpall</>, and
2618 <application>pg_restore</> to use a specified role (Benedek
2625 Allow <application>pg_restore</> to use multiple concurrent
2626 connections to do the restore (Andrew)
2630 The number of concurrent connections is controlled by the option
2631 <literal>--jobs</>. This is supported only for custom-format archives.
2642 <title>Programming Tools</title>
2645 <title><application>libpq</></title>
2650 Allow the <type>OID</> to be specified when importing a large
2651 object, via new function <function>lo_import_with_oid()</> (Tatsuo)
2657 Add <quote>events</> support (Andrew Chernow, Merlin Moncure)
2661 This adds the ability to register callbacks to manage private
2662 data associated with <structname>PGconn</> and <structname>PGresult</>
2669 Improve error handling to allow the return of multiple
2670 error messages as multi-line error reports (Magnus)
2676 Make <function>PQexecParams()</> and related functions return
2677 <varname>PGRES_EMPTY_QUERY</> for an empty query (Tom)
2681 They previously returned <varname>PGRES_COMMAND_OK</>.
2687 Document how to avoid the overhead of <function>WSACleanup()</>
2688 on Windows (Andrew Chernow)
2694 Make Kerberos connections use the same method to determine the
2695 username of the client as all other authentication methods (Magnus)
2699 Previously a special Kerberos-only API was used.
2707 <title><application>libpq</> <acronym>SSL</> (Secure Sockets Layer)
2713 Fix certificate validation for <acronym>SSL</> connections
2718 <application>libpq</> now supports verifying both the certificate
2719 and the name of the server when making <acronym>SSL</>
2720 connections. If a root certificate is not available to use for
2721 verification, <acronym>SSL</> connections will fail. The
2722 <literal>sslmode</> parameter is used to enable certificate
2723 verification and set the level of checking.
2724 The default is still not to do any verification, allowing connections
2725 to SSL-enabled servers without requiring a root certificate on the
2732 Support wildcard server certificates (Magnus)
2736 If a certificate <acronym>CN</> starts with <literal>*</>, it will
2737 be treated as a wildcard when matching the hostname, allowing the
2738 use of the same certificate for multiple servers.
2744 Allow the file locations for client certificates to be specified
2745 (Mark Woodward, Alvaro, Magnus)
2751 Add a <function>PQinitOpenSSL</> function to allow greater control
2752 over OpenSSL/libcrypto initialization (Andrew Chernow)
2758 Make <application>libpq</> unregister its <application>OpenSSL</>
2759 callbacks when no database connections remain open
2760 (Bruce, Magnus, Russell Smith)
2764 This is required for applications that unload the libpq library,
2765 otherwise invalid <application>OpenSSL</> callbacks will remain.
2774 <title><application>ecpg</></title>
2779 Add localization support for messages (Euler Taveira de
2786 ecpg parser is now automatically generated from the server
2791 Previously the ecpg parser was hand-maintained.
2800 <title>Server Programming Interface (<acronym>SPI</>)</title>
2805 Add support for single-use plans with out-of-line
2812 Add new <varname>SPI_OK_REWRITTEN</> return code for
2813 <function>SPI_execute()</> (Heikki)
2817 This is used when a command is rewritten to another type of
2824 Remove unnecessary inclusions from <filename>executor/spi.h</> (Tom)
2828 SPI-using modules might need to add some <literal>#include</>
2829 lines if they were depending on <filename>spi.h</> to include
2841 <title>Build Options</title>
2846 Update build system to use <productname>Autoconf</> 2.61 (Peter)
2852 Require <productname>GNU bison</> for source code builds (Peter)
2856 This has effectively been required for several years, but now there
2857 is no infrastructure claiming to support other parser tools.
2863 Add <application>pg_config</> <literal>--htmldir</> option
2870 Pass <type>float4</> by value inside the server (Zoltan
2875 Add <application>configure</> option
2876 <literal>--disable-float4-byval</> to use the old behavior.
2877 External C functions that use old-style (version 0) call convention
2878 and pass or return <type>float4</> values will be broken by this
2879 change, so you may need the <application>configure</> option if you
2880 have such functions and don't want to update them.
2886 Pass <type>float8</>, <type>int8</>, and related datatypes
2887 by value inside the server on 64-bit platforms (Zoltan Boszormenyi)
2891 Add <application>configure</> option
2892 <literal>--disable-float8-byval</> to use the old behavior.
2893 As above, this change might break old-style external C functions.
2899 Add configure options <literal>--with-segsize</>,
2900 <literal>--with-blocksize</>, <literal>--with-wal-blocksize</>,
2901 <literal>--with-wal-segsize</> (Zdenek Kotala, Tom)
2905 This simplifies build-time control over several constants that
2906 previously could only be changed by editing
2907 <filename>pg_config_manual.h</>.
2913 Allow threaded builds on <productname>Solaris</> 2.5 (Bruce)
2919 Use the system's <function>getopt_long()</> on <productname>Solaris</>
2920 (Zdenek Kotala, Tom)
2924 This makes option processing more consistent with what Solaris users
2931 Add support for the <productname>Sun Studio</> compiler on
2932 <productname>Linux</> (Julius Stroffek)
2938 Append the major version number to the backend <application>gettext</>
2939 domain, and the <literal>soname</> major version number to
2940 libraries' <application>gettext</> domain (Peter)
2944 This simplifies parallel installations of multiple versions.
2950 Add support for code coverage testing with <application>gcov</>
2957 Allow out-of-tree builds on <productname>Mingw</> and
2958 <productname>Cygwin</> (Richard Evans)
2964 Fix the use of <productname>Mingw</> as a cross-compiling source
2974 <title>Source Code</title>
2979 Support 64-bit time zone data files (Heikki)
2983 This adds support for daylight saving time (<acronym>DST</>)
2984 calculations beyond the year 2038.
2990 Deprecate use of platform's <type>time_t</> data type (Tom)
2994 Some platforms have migrated to 64-bit <type>time_t</>, some have
2995 not, and Windows can't make up its mind what it's doing. Define
2996 <type>pg_time_t</> to have the same meaning as <type>time_t</>,
2997 but always be 64 bits (unless the platform has no 64-bit integer type),
2998 and use that type in all module APIs and on-disk data formats.
3004 Fix bug in handling of the time zone database when cross-compiling
3011 Link backend object files in one step, rather than in stages
3018 Improve <application>gettext</> support to allow better translation
3025 Add message translation support to the PL languages (Alvaro, Peter)
3031 Add more <application>DTrace</> probes (Robert Lor)
3037 Enable <application>DTrace</> support on <application>Mac OS X
3038 Leopard</> and other non-Solaris platforms (Robert Lor)
3044 Simplify and standardize conversions between C strings and
3045 <type>text</> datums, by providing common functions for the purpose
3052 Clean up the <filename>include/catalog/</> header files so that
3053 frontend programs can include them without including
3054 <filename>postgres.h</>
3061 Make <type>name</> char-aligned, and suppress zero-padding of
3062 <type>name</> entries in indexes (Tom)
3068 Recover better if dynamically-loaded code executes <function>exit()</>
3075 Add a hook to let plug-ins monitor the executor (Itagaki
3082 Add a hook to allow the planner's statistics lookup behavior to
3083 be overridden (Simon Riggs)
3089 Add <function>shmem_startup_hook()</> for custom shared memory
3096 Replace the index access method <function>amgetmulti</> entry point
3097 with <function>amgetbitmap</>, and extend the API for
3098 <function>amgettuple</> to support run-time determination of
3099 operator lossiness (Heikki, Tom, Teodor)
3103 The API for GIN and GiST opclass <function>consistent</> functions
3104 has been extended as well.
3110 Add support for partial-match searches in <acronym>GIN</> indexes
3111 (Teodor Sigaev, Oleg Bartunov)
3117 Replace <structname>pg_class</> column <structfield>reltriggers</>
3118 with boolean <structfield>relhastriggers</> (Simon)
3122 Also remove unused <structname>pg_class</> columns
3123 <structfield>relukeys</>, <structfield>relfkeys</>, and
3124 <structfield>relrefs</>.
3130 Add a <structfield>relistemp</> column to <structname>pg_class</>
3131 to ease identification of temporary tables (Tom)
3137 Move platform <acronym>FAQ</>s into the main documentation
3144 Prevent parser input files from being built with any conflicts
3151 Add support for the <literal>KOI8U</> (Ukrainian) encoding
3158 Add Japanese message translations (Japan PostgreSQL Users Group)
3162 This used to be maintained as a separate project.
3168 Fix problem when setting <varname>LC_MESSAGES</> on
3169 <application>MSVC</>-built systems (Hiroshi Inoue, Hiroshi
3179 <title>Contrib</title>
3185 Add <filename>contrib/auto_explain</> to automatically run
3186 <command>EXPLAIN</> on queries exceeding a specified duration
3187 (Itagaki Takahiro, Tom)
3193 Add <filename>contrib/btree_gin</> to allow GIN indexes to
3194 handle more datatypes (Oleg, Teodor)
3200 Add <filename>contrib/citext</> to provide a case-insensitive,
3201 multibyte-aware text data type (David Wheeler)
3207 Add <filename>contrib/pg_stat_statements</> for server-wide
3208 tracking of statement execution statistics (Itagaki Takahiro)
3214 Add duration and query mode options to <filename>contrib/pgbench</>
3221 Make <filename>contrib/pgbench</> use table names
3222 <structname>pgbench_accounts</>, <structname>pgbench_branches</>,
3223 <structname>pgbench_history</>, and <structname>pgbench_tellers</>,
3224 rather than just <structname>accounts</>, <structname>branches</>,
3225 <structname>history</>, and <structname>tellers</> (Tom)
3229 This is to reduce the risk of accidentally destroying real data
3230 by running <application>pgbench</>.
3236 Fix <filename>contrib/pgstattuple</> to handle tables and
3237 indexes with over 2 billion pages (Tatsuhito Kasahara)
3243 In <filename>contrib/fuzzystrmatch</>, add a version of the
3244 Levenshtein string-distance function that allows the user to
3245 specify the costs of insertion, deletion, and substitution
3252 Make <filename>contrib/ltree</> support multibyte encodings
3259 Improve <filename>contrib/dblink</>'s reporting of errors from
3260 the remote server (Joe Conway)
3266 Make sure <filename>contrib/dblink</> uses a password supplied
3267 by the user, and not accidentally taken from the server's
3268 <filename>.pgpass</> file (Joe Conway)
3272 This is a minor security enhancement.
3278 Add <function>fsm_page_contents()</>
3279 to <filename>contrib/pageinspect</> (Heikki)
3285 Modify <function>get_raw_page()</> to support free space map
3286 (<filename>*_fsm</>) files. Also update
3287 <filename>contrib/pg_freespacemap</>.
3293 Add support for multibyte encodings to <filename>contrib/pg_trgm</>
3300 Rewrite <filename>contrib/intagg</> to use new
3301 functions <function>array_agg()</> and <function>unnest()</>
3308 Remove <filename>contrib/intarray</>'s definitions of the
3309 <literal><@</> and <literal>@></> operators (Tom)
3313 This avoids confusion with the equivalent built-in operators.
3314 If needed, the <filename>contrib/intarray</> implementations
3315 are still available under their historical names <literal>@</>
3322 Make <filename>contrib/pg_standby</> recover all available WAL before
3323 failover (Fujii Masao, Simon, Heikki)
3327 To make this safe, you now need to set the new
3328 <literal>recovery_end_command</> option in <filename>recovery.conf</> to
3329 clean up the trigger fail after failover.