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