]> granicus.if.org Git - postgresql/blob - doc/src/sgml/release-9.3.sgml
Improve draft release notes.
[postgresql] / doc / src / sgml / release-9.3.sgml
1 <!-- doc/src/sgml/release-9.3.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
3
4  <sect1 id="release-9-3-2">
5   <title>Release 9.3.2</title>
6
7   <note>
8   <title>Release Date</title>
9   <simpara>2013-12-05</simpara>
10   </note>
11
12   <para>
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">.
16   </para>
17
18   <sect2>
19    <title>Migration to Version 9.3.2</title>
20
21    <para>
22     A dump/restore is not required for those running 9.3.X.
23    </para>
24
25    <para>
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.
29    </para>
30
31    <para>
32     Also, if you are upgrading from a version earlier than 9.3.1,
33     see the release notes for 9.3.1.
34    </para>
35
36   </sect2>
37
38   <sect2>
39    <title>Changes</title>
40
41    <itemizedlist>
42
43 <!--
44 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
45 Branch: master [82b43f7df] 2013-11-27 13:43:27 +0200
46 Branch: REL9_3_STABLE [08302a397] 2013-11-27 13:22:26 +0200
47 Branch: REL9_2_STABLE [0b132b904] 2013-11-27 13:28:47 +0200
48 Branch: REL9_1_STABLE [bf0d21e61] 2013-11-27 13:44:10 +0200
49 Branch: REL9_0_STABLE [ba6379959] 2013-11-27 13:43:18 +0200
50 Branch: REL8_4_STABLE [8a7f4466a] 2013-11-27 13:40:05 +0200
51 -->
52
53     <listitem>
54      <para>
55       Fix <command>VACUUM</>'s tests to see whether it can
56       update <structfield>relfrozenxid</> (Andres Freund)
57      </para>
58
59      <para>
60       In some cases <command>VACUUM</> (either manual or autovacuum) could
61       incorrectly advance a table's <structfield>relfrozenxid</> value,
62       allowing tuples to escape freezing, causing those rows to become
63       invisible once 2^31 transactions have elapsed.  The probability of
64       data loss is fairly low since multiple incorrect advancements would
65       need to happen before actual loss occurs, but it's not zero.  In 9.2.0
66       and later, the probability of loss is higher, and it's also possible
67       to get <quote>could not access status of transaction</> errors as a
68       consequence of this bug.  Users upgrading from releases 9.0.4 or 8.4.8
69       or earlier are not affected, but all later versions contain the bug.
70      </para>
71
72      <para>
73       The issue can be ameliorated by, after upgrading, vacuuming all tables
74       in all databases while having <link
75       linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link>
76       set to zero.  This will fix any latent corruption but will not be able
77       to fix all pre-existing data errors.  However, an installation can be
78       presumed safe after performing this vacuuming if it has executed fewer
79       than 2^31 update transactions in its lifetime (check this with
80       <literal>SELECT txid_current() < 2^31</>).
81      </para>
82     </listitem>
83
84 <!--
85 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
86 Branch: master [2393c7d10] 2013-11-29 21:47:25 -0300
87 Branch: REL9_3_STABLE [8e53ae025] 2013-11-29 21:48:21 -0300
88 -->
89
90     <listitem>
91      <para>
92       Fix multiple bugs in MultiXactId freezing (Andres Freund,
93       &Aacute;lvaro Herrera)
94      </para>
95
96      <para>
97       These bugs could lead to <quote>could not access status of
98       transaction</> errors, or to duplicate or vanishing rows.
99       Users upgrading from releases prior to 9.3.0 are not affected.
100      </para>
101
102      <para>
103       The issue can be ameliorated by, after upgrading, vacuuming all tables
104       in all databases while having <link
105       linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link>
106       set to zero.  This will fix latent corruption but will not be able to
107       fix all pre-existing data errors.
108      </para>
109
110      <para>
111       As a separate issue, these bugs can also cause standby servers to get
112       out of sync with the primary, thus exhibiting data errors that are not
113       in the primary.  Therefore, it's recommended that 9.3.0 and 9.3.1
114       standby servers be re-cloned from the primary (e.g., with a new base
115       backup) after upgrading.
116      </para>
117     </listitem>
118
119 <!--
120 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
121 Branch: master [98f58a30c] 2013-11-22 14:45:41 +0200
122 Branch: REL9_3_STABLE [3e10cc492] 2013-11-22 14:48:05 +0200
123 Branch: REL9_2_STABLE [f22624cea] 2013-11-22 14:48:43 +0200
124 Branch: REL9_1_STABLE [fc8e54f39] 2013-11-22 14:48:55 +0200
125 Branch: REL9_0_STABLE [b4f697f8e] 2013-11-22 14:49:07 +0200
126 -->
127
128     <listitem>
129      <para>
130       Fix initialization of <filename>pg_clog</> and <filename>pg_subtrans</>
131       during hot standby startup (Andres Freund, Heikki Linnakangas)
132      </para>
133
134      <para>
135       This bug can cause data loss on standby servers at the moment they
136       start to accept hot-standby queries, by marking committed transactions
137       as uncommitted. The likelihood of such corruption is small unless, at
138       the time of standby startup, the primary server has executed many
139       updating transactions since its last checkpoint.  Symptoms include
140       missing rows, rows that should have been deleted being still visible,
141       and obsolete versions of updated rows being still visible alongside
142       their newer versions.
143      </para>
144
145      <para>
146       This bug was introduced in versions 9.3.0, 9.2.5, 9.1.10, and 9.0.14.
147       Standby servers that have only been running earlier releases are not
148       at risk.  It's recommended that standby servers that have ever run any
149       of the buggy releases be re-cloned from the primary (e.g., with a new
150       base backup) after upgrading.
151      </para>
152     </listitem>
153
154 <!--
155 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
156 Branch: master [1ce150b7b] 2013-11-29 21:47:21 -0300
157 Branch: REL9_3_STABLE [663d2e485] 2013-11-29 21:48:18 -0300
158 -->
159
160     <listitem>
161      <para>
162       Fix multiple bugs in update chain traversal (Andres Freund,
163       &Aacute;lvaro Herrera)
164      </para>
165
166      <para>
167       These bugs could result in incorrect behavior, such as locking or even
168       updating the wrong row, in the presence of concurrent updates.
169       Spurious <quote>unable to fetch updated version of tuple</> errors
170       were also possible.
171      </para>
172     </listitem>
173
174 <!--
175 Author: Tom Lane <tgl@sss.pgh.pa.us>
176 Branch: master [7db285afc] 2013-11-27 18:10:00 -0500
177 Branch: REL9_3_STABLE [d32e8387b] 2013-11-27 18:10:03 -0500
178 Branch: REL9_2_STABLE [024edb454] 2013-11-27 18:10:06 -0500
179 -->
180
181     <listitem>
182      <para>
183       Fix dangling-pointer problem in fast-path locking (Tom Lane)
184      </para>
185
186      <para>
187       This could lead to corruption of the lock data structures in shared
188       memory, causing <quote>lock already held</> and other odd errors.
189      </para>
190     </listitem>
191
192 <!--
193 Author: Tom Lane <tgl@sss.pgh.pa.us>
194 Branch: master [16e1b7a1b] 2013-11-29 16:41:00 -0500
195 Branch: REL9_3_STABLE [c357be2cd] 2013-11-29 16:41:03 -0500
196 -->
197
198     <listitem>
199      <para>
200       Fix assorted race conditions in timeout management (Tom Lane)
201      </para>
202
203      <para>
204       These errors could result in a server process becoming unresponsive
205       because it had blocked SIGALRM and/or SIGINT.
206      </para>
207     </listitem>
208
209 <!--
210 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
211 Branch: master [1df0122da] 2013-11-29 21:47:15 -0300
212 Branch: REL9_3_STABLE [215ac4ad6] 2013-11-29 21:48:15 -0300
213 Branch: REL9_2_STABLE [8f8c66614] 2013-11-29 21:59:15 -0300
214 Branch: REL9_1_STABLE [9f1e051ad] 2013-11-29 22:01:01 -0300
215 Branch: REL9_0_STABLE [6d0b8cd2f] 2013-11-29 22:02:15 -0300
216 -->
217
218     <listitem>
219      <para>
220       Truncate <filename>pg_multixact</> contents during WAL replay
221       (Andres Freund)
222      </para>
223
224      <para>
225       This avoids ever-increasing disk space consumption in standby servers.
226      </para>
227     </listitem>
228
229 <!--
230 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
231 Branch: master [4c697d8f4] 2013-11-18 09:51:09 +0200
232 Branch: REL9_3_STABLE [ea2bb1b47] 2013-11-18 10:16:31 +0200
233 Branch: REL9_2_STABLE [3379263b6] 2013-11-18 10:12:22 +0200
234 -->
235
236     <listitem>
237      <para>
238       Ensure an anti-wraparound <command>VACUUM</> counts a page as scanned
239       when it's only verified that no tuples need freezing (Sergey
240       Burladyan, Jeff Janes)
241      </para>
242
243      <para>
244       This bug could result in failing to
245       advance <structfield>relfrozenxid</>, so that the table would still be
246       thought to need another anti-wraparound vacuum.  In the worst case the
247       database might even shut down to prevent wraparound.
248      </para>
249     </listitem>
250
251 <!--
252 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
253 Branch: master [f54106f77] 2013-11-29 21:47:13 -0300
254 Branch: REL9_3_STABLE [f5f92bdc4] 2013-11-29 21:48:11 -0300
255 -->
256
257     <listitem>
258      <para>
259       Fix full-table-vacuum request mechanism for MultiXactIds (Andres Freund)
260      </para>
261
262      <para>
263       This bug could result in large amounts of useless autovacuum activity.
264      </para>
265     </listitem>
266
267 <!--
268 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
269 Branch: master [ac4ab97ec] 2013-11-08 22:21:42 +0200
270 Branch: REL9_3_STABLE [fc545a254] 2013-11-08 22:23:03 +0200
271 Branch: REL9_2_STABLE [9a45a6559] 2013-11-08 22:23:11 +0200
272 Branch: REL9_1_STABLE [3527a5f59] 2013-11-08 22:23:14 +0200
273 Branch: REL9_0_STABLE [4b099e1bf] 2013-11-08 22:23:16 +0200
274 Branch: REL8_4_STABLE [b6f82acef] 2013-11-08 22:23:19 +0200
275 -->
276
277     <listitem>
278      <para>
279       Fix race condition in GIN index posting tree page deletion (Heikki
280       Linnakangas)
281      </para>
282
283      <para>
284       This could lead to transient wrong answers or query failures.
285      </para>
286     </listitem>
287
288 <!--
289 Author: Tom Lane <tgl@sss.pgh.pa.us>
290 Branch: master [24ace4053] 2013-11-02 16:45:42 -0400
291 Branch: REL9_3_STABLE [86dab9c8a] 2013-11-02 16:45:52 -0400
292 Branch: REL9_2_STABLE [a1c3d54fb] 2013-11-02 16:45:57 -0400
293 -->
294
295     <listitem>
296      <para>
297       Fix <quote>unexpected spgdoinsert() failure</> error during SP-GiST
298       index creation (Teodor Sigaev)
299      </para>
300     </listitem>
301
302 <!--
303 Author: Kevin Grittner <kgrittn@postgresql.org>
304 Branch: master [732758db4] 2013-11-04 14:31:07 -0600
305 Branch: REL9_3_STABLE [5b6ee03a3] 2013-11-04 14:45:18 -0600
306 -->
307
308     <listitem>
309      <para>
310       Fix assorted bugs in materialized views (Kevin Grittner, Andres Freund)
311      </para>
312     </listitem>
313
314 <!--
315 Author: Tom Lane <tgl@sss.pgh.pa.us>
316 Branch: master [648bd05b1] 2013-11-11 10:42:57 -0500
317 Branch: REL9_3_STABLE [04e6ee402] 2013-11-11 10:43:00 -0500
318 -->
319
320     <listitem>
321      <para>
322       Re-allow duplicate table aliases if they're within aliased JOINs
323       (Tom Lane)
324      </para>
325
326      <para>
327       Historically <productname>PostgreSQL</> has accepted queries like
328 <programlisting>
329 SELECT ... FROM tab1 x CROSS JOIN (tab2 x CROSS JOIN tab3 y) z
330 </programlisting>
331       although a strict reading of the SQL standard would forbid the
332       duplicate usage of table alias <literal>x</>.  A misguided change in
333       9.3.0 caused it to reject some such cases that were formerly accepted.
334       Restore the previous behavior.
335      </para>
336     </listitem>
337
338 <!--
339 Author: Tom Lane <tgl@sss.pgh.pa.us>
340 Branch: master [b97ee66cc] 2013-11-08 11:36:57 -0500
341 Branch: REL9_3_STABLE [9548bee2b] 2013-11-08 11:37:00 -0500
342 Branch: REL9_2_STABLE [f7171c7e2] 2013-11-08 11:37:04 -0500
343 Branch: REL9_1_STABLE [af38d140c] 2013-11-08 11:37:08 -0500
344 Branch: REL9_0_STABLE [987f05e16] 2013-11-08 11:37:12 -0500
345 Branch: REL8_4_STABLE [90b07dd7b] 2013-11-08 11:37:17 -0500
346 -->
347
348     <listitem>
349      <para>
350       Avoid flattening a subquery whose <literal>SELECT</> list contains a
351       volatile function wrapped inside a sub-<literal>SELECT</> (Tom Lane)
352      </para>
353
354      <para>
355       This avoids unexpected results due to extra evaluations of the
356       volatile function.
357      </para>
358     </listitem>
359
360 <!--
361 Author: Tom Lane <tgl@sss.pgh.pa.us>
362 Branch: master [f19e92ed0] 2013-11-22 14:37:21 -0500
363 Branch: REL9_3_STABLE [6bc68af1d] 2013-11-22 14:37:25 -0500
364 Branch: REL9_2_STABLE [c0aa210f6] 2013-11-22 14:37:29 -0500
365 Branch: REL9_1_STABLE [92a752151] 2013-11-22 14:37:31 -0500
366 Branch: REL9_0_STABLE [612f953c7] 2013-11-22 14:37:35 -0500
367 Branch: REL8_4_STABLE [122ba5dad] 2013-11-22 14:37:38 -0500
368 -->
369
370     <listitem>
371      <para>
372       Fix planner's processing of non-simple-variable subquery outputs
373       nested within outer joins (Tom Lane)
374      </para>
375
376      <para>
377       This error could lead to incorrect plans for queries involving
378       multiple levels of subqueries within <literal>JOIN</> syntax.
379      </para>
380     </listitem>
381
382 <!--
383 Author: Tom Lane <tgl@sss.pgh.pa.us>
384 Branch: master [f3b3b8d5b] 2013-11-15 16:46:18 -0500
385 Branch: REL9_3_STABLE [1c0dfaa68] 2013-11-15 16:46:21 -0500
386 Branch: REL9_2_STABLE [51b6ae6bb] 2013-11-15 16:46:25 -0500
387 -->
388
389     <listitem>
390      <para>
391       Fix incorrect planning in cases where the same non-strict expression
392       appears in multiple <literal>WHERE</> and outer <literal>JOIN</>
393       equality clauses (Tom Lane)
394      </para>
395     </listitem>
396
397 <!--
398 Author: Tom Lane <tgl@sss.pgh.pa.us>
399 Branch: master [ebefbb5fd] 2013-11-11 16:36:27 -0500
400 Branch: REL9_3_STABLE [e243bd79d] 2013-11-11 16:36:41 -0500
401 Branch: REL9_2_STABLE [449d5acd7] 2013-11-11 16:36:44 -0500
402 -->
403
404     <listitem>
405      <para>
406       Fix planner crash with whole-row reference to a subquery (Tom Lane)
407      </para>
408     </listitem>
409
410 <!--
411 Author: Tom Lane <tgl@sss.pgh.pa.us>
412 Branch: master [5e900bc00] 2013-11-07 13:14:14 -0500
413 Branch: REL9_3_STABLE [5d0731da5] 2013-11-07 13:13:15 -0500
414 Branch: REL9_2_STABLE [aa8a2c3a6] 2013-11-07 13:13:19 -0500
415 Branch: REL9_1_STABLE [6e2c76248] 2013-11-07 13:13:47 -0500
416 -->
417
418     <listitem>
419      <para>
420       Fix incorrect generation of optimized MIN()/MAX() plans for
421       inheritance trees (Tom Lane)
422      </para>
423
424      <para>
425       The planner could fail in cases where the MIN()/MAX() argument was an
426       expression rather than a simple variable.
427      </para>
428     </listitem>
429
430 <!--
431 Author: Tom Lane <tgl@sss.pgh.pa.us>
432 Branch: master [bffd1ce92] 2013-11-01 16:09:48 -0400
433 Branch: REL9_3_STABLE [14d4548f1] 2013-11-01 16:09:52 -0400
434 Branch: REL9_2_STABLE [2f2507e38] 2013-11-01 16:09:57 -0400
435 Branch: REL9_1_STABLE [8c0116a4c] 2013-11-01 16:10:00 -0400
436 Branch: REL9_0_STABLE [0c8462fd5] 2013-11-01 16:10:03 -0400
437 Branch: REL8_4_STABLE [d74eaf374] 2013-11-01 16:10:08 -0400
438 -->
439
440     <listitem>
441      <para>
442       Fix premature deletion of temporary files (Andres Freund)
443      </para>
444     </listitem>
445
446 <!--
447 Author: Tom Lane <tgl@sss.pgh.pa.us>
448 Branch: master [b006f4ddb] 2013-11-03 11:33:05 -0500
449 Branch: REL9_3_STABLE [da2c6a919] 2013-11-03 11:33:09 -0500
450 Branch: REL9_2_STABLE [85de12624] 2013-11-03 11:33:13 -0500
451 -->
452
453     <listitem>
454      <para>
455       Prevent intra-transaction memory leak when printing range values
456       (Tom Lane)
457      </para>
458
459      <para>
460       This fix actually cures transient memory leaks in any datatype output
461       function, but range types are the only ones known to have had a
462       significant problem.
463      </para>
464     </listitem>
465
466 <!--
467 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
468 Branch: master [138184adc] 2013-10-24 15:27:40 +0300
469 Branch: REL9_3_STABLE [bb604d03a] 2013-10-24 15:28:15 +0300
470 -->
471
472     <listitem>
473      <para>
474       Fix memory leaks when reloading configuration files (Heikki
475       Linnakangas, Hari Babu)
476      </para>
477     </listitem>
478
479 <!--
480 Author: Tom Lane <tgl@sss.pgh.pa.us>
481 Branch: master [c28b289bf] 2013-11-07 14:41:36 -0500
482 Branch: REL9_3_STABLE [df5d5f1dc] 2013-11-07 14:41:39 -0500
483 Branch: REL9_2_STABLE [8bd5a6af6] 2013-11-07 14:41:43 -0500
484 -->
485
486     <listitem>
487      <para>
488       Prevent incorrect display of dropped columns in NOT NULL and CHECK
489       constraint violation messages (Michael Paquier and Tom Lane)
490      </para>
491     </listitem>
492
493 <!--
494 Author: Tom Lane <tgl@sss.pgh.pa.us>
495 Branch: master [bb45c6404] 2013-11-06 13:33:09 -0500
496 Branch: REL9_3_STABLE [66e6daa3e] 2013-11-06 13:33:18 -0500
497 Branch: REL9_2_STABLE [74aea2af9] 2013-11-06 13:26:38 -0500
498 -->
499
500     <listitem>
501      <para>
502       Allow default arguments and named-argument notation for window
503       functions (Tom Lane)
504      </para>
505
506      <para>
507       Previously, these cases were likely to crash.
508      </para>
509     </listitem>
510
511 <!--
512 Author: Tom Lane <tgl@sss.pgh.pa.us>
513 Branch: master [0b7e660d6] 2013-11-11 13:36:38 -0500
514 Branch: REL9_3_STABLE [fbbd150a2] 2013-11-11 13:36:42 -0500
515 -->
516
517     <listitem>
518      <para>
519       Suppress trailing whitespace on each line when pretty-printing rules
520       and views (Tom Lane)
521      </para>
522
523      <para>
524       9.3.0 generated such whitespace in many more cases than previous
525       versions did.  To reduce unexpected behavioral changes, suppress
526       unnecessary whitespace in all cases.
527      </para>
528     </listitem>
529
530 <!--
531 Author: Peter Eisentraut <peter_e@gmx.net>
532 Branch: master [4053189d5] 2013-11-23 07:25:37 -0500
533 Branch: REL9_3_STABLE [0f8ff3e46] 2013-11-23 07:30:16 -0500
534 Branch: REL9_2_STABLE [654e006bb] 2013-11-23 07:30:45 -0500
535 Branch: REL9_1_STABLE [e1f7173ea] 2013-11-23 07:31:07 -0500
536 Branch: REL9_0_STABLE [44032290d] 2013-11-23 07:31:32 -0500
537 Branch: REL8_4_STABLE [240766a6e] 2013-11-23 07:31:53 -0500
538 -->
539
540     <listitem>
541      <para>
542       Fix possible read past end of memory in rule printing (Peter Eisentraut)
543      </para>
544     </listitem>
545
546 <!--
547 Author: Tom Lane <tgl@sss.pgh.pa.us>
548 Branch: master [45e02e323] 2013-11-23 20:03:56 -0500
549 Branch: REL9_3_STABLE [c4d3cd3dc] 2013-11-23 20:04:00 -0500
550 Branch: REL9_2_STABLE [96ac8b518] 2013-11-23 20:04:03 -0500
551 Branch: REL9_1_STABLE [7b6352875] 2013-11-23 20:04:06 -0500
552 Branch: REL9_0_STABLE [747dd9724] 2013-11-23 20:04:10 -0500
553 Branch: REL8_4_STABLE [d0378c8a8] 2013-11-23 20:04:13 -0500
554 -->
555
556     <listitem>
557      <para>
558       Fix array slicing of <type>int2vector</> and <type>oidvector</> values
559       (Tom Lane)
560      </para>
561
562      <para>
563       Expressions of this kind are now implicitly promoted to
564       regular <type>int2</> or <type>oid</> arrays.
565      </para>
566     </listitem>
567
568 <!--
569 Author: Andrew Dunstan <andrew@dunslane.net>
570 Branch: master [bbe4deac1] 2013-10-17 11:12:48 -0400
571 Branch: REL9_3_STABLE [bfb327ac1] 2013-10-17 11:09:55 -0400
572 -->
573
574     <listitem>
575      <para>
576       Return a valid JSON value when converting an empty <type>hstore</> value
577       to <type>json</>
578       (Oskari Saarenmaa)
579      </para>
580     </listitem>
581
582 <!--
583 Author: Tom Lane <tgl@sss.pgh.pa.us>
584 Branch: master [631dc390f] 2013-11-01 12:13:18 -0400
585 Branch: REL9_3_STABLE [2650c5cf4] 2013-11-01 12:13:23 -0400
586 Branch: REL9_2_STABLE [2e2134954] 2013-11-01 12:13:26 -0400
587 Branch: REL9_1_STABLE [172ba4578] 2013-11-01 12:13:29 -0400
588 Branch: REL9_0_STABLE [d81cd0430] 2013-11-01 12:13:33 -0400
589 Branch: REL8_4_STABLE [01499ea33] 2013-11-01 12:13:38 -0400
590 -->
591
592     <listitem>
593      <para>
594       Fix incorrect behaviors when using a SQL-standard, simple GMT offset
595       timezone (Tom Lane)
596      </para>
597
598      <para>
599       In some cases, the system would use the simple GMT offset value when
600       it should have used the regular timezone setting that had prevailed
601       before the simple offset was selected.  This change also causes
602       the <function>timeofday</> function to honor the simple GMT offset
603       zone.
604      </para>
605     </listitem>
606
607 <!--
608 Author: Tom Lane <tgl@sss.pgh.pa.us>
609 Branch: master [f145454d5] 2013-11-23 18:24:26 -0500
610 Branch: REL9_3_STABLE [69eb86169] 2013-11-23 18:24:42 -0500
611 Branch: REL9_2_STABLE [e86f2a052] 2013-11-23 18:24:46 -0500
612 Branch: REL9_1_STABLE [b2502ecef] 2013-11-23 18:24:50 -0500
613 Branch: REL9_0_STABLE [ec6a6a268] 2013-11-23 18:24:54 -0500
614 Branch: REL8_4_STABLE [3482f2986] 2013-11-23 18:25:00 -0500
615 -->
616
617     <listitem>
618      <para>
619       Prevent possible misbehavior when logging translations of Windows
620       error codes (Tom Lane)
621      </para>
622     </listitem>
623
624 <!--
625 Author: Tom Lane <tgl@sss.pgh.pa.us>
626 Branch: master [79193c75f] 2013-11-29 18:34:07 -0500
627 Branch: REL9_3_STABLE [a9380b5c3] 2013-11-29 18:34:11 -0500
628 Branch: REL9_2_STABLE [19af7d4f0] 2013-11-29 18:34:14 -0500
629 Branch: REL9_1_STABLE [8c72b20e3] 2013-11-29 18:34:18 -0500
630 Branch: REL9_0_STABLE [4ab4e5c6b] 2013-11-29 18:34:22 -0500
631 Branch: REL8_4_STABLE [6cb109a81] 2013-11-29 18:34:25 -0500
632 -->
633
634     <listitem>
635      <para>
636       Properly quote generated command lines in <application>pg_ctl</>
637       (Naoya Anzai and Tom Lane)
638      </para>
639
640      <para>
641       This fix applies only to Windows.
642      </para>
643     </listitem>
644
645 <!--
646 Author: Kevin Grittner <kgrittn@postgresql.org>
647 Branch: master [4bd371f6f] 2013-11-30 11:24:56 -0600
648 Branch: REL9_3_STABLE [53b0f2134] 2013-11-30 11:33:04 -0600
649 Branch: REL9_2_STABLE [27b33245a] 2013-11-30 11:33:54 -0600
650 Branch: REL9_1_STABLE [4bdccd842] 2013-11-30 12:06:48 -0600
651 Branch: REL9_0_STABLE [52898e005] 2013-11-30 12:07:05 -0600
652 Branch: REL8_4_STABLE [ac7113bb3] 2013-11-30 12:07:18 -0600
653 -->
654
655     <listitem>
656      <para>
657       Fix <application>pg_dumpall</> to work when a source database
658       sets <link
659       linkend="guc-default-transaction-read-only"><varname>default_transaction_read_only</></link>
660       via <command>ALTER DATABASE SET</> (Kevin Grittner)
661      </para>
662
663      <para>
664       Previously, the generated script would fail during restore.
665      </para>
666     </listitem>
667
668 <!--
669 Author: Fujii Masao <fujii@postgresql.org>
670 Branch: master [38f432898] 2013-11-21 21:52:03 +0900
671 Branch: REL9_3_STABLE [844534dd4] 2013-11-21 21:54:19 +0900
672 -->
673
674     <listitem>
675      <para>
676       Fix <application>pg_isready</> to handle its <option>-d</> option
677       properly (Fabr&iacute;zio de Royes Mello and Fujii Masao)
678      </para>
679     </listitem>
680
681 <!--
682 Author: Peter Eisentraut <peter_e@gmx.net>
683 Branch: master [bd5a9a50e] 2013-11-18 22:01:59 -0500
684 Branch: REL9_3_STABLE [8ca75671b] 2013-11-18 22:02:36 -0500
685 -->
686
687     <listitem>
688      <para>
689       Report out-of-disk-space failures properly
690       in <application>pg_upgrade</> (Peter Eisentraut)
691      </para>
692     </listitem>
693
694 <!--
695 Author: Michael Meskes <meskes@postgresql.org>
696 Branch: master [51867a0f9] 2013-11-27 11:02:13 +0100
697 Branch: REL9_3_STABLE [dcb05900b] 2013-11-27 11:14:52 +0100
698 Branch: REL9_2_STABLE [0cedfa766] 2013-11-27 11:15:13 +0100
699 Branch: REL9_1_STABLE [9a1c6dd43] 2013-11-27 11:15:34 +0100
700 -->
701
702     <listitem>
703      <para>
704       Make <application>ecpg</> search for quoted cursor names
705       case-sensitively (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
706      </para>
707     </listitem>
708
709 <!--
710 Author: Michael Meskes <meskes@postgresql.org>
711 Branch: master [b46fa3210] 2013-11-26 17:42:32 +0100
712 Branch: REL9_3_STABLE [b3866bc2b] 2013-11-26 17:32:40 +0100
713 Branch: REL9_2_STABLE [b05c415c8] 2013-11-26 17:32:26 +0100
714 Branch: REL9_1_STABLE [5bffd42a3] 2013-11-26 17:32:06 +0100
715 Branch: REL9_0_STABLE [7bee2e3e5] 2013-11-26 17:31:39 +0100
716 Branch: REL8_4_STABLE [3b41a7c74] 2013-11-26 17:30:24 +0100
717 -->
718
719     <listitem>
720      <para>
721       Fix <application>ecpg</>'s processing of lists of variables
722       declared <type>varchar</> (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
723      </para>
724     </listitem>
725
726 <!--
727 Author: Tom Lane <tgl@sss.pgh.pa.us>
728 Branch: master [64d15e424] 2013-11-23 22:46:43 -0500
729 Branch: REL9_3_STABLE [af1288e68] 2013-11-23 22:46:03 -0500
730 Branch: REL9_2_STABLE [b6da09fcb] 2013-11-23 22:46:08 -0500
731 Branch: REL9_1_STABLE [8bf45ea8b] 2013-11-23 22:46:11 -0500
732 Branch: REL9_0_STABLE [cd5316f67] 2013-11-23 22:46:15 -0500
733 Branch: REL8_4_STABLE [2c3b7d224] 2013-11-23 22:46:21 -0500
734 -->
735
736     <listitem>
737      <para>
738       Make <filename>contrib/lo</> defend against incorrect trigger definitions
739       (Marc Cousin)
740      </para>
741     </listitem>
742
743 <!--
744 Author: Tom Lane <tgl@sss.pgh.pa.us>
745 Branch: master [335470251] 2013-12-01 14:11:44 -0500
746 Branch: REL9_3_STABLE [4e213be86] 2013-12-01 14:12:01 -0500
747 Branch: REL9_2_STABLE [c89acb41f] 2013-12-01 14:12:05 -0500
748 Branch: REL9_1_STABLE [99e7d2ad1] 2013-12-01 14:12:08 -0500
749 Branch: REL9_0_STABLE [47430452a] 2013-12-01 14:12:12 -0500
750 Branch: REL8_4_STABLE [0526889a6] 2013-12-01 14:12:17 -0500
751 -->
752
753     <listitem>
754      <para>
755       Update time zone data files to <application>tzdata</> release 2013h
756       for DST law changes in Argentina, Brazil, Jordan, Libya,
757       Liechtenstein, Morocco, and Palestine.  Also, new timezone
758       abbreviations WIB, WIT, WITA for Indonesia.
759      </para>
760     </listitem>
761
762    </itemizedlist>
763
764   </sect2>
765  </sect1>
766
767  <sect1 id="release-9-3-1">
768   <title>Release 9.3.1</title>
769
770   <note>
771   <title>Release Date</title>
772   <simpara>2013-10-10</simpara>
773   </note>
774
775   <para>
776    This release contains a variety of fixes from 9.3.0.
777    For information about new features in the 9.3 major release, see
778    <xref linkend="release-9-3">.
779   </para>
780
781   <sect2>
782    <title>Migration to Version 9.3.1</title>
783
784    <para>
785     A dump/restore is not required for those running 9.3.X.
786    </para>
787
788    <para>
789     However, if you use the <literal>hstore</> extension, see the
790     first changelog entry.
791    </para>
792
793   </sect2>
794
795   <sect2>
796    <title>Changes</title>
797
798    <itemizedlist>
799
800     <listitem>
801      <para>
802       Ensure new-in-9.3 JSON functionality is added to the <literal>hstore</>
803       extension during an update (Andrew Dunstan)
804      </para>
805
806      <para>
807       Users who upgraded a pre-9.3 database containing <literal>hstore</>
808       should execute
809 <programlisting>
810 ALTER EXTENSION hstore UPDATE;
811 </programlisting>
812       after installing 9.3.1, to add two new JSON functions and a cast.
813       (If <literal>hstore</> is already up to date, this command does
814       nothing.)
815      </para>
816     </listitem>
817
818     <listitem>
819      <para>
820       Fix memory leak when creating B-tree indexes on range columns
821       (Heikki Linnakangas)
822      </para>
823     </listitem>
824
825     <listitem>
826      <para>
827       Fix memory leak caused by <function>lo_open()</function> failure
828       (Heikki Linnakangas)
829      </para>
830     </listitem>
831
832     <listitem>
833      <para>
834       Serializable snapshot fixes (Kevin Grittner, Heikki Linnakangas)
835      </para>
836     </listitem>
837
838     <listitem>
839      <para>
840       Fix deadlock bug in libpq when using SSL (Stephen Frost)
841      </para>
842     </listitem>
843
844     <listitem>
845      <para>
846       Fix timeline handling bugs in <application>pg_receivexlog</>
847       (Heikki Linnakangas, Andrew Gierth)
848      </para>
849     </listitem>
850
851     <listitem>
852      <para>
853       Prevent <command>CREATE FUNCTION</> from checking <command>SET</>
854       variables unless function body checking is enabled (Tom Lane)
855      </para>
856     </listitem>
857
858     <listitem>
859      <para>
860       Remove rare inaccurate warning during vacuum of index-less tables
861       (Heikki Linnakangas)
862      </para>
863     </listitem>
864
865    </itemizedlist>
866
867   </sect2>
868  </sect1>
869
870  <sect1 id="release-9-3">
871   <title>Release 9.3</title>
872
873   <note>
874    <title>Release Date</title>
875    <simpara>2013-09-09</simpara>
876   </note>
877
878   <sect2>
879    <title>Overview</title>
880
881    <para>
882     Major enhancements in <productname>PostgreSQL</> 9.3 include:
883    </para>
884
885    <!-- This list duplicates items below, but without authors or details-->
886
887    <itemizedlist>
888
889     <listitem>
890      <para>
891       Add <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
892       views</link>
893      </para>
894     </listitem>
895
896     <listitem>
897      <para>
898       Make simple views <link
899       linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
900      </para>
901     </listitem>
902
903     <listitem>
904      <para>
905       Add many features for the <type>JSON</> data type,
906       including <link linkend="functions-json">operators and functions</link>
907       to extract elements from <type>JSON</> values
908      </para>
909     </listitem>
910
911     <listitem>
912      <para>
913       Implement <acronym>SQL</>-standard <link
914       linkend="queries-lateral"><literal>LATERAL</></link> option for
915       <literal>FROM</>-clause subqueries and function calls
916      </para>
917     </listitem>
918
919     <listitem>
920      <para>
921       Allow <link linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data
922       wrappers</link> to support writes (inserts/updates/deletes) on foreign
923       tables
924      </para>
925     </listitem>
926
927     <listitem>
928      <para>
929       Add a <link linkend="postgres-fdw"><productname>Postgres</> foreign
930       data wrapper</link> to allow access to
931       other <productname>Postgres</> servers
932      </para>
933     </listitem>
934
935     <listitem>
936      <para>
937       Add support for <link linkend="event-triggers">event triggers</link>
938      </para>
939     </listitem>
940
941     <listitem>
942      <para>
943       Add optional ability to <link
944       linkend="app-initdb-data-checksums">checksum</link> data pages and
945       report corruption
946      </para>
947     </listitem>
948
949     <listitem>
950      <para>
951       Prevent non-key-field row updates from blocking foreign key checks
952      </para>
953     </listitem>
954
955     <listitem>
956      <para>
957       Greatly reduce System V <link linkend="sysvipc">shared
958       memory</link> requirements
959      </para>
960     </listitem>
961
962    </itemizedlist>
963
964    <para>
965     The above items are explained in more detail in the sections below.
966    </para>
967
968   </sect2>
969
970   <sect2>
971
972   <title>Migration to Version 9.3</title>
973
974    <para>
975     A dump/restore using <link
976     linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, or use
977     of <link linkend="pgupgrade"><application>pg_upgrade</></link>, is
978     required for those wishing to migrate data from any previous release.
979    </para>
980
981    <para>
982     Version 9.3 contains a number of changes that may affect compatibility
983     with previous releases.  Observe the following incompatibilities:
984    </para>
985
986    <sect3>
987     <title>Server Settings</title>
988
989      <itemizedlist>
990
991       <listitem>
992        <para>
993         Rename <varname>replication_timeout</> to <link
994         linkend="guc-wal-sender-timeout"><varname>wal_sender_timeout</></link>
995         (Amit Kapila)
996        </para>
997
998        <para>
999         This setting controls the <link
1000         linkend="wal"><acronym>WAL</></link> sender timeout.
1001        </para>
1002       </listitem>
1003
1004       <listitem>
1005        <para>
1006         Require superuser privileges to set <link
1007         linkend="guc-commit-delay"><varname>commit_delay</></link>
1008         because it can now potentially delay other sessions (Simon Riggs)
1009        </para>
1010       </listitem>
1011
1012       <listitem>
1013        <para>
1014         Allow in-memory sorts to use their full memory allocation (Jeff Janes)
1015        </para>
1016
1017        <para>
1018         Users who have set <link
1019         linkend="guc-work-mem"><varname>work_mem</></link> based on the
1020         previous behavior may need to revisit that setting.
1021        </para>
1022       </listitem>
1023
1024      </itemizedlist>
1025
1026    </sect3>
1027
1028    <sect3>
1029     <title>Other</title>
1030
1031      <itemizedlist>
1032
1033       <listitem>
1034        <para>
1035         Throw an error if a tuple to be updated or deleted has already been
1036         updated or deleted by a <literal>BEFORE</> trigger (Kevin Grittner)
1037        </para>
1038
1039        <para>
1040         Formerly, the originally-intended update was silently skipped,
1041         resulting in logical inconsistency since the trigger might have
1042         propagated data to other places based on the intended update.
1043         Now an error is thrown to prevent the inconsistent results from being
1044         committed.  If this change affects your application, the best solution
1045         is usually to move the data-propagation actions to
1046         an <literal>AFTER</> trigger.
1047        </para>
1048
1049        <para>
1050         This error will also be thrown if a query invokes a volatile function
1051         that modifies rows that are later modified by the query itself.
1052         Such cases likewise previously resulted in silently skipping updates.
1053        </para>
1054       </listitem>
1055
1056       <listitem>
1057        <para>
1058         Change multicolumn <link linkend="SQL-CREATETABLE"><literal>ON UPDATE
1059         SET NULL/SET DEFAULT</></link> foreign key actions to affect
1060         all columns of the constraint, not just those changed in the
1061         <command>UPDATE</> (Tom Lane)
1062        </para>
1063
1064        <para>
1065         Previously, we would set only those referencing columns that
1066         correspond to referenced columns that were changed by
1067         the <command>UPDATE</>.  This was what was required by SQL-92,
1068         but more recent editions of the SQL standard specify the new behavior.
1069        </para>
1070       </listitem>
1071
1072       <listitem>
1073        <para>
1074         Force cached plans to be replanned if the <link
1075         linkend="guc-search-path"><varname>search_path</></link> changes
1076         (Tom Lane)
1077        </para>
1078
1079        <para>
1080         Previously, cached plans already generated in the current session were
1081         not redone if the query was re-executed with a
1082         new <varname>search_path</> setting, resulting in surprising behavior.
1083        </para>
1084       </listitem>
1085
1086       <listitem>
1087        <para>
1088         Fix <link
1089         linkend="functions-formatting-table"><function>to_number()</></link>
1090         to properly handle a period used as a thousands separator (Tom Lane)
1091        </para>
1092
1093        <para>
1094         Previously, a period was considered to be a decimal point even when
1095         the locale says it isn't and the <literal>D</> format code is used to
1096         specify use of the locale-specific decimal point.  This resulted in
1097         wrong answers if <literal>FM</> format was also used.
1098        </para>
1099       </listitem>
1100
1101       <listitem>
1102        <para>
1103         Fix <literal>STRICT</> non-set-returning functions that have
1104         set-returning functions in their arguments to properly return null
1105         rows (Tom Lane)
1106        </para>
1107
1108        <para>
1109         A null value passed to the strict function should result in a null
1110         output, but instead, that output row was suppressed entirely.
1111        </para>
1112       </listitem>
1113
1114       <listitem>
1115        <para>
1116         Store <link linkend="wal"><acronym>WAL</></link> in a continuous
1117         stream, rather than skipping the last 16MB segment every 4GB
1118         (Heikki Linnakangas)
1119        </para>
1120
1121        <para>
1122         Previously, <acronym>WAL</> files with names ending in <literal>FF</>
1123         were not used because of this skipping.  If you have <acronym>WAL</>
1124         backup or restore scripts that took this behavior into account, they
1125         will need to be adjusted.
1126        </para>
1127       </listitem>
1128
1129       <listitem>
1130        <para>
1131         In <link
1132         linkend="catalog-pg-constraint"><structname>pg_constraint.confmatchtype</></link>,
1133         store the default foreign key match type (non-<literal>FULL</>,
1134         non-<literal>PARTIAL</>) as <literal>s</> for <quote>simple</>
1135         (Tom Lane)
1136        </para>
1137
1138        <para>
1139         Previously this case was represented by <literal>u</>
1140         for <quote>unspecified</>.
1141        </para>
1142       </listitem>
1143
1144      </itemizedlist>
1145
1146    </sect3>
1147
1148   </sect2>
1149
1150   <sect2>
1151    <title>Changes</title>
1152
1153    <para>
1154     Below you will find a detailed account of the changes between
1155     <productname>PostgreSQL</productname> 9.3 and the previous major
1156     release.
1157    </para>
1158
1159    <sect3>
1160     <title>Server</title>
1161
1162     <sect4>
1163      <title>Locking</title>
1164
1165      <itemizedlist>
1166
1167       <listitem>
1168        <para>
1169         Prevent non-key-field row updates from blocking foreign key checks
1170         (&Aacute;lvaro Herrera, Noah Misch, Andres Freund, Alexander
1171         Shulgin, Marti Raudsepp, Alexander Shulgin)
1172        </para>
1173
1174        <para>
1175         This change improves concurrency and reduces the probability of
1176         deadlocks when updating tables involved in a foreign-key constraint.
1177         <command>UPDATE</>s that do not change any columns referenced in a
1178         foreign key now take the new <literal>NO KEY UPDATE</> lock mode on
1179         the row, while foreign key checks use the new <literal>KEY SHARE</>
1180         lock mode, which does not conflict with <literal>NO KEY UPDATE</>.
1181         So there is no blocking unless a foreign-key column is changed.
1182        </para>
1183       </listitem>
1184
1185       <listitem>
1186        <para>
1187         Add configuration variable <link
1188         linkend="guc-lock-timeout"><varname>lock_timeout</></link> to
1189         allow limiting how long a session will wait to acquire any one lock
1190         (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
1191        </para>
1192       </listitem>
1193
1194      </itemizedlist>
1195
1196     </sect4>
1197
1198     <sect4>
1199      <title>Indexes</title>
1200
1201      <itemizedlist>
1202
1203       <listitem>
1204        <para>
1205         Add <link linkend="rangetypes-indexing"><acronym>SP-GiST</></link>
1206         support for range data types (Alexander Korotkov)
1207        </para>
1208       </listitem>
1209
1210       <listitem>
1211        <para>
1212         Allow <link linkend="GiST"><acronym>GiST</></link> indexes to be
1213         unlogged (Jeevan Chalke)
1214        </para>
1215       </listitem>
1216
1217       <listitem>
1218        <para>
1219         Improve performance of <acronym>GiST</> index insertion by randomizing
1220         the choice of which page to descend to when there are multiple equally
1221         good alternatives (Heikki Linnakangas)
1222        </para>
1223       </listitem>
1224
1225       <listitem>
1226        <para>
1227         Improve concurrency of hash index operations (Robert Haas)
1228        </para>
1229       </listitem>
1230
1231      </itemizedlist>
1232
1233     </sect4>
1234
1235     <sect4>
1236      <title>Optimizer</title>
1237
1238      <itemizedlist>
1239
1240       <listitem>
1241        <para>
1242         Collect and use histograms of upper and lower bounds, as well as range
1243         lengths, for <link linkend="rangetypes">range types</link>
1244         (Alexander Korotkov)
1245        </para>
1246       </listitem>
1247
1248       <listitem>
1249        <para>
1250         Improve optimizer's cost estimation for index access (Tom Lane)
1251        </para>
1252       </listitem>
1253
1254       <listitem>
1255        <para>
1256         Improve optimizer's hash table size estimate for
1257         doing <literal>DISTINCT</> via hash aggregation (Tom Lane)
1258        </para>
1259       </listitem>
1260
1261       <listitem>
1262        <para>
1263         Suppress no-op Result and Limit plan nodes
1264         (Kyotaro Horiguchi, Amit Kapila, Tom Lane)
1265        </para>
1266       </listitem>
1267
1268       <listitem>
1269        <para>
1270         Reduce optimizer overhead by not keeping plans on the basis of cheap
1271         startup cost when the optimizer only cares about total cost overall
1272         (Tom Lane)
1273        </para>
1274       </listitem>
1275
1276      </itemizedlist>
1277
1278     </sect4>
1279
1280     <sect4>
1281      <title>General Performance</title>
1282
1283      <itemizedlist>
1284
1285       <listitem>
1286        <para>
1287         Add <link linkend="SQL-COPY"><command>COPY FREEZE</></link>
1288         option to avoid the overhead of marking tuples as frozen later
1289         (Simon Riggs, Jeff Davis)
1290        </para>
1291       </listitem>
1292
1293       <listitem>
1294        <para>
1295         Improve performance of <link
1296         linkend="datatype-numeric"><type>NUMERIC</></link> calculations
1297         (Kyotaro Horiguchi)
1298        </para>
1299       </listitem>
1300
1301       <listitem>
1302        <para>
1303         Improve synchronization of sessions waiting for <link
1304         linkend="guc-commit-delay"><varname>commit_delay</></link>
1305         (Peter Geoghegan)
1306        </para>
1307
1308        <para>
1309         This greatly improves the usefulness of <varname>commit_delay</>.
1310        </para>
1311       </listitem>
1312
1313       <listitem>
1314        <para>
1315         Improve performance of the <link
1316         linkend="SQL-CREATETABLE"><command>CREATE TEMPORARY TABLE ... ON
1317         COMMIT DELETE ROWS</></link> option by not truncating such temporary
1318         tables in transactions that haven't touched any temporary tables
1319         (Heikki Linnakangas)
1320        </para>
1321       </listitem>
1322
1323       <listitem>
1324        <para>
1325         Make vacuum recheck visibility after it has removed expired tuples
1326         (Pavan Deolasee)
1327        </para>
1328
1329        <para>
1330         This increases the chance of a page being marked as all-visible.
1331        </para>
1332       </listitem>
1333
1334       <listitem>
1335        <para>
1336         Add per-resource-owner lock caches (Jeff Janes)
1337        </para>
1338
1339        <para>
1340         This speeds up lock bookkeeping at statement completion in
1341         multi-statement transactions that hold many locks; it is particularly
1342         useful for <application>pg_dump</>.
1343        </para>
1344       </listitem>
1345
1346       <listitem>
1347        <para>
1348         Avoid scanning the entire relation cache at commit of a transaction
1349         that creates a new relation (Jeff Janes)
1350        </para>
1351
1352        <para>
1353         This speeds up sessions that create many tables in successive
1354         small transactions, such as a <application>pg_restore</> run.
1355        </para>
1356       </listitem>
1357
1358       <listitem>
1359        <para>
1360         Improve performance of transactions that drop many relations
1361         (Tomas Vondra)
1362        </para>
1363       </listitem>
1364
1365      </itemizedlist>
1366
1367     </sect4>
1368
1369     <sect4>
1370      <title>Monitoring</title>
1371
1372      <itemizedlist>
1373
1374       <listitem>
1375        <para>
1376         Add optional ability to <link
1377         linkend="app-initdb-data-checksums">checksum</link> data pages and
1378         report corruption (Simon Riggs, Jeff Davis, Greg Smith, Ants Aasma)
1379        </para>
1380
1381        <para>
1382         The checksum option can be set during <link
1383         linkend="APP-INITDB">initdb</link>.
1384        </para>
1385       </listitem>
1386
1387       <listitem>
1388        <para>
1389         Split the <link linkend="monitoring-stats">statistics collector's</link>
1390         data file into separate global and per-database files (Tomas Vondra)
1391        </para>
1392
1393        <para>
1394         This reduces the I/O required for statistics tracking.
1395        </para>
1396       </listitem>
1397
1398       <listitem>
1399        <para>
1400         Fix the statistics collector to operate properly in cases where the
1401         system clock goes backwards (Tom Lane)
1402        </para>
1403
1404        <para>
1405         Previously, statistics collection would stop until the time again
1406         reached the latest time previously recorded.
1407        </para>
1408       </listitem>
1409
1410       <listitem>
1411        <para>
1412         Emit an informative message to postmaster standard error when we
1413         are about to stop logging there
1414         (Tom Lane)
1415        </para>
1416
1417        <para>
1418         This should help reduce user confusion about where to look for log
1419         output in common configurations that log to standard error only during
1420         postmaster startup.
1421        </para>
1422       </listitem>
1423
1424      </itemizedlist>
1425
1426     </sect4>
1427
1428     <sect4>
1429      <title>Authentication</title>
1430
1431      <itemizedlist>
1432
1433       <listitem>
1434        <para>
1435         When an authentication failure occurs, log the relevant
1436         <link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></link>
1437         line, to ease debugging of unintended failures
1438         (Magnus Hagander)
1439        </para>
1440       </listitem>
1441
1442       <listitem>
1443        <para>
1444         Improve <link linkend="auth-ldap"><acronym>LDAP</></link> error
1445         reporting and documentation (Peter Eisentraut)
1446        </para>
1447       </listitem>
1448
1449       <listitem>
1450        <para>
1451         Add support for specifying <acronym>LDAP</> authentication parameters
1452         in <acronym>URL</> format, per RFC 4516 (Peter Eisentraut)
1453        </para>
1454       </listitem>
1455
1456       <listitem>
1457        <para>
1458         Change the <link
1459         linkend="guc-ssl-ciphers"><varname>ssl_ciphers</></link> parameter
1460         to start with <literal>DEFAULT</>, rather than <literal>ALL</>,
1461         then remove insecure ciphers (Magnus Hagander)
1462        </para>
1463
1464        <para>
1465         This should yield a more appropriate SSL cipher set.
1466        </para>
1467       </listitem>
1468
1469       <listitem>
1470        <para>
1471         Parse and load <link
1472         linkend="auth-username-maps"><filename>pg_ident.conf</></link>
1473         once, not during each connection (Amit Kapila)
1474        </para>
1475
1476        <para>
1477         This is similar to how <filename>pg_hba.conf</> is processed.
1478        </para>
1479       </listitem>
1480
1481      </itemizedlist>
1482
1483     </sect4>
1484
1485     <sect4>
1486      <title>Server Settings</title>
1487
1488      <itemizedlist>
1489
1490       <listitem>
1491        <para>
1492         Greatly reduce System V <link linkend="sysvipc">shared
1493         memory</link> requirements (Robert Haas)
1494        </para>
1495
1496        <para>
1497         On Unix-like systems, <function>mmap()</> is now used for most
1498         of <productname>PostgreSQL</>'s shared memory.  For most users, this
1499         will eliminate any need to adjust kernel parameters for shared memory.
1500        </para>
1501       </listitem>
1502
1503       <listitem>
1504        <para>
1505         Allow the postmaster to listen on multiple Unix-domain sockets
1506         (Honza Hor&aacute;k)
1507        </para>
1508
1509        <para>
1510         The configuration parameter
1511         <varname>unix_socket_directory</> is replaced by <link
1512         linkend="guc-unix-socket-directories"><varname>unix_socket_directories</></link>,
1513         which accepts a list of directories.
1514        </para>
1515       </listitem>
1516
1517       <listitem>
1518        <para>
1519         Allow a directory of configuration files to be processed (Magnus
1520         Hagander, Greg Smith, Selena Deckelmann)
1521        </para>
1522
1523        <para>
1524         Such a directory is specified with <link
1525         linkend="config-includes"><varname>include_dir</></link> in the server
1526         configuration file.
1527        </para>
1528       </listitem>
1529
1530       <listitem>
1531        <para>
1532         Increase the maximum <link
1533         linkend="APP-INITDB">initdb</link>-configured value for <link
1534         linkend="guc-shared-buffers"><varname>shared_buffers</></link>
1535         to 128MB (Robert Haas)
1536        </para>
1537
1538        <para>
1539         This is the maximum value that initdb will attempt to set in <link
1540         linkend="config-setting-configuration-file"><filename>postgresql.conf</></link>;
1541         the previous maximum was 32MB.
1542        </para>
1543       </listitem>
1544
1545       <listitem>
1546        <para>
1547         Remove the <link linkend="guc-external-pid-file">external
1548         <acronym>PID</> file</link>, if any, on postmaster exit
1549         (Peter Eisentraut)
1550        </para>
1551       </listitem>
1552
1553      </itemizedlist>
1554
1555     </sect4>
1556
1557    </sect3>
1558
1559    <sect3>
1560     <title>Replication and Recovery</title>
1561
1562      <itemizedlist>
1563
1564       <listitem>
1565        <para>
1566         Allow a streaming replication standby to <link
1567         linkend="protocol-replication">follow a timeline switch</link>
1568         (Heikki Linnakangas)
1569        </para>
1570
1571        <para>
1572         This allows streaming standby servers to receive WAL data from a slave
1573         newly promoted to master status.  Previously, other standbys would
1574         require a resync to begin following the new master.
1575        </para>
1576       </listitem>
1577
1578       <listitem>
1579        <para>
1580         Add <acronym>SQL</> functions <link
1581         linkend="functions-admin-backup"><function>pg_is_in_backup()</></link>
1582         and <link
1583         linkend="functions-admin-backup"><function>pg_backup_start_time()</></link>
1584         (Gilles Darold)
1585        </para>
1586
1587        <para>
1588         These functions report the status of base backups.
1589        </para>
1590       </listitem>
1591
1592       <listitem>
1593        <para>
1594         Improve performance of streaming log shipping with <link
1595         linkend="guc-synchronous-commit"><varname>synchronous_commit</></link>
1596         disabled (Andres Freund)
1597        </para>
1598       </listitem>
1599
1600       <listitem>
1601        <para>
1602         Allow much faster promotion of a streaming standby to primary (Simon
1603         Riggs, Kyotaro Horiguchi)
1604        </para>
1605       </listitem>
1606
1607       <listitem>
1608        <para>
1609         Add the last checkpoint's redo location to <link
1610         linkend="APP-PGCONTROLDATA"><application>pg_controldata</></link>'s
1611         output (Fujii Masao)
1612        </para>
1613
1614        <para>
1615         This information is useful for determining which <acronym>WAL</>
1616         files are needed for restore.
1617        </para>
1618       </listitem>
1619
1620       <listitem>
1621        <para>
1622         Allow tools like <link
1623         linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
1624         to run on computers with different architectures (Heikki
1625         Linnakangas)
1626        </para>
1627
1628        <para>
1629         WAL files can still only be replayed on servers with the same
1630         architecture as the primary; but they can now be transmitted to and
1631         stored on machines of any architecture, since the
1632         streaming replication protocol is now machine-independent.
1633        </para>
1634       </listitem>
1635
1636       <listitem>
1637        <para>
1638         Make <link
1639         linkend="app-pgbasebackup"><application>pg_basebackup</></link>
1640         <option>--write-recovery-conf</> output a
1641         minimal <filename>recovery.conf</> file (Zolt&aacute;n
1642         B&ouml;sz&ouml;rm&eacute;nyi, Magnus Hagander)
1643        </para>
1644
1645        <para>
1646         This simplifies setting up a standby server.
1647        </para>
1648       </listitem>
1649
1650       <listitem>
1651        <para>
1652         Allow <link
1653         linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
1654         and <link
1655         linkend="app-pgbasebackup"><application>pg_basebackup</></link>
1656         <option>--xlog-method</> to handle streaming timeline switches
1657         (Heikki Linnakangas)
1658        </para>
1659       </listitem>
1660
1661       <listitem>
1662        <para>
1663         Add <link
1664         linkend="guc-wal-receiver-timeout"><varname>wal_receiver_timeout</></link>
1665         parameter to control the <acronym>WAL</> receiver's timeout
1666         (Amit Kapila)
1667        </para>
1668
1669        <para>
1670         This allows more rapid detection of connection failure.
1671        </para>
1672       </listitem>
1673
1674       <listitem>
1675        <para>
1676         Change the <link linkend="wal"><acronym>WAL</></link> record format to
1677         allow splitting the record header across pages (Heikki Linnakangas)
1678        </para>
1679
1680        <para>
1681         The new format is slightly more compact, and is more efficient to
1682         write.
1683        </para>
1684       </listitem>
1685
1686      </itemizedlist>
1687
1688    </sect3>
1689
1690    <sect3>
1691     <title>Queries</title>
1692
1693      <itemizedlist>
1694
1695       <listitem>
1696        <para>
1697         Implement <acronym>SQL</>-standard <link
1698         linkend="queries-lateral"><literal>LATERAL</></link> option for
1699         <literal>FROM</>-clause subqueries and function calls (Tom Lane)
1700        </para>
1701
1702        <para>
1703         This feature allows subqueries and functions in <literal>FROM</> to
1704         reference columns from other tables in the <literal>FROM</>
1705         clause. The <literal>LATERAL</> keyword is optional for functions.
1706        </para>
1707       </listitem>
1708
1709       <listitem>
1710        <para>
1711         Add support for piping <link
1712         linkend="SQL-COPY"><command>COPY</></link> and <link
1713         linkend="APP-PSQL"><application>psql</></link> <command>\copy</>
1714         data to/from an external program (Etsuro Fujita)
1715        </para>
1716       </listitem>
1717
1718       <listitem>
1719        <para>
1720         Allow a multirow <link
1721         linkend="SQL-VALUES"><literal>VALUES</></link> clause in a rule
1722         to reference <literal>OLD</>/<literal>NEW</> (Tom Lane)
1723        </para>
1724       </listitem>
1725
1726      </itemizedlist>
1727
1728    </sect3>
1729
1730    <sect3>
1731     <title>Object Manipulation</title>
1732
1733      <itemizedlist>
1734
1735       <listitem>
1736        <para>
1737         Add support for <link linkend="event-triggers">event triggers</link>
1738         (Dimitri Fontaine, Robert Haas, &Aacute;lvaro Herrera)
1739        </para>
1740
1741        <para>
1742         This allows server-side functions written in event-enabled
1743         languages to be called when DDL commands are run.
1744        </para>
1745       </listitem>
1746
1747       <listitem>
1748        <para>
1749         Allow <link linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data
1750         wrappers</link> to support writes (inserts/updates/deletes) on foreign
1751         tables (KaiGai Kohei)
1752        </para>
1753       </listitem>
1754
1755       <listitem>
1756        <para>
1757         Add <link linkend="SQL-CREATESCHEMA"><command>CREATE SCHEMA ... IF
1758         NOT EXISTS</></link> clause (Fabr&iacute;zio de Royes Mello)
1759        </para>
1760       </listitem>
1761
1762       <listitem>
1763        <para>
1764         Make <link linkend="SQL-REASSIGN-OWNED"><command>REASSIGN
1765         OWNED</></link> also change ownership of shared objects
1766         (&Aacute;lvaro Herrera)
1767        </para>
1768       </listitem>
1769
1770       <listitem>
1771        <para>
1772         Make <link linkend="sql-createaggregate"><command>CREATE
1773         AGGREGATE</></link> complain if the given initial value string is not
1774         valid input for the transition datatype (Tom Lane)
1775        </para>
1776       </listitem>
1777
1778       <listitem>
1779        <para>
1780         Suppress <link linkend="SQL-CREATETABLE"><command>CREATE
1781         TABLE</></link>'s messages about implicit index and sequence creation
1782         (Robert Haas)
1783        </para>
1784
1785        <para>
1786         These messages now appear at <literal>DEBUG1</> verbosity, so that
1787         they will not be shown by default.
1788        </para>
1789       </listitem>
1790
1791       <listitem>
1792        <para>
1793         Allow <link linkend="SQL-DROPTABLE"><command>DROP TABLE IF
1794         EXISTS</></link> to succeed when a non-existent schema is specified
1795         in the table name (Bruce Momjian)
1796        </para>
1797
1798        <para>
1799          Previously, it threw an error if the schema did not exist.
1800        </para>
1801       </listitem>
1802
1803       <listitem>
1804        <para>
1805         Provide clients with <link
1806         linkend="libpq-pqresulterrorfield">constraint violation details</link>
1807         as separate fields (Pavel Stehule)
1808        </para>
1809
1810        <para>
1811         This allows clients to retrieve table, column, data type, or
1812         constraint name error details.  Previously such information had to be
1813         extracted from error strings.  Client library support is required to
1814         access these fields.
1815        </para>
1816       </listitem>
1817
1818      </itemizedlist>
1819
1820     <sect4>
1821      <title><command>ALTER</></title>
1822
1823      <itemizedlist>
1824
1825       <listitem>
1826        <para>
1827         Support <literal>IF NOT EXISTS</> option in <link
1828         linkend="SQL-ALTERTYPE"><command>ALTER TYPE ... ADD VALUE</></link>
1829         (Andrew Dunstan)
1830        </para>
1831
1832        <para>
1833         This is useful for conditionally adding values to enumerated types.
1834        </para>
1835       </listitem>
1836
1837       <listitem>
1838        <para>
1839         Add <link linkend="SQL-ALTERROLE"><command>ALTER ROLE ALL
1840         SET</></link> to establish settings for all users (Peter Eisentraut)
1841        </para>
1842
1843        <para>
1844         This allows settings to apply to all users in all databases. <link
1845         linkend="SQL-ALTERDATABASE"><command>ALTER DATABASE SET</></link>
1846         already allowed addition of settings for all users in a single
1847         database.  <filename>postgresql.conf</> has a similar effect.
1848        </para>
1849       </listitem>
1850
1851       <listitem>
1852        <para>
1853         Add support for <link linkend="SQL-ALTERRULE"><command>ALTER RULE
1854         ... RENAME</></link> (Ali Dar)
1855        </para>
1856       </listitem>
1857
1858      </itemizedlist>
1859
1860     </sect4>
1861
1862     <sect4>
1863      <title><link linkend="rules-views"><command>VIEWs</></link></title>
1864
1865      <itemizedlist>
1866
1867       <listitem>
1868        <para>
1869         Add <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
1870         views</link> (Kevin Grittner)
1871        </para>
1872
1873        <para>
1874         Unlike ordinary views, where the base tables are read on every access,
1875         materialized views create physical tables at creation or refresh time.
1876         Access to the materialized view then reads from its physical
1877         table. There is not yet any facility for incrementally refreshing
1878         materialized views or auto-accessing them via base table access.
1879        </para>
1880       </listitem>
1881
1882       <listitem>
1883        <para>
1884         Make simple views <link
1885         linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
1886         (Dean Rasheed)
1887        </para>
1888
1889        <para>
1890         Simple views that reference some or all columns from a
1891         single base table are now updatable by default. More
1892         complex views can be made updatable using <link
1893         linkend="SQL-CREATETRIGGER"><literal>INSTEAD OF</></link> triggers
1894         or <link linkend="SQL-CREATERULE"><literal>INSTEAD</></link> rules.
1895        </para>
1896       </listitem>
1897
1898       <listitem>
1899        <para>
1900         Add <link linkend="SQL-CREATEVIEW"><command>CREATE RECURSIVE
1901         VIEW</></link> syntax (Peter Eisentraut)
1902        </para>
1903
1904        <para>
1905         Internally this is translated into <command>CREATE VIEW ... WITH
1906         RECURSIVE ...</>.
1907        </para>
1908       </listitem>
1909
1910       <listitem>
1911        <para>
1912         Improve view/rule printing code to handle cases where referenced
1913         tables are renamed, or columns are renamed, added, or dropped
1914         (Tom Lane)
1915        </para>
1916
1917        <para>
1918         Table and column renamings can produce cases where, if we merely
1919         substitute the new name into the original text of a rule or view, the
1920         result is ambiguous.  This change fixes the rule-dumping code to insert
1921         manufactured table and column aliases when needed to preserve the
1922         original semantics.
1923        </para>
1924       </listitem>
1925
1926      </itemizedlist>
1927
1928     </sect4>
1929
1930    </sect3>
1931
1932    <sect3>
1933     <title>Data Types</title>
1934
1935     <itemizedlist>
1936
1937       <listitem>
1938        <para>
1939         Increase the maximum size of <link linkend="largeObjects">large
1940         objects</link> from 2GB to 4TB (Nozomi Anzai, Yugo Nagata)
1941        </para>
1942
1943        <para>
1944         This change includes adding 64-bit-capable large object access
1945         functions, both in the server and in libpq.
1946        </para>
1947       </listitem>
1948
1949       <listitem>
1950        <para>
1951         Allow text <link linkend="datatype-timezones">timezone
1952         designations</link>, e.g. <quote>America/Chicago</>, in the
1953         <quote>T</> field of <acronym>ISO</>-format <type>timestamptz</type>
1954         input (Bruce Momjian)
1955        </para>
1956       </listitem>
1957
1958     </itemizedlist>
1959
1960    <sect4>
1961     <title><link linkend="datatype-json"><type>JSON</></link></title>
1962
1963     <itemizedlist>
1964
1965       <listitem>
1966        <para>
1967         Add <link linkend="functions-json">operators and functions</link>
1968         to extract elements from <type>JSON</> values (Andrew Dunstan)
1969        </para>
1970       </listitem>
1971
1972       <listitem>
1973        <para>
1974         Allow <type>JSON</> values to be <link
1975         linkend="functions-json-table">converted into records</link>
1976         (Andrew Dunstan)
1977        </para>
1978       </listitem>
1979
1980       <listitem>
1981        <para>
1982         Add <link linkend="functions-json-table">functions</link> to convert
1983         scalars, records, and <type>hstore</> values to <type>JSON</> (Andrew
1984         Dunstan)
1985        </para>
1986       </listitem>
1987
1988     </itemizedlist>
1989
1990    </sect4>
1991
1992    </sect3>
1993
1994
1995    <sect3>
1996     <title>Functions</title>
1997
1998      <itemizedlist>
1999
2000       <listitem>
2001        <para>
2002         Add <link
2003         linkend="array-functions-table"><function>array_remove()</></link>
2004         and <link
2005         linkend="array-functions-table"><function>array_replace()</></link>
2006         functions (Marco Nenciarini, Gabriele Bartolini)
2007        </para>
2008       </listitem>
2009
2010       <listitem>
2011        <para>
2012         Allow <link
2013         linkend="functions-string-other"><function>concat()</></link>
2014         and <link
2015         linkend="functions-string-format"><function>format()</></link>
2016         to properly expand <literal>VARIADIC</>-labeled arguments
2017         (Pavel Stehule)
2018        </para>
2019       </listitem>
2020
2021       <listitem>
2022        <para>
2023         Improve <link
2024         linkend="functions-string-format"><function>format()</></link>
2025         to provide field width and left/right alignment options (Pavel Stehule)
2026        </para>
2027       </listitem>
2028
2029       <listitem>
2030        <para>
2031         Make <link
2032         linkend="functions-formatting-table"><function>to_char()</></link>,
2033         <link
2034         linkend="functions-formatting-table"><function>to_date()</></link>,
2035         and <link
2036         linkend="functions-formatting-table"><function>to_timestamp()</></link>
2037         handle negative (BC) century values properly
2038         (Bruce Momjian)
2039        </para>
2040
2041        <para>
2042         Previously the behavior was either wrong or inconsistent
2043         with positive/<acronym>AD</> handling, e.g. with the format mask
2044         <quote>IYYY-IW-DY</>.
2045        </para>
2046       </listitem>
2047
2048       <listitem>
2049        <para>
2050         Make <link
2051         linkend="functions-formatting-table"><function>to_date()</></link>
2052         and <link
2053         linkend="functions-formatting-table"><function>to_timestamp()</></link>
2054         return proper results when mixing <acronym>ISO</> and Gregorian
2055         week/day designations (Bruce Momjian)
2056        </para>
2057       </listitem>
2058
2059       <listitem>
2060        <para>
2061         Cause <link
2062         linkend="functions-info-catalog-table"><function>pg_get_viewdef()</></link>
2063         to start a new line by default after each <literal>SELECT</> target
2064         list entry and <literal>FROM</> entry (Marko Tiikkaja)
2065        </para>
2066
2067        <para>
2068         This reduces line length in view printing, for instance in <link
2069         linkend="APP-PGDUMP"><application>pg_dump</></link> output.
2070        </para>
2071       </listitem>
2072
2073       <listitem>
2074        <para>
2075         Fix <function>map_sql_value_to_xml_value()</> to print values of
2076         domain types the same way their base type would be printed
2077         (Pavel Stehule)
2078        </para>
2079
2080        <para>
2081         There are special formatting rules for certain built-in types such as
2082         <type>boolean</>; these rules now also apply to domains over these
2083         types.
2084        </para>
2085       </listitem>
2086
2087      </itemizedlist>
2088
2089    </sect3>
2090
2091    <sect3>
2092     <title>Server-Side Languages</title>
2093
2094     <sect4>
2095      <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
2096
2097      <itemizedlist>
2098
2099       <listitem>
2100        <para>
2101         Allow PL/pgSQL to use <literal>RETURN</> with a composite-type
2102         expression (Asif Rehman)
2103        </para>
2104
2105        <para>
2106         Previously, in a function returning a composite type,
2107         <literal>RETURN</> could only reference a variable of that type.
2108        </para>
2109       </listitem>
2110
2111       <listitem>
2112        <para>
2113         Allow PL/pgSQL to access <link
2114         linkend="plpgsql-exception-diagnostics">constraint violation
2115         details</link> as separate fields (Pavel Stehule)
2116        </para>
2117       </listitem>
2118
2119       <listitem>
2120        <para>
2121         Allow PL/pgSQL to access the number of rows processed by
2122         <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
2123        </para>
2124
2125        <para>
2126         A <command>COPY</> executed in a PL/pgSQL function now updates the
2127         value retrieved by <link
2128         linkend="plpgsql-statements-diagnostics"><command>GET DIAGNOSTICS
2129         x = ROW_COUNT</></link>.
2130        </para>
2131       </listitem>
2132
2133       <listitem>
2134        <para>
2135         Allow unreserved keywords to be used as identifiers everywhere in
2136         PL/pgSQL (Tom Lane)
2137        </para>
2138
2139        <para>
2140         In certain places in the PL/pgSQL grammar, keywords had to be quoted
2141         to be used as identifiers, even if they were nominally unreserved.
2142        </para>
2143       </listitem>
2144
2145     </itemizedlist>
2146
2147     </sect4>
2148
2149     <sect4>
2150      <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
2151
2152      <itemizedlist>
2153
2154       <listitem>
2155        <para>
2156         Add PL/Python result object string handler (Peter Eisentraut)
2157        </para>
2158
2159        <para>
2160         This allows <literal>plpy.debug(rv)</literal> to output something reasonable.
2161        </para>
2162       </listitem>
2163
2164       <listitem>
2165        <para>
2166         Make PL/Python convert OID values to a proper Python numeric type
2167         (Peter Eisentraut)
2168        </para>
2169       </listitem>
2170
2171       <listitem>
2172        <para>
2173         Handle <link linkend="spi"><acronym>SPI</></link> errors raised
2174         explicitly (with PL/Python's <literal>RAISE</>) the same as
2175         internal <acronym>SPI</> errors (Oskari Saarenmaa and Jan Urbanski)
2176        </para>
2177       </listitem>
2178
2179      </itemizedlist>
2180
2181     </sect4>
2182
2183    </sect3>
2184
2185    <sect3>
2186     <title>Server Programming Interface (<link linkend="spi">SPI</link>)</title>
2187
2188      <itemizedlist>
2189
2190       <listitem>
2191        <para>
2192         Prevent leakage of <acronym>SPI</> tuple tables during subtransaction
2193         abort (Tom Lane)
2194        </para>
2195
2196        <para>
2197         At the end of any failed subtransaction, the core SPI code now
2198         releases any SPI tuple tables that were created during that
2199         subtransaction.  This avoids the need for SPI-using code to keep track
2200         of such tuple tables and release them manually in error-recovery code.
2201         Failure to do so caused a number of transaction-lifespan memory leakage
2202         issues in PL/pgSQL and perhaps other SPI clients.  <link
2203         linkend="spi-spi-freetupletable"><function>SPI_freetuptable()</></link>
2204         now protects itself against multiple freeing requests, so any existing
2205         code that did take care to clean up shouldn't be broken by this change.
2206        </para>
2207       </listitem>
2208
2209       <listitem>
2210        <para>
2211         Allow <acronym>SPI</> functions to access the number of rows processed
2212         by <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
2213        </para>
2214       </listitem>
2215
2216      </itemizedlist>
2217
2218    </sect3>
2219
2220    <sect3>
2221     <title>Client Applications</title>
2222
2223     <itemizedlist>
2224
2225       <listitem>
2226        <para>
2227         Add command-line utility <link
2228         linkend="app-pg-isready"><application>pg_isready</></link> to
2229         check if the server is ready to accept connections (Phil Sorber)
2230        </para>
2231       </listitem>
2232
2233       <listitem>
2234        <para>
2235         Support multiple <option>--table</> arguments for <link
2236         linkend="APP-PGRESTORE"><application>pg_restore</></link>,
2237         <link linkend="APP-CLUSTERDB"><application>clusterdb</></link>,
2238         <link linkend="APP-REINDEXDB"><application>reindexdb</></link>,
2239         and <link linkend="APP-VACUUMDB"><application>vacuumdb</></link>
2240         (Josh Kupershmidt)
2241        </para>
2242
2243        <para>
2244         This is similar to the way <link
2245         linkend="APP-PGDUMP"><application>pg_dump</></link>'s
2246         <option>--table</> option works.
2247        </para>
2248       </listitem>
2249
2250       <listitem>
2251        <para>
2252         Add <option>--dbname</> option to <link
2253         linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, <link
2254         linkend="app-pgbasebackup"><application>pg_basebackup</></link>, and
2255         <link
2256         linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
2257         to allow specifying a connection string (Amit Kapila)
2258        </para>
2259       </listitem>
2260
2261       <listitem>
2262        <para>
2263         Add libpq function <link
2264         linkend="libpq-pqconninfo"><function>PQconninfo()</></link>
2265         to return connection information (Zolt&aacute;n
2266         B&ouml;sz&ouml;rm&eacute;nyi, Magnus Hagander)
2267        </para>
2268       </listitem>
2269
2270     </itemizedlist>
2271
2272     <sect4>
2273      <title><link linkend="APP-PSQL"><application>psql</></link></title>
2274
2275      <itemizedlist>
2276
2277       <listitem>
2278        <para>
2279         Adjust function cost settings so <application>psql</> tab
2280         completion and pattern searching are more efficient (Tom Lane)
2281        </para>
2282       </listitem>
2283
2284       <listitem>
2285        <para>
2286         Improve <application>psql</>'s tab completion coverage (Jeff Janes,
2287         Dean Rasheed, Peter Eisentraut, Magnus Hagander)
2288        </para>
2289       </listitem>
2290
2291       <listitem>
2292        <para>
2293         Allow the <application>psql</> <option>--single-transaction</>
2294         mode to work when reading from standard input (Fabien Coelho,
2295         Robert Haas)
2296        </para>
2297
2298        <para>
2299         Previously this option only worked when reading from a file.
2300        </para>
2301       </listitem>
2302
2303       <listitem>
2304        <para>
2305         Remove <application>psql</> warning when connecting to an older
2306         server (Peter Eisentraut)
2307        </para>
2308
2309        <para>
2310         A warning is still issued when connecting to a server of a newer major
2311         version than <application>psql</>'s.
2312        </para>
2313       </listitem>
2314
2315      </itemizedlist>
2316
2317     <sect5>
2318      <title><link linkend="APP-PSQL-meta-commands">Backslash Commands</link></title>
2319
2320      <itemizedlist>
2321
2322       <listitem>
2323        <para>
2324         Add <application>psql</> command <command>\watch</> to repeatedly
2325         execute a SQL command (Will Leinweber)
2326        </para>
2327       </listitem>
2328
2329       <listitem>
2330        <para>
2331         Add <application>psql</> command <command>\gset</> to store query
2332         results in <application>psql</> variables (Pavel Stehule)
2333        </para>
2334       </listitem>
2335
2336       <listitem>
2337        <para>
2338         Add <acronym>SSL</> information to <application>psql</>'s
2339         <command>\conninfo</> command (Alastair Turner)
2340        </para>
2341       </listitem>
2342
2343       <listitem>
2344        <para>
2345         Add <quote>Security</> column to <application>psql</>'s
2346         <command>\df+</> output (Jon Erdman)
2347        </para>
2348       </listitem>
2349
2350       <listitem>
2351        <para>
2352         Allow <application>psql</> command <command>\l</> to accept a database
2353         name pattern (Peter Eisentraut)
2354        </para>
2355       </listitem>
2356
2357       <listitem>
2358        <para>
2359         In <application>psql</>, do not allow <command>\connect</> to
2360         use defaults if there is no active connection (Bruce Momjian)
2361        </para>
2362
2363        <para>
2364         This might be the case if the server had crashed.
2365        </para>
2366       </listitem>
2367
2368       <listitem>
2369        <para>
2370         Properly reset state after failure of a SQL command executed with
2371         <application>psql</>'s <literal>\g</> <replaceable>file</>
2372         (Tom Lane)
2373        </para>
2374
2375        <para>
2376         Previously, the output from subsequent SQL commands would unexpectedly
2377         continue to go to the same file.
2378        </para>
2379       </listitem>
2380
2381      </itemizedlist>
2382
2383     </sect5>
2384
2385     <sect5>
2386      <title>Output</title>
2387
2388      <itemizedlist>
2389
2390       <listitem>
2391        <para>
2392         Add a <literal>latex-longtable</> output format to
2393         <application>psql</> (Bruce Momjian)
2394        </para>
2395
2396        <para>
2397         This format allows tables to span multiple pages.
2398        </para>
2399       </listitem>
2400
2401       <listitem>
2402        <para>
2403         Add a <literal>border=3</> output mode to the <application>psql</>
2404         <literal>latex</> format (Bruce Momjian)
2405        </para>
2406       </listitem>
2407
2408       <listitem>
2409        <para>
2410         In <application>psql</>'s tuples-only and expanded output modes, no
2411         longer emit <quote>(No rows)</> for zero rows (Peter Eisentraut)
2412        </para>
2413       </listitem>
2414
2415       <listitem>
2416        <para>
2417         In <application>psql</>'s unaligned, expanded output mode, no longer
2418         print an empty line for zero rows (Peter Eisentraut)
2419        </para>
2420       </listitem>
2421
2422      </itemizedlist>
2423
2424     </sect5>
2425
2426     </sect4>
2427
2428     <sect4>
2429      <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
2430
2431      <itemizedlist>
2432
2433       <listitem>
2434        <para>
2435         Add <application>pg_dump</> <option>--jobs</> option to dump tables in
2436         parallel (Joachim Wieland)
2437        </para>
2438       </listitem>
2439
2440       <listitem>
2441        <para>
2442         Make <application>pg_dump</> output functions in a more predictable
2443         order (Joel Jacobson)
2444        </para>
2445       </listitem>
2446
2447       <listitem>
2448        <para>
2449         Fix tar files emitted by <application>pg_dump</>
2450         to be <acronym>POSIX</> conformant (Brian Weaver, Tom Lane)
2451        </para>
2452       </listitem>
2453
2454       <listitem>
2455        <para>
2456         Add <option>--dbname</> option to <application>pg_dump</>, for
2457         consistency with other client commands (Heikki Linnakangas)
2458        </para>
2459
2460        <para>
2461         The database name could already be supplied last without a flag.
2462        </para>
2463       </listitem>
2464
2465      </itemizedlist>
2466
2467     </sect4>
2468
2469     <sect4>
2470      <title><link linkend="APP-INITDB"><application>initdb</></link></title>
2471
2472      <itemizedlist>
2473
2474       <listitem>
2475        <para>
2476         Make initdb fsync the newly created data directory (Jeff Davis)
2477        </para>
2478
2479        <para>
2480         This insures data integrity in event of a system crash shortly after
2481         initdb.  This can be disabled by using <option>--nosync</>.
2482        </para>
2483       </listitem>
2484
2485       <listitem>
2486        <para>
2487         Add initdb <option>--sync-only</> option to sync the data directory to durable
2488         storage (Bruce Momjian)
2489        </para>
2490
2491        <para>
2492         This is used by <link
2493         linkend="pgupgrade"><application>pg_upgrade</></link>.
2494        </para>
2495       </listitem>
2496
2497       <listitem>
2498        <para>
2499         Make initdb issue a warning about placing the data directory at the
2500         top of a file system mount point (Bruce Momjian)
2501        </para>
2502       </listitem>
2503
2504      </itemizedlist>
2505
2506     </sect4>
2507
2508    </sect3>
2509
2510    <sect3>
2511     <title>Source Code</title>
2512
2513      <itemizedlist>
2514
2515       <listitem>
2516        <para>
2517         Add infrastructure to allow plug-in <link
2518         linkend="bgworker">background worker processes</link>
2519         (&Aacute;lvaro Herrera)
2520        </para>
2521       </listitem>
2522
2523       <listitem>
2524        <para>
2525         Create a centralized timeout <acronym>API</> (Zolt&aacute;n
2526         B&ouml;sz&ouml;rm&eacute;nyi)
2527        </para>
2528       </listitem>
2529
2530       <listitem>
2531        <para>
2532         Create libpgcommon and move <function>pg_malloc()</> and other
2533         functions there (&Aacute;lvaro Herrera, Andres Freund)
2534        </para>
2535
2536        <para>
2537         This allows libpgport to be used solely for portability-related code.
2538        </para>
2539       </listitem>
2540
2541       <listitem>
2542        <para>
2543         Add support for list links embedded in larger structs (Andres Freund)
2544        </para>
2545       </listitem>
2546
2547       <listitem>
2548        <para>
2549         Use <literal>SA_RESTART</> for all signals,
2550         including <literal>SIGALRM</> (Tom Lane)
2551        </para>
2552       </listitem>
2553
2554       <listitem>
2555        <para>
2556         Ensure that the correct text domain is used when
2557         translating <function>errcontext()</> messages
2558         (Heikki Linnakangas)
2559        </para>
2560       </listitem>
2561
2562       <listitem>
2563        <para>
2564         Standardize naming of client-side memory allocation functions (Tom Lane)
2565        </para>
2566       </listitem>
2567
2568       <listitem>
2569        <para>
2570         Provide support for <quote>static assertions</> that will fail at
2571         compile time if some compile-time-constant condition is not met
2572         (Andres Freund, Tom Lane)
2573        </para>
2574       </listitem>
2575
2576       <listitem>
2577        <para>
2578         Support <function>Assert()</> in client-side code (Andrew Dunstan)
2579        </para>
2580       </listitem>
2581
2582       <listitem>
2583        <para>
2584         Add decoration to inform the C compiler that some <function>ereport()</>
2585         and <function>elog()</> calls do not return (Peter Eisentraut,
2586         Andres Freund, Tom Lane, Heikki Linnakangas)
2587        </para>
2588       </listitem>
2589
2590       <listitem>
2591        <para>
2592         Allow options to be passed to the regression
2593         test output comparison utility via <link
2594         linkend="regress-evaluation"><envar>PG_REGRESS_DIFF_OPTS</></link>
2595         (Peter Eisentraut)
2596        </para>
2597       </listitem>
2598
2599       <listitem>
2600        <para>
2601         Add isolation tests for <link
2602         linkend="SQL-CREATEINDEX"><command>CREATE INDEX
2603         CONCURRENTLY</></link> (Abhijit Menon-Sen)
2604        </para>
2605       </listitem>
2606
2607       <listitem>
2608        <para>
2609         Remove typedefs for <type>int2</>/<type>int4</> as they are better
2610         represented as <type>int16</>/<type>int32</> (Peter Eisentraut)
2611        </para>
2612       </listitem>
2613
2614       <listitem>
2615        <para>
2616         Fix <link linkend="install">install-strip</link> on Mac <productname>OS
2617         X</> (Peter Eisentraut)
2618        </para>
2619       </listitem>
2620
2621       <listitem>
2622        <para>
2623         Remove <link linkend="configure">configure</link> flag
2624         <option>--disable-shared</>, as it is no longer supported
2625         (Bruce Momjian)
2626        </para>
2627       </listitem>
2628
2629       <listitem>
2630        <para>
2631         Rewrite pgindent in <application>Perl</> (Andrew Dunstan)
2632        </para>
2633       </listitem>
2634
2635       <listitem>
2636        <para>
2637         Provide Emacs macro to set Perl formatting to
2638         match <productname>PostgreSQL</>'s perltidy settings (Peter Eisentraut)
2639        </para>
2640       </listitem>
2641
2642       <listitem>
2643        <para>
2644         Run tool to check the keyword list whenever the backend grammar is
2645         changed (Tom Lane)
2646        </para>
2647       </listitem>
2648
2649       <listitem>
2650        <para>
2651         Change the way <literal>UESCAPE</> is lexed, to significantly reduce
2652         the size of the lexer tables (Heikki Linnakangas)
2653        </para>
2654       </listitem>
2655
2656       <listitem>
2657        <para>
2658         Centralize <application>flex</> and <application>bison</>
2659         <application>make</> rules (Peter Eisentraut)
2660        </para>
2661
2662        <para>
2663         This is useful for <application>pgxs</> authors.
2664        </para>
2665       </listitem>
2666
2667       <listitem>
2668        <para>
2669         Change many internal backend functions to return object <type>OID</>s
2670         rather than void (Dimitri Fontaine)
2671        </para>
2672
2673        <para>
2674         This is useful for event triggers.
2675        </para>
2676       </listitem>
2677
2678       <listitem>
2679        <para>
2680         Invent pre-commit/pre-prepare/pre-subcommit events for transaction
2681         callbacks (Tom Lane)
2682        </para>
2683
2684        <para>
2685         Loadable modules that use transaction callbacks might need modification
2686         to handle these new event types.
2687        </para>
2688       </listitem>
2689
2690       <listitem>
2691        <para>
2692         Add function <link
2693         linkend="functions-info-catalog-table"><function>pg_identify_object()</></link>
2694         to produce a machine-readable description of a database object
2695         (&Aacute;lvaro Herrera)
2696        </para>
2697       </listitem>
2698
2699       <listitem>
2700        <para>
2701         Add post-<command>ALTER</>-object server hooks (KaiGai Kohei)
2702        </para>
2703       </listitem>
2704
2705       <listitem>
2706        <para>
2707         Implement a generic binary heap and use it for Merge-Append
2708         operations (Abhijit Menon-Sen)
2709        </para>
2710       </listitem>
2711
2712       <listitem>
2713        <para>
2714         Provide a tool to help detect timezone abbreviation changes when
2715         updating the <filename>src/timezone/data</> files
2716         (Tom Lane)
2717        </para>
2718       </listitem>
2719
2720       <listitem>
2721        <para>
2722         Add <application>pkg-config</> support for <application>libpq</>
2723         and <application>ecpg</> libraries (Peter Eisentraut)
2724        </para>
2725       </listitem>
2726
2727       <listitem>
2728        <para>
2729         Remove <filename>src/tool/backend</>, now that the content is on
2730         the <productname>PostgreSQL</> wiki (Bruce Momjian)
2731        </para>
2732       </listitem>
2733
2734       <listitem>
2735        <para>
2736         Split out <link linkend="wal"><acronym>WAL</></link> reading as
2737         an independent facility (Heikki Linnakangas, Andres Freund)
2738        </para>
2739       </listitem>
2740
2741       <listitem>
2742        <para>
2743         Use a 64-bit integer to represent <link
2744         linkend="wal"><acronym>WAL</></link> positions
2745         (<structname>XLogRecPtr</>) instead of two 32-bit integers
2746         (Heikki Linnakangas)
2747        </para>
2748
2749        <para>
2750         Generally, tools that need to read the <acronym>WAL</> format
2751         will need to be adjusted.
2752        </para>
2753       </listitem>
2754
2755       <listitem>
2756        <para>
2757         Allow <link linkend="plpython">PL/Python</link> to support
2758         platform-specific include directories (Peter Eisentraut)
2759        </para>
2760       </listitem>
2761
2762       <listitem>
2763        <para>
2764         Allow <link linkend="plpython">PL/Python</link> on <productname>OS
2765         X</> to build against custom versions of <application>Python</>
2766         (Peter Eisentraut)
2767        </para>
2768       </listitem>
2769
2770      </itemizedlist>
2771
2772    </sect3>
2773
2774    <sect3>
2775     <title>Additional Modules</title>
2776
2777     <itemizedlist>
2778
2779       <listitem>
2780        <para>
2781         Add a <link linkend="postgres-fdw"><productname>Postgres</> foreign
2782         data wrapper</link> contrib module to allow access to
2783         other <productname>Postgres</> servers (Shigeru Hanada)
2784        </para>
2785
2786        <para>
2787         This foreign data wrapper supports writes.
2788        </para>
2789       </listitem>
2790
2791       <listitem>
2792        <para>
2793         Add <link linkend="pgxlogdump"><application>pg_xlogdump</></link>
2794         contrib program (Andres Freund)
2795        </para>
2796       </listitem>
2797
2798       <listitem>
2799        <para>
2800         Add support for indexing of regular-expression searches in
2801         <link linkend="pgtrgm"><productname>pg_trgm</></link>
2802         (Alexander Korotkov)
2803        </para>
2804       </listitem>
2805
2806       <listitem>
2807        <para>
2808         Improve <link linkend="pgtrgm"><productname>pg_trgm</></link>'s
2809         handling of multibyte characters (Tom Lane)
2810        </para>
2811
2812        <para>
2813         On a platform that does not have the wcstombs() or towlower() library
2814         functions, this could result in an incompatible change in the contents
2815         of <productname>pg_trgm</> indexes for non-ASCII data.  In such cases,
2816         <command>REINDEX</> those indexes to ensure correct search results.
2817        </para>
2818       </listitem>
2819
2820       <listitem>
2821        <para>
2822         Add a <link linkend="pgstattuple">pgstattuple</link> function to report
2823         the size of the pending-insertions list of a <acronym>GIN</> index
2824         (Fujii Masao)
2825        </para>
2826       </listitem>
2827
2828       <listitem>
2829        <para>
2830         Make <link linkend="oid2name"><application>oid2name</></link>,
2831         <link linkend="pgbench"><application>pgbench</></link>, and
2832         <link linkend="vacuumlo"><application>vacuumlo</></link> set
2833         <varname>fallback_application_name</> (Amit Kapila)
2834        </para>
2835       </listitem>
2836
2837       <listitem>
2838        <para>
2839         Improve output of <link
2840         linkend="pgtesttiming"><application>pg_test_timing</></link>
2841         (Bruce Momjian)
2842        </para>
2843       </listitem>
2844
2845       <listitem>
2846        <para>
2847         Improve output of <link
2848         linkend="pgtestfsync"><application>pg_test_fsync</></link>
2849         (Peter Geoghegan)
2850        </para>
2851       </listitem>
2852
2853       <listitem>
2854        <para>
2855         Create a dedicated foreign data wrapper, with its own option validator
2856         function, for <link linkend="dblink">dblink</link> (Shigeru Hanada)
2857        </para>
2858
2859        <para>
2860         When using this FDW to define the target of a <application>dblink</>
2861         connection, instead of using a hard-wired list of connection options,
2862         the underlying <application>libpq</> library is consulted to see what
2863         connection options it supports.
2864        </para>
2865       </listitem>
2866
2867     </itemizedlist>
2868
2869     <sect4>
2870      <title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>
2871
2872      <itemizedlist>
2873
2874       <listitem>
2875        <para>
2876         Allow <application>pg_upgrade</> to do dumps and restores in
2877         parallel (Bruce Momjian, Andrew Dunstan)
2878        </para>
2879
2880        <para>
2881         This allows parallel schema dump/restore of databases, as well as
2882         parallel copy/link of data files per tablespace.  Use the
2883         <option>--jobs</> option to specify the level of parallelism.
2884        </para>
2885       </listitem>
2886
2887       <listitem>
2888        <para>
2889         Make <application>pg_upgrade</> create Unix-domain sockets in
2890         the current directory (Bruce Momjian, Tom Lane)
2891        </para>
2892
2893        <para>
2894         This reduces the possibility that someone will accidentally connect
2895         during the upgrade.
2896        </para>
2897       </listitem>
2898
2899       <listitem>
2900        <para>
2901         Make <application>pg_upgrade</> <option>--check</> mode properly
2902         detect the location of non-default socket directories (Bruce
2903         Momjian, Tom Lane)
2904        </para>
2905       </listitem>
2906
2907       <listitem>
2908        <para>
2909         Improve performance of <application>pg_upgrade</> for databases
2910         with many tables (Bruce Momjian)
2911        </para>
2912       </listitem>
2913
2914       <listitem>
2915        <para>
2916         Improve <application>pg_upgrade</>'s logs by showing
2917         executed commands (&Aacute;lvaro Herrera)
2918        </para>
2919       </listitem>
2920
2921       <listitem>
2922        <para>
2923         Improve <application>pg_upgrade</>'s status display during
2924         copy/link (Bruce Momjian)
2925        </para>
2926       </listitem>
2927
2928      </itemizedlist>
2929
2930     </sect4>
2931
2932     <sect4>
2933      <title><link linkend="pgbench"><application>pgbench</></link></title>
2934
2935      <itemizedlist>
2936
2937       <listitem>
2938        <para>
2939         Add <option>--foreign-keys</> option to <application>pgbench</>
2940         (Jeff Janes)
2941        </para>
2942
2943        <para>
2944         This adds foreign key constraints to the standard tables created by
2945         <application>pgbench</>, for use in foreign key performance testing.
2946        </para>
2947       </listitem>
2948
2949       <listitem>
2950        <para>
2951         Allow <application>pgbench</> to aggregate performance statistics
2952         and produce output every <option>--aggregate-interval</>
2953         seconds (Tomas Vondra)
2954        </para>
2955       </listitem>
2956
2957       <listitem>
2958        <para>
2959         Add <application>pgbench</> <option>--sampling-rate</> option
2960         to control the percentage of transactions logged (Tomas Vondra)
2961        </para>
2962       </listitem>
2963
2964       <listitem>
2965        <para>
2966         Reduce and improve the status message output of
2967         <application>pgbench</>'s initialization mode (Robert Haas,
2968         Peter Eisentraut)
2969        </para>
2970       </listitem>
2971
2972       <listitem>
2973        <para>
2974         Add <application>pgbench</> <option>-q</> mode to print one output
2975         line every five seconds (Tomas Vondra)
2976        </para>
2977       </listitem>
2978
2979       <listitem>
2980        <para>
2981         Output <application>pgbench</> elapsed and estimated remaining
2982         time during initialization (Tomas Vondra)
2983        </para>
2984       </listitem>
2985
2986       <listitem>
2987        <para>
2988         Allow <application>pgbench</> to use much larger scale factors,
2989         by changing relevant columns from <type>integer</> to <type>bigint</>
2990         when the requested scale factor exceeds 20000
2991         (Greg Smith)
2992        </para>
2993       </listitem>
2994
2995     </itemizedlist>
2996
2997     </sect4>
2998
2999    </sect3>
3000
3001    <sect3>
3002     <title>Documentation</title>
3003
3004     <itemizedlist>
3005
3006       <listitem>
3007        <para>
3008         Allow <productname>EPUB</>-format documentation to be created
3009         (Peter Eisentraut)
3010        </para>
3011       </listitem>
3012
3013       <listitem>
3014        <para>
3015         Update <productname>FreeBSD</> kernel configuration documentation
3016         (Brad Davis)
3017        </para>
3018       </listitem>
3019
3020       <listitem>
3021        <para>
3022         Improve <link linkend="tutorial-window"><literal>WINDOW</>
3023         function</link> documentation (Bruce Momjian, Florian Pflug)
3024        </para>
3025       </listitem>
3026
3027       <listitem>
3028        <para>
3029         Add <link linkend="docguide-toolsets">instructions</link> for setting
3030         up the documentation tool chain on Mac <productname>OS X</>
3031         (Peter Eisentraut)
3032        </para>
3033       </listitem>
3034
3035       <listitem>
3036        <para>
3037         Improve <link
3038         linkend="guc-commit-delay"><varname>commit_delay</></link>
3039         documentation (Peter Geoghegan)
3040        </para>
3041       </listitem>
3042
3043     </itemizedlist>
3044
3045    </sect3>
3046
3047   </sect2>
3048  </sect1>