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