1 <!-- $PostgreSQL: pgsql/doc/src/sgml/release-8.4.sgml,v 1.13 2009/08/27 01:27:34 momjian Exp $ -->
2 <!-- See header comment in release.sgml about typical markup -->
4 <sect1 id="release-8-4-1">
5 <title>Release 8.4.1</title>
8 <title>Release date</title>
9 <simpara>2009-09-09, AS OF 2009-08-26</simpara>
13 This release contains a variety of fixes from 8.4.
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.1</title>
22 A dump/restore is not required for those running 8.4.X.
28 <title>Changes</title>
34 Fix pg_dump <literal>--binary-upgrade</> to handle dropped inherited columns
35 and their check constraints properly (Tom)
39 <literal>pg_dump --binary-upgrade</> is used by pg_migrator.
45 Fix pg_dump <literal>--binary-upgrade</> to handle pg_largeobject frozen xid value
52 Allow parentheses around the <literal>WITH</> query expression
59 Treat <function>to_char(..., 'TH')</> as an uppercase ordinal
60 suffix with <literal>'HH'</>/<literal>'HH12'</> (Heikki)
64 It was previously handled as <literal>'th'</> (lowercase).
70 Fix locale handling with plperl (Heikki)
74 This bug could cause the servers locale to change, leading to
81 Fix <filename>/contrib/xml2</> <function>xslt_process()</> to
82 properly handle the maximum number of parameters (twenty) (Tom)
88 Remove translated FAQs (Peter)
92 They are now on the <ulink
93 url="http://wiki.postgresql.org/wiki/FAQ">wiki</ulink>. The
94 main FAQ was moved to the wiki some time ago.
100 Reduce memory consumption of aggregates on arrays (Tom)
106 Properly show fractional seconds and milliseconds for
107 <function>>EXTRACT()</> (Tom)
113 Fix case where <application>pg_ctl</> fast shutdown was not
114 working if <application>pg_ctl</> smart shutdown was already in
115 progress (Fujii Masao)
121 Fix rare recovery error related to the creation of WAL entries (Tom)
127 Re-add documentation for configure flag <literal>--no-readline</> (Andrew)
133 Fix problem where Win32 shared memory allocation sometimes failed on
134 startup (Tsutomu Yamada, Magnus)
138 This bug caused some Win32 backends to randomly not start.
144 Improve performance when processing TOAST rows (Tom)
148 This is particularly useful for <ulink
149 url="http://postgis.refractions.net/">PostGIS</ulink>.
155 Fix problem where expired rows could appear visible after a crash (Tom)
159 This bug involved a page status bit potentially not being set
160 correctly after a server crash.
166 Output configuration file errors to <filename>postmaster.log</> if the
167 server is started in silent mode (Tom)
171 Previously such error messages were discarded, leading to
172 difficulty in debugging.
181 <sect1 id="release-8-4">
182 <title>Release 8.4</title>
185 <title>Release date</title>
186 <simpara>2009-07-01</simpara>
190 <title>Overview</title>
193 After many years of development, <productname>PostgreSQL</> has
194 become feature-complete in many areas. This release shows a
195 targeted approach to adding features (e.g., authentication,
196 monitoring, space reuse), and adds capabilities defined in the
197 later SQL standards. The major areas of enhancement are:
202 <!-- This list duplicates items below, but without authors or details-->
212 Common Table Expressions and Recursive Queries
218 Default and variadic parameters for functions
236 Per-database locale settings
242 Improved hash indexes
248 Improved join performance for <literal>EXISTS</> and <literal>NOT EXISTS</> queries
254 Easier-to-use Warm Standby
260 Automatic sizing of the Free Space Map
266 Visibility Map (greatly reduces vacuum overhead for slowly-changing tables)
272 Version-aware psql (backslash commands work against older servers)
278 Support SSL certificates for user authentication
284 Per-function runtime statistics
290 Easy editing of functions in psql
296 New contrib modules: pg_stat_statements, auto_explain, citext, btree_gin
303 The above items are explained in more detail in the sections below.
309 <title>Migration to Version 8.4</title>
312 A dump/restore using <application>pg_dump</application> is
313 required for those wishing to migrate data from any previous
318 Observe the following incompatibilities:
322 <title>General</title>
327 Use 64-bit integer datetimes by default (Neil Conway)
331 Previously this was selected by <application>configure</>'s
332 <option>--enable-integer-datetimes</> option. To retain
333 the old behavior, build with <option>--disable-integer-datetimes</>.
339 Remove <application>ipcclean</> utility command (Bruce)
343 The utility only worked on a few platforms. Users should use
344 their operating system tools instead.
353 <title>Server Settings</title>
358 Change default setting for
359 <literal>log_min_messages</> to <literal>warning</> (previously
360 it was <literal>notice</>) to reduce log file volume (Tom)
366 Change default setting for <literal>max_prepared_transactions</> to
367 zero (previously it was 5) (Tom)
373 Make <literal>debug_print_parse</>, <literal>debug_print_rewritten</>,
374 and <literal>debug_print_plan</>
375 output appear at <literal>LOG</> message level, not
376 <literal>DEBUG1</> as formerly (Tom)
382 Make <literal>debug_pretty_print</> default to <literal>on</> (Tom)
388 Remove <varname>explain_pretty_print</> parameter (no longer needed) (Tom)
394 Make <varname>log_temp_files</> settable by superusers only, like other
395 logging options (Simon Riggs)
401 Remove automatic appending of the epoch timestamp when no <literal>%</>
402 escapes are present in <literal>log_filename</> (Robert Haas)
406 This change was made because some users wanted a fixed log filename,
407 for use with an external log rotation tool.
413 Remove <varname>log_restartpoints</> from <filename>recovery.conf</>;
414 instead use <varname>log_checkpoints</> (Simon)
420 Remove <varname>krb_realm</> and <varname>krb_server_hostname</>;
421 these are now set in <filename>pg_hba.conf</> instead (Magnus)
427 There are also significant changes in <link
428 linkend="release-8-4-pg-hba-conf"><filename>pg_hba.conf</></link>,
438 <title>Queries</title>
444 Change <command>TRUNCATE</> and <command>LOCK</> to
445 apply to child tables of the specified table(s) (Peter)
449 These commands now accept an <literal>ONLY</> option that prevents
450 processing child tables; this option must be used if the old
457 <command>SELECT DISTINCT</> and
458 <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</>
459 no longer always produce sorted output (Tom)
463 Previously, these types of queries always removed duplicate rows
464 by means of Sort/Unique processing (i.e., sort then remove adjacent
465 duplicates). Now they can be implemented by hashing, which will not
466 produce sorted output. If an application relied on the output being
467 in sorted order, the recommended fix is to add an <literal>ORDER BY</>
468 clause. As a short-term workaround, the previous behavior can be
469 restored by disabling <literal>enable_hashagg</>, but that is a very
470 performance-expensive fix. <literal>SELECT DISTINCT ON</> never uses
471 hashing, however, so its behavior is unchanged.
477 Force child tables to inherit <literal>CHECK</> constraints from parents
478 (Alex Hunsaker, Nikhil Sontakke, Tom)
482 Formerly it was possible to drop such a constraint from a child
483 table, allowing rows that violate the constraint to be visible
484 when scanning the parent table. This was deemed inconsistent,
485 as well as contrary to SQL standard.
491 Disallow negative <literal>LIMIT</> or <literal>OFFSET</>
492 values, rather than treating them as zero (Simon)
498 Disallow <command>LOCK TABLE</> outside a transaction block
503 Such an operation is useless because the lock would be released
510 Sequences now contain an additional <structfield>start_value</> column
515 This supports <command>ALTER SEQUENCE ... RESTART</>.
525 <title>Functions and Operators</title>
531 Make <type>numeric</> zero raised to a fractional power return
532 <literal>0</>, rather than throwing an error, and make
533 <type>numeric</> zero raised to the zero power return <literal>1</>,
534 rather than error (Bruce)
538 This matches the longstanding <type>float8</> behavior.
544 Allow unary minus of floating-point values to produce minus zero (Tom)
548 The changed behavior is more <acronym>IEEE</>-standard
555 Throw an error if an escape character is the last character in
556 a <literal>LIKE</> pattern (i.e., it has nothing to escape) (Tom)
560 Previously, such an escape character was silently ignored,
561 thus possibly masking application logic errors.
567 Remove <literal>~=~</> and <literal>~<>~</> operators
568 formerly used for <literal>LIKE</> index comparisons (Tom)
572 Pattern indexes now use the regular equality operator.
578 <function>xpath()</> now passes its arguments to <application>libxml</>
579 without any changes (Andrew)
583 This means that the XML argument must be a well-formed XML document.
584 The previous coding attempted to allow XML fragments, but it did not
591 Make <function>xmlelement()</> format attribute values just like
592 content values (Peter)
596 Previously, attribute values were formatted according to the
597 normal SQL output behavior, which is sometimes at odds with
604 Rewrite memory management for <application>libxml</>-using functions
609 This change should avoid some compatibility problems with use of
610 <application>libxml</> in PL/Perl and other add-on code.
616 Adopt a faster algorithm for hash functions (Kenneth Marshall,
617 based on work of Bob Jenkins)
621 Many of the built-in hash functions now deliver different results on
622 little-endian and big-endian platforms.
629 <title>Temporal Functions and Operators</title>
635 <varname>DateStyle</> no longer controls <type>interval</> output
636 formatting; instead there is a new variable <varname>IntervalStyle</>
643 Improve consistency of handling of fractional seconds in
644 <type>timestamp</> and <type>interval</> output (Ron Mayer)
648 This may result in displaying a different number of fractional
649 digits than before, or rounding instead of truncating.
655 Make <function>to_char()</>'s localized month/day names depend
656 on <varname>LC_TIME</>, not <varname>LC_MESSAGES</> (Euler
663 Cause <function>to_date()</> and <function>to_timestamp()</>
664 to more consistently report errors for invalid input (Brendan
669 Previous versions would often ignore or silently misread input
670 that did not match the format string. Such cases will now
677 Fix <function>to_timestamp()</> to not require upper/lower case
678 matching for meridian (<literal>AM</>/<literal>PM</>) and era
679 (<literal>BC</>/<literal>AD</>) format designations (Brendan
684 For example, input value <literal>ad</> now matches the format
685 string <literal>AD</>.
698 <title>Changes</title>
701 Below you will find a detailed account of the changes between
702 <productname>PostgreSQL</productname> 8.4 and the previous major
707 <title>Performance</title>
712 Improve optimizer statistics calculations (Jan Urbanski, Tom)
716 In particular, estimates for full-text-search operators are
723 Allow <command>SELECT DISTINCT</> and
724 <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> to
729 This means that these types of queries no longer automatically
730 produce sorted output.
736 Create explicit concepts of semi-joins and anti-joins (Tom)
740 This work formalizes our previous ad-hoc treatment of <literal>IN
741 (SELECT ...)</> clauses, and extends it to <literal>EXISTS</> and
742 <literal>NOT EXISTS</> clauses. It should result in significantly
743 better planning of <literal>EXISTS</> and <literal>NOT EXISTS</>
744 queries. In general, logically equivalent <literal>IN</> and
745 <literal>EXISTS</> clauses should now have similar performance,
746 whereas previously <literal>IN</> often won.
752 Improve optimization of sub-selects beneath outer joins (Tom)
756 Formerly, a sub-select or view could not be optimized very well if it
757 appeared within the nullable side of an outer join and contained
758 non-strict expressions (for instance, constants) in its result list.
764 Improve the performance of <function>text_position()</> and
765 related functions by using Boyer-Moore-Horspool searching (David
770 This is particularly helpful for long search patterns.
776 Reduce I/O load of writing the statistics collection file
777 by writing the file only when requested (Martin Pihlak)
783 Improve performance for bulk inserts (Robert Haas, Simon)
789 Increase the default value of <varname>default_statistics_target</>
790 from <literal>10</> to <literal>100</> (Greg Sabino Mullane,
795 The maximum value was also increased from <literal>1000</> to
802 Perform <varname>constraint_exclusion</> checking by default
803 in queries involving inheritance or <literal>UNION ALL</> (Tom)
807 A new <varname>constraint_exclusion</> setting,
808 <literal>partition</>, was added to specify this behavior.
814 Allow I/O read-ahead for bitmap index scans (Greg Stark)
818 The amount of read-ahead is controlled by
819 <varname>effective_io_concurrency</>. This feature is available only
820 if the kernel has <function>posix_fadvise()</> support.
826 Inline simple set-returning <acronym>SQL</> functions in
827 <literal>FROM</> clauses (Richard Rowell)
833 Improve performance of multi-batch hash joins by providing a special
834 case for join key values that are especially common in the outer
835 relation (Bryce Cutt, Ramon Lawrence)
841 Reduce volume of temporary data in multi-batch hash joins
842 by suppressing <quote>physical tlist</> optimization (Michael
843 Henderson, Ramon Lawrence)
849 Avoid waiting for idle-in-transaction sessions during
850 <command>CREATE INDEX CONCURRENTLY</> (Simon)
856 Improve performance of shared cache invalidation (Tom)
865 <title>Server</title>
868 <title>Settings</title>
874 Convert many <filename>postgresql.conf</> settings to enumerated
875 values so that <literal>pg_settings</> can display the valid
882 Add <varname>cursor_tuple_fraction</> parameter to control the
883 fraction of a cursor's rows that the planner assumes will be
884 fetched (Robert Hell)
890 Allow underscores in the names of custom variable
891 classes in <filename>postgresql.conf</> (Tom)
900 <title>Authentication and security</title>
905 Remove support for the (insecure) <literal>crypt</> authentication method
910 This effectively obsoletes pre-<productname>PostgreSQL</> 7.2 client
911 libraries, as there is no longer any non-plaintext password method that
918 Support regular expressions in <filename>pg_ident.conf</>
925 Allow <productname>Kerberos</>/<acronym>GSSAPI</> parameters
926 to be changed without restarting the postmaster (Magnus)
932 Support <acronym>SSL</> certificate chains in server certificate
937 Including the full certificate chain makes the client able
938 to verify the certificate without having all intermediate CA
939 certificates present in the local store, which is often the case for
946 Report appropriate error message for combination of <literal>MD5</>
947 authentication and <varname>db_user_namespace</> enabled (Bruce)
954 <sect4 id="release-8-4-pg-hba-conf">
955 <title><filename>pg_hba.conf</></title>
960 Change all authentication options to use <literal>name=value</>
965 This makes incompatible changes to the <literal>ldap</>,
966 <literal>pam</> and <literal>ident</> authentication methods. All
967 <filename>pg_hba.conf</> entries with these methods need to be
968 rewritten using the new format.
974 Remove the <literal>ident sameuser</> option, instead making that
975 behavior the default if no usermap is specified (Magnus)
981 Allow a usermap parameter for all external authentication methods
986 Previously a usermap was only supported for <literal>ident</>
993 Add <literal>clientcert</> option to control requesting of a
994 client certificate (Magnus)
998 Previously this was controlled by the presence of a root
999 certificate file in the server's data directory.
1005 Add <literal>cert</> authentication method to allow
1006 <emphasis>user</> authentication via <acronym>SSL</> certificates
1011 Previously <acronym>SSL</> certificates could only verify that
1012 the client had access to a certificate, not authenticate a
1019 Allow <literal>krb5</>, <literal>gssapi</> and <literal>sspi</>
1020 realm and <literal>krb5</> host settings to be specified in
1021 <filename>pg_hba.conf</> (Magnus)
1025 These override the settings in <filename>postgresql.conf</>.
1031 Add <varname>include_realm</> parameter for <literal>krb5</>,
1032 <literal>gssapi</>, and <literal>sspi</> methods (Magnus)
1036 This allows identical usernames from different realms to be
1037 authenticated as different database users using usermaps.
1043 Parse <filename>pg_hba.conf</> fully when it is loaded,
1044 so that errors are reported immediately (Magnus)
1048 Previously, most errors in the file wouldn't be detected until clients
1049 tried to connect, so an erroneous file could render the system
1050 unusable. With the new behavior, if an error is detected during
1051 reload then the bad file is rejected and the postmaster continues
1052 to use its old copy.
1058 Show all parsing errors in <filename>pg_hba.conf</> instead of
1059 aborting after the first one (Selena Deckelmann)
1065 Support <literal>ident</> authentication over Unix-domain sockets
1066 on <productname>Solaris</> (Garick Hamlin)
1075 <title>Continuous Archiving</title>
1080 Provide an option to <function>pg_start_backup()</> to force its
1081 implied checkpoint to finish as quickly as possible (Tom)
1085 The default behavior avoids excess I/O consumption, but that is
1086 pointless if no concurrent query activity is going on.
1092 Make <function>pg_stop_backup()</> wait for modified <acronym>WAL</>
1093 files to be archived (Simon)
1097 This guarantees that the backup is valid at the time
1098 <function>pg_stop_backup()</> completes.
1104 When archiving is enabled, rotate the last WAL segment at shutdown
1105 so that all transactions can be archived immediately
1106 (Guillaume Smet, Heikki)
1112 Delay <quote>smart</> shutdown while a continuous archiving base backup
1113 is in progress (Laurenz Albe)
1119 Cancel a continuous archiving base backup if <quote>fast</> shutdown
1120 is requested (Laurenz Albe)
1126 Allow <filename>recovery.conf</> boolean variables to take the
1127 same range of string values as <filename>postgresql.conf</>
1138 <title>Monitoring</title>
1143 Add <function>pg_conf_load_time()</> to report when
1144 the <productname>PostgreSQL</> configuration files were last loaded
1151 Add <function>pg_terminate_backend()</> to safely terminate a
1152 backend (the <literal>SIGTERM</> signal works also) (Tom, Bruce)
1156 While it's always been possible to <literal>SIGTERM</> a single
1157 backend, this was previously considered unsupported; and testing
1158 of the case found some bugs that are now fixed.
1164 Add ability to track user-defined functions' call counts and
1165 runtimes (Martin Pihlak)
1169 Function statistics appear in a new system view,
1170 <literal>pg_stat_user_functions</>. Tracking is controlled
1171 by the new parameter <varname>track_functions</>.
1177 Allow specification of the maximum query string size in
1178 <literal>pg_stat_activity</> via new
1179 <varname>track_activity_query_size</> parameter (Thomas Lee)
1185 Increase the maximum line length sent to <application>syslog</>, in
1186 hopes of improving performance (Tom)
1192 Add read-only configuration variables <varname>segment_size</>,
1193 <varname>wal_block_size</>, and <varname>wal_segment_size</>
1200 When reporting a deadlock, report the text of all queries involved
1201 in the deadlock to the server log (Itagaki Takahiro)
1207 Add <function>pg_stat_get_activity(pid)</> function to return
1208 information about a specific process id (Magnus)
1214 Allow the location of the server's statistics file to be specified
1215 via <varname>stats_temp_directory</> (Magnus)
1219 This allows the statistics file to be placed in a
1220 <acronym>RAM</>-resident directory to reduce I/O requirements.
1221 On startup/shutdown, the file is copied to its traditional location
1222 (<literal>$PGDATA/global/</>) so it is preserved across restarts.
1233 <title>Queries</title>
1238 Add support for <literal>WINDOW</> functions (Hitoshi Harada)
1244 Add support for <literal>WITH</> clauses (CTEs), including <literal>WITH
1245 RECURSIVE</> (Yoshiyuki Asaba, Tatsuo Ishii, Tom)
1251 Add <command>TABLE</> command (Peter)
1255 <literal>TABLE tablename</> is a SQL standard short-hand for
1256 <literal>SELECT * FROM tablename</>.
1262 Allow <literal>AS</> to be optional when specifying a
1263 <command>SELECT</> (or <literal>RETURNING</>) column output
1264 label (Hiroshi Saito)
1268 This works so long as the column label is not any
1269 <productname>PostgreSQL</> keyword; otherwise <literal>AS</> is still
1276 Support set-returning functions in <command>SELECT</> result lists
1277 even for functions that return their result via a tuplestore (Tom)
1281 In particular, this means that functions written in PL/PgSQL
1282 and other PL languages can now be called this way.
1288 Support set-returning functions in the output of aggregation
1289 and grouping queries (Tom)
1295 Allow <command>SELECT FOR UPDATE</>/<literal>SHARE</> to work
1296 on inheritance trees (Tom)
1302 Add infrastructure for <acronym>SQL/MED</> (Martin Pihlak,
1307 There are no remote or external <acronym>SQL/MED</> capabilities
1308 yet, but this change provides a standardized and future-proof
1309 system for managing connection information for modules like
1310 <filename>dblink</> and <filename>plproxy</>.
1316 Invalidate cached plans when referenced schemas, functions, operators,
1317 or operator classes are modified (Martin Pihlak, Tom)
1321 This improves the system's ability to respond to on-the-fly
1327 Allow comparison of composite types and allow arrays of
1328 anonymous composite types (Tom)
1332 This allows constructs such as
1333 <literal>row(1, 1.1) = any (array[row(7, 7.7), row(1, 1.0)])</>.
1334 This is particularly useful in recursive queries.
1340 Add support for Unicode string literal and identifier specifications
1341 using code points, e.g. <literal>U&'d\0061t\+000061'</>
1348 Reject <literal>\000</> in string literals and <command>COPY</> data
1353 Previously, this was accepted but had the effect of terminating
1354 the string contents.
1360 Improve the parser's ability to report error locations (Tom)
1364 An error location is now reported for many semantic errors,
1365 such as mismatched datatypes, that previously could not be localized.
1372 <title><command>TRUNCATE</></title>
1377 Support statement-level <literal>ON TRUNCATE</> triggers (Simon)
1383 Add <literal>RESTART</>/<literal>CONTINUE IDENTITY</> options
1384 for <command>TRUNCATE TABLE</>
1385 (Zoltan Boszormenyi)
1389 The start value of a sequence can be changed by <command>ALTER
1390 SEQUENCE START WITH</>.
1396 Allow <command>TRUNCATE tab1, tab1</> to succeed (Bruce)
1402 Add a separate <command>TRUNCATE</> permission (Robert Haas)
1411 <title><command>EXPLAIN</></title>
1416 Make <command>EXPLAIN VERBOSE</> show the output columns of each
1421 Previously <command>EXPLAIN VERBOSE</> output an internal
1422 representation of the query plan. (That behavior is now
1423 available via <varname>debug_print_plan</>.)
1429 Make <command>EXPLAIN</> identify subplans and initplans with
1430 individual labels (Tom)
1436 Make <command>EXPLAIN</> honor <varname>debug_print_plan</> (Tom)
1442 Allow <command>EXPLAIN</> on <command>CREATE TABLE AS</> (Peter)
1451 <title><literal>LIMIT</>/<literal>OFFSET</></title>
1456 Allow sub-selects in <literal>LIMIT</> and <literal>OFFSET</> (Tom)
1462 Add <acronym>SQL</>-standard syntax for
1463 <literal>LIMIT</>/<literal>OFFSET</> capabilities (Peter)
1468 <literal>OFFSET num {ROW|ROWS} FETCH {FIRST|NEXT} [num] {ROW|ROWS}
1480 <title>Object Manipulation</title>
1485 Add support for column-level privileges (Stephen Frost, KaiGai
1492 Refactor multi-object <command>DROP</> operations to reduce the
1493 need for <literal>CASCADE</> (Alex Hunsaker)
1497 For example, if table <literal>B</> has a dependency on table
1498 <literal>A</>, the command <literal>DROP TABLE A, B</> no longer
1499 requires the <literal>CASCADE</> option.
1505 Fix various problems with concurrent <command>DROP</> commands
1506 by ensuring that locks are taken before we begin to drop dependencies
1513 Improve reporting of dependencies during <command>DROP</>
1520 Add <literal>WITH [NO] DATA</> clause to <command>CREATE TABLE
1521 AS</>, per the <acronym>SQL</> standard (Peter, Tom)
1527 Add support for user-defined I/O conversion casts (Heikki)
1533 Allow <command>CREATE AGGREGATE</> to use an <type>internal</>
1534 transition datatype (Tom)
1540 Add <literal>LIKE</> clause to <command>CREATE TYPE</> (Tom)
1544 This simplifies creation of data types that use the same internal
1545 representation as an existing type.
1551 Allow specification of the type category and <quote>preferred</>
1552 status for user-defined base types (Tom)
1556 This allows more control over the coercion behavior of user-defined
1563 Allow <command>CREATE OR REPLACE VIEW</> to add columns to the
1564 end of a view (Robert Haas)
1571 <title><command>ALTER</></title>
1576 Add <command>ALTER TYPE RENAME</> (Petr Jelinek)
1582 Add <command>ALTER SEQUENCE ... RESTART</> (with no parameter) to
1583 reset a sequence to its initial value (Zoltan Boszormenyi)
1589 Modify the <command>ALTER TABLE</> syntax to allow all reasonable
1590 combinations for tables, indexes, sequences, and views (Tom)
1594 This change allows the following new syntaxes:
1599 <command>ALTER SEQUENCE OWNER TO</>
1604 <command>ALTER VIEW ALTER COLUMN SET/DROP DEFAULT</>
1609 <command>ALTER VIEW OWNER TO</>
1614 <command>ALTER VIEW SET SCHEMA</>
1619 There is no actual new functionality here, but formerly
1620 you had to say <command>ALTER TABLE</> to do these things,
1621 which was confusing.
1627 Add support for the syntax <command>ALTER TABLE ... ALTER COLUMN
1628 ... SET DATA TYPE</> (Peter)
1632 This is <acronym>SQL</>-standard syntax for functionality that
1633 was already supported.
1639 Make <command>ALTER TABLE SET WITHOUT OIDS</> rewrite the table
1640 to physically remove <type>OID</> values (Tom)
1644 Also, add <command>ALTER TABLE SET WITH OIDS</> to rewrite the
1645 table to add <type>OID</>s.
1654 <title>Database Manipulation</title>
1659 Improve reporting of
1660 <command>CREATE</>/<command>DROP</>/<command>RENAME DATABASE</>
1661 failure when uncommitted prepared transactions are the cause
1668 Make <varname>LC_COLLATE</> and <varname>LC_CTYPE</> into
1669 per-database settings (Radek Strnad, Heikki)
1673 This makes collation similar to encoding, which was always
1674 configurable per database.
1680 Improve checks that the database encoding, collation
1681 (<varname>LC_COLLATE</>), and character classes
1682 (<varname>LC_CTYPE</>) match (Heikki, Tom)
1686 Note in particular that a new database's encoding and locale
1687 settings can be changed only when copying from <literal>template0</>.
1688 This prevents possibly copying data that doesn't match the settings.
1694 Add <command>ALTER DATABASE SET TABLESPACE</> to move a database
1695 to a new tablespace (Guillaume Lelarge, Bernd Helmle)
1706 <title>Utility Operations</title>
1712 Add a <literal>VERBOSE</> option to the <command>CLUSTER</> command and
1713 <application>clusterdb</> (Jim Cox)
1719 Decrease memory requirements for recording pending trigger
1727 <title>Indexes</title>
1732 Dramatically improve the speed of building and accessing hash
1733 indexes (Tom Raney, Shreya Bhargava)
1737 This allows hash indexes to be sometimes faster than btree
1738 indexes. However, hash indexes are still not crash-safe.
1744 Make hash indexes store only the hash code, not the full value of
1745 the indexed column (Xiao Meng)
1749 This greatly reduces the size of hash indexes for long indexed
1750 values, improving performance.
1756 Implement fast update option for GIN indexes (Teodor, Oleg)
1760 This option greatly improves update speed at a small penalty in search
1767 <literal>xxx_pattern_ops</> indexes can now be used for simple
1768 equality comparisons, not only for <literal>LIKE</> (Tom)
1777 <title>Full Text Indexes</title>
1782 Remove the requirement to use <literal>@@@</> when doing
1783 <acronym>GIN</> weighted lookups on full text indexes (Tom, Teodor)
1787 The normal <literal>@@</> text search operator can be used
1794 Add an optimizer selectivity function for <literal>@@</> text
1795 search operations (Jan Urbanski)
1801 Allow prefix matching in full text searches (Teodor Sigaev,
1808 Support multi-column <acronym>GIN</> indexes (Teodor Sigaev)
1814 Improve support for Nepali language and Devanagari alphabet (Teodor)
1823 <title><command>VACUUM</></title>
1828 Track free space in separate per-relation <quote>fork</> files (Heikki)
1832 Free space discovered by <command>VACUUM</> is now recorded in
1833 <filename>*_fsm</> files, rather than in a fixed-sized shared memory
1834 area. The <varname>max_fsm_pages</> and <varname>max_fsm_relations</>
1835 settings have been removed, greatly simplifying administration of
1836 free space management.
1842 Add a visibility map to track pages that do not require
1847 This allows <command>VACUUM</> to avoid scanning all of
1848 a table when only a portion of the table needs vacuuming.
1849 The visibility map is stored in per-relation <quote>fork</> files.
1855 Add <varname>vacuum_freeze_table_age</> parameter to control
1856 when <command>VACUUM</> should ignore the visibility map and
1857 do a full table scan to freeze tuples (Heikki)
1863 Track transaction snapshots more carefully (Alvaro)
1867 This improves <command>VACUUM</>'s ability to reclaim space
1868 in the presence of long-running transactions.
1874 Add ability to specify per-relation autovacuum and <acronym>TOAST</>
1875 parameters in <command>CREATE TABLE</> (Alvaro, Euler Taveira de
1880 Autovacuum options used to be stored in a system table.
1886 Add <literal>--freeze</> option to <application>vacuumdb</>
1898 <title>Data Types</title>
1903 Add a <literal>CaseSensitive</> option for text search synonym
1904 dictionaries (Simon)
1910 Improve the precision of <type>NUMERIC</> division (Tom)
1916 Add basic arithmetic operators for <type>int2</> with <type>int8</>
1921 This eliminates the need for explicit casting in some situations.
1927 Allow <type>UUID</> input to accept an optional hyphen after
1928 every fourth digit (Robert Haas)
1934 Allow <literal>on</>/<literal>off</> as input for the boolean data type
1941 Allow spaces around <literal>NaN</> in the input string for
1942 type <type>numeric</> (Sam Mason)
1949 <title>Temporal Data Types</title>
1954 Reject year <literal>0 BC</> and years <literal>000</> and
1955 <literal>0000</> (Tom)
1959 Previously these were interpreted as <literal>1 BC</>.
1960 (Note: years <literal>0</> and <literal>00</> are still assumed to be
1967 Include <literal>SGT</> (Singapore time) in the default list of
1968 known time zone abbreviations (Tom)
1974 Support <literal>infinity</> and <literal>-infinity</> as
1975 values of type <type>date</> (Tom)
1981 Make parsing of <type>interval</> literals more standard-compliant
1986 For example, <literal>INTERVAL '1' YEAR</> now does what it's
1993 Allow <type>interval</> fractional-seconds precision to be specified
1994 after the <literal>second</> keyword, for <acronym>SQL</> standard
1999 Formerly the precision had to be specified after the keyword
2000 <type>interval</>. (For backwards compatibility, this syntax is still
2001 supported, though deprecated.) Data type definitions will now be
2002 output using the standard format.
2008 Support the <acronym>IS0 8601</> <type>interval</> syntax (Ron
2009 Mayer, Kevin Grittner)
2013 For example, <literal>INTERVAL 'P1Y2M3DT4H5M6.7S'</> is now
2020 Add <varname>IntervalStyle</> parameter
2021 which controls how <type>interval</> values are output (Ron Mayer)
2025 Valid values are: <literal>postgres</>, <literal>postgres_verbose</>,
2026 <literal>sql_standard</>, <literal>iso_8601</>. This setting also
2027 controls the handling of negative <type>interval</> input when only
2028 some fields have positive/negative designations.
2034 Improve consistency of handling of fractional seconds in
2035 <type>timestamp</> and <type>interval</> output (Ron Mayer)
2044 <title>Arrays</title>
2049 Improve the handling of casts applied to <literal>ARRAY[]</>
2050 constructs, such as <literal>ARRAY[...]::integer[]</>
2055 Formerly <productname>PostgreSQL</> attempted to determine a data type
2056 for the <literal>ARRAY[]</> construct without reference to the ensuing
2057 cast. This could fail unnecessarily in many cases, in particular when
2058 the <literal>ARRAY[]</> construct was empty or contained only
2059 ambiguous entries such as <literal>NULL</>. Now the cast is consulted
2060 to determine the type that the array elements must be.
2066 Make <acronym>SQL</>-syntax <type>ARRAY</> dimensions optional
2067 to match the <acronym>SQL</> standard (Peter)
2073 Add <function>array_ndims()</> to return the number
2074 of dimensions of an array (Robert Haas)
2080 Add <function>array_length()</> to return the length
2081 of an array for a specified dimension (Jim Nasby, Robert
2082 Haas, Peter Eisentraut)
2088 Add aggregate function <function>array_agg()</>, which
2089 returns all aggregated values as a single array (Robert Haas,
2096 Add <function>unnest()</>, which converts an array to
2097 individual row values (Tom)
2101 This is the opposite of <function>array_agg()</>.
2107 Add <function>array_fill()</> to create arrays initialized with
2108 a value (Pavel Stehule)
2114 Add <function>generate_subscripts()</> to simplify generating
2115 the range of an array's subscripts (Pavel Stehule)
2124 <title>Wide-Value Storage (<acronym>TOAST</>)</title>
2129 Consider <acronym>TOAST</> compression on values as short as
2130 32 bytes (previously 256 bytes) (Greg Stark)
2136 Require 25% minimum space savings before using <acronym>TOAST</>
2137 compression (previously 20% for small values and any-savings-at-all
2138 for large values) (Greg)
2144 Improve <acronym>TOAST</> heuristics for rows that have a mix of large
2145 and small toastable fields, so that we prefer to push large values out
2146 of line and don't compress small values unnecessarily (Greg, Tom)
2157 <title>Functions</title>
2162 Document that <function>setseed()</> allows values from
2163 <literal>-1</> to <literal>1</> (not just <literal>0</> to
2164 <literal>1</>), and enforce the valid range (Kris Jurka)
2170 Add server-side function <function>lo_import(filename, oid)</>
2177 Add <function>quote_nullable()</>, which behaves like
2178 <function>quote_literal()</> but returns the string <literal>NULL</> for
2179 a null argument (Brendan Jurd)
2185 Improve full text search <function>headline()</> function to
2186 allow extracting several fragments of text (Sushant Sinha)
2192 Add <function>suppress_redundant_updates_trigger()</> trigger
2193 function to avoid overhead for non-data-changing updates (Andrew)
2199 Add <function>div(numeric, numeric)</> to perform <type>numeric</>
2200 division without rounding (Tom)
2206 Add <type>timestamp</> and <type>timestamptz</> versions of
2207 <function>generate_series()</> (Hitoshi Harada)
2214 <title>Object Information Functions</title>
2219 Implement <function>current_query()</> for use by functions
2220 that need to know the currently running query (Tomas Doran)
2226 Add <function>pg_get_keywords()</> to return a list of the
2227 parser keywords (Dave Page)
2233 Add <function>pg_get_functiondef()</> to see a function's
2234 definition (Abhijit Menon-Sen)
2240 Allow the second argument of <function>pg_get_expr()</> to be zero
2241 when deparsing an expression that does not contain variables (Tom)
2247 Modify <function>pg_relation_size()</> to use <literal>regclass</>
2252 <function>pg_relation_size(data_type_name)</> no longer works.
2258 Add <literal>boot_val</> and <literal>reset_val</> columns to
2259 <literal>pg_settings</> output (Greg Smith)
2265 Add source file name and line number columns to
2266 <literal>pg_settings</> output for variables set in a configuration
2267 file (Magnus, Alvaro)
2271 For security reasons, these columns are only visible to superusers.
2277 Add support for <varname>CURRENT_CATALOG</>,
2278 <varname>CURRENT_SCHEMA</>, <varname>SET CATALOG</>, <varname>SET
2283 These provide <acronym>SQL</>-standard syntax for existing features.
2289 Add <function>pg_typeof()</> which returns the data type
2290 of any value (Brendan Jurd)
2296 Make <function>version()</> return information about whether
2297 the server is a 32- or 64-bit binary (Bruce)
2303 Fix the behavior of information schema columns
2304 <structfield>is_insertable_into</> and <structfield>is_updatable</> to
2305 be consistent (Peter)
2311 Improve the behavior of information schema
2312 <structfield>datetime_precision</> columns (Peter)
2316 These columns now show zero for <type>date</> columns, and 6
2317 (the default precision) for <type>time</>, <type>timestamp</>, and
2318 <type>interval</> without a declared precision, rather than showing
2325 Convert remaining builtin set-returning functions to use
2326 <literal>OUT</> parameters (Jaime Casanova)
2330 This makes it possible to call these functions without specifying
2331 a column list: <function>pg_show_all_settings()</>,
2332 <function>pg_lock_status()</>, <function>pg_prepared_xact()</>,
2333 <function>pg_prepared_statement()</>, <function>pg_cursor()</>
2339 Make <function>pg_*_is_visible()</> and
2340 <function>has_*_privilege()</> functions return <literal>NULL</>
2341 for invalid OIDs, rather than reporting an error (Tom)
2347 Extend <function>has_*_privilege()</> functions to allow inquiring
2348 about the OR of multiple privileges in one call (Stephen
2355 Add <function>has_column_privilege()</> and
2356 <function>has_any_column_privilege()</> functions (Stephen
2366 <title>Function Creation</title>
2371 Support variadic functions (functions with a variable number
2372 of arguments) (Pavel Stehule)
2376 Only trailing arguments can be optional, and they all must be
2377 of the same data type.
2383 Support default values for function arguments (Pavel Stehule)
2389 Add <command>CREATE FUNCTION ... RETURNS TABLE</> clause (Pavel
2396 Allow <acronym>SQL</>-language functions to return the output
2397 of an <command>INSERT</>/<command>UPDATE</>/<command>DELETE</>
2398 <literal>RETURNING</> clause (Tom)
2407 <title>PL/PgSQL Server-Side Language</title>
2412 Support <literal>EXECUTE USING</> for easier insertion of data
2413 values into a dynamic query string (Pavel Stehule)
2419 Allow looping over the results of a cursor using a <literal>FOR</>
2420 loop (Pavel Stehule)
2426 Support <literal>RETURN QUERY EXECUTE</> (Pavel
2433 Improve the <literal>RAISE</> command (Pavel Stehule)
2438 Support <literal>DETAIL</> and <literal>HINT</> fields
2443 Support specification of the <literal>SQLSTATE</> error code
2448 Support an exception name parameter
2453 Allow <literal>RAISE</> without parameters in an exception
2454 block to re-throw the current error
2463 Allow specification of <varname>SQLSTATE</> codes
2464 in <literal>EXCEPTION</> lists (Pavel Stehule)
2468 This is useful for handling custom <varname>SQLSTATE</> codes.
2474 Support the <literal>CASE</> statement (Pavel Stehule)
2480 Make <command>RETURN QUERY</> set the special <literal>FOUND</> and
2481 <command>GET DIAGNOSTICS</> <literal>ROW_COUNT</> variables
2488 Make <command>FETCH</> and <command>MOVE</> set the
2489 <command>GET DIAGNOSTICS</> <literal>ROW_COUNT</> variable
2496 Make <command>EXIT</> without a label always exit the innermost
2501 Formerly, if there were a <literal>BEGIN</> block more closely nested
2502 than any loop, it would exit that block instead. The new behavior
2503 matches Oracle(TM) and is also what was previously stated by our own
2510 Make processing of string literals and nested block comments
2511 match the main SQL parser's processing (Tom)
2515 In particular, the format string in <command>RAISE</> now works
2516 the same as any other string literal, including being subject
2517 to <varname>standard_conforming_strings</>. This change also
2518 fixes other cases in which valid commands would fail when
2519 <varname>standard_conforming_strings</> is on.
2525 Avoid memory leakage when the same function is called at varying
2526 exception-block nesting depths (Tom)
2537 <title>Client Applications</title>
2543 Fix <literal>pg_ctl restart</> to preserve command-line arguments
2550 Add <literal>-w</>/<literal>--no-password</> option that
2551 prevents password prompting in all utilities that have a
2552 <literal>-W</>/<literal>--password</> option (Peter)
2558 Remove <option>-q</> (quiet) option of <application>createdb</>,
2559 <application>createuser</>, <application>dropdb</>,
2560 <application>dropuser</> (Peter)
2564 These options have had no effect since <productname>PostgreSQL</>
2572 <title><application>psql</></title>
2577 Remove verbose startup banner; now just suggest <literal>help</>
2584 Make <literal>help</> show common backslash commands (Greg
2591 Add <literal>\pset format wrapped</> mode to wrap output to the
2592 screen width, or file/pipe output too if <literal>\pset columns</>
2593 is set (Bryce Nesbitt)
2599 Allow all supported spellings of boolean values in <command>\pset</>,
2600 rather than just <literal>on</> and <literal>off</> (Bruce)
2604 Formerly, any string other than <quote>off</> was silently taken
2605 to mean <literal>true</>. <application>psql</> will now complain
2606 about unrecognized spellings (but still take them as <literal>true</>).
2612 Use the pager for wide output (Bruce)
2618 Require a space between a one-letter backslash command and its first
2619 argument (Bernd Helmle)
2623 This removes a historical source of ambiguity.
2629 Improve tab completion support for schema-qualified and
2630 quoted identifiers (Greg Sabino Mullane)
2636 Add optional <literal>on</>/<literal>off</> argument for
2637 <command>\timing</> (David Fetter)
2643 Display access control rights on multiple lines (Brendan
2644 Jurd, Andreas Scherbaum)
2650 Make <command>\l</> show database access privileges (Andrew Gilligan)
2656 Make <command>\l+</> show database sizes, if permissions
2657 allow (Andrew Gilligan)
2663 Add the <command>\ef</> command to edit function definitions
2673 <title><application>psql</> \d* commands</title>
2679 Make <command>\d*</> commands that do not have a pattern argument
2680 show system objects only if the <literal>S</> modifier is specified
2681 (Greg Sabino Mullane, Bruce)
2685 The former behavior was inconsistent across different variants
2686 of <command>\d</>, and in most cases it provided no easy way to see
2693 Improve <command>\d*</> commands to work with older
2694 <productname>PostgreSQL</> server versions (back to 7.4),
2695 not only the current server version
2702 Make <command>\d</> show foreign-key constraints that reference
2703 the selected table (Kenneth D'Souza)
2709 Make <command>\d</> on a sequence show its column values
2710 (Euler Taveira de Oliveira)
2716 Add column storage type and other relation options to the
2717 <command>\d+</> display (Gregory Stark, Euler Taveira de
2724 Show relation size in <command>\dt+</> output (Dickson S.
2731 Show the possible values of <literal>enum</> types in <command>\dT+</>
2738 Allow <command>\dC</> to accept a wildcard pattern, which matches
2739 either datatype involved in the cast (Tom)
2745 Add a function type column to <command>\df</>'s output, and add
2746 options to list only selected types of functions (David Fetter)
2752 Make <command>\df</> not hide functions that take or return
2753 type <type>cstring</> (Tom)
2757 Previously, such functions were hidden because most of them are
2758 datatype I/O functions, which were deemed uninteresting. The new
2759 policy about hiding system functions by default makes this wart
2769 <title><application>pg_dump</></title>
2774 Add a <literal>--no-tablespaces</> option to
2775 <application>pg_dump</>/<application>pg_dumpall</>/<application>pg_restore</>
2776 so that dumps can be restored to clusters that have non-matching
2777 tablespace layouts (Gavin Roy)
2783 Remove <option>-d</> and <option>-D</> options from
2784 <application>pg_dump</> and <application>pg_dumpall</> (Tom)
2788 These options were too frequently confused with the option to
2789 select a database name in other <productname>PostgreSQL</>
2790 client applications. The functionality is still available,
2791 but you must now spell out the long option name
2792 <option>--inserts</> or <option>--column-inserts</>.
2798 Remove <option>-i</>/<option>--ignore-version</> option from
2799 <application>pg_dump</> and <application>pg_dumpall</> (Tom)
2803 Use of this option does not throw an error, but it has no
2804 effect. This option was removed because the version checks
2805 are necessary for safety.
2811 Disable <varname>statement_timeout</> during dump and restore
2818 Add <application>pg_dump</>/<application>pg_dumpall</> option
2819 <option>--lock-wait-timeout</> (David Gould)
2823 This allows dumps to fail if unable to acquire a shared lock
2824 within the specified amount of time.
2830 Reorder <application>pg_dump</> <literal>--data-only</> output
2831 to dump tables referenced by foreign keys before
2832 the referencing tables (Tom)
2836 This allows data loads when foreign keys are already present.
2837 If circular references make a safe ordering impossible, a
2838 <literal>NOTICE</> is issued.
2844 Allow <application>pg_dump</>, <application>pg_dumpall</>, and
2845 <application>pg_restore</> to use a specified role (Benedek
2852 Allow <application>pg_restore</> to use multiple concurrent
2853 connections to do the restore (Andrew)
2857 The number of concurrent connections is controlled by the option
2858 <literal>--jobs</>. This is supported only for custom-format archives.
2869 <title>Programming Tools</title>
2872 <title><application>libpq</></title>
2877 Allow the <type>OID</> to be specified when importing a large
2878 object, via new function <function>lo_import_with_oid()</> (Tatsuo)
2884 Add <quote>events</> support (Andrew Chernow, Merlin Moncure)
2888 This adds the ability to register callbacks to manage private
2889 data associated with <structname>PGconn</> and <structname>PGresult</>
2896 Improve error handling to allow the return of multiple
2897 error messages as multi-line error reports (Magnus)
2903 Make <function>PQexecParams()</> and related functions return
2904 <varname>PGRES_EMPTY_QUERY</> for an empty query (Tom)
2908 They previously returned <varname>PGRES_COMMAND_OK</>.
2914 Document how to avoid the overhead of <function>WSACleanup()</>
2915 on Windows (Andrew Chernow)
2921 Do not rely on Kerberos tickets to determine the default database
2926 Previously, a Kerberos-capable build of libpq would use the
2927 principal name from any available Kerberos ticket as default
2928 database username, even if the connection wasn't using Kerberos
2929 authentication. This was deemed inconsistent and confusing.
2930 The default username is now determined the same way with or
2931 without Kerberos. Note however that the database username must still
2932 match the ticket when Kerberos authentication is used.
2940 <title><application>libpq</> <acronym>SSL</> (Secure Sockets Layer)
2946 Fix certificate validation for <acronym>SSL</> connections
2951 <application>libpq</> now supports verifying both the certificate
2952 and the name of the server when making <acronym>SSL</>
2953 connections. If a root certificate is not available to use for
2954 verification, <acronym>SSL</> connections will fail. The
2955 <literal>sslmode</> parameter is used to enable certificate
2956 verification and set the level of checking.
2957 The default is still not to do any verification, allowing connections
2958 to SSL-enabled servers without requiring a root certificate on the
2965 Support wildcard server certificates (Magnus)
2969 If a certificate <acronym>CN</> starts with <literal>*</>, it will
2970 be treated as a wildcard when matching the hostname, allowing the
2971 use of the same certificate for multiple servers.
2977 Allow the file locations for client certificates to be specified
2978 (Mark Woodward, Alvaro, Magnus)
2984 Add a <function>PQinitOpenSSL</> function to allow greater control
2985 over OpenSSL/libcrypto initialization (Andrew Chernow)
2991 Make <application>libpq</> unregister its <application>OpenSSL</>
2992 callbacks when no database connections remain open
2993 (Bruce, Magnus, Russell Smith)
2997 This is required for applications that unload the libpq library,
2998 otherwise invalid <application>OpenSSL</> callbacks will remain.
3007 <title><application>ecpg</></title>
3012 Add localization support for messages (Euler Taveira de
3019 ecpg parser is now automatically generated from the server
3024 Previously the ecpg parser was hand-maintained.
3033 <title>Server Programming Interface (<acronym>SPI</>)</title>
3038 Add support for single-use plans with out-of-line
3045 Add new <varname>SPI_OK_REWRITTEN</> return code for
3046 <function>SPI_execute()</> (Heikki)
3050 This is used when a command is rewritten to another type of
3057 Remove unnecessary inclusions from <filename>executor/spi.h</> (Tom)
3061 SPI-using modules might need to add some <literal>#include</>
3062 lines if they were depending on <filename>spi.h</> to include
3074 <title>Build Options</title>
3079 Update build system to use <productname>Autoconf</> 2.61 (Peter)
3085 Require <productname>GNU bison</> for source code builds (Peter)
3089 This has effectively been required for several years, but now there
3090 is no infrastructure claiming to support other parser tools.
3096 Add <application>pg_config</> <literal>--htmldir</> option
3103 Pass <type>float4</> by value inside the server (Zoltan
3108 Add <application>configure</> option
3109 <literal>--disable-float4-byval</> to use the old behavior.
3110 External C functions that use old-style (version 0) call convention
3111 and pass or return <type>float4</> values will be broken by this
3112 change, so you may need the <application>configure</> option if you
3113 have such functions and don't want to update them.
3119 Pass <type>float8</>, <type>int8</>, and related datatypes
3120 by value inside the server on 64-bit platforms (Zoltan Boszormenyi)
3124 Add <application>configure</> option
3125 <literal>--disable-float8-byval</> to use the old behavior.
3126 As above, this change might break old-style external C functions.
3132 Add configure options <literal>--with-segsize</>,
3133 <literal>--with-blocksize</>, <literal>--with-wal-blocksize</>,
3134 <literal>--with-wal-segsize</> (Zdenek Kotala, Tom)
3138 This simplifies build-time control over several constants that
3139 previously could only be changed by editing
3140 <filename>pg_config_manual.h</>.
3146 Allow threaded builds on <productname>Solaris</> 2.5 (Bruce)
3152 Use the system's <function>getopt_long()</> on <productname>Solaris</>
3153 (Zdenek Kotala, Tom)
3157 This makes option processing more consistent with what Solaris users
3164 Add support for the <productname>Sun Studio</> compiler on
3165 <productname>Linux</> (Julius Stroffek)
3171 Append the major version number to the backend <application>gettext</>
3172 domain, and the <literal>soname</> major version number to
3173 libraries' <application>gettext</> domain (Peter)
3177 This simplifies parallel installations of multiple versions.
3183 Add support for code coverage testing with <application>gcov</>
3190 Allow out-of-tree builds on <productname>Mingw</> and
3191 <productname>Cygwin</> (Richard Evans)
3197 Fix the use of <productname>Mingw</> as a cross-compiling source
3207 <title>Source Code</title>
3212 Support 64-bit time zone data files (Heikki)
3216 This adds support for daylight saving time (<acronym>DST</>)
3217 calculations beyond the year 2038.
3223 Deprecate use of platform's <type>time_t</> data type (Tom)
3227 Some platforms have migrated to 64-bit <type>time_t</>, some have
3228 not, and Windows can't make up its mind what it's doing. Define
3229 <type>pg_time_t</> to have the same meaning as <type>time_t</>,
3230 but always be 64 bits (unless the platform has no 64-bit integer type),
3231 and use that type in all module APIs and on-disk data formats.
3237 Fix bug in handling of the time zone database when cross-compiling
3244 Link backend object files in one step, rather than in stages
3251 Improve <application>gettext</> support to allow better translation
3258 Add message translation support to the PL languages (Alvaro, Peter)
3264 Add more <application>DTrace</> probes (Robert Lor)
3270 Enable <application>DTrace</> support on <application>Mac OS X
3271 Leopard</> and other non-Solaris platforms (Robert Lor)
3277 Simplify and standardize conversions between C strings and
3278 <type>text</> datums, by providing common functions for the purpose
3285 Clean up the <filename>include/catalog/</> header files so that
3286 frontend programs can include them without including
3287 <filename>postgres.h</>
3294 Make <type>name</> char-aligned, and suppress zero-padding of
3295 <type>name</> entries in indexes (Tom)
3301 Recover better if dynamically-loaded code executes <function>exit()</>
3308 Add a hook to let plug-ins monitor the executor (Itagaki
3315 Add a hook to allow the planner's statistics lookup behavior to
3316 be overridden (Simon Riggs)
3322 Add <function>shmem_startup_hook()</> for custom shared memory
3329 Replace the index access method <function>amgetmulti</> entry point
3330 with <function>amgetbitmap</>, and extend the API for
3331 <function>amgettuple</> to support run-time determination of
3332 operator lossiness (Heikki, Tom, Teodor)
3336 The API for GIN and GiST opclass <function>consistent</> functions
3337 has been extended as well.
3343 Add support for partial-match searches in <acronym>GIN</> indexes
3344 (Teodor Sigaev, Oleg Bartunov)
3350 Replace <structname>pg_class</> column <structfield>reltriggers</>
3351 with boolean <structfield>relhastriggers</> (Simon)
3355 Also remove unused <structname>pg_class</> columns
3356 <structfield>relukeys</>, <structfield>relfkeys</>, and
3357 <structfield>relrefs</>.
3363 Add a <structfield>relistemp</> column to <structname>pg_class</>
3364 to ease identification of temporary tables (Tom)
3370 Move platform <acronym>FAQ</>s into the main documentation
3377 Prevent parser input files from being built with any conflicts
3384 Add support for the <literal>KOI8U</> (Ukrainian) encoding
3391 Add Japanese message translations (Japan PostgreSQL Users Group)
3395 This used to be maintained as a separate project.
3401 Fix problem when setting <varname>LC_MESSAGES</> on
3402 <application>MSVC</>-built systems (Hiroshi Inoue, Hiroshi
3412 <title>Contrib</title>
3418 Add <filename>contrib/auto_explain</> to automatically run
3419 <command>EXPLAIN</> on queries exceeding a specified duration
3420 (Itagaki Takahiro, Tom)
3426 Add <filename>contrib/btree_gin</> to allow GIN indexes to
3427 handle more datatypes (Oleg, Teodor)
3433 Add <filename>contrib/citext</> to provide a case-insensitive,
3434 multibyte-aware text data type (David Wheeler)
3440 Add <filename>contrib/pg_stat_statements</> for server-wide
3441 tracking of statement execution statistics (Itagaki Takahiro)
3447 Add duration and query mode options to <filename>contrib/pgbench</>
3454 Make <filename>contrib/pgbench</> use table names
3455 <structname>pgbench_accounts</>, <structname>pgbench_branches</>,
3456 <structname>pgbench_history</>, and <structname>pgbench_tellers</>,
3457 rather than just <structname>accounts</>, <structname>branches</>,
3458 <structname>history</>, and <structname>tellers</> (Tom)
3462 This is to reduce the risk of accidentally destroying real data
3463 by running <application>pgbench</>.
3469 Fix <filename>contrib/pgstattuple</> to handle tables and
3470 indexes with over 2 billion pages (Tatsuhito Kasahara)
3476 In <filename>contrib/fuzzystrmatch</>, add a version of the
3477 Levenshtein string-distance function that allows the user to
3478 specify the costs of insertion, deletion, and substitution
3485 Make <filename>contrib/ltree</> support multibyte encodings
3492 Enable <filename>contrib/dblink</> to use connection information
3493 stored in the SQL/MED catalogs (Joe Conway)
3499 Improve <filename>contrib/dblink</>'s reporting of errors from
3500 the remote server (Joe Conway)
3506 Make <filename>contrib/dblink</> set <varname>client_encoding</>
3507 to match the local database's encoding (Joe Conway)
3511 This prevents encoding problems when communicating with a remote
3512 database that uses a different encoding.
3518 Make sure <filename>contrib/dblink</> uses a password supplied
3519 by the user, and not accidentally taken from the server's
3520 <filename>.pgpass</> file (Joe Conway)
3524 This is a minor security enhancement.
3530 Add <function>fsm_page_contents()</>
3531 to <filename>contrib/pageinspect</> (Heikki)
3537 Modify <function>get_raw_page()</> to support free space map
3538 (<filename>*_fsm</>) files. Also update
3539 <filename>contrib/pg_freespacemap</>.
3545 Add support for multibyte encodings to <filename>contrib/pg_trgm</>
3552 Rewrite <filename>contrib/intagg</> to use new
3553 functions <function>array_agg()</> and <function>unnest()</>
3560 Make <filename>contrib/pg_standby</> recover all available WAL before
3561 failover (Fujii Masao, Simon, Heikki)
3565 To make this work safely, you now need to set the new
3566 <literal>recovery_end_command</> option in <filename>recovery.conf</>
3567 to clean up the trigger file after failover. <application>pg_standby</>
3568 will no longer remove the trigger file itself.
3574 <filename>contrib/pg_standby</>'s <option>-l</> option is now a no-op,
3575 because it is unsafe to use a symlink (Simon)