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