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 <link linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data
704 wrappers</link> to support writes (inserts/updates/deletes) on foreign
705 tables (KaiGai Kohei)
711 Allow a multirow <link
712 linkend="SQL-VALUES"><literal>VALUES</></link> clause in a rule
713 to reference <literal>OLD</>/<literal>NEW</> (Tom Lane)
719 Add <link linkend="SQL-CREATESCHEMA"><command>CREATE SCHEMA ... IF
720 NOT EXISTS</></link> clause (Fabrízio de Royes Mello)
726 Have <link linkend="SQL-REASSIGN-OWNED"><command>REASSIGN
727 OWNED</></link> also change ownership of shared objects
728 (Álvaro Herrera)
735 <title><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link></title>
741 Suppress messages about implicit index and sequence creation
746 These messages now appear at <literal>DEBUG1</> verbosity, so that
747 they will not be shown by default.
753 Allow <link linkend="SQL-DROPTABLE"><command>DROP TABLE IF
754 EXISTS</></link> to succeed when a non-existent schema is specified
755 in the table name (Bruce Momjian)
759 Previously, it threw an error if the schema did not exist.
768 <title>Constraints</title>
774 Provide clients with <link
775 linkend="libpq-pqresulterrorfield">constraint violation details</link>
776 as separate fields (Pavel Stehule)
780 This allows clients to retrieve table, column, data type, or constraint
781 name error details. Previously such information had to be extracted from
782 error strings. Client library support is required to access these
792 <title><command>ALTER</></title>
798 Support <literal>IF NOT EXISTS</> option in <link
799 linkend="SQL-ALTERTYPE"><command>ALTER TYPE ... ADD VALUE</></link>
804 This is useful for conditionally adding values to enumerated types.
810 Add <link linkend="SQL-ALTERROLE"><command>ALTER ROLE ALL
811 SET</></link> to add settings to all users (Peter Eisentraut)
815 This allows settings to apply to all users in all databases. <link
816 linkend="SQL-ALTERDATABASE"><command>ALTER DATABASE SET</></link>
817 already allowed addition of settings for all users in a single
818 database. <filename>postgresql.conf</> has a similar effect.
824 Add support for <link linkend="SQL-ALTERRULE"><command>ALTER RULE
825 ... RENAME</></link> (Ali Dar)
834 <title><link linkend="rules-views"><command>VIEWs</></link></title>
840 Add <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
841 views</link> (Kevin Grittner)
845 Unlike ordinary views, where the base tables are read on every access,
846 materialized views create physical tables at creation or refresh time.
847 Access to the materialized view then reads from its physical
848 table. There is not yet any facility for incrementally refreshing
849 materialized views or auto-accessing them via base table access.
855 Make simple views <link
856 linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
861 Simple views that reference some or all columns from a
862 single base table are now updatable by default. More
863 complex views can be made updatable using <link
864 linkend="SQL-CREATETRIGGER"><literal>INSTEAD OF</></link> triggers
865 or <link linkend="SQL-CREATERULE"><literal>INSTEAD</></link> rules.
871 Improve view/rule printing code to handle cases where referenced
872 tables are renamed, or columns are renamed, added, or dropped
877 Table and column renamings can produce cases where, if we merely
878 substitute the new name into the original text of a rule or view, the
879 result is ambiguous. This patch fixes the rule-dumping code to insert
880 table and column aliases if needed to preserve the original semantics.
886 Add <link linkend="SQL-CREATEVIEW"><command>CREATE RECURSIVE
887 VIEW</></link> syntax (Peter Eisentraut)
891 Internally this is translated into <command>CREATE VIEW ... WITH
903 <title>Data Types</title>
909 Increase the maximum length of <link linkend="lo-open">large
910 objects</link> from 2GB to 4TB (Nozomi Anzai, Yugo Nagata)
914 This change includes new libpq and server-side 64-bit-capable
915 large object access functions.
921 Allow text <link linkend="datatype-timezones">timezone
922 designations</link>, e.g. <quote>America/Chicago</> when using
923 the <acronym>ISO</> <quote>T</> <type>timestamptz</type> format (Bruce Momjian)
930 <title><link linkend="datatype-json"><type>JSON</></link></title>
936 Add <link linkend="functions-json">operators and functions</link>
937 to extract values from <type>JSON</> data strings (Andrew Dunstan)
943 Allow <type>JSON</> data strings to be <link
944 linkend="functions-json-table">converted into records</link>
951 Add <link linkend="functions-json-table">functions</link>
952 to convert values, records, and hstore data to <type>JSON</>
965 <title>Functions</title>
972 linkend="array-functions-table"><function>array_remove()</></link>
974 linkend="array-functions-table"><function>array_replace()</></link>
975 functions (Marco Nenciarini, Gabriele Bartolini)
982 linkend="functions-string-other"><function>concat()</></link>
984 linkend="functions-string-format"><function>format()</></link>
985 to properly expand <literal>VARIADIC</>-labeled arguments
993 linkend="functions-string-format"><function>format()</></link>
994 to handle field width and left/right alignment (Pavel Stehule)
1001 linkend="functions-formatting-table"><function>to_char()</></link>,
1003 linkend="functions-formatting-table"><function>to_date()</></link>,
1005 linkend="functions-formatting-table"><function>to_timestamp()</></link>
1006 properly handle negative century designations (<literal>CC</>)
1011 Previously the behavior was either wrong or inconsistent
1012 with positive/<acronym>AD</> handling, e.g. format mask
1013 <quote>IYYY-IW-DY</>.
1020 linkend="functions-formatting-table"><function>to_date()</></link>
1022 linkend="functions-formatting-table"><function>to_timestamp()</></link>
1023 return proper results when mixing <acronym>ISO</> and Gregorian
1024 week/day designations (Bruce Momjian)
1031 linkend="functions-info-catalog-table"><function>pg_get_viewdef()</></link>
1032 to start a new line by default after each <link
1033 linkend="SQL-SELECT"><command>SELECT</></link> target list entry and
1034 <literal>FROM</> entry (Marko Tiikkaja)
1038 This reduces line length in view printing, for instance in <link
1039 linkend="APP-PGDUMP"><application>pg_dump</></link> output.
1045 Fix <function>map_sql_value_to_xml_value()</> to print values of
1046 domain types the same way their base type would be printed
1051 There are special formatting rules for certain built-in types such as
1052 <type>boolean</>; these rules now also apply to domains over these
1059 Force cached plans to be replanned if the <link
1060 linkend="guc-search-path"><varname>search_path</></link> changes
1065 Previously cached plans already generated in the current session
1066 ignored <varname>search_path</> changes.
1075 <title>Server-Side Languages</title>
1081 Allow <link linkend="spi-spi-execute"><acronym>SPI</></link>
1082 functions to access the number of rows processed by
1083 <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1090 <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
1096 Allow PL/pgSQL to use <literal>RETURN</> with a composite-type
1097 expression (Asif Rehman)
1101 Previously, in a function returning a composite type,
1102 <literal>RETURN</> could only reference a variable of that type.
1108 Allow PL/pgSQL to access the number of rows processed by
1109 <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1113 The command is <link
1114 linkend="plpgsql-statements-diagnostics"><command>GET DIAGNOSTICS
1115 x = ROW_COUNT</></link>.
1121 Allow greater flexibility in where keywords can be used in PL/pgSQL (Tom Lane)
1130 <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
1136 Add PL/Python result object string handler (Peter Eisentraut)
1140 This allows <literal>plpy.debug(rv)</literal> to output something reasonable.
1146 Make PL/Python convert OID values to a proper Python numeric type
1153 Handle <link linkend="spi"><acronym>SPI</></link> errors raised
1154 explicitly (with PL/Python's <literal>RAISE</>) the same as
1155 internal <acronym>SPI</> errors (Oskari Saarenmaa and Jan Urbanski)
1166 <title>Client Applications</title>
1172 Add command-line utility <link
1173 linkend="app-pg-isready"><application>pg_isready</></link> to
1174 check if the server is ready to accept connections (Phil Sorber)
1180 Support multiple <option>--table</> arguments for <link
1181 linkend="APP-PGRESTORE"><application>pg_restore</></link>,
1182 <link linkend="APP-CLUSTERDB"><application>clusterdb</></link>,
1183 <link linkend="APP-REINDEXDB"><application>reindexdb</></link>,
1184 and <link linkend="APP-VACUUMDB"><application>vacuumdb</></link>
1189 This is similar to the <link
1190 linkend="APP-PGDUMP"><application>pg_dump</></link> <option>--table</>
1197 Add <option>--dbname</> option to <link
1198 linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, <link
1199 linkend="app-pgbasebackup"><application>pg_basebackup</></link>, and
1201 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
1202 to specify the connection string (Amit Kapila)
1208 Add libpq function <link
1209 linkend="libpq-pqconninfo"><function>PQconninfo()</></link>
1210 to return connection information (Zoltán
1211 Böszörményi, Magnus Hagander)
1218 <title><link linkend="APP-PSQL"><application>psql</></link></title>
1224 Adjust function cost settings so <application>psql</> tab
1225 completion and pattern searching is more efficient (Tom Lane)
1231 Improve <application>psql</> tab completion coverage (Jeff Janes,
1238 Allow the <application>psql</> <option>--single-transaction</> mode to work when
1239 reading from standard input (Fabien Coelho, Robert Haas)
1243 Previously this option only worked when reading from a file.
1249 Remove <application>psql</> warning when connecting to an older
1250 server (Peter Eisentraut)
1254 The warning when connecting to a newer server was retained.
1261 <title><link linkend="R2-APP-PSQL-4">Backslash Commands</link></title>
1267 Add <application>psql</> <command>\watch</> command to repeatedly
1268 execute commands (Will Leinweber)
1274 Add <application>psql</> command <command>\gset</> to store query
1275 results in <application>psql</> variables (Pavel Stehule)
1281 Add <acronym>SSL</> information to <application>psql</>'s
1282 <command>\conninfo</> command (Alastair Turner)
1288 Add <quote>Security</> label to <application>psql</> <command>\df+</>
1295 Allow <application>psql</> <command>\l</> to accept a database
1296 name pattern (Peter Eisentraut)
1302 In <application>psql</>, do not allow <command>\connect</> to
1303 use defaults if there is no active connection (Bruce Momjian)
1307 This might be the case if the server had crashed.
1313 Properly reset state if the SQL command executed with
1314 <application>psql</>'s <quote>\g file</> fails (Tom Lane)
1318 Previously, the output from subsequent SQL commands would unexpectedly
1319 continue to go to the same file.
1328 <title>Output</title>
1334 Add a <literal>latex-longtable</> output format to
1335 <application>psql</> (Bruce Momjian)
1339 This format allows tables to span multiple pages.
1345 Add a <literal>border=3</> output mode to the <application>psql</>
1346 <literal>latex</> format (Bruce Momjian)
1352 In <application>psql</> tuples-only and expanded modes, no longer
1353 output <quote>(No rows)</> (Peter Eisentraut)
1359 In <application>psql</>, no longer print an empty line for
1360 unaligned, expanded output for zero rows (Peter Eisentraut)
1371 <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
1377 Add <application>pg_dump</> <option>--jobs</> option to dump tables in
1378 parallel (Joachim Wieland)
1384 Have <application>pg_dump</> output functions in a more predictable
1385 order (Joel Jacobson)
1391 Fix tar files emitted by <application>pg_dump</> and <link
1392 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
1393 to be <acronym>POSIX</> conformant (Brian Weaver, Tom Lane)
1399 Add <option>--dbname</> option to <application>pg_dump</>, for
1400 consistency with other client commands (Heikki Linnakangas)
1404 The database name could already be supplied last without a flag.
1413 <title><link linkend="APP-INITDB"><application>initdb</></link></title>
1419 Have initdb fsync the newly created data directory (Jeff Davis)
1423 This can be disabled by using <option>--nosync</>.
1429 Add initdb <option>--sync-only</> option to sync the data directory to durable
1430 storage (Bruce Momjian)
1434 This is used by <link
1435 linkend="pgupgrade"><application>pg_upgrade</></link>.
1441 Have initdb issue a warning about placing the data directory at the
1442 top of a file system mount point (Bruce Momjian)
1453 <title>Source Code</title>
1459 Add an embedded list interface (Andres Freund)
1465 Add infrastructure to better support plug-in <link
1466 linkend="bgworker">background worker processes</link>
1467 (Álvaro Herrera)
1473 Create a centralized timeout <acronym>API</> (Zoltán
1474 Böszörményi)
1480 Create libpgcommon and move <function>pg_malloc()</> and other
1481 functions there (Álvaro Herrera, Andres Freund)
1485 This allows libpgport to be used solely for porting code.
1491 Standardize on naming of client-side memory allocation functions (Tom Lane)
1497 Add compiler designations to indicate some <function>ereport()</>
1498 and <function>elog()</> calls do not return (Peter Eisentraut,
1499 Andres Freund, Tom Lane, Heikki Linnakangas)
1505 Allow options to be passed to the regression
1506 test output comparison utility via <link
1507 linkend="regress-evaluation"><envar>PG_REGRESS_DIFF_OPTS</></link>
1514 Add isolation tests for <link
1515 linkend="SQL-CREATEINDEX"><command>CREATE INDEX
1516 CONCURRENTLY</></link> (Abhijit Menon-Sen)
1522 Remove typedefs for <type>int2</>/<type>int4</> as they are better
1523 represented as <type>int16</>/<type>int32</> (Peter Eisentraut)
1529 Fix <link linkend="install">install-strip</link> on Mac <productname>OS
1530 X</> (Peter Eisentraut)
1536 Remove <link linkend="configure">configure</link> flag
1537 <option>--disable-shared</>, as it is no longer used (Bruce
1544 Rewrite pgindent in <application>Perl</> (Andrew Dunstan)
1550 Add Emacs macro to match <productname>PostgreSQL</> perltidy
1551 formatting (Peter Eisentraut)
1557 Run tool to check the keyword list when the backend grammar is
1564 Centralize <application>flex</> and <application>bison</>
1565 <application>make</> rules (Peter Eisentraut)
1569 This is useful for <application>pgxs</> authors.
1575 Support <function>Assert()</> in client-side code (Andrew Dunstan)
1581 Change many internal backend functions to return <type>OID</>s
1582 rather than void (Dimitri Fontaine)
1586 This is useful for event triggers.
1592 Invent pre-commit/pre-prepare/pre-subcommit events for transaction
1593 callbacks (Tom Lane)
1597 Loadable modules that use transaction callbacks might need modification
1598 to handle these new event types.
1605 linkend="functions-info-catalog-table"><function>pg_identify_object()</></link>
1606 to dump an object in machine-readable format (Álvaro
1613 Add post-<command>ALTER</>-object server hooks (KaiGai Kohei)
1619 Implement a generic binary heap and use it for Merge-Append
1620 operations (Abhijit Menon-Sen)
1626 Improve ability to detect official timezone abbreviation changes
1633 Add <application>pkg-config</> support <application>libpq</>
1634 and <application>ecpg</> libraries (Peter Eisentraut)
1640 Remove <filename>src/tool/backend</>, now that the content is on
1641 the <productname>PostgreSQL</> wiki (Bruce Momjian)
1647 Split out <link linkend="wal"><acronym>WAL</></link> reading as
1648 an independent facility (Heikki Linnakangas, Andres Freund)
1654 Use a 64-bit integer to represent <link
1655 linkend="wal"><acronym>WAL</></link> positions
1656 (<structname>XLogRecPtr</>) instead of two 32-bit integers
1657 (Heikki Linnakangas)
1661 Generally, tools that need to read the <acronym>WAL</> format
1662 will need to be adjusted.
1668 Allow <link linkend="plpython">PL/Python</link> to support
1669 platform-specific include directories (Peter Eisentraut)
1675 Allow <link linkend="plpython">PL/Python</link> on <productname>OS
1676 X</> to build against custom versions of <application>Python</>
1686 <title>Additional Modules</title>
1692 Add a <productname>Postgres</> <link linkend="postgres-fdw">foreign
1693 data wrapper</link> contrib module (Shigeru Hanada)
1697 This foreign data wrapper supports writes.
1703 Add <link linkend="pgxlogdump"><application>pg_xlogdump</></link>
1704 contrib program (Andres Freund)
1710 Add support for indexing of regular-expression searches in
1711 <link linkend="pgtrgm"><productname>pg_trgm</></link>
1712 (Alexander Korotkov)
1718 Improve <link linkend="pgtrgm"><productname>pg_trgm</></link>
1719 handling of multibyte characters (Tom Lane)
1725 Add <link linkend="pgstattuple">pgstattuple function</link> to report the
1726 size of the <type>GIN</> pending index insertion list (Fujii Masao)
1732 Have <link linkend="oid2name"><application>oid2name</></link>,
1733 <link linkend="pgbench"><application>pgbench</></link>, and
1734 <link linkend="vacuumlo"><application>vacuumlo</></link> set
1735 <varname>fallback_application_name</> (Amit Kapila)
1741 Improve output of <link
1742 linkend="pgtesttiming"><application>pg_test_timing</></link>
1749 Improve output of <link
1750 linkend="pgtestfsync"><application>pg_test_fsync</></link>
1757 Improve <link linkend="dblink">dblink</link> option validator
1769 <title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>
1775 Allow <application>pg_upgrade</> <option>--jobs</> to do
1776 parallelism (Bruce Momjian)
1780 This allows parallel schema dump/restore of databases, as well as
1781 parallel copy/link of data files per tablespace.
1787 Have <application>pg_upgrade</> create Unix-domain sockets in
1788 the current directory (Bruce Momjian, Tom Lane)
1792 This reduces the possibility that someone will accidentally connect
1799 Have <application>pg_upgrade</> <option>--check</> mode properly
1800 detect the location of non-default socket directories (Bruce
1807 Improve performance of <application>pg_upgrade</> for databases
1808 with many tables (Bruce Momjian)
1814 Increase <application>pg_upgrade</> logging content by showing
1815 executed command (Álvaro Herrera)
1821 Improve <application>pg_upgrade</>'s status display during
1822 copy/link (Bruce Momjian)
1831 <title><link linkend="pgbench"><application>pgbench</></link></title>
1837 Add <option>--foreign-keys</> option to <application>pgbench</>
1842 This adds foreign key constraints to the standard tables created by
1843 <application>pgbench</>, for use in foreign key performance testing.
1849 Allow <application>pgbench</> to aggregate performance statistics
1850 and produce output every <option>--aggregate-interval</>
1851 seconds (Tomas Vondra)
1857 Add <application>pgbench</> <option>--sampling-rate</> option
1858 to control the percentage of transactions logged (Tomas Vondra)
1864 Reduce and improve the status message output of
1865 <application>pgbench</>'s initialization mode (Robert Haas,
1872 Add <application>pgbench</> <option>-q</> mode to print one output
1873 line every five seconds (Tomas Vondra)
1879 Output <application>pgbench</> elapsed and estimated remaining
1880 time during initialization (Tomas Vondra)
1886 Allow <application>pgbench</> to use a larger scale factor
1898 <title>Documentation</title>
1904 Allow <productname>EPUB</>-format documentation to be created
1911 Update <productname>FreeBSD</> kernel configuration documentation
1918 Improve <link linkend="tutorial-window"><literal>WINDOW</>
1919 function</link> documentation (Bruce Momjian, Tom Lane)
1925 Add <link linkend="docguide">instructions</link> for setting
1926 up the documentation tool chain on Mac <productname>OS X</>
1934 linkend="guc-commit-delay"><varname>commit_delay</></link>
1935 documentation (Peter Geoghegan)