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 ADD HERE Major enhancements include:
19 <!-- This list duplicates items below, but without authors or details-->
22 The above items are explained in more detail in the sections below.
29 <title>Migration to Version 9.3</title>
32 A dump/restore using <link
33 linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, or use
34 of <link linkend="pgupgrade"><application>pg_upgrade</></link>, is
35 required for those wishing to migrate data from any previous release.
39 Version 9.3 contains a number of changes that may affect compatibility
40 with previous releases. Observe the following incompatibilities:
44 <title>Server Settings</title>
50 Rename <varname>replication_timeout</> to <link
51 linkend="guc-wal-sender-timeout"><varname>wal_sender_timeout</></link>
56 This setting controls the <link
57 linkend="wal"><acronym>WAL</></link> sender timeout.
63 Improve grouping of sessions waiting for <link
64 linkend="guc-commit-delay"><varname>commit_delay</></link>
69 This improves the usefulness and behavior of
70 <varname>commit_delay</>.
76 Require superuser privileges to set <link
77 linkend="guc-commit-delay"><varname>commit_delay</></link>
78 because it can now potentially delay other sessions (Simon Riggs)
84 Have <quote>session id</> (<literal>%c</>) in <link
85 linkend="guc-log-line-prefix"><varname>log_line_prefix</></link>
86 always output four hex digits after the period (Bruce Momjian)
101 Throw an error if expiring tuple is again updated or deleted (Kevin Grittner)
108 Change <link linkend="SQL-CREATETABLE"><literal>ON UPDATE
109 SET NULL/SET DEFAULT</></link> foreign key actions to affect
110 all referenced columns, not just those referenced in the
111 <command>UPDATE</> (Tom Lane)
115 Previously only columns referenced in the <command>UPDATE</> were
116 set to null or <literal>DEFAULT</>.
122 Internally store default foreign key matches (non-<literal>FULL</>,
123 non-<literal>PARTIAL</>) as <quote>simple</> (Tom Lane)
127 These were previously stored as "<unspecified>".
128 This changes the value stored in system column <link
129 linkend="catalog-pg-constraint"><structname>pg_constraint.confmatchtype</></link>.
135 Store <link linkend="wal"><acronym>WAL</></link> in a continuous
136 stream, rather than skipping the last 16MB segment every 4GB
141 Previously, <acronym>WAL</> files ending in <literal>FF</> were
142 not used. If you have <acronym>WAL</> backup or restore scripts
143 that took that skipping into account, they need to be adjusted.
154 <title>Changes</title>
157 Below you will find a detailed account of the changes between
158 <productname>PostgreSQL</productname> 9.3 and the previous major
163 <title>Server</title>
166 <title>Locking</title>
172 Prevent non-key-field row updates from locking foreign key rows
173 (Álvaro Herrera, Noah Misch, Andres Freund, Alexander
174 Shulgin, Marti Raudsepp)
178 This improves concurrency and reduces the probability of deadlocks.
179 <command>UPDATE</>s on non-key columns use the new <command>SELECT
180 FOR NO KEY UPDATE</> lock type, and foreign key checks use the
181 new <command>SELECT FOR KEY SHARE</> lock mode.
187 Add configuration variable <link
188 linkend="guc-lock-timeout"><varname>lock_timeout</></link> to limit
189 lock wait duration (Zoltán Böszörményi)
195 Add cache of local locks (Jeff Janes)
199 This speeds lock release at statement completion in
200 transactions that hold many locks; it is particularly useful
201 for <application>pg_dump</>.
210 <title>Indexes</title>
216 Add <link linkend="rangetypes-indexing"><type>SP-GiST</></link>
217 support for range data types (Alexander Korotkov)
223 Allow unlogged <link linkend="SPGiST"><type>GiST</></link> indexes
230 Improve concurrency of hash indexes (Robert Haas)
239 <title>Optimizer</title>
245 Collect and use histograms for <link linkend="rangetypes">range
246 types</link> (Alexander Korotkov)
252 Reduce optimizer overhead by discarding plans with unneeded cheaper
253 startup costs (Tom Lane)
259 Improve optimizer cost estimation for index access (Tom Lane)
268 <title>General Performance</title>
274 Add <link linkend="SQL-COPY"><command>COPY FREEZE</></link>
275 option to avoid the overhead of later marking tuples as committed
276 (Simon Riggs, Jeff Davis)
282 Improve performance of <link
283 linkend="datatype-numeric"><type>NUMERIC</></link> calculations
290 Allow in-memory sorts to use their full memory allocation (Jeff Janes)
294 Users who have set <link
295 linkend="guc-work-mem"><varname>work_mem</></link> based on the
296 previous behavior should revisit that setting.
302 Improve performance for transactions creating, rebuilding, or
303 dropping many relations (Jeff Janes, Tomas Vondra)
309 Improve performance of the <link
310 linkend="SQL-CREATETABLE"><command>CREATE TEMPORARY TABLE ... ON
311 COMMIT DELETE ROWS</></link> clause by only issuing delete if
312 the temporary table was accessed (Heikki Linnakangas)
318 Have vacuum recheck visibility after it has removed expired tuples
323 This increases the chance of a page being marked as all-visible.
330 linkend="guc-stats-temp-directory"><filename>pg_stat_tmp</></link>
331 statistics file into per-database and global files (Tomas Vondra)
335 This reduces the statistics management read and write overhead.
344 <title>Monitoring</title>
350 Add optional ability to <link
351 linkend="app-initdb-data-checksums">checksum</link> data pages and
352 report corruption (Simon Riggs, Jeff Davis, Greg Smith, Ants Aasma)
356 The checksum option can be set during <link
357 linkend="APP-INITDB">initdb</link>.
364 linkend="functions-admin-signal-table"><function>pg_terminate_backend()</></link>
365 to terminate other backends with the same role (Dan Farina)
369 Previously, only superusers could terminate other sessions.
376 linkend="runtime-config-statistics-collector">statistics
377 collector</link> to operate properly in cases where the system
378 clock goes backwards (Tom Lane)
382 Previously statistics collection would stop until the time again
383 reached the previously-stored latest time.
392 <title>Authentication</title>
398 Improve <link linkend="auth-ldap"><acronym>LDAP</></link> error
399 reporting and documentation (Peter Eisentraut)
405 Add support for <acronym>LDAP</> authentication to be specified
406 in <acronym>URL</> format (Peter Eisentraut)
413 linkend="guc-ssl-ciphers"><varname>ssl_ciphers</></link> parameter
414 to start with <literal>DEFAULT</>, rather than <literal>ALL</>,
415 then remove insecure ciphers (Magnus Hagander)
419 It is assumed <literal>DEFAULT</> is more appropriate cipher set.
426 linkend="auth-username-maps"><filename>pg_ident.conf</></link>
427 once, not during each connection (Amit Kapila)
431 This is similar to how <link
432 linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></link>
442 <title>Server Settings</title>
448 Dramatically reduce System V <link linkend="sysvipc">shared
449 memory</link> usage (Robert Haas)
453 Instead, on Unix-like systems, <function>mmap()</> is used for
454 shared memory. This eliminates the requirement of increasing
455 System V shared memory kernel parameters.
461 Allow the postmaster to listen on multiple Unix-domain sockets
466 This renames configuration parameter
467 <varname>unix_socket_directory</> to <link
468 linkend="guc-unix-socket-directories"><varname>unix_socket_directories</></link>,
469 which accepts a list of directories.
475 Allow a directory of configuration files to be processed (Magnus
476 Hagander, Greg Smith, Selena Deckelmann)
480 The directory is specified as <link
481 linkend="config-includes"><varname>include_dir</></link> in server
488 Increase the maximum <link
489 linkend="APP-INITDB">initdb</link>-configured value for <link
490 linkend="guc-shared-buffers"><varname>shared_buffers</></link>
491 to 128MB (Robert Haas)
495 This is the maximum value initdb attempts to set in <link
496 linkend="config-setting-configuration-file"><filename>postgresql.conf</></link>;
497 the previous value was 32MB.
503 Remove the <link linkend="guc-external-pid-file">external
504 <acronym>PID</> file</link> on postmaster exit (Peter Eisentraut)
515 <title>Replication and Recovery</title>
521 Allow a streaming replication standbys to <link
522 linkend="protocol-replication">follow a timeline switch</link>
527 This allows streaming standbys to feed from newly-promoted slaves.
528 Previously slaves required access to a <acronym>WAL</> archive directory to
535 Add <acronym>SQL</> functions <link
536 linkend="functions-admin-backup"><function>pg_is_in_backup()</></link>
538 linkend="functions-admin-backup"><function>pg_backup_start_time()</></link>
543 These functions report the status of base backups.
549 Improve performance of streaming log shipping with <link
550 linkend="guc-synchronous-commit"><varname>synchronous_commit</></link>
551 disabled (Andres Freund)
557 Allow much faster promotion of a streaming standby to primary (Simon
558 Riggs, Kyotaro Horiguchi)
564 Add the last checkpoint's redo location to <link
565 linkend="APP-PGCONTROLDATA"><application>pg_controldata</></link>'s
570 This information is useful for determining the <acronym>WAL</>
571 files needed for restore.
577 Allow tooling like <link
578 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
579 to run on computers with different architectures (Heikki
587 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
588 <option>--write-recovery-conf</> output a
589 minimal <filename>recovery.conf</> (Zoltán
590 Böszörményi, Magnus Hagander)
594 This simplifies setting up a standby server.
601 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
603 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
604 <option>--xlog-method</> to handle streaming timeline switches
612 linkend="guc-wal-receiver-timeout"><varname>wal_receiver_timeout</></link>
613 parameter to control the <acronym>WAL</> receiver timeout
618 This allows more rapid detection of
619 connection failure. No longer set <link
620 linkend="guc-wal-receiver-status-interval"><varname>wal_receiver_status_interval</></link>?
627 <title><link linkend="wal">Write-Ahead Log</link>
628 (<acronym>WAL</>)</title>
634 Change the <acronym>WAL</> record format to allow splitting the record header
635 across pages (Heikki Linnakangas)
639 The new format is slightly more compact.
650 <title>Queries</title>
656 Implement <acronym>SQL</>-standard <link
657 linkend="queries-lateral"><literal>LATERAL</></link> for
658 <literal>FROM</>-clause subqueries and function calls (Tom Lane)
662 This is useful in allowing <literal>FROM</> subqueries and
663 functions to reference output from tables in the <literal>FROM</>
664 clause. The <literal>LATERAL</> keyword is optional for functions.
670 Add support for piping <link
671 linkend="SQL-COPY"><command>COPY</></link> and <link
672 linkend="APP-PSQL"><application>psql</></link> <command>\copy</>
673 to/from an external program (Etsuro Fujita)
679 Improve query string error location reporting (Tom Lane)
683 Only <command>CREATE SCHEMA ... IF NOT EXISTS</>? If so, remove it.
692 <title>Object Manipulation</title>
698 Add support to <link linkend="event-triggers">event triggers</link>
699 (Dimitri Fontaine, Robert Haas, Álvaro Herrera)
703 This allows C functions to be called when specific commands are run.
709 Allow a multi-row <link
710 linkend="SQL-VALUES"><literal>VALUES</></link> clause in rules
711 to reference <literal>OLD</>/<literal>NEW</> (Tom Lane)
717 Add <link linkend="SQL-CREATESCHEMA"><command>CREATE SCHEMA ... IF
718 NOT EXISTS</></link> clause (Fabrízio de Royes Mello)
724 Have <link linkend="SQL-REASSIGN-OWNED"><command>REASSIGN
725 OWNED</></link> also change ownership of shared objects
726 (Álvaro Herrera)
733 <title><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link></title>
739 No longer output messages about implicit index and sequence creation (Robert Haas)
743 These messages now appear with <literal>DEBUG1</>-level output.
749 Allow <command>CREATE TABLE IF NOT EXISTS</> to succeed for a
750 non-existent schema (Bruce Momjian)
754 Previously, it threw an error if the schema did not exist.
763 <title>Constraints</title>
769 Provide clients with <link
770 linkend="libpq-pqresulterrorfield">constraint violation details</link>
771 as separate fields (Pavel Stehule)
775 This allows clients to retrieve table, column, data type, or constraint
776 name error details. Previously such information had to be extracted from
777 error strings. Client language support is required to access these
787 <title><command>ALTER</></title>
793 Add the <link linkend="SQL-ALTERTYPE"><command>ALTER TYPE ... IF
794 NOT EXISTS</></link> clause when adding enumerated type labels
799 This is useful for conditional label creation in transaction blocks.
805 Add <link linkend="SQL-ALTERROLE"><command>ALTER ROLE ALL
806 SET</></link> to add settings to all users (Peter Eisentraut)
810 This allows settings to apply to all users in all databases. <link
811 linkend="SQL-ALTERDATABASE"><command>ALTER DATABASE SET</></link>
812 already allowed addition of settings for all users in a single
813 database. <filename>postgresql.conf</> has a similar effect.
819 Add support for <link linkend="SQL-ALTERRULE"><command>ALTER RULE
820 ... RENAME</></link> (Ali Dar)
829 <title><link linkend="rules-views"><command>VIEWs</></link></title>
835 Add a <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
836 view</link> relations (Kevin Grittner)
840 Unlike ordinary views, where the base tables are read on every access,
841 materialized views create physical tables at creation or refresh time.
842 Access to the materialized view reads from these materialized physical
843 tables. There is no facility for incrementally refreshing materialized
844 views or auto-accessing them via base table access.
850 Make simple views <link
851 linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
856 Simple views that reference some or all columns from a
857 single base table are now updatable by default. More
858 complex views can be made updatable using <link
859 linkend="SQL-CREATETRIGGER"><literal>INSTEAD OF</></link> triggers
860 or <link linkend="SQL-CREATERULE"><literal>INSTEAD</></link> rules.
866 Allow views and rules to handle cases where referenced tables are
867 renamed, or columns are renamed, added, or dropped (Tom Lane)
868 HOW DOES IT HANDLE A DROPPED REFERENCED COLUMN?
874 Add <link linkend="SQL-CREATEVIEW"><command>CREATE RECURSIVE
875 VIEW</></link> syntax (Peter Eisentraut)
879 Internally this is translated into <command>CREATE VIEW ... WITH
886 When converting a table to a view, remove its system columns (Tom Lane)
898 <title>Data Types</title>
904 Increase the maximum length of <link linkend="lo-open">large
905 objects</link> from 2GB to 4TB (Nozomi Anzai, Yugo Nagata)
909 This change includes new libpq and server-side 64-bit-enabled functions.
915 Allow text <link linkend="datatype-timezones">timezone
916 designations</link>, e.g. <quote>America/Chicago</> when using
917 the <acronym>ISO</> <quote>T</> timestamptz format (Bruce Momjian)
924 <title><link linkend="datatype-json"><type>JSON</></link></title>
930 Add <link linkend="functions-json">operators and functions</link>
931 to extract values from <type>JSON</> data strings (Andrew Dunstan)
937 Allow <type>JSON</> data strings to be <link
938 linkend="functions-json-table">converted into records</link>
945 Add <link linkend="functions-json-table">functions</link>
946 to convert values, records, and hstore data to <type>JSON</>
959 <title>Functions</title>
966 linkend="array-functions-table"><function>array_remove()</></link>
968 linkend="array-functions-table"><function>array_replace()</></link>
969 functions (Marco Nenciarini, Gabriele Bartolini)
976 linkend="functions-string-other"><function>concat()</></link>
978 linkend="functions-string-format"><function>format()</></link>
979 to properly expand <literal>VARIADIC</>-labeled arguments
987 linkend="functions-string-format"><function>format()</></link>
988 to handle field width and left/right alignment (Pavel Stehule)
995 linkend="functions-formatting-table"><function>to_char()</></link>,
997 linkend="functions-formatting-table"><function>to_date()</></link>,
999 linkend="functions-formatting-table"><function>to_timestamp()</></link>
1000 properly handle negative century designations (<literal>CC</>)
1005 Previously the behavior was either wrong or inconsistent
1006 with positive/<acronym>AD</> handling, e.g. format mask
1007 <quote>IYYY-IW-DY</>.
1014 linkend="functions-formatting-table"><function>to_date()</></link>
1016 linkend="functions-formatting-table"><function>to_timestamp()</></link>
1017 return proper results when mixing <acronym>ISO</> and Gregorian
1018 week/day designations (Bruce Momjian)
1025 linkend="functions-info-catalog-table"><function>pg_get_viewdef()</></link>
1026 to default to wrapping after every <link
1027 linkend="SQL-SELECT"><command>SELECT</></link> target list and
1028 <literal>FROM</> entry (Marko Tiikkaja)
1032 This causes view output, like from <link
1033 linkend="APP-PGDUMP"><application>pg_dump</></link>, to be
1040 Have <function>map_sql_value_to_xml_value()</> properly expand
1041 domains (Pavel Stehule) WHAT IS THE USER-VISIBLE AFFECT HERE?
1042 map_sql_value_to_xml_value IS A C FUNCTION
1048 Force cached functions to be replanned if the <link
1049 linkend="guc-search-path"><varname>search_path</></link> changes
1054 Previously functions already run in the current session ignored
1055 <varname>search_path</> changes.
1065 <title>Server-Side Languages</title>
1071 Allow <link linkend="spi-spi-execute"><acronym>SPI</></link>
1072 functions to access the number of rows processed by
1073 <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1080 <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
1086 Allow PL/pgSQL to use <literal>RETURN</> with a composite-type
1087 expressions (Asif Rehman)
1091 Previously <literal>RETURN</> could only reference composite-type variables.
1097 Allow PL/pgSQL to access the number of rows processed by
1098 <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1102 The command is <link
1103 linkend="plpgsql-statements-diagnostics"><command>GET DIAGNOSTICS
1104 x = ROW_COUNT</></link>.
1110 Allow greater flexibility in where keywords can be used in PL/pgSQL (Tom Lane)
1119 <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
1125 Add PL/Python result object string handler (Peter Eisentraut)
1129 This allows plpy.debug(rv) to output something reasonable.
1135 Have PL/Python convert oid values to a proper Python numeric type
1142 Handle <link linkend="spi"><acronym>SPI</></link> errors raised
1143 explicitly with PL/Python's <literal>RAISE</> the same as as
1144 internal <acronym>SPI</> errors (Oskari Saarenmaa and Jan Urbanski)
1155 <title>Client Applications</title>
1161 Add command-line utility <link
1162 linkend="app-pg-isready"><application>pg_isready</></link> to
1163 check if the server is ready to accept connections (Phil Sorber)
1169 Support multiple <option>--table</> arguments for <link
1170 linkend="APP-PGRESTORE"><application>pg_restore</></link>,
1171 <link linkend="APP-CLUSTERDB"><application>clusterdb</></link>,
1172 <link linkend="APP-REINDEXDB"><application>reindexdb</></link>,
1173 and <link linkend="APP-VACUUMDB"><application>vacuumdb</></link>
1178 This is similar to the <link
1179 linkend="APP-PGDUMP"><application>pg_dump</></link> <option>--table</>
1186 Add <option>--dbname</> option to <link
1187 linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, <link
1188 linkend="app-pgbasebackup"><application>pg_basebackup</></link>,
1190 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
1191 to specify the connection string (Amit Kapila)
1197 Add libpq function <link
1198 linkend="libpq-pqconninfo"><function>PQconninfo()</></link>
1199 to return connection information (Zoltán
1200 Böszörményi, Magnus Hagander)
1207 <title><link linkend="APP-PSQL"><application>psql</></link></title>
1213 Adjust function cost settings so <application>psql</> tab
1214 completion and pattern searching is more efficient (Tom Lane)
1220 Improve <application>psql</> tab completion coverage (Jeff Janes,
1227 Allow the <application>psql</> <option>--single-transaction</> mode to work when
1228 reading from standard input (Fabien Coelho, Robert Haas)
1232 Previously this option only worked when reading from a file.
1238 Remove <application>psql</> warning when connecting to an older
1239 server (Peter Eisentraut)
1243 The warning when connecting to a newer server was retained.
1250 <title><link linkend="R2-APP-PSQL-4">Backslash Commands</link></title>
1256 Add <application>psql</> <command>\watch</> command to repeatedly
1257 execute commands (Will Leinweber)
1263 Add <application>psql</> command <command>\gset</> to store query
1264 results in <application>psql</> variables (Pavel Stehule)
1270 Add <acronym>SSL</> information to <application>psql</>'s
1271 <command>\conninfo</> command (Alastair Turner)
1277 Add <quote>Security</> label to <application>psql</> <command>\df+</>
1284 Allow <application>psql</> <command>\l</> to accept a database
1285 name pattern (Peter Eisentraut)
1291 In <application>psql</>, do not allow <command>\connect</> to
1292 use defaults if there is no active connection (Bruce Momjian)
1296 This might be the case if the server had crashed.
1302 Properly reset state if <application>psql</>'s <quote>\g file</>
1303 command failed (Tom Lane)
1307 Previously failed commands discarded output from subsequent commands.
1316 <title>Output</title>
1322 Add a <literal>latex-longtable</> output format to
1323 <application>psql</> (Bruce Momjian)
1327 Longtable allows tables to span multiple pages.
1333 Add a <literal>border=3</> output mode to the <application>psql</>
1334 <literal>latex</> format (Bruce Momjian)
1340 In <application>psql</> tuples-only and expanded modes, no longer
1341 output <quote>(No rows)</> (Peter Eisentraut)
1347 In <application>psql</>, no longer print an empty line for
1348 unaligned, expanded output for zero rows (Peter Eisentraut)
1359 <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
1365 Add <application>pg_dump</> <option>--jobs</> to dump in parallel
1366 when using directory output format (Joachim Wieland)
1372 Have <application>pg_dump</> output functions in a predictable
1373 order (Joel Jacobson)
1379 Fix tar files emitted by <application>pg_dump</> and <link
1380 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
1381 to be <acronym>POSIX</> conformant (Brian Weaver, Tom Lane)
1387 Add <option>--dbname</> option to <application>pg_dump</>, for
1388 consistency with other client commands (Heikki Linnakangas)
1392 The database name could already be supplied last without a flag.
1401 <title><link linkend="APP-INITDB"><application>initdb</></link></title>
1407 Have initdb fsync the newly created data directory (Jeff Davis)
1411 This can be disabled by using <option>--nosync</>.
1417 Add initdb <option>--sync-only</> option to sync the data directory to durable
1418 storage (Bruce Momjian)
1422 This is used by <link
1423 linkend="pgupgrade"><application>pg_upgrade</></link>.
1429 Have initdb issue a warning about placing the data directory at the
1430 top of file system mount points (Bruce Momjian)
1441 <title>Source Code</title>
1447 Add an embedded list interface (Andres Freund)
1453 Add infrastructure to better support plug-in <link
1454 linkend="bgworker">background worker processes</link>
1455 (Álvaro Herrera)
1461 Create a centralized timeout <acronym>API</> (Zoltán
1462 Böszörményi)
1468 Create libpgcommon and move <function>pg_malloc()</> and other
1469 functions there (Álvaro Herrera, Andres Freund)
1473 This allows libpgport to be used solely for porting code.
1479 Standardize on naming of client-side memory allocation functions (Tom Lane)
1485 Add compiler designations to indicate some <function>ereport()</>
1486 and <function>elog()</> calls do not return (Peter Eisentraut,
1487 Andres Freund, Tom Lane, Heikki Linnakangas)
1493 Allow options to be passed to the regression
1494 test output comparison utility via <link
1495 linkend="regress-evaluation"><envar>PG_REGRESS_DIFF_OPTS</></link>
1502 Add isolation tests for <link
1503 linkend="SQL-CREATEINDEX"><command>CREATE INDEX
1504 CONCURRENTLY</></link> (Abhijit Menon-Sen)
1510 Remove typedefs for <type>int2</>/<type>int4</> as they are better
1511 represented as <type>int16</>/<type>int32</> (Peter Eisentraut)
1517 Fix <link linkend="install">install-strip</link> on Mac <productname>OS
1518 X</> (Peter Eisentraut)
1524 Remove <link linkend="configure">configure</link> flag
1525 <option>--disable-shared</>, as it is no longer used (Bruce
1532 Rewrite pgindent in <application>Perl</> (Andrew Dunstan)
1538 Add emacs macro to match <productname>PostgreSQL</> perltidy
1539 formatting (Peter Eisentraut)
1545 Run tool to check the keyword list when the backend grammar is
1552 Centralize <application>flex</> and <application>bison</>
1553 <application>make</> rules (Peter Eisentraut)
1557 This is useful for <application>pgxs</> authors.
1563 Add <function>Assert()</> functionality to client-side code for
1564 frontend code (Andrew Dunstan)
1570 Change many internal many backend functions to return <type>OID</>s
1571 rather than void (Dimitri Fontaine)
1575 This is useful for event triggers.
1581 Invent pre-commit/pre-prepare/pre-subcommit events for transaction
1582 callbacks (Tom Lane)
1586 Loadable modules that use transaction callbacks might need modification
1587 to handle these new event types.
1594 linkend="functions-info-catalog-table"><function>pg_identify_object()</></link>
1595 to dump an object in machine-readable format (Álvaro
1602 Add post-<command>ALTER</>-object server hooks (KaiGai Kohei)
1608 Implement a generic binary heap and use it for Merge-Append
1609 operations (Abhijit Menon-Sen)
1615 Improve ability to detect official timezone abbreviation changes
1622 Add <application>pkg-config</> support <application>libpq</>
1623 and <application>ecpg</> libraries (Peter Eisentraut)
1629 Remove <filename>src/tool/backend</>, now that the content is on
1630 the <productname>PostgreSQL</> wiki (Bruce Momjian)
1636 Split out <link linkend="wal"><acronym>WAL</></link> reading as
1637 an independent facility (Heikki Linnakangas, Andres Freund)
1643 Use a 64-bit integer to represent <link
1644 linkend="wal"><acronym>WAL</></link> positions
1645 (<structname>XLogRecPtr</>) instead of two 32-bit integers
1646 (Heikki Linnakangas)
1650 Generally, tools that need to read the <acronym>WAL</> format
1651 will need to be adjusted.
1657 Allow <link linkend="plpython">PL/Python</link> to support
1658 platform-specific include directories (Peter Eisentraut)
1664 Allow <link linkend="plpython">PL/Python</link> on <productname>OS
1665 X</> to build against custom versions of <application>Python</>
1675 <title>Additional Modules</title>
1681 Allow write-enabled <link
1682 linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data wrappers</link>
1683 to support writes (KaiGai Kohei)
1689 Add a <productname>Postgres</> <link linkend="postgres-fdw">foreign
1690 data wrapper</link> contrib module (Shigeru Hanada)
1694 This foreign data wrapper allows writes.
1700 Add <link linkend="pgxlogdump"><application>pg_xlogdump</></link>
1701 contrib program (Andres Freund)
1707 Add support for indexing of regular-expression searches in
1708 extension <link linkend="pgtrgm"><productname>pg_trgm</></link>
1709 (Alexander Korotkov)
1715 Improve <link linkend="pgtrgm"><productname>pg_trgm</></link>
1716 handling of multibyte characters (Tom Lane)
1722 Add <link linkend="pgstattuple">pgstattuple function</link> to report the
1723 size of the <type>GIN</> pending index insertion list (Fujii Masao)
1729 Have <link linkend="oid2name"><application>oid2name</></link>,
1730 <link linkend="pgbench"><application>pgbench</></link>, and
1731 <link linkend="vacuumlo"><application>vacuumlo</></link> set
1732 <varname>fallback_application_name</> (Amit Kapila)
1738 Improve output of <link
1739 linkend="pgtesttiming"><application>pg_test_timing</></link>
1746 Improve output of <link
1747 linkend="pgtestfsync"><application>pg_test_fsync</></link>
1754 Improve <link linkend="dblink">dblink</link> option validator
1766 <title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>
1772 Allow <application>pg_upgrade</> <option>--jobs</> to do
1773 parallelism (Bruce Momjian)
1777 This allows parallel schema dump/restore of databases, as well as
1778 parallel copy/link of data files per tablespace.
1784 Have <application>pg_upgrade</> create unix-domain sockets in
1785 the current directory (Bruce Momjian, Tom Lane)
1789 This reduces the possibility that someone will accidentally connect
1796 Have <application>pg_upgrade</> <option>--check</> mode properly
1797 detect the location of non-default socket directories (Bruce
1804 Improve performance of <application>pg_upgrade</> for databases
1805 with many tables (Bruce Momjian)
1811 Increase <application>pg_upgrade</> logging content by showing
1812 executed command (Álvaro Herrera)
1818 Improve <application>pg_upgrade</>'s status display during
1819 copy/link (Bruce Momjian)
1828 <title><link linkend="pgbench"><application>pgbench</></link></title>
1834 Add <option>--foreign-keys</> option to <application>pgbench</> (Jeff Janes)
1838 This adds foreign key constraints to tables, for use in foreign
1839 key performance testing.
1845 Allow <application>pgbench</> to aggregate performance statistics
1846 and produce output every <option>--aggregate-interval</> specified
1847 seconds (Tomas Vondra)
1853 Add <application>pg_bench</> <option>--sampling-rate</> option
1854 to control the percentage of transactions logged (Tomas Vondra)
1860 Reduce and improve the status message output of
1861 <application>pgbench</>'s initialization mode (Robert Haas,
1868 Add <application>pgbench</> <option>-q</> mode to print one output
1869 line every five seconds (Tomas Vondra)
1873 Output <application>pgbench</> elapsed and estimated remaining
1874 time during initialization logging (Tomas Vondra)
1880 Allow <application>pgbench</> to use a larger scale factor
1892 <title>Documentation</title>
1898 Allow <productname>EPUB</>-format documentation to be created
1905 Update <productname>FreeBSD</> kernel configuration documentation
1912 Improve <link linkend="tutorial-window"><literal>WINDOW</>
1913 function</link> documentation (Bruce Momjian, Tom Lane)
1919 Add <link linkend="docguide">instructions</link> for setting
1920 up the documentation tool chain on Mac <productname>OS X</>
1928 linkend="guc-commit-delay"><varname>commit_delay</></link>
1929 documentation (Peter Geoghegan)