1 <!-- doc/src/sgml/release-9.3.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
4 <sect1 id="release-9-3-2">
5 <title>Release 9.3.2</title>
8 <title>Release Date</title>
9 <simpara>2013-12-05</simpara>
13 This release contains a variety of fixes from 9.3.1.
14 For information about new features in the 9.3 major release, see
15 <xref linkend="release-9-3">.
19 <title>Migration to Version 9.3.2</title>
22 A dump/restore is not required for those running 9.3.X.
26 However, this release corrects a number of potential data corruption
27 issues. See the first three changelog entries below to find out whether
28 your installation has been affected and what steps you can take if so.
32 Also, if you are upgrading from a version earlier than 9.3.1,
33 see the release notes for 9.3.1.
39 <title>Changes</title>
45 Fix <command>VACUUM</>'s tests to see whether it can
46 update <structfield>relfrozenxid</> (Andres Freund)
50 In some cases <command>VACUUM</> (either manual or autovacuum) could
51 incorrectly advance a table's <structfield>relfrozenxid</> value,
52 allowing tuples to escape freezing, causing those rows to become
53 invisible once 2^31 transactions have elapsed. The probability of
54 data loss is fairly low since multiple incorrect advancements would
55 need to happen before actual loss occurs, but it's not zero. In 9.2.0
56 and later, the probability of loss is higher, and it's also possible
57 to get <quote>could not access status of transaction</> errors as a
58 consequence of this bug. Users upgrading from releases 9.0.4 or 8.4.8
59 or earlier are not affected, but all later versions contain the bug.
63 The issue can be ameliorated by, after upgrading, vacuuming all tables
64 in all databases while having <link
65 linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link>
66 set to zero. This will fix any latent corruption but will not be able
67 to fix all pre-existing data errors. However, an installation can be
68 presumed safe after performing this vacuuming if it has executed fewer
69 than 2^31 update transactions in its lifetime (check this with
70 <literal>SELECT txid_current() < 2^31</>).
76 Fix multiple bugs in MultiXactId freezing (Andres Freund,
77 Álvaro Herrera)
81 These bugs could lead to <quote>could not access status of
82 transaction</> errors, or to duplicate or vanishing rows.
83 Users upgrading from releases prior to 9.3.0 are not affected.
87 The issue can be ameliorated by, after upgrading, vacuuming all tables
88 in all databases while having <link
89 linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link>
90 set to zero. This will fix latent corruption but will not be able to
91 fix all pre-existing data errors.
95 As a separate issue, these bugs can also cause standby servers to get
96 out of sync with the primary, thus exhibiting data errors that are not
97 in the primary. Therefore, it's recommended that 9.3.0 and 9.3.1
98 standby servers be re-cloned from the primary (e.g., with a new base
99 backup) after upgrading.
105 Fix initialization of <filename>pg_clog</> and <filename>pg_subtrans</>
106 during hot standby startup (Andres Freund, Heikki Linnakangas)
110 This bug can cause data loss on standby servers at the moment they
111 start to accept hot-standby queries, by marking committed transactions
112 as uncommitted. The likelihood of such corruption is small unless, at
113 the time of standby startup, the primary server has executed many
114 updating transactions since its last checkpoint. Symptoms include
115 missing rows, rows that should have been deleted being still visible,
116 and obsolete versions of updated rows being still visible alongside
117 their newer versions.
121 This bug was introduced in versions 9.3.0, 9.2.5, 9.1.10, and 9.0.14.
122 Standby servers that have only been running earlier releases are not
123 at risk. It's recommended that standby servers that have ever run any
124 of the buggy releases be re-cloned from the primary (e.g., with a new
125 base backup) after upgrading.
131 Fix multiple bugs in update chain traversal (Andres Freund,
132 Álvaro Herrera)
136 These bugs could result in incorrect behavior, such as locking or even
137 updating the wrong row, in the presence of concurrent updates.
138 Spurious <quote>unable to fetch updated version of tuple</> errors
145 Fix dangling-pointer problem in fast-path locking (Tom Lane)
149 This could lead to corruption of the lock data structures in shared
150 memory, causing <quote>lock already held</> and other odd errors.
156 Fix assorted race conditions in timeout management (Tom Lane)
160 These errors could result in a server process becoming unresponsive
161 because it had blocked SIGALRM and/or SIGINT.
167 Truncate <filename>pg_multixact</> contents during WAL replay
172 This avoids ever-increasing disk space consumption in standby servers.
178 Ensure an anti-wraparound <command>VACUUM</> counts a page as scanned
179 when it's only verified that no tuples need freezing (Sergey
180 Burladyan, Jeff Janes)
184 This bug could result in failing to
185 advance <structfield>relfrozenxid</>, so that the table would still be
186 thought to need another anti-wraparound vacuum. In the worst case the
187 database might even shut down to prevent wraparound.
193 Fix full-table-vacuum request mechanism for MultiXactIds (Andres Freund)
197 This bug could result in large amounts of useless autovacuum activity.
203 Fix race condition in GIN index posting tree page deletion (Heikki
208 This could lead to transient wrong answers or query failures.
214 Fix <quote>unexpected spgdoinsert() failure</> error during SP-GiST
215 index creation (Teodor Sigaev)
221 Fix assorted bugs in materialized views (Kevin Grittner, Andres Freund)
227 Re-allow duplicate table aliases if they're within aliased JOINs
232 Historically <productname>PostgreSQL</> has accepted queries like
234 SELECT ... FROM tab1 x CROSS JOIN (tab2 x CROSS JOIN tab3 y) z
236 although a strict reading of the SQL standard would forbid the
237 duplicate usage of table alias <literal>x</>. A misguided change in
238 9.3.0 caused it to reject some such cases that were formerly accepted.
239 Restore the previous behavior.
245 Avoid flattening a subquery whose <literal>SELECT</> list contains a
246 volatile function wrapped inside a sub-<literal>SELECT</> (Tom Lane)
250 This avoids unexpected results due to extra evaluations of the
257 Fix planner's processing of non-simple-variable subquery outputs
258 nested within outer joins (Tom Lane)
262 This error could lead to incorrect plans for queries involving
263 multiple levels of subqueries within <literal>JOIN</> syntax.
269 Fix incorrect planning in cases where the same non-strict expression
270 appears in multiple <literal>WHERE</> and outer <literal>JOIN</>
271 equality clauses (Tom Lane)
277 Fix planner crash with whole-row reference to a subquery (Tom Lane)
283 Fix incorrect generation of optimized MIN()/MAX() plans for
284 inheritance trees (Tom Lane)
288 The planner could fail in cases where the MIN()/MAX() argument was an
289 expression rather than a simple variable.
295 Fix premature deletion of temporary files (Andres Freund)
301 Prevent intra-transaction memory leak when printing range values
306 This fix actually cures transient memory leaks in any datatype output
307 function, but range types are the only ones known to have had a
314 Fix memory leaks when reloading configuration files (Heikki
315 Linnakangas, Hari Babu)
321 Prevent incorrect display of dropped columns in NOT NULL and CHECK
322 constraint violation messages (Michael Paquier and Tom Lane)
328 Allow default arguments and named-argument notation for window
333 Previously, these cases were likely to crash.
339 Suppress trailing whitespace on each line when pretty-printing rules
344 9.3.0 generated such whitespace in many more cases than previous
345 versions did. To reduce unexpected behavioral changes, suppress
346 unnecessary whitespace in all cases.
352 Fix possible read past end of memory in rule printing (Peter Eisentraut)
358 Fix array slicing of <type>int2vector</> and <type>oidvector</> values
363 Expressions of this kind are now implicitly promoted to
364 regular <type>int2</> or <type>oid</> arrays.
370 Return a valid JSON value when converting an empty <type>hstore</> value
378 Fix incorrect behaviors when using a SQL-standard, simple GMT offset
383 In some cases, the system would use the simple GMT offset value when
384 it should have used the regular timezone setting that had prevailed
385 before the simple offset was selected. This change also causes
386 the <function>timeofday</> function to honor the simple GMT offset
393 Prevent possible misbehavior when logging translations of Windows
394 error codes (Tom Lane)
400 Properly quote generated command lines in <application>pg_ctl</>
401 (Naoya Anzai and Tom Lane)
405 This fix applies only to Windows.
411 Fix <application>pg_dumpall</> to work when a source database
413 linkend="guc-default-transaction-read-only"><varname>default_transaction_read_only</></link>
414 via <command>ALTER DATABASE SET</> (Kevin Grittner)
418 Previously, the generated script would fail during restore.
424 Fix <application>pg_isready</> to handle its <option>-d</> option
425 properly (Fabrízio de Royes Mello and Fujii Masao)
431 Fix parsing of WAL file names in <application>pg_receivexlog</>
436 This error made <application>pg_receivexlog</> unable to restart
437 streaming after stopping, once at least 4 GB of WAL had been written.
443 Report out-of-disk-space failures properly
444 in <application>pg_upgrade</> (Peter Eisentraut)
450 Make <application>ecpg</> search for quoted cursor names
451 case-sensitively (Zoltán Böszörményi)
457 Fix <application>ecpg</>'s processing of lists of variables
458 declared <type>varchar</> (Zoltán Böszörményi)
464 Make <filename>contrib/lo</> defend against incorrect trigger definitions
471 Update time zone data files to <application>tzdata</> release 2013h
472 for DST law changes in Argentina, Brazil, Jordan, Libya,
473 Liechtenstein, Morocco, and Palestine. Also, new timezone
474 abbreviations WIB, WIT, WITA for Indonesia.
483 <sect1 id="release-9-3-1">
484 <title>Release 9.3.1</title>
487 <title>Release Date</title>
488 <simpara>2013-10-10</simpara>
492 This release contains a variety of fixes from 9.3.0.
493 For information about new features in the 9.3 major release, see
494 <xref linkend="release-9-3">.
498 <title>Migration to Version 9.3.1</title>
501 A dump/restore is not required for those running 9.3.X.
505 However, if you use the <literal>hstore</> extension, see the
506 first changelog entry.
512 <title>Changes</title>
518 Ensure new-in-9.3 JSON functionality is added to the <literal>hstore</>
519 extension during an update (Andrew Dunstan)
523 Users who upgraded a pre-9.3 database containing <literal>hstore</>
526 ALTER EXTENSION hstore UPDATE;
528 after installing 9.3.1, to add two new JSON functions and a cast.
529 (If <literal>hstore</> is already up to date, this command does
536 Fix memory leak when creating B-tree indexes on range columns
543 Fix memory leak caused by <function>lo_open()</function> failure
550 Serializable snapshot fixes (Kevin Grittner, Heikki Linnakangas)
556 Fix deadlock bug in libpq when using SSL (Stephen Frost)
562 Fix timeline handling bugs in <application>pg_receivexlog</>
563 (Heikki Linnakangas, Andrew Gierth)
569 Prevent <command>CREATE FUNCTION</> from checking <command>SET</>
570 variables unless function body checking is enabled (Tom Lane)
576 Remove rare inaccurate warning during vacuum of index-less tables
586 <sect1 id="release-9-3">
587 <title>Release 9.3</title>
590 <title>Release Date</title>
591 <simpara>2013-09-09</simpara>
595 <title>Overview</title>
598 Major enhancements in <productname>PostgreSQL</> 9.3 include:
601 <!-- This list duplicates items below, but without authors or details-->
607 Add <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
614 Make simple views <link
615 linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
621 Add many features for the <type>JSON</> data type,
622 including <link linkend="functions-json">operators and functions</link>
623 to extract elements from <type>JSON</> values
629 Implement <acronym>SQL</>-standard <link
630 linkend="queries-lateral"><literal>LATERAL</></link> option for
631 <literal>FROM</>-clause subqueries and function calls
637 Allow <link linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data
638 wrappers</link> to support writes (inserts/updates/deletes) on foreign
645 Add a <link linkend="postgres-fdw"><productname>Postgres</> foreign
646 data wrapper</link> to allow access to
647 other <productname>Postgres</> servers
653 Add support for <link linkend="event-triggers">event triggers</link>
659 Add optional ability to <link
660 linkend="app-initdb-data-checksums">checksum</link> data pages and
667 Prevent non-key-field row updates from blocking foreign key checks
673 Greatly reduce System V <link linkend="sysvipc">shared
674 memory</link> requirements
681 The above items are explained in more detail in the sections below.
688 <title>Migration to Version 9.3</title>
691 A dump/restore using <link
692 linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, or use
693 of <link linkend="pgupgrade"><application>pg_upgrade</></link>, is
694 required for those wishing to migrate data from any previous release.
698 Version 9.3 contains a number of changes that may affect compatibility
699 with previous releases. Observe the following incompatibilities:
703 <title>Server Settings</title>
709 Rename <varname>replication_timeout</> to <link
710 linkend="guc-wal-sender-timeout"><varname>wal_sender_timeout</></link>
715 This setting controls the <link
716 linkend="wal"><acronym>WAL</></link> sender timeout.
722 Require superuser privileges to set <link
723 linkend="guc-commit-delay"><varname>commit_delay</></link>
724 because it can now potentially delay other sessions (Simon Riggs)
730 Allow in-memory sorts to use their full memory allocation (Jeff Janes)
734 Users who have set <link
735 linkend="guc-work-mem"><varname>work_mem</></link> based on the
736 previous behavior may need to revisit that setting.
751 Throw an error if a tuple to be updated or deleted has already been
752 updated or deleted by a <literal>BEFORE</> trigger (Kevin Grittner)
756 Formerly, the originally-intended update was silently skipped,
757 resulting in logical inconsistency since the trigger might have
758 propagated data to other places based on the intended update.
759 Now an error is thrown to prevent the inconsistent results from being
760 committed. If this change affects your application, the best solution
761 is usually to move the data-propagation actions to
762 an <literal>AFTER</> trigger.
766 This error will also be thrown if a query invokes a volatile function
767 that modifies rows that are later modified by the query itself.
768 Such cases likewise previously resulted in silently skipping updates.
774 Change multicolumn <link linkend="SQL-CREATETABLE"><literal>ON UPDATE
775 SET NULL/SET DEFAULT</></link> foreign key actions to affect
776 all columns of the constraint, not just those changed in the
777 <command>UPDATE</> (Tom Lane)
781 Previously, we would set only those referencing columns that
782 correspond to referenced columns that were changed by
783 the <command>UPDATE</>. This was what was required by SQL-92,
784 but more recent editions of the SQL standard specify the new behavior.
790 Force cached plans to be replanned if the <link
791 linkend="guc-search-path"><varname>search_path</></link> changes
796 Previously, cached plans already generated in the current session were
797 not redone if the query was re-executed with a
798 new <varname>search_path</> setting, resulting in surprising behavior.
805 linkend="functions-formatting-table"><function>to_number()</></link>
806 to properly handle a period used as a thousands separator (Tom Lane)
810 Previously, a period was considered to be a decimal point even when
811 the locale says it isn't and the <literal>D</> format code is used to
812 specify use of the locale-specific decimal point. This resulted in
813 wrong answers if <literal>FM</> format was also used.
819 Fix <literal>STRICT</> non-set-returning functions that have
820 set-returning functions in their arguments to properly return null
825 A null value passed to the strict function should result in a null
826 output, but instead, that output row was suppressed entirely.
832 Store <link linkend="wal"><acronym>WAL</></link> in a continuous
833 stream, rather than skipping the last 16MB segment every 4GB
838 Previously, <acronym>WAL</> files with names ending in <literal>FF</>
839 were not used because of this skipping. If you have <acronym>WAL</>
840 backup or restore scripts that took this behavior into account, they
841 will need to be adjusted.
848 linkend="catalog-pg-constraint"><structname>pg_constraint.confmatchtype</></link>,
849 store the default foreign key match type (non-<literal>FULL</>,
850 non-<literal>PARTIAL</>) as <literal>s</> for <quote>simple</>
855 Previously this case was represented by <literal>u</>
856 for <quote>unspecified</>.
867 <title>Changes</title>
870 Below you will find a detailed account of the changes between
871 <productname>PostgreSQL</productname> 9.3 and the previous major
876 <title>Server</title>
879 <title>Locking</title>
885 Prevent non-key-field row updates from blocking foreign key checks
886 (Álvaro Herrera, Noah Misch, Andres Freund, Alexander
887 Shulgin, Marti Raudsepp, Alexander Shulgin)
891 This change improves concurrency and reduces the probability of
892 deadlocks when updating tables involved in a foreign-key constraint.
893 <command>UPDATE</>s that do not change any columns referenced in a
894 foreign key now take the new <literal>NO KEY UPDATE</> lock mode on
895 the row, while foreign key checks use the new <literal>KEY SHARE</>
896 lock mode, which does not conflict with <literal>NO KEY UPDATE</>.
897 So there is no blocking unless a foreign-key column is changed.
903 Add configuration variable <link
904 linkend="guc-lock-timeout"><varname>lock_timeout</></link> to
905 allow limiting how long a session will wait to acquire any one lock
906 (Zoltán Böszörményi)
915 <title>Indexes</title>
921 Add <link linkend="rangetypes-indexing"><acronym>SP-GiST</></link>
922 support for range data types (Alexander Korotkov)
928 Allow <link linkend="GiST"><acronym>GiST</></link> indexes to be
929 unlogged (Jeevan Chalke)
935 Improve performance of <acronym>GiST</> index insertion by randomizing
936 the choice of which page to descend to when there are multiple equally
937 good alternatives (Heikki Linnakangas)
943 Improve concurrency of hash index operations (Robert Haas)
952 <title>Optimizer</title>
958 Collect and use histograms of upper and lower bounds, as well as range
959 lengths, for <link linkend="rangetypes">range types</link>
966 Improve optimizer's cost estimation for index access (Tom Lane)
972 Improve optimizer's hash table size estimate for
973 doing <literal>DISTINCT</> via hash aggregation (Tom Lane)
979 Suppress no-op Result and Limit plan nodes
980 (Kyotaro Horiguchi, Amit Kapila, Tom Lane)
986 Reduce optimizer overhead by not keeping plans on the basis of cheap
987 startup cost when the optimizer only cares about total cost overall
997 <title>General Performance</title>
1003 Add <link linkend="SQL-COPY"><command>COPY FREEZE</></link>
1004 option to avoid the overhead of marking tuples as frozen later
1005 (Simon Riggs, Jeff Davis)
1011 Improve performance of <link
1012 linkend="datatype-numeric"><type>NUMERIC</></link> calculations
1019 Improve synchronization of sessions waiting for <link
1020 linkend="guc-commit-delay"><varname>commit_delay</></link>
1025 This greatly improves the usefulness of <varname>commit_delay</>.
1031 Improve performance of the <link
1032 linkend="SQL-CREATETABLE"><command>CREATE TEMPORARY TABLE ... ON
1033 COMMIT DELETE ROWS</></link> option by not truncating such temporary
1034 tables in transactions that haven't touched any temporary tables
1035 (Heikki Linnakangas)
1041 Make vacuum recheck visibility after it has removed expired tuples
1046 This increases the chance of a page being marked as all-visible.
1052 Add per-resource-owner lock caches (Jeff Janes)
1056 This speeds up lock bookkeeping at statement completion in
1057 multi-statement transactions that hold many locks; it is particularly
1058 useful for <application>pg_dump</>.
1064 Avoid scanning the entire relation cache at commit of a transaction
1065 that creates a new relation (Jeff Janes)
1069 This speeds up sessions that create many tables in successive
1070 small transactions, such as a <application>pg_restore</> run.
1076 Improve performance of transactions that drop many relations
1086 <title>Monitoring</title>
1092 Add optional ability to <link
1093 linkend="app-initdb-data-checksums">checksum</link> data pages and
1094 report corruption (Simon Riggs, Jeff Davis, Greg Smith, Ants Aasma)
1098 The checksum option can be set during <link
1099 linkend="APP-INITDB">initdb</link>.
1105 Split the <link linkend="monitoring-stats">statistics collector's</link>
1106 data file into separate global and per-database files (Tomas Vondra)
1110 This reduces the I/O required for statistics tracking.
1116 Fix the statistics collector to operate properly in cases where the
1117 system clock goes backwards (Tom Lane)
1121 Previously, statistics collection would stop until the time again
1122 reached the latest time previously recorded.
1128 Emit an informative message to postmaster standard error when we
1129 are about to stop logging there
1134 This should help reduce user confusion about where to look for log
1135 output in common configurations that log to standard error only during
1145 <title>Authentication</title>
1151 When an authentication failure occurs, log the relevant
1152 <link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></link>
1153 line, to ease debugging of unintended failures
1160 Improve <link linkend="auth-ldap"><acronym>LDAP</></link> error
1161 reporting and documentation (Peter Eisentraut)
1167 Add support for specifying <acronym>LDAP</> authentication parameters
1168 in <acronym>URL</> format, per RFC 4516 (Peter Eisentraut)
1175 linkend="guc-ssl-ciphers"><varname>ssl_ciphers</></link> parameter
1176 to start with <literal>DEFAULT</>, rather than <literal>ALL</>,
1177 then remove insecure ciphers (Magnus Hagander)
1181 This should yield a more appropriate SSL cipher set.
1187 Parse and load <link
1188 linkend="auth-username-maps"><filename>pg_ident.conf</></link>
1189 once, not during each connection (Amit Kapila)
1193 This is similar to how <filename>pg_hba.conf</> is processed.
1202 <title>Server Settings</title>
1208 Greatly reduce System V <link linkend="sysvipc">shared
1209 memory</link> requirements (Robert Haas)
1213 On Unix-like systems, <function>mmap()</> is now used for most
1214 of <productname>PostgreSQL</>'s shared memory. For most users, this
1215 will eliminate any need to adjust kernel parameters for shared memory.
1221 Allow the postmaster to listen on multiple Unix-domain sockets
1222 (Honza Horák)
1226 The configuration parameter
1227 <varname>unix_socket_directory</> is replaced by <link
1228 linkend="guc-unix-socket-directories"><varname>unix_socket_directories</></link>,
1229 which accepts a list of directories.
1235 Allow a directory of configuration files to be processed (Magnus
1236 Hagander, Greg Smith, Selena Deckelmann)
1240 Such a directory is specified with <link
1241 linkend="config-includes"><varname>include_dir</></link> in the server
1248 Increase the maximum <link
1249 linkend="APP-INITDB">initdb</link>-configured value for <link
1250 linkend="guc-shared-buffers"><varname>shared_buffers</></link>
1251 to 128MB (Robert Haas)
1255 This is the maximum value that initdb will attempt to set in <link
1256 linkend="config-setting-configuration-file"><filename>postgresql.conf</></link>;
1257 the previous maximum was 32MB.
1263 Remove the <link linkend="guc-external-pid-file">external
1264 <acronym>PID</> file</link>, if any, on postmaster exit
1276 <title>Replication and Recovery</title>
1282 Allow a streaming replication standby to <link
1283 linkend="protocol-replication">follow a timeline switch</link>
1284 (Heikki Linnakangas)
1288 This allows streaming standby servers to receive WAL data from a slave
1289 newly promoted to master status. Previously, other standbys would
1290 require a resync to begin following the new master.
1296 Add <acronym>SQL</> functions <link
1297 linkend="functions-admin-backup"><function>pg_is_in_backup()</></link>
1299 linkend="functions-admin-backup"><function>pg_backup_start_time()</></link>
1304 These functions report the status of base backups.
1310 Improve performance of streaming log shipping with <link
1311 linkend="guc-synchronous-commit"><varname>synchronous_commit</></link>
1312 disabled (Andres Freund)
1318 Allow much faster promotion of a streaming standby to primary (Simon
1319 Riggs, Kyotaro Horiguchi)
1325 Add the last checkpoint's redo location to <link
1326 linkend="APP-PGCONTROLDATA"><application>pg_controldata</></link>'s
1327 output (Fujii Masao)
1331 This information is useful for determining which <acronym>WAL</>
1332 files are needed for restore.
1338 Allow tools like <link
1339 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
1340 to run on computers with different architectures (Heikki
1345 WAL files can still only be replayed on servers with the same
1346 architecture as the primary; but they can now be transmitted to and
1347 stored on machines of any architecture, since the
1348 streaming replication protocol is now machine-independent.
1355 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
1356 <option>--write-recovery-conf</> output a
1357 minimal <filename>recovery.conf</> file (Zoltán
1358 Böszörményi, Magnus Hagander)
1362 This simplifies setting up a standby server.
1369 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
1371 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
1372 <option>--xlog-method</> to handle streaming timeline switches
1373 (Heikki Linnakangas)
1380 linkend="guc-wal-receiver-timeout"><varname>wal_receiver_timeout</></link>
1381 parameter to control the <acronym>WAL</> receiver's timeout
1386 This allows more rapid detection of connection failure.
1392 Change the <link linkend="wal"><acronym>WAL</></link> record format to
1393 allow splitting the record header across pages (Heikki Linnakangas)
1397 The new format is slightly more compact, and is more efficient to
1407 <title>Queries</title>
1413 Implement <acronym>SQL</>-standard <link
1414 linkend="queries-lateral"><literal>LATERAL</></link> option for
1415 <literal>FROM</>-clause subqueries and function calls (Tom Lane)
1419 This feature allows subqueries and functions in <literal>FROM</> to
1420 reference columns from other tables in the <literal>FROM</>
1421 clause. The <literal>LATERAL</> keyword is optional for functions.
1427 Add support for piping <link
1428 linkend="SQL-COPY"><command>COPY</></link> and <link
1429 linkend="APP-PSQL"><application>psql</></link> <command>\copy</>
1430 data to/from an external program (Etsuro Fujita)
1436 Allow a multirow <link
1437 linkend="SQL-VALUES"><literal>VALUES</></link> clause in a rule
1438 to reference <literal>OLD</>/<literal>NEW</> (Tom Lane)
1447 <title>Object Manipulation</title>
1453 Add support for <link linkend="event-triggers">event triggers</link>
1454 (Dimitri Fontaine, Robert Haas, Álvaro Herrera)
1458 This allows server-side functions written in event-enabled
1459 languages to be called when DDL commands are run.
1465 Allow <link linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data
1466 wrappers</link> to support writes (inserts/updates/deletes) on foreign
1467 tables (KaiGai Kohei)
1473 Add <link linkend="SQL-CREATESCHEMA"><command>CREATE SCHEMA ... IF
1474 NOT EXISTS</></link> clause (Fabrízio de Royes Mello)
1480 Make <link linkend="SQL-REASSIGN-OWNED"><command>REASSIGN
1481 OWNED</></link> also change ownership of shared objects
1482 (Álvaro Herrera)
1488 Make <link linkend="sql-createaggregate"><command>CREATE
1489 AGGREGATE</></link> complain if the given initial value string is not
1490 valid input for the transition datatype (Tom Lane)
1496 Suppress <link linkend="SQL-CREATETABLE"><command>CREATE
1497 TABLE</></link>'s messages about implicit index and sequence creation
1502 These messages now appear at <literal>DEBUG1</> verbosity, so that
1503 they will not be shown by default.
1509 Allow <link linkend="SQL-DROPTABLE"><command>DROP TABLE IF
1510 EXISTS</></link> to succeed when a non-existent schema is specified
1511 in the table name (Bruce Momjian)
1515 Previously, it threw an error if the schema did not exist.
1521 Provide clients with <link
1522 linkend="libpq-pqresulterrorfield">constraint violation details</link>
1523 as separate fields (Pavel Stehule)
1527 This allows clients to retrieve table, column, data type, or
1528 constraint name error details. Previously such information had to be
1529 extracted from error strings. Client library support is required to
1530 access these fields.
1537 <title><command>ALTER</></title>
1543 Support <literal>IF NOT EXISTS</> option in <link
1544 linkend="SQL-ALTERTYPE"><command>ALTER TYPE ... ADD VALUE</></link>
1549 This is useful for conditionally adding values to enumerated types.
1555 Add <link linkend="SQL-ALTERROLE"><command>ALTER ROLE ALL
1556 SET</></link> to establish settings for all users (Peter Eisentraut)
1560 This allows settings to apply to all users in all databases. <link
1561 linkend="SQL-ALTERDATABASE"><command>ALTER DATABASE SET</></link>
1562 already allowed addition of settings for all users in a single
1563 database. <filename>postgresql.conf</> has a similar effect.
1569 Add support for <link linkend="SQL-ALTERRULE"><command>ALTER RULE
1570 ... RENAME</></link> (Ali Dar)
1579 <title><link linkend="rules-views"><command>VIEWs</></link></title>
1585 Add <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
1586 views</link> (Kevin Grittner)
1590 Unlike ordinary views, where the base tables are read on every access,
1591 materialized views create physical tables at creation or refresh time.
1592 Access to the materialized view then reads from its physical
1593 table. There is not yet any facility for incrementally refreshing
1594 materialized views or auto-accessing them via base table access.
1600 Make simple views <link
1601 linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
1606 Simple views that reference some or all columns from a
1607 single base table are now updatable by default. More
1608 complex views can be made updatable using <link
1609 linkend="SQL-CREATETRIGGER"><literal>INSTEAD OF</></link> triggers
1610 or <link linkend="SQL-CREATERULE"><literal>INSTEAD</></link> rules.
1616 Add <link linkend="SQL-CREATEVIEW"><command>CREATE RECURSIVE
1617 VIEW</></link> syntax (Peter Eisentraut)
1621 Internally this is translated into <command>CREATE VIEW ... WITH
1628 Improve view/rule printing code to handle cases where referenced
1629 tables are renamed, or columns are renamed, added, or dropped
1634 Table and column renamings can produce cases where, if we merely
1635 substitute the new name into the original text of a rule or view, the
1636 result is ambiguous. This change fixes the rule-dumping code to insert
1637 manufactured table and column aliases when needed to preserve the
1649 <title>Data Types</title>
1655 Increase the maximum size of <link linkend="largeObjects">large
1656 objects</link> from 2GB to 4TB (Nozomi Anzai, Yugo Nagata)
1660 This change includes adding 64-bit-capable large object access
1661 functions, both in the server and in libpq.
1667 Allow text <link linkend="datatype-timezones">timezone
1668 designations</link>, e.g. <quote>America/Chicago</>, in the
1669 <quote>T</> field of <acronym>ISO</>-format <type>timestamptz</type>
1670 input (Bruce Momjian)
1677 <title><link linkend="datatype-json"><type>JSON</></link></title>
1683 Add <link linkend="functions-json">operators and functions</link>
1684 to extract elements from <type>JSON</> values (Andrew Dunstan)
1690 Allow <type>JSON</> values to be <link
1691 linkend="functions-json-table">converted into records</link>
1698 Add <link linkend="functions-json-table">functions</link> to convert
1699 scalars, records, and <type>hstore</> values to <type>JSON</> (Andrew
1712 <title>Functions</title>
1719 linkend="array-functions-table"><function>array_remove()</></link>
1721 linkend="array-functions-table"><function>array_replace()</></link>
1722 functions (Marco Nenciarini, Gabriele Bartolini)
1729 linkend="functions-string-other"><function>concat()</></link>
1731 linkend="functions-string-format"><function>format()</></link>
1732 to properly expand <literal>VARIADIC</>-labeled arguments
1740 linkend="functions-string-format"><function>format()</></link>
1741 to provide field width and left/right alignment options (Pavel Stehule)
1748 linkend="functions-formatting-table"><function>to_char()</></link>,
1750 linkend="functions-formatting-table"><function>to_date()</></link>,
1752 linkend="functions-formatting-table"><function>to_timestamp()</></link>
1753 handle negative (BC) century values properly
1758 Previously the behavior was either wrong or inconsistent
1759 with positive/<acronym>AD</> handling, e.g. with the format mask
1760 <quote>IYYY-IW-DY</>.
1767 linkend="functions-formatting-table"><function>to_date()</></link>
1769 linkend="functions-formatting-table"><function>to_timestamp()</></link>
1770 return proper results when mixing <acronym>ISO</> and Gregorian
1771 week/day designations (Bruce Momjian)
1778 linkend="functions-info-catalog-table"><function>pg_get_viewdef()</></link>
1779 to start a new line by default after each <literal>SELECT</> target
1780 list entry and <literal>FROM</> entry (Marko Tiikkaja)
1784 This reduces line length in view printing, for instance in <link
1785 linkend="APP-PGDUMP"><application>pg_dump</></link> output.
1791 Fix <function>map_sql_value_to_xml_value()</> to print values of
1792 domain types the same way their base type would be printed
1797 There are special formatting rules for certain built-in types such as
1798 <type>boolean</>; these rules now also apply to domains over these
1808 <title>Server-Side Languages</title>
1811 <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
1817 Allow PL/pgSQL to use <literal>RETURN</> with a composite-type
1818 expression (Asif Rehman)
1822 Previously, in a function returning a composite type,
1823 <literal>RETURN</> could only reference a variable of that type.
1829 Allow PL/pgSQL to access <link
1830 linkend="plpgsql-exception-diagnostics">constraint violation
1831 details</link> as separate fields (Pavel Stehule)
1837 Allow PL/pgSQL to access the number of rows processed by
1838 <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1842 A <command>COPY</> executed in a PL/pgSQL function now updates the
1843 value retrieved by <link
1844 linkend="plpgsql-statements-diagnostics"><command>GET DIAGNOSTICS
1845 x = ROW_COUNT</></link>.
1851 Allow unreserved keywords to be used as identifiers everywhere in
1856 In certain places in the PL/pgSQL grammar, keywords had to be quoted
1857 to be used as identifiers, even if they were nominally unreserved.
1866 <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
1872 Add PL/Python result object string handler (Peter Eisentraut)
1876 This allows <literal>plpy.debug(rv)</literal> to output something reasonable.
1882 Make PL/Python convert OID values to a proper Python numeric type
1889 Handle <link linkend="spi"><acronym>SPI</></link> errors raised
1890 explicitly (with PL/Python's <literal>RAISE</>) the same as
1891 internal <acronym>SPI</> errors (Oskari Saarenmaa and Jan Urbanski)
1902 <title>Server Programming Interface (<link linkend="spi">SPI</link>)</title>
1908 Prevent leakage of <acronym>SPI</> tuple tables during subtransaction
1913 At the end of any failed subtransaction, the core SPI code now
1914 releases any SPI tuple tables that were created during that
1915 subtransaction. This avoids the need for SPI-using code to keep track
1916 of such tuple tables and release them manually in error-recovery code.
1917 Failure to do so caused a number of transaction-lifespan memory leakage
1918 issues in PL/pgSQL and perhaps other SPI clients. <link
1919 linkend="spi-spi-freetupletable"><function>SPI_freetuptable()</></link>
1920 now protects itself against multiple freeing requests, so any existing
1921 code that did take care to clean up shouldn't be broken by this change.
1927 Allow <acronym>SPI</> functions to access the number of rows processed
1928 by <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
1937 <title>Client Applications</title>
1943 Add command-line utility <link
1944 linkend="app-pg-isready"><application>pg_isready</></link> to
1945 check if the server is ready to accept connections (Phil Sorber)
1951 Support multiple <option>--table</> arguments for <link
1952 linkend="APP-PGRESTORE"><application>pg_restore</></link>,
1953 <link linkend="APP-CLUSTERDB"><application>clusterdb</></link>,
1954 <link linkend="APP-REINDEXDB"><application>reindexdb</></link>,
1955 and <link linkend="APP-VACUUMDB"><application>vacuumdb</></link>
1960 This is similar to the way <link
1961 linkend="APP-PGDUMP"><application>pg_dump</></link>'s
1962 <option>--table</> option works.
1968 Add <option>--dbname</> option to <link
1969 linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, <link
1970 linkend="app-pgbasebackup"><application>pg_basebackup</></link>, and
1972 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
1973 to allow specifying a connection string (Amit Kapila)
1979 Add libpq function <link
1980 linkend="libpq-pqconninfo"><function>PQconninfo()</></link>
1981 to return connection information (Zoltán
1982 Böszörményi, Magnus Hagander)
1989 <title><link linkend="APP-PSQL"><application>psql</></link></title>
1995 Adjust function cost settings so <application>psql</> tab
1996 completion and pattern searching are more efficient (Tom Lane)
2002 Improve <application>psql</>'s tab completion coverage (Jeff Janes,
2003 Dean Rasheed, Peter Eisentraut, Magnus Hagander)
2009 Allow the <application>psql</> <option>--single-transaction</>
2010 mode to work when reading from standard input (Fabien Coelho,
2015 Previously this option only worked when reading from a file.
2021 Remove <application>psql</> warning when connecting to an older
2022 server (Peter Eisentraut)
2026 A warning is still issued when connecting to a server of a newer major
2027 version than <application>psql</>'s.
2034 <title><link linkend="APP-PSQL-meta-commands">Backslash Commands</link></title>
2040 Add <application>psql</> command <command>\watch</> to repeatedly
2041 execute a SQL command (Will Leinweber)
2047 Add <application>psql</> command <command>\gset</> to store query
2048 results in <application>psql</> variables (Pavel Stehule)
2054 Add <acronym>SSL</> information to <application>psql</>'s
2055 <command>\conninfo</> command (Alastair Turner)
2061 Add <quote>Security</> column to <application>psql</>'s
2062 <command>\df+</> output (Jon Erdman)
2068 Allow <application>psql</> command <command>\l</> to accept a database
2069 name pattern (Peter Eisentraut)
2075 In <application>psql</>, do not allow <command>\connect</> to
2076 use defaults if there is no active connection (Bruce Momjian)
2080 This might be the case if the server had crashed.
2086 Properly reset state after failure of a SQL command executed with
2087 <application>psql</>'s <literal>\g</> <replaceable>file</>
2092 Previously, the output from subsequent SQL commands would unexpectedly
2093 continue to go to the same file.
2102 <title>Output</title>
2108 Add a <literal>latex-longtable</> output format to
2109 <application>psql</> (Bruce Momjian)
2113 This format allows tables to span multiple pages.
2119 Add a <literal>border=3</> output mode to the <application>psql</>
2120 <literal>latex</> format (Bruce Momjian)
2126 In <application>psql</>'s tuples-only and expanded output modes, no
2127 longer emit <quote>(No rows)</> for zero rows (Peter Eisentraut)
2133 In <application>psql</>'s unaligned, expanded output mode, no longer
2134 print an empty line for zero rows (Peter Eisentraut)
2145 <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
2151 Add <application>pg_dump</> <option>--jobs</> option to dump tables in
2152 parallel (Joachim Wieland)
2158 Make <application>pg_dump</> output functions in a more predictable
2159 order (Joel Jacobson)
2165 Fix tar files emitted by <application>pg_dump</>
2166 to be <acronym>POSIX</> conformant (Brian Weaver, Tom Lane)
2172 Add <option>--dbname</> option to <application>pg_dump</>, for
2173 consistency with other client commands (Heikki Linnakangas)
2177 The database name could already be supplied last without a flag.
2186 <title><link linkend="APP-INITDB"><application>initdb</></link></title>
2192 Make initdb fsync the newly created data directory (Jeff Davis)
2196 This insures data integrity in event of a system crash shortly after
2197 initdb. This can be disabled by using <option>--nosync</>.
2203 Add initdb <option>--sync-only</> option to sync the data directory to durable
2204 storage (Bruce Momjian)
2208 This is used by <link
2209 linkend="pgupgrade"><application>pg_upgrade</></link>.
2215 Make initdb issue a warning about placing the data directory at the
2216 top of a file system mount point (Bruce Momjian)
2227 <title>Source Code</title>
2233 Add infrastructure to allow plug-in <link
2234 linkend="bgworker">background worker processes</link>
2235 (Álvaro Herrera)
2241 Create a centralized timeout <acronym>API</> (Zoltán
2242 Böszörményi)
2248 Create libpgcommon and move <function>pg_malloc()</> and other
2249 functions there (Álvaro Herrera, Andres Freund)
2253 This allows libpgport to be used solely for portability-related code.
2259 Add support for list links embedded in larger structs (Andres Freund)
2265 Use <literal>SA_RESTART</> for all signals,
2266 including <literal>SIGALRM</> (Tom Lane)
2272 Ensure that the correct text domain is used when
2273 translating <function>errcontext()</> messages
2274 (Heikki Linnakangas)
2280 Standardize naming of client-side memory allocation functions (Tom Lane)
2286 Provide support for <quote>static assertions</> that will fail at
2287 compile time if some compile-time-constant condition is not met
2288 (Andres Freund, Tom Lane)
2294 Support <function>Assert()</> in client-side code (Andrew Dunstan)
2300 Add decoration to inform the C compiler that some <function>ereport()</>
2301 and <function>elog()</> calls do not return (Peter Eisentraut,
2302 Andres Freund, Tom Lane, Heikki Linnakangas)
2308 Allow options to be passed to the regression
2309 test output comparison utility via <link
2310 linkend="regress-evaluation"><envar>PG_REGRESS_DIFF_OPTS</></link>
2317 Add isolation tests for <link
2318 linkend="SQL-CREATEINDEX"><command>CREATE INDEX
2319 CONCURRENTLY</></link> (Abhijit Menon-Sen)
2325 Remove typedefs for <type>int2</>/<type>int4</> as they are better
2326 represented as <type>int16</>/<type>int32</> (Peter Eisentraut)
2332 Fix <link linkend="install">install-strip</link> on Mac <productname>OS
2333 X</> (Peter Eisentraut)
2339 Remove <link linkend="configure">configure</link> flag
2340 <option>--disable-shared</>, as it is no longer supported
2347 Rewrite pgindent in <application>Perl</> (Andrew Dunstan)
2353 Provide Emacs macro to set Perl formatting to
2354 match <productname>PostgreSQL</>'s perltidy settings (Peter Eisentraut)
2360 Run tool to check the keyword list whenever the backend grammar is
2367 Change the way <literal>UESCAPE</> is lexed, to significantly reduce
2368 the size of the lexer tables (Heikki Linnakangas)
2374 Centralize <application>flex</> and <application>bison</>
2375 <application>make</> rules (Peter Eisentraut)
2379 This is useful for <application>pgxs</> authors.
2385 Change many internal backend functions to return object <type>OID</>s
2386 rather than void (Dimitri Fontaine)
2390 This is useful for event triggers.
2396 Invent pre-commit/pre-prepare/pre-subcommit events for transaction
2397 callbacks (Tom Lane)
2401 Loadable modules that use transaction callbacks might need modification
2402 to handle these new event types.
2409 linkend="functions-info-catalog-table"><function>pg_identify_object()</></link>
2410 to produce a machine-readable description of a database object
2411 (Álvaro Herrera)
2417 Add post-<command>ALTER</>-object server hooks (KaiGai Kohei)
2423 Implement a generic binary heap and use it for Merge-Append
2424 operations (Abhijit Menon-Sen)
2430 Provide a tool to help detect timezone abbreviation changes when
2431 updating the <filename>src/timezone/data</> files
2438 Add <application>pkg-config</> support for <application>libpq</>
2439 and <application>ecpg</> libraries (Peter Eisentraut)
2445 Remove <filename>src/tool/backend</>, now that the content is on
2446 the <productname>PostgreSQL</> wiki (Bruce Momjian)
2452 Split out <link linkend="wal"><acronym>WAL</></link> reading as
2453 an independent facility (Heikki Linnakangas, Andres Freund)
2459 Use a 64-bit integer to represent <link
2460 linkend="wal"><acronym>WAL</></link> positions
2461 (<structname>XLogRecPtr</>) instead of two 32-bit integers
2462 (Heikki Linnakangas)
2466 Generally, tools that need to read the <acronym>WAL</> format
2467 will need to be adjusted.
2473 Allow <link linkend="plpython">PL/Python</link> to support
2474 platform-specific include directories (Peter Eisentraut)
2480 Allow <link linkend="plpython">PL/Python</link> on <productname>OS
2481 X</> to build against custom versions of <application>Python</>
2491 <title>Additional Modules</title>
2497 Add a <link linkend="postgres-fdw"><productname>Postgres</> foreign
2498 data wrapper</link> contrib module to allow access to
2499 other <productname>Postgres</> servers (Shigeru Hanada)
2503 This foreign data wrapper supports writes.
2509 Add <link linkend="pgxlogdump"><application>pg_xlogdump</></link>
2510 contrib program (Andres Freund)
2516 Add support for indexing of regular-expression searches in
2517 <link linkend="pgtrgm"><productname>pg_trgm</></link>
2518 (Alexander Korotkov)
2524 Improve <link linkend="pgtrgm"><productname>pg_trgm</></link>'s
2525 handling of multibyte characters (Tom Lane)
2529 On a platform that does not have the wcstombs() or towlower() library
2530 functions, this could result in an incompatible change in the contents
2531 of <productname>pg_trgm</> indexes for non-ASCII data. In such cases,
2532 <command>REINDEX</> those indexes to ensure correct search results.
2538 Add a <link linkend="pgstattuple">pgstattuple</link> function to report
2539 the size of the pending-insertions list of a <acronym>GIN</> index
2546 Make <link linkend="oid2name"><application>oid2name</></link>,
2547 <link linkend="pgbench"><application>pgbench</></link>, and
2548 <link linkend="vacuumlo"><application>vacuumlo</></link> set
2549 <varname>fallback_application_name</> (Amit Kapila)
2555 Improve output of <link
2556 linkend="pgtesttiming"><application>pg_test_timing</></link>
2563 Improve output of <link
2564 linkend="pgtestfsync"><application>pg_test_fsync</></link>
2571 Create a dedicated foreign data wrapper, with its own option validator
2572 function, for <link linkend="dblink">dblink</link> (Shigeru Hanada)
2576 When using this FDW to define the target of a <application>dblink</>
2577 connection, instead of using a hard-wired list of connection options,
2578 the underlying <application>libpq</> library is consulted to see what
2579 connection options it supports.
2586 <title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>
2592 Allow <application>pg_upgrade</> to do dumps and restores in
2593 parallel (Bruce Momjian, Andrew Dunstan)
2597 This allows parallel schema dump/restore of databases, as well as
2598 parallel copy/link of data files per tablespace. Use the
2599 <option>--jobs</> option to specify the level of parallelism.
2605 Make <application>pg_upgrade</> create Unix-domain sockets in
2606 the current directory (Bruce Momjian, Tom Lane)
2610 This reduces the possibility that someone will accidentally connect
2617 Make <application>pg_upgrade</> <option>--check</> mode properly
2618 detect the location of non-default socket directories (Bruce
2625 Improve performance of <application>pg_upgrade</> for databases
2626 with many tables (Bruce Momjian)
2632 Improve <application>pg_upgrade</>'s logs by showing
2633 executed commands (Álvaro Herrera)
2639 Improve <application>pg_upgrade</>'s status display during
2640 copy/link (Bruce Momjian)
2649 <title><link linkend="pgbench"><application>pgbench</></link></title>
2655 Add <option>--foreign-keys</> option to <application>pgbench</>
2660 This adds foreign key constraints to the standard tables created by
2661 <application>pgbench</>, for use in foreign key performance testing.
2667 Allow <application>pgbench</> to aggregate performance statistics
2668 and produce output every <option>--aggregate-interval</>
2669 seconds (Tomas Vondra)
2675 Add <application>pgbench</> <option>--sampling-rate</> option
2676 to control the percentage of transactions logged (Tomas Vondra)
2682 Reduce and improve the status message output of
2683 <application>pgbench</>'s initialization mode (Robert Haas,
2690 Add <application>pgbench</> <option>-q</> mode to print one output
2691 line every five seconds (Tomas Vondra)
2697 Output <application>pgbench</> elapsed and estimated remaining
2698 time during initialization (Tomas Vondra)
2704 Allow <application>pgbench</> to use much larger scale factors,
2705 by changing relevant columns from <type>integer</> to <type>bigint</>
2706 when the requested scale factor exceeds 20000
2718 <title>Documentation</title>
2724 Allow <productname>EPUB</>-format documentation to be created
2731 Update <productname>FreeBSD</> kernel configuration documentation
2738 Improve <link linkend="tutorial-window"><literal>WINDOW</>
2739 function</link> documentation (Bruce Momjian, Florian Pflug)
2745 Add <link linkend="docguide-toolsets">instructions</link> for setting
2746 up the documentation tool chain on Mac <productname>OS X</>
2754 linkend="guc-commit-delay"><varname>commit_delay</></link>
2755 documentation (Peter Geoghegan)