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>ADD HERE</title>
51 <title>Changes</title>
54 Below you will find a detailed account of the changes between
55 <productname>PostgreSQL</productname> 9.3 and the previous major
63 <title>Locking</title>
69 Prevent non-key-field row updates from locking foreign key rows
70 (Álvaro Herrera, Noah Misch, Andres Freund, Alexander
71 Shulgin, Marti Raudsepp)
75 This improves concurrency and reduces the probability of deadlocks.
76 <command>UPDATE</>s on non-key columns use the new <command>SELECT
77 FOR NO KEY UPDATE</> lock type, and foreign key checks use the
78 new <command>SELECT FOR KEY SHARE</> lock mode.
84 Add configuration variable <link
85 linkend="guc-lock-timeout"><varname>lock_timeout</></link> to limit
86 lock wait duration (Zoltán Böszörményi)
92 Add cache of local locks (Jeff Janes)
96 This speeds lock release at statement completion in
97 transactions that hold many locks; it is particularly useful
98 for <application>pg_dump</>.
107 <title>Indexes</title>
113 Add <link linkend="rangetypes-indexing"><type>SP-GiST</></link>
114 support for range data types (Alexander Korotkov)
120 Allow unlogged <link linkend="SPGiST"><type>GiST</></link> indexes
127 Improve concurrency of hash indexes (Robert Haas)
136 <title>Optimizer</title>
142 Collect and use histograms for <link linkend="rangetypes">range
143 types</link> (Alexander Korotkov)
149 Reduce optimizer overhead by discarding plans with unneeded cheaper
150 startup costs (Tom Lane)
156 Improve optimizer cost estimation for index access (Tom Lane)
165 <title>General Performance</title>
171 Add <link linkend="SQL-COPY"><command>COPY FREEZE</></link>
172 option to avoid the overhead of later marking tuples as committed
173 (Simon Riggs, Jeff Davis)
179 Improve performance of <link
180 linkend="datatype-numeric"><type>NUMERIC</></link> calculations
187 Improve grouping of sessions waiting for <link
188 linkend="guc-commit-delay"><varname>commit_delay</></link>
193 This improves the usefulness and behavior of
194 <varname>commit_delay</>. BACKWARD COMPATIBILITY
200 Allow in-memory sorts to use their full memory allocation (Jeff Janes)
204 Users who have set <link
205 linkend="guc-work-mem"><varname>work_mem</></link> based on the
206 previous behavior should revisit that setting.
212 Improve performance for transactions creating, rebuilding, or
213 dropping many relations (Jeff Janes, Tomas Vondra)
219 Improve performance of the <link
220 linkend="SQL-CREATETABLE"><command>CREATE TEMPORARY TABLE ... ON
221 COMMIT DELETE ROWS</></link> clause by only issuing delete if
222 the temporary table was accessed (Heikki Linnakangas)
228 Have vacuum recheck visibility after it has removed expired tuples
233 This increases the chance of a page being marked as all-visible.
240 linkend="guc-stats-temp-directory"><filename>pg_stat_tmp</></link>
241 statistics file into per-database and global files (Tomas Vondra)
245 This reduces the statistics management read and write overhead.
254 <title>Monitoring</title>
260 Add optional ability to <link
261 linkend="app-initdb-data-checksums">checksum</link> data pages and
262 report corruption (Simon Riggs, Jeff Davis, Greg Smith, Ants Aasma)
266 The checksum option can be set during <link
267 linkend="APP-INITDB">initdb</link>.
274 linkend="functions-admin-signal-table"><function>pg_terminate_backend()</></link>
275 to terminate other backends with the same role (Dan Farina)
279 Previously, only superusers could terminate other sessions.
286 linkend="runtime-config-statistics-collector">statistics
287 collector</link> to operate properly in cases where the system
288 clock goes backwards (Tom Lane)
292 Previously statistics collection would stop until the time again
293 reached the previously-stored latest time.
302 <title>Authentication</title>
308 Improve <link linkend="auth-ldap"><acronym>LDAP</></link> error
309 reporting and documentation (Peter Eisentraut)
315 Add support for <acronym>LDAP</> authentication to be specified
316 in <acronym>URL</> format (Peter Eisentraut)
323 linkend="guc-ssl-ciphers"><varname>ssl_ciphers</></link> parameter
324 to start with <literal>DEFAULT</>, rather than <literal>ALL</>,
325 then remove insecure ciphers (Magnus Hagander)
329 It is assumed <literal>DEFAULT</> is more appropriate cipher set.
336 linkend="auth-username-maps"><filename>pg_ident.conf</></link>
337 once, not during each connection (Amit Kapila)
341 This is similar to how <link
342 linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></link>
352 <title>Server Settings</title>
358 Dramatically reduce System V <link linkend="sysvipc">shared
359 memory</link> usage (Robert Haas)
363 Instead, on Unix-like systems, <function>mmap()</> is used for
364 shared memory. This eliminates the requirement of increasing
365 System V shared memory kernel parameters.
371 Allow the postmaster to listen on multiple Unix-domain sockets
376 This renames configuration parameter
377 <varname>unix_socket_directory</> to <link
378 linkend="guc-unix-socket-directories"><varname>unix_socket_directories</></link>,
379 which accepts a list of directories.
385 Allow a directory of configuration files to be processed (Magnus
386 Hagander, Greg Smith, Selena Deckelmann)
390 The directory is specified as <link
391 linkend="config-includes"><varname>include_dir</></link> in server
398 Increase the maximum <link
399 linkend="APP-INITDB">initdb</link>-configured value for <link
400 linkend="guc-shared-buffers"><varname>shared_buffers</></link>
401 to 128MB (Robert Haas)
405 This is the maximum value initdb attempts to set in <link
406 linkend="config-setting-configuration-file"><filename>postgresql.conf</></link>;
407 the previous value was 32MB.
413 Require superuser privileges to set <link
414 linkend="guc-commit-delay"><varname>commit_delay</></link>
415 because it can now potentially delay other sessions (Simon Riggs)
416 BACKWARD COMPATIBILITY
423 Remove the <link linkend="guc-external-pid-file">external
424 <acronym>PID</> file</link> on postmaster exit (Peter Eisentraut)
430 Have <quote>session id</> (<literal>%c</>) in <link
431 linkend="guc-log-line-prefix"><varname>log_line_prefix</></link>
432 always output four hex digits after the period (Bruce Momjian)
444 <title>Replication and Recovery</title>
450 Allow a streaming replication standbys to <link
451 linkend="protocol-replication">follow a timeline switch</link>
456 This allows streaming standbys to feed from newly-promoted slaves.
457 Previously slaves required access to a <acronym>WAL</> archive directory to
464 Add <acronym>SQL</> functions <link
465 linkend="functions-admin-backup"><function>pg_is_in_backup()</></link>
467 linkend="functions-admin-backup"><function>pg_backup_start_time()</></link>
472 These functions report the status of base backups.
478 Improve performance of streaming log shipping with <link
479 linkend="guc-synchronous-commit"><varname>synchronous_commit</></link>
480 disabled (Andres Freund)
486 Allow much faster promotion of a streaming standby to primary (Simon
487 Riggs, Kyotaro Horiguchi)
493 Add the last checkpoint's redo location to <link
494 linkend="APP-PGCONTROLDATA"><application>pg_controldata</></link>'s
499 This information is useful for determining the <acronym>WAL</>
500 files needed for restore.
506 Allow tooling like <link
507 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
508 to run on computers with different architectures (Heikki
516 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
517 <option>--write-recovery-conf</> output a
518 minimal <filename>recovery.conf</> (Zoltán
519 Böszörményi, Magnus Hagander)
523 This simplifies setting up a standby server.
530 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
532 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
533 <option>--xlog-method</> to handle streaming timeline switches
541 linkend="guc-wal-receiver-timeout"><varname>wal_receiver_timeout</></link>
542 parameter to control the <acronym>WAL</> receiver timeout
547 This allows more rapid detection of
548 connection failure. No longer set <link
549 linkend="guc-wal-receiver-status-interval"><varname>wal_receiver_status_interval</></link>?
555 Rename <varname>replication_timeout</> to <link
556 linkend="guc-wal-sender-timeout"><varname>wal_sender_timeout</></link>
561 BACKWARD COMPATIBILITY
562 This setting controls the <acronym>WAL</> sender timeout.
569 <title><link linkend="wal">Write-Ahead Log</link>
570 (<acronym>WAL</>)</title>
576 Store <acronym>WAL</> in a continuous stream, rather than skipping
577 the last 16MB segment every 4GB (Heikki Linnakangas) BACKWARD
582 Previously, <acronym>WAL</> files ending in <literal>FF</> were
583 not used. If you have <acronym>WAL</> backup or restore scripts
584 that took that skipping into account, they need to be adjusted.
590 Change the <acronym>WAL</> record format to allow splitting the record header
591 across pages (Heikki Linnakangas)
595 The new format is slightly more compact.
606 <title>Queries</title>
612 Implement <acronym>SQL</>-standard <link
613 linkend="queries-lateral"><literal>LATERAL</></link> for
614 <literal>FROM</>-clause subqueries and function calls (Tom Lane)
618 This is useful in allowing <literal>FROM</> subqueries and
619 functions to reference output from tables in the <literal>FROM</>
620 clause. The <literal>LATERAL</> keyword is optional for functions.
626 Add support for piping <link
627 linkend="SQL-COPY"><command>COPY</></link> and <link
628 linkend="APP-PSQL"><application>psql</></link> <command>\copy</>
629 to/from an external program (Etsuro Fujita)
635 Improve query string error location reporting (Tom Lane)
639 Only <command>CREATE SCHEMA ... IF NOT EXISTS</>? If so, remove it.
648 <title>Object Manipulation</title>
654 Add support to <link linkend="event-triggers">event triggers</link>
655 (Dimitri Fontaine, Robert Haas, Álvaro Herrera)
659 This allows C functions to be called when specific commands are run.
665 Allow a multi-row <link
666 linkend="SQL-VALUES"><literal>VALUES</></link> clause in rules
667 to reference <literal>OLD</>/<literal>NEW</> (Tom Lane)
673 Add <link linkend="SQL-CREATESCHEMA"><command>CREATE SCHEMA ... IF
674 NOT EXISTS</></link> clause (Fabrízio de Royes Mello)
680 Throw an error if expiring tuple is again updated or deleted (Kevin Grittner)
681 DETAILS? BACKWARD INCOMPATIBILITY
687 Have <link linkend="SQL-REASSIGN-OWNED"><command>REASSIGN
688 OWNED</></link> also change ownership of shared objects
689 (Álvaro Herrera)
696 <title><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link></title>
702 No longer output messages about implicit index and sequence creation (Robert Haas)
706 These messages now appear with <literal>DEBUG1</>-level output.
712 Allow <command>CREATE TABLE IF NOT EXISTS</> to succeed for a
713 non-existent schema (Bruce Momjian)
717 Previously, it threw an error if the schema did not exist.
726 <title>Constraints</title>
732 Change <link linkend="SQL-CREATETABLE"><literal>ON UPDATE
733 SET NULL/SET DEFAULT</></link> foreign key actions to affect
734 all referenced columns, not just those referenced in the
735 <command>UPDATE</> (Tom Lane)
739 Previously only columns referenced in the <command>UPDATE</> were
740 set to null or <literal>DEFAULT</>. BACKWARD COMPATIBILITY CHANGE
746 Provide clients with <link
747 linkend="libpq-pqresulterrorfield">constraint violation details</link>
748 as separate fields (Pavel Stehule)
752 This allows clients to retrieve table, column, data type, or constraint
753 name error details. Previously such information had to be extracted from
754 error strings. Client language support is required to access these
761 Internally store default foreign key matches (non-<literal>FULL</>,
762 non-<literal>PARTIAL</>) as <quote>simple</> (Tom Lane)
766 These were previously stored as "<unspecified>".
767 This changes the value stored in system column <link
768 linkend="catalog-pg-constraint"><structname>pg_constraint.confmatchtype</></link>.
769 BACKWARD COMPATIBILITY CHANGE
778 <title><command>ALTER</></title>
784 Add the <link linkend="SQL-ALTERTYPE"><command>ALTER TYPE ... IF
785 NOT EXISTS</></link> clause when adding enumerated type labels
790 This is useful for conditional label creation in transaction blocks.
796 Add <link linkend="SQL-ALTERROLE"><command>ALTER ROLE ALL
797 SET</></link> to add settings to all users (Peter Eisentraut)
801 This allows settings to apply to all users in all databases. <link
802 linkend="SQL-ALTERDATABASE"><command>ALTER DATABASE SET</></link>
803 already allowed addition of settings for all users in a single
804 database. <filename>postgresql.conf</> has a similar effect.
810 Add support for <link linkend="SQL-ALTERRULE"><command>ALTER RULE
811 ... RENAME</></link> (Ali Dar)
820 <title><link linkend="rules-views"><command>VIEWs</></link></title>
826 Add a <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
827 view</link> relations (Kevin Grittner)
831 Unlike ordinary views, where the base tables are read on every access,
832 materialized views create physical tables at creation or refresh time.
833 Access to the materialized view reads from these materialized physical
834 tables. There is no facility for incrementally refreshing materialized
835 views or auto-accessing them via base table access.
841 Make simple views <link
842 linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
847 Simple views that reference some or all columns from a
848 single base table are now updatable by default. More
849 complex views can be made updatable using <link
850 linkend="SQL-CREATETRIGGER"><literal>INSTEAD OF</></link> triggers
851 or <link linkend="SQL-CREATERULE"><literal>INSTEAD</></link> rules.
857 Allow views and rules to handle cases where referenced tables are
858 renamed, or columns are renamed, added, or dropped (Tom Lane)
859 HOW DOES IT HANDLE A DROPPED REFERENCED COLUMN?
865 Add <link linkend="SQL-CREATEVIEW"><command>CREATE RECURSIVE
866 VIEW</></link> syntax (Peter Eisentraut)
870 Internally this is translated into <command>CREATE VIEW ... WITH
877 When converting a table to a view, remove its system columns (Tom Lane)
889 <title>Data Types</title>
895 Increase the maximum length of <link linkend="lo-open">large
896 objects</link> from 2GB to 4TB (Nozomi Anzai, Yugo Nagata)
900 This change includes new libpq and server-side 64-bit-enabled functions.
906 Allow text <link linkend="datatype-timezones">timezone
907 designations</link>, e.g. <quote>America/Chicago</> when using
908 the <acronym>ISO</> <quote>T</> timestamptz format (Bruce Momjian)
915 <title><link linkend="datatype-json"><type>JSON</></link></title>
921 Add <link linkend="functions-json">operators and functions</link>
922 to extract values from <type>JSON</> data strings (Andrew Dunstan)
928 Allow <type>JSON</> data strings to be <link
929 linkend="functions-json-table">converted into records</link>
936 Add <link linkend="functions-json-table">functions</link>
937 to convert values, records, and hstore data to <type>JSON</>
950 <title>Functions</title>
957 linkend="array-functions-table"><function>array_remove()</></link>
959 linkend="array-functions-table"><function>array_replace()</></link>
960 functions (Marco Nenciarini, Gabriele Bartolini)
967 linkend="functions-string-other"><function>concat()</></link>
969 linkend="functions-string-format"><function>format()</></link>
970 to properly expand <literal>VARIADIC</>-labeled arguments
978 linkend="functions-string-format"><function>format()</></link>
979 to handle field width and left/right alignment (Pavel Stehule)
986 linkend="functions-formatting-table"><function>to_char()</></link>,
988 linkend="functions-formatting-table"><function>to_date()</></link>,
990 linkend="functions-formatting-table"><function>to_timestamp()</></link>
991 properly handle negative century designations (<literal>CC</>)
996 Previously the behavior was either wrong or inconsistent
997 with positive/<acronym>AD</> handling, e.g. format mask
998 <quote>IYYY-IW-DY</>.
1005 linkend="functions-formatting-table"><function>to_date()</></link>
1007 linkend="functions-formatting-table"><function>to_timestamp()</></link>
1008 return proper results when mixing <acronym>ISO</> and Gregorian
1009 week/day designations (Bruce Momjian)
1016 linkend="functions-info-catalog-table"><function>pg_get_viewdef()</></link>
1017 to default to wrapping after every <link
1018 linkend="SQL-SELECT"><command>SELECT</></link> target list and
1019 <literal>FROM</> entry (Marko Tiikkaja)
1023 This causes view output, like from <link
1024 linkend="APP-PGDUMP"><application>pg_dump</></link>, to be
1031 Have <function>map_sql_value_to_xml_value()</> properly expand
1032 domains (Pavel Stehule) WHAT IS THE USER-VISIBLE AFFECT HERE?
1033 map_sql_value_to_xml_value IS A C FUNCTION
1039 Force cached functions to be replanned if the <link
1040 linkend="guc-search-path"><varname>search_path</></link> changes
1045 Previously functions already run in the current session ignored
1046 <varname>search_path</> changes.
1056 <title>Server-Side Languages</title>
1062 Allow <link linkend="spi-spi-execute"><acronym>SPI</></link>
1063 functions to access the number of rows processed by
1064 <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1071 <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
1077 Allow PL/pgSQL to use <literal>RETURN</> with a composite-type
1078 expressions (Asif Rehman)
1082 Previously <literal>RETURN</> could only reference composite-type variables.
1088 Allow PL/pgSQL to access the number of rows processed by
1089 <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1093 The command is <link
1094 linkend="plpgsql-statements-diagnostics"><command>GET DIAGNOSTICS
1095 x = ROW_COUNT</></link>.
1101 Allow greater flexibility in where keywords can be used in PL/pgSQL (Tom Lane)
1110 <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
1116 Add PL/Python result object string handler (Peter Eisentraut)
1120 This allows plpy.debug(rv) to output something reasonable.
1126 Have PL/Python convert oid values to a proper Python numeric type
1133 Handle <link linkend="spi"><acronym>SPI</></link> errors raised
1134 explicitly with PL/Python's <literal>RAISE</> the same as as
1135 internal <acronym>SPI</> errors (Oskari Saarenmaa and Jan Urbanski)
1146 <title>Client Applications</title>
1152 Add command-line utility <link
1153 linkend="app-pg-isready"><application>pg_isready</></link> to
1154 check if the server is ready to accept connections (Phil Sorber)
1160 Support multiple <option>--table</> arguments for <link
1161 linkend="APP-PGRESTORE"><application>pg_restore</></link>,
1162 <link linkend="APP-CLUSTERDB"><application>clusterdb</></link>,
1163 <link linkend="APP-REINDEXDB"><application>reindexdb</></link>,
1164 and <link linkend="APP-VACUUMDB"><application>vacuumdb</></link>
1169 This is similar to the <link
1170 linkend="APP-PGDUMP"><application>pg_dump</></link> <option>--table</>
1177 Add <option>--dbname</> option to <link
1178 linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, <link
1179 linkend="app-pgbasebackup"><application>pg_basebackup</></link>,
1181 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
1182 to specify the connection string (Amit Kapila)
1188 Add libpq function <link
1189 linkend="libpq-pqconninfo"><function>PQconninfo()</></link>
1190 to return connection information (Zoltán
1191 Böszörményi, Magnus Hagander)
1198 <title><link linkend="APP-PSQL"><application>psql</></link></title>
1204 Adjust function cost settings so <application>psql</> tab
1205 completion and pattern searching is more efficient (Tom Lane)
1211 Improve <application>psql</> tab completion coverage (Jeff Janes,
1218 Allow the <application>psql</> <option>--single-transaction</> mode to work when
1219 reading from standard input (Fabien Coelho, Robert Haas)
1223 Previously this option only worked when reading from a file.
1229 Remove <application>psql</> warning when connecting to an older
1230 server (Peter Eisentraut)
1234 The warning when connecting to a newer server was retained.
1241 <title><link linkend="R2-APP-PSQL-4">Backslash Commands</link></title>
1247 Add <application>psql</> <command>\watch</> command to repeatedly
1248 execute commands (Will Leinweber)
1254 Add <application>psql</> command <command>\gset</> to store query
1255 results in <application>psql</> variables (Pavel Stehule)
1261 Add <acronym>SSL</> information to <application>psql</>'s
1262 <command>\conninfo</> command (Alastair Turner)
1268 Add <quote>Security</> label to <application>psql</> <command>\df+</>
1275 Allow <application>psql</> <command>\l</> to accept a database
1276 name pattern (Peter Eisentraut)
1282 In <application>psql</>, do not allow <command>\connect</> to
1283 use defaults if there is no active connection (Bruce Momjian)
1287 This might be the case if the server had crashed.
1293 Properly reset state if <application>psql</>'s <quote>\g file</>
1294 command failed (Tom Lane)
1298 Previously failed commands discarded output from subsequent commands.
1307 <title>Output</title>
1313 Add a <literal>latex-longtable</> output format to
1314 <application>psql</> (Bruce Momjian)
1318 Longtable allows tables to span multiple pages.
1324 Add a <literal>border=3</> output mode to the <application>psql</>
1325 <literal>latex</> format (Bruce Momjian)
1331 In <application>psql</> tuples-only and expanded modes, no longer
1332 output <quote>(No rows)</> (Peter Eisentraut)
1338 In <application>psql</>, no longer print an empty line for
1339 unaligned, expanded output for zero rows (Peter Eisentraut)
1350 <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
1356 Add <application>pg_dump</> <option>--jobs</> to dump in parallel
1357 when using directory output format (Joachim Wieland)
1363 Have <application>pg_dump</> output functions in a predictable
1364 order (Joel Jacobson)
1370 Fix tar files emitted by <application>pg_dump</> and <link
1371 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
1372 to be <acronym>POSIX</> conformant (Brian Weaver, Tom Lane)
1378 Add <option>--dbname</> option to <application>pg_dump</>, for
1379 consistency with other client commands (Heikki Linnakangas)
1383 The database name could already be supplied last without a flag.
1392 <title><link linkend="APP-INITDB"><application>initdb</></link></title>
1398 Have initdb fsync the newly created data directory (Jeff Davis)
1402 This can be disabled by using <option>--nosync</>.
1408 Add initdb <option>--sync-only</> option to sync the data directory to durable
1409 storage (Bruce Momjian)
1413 This is used by <link
1414 linkend="pgupgrade"><application>pg_upgrade</></link>.
1420 Have initdb issue a warning about placing the data directory at the
1421 top of file system mount points (Bruce Momjian)
1432 <title>Source Code</title>
1438 Add an embedded list interface (Andres Freund)
1444 Add infrastructure to better support plug-in <link
1445 linkend="bgworker">background worker processes</link>
1446 (Álvaro Herrera)
1452 Create a centralized timeout <acronym>API</> (Zoltán
1453 Böszörményi)
1459 Create libpgcommon and move <function>pg_malloc()</> and other
1460 functions there (Álvaro Herrera, Andres Freund)
1464 This allows libpgport to be used solely for porting code.
1470 Standardize on naming of client-side memory allocation functions (Tom Lane)
1476 Add compiler designations to indicate some <function>ereport()</>
1477 and <function>elog()</> calls do not return (Peter Eisentraut,
1478 Andres Freund, Tom Lane, Heikki Linnakangas)
1484 Allow options to be passed to the regression
1485 test output comparison utility via <link
1486 linkend="regress-evaluation"><envar>PG_REGRESS_DIFF_OPTS</></link>
1493 Add isolation tests for <link
1494 linkend="SQL-CREATEINDEX"><command>CREATE INDEX
1495 CONCURRENTLY</></link> (Abhijit Menon-Sen)
1501 Remove typedefs for <type>int2</>/<type>int4</> as they are better
1502 represented as <type>int16</>/<type>int32</> (Peter Eisentraut)
1508 Fix <link linkend="install">install-strip</link> on Mac <productname>OS
1509 X</> (Peter Eisentraut)
1515 Remove <link linkend="configure">configure</link> flag
1516 <option>--disable-shared</>, as it is no longer used (Bruce
1523 Rewrite pgindent in <application>Perl</> (Andrew Dunstan)
1529 Add emacs macro to match <productname>PostgreSQL</> perltidy
1530 formatting (Peter Eisentraut)
1536 Run tool to check the keyword list when the backend grammar is
1543 Centralize <application>flex</> and <application>bison</>
1544 <application>make</> rules (Peter Eisentraut)
1548 This is useful for <application>pgxs</> authors.
1554 Add <function>Assert()</> functionality to client-side code for
1555 frontend code (Andrew Dunstan)
1561 Change many internal many backend functions to return <type>OID</>s
1562 rather than void (Dimitri Fontaine)
1566 This is useful for event triggers.
1572 Invent pre-commit/pre-prepare/pre-subcommit events for transaction
1573 callbacks (Tom Lane)
1577 Loadable modules that use transaction callbacks might need modification
1578 to handle these new event types.
1585 linkend="functions-info-catalog-table"><function>pg_identify_object()</></link>
1586 to dump an object in machine-readable format (Álvaro
1593 Add post-<command>ALTER</>-object server hooks (KaiGai Kohei)
1599 Implement a generic binary heap and use it for Merge-Append
1600 operations (Abhijit Menon-Sen)
1606 Improve ability to detect official timezone abbreviation changes
1613 Add <application>pkg-config</> support <application>libpq</>
1614 and <application>ecpg</> libraries (Peter Eisentraut)
1620 Remove <filename>src/tool/backend</>, now that the content is on
1621 the <productname>PostgreSQL</> wiki (Bruce Momjian)
1627 Split out <link linkend="wal"><acronym>WAL</></link> reading as
1628 an independent facility (Heikki Linnakangas, Andres Freund)
1634 Use a 64-bit integer to represent <link
1635 linkend="wal"><acronym>WAL</></link> positions
1636 (<structname>XLogRecPtr</>) instead of two 32-bit integers
1637 (Heikki Linnakangas)
1641 Generally, tools that need to read the <acronym>WAL</> format
1642 will need to be adjusted.
1648 Allow <link linkend="plpython">PL/Python</link> to support
1649 platform-specific include directories (Peter Eisentraut)
1655 Allow <link linkend="plpython">PL/Python</link> on <productname>OS
1656 X</> to build against custom versions of <application>Python</>
1666 <title>Additional Modules</title>
1672 Allow write-enabled <link
1673 linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data wrappers</link>
1674 to support writes (KaiGai Kohei)
1680 Add a <productname>Postgres</> <link linkend="postgres-fdw">foreign
1681 data wrapper</link> contrib module (Shigeru Hanada)
1685 This foreign data wrapper allows writes.
1691 Add <link linkend="pgxlogdump"><application>pg_xlogdump</></link>
1692 contrib program (Andres Freund)
1698 Add support for indexing of regular-expression searches in
1699 extension <link linkend="pgtrgm"><productname>pg_trgm</></link>
1700 (Alexander Korotkov)
1706 Improve <link linkend="pgtrgm"><productname>pg_trgm</></link>
1707 handling of multibyte characters (Tom Lane)
1713 Add <link linkend="pgstattuple">pgstattuple function</link> to report the
1714 size of the <type>GIN</> pending index insertion list (Fujii Masao)
1720 Have <link linkend="oid2name"><application>oid2name</></link>,
1721 <link linkend="pgbench"><application>pgbench</></link>, and
1722 <link linkend="vacuumlo"><application>vacuumlo</></link> set
1723 <varname>fallback_application_name</> (Amit Kapila)
1729 Improve output of <link
1730 linkend="pgtesttiming"><application>pg_test_timing</></link>
1737 Improve output of <link
1738 linkend="pgtestfsync"><application>pg_test_fsync</></link>
1745 Improve <link linkend="dblink">dblink</link> option validator
1757 <title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>
1763 Allow <application>pg_upgrade</> <option>--jobs</> to do
1764 parallelism (Bruce Momjian)
1768 This allows parallel schema dump/restore of databases, as well as
1769 parallel copy/link of data files per tablespace.
1775 Have <application>pg_upgrade</> create unix-domain sockets in
1776 the current directory (Bruce Momjian, Tom Lane)
1780 This reduces the possibility that someone will accidentally connect
1787 Have <application>pg_upgrade</> <option>--check</> mode properly
1788 detect the location of non-default socket directories (Bruce
1795 Improve performance of <application>pg_upgrade</> for databases
1796 with many tables (Bruce Momjian)
1802 Increase <application>pg_upgrade</> logging content by showing
1803 executed command (Álvaro Herrera)
1809 Improve <application>pg_upgrade</>'s status display during
1810 copy/link (Bruce Momjian)
1819 <title><link linkend="pgbench"><application>pgbench</></link></title>
1825 Add <option>--foreign-keys</> option to <application>pgbench</> (Jeff Janes)
1829 This adds foreign key constraints to tables, for use in foreign
1830 key performance testing.
1836 Allow <application>pgbench</> to aggregate performance statistics
1837 and produce output every <option>--aggregate-interval</> specified
1838 seconds (Tomas Vondra)
1844 Add <application>pg_bench</> <option>--sampling-rate</> option
1845 to control the percentage of transactions logged (Tomas Vondra)
1851 Reduce and improve the status message output of
1852 <application>pgbench</>'s initialization mode (Robert Haas,
1859 Add <application>pgbench</> <option>-q</> mode to print one output
1860 line every five seconds (Tomas Vondra)
1864 Output <application>pgbench</> elapsed and estimated remaining
1865 time during initialization logging (Tomas Vondra)
1871 Allow <application>pgbench</> to use a larger scale factor
1883 <title>Documentation</title>
1889 Allow <productname>EPUB</>-format documentation to be created
1896 Update <productname>FreeBSD</> kernel configuration documentation
1903 Improve <link linkend="tutorial-window"><literal>WINDOW</>
1904 function</link> documentation (Bruce Momjian, Tom Lane)
1910 Add <link linkend="docguide">instructions</link> for setting
1911 up the documentation tool chain on Mac <productname>OS X</>
1919 linkend="guc-commit-delay"><varname>commit_delay</></link>
1920 documentation (Peter Geoghegan)