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