]> granicus.if.org Git - postgresql/blob - doc/src/sgml/release-9.3.sgml
Adjust back-branch release note description of commits a2a718b22 et al.
[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-10">
5   <title>Release 9.3.10</title>
6
7   <note>
8   <title>Release Date</title>
9   <simpara>2015-10-08</simpara>
10   </note>
11
12   <para>
13    This release contains a variety of fixes from 9.3.9.
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.10</title>
20
21    <para>
22     A dump/restore is not required for those running 9.3.X.
23    </para>
24
25    <para>
26     However, if you are upgrading from a version earlier than 9.3.9,
27     see <xref linkend="release-9-3-9">.
28    </para>
29
30   </sect2>
31
32   <sect2>
33    <title>Changes</title>
34
35    <itemizedlist>
36
37     <listitem>
38      <para>
39       Guard against stack overflows in <type>json</> parsing
40       (Oskari Saarenmaa)
41      </para>
42
43      <para>
44       If an application constructs PostgreSQL <type>json</>
45       or <type>jsonb</> values from arbitrary user input, the application's
46       users can reliably crash the PostgreSQL server, causing momentary
47       denial of service.  (CVE-2015-5289)
48      </para>
49     </listitem>
50
51     <listitem>
52      <para>
53       Fix <filename>contrib/pgcrypto</> to detect and report
54       too-short <function>crypt()</> salts (Josh Kupershmidt)
55      </para>
56
57      <para>
58       Certain invalid salt arguments crashed the server or disclosed a few
59       bytes of server memory.  We have not ruled out the viability of
60       attacks that arrange for presence of confidential information in the
61       disclosed bytes, but they seem unlikely.  (CVE-2015-5288)
62      </para>
63     </listitem>
64
65     <listitem>
66      <para>
67       Fix subtransaction cleanup after a portal (cursor) belonging to an
68       outer subtransaction fails (Tom Lane, Michael Paquier)
69      </para>
70
71      <para>
72       A function executed in an outer-subtransaction cursor could cause an
73       assertion failure or crash by referencing a relation created within an
74       inner subtransaction.
75      </para>
76     </listitem>
77
78     <listitem>
79      <para>
80       Ensure all relations referred to by an updatable view are properly
81       locked during an update statement (Dean Rasheed)
82      </para>
83     </listitem>
84
85     <listitem>
86      <para>
87       Fix insertion of relations into the relation cache <quote>init file</>
88       (Tom Lane)
89      </para>
90
91      <para>
92       An oversight in a patch in the most recent minor releases
93       caused <structname>pg_trigger_tgrelid_tgname_index</> to be omitted
94       from the init file.  Subsequent sessions detected this, then deemed the
95       init file to be broken and silently ignored it, resulting in a
96       significant degradation in session startup time.  In addition to fixing
97       the bug, install some guards so that any similar future mistake will be
98       more obvious.
99      </para>
100     </listitem>
101
102     <listitem>
103      <para>
104       Avoid O(N^2) behavior when inserting many tuples into a SPI query
105       result (Neil Conway)
106      </para>
107     </listitem>
108
109     <listitem>
110      <para>
111       Improve <command>LISTEN</> startup time when there are many unread
112       notifications (Matt Newell)
113      </para>
114     </listitem>
115
116     <listitem>
117      <para>
118       Fix performance problem when a session alters large numbers of foreign
119       key constraints (Jan Wieck, Tom Lane)
120      </para>
121
122      <para>
123       This was seen primarily when restoring <application>pg_dump</> output
124       for databases with many thousands of tables.
125      </para>
126     </listitem>
127
128     <listitem>
129      <para>
130       Disable SSL renegotiation by default (Michael Paquier, Andres Freund)
131      </para>
132
133      <para>
134       While use of SSL renegotiation is a good idea in theory, we have seen
135       too many bugs in practice, both in the underlying OpenSSL library and
136       in our usage of it.  Renegotiation will be removed entirely in 9.5 and
137       later.  In the older branches, just change the default value
138       of <varname>ssl_renegotiation_limit</> to zero (disabled).
139      </para>
140     </listitem>
141
142     <listitem>
143      <para>
144       Lower the minimum values of the <literal>*_freeze_max_age</> parameters
145       (Andres Freund)
146      </para>
147
148      <para>
149       This is mainly to make tests of related behavior less time-consuming,
150       but it may also be of value for installations with limited disk space.
151      </para>
152     </listitem>
153
154     <listitem>
155      <para>
156       Limit the maximum value of <varname>wal_buffers</> to 2GB to avoid
157       server crashes (Josh Berkus)
158      </para>
159     </listitem>
160
161     <listitem>
162      <para>
163       Avoid logging complaints when a parameter that can only be set at
164       server start appears multiple times in <filename>postgresql.conf</>,
165       and fix counting of line numbers after an <literal>include_dir</>
166       directive (Tom Lane)
167      </para>
168     </listitem>
169
170     <listitem>
171      <para>
172       Fix rare internal overflow in multiplication of <type>numeric</> values
173       (Dean Rasheed)
174      </para>
175     </listitem>
176
177     <listitem>
178      <para>
179       Guard against hard-to-reach stack overflows involving record types,
180       range types, <type>json</>, <type>jsonb</>, <type>tsquery</>,
181       <type>ltxtquery</> and <type>query_int</> (Noah Misch)
182      </para>
183     </listitem>
184
185     <listitem>
186      <para>
187       Fix handling of <literal>DOW</> and <literal>DOY</> in datetime input
188       (Greg Stark)
189      </para>
190
191      <para>
192       These tokens aren't meant to be used in datetime values, but previously
193       they resulted in opaque internal error messages rather
194       than <quote>invalid input syntax</>.
195      </para>
196     </listitem>
197
198     <listitem>
199      <para>
200       Add more query-cancel checks to regular expression matching (Tom Lane)
201      </para>
202     </listitem>
203
204     <listitem>
205      <para>
206       Add recursion depth protections to regular expression, <literal>SIMILAR
207       TO</>, and <literal>LIKE</> matching (Tom Lane)
208      </para>
209
210      <para>
211       Suitable search patterns and a low stack depth limit could lead to
212       stack-overrun crashes.
213      </para>
214     </listitem>
215
216     <listitem>
217      <para>
218       Fix potential infinite loop in regular expression execution (Tom Lane)
219      </para>
220
221      <para>
222       A search pattern that can apparently match a zero-length string, but
223       actually doesn't match because of a back reference, could lead to an
224       infinite loop.
225      </para>
226     </listitem>
227
228     <listitem>
229      <para>
230       In regular expression execution, correctly record match data for
231       capturing parentheses within a quantifier even when the match is
232       zero-length (Tom Lane)
233      </para>
234     </listitem>
235
236     <listitem>
237      <para>
238       Fix low-memory failures in regular expression compilation
239       (Andreas Seltenreich)
240      </para>
241     </listitem>
242
243     <listitem>
244      <para>
245       Fix low-probability memory leak during regular expression execution
246       (Tom Lane)
247      </para>
248     </listitem>
249
250     <listitem>
251      <para>
252       Fix rare low-memory failure in lock cleanup during transaction abort
253       (Tom Lane)
254      </para>
255     </listitem>
256
257     <listitem>
258      <para>
259       Fix <quote>unexpected out-of-memory situation during sort</> errors
260       when using tuplestores with small <varname>work_mem</> settings (Tom
261       Lane)
262      </para>
263     </listitem>
264
265     <listitem>
266      <para>
267       Fix very-low-probability stack overrun in <function>qsort</> (Tom Lane)
268      </para>
269     </listitem>
270
271     <listitem>
272      <para>
273       Fix <quote>invalid memory alloc request size</> failure in hash joins
274       with large <varname>work_mem</> settings (Tomas Vondra, Tom Lane)
275      </para>
276     </listitem>
277
278     <listitem>
279      <para>
280       Fix assorted planner bugs (Tom Lane)
281      </para>
282
283      <para>
284       These mistakes could lead to incorrect query plans that would give wrong
285       answers, or to assertion failures in assert-enabled builds, or to odd
286       planner errors such as <quote>could not devise a query plan for the
287       given query</>, <quote>could not find pathkey item to
288       sort</>, <quote>plan should not reference subplan's variable</>,
289       or <quote>failed to assign all NestLoopParams to plan nodes</>.
290       Thanks are due to Andreas Seltenreich and Piotr Stefaniak for fuzz
291       testing that exposed these problems.
292      </para>
293     </listitem>
294
295     <listitem>
296      <para>
297       Improve planner's performance for <command>UPDATE</>/<command>DELETE</>
298       on large inheritance sets (Tom Lane, Dean Rasheed)
299      </para>
300     </listitem>
301
302     <listitem>
303      <para>
304       Ensure standby promotion trigger files are removed at postmaster
305       startup (Michael Paquier, Fujii Masao)
306      </para>
307
308      <para>
309       This prevents unwanted promotion from occurring if these files appear
310       in a database backup that is used to initialize a new standby server.
311      </para>
312     </listitem>
313
314     <listitem>
315      <para>
316       During postmaster shutdown, ensure that per-socket lock files are
317       removed and listen sockets are closed before we remove
318       the <filename>postmaster.pid</> file (Tom Lane)
319      </para>
320
321      <para>
322       This avoids race-condition failures if an external script attempts to
323       start a new postmaster as soon as <literal>pg_ctl stop</> returns.
324      </para>
325     </listitem>
326
327     <listitem>
328      <para>
329       Fix postmaster's handling of a startup-process crash during crash
330       recovery (Tom Lane)
331      </para>
332
333      <para>
334       If, during a crash recovery cycle, the startup process crashes without
335       having restored database consistency, we'd try to launch a new startup
336       process, which typically would just crash again, leading to an infinite
337       loop.
338      </para>
339     </listitem>
340
341     <listitem>
342      <para>
343       Make emergency autovacuuming for multixact wraparound more robust
344       (Andres Freund)
345      </para>
346     </listitem>
347
348     <listitem>
349      <para>
350       Do not print a <literal>WARNING</> when an autovacuum worker is already
351       gone when we attempt to signal it, and reduce log verbosity for such
352       signals (Tom Lane)
353      </para>
354     </listitem>
355
356     <listitem>
357      <para>
358       Prevent autovacuum launcher from sleeping unduly long if the server
359       clock is moved backwards a large amount (&Aacute;lvaro Herrera)
360      </para>
361     </listitem>
362
363     <listitem>
364      <para>
365       Ensure that cleanup of a GIN index's pending-insertions list is
366       interruptable by cancel requests (Jeff Janes)
367      </para>
368     </listitem>
369
370     <listitem>
371      <para>
372       Allow all-zeroes pages in GIN indexes to be reused (Heikki Linnakangas)
373      </para>
374
375      <para>
376       Such a page might be left behind after a crash.
377      </para>
378     </listitem>
379
380     <listitem>
381      <para>
382       Fix handling of all-zeroes pages in SP-GiST indexes (Heikki
383       Linnakangas)
384      </para>
385
386      <para>
387       <command>VACUUM</> attempted to recycle such pages, but did so in a
388       way that wasn't crash-safe.
389      </para>
390     </listitem>
391
392     <listitem>
393      <para>
394       Fix off-by-one error that led to otherwise-harmless warnings
395       about <quote>apparent wraparound</> in subtrans/multixact truncation
396       (Thomas Munro)
397      </para>
398     </listitem>
399
400     <listitem>
401      <para>
402       Fix misreporting of <command>CONTINUE</> and <command>MOVE</> statement
403       types in <application>PL/pgSQL</>'s error context messages
404       (Pavel Stehule, Tom Lane)
405      </para>
406     </listitem>
407
408     <listitem>
409      <para>
410       Fix <application>PL/Perl</> to handle non-<acronym>ASCII</> error
411       message texts correctly (Alex Hunsaker)
412      </para>
413     </listitem>
414
415     <listitem>
416      <para>
417       Fix <application>PL/Python</> crash when returning the string
418       representation of a <type>record</> result (Tom Lane)
419      </para>
420     </listitem>
421
422     <listitem>
423      <para>
424       Fix some places in <application>PL/Tcl</> that neglected to check for
425       failure of <function>malloc()</> calls (Michael Paquier, &Aacute;lvaro
426       Herrera)
427      </para>
428     </listitem>
429
430     <listitem>
431      <para>
432       In <filename>contrib/isn</>, fix output of ISBN-13 numbers that begin
433       with 979 (Fabien Coelho)
434      </para>
435
436      <para>
437       EANs beginning with 979 (but not 9790) are considered ISBNs, but they
438       must be printed in the new 13-digit format, not the 10-digit format.
439      </para>
440     </listitem>
441
442     <listitem>
443      <para>
444       Improve <filename>contrib/postgres_fdw</>'s handling of
445       collation-related decisions (Tom Lane)
446      </para>
447
448      <para>
449       The main user-visible effect is expected to be that comparisons
450       involving <type>varchar</> columns will be sent to the remote server
451       for execution in more cases than before.
452      </para>
453     </listitem>
454
455     <listitem>
456      <para>
457       Improve <application>libpq</>'s handling of out-of-memory conditions
458       (Michael Paquier, Heikki Linnakangas)
459      </para>
460     </listitem>
461
462     <listitem>
463      <para>
464       Fix memory leaks and missing out-of-memory checks
465       in <application>ecpg</> (Michael Paquier)
466      </para>
467     </listitem>
468
469     <listitem>
470      <para>
471       Fix <application>psql</>'s code for locale-aware formatting of numeric
472       output (Tom Lane)
473      </para>
474
475      <para>
476       The formatting code invoked by <literal>\pset numericlocale on</>
477       did the wrong thing for some uncommon cases such as numbers with an
478       exponent but no decimal point.  It could also mangle already-localized
479       output from the <type>money</> data type.
480      </para>
481     </listitem>
482
483     <listitem>
484      <para>
485       Prevent crash in <application>psql</>'s <command>\c</> command when
486       there is no current connection (Noah Misch)
487      </para>
488     </listitem>
489
490     <listitem>
491      <para>
492       Make <application>pg_dump</> handle inherited <literal>NOT VALID</>
493       check constraints correctly (Tom Lane)
494      </para>
495     </listitem>
496
497     <listitem>
498      <para>
499       Fix selection of default <application>zlib</> compression level
500       in <application>pg_dump</>'s directory output format (Andrew Dunstan)
501      </para>
502     </listitem>
503
504     <listitem>
505      <para>
506       Ensure that temporary files created during a <application>pg_dump</>
507       run with <acronym>tar</>-format output are not world-readable (Michael
508       Paquier)
509      </para>
510     </listitem>
511
512     <listitem>
513      <para>
514       Fix <application>pg_dump</> and <application>pg_upgrade</> to support
515       cases where the <literal>postgres</> or <literal>template1</> database
516       is in a non-default tablespace (Marti Raudsepp, Bruce Momjian)
517      </para>
518     </listitem>
519
520     <listitem>
521      <para>
522       Fix <application>pg_dump</> to handle object privileges sanely when
523       dumping from a server too old to have a particular privilege type
524       (Tom Lane)
525      </para>
526
527      <para>
528       When dumping data types from pre-9.2 servers, and when dumping
529       functions or procedural languages from pre-7.3
530       servers, <application>pg_dump</> would
531       produce <command>GRANT</>/<command>REVOKE</> commands that revoked the
532       owner's grantable privileges and instead granted all privileges
533       to <literal>PUBLIC</>.  Since the privileges involved are
534       just <literal>USAGE</> and <literal>EXECUTE</>, this isn't a security
535       problem, but it's certainly a surprising representation of the older
536       systems' behavior.  Fix it to leave the default privilege state alone
537       in these cases.
538      </para>
539     </listitem>
540
541     <listitem>
542      <para>
543       Fix <application>pg_dump</> to dump shell types (Tom Lane)
544      </para>
545
546      <para>
547       Shell types (that is, not-yet-fully-defined types) aren't useful for
548       much, but nonetheless <application>pg_dump</> should dump them.
549      </para>
550     </listitem>
551
552     <listitem>
553      <para>
554       Fix assorted minor memory leaks in <application>pg_dump</> and other
555       client-side programs (Michael Paquier)
556      </para>
557     </listitem>
558
559     <listitem>
560      <para>
561       Fix spinlock assembly code for PPC hardware to be compatible
562       with <acronym>AIX</>'s native assembler (Tom Lane)
563      </para>
564
565      <para>
566       Building with <application>gcc</> didn't work if <application>gcc</>
567       had been configured to use the native assembler, which is becoming more
568       common.
569      </para>
570     </listitem>
571
572     <listitem>
573      <para>
574       On <acronym>AIX</>, test the <literal>-qlonglong</> compiler option
575       rather than just assuming it's safe to use (Noah Misch)
576      </para>
577     </listitem>
578
579     <listitem>
580      <para>
581       On <acronym>AIX</>, use <literal>-Wl,-brtllib</> link option to allow
582       symbols to be resolved at runtime (Noah Misch)
583      </para>
584
585      <para>
586       Perl relies on this ability in 5.8.0 and later.
587      </para>
588     </listitem>
589
590     <listitem>
591      <para>
592       Avoid use of inline functions when compiling with
593       32-bit <application>xlc</>, due to compiler bugs (Noah Misch)
594      </para>
595     </listitem>
596
597     <listitem>
598      <para>
599       Use <filename>librt</> for <function>sched_yield()</> when necessary,
600       which it is on some Solaris versions (Oskari Saarenmaa)
601      </para>
602     </listitem>
603
604     <listitem>
605      <para>
606       Fix Windows <filename>install.bat</> script to handle target directory
607       names that contain spaces (Heikki Linnakangas)
608      </para>
609     </listitem>
610
611     <listitem>
612      <para>
613       Make the numeric form of the <productname>PostgreSQL</> version number
614       (e.g., <literal>90405</>) readily available to extension Makefiles,
615       as a variable named <varname>VERSION_NUM</> (Michael Paquier)
616      </para>
617     </listitem>
618
619     <listitem>
620      <para>
621       Update time zone data files to <application>tzdata</> release 2015g for
622       DST law changes in Cayman Islands, Fiji, Moldova, Morocco, Norfolk
623       Island, North Korea, Turkey, and Uruguay.  There is a new zone name
624       <literal>America/Fort_Nelson</> for the Canadian Northern Rockies.
625      </para>
626     </listitem>
627
628    </itemizedlist>
629
630   </sect2>
631  </sect1>
632
633  <sect1 id="release-9-3-9">
634   <title>Release 9.3.9</title>
635
636   <note>
637   <title>Release Date</title>
638   <simpara>2015-06-12</simpara>
639   </note>
640
641   <para>
642    This release contains a small number of fixes from 9.3.8.
643    For information about new features in the 9.3 major release, see
644    <xref linkend="release-9-3">.
645   </para>
646
647   <sect2>
648    <title>Migration to Version 9.3.9</title>
649
650    <para>
651     A dump/restore is not required for those running 9.3.X.
652    </para>
653
654    <para>
655     However, if you are upgrading an installation that was previously
656     upgraded using a <application>pg_upgrade</> version between 9.3.0 and
657     9.3.4 inclusive, see the first changelog entry below.
658    </para>
659
660    <para>
661     Also, if you are upgrading from a version earlier than 9.3.7,
662     see <xref linkend="release-9-3-7">.
663    </para>
664
665   </sect2>
666
667   <sect2>
668    <title>Changes</title>
669
670    <itemizedlist>
671
672     <listitem>
673      <para>
674       Fix possible failure to recover from an inconsistent database state
675       (Robert Haas)
676      </para>
677
678      <para>
679       Recent <productname>PostgreSQL</> releases introduced mechanisms to
680       protect against multixact wraparound, but some of that code did not
681       account for the possibility that it would need to run during crash
682       recovery, when the database may not be in a consistent state.  This
683       could result in failure to restart after a crash, or failure to start
684       up a secondary server.  The lingering effects of a previously-fixed
685       bug in <application>pg_upgrade</> could also cause such a failure, in
686       installations that had used <application>pg_upgrade</> versions
687       between 9.3.0 and 9.3.4.
688      </para>
689
690      <para>
691       The <application>pg_upgrade</> bug in question was that it would
692       set <literal>oldestMultiXid</> to 1 in <filename>pg_control</> even
693       if the true value should be higher.  With the fixes introduced in
694       this release, such a situation will result in immediate emergency
695       autovacuuming until a correct <literal>oldestMultiXid</> value can be
696       determined.  If that would pose a hardship, users can avoid it by
697       doing manual vacuuming <emphasis>before</> upgrading to this release.
698       In detail:
699
700       <orderedlist>
701        <listitem>
702         <para>
703          Check whether <application>pg_controldata</> reports <quote>Latest
704          checkpoint's oldestMultiXid</> to be 1.  If not, there's nothing
705          to do.
706         </para>
707        </listitem>
708        <listitem>
709         <para>
710          Look in <filename>PGDATA/pg_multixact/offsets</> to see if there's a
711          file named <filename>0000</>.  If there is, there's nothing to do.
712         </para>
713        </listitem>
714        <listitem>
715         <para>
716          Otherwise, for each table that has
717          <structname>pg_class</>.<structfield>relminmxid</> equal to 1,
718          <command>VACUUM</> that table with
719          both <xref linkend="guc-vacuum-multixact-freeze-min-age">
720          and <xref linkend="guc-vacuum-multixact-freeze-table-age"> set to
721          zero.  (You can use the vacuum cost delay parameters described
722          in <xref linkend="runtime-config-resource-vacuum-cost"> to reduce
723          the performance consequences for concurrent sessions.)  You must
724          use <productname>PostgreSQL</> 9.3.5 or later to perform this step.
725         </para>
726        </listitem>
727       </orderedlist>
728      </para>
729     </listitem>
730
731     <listitem>
732      <para>
733       Fix rare failure to invalidate relation cache init file (Tom Lane)
734      </para>
735
736      <para>
737       With just the wrong timing of concurrent activity, a <command>VACUUM
738       FULL</> on a system catalog might fail to update the <quote>init file</>
739       that's used to avoid cache-loading work for new sessions.  This would
740       result in later sessions being unable to access that catalog at all.
741       This is a very ancient bug, but it's so hard to trigger that no
742       reproducible case had been seen until recently.
743      </para>
744     </listitem>
745
746     <listitem>
747      <para>
748       Avoid deadlock between incoming sessions and <literal>CREATE/DROP
749       DATABASE</> (Tom Lane)
750      </para>
751
752      <para>
753       A new session starting in a database that is the target of
754       a <command>DROP DATABASE</> command, or is the template for
755       a <command>CREATE DATABASE</> command, could cause the command to wait
756       for five seconds and then fail, even if the new session would have
757       exited before that.
758      </para>
759     </listitem>
760
761     <listitem>
762      <para>
763       Improve planner's cost estimates for semi-joins and anti-joins with
764       inner indexscans (Tom Lane, Tomas Vondra)
765      </para>
766
767      <para>
768       This type of plan is quite cheap when all the join clauses are used
769       as index scan conditions, even if the inner scan would nominally
770       fetch many rows, because the executor will stop after obtaining one
771       row.  The planner only partially accounted for that effect, and would
772       therefore overestimate the cost, leading it to possibly choose some
773       other much less efficient plan type.
774      </para>
775     </listitem>
776
777    </itemizedlist>
778
779   </sect2>
780  </sect1>
781
782  <sect1 id="release-9-3-8">
783   <title>Release 9.3.8</title>
784
785   <note>
786   <title>Release Date</title>
787   <simpara>2015-06-04</simpara>
788   </note>
789
790   <para>
791    This release contains a small number of fixes from 9.3.7.
792    For information about new features in the 9.3 major release, see
793    <xref linkend="release-9-3">.
794   </para>
795
796   <sect2>
797    <title>Migration to Version 9.3.8</title>
798
799    <para>
800     A dump/restore is not required for those running 9.3.X.
801    </para>
802
803    <para>
804     However, if you are upgrading from a version earlier than 9.3.7,
805     see <xref linkend="release-9-3-7">.
806    </para>
807
808   </sect2>
809
810   <sect2>
811    <title>Changes</title>
812
813    <itemizedlist>
814
815     <listitem>
816      <para>
817       Avoid failures while <function>fsync</>'ing data directory during
818       crash restart (Abhijit Menon-Sen, Tom Lane)
819      </para>
820
821      <para>
822       In the previous minor releases we added a patch to <function>fsync</>
823       everything in the data directory after a crash.  Unfortunately its
824       response to any error condition was to fail, thereby preventing the
825       server from starting up, even when the problem was quite harmless.
826       An example is that an unwritable file in the data directory would
827       prevent restart on some platforms; but it is common to make SSL
828       certificate files unwritable by the server.  Revise this behavior so
829       that permissions failures are ignored altogether, and other types of
830       failures are logged but do not prevent continuing.
831      </para>
832
833      <para>
834       Also apply the same rules in <literal>initdb --sync-only</>.
835       This case is less critical but it should act similarly.
836      </para>
837     </listitem>
838
839     <listitem>
840      <para>
841       Fix <function>pg_get_functiondef()</> to show
842       functions' <literal>LEAKPROOF</> property, if set (Jeevan Chalke)
843      </para>
844     </listitem>
845
846     <listitem>
847      <para>
848       Remove <application>configure</>'s check prohibiting linking to a
849       threaded <application>libpython</>
850       on <systemitem class="osname">OpenBSD</> (Tom Lane)
851      </para>
852
853      <para>
854       The failure this restriction was meant to prevent seems to not be a
855       problem anymore on current <systemitem class="osname">OpenBSD</>
856       versions.
857      </para>
858     </listitem>
859
860 <!--
861 Author: Tom Lane <tgl@sss.pgh.pa.us>
862 Branch: REL9_3_STABLE [c6b7b9a9c] 2015-05-21 20:41:55 -0400
863 Branch: REL9_2_STABLE [b78fbfe65] 2015-05-21 20:41:55 -0400
864 Branch: REL9_1_STABLE [2c2c5f0e0] 2015-05-21 20:41:55 -0400
865 Branch: REL9_0_STABLE [4dddf8552] 2015-05-21 20:41:55 -0400
866 -->
867
868     <listitem>
869      <para>
870       Allow <application>libpq</> to use TLS protocol versions beyond v1
871       (Noah Misch)
872      </para>
873
874      <para>
875       For a long time, <application>libpq</> was coded so that the only SSL
876       protocol it would allow was TLS v1.  Now that newer TLS versions are
877       becoming popular, allow it to negotiate the highest commonly-supported
878       TLS version with the server.  (<productname>PostgreSQL</> servers were
879       already capable of such negotiation, so no change is needed on the
880       server side.)  This is a back-patch of a change already released in
881       9.4.0.
882      </para>
883     </listitem>
884
885    </itemizedlist>
886
887   </sect2>
888  </sect1>
889
890  <sect1 id="release-9-3-7">
891   <title>Release 9.3.7</title>
892
893   <note>
894   <title>Release Date</title>
895   <simpara>2015-05-22</simpara>
896   </note>
897
898   <para>
899    This release contains a variety of fixes from 9.3.6.
900    For information about new features in the 9.3 major release, see
901    <xref linkend="release-9-3">.
902   </para>
903
904   <sect2>
905    <title>Migration to Version 9.3.7</title>
906
907    <para>
908     A dump/restore is not required for those running 9.3.X.
909    </para>
910
911    <para>
912     However, if you use <filename>contrib/citext</>'s
913     <function>regexp_matches()</> functions, see the changelog entry below
914     about that.
915    </para>
916
917    <para>
918     Also, if you are upgrading from a version earlier than 9.3.6,
919     see <xref linkend="release-9-3-6">.
920    </para>
921
922   </sect2>
923
924   <sect2>
925    <title>Changes</title>
926
927    <itemizedlist>
928
929     <listitem>
930      <para>
931       Avoid possible crash when client disconnects just before the
932       authentication timeout expires (Benkocs Norbert Attila)
933      </para>
934
935      <para>
936       If the timeout interrupt fired partway through the session shutdown
937       sequence, SSL-related state would be freed twice, typically causing a
938       crash and hence denial of service to other sessions.  Experimentation
939       shows that an unauthenticated remote attacker could trigger the bug
940       somewhat consistently, hence treat as security issue.
941       (CVE-2015-3165)
942      </para>
943     </listitem>
944
945     <listitem>
946      <para>
947       Improve detection of system-call failures (Noah Misch)
948      </para>
949
950      <para>
951       Our replacement implementation of <function>snprintf()</> failed to
952       check for errors reported by the underlying system library calls;
953       the main case that might be missed is out-of-memory situations.
954       In the worst case this might lead to information exposure, due to our
955       code assuming that a buffer had been overwritten when it hadn't been.
956       Also, there were a few places in which security-relevant calls of other
957       system library functions did not check for failure.
958      </para>
959
960      <para>
961       It remains possible that some calls of the <function>*printf()</>
962       family of functions are vulnerable to information disclosure if an
963       out-of-memory error occurs at just the wrong time.  We judge the risk
964       to not be large, but will continue analysis in this area.
965       (CVE-2015-3166)
966      </para>
967     </listitem>
968
969     <listitem>
970      <para>
971       In <filename>contrib/pgcrypto</>, uniformly report decryption failures
972       as <quote>Wrong key or corrupt data</> (Noah Misch)
973      </para>
974
975      <para>
976       Previously, some cases of decryption with an incorrect key could report
977       other error message texts.  It has been shown that such variance in
978       error reports can aid attackers in recovering keys from other systems.
979       While it's unknown whether <filename>pgcrypto</>'s specific behaviors
980       are likewise exploitable, it seems better to avoid the risk by using a
981       one-size-fits-all message.
982       (CVE-2015-3167)
983      </para>
984     </listitem>
985
986     <listitem>
987      <para>
988       Protect against wraparound of multixact member IDs
989       (&Aacute;lvaro Herrera, Robert Haas, Thomas Munro)
990      </para>
991
992      <para>
993       Under certain usage patterns, the existing defenses against this might
994       be insufficient, allowing <filename>pg_multixact/members</> files to be
995       removed too early, resulting in data loss.
996       The fix for this includes modifying the server to fail transactions
997       that would result in overwriting old multixact member ID data, and
998       improving autovacuum to ensure it will act proactively to prevent
999       multixact member ID wraparound, as it does for transaction ID
1000       wraparound.
1001      </para>
1002     </listitem>
1003
1004     <listitem>
1005      <para>
1006       Fix incorrect declaration of <filename>contrib/citext</>'s
1007       <function>regexp_matches()</> functions (Tom Lane)
1008      </para>
1009
1010      <para>
1011       These functions should return <type>setof text[]</>, like the core
1012       functions they are wrappers for; but they were incorrectly declared as
1013       returning just <type>text[]</>.  This mistake had two results: first,
1014       if there was no match you got a scalar null result, whereas what you
1015       should get is an empty set (zero rows).  Second, the <literal>g</> flag
1016       was effectively ignored, since you would get only one result array even
1017       if there were multiple matches.
1018      </para>
1019
1020      <para>
1021       While the latter behavior is clearly a bug, there might be applications
1022       depending on the former behavior; therefore the function declarations
1023       will not be changed by default until <productname>PostgreSQL</> 9.5.
1024       In pre-9.5 branches, the old behavior exists in version 1.0 of
1025       the <literal>citext</> extension, while we have provided corrected
1026       declarations in version 1.1 (which is <emphasis>not</> installed by
1027       default).  To adopt the fix in pre-9.5 branches, execute
1028       <literal>ALTER EXTENSION citext UPDATE TO '1.1'</> in each database in
1029       which <literal>citext</> is installed.  (You can also <quote>update</>
1030       back to 1.0 if you need to undo that.)  Be aware that either update
1031       direction will require dropping and recreating any views or rules that
1032       use <filename>citext</>'s <function>regexp_matches()</> functions.
1033      </para>
1034     </listitem>
1035
1036     <listitem>
1037      <para>
1038       Fix incorrect checking of deferred exclusion constraints after a HOT
1039       update (Tom Lane)
1040      </para>
1041
1042      <para>
1043       If a new row that potentially violates a deferred exclusion constraint
1044       is HOT-updated (that is, no indexed columns change and the row can be
1045       stored back onto the same table page) later in the same transaction,
1046       the exclusion constraint would be reported as violated when the check
1047       finally occurred, even if the row(s) the new row originally conflicted
1048       with had been deleted.
1049      </para>
1050     </listitem>
1051
1052     <listitem>
1053      <para>
1054       Fix planning of star-schema-style queries (Tom Lane)
1055      </para>
1056
1057      <para>
1058       Sometimes, efficient scanning of a large table requires that index
1059       parameters be provided from more than one other table (commonly,
1060       dimension tables whose keys are needed to index a large fact table).
1061       The planner should be able to find such plans, but an overly
1062       restrictive search heuristic prevented it.
1063      </para>
1064     </listitem>
1065
1066     <listitem>
1067      <para>
1068       Prevent improper reordering of antijoins (NOT EXISTS joins) versus
1069       other outer joins (Tom Lane)
1070      </para>
1071
1072      <para>
1073       This oversight in the planner has been observed to cause <quote>could
1074       not find RelOptInfo for given relids</> errors, but it seems possible
1075       that sometimes an incorrect query plan might get past that consistency
1076       check and result in silently-wrong query output.
1077      </para>
1078     </listitem>
1079
1080     <listitem>
1081      <para>
1082       Fix incorrect matching of subexpressions in outer-join plan nodes
1083       (Tom Lane)
1084      </para>
1085
1086      <para>
1087       Previously, if textually identical non-strict subexpressions were used
1088       both above and below an outer join, the planner might try to re-use
1089       the value computed below the join, which would be incorrect because the
1090       executor would force the value to NULL in case of an unmatched outer row.
1091      </para>
1092     </listitem>
1093
1094     <listitem>
1095      <para>
1096       Fix GEQO planner to cope with failure of its join order heuristic
1097       (Tom Lane)
1098      </para>
1099
1100      <para>
1101       This oversight has been seen to lead to <quote>failed to join all
1102       relations together</> errors in queries involving <literal>LATERAL</>,
1103       and that might happen in other cases as well.
1104      </para>
1105     </listitem>
1106
1107     <listitem>
1108      <para>
1109       Fix possible deadlock at startup
1110       when <literal>max_prepared_transactions</> is too small
1111       (Heikki Linnakangas)
1112      </para>
1113     </listitem>
1114
1115     <listitem>
1116      <para>
1117       Don't archive useless preallocated WAL files after a timeline switch
1118       (Heikki Linnakangas)
1119      </para>
1120     </listitem>
1121
1122     <listitem>
1123      <para>
1124       Recursively <function>fsync()</> the data directory after a crash
1125       (Abhijit Menon-Sen, Robert Haas)
1126      </para>
1127
1128      <para>
1129       This ensures consistency if another crash occurs shortly later.  (The
1130       second crash would have to be a system-level crash, not just a database
1131       crash, for there to be a problem.)
1132      </para>
1133     </listitem>
1134
1135     <listitem>
1136      <para>
1137       Fix autovacuum launcher's possible failure to shut down, if an error
1138       occurs after it receives SIGTERM (&Aacute;lvaro Herrera)
1139      </para>
1140     </listitem>
1141
1142     <listitem>
1143      <para>
1144       Cope with unexpected signals in <function>LockBufferForCleanup()</>
1145       (Andres Freund)
1146      </para>
1147
1148      <para>
1149       This oversight could result in spurious errors about <quote>multiple
1150       backends attempting to wait for pincount 1</>.
1151      </para>
1152     </listitem>
1153
1154     <listitem>
1155      <para>
1156       Fix crash when doing <literal>COPY IN</> to a table with check
1157       constraints that contain whole-row references (Tom Lane)
1158      </para>
1159
1160      <para>
1161       The known failure case only crashes in 9.4 and up, but there is very
1162       similar code in 9.3 and 9.2, so back-patch those branches as well.
1163      </para>
1164     </listitem>
1165
1166     <listitem>
1167      <para>
1168       Avoid waiting for WAL flush or synchronous replication during commit of
1169       a transaction that was read-only so far as the user is concerned
1170       (Andres Freund)
1171      </para>
1172
1173      <para>
1174       Previously, a delay could occur at commit in transactions that had
1175       written WAL due to HOT page pruning, leading to undesirable effects
1176       such as sessions getting stuck at startup if all synchronous replicas
1177       are down.  Sessions have also been observed to get stuck in catchup
1178       interrupt processing when using synchronous replication; this will fix
1179       that problem as well.
1180      </para>
1181     </listitem>
1182
1183     <listitem>
1184      <para>
1185       Fix crash when manipulating hash indexes on temporary tables
1186       (Heikki Linnakangas)
1187      </para>
1188     </listitem>
1189
1190     <listitem>
1191      <para>
1192       Fix possible failure during hash index bucket split, if other processes
1193       are modifying the index concurrently (Tom Lane)
1194      </para>
1195     </listitem>
1196
1197     <listitem>
1198      <para>
1199       Check for interrupts while analyzing index expressions (Jeff Janes)
1200      </para>
1201
1202      <para>
1203       <command>ANALYZE</> executes index expressions many times; if there are
1204       slow functions in such an expression, it's desirable to be able to
1205       cancel the <command>ANALYZE</> before that loop finishes.
1206      </para>
1207     </listitem>
1208
1209     <listitem>
1210      <para>
1211       Ensure <structfield>tableoid</> of a foreign table is reported
1212       correctly when a <literal>READ COMMITTED</> recheck occurs after
1213       locking rows in <command>SELECT FOR UPDATE</>, <command>UPDATE</>,
1214       or <command>DELETE</> (Etsuro Fujita)
1215      </para>
1216     </listitem>
1217
1218     <listitem>
1219      <para>
1220       Add the name of the target server to object description strings for
1221       foreign-server user mappings (&Aacute;lvaro Herrera)
1222      </para>
1223     </listitem>
1224
1225     <listitem>
1226      <para>
1227       Include the schema name in object identity strings for conversions
1228       (&Aacute;lvaro Herrera)
1229      </para>
1230     </listitem>
1231
1232     <listitem>
1233      <para>
1234       Recommend setting <literal>include_realm</> to 1 when using
1235       Kerberos/GSSAPI/SSPI authentication (Stephen Frost)
1236      </para>
1237
1238      <para>
1239       Without this, identically-named users from different realms cannot be
1240       distinguished.  For the moment this is only a documentation change, but
1241       it will become the default setting in <productname>PostgreSQL</> 9.5.
1242      </para>
1243     </listitem>
1244
1245     <listitem>
1246      <para>
1247       Remove code for matching IPv4 <filename>pg_hba.conf</> entries to
1248       IPv4-in-IPv6 addresses (Tom Lane)
1249      </para>
1250
1251      <para>
1252       This hack was added in 2003 in response to a report that some Linux
1253       kernels of the time would report IPv4 connections as having
1254       IPv4-in-IPv6 addresses.  However, the logic was accidentally broken in
1255       9.0.  The lack of any field complaints since then shows that it's not
1256       needed anymore.  Now we have reports that the broken code causes
1257       crashes on some systems, so let's just remove it rather than fix it.
1258       (Had we chosen to fix it, that would make for a subtle and potentially
1259       security-sensitive change in the effective meaning of
1260       IPv4 <filename>pg_hba.conf</> entries, which does not seem like a good
1261       thing to do in minor releases.)
1262      </para>
1263     </listitem>
1264
1265     <listitem>
1266      <para>
1267       Report WAL flush, not insert, position in <literal>IDENTIFY_SYSTEM</>
1268       replication command (Heikki Linnakangas)
1269      </para>
1270
1271      <para>
1272       This avoids a possible startup failure
1273       in <application>pg_receivexlog</>.
1274      </para>
1275     </listitem>
1276
1277     <listitem>
1278      <para>
1279       While shutting down service on Windows, periodically send status
1280       updates to the Service Control Manager to prevent it from killing the
1281       service too soon; and ensure that <application>pg_ctl</> will wait for
1282       shutdown (Krystian Bigaj)
1283      </para>
1284     </listitem>
1285
1286     <listitem>
1287      <para>
1288       Reduce risk of network deadlock when using <application>libpq</>'s
1289       non-blocking mode (Heikki Linnakangas)
1290      </para>
1291
1292      <para>
1293       When sending large volumes of data, it's important to drain the input
1294       buffer every so often, in case the server has sent enough response data
1295       to cause it to block on output.  (A typical scenario is that the server
1296       is sending a stream of NOTICE messages during <literal>COPY FROM
1297       STDIN</>.)  This worked properly in the normal blocking mode, but not
1298       so much in non-blocking mode.  We've modified <application>libpq</>
1299       to opportunistically drain input when it can, but a full defense
1300       against this problem requires application cooperation: the application
1301       should watch for socket read-ready as well as write-ready conditions,
1302       and be sure to call <function>PQconsumeInput()</> upon read-ready.
1303      </para>
1304     </listitem>
1305
1306     <listitem>
1307      <para>
1308       In <application>libpq</>, fix misparsing of empty values in URI
1309       connection strings (Thomas Fanghaenel)
1310      </para>
1311     </listitem>
1312
1313     <listitem>
1314      <para>
1315       Fix array handling in <application>ecpg</> (Michael Meskes)
1316      </para>
1317     </listitem>
1318
1319     <listitem>
1320      <para>
1321       Fix <application>psql</> to sanely handle URIs and conninfo strings as
1322       the first parameter to <command>\connect</>
1323       (David Fetter, Andrew Dunstan, &Aacute;lvaro Herrera)
1324      </para>
1325
1326      <para>
1327       This syntax has been accepted (but undocumented) for a long time, but
1328       previously some parameters might be taken from the old connection
1329       instead of the given string, which was agreed to be undesirable.
1330      </para>
1331     </listitem>
1332
1333     <listitem>
1334      <para>
1335       Suppress incorrect complaints from <application>psql</> on some
1336       platforms that it failed to write <filename>~/.psql_history</> at exit
1337       (Tom Lane)
1338      </para>
1339
1340      <para>
1341       This misbehavior was caused by a workaround for a bug in very old
1342       (pre-2006) versions of <application>libedit</>.  We fixed it by
1343       removing the workaround, which will cause a similar failure to appear
1344       for anyone still using such versions of <application>libedit</>.
1345       Recommendation: upgrade that library, or use <application>libreadline</>.
1346      </para>
1347     </listitem>
1348
1349     <listitem>
1350      <para>
1351       Fix <application>pg_dump</>'s rule for deciding which casts are
1352       system-provided casts that should not be dumped (Tom Lane)
1353      </para>
1354     </listitem>
1355
1356     <listitem>
1357      <para>
1358       In <application>pg_dump</>, fix failure to honor <literal>-Z</>
1359       compression level option together with <literal>-Fd</>
1360       (Michael Paquier)
1361      </para>
1362     </listitem>
1363
1364     <listitem>
1365      <para>
1366       Make <application>pg_dump</> consider foreign key relationships
1367       between extension configuration tables while choosing dump order
1368       (Gilles Darold, Michael Paquier, Stephen Frost)
1369      </para>
1370
1371      <para>
1372       This oversight could result in producing dumps that fail to reload
1373       because foreign key constraints are transiently violated.
1374      </para>
1375     </listitem>
1376
1377     <listitem>
1378      <para>
1379       Avoid possible <application>pg_dump</> failure when concurrent sessions
1380       are creating and dropping temporary functions (Tom Lane)
1381      </para>
1382     </listitem>
1383
1384     <listitem>
1385      <para>
1386       Fix dumping of views that are just <literal>VALUES(...)</> but have
1387       column aliases (Tom Lane)
1388      </para>
1389     </listitem>
1390
1391     <listitem>
1392      <para>
1393       In <application>pg_upgrade</>, force timeline 1 in the new cluster
1394       (Bruce Momjian)
1395      </para>
1396
1397      <para>
1398       This change prevents upgrade failures caused by bogus complaints about
1399       missing WAL history files.
1400      </para>
1401     </listitem>
1402
1403     <listitem>
1404      <para>
1405       In <application>pg_upgrade</>, check for improperly non-connectable
1406       databases before proceeding
1407       (Bruce Momjian)
1408      </para>
1409     </listitem>
1410
1411     <listitem>
1412      <para>
1413       In <application>pg_upgrade</>, quote directory paths
1414       properly in the generated <literal>delete_old_cluster</> script
1415       (Bruce Momjian)
1416      </para>
1417     </listitem>
1418
1419     <listitem>
1420      <para>
1421       In <application>pg_upgrade</>, preserve database-level freezing info
1422       properly
1423       (Bruce Momjian)
1424      </para>
1425
1426      <para>
1427       This oversight could cause missing-clog-file errors for tables within
1428       the <literal>postgres</> and <literal>template1</> databases.
1429      </para>
1430     </listitem>
1431
1432     <listitem>
1433      <para>
1434       Run <application>pg_upgrade</> and <application>pg_resetxlog</> with
1435       restricted privileges on Windows, so that they don't fail when run by
1436       an administrator (Muhammad Asif Naeem)
1437      </para>
1438     </listitem>
1439
1440     <listitem>
1441      <para>
1442       Improve handling of <function>readdir()</> failures when scanning
1443       directories in <application>initdb</> and <application>pg_basebackup</>
1444       (Marco Nenciarini)
1445      </para>
1446     </listitem>
1447
1448     <listitem>
1449      <para>
1450       Fix slow sorting algorithm in <filename>contrib/intarray</> (Tom Lane)
1451      </para>
1452     </listitem>
1453
1454     <listitem>
1455      <para>
1456       Fix compile failure on Sparc V8 machines (Rob Rowan)
1457      </para>
1458     </listitem>
1459
1460     <listitem>
1461      <para>
1462       Silence some build warnings on OS X (Tom Lane)
1463      </para>
1464     </listitem>
1465
1466     <listitem>
1467      <para>
1468       Update time zone data files to <application>tzdata</> release 2015d
1469       for DST law changes in Egypt, Mongolia, and Palestine, plus historical
1470       changes in Canada and Chile.  Also adopt revised zone abbreviations for
1471       the America/Adak zone (HST/HDT not HAST/HADT).
1472      </para>
1473     </listitem>
1474
1475    </itemizedlist>
1476
1477   </sect2>
1478  </sect1>
1479
1480  <sect1 id="release-9-3-6">
1481   <title>Release 9.3.6</title>
1482
1483   <note>
1484   <title>Release Date</title>
1485   <simpara>2015-02-05</simpara>
1486   </note>
1487
1488   <para>
1489    This release contains a variety of fixes from 9.3.5.
1490    For information about new features in the 9.3 major release, see
1491    <xref linkend="release-9-3">.
1492   </para>
1493
1494   <sect2>
1495    <title>Migration to Version 9.3.6</title>
1496
1497    <para>
1498     A dump/restore is not required for those running 9.3.X.
1499    </para>
1500
1501    <para>
1502     However, if you are a Windows user and are using the <quote>Norwegian
1503     (Bokm&aring;l)</> locale, manual action is needed after the upgrade to
1504     replace any <quote>Norwegian (Bokm&aring;l)_Norway</> locale names stored
1505     in <productname>PostgreSQL</> system catalogs with the plain-ASCII
1506     alias <quote>Norwegian_Norway</>.  For details see
1507     <ulink url="http://wiki.postgresql.org/wiki/Changes_To_Norwegian_Locale"></>
1508    </para>
1509
1510    <para>
1511     Also, if you are upgrading from a version earlier than 9.3.5,
1512     see <xref linkend="release-9-3-5">.
1513    </para>
1514
1515   </sect2>
1516
1517   <sect2>
1518    <title>Changes</title>
1519
1520    <itemizedlist>
1521
1522 <!--
1523 Author: Bruce Momjian <bruce@momjian.us>
1524 Branch: master [0150ab567] 2015-02-02 10:00:44 -0500
1525 Branch: REL9_4_STABLE [1628a0bbf] 2015-02-02 10:00:49 -0500
1526 Branch: REL9_3_STABLE [b8b580147] 2015-02-02 10:00:50 -0500
1527 Branch: REL9_2_STABLE [5ae3bf1af] 2015-02-02 10:00:50 -0500
1528 Branch: REL9_1_STABLE [037529a11] 2015-02-02 10:00:51 -0500
1529 Branch: REL9_0_STABLE [611e110aa] 2015-02-02 10:00:52 -0500
1530 Author: Bruce Momjian <bruce@momjian.us>
1531 Branch: master [9241c84cb] 2015-02-02 10:00:45 -0500
1532 Branch: REL9_4_STABLE [56d2bee9d] 2015-02-02 10:00:49 -0500
1533 Branch: REL9_3_STABLE [fe2526990] 2015-02-02 10:00:50 -0500
1534 Branch: REL9_2_STABLE [e09651e9d] 2015-02-02 10:00:50 -0500
1535 Branch: REL9_1_STABLE [2ceb63deb] 2015-02-02 10:00:51 -0500
1536 Branch: REL9_0_STABLE [56b970f2e] 2015-02-02 10:00:52 -0500
1537 -->
1538
1539     <listitem>
1540      <para>
1541       Fix buffer overruns in <function>to_char()</>
1542       (Bruce Momjian)
1543      </para>
1544
1545      <para>
1546       When <function>to_char()</> processes a numeric formatting template
1547       calling for a large number of digits, <productname>PostgreSQL</>
1548       would read past the end of a buffer.  When processing a crafted
1549       timestamp formatting template, <productname>PostgreSQL</> would write
1550       past the end of a buffer.  Either case could crash the server.
1551       We have not ruled out the possibility of attacks that lead to
1552       privilege escalation, though they seem unlikely.
1553       (CVE-2015-0241)
1554      </para>
1555     </listitem>
1556
1557 <!--
1558 Author: Bruce Momjian <bruce@momjian.us>
1559 Branch: master [29725b3db] 2015-02-02 10:00:45 -0500
1560 Branch: REL9_4_STABLE [2ac95c83c] 2015-02-02 10:00:49 -0500
1561 Branch: REL9_3_STABLE [bc4d5f2e5] 2015-02-02 10:00:50 -0500
1562 Branch: REL9_2_STABLE [c6c6aa288] 2015-02-02 10:00:51 -0500
1563 Branch: REL9_1_STABLE [98f2479d8] 2015-02-02 10:00:51 -0500
1564 Branch: REL9_0_STABLE [9e05c5063] 2015-02-02 10:00:52 -0500
1565 -->
1566
1567     <listitem>
1568      <para>
1569       Fix buffer overrun in replacement <function>*printf()</> functions
1570       (Tom Lane)
1571      </para>
1572
1573      <para>
1574       <productname>PostgreSQL</> includes a replacement implementation
1575       of <function>printf</> and related functions.  This code will overrun
1576       a stack buffer when formatting a floating point number (conversion
1577       specifiers <literal>e</>, <literal>E</>, <literal>f</>, <literal>F</>,
1578       <literal>g</> or <literal>G</>) with requested precision greater than
1579       about 500.  This will crash the server, and we have not ruled out the
1580       possibility of attacks that lead to privilege escalation.
1581       A database user can trigger such a buffer overrun through
1582       the <function>to_char()</> SQL function.  While that is the only
1583       affected core <productname>PostgreSQL</> functionality, extension
1584       modules that use printf-family functions may be at risk as well.
1585      </para>
1586
1587      <para>
1588       This issue primarily affects <productname>PostgreSQL</> on Windows.
1589       <productname>PostgreSQL</> uses the system implementation of these
1590       functions where adequate, which it is on other modern platforms.
1591       (CVE-2015-0242)
1592      </para>
1593     </listitem>
1594
1595 <!--
1596 Author: Noah Misch <noah@leadboat.com>
1597 Branch: master [1dc755158] 2015-02-02 10:00:45 -0500
1598 Branch: REL9_4_STABLE [82806cf4e] 2015-02-02 10:00:49 -0500
1599 Branch: REL9_3_STABLE [6994f0790] 2015-02-02 10:00:50 -0500
1600 Branch: REL9_2_STABLE [d95ebe0ac] 2015-02-02 10:00:51 -0500
1601 Branch: REL9_1_STABLE [11f738a8a] 2015-02-02 10:00:51 -0500
1602 Branch: REL9_0_STABLE [ce6f261cd] 2015-02-02 10:00:52 -0500
1603 Author: Noah Misch <noah@leadboat.com>
1604 Branch: master [8b59672d8] 2015-02-02 10:00:45 -0500
1605 Branch: REL9_4_STABLE [258e294db] 2015-02-02 10:00:49 -0500
1606 Branch: REL9_3_STABLE [a558ad3a7] 2015-02-02 10:00:50 -0500
1607 Branch: REL9_2_STABLE [d1972da8c] 2015-02-02 10:00:51 -0500
1608 Branch: REL9_1_STABLE [8d412e02e] 2015-02-02 10:00:52 -0500
1609 Branch: REL9_0_STABLE [0a3ee8a5f] 2015-02-02 10:00:52 -0500
1610 -->
1611
1612     <listitem>
1613      <para>
1614       Fix buffer overruns in <filename>contrib/pgcrypto</>
1615       (Marko Tiikkaja, Noah Misch)
1616      </para>
1617
1618      <para>
1619       Errors in memory size tracking within the <filename>pgcrypto</>
1620       module permitted stack buffer overruns and improper dependence on the
1621       contents of uninitialized memory.  The buffer overrun cases can
1622       crash the server, and we have not ruled out the possibility of
1623       attacks that lead to privilege escalation.
1624       (CVE-2015-0243)
1625      </para>
1626     </listitem>
1627
1628 <!--
1629 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
1630 Branch: master [2b3a8b20c] 2015-02-02 17:09:53 +0200
1631 Branch: REL9_4_STABLE [57ec87c6b] 2015-02-02 17:09:46 +0200
1632 Branch: REL9_3_STABLE [cd19848bd] 2015-02-02 17:09:40 +0200
1633 Branch: REL9_2_STABLE [289592b23] 2015-02-02 17:09:35 +0200
1634 Branch: REL9_1_STABLE [af9c5c074] 2015-02-02 17:09:31 +0200
1635 Branch: REL9_0_STABLE [47ba0fbd7] 2015-02-02 17:09:25 +0200
1636 -->
1637
1638     <listitem>
1639      <para>
1640       Fix possible loss of frontend/backend protocol synchronization after
1641       an error
1642       (Heikki Linnakangas)
1643      </para>
1644
1645      <para>
1646       If any error occurred while the server was in the middle of reading a
1647       protocol message from the client, it could lose synchronization and
1648       incorrectly try to interpret part of the message's data as a new
1649       protocol message.  An attacker able to submit crafted binary data
1650       within a command parameter might succeed in injecting his own SQL
1651       commands this way.  Statement timeout and query cancellation are the
1652       most likely sources of errors triggering this scenario.  Particularly
1653       vulnerable are applications that use a timeout and also submit
1654       arbitrary user-crafted data as binary query parameters.  Disabling
1655       statement timeout will reduce, but not eliminate, the risk of
1656       exploit.  Our thanks to Emil Lenngren for reporting this issue.
1657       (CVE-2015-0244)
1658      </para>
1659     </listitem>
1660
1661 <!--
1662 Author: Stephen Frost <sfrost@snowman.net>
1663 Branch: master [804b6b6db] 2015-01-28 12:31:30 -0500
1664 Branch: REL9_4_STABLE [3cc74a3d6] 2015-01-28 12:32:06 -0500
1665 Branch: REL9_3_STABLE [4b9874216] 2015-01-28 12:32:39 -0500
1666 Branch: REL9_2_STABLE [d49f84b08] 2015-01-28 12:32:56 -0500
1667 Branch: REL9_1_STABLE [9406884af] 2015-01-28 12:33:15 -0500
1668 Branch: REL9_0_STABLE [3a2063369] 2015-01-28 12:33:29 -0500
1669 -->
1670
1671     <listitem>
1672      <para>
1673       Fix information leak via constraint-violation error messages
1674       (Stephen Frost)
1675      </para>
1676
1677      <para>
1678       Some server error messages show the values of columns that violate
1679       a constraint, such as a unique constraint.  If the user does not have
1680       <literal>SELECT</> privilege on all columns of the table, this could
1681       mean exposing values that the user should not be able to see.  Adjust
1682       the code so that values are displayed only when they came from the SQL
1683       command or could be selected by the user.
1684       (CVE-2014-8161)
1685      </para>
1686     </listitem>
1687
1688 <!--
1689 Author: Noah Misch <noah@leadboat.com>
1690 Branch: master [f6dc6dd5b] 2014-12-17 22:48:40 -0500
1691 Branch: REL9_4_STABLE [6b87d423d] 2014-12-17 22:48:45 -0500
1692 Branch: REL9_3_STABLE [442dc2c35] 2014-12-17 22:48:46 -0500
1693 Branch: REL9_2_STABLE [0046f651d] 2014-12-17 22:48:47 -0500
1694 Branch: REL9_1_STABLE [6aa98e957] 2014-12-17 22:48:47 -0500
1695 Branch: REL9_0_STABLE [6d45ee572] 2014-12-17 22:48:48 -0500
1696 -->
1697
1698     <listitem>
1699      <para>
1700       Lock down regression testing's temporary installations on Windows
1701       (Noah Misch)
1702      </para>
1703
1704      <para>
1705       Use SSPI authentication to allow connections only from the OS user
1706       who launched the test suite.  This closes on Windows the same
1707       vulnerability previously closed on other platforms, namely that other
1708       users might be able to connect to the test postmaster.
1709       (CVE-2014-0067)
1710      </para>
1711     </listitem>
1712
1713 <!--
1714 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
1715 Branch: REL9_3_STABLE [8f80dcf3c] 2014-10-24 19:59:49 +0300
1716 Branch: REL9_2_STABLE [d440c4b55] 2014-10-24 19:59:52 +0300
1717 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
1718 Branch: REL9_3_STABLE [2a1b34959] 2014-10-24 19:36:28 +0300
1719 Branch: REL9_2_STABLE [737ae3fc7] 2014-10-24 19:53:27 +0300
1720 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
1721 Branch: master [aa1d2fc5e] 2015-01-16 13:28:19 +0200
1722 Branch: REL9_4_STABLE [2049a7d82] 2015-01-16 13:10:06 +0200
1723 Branch: REL9_3_STABLE [1619442a1] 2015-01-16 13:10:15 +0200
1724 Branch: REL9_2_STABLE [6bf343c6e] 2015-01-16 13:10:23 +0200
1725 -->
1726
1727     <listitem>
1728      <para>
1729       Cope with the Windows locale named <quote>Norwegian (Bokm&aring;l)</>
1730       (Heikki Linnakangas)
1731      </para>
1732
1733      <para>
1734       Non-ASCII locale names are problematic since it's not clear what
1735       encoding they should be represented in.  Map the troublesome locale
1736       name to a plain-ASCII alias, <quote>Norwegian_Norway</>.
1737      </para>
1738     </listitem>
1739
1740 <!--
1741 Author: Tom Lane <tgl@sss.pgh.pa.us>
1742 Branch: REL9_3_STABLE [f88300168] 2014-11-04 13:24:14 -0500
1743 Branch: REL9_2_STABLE [db72ad02e] 2014-11-04 13:24:17 -0500
1744 Branch: REL9_1_STABLE [7c6f55e9e] 2014-11-04 13:24:22 -0500
1745 Branch: REL9_0_STABLE [45a607d5c] 2014-11-04 13:24:26 -0500
1746 -->
1747
1748     <listitem>
1749      <para>
1750       Avoid possible data corruption if <command>ALTER DATABASE SET
1751       TABLESPACE</> is used to move a database to a new tablespace and then
1752       shortly later move it back to its original tablespace (Tom Lane)
1753      </para>
1754     </listitem>
1755
1756 <!--
1757 Author: Tom Lane <tgl@sss.pgh.pa.us>
1758 Branch: REL9_3_STABLE [81f0a5e38] 2014-10-29 18:12:08 -0400
1759 Branch: REL9_2_STABLE [40058fbce] 2014-10-29 18:12:11 -0400
1760 Branch: REL9_1_STABLE [6ec1c3ef8] 2014-10-29 18:12:17 -0400
1761 Branch: REL9_0_STABLE [9d06da58e] 2014-10-29 18:12:20 -0400
1762 Author: Tom Lane <tgl@sss.pgh.pa.us>
1763 Branch: REL9_3_STABLE [e65b550b3] 2014-10-30 13:03:28 -0400
1764 Branch: REL9_2_STABLE [38cb8687a] 2014-10-30 13:03:31 -0400
1765 Branch: REL9_1_STABLE [fcf0246b2] 2014-10-30 13:03:34 -0400
1766 Branch: REL9_0_STABLE [73f950fc8] 2014-10-30 13:03:39 -0400
1767 -->
1768
1769     <listitem>
1770      <para>
1771       Avoid corrupting tables when <command>ANALYZE</> inside a transaction
1772       is rolled back (Andres Freund, Tom Lane, Michael Paquier)
1773      </para>
1774
1775      <para>
1776       If the failing transaction had earlier removed the last index, rule, or
1777       trigger from the table, the table would be left in a corrupted state
1778       with the relevant <structname>pg_class</> flags not set though they
1779       should be.
1780      </para>
1781     </listitem>
1782
1783 <!--
1784 Author: Andres Freund <andres@anarazel.de>
1785 Branch: REL9_3_STABLE [d7624e562] 2014-10-20 23:45:31 +0200
1786 Branch: REL9_2_STABLE [fd29810d1] 2014-10-20 23:47:00 +0200
1787 Branch: REL9_1_STABLE [d5fef87e9] 2014-10-20 23:47:45 +0200
1788 -->
1789
1790     <listitem>
1791      <para>
1792       Ensure that unlogged tables are copied correctly
1793       during <command>CREATE DATABASE</> or <command>ALTER DATABASE SET
1794       TABLESPACE</> (Pavan Deolasee, Andres Freund)
1795      </para>
1796     </listitem>
1797
1798 <!--
1799 Author: Robert Haas <rhaas@postgresql.org>
1800 Branch: REL9_3_STABLE [e35db342a] 2014-09-22 16:19:59 -0400
1801 -->
1802
1803     <listitem>
1804      <para>
1805       Fix incorrect processing
1806       of <structname>CreateEventTrigStmt</>.<structfield>eventname</> (Petr
1807       Jelinek)
1808      </para>
1809
1810      <para>
1811       This could result in misbehavior if <command>CREATE EVENT TRIGGER</>
1812       were executed as a prepared query, or via extended query protocol.
1813      </para>
1814     </listitem>
1815
1816 <!--
1817 Author: Tom Lane <tgl@sss.pgh.pa.us>
1818 Branch: REL9_3_STABLE [2a83e0349] 2014-11-11 17:00:21 -0500
1819 Branch: REL9_2_STABLE [1c2f9a4f6] 2014-11-11 17:00:25 -0500
1820 Branch: REL9_1_STABLE [94d5d57d5] 2014-11-11 17:00:28 -0500
1821 -->
1822
1823     <listitem>
1824      <para>
1825       Fix <command>DROP</>'s dependency searching to correctly handle the
1826       case where a table column is recursively visited before its table
1827       (Petr Jelinek, Tom Lane)
1828      </para>
1829
1830      <para>
1831       This case is only known to arise when an extension creates both a
1832       datatype and a table using that datatype.  The faulty code might
1833       refuse a <command>DROP EXTENSION</> unless <literal>CASCADE</> is
1834       specified, which should not be required.
1835      </para>
1836     </listitem>
1837
1838 <!--
1839 Author: Tom Lane <tgl@sss.pgh.pa.us>
1840 Branch: master [c480cb9d2] 2015-01-15 18:52:58 -0500
1841 Branch: REL9_4_STABLE [b75d18bd4] 2015-01-15 18:53:05 -0500
1842 Branch: REL9_3_STABLE [34668c8ec] 2015-01-15 18:52:28 -0500
1843 Branch: REL9_2_STABLE [0acb32efb] 2015-01-15 18:52:31 -0500
1844 Branch: REL9_1_STABLE [450530fce] 2015-01-15 18:52:34 -0500
1845 Branch: REL9_0_STABLE [5308e085b] 2015-01-15 18:52:38 -0500
1846 -->
1847
1848     <listitem>
1849      <para>
1850       Fix use-of-already-freed-memory problem in EvalPlanQual processing
1851       (Tom Lane)
1852      </para>
1853
1854      <para>
1855       In <literal>READ COMMITTED</> mode, queries that lock or update
1856       recently-updated rows could crash as a result of this bug.
1857      </para>
1858     </listitem>
1859
1860 <!--
1861 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
1862 Branch: master [0e5680f47] 2014-12-26 13:52:27 -0300
1863 Branch: REL9_4_STABLE [0e3a1f71d] 2014-12-26 13:52:27 -0300
1864 Branch: REL9_3_STABLE [048912386] 2014-12-26 13:52:27 -0300
1865 -->
1866
1867     <listitem>
1868      <para>
1869       Avoid possible deadlock while trying to acquire tuple locks
1870       in EvalPlanQual processing (&Aacute;lvaro Herrera, Mark Kirkwood)
1871      </para>
1872     </listitem>
1873
1874 <!--
1875 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
1876 Branch: master [d5e3d1e96] 2015-01-04 15:48:29 -0300
1877 Branch: REL9_4_STABLE [51742063b] 2015-01-04 15:48:29 -0300
1878 Branch: REL9_3_STABLE [54a8abc2b] 2015-01-04 15:48:29 -0300
1879 -->
1880
1881     <listitem>
1882      <para>
1883       Fix failure to wait when a transaction tries to acquire a <literal>FOR
1884       NO KEY EXCLUSIVE</> tuple lock, while multiple other transactions
1885       currently hold <literal>FOR SHARE</> locks (&Aacute;lvaro Herrera)
1886      </para>
1887     </listitem>
1888
1889 <!--
1890 Author: Tom Lane <tgl@sss.pgh.pa.us>
1891 Branch: REL9_3_STABLE [2ae8a01ca] 2014-12-11 21:02:31 -0500
1892 Branch: REL9_2_STABLE [cd63c57e5] 2014-12-11 21:02:34 -0500
1893 Branch: REL9_1_STABLE [bca39b578] 2014-12-11 21:02:38 -0500
1894 Branch: REL9_0_STABLE [662eebdc6] 2014-12-11 21:02:41 -0500
1895 -->
1896
1897     <listitem>
1898      <para>
1899       Fix planning of <command>SELECT FOR UPDATE</> when using a partial
1900       index on a child table (Kyotaro Horiguchi)
1901      </para>
1902
1903      <para>
1904       In <literal>READ COMMITTED</> mode, <command>SELECT FOR UPDATE</> must
1905       also recheck the partial index's <literal>WHERE</> condition when
1906       rechecking a recently-updated row to see if it still satisfies the
1907       query's <literal>WHERE</> condition.  This requirement was missed if the
1908       index belonged to an inheritance child table, so that it was possible
1909       to incorrectly return rows that no longer satisfy the query condition.
1910      </para>
1911     </listitem>
1912
1913 <!--
1914 Author: Tom Lane <tgl@sss.pgh.pa.us>
1915 Branch: REL9_3_STABLE [f14196c35] 2014-12-11 19:37:07 -0500
1916 Branch: REL9_2_STABLE [deadbf4f3] 2014-12-11 19:37:10 -0500
1917 Branch: REL9_1_STABLE [21946ac9b] 2014-12-11 19:37:14 -0500
1918 Branch: REL9_0_STABLE [f5e4e92fb] 2014-12-11 19:37:17 -0500
1919 -->
1920
1921     <listitem>
1922      <para>
1923       Fix corner case wherein <command>SELECT FOR UPDATE</> could return a row
1924       twice, and possibly miss returning other rows (Tom Lane)
1925      </para>
1926
1927      <para>
1928       In <literal>READ COMMITTED</> mode, a <command>SELECT FOR UPDATE</>
1929       that is scanning an inheritance tree could incorrectly return a row
1930       from a prior child table instead of the one it should return from a
1931       later child table.
1932      </para>
1933     </listitem>
1934
1935 <!--
1936 Author: Tom Lane <tgl@sss.pgh.pa.us>
1937 Branch: master [a5cd70dcb] 2015-01-15 13:18:12 -0500
1938 Branch: REL9_4_STABLE [d25192892] 2015-01-15 13:18:16 -0500
1939 Branch: REL9_3_STABLE [939f0fb67] 2015-01-15 13:18:19 -0500
1940 -->
1941
1942     <listitem>
1943      <para>
1944       Improve performance of <command>EXPLAIN</> with large range tables
1945       (Tom Lane)
1946      </para>
1947     </listitem>
1948
1949 <!--
1950 Author: Tom Lane <tgl@sss.pgh.pa.us>
1951 Branch: REL9_3_STABLE [7a9c8cefb] 2014-08-09 13:46:42 -0400
1952 Branch: REL9_2_STABLE [b4dacab12] 2014-08-09 13:46:45 -0400
1953 Branch: REL9_1_STABLE [bbe826f21] 2014-08-09 13:46:48 -0400
1954 Branch: REL9_0_STABLE [4ff49746e] 2014-08-09 13:46:52 -0400
1955 -->
1956
1957     <listitem>
1958      <para>
1959       Reject duplicate column names in the referenced-columns list of
1960       a <literal>FOREIGN KEY</> declaration (David Rowley)
1961      </para>
1962
1963      <para>
1964       This restriction is per SQL standard.  Previously we did not reject
1965       the case explicitly, but later on the code would fail with
1966       bizarre-looking errors.
1967      </para>
1968     </listitem>
1969
1970 <!--
1971 Author: Tom Lane <tgl@sss.pgh.pa.us>
1972 Branch: REL9_3_STABLE [6306d0712] 2014-07-22 13:30:14 -0400
1973 -->
1974
1975     <listitem>
1976      <para>
1977       Re-enable error for <literal>SELECT ... OFFSET -1</> (Tom Lane)
1978      </para>
1979
1980      <para>
1981       A negative offset value has been an error since 8.4, but an
1982       optimization added in 9.3 accidentally turned the case into a no-op.
1983       Restore the expected behavior.
1984      </para>
1985     </listitem>
1986
1987 <!--
1988 Author: Tom Lane <tgl@sss.pgh.pa.us>
1989 Branch: REL9_3_STABLE [8b65e0a33] 2014-08-09 18:40:34 -0400
1990 Branch: REL9_2_STABLE [15026ab97] 2014-08-09 18:40:38 -0400
1991 -->
1992
1993     <listitem>
1994      <para>
1995       Restore previous behavior of conversion of domains to JSON
1996       (Tom Lane)
1997      </para>
1998
1999      <para>
2000       This change causes domains over numeric and boolean to be treated
2001       like their base types for purposes of conversion to JSON.  It worked
2002       like that before 9.3.5 and 9.2.9, but was unintentionally changed
2003       while fixing a related problem.
2004      </para>
2005     </listitem>
2006
2007 <!--
2008 Author: Tom Lane <tgl@sss.pgh.pa.us>
2009 Branch: REL9_3_STABLE [8571ecb24] 2014-12-02 15:02:43 -0500
2010 -->
2011
2012     <listitem>
2013      <para>
2014       Fix <function>json_agg()</> to not return extra trailing right
2015       brackets in its result (Tom Lane)
2016      </para>
2017     </listitem>
2018
2019 <!--
2020 Author: Tom Lane <tgl@sss.pgh.pa.us>
2021 Branch: REL9_3_STABLE [25bf13fe1] 2014-09-11 23:30:57 -0400
2022 Branch: REL9_2_STABLE [228ed4370] 2014-09-11 23:31:00 -0400
2023 Branch: REL9_1_STABLE [cf5c20b06] 2014-09-11 23:31:03 -0400
2024 Branch: REL9_0_STABLE [26f8a4691] 2014-09-11 23:31:06 -0400
2025 -->
2026
2027     <listitem>
2028      <para>
2029       Fix bugs in raising a <type>numeric</> value to a large integral power
2030       (Tom Lane)
2031      </para>
2032
2033      <para>
2034       The previous code could get a wrong answer, or consume excessive
2035       amounts of time and memory before realizing that the answer must
2036       overflow.
2037      </para>
2038     </listitem>
2039
2040 <!--
2041 Author: Tom Lane <tgl@sss.pgh.pa.us>
2042 Branch: REL9_3_STABLE [10b81fbdc] 2014-12-01 15:25:08 -0500
2043 Branch: REL9_2_STABLE [e640042e9] 2014-12-01 15:25:12 -0500
2044 Branch: REL9_1_STABLE [2e3cc3955] 2014-12-01 15:25:15 -0500
2045 Branch: REL9_0_STABLE [e6550626c] 2014-12-01 15:25:18 -0500
2046 -->
2047
2048     <listitem>
2049      <para>
2050       In <function>numeric_recv()</>, truncate away any fractional digits
2051       that would be hidden according to the value's <literal>dscale</> field
2052       (Tom Lane)
2053      </para>
2054
2055      <para>
2056       A <type>numeric</> value's display scale (<literal>dscale</>) should
2057       never be less than the number of nonzero fractional digits; but
2058       apparently there's at least one broken client application that
2059       transmits binary <type>numeric</> values in which that's true.
2060       This leads to strange behavior since the extra digits are taken into
2061       account by arithmetic operations even though they aren't printed.
2062       The least risky fix seems to be to truncate away such <quote>hidden</>
2063       digits on receipt, so that the value is indeed what it prints as.
2064      </para>
2065     </listitem>
2066
2067 <!--
2068 Author: Tom Lane <tgl@sss.pgh.pa.us>
2069 Branch: REL9_3_STABLE [bbfdf5d75] 2014-09-23 20:25:36 -0400
2070 Branch: REL9_2_STABLE [3359a818c] 2014-09-23 20:25:39 -0400
2071 -->
2072
2073     <listitem>
2074      <para>
2075       Fix incorrect search for shortest-first regular expression matches
2076       (Tom Lane)
2077      </para>
2078
2079      <para>
2080       Matching would often fail when the number of allowed iterations is
2081       limited by a <literal>?</> quantifier or a bound expression.
2082      </para>
2083     </listitem>
2084
2085 <!--
2086 Author: Tom Lane <tgl@sss.pgh.pa.us>
2087 Branch: REL9_3_STABLE [7672bbca0] 2014-07-21 22:41:27 -0400
2088 Branch: REL9_2_STABLE [f54d97c5e] 2014-07-21 22:41:30 -0400
2089 Branch: REL9_1_STABLE [124331b61] 2014-07-21 22:41:33 -0400
2090 Branch: REL9_0_STABLE [6e5a39c9e] 2014-07-21 22:41:36 -0400
2091 -->
2092
2093     <listitem>
2094      <para>
2095       Reject out-of-range numeric timezone specifications (Tom Lane)
2096      </para>
2097
2098      <para>
2099       Simple numeric timezone specifications exceeding +/- 168 hours (one
2100       week) would be accepted, but could then cause null-pointer dereference
2101       crashes in certain operations.  There's no use-case for such large UTC
2102       offsets, so reject them.
2103      </para>
2104     </listitem>
2105
2106 <!--
2107 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2108 Branch: REL9_3_STABLE [1aa526f3f] 2014-10-27 10:51:29 +0200
2109 Branch: REL9_2_STABLE [604d94d4c] 2014-10-27 10:51:33 +0200
2110 Branch: REL9_1_STABLE [4d1c738d1] 2014-10-27 10:51:36 +0200
2111 Branch: REL9_0_STABLE [10059c2da] 2014-10-27 10:51:38 +0200
2112 -->
2113
2114     <listitem>
2115      <para>
2116       Fix bugs in <type>tsquery</> <literal>@&gt;</> <type>tsquery</>
2117       operator (Heikki Linnakangas)
2118      </para>
2119
2120      <para>
2121       Two different terms would be considered to match if they had the same
2122       CRC.  Also, if the second operand had more terms than the first, it
2123       would be assumed not to be contained in the first; which is wrong
2124       since it might contain duplicate terms.
2125      </para>
2126     </listitem>
2127
2128 <!--
2129 Author: Tom Lane <tgl@sss.pgh.pa.us>
2130 Branch: REL9_3_STABLE [385f0d98a] 2014-10-23 13:11:34 -0400
2131 Branch: REL9_2_STABLE [f09369da8] 2014-10-23 13:11:37 -0400
2132 Branch: REL9_1_STABLE [94de3a679] 2014-10-23 13:11:41 -0400
2133 Branch: REL9_0_STABLE [21fa26b65] 2014-10-23 13:11:45 -0400
2134 -->
2135
2136     <listitem>
2137      <para>
2138       Improve ispell dictionary's defenses against bad affix files (Tom Lane)
2139      </para>
2140     </listitem>
2141
2142 <!--
2143 Author: Tom Lane <tgl@sss.pgh.pa.us>
2144 Branch: REL9_3_STABLE [5a74ff373] 2014-11-06 20:52:52 -0500
2145 Branch: REL9_2_STABLE [0bb318595] 2014-11-06 20:52:57 -0500
2146 Branch: REL9_1_STABLE [076688084] 2014-11-06 20:53:02 -0500
2147 Branch: REL9_0_STABLE [39493e4d9] 2014-11-06 20:53:07 -0500
2148 -->
2149
2150     <listitem>
2151      <para>
2152       Allow more than 64K phrases in a thesaurus dictionary (David Boutin)
2153      </para>
2154
2155      <para>
2156       The previous coding could crash on an oversize dictionary, so this was
2157       deemed a back-patchable bug fix rather than a feature addition.
2158      </para>
2159     </listitem>
2160
2161 <!--
2162 Author: Peter Eisentraut <peter_e@gmx.net>
2163 Branch: master [79af9a1d2] 2015-01-06 23:06:13 -0500
2164 Branch: REL9_4_STABLE [6bbf75192] 2015-01-17 22:11:20 -0500
2165 Branch: REL9_3_STABLE [e32cb8d0e] 2015-01-17 22:13:27 -0500
2166 Branch: REL9_2_STABLE [c8ef5b1ac] 2015-01-17 22:14:21 -0500
2167 Branch: REL9_1_STABLE [c975fa471] 2015-01-17 22:37:07 -0500
2168 Branch: REL9_0_STABLE [cebb3f032] 2015-01-17 22:37:32 -0500
2169 -->
2170
2171     <listitem>
2172      <para>
2173       Fix namespace handling in <function>xpath()</> (Ali Akbar)
2174      </para>
2175
2176      <para>
2177       Previously, the <type>xml</> value resulting from
2178       an <function>xpath()</> call would not have namespace declarations if
2179       the namespace declarations were attached to an ancestor element in the
2180       input <type>xml</> value, rather than to the specific element being
2181       returned.  Propagate the ancestral declaration so that the result is
2182       correct when considered in isolation.
2183      </para>
2184     </listitem>
2185
2186 <!--
2187 Author: Tom Lane <tgl@sss.pgh.pa.us>
2188 Branch: REL9_3_STABLE [07ab4ec4c] 2014-11-10 15:21:20 -0500
2189 Branch: REL9_2_STABLE [19ccaf9d4] 2014-11-10 15:21:26 -0500
2190 -->
2191
2192     <listitem>
2193      <para>
2194       Ensure that whole-row variables expose nonempty column names
2195       to functions that pay attention to column names within composite
2196       arguments (Tom Lane)
2197      </para>
2198
2199      <para>
2200       In some contexts, constructs like <literal>row_to_json(tab.*)</> may
2201       not produce the expected column names.  This is fixed properly as of
2202       9.4; in older branches, just ensure that we produce some nonempty
2203       name.  (In some cases this will be the underlying table's column name
2204       rather than the query-assigned alias that should theoretically be
2205       visible.)
2206      </para>
2207     </listitem>
2208
2209 <!--
2210 Author: Tom Lane <tgl@sss.pgh.pa.us>
2211 Branch: REL9_3_STABLE [c57cdc9c1] 2014-11-22 16:01:12 -0500
2212 Branch: REL9_2_STABLE [906599f65] 2014-11-22 16:01:15 -0500
2213 -->
2214
2215     <listitem>
2216      <para>
2217       Fix mishandling of system columns,
2218       particularly <structfield>tableoid</>, in FDW queries (Etsuro Fujita)
2219      </para>
2220     </listitem>
2221
2222 <!--
2223 Author: Tom Lane <tgl@sss.pgh.pa.us>
2224 Branch: master [3d660d33a] 2015-01-30 12:30:59 -0500
2225 Branch: REL9_4_STABLE [b6a164e5c] 2015-01-30 12:31:08 -0500
2226 Branch: REL9_3_STABLE [527ff8baf] 2015-01-30 12:30:43 -0500
2227 -->
2228
2229     <listitem>
2230      <para>
2231       Fix assorted oversights in range-operator selectivity estimation
2232       (Emre Hasegeli)
2233      </para>
2234
2235      <para>
2236       This patch fixes corner-case <quote>unexpected operator NNNN</> planner
2237       errors, and improves the selectivity estimates for some other cases.
2238      </para>
2239     </listitem>
2240
2241 <!--
2242 Author: Tom Lane <tgl@sss.pgh.pa.us>
2243 Branch: REL9_3_STABLE [f6abf8f08] 2014-10-26 16:12:29 -0400
2244 Branch: REL9_2_STABLE [4586572d7] 2014-10-26 16:12:32 -0400
2245 -->
2246
2247     <listitem>
2248      <para>
2249       Avoid doing <literal><replaceable>indexed_column</> = ANY
2250       (<replaceable>array</>)</literal> as an index qualifier if that leads
2251       to an inferior plan (Andrew Gierth)
2252      </para>
2253
2254      <para>
2255       In some cases, <literal>= ANY</> conditions applied to non-first index
2256       columns would be done as index conditions even though it would be
2257       better to use them as simple filter conditions.
2258      </para>
2259     </listitem>
2260
2261 <!--
2262 Author: Tom Lane <tgl@sss.pgh.pa.us>
2263 Branch: REL9_3_STABLE [4e54685d0] 2014-10-20 12:23:48 -0400
2264 -->
2265
2266     <listitem>
2267      <para>
2268       Fix <quote>variable not found in subplan target list</> planner
2269       failure when an inline-able SQL function taking a composite argument
2270       is used in a <literal>LATERAL</> subselect and the composite argument
2271       is a lateral reference (Tom Lane)
2272      </para>
2273     </listitem>
2274
2275 <!--
2276 Author: Tom Lane <tgl@sss.pgh.pa.us>
2277 Branch: REL9_3_STABLE [b2b95de61] 2014-10-01 19:30:30 -0400
2278 Branch: REL9_2_STABLE [71b88cf52] 2014-10-01 19:30:34 -0400
2279 Branch: REL9_1_STABLE [477023e94] 2014-10-01 19:30:38 -0400
2280 Branch: REL9_0_STABLE [288f15b7c] 2014-10-01 19:30:41 -0400
2281 -->
2282
2283     <listitem>
2284      <para>
2285       Fix planner problems with nested append relations, such as inherited
2286       tables within <literal>UNION ALL</> subqueries (Tom Lane)
2287      </para>
2288     </listitem>
2289
2290 <!--
2291 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2292 Branch: REL9_3_STABLE [ef8ac584e] 2014-10-03 14:50:29 +0300
2293 Branch: REL9_2_STABLE [8e137b075] 2014-10-03 14:50:40 +0300
2294 Branch: REL9_1_STABLE [f270a1611] 2014-10-03 14:50:46 +0300
2295 Branch: REL9_0_STABLE [f04b112d5] 2014-10-03 14:50:58 +0300
2296 -->
2297
2298     <listitem>
2299      <para>
2300       Fail cleanly when a GiST index tuple doesn't fit on a page, rather
2301       than going into infinite recursion (Andrew Gierth)
2302      </para>
2303     </listitem>
2304
2305 <!--
2306 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
2307 Branch: REL9_3_STABLE [67ed9d531] 2014-10-03 13:01:27 -0300
2308 Branch: REL9_2_STABLE [769d6815e] 2014-10-03 13:01:27 -0300
2309 Branch: REL9_1_STABLE [06646f52e] 2014-10-03 13:01:27 -0300
2310 Branch: REL9_0_STABLE [50a757698] 2014-10-03 13:01:27 -0300
2311 -->
2312
2313     <listitem>
2314      <para>
2315       Exempt tables that have per-table <varname>cost_limit</>
2316       and/or <varname>cost_delay</> settings from autovacuum's global cost
2317       balancing rules (&Aacute;lvaro Herrera)
2318      </para>
2319
2320      <para>
2321       The previous behavior resulted in basically ignoring these per-table
2322       settings, which was unintended.  Now, a table having such settings
2323       will be vacuumed using those settings, independently of what is going
2324       on in other autovacuum workers.  This may result in heavier total I/O
2325       load than before, so such settings should be re-examined for sanity.
2326      </para>
2327     </listitem>
2328
2329 <!--
2330 Author: Tom Lane <tgl@sss.pgh.pa.us>
2331 Branch: REL9_3_STABLE [4cbecdaaa] 2014-07-30 14:41:49 -0400
2332 Branch: REL9_2_STABLE [c83aed34b] 2014-07-30 14:41:53 -0400
2333 Branch: REL9_1_STABLE [f21afe421] 2014-07-30 14:41:58 -0400
2334 Branch: REL9_0_STABLE [91b4a881c] 2014-07-30 14:42:12 -0400
2335 -->
2336
2337     <listitem>
2338      <para>
2339       Avoid wholesale autovacuuming when autovacuum is nominally off
2340       (Tom Lane)
2341      </para>
2342
2343      <para>
2344       Even when autovacuum is nominally off, we will still launch autovacuum
2345       worker processes to vacuum tables that are at risk of XID wraparound.
2346       However, such a worker process then proceeded to vacuum all tables in
2347       the target database, if they met the usual thresholds for
2348       autovacuuming.  This is at best pretty unexpected; at worst it delays
2349       response to the wraparound threat.  Fix it so that if autovacuum is
2350       turned off, workers <emphasis>only</> do anti-wraparound vacuums and
2351       not any other work.
2352      </para>
2353     </listitem>
2354
2355 <!--
2356 Author: Andres Freund <andres@anarazel.de>
2357 Branch: REL9_3_STABLE [2c3ebfd1a] 2014-11-15 01:21:07 +0100
2358 Branch: REL9_2_STABLE [ea8b3833e] 2014-11-15 01:21:45 +0100
2359 Branch: REL9_1_STABLE [d85b646d0] 2014-11-15 01:22:32 +0100
2360 Author: Andres Freund <andres@anarazel.de>
2361 Branch: REL9_3_STABLE [672b43e68] 2014-11-15 01:21:02 +0100
2362 Branch: REL9_2_STABLE [c5baa708f] 2014-11-15 01:21:40 +0100
2363 Branch: REL9_1_STABLE [fde9994bc] 2014-11-15 01:22:32 +0100
2364 Author: Andres Freund <andres@anarazel.de>
2365 Branch: REL9_3_STABLE [c7299d32f] 2014-11-15 01:20:29 +0100
2366 Branch: REL9_2_STABLE [86673a44a] 2014-11-15 01:21:30 +0100
2367 Branch: REL9_1_STABLE [b0a48e996] 2014-11-15 01:22:32 +0100
2368 -->
2369
2370     <listitem>
2371      <para>
2372       During crash recovery, ensure that unlogged relations are rewritten as
2373       empty and are synced to disk before recovery is considered complete
2374       (Abhijit Menon-Sen, Andres Freund)
2375      </para>
2376
2377      <para>
2378       This prevents scenarios in which unlogged relations might contain
2379       garbage data following database crash recovery.
2380      </para>
2381     </listitem>
2382
2383 <!--
2384 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2385 Branch: REL9_3_STABLE [861d3aa43] 2014-11-13 20:01:55 +0200
2386 Branch: REL9_2_STABLE [7eab804c2] 2014-11-13 20:01:18 +0200
2387 Branch: REL9_1_STABLE [5f1d931cf] 2014-11-13 20:01:09 +0200
2388 Branch: REL9_0_STABLE [681dbe7d4] 2014-11-13 20:00:51 +0200
2389 -->
2390
2391     <listitem>
2392      <para>
2393       Fix race condition between hot standby queries and replaying a
2394       full-page image (Heikki Linnakangas)
2395      </para>
2396
2397      <para>
2398       This mistake could result in transient errors in queries being
2399       executed in hot standby.
2400      </para>
2401     </listitem>
2402
2403 <!--
2404 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2405 Branch: REL9_3_STABLE [a2a718b22] 2014-07-29 11:57:52 +0300
2406 Branch: REL9_2_STABLE [1578d13dc] 2014-07-29 11:58:01 +0300
2407 Branch: REL9_1_STABLE [de88ec6bf] 2014-07-29 11:58:09 +0300
2408 Branch: REL9_0_STABLE [804983961] 2014-07-29 11:58:17 +0300
2409 -->
2410
2411     <listitem>
2412      <para>
2413       Fix several cases where recovery logic improperly ignored WAL records
2414       for <literal>COMMIT/ABORT PREPARED</> (Heikki Linnakangas)
2415      </para>
2416
2417      <para>
2418       The most notable oversight was
2419       that <varname>recovery_target_xid</> could not be used to stop at
2420       a two-phase commit.
2421      </para>
2422     </listitem>
2423
2424 <!--
2425 Author: Fujii Masao <fujii@postgresql.org>
2426 Branch: REL9_3_STABLE [d45cd9e19] 2014-10-23 16:22:46 +0900
2427 Branch: REL9_2_STABLE [f904e9afd] 2014-10-23 16:31:44 +0900
2428 -->
2429
2430     <listitem>
2431      <para>
2432       Prevent latest WAL file from being archived a second time at completion
2433       of crash recovery (Fujii Masao)
2434      </para>
2435     </listitem>
2436
2437 <!--
2438 Author: Fujii Masao <fujii@postgresql.org>
2439 Branch: REL9_3_STABLE [3a3b7e316] 2014-11-06 21:25:18 +0900
2440 Branch: REL9_2_STABLE [38eb5d9e8] 2014-11-06 21:25:45 +0900
2441 Branch: REL9_1_STABLE [4e7468074] 2014-11-06 21:26:15 +0900
2442 Branch: REL9_0_STABLE [83c7bfb9a] 2014-11-06 21:26:21 +0900
2443 -->
2444
2445     <listitem>
2446      <para>
2447       Avoid creating unnecessary <filename>.ready</> marker files for
2448       timeline history files (Fujii Masao)
2449      </para>
2450     </listitem>
2451
2452 <!--
2453 Author: Fujii Masao <fujii@postgresql.org>
2454 Branch: REL9_3_STABLE [52eed3d42] 2014-09-05 02:19:29 +0900
2455 Branch: REL9_2_STABLE [78b1228ef] 2014-09-05 02:19:45 +0900
2456 Branch: REL9_1_STABLE [81bffe63c] 2014-09-05 02:19:50 +0900
2457 Branch: REL9_0_STABLE [857a5d6b5] 2014-09-05 02:19:57 +0900
2458 -->
2459
2460     <listitem>
2461      <para>
2462       Fix possible null pointer dereference when an empty prepared statement
2463       is used and the <varname>log_statement</> setting is <literal>mod</>
2464       or <literal>ddl</> (Fujii Masao)
2465      </para>
2466     </listitem>
2467
2468 <!--
2469 Author: Tom Lane <tgl@sss.pgh.pa.us>
2470 Branch: master [75b48e1ff] 2015-01-19 23:01:33 -0500
2471 Branch: REL9_4_STABLE [3387cbbcb] 2015-01-19 23:01:36 -0500
2472 Branch: REL9_3_STABLE [19794e997] 2015-01-19 23:01:39 -0500
2473 Branch: REL9_2_STABLE [33b723538] 2015-01-19 23:01:41 -0500
2474 Branch: REL9_1_STABLE [b87c1dcef] 2015-01-19 23:01:44 -0500
2475 Branch: REL9_0_STABLE [a1a8d0249] 2015-01-19 23:01:46 -0500
2476 -->
2477
2478     <listitem>
2479      <para>
2480       Change <quote>pgstat wait timeout</> warning message to be LOG level,
2481       and rephrase it to be more understandable (Tom Lane)
2482      </para>
2483
2484      <para>
2485       This message was originally thought to be essentially a can't-happen
2486       case, but it occurs often enough on our slower buildfarm members to be
2487       a nuisance.  Reduce it to LOG level, and expend a bit more effort on
2488       the wording: it now reads <quote>using stale statistics instead of
2489       current ones because stats collector is not responding</>.
2490      </para>
2491     </listitem>
2492
2493 <!--
2494 Author: Andres Freund <andres@anarazel.de>
2495 Branch: REL9_3_STABLE [cbd9619ac] 2014-10-01 14:34:06 +0200
2496 -->
2497
2498     <listitem>
2499      <para>
2500       Fix possible corruption of postmaster's list of dynamic background
2501       workers (Andres Freund)
2502      </para>
2503     </listitem>
2504
2505 <!--
2506 Author: Andres Freund <andres@anarazel.de>
2507 Branch: REL9_3_STABLE [27ef6b653] 2014-09-09 23:37:33 +0200
2508 Branch: REL9_2_STABLE [d0b7ffc0f] 2014-09-09 23:37:50 +0200
2509 Branch: REL9_1_STABLE [5af508f66] 2014-09-09 23:45:07 +0200
2510 Branch: REL9_0_STABLE [f25e89601] 2014-09-09 23:48:03 +0200
2511 -->
2512
2513     <listitem>
2514      <para>
2515       Fix SPARC spinlock implementation to ensure correctness if the CPU is
2516       being run in a non-TSO coherency mode, as some non-Solaris kernels do
2517       (Andres Freund)
2518      </para>
2519     </listitem>
2520
2521 <!--
2522 Author: Noah Misch <noah@leadboat.com>
2523 Branch: master [894459e59] 2015-01-07 22:35:44 -0500
2524 Branch: REL9_4_STABLE [83fb1ca5c] 2015-01-07 22:36:35 -0500
2525 Branch: REL9_3_STABLE [1a366d51e] 2015-01-07 22:40:40 -0500
2526 Branch: REL9_2_STABLE [5ca4e444c] 2015-01-07 22:41:49 -0500
2527 Branch: REL9_1_STABLE [8dc83104e] 2015-01-07 22:42:42 -0500
2528 Branch: REL9_0_STABLE [2e4946169] 2015-01-07 22:46:20 -0500
2529 -->
2530
2531     <listitem>
2532      <para>
2533       Warn if OS X's <function>setlocale()</> starts an unwanted extra
2534       thread inside the postmaster (Noah Misch)
2535      </para>
2536     </listitem>
2537
2538 <!--
2539 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2540 Branch: REL9_3_STABLE [08cd4d9a6] 2014-11-25 17:39:00 +0200
2541 Branch: REL9_2_STABLE [9b468bcec] 2014-11-25 17:39:04 +0200
2542 Branch: REL9_1_STABLE [95be34362] 2014-11-25 17:39:07 +0200
2543 Branch: REL9_0_STABLE [9880fea4f] 2014-11-25 17:39:09 +0200
2544 -->
2545
2546     <listitem>
2547      <para>
2548       Fix processing of repeated <literal>dbname</> parameters
2549       in <function>PQconnectdbParams()</> (Alex Shulgin)
2550      </para>
2551
2552      <para>
2553       Unexpected behavior ensued if the first occurrence
2554       of <literal>dbname</> contained a connection string or URI to be
2555       expanded.
2556      </para>
2557     </listitem>
2558
2559 <!--
2560 Author: Tom Lane <tgl@sss.pgh.pa.us>
2561 Branch: REL9_3_STABLE [52ef33f72] 2014-10-22 18:41:51 -0400
2562 Branch: REL9_2_STABLE [6fa31d8d1] 2014-10-22 18:41:54 -0400
2563 Branch: REL9_1_STABLE [98144378c] 2014-10-22 18:41:57 -0400
2564 Branch: REL9_0_STABLE [ac6e87537] 2014-10-22 18:42:01 -0400
2565 -->
2566
2567     <listitem>
2568      <para>
2569       Ensure that <application>libpq</> reports a suitable error message on
2570       unexpected socket EOF (Marko Tiikkaja, Tom Lane)
2571      </para>
2572
2573      <para>
2574       Depending on kernel behavior, <application>libpq</> might return an
2575       empty error string rather than something useful when the server
2576       unexpectedly closed the socket.
2577      </para>
2578     </listitem>
2579
2580 <!--
2581 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2582 Branch: REL9_3_STABLE [1325b239b] 2014-10-29 14:40:47 +0200
2583 Branch: REL9_2_STABLE [1a27fbd07] 2014-10-29 14:39:10 +0200
2584 Branch: REL9_1_STABLE [8f7bd8e91] 2014-10-29 14:36:19 +0200
2585 Branch: REL9_0_STABLE [49ef4eba2] 2014-10-29 14:35:39 +0200
2586 -->
2587
2588     <listitem>
2589      <para>
2590       Clear any old error message during <function>PQreset()</>
2591       (Heikki Linnakangas)
2592      </para>
2593
2594      <para>
2595       If <function>PQreset()</> is called repeatedly, and the connection
2596       cannot be re-established, error messages from the failed connection
2597       attempts kept accumulating in the <structname>PGconn</>'s error
2598       string.
2599      </para>
2600     </listitem>
2601
2602 <!--
2603 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2604 Branch: REL9_3_STABLE [d3b162a3d] 2014-11-25 14:10:29 +0200
2605 Branch: REL9_2_STABLE [abcab2a64] 2014-11-25 14:10:43 +0200
2606 Branch: REL9_1_STABLE [5053ad206] 2014-11-25 14:10:48 +0200
2607 Branch: REL9_0_STABLE [1f3517039] 2014-11-25 14:10:54 +0200
2608 -->
2609
2610     <listitem>
2611      <para>
2612       Properly handle out-of-memory conditions while parsing connection
2613       options in <application>libpq</> (Alex Shulgin, Heikki Linnakangas)
2614      </para>
2615     </listitem>
2616
2617 <!--
2618 Author: Tom Lane <tgl@sss.pgh.pa.us>
2619 Branch: REL9_3_STABLE [d3cfe20c6] 2014-10-06 21:23:35 -0400
2620 Branch: REL9_2_STABLE [b513205bc] 2014-10-06 21:23:39 -0400
2621 Branch: REL9_1_STABLE [037b912ec] 2014-10-06 21:23:45 -0400
2622 Branch: REL9_0_STABLE [d9a1e9de5] 2014-10-06 21:23:50 -0400
2623 -->
2624
2625     <listitem>
2626      <para>
2627       Fix array overrun in <application>ecpg</>'s version
2628       of <function>ParseDateTime()</> (Michael Paquier)
2629      </para>
2630     </listitem>
2631
2632 <!--
2633 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2634 Branch: REL9_3_STABLE [2df66f01a] 2014-12-05 14:31:51 +0200
2635 Branch: REL9_2_STABLE [2b53d583d] 2014-12-05 14:31:45 +0200
2636 Branch: REL9_1_STABLE [729202754] 2014-12-05 14:31:37 +0200
2637 Branch: REL9_0_STABLE [d67be559e] 2014-12-05 14:30:55 +0200
2638 -->
2639
2640     <listitem>
2641      <para>
2642       In <application>initdb</>, give a clearer error message if a password
2643       file is specified but is empty (Mats Erik Andersson)
2644      </para>
2645     </listitem>
2646
2647 <!--
2648 Author: Tom Lane <tgl@sss.pgh.pa.us>
2649 Branch: REL9_3_STABLE [b0fd5c552] 2014-09-08 16:09:52 -0400
2650 Branch: REL9_2_STABLE [886b58b47] 2014-09-08 16:09:56 -0400
2651 Branch: REL9_1_STABLE [440fcc568] 2014-09-08 16:10:01 -0400
2652 Branch: REL9_0_STABLE [44c518328] 2014-09-08 16:10:05 -0400
2653 -->
2654
2655     <listitem>
2656      <para>
2657       Fix <application>psql</>'s <command>\s</> command to work nicely with
2658       libedit, and add pager support (Stepan Rutz, Tom Lane)
2659      </para>
2660
2661      <para>
2662       When using libedit rather than readline, <command>\s</> printed the
2663       command history in a fairly unreadable encoded format, and on recent
2664       libedit versions might fail altogether.  Fix that by printing the
2665       history ourselves rather than having the library do it.  A pleasant
2666       side-effect is that the pager is used if appropriate.
2667      </para>
2668
2669      <para>
2670       This patch also fixes a bug that caused newline encoding to be applied
2671       inconsistently when saving the command history with libedit.
2672       Multiline history entries written by older <application>psql</>
2673       versions will be read cleanly with this patch, but perhaps not
2674       vice versa, depending on the exact libedit versions involved.
2675      </para>
2676     </listitem>
2677
2678 <!--
2679 Author: Tom Lane <tgl@sss.pgh.pa.us>
2680 Branch: master [28551797a] 2014-12-31 12:18:50 -0500
2681 Branch: REL9_4_STABLE [c35249939] 2014-12-31 12:16:57 -0500
2682 Branch: REL9_3_STABLE [7582cce56] 2014-12-31 12:17:00 -0500
2683 Branch: REL9_2_STABLE [64c506535] 2014-12-31 12:17:04 -0500
2684 Branch: REL9_1_STABLE [1773e0702] 2014-12-31 12:17:08 -0500
2685 Branch: REL9_0_STABLE [2600e4436] 2014-12-31 12:17:12 -0500
2686 -->
2687
2688     <listitem>
2689      <para>
2690       Improve consistency of parsing of <application>psql</>'s special
2691       variables (Tom Lane)
2692      </para>
2693
2694      <para>
2695       Allow variant spellings of <literal>on</> and <literal>off</> (such
2696       as <literal>1</>/<literal>0</>) for <literal>ECHO_HIDDEN</>
2697       and <literal>ON_ERROR_ROLLBACK</>.  Report a warning for unrecognized
2698       values for <literal>COMP_KEYWORD_CASE</>, <literal>ECHO</>,
2699       <literal>ECHO_HIDDEN</>, <literal>HISTCONTROL</>,
2700       <literal>ON_ERROR_ROLLBACK</>, and <literal>VERBOSITY</>.  Recognize
2701       all values for all these variables case-insensitively; previously
2702       there was a mishmash of case-sensitive and case-insensitive behaviors.
2703      </para>
2704     </listitem>
2705
2706 <!--
2707 Author: Fujii Masao <fujii@postgresql.org>
2708 Branch: REL9_3_STABLE [4b1953079] 2014-11-28 02:44:40 +0900
2709 -->
2710
2711     <listitem>
2712      <para>
2713       Make <application>psql</>'s <command>\watch</> command display
2714       nulls as specified by <command>\pset null</> (Fujii Masao)
2715      </para>
2716     </listitem>
2717
2718 <!--
2719 Author: Stephen Frost <sfrost@snowman.net>
2720 Branch: REL9_3_STABLE [7ec399094] 2014-09-12 11:24:28 -0400
2721 Branch: REL9_2_STABLE [5d63f2159] 2014-09-12 11:24:32 -0400
2722 Branch: REL9_1_STABLE [4d96e93cb] 2014-09-12 11:24:36 -0400
2723 Branch: REL9_0_STABLE [1f89fc218] 2014-09-12 11:24:39 -0400
2724 -->
2725
2726     <listitem>
2727      <para>
2728       Fix <application>psql</>'s expanded-mode display to work
2729       consistently when using <literal>border</> = 3
2730       and <literal>linestyle</> = <literal>ascii</> or <literal>unicode</>
2731       (Stephen Frost)
2732      </para>
2733     </listitem>
2734
2735 <!--
2736 Author: Tom Lane <tgl@sss.pgh.pa.us>
2737 Branch: master [adfc157dd] 2015-01-05 19:27:04 -0500
2738 Branch: REL9_4_STABLE [c99e41f68] 2015-01-05 19:27:06 -0500
2739 Branch: REL9_3_STABLE [bb1e2426b] 2015-01-05 19:27:09 -0500
2740 -->
2741
2742     <listitem>
2743      <para>
2744       Fix <application>pg_dump</> to handle comments on event triggers
2745       without failing (Tom Lane)
2746      </para>
2747     </listitem>
2748
2749 <!--
2750 Author: Kevin Grittner <kgrittn@postgresql.org>
2751 Branch: master [cff1bd2a3] 2015-01-30 08:57:24 -0600
2752 Branch: REL9_4_STABLE [cb0168528] 2015-01-30 08:57:53 -0600
2753 Branch: REL9_3_STABLE [cc609c46f] 2015-01-30 09:01:36 -0600
2754 -->
2755
2756     <listitem>
2757      <para>
2758       Allow parallel <application>pg_dump</> to
2759       use <option>--serializable-deferrable</> (Kevin Grittner)
2760      </para>
2761     </listitem>
2762
2763 <!--
2764 Author: Tom Lane <tgl@sss.pgh.pa.us>
2765 Branch: REL9_3_STABLE [51fc61334] 2014-07-25 19:48:48 -0400
2766 Branch: REL9_2_STABLE [a6c567437] 2014-07-25 19:48:51 -0400
2767 Branch: REL9_1_STABLE [40c333c39] 2014-07-25 19:48:54 -0400
2768 -->
2769
2770     <listitem>
2771      <para>
2772       Improve performance of <application>pg_dump</> when the database
2773       contains many instances of multiple dependency paths between the same
2774       two objects (Tom Lane)
2775      </para>
2776     </listitem>
2777
2778 <!--
2779 Author: Tom Lane <tgl@sss.pgh.pa.us>
2780 Branch: REL9_3_STABLE [9fc887121] 2014-11-13 18:19:32 -0500
2781 Branch: REL9_2_STABLE [3c5ce5102] 2014-11-13 18:19:35 -0500
2782 -->
2783
2784     <listitem>
2785      <para>
2786       Fix <application>pg_dumpall</> to restore its ability to dump from
2787       pre-8.1 servers (Gilles Darold)
2788      </para>
2789     </listitem>
2790
2791 <!--
2792 Author: Robert Haas <rhaas@postgresql.org>
2793 Branch: REL9_3_STABLE [d72ecc91c] 2014-09-26 11:23:43 -0400
2794 Branch: REL9_2_STABLE [a97c8c393] 2014-09-26 11:25:57 -0400
2795 Branch: REL9_1_STABLE [d1844c21b] 2014-09-26 11:36:25 -0400
2796 Branch: REL9_0_STABLE [bbe3c069a] 2014-09-26 11:43:56 -0400
2797 -->
2798
2799     <listitem>
2800      <para>
2801       Fix possible deadlock during parallel restore of a schema-only dump
2802       (Robert Haas, Tom Lane)
2803      </para>
2804     </listitem>
2805
2806 <!--
2807 Author: Tom Lane <tgl@sss.pgh.pa.us>
2808 Branch: REL9_3_STABLE [9a540c1ef] 2014-10-17 12:49:06 -0400
2809 Branch: REL9_2_STABLE [787e20bd4] 2014-10-17 12:49:09 -0400
2810 Branch: REL9_1_STABLE [0c9391e52] 2014-10-17 12:49:11 -0400
2811 Branch: REL9_0_STABLE [31021e7ba] 2014-10-17 12:49:15 -0400
2812 -->
2813
2814     <listitem>
2815      <para>
2816       Fix core dump in <literal>pg_dump --binary-upgrade</> on zero-column
2817       composite type (Rushabh Lathia)
2818      </para>
2819     </listitem>
2820
2821 <!--
2822 Author: Andres Freund <andres@anarazel.de>
2823 Branch: REL9_3_STABLE [26a4e0ed7] 2014-11-15 01:21:11 +0100
2824 -->
2825
2826     <listitem>
2827      <para>
2828       Fix failure to fsync tables in nondefault tablespaces
2829       during <application>pg_upgrade</> (Abhijit Menon-Sen, Andres Freund)
2830      </para>
2831
2832      <para>
2833       With an operating system crash and some bad luck, this could result in
2834       data loss during an upgrade.
2835      </para>
2836     </listitem>
2837
2838 <!--
2839 Author: Bruce Momjian <bruce@momjian.us>
2840 Branch: REL9_3_STABLE [fca9f349b] 2014-08-07 14:56:13 -0400
2841 -->
2842
2843     <listitem>
2844      <para>
2845       In <application>pg_upgrade</>, cope with cases where the new cluster
2846       creates a TOAST table for a table that didn't previously have one
2847       (Bruce Momjian)
2848      </para>
2849
2850      <para>
2851       Previously this could result in failures due to OID conflicts.
2852      </para>
2853     </listitem>
2854
2855 <!--
2856 Author: Bruce Momjian <bruce@momjian.us>
2857 Branch: REL9_3_STABLE [24ae44914] 2014-08-04 11:45:45 -0400
2858 -->
2859
2860     <listitem>
2861      <para>
2862       In <application>pg_upgrade</>, don't try to
2863       set <literal>autovacuum_multixact_freeze_max_age</> for the old cluster
2864       (Bruce Momjian)
2865      </para>
2866
2867      <para>
2868       This could result in failure because not all 9.3.X versions have that
2869       parameter.  Fortunately, we don't actually need to set it at all.
2870      </para>
2871     </listitem>
2872
2873 <!--
2874 Author: Bruce Momjian <bruce@momjian.us>
2875 Branch: REL9_3_STABLE [5724f491d] 2014-09-11 18:39:46 -0400
2876 -->
2877
2878     <listitem>
2879      <para>
2880       In <application>pg_upgrade</>, preserve the transaction ID epoch
2881       (Bruce Momjian)
2882      </para>
2883
2884      <para>
2885       This oversight did not bother <productname>PostgreSQL</> proper,
2886       but could confuse some external replication tools.
2887      </para>
2888     </listitem>
2889
2890 <!--
2891 Author: Andres Freund <andres@anarazel.de>
2892 Branch: master [2c0a48589] 2015-01-03 20:54:12 +0100
2893 Branch: REL9_4_STABLE [90e4a2bf9] 2015-01-03 20:54:13 +0100
2894 Branch: REL9_3_STABLE [f6cea4502] 2015-01-03 20:54:13 +0100
2895 Branch: REL9_2_STABLE [f961ad479] 2015-01-03 20:54:13 +0100
2896 Branch: REL9_1_STABLE [2a0bfa4d6] 2015-01-03 20:54:13 +0100
2897 -->
2898
2899     <listitem>
2900      <para>
2901       Prevent WAL files created by <literal>pg_basebackup -x/-X</> from
2902       being archived again when the standby is promoted (Andres Freund)
2903      </para>
2904     </listitem>
2905
2906 <!--
2907 Author: Fujii Masao <fujii@postgresql.org>
2908 Branch: REL9_3_STABLE [9747a9898] 2014-08-02 15:19:45 +0900
2909 -->
2910
2911     <listitem>
2912      <para>
2913       Fix memory leak in <application>pg_receivexlog</> (Fujii Masao)
2914      </para>
2915     </listitem>
2916
2917 <!--
2918 Author: Fujii Masao <fujii@postgresql.org>
2919 Branch: REL9_3_STABLE [39217ce41] 2014-08-02 14:59:10 +0900
2920 -->
2921
2922     <listitem>
2923      <para>
2924       Fix unintended suppression of <application>pg_receivexlog</> verbose
2925       messages (Fujii Masao)
2926      </para>
2927     </listitem>
2928
2929 <!--
2930 Author: Tom Lane <tgl@sss.pgh.pa.us>
2931 Branch: REL9_3_STABLE [9474c9d81] 2014-09-19 13:19:02 -0400
2932 Branch: REL9_2_STABLE [5ff8c2d7d] 2014-09-19 13:19:05 -0400
2933 -->
2934
2935     <listitem>
2936      <para>
2937       Fix failure of <filename>contrib/auto_explain</> to print per-node
2938       timing information when doing <command>EXPLAIN ANALYZE</> (Tom Lane)
2939      </para>
2940     </listitem>
2941
2942 <!--
2943 Author: Tom Lane <tgl@sss.pgh.pa.us>
2944 Branch: REL9_3_STABLE [0ad403c98] 2014-08-28 18:21:14 -0400
2945 Branch: REL9_2_STABLE [f3998521f] 2014-08-28 18:21:17 -0400
2946 Branch: REL9_1_STABLE [9807c8220] 2014-08-28 18:21:20 -0400
2947 -->
2948
2949     <listitem>
2950      <para>
2951       Fix upgrade-from-unpackaged script for <filename>contrib/citext</>
2952       (Tom Lane)
2953      </para>
2954     </listitem>
2955
2956 <!--
2957 Author: Tom Lane <tgl@sss.pgh.pa.us>
2958 Branch: REL9_3_STABLE [f44290b7b] 2014-11-04 16:54:59 -0500
2959 -->
2960
2961     <listitem>
2962      <para>
2963       Avoid integer overflow and buffer overrun
2964       in <filename>contrib/hstore</>'s <function>hstore_to_json()</>
2965       (Heikki Linnakangas)
2966      </para>
2967     </listitem>
2968
2969 <!--
2970 Author: Andrew Dunstan <andrew@dunslane.net>
2971 Branch: REL9_3_STABLE [55c880797] 2014-12-01 11:44:48 -0500
2972 -->
2973
2974     <listitem>
2975      <para>
2976       Fix recognition of numbers in <function>hstore_to_json_loose()</>,
2977       so that JSON numbers and strings are correctly distinguished
2978       (Andrew Dunstan)
2979      </para>
2980     </listitem>
2981
2982 <!--
2983 Author: Tom Lane <tgl@sss.pgh.pa.us>
2984 Branch: REL9_3_STABLE [f59c8eff7] 2014-07-22 11:45:53 -0400
2985 Branch: REL9_2_STABLE [810f0d2a2] 2014-07-22 11:45:57 -0400
2986 Branch: REL9_1_STABLE [3c5232ae8] 2014-07-22 11:46:00 -0400
2987 Branch: REL9_0_STABLE [9dc2a3fd0] 2014-07-22 11:46:04 -0400
2988 -->
2989
2990     <listitem>
2991      <para>
2992       Fix block number checking
2993       in <filename>contrib/pageinspect</>'s <function>get_raw_page()</>
2994       (Tom Lane)
2995      </para>
2996
2997      <para>
2998       The incorrect checking logic could prevent access to some pages in
2999       non-main relation forks.
3000      </para>
3001     </listitem>
3002
3003 <!--
3004 Author: Tom Lane <tgl@sss.pgh.pa.us>
3005 Branch: REL9_3_STABLE [419de696a] 2014-11-11 17:22:38 -0500
3006 Branch: REL9_2_STABLE [4a9710e6e] 2014-11-11 17:22:44 -0500
3007 Branch: REL9_1_STABLE [4ddd9e72f] 2014-11-11 17:22:51 -0500
3008 Branch: REL9_0_STABLE [ef5a3b957] 2014-11-11 17:22:58 -0500
3009 -->
3010
3011     <listitem>
3012      <para>
3013       Fix <filename>contrib/pgcrypto</>'s <function>pgp_sym_decrypt()</>
3014       to not fail on messages whose length is 6 less than a power of 2
3015       (Marko Tiikkaja)
3016      </para>
3017     </listitem>
3018
3019 <!--
3020 Author: Robert Haas <rhaas@postgresql.org>
3021 Branch: REL9_3_STABLE [8cf825974] 2014-11-19 12:14:22 -0500
3022 Branch: REL9_2_STABLE [57ce74661] 2014-11-19 12:20:47 -0500
3023 Branch: REL9_1_STABLE [a855c90a7] 2014-11-19 12:26:06 -0500
3024 -->
3025
3026     <listitem>
3027      <para>
3028       Fix file descriptor leak in <filename>contrib/pg_test_fsync</>
3029       (Jeff Janes)
3030      </para>
3031
3032      <para>
3033       This could cause failure to remove temporary files on Windows.
3034      </para>
3035     </listitem>
3036
3037 <!--
3038 Author: Tom Lane <tgl@sss.pgh.pa.us>
3039 Branch: master [37507962c] 2015-01-29 20:18:33 -0500
3040 Branch: REL9_4_STABLE [202621d04] 2015-01-29 20:18:37 -0500
3041 Branch: REL9_3_STABLE [53ae24692] 2015-01-29 20:18:40 -0500
3042 Branch: REL9_2_STABLE [66cc74680] 2015-01-29 20:18:42 -0500
3043 Branch: REL9_1_STABLE [290c2daad] 2015-01-29 20:18:44 -0500
3044 Branch: REL9_0_STABLE [dc9a506e6] 2015-01-29 20:18:46 -0500
3045 -->
3046
3047     <listitem>
3048      <para>
3049       Handle unexpected query results, especially NULLs, safely in
3050       <filename>contrib/tablefunc</>'s <function>connectby()</>
3051       (Michael Paquier)
3052      </para>
3053
3054      <para>
3055       <function>connectby()</> previously crashed if it encountered a NULL
3056       key value.  It now prints that row but doesn't recurse further.
3057      </para>
3058     </listitem>
3059
3060 <!--
3061 Author: Tom Lane <tgl@sss.pgh.pa.us>
3062 Branch: REL9_3_STABLE [c393847a1] 2014-11-27 11:12:51 -0500
3063 Branch: REL9_2_STABLE [a1cd04cd0] 2014-11-27 11:12:55 -0500
3064 Branch: REL9_1_STABLE [168636a99] 2014-11-27 11:12:59 -0500
3065 Branch: REL9_0_STABLE [6a694bbab] 2014-11-27 11:13:03 -0500
3066 -->
3067
3068     <listitem>
3069      <para>
3070       Avoid a possible crash in <filename>contrib/xml2</>'s
3071       <function>xslt_process()</> (Mark Simonetti)
3072      </para>
3073
3074      <para>
3075       <application>libxslt</> seems to have an undocumented dependency on
3076       the order in which resources are freed; reorder our calls to avoid a
3077       crash.
3078      </para>
3079     </listitem>
3080
3081 <!--
3082 Author: Tom Lane <tgl@sss.pgh.pa.us>
3083 Branch: REL9_3_STABLE [0247935c7] 2014-11-05 11:34:19 -0500
3084 Branch: REL9_2_STABLE [0ef754cad] 2014-11-05 11:34:22 -0500
3085 Branch: REL9_1_STABLE [7225abf00] 2014-11-05 11:34:25 -0500
3086 -->
3087
3088     <listitem>
3089      <para>
3090       Mark some <filename>contrib</> I/O functions with correct volatility
3091       properties (Tom Lane)
3092      </para>
3093
3094      <para>
3095       The previous over-conservative marking was immaterial in normal use,
3096       but could cause optimization problems or rejection of valid index
3097       expression definitions.  Since the consequences are not large, we've
3098       just adjusted the function definitions in the extension modules'
3099       scripts, without changing version numbers.
3100      </para>
3101     </listitem>
3102
3103 <!--
3104 Author: Tom Lane <tgl@sss.pgh.pa.us>
3105 Branch: master [a59ee8819] 2015-01-30 13:05:30 -0500
3106 Branch: REL9_4_STABLE [70da7aeba] 2015-01-30 13:04:59 -0500
3107 Branch: REL9_3_STABLE [f08cf8ad9] 2015-01-30 13:05:01 -0500
3108 Branch: REL9_2_STABLE [a97dfdfd9] 2015-01-30 13:05:04 -0500
3109 Branch: REL9_1_STABLE [8f51c432c] 2015-01-30 13:05:07 -0500
3110 Branch: REL9_0_STABLE [7c41a32b3] 2015-01-30 13:05:09 -0500
3111 Author: Tom Lane <tgl@sss.pgh.pa.us>
3112 Branch: REL9_3_STABLE [8824bae87] 2014-11-18 13:28:13 -0500
3113 Author: Robert Haas <rhaas@postgresql.org>
3114 Branch: master [0b49642b9] 2015-01-15 09:26:03 -0500
3115 Branch: REL9_4_STABLE [7b65f194e] 2015-01-15 09:29:41 -0500
3116 Branch: REL9_3_STABLE [ebbef4f39] 2015-01-15 09:29:55 -0500
3117 Branch: REL9_2_STABLE [d452bfd1b] 2015-01-15 09:42:21 -0500
3118 Branch: REL9_1_STABLE [151fb75b0] 2015-01-15 09:42:33 -0500
3119 Branch: REL9_0_STABLE [0a67c0018] 2015-01-15 09:42:47 -0500
3120 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
3121 Branch: master [e37d474f9] 2015-01-13 14:33:05 +0200
3122 Branch: REL9_4_STABLE [4ebb3494e] 2015-01-13 16:01:04 +0200
3123 Author: Andres Freund <andres@anarazel.de>
3124 Branch: master [8cadeb792] 2015-01-04 15:44:49 +0100
3125 Branch: REL9_4_STABLE [7ced1b6c5] 2015-01-04 15:52:52 +0100
3126 Branch: REL9_3_STABLE [a68b8aec7] 2015-01-04 15:53:08 +0100
3127 Branch: REL9_2_STABLE [6f9b84a40] 2015-01-04 15:55:00 +0100
3128 Author: Andres Freund <andres@anarazel.de>
3129 Branch: master [58bc4747b] 2015-01-04 15:35:46 +0100
3130 Branch: REL9_4_STABLE [2d8411a0a] 2015-01-04 15:35:46 +0100
3131 Branch: REL9_3_STABLE [d33f36f16] 2015-01-04 15:35:47 +0100
3132 Branch: REL9_2_STABLE [029e41afd] 2015-01-04 15:35:47 +0100
3133 Branch: REL9_1_STABLE [39cdf365a] 2015-01-04 15:35:47 +0100
3134 Branch: REL9_0_STABLE [17797e18d] 2015-01-04 15:35:48 +0100
3135 Author: Andres Freund <andres@anarazel.de>
3136 Branch: master [0398ece4c] 2015-01-04 14:36:21 +0100
3137 Branch: REL9_4_STABLE [ff7d46b85] 2015-01-04 14:36:21 +0100
3138 Branch: REL9_3_STABLE [ec14f1601] 2015-01-04 14:36:22 +0100
3139 Branch: REL9_2_STABLE [f4060db11] 2015-01-04 14:36:22 +0100
3140 Author: Tatsuo Ishii <ishii@postgresql.org>
3141 Branch: master [3b5a89c48] 2014-12-30 20:33:01 +0900
3142 Branch: REL9_4_STABLE [458e8bc65] 2014-12-30 20:27:26 +0900
3143 Branch: REL9_3_STABLE [ed0e03283] 2014-12-30 20:20:56 +0900
3144 Branch: REL9_2_STABLE [4db7eaae0] 2014-12-30 19:59:26 +0900
3145 Branch: REL9_1_STABLE [4c136b0b6] 2014-12-30 19:48:53 +0900
3146 Branch: REL9_0_STABLE [9b74f3574] 2014-12-30 19:37:55 +0900
3147 Author: Tom Lane <tgl@sss.pgh.pa.us>
3148 Branch: master [66709133c] 2014-12-16 15:35:33 -0500
3149 Branch: REL9_4_STABLE [383d224a0] 2014-12-16 15:35:36 -0500
3150 Branch: REL9_3_STABLE [53960e7eb] 2014-12-16 15:35:40 -0500
3151 Branch: REL9_2_STABLE [e92c67ddc] 2014-12-16 15:35:43 -0500
3152 Branch: REL9_1_STABLE [5c784d96a] 2014-12-16 15:35:46 -0500
3153 Branch: REL9_0_STABLE [a2969bd72] 2014-12-16 15:35:49 -0500
3154 Author: Tom Lane <tgl@sss.pgh.pa.us>
3155 Branch: master [d38e8d30c] 2014-12-16 13:31:42 -0500
3156 Branch: REL9_4_STABLE [6c75384ee] 2014-12-16 13:31:57 -0500
3157 Branch: REL9_3_STABLE [3b750ec15] 2014-12-16 13:32:02 -0500
3158 Branch: REL9_2_STABLE [5b2c8f04a] 2014-12-16 13:32:15 -0500
3159 Branch: REL9_1_STABLE [926da211a] 2014-12-16 13:32:25 -0500
3160 Branch: REL9_0_STABLE [961df1853] 2014-12-16 13:32:38 -0500
3161 Author: Tom Lane <tgl@sss.pgh.pa.us>
3162 Branch: master [586dd5d6a] 2015-01-24 13:05:42 -0500
3163 Branch: REL9_4_STABLE [d51d4ff31] 2015-01-24 13:05:45 -0500
3164 Branch: REL9_3_STABLE [7240f9200] 2015-01-24 13:05:49 -0500
3165 Branch: REL9_2_STABLE [502e5f9c3] 2015-01-24 13:05:53 -0500
3166 Branch: REL9_1_STABLE [b00a08859] 2015-01-24 13:05:56 -0500
3167 Branch: REL9_0_STABLE [3a3ee655c] 2015-01-24 13:05:58 -0500
3168 -->
3169
3170     <listitem>
3171      <para>
3172       Numerous cleanups of warnings from Coverity static code analyzer
3173       (Andres Freund, Tatsuo Ishii, Marko Kreen, Tom Lane, Michael Paquier)
3174      </para>
3175
3176      <para>
3177       These changes are mostly cosmetic but in some cases fix corner-case
3178       bugs, for example a crash rather than a proper error report after an
3179       out-of-memory failure.  None are believed to represent security
3180       issues.
3181      </para>
3182     </listitem>
3183
3184 <!--
3185 Author: Robert Haas <rhaas@postgresql.org>
3186 Branch: REL9_3_STABLE [05c0059b3] 2014-07-30 12:10:20 -0400
3187 -->
3188
3189     <listitem>
3190      <para>
3191       Fix setup of background workers in EXEC_BACKEND builds, eg Windows
3192       (Robert Haas)
3193      </para>
3194     </listitem>
3195
3196 <!--
3197 Author: Noah Misch <noah@leadboat.com>
3198 Branch: REL9_3_STABLE [07115248f] 2014-07-22 11:01:41 -0400
3199 Branch: REL9_2_STABLE [cec0c2182] 2014-07-22 11:01:51 -0400
3200 Branch: REL9_1_STABLE [81af4185a] 2014-07-22 11:02:00 -0400
3201 Branch: REL9_0_STABLE [4c6d0abde] 2014-07-22 11:02:25 -0400
3202 -->
3203
3204     <listitem>
3205      <para>
3206       Detect incompatible OpenLDAP versions during build (Noah Misch)
3207      </para>
3208
3209      <para>
3210       With OpenLDAP versions 2.4.24 through 2.4.31,
3211       inclusive, <productname>PostgreSQL</> backends can crash at exit.
3212       Raise a warning during <application>configure</> based on the
3213       compile-time OpenLDAP version number, and test the crashing scenario
3214       in the <filename>contrib/dblink</> regression test.
3215      </para>
3216     </listitem>
3217
3218 <!--
3219 Author: Noah Misch <noah@leadboat.com>
3220 Branch: REL9_3_STABLE [318fe2321] 2014-08-18 23:01:04 -0400
3221 Branch: REL9_2_STABLE [ebd4d9cdd] 2014-08-18 23:01:09 -0400
3222 Branch: REL9_1_STABLE [ba72fc054] 2014-08-18 23:01:13 -0400
3223 Branch: REL9_0_STABLE [e6841c4d6] 2014-08-18 23:01:23 -0400
3224 -->
3225
3226     <listitem>
3227      <para>
3228       In non-MSVC Windows builds, ensure <filename>libpq.dll</> is installed
3229       with execute permissions (Noah Misch)
3230      </para>
3231     </listitem>
3232
3233 <!--
3234 Author: Tom Lane <tgl@sss.pgh.pa.us>
3235 Branch: master [aa719391d] 2015-01-19 23:44:19 -0500
3236 Branch: REL9_4_STABLE [3de9f22ac] 2015-01-19 23:44:22 -0500
3237 Branch: REL9_3_STABLE [1681e2f74] 2015-01-19 23:44:24 -0500
3238 Branch: REL9_2_STABLE [89b6a19e1] 2015-01-19 23:44:28 -0500
3239 Branch: REL9_1_STABLE [f4f522deb] 2015-01-19 23:44:30 -0500
3240 Branch: REL9_0_STABLE [338ff75fc] 2015-01-19 23:44:33 -0500
3241 -->
3242
3243     <listitem>
3244      <para>
3245       Make <application>pg_regress</> remove any temporary installation it
3246       created upon successful exit (Tom Lane)
3247      </para>
3248
3249      <para>
3250       This results in a very substantial reduction in disk space usage
3251       during <literal>make check-world</>, since that sequence involves
3252       creation of numerous temporary installations.
3253      </para>
3254     </listitem>
3255
3256 <!--
3257 Author: Tom Lane <tgl@sss.pgh.pa.us>
3258 Branch: REL9_3_STABLE [137e7c164] 2014-10-16 15:22:17 -0400
3259 Branch: REL9_2_STABLE [7c67b9365] 2014-10-16 15:22:20 -0400
3260 Branch: REL9_1_STABLE [2784b68b3] 2014-10-16 15:22:23 -0400
3261 Branch: REL9_0_STABLE [870a980aa] 2014-10-16 15:22:26 -0400
3262 -->
3263
3264     <listitem>
3265      <para>
3266       Support time zone abbreviations that change UTC offset from time to
3267       time (Tom Lane)
3268      </para>
3269
3270      <para>
3271       Previously, <productname>PostgreSQL</> assumed that the UTC offset
3272       associated with a time zone abbreviation (such as <literal>EST</>)
3273       never changes in the usage of any particular locale.  However this
3274       assumption fails in the real world, so introduce the ability for a
3275       zone abbreviation to represent a UTC offset that sometimes changes.
3276       Update the zone abbreviation definition files to make use of this
3277       feature in timezone locales that have changed the UTC offset of their
3278       abbreviations since 1970 (according to the IANA timezone database).
3279       In such timezones, <productname>PostgreSQL</> will now associate the
3280       correct UTC offset with the abbreviation depending on the given date.
3281      </para>
3282     </listitem>
3283
3284 <!--
3285 Author: Tom Lane <tgl@sss.pgh.pa.us>
3286 Branch: REL9_3_STABLE [9701f238b] 2014-10-03 17:44:56 -0400
3287 Branch: REL9_2_STABLE [d7d546bbc] 2014-10-03 17:44:59 -0400
3288 Branch: REL9_1_STABLE [252af79d9] 2014-10-03 17:45:03 -0400
3289 Branch: REL9_0_STABLE [cc7bad30c] 2014-10-03 17:45:07 -0400
3290 Author: Tom Lane <tgl@sss.pgh.pa.us>
3291 Branch: REL9_3_STABLE [0190f0a76] 2014-12-24 16:35:40 -0500
3292 Branch: REL9_2_STABLE [5c8665892] 2014-12-24 16:35:44 -0500
3293 Branch: REL9_1_STABLE [310597e31] 2014-12-24 16:35:48 -0500
3294 Branch: REL9_0_STABLE [8b70023af] 2014-12-24 16:35:54 -0500
3295 -->
3296
3297     <listitem>
3298      <para>
3299       Update time zone abbreviations lists (Tom Lane)
3300      </para>
3301
3302      <para>
3303       Add CST (China Standard Time) to our lists.
3304       Remove references to ADT as <quote>Arabia Daylight Time</>, an
3305       abbreviation that's been out of use since 2007; therefore, claiming
3306       there is a conflict with <quote>Atlantic Daylight Time</> doesn't seem
3307       especially helpful.
3308       Fix entirely incorrect GMT offsets for CKT (Cook Islands), FJT, and FJST
3309       (Fiji); we didn't even have them on the proper side of the date line.
3310      </para>
3311     </listitem>
3312
3313 <!--
3314 Author: Tom Lane <tgl@sss.pgh.pa.us>
3315 Branch: REL9_3_STABLE [8470cd473] 2015-01-30 22:46:05 -0500
3316 Branch: REL9_2_STABLE [c9048d353] 2015-01-30 22:46:12 -0500
3317 Branch: REL9_1_STABLE [cb24cd3f4] 2015-01-30 22:46:17 -0500
3318 Branch: REL9_0_STABLE [3553d9c6e] 2015-01-30 22:46:22 -0500
3319 Author: Tom Lane <tgl@sss.pgh.pa.us>
3320 Branch: REL9_3_STABLE [ab45d907b] 2014-11-17 12:08:25 -0500
3321 Branch: REL9_2_STABLE [b1e996035] 2014-11-17 12:08:32 -0500
3322 Branch: REL9_1_STABLE [b96c47a3d] 2014-11-17 12:08:39 -0500
3323 Branch: REL9_0_STABLE [92979576e] 2014-11-17 12:08:46 -0500
3324 Author: Tom Lane <tgl@sss.pgh.pa.us>
3325 Branch: REL9_3_STABLE [c66199151] 2014-10-04 14:18:33 -0400
3326 Branch: REL9_2_STABLE [8f75d7a25] 2014-10-04 14:18:36 -0400
3327 Branch: REL9_1_STABLE [745723c9e] 2014-10-04 14:18:39 -0400
3328 Branch: REL9_0_STABLE [b6391f587] 2014-10-04 14:18:43 -0400
3329 -->
3330
3331     <listitem>
3332      <para>
3333       Update time zone data files to <application>tzdata</> release 2015a.
3334      </para>
3335
3336      <para>
3337       The IANA timezone database has adopted abbreviations of the form
3338       <literal>A<replaceable>x</>ST</literal>/<literal>A<replaceable>x</>DT</literal>
3339       for all Australian time zones, reflecting what they believe to be
3340       current majority practice Down Under.  These names do not conflict
3341       with usage elsewhere (other than ACST for Acre Summer Time, which has
3342       been in disuse since 1994).  Accordingly, adopt these names into
3343       our <quote>Default</> timezone abbreviation set.
3344       The <quote>Australia</> abbreviation set now contains only CST, EAST,
3345       EST, SAST, SAT, and WST, all of which are thought to be mostly
3346       historical usage.  Note that SAST has also been changed to be South
3347       Africa Standard Time in the <quote>Default</> abbreviation set.
3348      </para>
3349
3350      <para>
3351       Also, add zone abbreviations SRET (Asia/Srednekolymsk) and XJT
3352       (Asia/Urumqi), and use WSST/WSDT for western Samoa.  Also, there were
3353       DST law changes in Chile, Mexico, the Turks &amp; Caicos Islands
3354       (America/Grand_Turk), and Fiji.  There is a new zone
3355       Pacific/Bougainville for portions of Papua New Guinea.  Also, numerous
3356       corrections for historical (pre-1970) time zone data.
3357      </para>
3358     </listitem>
3359
3360    </itemizedlist>
3361
3362   </sect2>
3363  </sect1>
3364
3365  <sect1 id="release-9-3-5">
3366   <title>Release 9.3.5</title>
3367
3368   <note>
3369   <title>Release Date</title>
3370   <simpara>2014-07-24</simpara>
3371   </note>
3372
3373   <para>
3374    This release contains a variety of fixes from 9.3.4.
3375    For information about new features in the 9.3 major release, see
3376    <xref linkend="release-9-3">.
3377   </para>
3378
3379   <sect2>
3380    <title>Migration to Version 9.3.5</title>
3381
3382    <para>
3383     A dump/restore is not required for those running 9.3.X.
3384    </para>
3385
3386    <para>
3387     However, this release corrects a logic error
3388     in <application>pg_upgrade</>, as well as an index corruption problem in
3389     some GiST indexes.  See the first two changelog entries below to find out
3390     whether your installation has been affected and what steps you should take
3391     if so.
3392    </para>
3393
3394    <para>
3395     Also, if you are upgrading from a version earlier than 9.3.4,
3396     see <xref linkend="release-9-3-4">.
3397    </para>
3398
3399   </sect2>
3400
3401   <sect2>
3402    <title>Changes</title>
3403
3404    <itemizedlist>
3405
3406 <!--
3407 Author: Bruce Momjian <bruce@momjian.us>
3408 Branch: master [0f7482733] 2014-06-24 16:11:06 -0400
3409 Branch: REL9_4_STABLE [dd5369047] 2014-06-24 16:11:06 -0400
3410 Branch: REL9_3_STABLE [cc5841809] 2014-06-24 16:11:06 -0400
3411 -->
3412
3413     <listitem>
3414      <para>
3415       In <application>pg_upgrade</>, remove <filename>pg_multixact</> files
3416       left behind by <application>initdb</> (Bruce Momjian)
3417      </para>
3418
3419      <para>
3420       If you used a pre-9.3.5 version of <application>pg_upgrade</> to
3421       upgrade a database cluster to 9.3, it might have left behind a file
3422       <filename>$PGDATA/pg_multixact/offsets/0000</> that should not be
3423       there and will eventually cause problems in <command>VACUUM</>.
3424       <emphasis>However, in common cases this file is actually valid and
3425       must not be removed.</emphasis>
3426       To determine whether your installation has this problem, run this
3427       query as superuser, in any database of the cluster:
3428 <programlisting>
3429 WITH list(file) AS (SELECT * FROM pg_ls_dir('pg_multixact/offsets'))
3430 SELECT EXISTS (SELECT * FROM list WHERE file = '0000') AND
3431        NOT EXISTS (SELECT * FROM list WHERE file = '0001') AND
3432        NOT EXISTS (SELECT * FROM list WHERE file = 'FFFF') AND
3433        EXISTS (SELECT * FROM list WHERE file != '0000')
3434        AS file_0000_removal_required;
3435 </programlisting>
3436       If this query returns <literal>t</>, manually remove the file
3437       <filename>$PGDATA/pg_multixact/offsets/0000</>.
3438       Do nothing if the query returns <literal>f</>.
3439      </para>
3440     </listitem>
3441
3442 <!--
3443 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
3444 Branch: master Release: REL9_4_BR [540ac7cea] 2014-05-13 15:15:13 +0300
3445 Branch: REL9_3_STABLE [d5b912c90] 2014-05-13 15:27:14 +0300
3446 Branch: REL9_2_STABLE [0d8d0d027] 2014-05-13 15:27:21 +0300
3447 Branch: REL9_1_STABLE [1913d0f28] 2014-05-13 15:27:28 +0300
3448 Branch: REL9_0_STABLE [c87c43f08] 2014-05-13 15:27:36 +0300
3449 Branch: REL8_4_STABLE [e31d77c96] 2014-05-13 15:27:43 +0300
3450 -->
3451
3452     <listitem>
3453      <para>
3454       Correctly initialize padding bytes in <filename>contrib/btree_gist</>
3455       indexes on <type>bit</> columns (Heikki Linnakangas)
3456      </para>
3457
3458      <para>
3459       This error could result in incorrect query results due to values that
3460       should compare equal not being seen as equal.
3461       Users with GiST indexes on <type>bit</> or <type>bit varying</>
3462       columns should <command>REINDEX</> those indexes after installing this
3463       update.
3464      </para>
3465     </listitem>
3466
3467 <!--
3468 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
3469 Branch: master Release: REL9_4_BR [4f7bb4b2a] 2014-05-08 14:50:22 +0300
3470 Branch: REL9_3_STABLE [34572920c] 2014-05-08 14:43:04 +0300
3471 Branch: REL9_2_STABLE [31633f992] 2014-05-08 14:43:39 +0300
3472 Branch: REL9_1_STABLE [686a7194e] 2014-05-08 14:43:58 +0300
3473 Branch: REL9_0_STABLE [8b4efe1f3] 2014-05-08 14:44:06 +0300
3474 Branch: REL8_4_STABLE [be7830596] 2014-05-08 14:46:43 +0300
3475 -->
3476
3477     <listitem>
3478      <para>
3479       Protect against torn pages when deleting GIN list pages (Heikki
3480       Linnakangas)
3481      </para>
3482
3483      <para>
3484       This fix prevents possible index corruption if a system crash occurs
3485       while the page update is being written to disk.
3486      </para>
3487     </listitem>
3488
3489 <!--
3490 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
3491 Branch: master Release: REL9_4_BR [7ca32e255] 2014-04-08 14:51:40 +0300
3492 Branch: REL9_3_STABLE [601c01e08] 2014-04-08 14:51:49 +0300
3493 Branch: REL9_2_STABLE [02b9fd73e] 2014-04-08 14:51:56 +0300
3494 Branch: REL9_1_STABLE [ac0078c1d] 2014-04-08 14:52:01 +0300
3495 Branch: REL9_0_STABLE [d034e9b3b] 2014-04-08 14:52:07 +0300
3496 -->
3497
3498     <listitem>
3499      <para>
3500       Don't clear the right-link of a GiST index page while replaying
3501       updates from WAL (Heikki Linnakangas)
3502      </para>
3503
3504      <para>
3505       This error could lead to transiently wrong answers from GiST index
3506       scans performed in Hot Standby.
3507      </para>
3508     </listitem>
3509
3510 <!--
3511 Author: Tom Lane <tgl@sss.pgh.pa.us>
3512 Branch: master Release: REL9_4_BR [c170655cc] 2014-06-09 16:31:11 -0400
3513 Branch: REL9_3_STABLE [717c116f1] 2014-06-09 16:31:16 -0400
3514 Branch: REL9_2_STABLE [93328b2df] 2014-06-09 16:30:46 -0400
3515 -->
3516
3517     <listitem>
3518      <para>
3519       Fix corner-case infinite loop during insertion into an SP-GiST text
3520       index (Tom Lane)
3521      </para>
3522     </listitem>
3523
3524 <!--
3525 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
3526 Branch: master [1264ef31a] 2014-07-16 09:19:06 +0300
3527 Branch: REL9_4_STABLE [9b3ef66af] 2014-07-16 09:20:20 +0300
3528 Branch: REL9_3_STABLE [a4867d041] 2014-07-16 09:20:31 +0300
3529 -->
3530
3531     <listitem>
3532      <para>
3533       Fix incorrect answers from SP-GiST index searches
3534       with <literal>-|-</literal> (range adjacency) operator
3535       (Heikki Linnakangas)
3536      </para>
3537     </listitem>
3538
3539 <!--
3540 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
3541 Branch: master Release: REL9_4_BR [b0b263baa] 2014-06-09 15:17:23 -0400
3542 Branch: REL9_3_STABLE [167a2535f] 2014-06-09 15:17:23 -0400
3543 -->
3544
3545     <listitem>
3546      <para>
3547       Fix wraparound handling for <filename>pg_multixact/members</>
3548       (&Aacute;lvaro Herrera)
3549      </para>
3550     </listitem>
3551
3552 <!--
3553 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
3554 Branch: master [f741300c9] 2014-06-27 14:43:53 -0400
3555 Branch: REL9_4_STABLE [56f86bb76] 2014-06-27 14:43:52 -0400
3556 Branch: REL9_3_STABLE [9a28c3752] 2014-06-27 14:43:52 -0400
3557 -->
3558
3559     <listitem>
3560      <para>
3561       Truncate <structname>pg_multixact</> during checkpoints, not
3562       during <command>VACUUM</> (&Aacute;lvaro Herrera)
3563      </para>
3564
3565      <para>
3566       This change ensures that <structname>pg_multixact</> segments can't be
3567       removed if they'd still be needed during WAL replay after a crash.
3568      </para>
3569     </listitem>
3570
3571 <!--
3572 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
3573 Branch: master Release: REL9_4_BR [2a8e1ac59] 2014-04-17 17:47:50 +0300
3574 Branch: REL9_3_STABLE [95aa823eb] 2014-04-17 17:47:58 +0300
3575 -->
3576
3577     <listitem>
3578      <para>
3579       Fix possible inconsistency of all-visible flags after WAL recovery
3580       (Heikki Linnakangas)
3581      </para>
3582     </listitem>
3583
3584 <!--
3585 Author: Tom Lane <tgl@sss.pgh.pa.us>
3586 Branch: master Release: REL9_4_BR [0f928a85e] 2014-05-05 14:43:39 -0400
3587 Branch: REL9_3_STABLE [4f4ef042f] 2014-05-05 14:43:42 -0400
3588 Branch: REL9_2_STABLE [c8fbeeb45] 2014-05-05 14:43:46 -0400
3589 Branch: REL9_1_STABLE [2f4ee3a2f] 2014-05-05 14:43:49 -0400
3590 Branch: REL9_0_STABLE [7d5b68621] 2014-05-05 14:43:52 -0400
3591 Branch: REL8_4_STABLE [3ada1fab8] 2014-05-05 14:43:55 -0400
3592 -->
3593
3594     <listitem>
3595      <para>
3596       Fix possibly-incorrect cache invalidation during nested calls
3597       to <function>ReceiveSharedInvalidMessages</> (Andres Freund)
3598      </para>
3599     </listitem>
3600
3601 <!--
3602 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
3603 Branch: master Release: REL9_4_BR [1a917ae86] 2014-04-24 15:41:55 -0300
3604 Branch: REL9_3_STABLE [c0bd128c8] 2014-04-24 15:41:55 -0300
3605 -->
3606
3607     <listitem>
3608      <para>
3609       Fix race condition when updating a tuple concurrently locked by
3610       another process (Andres Freund, &Aacute;lvaro Herrera)
3611      </para>
3612     </listitem>
3613
3614 <!--
3615 Author: Tom Lane <tgl@sss.pgh.pa.us>
3616 Branch: REL9_3_STABLE [a2db7b7d0] 2014-06-26 10:41:59 -0700
3617 Branch: REL9_2_STABLE [0cf16686b] 2014-06-26 10:42:03 -0700
3618 Branch: REL9_1_STABLE [555d0b200] 2014-06-26 10:42:08 -0700
3619 -->
3620
3621     <listitem>
3622      <para>
3623       Fix <quote>could not find pathkey item to sort</> planner failures
3624       with <literal>UNION ALL</> over subqueries reading from tables with
3625       inheritance children (Tom Lane)
3626      </para>
3627     </listitem>
3628
3629 <!--
3630 Author: Tom Lane <tgl@sss.pgh.pa.us>
3631 Branch: master [9e2f2d7a0] 2014-07-08 14:03:56 -0400
3632 Branch: REL9_4_STABLE [ac45aa1dd] 2014-07-08 14:03:45 -0400
3633 Branch: REL9_3_STABLE [6d36aee5b] 2014-07-08 14:03:19 -0400
3634 Branch: REL9_2_STABLE [189bd09cb] 2014-07-08 14:03:23 -0400
3635 Branch: REL9_1_STABLE [fa21a760b] 2014-07-08 14:03:26 -0400
3636 Branch: REL9_0_STABLE [2865d5952] 2014-07-08 14:03:30 -0400
3637 Branch: REL8_4_STABLE [2e7469dc8] 2014-07-08 14:03:32 -0400
3638 -->
3639
3640     <listitem>
3641      <para>
3642       Don't assume a subquery's output is unique if there's a set-returning
3643       function in its targetlist (David Rowley)
3644      </para>
3645
3646      <para>
3647       This oversight could lead to misoptimization of constructs
3648       like <literal>WHERE x IN (SELECT y, generate_series(1,10) FROM t GROUP
3649       BY y)</literal>.
3650      </para>
3651     </listitem>
3652
3653 <!--
3654 Author: Tom Lane <tgl@sss.pgh.pa.us>
3655 Branch: master Release: REL9_4_BR [95811032d] 2014-04-29 13:12:46 -0400
3656 Branch: REL9_3_STABLE [150a44e83] 2014-04-29 13:12:29 -0400
3657 Branch: REL9_2_STABLE [0901dbab3] 2014-04-29 13:12:33 -0400
3658 -->
3659
3660     <listitem>
3661      <para>
3662       Improve planner to drop constant-NULL inputs
3663       of <literal>AND</>/<literal>OR</> when possible (Tom Lane)
3664      </para>
3665
3666      <para>
3667       This change fixes some cases where the more aggressive parameter
3668       substitution done by 9.2 and later can lead to a worse plan than
3669       older versions produced.
3670      </para>
3671     </listitem>
3672
3673 <!--
3674 Author: Tom Lane <tgl@sss.pgh.pa.us>
3675 Branch: master Release: REL9_4_BR [c7b353959] 2014-04-03 22:02:24 -0400
3676 Branch: REL9_3_STABLE [d359f71ac] 2014-04-03 22:02:27 -0400
3677 -->
3678
3679     <listitem>
3680      <para>
3681       Ensure that the planner sees equivalent <literal>VARIADIC</> and
3682       non-<literal>VARIADIC</> function calls as equivalent (Tom Lane)
3683      </para>
3684
3685      <para>
3686       This bug could for example result in failure to use expression indexes
3687       involving variadic functions.  It might be necessary to re-create such
3688       indexes, and/or re-create views including variadic function calls that
3689       should match the indexes, for the fix to be effective for existing 9.3
3690       installations.
3691      </para>
3692     </listitem>
3693
3694 <!--
3695 Author: Tom Lane <tgl@sss.pgh.pa.us>
3696 Branch: master [57d8c1270] 2014-06-24 21:22:40 -0700
3697 Branch: REL9_4_STABLE [a331512de] 2014-06-24 21:22:43 -0700
3698 Branch: REL9_3_STABLE [a1fc36495] 2014-06-24 21:22:47 -0700
3699 -->
3700
3701     <listitem>
3702      <para>
3703       Fix handling of nested <type>JSON</> objects
3704       in <function>json_populate_recordset()</> and friends
3705       (Michael Paquier, Tom Lane)
3706      </para>
3707
3708      <para>
3709       A nested <type>JSON</> object could result in previous fields of the
3710       parent object not being shown in the output.
3711      </para>
3712     </listitem>
3713
3714 <!--
3715 Author: Tom Lane <tgl@sss.pgh.pa.us>
3716 Branch: master Release: REL9_4_BR [0ca6bda8e] 2014-05-09 12:55:31 -0400
3717 Branch: REL9_3_STABLE [13c679995] 2014-05-09 12:55:03 -0400
3718 Branch: REL9_2_STABLE [25c933c5c] 2014-05-09 12:55:06 -0400
3719 -->
3720
3721     <listitem>
3722      <para>
3723       Fix identification of input type category in <function>to_json()</>
3724       and friends (Tom Lane)
3725      </para>
3726
3727      <para>
3728       This is known to have led to inadequate quoting of <type>money</>
3729       fields in the <type>JSON</> result, and there may have been wrong
3730       results for other data types as well.
3731      </para>
3732     </listitem>
3733
3734 <!--
3735 Author: Tom Lane <tgl@sss.pgh.pa.us>
3736 Branch: master Release: REL9_4_BR [3f8c8e3c6] 2014-05-01 15:19:06 -0400
3737 Branch: REL9_3_STABLE [b72e90bc3] 2014-05-01 15:19:10 -0400
3738 Branch: REL9_2_STABLE [8c43980a1] 2014-05-01 15:19:14 -0400
3739 Branch: REL9_1_STABLE [db1fdc945] 2014-05-01 15:19:17 -0400
3740 Branch: REL9_0_STABLE [7a4f114f3] 2014-05-01 15:19:20 -0400
3741 Branch: REL8_4_STABLE [70debcf09] 2014-05-01 15:19:23 -0400
3742 -->
3743
3744     <listitem>
3745      <para>
3746       Fix failure to detoast fields in composite elements of structured
3747       types (Tom Lane)
3748      </para>
3749
3750      <para>
3751       This corrects cases where TOAST pointers could be copied into other
3752       tables without being dereferenced.  If the original data is later
3753       deleted, it would lead to errors like <quote>missing chunk number 0
3754       for toast value ...</> when the now-dangling pointer is used.
3755      </para>
3756     </listitem>
3757
3758 <!--
3759 Author: Tom Lane <tgl@sss.pgh.pa.us>
3760 Branch: master [d68581483] 2014-07-11 19:12:35 -0400
3761 Branch: REL9_4_STABLE [f280eff94] 2014-07-11 19:12:38 -0400
3762 Branch: REL9_3_STABLE [b77e6b959] 2014-07-11 19:12:42 -0400
3763 Branch: REL9_2_STABLE [261f954e7] 2014-07-11 19:12:45 -0400
3764 Branch: REL9_1_STABLE [c45841f9e] 2014-07-11 19:12:48 -0400
3765 Branch: REL9_0_STABLE [cd8ba91a0] 2014-07-11 19:12:51 -0400
3766 Branch: REL8_4_STABLE [a81fbcfb3] 2014-07-11 19:12:56 -0400
3767 -->
3768
3769     <listitem>
3770      <para>
3771       Fix <quote>record type has not been registered</> failures with
3772       whole-row references to the output of Append plan nodes (Tom Lane)
3773      </para>
3774     </listitem>
3775
3776 <!--
3777 Author: Tom Lane <tgl@sss.pgh.pa.us>
3778 Branch: master Release: REL9_4_BR [04e5025be] 2014-05-07 14:25:11 -0400
3779 Branch: REL9_3_STABLE [fc58c39d4] 2014-05-07 14:25:13 -0400
3780 Branch: REL9_2_STABLE [022b5f2b2] 2014-05-07 14:25:17 -0400
3781 Branch: REL9_1_STABLE [229101db4] 2014-05-07 14:25:22 -0400
3782 Branch: REL9_0_STABLE [7f66ade71] 2014-05-07 14:25:25 -0400
3783 Branch: REL8_4_STABLE [2a527baa3] 2014-05-07 14:25:28 -0400
3784 -->
3785
3786     <listitem>
3787      <para>
3788       Fix possible crash when invoking a user-defined function while
3789       rewinding a cursor (Tom Lane)
3790      </para>
3791     </listitem>
3792
3793 <!--
3794 Author: Tom Lane <tgl@sss.pgh.pa.us>
3795 Branch: master [45b0f3572] 2014-06-19 22:14:26 -0400
3796 Branch: REL9_4_STABLE [1044e79a0] 2014-06-19 22:13:44 -0400
3797 Branch: REL9_3_STABLE [c1f8fb9bf] 2014-06-19 22:13:47 -0400
3798 Branch: REL9_2_STABLE [b568d3836] 2014-06-19 22:13:51 -0400
3799 Branch: REL9_1_STABLE [06d5eacbc] 2014-06-19 22:13:54 -0400
3800 Branch: REL9_0_STABLE [83131e634] 2014-06-19 22:13:58 -0400
3801 Branch: REL8_4_STABLE [d297c91d4] 2014-06-19 22:14:00 -0400
3802 -->
3803
3804     <listitem>
3805      <para>
3806       Fix query-lifespan memory leak while evaluating the arguments for a
3807       function in <literal>FROM</> (Tom Lane)
3808      </para>
3809     </listitem>
3810
3811 <!--
3812 Author: Tom Lane <tgl@sss.pgh.pa.us>
3813 Branch: master [1567e659a] 2014-07-18 13:00:27 -0400
3814 Branch: REL9_4_STABLE [4a66f0f2d] 2014-07-18 13:00:39 -0400
3815 Branch: REL9_3_STABLE [5ef588b22] 2014-07-18 13:00:43 -0400
3816 Branch: REL9_2_STABLE [a223b9e36] 2014-07-18 13:00:48 -0400
3817 Branch: REL9_1_STABLE [8a817785a] 2014-07-18 13:00:52 -0400
3818 Branch: REL9_0_STABLE [b8c24f7ab] 2014-07-18 13:00:57 -0400
3819 Branch: REL8_4_STABLE [e0a233744] 2014-07-18 13:01:04 -0400
3820 -->
3821
3822     <listitem>
3823      <para>
3824       Fix session-lifespan memory leaks in regular-expression processing
3825       (Tom Lane, Arthur O'Dwyer, Greg Stark)
3826      </para>
3827     </listitem>
3828
3829 <!--
3830 Author: Tom Lane <tgl@sss.pgh.pa.us>
3831 Branch: master [fd90b5d57] 2014-06-10 22:48:16 -0400
3832 Branch: REL9_4_STABLE [7f9fbb842] 2014-06-10 22:48:31 -0400
3833 Branch: REL9_3_STABLE [87db9534a] 2014-06-10 22:48:39 -0400
3834 Branch: REL9_2_STABLE [802323535] 2014-06-10 22:48:45 -0400
3835 Branch: REL9_1_STABLE [62f134954] 2014-06-10 22:48:52 -0400
3836 Branch: REL9_0_STABLE [4d5ea4290] 2014-06-10 22:48:59 -0400
3837 Branch: REL8_4_STABLE [f3f40434b] 2014-06-10 22:49:08 -0400
3838 -->
3839
3840     <listitem>
3841      <para>
3842       Fix data encoding error in <filename>hungarian.stop</> (Tom Lane)
3843      </para>
3844     </listitem>
3845
3846 <!--
3847 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
3848 Branch: master [a87a7dc8b] 2014-06-24 13:27:18 +0300
3849 Branch: REL9_4_STABLE [1818ae0a7] 2014-06-24 13:31:06 +0300
3850 Branch: REL9_3_STABLE [2a7512bc7] 2014-06-24 13:31:00 +0300
3851 Branch: REL9_2_STABLE [1c9f9e888] 2014-06-24 13:30:54 +0300
3852 Branch: REL9_1_STABLE [dd1a5b09b] 2014-06-24 13:30:41 +0300
3853 -->
3854
3855     <listitem>
3856      <para>
3857       Prevent foreign tables from being created with OIDS
3858       when <xref linkend="guc-default-with-oids"> is true
3859       (Etsuro Fujita)
3860      </para>
3861     </listitem>
3862
3863 <!--
3864 Author: Andres Freund <andres@anarazel.de>
3865 Branch: master Release: REL9_4_BR [621a99a66] 2014-06-04 21:36:19 +0200
3866 Branch: REL9_3_STABLE [edde59db1] 2014-06-04 23:26:08 +0200
3867 Branch: REL9_2_STABLE [315442c01] 2014-06-04 23:25:52 +0200
3868 Branch: REL9_1_STABLE [6bf6e528a] 2014-06-04 23:26:30 +0200
3869 Branch: REL9_0_STABLE [037c6fb9f] 2014-06-04 23:27:10 +0200
3870 Branch: REL8_4_STABLE [80d45ae4e] 2014-06-04 23:27:38 +0200
3871 -->
3872
3873     <listitem>
3874      <para>
3875       Fix liveness checks for rows that were inserted in the current
3876       transaction and then deleted by a now-rolled-back subtransaction
3877       (Andres Freund)
3878      </para>
3879
3880      <para>
3881       This could cause problems (at least spurious warnings, and at worst an
3882       infinite loop) if <command>CREATE INDEX</> or <command>CLUSTER</> were
3883       done later in the same transaction.
3884      </para>
3885     </listitem>
3886
3887 <!--
3888 Author: Tom Lane <tgl@sss.pgh.pa.us>
3889 Branch: master Release: REL9_4_BR [d19bd29f0] 2014-04-24 13:29:48 -0400
3890 Branch: REL9_3_STABLE [12e41a5d7] 2014-04-24 13:29:56 -0400
3891 Branch: REL9_2_STABLE [ea9ac7741] 2014-04-24 13:30:00 -0400
3892 Branch: REL9_1_STABLE [70e7be264] 2014-04-24 13:30:04 -0400
3893 Branch: REL9_0_STABLE [b7a3e1173] 2014-04-24 13:30:08 -0400
3894 Branch: REL8_4_STABLE [82fbd88a7] 2014-04-24 13:30:14 -0400
3895 -->
3896
3897     <listitem>
3898      <para>
3899       Clear <structname>pg_stat_activity</>.<structfield>xact_start</>
3900       during <command>PREPARE TRANSACTION</> (Andres Freund)
3901      </para>
3902
3903      <para>
3904       After the <command>PREPARE</>, the originating session is no longer in
3905       a transaction, so it should not continue to display a transaction
3906       start time.
3907      </para>
3908     </listitem>
3909
3910 <!--
3911 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
3912 Branch: master [6bdf4b9c7] 2014-07-15 13:24:07 -0400
3913 Branch: REL9_4_STABLE [e45229bb6] 2014-07-15 13:24:07 -0400
3914 Branch: REL9_3_STABLE [12c5bbdcb] 2014-07-15 13:24:07 -0400
3915 Branch: REL9_2_STABLE [b42f09fc8] 2014-07-15 13:24:07 -0400
3916 Branch: REL9_1_STABLE [a41dc7321] 2014-07-15 13:24:07 -0400
3917 Branch: REL9_0_STABLE [bf08864b8] 2014-07-15 13:24:07 -0400
3918 Branch: REL8_4_STABLE [4b767789d] 2014-07-15 13:24:07 -0400
3919 -->
3920
3921     <listitem>
3922      <para>
3923       Fix <command>REASSIGN OWNED</> to not fail for text search objects
3924       (&Aacute;lvaro Herrera)
3925      </para>
3926     </listitem>
3927
3928 <!--
3929 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
3930 Branch: master [b7e51d9c0] 2014-06-27 14:43:46 -0400
3931 Branch: REL9_4_STABLE [9eecc8a7c] 2014-06-27 14:43:46 -0400
3932 Branch: REL9_3_STABLE [e86cfc4bb] 2014-06-27 14:43:45 -0400
3933 -->
3934
3935     <listitem>
3936      <para>
3937       Prevent <structname>pg_class</>.<structfield>relminmxid</> values from
3938       going backwards during <command>VACUUM FULL</> (&Aacute;lvaro Herrera)
3939      </para>
3940     </listitem>
3941
3942 <!--
3943 Author: Tom Lane <tgl@sss.pgh.pa.us>
3944 Branch: master Release: REL9_4_BR [41de93c53] 2014-04-30 13:26:26 -0400
3945 Branch: REL9_3_STABLE [0652d77fb] 2014-04-30 13:26:29 -0400
3946 -->
3947
3948     <listitem>
3949      <para>
3950       Reduce indentation in rule/view dumps to improve readability and avoid
3951       excessive whitespace (Greg Stark, Tom Lane)
3952      </para>
3953
3954      <para>
3955       This change reduces the amount of indentation applied to nested
3956       constructs, including some cases that the user probably doesn't think
3957       of as nested, such as UNION lists.  Previously, deeply nested
3958       constructs were printed with an amount of whitespace growing as
3959       O(N^2), which created a performance problem and even risk of
3960       out-of-memory failures.  Now the indentation is reduced modulo 40,
3961       which is initially odd to look at but seems to preserve readability
3962       better than simply limiting the indentation would do.
3963       Redundant parenthesization of UNION lists has been reduced as well.
3964      </para>
3965     </listitem>
3966
3967 <!--
3968 Author: Tom Lane <tgl@sss.pgh.pa.us>
3969 Branch: master Release: REL9_4_BR [91e16b980] 2014-05-01 20:22:37 -0400
3970 Branch: REL9_3_STABLE [e31193d49] 2014-05-01 20:22:39 -0400
3971 -->
3972
3973     <listitem>
3974      <para>
3975       Fix dumping of rules/views when subsequent addition of a column has
3976       resulted in multiple input columns matching a <literal>USING</>
3977       specification (Tom Lane)
3978      </para>
3979     </listitem>
3980
3981 <!--
3982 Author: Tom Lane <tgl@sss.pgh.pa.us>
3983 Branch: master [9b35ddce9] 2014-07-19 14:28:52 -0400
3984 Branch: REL9_4_STABLE [f0a497e4c] 2014-07-19 14:29:00 -0400
3985 Branch: REL9_3_STABLE [b978ab5f6] 2014-07-19 14:29:05 -0400
3986 -->
3987
3988     <listitem>
3989      <para>
3990       Repair view printing for some cases involving functions
3991       in <literal>FROM</> that return a composite type containing dropped
3992       columns (Tom Lane)
3993      </para>
3994     </listitem>
3995
3996 <!--
3997 Author: Tom Lane <tgl@sss.pgh.pa.us>
3998 Branch: master Release: REL9_4_BR [5d8117e1f] 2014-04-05 18:16:08 -0400
3999 Branch: REL9_3_STABLE [21aa47d01] 2014-04-05 18:16:11 -0400
4000 Branch: REL9_2_STABLE [53463e247] 2014-04-05 18:16:14 -0400
4001 Branch: REL9_1_STABLE [093d3da1d] 2014-04-05 18:16:17 -0400
4002 Branch: REL9_0_STABLE [5c26ab659] 2014-04-05 18:16:20 -0400
4003 Branch: REL8_4_STABLE [969735cf1] 2014-04-05 18:16:24 -0400
4004 -->
4005
4006     <listitem>
4007      <para>
4008       Block signals during postmaster startup (Tom Lane)
4009      </para>
4010
4011      <para>
4012       This ensures that the postmaster will properly clean up after itself
4013       if, for example, it receives <systemitem>SIGINT</> while still
4014       starting up.
4015      </para>
4016     </listitem>
4017
4018 <!--
4019 Author: Tom Lane <tgl@sss.pgh.pa.us>
4020 Branch: master Release: REL9_4_BR [fc752505a] 2014-04-02 17:11:24 -0400
4021 Branch: REL9_3_STABLE [65183fb78] 2014-04-02 17:11:27 -0400
4022 Branch: REL9_2_STABLE [029decfec] 2014-04-02 17:11:31 -0400
4023 Branch: REL9_1_STABLE [b7a424371] 2014-04-02 17:11:34 -0400
4024 -->
4025
4026     <listitem>
4027      <para>
4028       Fix client host name lookup when processing <filename>pg_hba.conf</>
4029       entries that specify host names instead of IP addresses (Tom Lane)
4030      </para>
4031
4032      <para>
4033       Ensure that reverse-DNS lookup failures are reported, instead of just
4034       silently not matching such entries.  Also ensure that we make only
4035       one reverse-DNS lookup attempt per connection, not one per host name
4036       entry, which is what previously happened if the lookup attempts failed.
4037      </para>
4038     </listitem>
4039
4040 <!--
4041 Author: Tom Lane <tgl@sss.pgh.pa.us>
4042 Branch: master Release: REL9_4_BR [b203c57bb] 2014-04-04 22:03:35 -0400
4043 Branch: REL9_3_STABLE [7d1a0f585] 2014-04-04 22:03:38 -0400
4044 Branch: REL9_2_STABLE [6d25eb314] 2014-04-04 22:03:42 -0400
4045 -->
4046
4047     <listitem>
4048      <para>
4049       Allow the root user to use <literal>postgres -C variable</> and
4050       <literal>postgres --describe-config</> (MauMau)
4051      </para>
4052
4053      <para>
4054       The prohibition on starting the server as root does not need to extend
4055       to these operations, and relaxing it prevents failure
4056       of <application>pg_ctl</> in some scenarios.
4057      </para>
4058     </listitem>
4059
4060 <!--
4061 Author: Noah Misch <noah@leadboat.com>
4062 Branch: master [be76a6d39] 2014-06-14 09:41:13 -0400
4063 Branch: REL9_4_STABLE [6583a75b2] 2014-06-14 09:41:16 -0400
4064 Branch: REL9_3_STABLE [1442b426e] 2014-06-14 09:41:17 -0400
4065 Branch: REL9_2_STABLE [453a5d91d] 2014-06-14 09:41:17 -0400
4066 Branch: REL9_1_STABLE [481831b43] 2014-06-14 09:41:18 -0400
4067 Branch: REL9_0_STABLE [5f09c583c] 2014-06-14 09:41:18 -0400
4068 Branch: REL8_4_STABLE [95cefd30e] 2014-06-14 09:41:18 -0400
4069 -->
4070
4071     <listitem>
4072      <para>
4073       Secure Unix-domain sockets of temporary postmasters started during
4074       <literal>make check</> (Noah Misch)
4075      </para>
4076
4077      <para>
4078       Any local user able to access the socket file could connect as the
4079       server's bootstrap superuser, then proceed to execute arbitrary code as
4080       the operating-system user running the test, as we previously noted in
4081       CVE-2014-0067.  This change defends against that risk by placing the
4082       server's socket in a temporary, mode 0700 subdirectory
4083       of <filename>/tmp</>.  The hazard remains however on platforms where
4084       Unix sockets are not supported, notably Windows, because then the
4085       temporary postmaster must accept local TCP connections.
4086      </para>
4087
4088      <para>
4089       A useful side effect of this change is to simplify
4090       <literal>make check</> testing in builds that
4091       override <literal>DEFAULT_PGSOCKET_DIR</>.  Popular non-default values
4092       like <filename>/var/run/postgresql</> are often not writable by the
4093       build user, requiring workarounds that will no longer be necessary.
4094      </para>
4095     </listitem>
4096
4097 <!--
4098 Author: Tom Lane <tgl@sss.pgh.pa.us>
4099 Branch: master Release: REL9_4_BR [abe075dff] 2014-04-04 23:09:35 -0400
4100 Branch: REL9_3_STABLE [84520f91c] 2014-04-04 23:09:38 -0400
4101 Branch: REL9_2_STABLE [1a496a12b] 2014-04-04 23:09:41 -0400
4102 Branch: REL9_1_STABLE [af7738fe6] 2014-04-04 23:09:45 -0400
4103 Branch: REL9_0_STABLE [634056567] 2014-04-04 23:09:49 -0400
4104 -->
4105
4106     <listitem>
4107      <para>
4108       Fix tablespace creation WAL replay to work on Windows (MauMau)
4109      </para>
4110     </listitem>
4111
4112 <!--
4113 Author: Bruce Momjian <bruce@momjian.us>
4114 Branch: master Release: REL9_4_BR [418093465] 2014-04-16 10:45:48 -0400
4115 Branch: REL9_3_STABLE [f716c3250] 2014-04-16 10:45:48 -0400
4116 Branch: REL9_2_STABLE [966f015b6] 2014-04-16 10:45:48 -0400
4117 Branch: REL9_1_STABLE [bed499ed1] 2014-04-16 10:45:48 -0400
4118 Branch: REL9_0_STABLE [a86b2daff] 2014-04-16 10:45:48 -0400
4119 -->
4120
4121     <listitem>
4122      <para>
4123       Fix detection of socket creation failures on Windows (Bruce Momjian)
4124      </para>
4125     </listitem>
4126
4127 <!--
4128 Author: Tom Lane <tgl@sss.pgh.pa.us>
4129 Branch: master Release: REL9_4_BR [6862ca697] 2014-04-05 12:41:25 -0400
4130 Branch: REL9_3_STABLE [18db2150c] 2014-04-05 12:41:28 -0400
4131 Branch: REL9_2_STABLE [bdc3e95c2] 2014-04-05 12:41:31 -0400
4132 Branch: REL9_1_STABLE [cb11f4d8d] 2014-04-05 12:41:34 -0400
4133 Branch: REL9_0_STABLE [9500d8f89] 2014-04-05 12:41:38 -0400
4134 Branch: REL8_4_STABLE [30e434bdf] 2014-04-05 12:41:40 -0400
4135 -->
4136
4137     <listitem>
4138      <para>
4139       On Windows, allow new sessions to absorb values of PGC_BACKEND
4140       parameters (such as <xref linkend="guc-log-connections">) from the
4141       configuration file (Amit Kapila)
4142      </para>
4143
4144      <para>
4145       Previously, if such a parameter were changed in the file post-startup,
4146       the change would have no effect.
4147      </para>
4148     </listitem>
4149
4150 <!--
4151 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
4152 Branch: master Release: REL9_4_BR [503de5462] 2014-04-30 10:35:52 +0300
4153 Branch: REL9_3_STABLE [8a90a39b4] 2014-04-30 10:35:46 +0300
4154 Branch: REL9_2_STABLE [e2558e016] 2014-04-30 10:36:31 +0300
4155 Branch: REL9_1_STABLE [94095e341] 2014-04-30 10:36:41 +0300
4156 Branch: REL9_0_STABLE [c06b7219a] 2014-04-30 10:38:32 +0300
4157 Branch: REL8_4_STABLE [e3f273ff6] 2014-04-30 10:39:03 +0300
4158 -->
4159
4160     <listitem>
4161      <para>
4162       Properly quote executable path names on Windows (Nikhil Deshpande)
4163      </para>
4164
4165      <para>
4166       This oversight could cause <application>initdb</>
4167       and <application>pg_upgrade</> to fail on Windows, if the installation
4168       path contained both spaces and <literal>@</> signs.
4169      </para>
4170     </listitem>
4171
4172 <!--
4173 Author: Tom Lane <tgl@sss.pgh.pa.us>
4174 Branch: master Release: REL9_4_BR [20561acf9] 2014-05-30 18:19:06 -0400
4175 Branch: REL9_3_STABLE [4f5f4da79] 2014-05-30 18:19:14 -0400
4176 Branch: REL9_2_STABLE [83ed4598b] 2014-05-30 18:18:20 -0400
4177 Branch: REL9_1_STABLE [a784a39c4] 2014-05-30 18:18:24 -0400
4178 Branch: REL9_0_STABLE [4f725bbc4] 2014-05-30 18:18:28 -0400
4179 Branch: REL8_4_STABLE [ae41bb4be] 2014-05-30 18:18:32 -0400
4180 -->
4181
4182     <listitem>
4183      <para>
4184       Fix linking of <application>libpython</> on OS X (Tom Lane)
4185      </para>
4186
4187      <para>
4188       The method we previously used can fail with the Python library
4189       supplied by Xcode 5.0 and later.
4190      </para>
4191     </listitem>
4192
4193 <!--
4194 Author: Tom Lane <tgl@sss.pgh.pa.us>
4195 Branch: master Release: REL9_4_BR [2f557167b] 2014-05-07 21:39:13 -0400
4196 Branch: REL9_3_STABLE [b4f9c93ce] 2014-05-07 21:38:38 -0400
4197 Branch: REL9_2_STABLE [f7672c8ce] 2014-05-07 21:38:41 -0400
4198 Branch: REL9_1_STABLE [86888054a] 2014-05-07 21:38:44 -0400
4199 Branch: REL9_0_STABLE [77e662827] 2014-05-07 21:38:47 -0400
4200 Branch: REL8_4_STABLE [664ac3de7] 2014-05-07 21:38:50 -0400
4201 -->
4202
4203     <listitem>
4204      <para>
4205       Avoid buffer bloat in <application>libpq</> when the server
4206       consistently sends data faster than the client can absorb it
4207       (Shin-ichi Morita, Tom Lane)
4208      </para>
4209
4210      <para>
4211       <application>libpq</> could be coerced into enlarging its input buffer
4212       until it runs out of memory (which would be reported misleadingly
4213       as <quote>lost synchronization with server</>).  Under ordinary
4214       circumstances it's quite far-fetched that data could be continuously
4215       transmitted more quickly than the <function>recv()</> loop can
4216       absorb it, but this has been observed when the client is artificially
4217       slowed by scheduler constraints.
4218      </para>
4219     </listitem>
4220
4221 <!--
4222 Author: Magnus Hagander <magnus@hagander.net>
4223 Branch: master Release: REL9_4_BR [585bca393] 2014-04-16 18:58:10 +0200
4224 Branch: REL9_3_STABLE [cc269272c] 2014-04-16 18:58:55 +0200
4225 Branch: REL9_2_STABLE [b764080ee] 2014-04-16 18:59:11 +0200
4226 Branch: REL9_1_STABLE [c4bf15b9c] 2014-04-16 18:59:28 +0200
4227 Branch: REL9_0_STABLE [96752b02d] 2014-04-16 18:59:37 +0200
4228 Branch: REL8_4_STABLE [b4ae2e37d] 2014-04-16 18:59:48 +0200
4229 -->
4230
4231     <listitem>
4232      <para>
4233       Ensure that LDAP lookup attempts in <application>libpq</> time out as
4234       intended (Laurenz Albe)
4235      </para>
4236     </listitem>
4237
4238 <!--
4239 Author: Michael Meskes <meskes@postgresql.org>
4240 Branch: master Release: REL9_4_BR [8d6a07fa0] 2014-05-06 13:09:51 +0200
4241 Branch: REL9_3_STABLE [b4eeb9d58] 2014-05-06 13:04:30 +0200
4242 Branch: REL9_2_STABLE [3a024c110] 2014-05-06 13:14:01 +0200
4243 Branch: REL9_1_STABLE [fb66e88cf] 2014-05-06 13:20:22 +0200
4244 Branch: REL9_0_STABLE [91c8c106f] 2014-05-06 13:24:13 +0200
4245
4246 Author: Michael Meskes <meskes@postgresql.org>
4247 Branch: master Release: REL9_4_BR [f91796853] 2014-04-09 11:23:38 +0200
4248 Branch: REL9_3_STABLE [3b8fda676] 2014-04-09 11:38:40 +0200
4249 Branch: REL9_2_STABLE [2b3136de9] 2014-04-09 11:43:13 +0200
4250 Branch: REL9_1_STABLE [0de106836] 2014-04-09 12:04:33 +0200
4251 Branch: REL9_0_STABLE [0c2eb989e] 2014-04-09 12:12:32 +0200
4252 -->
4253
4254     <listitem>
4255      <para>
4256       Fix <application>ecpg</> to do the right thing when an array
4257       of <type>char *</> is the target for a FETCH statement returning more
4258       than one row, as well as some other array-handling fixes
4259       (Ashutosh Bapat)
4260      </para>
4261     </listitem>
4262
4263 <!--
4264 Author: Tom Lane <tgl@sss.pgh.pa.us>
4265 Branch: master Release: REL9_4_BR [62215de29] 2014-03-29 17:34:00 -0400
4266 Branch: REL9_3_STABLE [3080bbaa9] 2014-03-29 17:34:03 -0400
4267 -->
4268
4269     <listitem>
4270      <para>
4271       Fix <application>pg_dump</> to cope with a materialized view that
4272       depends on a table's primary key (Tom Lane)
4273      </para>
4274
4275      <para>
4276       This occurs if the view's query relies on functional dependency to
4277       abbreviate a <literal>GROUP BY</> list.  <application>pg_dump</> got
4278       sufficiently confused that it dumped the materialized view as a
4279       regular view.
4280      </para>
4281     </listitem>
4282
4283 <!--
4284 Author: Tom Lane <tgl@sss.pgh.pa.us>
4285 Branch: master Release: REL9_4_BR [19f2d6cda] 2014-03-18 10:38:25 -0400
4286 Branch: REL9_3_STABLE [63817f86b] 2014-03-18 10:38:38 -0400
4287 -->
4288
4289     <listitem>
4290      <para>
4291       Fix parsing of <application>pg_dumpall</>'s <option>-i</> switch
4292       (Tom Lane)
4293      </para>
4294     </listitem>
4295
4296 <!--
4297 Author: Tom Lane <tgl@sss.pgh.pa.us>
4298 Branch: master [c81e63d85] 2014-06-12 20:14:32 -0400
4299 Branch: REL9_4_STABLE [c3c1401ca] 2014-06-12 20:14:36 -0400
4300 Branch: REL9_3_STABLE [a11577f47] 2014-06-12 20:14:39 -0400
4301 Branch: REL9_2_STABLE [ce7fc4fbb] 2014-06-12 20:14:46 -0400
4302 Branch: REL9_1_STABLE [294a48985] 2014-06-12 20:14:49 -0400
4303 Branch: REL9_0_STABLE [3fec825f9] 2014-06-12 20:14:52 -0400
4304 Branch: REL8_4_STABLE [6adddac8a] 2014-06-12 20:14:55 -0400
4305 -->
4306
4307     <listitem>
4308      <para>
4309       Fix <application>pg_restore</>'s processing of old-style large object
4310       comments (Tom Lane)
4311      </para>
4312
4313      <para>
4314       A direct-to-database restore from an archive file generated by a
4315       pre-9.0 version of <application>pg_dump</> would usually fail if the
4316       archive contained more than a few comments for large objects.
4317      </para>
4318     </listitem>
4319
4320 <!--
4321 Author: Bruce Momjian <bruce@momjian.us>
4322 Branch: master [3088cc370] 2014-07-07 13:24:08 -0400
4323 Branch: REL9_4_STABLE [f64fe2cbe] 2014-07-07 13:24:08 -0400
4324 Branch: REL9_3_STABLE [f1d7ff5bb] 2014-07-07 13:24:08 -0400
4325 Branch: REL9_2_STABLE [759c9fb63] 2014-07-07 13:24:08 -0400
4326 -->
4327
4328     <listitem>
4329      <para>
4330       Fix <application>pg_upgrade</> for cases where the new server creates
4331       a TOAST table but the old version did not (Bruce Momjian)
4332      </para>
4333
4334      <para>
4335       This rare situation would manifest as <quote>relation OID mismatch</>
4336       errors.
4337      </para>
4338     </listitem>
4339
4340 <!--
4341 Author: Bruce Momjian <bruce@momjian.us>
4342 Branch: master [a61daa14d] 2014-07-02 15:29:38 -0400
4343 Branch: REL9_4_STABLE [b446a384b] 2014-07-02 15:29:38 -0400
4344 Branch: REL9_3_STABLE [3d2e18510] 2014-07-02 15:29:38 -0400
4345
4346 Author: Tom Lane <tgl@sss.pgh.pa.us>
4347 Branch: master [78db307bb] 2014-07-21 11:41:53 -0400
4348 Branch: REL9_4_STABLE [d122387d7] 2014-07-21 11:42:00 -0400
4349 Branch: REL9_3_STABLE [e7984cca0] 2014-07-21 11:42:05 -0400
4350 -->
4351
4352     <listitem>
4353      <para>
4354       In <application>pg_upgrade</>,
4355       preserve <structname>pg_database</>.<structfield>datminmxid</>
4356       and <structname>pg_class</>.<structfield>relminmxid</> values from the
4357       old cluster, or insert reasonable values when upgrading from pre-9.3;
4358       also defend against unreasonable values in the core server
4359       (Bruce Momjian, &Aacute;lvaro Herrera, Tom Lane)
4360      </para>
4361
4362      <para>
4363       These changes prevent scenarios in which autovacuum might insist on
4364       scanning the entire cluster's contents immediately upon starting the
4365       new cluster, or in which tracking of unfrozen MXID values might be
4366       disabled completely.
4367      </para>
4368     </listitem>
4369
4370 <!--
4371 Author: Tom Lane <tgl@sss.pgh.pa.us>
4372 Branch: master Release: REL9_4_BR [e416830a2] 2014-05-20 12:20:47 -0400
4373 Branch: REL9_3_STABLE [0266a9c78] 2014-05-20 12:20:52 -0400
4374 Branch: REL9_2_STABLE [31f579f09] 2014-05-20 12:20:57 -0400
4375 -->
4376
4377     <listitem>
4378      <para>
4379       Prevent <filename>contrib/auto_explain</> from changing the output of
4380       a user's <command>EXPLAIN</> (Tom Lane)
4381      </para>
4382
4383      <para>
4384       If <filename>auto_explain</> is active, it could cause
4385       an <literal>EXPLAIN (ANALYZE, TIMING OFF)</> command to nonetheless
4386       print timing information.
4387      </para>
4388     </listitem>
4389
4390 <!--
4391 Author: Joe Conway <mail@joeconway.com>
4392 Branch: master [1dde5782e] 2014-06-20 12:24:59 -0700
4393 Branch: REL9_4_STABLE [9d884a34c] 2014-06-20 12:26:26 -0700
4394 Branch: REL9_3_STABLE [b3a3f3d2f] 2014-06-20 12:26:43 -0700
4395 Branch: REL9_2_STABLE [3e2cfa42f] 2014-06-20 12:27:04 -0700
4396 -->
4397
4398     <listitem>
4399      <para>
4400       Fix query-lifespan memory leak in <filename>contrib/dblink</>
4401       (MauMau, Joe Conway)
4402      </para>
4403     </listitem>
4404
4405 <!--
4406 Author: Bruce Momjian <bruce@momjian.us>
4407 Branch: master Release: REL9_4_BR [9fe55259f] 2014-04-17 12:37:53 -0400
4408 Branch: REL9_3_STABLE [fc72e94a1] 2014-04-17 12:37:53 -0400
4409 Branch: REL9_2_STABLE [ea8725a8b] 2014-04-17 12:37:53 -0400
4410 Branch: REL9_1_STABLE [fc02b87e2] 2014-04-17 12:37:53 -0400
4411 Branch: REL9_0_STABLE [a1b9c4630] 2014-04-17 12:37:53 -0400
4412 Branch: REL8_4_STABLE [df2e62603] 2014-04-17 12:37:53 -0400
4413 -->
4414
4415     <listitem>
4416      <para>
4417       In <filename>contrib/pgcrypto</> functions, ensure sensitive
4418       information is cleared from stack variables before returning
4419       (Marko Kreen)
4420      </para>
4421     </listitem>
4422
4423 <!--
4424 Author: Noah Misch <noah@leadboat.com>
4425 Branch: master [9d0826c59] 2014-06-30 16:59:19 -0400
4426 Branch: REL9_4_STABLE [37a4d3d70] 2014-06-30 16:59:44 -0400
4427 Branch: REL9_3_STABLE [f14e40852] 2014-06-30 17:00:22 -0400
4428 Branch: REL9_2_STABLE [f6d6b7b1e] 2014-06-30 17:00:40 -0400
4429 -->
4430
4431     <listitem>
4432      <para>
4433       Prevent use of already-freed memory in
4434       <filename>contrib/pgstattuple</>'s <function>pgstat_heap()</>
4435       (Noah Misch)
4436      </para>
4437     </listitem>
4438
4439 <!--
4440 Author: Tom Lane <tgl@sss.pgh.pa.us>
4441 Branch: master Release: REL9_4_BR [c941aed96] 2014-05-29 13:51:02 -0400
4442 Branch: REL9_3_STABLE [961dd203a] 2014-05-29 13:51:05 -0400
4443 Branch: REL9_2_STABLE [2fb9fb661] 2014-05-29 13:51:09 -0400
4444 Branch: REL9_1_STABLE [3606754da] 2014-05-29 13:51:12 -0400
4445 Branch: REL9_0_STABLE [b2f6754d2] 2014-05-29 13:51:15 -0400
4446 Branch: REL8_4_STABLE [fd785441f] 2014-05-29 13:51:18 -0400
4447 -->
4448
4449     <listitem>
4450      <para>
4451       In <filename>contrib/uuid-ossp</>, cache the state of the OSSP UUID
4452       library across calls (Tom Lane)
4453      </para>
4454
4455      <para>
4456       This improves the efficiency of UUID generation and reduces the amount
4457       of entropy drawn from <filename>/dev/urandom</>, on platforms that
4458       have that.
4459      </para>
4460     </listitem>
4461
4462 <!--
4463 Author: Tom Lane <tgl@sss.pgh.pa.us>
4464 Branch: master [b1864fabf] 2014-07-19 15:00:50 -0400
4465 Branch: REL9_4_STABLE [e5ea60e80] 2014-07-19 15:01:05 -0400
4466 Branch: REL9_3_STABLE [bd5458f52] 2014-07-19 15:01:12 -0400
4467 Branch: REL9_2_STABLE [7d09e4854] 2014-07-19 15:01:18 -0400
4468 Branch: REL9_1_STABLE [40ccb6530] 2014-07-19 15:01:28 -0400
4469 Branch: REL9_0_STABLE [7659b6913] 2014-07-19 15:01:38 -0400
4470 Branch: REL8_4_STABLE [c51da696b] 2014-07-19 15:01:45 -0400
4471 -->
4472
4473     <listitem>
4474      <para>
4475       Update time zone data files to <application>tzdata</> release 2014e
4476       for DST law changes in Crimea, Egypt, and Morocco.
4477      </para>
4478     </listitem>
4479
4480    </itemizedlist>
4481
4482   </sect2>
4483  </sect1>
4484
4485  <sect1 id="release-9-3-4">
4486   <title>Release 9.3.4</title>
4487
4488   <note>
4489   <title>Release Date</title>
4490   <simpara>2014-03-20</simpara>
4491   </note>
4492
4493   <para>
4494    This release contains a variety of fixes from 9.3.3.
4495    For information about new features in the 9.3 major release, see
4496    <xref linkend="release-9-3">.
4497   </para>
4498
4499   <sect2>
4500    <title>Migration to Version 9.3.4</title>
4501
4502    <para>
4503     A dump/restore is not required for those running 9.3.X.
4504    </para>
4505
4506    <para>
4507     However, the error fixed in the first changelog entry below could have
4508     resulted in corrupt data on standby servers.  It may be prudent to
4509     reinitialize standby servers from fresh base backups after installing
4510     this update.
4511    </para>
4512
4513    <para>
4514     Also, if you are upgrading from a version earlier than 9.3.3,
4515     see <xref linkend="release-9-3-3">.
4516    </para>
4517
4518   </sect2>
4519
4520   <sect2>
4521    <title>Changes</title>
4522
4523    <itemizedlist>
4524
4525 <!--
4526 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
4527 Branch: master [6bfa88acd] 2014-02-27 11:13:39 -0300
4528 Branch: REL9_3_STABLE [9a57858f1] 2014-02-27 11:23:24 -0300
4529 -->
4530
4531     <listitem>
4532      <para>
4533       Fix WAL replay of locking an already-updated tuple (Andres Freund,
4534       &Aacute;lvaro Herrera)
4535      </para>
4536
4537      <para>
4538       This error caused updated rows to not be found by index scans, resulting
4539       in inconsistent query results depending on whether an index scan was
4540       used.  Subsequent processing could result in constraint violations,
4541       since the previously updated row would not be found by later index
4542       searches, thus possibly allowing conflicting rows to be inserted.
4543       Since this error is in WAL replay, it would only manifest during crash
4544       recovery or on standby servers.  The improperly-replayed case most
4545       commonly arises when a table row that is referenced by a foreign-key
4546       constraint is updated concurrently with creation of a referencing row.
4547      </para>
4548     </listitem>
4549
4550 <!--
4551 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
4552 Branch: master [fecfc2b91] 2014-03-12 10:04:57 +0200
4553 Branch: REL9_3_STABLE [4738cc356] 2014-03-12 10:05:46 +0200
4554 Branch: REL9_2_STABLE [91f932cf4] 2014-03-12 10:07:22 +0200
4555 Branch: REL9_1_STABLE [63e59c259] 2014-03-12 10:09:22 +0200
4556 Branch: REL9_0_STABLE [9954e1f03] 2014-03-12 10:09:43 +0200
4557 Branch: REL8_4_STABLE [e2bccdfcc] 2014-03-12 10:10:04 +0200
4558 -->
4559
4560     <listitem>
4561      <para>
4562       Restore GIN metapages unconditionally to avoid torn-page risk
4563       (Heikki Linnakangas)
4564      </para>
4565
4566      <para>
4567       Although this oversight could theoretically result in a corrupted
4568       index, it is unlikely to have caused any problems in practice, since
4569       the active part of a GIN metapage is smaller than a standard 512-byte
4570       disk sector.
4571      </para>
4572     </listitem>
4573
4574 <!--
4575 Author: Tom Lane <tgl@sss.pgh.pa.us>
4576 Branch: master [7bae0284e] 2014-03-13 12:02:54 -0400
4577 Branch: REL9_3_STABLE [0d11fed8e] 2014-03-13 12:02:56 -0400
4578 Branch: REL9_2_STABLE [bbe9621a9] 2014-03-13 12:03:00 -0400
4579 Branch: REL9_1_STABLE [7bfdf10f5] 2014-03-13 12:03:03 -0400
4580 Branch: REL9_0_STABLE [7aea1050e] 2014-03-13 12:03:07 -0400
4581 -->
4582
4583     <listitem>
4584      <para>
4585       Avoid race condition in checking transaction commit status during
4586       receipt of a <command>NOTIFY</> message (Marko Tiikkaja)
4587      </para>
4588
4589      <para>
4590       This prevents a scenario wherein a sufficiently fast client might
4591       respond to a notification before database updates made by the
4592       notifier have become visible to the recipient.
4593      </para>
4594     </listitem>
4595
4596 <!--
4597 Author: Tom Lane <tgl@sss.pgh.pa.us>
4598 Branch: master [bf4052faa] 2014-03-06 11:37:02 -0500
4599 Branch: REL9_3_STABLE [3973034e6] 2014-03-06 11:37:04 -0500
4600 -->
4601
4602     <listitem>
4603      <para>
4604       Allow materialized views to be referenced in <command>UPDATE</>
4605       and <command>DELETE</> commands (Michael Paquier)
4606      </para>
4607
4608      <para>
4609       Previously such queries failed with a complaint about not being able
4610       to lock rows in the materialized view.
4611      </para>
4612     </listitem>
4613
4614 <!--
4615 Author: Tom Lane <tgl@sss.pgh.pa.us>
4616 Branch: master [9662143f0] 2014-03-01 15:20:56 -0500
4617 Branch: REL9_3_STABLE [f5f21315d] 2014-03-01 15:21:00 -0500
4618 Branch: REL9_2_STABLE [03e6423fc] 2014-03-01 15:21:04 -0500
4619 Branch: REL9_1_STABLE [a9eb4924a] 2014-03-01 15:21:07 -0500
4620 Branch: REL9_0_STABLE [43af0e8c6] 2014-03-01 15:21:11 -0500
4621 Branch: REL8_4_STABLE [b6e143458] 2014-03-01 15:21:13 -0500
4622 -->
4623
4624     <listitem>
4625      <para>
4626       Allow regular-expression operators to be terminated early by query
4627       cancel requests (Tom Lane)
4628      </para>
4629
4630      <para>
4631       This prevents scenarios wherein a pathological regular expression
4632       could lock up a server process uninterruptably for a long time.
4633      </para>
4634     </listitem>
4635
4636 <!--
4637 Author: Tom Lane <tgl@sss.pgh.pa.us>
4638 Branch: master [a222f7fda] 2014-02-18 12:44:20 -0500
4639 Branch: REL9_3_STABLE [0aaa42241] 2014-02-18 12:44:24 -0500
4640 Branch: REL9_2_STABLE [d7cd6a9d5] 2014-02-18 12:44:27 -0500
4641 Branch: REL9_1_STABLE [e6f7fe983] 2014-02-18 12:44:30 -0500
4642 Branch: REL9_0_STABLE [19d66ab05] 2014-02-18 12:44:33 -0500
4643 Branch: REL8_4_STABLE [dd378dd1e] 2014-02-18 12:44:36 -0500
4644 -->
4645
4646     <listitem>
4647      <para>
4648       Remove incorrect code that tried to allow <literal>OVERLAPS</> with
4649       single-element row arguments (Joshua Yanovski)
4650      </para>
4651
4652      <para>
4653       This code never worked correctly, and since the case is neither
4654       specified by the SQL standard nor documented, it seemed better to
4655       remove it than fix it.
4656      </para>
4657     </listitem>
4658
4659 <!--
4660 Author: Tom Lane <tgl@sss.pgh.pa.us>
4661 Branch: master [7c3187494] 2014-03-06 19:31:05 -0500
4662 Branch: REL9_3_STABLE [f557826f8] 2014-03-06 19:31:09 -0500
4663 Branch: REL9_2_STABLE [5ec41e345] 2014-03-06 19:31:12 -0500
4664 Branch: REL9_1_STABLE [f3e3f6c5b] 2014-03-06 19:31:16 -0500
4665 Branch: REL9_0_STABLE [bed1259e5] 2014-03-06 19:31:19 -0500
4666 Branch: REL8_4_STABLE [f043bddfe] 2014-03-06 19:31:22 -0500
4667 -->
4668
4669     <listitem>
4670      <para>
4671       Avoid getting more than <literal>AccessShareLock</> when de-parsing a
4672       rule or view (Dean Rasheed)
4673      </para>
4674
4675      <para>
4676       This oversight resulted in <application>pg_dump</> unexpectedly
4677       acquiring <literal>RowExclusiveLock</> locks on tables mentioned as
4678       the targets of <literal>INSERT</>/<literal>UPDATE</>/<literal>DELETE</>
4679       commands in rules.  While usually harmless, that could interfere with
4680       concurrent transactions that tried to acquire, for example,
4681       <literal>ShareLock</> on those tables.
4682      </para>
4683     </listitem>
4684
4685 <!--
4686 Author: Tom Lane <tgl@sss.pgh.pa.us>
4687 Branch: master [fccebe421] 2014-02-25 16:04:06 -0500
4688 Branch: REL9_3_STABLE [4162a55c7] 2014-02-25 16:04:09 -0500
4689 Branch: REL9_2_STABLE [00283cae1] 2014-02-25 16:04:12 -0500
4690 Branch: REL9_1_STABLE [3e2db4c80] 2014-02-25 16:04:16 -0500
4691 Branch: REL9_0_STABLE [1e0fb6a2c] 2014-02-25 16:04:20 -0500
4692 -->
4693
4694     <listitem>
4695      <para>
4696       Improve performance of index endpoint probes during planning (Tom Lane)
4697      </para>
4698
4699      <para>
4700       This change fixes a significant performance problem that occurred
4701       when there were many not-yet-committed rows at the end of the index,
4702       which is a common situation for indexes on sequentially-assigned
4703       values such as timestamps or sequence-generated identifiers.
4704      </para>
4705     </listitem>
4706
4707 <!--
4708 Author: Tom Lane <tgl@sss.pgh.pa.us>
4709 Branch: master [77585bce0] 2014-02-21 17:10:46 -0500
4710 Branch: REL9_3_STABLE [e8655a77f] 2014-02-21 17:10:49 -0500
4711 -->
4712
4713     <listitem>
4714      <para>
4715       Use non-default selectivity estimates for
4716       <literal><replaceable>value</> IN (<replaceable>list</>)</literal> and
4717       <literal><replaceable>value</> <replaceable>operator</> ANY
4718       (<replaceable>array</>)</literal>
4719       expressions when the righthand side is a stable expression (Tom Lane)
4720      </para>
4721     </listitem>
4722
4723 <!--
4724 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
4725 Branch: master [2b4f2ab33] 2014-03-05 13:03:29 -0300
4726 Branch: REL9_3_STABLE [13ea43ab8] 2014-03-05 13:03:29 -0300
4727 -->
4728
4729     <listitem>
4730      <para>
4731       Remove the correct per-database statistics file during <command>DROP
4732       DATABASE</> (Tomas Vondra)
4733      </para>
4734
4735      <para>
4736       This fix prevents a permanent leak of statistics file space.
4737       Users who have done many <command>DROP DATABASE</> commands since
4738       upgrading to <productname>PostgreSQL</> 9.3 may wish to check their
4739       statistics directory and delete statistics files that do not
4740       correspond to any existing database.  Please note
4741       that <filename>db_0.stat</> should not be removed.
4742      </para>
4743     </listitem>
4744
4745 <!--
4746 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
4747 Branch: master [94ae6ba74] 2014-03-06 21:38:51 +0200
4748 Branch: REL9_3_STABLE [dcd1131c8] 2014-03-06 21:40:50 +0200
4749 -->
4750
4751     <listitem>
4752      <para>
4753       Fix <application>walsender</> ping logic to avoid inappropriate
4754       disconnects under continuous load (Andres Freund, Heikki Linnakangas)
4755      </para>
4756
4757      <para>
4758       <application>walsender</> failed to send ping messages to the client
4759       if it was constantly busy sending WAL data; but it expected to see
4760       ping responses despite that, and would therefore disconnect
4761       once <xref linkend="guc-wal-sender-timeout"> elapsed.
4762      </para>
4763     </listitem>
4764
4765 <!--
4766 Author: Fujii Masao <fujii@postgresql.org>
4767 Branch: master [5c6d9fc4b] 2014-03-17 20:37:50 +0900
4768 Branch: REL9_3_STABLE [385723405] 2014-03-17 20:41:12 +0900
4769 Branch: REL9_2_STABLE [7899aa356] 2014-03-17 20:41:52 +0900
4770 Branch: REL9_1_STABLE [65e8dbb18] 2014-03-17 20:42:35 +0900
4771 -->
4772
4773     <listitem>
4774      <para>
4775       Fix <application>walsender</>'s failure to shut down cleanly when client
4776       is <application>pg_receivexlog</> (Fujii Masao)
4777      </para>
4778     </listitem>
4779
4780 <!--
4781 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
4782 Branch: master [956685f82] 2014-03-05 14:48:14 +0200
4783 Branch: REL9_3_STABLE [a5363a696] 2014-03-05 14:46:56 +0200
4784 Branch: REL9_2_STABLE [e7ec05562] 2014-03-05 14:45:55 +0200
4785 -->
4786
4787     <listitem>
4788      <para>
4789       Check WAL level and hot standby parameters correctly when doing crash
4790       recovery that will be followed by archive recovery (Heikki Linnakangas)
4791      </para>
4792     </listitem>
4793
4794 <!--
4795 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
4796 Branch: master [af246c37c] 2014-03-05 13:51:19 +0200
4797 Branch: REL9_3_STABLE [2cd72ba42] 2014-03-05 13:52:21 +0200
4798 Branch: REL9_2_STABLE [931dc26b0] 2014-03-05 13:57:32 +0200
4799 Branch: REL9_1_STABLE [7552d3d1a] 2014-03-05 13:58:14 +0200
4800 Branch: REL9_0_STABLE [4521cc850] 2014-03-05 13:58:22 +0200
4801 -->
4802
4803     <listitem>
4804      <para>
4805       Fix test to see if hot standby connections can be allowed immediately
4806       after a crash (Heikki Linnakangas)
4807      </para>
4808     </listitem>
4809
4810 <!--
4811 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
4812 Branch: REL9_3_STABLE [5a7e75849] 2014-02-20 10:46:54 +0200
4813 -->
4814
4815     <listitem>
4816      <para>
4817       Add read-only <xref linkend="guc-data-checksums"> parameter to
4818       display whether page checksums are enabled (Heikki Linnakangas)
4819      </para>
4820
4821      <para>
4822       Without this parameter, determining the state of checksum
4823       processing was difficult.
4824      </para>
4825     </listitem>
4826
4827 <!--
4828 Author: Tom Lane <tgl@sss.pgh.pa.us>
4829 Branch: master [6c461cb92] 2014-03-13 20:59:42 -0400
4830 Branch: REL9_3_STABLE [41bd2cf55] 2014-03-13 20:59:45 -0400
4831 Branch: REL9_2_STABLE [7a289bb6d] 2014-03-13 20:59:48 -0400
4832 Branch: REL9_1_STABLE [f16ca9755] 2014-03-13 20:59:51 -0400
4833 Branch: REL9_0_STABLE [dad55e1e9] 2014-03-13 20:59:55 -0400
4834 Branch: REL8_4_STABLE [172c53e92] 2014-03-13 20:59:57 -0400
4835 -->
4836
4837     <listitem>
4838      <para>
4839       Prevent interrupts while reporting non-<literal>ERROR</> messages
4840       (Tom Lane)
4841      </para>
4842
4843      <para>
4844       This guards against rare server-process freezeups due to recursive
4845       entry to <function>syslog()</>, and perhaps other related problems.
4846      </para>
4847     </listitem>
4848
4849 <!--
4850 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
4851 Branch: master [bd1154ede] 2014-03-16 23:22:21 -0300
4852 Branch: REL9_3_STABLE [60829079d] 2014-03-16 23:22:22 -0300
4853 Branch: REL9_2_STABLE [ba5946e86] 2014-03-16 23:22:22 -0300
4854 Branch: REL9_1_STABLE [f84997c7e] 2014-03-16 23:22:22 -0300
4855 -->
4856
4857     <listitem>
4858      <para>
4859       Fix memory leak in PL/Perl when returning a composite result, including
4860       multiple-OUT-parameter cases (Alex Hunsaker)
4861      </para>
4862     </listitem>
4863
4864 <!--
4865 Author: Tom Lane <tgl@sss.pgh.pa.us>
4866 Branch: master [e85a5ffba] 2014-03-10 15:47:40 -0400
4867 Branch: REL9_3_STABLE [f64f4c370] 2014-03-10 15:47:09 -0400
4868 Branch: REL9_2_STABLE [b315b767f] 2014-03-10 15:47:13 -0400
4869 -->
4870
4871     <listitem>
4872      <para>
4873       Fix tracking of <application>psql</> script line numbers
4874       during <literal>\copy</> from out-of-line data
4875       (Kumar Rajeev Rastogi, Amit Khandekar)
4876      </para>
4877
4878      <para>
4879       <literal>\copy ... from</> incremented the script file line number
4880       for each data line, even if the data was not coming from the script
4881       file.  This mistake resulted in wrong line numbers being reported for
4882       any errors occurring later in the same script file.
4883      </para>
4884     </listitem>
4885
4886 <!--
4887 Author: Tom Lane <tgl@sss.pgh.pa.us>
4888 Branch: master [83204e100] 2014-03-07 16:36:40 -0500
4889 Branch: REL9_3_STABLE [73f0483fd] 2014-03-07 16:36:50 -0500
4890 -->
4891
4892     <listitem>
4893      <para>
4894       Fix <application>contrib/postgres_fdw</> to handle multiple join
4895       conditions properly (Tom Lane)
4896      </para>
4897
4898      <para>
4899       This oversight could result in sending <literal>WHERE</> clauses to
4900       the remote server for execution even though the clauses are not known
4901       to have the same semantics on the remote server (for example, clauses
4902       that use non-built-in operators).  The query might succeed anyway,
4903       but it could also fail with errors from the remote server, or worse
4904       give silently wrong answers.
4905      </para>
4906     </listitem>
4907
4908 <!--
4909 Author: Magnus Hagander <magnus@hagander.net>
4910 Branch: master [7f3e17b48] 2014-02-18 14:45:58 +0100
4911 Branch: REL9_3_STABLE [b88ecb002] 2014-02-18 14:49:41 +0100
4912 Branch: REL9_2_STABLE [062deb313] 2014-02-18 14:50:19 +0100
4913 Branch: REL9_1_STABLE [fae12f331] 2014-03-16 11:46:20 +0100
4914 Branch: REL9_0_STABLE [665515539] 2014-03-16 11:47:37 +0100
4915 -->
4916
4917     <listitem>
4918      <para>
4919       Prevent intermittent <quote>could not reserve shared memory region</>
4920       failures on recent Windows versions (MauMau)
4921      </para>
4922     </listitem>
4923
4924 <!--
4925 Author: Tom Lane <tgl@sss.pgh.pa.us>
4926 Branch: master [aba7f5677] 2014-03-15 13:36:07 -0400
4927 Branch: REL9_3_STABLE [b5de16997] 2014-03-15 13:36:24 -0400
4928 Branch: REL9_2_STABLE [f2063b379] 2014-03-15 13:36:32 -0400
4929 Branch: REL9_1_STABLE [2df1bf21c] 2014-03-15 13:36:41 -0400
4930 Branch: REL9_0_STABLE [0033f5324] 2014-03-15 13:36:49 -0400
4931 Branch: REL8_4_STABLE [6e6c2c2e1] 2014-03-15 13:36:57 -0400
4932 -->
4933
4934     <listitem>
4935      <para>
4936       Update time zone data files to <application>tzdata</> release 2014a
4937       for DST law changes in Fiji and Turkey, plus historical changes in
4938       Israel and Ukraine.
4939      </para>
4940     </listitem>
4941
4942    </itemizedlist>
4943
4944   </sect2>
4945  </sect1>
4946
4947  <sect1 id="release-9-3-3">
4948   <title>Release 9.3.3</title>
4949
4950   <note>
4951   <title>Release Date</title>
4952   <simpara>2014-02-20</simpara>
4953   </note>
4954
4955   <para>
4956    This release contains a variety of fixes from 9.3.2.
4957    For information about new features in the 9.3 major release, see
4958    <xref linkend="release-9-3">.
4959   </para>
4960
4961   <sect2>
4962    <title>Migration to Version 9.3.3</title>
4963
4964    <para>
4965     A dump/restore is not required for those running 9.3.X.
4966    </para>
4967
4968    <para>
4969     However, several of the issues corrected in this release could have
4970     resulted in corruption of foreign-key constraints; that is, there
4971     might now be referencing rows for which there is no matching row in
4972     the referenced table.  It may be worthwhile to recheck such
4973     constraints after installing this update.  The simplest way to do that
4974     is to drop and recreate each suspect constraint; however, that will
4975     require taking an exclusive lock on both tables, so it is unlikely to
4976     be acceptable in production databases.  Alternatively, you can do a
4977     manual join query between the two tables to look for unmatched rows.
4978    </para>
4979
4980    <para>
4981     Note also the requirement for replication standby servers to be
4982     upgraded before their master server is upgraded.
4983    </para>
4984
4985    <para>
4986     Also, if you are upgrading from a version earlier than 9.3.2,
4987     see <xref linkend="release-9-3-2">.
4988    </para>
4989
4990   </sect2>
4991
4992   <sect2>
4993    <title>Changes</title>
4994
4995    <itemizedlist>
4996
4997 <!--
4998 Author: Noah Misch <noah@leadboat.com>
4999 Branch: master [fea164a72] 2014-02-17 09:33:31 -0500
5000 Branch: REL9_3_STABLE [475a1fbc4] 2014-02-17 09:33:32 -0500
5001 Branch: REL9_2_STABLE [15a8f97b9] 2014-02-17 09:33:33 -0500
5002 Branch: REL9_1_STABLE [5d320a16c] 2014-02-17 09:33:33 -0500
5003 Branch: REL9_0_STABLE [789063697] 2014-02-17 09:33:37 -0500
5004 Branch: REL8_4_STABLE [ff35425c8] 2014-02-17 09:33:38 -0500
5005 -->
5006
5007     <listitem>
5008      <para>
5009       Shore up <literal>GRANT ... WITH ADMIN OPTION</> restrictions
5010       (Noah Misch)
5011      </para>
5012
5013      <para>
5014       Granting a role without <literal>ADMIN OPTION</> is supposed to
5015       prevent the grantee from adding or removing members from the granted
5016       role, but this restriction was easily bypassed by doing <literal>SET
5017       ROLE</> first.  The security impact is mostly that a role member can
5018       revoke the access of others, contrary to the wishes of his grantor.
5019       Unapproved role member additions are a lesser concern, since an
5020       uncooperative role member could provide most of his rights to others
5021       anyway by creating views or <literal>SECURITY DEFINER</> functions.
5022       (CVE-2014-0060)
5023      </para>
5024     </listitem>
5025
5026 <!--
5027 Author: Noah Misch <noah@leadboat.com>
5028 Branch: master [537cbd35c] 2014-02-17 09:33:31 -0500
5029 Branch: REL9_3_STABLE [fc4a04a3c] 2014-02-17 09:33:32 -0500
5030 Branch: REL9_2_STABLE [1d701d28a] 2014-02-17 09:33:33 -0500
5031 Branch: REL9_1_STABLE [23b5a85e6] 2014-02-17 09:33:36 -0500
5032 Branch: REL9_0_STABLE [c0ac4c75f] 2014-02-17 09:33:37 -0500
5033 Branch: REL8_4_STABLE [823b9dc25] 2014-02-17 09:33:38 -0500
5034 -->
5035
5036     <listitem>
5037      <para>
5038       Prevent privilege escalation via manual calls to PL validator
5039       functions (Andres Freund)
5040      </para>
5041
5042      <para>
5043       The primary role of PL validator functions is to be called implicitly
5044       during <command>CREATE FUNCTION</>, but they are also normal SQL
5045       functions that a user can call explicitly.  Calling a validator on
5046       a function actually written in some other language was not checked
5047       for and could be exploited for privilege-escalation purposes.
5048       The fix involves adding a call to a privilege-checking function in
5049       each validator function.  Non-core procedural languages will also
5050       need to make this change to their own validator functions, if any.
5051       (CVE-2014-0061)
5052      </para>
5053     </listitem>
5054
5055 <!--
5056 Author: Robert Haas <rhaas@postgresql.org>
5057 Branch: master [5f173040e] 2014-02-17 09:33:31 -0500
5058 Branch: REL9_3_STABLE [e1e0a4d79] 2014-02-17 09:33:32 -0500
5059 Branch: REL9_2_STABLE [820ab11fb] 2014-02-17 09:33:33 -0500
5060 Branch: REL9_1_STABLE [b5c574399] 2014-02-17 09:33:36 -0500
5061 Branch: REL9_0_STABLE [43d4e965e] 2014-02-17 09:33:37 -0500
5062 Branch: REL8_4_STABLE [e46476133] 2014-02-17 09:33:38 -0500
5063 -->
5064
5065     <listitem>
5066      <para>
5067       Avoid multiple name lookups during table and index DDL
5068       (Robert Haas, Andres Freund)
5069      </para>
5070
5071      <para>
5072       If the name lookups come to different conclusions due to concurrent
5073       activity, we might perform some parts of the DDL on a different table
5074       than other parts.  At least in the case of <command>CREATE INDEX</>,
5075       this can be used to cause the permissions checks to be performed
5076       against a different table than the index creation, allowing for a
5077       privilege escalation attack.
5078       (CVE-2014-0062)
5079      </para>
5080     </listitem>
5081
5082 <!--
5083 Author: Noah Misch <noah@leadboat.com>
5084 Branch: master [4318daecc] 2014-02-17 09:33:31 -0500
5085 Branch: REL9_3_STABLE [e4a4fa223] 2014-02-17 09:33:32 -0500
5086 Branch: REL9_2_STABLE [f416622be] 2014-02-17 09:33:33 -0500
5087 Branch: REL9_1_STABLE [6a10e57b0] 2014-02-17 09:33:37 -0500
5088 Branch: REL9_0_STABLE [b9c3bb1b3] 2014-02-17 09:33:38 -0500
5089 Branch: REL8_4_STABLE [d0ed1a6c0] 2014-02-17 09:33:39 -0500
5090 -->
5091
5092     <listitem>
5093      <para>
5094       Prevent buffer overrun with long datetime strings (Noah Misch)
5095      </para>
5096
5097      <para>
5098       The <literal>MAXDATELEN</> constant was too small for the longest
5099       possible value of type <type>interval</>, allowing a buffer overrun
5100       in <function>interval_out()</>.  Although the datetime input
5101       functions were more careful about avoiding buffer overrun, the limit
5102       was short enough to cause them to reject some valid inputs, such as
5103       input containing a very long timezone name.  The <application>ecpg</>
5104       library contained these vulnerabilities along with some of its own.
5105       (CVE-2014-0063)
5106      </para>
5107     </listitem>
5108
5109 <!--
5110 Author: Noah Misch <noah@leadboat.com>
5111 Branch: master [31400a673] 2014-02-17 09:33:31 -0500
5112 Branch: REL9_3_STABLE [7a362a176] 2014-02-17 09:33:32 -0500
5113 Branch: REL9_2_STABLE [12bbce15d] 2014-02-17 09:33:33 -0500
5114 Branch: REL9_1_STABLE [0b7026d96] 2014-02-17 09:33:37 -0500
5115 Branch: REL9_0_STABLE [2c3203e18] 2014-02-17 09:33:38 -0500
5116 Branch: REL8_4_STABLE [98be8a6ea] 2014-02-17 09:33:39 -0500
5117 -->
5118
5119     <listitem>
5120      <para>
5121       Prevent buffer overrun due to integer overflow in size calculations
5122       (Noah Misch, Heikki Linnakangas)
5123      </para>
5124
5125      <para>
5126       Several functions, mostly type input functions, calculated an
5127       allocation size without checking for overflow.  If overflow did
5128       occur, a too-small buffer would be allocated and then written past.
5129       (CVE-2014-0064)
5130      </para>
5131     </listitem>
5132
5133 <!--
5134 Author: Tom Lane <tgl@sss.pgh.pa.us>
5135 Branch: master [01824385a] 2014-02-17 11:20:21 -0500
5136 Branch: REL9_3_STABLE [e3208fec3] 2014-02-17 11:20:24 -0500
5137 Branch: REL9_2_STABLE [655b665f7] 2014-02-17 11:20:27 -0500
5138 Branch: REL9_1_STABLE [4741e3160] 2014-02-17 11:20:31 -0500
5139 Branch: REL9_0_STABLE [45bf2404a] 2014-02-17 11:20:35 -0500
5140 Branch: REL8_4_STABLE [69d2bc14a] 2014-02-17 11:20:38 -0500
5141 -->
5142
5143     <listitem>
5144      <para>
5145       Prevent overruns of fixed-size buffers
5146       (Peter Eisentraut, Jozef Mlich)
5147      </para>
5148
5149      <para>
5150       Use <function>strlcpy()</> and related functions to provide a clear
5151       guarantee that fixed-size buffers are not overrun.  Unlike the
5152       preceding items, it is unclear whether these cases really represent
5153       live issues, since in most cases there appear to be previous
5154       constraints on the size of the input string.  Nonetheless it seems
5155       prudent to silence all Coverity warnings of this type.
5156       (CVE-2014-0065)
5157      </para>
5158     </listitem>
5159
5160 <!--
5161 Author: Tom Lane <tgl@sss.pgh.pa.us>
5162 Branch: master [01824385a] 2014-02-17 11:20:21 -0500
5163 Branch: REL9_3_STABLE [e3208fec3] 2014-02-17 11:20:24 -0500
5164 Branch: REL9_2_STABLE [655b665f7] 2014-02-17 11:20:27 -0500
5165 Branch: REL9_1_STABLE [4741e3160] 2014-02-17 11:20:31 -0500
5166 Branch: REL9_0_STABLE [45bf2404a] 2014-02-17 11:20:35 -0500
5167 Branch: REL8_4_STABLE [69d2bc14a] 2014-02-17 11:20:38 -0500
5168 -->
5169
5170     <listitem>
5171      <para>
5172       Avoid crashing if <function>crypt()</> returns NULL (Honza Horak,
5173       Bruce Momjian)
5174      </para>
5175
5176      <para>
5177       There are relatively few scenarios in which <function>crypt()</>
5178       could return NULL, but <filename>contrib/chkpass</> would crash
5179       if it did.  One practical case in which this could be an issue is
5180       if <application>libc</> is configured to refuse to execute unapproved
5181       hashing algorithms (e.g., <quote>FIPS mode</>).
5182       (CVE-2014-0066)
5183      </para>
5184     </listitem>
5185
5186 <!--
5187 Author: Tom Lane <tgl@sss.pgh.pa.us>
5188 Branch: master [6ef325429] 2014-02-17 11:24:32 -0500
5189 Branch: REL9_3_STABLE [1ec5988f3] 2014-02-17 11:24:38 -0500
5190 Branch: REL9_2_STABLE [ff3d533e5] 2014-02-17 11:24:42 -0500
5191 Branch: REL9_1_STABLE [800a3744b] 2014-02-17 11:24:45 -0500
5192 Branch: REL9_0_STABLE [369c229d2] 2014-02-17 11:24:48 -0500
5193 Branch: REL8_4_STABLE [f58663ab1] 2014-02-17 11:24:51 -0500
5194 -->
5195
5196     <listitem>
5197      <para>
5198       Document risks of <literal>make check</> in the regression testing
5199       instructions (Noah Misch, Tom Lane)
5200      </para>
5201
5202      <para>
5203       Since the temporary server started by <literal>make check</>
5204       uses <quote>trust</> authentication, another user on the same machine
5205       could connect to it as database superuser, and then potentially
5206       exploit the privileges of the operating-system user who started the
5207       tests.  A future release will probably incorporate changes in the
5208       testing procedure to prevent this risk, but some public discussion is
5209       needed first.  So for the moment, just warn people against using
5210       <literal>make check</> when there are untrusted users on the
5211       same machine.
5212       (CVE-2014-0067)
5213      </para>
5214     </listitem>
5215
5216 <!--
5217 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
5218 Branch: master [3b97e6823] 2013-12-16 11:29:50 -0300
5219 Branch: REL9_3_STABLE [8e9a16ab8] 2013-12-16 11:29:51 -0300
5220 -->
5221
5222     <listitem>
5223      <para>
5224       Rework tuple freezing protocol
5225       (&Aacute;lvaro Herrera, Andres Freund)
5226      </para>
5227
5228      <para>
5229       The logic for tuple freezing was unable to handle some cases involving
5230       freezing of
5231       <link linkend="vacuum-for-multixact-wraparound"><firstterm>multixact</>
5232       IDs</link>, with the practical effect that shared row-level locks
5233       might be forgotten once old enough.
5234      </para>
5235
5236      <para>
5237       Fixing this required changing the WAL record format for tuple
5238       freezing.  While this is no issue for standalone servers, when using
5239       replication it means that <emphasis>standby servers must be upgraded
5240       to 9.3.3 or later before their masters are</>.  An older standby will
5241       be unable to interpret freeze records generated by a newer master, and
5242       will fail with a PANIC message.  (In such a case, upgrading the
5243       standby should be sufficient to let it resume execution.)
5244      </para>
5245     </listitem>
5246
5247 <!--
5248 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
5249 Branch: master [801c2dc72] 2014-02-13 19:36:31 -0300
5250 Branch: REL9_3_STABLE [fb47de2be] 2014-02-13 19:30:30 -0300
5251 -->
5252
5253     <listitem>
5254      <para>
5255       Create separate GUC parameters to control multixact freezing
5256       (&Aacute;lvaro Herrera)
5257      </para>
5258
5259      <para>
5260       9.3 requires multixact tuple labels to be frozen before
5261       they grow too old, in the same fashion as plain transaction ID labels
5262       have been frozen for some time.  Previously, the transaction ID
5263       freezing parameters were used for multixact IDs too; but since
5264       the consumption rates of transaction IDs and multixact IDs can be
5265       quite different, this did not work very well.  Introduce new settings
5266       <xref linkend="guc-vacuum-multixact-freeze-min-age">,
5267       <xref linkend="guc-vacuum-multixact-freeze-table-age">, and
5268       <xref linkend="guc-autovacuum-multixact-freeze-max-age">
5269       to control when to freeze multixacts.
5270      </para>
5271     </listitem>
5272
5273 <!--
5274 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
5275 Branch: master [11ac4c73c] 2013-12-18 13:45:51 -0300
5276 Branch: REL9_3_STABLE [db1014bc4] 2013-12-18 13:31:27 -0300
5277 -->
5278
5279     <listitem>
5280      <para>
5281       Account for remote row locks propagated by local updates
5282       (&Aacute;lvaro Herrera)
5283      </para>
5284
5285      <para>
5286       If a row was locked by transaction A, and transaction B updated it,
5287       the new version of the row created by B would be locked by A, yet
5288       visible only to B.  If transaction B then again updated the row, A's
5289       lock wouldn't get checked, thus possibly allowing B to complete when
5290       it shouldn't.  This case is new in 9.3 since prior versions did not
5291       have any types of row locking that would permit another transaction
5292       to update the row at all.
5293      </para>
5294
5295      <para>
5296       This oversight could allow referential integrity checks to give false
5297       positives (for instance, allow deletes that should have been rejected).
5298       Applications using the new commands <literal>SELECT FOR KEY SHARE</>
5299       and <literal>SELECT FOR NO KEY UPDATE</> might also have suffered
5300       locking failures of this kind.
5301      </para>
5302     </listitem>
5303
5304 <!--
5305 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
5306 Branch: master [07aeb1fec] 2013-12-05 12:21:55 -0300
5307 Branch: REL9_3_STABLE [c6cd27e36] 2013-12-05 12:21:55 -0300
5308 -->
5309
5310     <listitem>
5311      <para>
5312       Prevent <quote>forgetting</> valid row locks when one of several
5313       holders of a row lock aborts (&Aacute;lvaro Herrera)
5314      </para>
5315
5316      <para>
5317       This was yet another mechanism by which a shared row lock could be
5318       lost, thus possibly allowing updates that should have been prevented
5319       by foreign-key constraints.
5320      </para>
5321     </listitem>
5322
5323 <!--
5324 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
5325 Branch: master [312bde3d4] 2013-12-05 17:47:51 -0300
5326 Branch: REL9_3_STABLE [2dcc48c35] 2013-12-05 17:47:51 -0300
5327 -->
5328
5329     <listitem>
5330      <para>
5331       Fix incorrect logic during update chain locking
5332       (&Aacute;lvaro Herrera)
5333      </para>
5334
5335      <para>
5336       This mistake could result in spurious <quote>could not serialize access
5337       due to concurrent update</> errors in <literal>REPEATABLE READ</>
5338       and <literal>SERIALIZABLE</> transaction isolation modes.
5339      </para>
5340     </listitem>
5341
5342 <!--
5343 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
5344 Branch: master [a50d97625] 2014-01-02 18:17:07 -0300
5345 Branch: REL9_3_STABLE [03db79459] 2014-01-02 18:17:07 -0300
5346 -->
5347
5348     <listitem>
5349      <para>
5350       Handle wraparound correctly during extension or truncation
5351       of <filename>pg_multixact/members</>
5352       (Andres Freund, &Aacute;lvaro Herrera)
5353      </para>
5354     </listitem>
5355
5356 <!--
5357 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
5358 Branch: master [638cf09e7] 2014-01-02 18:17:29 -0300
5359 Branch: REL9_3_STABLE [948a3dfbb] 2014-01-02 18:17:29 -0300
5360 -->
5361
5362     <listitem>
5363      <para>
5364       Fix handling of 5-digit filenames in <filename>pg_multixact/members</>
5365       (&Aacute;lvaro Herrera)
5366      </para>
5367
5368      <para>
5369       As of 9.3, these names can be more than 4 digits, but the directory
5370       cleanup code ignored such files.
5371      </para>
5372     </listitem>
5373
5374 <!--
5375 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
5376 Branch: master [d881dd623] 2013-12-13 17:16:25 -0300
5377 Branch: REL9_3_STABLE [0bc00363b] 2013-12-13 17:16:25 -0300
5378 -->
5379
5380     <listitem>
5381      <para>
5382       Improve performance of multixact cache code
5383       (&Aacute;lvaro Herrera)
5384      </para>
5385     </listitem>
5386
5387 <!--
5388 Author: Alvaro Herrera <alvherre@alvh.no-ip.org>
5389 Branch: master [13aa62443] 2013-12-19 16:53:49 -0300
5390 Branch: REL9_3_STABLE [85d3b3c3a] 2013-12-19 16:39:59 -0300
5391 -->
5392
5393     <listitem>
5394      <para>
5395       Optimize updating a row that's already locked by the same transaction
5396       (Andres Freund, &Aacute;lvaro Herrera)
5397      </para>
5398
5399      <para>
5400       This fixes a performance regression from pre-9.3 versions when doing
5401       <literal>SELECT FOR UPDATE</> followed by <literal>UPDATE/DELETE</>.
5402      </para>
5403     </listitem>
5404
5405 <!--
5406 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
5407 Branch: master [4d894b41c] 2014-02-14 15:15:09 +0200
5408 Branch: REL9_3_STABLE [762bd379a] 2014-02-14 15:18:34 +0200
5409 -->
5410
5411     <listitem>
5412      <para>
5413       During archive recovery, prefer highest timeline number when WAL
5414       segments with the same ID are present in both the archive
5415       and <filename>pg_xlog/</> (Kyotaro Horiguchi)
5416      </para>
5417
5418      <para>
5419       Previously, not-yet-archived segments could get ignored during
5420       recovery.  This reverts an undesirable behavioral change in 9.3.0
5421       back to the way things worked pre-9.3.
5422      </para>
5423     </listitem>
5424
5425 <!--
5426 Author: Tom Lane <tgl@sss.pgh.pa.us>
5427 Branch: master [6f2aead1f] 2014-02-12 14:52:16 -0500
5428 Branch: REL9_3_STABLE [7190f7a34] 2014-02-12 14:52:20 -0500
5429 Branch: REL9_2_STABLE [bc7ab301a] 2014-02-12 14:52:23 -0500
5430 Branch: REL9_1_STABLE [a69cc9b2c] 2014-02-12 14:52:26 -0500
5431 Branch: REL9_0_STABLE [7fedd79b7] 2014-02-12 14:52:29 -0500
5432 Branch: REL8_4_STABLE [9620fede9] 2014-02-12 14:52:32 -0500
5433 -->
5434
5435     <listitem>
5436      <para>
5437       Fix possible mis-replay of WAL records when some segments of a
5438       relation aren't full size (Greg Stark, Tom Lane)
5439      </para>
5440
5441      <para>
5442       The WAL update could be applied to the wrong page, potentially many
5443       pages past where it should have been.  Aside from corrupting data,
5444       this error has been observed to result in significant <quote>bloat</>
5445       of standby servers compared to their masters, due to updates being
5446       applied far beyond where the end-of-file should have been.  This
5447       failure mode does not appear to be a significant risk during crash
5448       recovery, only when initially synchronizing a standby created from a
5449       base backup taken from a quickly-changing master.
5450      </para>
5451     </listitem>
5452
5453 <!--
5454 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
5455 Branch: master [d59ff6c11] 2014-01-08 15:03:09 +0200
5456 Branch: REL9_3_STABLE [425bef6ee] 2014-01-08 14:32:22 +0200
5457 Branch: REL9_2_STABLE [82c75f9dd] 2014-01-08 14:28:55 +0200
5458 Branch: REL9_1_STABLE [e56430c62] 2014-01-08 14:33:58 +0200
5459 Branch: REL9_0_STABLE [5301c8395] 2014-01-08 14:34:21 +0200
5460 -->
5461
5462     <listitem>
5463      <para>
5464       Fix bug in determining when recovery has reached consistency
5465       (Tomonari Katsumata, Heikki Linnakangas)
5466      </para>
5467
5468      <para>
5469       In some cases WAL replay would mistakenly conclude that the database
5470       was already consistent at the start of replay, thus possibly allowing
5471       hot-standby queries before the database was really consistent.  Other
5472       symptoms such as <quote>PANIC: WAL contains references to invalid
5473       pages</> were also possible.
5474      </para>
5475     </listitem>
5476
5477 <!--
5478 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
5479 Branch: master [a49633d8d] 2013-12-13 14:15:04 +0200
5480 Branch: REL9_3_STABLE [615299cf6] 2013-12-13 14:23:02 +0200
5481 -->
5482
5483     <listitem>
5484      <para>
5485       Fix WAL logging of visibility map changes (Heikki Linnakangas)
5486      </para>
5487     </listitem>
5488
5489 <!--
5490 Author: Tom Lane <tgl@sss.pgh.pa.us>
5491 Branch: master [061b079f8] 2014-01-14 17:35:21 -0500
5492 Branch: REL9_3_STABLE [ebde6c401] 2014-01-14 17:34:51 -0500
5493 Branch: REL9_2_STABLE [ad2e041a3] 2014-01-14 17:34:54 -0500
5494 Branch: REL9_1_STABLE [ab4bb5c47] 2014-01-14 17:34:57 -0500
5495 Branch: REL9_0_STABLE [5d742b9ce] 2014-01-14 17:35:00 -0500
5496 -->
5497
5498     <listitem>
5499      <para>
5500       Fix improper locking of btree index pages while replaying
5501       a <literal>VACUUM</> operation in hot-standby mode (Andres Freund,
5502       Heikki Linnakangas, Tom Lane)
5503      </para>
5504
5505      <para>
5506       This error could result in <quote>PANIC: WAL contains references to
5507       invalid pages</> failures.
5508      </para>
5509     </listitem>
5510
5511 <!--
5512 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
5513 Branch: master [22122c83f] 2013-12-03 23:16:01 +0200
5514 Branch: REL9_3_STABLE [8fd04cb32] 2013-12-03 22:13:16 +0200
5515 Branch: REL9_2_STABLE [06df57ac6] 2013-12-03 22:34:31 +0200
5516 Branch: REL9_1_STABLE [e6acb956a] 2013-12-03 22:34:43 +0200
5517 Branch: REL9_0_STABLE [760606dc5] 2013-12-03 23:01:31 +0200
5518 Branch: REL8_4_STABLE [67fc33d3a] 2013-12-03 22:53:26 +0200
5519 -->
5520
5521     <listitem>
5522      <para>
5523       Ensure that insertions into non-leaf GIN index pages write a full-page
5524       WAL record when appropriate (Heikki Linnakangas)
5525      </para>
5526
5527      <para>
5528       The previous coding risked index corruption in the event of a
5529       partial-page write during a system crash.
5530      </para>
5531     </listitem>
5532
5533 <!--
5534 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
5535 Branch: master [3739e5ab9] 2014-01-08 23:28:52 +0200
5536 Branch: REL9_3_STABLE [3aefff422] 2014-01-08 23:30:46 +0200
5537 Branch: REL9_2_STABLE [3bd8987ef] 2014-01-08 23:30:55 +0200
5538 Branch: REL9_1_STABLE [0402f2441] 2014-01-08 23:31:01 +0200
5539 -->
5540
5541     <listitem>
5542      <para>
5543       When <literal>pause_at_recovery_target</>
5544       and <literal>recovery_target_inclusive</> are both set, ensure the
5545       target record is applied before pausing, not after (Heikki
5546       Linnakangas)
5547      </para>
5548     </listitem>
5549
5550 <!--
5551 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
5552 Branch: master [a472ae1e4] 2014-01-16 23:15:41 +0200
5553 Branch: REL9_3_STABLE [e34acac62] 2014-01-16 23:14:57 +0200
5554 -->
5555
5556     <listitem>
5557      <para>
5558       Ensure walreceiver sends hot-standby feedback messages on time even
5559       when there is a continuous stream of data (Andres Freund, Amit
5560       Kapila)
5561      </para>
5562     </listitem>
5563
5564 <!--
5565 Author: Tom Lane <tgl@sss.pgh.pa.us>
5566 Branch: master [e8312b4f0] 2013-12-13 11:50:15 -0500
5567 Branch: REL9_3_STABLE [478af9b79] 2013-12-13 11:50:25 -0500
5568 -->
5569
5570     <listitem>
5571      <para>
5572       Prevent timeout interrupts from taking control away from mainline
5573       code unless <varname>ImmediateInterruptOK</> is set
5574       (Andres Freund, Tom Lane)
5575      </para>
5576
5577      <para>
5578       This is a serious issue for any application making use of statement
5579       timeouts, as it could cause all manner of strange failures after a
5580       timeout occurred.  We have seen reports of <quote>stuck</> spinlocks,
5581       ERRORs being unexpectedly promoted to PANICs, unkillable backends,
5582       and other misbehaviors.
5583      </para>
5584     </listitem>
5585
5586 <!--
5587 Author: Robert Haas <rhaas@postgresql.org>
5588 Branch: master [d1981719a] 2014-01-31 21:31:08 -0500
5589 Branch: REL9_3_STABLE [5d807a74b] 2014-01-31 21:34:44 -0500
5590 Branch: REL9_2_STABLE [ebe334463] 2014-01-31 21:35:32 -0500
5591 Branch: REL9_1_STABLE [8e6bfc9eb] 2014-01-31 21:36:23 -0500
5592 Branch: REL9_0_STABLE [798243a81] 2014-01-31 21:40:20 -0500
5593 Branch: REL8_4_STABLE [458b20f2d] 2014-01-31 21:41:09 -0500
5594 -->
5595
5596     <listitem>
5597      <para>
5598       Fix race conditions during server process exit (Robert Haas)
5599      </para>
5600
5601      <para>
5602       Ensure that signal handlers don't attempt to use the
5603       process's <varname>MyProc</> pointer after it's no longer valid.
5604      </para>
5605     </listitem>
5606
5607 <!--
5608 Author: Tom Lane <tgl@sss.pgh.pa.us>
5609 Branch: master [214c7a4f0] 2014-02-01 16:21:23 -0500
5610 Branch: REL9_3_STABLE [6f1a40773] 2014-02-01 16:21:30 -0500
5611 Branch: REL9_2_STABLE [81b116d98] 2014-02-01 16:21:33 -0500
5612 Branch: REL9_1_STABLE [03f06ff38] 2014-02-01 16:21:38 -0500
5613 -->
5614
5615     <listitem>
5616      <para>
5617       Fix race conditions in walsender shutdown logic and walreceiver
5618       SIGHUP signal handler (Tom Lane)
5619      </para>
5620     </listitem>
5621
5622 <!--
5623 Author: Tom Lane <tgl@sss.pgh.pa.us>
5624 Branch: master [571addd72] 2014-01-29 20:04:43 -0500
5625 Branch: REL9_3_STABLE [bf8ee6f15] 2014-01-29 20:04:01 -0500
5626 Branch: REL9_2_STABLE [3e71ce1e9] 2014-01-29 20:04:05 -0500
5627 Branch: REL9_1_STABLE [af259c691] 2014-01-29 20:04:08 -0500
5628 Branch: REL9_0_STABLE [d17a667e8] 2014-01-29 20:04:11 -0500
5629 Branch: REL8_4_STABLE [01b882fd8] 2014-01-29 20:04:14 -0500
5630 -->
5631
5632     <listitem>
5633      <para>
5634       Fix unsafe references to <varname>errno</> within error reporting
5635       logic (Christian Kruse)
5636      </para>
5637
5638      <para>
5639       This would typically lead to odd behaviors such as missing or
5640       inappropriate <literal>HINT</> fields.
5641      </para>
5642     </listitem>
5643
5644 <!--
5645 Author: Tom Lane <tgl@sss.pgh.pa.us>
5646 Branch: master [910bac595] 2014-01-11 16:36:07 -0500
5647 Branch: REL9_3_STABLE [5bfcc9ec5] 2014-01-11 16:35:30 -0500
5648 Branch: REL9_2_STABLE [2de905186] 2014-01-11 16:35:34 -0500
5649 Branch: REL9_1_STABLE [3f721588a] 2014-01-11 16:35:37 -0500
5650 Branch: REL9_0_STABLE [d9c4442b8] 2014-01-11 16:35:41 -0500
5651 Branch: REL8_4_STABLE [d0070ac81] 2014-01-11 16:35:44 -0500
5652 -->
5653
5654     <listitem>
5655      <para>
5656       Fix possible crashes from using <function>ereport()</> too early
5657       during server startup (Tom Lane)
5658      </para>
5659
5660      <para>
5661       The principal case we've seen in the field is a crash if the server
5662       is started in a directory it doesn't have permission to read.
5663      </para>
5664     </listitem>
5665
5666 <!--
5667 Author: Tom Lane <tgl@sss.pgh.pa.us>
5668 Branch: master [74242c23c] 2013-12-05 12:48:28 -0500
5669 Branch: REL9_3_STABLE [2a6e1a554] 2013-12-05 12:48:31 -0500
5670 Branch: REL9_2_STABLE [41042970b] 2013-12-05 12:48:35 -0500
5671 Branch: REL9_1_STABLE [ad910ccdc] 2013-12-05 12:48:37 -0500
5672 Branch: REL9_0_STABLE [36352ceb4] 2013-12-05 12:48:41 -0500
5673 Branch: REL8_4_STABLE [7635dae55] 2013-12-05 12:48:44 -0500
5674 -->
5675
5676     <listitem>
5677      <para>
5678       Clear retry flags properly in OpenSSL socket write
5679       function (Alexander Kukushkin)
5680      </para>
5681
5682      <para>
5683       This omission could result in a server lockup after unexpected loss
5684       of an SSL-encrypted connection.
5685      </para>
5686     </listitem>
5687
5688 <!--
5689 Author: Tom Lane <tgl@sss.pgh.pa.us>
5690 Branch: master [44c216330] 2014-02-13 14:24:42 -0500
5691 Branch: REL9_3_STABLE [ca1c17181] 2014-02-13 14:24:45 -0500
5692 Branch: REL9_2_STABLE [8439ee415] 2014-02-13 14:24:49 -0500
5693 Branch: REL9_1_STABLE [170590261] 2014-02-13 14:24:52 -0500
5694 Branch: REL9_0_STABLE [148052d25] 2014-02-13 14:24:55 -0500
5695 Branch: REL8_4_STABLE [a8a46d846] 2014-02-13 14:24:58 -0500
5696 -->
5697
5698     <listitem>
5699      <para>
5700       Fix length checking for Unicode identifiers (<literal>U&amp;"..."</>
5701       syntax) containing escapes (Tom Lane)
5702      </para>
5703
5704      <para>
5705       A spurious truncation warning would be printed for such identifiers
5706       if the escaped form of the identifier was too long, but the
5707       identifier actually didn't need truncation after de-escaping.
5708      </para>
5709     </listitem>
5710
5711 <!--
5712 Author: Tom Lane <tgl@sss.pgh.pa.us>
5713 Branch: master [0c2338abb] 2014-02-03 19:47:57 -0500
5714 Branch: REL9_3_STABLE [4c70cb1d3] 2014-02-03 19:48:00 -0500
5715 -->
5716
5717     <listitem>
5718      <para>
5719       Fix parsing of Unicode literals and identifiers just before the end
5720       of a command string or function body (Tom Lane)
5721      </para>
5722     </listitem>
5723
5724 <!--
5725 Author: Stephen Frost <sfrost@snowman.net>
5726 Branch: master [6c36f383d] 2014-01-21 22:49:22 -0500
5727 Branch: REL9_3_STABLE [d1e3070f0] 2014-01-21 22:56:30 -0500
5728 Branch: REL9_2_STABLE [c0e6169e1] 2014-01-21 22:56:34 -0500
5729 Branch: REL9_1_STABLE [cbd850bf6] 2014-01-21 23:00:58 -0500
5730 Branch: REL9_0_STABLE [f2eede9b5] 2014-01-21 23:01:40 -0500
5731 -->
5732
5733     <listitem>
5734      <para>
5735       Allow keywords that are type names to be used in lists of roles
5736       (Stephen Frost)
5737      </para>
5738
5739      <para>
5740       A previous patch allowed such keywords to be used without quoting
5741       in places such as role identifiers; but it missed cases where a
5742       list of role identifiers was permitted, such as <literal>DROP ROLE</>.
5743      </para>
5744     </listitem>
5745
5746 <!--
5747 Author: Tom Lane <tgl@sss.pgh.pa.us>
5748 Branch: master [7ab321404] 2013-12-02 20:28:45 -0500
5749 Branch: REL9_3_STABLE [b44ae4893] 2013-12-02 20:28:49 -0500
5750 Branch: REL9_2_STABLE [6698782f1] 2013-12-02 20:28:53 -0500
5751 Branch: REL9_1_STABLE [f67b8aeab] 2013-12-02 20:28:56 -0500
5752 -->
5753
5754     <listitem>
5755      <para>
5756       Fix parser crash for <literal>EXISTS(SELECT * FROM
5757       zero_column_table)</literal> (Tom Lane)
5758      </para>
5759     </listitem>
5760
5761 <!--
5762 Author: Tom Lane <tgl@sss.pgh.pa.us>
5763 Branch: master [9ec6199d1] 2013-12-10 16:10:17 -0500
5764 Branch: REL9_3_STABLE [9d2e07fec] 2013-12-10 16:10:20 -0500
5765 Branch: REL9_2_STABLE [f5d9fdcc7] 2013-12-10 16:10:24 -0500
5766 Branch: REL9_1_STABLE [48e5cfde8] 2013-12-10 16:10:28 -0500
5767 Branch: REL9_0_STABLE [41e9990cd] 2013-12-10 16:10:31 -0500
5768 Branch: REL8_4_STABLE [884c6384a] 2013-12-10 16:10:36 -0500
5769 -->
5770
5771     <listitem>
5772      <para>
5773       Fix possible crash due to invalid plan for nested sub-selects, such
5774       as <literal>WHERE (... x IN (SELECT ...) ...) IN (SELECT ...)</>
5775       (Tom Lane)
5776      </para>
5777     </listitem>
5778
5779 <!--
5780 Author: Tom Lane <tgl@sss.pgh.pa.us>
5781 Branch: master [043f6ff05] 2014-01-30 14:51:16 -0500
5782 Branch: REL9_3_STABLE [a4aa854ca] 2014-01-30 14:51:19 -0500
5783 -->
5784
5785     <listitem>
5786      <para>
5787       Fix mishandling of <literal>WHERE</> conditions pulled up from
5788       a <literal>LATERAL</> subquery (Tom Lane)
5789      </para>
5790
5791      <para>
5792       The typical symptom of this bug was a <quote>JOIN qualification
5793       cannot refer to other relations</> error, though subtle logic
5794       errors in created plans seem possible as well.
5795      </para>
5796     </listitem>
5797
5798 <!--
5799 Author: Tom Lane <tgl@sss.pgh.pa.us>
5800 Branch: master [158b7fa6a] 2014-01-11 19:03:12 -0500
5801 Branch: REL9_3_STABLE [27ff4cfe7] 2014-01-11 19:03:15 -0500
5802 -->
5803
5804     <listitem>
5805      <para>
5806       Disallow <literal>LATERAL</> references to the target table of
5807       an <literal>UPDATE/DELETE</> (Tom Lane)
5808      </para>
5809
5810      <para>
5811       While this might be allowed in some future release, it was
5812       unintentional in 9.3, and didn't work quite right anyway.
5813      </para>
5814     </listitem>
5815
5816 <!--
5817 Author: Tom Lane <tgl@sss.pgh.pa.us>
5818 Branch: master [c03ad5602] 2013-12-14 17:33:53 -0500
5819 Branch: REL9_3_STABLE [324577f39] 2013-12-14 17:33:56 -0500
5820 Branch: REL9_2_STABLE [5d545b7ed] 2013-12-14 17:34:00 -0500
5821 -->
5822
5823     <listitem>
5824      <para>
5825       Fix <literal>UPDATE/DELETE</> of an inherited target table
5826       that has <literal>UNION ALL</> subqueries (Tom Lane)
5827      </para>
5828
5829      <para>
5830       Without this fix, <literal>UNION ALL</> subqueries aren't correctly
5831       inserted into the update plans for inheritance child tables after the
5832       first one, typically resulting in no update happening for those child
5833       table(s).
5834      </para>
5835     </listitem>
5836
5837 <!--
5838 Author: Tom Lane <tgl@sss.pgh.pa.us>
5839 Branch: master [4eeda92d8] 2013-12-23 22:18:48 -0500
5840 Branch: REL9_3_STABLE [663f8419b] 2013-12-23 22:18:23 -0500
5841 -->
5842
5843     <listitem>
5844      <para>
5845       Fix <command>ANALYZE</> to not fail on a column that's a domain over
5846       a range type (Tom Lane)
5847      </para>
5848     </listitem>
5849
5850 <!--
5851 Author: Tom Lane <tgl@sss.pgh.pa.us>
5852 Branch: master [628652620] 2014-01-11 13:42:42 -0500
5853 Branch: REL9_3_STABLE [36785a21b] 2014-01-11 13:41:51 -0500
5854 Branch: REL9_2_STABLE [f0381680f] 2014-01-11 13:41:56 -0500
5855 Branch: REL9_1_STABLE [9387f4e1b] 2014-01-11 13:42:00 -0500
5856 Branch: REL9_0_STABLE [2d76d75d9] 2014-01-11 13:42:05 -0500
5857 Branch: REL8_4_STABLE [00b77771a] 2014-01-11 13:42:11 -0500
5858 -->
5859
5860     <listitem>
5861      <para>
5862       Ensure that <command>ANALYZE</> creates statistics for a table column
5863       even when all the values in it are <quote>too wide</> (Tom Lane)
5864      </para>
5865
5866      <para>
5867       <command>ANALYZE</> intentionally omits very wide values from its
5868       histogram and most-common-values calculations, but it neglected to do
5869       something sane in the case that all the sampled entries are too wide.
5870      </para>
5871     </listitem>
5872
5873 <!--
5874 Author: Stephen Frost <sfrost@snowman.net>
5875 Branch: master [6f25c62d7] 2014-01-18 18:41:52 -0500
5876 Branch: REL9_3_STABLE [86e58ae02] 2014-01-18 18:49:08 -0500
5877 Branch: REL9_2_STABLE [1fe06595a] 2014-01-18 18:49:41 -0500
5878 Branch: REL9_1_STABLE [d2636486b] 2014-01-18 18:50:09 -0500
5879 Branch: REL9_0_STABLE [e70c42821] 2014-01-18 18:50:29 -0500
5880 Branch: REL8_4_STABLE [0fb4e3ceb] 2014-01-18 18:50:47 -0500
5881 -->
5882
5883     <listitem>
5884      <para>
5885       In <literal>ALTER TABLE ... SET TABLESPACE</>, allow the database's
5886       default tablespace to be used without a permissions check
5887       (Stephen Frost)
5888      </para>
5889
5890      <para>
5891       <literal>CREATE TABLE</> has always allowed such usage,
5892       but <literal>ALTER TABLE</> didn't get the memo.
5893      </para>
5894     </listitem>
5895
5896 <!--
5897 Author: Tom Lane <tgl@sss.pgh.pa.us>
5898 Branch: master [c01bc51f8] 2013-12-30 14:00:02 -0500
5899 Branch: REL9_3_STABLE [9a6e2b150] 2013-12-30 14:00:05 -0500
5900 -->
5901
5902     <listitem>
5903      <para>
5904       Fix support for extensions containing event triggers (Tom Lane)
5905      </para>
5906     </listitem>
5907
5908 <!--
5909 Author: Tom Lane <tgl@sss.pgh.pa.us>
5910 Branch: master [080b7db72] 2014-01-08 20:18:58 -0500
5911 Branch: REL9_3_STABLE [47ac4473a] 2014-01-08 20:18:10 -0500
5912 Branch: REL9_2_STABLE [97a39f295] 2014-01-08 20:18:13 -0500
5913 Branch: REL9_1_STABLE [6c6c53d0b] 2014-01-08 20:18:17 -0500
5914 Branch: REL9_0_STABLE [6ca712fb9] 2014-01-08 20:18:20 -0500
5915 Branch: REL8_4_STABLE [57ac7d8a7] 2014-01-08 20:18:24 -0500
5916 -->
5917
5918     <listitem>
5919      <para>
5920       Fix <quote>cannot accept a set</> error when some arms of
5921       a <literal>CASE</> return a set and others don't (Tom Lane)
5922      </para>
5923     </listitem>
5924
5925 <!--
5926 Author: Andrew Dunstan <andrew@dunslane.net>
5927 Branch: master [d3ee45152] 2014-02-03 10:40:12 -0500
5928 Branch: REL9_3_STABLE [cdfbb78f0] 2014-02-03 10:39:13 -0500
5929 -->
5930
5931     <listitem>
5932      <para>
5933       Fix memory leakage in JSON functions (Craig Ringer)
5934      </para>
5935     </listitem>
5936
5937 <!--
5938 Author: Andrew Dunstan <andrew@dunslane.net>
5939 Branch: master [29dcf7ded] 2013-12-27 17:04:00 -0500
5940 Branch: REL9_3_STABLE [7dfd9f6f5] 2013-12-27 17:21:04 -0500
5941 Branch: REL9_2_STABLE [4825a9e95] 2013-12-27 17:21:27 -0500
5942 -->
5943
5944     <listitem>
5945      <para>
5946       Properly distinguish numbers from non-numbers when generating JSON
5947       output (Andrew Dunstan)
5948      </para>
5949     </listitem>
5950
5951 <!--
5952 Author: Kevin Grittner <kgrittn@postgresql.org>
5953 Branch: master [a133bf703] 2013-12-27 15:26:24 -0600
5954 Branch: REL9_3_STABLE [28b60aa23] 2013-12-27 15:40:51 -0600
5955 Branch: REL9_2_STABLE [150a30e19] 2013-12-27 15:41:02 -0600
5956 Branch: REL9_1_STABLE [1f069d21d] 2013-12-27 15:41:18 -0600
5957 Branch: REL9_0_STABLE [918d74a07] 2013-12-27 15:41:32 -0600
5958 Branch: REL8_4_STABLE [b2d80147d] 2013-12-27 15:41:46 -0600
5959 -->
5960
5961     <listitem>
5962      <para>
5963       Fix checks for all-zero client addresses in pgstat functions (Kevin
5964       Grittner)
5965      </para>
5966     </listitem>
5967
5968 <!--
5969 Author: Tom Lane <tgl@sss.pgh.pa.us>
5970 Branch: master [082c0dfa1] 2014-02-01 18:27:34 -0500
5971 Branch: REL9_3_STABLE [9beffdcc3] 2014-02-01 18:27:40 -0500
5972 Branch: REL9_2_STABLE [8be095cea] 2014-02-01 18:27:44 -0500
5973 Branch: REL9_1_STABLE [399d23e19] 2014-02-01 18:27:48 -0500
5974 Branch: REL9_0_STABLE [3c7b4ef70] 2014-02-01 18:27:54 -0500
5975 Branch: REL8_4_STABLE [56f5d3424] 2014-02-01 18:27:12 -0500
5976 -->
5977
5978     <listitem>
5979      <para>
5980       Fix possible misclassification of multibyte characters by the text
5981       search parser (Tom Lane)
5982      </para>
5983
5984      <para>
5985       Non-ASCII characters could be misclassified when using C locale with
5986       a multibyte encoding.  On Cygwin, non-C locales could fail as well.
5987      </para>
5988     </listitem>
5989
5990 <!--
5991 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
5992 Branch: master [6c2744f1d] 2014-02-10 09:57:59 +0200
5993 Branch: REL9_3_STABLE [928aec71c] 2014-02-10 09:59:49 +0200
5994 Branch: REL9_2_STABLE [f3807106b] 2014-02-10 10:00:04 +0200
5995 Branch: REL9_1_STABLE [5f778e644] 2014-02-10 10:00:23 +0200
5996 Branch: REL9_0_STABLE [fe8a6f53e] 2014-02-10 10:00:36 +0200
5997 Branch: REL8_4_STABLE [6141983fb] 2014-02-10 10:00:50 +0200
5998 -->
5999
6000     <listitem>
6001      <para>
6002       Fix possible misbehavior in <function>plainto_tsquery()</>
6003       (Heikki Linnakangas)
6004      </para>
6005
6006      <para>
6007       Use <function>memmove()</> not <function>memcpy()</> for copying
6008       overlapping memory regions.  There have been no field reports of
6009       this actually causing trouble, but it's certainly risky.
6010      </para>
6011     </listitem>
6012
6013 <!--
6014 Author: Magnus Hagander <magnus@hagander.net>
6015 Branch: master [9544cc0d6] 2014-01-07 17:50:56 +0100
6016 Branch: REL9_3_STABLE [91c2755fc] 2014-01-07 17:51:02 +0100
6017 Branch: REL9_2_STABLE [61d4d14ee] 2014-01-07 17:53:00 +0100
6018 Branch: REL9_1_STABLE [026a91f86] 2014-01-07 18:00:36 +0100
6019 -->
6020
6021     <listitem>
6022      <para>
6023       Fix placement of permissions checks in <function>pg_start_backup()</>
6024       and <function>pg_stop_backup()</> (Andres Freund, Magnus Hagander)
6025      </para>
6026
6027      <para>
6028       The previous coding might attempt to do catalog access when it
6029       shouldn't.
6030      </para>
6031     </listitem>
6032
6033 <!--
6034 Author: Tatsuo Ishii <ishii@postgresql.org>
6035 Branch: master [1f0626ee4] 2013-12-15 11:09:05 +0900
6036 Branch: REL9_3_STABLE [8122e6f85] 2013-12-15 11:10:41 +0900
6037 Branch: REL9_2_STABLE [0c07ef1ad] 2013-12-15 11:10:49 +0900
6038 Branch: REL9_1_STABLE [035226c61] 2013-12-15 11:10:56 +0900
6039 Branch: REL9_0_STABLE [7016d970d] 2013-12-15 11:11:02 +0900
6040 Branch: REL8_4_STABLE [69f77d756] 2013-12-15 11:11:11 +0900
6041 -->
6042
6043     <listitem>
6044      <para>
6045       Accept <literal>SHIFT_JIS</> as an encoding name for locale checking
6046       purposes (Tatsuo Ishii)
6047      </para>
6048     </listitem>
6049
6050 <!--
6051 Author: Tom Lane <tgl@sss.pgh.pa.us>
6052 Branch: master [0def2573c] 2014-02-03 14:47:17 -0500
6053 Branch: REL9_3_STABLE [641c08041] 2014-02-03 14:46:54 -0500
6054 Branch: REL9_2_STABLE [888b56570] 2014-02-03 14:46:57 -0500
6055 -->
6056
6057     <listitem>
6058      <para>
6059       Fix <literal>*</>-qualification of named parameters in SQL-language
6060       functions (Tom Lane)
6061      </para>
6062
6063      <para>
6064       Given a composite-type parameter
6065       named <literal>foo</>, <literal>$1.*</> worked fine,
6066       but <literal>foo.*</> not so much.
6067      </para>
6068     </listitem>
6069
6070 <!--
6071 Author: Fujii Masao <fujii@postgresql.org>
6072 Branch: master [77035fa8a] 2014-01-23 22:58:58 +0900
6073 Branch: REL9_3_STABLE [be5d49974] 2014-01-23 23:00:30 +0900
6074 Branch: REL9_2_STABLE [ea311bfdf] 2014-01-23 23:01:06 +0900
6075 Branch: REL9_1_STABLE [1b384aff1] 2014-01-23 23:01:34 +0900
6076 Branch: REL9_0_STABLE [996b21cbf] 2014-01-23 23:02:03 +0900
6077 Branch: REL8_4_STABLE [5525529db] 2014-01-23 23:02:30 +0900
6078 -->
6079
6080     <listitem>
6081      <para>
6082       Fix misbehavior of <function>PQhost()</> on Windows (Fujii Masao)
6083      </para>
6084
6085      <para>
6086       It should return <literal>localhost</> if no host has been specified.
6087      </para>
6088     </listitem>
6089
6090 <!--
6091 Author: Tom Lane <tgl@sss.pgh.pa.us>
6092 Branch: master [b8f00a46b] 2014-02-13 18:45:58 -0500
6093 Branch: REL9_3_STABLE [f208fb436] 2014-02-13 18:46:03 -0500
6094 Branch: REL9_2_STABLE [2573f08a1] 2014-02-13 18:45:20 -0500
6095 Branch: REL9_1_STABLE [7182bd239] 2014-02-13 18:45:23 -0500
6096 Branch: REL9_0_STABLE [218dd205b] 2014-02-13 18:45:27 -0500
6097 Branch: REL8_4_STABLE [7644a7bd8] 2014-02-13 18:45:32 -0500
6098 -->
6099
6100     <listitem>
6101      <para>
6102       Improve error handling in <application>libpq</> and <application>psql</>
6103       for failures during <literal>COPY TO STDOUT/FROM STDIN</> (Tom Lane)
6104      </para>
6105
6106      <para>
6107       In particular this fixes an infinite loop that could occur in 9.2 and
6108       up if the server connection was lost during <literal>COPY FROM
6109       STDIN</>.  Variants of that scenario might be possible in older
6110       versions, or with other client applications.
6111      </para>
6112     </listitem>
6113
6114 <!--
6115 Author: Tom Lane <tgl@sss.pgh.pa.us>
6116 Branch: master [92459e7a7] 2014-01-04 16:05:16 -0500
6117 Branch: REL9_3_STABLE [341f0bc49] 2014-01-04 16:05:20 -0500
6118 Branch: REL9_2_STABLE [fa28f9cba] 2014-01-04 16:05:23 -0500
6119 -->
6120
6121     <listitem>
6122      <para>
6123       Fix incorrect translation handling in
6124       some <application>psql</> <literal>\d</> commands
6125       (Peter Eisentraut, Tom Lane)
6126      </para>
6127     </listitem>
6128
6129 <!--
6130 Author: Magnus Hagander <magnus@hagander.net>
6131 Branch: master [63ab2befe] 2014-02-12 18:45:18 +0100
6132 Branch: REL9_3_STABLE [c90204c60] 2014-02-12 18:46:04 +0100
6133 Branch: REL9_2_STABLE [0ae288d2d] 2014-02-12 14:51:00 +0100
6134 -->
6135
6136     <listitem>
6137      <para>
6138       Ensure <application>pg_basebackup</>'s background process is killed
6139       when exiting its foreground process (Magnus Hagander)
6140      </para>
6141     </listitem>
6142
6143 <!--
6144 Author: Magnus Hagander <magnus@hagander.net>
6145 Branch: master [01025d80a] 2014-02-09 12:05:14 +0100
6146 Branch: REL9_3_STABLE [680baa8d2] 2014-02-09 12:09:18 +0100
6147 Branch: REL9_2_STABLE [165aa1da5] 2014-02-09 12:09:39 +0100
6148 Branch: REL9_1_STABLE [c6e5c4dd1] 2014-02-09 12:09:55 +0100
6149 -->
6150
6151     <listitem>
6152      <para>
6153       Fix possible incorrect printing of filenames
6154       in <application>pg_basebackup</>'s verbose mode (Magnus Hagander)
6155      </para>
6156     </listitem>
6157
6158 <!--
6159 Author: Magnus Hagander <magnus@hagander.net>
6160 Branch: master [b168c5ef2] 2014-01-07 17:11:32 +0100
6161 Branch: REL9_3_STABLE [0463b9419] 2014-01-07 17:11:51 +0100
6162 Branch: REL9_2_STABLE [2edf3e82c] 2014-01-07 17:22:36 +0100
6163 Branch: REL9_1_STABLE [773e4d5e4] 2014-01-07 17:18:02 +0100
6164 -->
6165
6166     <listitem>
6167      <para>
6168       Avoid including tablespaces inside PGDATA twice in base backups
6169       (Dimitri Fontaine, Magnus Hagander)
6170      </para>
6171     </listitem>
6172
6173 <!--
6174 Author: Michael Meskes <meskes@postgresql.org>
6175 Branch: master [d685e2424] 2014-01-09 16:20:19 +0100
6176 Branch: REL9_3_STABLE [28fff0ef8] 2014-01-09 15:41:51 +0100
6177 Branch: REL9_2_STABLE [799728b0b] 2014-01-09 15:50:51 +0100
6178 Branch: REL9_1_STABLE [9f5b3a1a1] 2014-01-09 15:51:11 +0100
6179 Branch: REL9_0_STABLE [a29b6c342] 2014-01-09 15:51:23 +0100
6180 Branch: REL8_4_STABLE [d68a65b01] 2014-01-09 15:58:37 +0100
6181 -->
6182
6183     <listitem>
6184      <para>
6185       Fix misaligned descriptors in <application>ecpg</> (MauMau)
6186      </para>
6187     </listitem>
6188
6189 <!--
6190 Author: Michael Meskes <meskes@postgresql.org>
6191 Branch: master [7c957ec83] 2014-01-01 12:39:31 +0100
6192 Branch: REL9_3_STABLE [8404037d8] 2014-01-01 12:40:28 +0100
6193 Branch: REL9_2_STABLE [119a59879] 2014-01-01 12:40:42 +0100
6194 Branch: REL9_1_STABLE [948498274] 2014-01-01 12:44:15 +0100
6195 Branch: REL9_0_STABLE [17bcdd01f] 2014-01-01 12:44:44 +0100
6196 Branch: REL8_4_STABLE [96de4939c] 2014-01-01 12:44:58 +0100
6197 -->
6198
6199     <listitem>
6200      <para>
6201       In <application>ecpg</>, handle lack of a hostname in the connection
6202       parameters properly (Michael Meskes)
6203      </para>
6204     </listitem>
6205
6206 <!--
6207 Author: Joe Conway <mail@joeconway.com>
6208 Branch: master [d6ca510d9] 2013-12-07 17:00:26 -0800
6209 Branch: REL9_3_STABLE [0ec530625] 2013-12-07 17:00:10 -0800
6210 Branch: REL9_2_STABLE [7f4ef622f] 2013-12-07 16:59:35 -0800
6211 Branch: REL9_1_STABLE [70165f25b] 2013-12-07 16:59:16 -0800
6212 Branch: REL9_0_STABLE [9057adc23] 2013-12-07 16:58:41 -0800
6213 Branch: REL8_4_STABLE [6c8b16e30] 2013-12-07 16:56:34 -0800
6214 -->
6215
6216     <listitem>
6217      <para>
6218       Fix performance regression in <filename>contrib/dblink</> connection
6219       startup (Joe Conway)
6220      </para>
6221
6222      <para>
6223       Avoid an unnecessary round trip when client and server encodings match.
6224      </para>
6225     </listitem>
6226
6227 <!--
6228 Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
6229 Branch: master [866a1f092] 2014-01-13 15:43:29 +0200
6230 Branch: REL9_3_STABLE [50c5770ec] 2014-01-13 15:43:59 +0200
6231 Branch: REL9_2_STABLE [f6d6b42f2] 2014-01-13 15:44:02 +0200
6232 Branch: REL9_1_STABLE [5143dfd57] 2014-01-13 15:44:04 +0200
6233 Branch: REL9_0_STABLE [6c3f040be] 2014-01-13 15:44:12 +0200
6234 Branch: REL8_4_STABLE [492b68541] 2014-01-13 15:44:14 +0200
6235 -->
6236
6237     <listitem>
6238      <para>
6239       In <filename>contrib/isn</>, fix incorrect calculation of the check
6240       digit for ISMN values (Fabien Coelho)
6241      </para>
6242     </listitem>
6243
6244 <!--
6245 Author: Tatsuo Ishii <ishii@postgresql.org>
6246 Branch: master [841a65482] 2013-12-12 19:10:35 +0900
6247 Branch: REL9_3_STABLE [27902bc91] 2013-12-12 19:07:53 +0900
6248 -->
6249
6250     <listitem>
6251      <para>
6252       Fix <filename>contrib/pgbench</>'s progress logging to avoid overflow
6253       when the scale factor is large (Tatsuo Ishii)
6254      </para>
6255     </listitem>
6256
6257 <!--
6258 Author: Tom Lane <tgl@sss.pgh.pa.us>
6259 Branch: master [69c7a9838] 2014-01-21 16:34:28 -0500
6260 Branch: REL9_3_STABLE [0950d67ee] 2014-01-21 16:34:31 -0500
6261 Branch: REL9_2_STABLE [27ab1eb7e] 2014-01-21 16:34:35 -0500
6262 -->
6263
6264     <listitem>
6265      <para>
6266       Fix <filename>contrib/pg_stat_statement</>'s handling
6267       of <literal>CURRENT_DATE</> and related constructs (Kyotaro
6268       Horiguchi)
6269      </para>
6270     </listitem>
6271
6272 <!--
6273 Author: Tom Lane <tgl@sss.pgh.pa.us>
6274 Branch: master [00d4f2af8] 2014-02-03 21:30:20 -0500
6275 Branch: REL9_3_STABLE [eb3d350db] 2014-02-03 21:30:28 -0500
6276 -->
6277
6278     <listitem>
6279      <para>
6280       Improve lost-connection error handling
6281       in <filename>contrib/postgres_fdw</> (Tom Lane)
6282      </para>
6283     </listitem>
6284
6285 <!--
6286 Author: Peter Eisentraut <peter_e@gmx.net>
6287 Branch: master [ad6bf0291] 2014-01-17 23:08:22 -0500
6288 Branch: REL9_3_STABLE [586bea612] 2014-01-17 23:11:02 -0500
6289 Branch: REL9_2_STABLE [526e38751] 2014-01-17 23:12:50 -0500
6290 Branch: REL9_1_STABLE [6d969b000] 2014-01-17 23:14:21 -0500
6291 Branch: REL9_0_STABLE [2346c383a] 2014-01-17 23:15:00 -0500
6292 Branch: REL8_4_STABLE [15699d9bf] 2014-01-17 23:17:59 -0500
6293 -->
6294
6295     <listitem>
6296      <para>
6297       Ensure client-code-only installation procedure works as documented
6298       (Peter Eisentraut)
6299      </para>
6300     </listitem>
6301
6302 <!--
6303 Author: Andrew Dunstan <andrew@dunslane.net>
6304 Branch: master [d587298b8] 2014-02-01 15:11:13 -0500
6305 Branch: REL9_3_STABLE [1e9876c3b] 2014-02-01 15:16:06 -0500
6306 Branch: REL9_2_STABLE [6e96d4db8] 2014-02-01 15:16:18 -0500
6307 Branch: REL9_1_STABLE [dfb4a1a21] 2014-02-01 15:16:29 -0500
6308 Branch: REL9_0_STABLE [59d64e7f3] 2014-02-01 15:16:40 -0500
6309 Branch: REL8_4_STABLE [ae3c98b9b] 2014-02-01 15:16:52 -0500
6310 -->
6311
6312     <listitem>
6313      <para>
6314       In Mingw and Cygwin builds, install the <application>libpq</> DLL
6315       in the <filename>bin</> directory (Andrew Dunstan)
6316      </para>
6317
6318      <para>
6319       This duplicates what the MSVC build has long done.  It should fix
6320       problems with programs like <application>psql</> failing to start
6321       because they can't find the DLL.
6322      </para>
6323     </listitem>
6324
6325 <!--
6326 Author: Andrew Dunstan <andrew@dunslane.net>
6327 Branch: master [7e1531a45] 2014-02-01 16:08:33 -0500
6328 Branch: REL9_3_STABLE [27942baf4] 2014-02-01 16:13:32 -0500
6329 Branch: REL9_2_STABLE [fad443753] 2014-02-01 16:13:46 -0500
6330 Branch: REL9_1_STABLE [e5c22c15d] 2014-02-01 16:14:01 -0500
6331 Branch: REL9_0_STABLE [1c0bf372f] 2014-02-01 16:14:15 -0500
6332 -->
6333
6334     <listitem>
6335      <para>
6336       Avoid using the deprecated <literal>dllwrap</> tool in Cygwin builds
6337       (Marco Atzeri)
6338      </para>
6339     </listitem>
6340
6341 <!--
6342 Author: Andrew Dunstan <andrew@dunslane.net>
6343 Branch: master [cec8394b5] 2014-01-26 09:49:10 -0500
6344 Branch: REL9_3_STABLE [56c08df55] 2014-01-26 09:45:43 -0500
6345 -->
6346
6347     <listitem>
6348      <para>
6349       Enable building with Visual Studio 2013 (Brar Piening)
6350      </para>
6351     </listitem>
6352
6353 <!--
6354 Author: Tom Lane <tgl@sss.pgh.pa.us>
6355 Branch: master [289541520] 2014-02-10 20:48:04 -0500
6356 Branch: REL9_3_STABLE [f1e522696] 2014-02-10 20:48:12 -0500
6357 Branch: REL9_2_STABLE [dd5605104] 2014-02-10 20:48:20 -0500
6358 Branch: REL9_1_STABLE [3bf5c16f1] 2014-02-10 20:48:23 -0500
6359 Branch: REL9_0_STABLE [e1e7642bd] 2014-02-10 20:48:27 -0500
6360 Branch: REL8_4_STABLE [432735cbf] 2014-02-10 20:48:30 -0500
6361 -->
6362
6363     <listitem>
6364      <para>
6365       Don't generate plain-text <filename>HISTORY</>
6366       and <filename>src/test/regress/README</> files anymore (Tom Lane)
6367      </para>
6368
6369      <para>
6370       These text files duplicated the main HTML and PDF documentation
6371       formats.  The trouble involved in maintaining them greatly outweighs
6372       the likely audience for plain-text format.  Distribution tarballs
6373       will still contain files by these names, but they'll just be stubs
6374       directing the reader to consult the main documentation.
6375       The plain-text <filename>INSTALL</> file will still be maintained, as
6376       there is arguably a use-case for that.
6377      </para>
6378     </listitem>
6379
6380 <!--
6381 Author: Tom Lane <tgl@sss.pgh.pa.us>
6382 Branch: master [e04641f4b] 2014-02-14 21:59:13 -0500
6383 Branch: REL9_3_STABLE [46cbcd50e] 2014-02-14 21:59:37 -0500
6384 Branch: REL9_2_STABLE [4f975b68b] 2014-02-14 21:59:42 -0500
6385 Branch: REL9_1_STABLE [3212ba534] 2014-02-14 21:59:46 -0500
6386 Branch: REL9_0_STABLE [cb84fddd9] 2014-02-14 21:59:50 -0500
6387 Branch: REL8_4_STABLE [c0c2d62ac] 2014-02-14 21:59:56 -0500
6388 -->
6389
6390     <listitem>
6391      <para>
6392       Update time zone data files to <application>tzdata</> release 2013i
6393       for DST law changes in Jordan and historical changes in Cuba.
6394      </para>
6395
6396      <para>
6397       In addition, the zones <literal>Asia/Riyadh87</>,
6398       <literal>Asia/Riyadh88</>, and <literal>Asia/Riyadh89</> have been
6399       removed, as they are no longer maintained by IANA, and never
6400       represented actual civil timekeeping practice.
6401      </para>
6402     </listitem>
6403
6404    </itemizedlist>
6405
6406   </sect2>
6407  </sect1>
6408
6409  <sect1 id="release-9-3-2">
6410   <title>Release 9.3.2</title>
6411
6412   <note>
6413   <title>Release Date</title>
6414   <simpara>2013-12-05</simpara>
6415   </note>
6416
6417   <para>
6418    This release contains a variety of fixes from 9.3.1.
6419    For information about new features in the 9.3 major release, see
6420    <xref linkend="release-9-3">.
6421   </para>
6422
6423   <sect2>
6424    <title>Migration to Version 9.3.2</title>
6425
6426    <para>
6427     A dump/restore is not required for those running 9.3.X.
6428    </para>
6429
6430    <para>
6431     However, this release corrects a number of potential data corruption
6432     issues.  See the first three changelog entries below to find out whether
6433     your installation has been affected and what steps you can take if so.
6434    </para>
6435
6436    <para>
6437     Also, if you are upgrading from a version earlier than 9.3.1,
6438     see <xref linkend="release-9-3-1">.
6439    </para>
6440
6441   </sect2>
6442
6443   <sect2>
6444    <title>Changes</title>
6445
6446    <itemizedlist>
6447
6448     <listitem>
6449      <para>
6450       Fix <command>VACUUM</>'s tests to see whether it can
6451       update <structfield>relfrozenxid</> (Andres Freund)
6452      </para>
6453
6454      <para>
6455       In some cases <command>VACUUM</> (either manual or autovacuum) could
6456       incorrectly advance a table's <structfield>relfrozenxid</> value,
6457       allowing tuples to escape freezing, causing those rows to become
6458       invisible once 2^31 transactions have elapsed.  The probability of
6459       data loss is fairly low since multiple incorrect advancements would
6460       need to happen before actual loss occurs, but it's not zero.  In 9.2.0
6461       and later, the probability of loss is higher, and it's also possible
6462       to get <quote>could not access status of transaction</> errors as a
6463       consequence of this bug.  Users upgrading from releases 9.0.4 or 8.4.8
6464       or earlier are not affected, but all later versions contain the bug.
6465      </para>
6466
6467      <para>
6468       The issue can be ameliorated by, after upgrading, vacuuming all tables
6469       in all databases while having <link
6470       linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link>
6471       set to zero.  This will fix any latent corruption but will not be able
6472       to fix all pre-existing data errors.  However, an installation can be
6473       presumed safe after performing this vacuuming if it has executed fewer
6474       than 2^31 update transactions in its lifetime (check this with
6475       <literal>SELECT txid_current() < 2^31</>).
6476      </para>
6477     </listitem>
6478
6479     <listitem>
6480      <para>
6481       Fix multiple bugs in MultiXactId freezing (Andres Freund,
6482       &Aacute;lvaro Herrera)
6483      </para>
6484
6485      <para>
6486       These bugs could lead to <quote>could not access status of
6487       transaction</> errors, or to duplicate or vanishing rows.
6488       Users upgrading from releases prior to 9.3.0 are not affected.
6489      </para>
6490
6491      <para>
6492       The issue can be ameliorated by, after upgrading, vacuuming all tables
6493       in all databases while having <link
6494       linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link>
6495       set to zero.  This will fix latent corruption but will not be able to
6496       fix all pre-existing data errors.
6497      </para>
6498
6499      <para>
6500       As a separate issue, these bugs can also cause standby servers to get
6501       out of sync with the primary, thus exhibiting data errors that are not
6502       in the primary.  Therefore, it's recommended that 9.3.0 and 9.3.1
6503       standby servers be re-cloned from the primary (e.g., with a new base
6504       backup) after upgrading.
6505      </para>
6506     </listitem>
6507
6508     <listitem>
6509      <para>
6510       Fix initialization of <filename>pg_clog</> and <filename>pg_subtrans</>
6511       during hot standby startup (Andres Freund, Heikki Linnakangas)
6512      </para>
6513
6514      <para>
6515       This bug can cause data loss on standby servers at the moment they
6516       start to accept hot-standby queries, by marking committed transactions
6517       as uncommitted. The likelihood of such corruption is small unless, at
6518       the time of standby startup, the primary server has executed many
6519       updating transactions since its last checkpoint.  Symptoms include
6520       missing rows, rows that should have been deleted being still visible,
6521       and obsolete versions of updated rows being still visible alongside
6522       their newer versions.
6523      </para>
6524
6525      <para>
6526       This bug was introduced in versions 9.3.0, 9.2.5, 9.1.10, and 9.0.14.
6527       Standby servers that have only been running earlier releases are not
6528       at risk.  It's recommended that standby servers that have ever run any
6529       of the buggy releases be re-cloned from the primary (e.g., with a new
6530       base backup) after upgrading.
6531      </para>
6532     </listitem>
6533
6534     <listitem>
6535      <para>
6536       Fix multiple bugs in update chain traversal (Andres Freund,
6537       &Aacute;lvaro Herrera)
6538      </para>
6539
6540      <para>
6541       These bugs could result in incorrect behavior, such as locking or even
6542       updating the wrong row, in the presence of concurrent updates.
6543       Spurious <quote>unable to fetch updated version of tuple</> errors
6544       were also possible.
6545      </para>
6546     </listitem>
6547
6548     <listitem>
6549      <para>
6550       Fix dangling-pointer problem in fast-path locking (Tom Lane)
6551      </para>
6552
6553      <para>
6554       This could lead to corruption of the lock data structures in shared
6555       memory, causing <quote>lock already held</> and other odd errors.
6556      </para>
6557     </listitem>
6558
6559     <listitem>
6560      <para>
6561       Fix assorted race conditions in timeout management (Tom Lane)
6562      </para>
6563
6564      <para>
6565       These errors could result in a server process becoming unresponsive
6566       because it had blocked SIGALRM and/or SIGINT.
6567      </para>
6568     </listitem>
6569
6570     <listitem>
6571      <para>
6572       Truncate <filename>pg_multixact</> contents during WAL replay
6573       (Andres Freund)
6574      </para>
6575
6576      <para>
6577       This avoids ever-increasing disk space consumption in standby servers.
6578      </para>
6579     </listitem>
6580
6581     <listitem>
6582      <para>
6583       Ensure an anti-wraparound <command>VACUUM</> counts a page as scanned
6584       when it's only verified that no tuples need freezing (Sergey
6585       Burladyan, Jeff Janes)
6586      </para>
6587
6588      <para>
6589       This bug could result in failing to
6590       advance <structfield>relfrozenxid</>, so that the table would still be
6591       thought to need another anti-wraparound vacuum.  In the worst case the
6592       database might even shut down to prevent wraparound.
6593      </para>
6594     </listitem>
6595
6596     <listitem>
6597      <para>
6598       Fix full-table-vacuum request mechanism for MultiXactIds (Andres Freund)
6599      </para>
6600
6601      <para>
6602       This bug could result in large amounts of useless autovacuum activity.
6603      </para>
6604     </listitem>
6605
6606     <listitem>
6607      <para>
6608       Fix race condition in GIN index posting tree page deletion (Heikki
6609       Linnakangas)
6610      </para>
6611
6612      <para>
6613       This could lead to transient wrong answers or query failures.
6614      </para>
6615     </listitem>
6616
6617     <listitem>
6618      <para>
6619       Fix <quote>unexpected spgdoinsert() failure</> error during SP-GiST
6620       index creation (Teodor Sigaev)
6621      </para>
6622     </listitem>
6623
6624     <listitem>
6625      <para>
6626       Fix assorted bugs in materialized views (Kevin Grittner, Andres Freund)
6627      </para>
6628     </listitem>
6629
6630     <listitem>
6631      <para>
6632       Re-allow duplicate table aliases if they're within aliased JOINs
6633       (Tom Lane)
6634      </para>
6635
6636      <para>
6637       Historically <productname>PostgreSQL</> has accepted queries like
6638 <programlisting>
6639 SELECT ... FROM tab1 x CROSS JOIN (tab2 x CROSS JOIN tab3 y) z
6640 </programlisting>
6641       although a strict reading of the SQL standard would forbid the
6642       duplicate usage of table alias <literal>x</>.  A misguided change in
6643       9.3.0 caused it to reject some such cases that were formerly accepted.
6644       Restore the previous behavior.
6645      </para>
6646     </listitem>
6647
6648     <listitem>
6649      <para>
6650       Avoid flattening a subquery whose <literal>SELECT</> list contains a
6651       volatile function wrapped inside a sub-<literal>SELECT</> (Tom Lane)
6652      </para>
6653
6654      <para>
6655       This avoids unexpected results due to extra evaluations of the
6656       volatile function.
6657      </para>
6658     </listitem>
6659
6660     <listitem>
6661      <para>
6662       Fix planner's processing of non-simple-variable subquery outputs
6663       nested within outer joins (Tom Lane)
6664      </para>
6665
6666      <para>
6667       This error could lead to incorrect plans for queries involving
6668       multiple levels of subqueries within <literal>JOIN</> syntax.
6669      </para>
6670     </listitem>
6671
6672     <listitem>
6673      <para>
6674       Fix incorrect planning in cases where the same non-strict expression
6675       appears in multiple <literal>WHERE</> and outer <literal>JOIN</>
6676       equality clauses (Tom Lane)
6677      </para>
6678     </listitem>
6679
6680     <listitem>
6681      <para>
6682       Fix planner crash with whole-row reference to a subquery (Tom Lane)
6683      </para>
6684     </listitem>
6685
6686     <listitem>
6687      <para>
6688       Fix incorrect generation of optimized MIN()/MAX() plans for
6689       inheritance trees (Tom Lane)
6690      </para>
6691
6692      <para>
6693       The planner could fail in cases where the MIN()/MAX() argument was an
6694       expression rather than a simple variable.
6695      </para>
6696     </listitem>
6697
6698     <listitem>
6699      <para>
6700       Fix premature deletion of temporary files (Andres Freund)
6701      </para>
6702     </listitem>
6703
6704     <listitem>
6705      <para>
6706       Prevent intra-transaction memory leak when printing range values
6707       (Tom Lane)
6708      </para>
6709
6710      <para>
6711       This fix actually cures transient memory leaks in any datatype output
6712       function, but range types are the only ones known to have had a
6713       significant problem.
6714      </para>
6715     </listitem>
6716
6717     <listitem>
6718      <para>
6719       Fix memory leaks when reloading configuration files (Heikki
6720       Linnakangas, Hari Babu)
6721      </para>
6722     </listitem>
6723
6724     <listitem>
6725      <para>
6726       Prevent incorrect display of dropped columns in NOT NULL and CHECK
6727       constraint violation messages (Michael Paquier and Tom Lane)
6728      </para>
6729     </listitem>
6730
6731     <listitem>
6732      <para>
6733       Allow default arguments and named-argument notation for window
6734       functions (Tom Lane)
6735      </para>
6736
6737      <para>
6738       Previously, these cases were likely to crash.
6739      </para>
6740     </listitem>
6741
6742     <listitem>
6743      <para>
6744       Suppress trailing whitespace on each line when pretty-printing rules
6745       and views (Tom Lane)
6746      </para>
6747
6748      <para>
6749       9.3.0 generated such whitespace in many more cases than previous
6750       versions did.  To reduce unexpected behavioral changes, suppress
6751       unnecessary whitespace in all cases.
6752      </para>
6753     </listitem>
6754
6755     <listitem>
6756      <para>
6757       Fix possible read past end of memory in rule printing (Peter Eisentraut)
6758      </para>
6759     </listitem>
6760
6761     <listitem>
6762      <para>
6763       Fix array slicing of <type>int2vector</> and <type>oidvector</> values
6764       (Tom Lane)
6765      </para>
6766
6767      <para>
6768       Expressions of this kind are now implicitly promoted to
6769       regular <type>int2</> or <type>oid</> arrays.
6770      </para>
6771     </listitem>
6772
6773     <listitem>
6774      <para>
6775       Return a valid JSON value when converting an empty <type>hstore</> value
6776       to <type>json</>
6777       (Oskari Saarenmaa)
6778      </para>
6779     </listitem>
6780
6781     <listitem>
6782      <para>
6783       Fix incorrect behaviors when using a SQL-standard, simple GMT offset
6784       timezone (Tom Lane)
6785      </para>
6786
6787      <para>
6788       In some cases, the system would use the simple GMT offset value when
6789       it should have used the regular timezone setting that had prevailed
6790       before the simple offset was selected.  This change also causes
6791       the <function>timeofday</> function to honor the simple GMT offset
6792       zone.
6793      </para>
6794     </listitem>
6795
6796     <listitem>
6797      <para>
6798       Prevent possible misbehavior when logging translations of Windows
6799       error codes (Tom Lane)
6800      </para>
6801     </listitem>
6802
6803     <listitem>
6804      <para>
6805       Properly quote generated command lines in <application>pg_ctl</>
6806       (Naoya Anzai and Tom Lane)
6807      </para>
6808
6809      <para>
6810       This fix applies only to Windows.
6811      </para>
6812     </listitem>
6813
6814     <listitem>
6815      <para>
6816       Fix <application>pg_dumpall</> to work when a source database
6817       sets <link
6818       linkend="guc-default-transaction-read-only"><varname>default_transaction_read_only</></link>
6819       via <command>ALTER DATABASE SET</> (Kevin Grittner)
6820      </para>
6821
6822      <para>
6823       Previously, the generated script would fail during restore.
6824      </para>
6825     </listitem>
6826
6827     <listitem>
6828      <para>
6829       Fix <application>pg_isready</> to handle its <option>-d</> option
6830       properly (Fabr&iacute;zio de Royes Mello and Fujii Masao)
6831      </para>
6832     </listitem>
6833
6834     <listitem>
6835      <para>
6836       Fix parsing of WAL file names in <application>pg_receivexlog</>
6837       (Heikki Linnakangas)
6838      </para>
6839
6840      <para>
6841       This error made <application>pg_receivexlog</> unable to restart
6842       streaming after stopping, once at least 4 GB of WAL had been written.
6843      </para>
6844     </listitem>
6845
6846     <listitem>
6847      <para>
6848       Report out-of-disk-space failures properly
6849       in <application>pg_upgrade</> (Peter Eisentraut)
6850      </para>
6851     </listitem>
6852
6853     <listitem>
6854      <para>
6855       Make <application>ecpg</> search for quoted cursor names
6856       case-sensitively (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
6857      </para>
6858     </listitem>
6859
6860     <listitem>
6861      <para>
6862       Fix <application>ecpg</>'s processing of lists of variables
6863       declared <type>varchar</> (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
6864      </para>
6865     </listitem>
6866
6867     <listitem>
6868      <para>
6869       Make <filename>contrib/lo</> defend against incorrect trigger definitions
6870       (Marc Cousin)
6871      </para>
6872     </listitem>
6873
6874     <listitem>
6875      <para>
6876       Update time zone data files to <application>tzdata</> release 2013h
6877       for DST law changes in Argentina, Brazil, Jordan, Libya,
6878       Liechtenstein, Morocco, and Palestine.  Also, new timezone
6879       abbreviations WIB, WIT, WITA for Indonesia.
6880      </para>
6881     </listitem>
6882
6883    </itemizedlist>
6884
6885   </sect2>
6886  </sect1>
6887
6888  <sect1 id="release-9-3-1">
6889   <title>Release 9.3.1</title>
6890
6891   <note>
6892   <title>Release Date</title>
6893   <simpara>2013-10-10</simpara>
6894   </note>
6895
6896   <para>
6897    This release contains a variety of fixes from 9.3.0.
6898    For information about new features in the 9.3 major release, see
6899    <xref linkend="release-9-3">.
6900   </para>
6901
6902   <sect2>
6903    <title>Migration to Version 9.3.1</title>
6904
6905    <para>
6906     A dump/restore is not required for those running 9.3.X.
6907    </para>
6908
6909    <para>
6910     However, if you use the <literal>hstore</> extension, see the
6911     first changelog entry.
6912    </para>
6913
6914   </sect2>
6915
6916   <sect2>
6917    <title>Changes</title>
6918
6919    <itemizedlist>
6920
6921     <listitem>
6922      <para>
6923       Ensure new-in-9.3 JSON functionality is added to the <literal>hstore</>
6924       extension during an update (Andrew Dunstan)
6925      </para>
6926
6927      <para>
6928       Users who upgraded a pre-9.3 database containing <literal>hstore</>
6929       should execute
6930 <programlisting>
6931 ALTER EXTENSION hstore UPDATE;
6932 </programlisting>
6933       after installing 9.3.1, to add two new JSON functions and a cast.
6934       (If <literal>hstore</> is already up to date, this command does
6935       nothing.)
6936      </para>
6937     </listitem>
6938
6939     <listitem>
6940      <para>
6941       Fix memory leak when creating B-tree indexes on range columns
6942       (Heikki Linnakangas)
6943      </para>
6944     </listitem>
6945
6946     <listitem>
6947      <para>
6948       Fix memory leak caused by <function>lo_open()</function> failure
6949       (Heikki Linnakangas)
6950      </para>
6951     </listitem>
6952
6953     <listitem>
6954      <para>
6955       Serializable snapshot fixes (Kevin Grittner, Heikki Linnakangas)
6956      </para>
6957     </listitem>
6958
6959     <listitem>
6960      <para>
6961       Fix deadlock bug in libpq when using SSL (Stephen Frost)
6962      </para>
6963     </listitem>
6964
6965     <listitem>
6966      <para>
6967       Fix timeline handling bugs in <application>pg_receivexlog</>
6968       (Heikki Linnakangas, Andrew Gierth)
6969      </para>
6970     </listitem>
6971
6972     <listitem>
6973      <para>
6974       Prevent <command>CREATE FUNCTION</> from checking <command>SET</>
6975       variables unless function body checking is enabled (Tom Lane)
6976      </para>
6977     </listitem>
6978
6979     <listitem>
6980      <para>
6981       Remove rare inaccurate warning during vacuum of index-less tables
6982       (Heikki Linnakangas)
6983      </para>
6984     </listitem>
6985
6986    </itemizedlist>
6987
6988   </sect2>
6989  </sect1>
6990
6991  <sect1 id="release-9-3">
6992   <title>Release 9.3</title>
6993
6994   <note>
6995    <title>Release Date</title>
6996    <simpara>2013-09-09</simpara>
6997   </note>
6998
6999   <sect2>
7000    <title>Overview</title>
7001
7002    <para>
7003     Major enhancements in <productname>PostgreSQL</> 9.3 include:
7004    </para>
7005
7006    <!-- This list duplicates items below, but without authors or details-->
7007
7008    <itemizedlist>
7009
7010     <listitem>
7011      <para>
7012       Add <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
7013       views</link>
7014      </para>
7015     </listitem>
7016
7017     <listitem>
7018      <para>
7019       Make simple views <link
7020       linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
7021      </para>
7022     </listitem>
7023
7024     <listitem>
7025      <para>
7026       Add many features for the <type>JSON</> data type,
7027       including <link linkend="functions-json">operators and functions</link>
7028       to extract elements from <type>JSON</> values
7029      </para>
7030     </listitem>
7031
7032     <listitem>
7033      <para>
7034       Implement <acronym>SQL</>-standard <link
7035       linkend="queries-lateral"><literal>LATERAL</></link> option for
7036       <literal>FROM</>-clause subqueries and function calls
7037      </para>
7038     </listitem>
7039
7040     <listitem>
7041      <para>
7042       Allow <link linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data
7043       wrappers</link> to support writes (inserts/updates/deletes) on foreign
7044       tables
7045      </para>
7046     </listitem>
7047
7048     <listitem>
7049      <para>
7050       Add a <link linkend="postgres-fdw"><productname>Postgres</> foreign
7051       data wrapper</link> to allow access to
7052       other <productname>Postgres</> servers
7053      </para>
7054     </listitem>
7055
7056     <listitem>
7057      <para>
7058       Add support for <link linkend="event-triggers">event triggers</link>
7059      </para>
7060     </listitem>
7061
7062     <listitem>
7063      <para>
7064       Add optional ability to <link
7065       linkend="app-initdb-data-checksums">checksum</link> data pages and
7066       report corruption
7067      </para>
7068     </listitem>
7069
7070     <listitem>
7071      <para>
7072       Prevent non-key-field row updates from blocking foreign key checks
7073      </para>
7074     </listitem>
7075
7076     <listitem>
7077      <para>
7078       Greatly reduce System V <link linkend="sysvipc">shared
7079       memory</link> requirements
7080      </para>
7081     </listitem>
7082
7083    </itemizedlist>
7084
7085    <para>
7086     The above items are explained in more detail in the sections below.
7087    </para>
7088
7089   </sect2>
7090
7091   <sect2>
7092
7093   <title>Migration to Version 9.3</title>
7094
7095    <para>
7096     A dump/restore using <link
7097     linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, or use
7098     of <link linkend="pgupgrade"><application>pg_upgrade</></link>, is
7099     required for those wishing to migrate data from any previous release.
7100    </para>
7101
7102    <para>
7103     Version 9.3 contains a number of changes that may affect compatibility
7104     with previous releases.  Observe the following incompatibilities:
7105    </para>
7106
7107    <sect3>
7108     <title>Server Settings</title>
7109
7110      <itemizedlist>
7111
7112       <listitem>
7113        <para>
7114         Rename <varname>replication_timeout</> to <link
7115         linkend="guc-wal-sender-timeout"><varname>wal_sender_timeout</></link>
7116         (Amit Kapila)
7117        </para>
7118
7119        <para>
7120         This setting controls the <link
7121         linkend="wal"><acronym>WAL</></link> sender timeout.
7122        </para>
7123       </listitem>
7124
7125       <listitem>
7126        <para>
7127         Require superuser privileges to set <link
7128         linkend="guc-commit-delay"><varname>commit_delay</></link>
7129         because it can now potentially delay other sessions (Simon Riggs)
7130        </para>
7131       </listitem>
7132
7133       <listitem>
7134        <para>
7135         Allow in-memory sorts to use their full memory allocation (Jeff Janes)
7136        </para>
7137
7138        <para>
7139         Users who have set <link
7140         linkend="guc-work-mem"><varname>work_mem</></link> based on the
7141         previous behavior may need to revisit that setting.
7142        </para>
7143       </listitem>
7144
7145      </itemizedlist>
7146
7147    </sect3>
7148
7149    <sect3>
7150     <title>Other</title>
7151
7152      <itemizedlist>
7153
7154       <listitem>
7155        <para>
7156         Throw an error if a tuple to be updated or deleted has already been
7157         updated or deleted by a <literal>BEFORE</> trigger (Kevin Grittner)
7158        </para>
7159
7160        <para>
7161         Formerly, the originally-intended update was silently skipped,
7162         resulting in logical inconsistency since the trigger might have
7163         propagated data to other places based on the intended update.
7164         Now an error is thrown to prevent the inconsistent results from being
7165         committed.  If this change affects your application, the best solution
7166         is usually to move the data-propagation actions to
7167         an <literal>AFTER</> trigger.
7168        </para>
7169
7170        <para>
7171         This error will also be thrown if a query invokes a volatile function
7172         that modifies rows that are later modified by the query itself.
7173         Such cases likewise previously resulted in silently skipping updates.
7174        </para>
7175       </listitem>
7176
7177       <listitem>
7178        <para>
7179         Change multicolumn <link linkend="SQL-CREATETABLE"><literal>ON UPDATE
7180         SET NULL/SET DEFAULT</></link> foreign key actions to affect
7181         all columns of the constraint, not just those changed in the
7182         <command>UPDATE</> (Tom Lane)
7183        </para>
7184
7185        <para>
7186         Previously, we would set only those referencing columns that
7187         correspond to referenced columns that were changed by
7188         the <command>UPDATE</>.  This was what was required by SQL-92,
7189         but more recent editions of the SQL standard specify the new behavior.
7190        </para>
7191       </listitem>
7192
7193       <listitem>
7194        <para>
7195         Force cached plans to be replanned if the <link
7196         linkend="guc-search-path"><varname>search_path</></link> changes
7197         (Tom Lane)
7198        </para>
7199
7200        <para>
7201         Previously, cached plans already generated in the current session were
7202         not redone if the query was re-executed with a
7203         new <varname>search_path</> setting, resulting in surprising behavior.
7204        </para>
7205       </listitem>
7206
7207       <listitem>
7208        <para>
7209         Fix <link
7210         linkend="functions-formatting-table"><function>to_number()</></link>
7211         to properly handle a period used as a thousands separator (Tom Lane)
7212        </para>
7213
7214        <para>
7215         Previously, a period was considered to be a decimal point even when
7216         the locale says it isn't and the <literal>D</> format code is used to
7217         specify use of the locale-specific decimal point.  This resulted in
7218         wrong answers if <literal>FM</> format was also used.
7219        </para>
7220       </listitem>
7221
7222       <listitem>
7223        <para>
7224         Fix <literal>STRICT</> non-set-returning functions that have
7225         set-returning functions in their arguments to properly return null
7226         rows (Tom Lane)
7227        </para>
7228
7229        <para>
7230         A null value passed to the strict function should result in a null
7231         output, but instead, that output row was suppressed entirely.
7232        </para>
7233       </listitem>
7234
7235       <listitem>
7236        <para>
7237         Store <link linkend="wal"><acronym>WAL</></link> in a continuous
7238         stream, rather than skipping the last 16MB segment every 4GB
7239         (Heikki Linnakangas)
7240        </para>
7241
7242        <para>
7243         Previously, <acronym>WAL</> files with names ending in <literal>FF</>
7244         were not used because of this skipping.  If you have <acronym>WAL</>
7245         backup or restore scripts that took this behavior into account, they
7246         will need to be adjusted.
7247        </para>
7248       </listitem>
7249
7250       <listitem>
7251        <para>
7252         In <link
7253         linkend="catalog-pg-constraint"><structname>pg_constraint.confmatchtype</></link>,
7254         store the default foreign key match type (non-<literal>FULL</>,
7255         non-<literal>PARTIAL</>) as <literal>s</> for <quote>simple</>
7256         (Tom Lane)
7257        </para>
7258
7259        <para>
7260         Previously this case was represented by <literal>u</>
7261         for <quote>unspecified</>.
7262        </para>
7263       </listitem>
7264
7265      </itemizedlist>
7266
7267    </sect3>
7268
7269   </sect2>
7270
7271   <sect2>
7272    <title>Changes</title>
7273
7274    <para>
7275     Below you will find a detailed account of the changes between
7276     <productname>PostgreSQL</productname> 9.3 and the previous major
7277     release.
7278    </para>
7279
7280    <sect3>
7281     <title>Server</title>
7282
7283     <sect4>
7284      <title>Locking</title>
7285
7286      <itemizedlist>
7287
7288       <listitem>
7289        <para>
7290         Prevent non-key-field row updates from blocking foreign key checks
7291         (&Aacute;lvaro Herrera, Noah Misch, Andres Freund, Alexander
7292         Shulgin, Marti Raudsepp, Alexander Shulgin)
7293        </para>
7294
7295        <para>
7296         This change improves concurrency and reduces the probability of
7297         deadlocks when updating tables involved in a foreign-key constraint.
7298         <command>UPDATE</>s that do not change any columns referenced in a
7299         foreign key now take the new <literal>NO KEY UPDATE</> lock mode on
7300         the row, while foreign key checks use the new <literal>KEY SHARE</>
7301         lock mode, which does not conflict with <literal>NO KEY UPDATE</>.
7302         So there is no blocking unless a foreign-key column is changed.
7303        </para>
7304       </listitem>
7305
7306       <listitem>
7307        <para>
7308         Add configuration variable <link
7309         linkend="guc-lock-timeout"><varname>lock_timeout</></link> to
7310         allow limiting how long a session will wait to acquire any one lock
7311         (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
7312        </para>
7313       </listitem>
7314
7315      </itemizedlist>
7316
7317     </sect4>
7318
7319     <sect4>
7320      <title>Indexes</title>
7321
7322      <itemizedlist>
7323
7324       <listitem>
7325        <para>
7326         Add <link linkend="rangetypes-indexing"><acronym>SP-GiST</></link>
7327         support for range data types (Alexander Korotkov)
7328        </para>
7329       </listitem>
7330
7331       <listitem>
7332        <para>
7333         Allow <link linkend="GiST"><acronym>GiST</></link> indexes to be
7334         unlogged (Jeevan Chalke)
7335        </para>
7336       </listitem>
7337
7338       <listitem>
7339        <para>
7340         Improve performance of <acronym>GiST</> index insertion by randomizing
7341         the choice of which page to descend to when there are multiple equally
7342         good alternatives (Heikki Linnakangas)
7343        </para>
7344       </listitem>
7345
7346       <listitem>
7347        <para>
7348         Improve concurrency of hash index operations (Robert Haas)
7349        </para>
7350       </listitem>
7351
7352      </itemizedlist>
7353
7354     </sect4>
7355
7356     <sect4>
7357      <title>Optimizer</title>
7358
7359      <itemizedlist>
7360
7361       <listitem>
7362        <para>
7363         Collect and use histograms of upper and lower bounds, as well as range
7364         lengths, for <link linkend="rangetypes">range types</link>
7365         (Alexander Korotkov)
7366        </para>
7367       </listitem>
7368
7369       <listitem>
7370        <para>
7371         Improve optimizer's cost estimation for index access (Tom Lane)
7372        </para>
7373       </listitem>
7374
7375       <listitem>
7376        <para>
7377         Improve optimizer's hash table size estimate for
7378         doing <literal>DISTINCT</> via hash aggregation (Tom Lane)
7379        </para>
7380       </listitem>
7381
7382       <listitem>
7383        <para>
7384         Suppress no-op Result and Limit plan nodes
7385         (Kyotaro Horiguchi, Amit Kapila, Tom Lane)
7386        </para>
7387       </listitem>
7388
7389       <listitem>
7390        <para>
7391         Reduce optimizer overhead by not keeping plans on the basis of cheap
7392         startup cost when the optimizer only cares about total cost overall
7393         (Tom Lane)
7394        </para>
7395       </listitem>
7396
7397      </itemizedlist>
7398
7399     </sect4>
7400
7401     <sect4>
7402      <title>General Performance</title>
7403
7404      <itemizedlist>
7405
7406       <listitem>
7407        <para>
7408         Add <link linkend="SQL-COPY"><command>COPY FREEZE</></link>
7409         option to avoid the overhead of marking tuples as frozen later
7410         (Simon Riggs, Jeff Davis)
7411        </para>
7412       </listitem>
7413
7414       <listitem>
7415        <para>
7416         Improve performance of <link
7417         linkend="datatype-numeric"><type>NUMERIC</></link> calculations
7418         (Kyotaro Horiguchi)
7419        </para>
7420       </listitem>
7421
7422       <listitem>
7423        <para>
7424         Improve synchronization of sessions waiting for <link
7425         linkend="guc-commit-delay"><varname>commit_delay</></link>
7426         (Peter Geoghegan)
7427        </para>
7428
7429        <para>
7430         This greatly improves the usefulness of <varname>commit_delay</>.
7431        </para>
7432       </listitem>
7433
7434       <listitem>
7435        <para>
7436         Improve performance of the <link
7437         linkend="SQL-CREATETABLE"><command>CREATE TEMPORARY TABLE ... ON
7438         COMMIT DELETE ROWS</></link> option by not truncating such temporary
7439         tables in transactions that haven't touched any temporary tables
7440         (Heikki Linnakangas)
7441        </para>
7442       </listitem>
7443
7444       <listitem>
7445        <para>
7446         Make vacuum recheck visibility after it has removed expired tuples
7447         (Pavan Deolasee)
7448        </para>
7449
7450        <para>
7451         This increases the chance of a page being marked as all-visible.
7452        </para>
7453       </listitem>
7454
7455       <listitem>
7456        <para>
7457         Add per-resource-owner lock caches (Jeff Janes)
7458        </para>
7459
7460        <para>
7461         This speeds up lock bookkeeping at statement completion in
7462         multi-statement transactions that hold many locks; it is particularly
7463         useful for <application>pg_dump</>.
7464        </para>
7465       </listitem>
7466
7467       <listitem>
7468        <para>
7469         Avoid scanning the entire relation cache at commit of a transaction
7470         that creates a new relation (Jeff Janes)
7471        </para>
7472
7473        <para>
7474         This speeds up sessions that create many tables in successive
7475         small transactions, such as a <application>pg_restore</> run.
7476        </para>
7477       </listitem>
7478
7479       <listitem>
7480        <para>
7481         Improve performance of transactions that drop many relations
7482         (Tomas Vondra)
7483        </para>
7484       </listitem>
7485
7486      </itemizedlist>
7487
7488     </sect4>
7489
7490     <sect4>
7491      <title>Monitoring</title>
7492
7493      <itemizedlist>
7494
7495       <listitem>
7496        <para>
7497         Add optional ability to <link
7498         linkend="app-initdb-data-checksums">checksum</link> data pages and
7499         report corruption (Simon Riggs, Jeff Davis, Greg Smith, Ants Aasma)
7500        </para>
7501
7502        <para>
7503         The checksum option can be set during <link
7504         linkend="APP-INITDB">initdb</link>.
7505        </para>
7506       </listitem>
7507
7508       <listitem>
7509        <para>
7510         Split the <link linkend="monitoring-stats">statistics collector's</link>
7511         data file into separate global and per-database files (Tomas Vondra)
7512        </para>
7513
7514        <para>
7515         This reduces the I/O required for statistics tracking.
7516        </para>
7517       </listitem>
7518
7519       <listitem>
7520        <para>
7521         Fix the statistics collector to operate properly in cases where the
7522         system clock goes backwards (Tom Lane)
7523        </para>
7524
7525        <para>
7526         Previously, statistics collection would stop until the time again
7527         reached the latest time previously recorded.
7528        </para>
7529       </listitem>
7530
7531       <listitem>
7532        <para>
7533         Emit an informative message to postmaster standard error when we
7534         are about to stop logging there
7535         (Tom Lane)
7536        </para>
7537
7538        <para>
7539         This should help reduce user confusion about where to look for log
7540         output in common configurations that log to standard error only during
7541         postmaster startup.
7542        </para>
7543       </listitem>
7544
7545      </itemizedlist>
7546
7547     </sect4>
7548
7549     <sect4>
7550      <title>Authentication</title>
7551
7552      <itemizedlist>
7553
7554       <listitem>
7555        <para>
7556         When an authentication failure occurs, log the relevant
7557         <link linkend="auth-pg-hba-conf"><filename>pg_hba.conf</></link>
7558         line, to ease debugging of unintended failures
7559         (Magnus Hagander)
7560        </para>
7561       </listitem>
7562
7563       <listitem>
7564        <para>
7565         Improve <link linkend="auth-ldap"><acronym>LDAP</></link> error
7566         reporting and documentation (Peter Eisentraut)
7567        </para>
7568       </listitem>
7569
7570       <listitem>
7571        <para>
7572         Add support for specifying <acronym>LDAP</> authentication parameters
7573         in <acronym>URL</> format, per RFC 4516 (Peter Eisentraut)
7574        </para>
7575       </listitem>
7576
7577       <listitem>
7578        <para>
7579         Change the <link
7580         linkend="guc-ssl-ciphers"><varname>ssl_ciphers</></link> parameter
7581         to start with <literal>DEFAULT</>, rather than <literal>ALL</>,
7582         then remove insecure ciphers (Magnus Hagander)
7583        </para>
7584
7585        <para>
7586         This should yield a more appropriate SSL cipher set.
7587        </para>
7588       </listitem>
7589
7590       <listitem>
7591        <para>
7592         Parse and load <link
7593         linkend="auth-username-maps"><filename>pg_ident.conf</></link>
7594         once, not during each connection (Amit Kapila)
7595        </para>
7596
7597        <para>
7598         This is similar to how <filename>pg_hba.conf</> is processed.
7599        </para>
7600       </listitem>
7601
7602      </itemizedlist>
7603
7604     </sect4>
7605
7606     <sect4>
7607      <title>Server Settings</title>
7608
7609      <itemizedlist>
7610
7611       <listitem>
7612        <para>
7613         Greatly reduce System V <link linkend="sysvipc">shared
7614         memory</link> requirements (Robert Haas)
7615        </para>
7616
7617        <para>
7618         On Unix-like systems, <function>mmap()</> is now used for most
7619         of <productname>PostgreSQL</>'s shared memory.  For most users, this
7620         will eliminate any need to adjust kernel parameters for shared memory.
7621        </para>
7622       </listitem>
7623
7624       <listitem>
7625        <para>
7626         Allow the postmaster to listen on multiple Unix-domain sockets
7627         (Honza Hor&aacute;k)
7628        </para>
7629
7630        <para>
7631         The configuration parameter
7632         <varname>unix_socket_directory</> is replaced by <link
7633         linkend="guc-unix-socket-directories"><varname>unix_socket_directories</></link>,
7634         which accepts a list of directories.
7635        </para>
7636       </listitem>
7637
7638       <listitem>
7639        <para>
7640         Allow a directory of configuration files to be processed (Magnus
7641         Hagander, Greg Smith, Selena Deckelmann)
7642        </para>
7643
7644        <para>
7645         Such a directory is specified with <link
7646         linkend="config-includes"><varname>include_dir</></link> in the server
7647         configuration file.
7648        </para>
7649       </listitem>
7650
7651       <listitem>
7652        <para>
7653         Increase the maximum <link
7654         linkend="APP-INITDB">initdb</link>-configured value for <link
7655         linkend="guc-shared-buffers"><varname>shared_buffers</></link>
7656         to 128MB (Robert Haas)
7657        </para>
7658
7659        <para>
7660         This is the maximum value that initdb will attempt to set in <link
7661         linkend="config-setting-configuration-file"><filename>postgresql.conf</></link>;
7662         the previous maximum was 32MB.
7663        </para>
7664       </listitem>
7665
7666       <listitem>
7667        <para>
7668         Remove the <link linkend="guc-external-pid-file">external
7669         <acronym>PID</> file</link>, if any, on postmaster exit
7670         (Peter Eisentraut)
7671        </para>
7672       </listitem>
7673
7674      </itemizedlist>
7675
7676     </sect4>
7677
7678    </sect3>
7679
7680    <sect3>
7681     <title>Replication and Recovery</title>
7682
7683      <itemizedlist>
7684
7685       <listitem>
7686        <para>
7687         Allow a streaming replication standby to <link
7688         linkend="protocol-replication">follow a timeline switch</link>
7689         (Heikki Linnakangas)
7690        </para>
7691
7692        <para>
7693         This allows streaming standby servers to receive WAL data from a slave
7694         newly promoted to master status.  Previously, other standbys would
7695         require a resync to begin following the new master.
7696        </para>
7697       </listitem>
7698
7699       <listitem>
7700        <para>
7701         Add <acronym>SQL</> functions <link
7702         linkend="functions-admin-backup"><function>pg_is_in_backup()</></link>
7703         and <link
7704         linkend="functions-admin-backup"><function>pg_backup_start_time()</></link>
7705         (Gilles Darold)
7706        </para>
7707
7708        <para>
7709         These functions report the status of base backups.
7710        </para>
7711       </listitem>
7712
7713       <listitem>
7714        <para>
7715         Improve performance of streaming log shipping with <link
7716         linkend="guc-synchronous-commit"><varname>synchronous_commit</></link>
7717         disabled (Andres Freund)
7718        </para>
7719       </listitem>
7720
7721       <listitem>
7722        <para>
7723         Allow much faster promotion of a streaming standby to primary (Simon
7724         Riggs, Kyotaro Horiguchi)
7725        </para>
7726       </listitem>
7727
7728       <listitem>
7729        <para>
7730         Add the last checkpoint's redo location to <link
7731         linkend="APP-PGCONTROLDATA"><application>pg_controldata</></link>'s
7732         output (Fujii Masao)
7733        </para>
7734
7735        <para>
7736         This information is useful for determining which <acronym>WAL</>
7737         files are needed for restore.
7738        </para>
7739       </listitem>
7740
7741       <listitem>
7742        <para>
7743         Allow tools like <link
7744         linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
7745         to run on computers with different architectures (Heikki
7746         Linnakangas)
7747        </para>
7748
7749        <para>
7750         WAL files can still only be replayed on servers with the same
7751         architecture as the primary; but they can now be transmitted to and
7752         stored on machines of any architecture, since the
7753         streaming replication protocol is now machine-independent.
7754        </para>
7755       </listitem>
7756
7757       <listitem>
7758        <para>
7759         Make <link
7760         linkend="app-pgbasebackup"><application>pg_basebackup</></link>
7761         <option>--write-recovery-conf</> output a
7762         minimal <filename>recovery.conf</> file (Zolt&aacute;n
7763         B&ouml;sz&ouml;rm&eacute;nyi, Magnus Hagander)
7764        </para>
7765
7766        <para>
7767         This simplifies setting up a standby server.
7768        </para>
7769       </listitem>
7770
7771       <listitem>
7772        <para>
7773         Allow <link
7774         linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
7775         and <link
7776         linkend="app-pgbasebackup"><application>pg_basebackup</></link>
7777         <option>--xlog-method</> to handle streaming timeline switches
7778         (Heikki Linnakangas)
7779        </para>
7780       </listitem>
7781
7782       <listitem>
7783        <para>
7784         Add <link
7785         linkend="guc-wal-receiver-timeout"><varname>wal_receiver_timeout</></link>
7786         parameter to control the <acronym>WAL</> receiver's timeout
7787         (Amit Kapila)
7788        </para>
7789
7790        <para>
7791         This allows more rapid detection of connection failure.
7792        </para>
7793       </listitem>
7794
7795       <listitem>
7796        <para>
7797         Change the <link linkend="wal"><acronym>WAL</></link> record format to
7798         allow splitting the record header across pages (Heikki Linnakangas)
7799        </para>
7800
7801        <para>
7802         The new format is slightly more compact, and is more efficient to
7803         write.
7804        </para>
7805       </listitem>
7806
7807      </itemizedlist>
7808
7809    </sect3>
7810
7811    <sect3>
7812     <title>Queries</title>
7813
7814      <itemizedlist>
7815
7816       <listitem>
7817        <para>
7818         Implement <acronym>SQL</>-standard <link
7819         linkend="queries-lateral"><literal>LATERAL</></link> option for
7820         <literal>FROM</>-clause subqueries and function calls (Tom Lane)
7821        </para>
7822
7823        <para>
7824         This feature allows subqueries and functions in <literal>FROM</> to
7825         reference columns from other tables in the <literal>FROM</>
7826         clause. The <literal>LATERAL</> keyword is optional for functions.
7827        </para>
7828       </listitem>
7829
7830       <listitem>
7831        <para>
7832         Add support for piping <link
7833         linkend="SQL-COPY"><command>COPY</></link> and <link
7834         linkend="APP-PSQL"><application>psql</></link> <command>\copy</>
7835         data to/from an external program (Etsuro Fujita)
7836        </para>
7837       </listitem>
7838
7839       <listitem>
7840        <para>
7841         Allow a multirow <link
7842         linkend="SQL-VALUES"><literal>VALUES</></link> clause in a rule
7843         to reference <literal>OLD</>/<literal>NEW</> (Tom Lane)
7844        </para>
7845       </listitem>
7846
7847      </itemizedlist>
7848
7849    </sect3>
7850
7851    <sect3>
7852     <title>Object Manipulation</title>
7853
7854      <itemizedlist>
7855
7856       <listitem>
7857        <para>
7858         Add support for <link linkend="event-triggers">event triggers</link>
7859         (Dimitri Fontaine, Robert Haas, &Aacute;lvaro Herrera)
7860        </para>
7861
7862        <para>
7863         This allows server-side functions written in event-enabled
7864         languages to be called when DDL commands are run.
7865        </para>
7866       </listitem>
7867
7868       <listitem>
7869        <para>
7870         Allow <link linkend="SQL-CREATEFOREIGNDATAWRAPPER">foreign data
7871         wrappers</link> to support writes (inserts/updates/deletes) on foreign
7872         tables (KaiGai Kohei)
7873        </para>
7874       </listitem>
7875
7876       <listitem>
7877        <para>
7878         Add <link linkend="SQL-CREATESCHEMA"><command>CREATE SCHEMA ... IF
7879         NOT EXISTS</></link> clause (Fabr&iacute;zio de Royes Mello)
7880        </para>
7881       </listitem>
7882
7883       <listitem>
7884        <para>
7885         Make <link linkend="SQL-REASSIGN-OWNED"><command>REASSIGN
7886         OWNED</></link> also change ownership of shared objects
7887         (&Aacute;lvaro Herrera)
7888        </para>
7889       </listitem>
7890
7891       <listitem>
7892        <para>
7893         Make <link linkend="sql-createaggregate"><command>CREATE
7894         AGGREGATE</></link> complain if the given initial value string is not
7895         valid input for the transition datatype (Tom Lane)
7896        </para>
7897       </listitem>
7898
7899       <listitem>
7900        <para>
7901         Suppress <link linkend="SQL-CREATETABLE"><command>CREATE
7902         TABLE</></link>'s messages about implicit index and sequence creation
7903         (Robert Haas)
7904        </para>
7905
7906        <para>
7907         These messages now appear at <literal>DEBUG1</> verbosity, so that
7908         they will not be shown by default.
7909        </para>
7910       </listitem>
7911
7912       <listitem>
7913        <para>
7914         Allow <link linkend="SQL-DROPTABLE"><command>DROP TABLE IF
7915         EXISTS</></link> to succeed when a non-existent schema is specified
7916         in the table name (Bruce Momjian)
7917        </para>
7918
7919        <para>
7920          Previously, it threw an error if the schema did not exist.
7921        </para>
7922       </listitem>
7923
7924       <listitem>
7925        <para>
7926         Provide clients with <link
7927         linkend="libpq-pqresulterrorfield">constraint violation details</link>
7928         as separate fields (Pavel Stehule)
7929        </para>
7930
7931        <para>
7932         This allows clients to retrieve table, column, data type, or
7933         constraint name error details.  Previously such information had to be
7934         extracted from error strings.  Client library support is required to
7935         access these fields.
7936        </para>
7937       </listitem>
7938
7939      </itemizedlist>
7940
7941     <sect4>
7942      <title><command>ALTER</></title>
7943
7944      <itemizedlist>
7945
7946       <listitem>
7947        <para>
7948         Support <literal>IF NOT EXISTS</> option in <link
7949         linkend="SQL-ALTERTYPE"><command>ALTER TYPE ... ADD VALUE</></link>
7950         (Andrew Dunstan)
7951        </para>
7952
7953        <para>
7954         This is useful for conditionally adding values to enumerated types.
7955        </para>
7956       </listitem>
7957
7958       <listitem>
7959        <para>
7960         Add <link linkend="SQL-ALTERROLE"><command>ALTER ROLE ALL
7961         SET</></link> to establish settings for all users (Peter Eisentraut)
7962        </para>
7963
7964        <para>
7965         This allows settings to apply to all users in all databases. <link
7966         linkend="SQL-ALTERDATABASE"><command>ALTER DATABASE SET</></link>
7967         already allowed addition of settings for all users in a single
7968         database.  <filename>postgresql.conf</> has a similar effect.
7969        </para>
7970       </listitem>
7971
7972       <listitem>
7973        <para>
7974         Add support for <link linkend="SQL-ALTERRULE"><command>ALTER RULE
7975         ... RENAME</></link> (Ali Dar)
7976        </para>
7977       </listitem>
7978
7979      </itemizedlist>
7980
7981     </sect4>
7982
7983     <sect4>
7984      <title><link linkend="rules-views"><command>VIEWs</></link></title>
7985
7986      <itemizedlist>
7987
7988       <listitem>
7989        <para>
7990         Add <link linkend="SQL-CREATEMATERIALIZEDVIEW">materialized
7991         views</link> (Kevin Grittner)
7992        </para>
7993
7994        <para>
7995         Unlike ordinary views, where the base tables are read on every access,
7996         materialized views create physical tables at creation or refresh time.
7997         Access to the materialized view then reads from its physical
7998         table. There is not yet any facility for incrementally refreshing
7999         materialized views or auto-accessing them via base table access.
8000        </para>
8001       </listitem>
8002
8003       <listitem>
8004        <para>
8005         Make simple views <link
8006         linkend="SQL-CREATEVIEW-updatable-views">auto-updatable</link>
8007         (Dean Rasheed)
8008        </para>
8009
8010        <para>
8011         Simple views that reference some or all columns from a
8012         single base table are now updatable by default. More
8013         complex views can be made updatable using <link
8014         linkend="SQL-CREATETRIGGER"><literal>INSTEAD OF</></link> triggers
8015         or <link linkend="SQL-CREATERULE"><literal>INSTEAD</></link> rules.
8016        </para>
8017       </listitem>
8018
8019       <listitem>
8020        <para>
8021         Add <link linkend="SQL-CREATEVIEW"><command>CREATE RECURSIVE
8022         VIEW</></link> syntax (Peter Eisentraut)
8023        </para>
8024
8025        <para>
8026         Internally this is translated into <command>CREATE VIEW ... WITH
8027         RECURSIVE ...</>.
8028        </para>
8029       </listitem>
8030
8031       <listitem>
8032        <para>
8033         Improve view/rule printing code to handle cases where referenced
8034         tables are renamed, or columns are renamed, added, or dropped
8035         (Tom Lane)
8036        </para>
8037
8038        <para>
8039         Table and column renamings can produce cases where, if we merely
8040         substitute the new name into the original text of a rule or view, the
8041         result is ambiguous.  This change fixes the rule-dumping code to insert
8042         manufactured table and column aliases when needed to preserve the
8043         original semantics.
8044        </para>
8045       </listitem>
8046
8047      </itemizedlist>
8048
8049     </sect4>
8050
8051    </sect3>
8052
8053    <sect3>
8054     <title>Data Types</title>
8055
8056     <itemizedlist>
8057
8058       <listitem>
8059        <para>
8060         Increase the maximum size of <link linkend="largeObjects">large
8061         objects</link> from 2GB to 4TB (Nozomi Anzai, Yugo Nagata)
8062        </para>
8063
8064        <para>
8065         This change includes adding 64-bit-capable large object access
8066         functions, both in the server and in libpq.
8067        </para>
8068       </listitem>
8069
8070       <listitem>
8071        <para>
8072         Allow text <link linkend="datatype-timezones">timezone
8073         designations</link>, e.g. <quote>America/Chicago</>, in the
8074         <quote>T</> field of <acronym>ISO</>-format <type>timestamptz</type>
8075         input (Bruce Momjian)
8076        </para>
8077       </listitem>
8078
8079     </itemizedlist>
8080
8081    <sect4>
8082     <title><link linkend="datatype-json"><type>JSON</></link></title>
8083
8084     <itemizedlist>
8085
8086       <listitem>
8087        <para>
8088         Add <link linkend="functions-json">operators and functions</link>
8089         to extract elements from <type>JSON</> values (Andrew Dunstan)
8090        </para>
8091       </listitem>
8092
8093       <listitem>
8094        <para>
8095         Allow <type>JSON</> values to be <link
8096         linkend="functions-json">converted into records</link>
8097         (Andrew Dunstan)
8098        </para>
8099       </listitem>
8100
8101       <listitem>
8102        <para>
8103         Add <link linkend="functions-json">functions</link> to convert
8104         scalars, records, and <type>hstore</> values to <type>JSON</> (Andrew
8105         Dunstan)
8106        </para>
8107       </listitem>
8108
8109     </itemizedlist>
8110
8111    </sect4>
8112
8113    </sect3>
8114
8115
8116    <sect3>
8117     <title>Functions</title>
8118
8119      <itemizedlist>
8120
8121       <listitem>
8122        <para>
8123         Add <link
8124         linkend="array-functions-table"><function>array_remove()</></link>
8125         and <link
8126         linkend="array-functions-table"><function>array_replace()</></link>
8127         functions (Marco Nenciarini, Gabriele Bartolini)
8128        </para>
8129       </listitem>
8130
8131       <listitem>
8132        <para>
8133         Allow <link
8134         linkend="functions-string-other"><function>concat()</></link>
8135         and <link
8136         linkend="functions-string-format"><function>format()</></link>
8137         to properly expand <literal>VARIADIC</>-labeled arguments
8138         (Pavel Stehule)
8139        </para>
8140       </listitem>
8141
8142       <listitem>
8143        <para>
8144         Improve <link
8145         linkend="functions-string-format"><function>format()</></link>
8146         to provide field width and left/right alignment options (Pavel Stehule)
8147        </para>
8148       </listitem>
8149
8150       <listitem>
8151        <para>
8152         Make <link
8153         linkend="functions-formatting-table"><function>to_char()</></link>,
8154         <link
8155         linkend="functions-formatting-table"><function>to_date()</></link>,
8156         and <link
8157         linkend="functions-formatting-table"><function>to_timestamp()</></link>
8158         handle negative (BC) century values properly
8159         (Bruce Momjian)
8160        </para>
8161
8162        <para>
8163         Previously the behavior was either wrong or inconsistent
8164         with positive/<acronym>AD</> handling, e.g. with the format mask
8165         <quote>IYYY-IW-DY</>.
8166        </para>
8167       </listitem>
8168
8169       <listitem>
8170        <para>
8171         Make <link
8172         linkend="functions-formatting-table"><function>to_date()</></link>
8173         and <link
8174         linkend="functions-formatting-table"><function>to_timestamp()</></link>
8175         return proper results when mixing <acronym>ISO</> and Gregorian
8176         week/day designations (Bruce Momjian)
8177        </para>
8178       </listitem>
8179
8180       <listitem>
8181        <para>
8182         Cause <link
8183         linkend="functions-info-catalog-table"><function>pg_get_viewdef()</></link>
8184         to start a new line by default after each <literal>SELECT</> target
8185         list entry and <literal>FROM</> entry (Marko Tiikkaja)
8186        </para>
8187
8188        <para>
8189         This reduces line length in view printing, for instance in <link
8190         linkend="APP-PGDUMP"><application>pg_dump</></link> output.
8191        </para>
8192       </listitem>
8193
8194       <listitem>
8195        <para>
8196         Fix <function>map_sql_value_to_xml_value()</> to print values of
8197         domain types the same way their base type would be printed
8198         (Pavel Stehule)
8199        </para>
8200
8201        <para>
8202         There are special formatting rules for certain built-in types such as
8203         <type>boolean</>; these rules now also apply to domains over these
8204         types.
8205        </para>
8206       </listitem>
8207
8208      </itemizedlist>
8209
8210    </sect3>
8211
8212    <sect3>
8213     <title>Server-Side Languages</title>
8214
8215     <sect4>
8216      <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
8217
8218      <itemizedlist>
8219
8220       <listitem>
8221        <para>
8222         Allow PL/pgSQL to use <literal>RETURN</> with a composite-type
8223         expression (Asif Rehman)
8224        </para>
8225
8226        <para>
8227         Previously, in a function returning a composite type,
8228         <literal>RETURN</> could only reference a variable of that type.
8229        </para>
8230       </listitem>
8231
8232       <listitem>
8233        <para>
8234         Allow PL/pgSQL to access <link
8235         linkend="plpgsql-exception-diagnostics">constraint violation
8236         details</link> as separate fields (Pavel Stehule)
8237        </para>
8238       </listitem>
8239
8240       <listitem>
8241        <para>
8242         Allow PL/pgSQL to access the number of rows processed by
8243         <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
8244        </para>
8245
8246        <para>
8247         A <command>COPY</> executed in a PL/pgSQL function now updates the
8248         value retrieved by <link
8249         linkend="plpgsql-statements-diagnostics"><command>GET DIAGNOSTICS
8250         x = ROW_COUNT</></link>.
8251        </para>
8252       </listitem>
8253
8254       <listitem>
8255        <para>
8256         Allow unreserved keywords to be used as identifiers everywhere in
8257         PL/pgSQL (Tom Lane)
8258        </para>
8259
8260        <para>
8261         In certain places in the PL/pgSQL grammar, keywords had to be quoted
8262         to be used as identifiers, even if they were nominally unreserved.
8263        </para>
8264       </listitem>
8265
8266     </itemizedlist>
8267
8268     </sect4>
8269
8270     <sect4>
8271      <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
8272
8273      <itemizedlist>
8274
8275       <listitem>
8276        <para>
8277         Add PL/Python result object string handler (Peter Eisentraut)
8278        </para>
8279
8280        <para>
8281         This allows <literal>plpy.debug(rv)</literal> to output something reasonable.
8282        </para>
8283       </listitem>
8284
8285       <listitem>
8286        <para>
8287         Make PL/Python convert OID values to a proper Python numeric type
8288         (Peter Eisentraut)
8289        </para>
8290       </listitem>
8291
8292       <listitem>
8293        <para>
8294         Handle <link linkend="spi"><acronym>SPI</></link> errors raised
8295         explicitly (with PL/Python's <literal>RAISE</>) the same as
8296         internal <acronym>SPI</> errors (Oskari Saarenmaa and Jan Urbanski)
8297        </para>
8298       </listitem>
8299
8300      </itemizedlist>
8301
8302     </sect4>
8303
8304    </sect3>
8305
8306    <sect3>
8307     <title>Server Programming Interface (<link linkend="spi">SPI</link>)</title>
8308
8309      <itemizedlist>
8310
8311       <listitem>
8312        <para>
8313         Prevent leakage of <acronym>SPI</> tuple tables during subtransaction
8314         abort (Tom Lane)
8315        </para>
8316
8317        <para>
8318         At the end of any failed subtransaction, the core SPI code now
8319         releases any SPI tuple tables that were created during that
8320         subtransaction.  This avoids the need for SPI-using code to keep track
8321         of such tuple tables and release them manually in error-recovery code.
8322         Failure to do so caused a number of transaction-lifespan memory leakage
8323         issues in PL/pgSQL and perhaps other SPI clients.  <link
8324         linkend="spi-spi-freetupletable"><function>SPI_freetuptable()</></link>
8325         now protects itself against multiple freeing requests, so any existing
8326         code that did take care to clean up shouldn't be broken by this change.
8327        </para>
8328       </listitem>
8329
8330       <listitem>
8331        <para>
8332         Allow <acronym>SPI</> functions to access the number of rows processed
8333         by <link linkend="SQL-COPY"><command>COPY</></link> (Pavel Stehule)
8334        </para>
8335       </listitem>
8336
8337      </itemizedlist>
8338
8339    </sect3>
8340
8341    <sect3>
8342     <title>Client Applications</title>
8343
8344     <itemizedlist>
8345
8346       <listitem>
8347        <para>
8348         Add command-line utility <link
8349         linkend="app-pg-isready"><application>pg_isready</></link> to
8350         check if the server is ready to accept connections (Phil Sorber)
8351        </para>
8352       </listitem>
8353
8354       <listitem>
8355        <para>
8356         Support multiple <option>--table</> arguments for <link
8357         linkend="APP-PGRESTORE"><application>pg_restore</></link>,
8358         <link linkend="APP-CLUSTERDB"><application>clusterdb</></link>,
8359         <link linkend="APP-REINDEXDB"><application>reindexdb</></link>,
8360         and <link linkend="APP-VACUUMDB"><application>vacuumdb</></link>
8361         (Josh Kupershmidt)
8362        </para>
8363
8364        <para>
8365         This is similar to the way <link
8366         linkend="APP-PGDUMP"><application>pg_dump</></link>'s
8367         <option>--table</> option works.
8368        </para>
8369       </listitem>
8370
8371       <listitem>
8372        <para>
8373         Add <option>--dbname</> option to <link
8374         linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link>, <link
8375         linkend="app-pgbasebackup"><application>pg_basebackup</></link>, and
8376         <link
8377         linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
8378         to allow specifying a connection string (Amit Kapila)
8379        </para>
8380       </listitem>
8381
8382       <listitem>
8383        <para>
8384         Add libpq function <link
8385         linkend="libpq-pqconninfo"><function>PQconninfo()</></link>
8386         to return connection information (Zolt&aacute;n
8387         B&ouml;sz&ouml;rm&eacute;nyi, Magnus Hagander)
8388        </para>
8389       </listitem>
8390
8391     </itemizedlist>
8392
8393     <sect4>
8394      <title><link linkend="APP-PSQL"><application>psql</></link></title>
8395
8396      <itemizedlist>
8397
8398       <listitem>
8399        <para>
8400         Adjust function cost settings so <application>psql</> tab
8401         completion and pattern searching are more efficient (Tom Lane)
8402        </para>
8403       </listitem>
8404
8405       <listitem>
8406        <para>
8407         Improve <application>psql</>'s tab completion coverage (Jeff Janes,
8408         Dean Rasheed, Peter Eisentraut, Magnus Hagander)
8409        </para>
8410       </listitem>
8411
8412       <listitem>
8413        <para>
8414         Allow the <application>psql</> <option>--single-transaction</>
8415         mode to work when reading from standard input (Fabien Coelho,
8416         Robert Haas)
8417        </para>
8418
8419        <para>
8420         Previously this option only worked when reading from a file.
8421        </para>
8422       </listitem>
8423
8424       <listitem>
8425        <para>
8426         Remove <application>psql</> warning when connecting to an older
8427         server (Peter Eisentraut)
8428        </para>
8429
8430        <para>
8431         A warning is still issued when connecting to a server of a newer major
8432         version than <application>psql</>'s.
8433        </para>
8434       </listitem>
8435
8436      </itemizedlist>
8437
8438     <sect5>
8439      <title><link linkend="APP-PSQL-meta-commands">Backslash Commands</link></title>
8440
8441      <itemizedlist>
8442
8443       <listitem>
8444        <para>
8445         Add <application>psql</> command <command>\watch</> to repeatedly
8446         execute a SQL command (Will Leinweber)
8447        </para>
8448       </listitem>
8449
8450       <listitem>
8451        <para>
8452         Add <application>psql</> command <command>\gset</> to store query
8453         results in <application>psql</> variables (Pavel Stehule)
8454        </para>
8455       </listitem>
8456
8457       <listitem>
8458        <para>
8459         Add <acronym>SSL</> information to <application>psql</>'s
8460         <command>\conninfo</> command (Alastair Turner)
8461        </para>
8462       </listitem>
8463
8464       <listitem>
8465        <para>
8466         Add <quote>Security</> column to <application>psql</>'s
8467         <command>\df+</> output (Jon Erdman)
8468        </para>
8469       </listitem>
8470
8471       <listitem>
8472        <para>
8473         Allow <application>psql</> command <command>\l</> to accept a database
8474         name pattern (Peter Eisentraut)
8475        </para>
8476       </listitem>
8477
8478       <listitem>
8479        <para>
8480         In <application>psql</>, do not allow <command>\connect</> to
8481         use defaults if there is no active connection (Bruce Momjian)
8482        </para>
8483
8484        <para>
8485         This might be the case if the server had crashed.
8486        </para>
8487       </listitem>
8488
8489       <listitem>
8490        <para>
8491         Properly reset state after failure of a SQL command executed with
8492         <application>psql</>'s <literal>\g</> <replaceable>file</>
8493         (Tom Lane)
8494        </para>
8495
8496        <para>
8497         Previously, the output from subsequent SQL commands would unexpectedly
8498         continue to go to the same file.
8499        </para>
8500       </listitem>
8501
8502      </itemizedlist>
8503
8504     </sect5>
8505
8506     <sect5>
8507      <title>Output</title>
8508
8509      <itemizedlist>
8510
8511       <listitem>
8512        <para>
8513         Add a <literal>latex-longtable</> output format to
8514         <application>psql</> (Bruce Momjian)
8515        </para>
8516
8517        <para>
8518         This format allows tables to span multiple pages.
8519        </para>
8520       </listitem>
8521
8522       <listitem>
8523        <para>
8524         Add a <literal>border=3</> output mode to the <application>psql</>
8525         <literal>latex</> format (Bruce Momjian)
8526        </para>
8527       </listitem>
8528
8529       <listitem>
8530        <para>
8531         In <application>psql</>'s tuples-only and expanded output modes, no
8532         longer emit <quote>(No rows)</> for zero rows (Peter Eisentraut)
8533        </para>
8534       </listitem>
8535
8536       <listitem>
8537        <para>
8538         In <application>psql</>'s unaligned, expanded output mode, no longer
8539         print an empty line for zero rows (Peter Eisentraut)
8540        </para>
8541       </listitem>
8542
8543      </itemizedlist>
8544
8545     </sect5>
8546
8547     </sect4>
8548
8549     <sect4>
8550      <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
8551
8552      <itemizedlist>
8553
8554       <listitem>
8555        <para>
8556         Add <application>pg_dump</> <option>--jobs</> option to dump tables in
8557         parallel (Joachim Wieland)
8558        </para>
8559       </listitem>
8560
8561       <listitem>
8562        <para>
8563         Make <application>pg_dump</> output functions in a more predictable
8564         order (Joel Jacobson)
8565        </para>
8566       </listitem>
8567
8568       <listitem>
8569        <para>
8570         Fix tar files emitted by <application>pg_dump</>
8571         to be <acronym>POSIX</> conformant (Brian Weaver, Tom Lane)
8572        </para>
8573       </listitem>
8574
8575       <listitem>
8576        <para>
8577         Add <option>--dbname</> option to <application>pg_dump</>, for
8578         consistency with other client commands (Heikki Linnakangas)
8579        </para>
8580
8581        <para>
8582         The database name could already be supplied last without a flag.
8583        </para>
8584       </listitem>
8585
8586      </itemizedlist>
8587
8588     </sect4>
8589
8590     <sect4>
8591      <title><link linkend="APP-INITDB"><application>initdb</></link></title>
8592
8593      <itemizedlist>
8594
8595       <listitem>
8596        <para>
8597         Make initdb fsync the newly created data directory (Jeff Davis)
8598        </para>
8599
8600        <para>
8601         This insures data integrity in event of a system crash shortly after
8602         initdb.  This can be disabled by using <option>--nosync</>.
8603        </para>
8604       </listitem>
8605
8606       <listitem>
8607        <para>
8608         Add initdb <option>--sync-only</> option to sync the data directory to durable
8609         storage (Bruce Momjian)
8610        </para>
8611
8612        <para>
8613         This is used by <link
8614         linkend="pgupgrade"><application>pg_upgrade</></link>.
8615        </para>
8616       </listitem>
8617
8618       <listitem>
8619        <para>
8620         Make initdb issue a warning about placing the data directory at the
8621         top of a file system mount point (Bruce Momjian)
8622        </para>
8623       </listitem>
8624
8625      </itemizedlist>
8626
8627     </sect4>
8628
8629    </sect3>
8630
8631    <sect3>
8632     <title>Source Code</title>
8633
8634      <itemizedlist>
8635
8636       <listitem>
8637        <para>
8638         Add infrastructure to allow plug-in <link
8639         linkend="bgworker">background worker processes</link>
8640         (&Aacute;lvaro Herrera)
8641        </para>
8642       </listitem>
8643
8644       <listitem>
8645        <para>
8646         Create a centralized timeout <acronym>API</> (Zolt&aacute;n
8647         B&ouml;sz&ouml;rm&eacute;nyi)
8648        </para>
8649       </listitem>
8650
8651       <listitem>
8652        <para>
8653         Create libpgcommon and move <function>pg_malloc()</> and other
8654         functions there (&Aacute;lvaro Herrera, Andres Freund)
8655        </para>
8656
8657        <para>
8658         This allows libpgport to be used solely for portability-related code.
8659        </para>
8660       </listitem>
8661
8662       <listitem>
8663        <para>
8664         Add support for list links embedded in larger structs (Andres Freund)
8665        </para>
8666       </listitem>
8667
8668       <listitem>
8669        <para>
8670         Use <literal>SA_RESTART</> for all signals,
8671         including <literal>SIGALRM</> (Tom Lane)
8672        </para>
8673       </listitem>
8674
8675       <listitem>
8676        <para>
8677         Ensure that the correct text domain is used when
8678         translating <function>errcontext()</> messages
8679         (Heikki Linnakangas)
8680        </para>
8681       </listitem>
8682
8683       <listitem>
8684        <para>
8685         Standardize naming of client-side memory allocation functions (Tom Lane)
8686        </para>
8687       </listitem>
8688
8689       <listitem>
8690        <para>
8691         Provide support for <quote>static assertions</> that will fail at
8692         compile time if some compile-time-constant condition is not met
8693         (Andres Freund, Tom Lane)
8694        </para>
8695       </listitem>
8696
8697       <listitem>
8698        <para>
8699         Support <function>Assert()</> in client-side code (Andrew Dunstan)
8700        </para>
8701       </listitem>
8702
8703       <listitem>
8704        <para>
8705         Add decoration to inform the C compiler that some <function>ereport()</>
8706         and <function>elog()</> calls do not return (Peter Eisentraut,
8707         Andres Freund, Tom Lane, Heikki Linnakangas)
8708        </para>
8709       </listitem>
8710
8711       <listitem>
8712        <para>
8713         Allow options to be passed to the regression
8714         test output comparison utility via <link
8715         linkend="regress-evaluation"><envar>PG_REGRESS_DIFF_OPTS</></link>
8716         (Peter Eisentraut)
8717        </para>
8718       </listitem>
8719
8720       <listitem>
8721        <para>
8722         Add isolation tests for <link
8723         linkend="SQL-CREATEINDEX"><command>CREATE INDEX
8724         CONCURRENTLY</></link> (Abhijit Menon-Sen)
8725        </para>
8726       </listitem>
8727
8728       <listitem>
8729        <para>
8730         Remove typedefs for <type>int2</>/<type>int4</> as they are better
8731         represented as <type>int16</>/<type>int32</> (Peter Eisentraut)
8732        </para>
8733       </listitem>
8734
8735       <listitem>
8736        <para>
8737         Fix <link linkend="install">install-strip</link> on Mac <productname>OS
8738         X</> (Peter Eisentraut)
8739        </para>
8740       </listitem>
8741
8742       <listitem>
8743        <para>
8744         Remove <link linkend="configure">configure</link> flag
8745         <option>--disable-shared</>, as it is no longer supported
8746         (Bruce Momjian)
8747        </para>
8748       </listitem>
8749
8750       <listitem>
8751        <para>
8752         Rewrite pgindent in <application>Perl</> (Andrew Dunstan)
8753        </para>
8754       </listitem>
8755
8756       <listitem>
8757        <para>
8758         Provide Emacs macro to set Perl formatting to
8759         match <productname>PostgreSQL</>'s perltidy settings (Peter Eisentraut)
8760        </para>
8761       </listitem>
8762
8763       <listitem>
8764        <para>
8765         Run tool to check the keyword list whenever the backend grammar is
8766         changed (Tom Lane)
8767        </para>
8768       </listitem>
8769
8770       <listitem>
8771        <para>
8772         Change the way <literal>UESCAPE</> is lexed, to significantly reduce
8773         the size of the lexer tables (Heikki Linnakangas)
8774        </para>
8775       </listitem>
8776
8777       <listitem>
8778        <para>
8779         Centralize <application>flex</> and <application>bison</>
8780         <application>make</> rules (Peter Eisentraut)
8781        </para>
8782
8783        <para>
8784         This is useful for <application>pgxs</> authors.
8785        </para>
8786       </listitem>
8787
8788       <listitem>
8789        <para>
8790         Change many internal backend functions to return object <type>OID</>s
8791         rather than void (Dimitri Fontaine)
8792        </para>
8793
8794        <para>
8795         This is useful for event triggers.
8796        </para>
8797       </listitem>
8798
8799       <listitem>
8800        <para>
8801         Invent pre-commit/pre-prepare/pre-subcommit events for transaction
8802         callbacks (Tom Lane)
8803        </para>
8804
8805        <para>
8806         Loadable modules that use transaction callbacks might need modification
8807         to handle these new event types.
8808        </para>
8809       </listitem>
8810
8811       <listitem>
8812        <para>
8813         Add function <link
8814         linkend="functions-info-catalog-table"><function>pg_identify_object()</></link>
8815         to produce a machine-readable description of a database object
8816         (&Aacute;lvaro Herrera)
8817        </para>
8818       </listitem>
8819
8820       <listitem>
8821        <para>
8822         Add post-<command>ALTER</>-object server hooks (KaiGai Kohei)
8823        </para>
8824       </listitem>
8825
8826       <listitem>
8827        <para>
8828         Implement a generic binary heap and use it for Merge-Append
8829         operations (Abhijit Menon-Sen)
8830        </para>
8831       </listitem>
8832
8833       <listitem>
8834        <para>
8835         Provide a tool to help detect timezone abbreviation changes when
8836         updating the <filename>src/timezone/data</> files
8837         (Tom Lane)
8838        </para>
8839       </listitem>
8840
8841       <listitem>
8842        <para>
8843         Add <application>pkg-config</> support for <application>libpq</>
8844         and <application>ecpg</> libraries (Peter Eisentraut)
8845        </para>
8846       </listitem>
8847
8848       <listitem>
8849        <para>
8850         Remove <filename>src/tool/backend</>, now that the content is on
8851         the <productname>PostgreSQL</> wiki (Bruce Momjian)
8852        </para>
8853       </listitem>
8854
8855       <listitem>
8856        <para>
8857         Split out <link linkend="wal"><acronym>WAL</></link> reading as
8858         an independent facility (Heikki Linnakangas, Andres Freund)
8859        </para>
8860       </listitem>
8861
8862       <listitem>
8863        <para>
8864         Use a 64-bit integer to represent <link
8865         linkend="wal"><acronym>WAL</></link> positions
8866         (<structname>XLogRecPtr</>) instead of two 32-bit integers
8867         (Heikki Linnakangas)
8868        </para>
8869
8870        <para>
8871         Generally, tools that need to read the <acronym>WAL</> format
8872         will need to be adjusted.
8873        </para>
8874       </listitem>
8875
8876       <listitem>
8877        <para>
8878         Allow <link linkend="plpython">PL/Python</link> to support
8879         platform-specific include directories (Peter Eisentraut)
8880        </para>
8881       </listitem>
8882
8883       <listitem>
8884        <para>
8885         Allow <link linkend="plpython">PL/Python</link> on <productname>OS
8886         X</> to build against custom versions of <application>Python</>
8887         (Peter Eisentraut)
8888        </para>
8889       </listitem>
8890
8891      </itemizedlist>
8892
8893    </sect3>
8894
8895    <sect3>
8896     <title>Additional Modules</title>
8897
8898     <itemizedlist>
8899
8900       <listitem>
8901        <para>
8902         Add a <link linkend="postgres-fdw"><productname>Postgres</> foreign
8903         data wrapper</link> contrib module to allow access to
8904         other <productname>Postgres</> servers (Shigeru Hanada)
8905        </para>
8906
8907        <para>
8908         This foreign data wrapper supports writes.
8909        </para>
8910       </listitem>
8911
8912       <listitem>
8913        <para>
8914         Add <link linkend="pgxlogdump"><application>pg_xlogdump</></link>
8915         contrib program (Andres Freund)
8916        </para>
8917       </listitem>
8918
8919       <listitem>
8920        <para>
8921         Add support for indexing of regular-expression searches in
8922         <link linkend="pgtrgm"><productname>pg_trgm</></link>
8923         (Alexander Korotkov)
8924        </para>
8925       </listitem>
8926
8927       <listitem>
8928        <para>
8929         Improve <link linkend="pgtrgm"><productname>pg_trgm</></link>'s
8930         handling of multibyte characters (Tom Lane)
8931        </para>
8932
8933        <para>
8934         On a platform that does not have the wcstombs() or towlower() library
8935         functions, this could result in an incompatible change in the contents
8936         of <productname>pg_trgm</> indexes for non-ASCII data.  In such cases,
8937         <command>REINDEX</> those indexes to ensure correct search results.
8938        </para>
8939       </listitem>
8940
8941       <listitem>
8942        <para>
8943         Add a <link linkend="pgstattuple">pgstattuple</link> function to report
8944         the size of the pending-insertions list of a <acronym>GIN</> index
8945         (Fujii Masao)
8946        </para>
8947       </listitem>
8948
8949       <listitem>
8950        <para>
8951         Make <link linkend="oid2name"><application>oid2name</></link>,
8952         <link linkend="pgbench"><application>pgbench</></link>, and
8953         <link linkend="vacuumlo"><application>vacuumlo</></link> set
8954         <varname>fallback_application_name</> (Amit Kapila)
8955        </para>
8956       </listitem>
8957
8958       <listitem>
8959        <para>
8960         Improve output of <link
8961         linkend="pgtesttiming"><application>pg_test_timing</></link>
8962         (Bruce Momjian)
8963        </para>
8964       </listitem>
8965
8966       <listitem>
8967        <para>
8968         Improve output of <link
8969         linkend="pgtestfsync"><application>pg_test_fsync</></link>
8970         (Peter Geoghegan)
8971        </para>
8972       </listitem>
8973
8974       <listitem>
8975        <para>
8976         Create a dedicated foreign data wrapper, with its own option validator
8977         function, for <link linkend="dblink">dblink</link> (Shigeru Hanada)
8978        </para>
8979
8980        <para>
8981         When using this FDW to define the target of a <application>dblink</>
8982         connection, instead of using a hard-wired list of connection options,
8983         the underlying <application>libpq</> library is consulted to see what
8984         connection options it supports.
8985        </para>
8986       </listitem>
8987
8988     </itemizedlist>
8989
8990     <sect4>
8991      <title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>
8992
8993      <itemizedlist>
8994
8995       <listitem>
8996        <para>
8997         Allow <application>pg_upgrade</> to do dumps and restores in
8998         parallel (Bruce Momjian, Andrew Dunstan)
8999        </para>
9000
9001        <para>
9002         This allows parallel schema dump/restore of databases, as well as
9003         parallel copy/link of data files per tablespace.  Use the
9004         <option>--jobs</> option to specify the level of parallelism.
9005        </para>
9006       </listitem>
9007
9008       <listitem>
9009        <para>
9010         Make <application>pg_upgrade</> create Unix-domain sockets in
9011         the current directory (Bruce Momjian, Tom Lane)
9012        </para>
9013
9014        <para>
9015         This reduces the possibility that someone will accidentally connect
9016         during the upgrade.
9017        </para>
9018       </listitem>
9019
9020       <listitem>
9021        <para>
9022         Make <application>pg_upgrade</> <option>--check</> mode properly
9023         detect the location of non-default socket directories (Bruce
9024         Momjian, Tom Lane)
9025        </para>
9026       </listitem>
9027
9028       <listitem>
9029        <para>
9030         Improve performance of <application>pg_upgrade</> for databases
9031         with many tables (Bruce Momjian)
9032        </para>
9033       </listitem>
9034
9035       <listitem>
9036        <para>
9037         Improve <application>pg_upgrade</>'s logs by showing
9038         executed commands (&Aacute;lvaro Herrera)
9039        </para>
9040       </listitem>
9041
9042       <listitem>
9043        <para>
9044         Improve <application>pg_upgrade</>'s status display during
9045         copy/link (Bruce Momjian)
9046        </para>
9047       </listitem>
9048
9049      </itemizedlist>
9050
9051     </sect4>
9052
9053     <sect4>
9054      <title><link linkend="pgbench"><application>pgbench</></link></title>
9055
9056      <itemizedlist>
9057
9058       <listitem>
9059        <para>
9060         Add <option>--foreign-keys</> option to <application>pgbench</>
9061         (Jeff Janes)
9062        </para>
9063
9064        <para>
9065         This adds foreign key constraints to the standard tables created by
9066         <application>pgbench</>, for use in foreign key performance testing.
9067        </para>
9068       </listitem>
9069
9070       <listitem>
9071        <para>
9072         Allow <application>pgbench</> to aggregate performance statistics
9073         and produce output every <option>--aggregate-interval</>
9074         seconds (Tomas Vondra)
9075        </para>
9076       </listitem>
9077
9078       <listitem>
9079        <para>
9080         Add <application>pgbench</> <option>--sampling-rate</> option
9081         to control the percentage of transactions logged (Tomas Vondra)
9082        </para>
9083       </listitem>
9084
9085       <listitem>
9086        <para>
9087         Reduce and improve the status message output of
9088         <application>pgbench</>'s initialization mode (Robert Haas,
9089         Peter Eisentraut)
9090        </para>
9091       </listitem>
9092
9093       <listitem>
9094        <para>
9095         Add <application>pgbench</> <option>-q</> mode to print one output
9096         line every five seconds (Tomas Vondra)
9097        </para>
9098       </listitem>
9099
9100       <listitem>
9101        <para>
9102         Output <application>pgbench</> elapsed and estimated remaining
9103         time during initialization (Tomas Vondra)
9104        </para>
9105       </listitem>
9106
9107       <listitem>
9108        <para>
9109         Allow <application>pgbench</> to use much larger scale factors,
9110         by changing relevant columns from <type>integer</> to <type>bigint</>
9111         when the requested scale factor exceeds 20000
9112         (Greg Smith)
9113        </para>
9114       </listitem>
9115
9116     </itemizedlist>
9117
9118     </sect4>
9119
9120    </sect3>
9121
9122    <sect3>
9123     <title>Documentation</title>
9124
9125     <itemizedlist>
9126
9127       <listitem>
9128        <para>
9129         Allow <productname>EPUB</>-format documentation to be created
9130         (Peter Eisentraut)
9131        </para>
9132       </listitem>
9133
9134       <listitem>
9135        <para>
9136         Update <productname>FreeBSD</> kernel configuration documentation
9137         (Brad Davis)
9138        </para>
9139       </listitem>
9140
9141       <listitem>
9142        <para>
9143         Improve <link linkend="tutorial-window"><literal>WINDOW</>
9144         function</link> documentation (Bruce Momjian, Florian Pflug)
9145        </para>
9146       </listitem>
9147
9148       <listitem>
9149        <para>
9150         Add <link linkend="docguide-toolsets">instructions</link> for setting
9151         up the documentation tool chain on Mac <productname>OS X</>
9152         (Peter Eisentraut)
9153        </para>
9154       </listitem>
9155
9156       <listitem>
9157        <para>
9158         Improve <link
9159         linkend="guc-commit-delay"><varname>commit_delay</></link>
9160         documentation (Peter Geoghegan)
9161        </para>
9162       </listitem>
9163
9164     </itemizedlist>
9165
9166    </sect3>
9167
9168   </sect2>
9169  </sect1>