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-08-16</simpara>
13 <title>Overview</title>
16 Major enhancements include:
19 <!-- This list duplicates items below, but without authors or details-->
25 Add <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
32 Make simple views <link
33 linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
39 Many <type>JSON</> improvements, including the addition of <link
40 linkend="functions-json">operators and functions</link> to extract
41 values from <type>JSON</> data strings
47 Implement <acronym>SQL</>-standard <link
48 linkend="queries-lateral"><literal>LATERAL</></link> option for
49 <literal>FROM</>-clause subqueries and function calls
55 Allow <link linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data
56 wrappers</link> to support writes (inserts/updates/deletes) on foreign
63 Add a <productname>Postgres</> <link linkend="postgres-fdw">foreign
64 data wrapper</link> contrib module
70 Add support for <link linkend="event-triggers">event triggers</link>
76 Add optional ability to <link
77 linkend="app-initdb-data-checksums">checksum</link> data pages and
84 Allow a streaming replication standby to <link
85 linkend="protocol-replication">follow a timeline switch</link>,
92 Dramatically reduce System V <link linkend="sysvipc">shared
93 memory</link> requirements
99 Prevent non-key-field row updates from locking foreign key rows
106 The above items are explained in more detail in the sections below.
113 <title>Migration to Version 9.3</title>
116 A dump/restore using <link
117 linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, or use
118 of <link linkend="pgupgrade"><application>pg_upgrade</></link>, is
119 required for those wishing to migrate data from any previous release.
123 Version 9.3 contains a number of changes that may affect compatibility
124 with previous releases. Observe the following incompatibilities:
128 <title>Server Settings</title>
134 Rename <varname>replication_timeout</> to <link
135 linkend="guc-wal-sender-timeout"><varname>wal_sender_timeout</></link>
140 This setting controls the <link
141 linkend="wal"><acronym>WAL</></link> sender timeout.
147 Require superuser privileges to set <link
148 linkend="guc-commit-delay"><varname>commit_delay</></link>
149 because it can now potentially delay other sessions (Simon Riggs)
155 Allow in-memory sorts to use their full memory allocation (Jeff Janes)
159 Users who have set <link
160 linkend="guc-work-mem"><varname>work_mem</></link> based on the
161 previous behavior should revisit that setting.
176 Throw an error if expiring tuple is again updated or deleted (Kevin Grittner)
183 Change <link linkend="SQL-CREATETABLE"><literal>ON UPDATE
184 SET NULL/SET DEFAULT</></link> foreign key actions to affect
185 all referenced columns, not just those referenced in the
186 <command>UPDATE</> (Tom Lane)
190 Previously only columns referenced in the <command>UPDATE</> were
191 set to null or <literal>DEFAULT</>.
197 Internally store default foreign key matches (non-<literal>FULL</>,
198 non-<literal>PARTIAL</>) as <quote>simple</> (Tom Lane)
202 These were previously stored as "<unspecified>".
203 This changes the value stored in system column <link
204 linkend="catalog-pg-constraint"><structname>pg_constraint.confmatchtype</></link>.
210 Store <link linkend="wal"><acronym>WAL</></link> in a continuous
211 stream, rather than skipping the last 16MB segment every 4GB
216 Previously, <acronym>WAL</> files with names ending in <literal>FF</>
217 were not used. If you have <acronym>WAL</> backup or restore scripts
218 that took that skipping into account, they will need to be adjusted.
225 linkend="functions-formatting-table"><function>to_char()</></link>
226 to properly handle <literal>D</> (locale-specific decimal point) and
227 <literal>FM</> (fill mode) specifications in locales where a
228 period is a group separator and not a decimal point (Tom Lane)
232 Previously, a period group separator would be misinterpreted as
233 a decimal point in such locales.
239 Fix <literal>STRICT</> non-set-returning functions that take
240 set-returning functions as arguments to properly return null
245 Previously, rows with null values were suppressed.
256 <title>Changes</title>
259 Below you will find a detailed account of the changes between
260 <productname>PostgreSQL</productname> 9.3 and the previous major
265 <title>Server</title>
268 <title>Locking</title>
274 Prevent non-key-field row updates from locking foreign key rows
275 (Álvaro Herrera, Noah Misch, Andres Freund, Alexander
276 Shulgin, Marti Raudsepp)
280 This improves concurrency and reduces the probability of deadlocks.
281 <command>UPDATE</>s on non-key columns use the new <command>SELECT
282 FOR NO KEY UPDATE</> lock type, and foreign key checks use the
283 new <command>SELECT FOR KEY SHARE</> lock mode.
289 Add configuration variable <link
290 linkend="guc-lock-timeout"><varname>lock_timeout</></link> to limit
291 lock wait duration (Zoltán Böszörményi)
297 Add cache of local locks (Jeff Janes)
301 This speeds lock release at statement completion in
302 transactions that hold many locks; it is particularly useful
303 for <application>pg_dump</> and the restoration of such dumps.
312 <title>Indexes</title>
318 Add <link linkend="rangetypes-indexing"><type>SP-GiST</></link>
319 support for range data types (Alexander Korotkov)
325 Allow unlogged <link linkend="SPGiST"><type>GiST</></link> indexes
332 Improve concurrency of hash indexes (Robert Haas)
341 <title>Optimizer</title>
347 Collect and use histograms for <link linkend="rangetypes">range
348 types</link> (Alexander Korotkov)
354 Reduce optimizer overhead by discarding plans with unneeded cheaper
355 startup costs (Tom Lane)
361 Improve optimizer cost estimation for index access (Tom Lane)
370 <title>General Performance</title>
376 Add <link linkend="SQL-COPY"><command>COPY FREEZE</></link>
377 option to avoid the overhead of marking tuples as committed later
378 (Simon Riggs, Jeff Davis)
384 Improve performance of <link
385 linkend="datatype-numeric"><type>NUMERIC</></link> calculations
392 Improve grouping of sessions waiting for <link
393 linkend="guc-commit-delay"><varname>commit_delay</></link>
398 This improves the usefulness and behavior of
399 <varname>commit_delay</>.
405 Improve performance for transactions creating, rebuilding, or
406 dropping many relations (Jeff Janes, Tomas Vondra)
412 Improve performance of the <link
413 linkend="SQL-CREATETABLE"><command>CREATE TEMPORARY TABLE ... ON
414 COMMIT DELETE ROWS</></link> clause by only issuing delete if
415 the temporary table was accessed (Heikki Linnakangas)
421 Have vacuum recheck visibility after it has removed expired tuples
426 This increases the chance of a page being marked as all-visible.
433 linkend="guc-stats-temp-directory"><filename>pg_stat_tmp</></link>
434 statistics file into per-database and global files (Tomas Vondra)
438 This reduces the I/O overhead for statistics tracking.
447 <title>Monitoring</title>
453 Add optional ability to <link
454 linkend="app-initdb-data-checksums">checksum</link> data pages and
455 report corruption (Simon Riggs, Jeff Davis, Greg Smith, Ants Aasma)
459 The checksum option can be set during <link
460 linkend="APP-INITDB">initdb</link>.
467 linkend="functions-admin-signal-table"><function>pg_terminate_backend()</></link>
468 to terminate other backends with the same role (Dan Farina)
472 Previously, only superusers could terminate other sessions.
479 linkend="runtime-config-statistics-collector">statistics
480 collector</link> to operate properly in cases where the system
481 clock goes backwards (Tom Lane)
485 Previously statistics collection would stop until the time again
486 reached the previously-stored latest time.
495 <title>Authentication</title>
501 Improve <link linkend="auth-ldap"><acronym>LDAP</></link> error
502 reporting and documentation (Peter Eisentraut)
508 Add support for <acronym>LDAP</> authentication to be specified
509 in <acronym>URL</> format (Peter Eisentraut)
516 linkend="guc-ssl-ciphers"><varname>ssl_ciphers</></link> parameter
517 to start with <literal>DEFAULT</>, rather than <literal>ALL</>,
518 then remove insecure ciphers (Magnus Hagander)
522 It is assumed <literal>DEFAULT</> is more appropriate cipher set.
529 linkend="auth-username-maps"><filename>pg_ident.conf</></link>
530 once, not during each connection (Amit Kapila)
534 This is similar to how <link
535 linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></link>
545 <title>Server Settings</title>
551 Dramatically reduce System V <link linkend="sysvipc">shared
552 memory</link> requirements (Robert Haas)
556 Instead, on Unix-like systems, <function>mmap()</> is used for
557 shared memory. For most users, this will eliminate the need to
558 adjust kernel parameters for shared memory.
564 Allow the postmaster to listen on multiple Unix-domain sockets
569 The configuration parameter
570 <varname>unix_socket_directory</> is replaced by <link
571 linkend="guc-unix-socket-directories"><varname>unix_socket_directories</></link>,
572 which accepts a list of directories.
578 Allow a directory of configuration files to be processed (Magnus
579 Hagander, Greg Smith, Selena Deckelmann)
583 Such a directory is specified with <link
584 linkend="config-includes"><varname>include_dir</></link> in the server
591 Increase the maximum <link
592 linkend="APP-INITDB">initdb</link>-configured value for <link
593 linkend="guc-shared-buffers"><varname>shared_buffers</></link>
594 to 128MB (Robert Haas)
598 This is the maximum value that initdb will attempt to set in <link
599 linkend="config-setting-configuration-file"><filename>postgresql.conf</></link>;
600 the previous maximum was 32MB.
606 Remove the <link linkend="guc-external-pid-file">external
607 <acronym>PID</> file</link> on postmaster exit (Peter Eisentraut)
618 <title>Replication and Recovery</title>
624 Allow a streaming replication standby to <link
625 linkend="protocol-replication">follow a timeline switch</link>
630 This allows streaming standbys to feed from newly-promoted slaves.
631 Previously slaves required access to a <acronym>WAL</> archive directory to
638 Add <acronym>SQL</> functions <link
639 linkend="functions-admin-backup"><function>pg_is_in_backup()</></link>
641 linkend="functions-admin-backup"><function>pg_backup_start_time()</></link>
646 These functions report the status of base backups.
652 Improve performance of streaming log shipping with <link
653 linkend="guc-synchronous-commit"><varname>synchronous_commit</></link>
654 disabled (Andres Freund)
660 Allow much faster promotion of a streaming standby to primary (Simon
661 Riggs, Kyotaro Horiguchi)
667 Add the last checkpoint's redo location to <link
668 linkend="APP-PGCONTROLDATA"><application>pg_controldata</></link>'s
673 This information is useful for determining the <acronym>WAL</>
674 files needed for restore.
680 Allow tools like <link
681 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
682 to run on computers with different architectures (Heikki
687 WAL files can still only be replayed on servers with the same
688 architecture as the primary; but they can now be transmitted to and
689 stored on machines of any architecture, since the
690 streaming replication protocol is now machine-independent.
697 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
698 <option>--write-recovery-conf</> output a
699 minimal <filename>recovery.conf</> (Zoltán
700 Böszörményi, Magnus Hagander)
704 This simplifies setting up a standby server.
711 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
713 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
714 <option>--xlog-method</> to handle streaming timeline switches
722 linkend="guc-wal-receiver-timeout"><varname>wal_receiver_timeout</></link>
723 parameter to control the <acronym>WAL</> receiver timeout
728 This allows more rapid detection of connection failure.
735 <title><link linkend="wal">Write-Ahead Log</link>
736 (<acronym>WAL</>)</title>
742 Change the <acronym>WAL</> record format to allow splitting the record header
743 across pages (Heikki Linnakangas)
747 The new format is slightly more compact, and is more efficient to
759 <title>Queries</title>
765 Implement <acronym>SQL</>-standard <link
766 linkend="queries-lateral"><literal>LATERAL</></link> option for
767 <literal>FROM</>-clause subqueries and function calls (Tom Lane)
771 This feature allows subqueries and functions in <literal>FROM</> to
772 reference columns from other tables in the <literal>FROM</>
773 clause. The <literal>LATERAL</> keyword is optional for functions.
779 Add support for piping <link
780 linkend="SQL-COPY"><command>COPY</></link> and <link
781 linkend="APP-PSQL"><application>psql</></link> <command>\copy</>
782 to/from an external program (Etsuro Fujita)
791 <title>Object Manipulation</title>
797 Add support for <link linkend="event-triggers">event triggers</link>
798 (Dimitri Fontaine, Robert Haas, Álvaro Herrera)
802 This allows server-side functions written in event-enabled
803 languages, e.g. C, PL/pgSQL, to be called when DDL commands
810 Allow <link linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data
811 wrappers</link> to support writes (inserts/updates/deletes) on foreign
812 tables (KaiGai Kohei)
818 Allow a multirow <link
819 linkend="SQL-VALUES"><literal>VALUES</></link> clause in a rule
820 to reference <literal>OLD</>/<literal>NEW</> (Tom Lane)
826 Add <link linkend="SQL-CREATESCHEMA"><command>CREATE SCHEMA ... IF
827 NOT EXISTS</></link> clause (Fabrízio de Royes Mello)
833 Have <link linkend="SQL-REASSIGN-OWNED"><command>REASSIGN
834 OWNED</></link> also change ownership of shared objects
835 (Álvaro Herrera)
842 <title><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link></title>
848 Suppress messages about implicit index and sequence creation
853 These messages now appear at <literal>DEBUG1</> verbosity, so that
854 they will not be shown by default.
860 Allow <link linkend="SQL-DROPTABLE"><command>DROP TABLE IF
861 EXISTS</></link> to succeed when a non-existent schema is specified
862 in the table name (Bruce Momjian)
866 Previously, it threw an error if the schema did not exist.
875 <title>Constraints</title>
881 Provide clients with <link
882 linkend="libpq-pqresulterrorfield">constraint violation details</link>
883 as separate fields (Pavel Stehule)
887 This allows clients to retrieve table, column, data type, or constraint
888 name error details. Previously such information had to be extracted from
889 error strings. Client library support is required to access these
899 <title><command>ALTER</></title>
905 Support <literal>IF NOT EXISTS</> option in <link
906 linkend="SQL-ALTERTYPE"><command>ALTER TYPE ... ADD VALUE</></link>
911 This is useful for conditionally adding values to enumerated types.
917 Add <link linkend="SQL-ALTERROLE"><command>ALTER ROLE ALL
918 SET</></link> to add settings to all users (Peter Eisentraut)
922 This allows settings to apply to all users in all databases. <link
923 linkend="SQL-ALTERDATABASE"><command>ALTER DATABASE SET</></link>
924 already allowed addition of settings for all users in a single
925 database. <filename>postgresql.conf</> has a similar effect.
931 Add support for <link linkend="SQL-ALTERRULE"><command>ALTER RULE
932 ... RENAME</></link> (Ali Dar)
941 <title><link linkend="rules-views"><command>VIEWs</></link></title>
947 Add <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
948 views</link> (Kevin Grittner)
952 Unlike ordinary views, where the base tables are read on every access,
953 materialized views create physical tables at creation or refresh time.
954 Access to the materialized view then reads from its physical
955 table. There is not yet any facility for incrementally refreshing
956 materialized views or auto-accessing them via base table access.
962 Make simple views <link
963 linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
968 Simple views that reference some or all columns from a
969 single base table are now updatable by default. More
970 complex views can be made updatable using <link
971 linkend="SQL-CREATETRIGGER"><literal>INSTEAD OF</></link> triggers
972 or <link linkend="SQL-CREATERULE"><literal>INSTEAD</></link> rules.
978 Improve view/rule printing code to handle cases where referenced
979 tables are renamed, or columns are renamed, added, or dropped
984 Table and column renamings can produce cases where, if we merely
985 substitute the new name into the original text of a rule or view, the
986 result is ambiguous. This patch fixes the rule-dumping code to insert
987 table and column aliases if needed to preserve the original semantics.
993 Add <link linkend="SQL-CREATEVIEW"><command>CREATE RECURSIVE
994 VIEW</></link> syntax (Peter Eisentraut)
998 Internally this is translated into <command>CREATE VIEW ... WITH
1010 <title>Data Types</title>
1016 Increase the maximum length of <link linkend="lo-open">large
1017 objects</link> from 2GB to 4TB (Nozomi Anzai, Yugo Nagata)
1021 This change includes new libpq and server-side 64-bit-capable
1022 large object access functions.
1028 Allow text <link linkend="datatype-timezones">timezone
1029 designations</link>, e.g. <quote>America/Chicago</> when using
1030 the <acronym>ISO</> <quote>T</> <type>timestamptz</type> format (Bruce Momjian)
1037 <title><link linkend="datatype-json"><type>JSON</></link></title>
1043 Add <link linkend="functions-json">operators and functions</link>
1044 to extract values from <type>JSON</> data strings (Andrew Dunstan)
1050 Allow <type>JSON</> data strings to be <link
1051 linkend="functions-json-table">converted into records</link>
1058 Add <link linkend="functions-json-table">functions</link>
1059 to convert values, records, and hstore data to <type>JSON</>
1072 <title>Functions</title>
1079 linkend="array-functions-table"><function>array_remove()</></link>
1081 linkend="array-functions-table"><function>array_replace()</></link>
1082 functions (Marco Nenciarini, Gabriele Bartolini)
1089 linkend="functions-string-other"><function>concat()</></link>
1091 linkend="functions-string-format"><function>format()</></link>
1092 to properly expand <literal>VARIADIC</>-labeled arguments
1100 linkend="functions-string-format"><function>format()</></link>
1101 to handle field width and left/right alignment (Pavel Stehule)
1108 linkend="functions-formatting-table"><function>to_char()</></link>,
1110 linkend="functions-formatting-table"><function>to_date()</></link>,
1112 linkend="functions-formatting-table"><function>to_timestamp()</></link>
1113 properly handle negative century designations (<literal>CC</>)
1118 Previously the behavior was either wrong or inconsistent
1119 with positive/<acronym>AD</> handling, e.g. format mask
1120 <quote>IYYY-IW-DY</>.
1127 linkend="functions-formatting-table"><function>to_date()</></link>
1129 linkend="functions-formatting-table"><function>to_timestamp()</></link>
1130 return proper results when mixing <acronym>ISO</> and Gregorian
1131 week/day designations (Bruce Momjian)
1138 linkend="functions-info-catalog-table"><function>pg_get_viewdef()</></link>
1139 to start a new line by default after each <link
1140 linkend="SQL-SELECT"><command>SELECT</></link> target list entry and
1141 <literal>FROM</> entry (Marko Tiikkaja)
1145 This reduces line length in view printing, for instance in <link
1146 linkend="APP-PGDUMP"><application>pg_dump</></link> output.
1152 Fix <function>map_sql_value_to_xml_value()</> to print values of
1153 domain types the same way their base type would be printed
1158 There are special formatting rules for certain built-in types such as
1159 <type>boolean</>; these rules now also apply to domains over these
1166 Force cached plans to be replanned if the <link
1167 linkend="guc-search-path"><varname>search_path</></link> changes
1172 Previously cached plans already generated in the current session
1173 ignored <varname>search_path</> changes.
1182 <title>Server-Side Languages</title>
1188 Allow <link linkend="spi-spi-execute"><acronym>SPI</></link>
1189 functions to access the number of rows processed by
1190 <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1197 <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
1203 Allow PL/pgSQL to use <literal>RETURN</> with a composite-type
1204 expression (Asif Rehman)
1208 Previously, in a function returning a composite type,
1209 <literal>RETURN</> could only reference a variable of that type.
1215 Allow PL/pgSQL to access <link
1216 linkend="libpq-pqresulterrorfield">constraint violation
1217 details</link> as separate fields (Pavel Stehule)
1223 Allow PL/pgSQL to access the number of rows processed by
1224 <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1228 The command is <link
1229 linkend="plpgsql-statements-diagnostics"><command>GET DIAGNOSTICS
1230 x = ROW_COUNT</></link>.
1236 Allow greater flexibility in where keywords can be used in PL/pgSQL (Tom Lane)
1245 <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
1251 Add PL/Python result object string handler (Peter Eisentraut)
1255 This allows <literal>plpy.debug(rv)</literal> to output something reasonable.
1261 Make PL/Python convert OID values to a proper Python numeric type
1268 Handle <link linkend="spi"><acronym>SPI</></link> errors raised
1269 explicitly (with PL/Python's <literal>RAISE</>) the same as
1270 internal <acronym>SPI</> errors (Oskari Saarenmaa and Jan Urbanski)
1281 <title>Client Applications</title>
1287 Add command-line utility <link
1288 linkend="app-pg-isready"><application>pg_isready</></link> to
1289 check if the server is ready to accept connections (Phil Sorber)
1295 Support multiple <option>--table</> arguments for <link
1296 linkend="APP-PGRESTORE"><application>pg_restore</></link>,
1297 <link linkend="APP-CLUSTERDB"><application>clusterdb</></link>,
1298 <link linkend="APP-REINDEXDB"><application>reindexdb</></link>,
1299 and <link linkend="APP-VACUUMDB"><application>vacuumdb</></link>
1304 This is similar to the <link
1305 linkend="APP-PGDUMP"><application>pg_dump</></link> <option>--table</>
1312 Add <option>--dbname</> option to <link
1313 linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, <link
1314 linkend="app-pgbasebackup"><application>pg_basebackup</></link>, and
1316 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
1317 to specify the connection string (Amit Kapila)
1323 Add libpq function <link
1324 linkend="libpq-pqconninfo"><function>PQconninfo()</></link>
1325 to return connection information (Zoltán
1326 Böszörményi, Magnus Hagander)
1333 <title><link linkend="APP-PSQL"><application>psql</></link></title>
1339 Adjust function cost settings so <application>psql</> tab
1340 completion and pattern searching is more efficient (Tom Lane)
1346 Improve <application>psql</> tab completion coverage (Jeff Janes,
1353 Allow the <application>psql</> <option>--single-transaction</>
1354 mode to work when reading from standard input (Fabien Coelho,
1359 Previously this option only worked when reading from a file.
1365 Remove <application>psql</> warning when connecting to an older
1366 server (Peter Eisentraut)
1370 The warning when connecting to a newer server was retained.
1377 <title><link linkend="R2-APP-PSQL-4">Backslash Commands</link></title>
1383 Add <application>psql</> <command>\watch</> command to repeatedly
1384 execute commands (Will Leinweber)
1390 Add <application>psql</> command <command>\gset</> to store query
1391 results in <application>psql</> variables (Pavel Stehule)
1397 Add <acronym>SSL</> information to <application>psql</>'s
1398 <command>\conninfo</> command (Alastair Turner)
1404 Add <quote>Security</> label to <application>psql</> <command>\df+</>
1411 Allow <application>psql</> <command>\l</> to accept a database
1412 name pattern (Peter Eisentraut)
1418 In <application>psql</>, do not allow <command>\connect</> to
1419 use defaults if there is no active connection (Bruce Momjian)
1423 This might be the case if the server had crashed.
1429 Properly reset state if the SQL command executed with
1430 <application>psql</>'s <quote>\g file</> fails (Tom Lane)
1434 Previously, the output from subsequent SQL commands would unexpectedly
1435 continue to go to the same file.
1444 <title>Output</title>
1450 Add a <literal>latex-longtable</> output format to
1451 <application>psql</> (Bruce Momjian)
1455 This format allows tables to span multiple pages.
1461 Add a <literal>border=3</> output mode to the <application>psql</>
1462 <literal>latex</> format (Bruce Momjian)
1468 In <application>psql</> tuples-only and expanded modes, no longer
1469 output <quote>(No rows)</> (Peter Eisentraut)
1475 In <application>psql</>, no longer print an empty line for
1476 unaligned, expanded output for zero rows (Peter Eisentraut)
1487 <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
1493 Add <application>pg_dump</> <option>--jobs</> option to dump tables in
1494 parallel (Joachim Wieland)
1500 Have <application>pg_dump</> output functions in a more predictable
1501 order (Joel Jacobson)
1507 Fix tar files emitted by <application>pg_dump</> and <link
1508 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
1509 to be <acronym>POSIX</> conformant (Brian Weaver, Tom Lane)
1515 Add <option>--dbname</> option to <application>pg_dump</>, for
1516 consistency with other client commands (Heikki Linnakangas)
1520 The database name could already be supplied last without a flag.
1529 <title><link linkend="APP-INITDB"><application>initdb</></link></title>
1535 Have initdb fsync the newly created data directory (Jeff Davis)
1539 This can be disabled by using <option>--nosync</>.
1545 Add initdb <option>--sync-only</> option to sync the data directory to durable
1546 storage (Bruce Momjian)
1550 This is used by <link
1551 linkend="pgupgrade"><application>pg_upgrade</></link>.
1557 Have initdb issue a warning about placing the data directory at the
1558 top of a file system mount point (Bruce Momjian)
1569 <title>Source Code</title>
1575 Add an embedded list interface (Andres Freund)
1581 Add infrastructure to better support plug-in <link
1582 linkend="bgworker">background worker processes</link>
1583 (Álvaro Herrera)
1589 Create a centralized timeout <acronym>API</> (Zoltán
1590 Böszörményi)
1596 Create libpgcommon and move <function>pg_malloc()</> and other
1597 functions there (Álvaro Herrera, Andres Freund)
1601 This allows libpgport to be used solely for porting code.
1607 Standardize on naming of client-side memory allocation functions (Tom Lane)
1613 Add compiler designations to indicate some <function>ereport()</>
1614 and <function>elog()</> calls do not return (Peter Eisentraut,
1615 Andres Freund, Tom Lane, Heikki Linnakangas)
1621 Allow options to be passed to the regression
1622 test output comparison utility via <link
1623 linkend="regress-evaluation"><envar>PG_REGRESS_DIFF_OPTS</></link>
1630 Add isolation tests for <link
1631 linkend="SQL-CREATEINDEX"><command>CREATE INDEX
1632 CONCURRENTLY</></link> (Abhijit Menon-Sen)
1638 Remove typedefs for <type>int2</>/<type>int4</> as they are better
1639 represented as <type>int16</>/<type>int32</> (Peter Eisentraut)
1645 Fix <link linkend="install">install-strip</link> on Mac <productname>OS
1646 X</> (Peter Eisentraut)
1652 Remove <link linkend="configure">configure</link> flag
1653 <option>--disable-shared</>, as it is no longer used (Bruce
1660 Rewrite pgindent in <application>Perl</> (Andrew Dunstan)
1666 Add Emacs macro to match <productname>PostgreSQL</> perltidy
1667 formatting (Peter Eisentraut)
1673 Run tool to check the keyword list when the backend grammar is
1680 Centralize <application>flex</> and <application>bison</>
1681 <application>make</> rules (Peter Eisentraut)
1685 This is useful for <application>pgxs</> authors.
1691 Support <function>Assert()</> in client-side code (Andrew Dunstan)
1697 Change many internal backend functions to return <type>OID</>s
1698 rather than void (Dimitri Fontaine)
1702 This is useful for event triggers.
1708 Invent pre-commit/pre-prepare/pre-subcommit events for transaction
1709 callbacks (Tom Lane)
1713 Loadable modules that use transaction callbacks might need modification
1714 to handle these new event types.
1721 linkend="functions-info-catalog-table"><function>pg_identify_object()</></link>
1722 to dump an object in machine-readable format (Álvaro
1729 Add post-<command>ALTER</>-object server hooks (KaiGai Kohei)
1735 Implement a generic binary heap and use it for Merge-Append
1736 operations (Abhijit Menon-Sen)
1742 Improve ability to detect official timezone abbreviation changes
1749 Add <application>pkg-config</> support <application>libpq</>
1750 and <application>ecpg</> libraries (Peter Eisentraut)
1756 Remove <filename>src/tool/backend</>, now that the content is on
1757 the <productname>PostgreSQL</> wiki (Bruce Momjian)
1763 Split out <link linkend="wal"><acronym>WAL</></link> reading as
1764 an independent facility (Heikki Linnakangas, Andres Freund)
1770 Use a 64-bit integer to represent <link
1771 linkend="wal"><acronym>WAL</></link> positions
1772 (<structname>XLogRecPtr</>) instead of two 32-bit integers
1773 (Heikki Linnakangas)
1777 Generally, tools that need to read the <acronym>WAL</> format
1778 will need to be adjusted.
1784 Allow <link linkend="plpython">PL/Python</link> to support
1785 platform-specific include directories (Peter Eisentraut)
1791 Allow <link linkend="plpython">PL/Python</link> on <productname>OS
1792 X</> to build against custom versions of <application>Python</>
1802 <title>Additional Modules</title>
1808 Add a <productname>Postgres</> <link linkend="postgres-fdw">foreign
1809 data wrapper</link> contrib module (Shigeru Hanada)
1813 This foreign data wrapper supports writes.
1819 Add <link linkend="pgxlogdump"><application>pg_xlogdump</></link>
1820 contrib program (Andres Freund)
1826 Add support for indexing of regular-expression searches in
1827 <link linkend="pgtrgm"><productname>pg_trgm</></link>
1828 (Alexander Korotkov)
1834 Improve <link linkend="pgtrgm"><productname>pg_trgm</></link>
1835 handling of multibyte characters (Tom Lane)
1841 Add <link linkend="pgstattuple">pgstattuple function</link> to report the
1842 size of the <type>GIN</> pending index insertion list (Fujii Masao)
1848 Have <link linkend="oid2name"><application>oid2name</></link>,
1849 <link linkend="pgbench"><application>pgbench</></link>, and
1850 <link linkend="vacuumlo"><application>vacuumlo</></link> set
1851 <varname>fallback_application_name</> (Amit Kapila)
1857 Improve output of <link
1858 linkend="pgtesttiming"><application>pg_test_timing</></link>
1865 Improve output of <link
1866 linkend="pgtestfsync"><application>pg_test_fsync</></link>
1873 Improve <link linkend="dblink">dblink</link> option validator
1885 <title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>
1891 Allow <application>pg_upgrade</> <option>--jobs</> to do
1892 parallelism (Bruce Momjian, Andrew Dunstan)
1896 This allows parallel schema dump/restore of databases, as well as
1897 parallel copy/link of data files per tablespace.
1903 Have <application>pg_upgrade</> create Unix-domain sockets in
1904 the current directory (Bruce Momjian, Tom Lane)
1908 This reduces the possibility that someone will accidentally connect
1915 Have <application>pg_upgrade</> <option>--check</> mode properly
1916 detect the location of non-default socket directories (Bruce
1923 Improve performance of <application>pg_upgrade</> for databases
1924 with many tables (Bruce Momjian)
1930 Increase <application>pg_upgrade</> logging content by showing
1931 executed command (Álvaro Herrera)
1937 Improve <application>pg_upgrade</>'s status display during
1938 copy/link (Bruce Momjian)
1947 <title><link linkend="pgbench"><application>pgbench</></link></title>
1953 Add <option>--foreign-keys</> option to <application>pgbench</>
1958 This adds foreign key constraints to the standard tables created by
1959 <application>pgbench</>, for use in foreign key performance testing.
1965 Allow <application>pgbench</> to aggregate performance statistics
1966 and produce output every <option>--aggregate-interval</>
1967 seconds (Tomas Vondra)
1973 Add <application>pgbench</> <option>--sampling-rate</> option
1974 to control the percentage of transactions logged (Tomas Vondra)
1980 Reduce and improve the status message output of
1981 <application>pgbench</>'s initialization mode (Robert Haas,
1988 Add <application>pgbench</> <option>-q</> mode to print one output
1989 line every five seconds (Tomas Vondra)
1995 Output <application>pgbench</> elapsed and estimated remaining
1996 time during initialization (Tomas Vondra)
2002 Allow <application>pgbench</> to use a larger scale factor
2014 <title>Documentation</title>
2020 Allow <productname>EPUB</>-format documentation to be created
2027 Update <productname>FreeBSD</> kernel configuration documentation
2034 Improve <link linkend="tutorial-window"><literal>WINDOW</>
2035 function</link> documentation (Bruce Momjian, Tom Lane)
2041 Add <link linkend="docguide">instructions</link> for setting
2042 up the documentation tool chain on Mac <productname>OS X</>
2050 linkend="guc-commit-delay"><varname>commit_delay</></link>
2051 documentation (Peter Geoghegan)