]> granicus.if.org Git - postgresql/blob - doc/src/sgml/release-9.3.sgml
Last-minute updates for release notes.
[postgresql] / doc / src / sgml / release-9.3.sgml
1 <!-- doc/src/sgml/release-9.3.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
3
4  <sect1 id="release-9-3-3">
5   <title>Release 9.3.3</title>
6
7   <note>
8   <title>Release Date</title>
9   <simpara>2014-02-20</simpara>
10   </note>
11
12   <para>
13    This release contains a variety of fixes from 9.3.2.
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.3</title>
20
21    <para>
22     A dump/restore is not required for those running 9.3.X.
23    </para>
24
25    <para>
26     However, several of the issues corrected in this release could have
27     resulted in corruption of foreign-key constraints; that is, there
28     might now be referencing rows for which there is no matching row in
29     the referenced table.  It may be worthwhile to recheck such
30     constraints after installing this update.  The simplest way to do that
31     is to drop and recreate each suspect constraint; however, that will
32     require taking an exclusive lock on both tables, so it is unlikely to
33     be acceptable in production databases.  Alternatively, you can do a
34     manual join query between the two tables to look for unmatched rows.
35    </para>
36
37    <para>
38     Note also the requirement for replication standby servers to be
39     upgraded before their master server is upgraded.
40    </para>
41
42    <para>
43     Also, if you are upgrading from a version earlier than 9.3.2,
44     see <xref linkend="release-9-3-2">.
45    </para>
46
47   </sect2>
48
49   <sect2>
50    <title>Changes</title>
51
52    <itemizedlist>
53
54 <!--
55 Author: Noah Misch <noah@leadboat.com>
56 Branch: master [fea164a72] 2014-02-17 09:33:31 -0500
57 Branch: REL9_3_STABLE [475a1fbc4] 2014-02-17 09:33:32 -0500
58 Branch: REL9_2_STABLE [15a8f97b9] 2014-02-17 09:33:33 -0500
59 Branch: REL9_1_STABLE [5d320a16c] 2014-02-17 09:33:33 -0500
60 Branch: REL9_0_STABLE [789063697] 2014-02-17 09:33:37 -0500
61 Branch: REL8_4_STABLE [ff35425c8] 2014-02-17 09:33:38 -0500
62 -->
63
64     <listitem>
65      <para>
66       Shore up <literal>GRANT ... WITH ADMIN OPTION</> restrictions
67       (Noah Misch)
68      </para>
69
70      <para>
71       Granting a role without <literal>ADMIN OPTION</> is supposed to
72       prevent the grantee from adding or removing members from the granted
73       role, but this restriction was easily bypassed by doing <literal>SET
74       ROLE</> first.  The security impact is mostly that a role member can
75       revoke the access of others, contrary to the wishes of his grantor.
76       Unapproved role member additions are a lesser concern, since an
77       uncooperative role member could provide most of his rights to others
78       anyway by creating views or <literal>SECURITY DEFINER</> functions.
79       (CVE-2014-0060)
80      </para>
81     </listitem>
82
83 <!--
84 Author: Noah Misch <noah@leadboat.com>
85 Branch: master [537cbd35c] 2014-02-17 09:33:31 -0500
86 Branch: REL9_3_STABLE [fc4a04a3c] 2014-02-17 09:33:32 -0500
87 Branch: REL9_2_STABLE [1d701d28a] 2014-02-17 09:33:33 -0500
88 Branch: REL9_1_STABLE [23b5a85e6] 2014-02-17 09:33:36 -0500
89 Branch: REL9_0_STABLE [c0ac4c75f] 2014-02-17 09:33:37 -0500
90 Branch: REL8_4_STABLE [823b9dc25] 2014-02-17 09:33:38 -0500
91 -->
92
93     <listitem>
94      <para>
95       Prevent privilege escalation via manual calls to PL validator
96       functions (Andres Freund)
97      </para>
98
99      <para>
100       The primary role of PL validator functions is to be called implicitly
101       during <command>CREATE FUNCTION</>, but they are also normal SQL
102       functions that a user can call explicitly.  Calling a validator on
103       a function actually written in some other language was not checked
104       for and could be exploited for privilege-escalation purposes.
105       The fix involves adding a call to a privilege-checking function in
106       each validator function.  Non-core procedural languages will also
107       need to make this change to their own validator functions, if any.
108       (CVE-2014-0061)
109      </para>
110     </listitem>
111
112 <!--
113 Author: Robert Haas <rhaas@postgresql.org>
114 Branch: master [5f173040e] 2014-02-17 09:33:31 -0500
115 Branch: REL9_3_STABLE [e1e0a4d79] 2014-02-17 09:33:32 -0500
116 Branch: REL9_2_STABLE [820ab11fb] 2014-02-17 09:33:33 -0500
117 Branch: REL9_1_STABLE [b5c574399] 2014-02-17 09:33:36 -0500
118 Branch: REL9_0_STABLE [43d4e965e] 2014-02-17 09:33:37 -0500
119 Branch: REL8_4_STABLE [e46476133] 2014-02-17 09:33:38 -0500
120 -->
121
122     <listitem>
123      <para>
124       Avoid multiple name lookups during table and index DDL
125       (Robert Haas, Andres Freund)
126      </para>
127
128      <para>
129       If the name lookups come to different conclusions due to concurrent
130       activity, we might perform some parts of the DDL on a different table
131       than other parts.  At least in the case of <command>CREATE INDEX</>,
132       this can be used to cause the permissions checks to be performed
133       against a different table than the index creation, allowing for a
134       privilege escalation attack.
135       (CVE-2014-0062)
136      </para>
137     </listitem>
138
139 <!--
140 Author: Noah Misch <noah@leadboat.com>
141 Branch: master [4318daecc] 2014-02-17 09:33:31 -0500
142 Branch: REL9_3_STABLE [e4a4fa223] 2014-02-17 09:33:32 -0500
143 Branch: REL9_2_STABLE [f416622be] 2014-02-17 09:33:33 -0500
144 Branch: REL9_1_STABLE [6a10e57b0] 2014-02-17 09:33:37 -0500
145 Branch: REL9_0_STABLE [b9c3bb1b3] 2014-02-17 09:33:38 -0500
146 Branch: REL8_4_STABLE [d0ed1a6c0] 2014-02-17 09:33:39 -0500
147 -->
148
149     <listitem>
150      <para>
151       Prevent buffer overrun with long datetime strings (Noah Misch)
152      </para>
153
154      <para>
155       The <literal>MAXDATELEN</> constant was too small for the longest
156       possible value of type <type>interval</>, allowing a buffer overrun
157       in <function>interval_out()</>.  Although the datetime input
158       functions were more careful about avoiding buffer overrun, the limit
159       was short enough to cause them to reject some valid inputs, such as
160       input containing a very long timezone name.  The <application>ecpg</>
161       library contained these vulnerabilities along with some of its own.
162       (CVE-2014-0063)
163      </para>
164     </listitem>
165
166 <!--
167 Author: Noah Misch <noah@leadboat.com>
168 Branch: master [31400a673] 2014-02-17 09:33:31 -0500
169 Branch: REL9_3_STABLE [7a362a176] 2014-02-17 09:33:32 -0500
170 Branch: REL9_2_STABLE [12bbce15d] 2014-02-17 09:33:33 -0500
171 Branch: REL9_1_STABLE [0b7026d96] 2014-02-17 09:33:37 -0500
172 Branch: REL9_0_STABLE [2c3203e18] 2014-02-17 09:33:38 -0500
173 Branch: REL8_4_STABLE [98be8a6ea] 2014-02-17 09:33:39 -0500
174 -->
175
176     <listitem>
177      <para>
178       Prevent buffer overrun due to integer overflow in size calculations
179       (Noah Misch, Heikki Linnakangas)
180      </para>
181
182      <para>
183       Several functions, mostly type input functions, calculated an
184       allocation size without checking for overflow.  If overflow did
185       occur, a too-small buffer would be allocated and then written past.
186       (CVE-2014-0064)
187      </para>
188     </listitem>
189
190 <!--
191 Author: Tom Lane <tgl@sss.pgh.pa.us>
192 Branch: master [01824385a] 2014-02-17 11:20:21 -0500
193 Branch: REL9_3_STABLE [e3208fec3] 2014-02-17 11:20:24 -0500
194 Branch: REL9_2_STABLE [655b665f7] 2014-02-17 11:20:27 -0500
195 Branch: REL9_1_STABLE [4741e3160] 2014-02-17 11:20:31 -0500
196 Branch: REL9_0_STABLE [45bf2404a] 2014-02-17 11:20:35 -0500
197 Branch: REL8_4_STABLE [69d2bc14a] 2014-02-17 11:20:38 -0500
198 -->
199
200     <listitem>
201      <para>
202       Prevent overruns of fixed-size buffers
203       (Peter Eisentraut, Jozef Mlich)
204      </para>
205
206      <para>
207       Use <function>strlcpy()</> and related functions to provide a clear
208       guarantee that fixed-size buffers are not overrun.  Unlike the
209       preceding items, it is unclear whether these cases really represent
210       live issues, since in most cases there appear to be previous
211       constraints on the size of the input string.  Nonetheless it seems
212       prudent to silence all Coverity warnings of this type.
213       (CVE-2014-0065)
214      </para>
215     </listitem>
216
217 <!--
218 Author: Tom Lane <tgl@sss.pgh.pa.us>
219 Branch: master [01824385a] 2014-02-17 11:20:21 -0500
220 Branch: REL9_3_STABLE [e3208fec3] 2014-02-17 11:20:24 -0500
221 Branch: REL9_2_STABLE [655b665f7] 2014-02-17 11:20:27 -0500
222 Branch: REL9_1_STABLE [4741e3160] 2014-02-17 11:20:31 -0500
223 Branch: REL9_0_STABLE [45bf2404a] 2014-02-17 11:20:35 -0500
224 Branch: REL8_4_STABLE [69d2bc14a] 2014-02-17 11:20:38 -0500
225 -->
226
227     <listitem>
228      <para>
229       Avoid crashing if <function>crypt()</> returns NULL (Honza Horak,
230       Bruce Momjian)
231      </para>
232
233      <para>
234       There are relatively few scenarios in which <function>crypt()</>
235       could return NULL, but <filename>contrib/chkpass</> would crash
236       if it did.  One practical case in which this could be an issue is
237       if <application>libc</> is configured to refuse to execute unapproved
238       hashing algorithms (e.g., <quote>FIPS mode</>).
239       (CVE-2014-0066)
240      </para>
241     </listitem>
242
243 <!--
244 Author: Tom Lane <tgl@sss.pgh.pa.us>
245 Branch: master [6ef325429] 2014-02-17 11:24:32 -0500
246 Branch: REL9_3_STABLE [1ec5988f3] 2014-02-17 11:24:38 -0500
247 Branch: REL9_2_STABLE [ff3d533e5] 2014-02-17 11:24:42 -0500
248 Branch: REL9_1_STABLE [800a3744b] 2014-02-17 11:24:45 -0500
249 Branch: REL9_0_STABLE [369c229d2] 2014-02-17 11:24:48 -0500
250 Branch: REL8_4_STABLE [f58663ab1] 2014-02-17 11:24:51 -0500
251 -->
252
253     <listitem>
254      <para>
255       Document risks of <literal>make check</> in the regression testing
256       instructions (Noah Misch, Tom Lane)
257      </para>
258
259      <para>
260       Since the temporary server started by <literal>make check</>
261       uses <quote>trust</> authentication, another user on the same machine
262       could connect to it as database superuser, and then potentially
263       exploit the privileges of the operating-system user who started the
264       tests.  A future release will probably incorporate changes in the
265       testing procedure to prevent this risk, but some public discussion is
266       needed first.  So for the moment, just warn people against using
267       <literal>make check</> when there are untrusted users on the
268       same machine.
269       (CVE-2014-0067)
270      </para>
271     </listitem>
272
273 <!--
274 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
275 Branch: master [3b97e6823] 2013-12-16 11:29:50 -0300
276 Branch: REL9_3_STABLE [8e9a16ab8] 2013-12-16 11:29:51 -0300
277 -->
278
279     <listitem>
280      <para>
281       Rework tuple freezing protocol
282       (&Aacute;lvaro Herrera, Andres Freund)
283      </para>
284
285      <para>
286       The logic for tuple freezing was unable to handle some cases involving
287       freezing of
288       <link linkend="vacuum-for-multixact-wraparound"><firstterm>multixact</>
289       IDs</link>, with the practical effect that shared row-level locks
290       might be forgotten once old enough.
291      </para>
292
293      <para>
294       Fixing this required changing the WAL record format for tuple
295       freezing.  While this is no issue for standalone servers, when using
296       replication it means that <emphasis>standby servers must be upgraded
297       to 9.3.3 or later before their masters are</>.  An older standby will
298       be unable to interpret freeze records generated by a newer master, and
299       will fail with a PANIC message.  (In such a case, upgrading the
300       standby should be sufficient to let it resume execution.)
301      </para>
302     </listitem>
303
304 <!--
305 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
306 Branch: master [801c2dc72] 2014-02-13 19:36:31 -0300
307 Branch: REL9_3_STABLE [fb47de2be] 2014-02-13 19:30:30 -0300
308 -->
309
310     <listitem>
311      <para>
312       Create separate GUC parameters to control multixact freezing
313       (&Aacute;lvaro Herrera)
314      </para>
315
316      <para>
317       9.3 requires multixact tuple labels to be frozen before
318       they grow too old, in the same fashion as plain transaction ID labels
319       have been frozen for some time.  Previously, the transaction ID
320       freezing parameters were used for multixact IDs too; but since
321       the consumption rates of transaction IDs and multixact IDs can be
322       quite different, this did not work very well.  Introduce new settings
323       <xref linkend="guc-vacuum-multixact-freeze-min-age">,
324       <xref linkend="guc-vacuum-multixact-freeze-table-age">, and
325       <xref linkend="guc-autovacuum-multixact-freeze-max-age">
326       to control when to freeze multixacts.
327      </para>
328     </listitem>
329
330 <!--
331 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
332 Branch: master [11ac4c73c] 2013-12-18 13:45:51 -0300
333 Branch: REL9_3_STABLE [db1014bc4] 2013-12-18 13:31:27 -0300
334 -->
335
336     <listitem>
337      <para>
338       Account for remote row locks propagated by local updates
339       (&Aacute;lvaro Herrera)
340      </para>
341
342      <para>
343       If a row was locked by transaction A, and transaction B updated it,
344       the new version of the row created by B would be locked by A, yet
345       visible only to B.  If transaction B then again updated the row, A's
346       lock wouldn't get checked, thus possibly allowing B to complete when
347       it shouldn't.  This case is new in 9.3 since prior versions did not
348       have any types of row locking that would permit another transaction
349       to update the row at all.
350      </para>
351
352      <para>
353       This oversight could allow referential integrity checks to give false
354       positives (for instance, allow deletes that should have been rejected).
355       Applications using the new commands <literal>SELECT FOR KEY SHARE</>
356       and <literal>SELECT FOR NO KEY UPDATE</> might also have suffered
357       locking failures of this kind.
358      </para>
359     </listitem>
360
361 <!--
362 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
363 Branch: master [07aeb1fec] 2013-12-05 12:21:55 -0300
364 Branch: REL9_3_STABLE [c6cd27e36] 2013-12-05 12:21:55 -0300
365 -->
366
367     <listitem>
368      <para>
369       Prevent <quote>forgetting</> valid row locks when one of several
370       holders of a row lock aborts (&Aacute;lvaro Herrera)
371      </para>
372
373      <para>
374       This was yet another mechanism by which a shared row lock could be
375       lost, thus possibly allowing updates that should have been prevented
376       by foreign-key constraints.
377      </para>
378     </listitem>
379
380 <!--
381 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
382 Branch: master [312bde3d4] 2013-12-05 17:47:51 -0300
383 Branch: REL9_3_STABLE [2dcc48c35] 2013-12-05 17:47:51 -0300
384 -->
385
386     <listitem>
387      <para>
388       Fix incorrect logic during update chain locking
389       (&Aacute;lvaro Herrera)
390      </para>
391
392      <para>
393       This mistake could result in spurious <quote>could not serialize access
394       due to concurrent update</> errors in <literal>REPEATABLE READ</>
395       and <literal>SERIALIZABLE</> transaction isolation modes.
396      </para>
397     </listitem>
398
399 <!--
400 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
401 Branch: master [a50d97625] 2014-01-02 18:17:07 -0300
402 Branch: REL9_3_STABLE [03db79459] 2014-01-02 18:17:07 -0300
403 -->
404
405     <listitem>
406      <para>
407       Handle wraparound correctly during extension or truncation
408       of <filename>pg_multixact/members</>
409       (Andres Freund, &Aacute;lvaro Herrera)
410      </para>
411     </listitem>
412
413 <!--
414 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
415 Branch: master [638cf09e7] 2014-01-02 18:17:29 -0300
416 Branch: REL9_3_STABLE [948a3dfbb] 2014-01-02 18:17:29 -0300
417 -->
418
419     <listitem>
420      <para>
421       Fix handling of 5-digit filenames in <filename>pg_multixact/members</>
422       (&Aacute;lvaro Herrera)
423      </para>
424
425      <para>
426       As of 9.3, these names can be more than 4 digits, but the directory
427       cleanup code ignored such files.
428      </para>
429     </listitem>
430
431 <!--
432 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
433 Branch: master [d881dd623] 2013-12-13 17:16:25 -0300
434 Branch: REL9_3_STABLE [0bc00363b] 2013-12-13 17:16:25 -0300
435 -->
436
437     <listitem>
438      <para>
439       Improve performance of multixact cache code
440       (&Aacute;lvaro Herrera)
441      </para>
442     </listitem>
443
444 <!--
445 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
446 Branch: master [13aa62443] 2013-12-19 16:53:49 -0300
447 Branch: REL9_3_STABLE [85d3b3c3a] 2013-12-19 16:39:59 -0300
448 -->
449
450     <listitem>
451      <para>
452       Optimize updating a row that's already locked by the same transaction
453       (Andres Freund, &Aacute;lvaro Herrera)
454      </para>
455
456      <para>
457       This fixes a performance regression from pre-9.3 versions when doing
458       <literal>SELECT FOR UPDATE</> followed by <literal>UPDATE/DELETE</>.
459      </para>
460     </listitem>
461
462 <!--
463 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
464 Branch: master [4d894b41c] 2014-02-14 15:15:09 +0200
465 Branch: REL9_3_STABLE [762bd379a] 2014-02-14 15:18:34 +0200
466 -->
467
468     <listitem>
469      <para>
470       During archive recovery, prefer highest timeline number when WAL
471       segments with the same ID are present in both the archive
472       and <filename>pg_xlog/</> (Kyotaro Horiguchi)
473      </para>
474
475      <para>
476       Previously, not-yet-archived segments could get ignored during
477       recovery.  This reverts an undesirable behavioral change in 9.3.0
478       back to the way things worked pre-9.3.
479      </para>
480     </listitem>
481
482 <!--
483 Author: Tom Lane <tgl@sss.pgh.pa.us>
484 Branch: master [6f2aead1f] 2014-02-12 14:52:16 -0500
485 Branch: REL9_3_STABLE [7190f7a34] 2014-02-12 14:52:20 -0500
486 Branch: REL9_2_STABLE [bc7ab301a] 2014-02-12 14:52:23 -0500
487 Branch: REL9_1_STABLE [a69cc9b2c] 2014-02-12 14:52:26 -0500
488 Branch: REL9_0_STABLE [7fedd79b7] 2014-02-12 14:52:29 -0500
489 Branch: REL8_4_STABLE [9620fede9] 2014-02-12 14:52:32 -0500
490 -->
491
492     <listitem>
493      <para>
494       Fix possible mis-replay of WAL records when some segments of a
495       relation aren't full size (Greg Stark, Tom Lane)
496      </para>
497
498      <para>
499       The WAL update could be applied to the wrong page, potentially many
500       pages past where it should have been.  Aside from corrupting data,
501       this error has been observed to result in significant <quote>bloat</>
502       of standby servers compared to their masters, due to updates being
503       applied far beyond where the end-of-file should have been.  This
504       failure mode does not appear to be a significant risk during crash
505       recovery, only when initially synchronizing a standby created from a
506       base backup taken from a quickly-changing master.
507      </para>
508     </listitem>
509
510 <!--
511 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
512 Branch: master [d59ff6c11] 2014-01-08 15:03:09 +0200
513 Branch: REL9_3_STABLE [425bef6ee] 2014-01-08 14:32:22 +0200
514 Branch: REL9_2_STABLE [82c75f9dd] 2014-01-08 14:28:55 +0200
515 Branch: REL9_1_STABLE [e56430c62] 2014-01-08 14:33:58 +0200
516 Branch: REL9_0_STABLE [5301c8395] 2014-01-08 14:34:21 +0200
517 -->
518
519     <listitem>
520      <para>
521       Fix bug in determining when recovery has reached consistency
522       (Tomonari Katsumata, Heikki Linnakangas)
523      </para>
524
525      <para>
526       In some cases WAL replay would mistakenly conclude that the database
527       was already consistent at the start of replay, thus possibly allowing
528       hot-standby queries before the database was really consistent.  Other
529       symptoms such as <quote>PANIC: WAL contains references to invalid
530       pages</> were also possible.
531      </para>
532     </listitem>
533
534 <!--
535 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
536 Branch: master [a49633d8d] 2013-12-13 14:15:04 +0200
537 Branch: REL9_3_STABLE [615299cf6] 2013-12-13 14:23:02 +0200
538 -->
539
540     <listitem>
541      <para>
542       Fix WAL logging of visibility map changes (Heikki Linnakangas)
543      </para>
544     </listitem>
545
546 <!--
547 Author: Tom Lane <tgl@sss.pgh.pa.us>
548 Branch: master [061b079f8] 2014-01-14 17:35:21 -0500
549 Branch: REL9_3_STABLE [ebde6c401] 2014-01-14 17:34:51 -0500
550 Branch: REL9_2_STABLE [ad2e041a3] 2014-01-14 17:34:54 -0500
551 Branch: REL9_1_STABLE [ab4bb5c47] 2014-01-14 17:34:57 -0500
552 Branch: REL9_0_STABLE [5d742b9ce] 2014-01-14 17:35:00 -0500
553 -->
554
555     <listitem>
556      <para>
557       Fix improper locking of btree index pages while replaying
558       a <literal>VACUUM</> operation in hot-standby mode (Andres Freund,
559       Heikki Linnakangas, Tom Lane)
560      </para>
561
562      <para>
563       This error could result in <quote>PANIC: WAL contains references to
564       invalid pages</> failures.
565      </para>
566     </listitem>
567
568 <!--
569 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
570 Branch: master [22122c83f] 2013-12-03 23:16:01 +0200
571 Branch: REL9_3_STABLE [8fd04cb32] 2013-12-03 22:13:16 +0200
572 Branch: REL9_2_STABLE [06df57ac6] 2013-12-03 22:34:31 +0200
573 Branch: REL9_1_STABLE [e6acb956a] 2013-12-03 22:34:43 +0200
574 Branch: REL9_0_STABLE [760606dc5] 2013-12-03 23:01:31 +0200
575 Branch: REL8_4_STABLE [67fc33d3a] 2013-12-03 22:53:26 +0200
576 -->
577
578     <listitem>
579      <para>
580       Ensure that insertions into non-leaf GIN index pages write a full-page
581       WAL record when appropriate (Heikki Linnakangas)
582      </para>
583
584      <para>
585       The previous coding risked index corruption in the event of a
586       partial-page write during a system crash.
587      </para>
588     </listitem>
589
590 <!--
591 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
592 Branch: master [3739e5ab9] 2014-01-08 23:28:52 +0200
593 Branch: REL9_3_STABLE [3aefff422] 2014-01-08 23:30:46 +0200
594 Branch: REL9_2_STABLE [3bd8987ef] 2014-01-08 23:30:55 +0200
595 Branch: REL9_1_STABLE [0402f2441] 2014-01-08 23:31:01 +0200
596 -->
597
598     <listitem>
599      <para>
600       When <literal>pause_at_recovery_target</>
601       and <literal>recovery_target_inclusive</> are both set, ensure the
602       target record is applied before pausing, not after (Heikki
603       Linnakangas)
604      </para>
605     </listitem>
606
607 <!--
608 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
609 Branch: master [a472ae1e4] 2014-01-16 23:15:41 +0200
610 Branch: REL9_3_STABLE [e34acac62] 2014-01-16 23:14:57 +0200
611 -->
612
613     <listitem>
614      <para>
615       Ensure walreceiver sends hot-standby feedback messages on time even
616       when there is a continuous stream of data (Andres Freund, Amit
617       Kapila)
618      </para>
619     </listitem>
620
621 <!--
622 Author: Tom Lane <tgl@sss.pgh.pa.us>
623 Branch: master [e8312b4f0] 2013-12-13 11:50:15 -0500
624 Branch: REL9_3_STABLE [478af9b79] 2013-12-13 11:50:25 -0500
625 -->
626
627     <listitem>
628      <para>
629       Prevent timeout interrupts from taking control away from mainline
630       code unless <varname>ImmediateInterruptOK</> is set
631       (Andres Freund, Tom Lane)
632      </para>
633
634      <para>
635       This is a serious issue for any application making use of statement
636       timeouts, as it could cause all manner of strange failures after a
637       timeout occurred.  We have seen reports of <quote>stuck</> spinlocks,
638       ERRORs being unexpectedly promoted to PANICs, unkillable backends,
639       and other misbehaviors.
640      </para>
641     </listitem>
642
643 <!--
644 Author: Robert Haas <rhaas@postgresql.org>
645 Branch: master [d1981719a] 2014-01-31 21:31:08 -0500
646 Branch: REL9_3_STABLE [5d807a74b] 2014-01-31 21:34:44 -0500
647 Branch: REL9_2_STABLE [ebe334463] 2014-01-31 21:35:32 -0500
648 Branch: REL9_1_STABLE [8e6bfc9eb] 2014-01-31 21:36:23 -0500
649 Branch: REL9_0_STABLE [798243a81] 2014-01-31 21:40:20 -0500
650 Branch: REL8_4_STABLE [458b20f2d] 2014-01-31 21:41:09 -0500
651 -->
652
653     <listitem>
654      <para>
655       Fix race conditions during server process exit (Robert Haas)
656      </para>
657
658      <para>
659       Ensure that signal handlers don't attempt to use the
660       process's <varname>MyProc</> pointer after it's no longer valid.
661      </para>
662     </listitem>
663
664 <!--
665 Author: Tom Lane <tgl@sss.pgh.pa.us>
666 Branch: master [214c7a4f0] 2014-02-01 16:21:23 -0500
667 Branch: REL9_3_STABLE [6f1a40773] 2014-02-01 16:21:30 -0500
668 Branch: REL9_2_STABLE [81b116d98] 2014-02-01 16:21:33 -0500
669 Branch: REL9_1_STABLE [03f06ff38] 2014-02-01 16:21:38 -0500
670 -->
671
672     <listitem>
673      <para>
674       Fix race conditions in walsender shutdown logic and walreceiver
675       SIGHUP signal handler (Tom Lane)
676      </para>
677     </listitem>
678
679 <!--
680 Author: Tom Lane <tgl@sss.pgh.pa.us>
681 Branch: master [571addd72] 2014-01-29 20:04:43 -0500
682 Branch: REL9_3_STABLE [bf8ee6f15] 2014-01-29 20:04:01 -0500
683 Branch: REL9_2_STABLE [3e71ce1e9] 2014-01-29 20:04:05 -0500
684 Branch: REL9_1_STABLE [af259c691] 2014-01-29 20:04:08 -0500
685 Branch: REL9_0_STABLE [d17a667e8] 2014-01-29 20:04:11 -0500
686 Branch: REL8_4_STABLE [01b882fd8] 2014-01-29 20:04:14 -0500
687 -->
688
689     <listitem>
690      <para>
691       Fix unsafe references to <varname>errno</> within error reporting
692       logic (Christian Kruse)
693      </para>
694
695      <para>
696       This would typically lead to odd behaviors such as missing or
697       inappropriate <literal>HINT</> fields.
698      </para>
699     </listitem>
700
701 <!--
702 Author: Tom Lane <tgl@sss.pgh.pa.us>
703 Branch: master [910bac595] 2014-01-11 16:36:07 -0500
704 Branch: REL9_3_STABLE [5bfcc9ec5] 2014-01-11 16:35:30 -0500
705 Branch: REL9_2_STABLE [2de905186] 2014-01-11 16:35:34 -0500
706 Branch: REL9_1_STABLE [3f721588a] 2014-01-11 16:35:37 -0500
707 Branch: REL9_0_STABLE [d9c4442b8] 2014-01-11 16:35:41 -0500
708 Branch: REL8_4_STABLE [d0070ac81] 2014-01-11 16:35:44 -0500
709 -->
710
711     <listitem>
712      <para>
713       Fix possible crashes from using <function>ereport()</> too early
714       during server startup (Tom Lane)
715      </para>
716
717      <para>
718       The principal case we've seen in the field is a crash if the server
719       is started in a directory it doesn't have permission to read.
720      </para>
721     </listitem>
722
723 <!--
724 Author: Tom Lane <tgl@sss.pgh.pa.us>
725 Branch: master [74242c23c] 2013-12-05 12:48:28 -0500
726 Branch: REL9_3_STABLE [2a6e1a554] 2013-12-05 12:48:31 -0500
727 Branch: REL9_2_STABLE [41042970b] 2013-12-05 12:48:35 -0500
728 Branch: REL9_1_STABLE [ad910ccdc] 2013-12-05 12:48:37 -0500
729 Branch: REL9_0_STABLE [36352ceb4] 2013-12-05 12:48:41 -0500
730 Branch: REL8_4_STABLE [7635dae55] 2013-12-05 12:48:44 -0500
731 -->
732
733     <listitem>
734      <para>
735       Clear retry flags properly in OpenSSL socket write
736       function (Alexander Kukushkin)
737      </para>
738
739      <para>
740       This omission could result in a server lockup after unexpected loss
741       of an SSL-encrypted connection.
742      </para>
743     </listitem>
744
745 <!--
746 Author: Tom Lane <tgl@sss.pgh.pa.us>
747 Branch: master [44c216330] 2014-02-13 14:24:42 -0500
748 Branch: REL9_3_STABLE [ca1c17181] 2014-02-13 14:24:45 -0500
749 Branch: REL9_2_STABLE [8439ee415] 2014-02-13 14:24:49 -0500
750 Branch: REL9_1_STABLE [170590261] 2014-02-13 14:24:52 -0500
751 Branch: REL9_0_STABLE [148052d25] 2014-02-13 14:24:55 -0500
752 Branch: REL8_4_STABLE [a8a46d846] 2014-02-13 14:24:58 -0500
753 -->
754
755     <listitem>
756      <para>
757       Fix length checking for Unicode identifiers (<literal>U&amp;"..."</>
758       syntax) containing escapes (Tom Lane)
759      </para>
760
761      <para>
762       A spurious truncation warning would be printed for such identifiers
763       if the escaped form of the identifier was too long, but the
764       identifier actually didn't need truncation after de-escaping.
765      </para>
766     </listitem>
767
768 <!--
769 Author: Tom Lane <tgl@sss.pgh.pa.us>
770 Branch: master [0c2338abb] 2014-02-03 19:47:57 -0500
771 Branch: REL9_3_STABLE [4c70cb1d3] 2014-02-03 19:48:00 -0500
772 -->
773
774     <listitem>
775      <para>
776       Fix parsing of Unicode literals and identifiers just before the end
777       of a command string or function body (Tom Lane)
778      </para>
779     </listitem>
780
781 <!--
782 Author: Stephen Frost <sfrost@snowman.net>
783 Branch: master [6c36f383d] 2014-01-21 22:49:22 -0500
784 Branch: REL9_3_STABLE [d1e3070f0] 2014-01-21 22:56:30 -0500
785 Branch: REL9_2_STABLE [c0e6169e1] 2014-01-21 22:56:34 -0500
786 Branch: REL9_1_STABLE [cbd850bf6] 2014-01-21 23:00:58 -0500
787 Branch: REL9_0_STABLE [f2eede9b5] 2014-01-21 23:01:40 -0500
788 -->
789
790     <listitem>
791      <para>
792       Allow keywords that are type names to be used in lists of roles
793       (Stephen Frost)
794      </para>
795
796      <para>
797       A previous patch allowed such keywords to be used without quoting
798       in places such as role identifiers; but it missed cases where a
799       list of role identifiers was permitted, such as <literal>DROP ROLE</>.
800      </para>
801     </listitem>
802
803 <!--
804 Author: Tom Lane <tgl@sss.pgh.pa.us>
805 Branch: master [7ab321404] 2013-12-02 20:28:45 -0500
806 Branch: REL9_3_STABLE [b44ae4893] 2013-12-02 20:28:49 -0500
807 Branch: REL9_2_STABLE [6698782f1] 2013-12-02 20:28:53 -0500
808 Branch: REL9_1_STABLE [f67b8aeab] 2013-12-02 20:28:56 -0500
809 -->
810
811     <listitem>
812      <para>
813       Fix parser crash for <literal>EXISTS(SELECT * FROM
814       zero_column_table)</literal> (Tom Lane)
815      </para>
816     </listitem>
817
818 <!--
819 Author: Tom Lane <tgl@sss.pgh.pa.us>
820 Branch: master [9ec6199d1] 2013-12-10 16:10:17 -0500
821 Branch: REL9_3_STABLE [9d2e07fec] 2013-12-10 16:10:20 -0500
822 Branch: REL9_2_STABLE [f5d9fdcc7] 2013-12-10 16:10:24 -0500
823 Branch: REL9_1_STABLE [48e5cfde8] 2013-12-10 16:10:28 -0500
824 Branch: REL9_0_STABLE [41e9990cd] 2013-12-10 16:10:31 -0500
825 Branch: REL8_4_STABLE [884c6384a] 2013-12-10 16:10:36 -0500
826 -->
827
828     <listitem>
829      <para>
830       Fix possible crash due to invalid plan for nested sub-selects, such
831       as <literal>WHERE (... x IN (SELECT ...) ...) IN (SELECT ...)</>
832       (Tom Lane)
833      </para>
834     </listitem>
835
836 <!--
837 Author: Tom Lane <tgl@sss.pgh.pa.us>
838 Branch: master [043f6ff05] 2014-01-30 14:51:16 -0500
839 Branch: REL9_3_STABLE [a4aa854ca] 2014-01-30 14:51:19 -0500
840 -->
841
842     <listitem>
843      <para>
844       Fix mishandling of <literal>WHERE</> conditions pulled up from
845       a <literal>LATERAL</> subquery (Tom Lane)
846      </para>
847
848      <para>
849       The typical symptom of this bug was a <quote>JOIN qualification
850       cannot refer to other relations</> error, though subtle logic
851       errors in created plans seem possible as well.
852      </para>
853     </listitem>
854
855 <!--
856 Author: Tom Lane <tgl@sss.pgh.pa.us>
857 Branch: master [158b7fa6a] 2014-01-11 19:03:12 -0500
858 Branch: REL9_3_STABLE [27ff4cfe7] 2014-01-11 19:03:15 -0500
859 -->
860
861     <listitem>
862      <para>
863       Disallow <literal>LATERAL</> references to the target table of
864       an <literal>UPDATE/DELETE</> (Tom Lane)
865      </para>
866
867      <para>
868       While this might be allowed in some future release, it was
869       unintentional in 9.3, and didn't work quite right anyway.
870      </para>
871     </listitem>
872
873 <!--
874 Author: Tom Lane <tgl@sss.pgh.pa.us>
875 Branch: master [c03ad5602] 2013-12-14 17:33:53 -0500
876 Branch: REL9_3_STABLE [324577f39] 2013-12-14 17:33:56 -0500
877 Branch: REL9_2_STABLE [5d545b7ed] 2013-12-14 17:34:00 -0500
878 -->
879
880     <listitem>
881      <para>
882       Fix <literal>UPDATE/DELETE</> of an inherited target table
883       that has <literal>UNION ALL</> subqueries (Tom Lane)
884      </para>
885
886      <para>
887       Without this fix, <literal>UNION ALL</> subqueries aren't correctly
888       inserted into the update plans for inheritance child tables after the
889       first one, typically resulting in no update happening for those child
890       table(s).
891      </para>
892     </listitem>
893
894 <!--
895 Author: Tom Lane <tgl@sss.pgh.pa.us>
896 Branch: master [4eeda92d8] 2013-12-23 22:18:48 -0500
897 Branch: REL9_3_STABLE [663f8419b] 2013-12-23 22:18:23 -0500
898 -->
899
900     <listitem>
901      <para>
902       Fix <command>ANALYZE</> to not fail on a column that's a domain over
903       a range type (Tom Lane)
904      </para>
905     </listitem>
906
907 <!--
908 Author: Tom Lane <tgl@sss.pgh.pa.us>
909 Branch: master [628652620] 2014-01-11 13:42:42 -0500
910 Branch: REL9_3_STABLE [36785a21b] 2014-01-11 13:41:51 -0500
911 Branch: REL9_2_STABLE [f0381680f] 2014-01-11 13:41:56 -0500
912 Branch: REL9_1_STABLE [9387f4e1b] 2014-01-11 13:42:00 -0500
913 Branch: REL9_0_STABLE [2d76d75d9] 2014-01-11 13:42:05 -0500
914 Branch: REL8_4_STABLE [00b77771a] 2014-01-11 13:42:11 -0500
915 -->
916
917     <listitem>
918      <para>
919       Ensure that <command>ANALYZE</> creates statistics for a table column
920       even when all the values in it are <quote>too wide</> (Tom Lane)
921      </para>
922
923      <para>
924       <command>ANALYZE</> intentionally omits very wide values from its
925       histogram and most-common-values calculations, but it neglected to do
926       something sane in the case that all the sampled entries are too wide.
927      </para>
928     </listitem>
929
930 <!--
931 Author: Stephen Frost <sfrost@snowman.net>
932 Branch: master [6f25c62d7] 2014-01-18 18:41:52 -0500
933 Branch: REL9_3_STABLE [86e58ae02] 2014-01-18 18:49:08 -0500
934 Branch: REL9_2_STABLE [1fe06595a] 2014-01-18 18:49:41 -0500
935 Branch: REL9_1_STABLE [d2636486b] 2014-01-18 18:50:09 -0500
936 Branch: REL9_0_STABLE [e70c42821] 2014-01-18 18:50:29 -0500
937 Branch: REL8_4_STABLE [0fb4e3ceb] 2014-01-18 18:50:47 -0500
938 -->
939
940     <listitem>
941      <para>
942       In <literal>ALTER TABLE ... SET TABLESPACE</>, allow the database's
943       default tablespace to be used without a permissions check
944       (Stephen Frost)
945      </para>
946
947      <para>
948       <literal>CREATE TABLE</> has always allowed such usage,
949       but <literal>ALTER TABLE</> didn't get the memo.
950      </para>
951     </listitem>
952
953 <!--
954 Author: Tom Lane <tgl@sss.pgh.pa.us>
955 Branch: master [c01bc51f8] 2013-12-30 14:00:02 -0500
956 Branch: REL9_3_STABLE [9a6e2b150] 2013-12-30 14:00:05 -0500
957 -->
958
959     <listitem>
960      <para>
961       Fix support for extensions containing event triggers (Tom Lane)
962      </para>
963     </listitem>
964
965 <!--
966 Author: Tom Lane <tgl@sss.pgh.pa.us>
967 Branch: master [080b7db72] 2014-01-08 20:18:58 -0500
968 Branch: REL9_3_STABLE [47ac4473a] 2014-01-08 20:18:10 -0500
969 Branch: REL9_2_STABLE [97a39f295] 2014-01-08 20:18:13 -0500
970 Branch: REL9_1_STABLE [6c6c53d0b] 2014-01-08 20:18:17 -0500
971 Branch: REL9_0_STABLE [6ca712fb9] 2014-01-08 20:18:20 -0500
972 Branch: REL8_4_STABLE [57ac7d8a7] 2014-01-08 20:18:24 -0500
973 -->
974
975     <listitem>
976      <para>
977       Fix <quote>cannot accept a set</> error when some arms of
978       a <literal>CASE</> return a set and others don't (Tom Lane)
979      </para>
980     </listitem>
981
982 <!--
983 Author: Andrew Dunstan <andrew@dunslane.net>
984 Branch: master [d3ee45152] 2014-02-03 10:40:12 -0500
985 Branch: REL9_3_STABLE [cdfbb78f0] 2014-02-03 10:39:13 -0500
986 -->
987
988     <listitem>
989      <para>
990       Fix memory leakage in JSON functions (Craig Ringer)
991      </para>
992     </listitem>
993
994 <!--
995 Author: Andrew Dunstan <andrew@dunslane.net>
996 Branch: master [29dcf7ded] 2013-12-27 17:04:00 -0500
997 Branch: REL9_3_STABLE [7dfd9f6f5] 2013-12-27 17:21:04 -0500
998 Branch: REL9_2_STABLE [4825a9e95] 2013-12-27 17:21:27 -0500
999 -->
1000
1001     <listitem>
1002      <para>
1003       Properly distinguish numbers from non-numbers when generating JSON
1004       output (Andrew Dunstan)
1005      </para>
1006     </listitem>
1007
1008 <!--
1009 Author: Kevin Grittner <kgrittn@postgresql.org>
1010 Branch: master [a133bf703] 2013-12-27 15:26:24 -0600
1011 Branch: REL9_3_STABLE [28b60aa23] 2013-12-27 15:40:51 -0600
1012 Branch: REL9_2_STABLE [150a30e19] 2013-12-27 15:41:02 -0600
1013 Branch: REL9_1_STABLE [1f069d21d] 2013-12-27 15:41:18 -0600
1014 Branch: REL9_0_STABLE [918d74a07] 2013-12-27 15:41:32 -0600
1015 Branch: REL8_4_STABLE [b2d80147d] 2013-12-27 15:41:46 -0600
1016 -->
1017
1018     <listitem>
1019      <para>
1020       Fix checks for all-zero client addresses in pgstat functions (Kevin
1021       Grittner)
1022      </para>
1023     </listitem>
1024
1025 <!--
1026 Author: Tom Lane <tgl@sss.pgh.pa.us>
1027 Branch: master [082c0dfa1] 2014-02-01 18:27:34 -0500
1028 Branch: REL9_3_STABLE [9beffdcc3] 2014-02-01 18:27:40 -0500
1029 Branch: REL9_2_STABLE [8be095cea] 2014-02-01 18:27:44 -0500
1030 Branch: REL9_1_STABLE [399d23e19] 2014-02-01 18:27:48 -0500
1031 Branch: REL9_0_STABLE [3c7b4ef70] 2014-02-01 18:27:54 -0500
1032 Branch: REL8_4_STABLE [56f5d3424] 2014-02-01 18:27:12 -0500
1033 -->
1034
1035     <listitem>
1036      <para>
1037       Fix possible misclassification of multibyte characters by the text
1038       search parser (Tom Lane)
1039      </para>
1040
1041      <para>
1042       Non-ASCII characters could be misclassified when using C locale with
1043       a multibyte encoding.  On Cygwin, non-C locales could fail as well.
1044      </para>
1045     </listitem>
1046
1047 <!--
1048 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
1049 Branch: master [6c2744f1d] 2014-02-10 09:57:59 +0200
1050 Branch: REL9_3_STABLE [928aec71c] 2014-02-10 09:59:49 +0200
1051 Branch: REL9_2_STABLE [f3807106b] 2014-02-10 10:00:04 +0200
1052 Branch: REL9_1_STABLE [5f778e644] 2014-02-10 10:00:23 +0200
1053 Branch: REL9_0_STABLE [fe8a6f53e] 2014-02-10 10:00:36 +0200
1054 Branch: REL8_4_STABLE [6141983fb] 2014-02-10 10:00:50 +0200
1055 -->
1056
1057     <listitem>
1058      <para>
1059       Fix possible misbehavior in <function>plainto_tsquery()</>
1060       (Heikki Linnakangas)
1061      </para>
1062
1063      <para>
1064       Use <function>memmove()</> not <function>memcpy()</> for copying
1065       overlapping memory regions.  There have been no field reports of
1066       this actually causing trouble, but it's certainly risky.
1067      </para>
1068     </listitem>
1069
1070 <!--
1071 Author: Magnus Hagander <magnus@hagander.net>
1072 Branch: master [9544cc0d6] 2014-01-07 17:50:56 +0100
1073 Branch: REL9_3_STABLE [91c2755fc] 2014-01-07 17:51:02 +0100
1074 Branch: REL9_2_STABLE [61d4d14ee] 2014-01-07 17:53:00 +0100
1075 Branch: REL9_1_STABLE [026a91f86] 2014-01-07 18:00:36 +0100
1076 -->
1077
1078     <listitem>
1079      <para>
1080       Fix placement of permissions checks in <function>pg_start_backup()</>
1081       and <function>pg_stop_backup()</> (Andres Freund, Magnus Hagander)
1082      </para>
1083
1084      <para>
1085       The previous coding might attempt to do catalog access when it
1086       shouldn't.
1087      </para>
1088     </listitem>
1089
1090 <!--
1091 Author: Tatsuo Ishii <ishii@postgresql.org>
1092 Branch: master [1f0626ee4] 2013-12-15 11:09:05 +0900
1093 Branch: REL9_3_STABLE [8122e6f85] 2013-12-15 11:10:41 +0900
1094 Branch: REL9_2_STABLE [0c07ef1ad] 2013-12-15 11:10:49 +0900
1095 Branch: REL9_1_STABLE [035226c61] 2013-12-15 11:10:56 +0900
1096 Branch: REL9_0_STABLE [7016d970d] 2013-12-15 11:11:02 +0900
1097 Branch: REL8_4_STABLE [69f77d756] 2013-12-15 11:11:11 +0900
1098 -->
1099
1100     <listitem>
1101      <para>
1102       Accept <literal>SHIFT_JIS</> as an encoding name for locale checking
1103       purposes (Tatsuo Ishii)
1104      </para>
1105     </listitem>
1106
1107 <!--
1108 Author: Tom Lane <tgl@sss.pgh.pa.us>
1109 Branch: master [0def2573c] 2014-02-03 14:47:17 -0500
1110 Branch: REL9_3_STABLE [641c08041] 2014-02-03 14:46:54 -0500
1111 Branch: REL9_2_STABLE [888b56570] 2014-02-03 14:46:57 -0500
1112 -->
1113
1114     <listitem>
1115      <para>
1116       Fix <literal>*</>-qualification of named parameters in SQL-language
1117       functions (Tom Lane)
1118      </para>
1119
1120      <para>
1121       Given a composite-type parameter
1122       named <literal>foo</>, <literal>$1.*</> worked fine,
1123       but <literal>foo.*</> not so much.
1124      </para>
1125     </listitem>
1126
1127 <!--
1128 Author: Fujii Masao <fujii@postgresql.org>
1129 Branch: master [77035fa8a] 2014-01-23 22:58:58 +0900
1130 Branch: REL9_3_STABLE [be5d49974] 2014-01-23 23:00:30 +0900
1131 Branch: REL9_2_STABLE [ea311bfdf] 2014-01-23 23:01:06 +0900
1132 Branch: REL9_1_STABLE [1b384aff1] 2014-01-23 23:01:34 +0900
1133 Branch: REL9_0_STABLE [996b21cbf] 2014-01-23 23:02:03 +0900
1134 Branch: REL8_4_STABLE [5525529db] 2014-01-23 23:02:30 +0900
1135 -->
1136
1137     <listitem>
1138      <para>
1139       Fix misbehavior of <function>PQhost()</> on Windows (Fujii Masao)
1140      </para>
1141
1142      <para>
1143       It should return <literal>localhost</> if no host has been specified.
1144      </para>
1145     </listitem>
1146
1147 <!--
1148 Author: Tom Lane <tgl@sss.pgh.pa.us>
1149 Branch: master [b8f00a46b] 2014-02-13 18:45:58 -0500
1150 Branch: REL9_3_STABLE [f208fb436] 2014-02-13 18:46:03 -0500
1151 Branch: REL9_2_STABLE [2573f08a1] 2014-02-13 18:45:20 -0500
1152 Branch: REL9_1_STABLE [7182bd239] 2014-02-13 18:45:23 -0500
1153 Branch: REL9_0_STABLE [218dd205b] 2014-02-13 18:45:27 -0500
1154 Branch: REL8_4_STABLE [7644a7bd8] 2014-02-13 18:45:32 -0500
1155 -->
1156
1157     <listitem>
1158      <para>
1159       Improve error handling in <application>libpq</> and <application>psql</>
1160       for failures during <literal>COPY TO STDOUT/FROM STDIN</> (Tom Lane)
1161      </para>
1162
1163      <para>
1164       In particular this fixes an infinite loop that could occur in 9.2 and
1165       up if the server connection was lost during <literal>COPY FROM
1166       STDIN</>.  Variants of that scenario might be possible in older
1167       versions, or with other client applications.
1168      </para>
1169     </listitem>
1170
1171 <!--
1172 Author: Tom Lane <tgl@sss.pgh.pa.us>
1173 Branch: master [92459e7a7] 2014-01-04 16:05:16 -0500
1174 Branch: REL9_3_STABLE [341f0bc49] 2014-01-04 16:05:20 -0500
1175 Branch: REL9_2_STABLE [fa28f9cba] 2014-01-04 16:05:23 -0500
1176 -->
1177
1178     <listitem>
1179      <para>
1180       Fix incorrect translation handling in
1181       some <application>psql</> <literal>\d</> commands
1182       (Peter Eisentraut, Tom Lane)
1183      </para>
1184
1185      <para>
1186      </para>
1187     </listitem>
1188
1189 <!--
1190 Author: Magnus Hagander <magnus@hagander.net>
1191 Branch: master [63ab2befe] 2014-02-12 18:45:18 +0100
1192 Branch: REL9_3_STABLE [c90204c60] 2014-02-12 18:46:04 +0100
1193 Branch: REL9_2_STABLE [0ae288d2d] 2014-02-12 14:51:00 +0100
1194 -->
1195
1196     <listitem>
1197      <para>
1198       Ensure <application>pg_basebackup</>'s background process is killed
1199       when exiting its foreground process (Magnus Hagander)
1200      </para>
1201     </listitem>
1202
1203 <!--
1204 Author: Magnus Hagander <magnus@hagander.net>
1205 Branch: master [01025d80a] 2014-02-09 12:05:14 +0100
1206 Branch: REL9_3_STABLE [680baa8d2] 2014-02-09 12:09:18 +0100
1207 Branch: REL9_2_STABLE [165aa1da5] 2014-02-09 12:09:39 +0100
1208 Branch: REL9_1_STABLE [c6e5c4dd1] 2014-02-09 12:09:55 +0100
1209 -->
1210
1211     <listitem>
1212      <para>
1213       Fix possible incorrect printing of filenames
1214       in <application>pg_basebackup</>'s verbose mode (Magnus Hagander)
1215      </para>
1216     </listitem>
1217
1218 <!--
1219 Author: Magnus Hagander <magnus@hagander.net>
1220 Branch: master [b168c5ef2] 2014-01-07 17:11:32 +0100
1221 Branch: REL9_3_STABLE [0463b9419] 2014-01-07 17:11:51 +0100
1222 Branch: REL9_2_STABLE [2edf3e82c] 2014-01-07 17:22:36 +0100
1223 Branch: REL9_1_STABLE [773e4d5e4] 2014-01-07 17:18:02 +0100
1224 -->
1225
1226     <listitem>
1227      <para>
1228       Avoid including tablespaces inside PGDATA twice in base backups
1229       (Dimitri Fontaine, Magnus Hagander)
1230      </para>
1231     </listitem>
1232
1233 <!--
1234 Author: Michael Meskes <meskes@postgresql.org>
1235 Branch: master [d685e2424] 2014-01-09 16:20:19 +0100
1236 Branch: REL9_3_STABLE [28fff0ef8] 2014-01-09 15:41:51 +0100
1237 Branch: REL9_2_STABLE [799728b0b] 2014-01-09 15:50:51 +0100
1238 Branch: REL9_1_STABLE [9f5b3a1a1] 2014-01-09 15:51:11 +0100
1239 Branch: REL9_0_STABLE [a29b6c342] 2014-01-09 15:51:23 +0100
1240 Branch: REL8_4_STABLE [d68a65b01] 2014-01-09 15:58:37 +0100
1241 -->
1242
1243     <listitem>
1244      <para>
1245       Fix misaligned descriptors in <application>ecpg</> (MauMau)
1246      </para>
1247     </listitem>
1248
1249 <!--
1250 Author: Michael Meskes <meskes@postgresql.org>
1251 Branch: master [7c957ec83] 2014-01-01 12:39:31 +0100
1252 Branch: REL9_3_STABLE [8404037d8] 2014-01-01 12:40:28 +0100
1253 Branch: REL9_2_STABLE [119a59879] 2014-01-01 12:40:42 +0100
1254 Branch: REL9_1_STABLE [948498274] 2014-01-01 12:44:15 +0100
1255 Branch: REL9_0_STABLE [17bcdd01f] 2014-01-01 12:44:44 +0100
1256 Branch: REL8_4_STABLE [96de4939c] 2014-01-01 12:44:58 +0100
1257 -->
1258
1259     <listitem>
1260      <para>
1261       In <application>ecpg</>, handle lack of a hostname in the connection
1262       parameters properly (Michael Meskes)
1263      </para>
1264     </listitem>
1265
1266 <!--
1267 Author: Joe Conway <mail@joeconway.com>
1268 Branch: master [d6ca510d9] 2013-12-07 17:00:26 -0800
1269 Branch: REL9_3_STABLE [0ec530625] 2013-12-07 17:00:10 -0800
1270 Branch: REL9_2_STABLE [7f4ef622f] 2013-12-07 16:59:35 -0800
1271 Branch: REL9_1_STABLE [70165f25b] 2013-12-07 16:59:16 -0800
1272 Branch: REL9_0_STABLE [9057adc23] 2013-12-07 16:58:41 -0800
1273 Branch: REL8_4_STABLE [6c8b16e30] 2013-12-07 16:56:34 -0800
1274 -->
1275
1276     <listitem>
1277      <para>
1278       Fix performance regression in <filename>contrib/dblink</> connection
1279       startup (Joe Conway)
1280      </para>
1281
1282      <para>
1283       Avoid an unnecessary round trip when client and server encodings match.
1284      </para>
1285     </listitem>
1286
1287 <!--
1288 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
1289 Branch: master [866a1f092] 2014-01-13 15:43:29 +0200
1290 Branch: REL9_3_STABLE [50c5770ec] 2014-01-13 15:43:59 +0200
1291 Branch: REL9_2_STABLE [f6d6b42f2] 2014-01-13 15:44:02 +0200
1292 Branch: REL9_1_STABLE [5143dfd57] 2014-01-13 15:44:04 +0200
1293 Branch: REL9_0_STABLE [6c3f040be] 2014-01-13 15:44:12 +0200
1294 Branch: REL8_4_STABLE [492b68541] 2014-01-13 15:44:14 +0200
1295 -->
1296
1297     <listitem>
1298      <para>
1299       In <filename>contrib/isn</>, fix incorrect calculation of the check
1300       digit for ISMN values (Fabien Coelho)
1301      </para>
1302     </listitem>
1303
1304 <!--
1305 Author: Tatsuo Ishii <ishii@postgresql.org>
1306 Branch: master [841a65482] 2013-12-12 19:10:35 +0900
1307 Branch: REL9_3_STABLE [27902bc91] 2013-12-12 19:07:53 +0900
1308 -->
1309
1310     <listitem>
1311      <para>
1312       Fix <filename>contrib/pgbench</>'s progress logging to avoid overflow
1313       when the scale factor is large (Tatsuo Ishii)
1314      </para>
1315     </listitem>
1316
1317 <!--
1318 Author: Tom Lane <tgl@sss.pgh.pa.us>
1319 Branch: master [69c7a9838] 2014-01-21 16:34:28 -0500
1320 Branch: REL9_3_STABLE [0950d67ee] 2014-01-21 16:34:31 -0500
1321 Branch: REL9_2_STABLE [27ab1eb7e] 2014-01-21 16:34:35 -0500
1322 -->
1323
1324     <listitem>
1325      <para>
1326       Fix <filename>contrib/pg_stat_statement</>'s handling
1327       of <literal>CURRENT_DATE</> and related constructs (Kyotaro
1328       Horiguchi)
1329      </para>
1330     </listitem>
1331
1332 <!--
1333 Author: Tom Lane <tgl@sss.pgh.pa.us>
1334 Branch: master [00d4f2af8] 2014-02-03 21:30:20 -0500
1335 Branch: REL9_3_STABLE [eb3d350db] 2014-02-03 21:30:28 -0500
1336 -->
1337
1338     <listitem>
1339      <para>
1340       Improve lost-connection error handling
1341       in <filename>contrib/postgres_fdw</> (Tom Lane)
1342      </para>
1343     </listitem>
1344
1345 <!--
1346 Author: Peter Eisentraut <peter_e@gmx.net>
1347 Branch: master [ad6bf0291] 2014-01-17 23:08:22 -0500
1348 Branch: REL9_3_STABLE [586bea612] 2014-01-17 23:11:02 -0500
1349 Branch: REL9_2_STABLE [526e38751] 2014-01-17 23:12:50 -0500
1350 Branch: REL9_1_STABLE [6d969b000] 2014-01-17 23:14:21 -0500
1351 Branch: REL9_0_STABLE [2346c383a] 2014-01-17 23:15:00 -0500
1352 Branch: REL8_4_STABLE [15699d9bf] 2014-01-17 23:17:59 -0500
1353 -->
1354
1355     <listitem>
1356      <para>
1357       Ensure client-code-only installation procedure works as documented
1358       (Peter Eisentraut)
1359      </para>
1360     </listitem>
1361
1362 <!--
1363 Author: Andrew Dunstan <andrew@dunslane.net>
1364 Branch: master [d587298b8] 2014-02-01 15:11:13 -0500
1365 Branch: REL9_3_STABLE [1e9876c3b] 2014-02-01 15:16:06 -0500
1366 Branch: REL9_2_STABLE [6e96d4db8] 2014-02-01 15:16:18 -0500
1367 Branch: REL9_1_STABLE [dfb4a1a21] 2014-02-01 15:16:29 -0500
1368 Branch: REL9_0_STABLE [59d64e7f3] 2014-02-01 15:16:40 -0500
1369 Branch: REL8_4_STABLE [ae3c98b9b] 2014-02-01 15:16:52 -0500
1370 -->
1371
1372     <listitem>
1373      <para>
1374       In Mingw and Cygwin builds, install the <application>libpq</> DLL
1375       in the <filename>bin</> directory (Andrew Dunstan)
1376      </para>
1377
1378      <para>
1379       This duplicates what the MSVC build has long done.  It should fix
1380       problems with programs like <application>psql</> failing to start
1381       because they can't find the DLL.
1382      </para>
1383     </listitem>
1384
1385 <!--
1386 Author: Andrew Dunstan <andrew@dunslane.net>
1387 Branch: master [7e1531a45] 2014-02-01 16:08:33 -0500
1388 Branch: REL9_3_STABLE [27942baf4] 2014-02-01 16:13:32 -0500
1389 Branch: REL9_2_STABLE [fad443753] 2014-02-01 16:13:46 -0500
1390 Branch: REL9_1_STABLE [e5c22c15d] 2014-02-01 16:14:01 -0500
1391 Branch: REL9_0_STABLE [1c0bf372f] 2014-02-01 16:14:15 -0500
1392 -->
1393
1394     <listitem>
1395      <para>
1396       Avoid using the deprecated <literal>dllwrap</> tool in Cygwin builds
1397       (Marco Atzeri)
1398      </para>
1399     </listitem>
1400
1401 <!--
1402 Author: Andrew Dunstan <andrew@dunslane.net>
1403 Branch: master [cec8394b5] 2014-01-26 09:49:10 -0500
1404 Branch: REL9_3_STABLE [56c08df55] 2014-01-26 09:45:43 -0500
1405 -->
1406
1407     <listitem>
1408      <para>
1409       Enable building with Visual Studio 2013 (Brar Piening)
1410      </para>
1411     </listitem>
1412
1413 <!--
1414 Author: Tom Lane <tgl@sss.pgh.pa.us>
1415 Branch: master [289541520] 2014-02-10 20:48:04 -0500
1416 Branch: REL9_3_STABLE [f1e522696] 2014-02-10 20:48:12 -0500
1417 Branch: REL9_2_STABLE [dd5605104] 2014-02-10 20:48:20 -0500
1418 Branch: REL9_1_STABLE [3bf5c16f1] 2014-02-10 20:48:23 -0500
1419 Branch: REL9_0_STABLE [e1e7642bd] 2014-02-10 20:48:27 -0500
1420 Branch: REL8_4_STABLE [432735cbf] 2014-02-10 20:48:30 -0500
1421 -->
1422
1423     <listitem>
1424      <para>
1425       Don't generate plain-text <filename>HISTORY</>
1426       and <filename>src/test/regress/README</> files anymore (Tom Lane)
1427      </para>
1428
1429      <para>
1430       These text files duplicated the main HTML and PDF documentation
1431       formats.  The trouble involved in maintaining them greatly outweighs
1432       the likely audience for plain-text format.  Distribution tarballs
1433       will still contain files by these names, but they'll just be stubs
1434       directing the reader to consult the main documentation.
1435       The plain-text <filename>INSTALL</> file will still be maintained, as
1436       there is arguably a use-case for that.
1437      </para>
1438     </listitem>
1439
1440 <!--
1441 Author: Tom Lane <tgl@sss.pgh.pa.us>
1442 Branch: master [e04641f4b] 2014-02-14 21:59:13 -0500
1443 Branch: REL9_3_STABLE [46cbcd50e] 2014-02-14 21:59:37 -0500
1444 Branch: REL9_2_STABLE [4f975b68b] 2014-02-14 21:59:42 -0500
1445 Branch: REL9_1_STABLE [3212ba534] 2014-02-14 21:59:46 -0500
1446 Branch: REL9_0_STABLE [cb84fddd9] 2014-02-14 21:59:50 -0500
1447 Branch: REL8_4_STABLE [c0c2d62ac] 2014-02-14 21:59:56 -0500
1448 -->
1449
1450     <listitem>
1451      <para>
1452       Update time zone data files to <application>tzdata</> release 2013i
1453       for DST law changes in Jordan and historical changes in Cuba.
1454      </para>
1455
1456      <para>
1457       In addition, the zones <literal>Asia/Riyadh87</>,
1458       <literal>Asia/Riyadh88</>, and <literal>Asia/Riyadh89</> have been
1459       removed, as they are no longer maintained by IANA, and never
1460       represented actual civil timekeeping practice.
1461      </para>
1462     </listitem>
1463
1464    </itemizedlist>
1465
1466   </sect2>
1467  </sect1>
1468
1469  <sect1 id="release-9-3-2">
1470   <title>Release 9.3.2</title>
1471
1472   <note>
1473   <title>Release Date</title>
1474   <simpara>2013-12-05</simpara>
1475   </note>
1476
1477   <para>
1478    This release contains a variety of fixes from 9.3.1.
1479    For information about new features in the 9.3 major release, see
1480    <xref linkend="release-9-3">.
1481   </para>
1482
1483   <sect2>
1484    <title>Migration to Version 9.3.2</title>
1485
1486    <para>
1487     A dump/restore is not required for those running 9.3.X.
1488    </para>
1489
1490    <para>
1491     However, this release corrects a number of potential data corruption
1492     issues.  See the first three changelog entries below to find out whether
1493     your installation has been affected and what steps you can take if so.
1494    </para>
1495
1496    <para>
1497     Also, if you are upgrading from a version earlier than 9.3.1,
1498     see <xref linkend="release-9-3-1">.
1499    </para>
1500
1501   </sect2>
1502
1503   <sect2>
1504    <title>Changes</title>
1505
1506    <itemizedlist>
1507
1508     <listitem>
1509      <para>
1510       Fix <command>VACUUM</>'s tests to see whether it can
1511       update <structfield>relfrozenxid</> (Andres Freund)
1512      </para>
1513
1514      <para>
1515       In some cases <command>VACUUM</> (either manual or autovacuum) could
1516       incorrectly advance a table's <structfield>relfrozenxid</> value,
1517       allowing tuples to escape freezing, causing those rows to become
1518       invisible once 2^31 transactions have elapsed.  The probability of
1519       data loss is fairly low since multiple incorrect advancements would
1520       need to happen before actual loss occurs, but it's not zero.  In 9.2.0
1521       and later, the probability of loss is higher, and it's also possible
1522       to get <quote>could not access status of transaction</> errors as a
1523       consequence of this bug.  Users upgrading from releases 9.0.4 or 8.4.8
1524       or earlier are not affected, but all later versions contain the bug.
1525      </para>
1526
1527      <para>
1528       The issue can be ameliorated by, after upgrading, vacuuming all tables
1529       in all databases while having <link
1530       linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link>
1531       set to zero.  This will fix any latent corruption but will not be able
1532       to fix all pre-existing data errors.  However, an installation can be
1533       presumed safe after performing this vacuuming if it has executed fewer
1534       than 2^31 update transactions in its lifetime (check this with
1535       <literal>SELECT txid_current() < 2^31</>).
1536      </para>
1537     </listitem>
1538
1539     <listitem>
1540      <para>
1541       Fix multiple bugs in MultiXactId freezing (Andres Freund,
1542       &Aacute;lvaro Herrera)
1543      </para>
1544
1545      <para>
1546       These bugs could lead to <quote>could not access status of
1547       transaction</> errors, or to duplicate or vanishing rows.
1548       Users upgrading from releases prior to 9.3.0 are not affected.
1549      </para>
1550
1551      <para>
1552       The issue can be ameliorated by, after upgrading, vacuuming all tables
1553       in all databases while having <link
1554       linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link>
1555       set to zero.  This will fix latent corruption but will not be able to
1556       fix all pre-existing data errors.
1557      </para>
1558
1559      <para>
1560       As a separate issue, these bugs can also cause standby servers to get
1561       out of sync with the primary, thus exhibiting data errors that are not
1562       in the primary.  Therefore, it's recommended that 9.3.0 and 9.3.1
1563       standby servers be re-cloned from the primary (e.g., with a new base
1564       backup) after upgrading.
1565      </para>
1566     </listitem>
1567
1568     <listitem>
1569      <para>
1570       Fix initialization of <filename>pg_clog</> and <filename>pg_subtrans</>
1571       during hot standby startup (Andres Freund, Heikki Linnakangas)
1572      </para>
1573
1574      <para>
1575       This bug can cause data loss on standby servers at the moment they
1576       start to accept hot-standby queries, by marking committed transactions
1577       as uncommitted. The likelihood of such corruption is small unless, at
1578       the time of standby startup, the primary server has executed many
1579       updating transactions since its last checkpoint.  Symptoms include
1580       missing rows, rows that should have been deleted being still visible,
1581       and obsolete versions of updated rows being still visible alongside
1582       their newer versions.
1583      </para>
1584
1585      <para>
1586       This bug was introduced in versions 9.3.0, 9.2.5, 9.1.10, and 9.0.14.
1587       Standby servers that have only been running earlier releases are not
1588       at risk.  It's recommended that standby servers that have ever run any
1589       of the buggy releases be re-cloned from the primary (e.g., with a new
1590       base backup) after upgrading.
1591      </para>
1592     </listitem>
1593
1594     <listitem>
1595      <para>
1596       Fix multiple bugs in update chain traversal (Andres Freund,
1597       &Aacute;lvaro Herrera)
1598      </para>
1599
1600      <para>
1601       These bugs could result in incorrect behavior, such as locking or even
1602       updating the wrong row, in the presence of concurrent updates.
1603       Spurious <quote>unable to fetch updated version of tuple</> errors
1604       were also possible.
1605      </para>
1606     </listitem>
1607
1608     <listitem>
1609      <para>
1610       Fix dangling-pointer problem in fast-path locking (Tom Lane)
1611      </para>
1612
1613      <para>
1614       This could lead to corruption of the lock data structures in shared
1615       memory, causing <quote>lock already held</> and other odd errors.
1616      </para>
1617     </listitem>
1618
1619     <listitem>
1620      <para>
1621       Fix assorted race conditions in timeout management (Tom Lane)
1622      </para>
1623
1624      <para>
1625       These errors could result in a server process becoming unresponsive
1626       because it had blocked SIGALRM and/or SIGINT.
1627      </para>
1628     </listitem>
1629
1630     <listitem>
1631      <para>
1632       Truncate <filename>pg_multixact</> contents during WAL replay
1633       (Andres Freund)
1634      </para>
1635
1636      <para>
1637       This avoids ever-increasing disk space consumption in standby servers.
1638      </para>
1639     </listitem>
1640
1641     <listitem>
1642      <para>
1643       Ensure an anti-wraparound <command>VACUUM</> counts a page as scanned
1644       when it's only verified that no tuples need freezing (Sergey
1645       Burladyan, Jeff Janes)
1646      </para>
1647
1648      <para>
1649       This bug could result in failing to
1650       advance <structfield>relfrozenxid</>, so that the table would still be
1651       thought to need another anti-wraparound vacuum.  In the worst case the
1652       database might even shut down to prevent wraparound.
1653      </para>
1654     </listitem>
1655
1656     <listitem>
1657      <para>
1658       Fix full-table-vacuum request mechanism for MultiXactIds (Andres Freund)
1659      </para>
1660
1661      <para>
1662       This bug could result in large amounts of useless autovacuum activity.
1663      </para>
1664     </listitem>
1665
1666     <listitem>
1667      <para>
1668       Fix race condition in GIN index posting tree page deletion (Heikki
1669       Linnakangas)
1670      </para>
1671
1672      <para>
1673       This could lead to transient wrong answers or query failures.
1674      </para>
1675     </listitem>
1676
1677     <listitem>
1678      <para>
1679       Fix <quote>unexpected spgdoinsert() failure</> error during SP-GiST
1680       index creation (Teodor Sigaev)
1681      </para>
1682     </listitem>
1683
1684     <listitem>
1685      <para>
1686       Fix assorted bugs in materialized views (Kevin Grittner, Andres Freund)
1687      </para>
1688     </listitem>
1689
1690     <listitem>
1691      <para>
1692       Re-allow duplicate table aliases if they're within aliased JOINs
1693       (Tom Lane)
1694      </para>
1695
1696      <para>
1697       Historically <productname>PostgreSQL</> has accepted queries like
1698 <programlisting>
1699 SELECT ... FROM tab1 x CROSS JOIN (tab2 x CROSS JOIN tab3 y) z
1700 </programlisting>
1701       although a strict reading of the SQL standard would forbid the
1702       duplicate usage of table alias <literal>x</>.  A misguided change in
1703       9.3.0 caused it to reject some such cases that were formerly accepted.
1704       Restore the previous behavior.
1705      </para>
1706     </listitem>
1707
1708     <listitem>
1709      <para>
1710       Avoid flattening a subquery whose <literal>SELECT</> list contains a
1711       volatile function wrapped inside a sub-<literal>SELECT</> (Tom Lane)
1712      </para>
1713
1714      <para>
1715       This avoids unexpected results due to extra evaluations of the
1716       volatile function.
1717      </para>
1718     </listitem>
1719
1720     <listitem>
1721      <para>
1722       Fix planner's processing of non-simple-variable subquery outputs
1723       nested within outer joins (Tom Lane)
1724      </para>
1725
1726      <para>
1727       This error could lead to incorrect plans for queries involving
1728       multiple levels of subqueries within <literal>JOIN</> syntax.
1729      </para>
1730     </listitem>
1731
1732     <listitem>
1733      <para>
1734       Fix incorrect planning in cases where the same non-strict expression
1735       appears in multiple <literal>WHERE</> and outer <literal>JOIN</>
1736       equality clauses (Tom Lane)
1737      </para>
1738     </listitem>
1739
1740     <listitem>
1741      <para>
1742       Fix planner crash with whole-row reference to a subquery (Tom Lane)
1743      </para>
1744     </listitem>
1745
1746     <listitem>
1747      <para>
1748       Fix incorrect generation of optimized MIN()/MAX() plans for
1749       inheritance trees (Tom Lane)
1750      </para>
1751
1752      <para>
1753       The planner could fail in cases where the MIN()/MAX() argument was an
1754       expression rather than a simple variable.
1755      </para>
1756     </listitem>
1757
1758     <listitem>
1759      <para>
1760       Fix premature deletion of temporary files (Andres Freund)
1761      </para>
1762     </listitem>
1763
1764     <listitem>
1765      <para>
1766       Prevent intra-transaction memory leak when printing range values
1767       (Tom Lane)
1768      </para>
1769
1770      <para>
1771       This fix actually cures transient memory leaks in any datatype output
1772       function, but range types are the only ones known to have had a
1773       significant problem.
1774      </para>
1775     </listitem>
1776
1777     <listitem>
1778      <para>
1779       Fix memory leaks when reloading configuration files (Heikki
1780       Linnakangas, Hari Babu)
1781      </para>
1782     </listitem>
1783
1784     <listitem>
1785      <para>
1786       Prevent incorrect display of dropped columns in NOT NULL and CHECK
1787       constraint violation messages (Michael Paquier and Tom Lane)
1788      </para>
1789     </listitem>
1790
1791     <listitem>
1792      <para>
1793       Allow default arguments and named-argument notation for window
1794       functions (Tom Lane)
1795      </para>
1796
1797      <para>
1798       Previously, these cases were likely to crash.
1799      </para>
1800     </listitem>
1801
1802     <listitem>
1803      <para>
1804       Suppress trailing whitespace on each line when pretty-printing rules
1805       and views (Tom Lane)
1806      </para>
1807
1808      <para>
1809       9.3.0 generated such whitespace in many more cases than previous
1810       versions did.  To reduce unexpected behavioral changes, suppress
1811       unnecessary whitespace in all cases.
1812      </para>
1813     </listitem>
1814
1815     <listitem>
1816      <para>
1817       Fix possible read past end of memory in rule printing (Peter Eisentraut)
1818      </para>
1819     </listitem>
1820
1821     <listitem>
1822      <para>
1823       Fix array slicing of <type>int2vector</> and <type>oidvector</> values
1824       (Tom Lane)
1825      </para>
1826
1827      <para>
1828       Expressions of this kind are now implicitly promoted to
1829       regular <type>int2</> or <type>oid</> arrays.
1830      </para>
1831     </listitem>
1832
1833     <listitem>
1834      <para>
1835       Return a valid JSON value when converting an empty <type>hstore</> value
1836       to <type>json</>
1837       (Oskari Saarenmaa)
1838      </para>
1839     </listitem>
1840
1841     <listitem>
1842      <para>
1843       Fix incorrect behaviors when using a SQL-standard, simple GMT offset
1844       timezone (Tom Lane)
1845      </para>
1846
1847      <para>
1848       In some cases, the system would use the simple GMT offset value when
1849       it should have used the regular timezone setting that had prevailed
1850       before the simple offset was selected.  This change also causes
1851       the <function>timeofday</> function to honor the simple GMT offset
1852       zone.
1853      </para>
1854     </listitem>
1855
1856     <listitem>
1857      <para>
1858       Prevent possible misbehavior when logging translations of Windows
1859       error codes (Tom Lane)
1860      </para>
1861     </listitem>
1862
1863     <listitem>
1864      <para>
1865       Properly quote generated command lines in <application>pg_ctl</>
1866       (Naoya Anzai and Tom Lane)
1867      </para>
1868
1869      <para>
1870       This fix applies only to Windows.
1871      </para>
1872     </listitem>
1873
1874     <listitem>
1875      <para>
1876       Fix <application>pg_dumpall</> to work when a source database
1877       sets <link
1878       linkend="guc-default-transaction-read-only"><varname>default_transaction_read_only</></link>
1879       via <command>ALTER DATABASE SET</> (Kevin Grittner)
1880      </para>
1881
1882      <para>
1883       Previously, the generated script would fail during restore.
1884      </para>
1885     </listitem>
1886
1887     <listitem>
1888      <para>
1889       Fix <application>pg_isready</> to handle its <option>-d</> option
1890       properly (Fabr&iacute;zio de Royes Mello and Fujii Masao)
1891      </para>
1892     </listitem>
1893
1894     <listitem>
1895      <para>
1896       Fix parsing of WAL file names in <application>pg_receivexlog</>
1897       (Heikki Linnakangas)
1898      </para>
1899
1900      <para>
1901       This error made <application>pg_receivexlog</> unable to restart
1902       streaming after stopping, once at least 4 GB of WAL had been written.
1903      </para>
1904     </listitem>
1905
1906     <listitem>
1907      <para>
1908       Report out-of-disk-space failures properly
1909       in <application>pg_upgrade</> (Peter Eisentraut)
1910      </para>
1911     </listitem>
1912
1913     <listitem>
1914      <para>
1915       Make <application>ecpg</> search for quoted cursor names
1916       case-sensitively (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
1917      </para>
1918     </listitem>
1919
1920     <listitem>
1921      <para>
1922       Fix <application>ecpg</>'s processing of lists of variables
1923       declared <type>varchar</> (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
1924      </para>
1925     </listitem>
1926
1927     <listitem>
1928      <para>
1929       Make <filename>contrib/lo</> defend against incorrect trigger definitions
1930       (Marc Cousin)
1931      </para>
1932     </listitem>
1933
1934     <listitem>
1935      <para>
1936       Update time zone data files to <application>tzdata</> release 2013h
1937       for DST law changes in Argentina, Brazil, Jordan, Libya,
1938       Liechtenstein, Morocco, and Palestine.  Also, new timezone
1939       abbreviations WIB, WIT, WITA for Indonesia.
1940      </para>
1941     </listitem>
1942
1943    </itemizedlist>
1944
1945   </sect2>
1946  </sect1>
1947
1948  <sect1 id="release-9-3-1">
1949   <title>Release 9.3.1</title>
1950
1951   <note>
1952   <title>Release Date</title>
1953   <simpara>2013-10-10</simpara>
1954   </note>
1955
1956   <para>
1957    This release contains a variety of fixes from 9.3.0.
1958    For information about new features in the 9.3 major release, see
1959    <xref linkend="release-9-3">.
1960   </para>
1961
1962   <sect2>
1963    <title>Migration to Version 9.3.1</title>
1964
1965    <para>
1966     A dump/restore is not required for those running 9.3.X.
1967    </para>
1968
1969    <para>
1970     However, if you use the <literal>hstore</> extension, see the
1971     first changelog entry.
1972    </para>
1973
1974   </sect2>
1975
1976   <sect2>
1977    <title>Changes</title>
1978
1979    <itemizedlist>
1980
1981     <listitem>
1982      <para>
1983       Ensure new-in-9.3 JSON functionality is added to the <literal>hstore</>
1984       extension during an update (Andrew Dunstan)
1985      </para>
1986
1987      <para>
1988       Users who upgraded a pre-9.3 database containing <literal>hstore</>
1989       should execute
1990 <programlisting>
1991 ALTER EXTENSION hstore UPDATE;
1992 </programlisting>
1993       after installing 9.3.1, to add two new JSON functions and a cast.
1994       (If <literal>hstore</> is already up to date, this command does
1995       nothing.)
1996      </para>
1997     </listitem>
1998
1999     <listitem>
2000      <para>
2001       Fix memory leak when creating B-tree indexes on range columns
2002       (Heikki Linnakangas)
2003      </para>
2004     </listitem>
2005
2006     <listitem>
2007      <para>
2008       Fix memory leak caused by <function>lo_open()</function> failure
2009       (Heikki Linnakangas)
2010      </para>
2011     </listitem>
2012
2013     <listitem>
2014      <para>
2015       Serializable snapshot fixes (Kevin Grittner, Heikki Linnakangas)
2016      </para>
2017     </listitem>
2018
2019     <listitem>
2020      <para>
2021       Fix deadlock bug in libpq when using SSL (Stephen Frost)
2022      </para>
2023     </listitem>
2024
2025     <listitem>
2026      <para>
2027       Fix timeline handling bugs in <application>pg_receivexlog</>
2028       (Heikki Linnakangas, Andrew Gierth)
2029      </para>
2030     </listitem>
2031
2032     <listitem>
2033      <para>
2034       Prevent <command>CREATE FUNCTION</> from checking <command>SET</>
2035       variables unless function body checking is enabled (Tom Lane)
2036      </para>
2037     </listitem>
2038
2039     <listitem>
2040      <para>
2041       Remove rare inaccurate warning during vacuum of index-less tables
2042       (Heikki Linnakangas)
2043      </para>
2044     </listitem>
2045
2046    </itemizedlist>
2047
2048   </sect2>
2049  </sect1>
2050
2051  <sect1 id="release-9-3">
2052   <title>Release 9.3</title>
2053
2054   <note>
2055    <title>Release Date</title>
2056    <simpara>2013-09-09</simpara>
2057   </note>
2058
2059   <sect2>
2060    <title>Overview</title>
2061
2062    <para>
2063     Major enhancements in <productname>PostgreSQL</> 9.3 include:
2064    </para>
2065
2066    <!-- This list duplicates items below, but without authors or details-->
2067
2068    <itemizedlist>
2069
2070     <listitem>
2071      <para>
2072       Add <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
2073       views</link>
2074      </para>
2075     </listitem>
2076
2077     <listitem>
2078      <para>
2079       Make simple views <link
2080       linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
2081      </para>
2082     </listitem>
2083
2084     <listitem>
2085      <para>
2086       Add many features for the <type>JSON</> data type,
2087       including <link linkend="functions-json">operators and functions</link>
2088       to extract elements from <type>JSON</> values
2089      </para>
2090     </listitem>
2091
2092     <listitem>
2093      <para>
2094       Implement <acronym>SQL</>-standard <link
2095       linkend="queries-lateral"><literal>LATERAL</></link> option for
2096       <literal>FROM</>-clause subqueries and function calls
2097      </para>
2098     </listitem>
2099
2100     <listitem>
2101      <para>
2102       Allow <link linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data
2103       wrappers</link> to support writes (inserts/updates/deletes) on foreign
2104       tables
2105      </para>
2106     </listitem>
2107
2108     <listitem>
2109      <para>
2110       Add a <link linkend="postgres-fdw"><productname>Postgres</> foreign
2111       data wrapper</link> to allow access to
2112       other <productname>Postgres</> servers
2113      </para>
2114     </listitem>
2115
2116     <listitem>
2117      <para>
2118       Add support for <link linkend="event-triggers">event triggers</link>
2119      </para>
2120     </listitem>
2121
2122     <listitem>
2123      <para>
2124       Add optional ability to <link
2125       linkend="app-initdb-data-checksums">checksum</link> data pages and
2126       report corruption
2127      </para>
2128     </listitem>
2129
2130     <listitem>
2131      <para>
2132       Prevent non-key-field row updates from blocking foreign key checks
2133      </para>
2134     </listitem>
2135
2136     <listitem>
2137      <para>
2138       Greatly reduce System V <link linkend="sysvipc">shared
2139       memory</link> requirements
2140      </para>
2141     </listitem>
2142
2143    </itemizedlist>
2144
2145    <para>
2146     The above items are explained in more detail in the sections below.
2147    </para>
2148
2149   </sect2>
2150
2151   <sect2>
2152
2153   <title>Migration to Version 9.3</title>
2154
2155    <para>
2156     A dump/restore using <link
2157     linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, or use
2158     of <link linkend="pgupgrade"><application>pg_upgrade</></link>, is
2159     required for those wishing to migrate data from any previous release.
2160    </para>
2161
2162    <para>
2163     Version 9.3 contains a number of changes that may affect compatibility
2164     with previous releases.  Observe the following incompatibilities:
2165    </para>
2166
2167    <sect3>
2168     <title>Server Settings</title>
2169
2170      <itemizedlist>
2171
2172       <listitem>
2173        <para>
2174         Rename <varname>replication_timeout</> to <link
2175         linkend="guc-wal-sender-timeout"><varname>wal_sender_timeout</></link>
2176         (Amit Kapila)
2177        </para>
2178
2179        <para>
2180         This setting controls the <link
2181         linkend="wal"><acronym>WAL</></link> sender timeout.
2182        </para>
2183       </listitem>
2184
2185       <listitem>
2186        <para>
2187         Require superuser privileges to set <link
2188         linkend="guc-commit-delay"><varname>commit_delay</></link>
2189         because it can now potentially delay other sessions (Simon Riggs)
2190        </para>
2191       </listitem>
2192
2193       <listitem>
2194        <para>
2195         Allow in-memory sorts to use their full memory allocation (Jeff Janes)
2196        </para>
2197
2198        <para>
2199         Users who have set <link
2200         linkend="guc-work-mem"><varname>work_mem</></link> based on the
2201         previous behavior may need to revisit that setting.
2202        </para>
2203       </listitem>
2204
2205      </itemizedlist>
2206
2207    </sect3>
2208
2209    <sect3>
2210     <title>Other</title>
2211
2212      <itemizedlist>
2213
2214       <listitem>
2215        <para>
2216         Throw an error if a tuple to be updated or deleted has already been
2217         updated or deleted by a <literal>BEFORE</> trigger (Kevin Grittner)
2218        </para>
2219
2220        <para>
2221         Formerly, the originally-intended update was silently skipped,
2222         resulting in logical inconsistency since the trigger might have
2223         propagated data to other places based on the intended update.
2224         Now an error is thrown to prevent the inconsistent results from being
2225         committed.  If this change affects your application, the best solution
2226         is usually to move the data-propagation actions to
2227         an <literal>AFTER</> trigger.
2228        </para>
2229
2230        <para>
2231         This error will also be thrown if a query invokes a volatile function
2232         that modifies rows that are later modified by the query itself.
2233         Such cases likewise previously resulted in silently skipping updates.
2234        </para>
2235       </listitem>
2236
2237       <listitem>
2238        <para>
2239         Change multicolumn <link linkend="SQL-CREATETABLE"><literal>ON UPDATE
2240         SET NULL/SET DEFAULT</></link> foreign key actions to affect
2241         all columns of the constraint, not just those changed in the
2242         <command>UPDATE</> (Tom Lane)
2243        </para>
2244
2245        <para>
2246         Previously, we would set only those referencing columns that
2247         correspond to referenced columns that were changed by
2248         the <command>UPDATE</>.  This was what was required by SQL-92,
2249         but more recent editions of the SQL standard specify the new behavior.
2250        </para>
2251       </listitem>
2252
2253       <listitem>
2254        <para>
2255         Force cached plans to be replanned if the <link
2256         linkend="guc-search-path"><varname>search_path</></link> changes
2257         (Tom Lane)
2258        </para>
2259
2260        <para>
2261         Previously, cached plans already generated in the current session were
2262         not redone if the query was re-executed with a
2263         new <varname>search_path</> setting, resulting in surprising behavior.
2264        </para>
2265       </listitem>
2266
2267       <listitem>
2268        <para>
2269         Fix <link
2270         linkend="functions-formatting-table"><function>to_number()</></link>
2271         to properly handle a period used as a thousands separator (Tom Lane)
2272        </para>
2273
2274        <para>
2275         Previously, a period was considered to be a decimal point even when
2276         the locale says it isn't and the <literal>D</> format code is used to
2277         specify use of the locale-specific decimal point.  This resulted in
2278         wrong answers if <literal>FM</> format was also used.
2279        </para>
2280       </listitem>
2281
2282       <listitem>
2283        <para>
2284         Fix <literal>STRICT</> non-set-returning functions that have
2285         set-returning functions in their arguments to properly return null
2286         rows (Tom Lane)
2287        </para>
2288
2289        <para>
2290         A null value passed to the strict function should result in a null
2291         output, but instead, that output row was suppressed entirely.
2292        </para>
2293       </listitem>
2294
2295       <listitem>
2296        <para>
2297         Store <link linkend="wal"><acronym>WAL</></link> in a continuous
2298         stream, rather than skipping the last 16MB segment every 4GB
2299         (Heikki Linnakangas)
2300        </para>
2301
2302        <para>
2303         Previously, <acronym>WAL</> files with names ending in <literal>FF</>
2304         were not used because of this skipping.  If you have <acronym>WAL</>
2305         backup or restore scripts that took this behavior into account, they
2306         will need to be adjusted.
2307        </para>
2308       </listitem>
2309
2310       <listitem>
2311        <para>
2312         In <link
2313         linkend="catalog-pg-constraint"><structname>pg_constraint.confmatchtype</></link>,
2314         store the default foreign key match type (non-<literal>FULL</>,
2315         non-<literal>PARTIAL</>) as <literal>s</> for <quote>simple</>
2316         (Tom Lane)
2317        </para>
2318
2319        <para>
2320         Previously this case was represented by <literal>u</>
2321         for <quote>unspecified</>.
2322        </para>
2323       </listitem>
2324
2325      </itemizedlist>
2326
2327    </sect3>
2328
2329   </sect2>
2330
2331   <sect2>
2332    <title>Changes</title>
2333
2334    <para>
2335     Below you will find a detailed account of the changes between
2336     <productname>PostgreSQL</productname> 9.3 and the previous major
2337     release.
2338    </para>
2339
2340    <sect3>
2341     <title>Server</title>
2342
2343     <sect4>
2344      <title>Locking</title>
2345
2346      <itemizedlist>
2347
2348       <listitem>
2349        <para>
2350         Prevent non-key-field row updates from blocking foreign key checks
2351         (&Aacute;lvaro Herrera, Noah Misch, Andres Freund, Alexander
2352         Shulgin, Marti Raudsepp, Alexander Shulgin)
2353        </para>
2354
2355        <para>
2356         This change improves concurrency and reduces the probability of
2357         deadlocks when updating tables involved in a foreign-key constraint.
2358         <command>UPDATE</>s that do not change any columns referenced in a
2359         foreign key now take the new <literal>NO KEY UPDATE</> lock mode on
2360         the row, while foreign key checks use the new <literal>KEY SHARE</>
2361         lock mode, which does not conflict with <literal>NO KEY UPDATE</>.
2362         So there is no blocking unless a foreign-key column is changed.
2363        </para>
2364       </listitem>
2365
2366       <listitem>
2367        <para>
2368         Add configuration variable <link
2369         linkend="guc-lock-timeout"><varname>lock_timeout</></link> to
2370         allow limiting how long a session will wait to acquire any one lock
2371         (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
2372        </para>
2373       </listitem>
2374
2375      </itemizedlist>
2376
2377     </sect4>
2378
2379     <sect4>
2380      <title>Indexes</title>
2381
2382      <itemizedlist>
2383
2384       <listitem>
2385        <para>
2386         Add <link linkend="rangetypes-indexing"><acronym>SP-GiST</></link>
2387         support for range data types (Alexander Korotkov)
2388        </para>
2389       </listitem>
2390
2391       <listitem>
2392        <para>
2393         Allow <link linkend="GiST"><acronym>GiST</></link> indexes to be
2394         unlogged (Jeevan Chalke)
2395        </para>
2396       </listitem>
2397
2398       <listitem>
2399        <para>
2400         Improve performance of <acronym>GiST</> index insertion by randomizing
2401         the choice of which page to descend to when there are multiple equally
2402         good alternatives (Heikki Linnakangas)
2403        </para>
2404       </listitem>
2405
2406       <listitem>
2407        <para>
2408         Improve concurrency of hash index operations (Robert Haas)
2409        </para>
2410       </listitem>
2411
2412      </itemizedlist>
2413
2414     </sect4>
2415
2416     <sect4>
2417      <title>Optimizer</title>
2418
2419      <itemizedlist>
2420
2421       <listitem>
2422        <para>
2423         Collect and use histograms of upper and lower bounds, as well as range
2424         lengths, for <link linkend="rangetypes">range types</link>
2425         (Alexander Korotkov)
2426        </para>
2427       </listitem>
2428
2429       <listitem>
2430        <para>
2431         Improve optimizer's cost estimation for index access (Tom Lane)
2432        </para>
2433       </listitem>
2434
2435       <listitem>
2436        <para>
2437         Improve optimizer's hash table size estimate for
2438         doing <literal>DISTINCT</> via hash aggregation (Tom Lane)
2439        </para>
2440       </listitem>
2441
2442       <listitem>
2443        <para>
2444         Suppress no-op Result and Limit plan nodes
2445         (Kyotaro Horiguchi, Amit Kapila, Tom Lane)
2446        </para>
2447       </listitem>
2448
2449       <listitem>
2450        <para>
2451         Reduce optimizer overhead by not keeping plans on the basis of cheap
2452         startup cost when the optimizer only cares about total cost overall
2453         (Tom Lane)
2454        </para>
2455       </listitem>
2456
2457      </itemizedlist>
2458
2459     </sect4>
2460
2461     <sect4>
2462      <title>General Performance</title>
2463
2464      <itemizedlist>
2465
2466       <listitem>
2467        <para>
2468         Add <link linkend="SQL-COPY"><command>COPY FREEZE</></link>
2469         option to avoid the overhead of marking tuples as frozen later
2470         (Simon Riggs, Jeff Davis)
2471        </para>
2472       </listitem>
2473
2474       <listitem>
2475        <para>
2476         Improve performance of <link
2477         linkend="datatype-numeric"><type>NUMERIC</></link> calculations
2478         (Kyotaro Horiguchi)
2479        </para>
2480       </listitem>
2481
2482       <listitem>
2483        <para>
2484         Improve synchronization of sessions waiting for <link
2485         linkend="guc-commit-delay"><varname>commit_delay</></link>
2486         (Peter Geoghegan)
2487        </para>
2488
2489        <para>
2490         This greatly improves the usefulness of <varname>commit_delay</>.
2491        </para>
2492       </listitem>
2493
2494       <listitem>
2495        <para>
2496         Improve performance of the <link
2497         linkend="SQL-CREATETABLE"><command>CREATE TEMPORARY TABLE ... ON
2498         COMMIT DELETE ROWS</></link> option by not truncating such temporary
2499         tables in transactions that haven't touched any temporary tables
2500         (Heikki Linnakangas)
2501        </para>
2502       </listitem>
2503
2504       <listitem>
2505        <para>
2506         Make vacuum recheck visibility after it has removed expired tuples
2507         (Pavan Deolasee)
2508        </para>
2509
2510        <para>
2511         This increases the chance of a page being marked as all-visible.
2512        </para>
2513       </listitem>
2514
2515       <listitem>
2516        <para>
2517         Add per-resource-owner lock caches (Jeff Janes)
2518        </para>
2519
2520        <para>
2521         This speeds up lock bookkeeping at statement completion in
2522         multi-statement transactions that hold many locks; it is particularly
2523         useful for <application>pg_dump</>.
2524        </para>
2525       </listitem>
2526
2527       <listitem>
2528        <para>
2529         Avoid scanning the entire relation cache at commit of a transaction
2530         that creates a new relation (Jeff Janes)
2531        </para>
2532
2533        <para>
2534         This speeds up sessions that create many tables in successive
2535         small transactions, such as a <application>pg_restore</> run.
2536        </para>
2537       </listitem>
2538
2539       <listitem>
2540        <para>
2541         Improve performance of transactions that drop many relations
2542         (Tomas Vondra)
2543        </para>
2544       </listitem>
2545
2546      </itemizedlist>
2547
2548     </sect4>
2549
2550     <sect4>
2551      <title>Monitoring</title>
2552
2553      <itemizedlist>
2554
2555       <listitem>
2556        <para>
2557         Add optional ability to <link
2558         linkend="app-initdb-data-checksums">checksum</link> data pages and
2559         report corruption (Simon Riggs, Jeff Davis, Greg Smith, Ants Aasma)
2560        </para>
2561
2562        <para>
2563         The checksum option can be set during <link
2564         linkend="APP-INITDB">initdb</link>.
2565        </para>
2566       </listitem>
2567
2568       <listitem>
2569        <para>
2570         Split the <link linkend="monitoring-stats">statistics collector's</link>
2571         data file into separate global and per-database files (Tomas Vondra)
2572        </para>
2573
2574        <para>
2575         This reduces the I/O required for statistics tracking.
2576        </para>
2577       </listitem>
2578
2579       <listitem>
2580        <para>
2581         Fix the statistics collector to operate properly in cases where the
2582         system clock goes backwards (Tom Lane)
2583        </para>
2584
2585        <para>
2586         Previously, statistics collection would stop until the time again
2587         reached the latest time previously recorded.
2588        </para>
2589       </listitem>
2590
2591       <listitem>
2592        <para>
2593         Emit an informative message to postmaster standard error when we
2594         are about to stop logging there
2595         (Tom Lane)
2596        </para>
2597
2598        <para>
2599         This should help reduce user confusion about where to look for log
2600         output in common configurations that log to standard error only during
2601         postmaster startup.
2602        </para>
2603       </listitem>
2604
2605      </itemizedlist>
2606
2607     </sect4>
2608
2609     <sect4>
2610      <title>Authentication</title>
2611
2612      <itemizedlist>
2613
2614       <listitem>
2615        <para>
2616         When an authentication failure occurs, log the relevant
2617         <link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></link>
2618         line, to ease debugging of unintended failures
2619         (Magnus Hagander)
2620        </para>
2621       </listitem>
2622
2623       <listitem>
2624        <para>
2625         Improve <link linkend="auth-ldap"><acronym>LDAP</></link> error
2626         reporting and documentation (Peter Eisentraut)
2627        </para>
2628       </listitem>
2629
2630       <listitem>
2631        <para>
2632         Add support for specifying <acronym>LDAP</> authentication parameters
2633         in <acronym>URL</> format, per RFC 4516 (Peter Eisentraut)
2634        </para>
2635       </listitem>
2636
2637       <listitem>
2638        <para>
2639         Change the <link
2640         linkend="guc-ssl-ciphers"><varname>ssl_ciphers</></link> parameter
2641         to start with <literal>DEFAULT</>, rather than <literal>ALL</>,
2642         then remove insecure ciphers (Magnus Hagander)
2643        </para>
2644
2645        <para>
2646         This should yield a more appropriate SSL cipher set.
2647        </para>
2648       </listitem>
2649
2650       <listitem>
2651        <para>
2652         Parse and load <link
2653         linkend="auth-username-maps"><filename>pg_ident.conf</></link>
2654         once, not during each connection (Amit Kapila)
2655        </para>
2656
2657        <para>
2658         This is similar to how <filename>pg_hba.conf</> is processed.
2659        </para>
2660       </listitem>
2661
2662      </itemizedlist>
2663
2664     </sect4>
2665
2666     <sect4>
2667      <title>Server Settings</title>
2668
2669      <itemizedlist>
2670
2671       <listitem>
2672        <para>
2673         Greatly reduce System V <link linkend="sysvipc">shared
2674         memory</link> requirements (Robert Haas)
2675        </para>
2676
2677        <para>
2678         On Unix-like systems, <function>mmap()</> is now used for most
2679         of <productname>PostgreSQL</>'s shared memory.  For most users, this
2680         will eliminate any need to adjust kernel parameters for shared memory.
2681        </para>
2682       </listitem>
2683
2684       <listitem>
2685        <para>
2686         Allow the postmaster to listen on multiple Unix-domain sockets
2687         (Honza Hor&aacute;k)
2688        </para>
2689
2690        <para>
2691         The configuration parameter
2692         <varname>unix_socket_directory</> is replaced by <link
2693         linkend="guc-unix-socket-directories"><varname>unix_socket_directories</></link>,
2694         which accepts a list of directories.
2695        </para>
2696       </listitem>
2697
2698       <listitem>
2699        <para>
2700         Allow a directory of configuration files to be processed (Magnus
2701         Hagander, Greg Smith, Selena Deckelmann)
2702        </para>
2703
2704        <para>
2705         Such a directory is specified with <link
2706         linkend="config-includes"><varname>include_dir</></link> in the server
2707         configuration file.
2708        </para>
2709       </listitem>
2710
2711       <listitem>
2712        <para>
2713         Increase the maximum <link
2714         linkend="APP-INITDB">initdb</link>-configured value for <link
2715         linkend="guc-shared-buffers"><varname>shared_buffers</></link>
2716         to 128MB (Robert Haas)
2717        </para>
2718
2719        <para>
2720         This is the maximum value that initdb will attempt to set in <link
2721         linkend="config-setting-configuration-file"><filename>postgresql.conf</></link>;
2722         the previous maximum was 32MB.
2723        </para>
2724       </listitem>
2725
2726       <listitem>
2727        <para>
2728         Remove the <link linkend="guc-external-pid-file">external
2729         <acronym>PID</> file</link>, if any, on postmaster exit
2730         (Peter Eisentraut)
2731        </para>
2732       </listitem>
2733
2734      </itemizedlist>
2735
2736     </sect4>
2737
2738    </sect3>
2739
2740    <sect3>
2741     <title>Replication and Recovery</title>
2742
2743      <itemizedlist>
2744
2745       <listitem>
2746        <para>
2747         Allow a streaming replication standby to <link
2748         linkend="protocol-replication">follow a timeline switch</link>
2749         (Heikki Linnakangas)
2750        </para>
2751
2752        <para>
2753         This allows streaming standby servers to receive WAL data from a slave
2754         newly promoted to master status.  Previously, other standbys would
2755         require a resync to begin following the new master.
2756        </para>
2757       </listitem>
2758
2759       <listitem>
2760        <para>
2761         Add <acronym>SQL</> functions <link
2762         linkend="functions-admin-backup"><function>pg_is_in_backup()</></link>
2763         and <link
2764         linkend="functions-admin-backup"><function>pg_backup_start_time()</></link>
2765         (Gilles Darold)
2766        </para>
2767
2768        <para>
2769         These functions report the status of base backups.
2770        </para>
2771       </listitem>
2772
2773       <listitem>
2774        <para>
2775         Improve performance of streaming log shipping with <link
2776         linkend="guc-synchronous-commit"><varname>synchronous_commit</></link>
2777         disabled (Andres Freund)
2778        </para>
2779       </listitem>
2780
2781       <listitem>
2782        <para>
2783         Allow much faster promotion of a streaming standby to primary (Simon
2784         Riggs, Kyotaro Horiguchi)
2785        </para>
2786       </listitem>
2787
2788       <listitem>
2789        <para>
2790         Add the last checkpoint's redo location to <link
2791         linkend="APP-PGCONTROLDATA"><application>pg_controldata</></link>'s
2792         output (Fujii Masao)
2793        </para>
2794
2795        <para>
2796         This information is useful for determining which <acronym>WAL</>
2797         files are needed for restore.
2798        </para>
2799       </listitem>
2800
2801       <listitem>
2802        <para>
2803         Allow tools like <link
2804         linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
2805         to run on computers with different architectures (Heikki
2806         Linnakangas)
2807        </para>
2808
2809        <para>
2810         WAL files can still only be replayed on servers with the same
2811         architecture as the primary; but they can now be transmitted to and
2812         stored on machines of any architecture, since the
2813         streaming replication protocol is now machine-independent.
2814        </para>
2815       </listitem>
2816
2817       <listitem>
2818        <para>
2819         Make <link
2820         linkend="app-pgbasebackup"><application>pg_basebackup</></link>
2821         <option>--write-recovery-conf</> output a
2822         minimal <filename>recovery.conf</> file (Zolt&aacute;n
2823         B&ouml;sz&ouml;rm&eacute;nyi, Magnus Hagander)
2824        </para>
2825
2826        <para>
2827         This simplifies setting up a standby server.
2828        </para>
2829       </listitem>
2830
2831       <listitem>
2832        <para>
2833         Allow <link
2834         linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
2835         and <link
2836         linkend="app-pgbasebackup"><application>pg_basebackup</></link>
2837         <option>--xlog-method</> to handle streaming timeline switches
2838         (Heikki Linnakangas)
2839        </para>
2840       </listitem>
2841
2842       <listitem>
2843        <para>
2844         Add <link
2845         linkend="guc-wal-receiver-timeout"><varname>wal_receiver_timeout</></link>
2846         parameter to control the <acronym>WAL</> receiver's timeout
2847         (Amit Kapila)
2848        </para>
2849
2850        <para>
2851         This allows more rapid detection of connection failure.
2852        </para>
2853       </listitem>
2854
2855       <listitem>
2856        <para>
2857         Change the <link linkend="wal"><acronym>WAL</></link> record format to
2858         allow splitting the record header across pages (Heikki Linnakangas)
2859        </para>
2860
2861        <para>
2862         The new format is slightly more compact, and is more efficient to
2863         write.
2864        </para>
2865       </listitem>
2866
2867      </itemizedlist>
2868
2869    </sect3>
2870
2871    <sect3>
2872     <title>Queries</title>
2873
2874      <itemizedlist>
2875
2876       <listitem>
2877        <para>
2878         Implement <acronym>SQL</>-standard <link
2879         linkend="queries-lateral"><literal>LATERAL</></link> option for
2880         <literal>FROM</>-clause subqueries and function calls (Tom Lane)
2881        </para>
2882
2883        <para>
2884         This feature allows subqueries and functions in <literal>FROM</> to
2885         reference columns from other tables in the <literal>FROM</>
2886         clause. The <literal>LATERAL</> keyword is optional for functions.
2887        </para>
2888       </listitem>
2889
2890       <listitem>
2891        <para>
2892         Add support for piping <link
2893         linkend="SQL-COPY"><command>COPY</></link> and <link
2894         linkend="APP-PSQL"><application>psql</></link> <command>\copy</>
2895         data to/from an external program (Etsuro Fujita)
2896        </para>
2897       </listitem>
2898
2899       <listitem>
2900        <para>
2901         Allow a multirow <link
2902         linkend="SQL-VALUES"><literal>VALUES</></link> clause in a rule
2903         to reference <literal>OLD</>/<literal>NEW</> (Tom Lane)
2904        </para>
2905       </listitem>
2906
2907      </itemizedlist>
2908
2909    </sect3>
2910
2911    <sect3>
2912     <title>Object Manipulation</title>
2913
2914      <itemizedlist>
2915
2916       <listitem>
2917        <para>
2918         Add support for <link linkend="event-triggers">event triggers</link>
2919         (Dimitri Fontaine, Robert Haas, &Aacute;lvaro Herrera)
2920        </para>
2921
2922        <para>
2923         This allows server-side functions written in event-enabled
2924         languages to be called when DDL commands are run.
2925        </para>
2926       </listitem>
2927
2928       <listitem>
2929        <para>
2930         Allow <link linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data
2931         wrappers</link> to support writes (inserts/updates/deletes) on foreign
2932         tables (KaiGai Kohei)
2933        </para>
2934       </listitem>
2935
2936       <listitem>
2937        <para>
2938         Add <link linkend="SQL-CREATESCHEMA"><command>CREATE SCHEMA ... IF
2939         NOT EXISTS</></link> clause (Fabr&iacute;zio de Royes Mello)
2940        </para>
2941       </listitem>
2942
2943       <listitem>
2944        <para>
2945         Make <link linkend="SQL-REASSIGN-OWNED"><command>REASSIGN
2946         OWNED</></link> also change ownership of shared objects
2947         (&Aacute;lvaro Herrera)
2948        </para>
2949       </listitem>
2950
2951       <listitem>
2952        <para>
2953         Make <link linkend="sql-createaggregate"><command>CREATE
2954         AGGREGATE</></link> complain if the given initial value string is not
2955         valid input for the transition datatype (Tom Lane)
2956        </para>
2957       </listitem>
2958
2959       <listitem>
2960        <para>
2961         Suppress <link linkend="SQL-CREATETABLE"><command>CREATE
2962         TABLE</></link>'s messages about implicit index and sequence creation
2963         (Robert Haas)
2964        </para>
2965
2966        <para>
2967         These messages now appear at <literal>DEBUG1</> verbosity, so that
2968         they will not be shown by default.
2969        </para>
2970       </listitem>
2971
2972       <listitem>
2973        <para>
2974         Allow <link linkend="SQL-DROPTABLE"><command>DROP TABLE IF
2975         EXISTS</></link> to succeed when a non-existent schema is specified
2976         in the table name (Bruce Momjian)
2977        </para>
2978
2979        <para>
2980          Previously, it threw an error if the schema did not exist.
2981        </para>
2982       </listitem>
2983
2984       <listitem>
2985        <para>
2986         Provide clients with <link
2987         linkend="libpq-pqresulterrorfield">constraint violation details</link>
2988         as separate fields (Pavel Stehule)
2989        </para>
2990
2991        <para>
2992         This allows clients to retrieve table, column, data type, or
2993         constraint name error details.  Previously such information had to be
2994         extracted from error strings.  Client library support is required to
2995         access these fields.
2996        </para>
2997       </listitem>
2998
2999      </itemizedlist>
3000
3001     <sect4>
3002      <title><command>ALTER</></title>
3003
3004      <itemizedlist>
3005
3006       <listitem>
3007        <para>
3008         Support <literal>IF NOT EXISTS</> option in <link
3009         linkend="SQL-ALTERTYPE"><command>ALTER TYPE ... ADD VALUE</></link>
3010         (Andrew Dunstan)
3011        </para>
3012
3013        <para>
3014         This is useful for conditionally adding values to enumerated types.
3015        </para>
3016       </listitem>
3017
3018       <listitem>
3019        <para>
3020         Add <link linkend="SQL-ALTERROLE"><command>ALTER ROLE ALL
3021         SET</></link> to establish settings for all users (Peter Eisentraut)
3022        </para>
3023
3024        <para>
3025         This allows settings to apply to all users in all databases. <link
3026         linkend="SQL-ALTERDATABASE"><command>ALTER DATABASE SET</></link>
3027         already allowed addition of settings for all users in a single
3028         database.  <filename>postgresql.conf</> has a similar effect.
3029        </para>
3030       </listitem>
3031
3032       <listitem>
3033        <para>
3034         Add support for <link linkend="SQL-ALTERRULE"><command>ALTER RULE
3035         ... RENAME</></link> (Ali Dar)
3036        </para>
3037       </listitem>
3038
3039      </itemizedlist>
3040
3041     </sect4>
3042
3043     <sect4>
3044      <title><link linkend="rules-views"><command>VIEWs</></link></title>
3045
3046      <itemizedlist>
3047
3048       <listitem>
3049        <para>
3050         Add <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
3051         views</link> (Kevin Grittner)
3052        </para>
3053
3054        <para>
3055         Unlike ordinary views, where the base tables are read on every access,
3056         materialized views create physical tables at creation or refresh time.
3057         Access to the materialized view then reads from its physical
3058         table. There is not yet any facility for incrementally refreshing
3059         materialized views or auto-accessing them via base table access.
3060        </para>
3061       </listitem>
3062
3063       <listitem>
3064        <para>
3065         Make simple views <link
3066         linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
3067         (Dean Rasheed)
3068        </para>
3069
3070        <para>
3071         Simple views that reference some or all columns from a
3072         single base table are now updatable by default. More
3073         complex views can be made updatable using <link
3074         linkend="SQL-CREATETRIGGER"><literal>INSTEAD OF</></link> triggers
3075         or <link linkend="SQL-CREATERULE"><literal>INSTEAD</></link> rules.
3076        </para>
3077       </listitem>
3078
3079       <listitem>
3080        <para>
3081         Add <link linkend="SQL-CREATEVIEW"><command>CREATE RECURSIVE
3082         VIEW</></link> syntax (Peter Eisentraut)
3083        </para>
3084
3085        <para>
3086         Internally this is translated into <command>CREATE VIEW ... WITH
3087         RECURSIVE ...</>.
3088        </para>
3089       </listitem>
3090
3091       <listitem>
3092        <para>
3093         Improve view/rule printing code to handle cases where referenced
3094         tables are renamed, or columns are renamed, added, or dropped
3095         (Tom Lane)
3096        </para>
3097
3098        <para>
3099         Table and column renamings can produce cases where, if we merely
3100         substitute the new name into the original text of a rule or view, the
3101         result is ambiguous.  This change fixes the rule-dumping code to insert
3102         manufactured table and column aliases when needed to preserve the
3103         original semantics.
3104        </para>
3105       </listitem>
3106
3107      </itemizedlist>
3108
3109     </sect4>
3110
3111    </sect3>
3112
3113    <sect3>
3114     <title>Data Types</title>
3115
3116     <itemizedlist>
3117
3118       <listitem>
3119        <para>
3120         Increase the maximum size of <link linkend="largeObjects">large
3121         objects</link> from 2GB to 4TB (Nozomi Anzai, Yugo Nagata)
3122        </para>
3123
3124        <para>
3125         This change includes adding 64-bit-capable large object access
3126         functions, both in the server and in libpq.
3127        </para>
3128       </listitem>
3129
3130       <listitem>
3131        <para>
3132         Allow text <link linkend="datatype-timezones">timezone
3133         designations</link>, e.g. <quote>America/Chicago</>, in the
3134         <quote>T</> field of <acronym>ISO</>-format <type>timestamptz</type>
3135         input (Bruce Momjian)
3136        </para>
3137       </listitem>
3138
3139     </itemizedlist>
3140
3141    <sect4>
3142     <title><link linkend="datatype-json"><type>JSON</></link></title>
3143
3144     <itemizedlist>
3145
3146       <listitem>
3147        <para>
3148         Add <link linkend="functions-json">operators and functions</link>
3149         to extract elements from <type>JSON</> values (Andrew Dunstan)
3150        </para>
3151       </listitem>
3152
3153       <listitem>
3154        <para>
3155         Allow <type>JSON</> values to be <link
3156         linkend="functions-json-table">converted into records</link>
3157         (Andrew Dunstan)
3158        </para>
3159       </listitem>
3160
3161       <listitem>
3162        <para>
3163         Add <link linkend="functions-json-table">functions</link> to convert
3164         scalars, records, and <type>hstore</> values to <type>JSON</> (Andrew
3165         Dunstan)
3166        </para>
3167       </listitem>
3168
3169     </itemizedlist>
3170
3171    </sect4>
3172
3173    </sect3>
3174
3175
3176    <sect3>
3177     <title>Functions</title>
3178
3179      <itemizedlist>
3180
3181       <listitem>
3182        <para>
3183         Add <link
3184         linkend="array-functions-table"><function>array_remove()</></link>
3185         and <link
3186         linkend="array-functions-table"><function>array_replace()</></link>
3187         functions (Marco Nenciarini, Gabriele Bartolini)
3188        </para>
3189       </listitem>
3190
3191       <listitem>
3192        <para>
3193         Allow <link
3194         linkend="functions-string-other"><function>concat()</></link>
3195         and <link
3196         linkend="functions-string-format"><function>format()</></link>
3197         to properly expand <literal>VARIADIC</>-labeled arguments
3198         (Pavel Stehule)
3199        </para>
3200       </listitem>
3201
3202       <listitem>
3203        <para>
3204         Improve <link
3205         linkend="functions-string-format"><function>format()</></link>
3206         to provide field width and left/right alignment options (Pavel Stehule)
3207        </para>
3208       </listitem>
3209
3210       <listitem>
3211        <para>
3212         Make <link
3213         linkend="functions-formatting-table"><function>to_char()</></link>,
3214         <link
3215         linkend="functions-formatting-table"><function>to_date()</></link>,
3216         and <link
3217         linkend="functions-formatting-table"><function>to_timestamp()</></link>
3218         handle negative (BC) century values properly
3219         (Bruce Momjian)
3220        </para>
3221
3222        <para>
3223         Previously the behavior was either wrong or inconsistent
3224         with positive/<acronym>AD</> handling, e.g. with the format mask
3225         <quote>IYYY-IW-DY</>.
3226        </para>
3227       </listitem>
3228
3229       <listitem>
3230        <para>
3231         Make <link
3232         linkend="functions-formatting-table"><function>to_date()</></link>
3233         and <link
3234         linkend="functions-formatting-table"><function>to_timestamp()</></link>
3235         return proper results when mixing <acronym>ISO</> and Gregorian
3236         week/day designations (Bruce Momjian)
3237        </para>
3238       </listitem>
3239
3240       <listitem>
3241        <para>
3242         Cause <link
3243         linkend="functions-info-catalog-table"><function>pg_get_viewdef()</></link>
3244         to start a new line by default after each <literal>SELECT</> target
3245         list entry and <literal>FROM</> entry (Marko Tiikkaja)
3246        </para>
3247
3248        <para>
3249         This reduces line length in view printing, for instance in <link
3250         linkend="APP-PGDUMP"><application>pg_dump</></link> output.
3251        </para>
3252       </listitem>
3253
3254       <listitem>
3255        <para>
3256         Fix <function>map_sql_value_to_xml_value()</> to print values of
3257         domain types the same way their base type would be printed
3258         (Pavel Stehule)
3259        </para>
3260
3261        <para>
3262         There are special formatting rules for certain built-in types such as
3263         <type>boolean</>; these rules now also apply to domains over these
3264         types.
3265        </para>
3266       </listitem>
3267
3268      </itemizedlist>
3269
3270    </sect3>
3271
3272    <sect3>
3273     <title>Server-Side Languages</title>
3274
3275     <sect4>
3276      <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
3277
3278      <itemizedlist>
3279
3280       <listitem>
3281        <para>
3282         Allow PL/pgSQL to use <literal>RETURN</> with a composite-type
3283         expression (Asif Rehman)
3284        </para>
3285
3286        <para>
3287         Previously, in a function returning a composite type,
3288         <literal>RETURN</> could only reference a variable of that type.
3289        </para>
3290       </listitem>
3291
3292       <listitem>
3293        <para>
3294         Allow PL/pgSQL to access <link
3295         linkend="plpgsql-exception-diagnostics">constraint violation
3296         details</link> as separate fields (Pavel Stehule)
3297        </para>
3298       </listitem>
3299
3300       <listitem>
3301        <para>
3302         Allow PL/pgSQL to access the number of rows processed by
3303         <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
3304        </para>
3305
3306        <para>
3307         A <command>COPY</> executed in a PL/pgSQL function now updates the
3308         value retrieved by <link
3309         linkend="plpgsql-statements-diagnostics"><command>GET DIAGNOSTICS
3310         x = ROW_COUNT</></link>.
3311        </para>
3312       </listitem>
3313
3314       <listitem>
3315        <para>
3316         Allow unreserved keywords to be used as identifiers everywhere in
3317         PL/pgSQL (Tom Lane)
3318        </para>
3319
3320        <para>
3321         In certain places in the PL/pgSQL grammar, keywords had to be quoted
3322         to be used as identifiers, even if they were nominally unreserved.
3323        </para>
3324       </listitem>
3325
3326     </itemizedlist>
3327
3328     </sect4>
3329
3330     <sect4>
3331      <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
3332
3333      <itemizedlist>
3334
3335       <listitem>
3336        <para>
3337         Add PL/Python result object string handler (Peter Eisentraut)
3338        </para>
3339
3340        <para>
3341         This allows <literal>plpy.debug(rv)</literal> to output something reasonable.
3342        </para>
3343       </listitem>
3344
3345       <listitem>
3346        <para>
3347         Make PL/Python convert OID values to a proper Python numeric type
3348         (Peter Eisentraut)
3349        </para>
3350       </listitem>
3351
3352       <listitem>
3353        <para>
3354         Handle <link linkend="spi"><acronym>SPI</></link> errors raised
3355         explicitly (with PL/Python's <literal>RAISE</>) the same as
3356         internal <acronym>SPI</> errors (Oskari Saarenmaa and Jan Urbanski)
3357        </para>
3358       </listitem>
3359
3360      </itemizedlist>
3361
3362     </sect4>
3363
3364    </sect3>
3365
3366    <sect3>
3367     <title>Server Programming Interface (<link linkend="spi">SPI</link>)</title>
3368
3369      <itemizedlist>
3370
3371       <listitem>
3372        <para>
3373         Prevent leakage of <acronym>SPI</> tuple tables during subtransaction
3374         abort (Tom Lane)
3375        </para>
3376
3377        <para>
3378         At the end of any failed subtransaction, the core SPI code now
3379         releases any SPI tuple tables that were created during that
3380         subtransaction.  This avoids the need for SPI-using code to keep track
3381         of such tuple tables and release them manually in error-recovery code.
3382         Failure to do so caused a number of transaction-lifespan memory leakage
3383         issues in PL/pgSQL and perhaps other SPI clients.  <link
3384         linkend="spi-spi-freetupletable"><function>SPI_freetuptable()</></link>
3385         now protects itself against multiple freeing requests, so any existing
3386         code that did take care to clean up shouldn't be broken by this change.
3387        </para>
3388       </listitem>
3389
3390       <listitem>
3391        <para>
3392         Allow <acronym>SPI</> functions to access the number of rows processed
3393         by <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
3394        </para>
3395       </listitem>
3396
3397      </itemizedlist>
3398
3399    </sect3>
3400
3401    <sect3>
3402     <title>Client Applications</title>
3403
3404     <itemizedlist>
3405
3406       <listitem>
3407        <para>
3408         Add command-line utility <link
3409         linkend="app-pg-isready"><application>pg_isready</></link> to
3410         check if the server is ready to accept connections (Phil Sorber)
3411        </para>
3412       </listitem>
3413
3414       <listitem>
3415        <para>
3416         Support multiple <option>--table</> arguments for <link
3417         linkend="APP-PGRESTORE"><application>pg_restore</></link>,
3418         <link linkend="APP-CLUSTERDB"><application>clusterdb</></link>,
3419         <link linkend="APP-REINDEXDB"><application>reindexdb</></link>,
3420         and <link linkend="APP-VACUUMDB"><application>vacuumdb</></link>
3421         (Josh Kupershmidt)
3422        </para>
3423
3424        <para>
3425         This is similar to the way <link
3426         linkend="APP-PGDUMP"><application>pg_dump</></link>'s
3427         <option>--table</> option works.
3428        </para>
3429       </listitem>
3430
3431       <listitem>
3432        <para>
3433         Add <option>--dbname</> option to <link
3434         linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, <link
3435         linkend="app-pgbasebackup"><application>pg_basebackup</></link>, and
3436         <link
3437         linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
3438         to allow specifying a connection string (Amit Kapila)
3439        </para>
3440       </listitem>
3441
3442       <listitem>
3443        <para>
3444         Add libpq function <link
3445         linkend="libpq-pqconninfo"><function>PQconninfo()</></link>
3446         to return connection information (Zolt&aacute;n
3447         B&ouml;sz&ouml;rm&eacute;nyi, Magnus Hagander)
3448        </para>
3449       </listitem>
3450
3451     </itemizedlist>
3452
3453     <sect4>
3454      <title><link linkend="APP-PSQL"><application>psql</></link></title>
3455
3456      <itemizedlist>
3457
3458       <listitem>
3459        <para>
3460         Adjust function cost settings so <application>psql</> tab
3461         completion and pattern searching are more efficient (Tom Lane)
3462        </para>
3463       </listitem>
3464
3465       <listitem>
3466        <para>
3467         Improve <application>psql</>'s tab completion coverage (Jeff Janes,
3468         Dean Rasheed, Peter Eisentraut, Magnus Hagander)
3469        </para>
3470       </listitem>
3471
3472       <listitem>
3473        <para>
3474         Allow the <application>psql</> <option>--single-transaction</>
3475         mode to work when reading from standard input (Fabien Coelho,
3476         Robert Haas)
3477        </para>
3478
3479        <para>
3480         Previously this option only worked when reading from a file.
3481        </para>
3482       </listitem>
3483
3484       <listitem>
3485        <para>
3486         Remove <application>psql</> warning when connecting to an older
3487         server (Peter Eisentraut)
3488        </para>
3489
3490        <para>
3491         A warning is still issued when connecting to a server of a newer major
3492         version than <application>psql</>'s.
3493        </para>
3494       </listitem>
3495
3496      </itemizedlist>
3497
3498     <sect5>
3499      <title><link linkend="APP-PSQL-meta-commands">Backslash Commands</link></title>
3500
3501      <itemizedlist>
3502
3503       <listitem>
3504        <para>
3505         Add <application>psql</> command <command>\watch</> to repeatedly
3506         execute a SQL command (Will Leinweber)
3507        </para>
3508       </listitem>
3509
3510       <listitem>
3511        <para>
3512         Add <application>psql</> command <command>\gset</> to store query
3513         results in <application>psql</> variables (Pavel Stehule)
3514        </para>
3515       </listitem>
3516
3517       <listitem>
3518        <para>
3519         Add <acronym>SSL</> information to <application>psql</>'s
3520         <command>\conninfo</> command (Alastair Turner)
3521        </para>
3522       </listitem>
3523
3524       <listitem>
3525        <para>
3526         Add <quote>Security</> column to <application>psql</>'s
3527         <command>\df+</> output (Jon Erdman)
3528        </para>
3529       </listitem>
3530
3531       <listitem>
3532        <para>
3533         Allow <application>psql</> command <command>\l</> to accept a database
3534         name pattern (Peter Eisentraut)
3535        </para>
3536       </listitem>
3537
3538       <listitem>
3539        <para>
3540         In <application>psql</>, do not allow <command>\connect</> to
3541         use defaults if there is no active connection (Bruce Momjian)
3542        </para>
3543
3544        <para>
3545         This might be the case if the server had crashed.
3546        </para>
3547       </listitem>
3548
3549       <listitem>
3550        <para>
3551         Properly reset state after failure of a SQL command executed with
3552         <application>psql</>'s <literal>\g</> <replaceable>file</>
3553         (Tom Lane)
3554        </para>
3555
3556        <para>
3557         Previously, the output from subsequent SQL commands would unexpectedly
3558         continue to go to the same file.
3559        </para>
3560       </listitem>
3561
3562      </itemizedlist>
3563
3564     </sect5>
3565
3566     <sect5>
3567      <title>Output</title>
3568
3569      <itemizedlist>
3570
3571       <listitem>
3572        <para>
3573         Add a <literal>latex-longtable</> output format to
3574         <application>psql</> (Bruce Momjian)
3575        </para>
3576
3577        <para>
3578         This format allows tables to span multiple pages.
3579        </para>
3580       </listitem>
3581
3582       <listitem>
3583        <para>
3584         Add a <literal>border=3</> output mode to the <application>psql</>
3585         <literal>latex</> format (Bruce Momjian)
3586        </para>
3587       </listitem>
3588
3589       <listitem>
3590        <para>
3591         In <application>psql</>'s tuples-only and expanded output modes, no
3592         longer emit <quote>(No rows)</> for zero rows (Peter Eisentraut)
3593        </para>
3594       </listitem>
3595
3596       <listitem>
3597        <para>
3598         In <application>psql</>'s unaligned, expanded output mode, no longer
3599         print an empty line for zero rows (Peter Eisentraut)
3600        </para>
3601       </listitem>
3602
3603      </itemizedlist>
3604
3605     </sect5>
3606
3607     </sect4>
3608
3609     <sect4>
3610      <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
3611
3612      <itemizedlist>
3613
3614       <listitem>
3615        <para>
3616         Add <application>pg_dump</> <option>--jobs</> option to dump tables in
3617         parallel (Joachim Wieland)
3618        </para>
3619       </listitem>
3620
3621       <listitem>
3622        <para>
3623         Make <application>pg_dump</> output functions in a more predictable
3624         order (Joel Jacobson)
3625        </para>
3626       </listitem>
3627
3628       <listitem>
3629        <para>
3630         Fix tar files emitted by <application>pg_dump</>
3631         to be <acronym>POSIX</> conformant (Brian Weaver, Tom Lane)
3632        </para>
3633       </listitem>
3634
3635       <listitem>
3636        <para>
3637         Add <option>--dbname</> option to <application>pg_dump</>, for
3638         consistency with other client commands (Heikki Linnakangas)
3639        </para>
3640
3641        <para>
3642         The database name could already be supplied last without a flag.
3643        </para>
3644       </listitem>
3645
3646      </itemizedlist>
3647
3648     </sect4>
3649
3650     <sect4>
3651      <title><link linkend="APP-INITDB"><application>initdb</></link></title>
3652
3653      <itemizedlist>
3654
3655       <listitem>
3656        <para>
3657         Make initdb fsync the newly created data directory (Jeff Davis)
3658        </para>
3659
3660        <para>
3661         This insures data integrity in event of a system crash shortly after
3662         initdb.  This can be disabled by using <option>--nosync</>.
3663        </para>
3664       </listitem>
3665
3666       <listitem>
3667        <para>
3668         Add initdb <option>--sync-only</> option to sync the data directory to durable
3669         storage (Bruce Momjian)
3670        </para>
3671
3672        <para>
3673         This is used by <link
3674         linkend="pgupgrade"><application>pg_upgrade</></link>.
3675        </para>
3676       </listitem>
3677
3678       <listitem>
3679        <para>
3680         Make initdb issue a warning about placing the data directory at the
3681         top of a file system mount point (Bruce Momjian)
3682        </para>
3683       </listitem>
3684
3685      </itemizedlist>
3686
3687     </sect4>
3688
3689    </sect3>
3690
3691    <sect3>
3692     <title>Source Code</title>
3693
3694      <itemizedlist>
3695
3696       <listitem>
3697        <para>
3698         Add infrastructure to allow plug-in <link
3699         linkend="bgworker">background worker processes</link>
3700         (&Aacute;lvaro Herrera)
3701        </para>
3702       </listitem>
3703
3704       <listitem>
3705        <para>
3706         Create a centralized timeout <acronym>API</> (Zolt&aacute;n
3707         B&ouml;sz&ouml;rm&eacute;nyi)
3708        </para>
3709       </listitem>
3710
3711       <listitem>
3712        <para>
3713         Create libpgcommon and move <function>pg_malloc()</> and other
3714         functions there (&Aacute;lvaro Herrera, Andres Freund)
3715        </para>
3716
3717        <para>
3718         This allows libpgport to be used solely for portability-related code.
3719        </para>
3720       </listitem>
3721
3722       <listitem>
3723        <para>
3724         Add support for list links embedded in larger structs (Andres Freund)
3725        </para>
3726       </listitem>
3727
3728       <listitem>
3729        <para>
3730         Use <literal>SA_RESTART</> for all signals,
3731         including <literal>SIGALRM</> (Tom Lane)
3732        </para>
3733       </listitem>
3734
3735       <listitem>
3736        <para>
3737         Ensure that the correct text domain is used when
3738         translating <function>errcontext()</> messages
3739         (Heikki Linnakangas)
3740        </para>
3741       </listitem>
3742
3743       <listitem>
3744        <para>
3745         Standardize naming of client-side memory allocation functions (Tom Lane)
3746        </para>
3747       </listitem>
3748
3749       <listitem>
3750        <para>
3751         Provide support for <quote>static assertions</> that will fail at
3752         compile time if some compile-time-constant condition is not met
3753         (Andres Freund, Tom Lane)
3754        </para>
3755       </listitem>
3756
3757       <listitem>
3758        <para>
3759         Support <function>Assert()</> in client-side code (Andrew Dunstan)
3760        </para>
3761       </listitem>
3762
3763       <listitem>
3764        <para>
3765         Add decoration to inform the C compiler that some <function>ereport()</>
3766         and <function>elog()</> calls do not return (Peter Eisentraut,
3767         Andres Freund, Tom Lane, Heikki Linnakangas)
3768        </para>
3769       </listitem>
3770
3771       <listitem>
3772        <para>
3773         Allow options to be passed to the regression
3774         test output comparison utility via <link
3775         linkend="regress-evaluation"><envar>PG_REGRESS_DIFF_OPTS</></link>
3776         (Peter Eisentraut)
3777        </para>
3778       </listitem>
3779
3780       <listitem>
3781        <para>
3782         Add isolation tests for <link
3783         linkend="SQL-CREATEINDEX"><command>CREATE INDEX
3784         CONCURRENTLY</></link> (Abhijit Menon-Sen)
3785        </para>
3786       </listitem>
3787
3788       <listitem>
3789        <para>
3790         Remove typedefs for <type>int2</>/<type>int4</> as they are better
3791         represented as <type>int16</>/<type>int32</> (Peter Eisentraut)
3792        </para>
3793       </listitem>
3794
3795       <listitem>
3796        <para>
3797         Fix <link linkend="install">install-strip</link> on Mac <productname>OS
3798         X</> (Peter Eisentraut)
3799        </para>
3800       </listitem>
3801
3802       <listitem>
3803        <para>
3804         Remove <link linkend="configure">configure</link> flag
3805         <option>--disable-shared</>, as it is no longer supported
3806         (Bruce Momjian)
3807        </para>
3808       </listitem>
3809
3810       <listitem>
3811        <para>
3812         Rewrite pgindent in <application>Perl</> (Andrew Dunstan)
3813        </para>
3814       </listitem>
3815
3816       <listitem>
3817        <para>
3818         Provide Emacs macro to set Perl formatting to
3819         match <productname>PostgreSQL</>'s perltidy settings (Peter Eisentraut)
3820        </para>
3821       </listitem>
3822
3823       <listitem>
3824        <para>
3825         Run tool to check the keyword list whenever the backend grammar is
3826         changed (Tom Lane)
3827        </para>
3828       </listitem>
3829
3830       <listitem>
3831        <para>
3832         Change the way <literal>UESCAPE</> is lexed, to significantly reduce
3833         the size of the lexer tables (Heikki Linnakangas)
3834        </para>
3835       </listitem>
3836
3837       <listitem>
3838        <para>
3839         Centralize <application>flex</> and <application>bison</>
3840         <application>make</> rules (Peter Eisentraut)
3841        </para>
3842
3843        <para>
3844         This is useful for <application>pgxs</> authors.
3845        </para>
3846       </listitem>
3847
3848       <listitem>
3849        <para>
3850         Change many internal backend functions to return object <type>OID</>s
3851         rather than void (Dimitri Fontaine)
3852        </para>
3853
3854        <para>
3855         This is useful for event triggers.
3856        </para>
3857       </listitem>
3858
3859       <listitem>
3860        <para>
3861         Invent pre-commit/pre-prepare/pre-subcommit events for transaction
3862         callbacks (Tom Lane)
3863        </para>
3864
3865        <para>
3866         Loadable modules that use transaction callbacks might need modification
3867         to handle these new event types.
3868        </para>
3869       </listitem>
3870
3871       <listitem>
3872        <para>
3873         Add function <link
3874         linkend="functions-info-catalog-table"><function>pg_identify_object()</></link>
3875         to produce a machine-readable description of a database object
3876         (&Aacute;lvaro Herrera)
3877        </para>
3878       </listitem>
3879
3880       <listitem>
3881        <para>
3882         Add post-<command>ALTER</>-object server hooks (KaiGai Kohei)
3883        </para>
3884       </listitem>
3885
3886       <listitem>
3887        <para>
3888         Implement a generic binary heap and use it for Merge-Append
3889         operations (Abhijit Menon-Sen)
3890        </para>
3891       </listitem>
3892
3893       <listitem>
3894        <para>
3895         Provide a tool to help detect timezone abbreviation changes when
3896         updating the <filename>src/timezone/data</> files
3897         (Tom Lane)
3898        </para>
3899       </listitem>
3900
3901       <listitem>
3902        <para>
3903         Add <application>pkg-config</> support for <application>libpq</>
3904         and <application>ecpg</> libraries (Peter Eisentraut)
3905        </para>
3906       </listitem>
3907
3908       <listitem>
3909        <para>
3910         Remove <filename>src/tool/backend</>, now that the content is on
3911         the <productname>PostgreSQL</> wiki (Bruce Momjian)
3912        </para>
3913       </listitem>
3914
3915       <listitem>
3916        <para>
3917         Split out <link linkend="wal"><acronym>WAL</></link> reading as
3918         an independent facility (Heikki Linnakangas, Andres Freund)
3919        </para>
3920       </listitem>
3921
3922       <listitem>
3923        <para>
3924         Use a 64-bit integer to represent <link
3925         linkend="wal"><acronym>WAL</></link> positions
3926         (<structname>XLogRecPtr</>) instead of two 32-bit integers
3927         (Heikki Linnakangas)
3928        </para>
3929
3930        <para>
3931         Generally, tools that need to read the <acronym>WAL</> format
3932         will need to be adjusted.
3933        </para>
3934       </listitem>
3935
3936       <listitem>
3937        <para>
3938         Allow <link linkend="plpython">PL/Python</link> to support
3939         platform-specific include directories (Peter Eisentraut)
3940        </para>
3941       </listitem>
3942
3943       <listitem>
3944        <para>
3945         Allow <link linkend="plpython">PL/Python</link> on <productname>OS
3946         X</> to build against custom versions of <application>Python</>
3947         (Peter Eisentraut)
3948        </para>
3949       </listitem>
3950
3951      </itemizedlist>
3952
3953    </sect3>
3954
3955    <sect3>
3956     <title>Additional Modules</title>
3957
3958     <itemizedlist>
3959
3960       <listitem>
3961        <para>
3962         Add a <link linkend="postgres-fdw"><productname>Postgres</> foreign
3963         data wrapper</link> contrib module to allow access to
3964         other <productname>Postgres</> servers (Shigeru Hanada)
3965        </para>
3966
3967        <para>
3968         This foreign data wrapper supports writes.
3969        </para>
3970       </listitem>
3971
3972       <listitem>
3973        <para>
3974         Add <link linkend="pgxlogdump"><application>pg_xlogdump</></link>
3975         contrib program (Andres Freund)
3976        </para>
3977       </listitem>
3978
3979       <listitem>
3980        <para>
3981         Add support for indexing of regular-expression searches in
3982         <link linkend="pgtrgm"><productname>pg_trgm</></link>
3983         (Alexander Korotkov)
3984        </para>
3985       </listitem>
3986
3987       <listitem>
3988        <para>
3989         Improve <link linkend="pgtrgm"><productname>pg_trgm</></link>'s
3990         handling of multibyte characters (Tom Lane)
3991        </para>
3992
3993        <para>
3994         On a platform that does not have the wcstombs() or towlower() library
3995         functions, this could result in an incompatible change in the contents
3996         of <productname>pg_trgm</> indexes for non-ASCII data.  In such cases,
3997         <command>REINDEX</> those indexes to ensure correct search results.
3998        </para>
3999       </listitem>
4000
4001       <listitem>
4002        <para>
4003         Add a <link linkend="pgstattuple">pgstattuple</link> function to report
4004         the size of the pending-insertions list of a <acronym>GIN</> index
4005         (Fujii Masao)
4006        </para>
4007       </listitem>
4008
4009       <listitem>
4010        <para>
4011         Make <link linkend="oid2name"><application>oid2name</></link>,
4012         <link linkend="pgbench"><application>pgbench</></link>, and
4013         <link linkend="vacuumlo"><application>vacuumlo</></link> set
4014         <varname>fallback_application_name</> (Amit Kapila)
4015        </para>
4016       </listitem>
4017
4018       <listitem>
4019        <para>
4020         Improve output of <link
4021         linkend="pgtesttiming"><application>pg_test_timing</></link>
4022         (Bruce Momjian)
4023        </para>
4024       </listitem>
4025
4026       <listitem>
4027        <para>
4028         Improve output of <link
4029         linkend="pgtestfsync"><application>pg_test_fsync</></link>
4030         (Peter Geoghegan)
4031        </para>
4032       </listitem>
4033
4034       <listitem>
4035        <para>
4036         Create a dedicated foreign data wrapper, with its own option validator
4037         function, for <link linkend="dblink">dblink</link> (Shigeru Hanada)
4038        </para>
4039
4040        <para>
4041         When using this FDW to define the target of a <application>dblink</>
4042         connection, instead of using a hard-wired list of connection options,
4043         the underlying <application>libpq</> library is consulted to see what
4044         connection options it supports.
4045        </para>
4046       </listitem>
4047
4048     </itemizedlist>
4049
4050     <sect4>
4051      <title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>
4052
4053      <itemizedlist>
4054
4055       <listitem>
4056        <para>
4057         Allow <application>pg_upgrade</> to do dumps and restores in
4058         parallel (Bruce Momjian, Andrew Dunstan)
4059        </para>
4060
4061        <para>
4062         This allows parallel schema dump/restore of databases, as well as
4063         parallel copy/link of data files per tablespace.  Use the
4064         <option>--jobs</> option to specify the level of parallelism.
4065        </para>
4066       </listitem>
4067
4068       <listitem>
4069        <para>
4070         Make <application>pg_upgrade</> create Unix-domain sockets in
4071         the current directory (Bruce Momjian, Tom Lane)
4072        </para>
4073
4074        <para>
4075         This reduces the possibility that someone will accidentally connect
4076         during the upgrade.
4077        </para>
4078       </listitem>
4079
4080       <listitem>
4081        <para>
4082         Make <application>pg_upgrade</> <option>--check</> mode properly
4083         detect the location of non-default socket directories (Bruce
4084         Momjian, Tom Lane)
4085        </para>
4086       </listitem>
4087
4088       <listitem>
4089        <para>
4090         Improve performance of <application>pg_upgrade</> for databases
4091         with many tables (Bruce Momjian)
4092        </para>
4093       </listitem>
4094
4095       <listitem>
4096        <para>
4097         Improve <application>pg_upgrade</>'s logs by showing
4098         executed commands (&Aacute;lvaro Herrera)
4099        </para>
4100       </listitem>
4101
4102       <listitem>
4103        <para>
4104         Improve <application>pg_upgrade</>'s status display during
4105         copy/link (Bruce Momjian)
4106        </para>
4107       </listitem>
4108
4109      </itemizedlist>
4110
4111     </sect4>
4112
4113     <sect4>
4114      <title><link linkend="pgbench"><application>pgbench</></link></title>
4115
4116      <itemizedlist>
4117
4118       <listitem>
4119        <para>
4120         Add <option>--foreign-keys</> option to <application>pgbench</>
4121         (Jeff Janes)
4122        </para>
4123
4124        <para>
4125         This adds foreign key constraints to the standard tables created by
4126         <application>pgbench</>, for use in foreign key performance testing.
4127        </para>
4128       </listitem>
4129
4130       <listitem>
4131        <para>
4132         Allow <application>pgbench</> to aggregate performance statistics
4133         and produce output every <option>--aggregate-interval</>
4134         seconds (Tomas Vondra)
4135        </para>
4136       </listitem>
4137
4138       <listitem>
4139        <para>
4140         Add <application>pgbench</> <option>--sampling-rate</> option
4141         to control the percentage of transactions logged (Tomas Vondra)
4142        </para>
4143       </listitem>
4144
4145       <listitem>
4146        <para>
4147         Reduce and improve the status message output of
4148         <application>pgbench</>'s initialization mode (Robert Haas,
4149         Peter Eisentraut)
4150        </para>
4151       </listitem>
4152
4153       <listitem>
4154        <para>
4155         Add <application>pgbench</> <option>-q</> mode to print one output
4156         line every five seconds (Tomas Vondra)
4157        </para>
4158       </listitem>
4159
4160       <listitem>
4161        <para>
4162         Output <application>pgbench</> elapsed and estimated remaining
4163         time during initialization (Tomas Vondra)
4164        </para>
4165       </listitem>
4166
4167       <listitem>
4168        <para>
4169         Allow <application>pgbench</> to use much larger scale factors,
4170         by changing relevant columns from <type>integer</> to <type>bigint</>
4171         when the requested scale factor exceeds 20000
4172         (Greg Smith)
4173        </para>
4174       </listitem>
4175
4176     </itemizedlist>
4177
4178     </sect4>
4179
4180    </sect3>
4181
4182    <sect3>
4183     <title>Documentation</title>
4184
4185     <itemizedlist>
4186
4187       <listitem>
4188        <para>
4189         Allow <productname>EPUB</>-format documentation to be created
4190         (Peter Eisentraut)
4191        </para>
4192       </listitem>
4193
4194       <listitem>
4195        <para>
4196         Update <productname>FreeBSD</> kernel configuration documentation
4197         (Brad Davis)
4198        </para>
4199       </listitem>
4200
4201       <listitem>
4202        <para>
4203         Improve <link linkend="tutorial-window"><literal>WINDOW</>
4204         function</link> documentation (Bruce Momjian, Florian Pflug)
4205        </para>
4206       </listitem>
4207
4208       <listitem>
4209        <para>
4210         Add <link linkend="docguide-toolsets">instructions</link> for setting
4211         up the documentation tool chain on Mac <productname>OS X</>
4212         (Peter Eisentraut)
4213        </para>
4214       </listitem>
4215
4216       <listitem>
4217        <para>
4218         Improve <link
4219         linkend="guc-commit-delay"><varname>commit_delay</></link>
4220         documentation (Peter Geoghegan)
4221        </para>
4222       </listitem>
4223
4224     </itemizedlist>
4225
4226    </sect3>
4227
4228   </sect2>
4229  </sect1>