1 <!-- doc/src/sgml/release-9.3.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
4 <sect1 id="release-9-3">
5 <title>Release 9.3</title>
8 <title>Release Date</title>
9 <simpara>2013-XX-XX, CURRENT AS OF 2013-05-03</simpara>
13 <title>Overview</title>
16 Major enhancements include:
19 <!-- This list duplicates items below, but without authors or details-->
26 The above items are explained in more detail in the sections below.
33 <title>Migration to Version 9.3</title>
36 A dump/restore using <link
37 linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, or use
38 of <link linkend="pgupgrade"><application>pg_upgrade</></link>, is
39 required for those wishing to migrate data from any previous release.
43 Version 9.3 contains a number of changes that may affect compatibility
44 with previous releases. Observe the following incompatibilities:
48 <title>Server Settings</title>
54 Rename <varname>replication_timeout</> to <link
55 linkend="guc-wal-sender-timeout"><varname>wal_sender_timeout</></link>
60 This setting controls the <link
61 linkend="wal"><acronym>WAL</></link> sender timeout.
67 Require superuser privileges to set <link
68 linkend="guc-commit-delay"><varname>commit_delay</></link>
69 because it can now potentially delay other sessions (Simon Riggs)
75 Allow in-memory sorts to use their full memory allocation (Jeff Janes)
79 Users who have set <link
80 linkend="guc-work-mem"><varname>work_mem</></link> based on the
81 previous behavior should revisit that setting.
96 Throw an error if expiring tuple is again updated or deleted (Kevin Grittner)
103 Change <link linkend="SQL-CREATETABLE"><literal>ON UPDATE
104 SET NULL/SET DEFAULT</></link> foreign key actions to affect
105 all referenced columns, not just those referenced in the
106 <command>UPDATE</> (Tom Lane)
110 Previously only columns referenced in the <command>UPDATE</> were
111 set to null or <literal>DEFAULT</>.
117 Internally store default foreign key matches (non-<literal>FULL</>,
118 non-<literal>PARTIAL</>) as <quote>simple</> (Tom Lane)
122 These were previously stored as "<unspecified>".
123 This changes the value stored in system column <link
124 linkend="catalog-pg-constraint"><structname>pg_constraint.confmatchtype</></link>.
130 Store <link linkend="wal"><acronym>WAL</></link> in a continuous
131 stream, rather than skipping the last 16MB segment every 4GB
136 Previously, <acronym>WAL</> files with names ending in <literal>FF</>
137 were not used. If you have <acronym>WAL</> backup or restore scripts
138 that took that skipping into account, they will need to be adjusted.
149 <title>Changes</title>
152 Below you will find a detailed account of the changes between
153 <productname>PostgreSQL</productname> 9.3 and the previous major
158 <title>Server</title>
161 <title>Locking</title>
167 Prevent non-key-field row updates from locking foreign key rows
168 (Álvaro Herrera, Noah Misch, Andres Freund, Alexander
169 Shulgin, Marti Raudsepp)
173 This improves concurrency and reduces the probability of deadlocks.
174 <command>UPDATE</>s on non-key columns use the new <command>SELECT
175 FOR NO KEY UPDATE</> lock type, and foreign key checks use the
176 new <command>SELECT FOR KEY SHARE</> lock mode.
182 Add configuration variable <link
183 linkend="guc-lock-timeout"><varname>lock_timeout</></link> to limit
184 lock wait duration (Zoltán Böszörményi)
190 Add cache of local locks (Jeff Janes)
194 This speeds lock release at statement completion in
195 transactions that hold many locks; it is particularly useful
196 for <application>pg_dump</> and the restoration of such dumps.
205 <title>Indexes</title>
211 Add <link linkend="rangetypes-indexing"><type>SP-GiST</></link>
212 support for range data types (Alexander Korotkov)
218 Allow unlogged <link linkend="SPGiST"><type>GiST</></link> indexes
225 Improve concurrency of hash indexes (Robert Haas)
234 <title>Optimizer</title>
240 Collect and use histograms for <link linkend="rangetypes">range
241 types</link> (Alexander Korotkov)
247 Reduce optimizer overhead by discarding plans with unneeded cheaper
248 startup costs (Tom Lane)
254 Improve optimizer cost estimation for index access (Tom Lane)
263 <title>General Performance</title>
269 Add <link linkend="SQL-COPY"><command>COPY FREEZE</></link>
270 option to avoid the overhead of marking tuples as committed later
271 (Simon Riggs, Jeff Davis)
277 Improve performance of <link
278 linkend="datatype-numeric"><type>NUMERIC</></link> calculations
285 Improve grouping of sessions waiting for <link
286 linkend="guc-commit-delay"><varname>commit_delay</></link>
291 This improves the usefulness and behavior of
292 <varname>commit_delay</>.
298 Improve performance for transactions creating, rebuilding, or
299 dropping many relations (Jeff Janes, Tomas Vondra)
305 Improve performance of the <link
306 linkend="SQL-CREATETABLE"><command>CREATE TEMPORARY TABLE ... ON
307 COMMIT DELETE ROWS</></link> clause by only issuing delete if
308 the temporary table was accessed (Heikki Linnakangas)
314 Have vacuum recheck visibility after it has removed expired tuples
319 This increases the chance of a page being marked as all-visible.
326 linkend="guc-stats-temp-directory"><filename>pg_stat_tmp</></link>
327 statistics file into per-database and global files (Tomas Vondra)
331 This reduces the I/O overhead for statistics tracking.
340 <title>Monitoring</title>
346 Add optional ability to <link
347 linkend="app-initdb-data-checksums">checksum</link> data pages and
348 report corruption (Simon Riggs, Jeff Davis, Greg Smith, Ants Aasma)
352 The checksum option can be set during <link
353 linkend="APP-INITDB">initdb</link>.
360 linkend="functions-admin-signal-table"><function>pg_terminate_backend()</></link>
361 to terminate other backends with the same role (Dan Farina)
365 Previously, only superusers could terminate other sessions.
372 linkend="runtime-config-statistics-collector">statistics
373 collector</link> to operate properly in cases where the system
374 clock goes backwards (Tom Lane)
378 Previously statistics collection would stop until the time again
379 reached the previously-stored latest time.
388 <title>Authentication</title>
394 Improve <link linkend="auth-ldap"><acronym>LDAP</></link> error
395 reporting and documentation (Peter Eisentraut)
401 Add support for <acronym>LDAP</> authentication to be specified
402 in <acronym>URL</> format (Peter Eisentraut)
409 linkend="guc-ssl-ciphers"><varname>ssl_ciphers</></link> parameter
410 to start with <literal>DEFAULT</>, rather than <literal>ALL</>,
411 then remove insecure ciphers (Magnus Hagander)
415 It is assumed <literal>DEFAULT</> is more appropriate cipher set.
422 linkend="auth-username-maps"><filename>pg_ident.conf</></link>
423 once, not during each connection (Amit Kapila)
427 This is similar to how <link
428 linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></link>
438 <title>Server Settings</title>
444 Dramatically reduce System V <link linkend="sysvipc">shared
445 memory</link> requirements (Robert Haas)
449 Instead, on Unix-like systems, <function>mmap()</> is used for
450 shared memory. For most users, this will eliminate the need to
451 adjust kernel parameters for shared memory.
457 Allow the postmaster to listen on multiple Unix-domain sockets
462 The configuration parameter
463 <varname>unix_socket_directory</> is replaced by <link
464 linkend="guc-unix-socket-directories"><varname>unix_socket_directories</></link>,
465 which accepts a list of directories.
471 Allow a directory of configuration files to be processed (Magnus
472 Hagander, Greg Smith, Selena Deckelmann)
476 Such a directory is specified with <link
477 linkend="config-includes"><varname>include_dir</></link> in the server
484 Increase the maximum <link
485 linkend="APP-INITDB">initdb</link>-configured value for <link
486 linkend="guc-shared-buffers"><varname>shared_buffers</></link>
487 to 128MB (Robert Haas)
491 This is the maximum value that initdb will attempt to set in <link
492 linkend="config-setting-configuration-file"><filename>postgresql.conf</></link>;
493 the previous maximum was 32MB.
499 Remove the <link linkend="guc-external-pid-file">external
500 <acronym>PID</> file</link> on postmaster exit (Peter Eisentraut)
511 <title>Replication and Recovery</title>
517 Allow a streaming replication standby to <link
518 linkend="protocol-replication">follow a timeline switch</link>
523 This allows streaming standbys to feed from newly-promoted slaves.
524 Previously slaves required access to a <acronym>WAL</> archive directory to
531 Add <acronym>SQL</> functions <link
532 linkend="functions-admin-backup"><function>pg_is_in_backup()</></link>
534 linkend="functions-admin-backup"><function>pg_backup_start_time()</></link>
539 These functions report the status of base backups.
545 Improve performance of streaming log shipping with <link
546 linkend="guc-synchronous-commit"><varname>synchronous_commit</></link>
547 disabled (Andres Freund)
553 Allow much faster promotion of a streaming standby to primary (Simon
554 Riggs, Kyotaro Horiguchi)
560 Add the last checkpoint's redo location to <link
561 linkend="APP-PGCONTROLDATA"><application>pg_controldata</></link>'s
566 This information is useful for determining the <acronym>WAL</>
567 files needed for restore.
573 Allow tools like <link
574 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
575 to run on computers with different architectures (Heikki
580 WAL files can still only be replayed on servers with the same
581 architecture as the primary; but they can now be transmitted to and
582 stored on machines of any architecture, since the
583 streaming replication protocol is now machine-independent.
590 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
591 <option>--write-recovery-conf</> output a
592 minimal <filename>recovery.conf</> (Zoltán
593 Böszörményi, Magnus Hagander)
597 This simplifies setting up a standby server.
604 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
606 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
607 <option>--xlog-method</> to handle streaming timeline switches
615 linkend="guc-wal-receiver-timeout"><varname>wal_receiver_timeout</></link>
616 parameter to control the <acronym>WAL</> receiver timeout
621 This allows more rapid detection of connection failure.
628 <title><link linkend="wal">Write-Ahead Log</link>
629 (<acronym>WAL</>)</title>
635 Change the <acronym>WAL</> record format to allow splitting the record header
636 across pages (Heikki Linnakangas)
640 The new format is slightly more compact, and is more efficient to
652 <title>Queries</title>
658 Implement <acronym>SQL</>-standard <link
659 linkend="queries-lateral"><literal>LATERAL</></link> option for
660 <literal>FROM</>-clause subqueries and function calls (Tom Lane)
664 This feature allows subqueries and functions in <literal>FROM</> to
665 reference columns from other tables in the <literal>FROM</>
666 clause. The <literal>LATERAL</> keyword is optional for functions.
672 Add support for piping <link
673 linkend="SQL-COPY"><command>COPY</></link> and <link
674 linkend="APP-PSQL"><application>psql</></link> <command>\copy</>
675 to/from an external program (Etsuro Fujita)
684 <title>Object Manipulation</title>
690 Add support for <link linkend="event-triggers">event triggers</link>
691 (Dimitri Fontaine, Robert Haas, Álvaro Herrera)
695 This allows server-side functions written in event-enabled
696 languages, e.g. C, PL/pgSQL, to be called when DDL commands
703 Allow a multirow <link
704 linkend="SQL-VALUES"><literal>VALUES</></link> clause in a rule
705 to reference <literal>OLD</>/<literal>NEW</> (Tom Lane)
711 Add <link linkend="SQL-CREATESCHEMA"><command>CREATE SCHEMA ... IF
712 NOT EXISTS</></link> clause (Fabrízio de Royes Mello)
718 Have <link linkend="SQL-REASSIGN-OWNED"><command>REASSIGN
719 OWNED</></link> also change ownership of shared objects
720 (Álvaro Herrera)
727 <title><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link></title>
733 Suppress messages about implicit index and sequence creation
738 These messages now appear at <literal>DEBUG1</> verbosity, so that
739 they will not be shown by default.
745 Allow <command>DROP TABLE IF NOT EXISTS</> to succeed when a
746 non-existent schema is specified in the table name (Bruce Momjian)
750 Previously, it threw an error if the schema did not exist.
759 <title>Constraints</title>
765 Provide clients with <link
766 linkend="libpq-pqresulterrorfield">constraint violation details</link>
767 as separate fields (Pavel Stehule)
771 This allows clients to retrieve table, column, data type, or constraint
772 name error details. Previously such information had to be extracted from
773 error strings. Client library support is required to access these
783 <title><command>ALTER</></title>
789 Support <literal>IF NOT EXISTS</> option in <link
790 linkend="SQL-ALTERTYPE"><command>ALTER TYPE ... ADD VALUE</></link>
795 This is useful for conditionally adding values to enumerated types.
801 Add <link linkend="SQL-ALTERROLE"><command>ALTER ROLE ALL
802 SET</></link> to add settings to all users (Peter Eisentraut)
806 This allows settings to apply to all users in all databases. <link
807 linkend="SQL-ALTERDATABASE"><command>ALTER DATABASE SET</></link>
808 already allowed addition of settings for all users in a single
809 database. <filename>postgresql.conf</> has a similar effect.
815 Add support for <link linkend="SQL-ALTERRULE"><command>ALTER RULE
816 ... RENAME</></link> (Ali Dar)
825 <title><link linkend="rules-views"><command>VIEWs</></link></title>
831 Add <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
832 views</link> (Kevin Grittner)
836 Unlike ordinary views, where the base tables are read on every access,
837 materialized views create physical tables at creation or refresh time.
838 Access to the materialized view then reads from its physical
839 table. There is not yet any facility for incrementally refreshing
840 materialized views or auto-accessing them via base table access.
846 Make simple views <link
847 linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
852 Simple views that reference some or all columns from a
853 single base table are now updatable by default. More
854 complex views can be made updatable using <link
855 linkend="SQL-CREATETRIGGER"><literal>INSTEAD OF</></link> triggers
856 or <link linkend="SQL-CREATERULE"><literal>INSTEAD</></link> rules.
862 Improve view/rule printing code to handle cases where referenced
863 tables are renamed, or columns are renamed, added, or dropped
868 Table and column renamings can produce cases where, if we merely
869 substitute the new name into the original text of a rule or view, the
870 result is ambiguous. This patch fixes the rule-dumping code to insert
871 table and column aliases if needed to preserve the original semantics.
877 Add <link linkend="SQL-CREATEVIEW"><command>CREATE RECURSIVE
878 VIEW</></link> syntax (Peter Eisentraut)
882 Internally this is translated into <command>CREATE VIEW ... WITH
894 <title>Data Types</title>
900 Increase the maximum length of <link linkend="lo-open">large
901 objects</link> from 2GB to 4TB (Nozomi Anzai, Yugo Nagata)
905 This change includes new libpq and server-side 64-bit-capable
906 large object access functions.
912 Allow text <link linkend="datatype-timezones">timezone
913 designations</link>, e.g. <quote>America/Chicago</> when using
914 the <acronym>ISO</> <quote>T</> <type>timestamptz</type> format (Bruce Momjian)
921 <title><link linkend="datatype-json"><type>JSON</></link></title>
927 Add <link linkend="functions-json">operators and functions</link>
928 to extract values from <type>JSON</> data strings (Andrew Dunstan)
934 Allow <type>JSON</> data strings to be <link
935 linkend="functions-json-table">converted into records</link>
942 Add <link linkend="functions-json-table">functions</link>
943 to convert values, records, and hstore data to <type>JSON</>
956 <title>Functions</title>
963 linkend="array-functions-table"><function>array_remove()</></link>
965 linkend="array-functions-table"><function>array_replace()</></link>
966 functions (Marco Nenciarini, Gabriele Bartolini)
973 linkend="functions-string-other"><function>concat()</></link>
975 linkend="functions-string-format"><function>format()</></link>
976 to properly expand <literal>VARIADIC</>-labeled arguments
984 linkend="functions-string-format"><function>format()</></link>
985 to handle field width and left/right alignment (Pavel Stehule)
992 linkend="functions-formatting-table"><function>to_char()</></link>,
994 linkend="functions-formatting-table"><function>to_date()</></link>,
996 linkend="functions-formatting-table"><function>to_timestamp()</></link>
997 properly handle negative century designations (<literal>CC</>)
1002 Previously the behavior was either wrong or inconsistent
1003 with positive/<acronym>AD</> handling, e.g. format mask
1004 <quote>IYYY-IW-DY</>.
1011 linkend="functions-formatting-table"><function>to_date()</></link>
1013 linkend="functions-formatting-table"><function>to_timestamp()</></link>
1014 return proper results when mixing <acronym>ISO</> and Gregorian
1015 week/day designations (Bruce Momjian)
1022 linkend="functions-info-catalog-table"><function>pg_get_viewdef()</></link>
1023 to start a new line by default after each <link
1024 linkend="SQL-SELECT"><command>SELECT</></link> target list entry and
1025 <literal>FROM</> entry (Marko Tiikkaja)
1029 This reduces line length in view printing, for instance in <link
1030 linkend="APP-PGDUMP"><application>pg_dump</></link> output.
1036 Fix <function>map_sql_value_to_xml_value()</> to print values of
1037 domain types the same way their base type would be printed
1042 There are special formatting rules for certain built-in types such as
1043 <type>boolean</>; these rules now also apply to domains over these
1050 Force cached functions to be replanned if the <link
1051 linkend="guc-search-path"><varname>search_path</></link> changes
1056 Previously functions already run in the current session ignored
1057 <varname>search_path</> changes.
1066 <title>Server-Side Languages</title>
1072 Allow <link linkend="spi-spi-execute"><acronym>SPI</></link>
1073 functions to access the number of rows processed by
1074 <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1081 <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
1087 Allow PL/pgSQL to use <literal>RETURN</> with a composite-type
1088 expression (Asif Rehman)
1092 Previously, in a function returning a composite type,
1093 <literal>RETURN</> could only reference a variable of that type.
1099 Allow PL/pgSQL to access the number of rows processed by
1100 <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1104 The command is <link
1105 linkend="plpgsql-statements-diagnostics"><command>GET DIAGNOSTICS
1106 x = ROW_COUNT</></link>.
1112 Allow greater flexibility in where keywords can be used in PL/pgSQL (Tom Lane)
1121 <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
1127 Add PL/Python result object string handler (Peter Eisentraut)
1131 This allows <literal>plpy.debug(rv)</literal> to output something reasonable.
1137 Make PL/Python convert OID values to a proper Python numeric type
1144 Handle <link linkend="spi"><acronym>SPI</></link> errors raised
1145 explicitly (with PL/Python's <literal>RAISE</>) the same as
1146 internal <acronym>SPI</> errors (Oskari Saarenmaa and Jan Urbanski)
1157 <title>Client Applications</title>
1163 Add command-line utility <link
1164 linkend="app-pg-isready"><application>pg_isready</></link> to
1165 check if the server is ready to accept connections (Phil Sorber)
1171 Support multiple <option>--table</> arguments for <link
1172 linkend="APP-PGRESTORE"><application>pg_restore</></link>,
1173 <link linkend="APP-CLUSTERDB"><application>clusterdb</></link>,
1174 <link linkend="APP-REINDEXDB"><application>reindexdb</></link>,
1175 and <link linkend="APP-VACUUMDB"><application>vacuumdb</></link>
1180 This is similar to the <link
1181 linkend="APP-PGDUMP"><application>pg_dump</></link> <option>--table</>
1188 Add <option>--dbname</> option to <link
1189 linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, <link
1190 linkend="app-pgbasebackup"><application>pg_basebackup</></link>, and
1192 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
1193 to specify the connection string (Amit Kapila)
1199 Add libpq function <link
1200 linkend="libpq-pqconninfo"><function>PQconninfo()</></link>
1201 to return connection information (Zoltán
1202 Böszörményi, Magnus Hagander)
1209 <title><link linkend="APP-PSQL"><application>psql</></link></title>
1215 Adjust function cost settings so <application>psql</> tab
1216 completion and pattern searching is more efficient (Tom Lane)
1222 Improve <application>psql</> tab completion coverage (Jeff Janes,
1229 Allow the <application>psql</> <option>--single-transaction</> mode to work when
1230 reading from standard input (Fabien Coelho, Robert Haas)
1234 Previously this option only worked when reading from a file.
1240 Remove <application>psql</> warning when connecting to an older
1241 server (Peter Eisentraut)
1245 The warning when connecting to a newer server was retained.
1252 <title><link linkend="R2-APP-PSQL-4">Backslash Commands</link></title>
1258 Add <application>psql</> <command>\watch</> command to repeatedly
1259 execute commands (Will Leinweber)
1265 Add <application>psql</> command <command>\gset</> to store query
1266 results in <application>psql</> variables (Pavel Stehule)
1272 Add <acronym>SSL</> information to <application>psql</>'s
1273 <command>\conninfo</> command (Alastair Turner)
1279 Add <quote>Security</> label to <application>psql</> <command>\df+</>
1286 Allow <application>psql</> <command>\l</> to accept a database
1287 name pattern (Peter Eisentraut)
1293 In <application>psql</>, do not allow <command>\connect</> to
1294 use defaults if there is no active connection (Bruce Momjian)
1298 This might be the case if the server had crashed.
1304 Properly reset state if the SQL command executed with
1305 <application>psql</>'s <quote>\g file</> fails (Tom Lane)
1309 Previously, the output from subsequent SQL commands would unexpectedly
1310 continue to go to the same file.
1319 <title>Output</title>
1325 Add a <literal>latex-longtable</> output format to
1326 <application>psql</> (Bruce Momjian)
1330 This format allows tables to span multiple pages.
1336 Add a <literal>border=3</> output mode to the <application>psql</>
1337 <literal>latex</> format (Bruce Momjian)
1343 In <application>psql</> tuples-only and expanded modes, no longer
1344 output <quote>(No rows)</> (Peter Eisentraut)
1350 In <application>psql</>, no longer print an empty line for
1351 unaligned, expanded output for zero rows (Peter Eisentraut)
1362 <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
1368 Add <application>pg_dump</> <option>--jobs</> option to dump tables in
1369 parallel (Joachim Wieland)
1375 Have <application>pg_dump</> output functions in a more predictable
1376 order (Joel Jacobson)
1382 Fix tar files emitted by <application>pg_dump</> and <link
1383 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
1384 to be <acronym>POSIX</> conformant (Brian Weaver, Tom Lane)
1390 Add <option>--dbname</> option to <application>pg_dump</>, for
1391 consistency with other client commands (Heikki Linnakangas)
1395 The database name could already be supplied last without a flag.
1404 <title><link linkend="APP-INITDB"><application>initdb</></link></title>
1410 Have initdb fsync the newly created data directory (Jeff Davis)
1414 This can be disabled by using <option>--nosync</>.
1420 Add initdb <option>--sync-only</> option to sync the data directory to durable
1421 storage (Bruce Momjian)
1425 This is used by <link
1426 linkend="pgupgrade"><application>pg_upgrade</></link>.
1432 Have initdb issue a warning about placing the data directory at the
1433 top of a file system mount point (Bruce Momjian)
1444 <title>Source Code</title>
1450 Add an embedded list interface (Andres Freund)
1456 Add infrastructure to better support plug-in <link
1457 linkend="bgworker">background worker processes</link>
1458 (Álvaro Herrera)
1464 Create a centralized timeout <acronym>API</> (Zoltán
1465 Böszörményi)
1471 Create libpgcommon and move <function>pg_malloc()</> and other
1472 functions there (Álvaro Herrera, Andres Freund)
1476 This allows libpgport to be used solely for porting code.
1482 Standardize on naming of client-side memory allocation functions (Tom Lane)
1488 Add compiler designations to indicate some <function>ereport()</>
1489 and <function>elog()</> calls do not return (Peter Eisentraut,
1490 Andres Freund, Tom Lane, Heikki Linnakangas)
1496 Allow options to be passed to the regression
1497 test output comparison utility via <link
1498 linkend="regress-evaluation"><envar>PG_REGRESS_DIFF_OPTS</></link>
1505 Add isolation tests for <link
1506 linkend="SQL-CREATEINDEX"><command>CREATE INDEX
1507 CONCURRENTLY</></link> (Abhijit Menon-Sen)
1513 Remove typedefs for <type>int2</>/<type>int4</> as they are better
1514 represented as <type>int16</>/<type>int32</> (Peter Eisentraut)
1520 Fix <link linkend="install">install-strip</link> on Mac <productname>OS
1521 X</> (Peter Eisentraut)
1527 Remove <link linkend="configure">configure</link> flag
1528 <option>--disable-shared</>, as it is no longer used (Bruce
1535 Rewrite pgindent in <application>Perl</> (Andrew Dunstan)
1541 Add Emacs macro to match <productname>PostgreSQL</> perltidy
1542 formatting (Peter Eisentraut)
1548 Run tool to check the keyword list when the backend grammar is
1555 Centralize <application>flex</> and <application>bison</>
1556 <application>make</> rules (Peter Eisentraut)
1560 This is useful for <application>pgxs</> authors.
1566 Support <function>Assert()</> in client-side code (Andrew Dunstan)
1572 Change many internal backend functions to return <type>OID</>s
1573 rather than void (Dimitri Fontaine)
1577 This is useful for event triggers.
1583 Invent pre-commit/pre-prepare/pre-subcommit events for transaction
1584 callbacks (Tom Lane)
1588 Loadable modules that use transaction callbacks might need modification
1589 to handle these new event types.
1596 linkend="functions-info-catalog-table"><function>pg_identify_object()</></link>
1597 to dump an object in machine-readable format (Álvaro
1604 Add post-<command>ALTER</>-object server hooks (KaiGai Kohei)
1610 Implement a generic binary heap and use it for Merge-Append
1611 operations (Abhijit Menon-Sen)
1617 Improve ability to detect official timezone abbreviation changes
1624 Add <application>pkg-config</> support <application>libpq</>
1625 and <application>ecpg</> libraries (Peter Eisentraut)
1631 Remove <filename>src/tool/backend</>, now that the content is on
1632 the <productname>PostgreSQL</> wiki (Bruce Momjian)
1638 Split out <link linkend="wal"><acronym>WAL</></link> reading as
1639 an independent facility (Heikki Linnakangas, Andres Freund)
1645 Use a 64-bit integer to represent <link
1646 linkend="wal"><acronym>WAL</></link> positions
1647 (<structname>XLogRecPtr</>) instead of two 32-bit integers
1648 (Heikki Linnakangas)
1652 Generally, tools that need to read the <acronym>WAL</> format
1653 will need to be adjusted.
1659 Allow <link linkend="plpython">PL/Python</link> to support
1660 platform-specific include directories (Peter Eisentraut)
1666 Allow <link linkend="plpython">PL/Python</link> on <productname>OS
1667 X</> to build against custom versions of <application>Python</>
1677 <title>Additional Modules</title>
1683 Allow <link linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data
1684 wrappers</link> to support writes (inserts/updates/deletes) on foreign
1685 tables (KaiGai Kohei)
1691 Add a <productname>Postgres</> <link linkend="postgres-fdw">foreign
1692 data wrapper</link> contrib module (Shigeru Hanada)
1696 This foreign data wrapper supports writes.
1702 Add <link linkend="pgxlogdump"><application>pg_xlogdump</></link>
1703 contrib program (Andres Freund)
1709 Add support for indexing of regular-expression searches in
1710 <link linkend="pgtrgm"><productname>pg_trgm</></link>
1711 (Alexander Korotkov)
1717 Improve <link linkend="pgtrgm"><productname>pg_trgm</></link>
1718 handling of multibyte characters (Tom Lane)
1724 Add <link linkend="pgstattuple">pgstattuple function</link> to report the
1725 size of the <type>GIN</> pending index insertion list (Fujii Masao)
1731 Have <link linkend="oid2name"><application>oid2name</></link>,
1732 <link linkend="pgbench"><application>pgbench</></link>, and
1733 <link linkend="vacuumlo"><application>vacuumlo</></link> set
1734 <varname>fallback_application_name</> (Amit Kapila)
1740 Improve output of <link
1741 linkend="pgtesttiming"><application>pg_test_timing</></link>
1748 Improve output of <link
1749 linkend="pgtestfsync"><application>pg_test_fsync</></link>
1756 Improve <link linkend="dblink">dblink</link> option validator
1768 <title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>
1774 Allow <application>pg_upgrade</> <option>--jobs</> to do
1775 parallelism (Bruce Momjian)
1779 This allows parallel schema dump/restore of databases, as well as
1780 parallel copy/link of data files per tablespace.
1786 Have <application>pg_upgrade</> create Unix-domain sockets in
1787 the current directory (Bruce Momjian, Tom Lane)
1791 This reduces the possibility that someone will accidentally connect
1798 Have <application>pg_upgrade</> <option>--check</> mode properly
1799 detect the location of non-default socket directories (Bruce
1806 Improve performance of <application>pg_upgrade</> for databases
1807 with many tables (Bruce Momjian)
1813 Increase <application>pg_upgrade</> logging content by showing
1814 executed command (Álvaro Herrera)
1820 Improve <application>pg_upgrade</>'s status display during
1821 copy/link (Bruce Momjian)
1830 <title><link linkend="pgbench"><application>pgbench</></link></title>
1836 Add <option>--foreign-keys</> option to <application>pgbench</>
1841 This adds foreign key constraints to the standard tables created by
1842 <application>pgbench</>, for use in foreign key performance testing.
1848 Allow <application>pgbench</> to aggregate performance statistics
1849 and produce output every <option>--aggregate-interval</>
1850 seconds (Tomas Vondra)
1856 Add <application>pgbench</> <option>--sampling-rate</> option
1857 to control the percentage of transactions logged (Tomas Vondra)
1863 Reduce and improve the status message output of
1864 <application>pgbench</>'s initialization mode (Robert Haas,
1871 Add <application>pgbench</> <option>-q</> mode to print one output
1872 line every five seconds (Tomas Vondra)
1878 Output <application>pgbench</> elapsed and estimated remaining
1879 time during initialization (Tomas Vondra)
1885 Allow <application>pgbench</> to use a larger scale factor
1897 <title>Documentation</title>
1903 Allow <productname>EPUB</>-format documentation to be created
1910 Update <productname>FreeBSD</> kernel configuration documentation
1917 Improve <link linkend="tutorial-window"><literal>WINDOW</>
1918 function</link> documentation (Bruce Momjian, Tom Lane)
1924 Add <link linkend="docguide">instructions</link> for setting
1925 up the documentation tool chain on Mac <productname>OS X</>
1933 linkend="guc-commit-delay"><varname>commit_delay</></link>
1934 documentation (Peter Geoghegan)