]> granicus.if.org Git - postgresql/blob - doc/src/sgml/release-9.2.sgml
be3577977928bb0890ee98a7efa3131a6ef7a665
[postgresql] / doc / src / sgml / release-9.2.sgml
1 <!-- doc/src/sgml/release-9.2.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
3
4  <sect1 id="release-9-2-7">
5   <title>Release 9.2.7</title>
6
7   <note>
8   <title>Release Date</title>
9   <simpara>2014-02-20</simpara>
10   </note>
11
12   <para>
13    This release contains a variety of fixes from 9.2.6.
14    For information about new features in the 9.2 major release, see
15    <xref linkend="release-9-2">.
16   </para>
17
18   <sect2>
19    <title>Migration to Version 9.2.7</title>
20
21    <para>
22     A dump/restore is not required for those running 9.2.X.
23    </para>
24
25    <para>
26     However, if you are upgrading from a version earlier than 9.2.6,
27     see <xref linkend="release-9-2-6">.
28    </para>
29
30   </sect2>
31
32   <sect2>
33    <title>Changes</title>
34
35    <itemizedlist>
36
37     <listitem>
38      <para>
39       Shore up <literal>GRANT ... WITH ADMIN OPTION</> restrictions
40       (Noah Misch)
41      </para>
42
43      <para>
44       Granting a role without <literal>ADMIN OPTION</> is supposed to
45       prevent the grantee from adding or removing members from the granted
46       role, but this restriction was easily bypassed by doing <literal>SET
47       ROLE</> first.  The security impact is mostly that a role member can
48       revoke the access of others, contrary to the wishes of his grantor.
49       Unapproved role member additions are a lesser concern, since an
50       uncooperative role member could provide most of his rights to others
51       anyway by creating views or <literal>SECURITY DEFINER</> functions.
52       (CVE-2014-0060)
53      </para>
54     </listitem>
55
56     <listitem>
57      <para>
58       Prevent privilege escalation via manual calls to PL validator
59       functions (Andres Freund)
60      </para>
61
62      <para>
63       The primary role of PL validator functions is to be called implicitly
64       during <command>CREATE FUNCTION</>, but they are also normal SQL
65       functions that a user can call explicitly.  Calling a validator on
66       a function actually written in some other language was not checked
67       for and could be exploited for privilege-escalation purposes.
68       The fix involves adding a call to a privilege-checking function in
69       each validator function.  Non-core procedural languages will also
70       need to make this change to their own validator functions, if any.
71       (CVE-2014-0061)
72      </para>
73     </listitem>
74
75     <listitem>
76      <para>
77       Avoid multiple name lookups during table and index DDL
78       (Robert Haas, Andres Freund)
79      </para>
80
81      <para>
82       If the name lookups come to different conclusions due to concurrent
83       activity, we might perform some parts of the DDL on a different table
84       than other parts.  At least in the case of <command>CREATE INDEX</>,
85       this can be used to cause the permissions checks to be performed
86       against a different table than the index creation, allowing for a
87       privilege escalation attack.
88       (CVE-2014-0062)
89      </para>
90     </listitem>
91
92     <listitem>
93      <para>
94       Prevent buffer overrun with long datetime strings (Noah Misch)
95      </para>
96
97      <para>
98       The <literal>MAXDATELEN</> constant was too small for the longest
99       possible value of type <type>interval</>, allowing a buffer overrun
100       in <function>interval_out()</>.  Although the datetime input
101       functions were more careful about avoiding buffer overrun, the limit
102       was short enough to cause them to reject some valid inputs, such as
103       input containing a very long timezone name.  The <application>ecpg</>
104       library contained these vulnerabilities along with some of its own.
105       (CVE-2014-0063)
106      </para>
107     </listitem>
108
109     <listitem>
110      <para>
111       Prevent buffer overrun due to integer overflow in size calculations
112       (Noah Misch, Heikki Linnakangas)
113      </para>
114
115      <para>
116       Several functions, mostly type input functions, calculated an
117       allocation size without checking for overflow.  If overflow did
118       occur, a too-small buffer would be allocated and then written past.
119       (CVE-2014-0064)
120      </para>
121     </listitem>
122
123     <listitem>
124      <para>
125       Prevent overruns of fixed-size buffers
126       (Peter Eisentraut, Jozef Mlich)
127      </para>
128
129      <para>
130       Use <function>strlcpy()</> and related functions to provide a clear
131       guarantee that fixed-size buffers are not overrun.  Unlike the
132       preceding items, it is unclear whether these cases really represent
133       live issues, since in most cases there appear to be previous
134       constraints on the size of the input string.  Nonetheless it seems
135       prudent to silence all Coverity warnings of this type.
136       (CVE-2014-0065)
137      </para>
138     </listitem>
139
140     <listitem>
141      <para>
142       Avoid crashing if <function>crypt()</> returns NULL (Honza Horak,
143       Bruce Momjian)
144      </para>
145
146      <para>
147       There are relatively few scenarios in which <function>crypt()</>
148       could return NULL, but <filename>contrib/chkpass</> would crash
149       if it did.  One practical case in which this could be an issue is
150       if <application>libc</> is configured to refuse to execute unapproved
151       hashing algorithms (e.g., <quote>FIPS mode</>).
152       (CVE-2014-0066)
153      </para>
154     </listitem>
155
156     <listitem>
157      <para>
158       Document risks of <literal>make check</> in the regression testing
159       instructions (Noah Misch, Tom Lane)
160      </para>
161
162      <para>
163       Since the temporary server started by <literal>make check</>
164       uses <quote>trust</> authentication, another user on the same machine
165       could connect to it as database superuser, and then potentially
166       exploit the privileges of the operating-system user who started the
167       tests.  A future release will probably incorporate changes in the
168       testing procedure to prevent this risk, but some public discussion is
169       needed first.  So for the moment, just warn people against using
170       <literal>make check</> when there are untrusted users on the
171       same machine.
172       (CVE-2014-0067)
173      </para>
174     </listitem>
175
176     <listitem>
177      <para>
178       Fix possible mis-replay of WAL records when some segments of a
179       relation aren't full size (Greg Stark, Tom Lane)
180      </para>
181
182      <para>
183       The WAL update could be applied to the wrong page, potentially many
184       pages past where it should have been.  Aside from corrupting data,
185       this error has been observed to result in significant <quote>bloat</>
186       of standby servers compared to their masters, due to updates being
187       applied far beyond where the end-of-file should have been.  This
188       failure mode does not appear to be a significant risk during crash
189       recovery, only when initially synchronizing a standby created from a
190       base backup taken from a quickly-changing master.
191      </para>
192     </listitem>
193
194     <listitem>
195      <para>
196       Fix bug in determining when recovery has reached consistency
197       (Tomonari Katsumata, Heikki Linnakangas)
198      </para>
199
200      <para>
201       In some cases WAL replay would mistakenly conclude that the database
202       was already consistent at the start of replay, thus possibly allowing
203       hot-standby queries before the database was really consistent.  Other
204       symptoms such as <quote>PANIC: WAL contains references to invalid
205       pages</> were also possible.
206      </para>
207     </listitem>
208
209     <listitem>
210      <para>
211       Fix improper locking of btree index pages while replaying
212       a <literal>VACUUM</> operation in hot-standby mode (Andres Freund,
213       Heikki Linnakangas, Tom Lane)
214      </para>
215
216      <para>
217       This error could result in <quote>PANIC: WAL contains references to
218       invalid pages</> failures.
219      </para>
220     </listitem>
221
222     <listitem>
223      <para>
224       Ensure that insertions into non-leaf GIN index pages write a full-page
225       WAL record when appropriate (Heikki Linnakangas)
226      </para>
227
228      <para>
229       The previous coding risked index corruption in the event of a
230       partial-page write during a system crash.
231      </para>
232     </listitem>
233
234     <listitem>
235      <para>
236       When <literal>pause_at_recovery_target</>
237       and <literal>recovery_target_inclusive</> are both set, ensure the
238       target record is applied before pausing, not after (Heikki
239       Linnakangas)
240      </para>
241     </listitem>
242
243     <listitem>
244      <para>
245       Fix race conditions during server process exit (Robert Haas)
246      </para>
247
248      <para>
249       Ensure that signal handlers don't attempt to use the
250       process's <varname>MyProc</> pointer after it's no longer valid.
251      </para>
252     </listitem>
253
254     <listitem>
255      <para>
256       Fix race conditions in walsender shutdown logic and walreceiver
257       SIGHUP signal handler (Tom Lane)
258      </para>
259     </listitem>
260
261     <listitem>
262      <para>
263       Fix unsafe references to <varname>errno</> within error reporting
264       logic (Christian Kruse)
265      </para>
266
267      <para>
268       This would typically lead to odd behaviors such as missing or
269       inappropriate <literal>HINT</> fields.
270      </para>
271     </listitem>
272
273     <listitem>
274      <para>
275       Fix possible crashes from using <function>ereport()</> too early
276       during server startup (Tom Lane)
277      </para>
278
279      <para>
280       The principal case we've seen in the field is a crash if the server
281       is started in a directory it doesn't have permission to read.
282      </para>
283     </listitem>
284
285     <listitem>
286      <para>
287       Clear retry flags properly in OpenSSL socket write
288       function (Alexander Kukushkin)
289      </para>
290
291      <para>
292       This omission could result in a server lockup after unexpected loss
293       of an SSL-encrypted connection.
294      </para>
295     </listitem>
296
297     <listitem>
298      <para>
299       Fix length checking for Unicode identifiers (<literal>U&amp;"..."</>
300       syntax) containing escapes (Tom Lane)
301      </para>
302
303      <para>
304       A spurious truncation warning would be printed for such identifiers
305       if the escaped form of the identifier was too long, but the
306       identifier actually didn't need truncation after de-escaping.
307      </para>
308     </listitem>
309
310     <listitem>
311      <para>
312       Allow keywords that are type names to be used in lists of roles
313       (Stephen Frost)
314      </para>
315
316      <para>
317       A previous patch allowed such keywords to be used without quoting
318       in places such as role identifiers; but it missed cases where a
319       list of role identifiers was permitted, such as <literal>DROP ROLE</>.
320      </para>
321     </listitem>
322
323     <listitem>
324      <para>
325       Fix parser crash for <literal>EXISTS(SELECT * FROM
326       zero_column_table)</literal> (Tom Lane)
327      </para>
328     </listitem>
329
330     <listitem>
331      <para>
332       Fix possible crash due to invalid plan for nested sub-selects, such
333       as <literal>WHERE (... x IN (SELECT ...) ...) IN (SELECT ...)</>
334       (Tom Lane)
335      </para>
336     </listitem>
337
338     <listitem>
339      <para>
340       Fix <literal>UPDATE/DELETE</> of an inherited target table
341       that has <literal>UNION ALL</> subqueries (Tom Lane)
342      </para>
343
344      <para>
345       Without this fix, <literal>UNION ALL</> subqueries aren't correctly
346       inserted into the update plans for inheritance child tables after the
347       first one, typically resulting in no update happening for those child
348       table(s).
349      </para>
350     </listitem>
351
352     <listitem>
353      <para>
354       Ensure that <command>ANALYZE</> creates statistics for a table column
355       even when all the values in it are <quote>too wide</> (Tom Lane)
356      </para>
357
358      <para>
359       <command>ANALYZE</> intentionally omits very wide values from its
360       histogram and most-common-values calculations, but it neglected to do
361       something sane in the case that all the sampled entries are too wide.
362      </para>
363     </listitem>
364
365     <listitem>
366      <para>
367       In <literal>ALTER TABLE ... SET TABLESPACE</>, allow the database's
368       default tablespace to be used without a permissions check
369       (Stephen Frost)
370      </para>
371
372      <para>
373       <literal>CREATE TABLE</> has always allowed such usage,
374       but <literal>ALTER TABLE</> didn't get the memo.
375      </para>
376     </listitem>
377
378     <listitem>
379      <para>
380       Fix <quote>cannot accept a set</> error when some arms of
381       a <literal>CASE</> return a set and others don't (Tom Lane)
382      </para>
383     </listitem>
384
385     <listitem>
386      <para>
387       Properly distinguish numbers from non-numbers when generating JSON
388       output (Andrew Dunstan)
389      </para>
390     </listitem>
391
392     <listitem>
393      <para>
394       Fix checks for all-zero client addresses in pgstat functions (Kevin
395       Grittner)
396      </para>
397     </listitem>
398
399     <listitem>
400      <para>
401       Fix possible misclassification of multibyte characters by the text
402       search parser (Tom Lane)
403      </para>
404
405      <para>
406       Non-ASCII characters could be misclassified when using C locale with
407       a multibyte encoding.  On Cygwin, non-C locales could fail as well.
408      </para>
409     </listitem>
410
411     <listitem>
412      <para>
413       Fix possible misbehavior in <function>plainto_tsquery()</>
414       (Heikki Linnakangas)
415      </para>
416
417      <para>
418       Use <function>memmove()</> not <function>memcpy()</> for copying
419       overlapping memory regions.  There have been no field reports of
420       this actually causing trouble, but it's certainly risky.
421      </para>
422     </listitem>
423
424     <listitem>
425      <para>
426       Fix placement of permissions checks in <function>pg_start_backup()</>
427       and <function>pg_stop_backup()</> (Andres Freund, Magnus Hagander)
428      </para>
429
430      <para>
431       The previous coding might attempt to do catalog access when it
432       shouldn't.
433      </para>
434     </listitem>
435
436     <listitem>
437      <para>
438       Accept <literal>SHIFT_JIS</> as an encoding name for locale checking
439       purposes (Tatsuo Ishii)
440      </para>
441     </listitem>
442
443     <listitem>
444      <para>
445       Fix <literal>*</>-qualification of named parameters in SQL-language
446       functions (Tom Lane)
447      </para>
448
449      <para>
450       Given a composite-type parameter
451       named <literal>foo</>, <literal>$1.*</> worked fine,
452       but <literal>foo.*</> not so much.
453      </para>
454     </listitem>
455
456     <listitem>
457      <para>
458       Fix misbehavior of <function>PQhost()</> on Windows (Fujii Masao)
459      </para>
460
461      <para>
462       It should return <literal>localhost</> if no host has been specified.
463      </para>
464     </listitem>
465
466     <listitem>
467      <para>
468       Improve error handling in <application>libpq</> and <application>psql</>
469       for failures during <literal>COPY TO STDOUT/FROM STDIN</> (Tom Lane)
470      </para>
471
472      <para>
473       In particular this fixes an infinite loop that could occur in 9.2 and
474       up if the server connection was lost during <literal>COPY FROM
475       STDIN</>.  Variants of that scenario might be possible in older
476       versions, or with other client applications.
477      </para>
478     </listitem>
479
480     <listitem>
481      <para>
482       Fix incorrect translation handling in
483       some <application>psql</> <literal>\d</> commands
484       (Peter Eisentraut, Tom Lane)
485      </para>
486
487      <para>
488      </para>
489     </listitem>
490
491     <listitem>
492      <para>
493       Ensure <application>pg_basebackup</>'s background process is killed
494       when exiting its foreground process (Magnus Hagander)
495      </para>
496     </listitem>
497
498     <listitem>
499      <para>
500       Fix possible incorrect printing of filenames
501       in <application>pg_basebackup</>'s verbose mode (Magnus Hagander)
502      </para>
503     </listitem>
504
505     <listitem>
506      <para>
507       Avoid including tablespaces inside PGDATA twice in base backups
508       (Dimitri Fontaine, Magnus Hagander)
509      </para>
510     </listitem>
511
512     <listitem>
513      <para>
514       Fix misaligned descriptors in <application>ecpg</> (MauMau)
515      </para>
516     </listitem>
517
518     <listitem>
519      <para>
520       In <application>ecpg</>, handle lack of a hostname in the connection
521       parameters properly (Michael Meskes)
522      </para>
523     </listitem>
524
525     <listitem>
526      <para>
527       Fix performance regression in <filename>contrib/dblink</> connection
528       startup (Joe Conway)
529      </para>
530
531      <para>
532       Avoid an unnecessary round trip when client and server encodings match.
533      </para>
534     </listitem>
535
536     <listitem>
537      <para>
538       In <filename>contrib/isn</>, fix incorrect calculation of the check
539       digit for ISMN values (Fabien Coelho)
540      </para>
541     </listitem>
542
543     <listitem>
544      <para>
545       Fix <filename>contrib/pg_stat_statement</>'s handling
546       of <literal>CURRENT_DATE</> and related constructs (Kyotaro
547       Horiguchi)
548      </para>
549     </listitem>
550
551     <listitem>
552      <para>
553       Ensure client-code-only installation procedure works as documented
554       (Peter Eisentraut)
555      </para>
556     </listitem>
557
558     <listitem>
559      <para>
560       In Mingw and Cygwin builds, install the <application>libpq</> DLL
561       in the <filename>bin</> directory (Andrew Dunstan)
562      </para>
563
564      <para>
565       This duplicates what the MSVC build has long done.  It should fix
566       problems with programs like <application>psql</> failing to start
567       because they can't find the DLL.
568      </para>
569     </listitem>
570
571     <listitem>
572      <para>
573       Avoid using the deprecated <literal>dllwrap</> tool in Cygwin builds
574       (Marco Atzeri)
575      </para>
576     </listitem>
577
578     <listitem>
579      <para>
580       Don't generate plain-text <filename>HISTORY</>
581       and <filename>src/test/regress/README</> files anymore (Tom Lane)
582      </para>
583
584      <para>
585       These text files duplicated the main HTML and PDF documentation
586       formats.  The trouble involved in maintaining them greatly outweighs
587       the likely audience for plain-text format.  Distribution tarballs
588       will still contain files by these names, but they'll just be stubs
589       directing the reader to consult the main documentation.
590       The plain-text <filename>INSTALL</> file will still be maintained, as
591       there is arguably a use-case for that.
592      </para>
593     </listitem>
594
595     <listitem>
596      <para>
597       Update time zone data files to <application>tzdata</> release 2013i
598       for DST law changes in Jordan and historical changes in Cuba.
599      </para>
600
601      <para>
602       In addition, the zones <literal>Asia/Riyadh87</>,
603       <literal>Asia/Riyadh88</>, and <literal>Asia/Riyadh89</> have been
604       removed, as they are no longer maintained by IANA, and never
605       represented actual civil timekeeping practice.
606      </para>
607     </listitem>
608
609    </itemizedlist>
610
611   </sect2>
612  </sect1>
613
614  <sect1 id="release-9-2-6">
615   <title>Release 9.2.6</title>
616
617   <note>
618   <title>Release Date</title>
619   <simpara>2013-12-05</simpara>
620   </note>
621
622   <para>
623    This release contains a variety of fixes from 9.2.5.
624    For information about new features in the 9.2 major release, see
625    <xref linkend="release-9-2">.
626   </para>
627
628   <sect2>
629    <title>Migration to Version 9.2.6</title>
630
631    <para>
632     A dump/restore is not required for those running 9.2.X.
633    </para>
634
635    <para>
636     However, this release corrects a number of potential data corruption
637     issues.  See the first two changelog entries below to find out whether
638     your installation has been affected and what steps you can take if so.
639    </para>
640
641    <para>
642     Also, if you are upgrading from a version earlier than 9.2.4,
643     see <xref linkend="release-9-2-4">.
644    </para>
645
646   </sect2>
647
648   <sect2>
649    <title>Changes</title>
650
651    <itemizedlist>
652
653     <listitem>
654      <para>
655       Fix <command>VACUUM</>'s tests to see whether it can
656       update <structfield>relfrozenxid</> (Andres Freund)
657      </para>
658
659      <para>
660       In some cases <command>VACUUM</> (either manual or autovacuum) could
661       incorrectly advance a table's <structfield>relfrozenxid</> value,
662       allowing tuples to escape freezing, causing those rows to become
663       invisible once 2^31 transactions have elapsed.  The probability of
664       data loss is fairly low since multiple incorrect advancements would
665       need to happen before actual loss occurs, but it's not zero.  In 9.2.0
666       and later, the probability of loss is higher, and it's also possible
667       to get <quote>could not access status of transaction</> errors as a
668       consequence of this bug.  Users upgrading from releases 9.0.4 or 8.4.8
669       or earlier are not affected, but all later versions contain the bug.
670      </para>
671
672      <para>
673       The issue can be ameliorated by, after upgrading, vacuuming all tables
674       in all databases while having <link
675       linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link>
676       set to zero.  This will fix any latent corruption but will not be able
677       to fix all pre-existing data errors.  However, an installation can be
678       presumed safe after performing this vacuuming if it has executed fewer
679       than 2^31 update transactions in its lifetime (check this with
680       <literal>SELECT txid_current() < 2^31</>).
681      </para>
682     </listitem>
683
684     <listitem>
685      <para>
686       Fix initialization of <filename>pg_clog</> and <filename>pg_subtrans</>
687       during hot standby startup (Andres Freund, Heikki Linnakangas)
688      </para>
689
690      <para>
691       This bug can cause data loss on standby servers at the moment they
692       start to accept hot-standby queries, by marking committed transactions
693       as uncommitted. The likelihood of such corruption is small unless, at
694       the time of standby startup, the primary server has executed many
695       updating transactions since its last checkpoint.  Symptoms include
696       missing rows, rows that should have been deleted being still visible,
697       and obsolete versions of updated rows being still visible alongside
698       their newer versions.
699      </para>
700
701      <para>
702       This bug was introduced in versions 9.3.0, 9.2.5, 9.1.10, and 9.0.14.
703       Standby servers that have only been running earlier releases are not
704       at risk.  It's recommended that standby servers that have ever run any
705       of the buggy releases be re-cloned from the primary (e.g., with a new
706       base backup) after upgrading.
707      </para>
708     </listitem>
709
710     <listitem>
711      <para>
712       Fix dangling-pointer problem in fast-path locking (Tom Lane)
713      </para>
714
715      <para>
716       This could lead to corruption of the lock data structures in shared
717       memory, causing <quote>lock already held</> and other odd errors.
718      </para>
719     </listitem>
720
721     <listitem>
722      <para>
723       Truncate <filename>pg_multixact</> contents during WAL replay
724       (Andres Freund)
725      </para>
726
727      <para>
728       This avoids ever-increasing disk space consumption in standby servers.
729      </para>
730     </listitem>
731
732     <listitem>
733      <para>
734       Ensure an anti-wraparound <command>VACUUM</> counts a page as scanned
735       when it's only verified that no tuples need freezing (Sergey
736       Burladyan, Jeff Janes)
737      </para>
738
739      <para>
740       This bug could result in failing to
741       advance <structfield>relfrozenxid</>, so that the table would still be
742       thought to need another anti-wraparound vacuum.  In the worst case the
743       database might even shut down to prevent wraparound.
744      </para>
745     </listitem>
746
747     <listitem>
748      <para>
749       Fix race condition in GIN index posting tree page deletion (Heikki
750       Linnakangas)
751      </para>
752
753      <para>
754       This could lead to transient wrong answers or query failures.
755      </para>
756     </listitem>
757
758     <listitem>
759      <para>
760       Fix <quote>unexpected spgdoinsert() failure</> error during SP-GiST
761       index creation (Teodor Sigaev)
762      </para>
763     </listitem>
764
765     <listitem>
766      <para>
767       Avoid flattening a subquery whose <literal>SELECT</> list contains a
768       volatile function wrapped inside a sub-<literal>SELECT</> (Tom Lane)
769      </para>
770
771      <para>
772       This avoids unexpected results due to extra evaluations of the
773       volatile function.
774      </para>
775     </listitem>
776
777     <listitem>
778      <para>
779       Fix planner's processing of non-simple-variable subquery outputs
780       nested within outer joins (Tom Lane)
781      </para>
782
783      <para>
784       This error could lead to incorrect plans for queries involving
785       multiple levels of subqueries within <literal>JOIN</> syntax.
786      </para>
787     </listitem>
788
789     <listitem>
790      <para>
791       Fix incorrect planning in cases where the same non-strict expression
792       appears in multiple <literal>WHERE</> and outer <literal>JOIN</>
793       equality clauses (Tom Lane)
794      </para>
795     </listitem>
796
797     <listitem>
798      <para>
799       Fix planner crash with whole-row reference to a subquery (Tom Lane)
800      </para>
801     </listitem>
802
803     <listitem>
804      <para>
805       Fix incorrect generation of optimized MIN()/MAX() plans for
806       inheritance trees (Tom Lane)
807      </para>
808
809      <para>
810       The planner could fail in cases where the MIN()/MAX() argument was an
811       expression rather than a simple variable.
812      </para>
813     </listitem>
814
815     <listitem>
816      <para>
817       Fix premature deletion of temporary files (Andres Freund)
818      </para>
819     </listitem>
820
821     <listitem>
822      <para>
823       Prevent intra-transaction memory leak when printing range values
824       (Tom Lane)
825      </para>
826
827      <para>
828       This fix actually cures transient memory leaks in any datatype output
829       function, but range types are the only ones known to have had a
830       significant problem.
831      </para>
832     </listitem>
833
834     <listitem>
835      <para>
836       Prevent incorrect display of dropped columns in NOT NULL and CHECK
837       constraint violation messages (Michael Paquier and Tom Lane)
838      </para>
839     </listitem>
840
841     <listitem>
842      <para>
843       Allow default arguments and named-argument notation for window
844       functions (Tom Lane)
845      </para>
846
847      <para>
848       Previously, these cases were likely to crash.
849      </para>
850     </listitem>
851
852     <listitem>
853      <para>
854       Fix possible read past end of memory in rule printing (Peter Eisentraut)
855      </para>
856     </listitem>
857
858     <listitem>
859      <para>
860       Fix array slicing of <type>int2vector</> and <type>oidvector</> values
861       (Tom Lane)
862      </para>
863
864      <para>
865       Expressions of this kind are now implicitly promoted to
866       regular <type>int2</> or <type>oid</> arrays.
867      </para>
868     </listitem>
869
870     <listitem>
871      <para>
872       Fix incorrect behaviors when using a SQL-standard, simple GMT offset
873       timezone (Tom Lane)
874      </para>
875
876      <para>
877       In some cases, the system would use the simple GMT offset value when
878       it should have used the regular timezone setting that had prevailed
879       before the simple offset was selected.  This change also causes
880       the <function>timeofday</> function to honor the simple GMT offset
881       zone.
882      </para>
883     </listitem>
884
885     <listitem>
886      <para>
887       Prevent possible misbehavior when logging translations of Windows
888       error codes (Tom Lane)
889      </para>
890     </listitem>
891
892     <listitem>
893      <para>
894       Properly quote generated command lines in <application>pg_ctl</>
895       (Naoya Anzai and Tom Lane)
896      </para>
897
898      <para>
899       This fix applies only to Windows.
900      </para>
901     </listitem>
902
903     <listitem>
904      <para>
905       Fix <application>pg_dumpall</> to work when a source database
906       sets <link
907       linkend="guc-default-transaction-read-only"><varname>default_transaction_read_only</></link>
908       via <command>ALTER DATABASE SET</> (Kevin Grittner)
909      </para>
910
911      <para>
912       Previously, the generated script would fail during restore.
913      </para>
914     </listitem>
915
916     <listitem>
917      <para>
918       Make <application>ecpg</> search for quoted cursor names
919       case-sensitively (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
920      </para>
921     </listitem>
922
923     <listitem>
924      <para>
925       Fix <application>ecpg</>'s processing of lists of variables
926       declared <type>varchar</> (Zolt&aacute;n B&ouml;sz&ouml;rm&eacute;nyi)
927      </para>
928     </listitem>
929
930     <listitem>
931      <para>
932       Make <filename>contrib/lo</> defend against incorrect trigger definitions
933       (Marc Cousin)
934      </para>
935     </listitem>
936
937     <listitem>
938      <para>
939       Update time zone data files to <application>tzdata</> release 2013h
940       for DST law changes in Argentina, Brazil, Jordan, Libya,
941       Liechtenstein, Morocco, and Palestine.  Also, new timezone
942       abbreviations WIB, WIT, WITA for Indonesia.
943      </para>
944     </listitem>
945
946    </itemizedlist>
947
948   </sect2>
949  </sect1>
950
951  <sect1 id="release-9-2-5">
952   <title>Release 9.2.5</title>
953
954   <note>
955   <title>Release Date</title>
956   <simpara>2013-10-10</simpara>
957   </note>
958
959   <para>
960    This release contains a variety of fixes from 9.2.4.
961    For information about new features in the 9.2 major release, see
962    <xref linkend="release-9-2">.
963   </para>
964
965   <sect2>
966    <title>Migration to Version 9.2.5</title>
967
968    <para>
969     A dump/restore is not required for those running 9.2.X.
970    </para>
971
972    <para>
973     However, if you are upgrading from a version earlier than 9.2.4,
974     see <xref linkend="release-9-2-4">.
975    </para>
976
977   </sect2>
978
979   <sect2>
980    <title>Changes</title>
981
982    <itemizedlist>
983
984     <listitem>
985      <para>
986       Prevent corruption of multi-byte characters when attempting to
987       case-fold identifiers (Andrew Dunstan)
988      </para>
989
990      <para>
991       <productname>PostgreSQL</> case-folds non-ASCII characters only
992       when using a single-byte server encoding.
993      </para>
994     </listitem>
995
996     <listitem>
997      <para>
998       Fix memory leak when creating B-tree indexes on range columns
999       (Heikki Linnakangas)
1000      </para>
1001     </listitem>
1002
1003     <listitem>
1004      <para>
1005       Fix checkpoint memory leak in background writer when <literal>wal_level =
1006       hot_standby</> (Naoya Anzai)
1007      </para>
1008     </listitem>
1009
1010     <listitem>
1011      <para>
1012       Fix memory leak caused by <function>lo_open()</function> failure
1013       (Heikki Linnakangas)
1014      </para>
1015     </listitem>
1016
1017     <listitem>
1018      <para>
1019       Fix memory overcommit bug when <varname>work_mem</> is using more
1020       than 24GB of memory (Stephen Frost)
1021      </para>
1022     </listitem>
1023
1024     <listitem>
1025      <para>
1026       Serializable snapshot fixes (Kevin Grittner, Heikki Linnakangas)
1027      </para>
1028     </listitem>
1029
1030     <listitem>
1031      <para>
1032       Fix deadlock bug in libpq when using SSL (Stephen Frost)
1033      </para>
1034     </listitem>
1035
1036     <listitem>
1037      <para>
1038       Fix possible SSL state corruption in threaded libpq applications
1039       (Nick Phillips, Stephen Frost)
1040      </para>
1041     </listitem>
1042
1043     <listitem>
1044      <para>
1045       Improve estimate of planner cost when choosing between generic and
1046       custom plans (Tom Lane)
1047      </para>
1048
1049      <para>
1050       This change will favor generic plans when planning cost is high.
1051      </para>
1052     </listitem>
1053
1054     <listitem>
1055      <para>
1056       Properly compute row estimates for boolean columns containing many NULL
1057       values (Andrew Gierth)
1058      </para>
1059
1060      <para>
1061       Previously tests like <literal>col IS NOT TRUE</> and <literal>col IS
1062       NOT FALSE</> did not properly factor in NULL values when estimating
1063       plan costs.
1064      </para>
1065     </listitem>
1066
1067     <listitem>
1068      <para>
1069       Fix accounting for qualifier evaluation costs in <literal>UNION ALL</>
1070       and inheritance queries (Tom Lane)
1071      </para>
1072
1073      <para>
1074       This fixes cases where suboptimal query plans could be chosen if
1075       some <literal>WHERE</> clauses are expensive to calculate.
1076      </para>
1077     </listitem>
1078
1079     <listitem>
1080      <para>
1081       Prevent pushing down <literal>WHERE</> clauses into unsafe
1082       <literal>UNION/INTERSECT</> subqueries (Tom Lane)
1083      </para>
1084
1085      <para>
1086       Subqueries of a <literal>UNION</> or <literal>INTERSECT</> that
1087       contain set-returning functions or volatile functions in their
1088       <literal>SELECT</> lists could be improperly optimized, leading to
1089       run-time errors or incorrect query results.
1090      </para>
1091     </listitem>
1092
1093     <listitem>
1094      <para>
1095       Fix rare case of <quote>failed to locate grouping columns</>
1096       planner failure (Tom Lane)
1097      </para>
1098     </listitem>
1099
1100     <listitem>
1101      <para>
1102       Fix <application>pg_dump</> of foreign tables with dropped columns (Andrew Dunstan)
1103      </para>
1104
1105      <para>
1106       Previously such cases could cause a <application>pg_upgrade</> error.
1107      </para>
1108     </listitem>
1109
1110     <listitem>
1111      <para>
1112       Reorder <application>pg_dump</> processing of extension-related
1113       rules and event triggers (Joe Conway)
1114      </para>
1115     </listitem>
1116
1117     <listitem>
1118      <para>
1119       Force dumping of extension tables if specified by <command>pg_dump
1120       -t</> or <literal>-n</> (Joe Conway)
1121      </para>
1122     </listitem>
1123
1124     <listitem>
1125      <para>
1126       Improve view dumping code's handling of dropped columns in referenced
1127       tables (Tom Lane)
1128      </para>
1129     </listitem>
1130
1131     <listitem>
1132      <para>
1133       Fix <command>pg_restore -l</> with the directory archive to display
1134       the correct format name (Fujii Masao)
1135      </para>
1136     </listitem>
1137
1138     <listitem>
1139      <para>
1140       Properly record index comments created using <literal>UNIQUE</>
1141       and <literal>PRIMARY KEY</> syntax (Andres Freund)
1142      </para>
1143
1144      <para>
1145       This fixes a parallel <application>pg_restore</> failure.
1146      </para>
1147     </listitem>
1148
1149     <listitem>
1150      <para>
1151       Cause <command>pg_basebackup -x</> with an empty xlog directory
1152       to throw an error rather than crashing (Magnus Hagander, Haruka
1153       Takatsuka)
1154      </para>
1155     </listitem>
1156
1157     <listitem>
1158      <para>
1159       Properly guarantee transmission of WAL files before clean switchover
1160       (Fujii Masao)
1161      </para>
1162
1163      <para>
1164       Previously, the streaming replication connection might close before all
1165       WAL files had been replayed on the standby.
1166      </para>
1167     </listitem>
1168
1169     <listitem>
1170      <para>
1171       Fix WAL segment timeline handling during recovery (Mitsumasa Kondo,
1172       Heikki Linnakangas)
1173      </para>
1174
1175      <para>
1176       WAL file recycling during standby recovery could lead to premature
1177       recovery completion, resulting in data loss.
1178      </para>
1179     </listitem>
1180
1181     <listitem>
1182      <para>
1183       Fix <command>REINDEX TABLE</> and <command>REINDEX DATABASE</>
1184       to properly revalidate constraints and mark invalidated indexes as
1185       valid (Noah Misch)
1186      </para>
1187
1188      <para>
1189       <command>REINDEX INDEX</> has always worked properly.
1190      </para>
1191     </listitem>
1192
1193     <listitem>
1194      <para>
1195       Avoid deadlocks during insertion into SP-GiST indexes (Teodor Sigaev)
1196      </para>
1197     </listitem>
1198
1199     <listitem>
1200      <para>
1201       Fix possible deadlock during concurrent <command>CREATE INDEX
1202       CONCURRENTLY</> operations (Tom Lane)
1203      </para>
1204     </listitem>
1205
1206     <listitem>
1207      <para>
1208       Fix GiST index lookup crash (Tom Lane)
1209      </para>
1210     </listitem>
1211
1212     <listitem>
1213      <para>
1214       Fix <function>regexp_matches()</> handling of zero-length matches
1215       (Jeevan Chalke)
1216      </para>
1217
1218      <para>
1219       Previously, zero-length matches like '^' could return too many matches.
1220      </para>
1221     </listitem>
1222
1223     <listitem>
1224      <para>
1225       Fix crash for overly-complex regular expressions (Heikki Linnakangas)
1226      </para>
1227     </listitem>
1228
1229     <listitem>
1230      <para>
1231       Fix regular expression match failures for back references combined with
1232       non-greedy quantifiers (Jeevan Chalke)
1233      </para>
1234     </listitem>
1235
1236     <listitem>
1237      <para>
1238       Prevent <command>CREATE FUNCTION</> from checking <command>SET</>
1239       variables unless function body checking is enabled (Tom Lane)
1240      </para>
1241     </listitem>
1242
1243     <listitem>
1244      <para>
1245       Allow <command>ALTER DEFAULT PRIVILEGES</> to operate on schemas
1246       without requiring CREATE permission (Tom Lane)
1247      </para>
1248     </listitem>
1249
1250     <listitem>
1251      <para>
1252       Loosen restriction on keywords used in queries (Tom Lane)
1253      </para>
1254
1255      <para>
1256       Specifically, lessen keyword restrictions for role names, language
1257       names, <command>EXPLAIN</> and <command>COPY</> options, and
1258       <command>SET</> values.  This allows <literal>COPY ... (FORMAT
1259       BINARY)</> to work as expected; previously <literal>BINARY</> needed
1260       to be quoted.
1261      </para>
1262     </listitem>
1263
1264     <listitem>
1265      <para>
1266       Print proper line number during <command>COPY</> failure (Heikki
1267       Linnakangas)
1268      </para>
1269     </listitem>
1270
1271     <listitem>
1272      <para>
1273       Fix <function>pgp_pub_decrypt()</> so it works for secret keys with
1274       passwords (Marko Kreen)
1275      </para>
1276     </listitem>
1277
1278     <listitem>
1279      <para>
1280       Make <application>pg_upgrade</> use <literal>pg_dump
1281       --quote-all-identifiers</> to avoid problems with keyword changes
1282       between releases (Tom Lane)
1283      </para>
1284     </listitem>
1285
1286     <listitem>
1287      <para>
1288       Remove rare inaccurate warning during vacuum of index-less tables
1289       (Heikki Linnakangas)
1290      </para>
1291     </listitem>
1292
1293     <listitem>
1294      <para>
1295       Ensure that <command>VACUUM ANALYZE</> still runs the ANALYZE phase
1296       if its attempt to truncate the file is cancelled due to lock conflicts
1297       (Kevin Grittner)
1298      </para>
1299     </listitem>
1300
1301     <listitem>
1302      <para>
1303       Avoid possible failure when performing transaction control commands (e.g
1304       <command>ROLLBACK</>) in prepared queries (Tom Lane)
1305      </para>
1306     </listitem>
1307
1308     <listitem>
1309      <para>
1310       Ensure that floating-point data input accepts standard spellings
1311       of <quote>infinity</> on all platforms (Tom Lane)
1312      </para>
1313
1314      <para>
1315       The C99 standard says that allowable spellings are <literal>inf</>,
1316       <literal>+inf</>, <literal>-inf</>, <literal>infinity</>,
1317       <literal>+infinity</>, and <literal>-infinity</>.  Make sure we
1318       recognize these even if the platform's <function>strtod</> function
1319       doesn't.
1320      </para>
1321     </listitem>
1322
1323     <listitem>
1324      <para>
1325       Avoid unnecessary reporting when <varname>track_activities</> is off
1326       (Tom Lane)
1327      </para>
1328     </listitem>
1329
1330     <listitem>
1331      <para>
1332       Expand ability to compare rows to records and arrays (Rafal Rzepecki,
1333       Tom Lane)
1334      </para>
1335     </listitem>
1336
1337     <listitem>
1338      <para>
1339       Prevent crash when <application>psql</>'s <envar>PSQLRC</> variable
1340       contains a tilde (Bruce Momjian)
1341      </para>
1342     </listitem>
1343
1344     <listitem>
1345      <para>
1346       Add spinlock support for ARM64 (Mark Salter)
1347      </para>
1348     </listitem>
1349
1350     <listitem>
1351      <para>
1352       Update time zone data files to <application>tzdata</> release 2013d
1353       for DST law changes in Israel, Morocco, Palestine, and Paraguay.
1354       Also, historical zone data corrections for Macquarie Island.
1355      </para>
1356     </listitem>
1357
1358    </itemizedlist>
1359
1360   </sect2>
1361  </sect1>
1362
1363  <sect1 id="release-9-2-4">
1364   <title>Release 9.2.4</title>
1365
1366   <note>
1367   <title>Release Date</title>
1368   <simpara>2013-04-04</simpara>
1369   </note>
1370
1371   <para>
1372    This release contains a variety of fixes from 9.2.3.
1373    For information about new features in the 9.2 major release, see
1374    <xref linkend="release-9-2">.
1375   </para>
1376
1377   <sect2>
1378    <title>Migration to Version 9.2.4</title>
1379
1380    <para>
1381     A dump/restore is not required for those running 9.2.X.
1382    </para>
1383
1384    <para>
1385     However, this release corrects several errors in management of GiST
1386     indexes.  After installing this update, it is advisable to
1387     <command>REINDEX</> any GiST indexes that meet one or more of the
1388     conditions described below.
1389    </para>
1390
1391    <para>
1392     Also, if you are upgrading from a version earlier than 9.2.2,
1393     see <xref linkend="release-9-2-2">.
1394    </para>
1395
1396   </sect2>
1397
1398   <sect2>
1399    <title>Changes</title>
1400
1401    <itemizedlist>
1402
1403     <listitem>
1404      <para>
1405       Fix insecure parsing of server command-line switches (Mitsumasa
1406       Kondo, Kyotaro Horiguchi)
1407      </para>
1408
1409      <para>
1410       A connection request containing a database name that begins with
1411       <quote><literal>-</></quote> could be crafted to damage or destroy
1412       files within the server's data directory, even if the request is
1413       eventually rejected.  (CVE-2013-1899)
1414      </para>
1415     </listitem>
1416
1417     <listitem>
1418      <para>
1419       Reset OpenSSL randomness state in each postmaster child process
1420       (Marko Kreen)
1421      </para>
1422
1423      <para>
1424       This avoids a scenario wherein random numbers generated by
1425       <filename>contrib/pgcrypto</> functions might be relatively easy for
1426       another database user to guess.  The risk is only significant when
1427       the postmaster is configured with <varname>ssl</> = <literal>on</>
1428       but most connections don't use SSL encryption.  (CVE-2013-1900)
1429      </para>
1430     </listitem>
1431
1432     <listitem>
1433      <para>
1434       Make REPLICATION privilege checks test current user not authenticated
1435       user (Noah Misch)
1436      </para>
1437
1438      <para>
1439       An unprivileged database user could exploit this mistake to call
1440       <function>pg_start_backup()</> or <function>pg_stop_backup()</>,
1441       thus possibly interfering with creation of routine backups.
1442       (CVE-2013-1901)
1443      </para>
1444     </listitem>
1445
1446     <listitem>
1447      <para>
1448       Fix GiST indexes to not use <quote>fuzzy</> geometric comparisons when
1449       it's not appropriate to do so (Alexander Korotkov)
1450      </para>
1451
1452      <para>
1453       The core geometric types perform comparisons using <quote>fuzzy</>
1454       equality, but <function>gist_box_same</> must do exact comparisons,
1455       else GiST indexes using it might become inconsistent.  After installing
1456       this update, users should <command>REINDEX</> any GiST indexes on
1457       <type>box</>, <type>polygon</>, <type>circle</>, or <type>point</>
1458       columns, since all of these use <function>gist_box_same</>.
1459      </para>
1460     </listitem>
1461
1462     <listitem>
1463      <para>
1464       Fix erroneous range-union and penalty logic in GiST indexes that use
1465       <filename>contrib/btree_gist</> for variable-width data types, that is
1466       <type>text</>, <type>bytea</>, <type>bit</>, and <type>numeric</>
1467       columns (Tom Lane)
1468      </para>
1469
1470      <para>
1471       These errors could result in inconsistent indexes in which some keys
1472       that are present would not be found by searches, and also in useless
1473       index bloat.  Users are advised to <command>REINDEX</> such indexes
1474       after installing this update.
1475      </para>
1476     </listitem>
1477
1478     <listitem>
1479      <para>
1480       Fix bugs in GiST page splitting code for multi-column indexes
1481       (Tom Lane)
1482      </para>
1483
1484      <para>
1485       These errors could result in inconsistent indexes in which some keys
1486       that are present would not be found by searches, and also in indexes
1487       that are unnecessarily inefficient to search.  Users are advised to
1488       <command>REINDEX</> multi-column GiST indexes after installing this
1489       update.
1490      </para>
1491     </listitem>
1492
1493     <listitem>
1494      <para>
1495       Fix <function>gist_point_consistent</>
1496       to handle fuzziness consistently (Alexander Korotkov)
1497      </para>
1498
1499      <para>
1500       Index scans on GiST indexes on <type>point</> columns would sometimes
1501       yield results different from a sequential scan, because
1502       <function>gist_point_consistent</> disagreed with the underlying
1503       operator code about whether to do comparisons exactly or fuzzily.
1504      </para>
1505     </listitem>
1506
1507     <listitem>
1508      <para>
1509       Fix buffer leak in WAL replay (Heikki Linnakangas)
1510      </para>
1511
1512      <para>
1513       This bug could result in <quote>incorrect local pin count</> errors
1514       during replay, making recovery impossible.
1515      </para>
1516     </listitem>
1517
1518     <listitem>
1519      <para>
1520       Ensure we do crash recovery before entering archive recovery, if the
1521       database was not stopped cleanly and a <filename>recovery.conf</> file
1522       is present (Heikki Linnakangas, Kyotaro Horiguchi, Mitsumasa Kondo)
1523      </para>
1524
1525      <para>
1526       This is needed to ensure that the database is consistent in certain
1527       scenarios, such as initializing a standby server with a filesystem
1528       snapshot from a running server.
1529      </para>
1530     </listitem>
1531
1532     <listitem>
1533      <para>
1534       Avoid deleting not-yet-archived WAL files during crash recovery
1535       (Heikki Linnakangas, Fujii Masao)
1536      </para>
1537     </listitem>
1538
1539     <listitem>
1540      <para>
1541       Fix race condition in <command>DELETE RETURNING</> (Tom Lane)
1542      </para>
1543
1544      <para>
1545       Under the right circumstances, <command>DELETE RETURNING</> could
1546       attempt to fetch data from a shared buffer that the current process
1547       no longer has any pin on.  If some other process changed the buffer
1548       meanwhile, this would lead to garbage <literal>RETURNING</> output, or
1549       even a crash.
1550      </para>
1551     </listitem>
1552
1553     <listitem>
1554      <para>
1555       Fix infinite-loop risk in regular expression compilation (Tom Lane,
1556       Don Porter)
1557      </para>
1558     </listitem>
1559
1560     <listitem>
1561      <para>
1562       Fix potential null-pointer dereference in regular expression compilation
1563       (Tom Lane)
1564      </para>
1565     </listitem>
1566
1567     <listitem>
1568      <para>
1569       Fix <function>to_char()</> to use ASCII-only case-folding rules where
1570       appropriate (Tom Lane)
1571      </para>
1572
1573      <para>
1574       This fixes misbehavior of some template patterns that should be
1575       locale-independent, but mishandled <quote><literal>I</></quote> and
1576       <quote><literal>i</></quote> in Turkish locales.
1577      </para>
1578     </listitem>
1579
1580     <listitem>
1581      <para>
1582       Fix unwanted rejection of timestamp <literal>1999-12-31 24:00:00</>
1583       (Tom Lane)
1584      </para>
1585     </listitem>
1586
1587     <listitem>
1588      <para>
1589       Fix SQL-language functions to be safely usable as support
1590       functions for range types (Tom Lane)
1591      </para>
1592     </listitem>
1593
1594     <listitem>
1595      <para>
1596       Fix logic error when a single transaction does <command>UNLISTEN</>
1597       then <command>LISTEN</> (Tom Lane)
1598      </para>
1599
1600      <para>
1601       The session wound up not listening for notify events at all, though it
1602       surely should listen in this case.
1603      </para>
1604     </listitem>
1605
1606     <listitem>
1607      <para>
1608       Fix possible planner crash after columns have been added to a view
1609       that's depended on by another view (Tom Lane)
1610      </para>
1611     </listitem>
1612
1613     <listitem>
1614      <para>
1615       Fix performance issue in <literal>EXPLAIN (ANALYZE, TIMING OFF)</>
1616       (Pavel Stehule)
1617      </para>
1618     </listitem>
1619
1620     <listitem>
1621      <para>
1622       Remove useless <quote>picksplit doesn't support secondary split</> log
1623       messages (Josh Hansen, Tom Lane)
1624      </para>
1625
1626      <para>
1627       This message seems to have been added in expectation of code that was
1628       never written, and probably never will be, since GiST's default
1629       handling of secondary splits is actually pretty good.  So stop nagging
1630       end users about it.
1631      </para>
1632     </listitem>
1633
1634     <listitem>
1635      <para>
1636       Remove vestigial secondary-split support in
1637       <function>gist_box_picksplit()</> (Tom Lane)
1638      </para>
1639
1640      <para>
1641       Not only was this implementation of secondary-split not better than the
1642       default implementation, it's actually worse.  So remove it and let the
1643       default code path handle the case.
1644      </para>
1645     </listitem>
1646
1647     <listitem>
1648      <para>
1649       Fix possible failure to send a session's last few transaction
1650       commit/abort counts to the statistics collector (Tom Lane)
1651      </para>
1652     </listitem>
1653
1654     <listitem>
1655      <para>
1656       Eliminate memory leaks in PL/Perl's <function>spi_prepare()</> function
1657       (Alex Hunsaker, Tom Lane)
1658      </para>
1659     </listitem>
1660
1661     <listitem>
1662      <para>
1663       Fix <application>pg_dumpall</> to handle database names containing
1664       <quote><literal>=</></quote> correctly (Heikki Linnakangas)
1665      </para>
1666     </listitem>
1667
1668     <listitem>
1669      <para>
1670       Avoid crash in <application>pg_dump</> when an incorrect connection
1671       string is given (Heikki Linnakangas)
1672      </para>
1673     </listitem>
1674
1675     <listitem>
1676      <para>
1677       Ignore invalid indexes in <application>pg_dump</> and
1678       <application>pg_upgrade</> (Michael Paquier, Bruce Momjian)
1679      </para>
1680
1681      <para>
1682       Dumping invalid indexes can cause problems at restore time, for example
1683       if the reason the index creation failed was because it tried to enforce
1684       a uniqueness condition not satisfied by the table's data.  Also, if the
1685       index creation is in fact still in progress, it seems reasonable to
1686       consider it to be an uncommitted DDL change, which
1687       <application>pg_dump</> wouldn't be expected to dump anyway.
1688       <application>pg_upgrade</> now also skips invalid indexes rather than
1689       failing.
1690      </para>
1691     </listitem>
1692
1693     <listitem>
1694      <para>
1695       In <application>pg_basebackup</>, include only the current server
1696       version's subdirectory when backing up a tablespace (Heikki
1697       Linnakangas)
1698      </para>
1699     </listitem>
1700
1701     <listitem>
1702      <para>
1703       Add a server version check in <application>pg_basebackup</> and
1704       <application>pg_receivexlog</>, so they fail cleanly with version
1705       combinations that won't work (Heikki Linnakangas)
1706      </para>
1707     </listitem>
1708
1709     <listitem>
1710      <para>
1711       Fix <filename>contrib/dblink</> to handle inconsistent settings of
1712       <varname>DateStyle</> or <varname>IntervalStyle</> safely (Daniel
1713       Farina, Tom Lane)
1714      </para>
1715
1716      <para>
1717       Previously, if the remote server had different settings of these
1718       parameters, ambiguous dates might be read incorrectly.  This fix
1719       ensures that datetime and interval columns fetched by a
1720       <filename>dblink</> query will be interpreted correctly.  Note however
1721       that inconsistent settings are still risky, since literal values
1722       appearing in SQL commands sent to the remote server might be
1723       interpreted differently than they would be locally.
1724      </para>
1725     </listitem>
1726
1727     <listitem>
1728      <para>
1729       Fix <filename>contrib/pg_trgm</>'s <function>similarity()</> function
1730       to return zero for trigram-less strings (Tom Lane)
1731      </para>
1732
1733      <para>
1734       Previously it returned <literal>NaN</> due to internal division by zero.
1735      </para>
1736     </listitem>
1737
1738     <listitem>
1739      <para>
1740       Enable building <productname>PostgreSQL</> with Microsoft Visual
1741       Studio 2012 (Brar Piening, Noah Misch)
1742      </para>
1743     </listitem>
1744
1745     <listitem>
1746      <para>
1747       Update time zone data files to <application>tzdata</> release 2013b
1748       for DST law changes in Chile, Haiti, Morocco, Paraguay, and some
1749       Russian areas.  Also, historical zone data corrections for numerous
1750       places.
1751      </para>
1752
1753      <para>
1754       Also, update the time zone abbreviation files for recent changes in
1755       Russia and elsewhere: <literal>CHOT</>, <literal>GET</>,
1756       <literal>IRKT</>, <literal>KGT</>, <literal>KRAT</>, <literal>MAGT</>,
1757       <literal>MAWT</>, <literal>MSK</>, <literal>NOVT</>, <literal>OMST</>,
1758       <literal>TKT</>, <literal>VLAT</>, <literal>WST</>, <literal>YAKT</>,
1759       <literal>YEKT</> now follow their current meanings, and
1760       <literal>VOLT</> (Europe/Volgograd) and <literal>MIST</>
1761       (Antarctica/Macquarie) are added to the default abbreviations list.
1762      </para>
1763     </listitem>
1764
1765    </itemizedlist>
1766
1767   </sect2>
1768  </sect1>
1769
1770  <sect1 id="release-9-2-3">
1771   <title>Release 9.2.3</title>
1772
1773   <note>
1774   <title>Release Date</title>
1775   <simpara>2013-02-07</simpara>
1776   </note>
1777
1778   <para>
1779    This release contains a variety of fixes from 9.2.2.
1780    For information about new features in the 9.2 major release, see
1781    <xref linkend="release-9-2">.
1782   </para>
1783
1784   <sect2>
1785    <title>Migration to Version 9.2.3</title>
1786
1787    <para>
1788     A dump/restore is not required for those running 9.2.X.
1789    </para>
1790
1791    <para>
1792     However, if you are upgrading from a version earlier than 9.2.2,
1793     see <xref linkend="release-9-2-2">.
1794    </para>
1795
1796   </sect2>
1797
1798   <sect2>
1799    <title>Changes</title>
1800
1801    <itemizedlist>
1802
1803     <listitem>
1804      <para>
1805       Prevent execution of <function>enum_recv</> from SQL (Tom Lane)
1806      </para>
1807
1808      <para>
1809       The function was misdeclared, allowing a simple SQL command to crash the
1810       server.  In principle an attacker might be able to use it to examine the
1811       contents of server memory.  Our thanks to Sumit Soni (via Secunia SVCRP)
1812       for reporting this issue.  (CVE-2013-0255)
1813      </para>
1814     </listitem>
1815
1816     <listitem>
1817      <para>
1818       Fix multiple problems in detection of when a consistent database
1819       state has been reached during WAL replay (Fujii Masao, Heikki
1820       Linnakangas, Simon Riggs, Andres Freund)
1821      </para>
1822     </listitem>
1823
1824     <listitem>
1825      <para>
1826       Fix detection of end-of-backup point when no actual redo work is
1827       required (Heikki Linnakangas)
1828      </para>
1829
1830      <para>
1831       This mistake could result in incorrect <quote>WAL ends before end of
1832       online backup</> errors.
1833      </para>
1834     </listitem>
1835
1836     <listitem>
1837      <para>
1838       Update minimum recovery point when truncating a relation file (Heikki
1839       Linnakangas)
1840      </para>
1841
1842      <para>
1843       Once data has been discarded, it's no longer safe to stop recovery at
1844       an earlier point in the timeline.
1845      </para>
1846     </listitem>
1847
1848     <listitem>
1849      <para>
1850       Fix recycling of WAL segments after changing recovery target timeline
1851       (Heikki Linnakangas)
1852      </para>
1853     </listitem>
1854
1855     <listitem>
1856      <para>
1857       Properly restore timeline history files from archive on cascading
1858       standby servers (Heikki Linnakangas)
1859      </para>
1860     </listitem>
1861
1862     <listitem>
1863      <para>
1864       Fix lock conflict detection on hot-standby servers (Andres Freund,
1865       Robert Haas)
1866      </para>
1867     </listitem>
1868
1869     <listitem>
1870      <para>
1871       Fix missing cancellations in hot standby mode (Noah Misch, Simon Riggs)
1872      </para>
1873
1874      <para>
1875       The need to cancel conflicting hot-standby queries would sometimes be
1876       missed, allowing those queries to see inconsistent data.
1877      </para>
1878     </listitem>
1879
1880     <listitem>
1881      <para>
1882       Prevent recovery pause feature from pausing before users can connect
1883       (Tom Lane)
1884      </para>
1885     </listitem>
1886
1887     <listitem>
1888      <para>
1889       Fix SQL grammar to allow subscripting or field selection from a
1890       sub-SELECT result (Tom Lane)
1891      </para>
1892     </listitem>
1893
1894     <listitem>
1895      <para>
1896       Fix performance problems with autovacuum truncation in busy workloads
1897       (Jan Wieck)
1898      </para>
1899
1900      <para>
1901       Truncation of empty pages at the end of a table requires exclusive
1902       lock, but autovacuum was coded to fail (and release the table lock)
1903       when there are conflicting lock requests.  Under load, it is easily
1904       possible that truncation would never occur, resulting in table bloat.
1905       Fix by performing a partial truncation, releasing the lock, then
1906       attempting to re-acquire the lock and continue.  This fix also greatly
1907       reduces the average time before autovacuum releases the lock after a
1908       conflicting request arrives.
1909      </para>
1910     </listitem>
1911
1912     <listitem>
1913      <para>
1914       Improve performance of <function>SPI_execute</> and related
1915       functions, thereby improving PL/pgSQL's <literal>EXECUTE</>
1916       (Heikki Linnakangas, Tom Lane)
1917      </para>
1918
1919      <para>
1920       Remove some data-copying overhead that was added in 9.2 as a
1921       consequence of revisions in the plan caching mechanism.  This
1922       eliminates a performance regression compared to 9.1, and also saves
1923       memory, especially when the query string to be executed contains many
1924       SQL statements.
1925      </para>
1926
1927      <para>
1928       A side benefit is that multi-statement query strings are now
1929       processed fully serially, that is we complete execution of earlier
1930       statements before running parse analysis and planning on the
1931       following ones.  This eliminates a long-standing issue, in that DDL
1932       that should affect the behavior of a later statement will now behave as
1933       expected.
1934      </para>
1935     </listitem>
1936
1937     <listitem>
1938      <para>
1939       Restore pre-9.2 cost estimates for index usage (Tom Lane)
1940      </para>
1941
1942      <para>
1943       An ill-considered change of a fudge factor led to undesirably high
1944       cost estimates for use of very large indexes.
1945      </para>
1946     </listitem>
1947
1948     <listitem>
1949      <para>
1950       Fix intermittent crash in <literal>DROP INDEX CONCURRENTLY</> (Tom Lane)
1951      </para>
1952     </listitem>
1953
1954     <listitem>
1955      <para>
1956       Fix potential corruption of shared-memory lock table during
1957       <command>CREATE/DROP INDEX CONCURRENTLY</> (Tom Lane)
1958      </para>
1959     </listitem>
1960
1961     <listitem>
1962      <para>
1963       Fix <command>COPY</>'s multiple-tuple-insertion code for the case of
1964       a tuple larger than page size minus fillfactor (Heikki Linnakangas)
1965      </para>
1966
1967      <para>
1968       The previous coding could get into an infinite loop.
1969      </para>
1970     </listitem>
1971
1972     <listitem>
1973      <para>
1974       Protect against race conditions when scanning
1975       <structname>pg_tablespace</> (Stephen Frost, Tom Lane)
1976      </para>
1977
1978      <para>
1979       <command>CREATE DATABASE</> and <command>DROP DATABASE</> could
1980       misbehave if there were concurrent updates of
1981       <structname>pg_tablespace</> entries.
1982      </para>
1983     </listitem>
1984
1985     <listitem>
1986      <para>
1987       Prevent <command>DROP OWNED</> from trying to drop whole databases or
1988       tablespaces (&Aacute;lvaro Herrera)
1989      </para>
1990
1991      <para>
1992       For safety, ownership of these objects must be reassigned, not dropped.
1993      </para>
1994     </listitem>
1995
1996     <listitem>
1997      <para>
1998       Fix error in <link
1999       linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link>
2000       implementation (Andres Freund)
2001      </para>
2002
2003      <para>
2004       In installations that have existed for more than <link
2005       linkend="guc-vacuum-freeze-min-age"><varname>vacuum_freeze_min_age</></link>
2006       transactions, this mistake prevented autovacuum from using partial-table
2007       scans, so that a full-table scan would always happen instead.
2008      </para>
2009     </listitem>
2010
2011     <listitem>
2012      <para>
2013       Prevent misbehavior when a <symbol>RowExpr</> or <symbol>XmlExpr</>
2014       is parse-analyzed twice (Andres Freund, Tom Lane)
2015      </para>
2016
2017      <para>
2018       This mistake could be user-visible in contexts such as
2019       <literal>CREATE TABLE LIKE INCLUDING INDEXES</>.
2020      </para>
2021     </listitem>
2022
2023     <listitem>
2024      <para>
2025       Improve defenses against integer overflow in hashtable sizing
2026       calculations (Jeff Davis)
2027      </para>
2028     </listitem>
2029
2030     <listitem>
2031      <para>
2032       Fix some bugs associated with privileges on datatypes (Tom Lane)
2033      </para>
2034
2035      <para>
2036       There were some issues with default privileges for types, and
2037       <application>pg_dump</> failed to dump such privileges at all.
2038      </para>
2039     </listitem>
2040
2041     <listitem>
2042      <para>
2043       Fix failure to ignore leftover temporary tables after a server crash
2044       (Tom Lane)
2045      </para>
2046     </listitem>
2047
2048     <listitem>
2049      <para>
2050       Fix failure to rotate postmaster log files for size reasons on
2051       Windows (Jeff Janes, Heikki Linnakangas)
2052      </para>
2053     </listitem>
2054
2055     <listitem>
2056      <para>
2057       Reject out-of-range dates in <function>to_date()</> (Hitoshi Harada)
2058      </para>
2059     </listitem>
2060
2061     <listitem>
2062      <para>
2063       Fix <function>pg_extension_config_dump()</> to handle
2064       extension-update cases properly (Tom Lane)
2065      </para>
2066
2067      <para>
2068       This function will now replace any existing entry for the target
2069       table, making it usable in extension update scripts.
2070      </para>
2071     </listitem>
2072
2073     <listitem>
2074      <para>
2075       Fix PL/pgSQL's reporting of plan-time errors in possibly-simple
2076       expressions (Tom Lane)
2077      </para>
2078
2079      <para>
2080       The previous coding resulted in sometimes omitting the first line in
2081       the <literal>CONTEXT</> traceback for the error.
2082      </para>
2083     </listitem>
2084
2085     <listitem>
2086      <para>
2087       Fix PL/Python's handling of functions used as triggers on multiple
2088       tables (Andres Freund)
2089      </para>
2090     </listitem>
2091
2092     <listitem>
2093      <para>
2094       Ensure that non-ASCII prompt strings are translated to the correct
2095       code page on Windows (Alexander Law, Noah Misch)
2096      </para>
2097
2098      <para>
2099       This bug affected <application>psql</> and some other client programs.
2100      </para>
2101     </listitem>
2102
2103     <listitem>
2104      <para>
2105       Fix possible crash in <application>psql</>'s <command>\?</> command
2106       when not connected to a database (Meng Qingzhong)
2107      </para>
2108     </listitem>
2109
2110     <listitem>
2111      <para>
2112       Fix possible error if a relation file is removed while
2113       <application>pg_basebackup</> is running (Heikki Linnakangas)
2114      </para>
2115     </listitem>
2116
2117     <listitem>
2118      <para>
2119       Tolerate timeline switches while <literal>pg_basebackup -X fetch</>
2120       is backing up a standby server (Heikki Linnakangas)
2121      </para>
2122     </listitem>
2123
2124     <listitem>
2125      <para>
2126       Make <application>pg_dump</> exclude data of unlogged tables when
2127       running on a hot-standby server (Magnus Hagander)
2128      </para>
2129
2130      <para>
2131       This would fail anyway because the data is not available on the standby
2132       server, so it seems most convenient to assume
2133       <option>--no-unlogged-table-data</> automatically.
2134      </para>
2135     </listitem>
2136
2137     <listitem>
2138      <para>
2139       Fix <application>pg_upgrade</> to deal with invalid indexes safely
2140       (Bruce Momjian)
2141      </para>
2142     </listitem>
2143
2144     <listitem>
2145      <para>
2146       Fix <application>pg_upgrade</>'s -O/-o options (Marti Raudsepp)
2147      </para>
2148     </listitem>
2149
2150     <listitem>
2151      <para>
2152       Fix one-byte buffer overrun in <application>libpq</>'s
2153       <function>PQprintTuples</> (Xi Wang)
2154      </para>
2155
2156      <para>
2157       This ancient function is not used anywhere by
2158       <productname>PostgreSQL</> itself, but it might still be used by some
2159       client code.
2160      </para>
2161     </listitem>
2162
2163     <listitem>
2164      <para>
2165       Make <application>ecpglib</> use translated messages properly
2166       (Chen Huajun)
2167      </para>
2168     </listitem>
2169
2170     <listitem>
2171      <para>
2172       Properly install <application>ecpg_compat</> and
2173       <application>pgtypes</> libraries on MSVC (Jiang Guiqing)
2174      </para>
2175     </listitem>
2176
2177     <listitem>
2178      <para>
2179       Include our version of <function>isinf()</> in
2180       <application>libecpg</> if it's not provided by the system
2181       (Jiang Guiqing)
2182      </para>
2183     </listitem>
2184
2185     <listitem>
2186      <para>
2187       Rearrange configure's tests for supplied functions so it is not
2188       fooled by bogus exports from libedit/libreadline (Christoph Berg)
2189      </para>
2190     </listitem>
2191
2192     <listitem>
2193      <para>
2194       Ensure Windows build number increases over time (Magnus Hagander)
2195      </para>
2196     </listitem>
2197
2198     <listitem>
2199      <para>
2200       Make <application>pgxs</> build executables with the right
2201       <literal>.exe</> suffix when cross-compiling for Windows
2202       (Zoltan Boszormenyi)
2203      </para>
2204     </listitem>
2205
2206     <listitem>
2207      <para>
2208       Add new timezone abbreviation <literal>FET</> (Tom Lane)
2209      </para>
2210
2211      <para>
2212       This is now used in some eastern-European time zones.
2213      </para>
2214     </listitem>
2215
2216    </itemizedlist>
2217
2218   </sect2>
2219  </sect1>
2220
2221  <sect1 id="release-9-2-2">
2222   <title>Release 9.2.2</title>
2223
2224   <note>
2225   <title>Release Date</title>
2226   <simpara>2012-12-06</simpara>
2227   </note>
2228
2229   <para>
2230    This release contains a variety of fixes from 9.2.1.
2231    For information about new features in the 9.2 major release, see
2232    <xref linkend="release-9-2">.
2233   </para>
2234
2235   <sect2>
2236    <title>Migration to Version 9.2.2</title>
2237
2238    <para>
2239     A dump/restore is not required for those running 9.2.X.
2240    </para>
2241
2242    <para>
2243     However, you may need to perform <command>REINDEX</> operations to
2244     correct problems in concurrently-built indexes, as described in the first
2245     changelog item below.
2246    </para>
2247
2248    <para>
2249     Also, if you are upgrading from version 9.2.0,
2250     see <xref linkend="release-9-2-1">.
2251    </para>
2252
2253   </sect2>
2254
2255   <sect2>
2256    <title>Changes</title>
2257
2258    <itemizedlist>
2259
2260     <listitem>
2261      <para>
2262       Fix multiple bugs associated with <command>CREATE/DROP INDEX
2263       CONCURRENTLY</> (Andres Freund, Tom Lane, Simon Riggs, Pavan Deolasee)
2264      </para>
2265
2266      <para>
2267       An error introduced while adding <command>DROP INDEX CONCURRENTLY</>
2268       allowed incorrect indexing decisions to be made during the initial
2269       phase of <command>CREATE INDEX CONCURRENTLY</>; so that indexes built
2270       by that command could be corrupt.  It is recommended that indexes
2271       built in 9.2.X with <command>CREATE INDEX CONCURRENTLY</> be rebuilt
2272       after applying this update.
2273      </para>
2274
2275      <para>
2276       In addition, fix <command>CREATE/DROP INDEX CONCURRENTLY</> to use
2277       in-place updates when changing the state of an index's
2278       <structname>pg_index</> row.  This prevents race conditions that could
2279       cause concurrent sessions to miss updating the target index, thus
2280       again resulting in corrupt concurrently-created indexes.
2281      </para>
2282
2283      <para>
2284       Also, fix various other operations to ensure that they ignore
2285       invalid indexes resulting from a failed <command>CREATE INDEX
2286       CONCURRENTLY</> command.  The most important of these is
2287       <command>VACUUM</>, because an auto-vacuum could easily be launched
2288       on the table before corrective action can be taken to fix or remove
2289       the invalid index.
2290      </para>
2291
2292      <para>
2293       Also fix <command>DROP INDEX CONCURRENTLY</> to not disable
2294       insertions into the target index until all queries using it are done.
2295      </para>
2296
2297      <para>
2298       Also fix misbehavior if <command>DROP INDEX CONCURRENTLY</> is
2299       canceled: the previous coding could leave an un-droppable index behind.
2300      </para>
2301     </listitem>
2302
2303     <listitem>
2304      <para>
2305       Correct predicate locking for <command>DROP INDEX CONCURRENTLY</>
2306       (Kevin Grittner)
2307      </para>
2308
2309      <para>
2310       Previously, SSI predicate locks were processed at the wrong time,
2311       possibly leading to incorrect behavior of serializable transactions
2312       executing in parallel with the <command>DROP</>.
2313      </para>
2314     </listitem>
2315
2316     <listitem>
2317      <para>
2318       Fix buffer locking during WAL replay (Tom Lane)
2319      </para>
2320
2321      <para>
2322       The WAL replay code was insufficiently careful about locking buffers
2323       when replaying WAL records that affect more than one page.  This could
2324       result in hot standby queries transiently seeing inconsistent states,
2325       resulting in wrong answers or unexpected failures.
2326      </para>
2327     </listitem>
2328
2329     <listitem>
2330      <para>
2331       Fix an error in WAL generation logic for GIN indexes (Tom Lane)
2332      </para>
2333
2334      <para>
2335       This could result in index corruption, if a torn-page failure occurred.
2336      </para>
2337     </listitem>
2338
2339     <listitem>
2340      <para>
2341       Fix an error in WAL replay logic for SP-GiST indexes (Tom Lane)
2342      </para>
2343
2344      <para>
2345       This could result in index corruption after a crash, or on a standby
2346       server.
2347      </para>
2348     </listitem>
2349
2350     <listitem>
2351      <para>
2352       Fix incorrect detection of end-of-base-backup location during WAL
2353       recovery (Heikki Linnakangas)
2354      </para>
2355
2356      <para>
2357       This mistake allowed hot standby mode to start up before the database
2358       reaches a consistent state.
2359      </para>
2360     </listitem>
2361
2362     <listitem>
2363      <para>
2364       Properly remove startup process's virtual XID lock when promoting a
2365       hot standby server to normal running (Simon Riggs)
2366      </para>
2367
2368      <para>
2369       This oversight could prevent subsequent execution of certain
2370       operations such as <command>CREATE INDEX CONCURRENTLY</>.
2371      </para>
2372     </listitem>
2373
2374     <listitem>
2375      <para>
2376       Avoid bogus <quote>out-of-sequence timeline ID</> errors in standby
2377       mode (Heikki Linnakangas)
2378      </para>
2379     </listitem>
2380
2381     <listitem>
2382      <para>
2383       Prevent the postmaster from launching new child processes after it's
2384       received a shutdown signal (Tom Lane)
2385      </para>
2386
2387      <para>
2388       This mistake could result in shutdown taking longer than it should, or
2389       even never completing at all without additional user action.
2390      </para>
2391     </listitem>
2392
2393     <listitem>
2394      <para>
2395       Fix the syslogger process to not fail when
2396       <varname>log_rotation_age</> exceeds 2^31 milliseconds (about 25 days)
2397       (Tom Lane)
2398      </para>
2399     </listitem>
2400
2401     <listitem>
2402      <para>
2403       Fix <function>WaitLatch()</> to return promptly when the requested
2404       timeout expires (Jeff Janes, Tom Lane)
2405      </para>
2406
2407      <para>
2408       With the previous coding, a steady stream of non-wait-terminating
2409       interrupts could delay return from <function>WaitLatch()</>
2410       indefinitely.  This has been shown to be a problem for the autovacuum
2411       launcher process, and might cause trouble elsewhere as well.
2412      </para>
2413     </listitem>
2414
2415     <listitem>
2416      <para>
2417       Avoid corruption of internal hash tables when out of memory
2418       (Hitoshi Harada)
2419      </para>
2420     </listitem>
2421
2422     <listitem>
2423      <para>
2424       Prevent file descriptors for dropped tables from being held open past
2425       transaction end (Tom Lane)
2426      </para>
2427
2428      <para>
2429       This should reduce problems with long-since-dropped tables continuing
2430       to occupy disk space.
2431      </para>
2432     </listitem>
2433
2434     <listitem>
2435      <para>
2436       Prevent database-wide crash and restart when a new child process is
2437       unable to create a pipe for its latch (Tom Lane)
2438      </para>
2439
2440      <para>
2441       Although the new process must fail, there is no good reason to force a
2442       database-wide restart, so avoid that.  This improves robustness when
2443       the kernel is nearly out of file descriptors.
2444      </para>
2445     </listitem>
2446
2447     <listitem>
2448      <para>
2449       Avoid planner crash with joins to unflattened subqueries (Tom Lane)
2450      </para>
2451     </listitem>
2452
2453     <listitem>
2454      <para>
2455       Fix planning of non-strict equivalence clauses above outer joins
2456       (Tom Lane)
2457      </para>
2458
2459      <para>
2460       The planner could derive incorrect constraints from a clause equating
2461       a non-strict construct to something else, for example
2462       <literal>WHERE COALESCE(foo, 0) = 0</>
2463       when <literal>foo</> is coming from the nullable side of an outer join.
2464       9.2 showed this type of error in more cases than previous releases,
2465       but the basic bug has been there for a long time.
2466      </para>
2467     </listitem>
2468
2469     <listitem>
2470      <para>
2471       Fix <command>SELECT DISTINCT</> with index-optimized
2472       <function>MIN</>/<function>MAX</> on an inheritance tree (Tom Lane)
2473      </para>
2474
2475      <para>
2476       The planner would fail with <quote>failed to re-find MinMaxAggInfo
2477       record</> given this combination of factors.
2478      </para>
2479     </listitem>
2480
2481     <listitem>
2482      <para>
2483       Make sure the planner sees implicit and explicit casts as equivalent
2484       for all purposes, except in the minority of cases where there's
2485       actually a semantic difference (Tom Lane)
2486      </para>
2487     </listitem>
2488
2489     <listitem>
2490      <para>
2491       Include join clauses when considering whether partial indexes can be
2492       used for a query (Tom Lane)
2493      </para>
2494
2495      <para>
2496       A strict join clause can be sufficient to establish an
2497       <replaceable>x</> <literal>IS NOT NULL</> predicate, for example.
2498       This fixes a planner regression in 9.2, since previous versions could
2499       make comparable deductions.
2500      </para>
2501     </listitem>
2502
2503     <listitem>
2504      <para>
2505       Limit growth of planning time when there are many indexable join
2506       clauses for the same index (Tom Lane)
2507      </para>
2508     </listitem>
2509
2510     <listitem>
2511      <para>
2512       Improve planner's ability to prove exclusion constraints from
2513       equivalence classes (Tom Lane)
2514      </para>
2515     </listitem>
2516
2517     <listitem>
2518      <para>
2519       Fix partial-row matching in hashed subplans to handle cross-type cases
2520       correctly (Tom Lane)
2521      </para>
2522
2523      <para>
2524       This affects multicolumn <literal>NOT IN</> subplans, such as
2525       <literal>WHERE (a, b) NOT IN (SELECT x, y FROM ...)</>
2526       when for instance <literal>b</> and <literal>y</> are <type>int4</>
2527       and <type>int8</> respectively.  This mistake led to wrong answers
2528       or crashes depending on the specific datatypes involved.
2529      </para>
2530     </listitem>
2531
2532     <listitem>
2533      <para>
2534       Fix btree mark/restore functions to handle array keys (Tom Lane)
2535      </para>
2536
2537      <para>
2538       This oversight could result in wrong answers from merge joins whose
2539       inner side is an index scan using an
2540       <literal><replaceable>indexed_column</> =
2541       ANY(<replaceable>array</>)</literal> condition.
2542      </para>
2543     </listitem>
2544
2545     <listitem>
2546      <para>
2547       Revert patch for taking fewer snapshots (Tom Lane)
2548      </para>
2549
2550      <para>
2551       The 9.2 change to reduce the number of snapshots taken during query
2552       execution led to some anomalous behaviors not seen in previous
2553       releases, because execution would proceed with a snapshot acquired
2554       before locking the tables used by the query.  Thus, for example,
2555       a query would not be guaranteed to see updates committed by a
2556       preceding transaction even if that transaction had exclusive lock.
2557       We'll probably revisit this in future releases, but meanwhile put it
2558       back the way it was before 9.2.
2559      </para>
2560     </listitem>
2561
2562     <listitem>
2563      <para>
2564       Acquire buffer lock when re-fetching the old tuple for an
2565       <literal>AFTER ROW UPDATE/DELETE</> trigger (Andres Freund)
2566      </para>
2567
2568      <para>
2569       In very unusual circumstances, this oversight could result in passing
2570       incorrect data to a trigger <literal>WHEN</> condition, or to the
2571       precheck logic for a foreign-key enforcement trigger.  That could
2572       result in a crash, or in an incorrect decision about whether to
2573       fire the trigger.
2574      </para>
2575     </listitem>
2576
2577     <listitem>
2578      <para>
2579       Fix <command>ALTER COLUMN TYPE</> to handle inherited check
2580       constraints properly (Pavan Deolasee)
2581      </para>
2582
2583      <para>
2584       This worked correctly in pre-8.4 releases, and now works correctly
2585       in 8.4 and later.
2586      </para>
2587     </listitem>
2588
2589     <listitem>
2590      <para>
2591       Fix <command>ALTER EXTENSION SET SCHEMA</>'s failure  to move some
2592       subsidiary objects into the new schema (&Aacute;lvaro Herrera, Dimitri
2593       Fontaine)
2594      </para>
2595     </listitem>
2596
2597     <listitem>
2598      <para>
2599       Handle <command>CREATE TABLE AS EXECUTE</> correctly in extended query
2600       protocol (Tom Lane)
2601      </para>
2602     </listitem>
2603
2604     <listitem>
2605      <para>
2606       Don't modify the input parse tree in <command>DROP RULE IF NOT
2607       EXISTS</> and <command>DROP TRIGGER IF NOT EXISTS</> (Tom Lane)
2608      </para>
2609
2610      <para>
2611       This mistake would cause errors if a cached statement of one of these
2612       types was re-executed.
2613      </para>
2614     </listitem>
2615
2616     <listitem>
2617      <para>
2618       Fix <command>REASSIGN OWNED</> to handle grants on tablespaces
2619       (&Aacute;lvaro Herrera)
2620      </para>
2621     </listitem>
2622
2623     <listitem>
2624      <para>
2625       Ignore incorrect <structname>pg_attribute</> entries for system
2626       columns for views (Tom Lane)
2627      </para>
2628
2629      <para>
2630       Views do not have any system columns.  However, we forgot to
2631       remove such entries when converting a table to a view.  That's fixed
2632       properly for 9.3 and later, but in previous branches we need to defend
2633       against existing mis-converted views.
2634      </para>
2635     </listitem>
2636
2637     <listitem>
2638      <para>
2639       Fix rule printing to dump <literal>INSERT INTO <replaceable>table</>
2640       DEFAULT VALUES</literal> correctly (Tom Lane)
2641      </para>
2642     </listitem>
2643
2644     <listitem>
2645      <para>
2646       Guard against stack overflow when there are too many
2647       <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> clauses
2648       in a query (Tom Lane)
2649      </para>
2650     </listitem>
2651
2652     <listitem>
2653      <para>
2654       Prevent platform-dependent failures when dividing the minimum possible
2655       integer value by -1 (Xi Wang, Tom Lane)
2656      </para>
2657     </listitem>
2658
2659     <listitem>
2660      <para>
2661       Fix possible access past end of string in date parsing
2662       (Hitoshi Harada)
2663      </para>
2664     </listitem>
2665
2666     <listitem>
2667      <para>
2668       Fix failure to advance XID epoch if XID wraparound happens during a
2669       checkpoint and <varname>wal_level</> is <literal>hot_standby</>
2670       (Tom Lane, Andres Freund)
2671      </para>
2672
2673      <para>
2674       While this mistake had no particular impact on
2675       <productname>PostgreSQL</productname> itself, it was bad for
2676       applications that rely on <function>txid_current()</> and related
2677       functions: the TXID value would appear to go backwards.
2678      </para>
2679     </listitem>
2680
2681     <listitem>
2682      <para>
2683       Fix <function>pg_terminate_backend()</> and
2684       <function>pg_cancel_backend()</> to not throw error for a non-existent
2685       target process (Josh Kupershmidt)
2686      </para>
2687
2688      <para>
2689       This case already worked as intended when called by a superuser,
2690       but not so much when called by ordinary users.
2691      </para>
2692     </listitem>
2693
2694     <listitem>
2695      <para>
2696       Fix display of
2697       <structname>pg_stat_replication</>.<structfield>sync_state</> at a
2698       page boundary (Kyotaro Horiguchi)
2699      </para>
2700     </listitem>
2701
2702     <listitem>
2703      <para>
2704       Produce an understandable error message if the length of the path name
2705       for a Unix-domain socket exceeds the platform-specific limit
2706       (Tom Lane, Andrew Dunstan)
2707      </para>
2708
2709      <para>
2710       Formerly, this would result in something quite unhelpful, such as
2711       <quote>Non-recoverable failure in name resolution</>.
2712      </para>
2713     </listitem>
2714
2715     <listitem>
2716      <para>
2717       Fix memory leaks when sending composite column values to the client
2718       (Tom Lane)
2719      </para>
2720     </listitem>
2721
2722     <listitem>
2723      <para>
2724       Save some cycles by not searching for subtransaction locks at commit
2725       (Simon Riggs)
2726      </para>
2727
2728      <para>
2729       In a transaction holding many exclusive locks, this useless activity
2730       could be quite costly.
2731      </para>
2732     </listitem>
2733
2734     <listitem>
2735      <para>
2736       Make <application>pg_ctl</> more robust about reading the
2737       <filename>postmaster.pid</> file (Heikki Linnakangas)
2738      </para>
2739
2740      <para>
2741       This fixes race conditions and possible file descriptor leakage.
2742      </para>
2743     </listitem>
2744
2745     <listitem>
2746      <para>
2747       Fix possible crash in <application>psql</> if incorrectly-encoded data
2748       is presented and the <varname>client_encoding</> setting is a
2749       client-only encoding, such as SJIS (Jiang Guiqing)
2750      </para>
2751     </listitem>
2752
2753     <listitem>
2754      <para>
2755       Make <application>pg_dump</> dump <literal>SEQUENCE SET</> items in
2756       the data not pre-data section of the archive (Tom Lane)
2757      </para>
2758
2759      <para>
2760       This fixes an undesirable inconsistency between the meanings of
2761       <option>--data-only</> and <option>--section=data</>, and also fixes
2762       dumping of sequences that are marked as extension configuration tables.
2763      </para>
2764     </listitem>
2765
2766     <listitem>
2767      <para>
2768       Fix <application>pg_dump</>'s handling of <command>DROP DATABASE</>
2769       commands in <option>--clean</> mode (Guillaume Lelarge)
2770      </para>
2771
2772      <para>
2773       Beginning in 9.2.0, <literal>pg_dump --clean</> would issue a
2774       <command>DROP DATABASE</> command, which was either useless or
2775       dangerous depending on the usage scenario.  It no longer does that.
2776       This change also fixes the combination of <option>--clean</> and
2777       <option>--create</> to work sensibly, i.e., emit <command>DROP
2778       DATABASE</> then <command>CREATE DATABASE</> before reconnecting to the
2779       target database.
2780      </para>
2781     </listitem>
2782
2783     <listitem>
2784      <para>
2785       Fix <application>pg_dump</> for views with circular dependencies and
2786       no relation options (Tom Lane)
2787      </para>
2788
2789      <para>
2790       The previous fix to dump relation options when a view is
2791       involved in a circular dependency didn't work right for the case
2792       that the view has no options; it emitted <literal>ALTER VIEW foo
2793       SET ()</> which is invalid syntax.
2794      </para>
2795     </listitem>
2796
2797     <listitem>
2798      <para>
2799       Fix bugs in the <filename>restore.sql</> script emitted by
2800       <application>pg_dump</> in <literal>tar</> output format (Tom Lane)
2801      </para>
2802
2803      <para>
2804       The script would fail outright on tables whose names include
2805       upper-case characters.  Also, make the script capable of restoring
2806       data in <option>--inserts</> mode as well as the regular COPY mode.
2807      </para>
2808     </listitem>
2809
2810     <listitem>
2811      <para>
2812       Fix <application>pg_restore</> to accept POSIX-conformant
2813       <literal>tar</> files (Brian Weaver, Tom Lane)
2814      </para>
2815
2816      <para>
2817       The original coding of <application>pg_dump</>'s <literal>tar</>
2818       output mode produced files that are not fully conformant with the
2819       POSIX standard.  This has been corrected for version 9.3.  This
2820       patch updates previous branches so that they will accept both the
2821       incorrect and the corrected formats, in hopes of avoiding
2822       compatibility problems when 9.3 comes out.
2823      </para>
2824     </listitem>
2825
2826     <listitem>
2827      <para>
2828       Fix <literal>tar</> files emitted by <application>pg_basebackup</> to
2829       be POSIX conformant (Brian Weaver, Tom Lane)
2830      </para>
2831     </listitem>
2832
2833     <listitem>
2834      <para>
2835       Fix <application>pg_resetxlog</> to locate <filename>postmaster.pid</>
2836       correctly when given a relative path to the data directory (Tom Lane)
2837      </para>
2838
2839      <para>
2840       This mistake could lead to <application>pg_resetxlog</> not noticing
2841       that there is an active postmaster using the data directory.
2842      </para>
2843     </listitem>
2844
2845     <listitem>
2846      <para>
2847       Fix <application>libpq</>'s <function>lo_import()</> and
2848       <function>lo_export()</> functions to report file I/O errors properly
2849       (Tom Lane)
2850      </para>
2851     </listitem>
2852
2853     <listitem>
2854      <para>
2855       Fix <application>ecpg</>'s processing of nested structure pointer
2856       variables (Muhammad Usama)
2857      </para>
2858     </listitem>
2859
2860     <listitem>
2861      <para>
2862       Fix <application>ecpg</>'s <function>ecpg_get_data</> function to
2863       handle arrays properly (Michael Meskes)
2864      </para>
2865     </listitem>
2866
2867     <listitem>
2868      <para>
2869       Prevent <application>pg_upgrade</> from trying to process TOAST tables
2870       for system catalogs (Bruce Momjian)
2871      </para>
2872
2873      <para>
2874       This fixes an error seen when the <literal>information_schema</> has
2875       been dropped and recreated.  Other failures were also possible.
2876      </para>
2877     </listitem>
2878
2879     <listitem>
2880      <para>
2881       Improve <application>pg_upgrade</> performance by setting
2882       <varname>synchronous_commit</> to <literal>off</> in the new cluster
2883       (Bruce Momjian)
2884      </para>
2885     </listitem>
2886
2887     <listitem>
2888      <para>
2889       Make <filename>contrib/pageinspect</>'s btree page inspection
2890       functions take buffer locks while examining pages (Tom Lane)
2891      </para>
2892     </listitem>
2893
2894     <listitem>
2895      <para>
2896       Work around unportable behavior of <literal>malloc(0)</> and
2897       <literal>realloc(NULL, 0)</> (Tom Lane)
2898      </para>
2899
2900      <para>
2901       On platforms where these calls return <literal>NULL</>, some code
2902       mistakenly thought that meant out-of-memory.
2903       This is known to have broken <application>pg_dump</> for databases
2904       containing no user-defined aggregates.  There might be other cases
2905       as well.
2906      </para>
2907     </listitem>
2908
2909     <listitem>
2910      <para>
2911       Ensure that <literal>make install</> for an extension creates the
2912       <filename>extension</> installation directory (C&eacute;dric Villemain)
2913      </para>
2914
2915      <para>
2916       Previously, this step was missed if <varname>MODULEDIR</> was set in
2917       the extension's Makefile.
2918      </para>
2919     </listitem>
2920
2921     <listitem>
2922      <para>
2923       Fix <application>pgxs</> support for building loadable modules on AIX
2924       (Tom Lane)
2925      </para>
2926
2927      <para>
2928       Building modules outside the original source tree didn't work on AIX.
2929      </para>
2930     </listitem>
2931
2932     <listitem>
2933      <para>
2934       Update time zone data files to <application>tzdata</> release 2012j
2935       for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western
2936       Samoa, and portions of Brazil.
2937      </para>
2938     </listitem>
2939
2940    </itemizedlist>
2941
2942   </sect2>
2943  </sect1>
2944
2945  <sect1 id="release-9-2-1">
2946   <title>Release 9.2.1</title>
2947
2948   <note>
2949   <title>Release Date</title>
2950   <simpara>2012-09-24</simpara>
2951   </note>
2952
2953   <para>
2954    This release contains a variety of fixes from 9.2.0.
2955    For information about new features in the 9.2 major release, see
2956    <xref linkend="release-9-2">.
2957   </para>
2958
2959   <sect2>
2960    <title>Migration to Version 9.2.1</title>
2961
2962    <para>
2963     A dump/restore is not required for those running 9.2.X.
2964    </para>
2965
2966    <para>
2967     However, you may need to perform <command>REINDEX</> and/or
2968     <command>VACUUM</> operations to recover from the effects of the data
2969     corruption bug described in the first changelog item below.
2970    </para>
2971
2972   </sect2>
2973
2974   <sect2>
2975    <title>Changes</title>
2976
2977    <itemizedlist>
2978
2979     <listitem>
2980      <para>
2981       Fix persistence marking of shared buffers during WAL replay
2982       (Jeff Davis)
2983      </para>
2984
2985      <para>
2986       This mistake can result in buffers not being written out during
2987       checkpoints, resulting in data corruption if the server later crashes
2988       without ever having written those buffers.  Corruption can occur on
2989       any server following crash recovery, but it is significantly more
2990       likely to occur on standby slave servers since those perform much
2991       more WAL replay.  There is a low probability of corruption of btree
2992       and GIN indexes.  There is a much higher probability of corruption
2993       of table <quote>visibility maps</>, which might lead to wrong answers
2994       from index-only scans.  Table data proper cannot be corrupted by this
2995       bug.
2996      </para>
2997
2998      <para>
2999       While no index corruption due to this bug is known to have occurred
3000       in the field, as a precautionary measure it is recommended that
3001       production installations <command>REINDEX</> all btree and GIN
3002       indexes at a convenient time after upgrading to 9.2.1.
3003      </para>
3004
3005      <para>
3006       Also, it is recommended to perform a <command>VACUUM</> of all tables
3007       while having <link
3008       linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link>
3009       set to zero.  This will fix any incorrect visibility map data.  <link
3010       linkend="guc-vacuum-cost-delay"><varname>vacuum_cost_delay</></link>
3011       can be adjusted to reduce the performance impact of vacuuming, while
3012       causing it to take longer to finish.
3013      </para>
3014     </listitem>
3015
3016     <listitem>
3017      <para>
3018       Fix possible incorrect sorting of output from queries involving
3019       <literal>WHERE <replaceable>indexed_column</> IN
3020       (<replaceable>list_of_values</>)</literal> (Tom Lane)
3021      </para>
3022     </listitem>
3023
3024     <listitem>
3025      <para>
3026       Fix planner failure for queries involving <literal>GROUP BY</>
3027       expressions along with window functions and aggregates (Tom Lane)
3028      </para>
3029     </listitem>
3030
3031     <listitem>
3032      <para>
3033       Fix planner's assignment of executor parameters (Tom Lane)
3034      </para>
3035
3036      <para>
3037       This error could result in wrong answers from queries that scan the
3038       same <literal>WITH</> subquery multiple times.
3039      </para>
3040     </listitem>
3041
3042     <listitem>
3043      <para>
3044       Improve planner's handling of join conditions in index scans (Tom Lane)
3045      </para>
3046     </listitem>
3047
3048     <listitem>
3049      <para>
3050       Improve selectivity estimation for text search queries involving
3051       prefixes, i.e. <replaceable>word</><literal>:*</> patterns  (Tom Lane)
3052      </para>
3053
3054      <para>
3055      </para>
3056     </listitem>
3057
3058     <listitem>
3059      <para>
3060       Fix delayed recognition of permissions changes (Tom Lane)
3061      </para>
3062
3063      <para>
3064       A command that needed no locks other than ones its transaction already
3065       had might fail to notice a concurrent <command>GRANT</> or
3066       <command>REVOKE</> that committed since the start of its transaction.
3067      </para>
3068     </listitem>
3069
3070     <listitem>
3071      <para>
3072       Fix <command>ANALYZE</> to not fail when a column is a domain over an
3073       array type (Tom Lane)
3074      </para>
3075     </listitem>
3076
3077     <listitem>
3078      <para>
3079       Prevent PL/Perl from crashing if a recursive PL/Perl function is
3080       redefined while being executed (Tom Lane)
3081      </para>
3082     </listitem>
3083
3084     <listitem>
3085      <para>
3086       Work around possible misoptimization in PL/Perl (Tom Lane)
3087      </para>
3088
3089      <para>
3090       Some Linux distributions contain an incorrect version of
3091       <filename>pthread.h</> that results in incorrect compiled code in
3092       PL/Perl, leading to crashes if a PL/Perl function calls another one
3093       that throws an error.
3094      </para>
3095     </listitem>
3096
3097     <listitem>
3098      <para>
3099       Remove unnecessary dependency on <application>pg_config</> from
3100       <application>pg_upgrade</> (Peter Eisentraut)
3101      </para>
3102     </listitem>
3103
3104     <listitem>
3105      <para>
3106       Update time zone data files to <application>tzdata</> release 2012f
3107       for DST law changes in Fiji
3108      </para>
3109     </listitem>
3110
3111    </itemizedlist>
3112
3113   </sect2>
3114  </sect1>
3115
3116  <sect1 id="release-9-2">
3117   <title>Release 9.2</title>
3118
3119   <note>
3120    <title>Release Date</title>
3121    <simpara>2012-09-10</simpara>
3122   </note>
3123
3124   <sect2>
3125    <title>Overview</title>
3126
3127    <para>
3128     This release has been largely focused on performance improvements, though
3129     new SQL features are not lacking.  Work also continues in the area of
3130     replication support.  Major enhancements include:
3131    </para>
3132
3133    <itemizedlist>
3134
3135     <!-- This list duplicates items below, but without authors or details-->
3136
3137       <listitem>
3138        <para>
3139         Allow queries to retrieve data only from indexes, avoiding heap
3140         access (<firstterm>index-only scans</>)
3141        </para>
3142       </listitem>
3143
3144       <listitem>
3145        <para>
3146         Allow the planner to generate custom plans for specific parameter
3147         values even when using prepared statements
3148        </para>
3149       </listitem>
3150
3151       <listitem>
3152        <para>
3153         Improve the planner's ability to use nested loops with inner
3154         index scans
3155        </para>
3156       </listitem>
3157
3158       <listitem>
3159        <para>
3160         Allow streaming replication slaves to forward data to other slaves
3161         (<link linkend="cascading-replication"><firstterm>cascading
3162         replication</></link>)
3163        </para>
3164       </listitem>
3165
3166       <listitem>
3167        <para>
3168         Allow <link
3169         linkend="app-pgbasebackup"><application>pg_basebackup</></link>
3170         to make base backups from standby servers
3171        </para>
3172       </listitem>
3173
3174       <listitem>
3175        <para>
3176         Add a <link
3177         linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
3178         tool to archive WAL file changes as they are written
3179        </para>
3180       </listitem>
3181
3182       <listitem>
3183        <para>
3184         Add the <link linkend="SPGiST">SP-GiST</link> (Space-Partitioned
3185         GiST) index access method
3186        </para>
3187       </listitem>
3188
3189       <listitem>
3190        <para>
3191         Add support for <link linkend="rangetypes">range data types</link>
3192        </para>
3193       </listitem>
3194
3195       <listitem>
3196        <para>
3197         Add a <link linkend="datatype-json"><type>JSON</type></link>
3198         data type
3199        </para>
3200       </listitem>
3201
3202       <listitem>
3203        <para>
3204         Add a <link
3205         linkend="SQL-CREATEVIEW"><literal>security_barrier</></link>
3206         option for views
3207        </para>
3208       </listitem>
3209
3210       <listitem>
3211        <para>
3212         Allow <application>libpq</> connection strings to have the format of a
3213         <link linkend="libpq-connstring"><acronym>URI</acronym></link>
3214        </para>
3215       </listitem>
3216
3217       <listitem>
3218        <para>
3219         Add a <link linkend="libpq-single-row-mode">single-row processing
3220         mode</link> to <application>libpq</> for better handling of large
3221         result sets
3222        </para>
3223       </listitem>
3224
3225    </itemizedlist>
3226
3227    <para>
3228     The above items are explained in more detail in the sections below.
3229    </para>
3230
3231   </sect2>
3232
3233   <sect2>
3234
3235   <title>Migration to Version 9.2</title>
3236
3237    <para>
3238     A dump/restore using <application>pg_dump</application>, or use of
3239     <application>pg_upgrade</application>, is required for those wishing
3240     to migrate data from any previous release.
3241    </para>
3242
3243    <para>
3244     Version 9.2 contains a number of changes that may affect compatibility
3245     with previous releases.  Observe the following incompatibilities:
3246    </para>
3247
3248    <sect3>
3249     <title>System Catalogs</title>
3250
3251     <itemizedlist>
3252
3253       <listitem>
3254        <para>
3255         Remove the <structfield>spclocation</> field from <link
3256         linkend="catalog-pg-tablespace"><structname>pg_tablespace</></link>
3257         (Magnus Hagander)
3258        </para>
3259
3260        <para>
3261         This field was duplicative of the symbolic links that actually define
3262         tablespace locations, and thus risked errors of omission when moving
3263         a tablespace.  This change allows tablespace directories to be moved
3264         while the server is down, by manually adjusting the symbolic links.
3265         To replace this field, we have added <link
3266         linkend="functions-info-catalog-table"><function>pg_tablespace_location()</></link>
3267         to allow querying of the symbolic links.
3268        </para>
3269       </listitem>
3270
3271       <listitem>
3272        <para>
3273         Move <type>tsvector</> most-common-element statistics to new
3274         <link linkend="view-pg-stats"><structname>pg_stats</></link> columns
3275         (Alexander Korotkov)
3276        </para>
3277
3278        <para>
3279         Consult <structfield>most_common_elems</>
3280         and <structfield>most_common_elem_freqs</> for the data formerly
3281         available in <structfield>most_common_vals</>
3282         and <structfield>most_common_freqs</> for a <type>tsvector</> column.
3283        </para>
3284       </listitem>
3285
3286     </itemizedlist>
3287
3288    </sect3>
3289
3290    <sect3>
3291     <title>Functions</title>
3292
3293     <itemizedlist>
3294
3295       <listitem>
3296        <para>
3297         Remove <link linkend="hstore">hstore</link>'s <literal>=&gt;</>
3298         operator (Robert Haas)
3299        </para>
3300
3301        <para>
3302         Users should now use <function>hstore(text, text)</>.  Since
3303         <productname>PostgreSQL</productname> 9.0, a warning message has been
3304         emitted when an operator named <literal>=&gt;</> is created because
3305         the <acronym>SQL</acronym> standard reserves that token for
3306         another use.
3307        </para>
3308       </listitem>
3309
3310       <listitem>
3311        <para>
3312         Ensure that <link
3313         linkend="functions-xml-processing"><function>xpath()</></link>
3314         escapes special characters in string values (Florian Pflug)
3315        </para>
3316
3317        <para>
3318         Without this it is possible for the result not to be valid
3319         <acronym>XML</acronym>.
3320        </para>
3321       </listitem>
3322
3323       <listitem>
3324        <para>
3325         Make <link
3326         linkend="functions-admin-dbobject"><function>pg_relation_size()</></link>
3327         and friends return NULL if the object does not exist (Phil Sorber)
3328        </para>
3329
3330        <para>
3331         This prevents queries that call these functions from returning
3332         errors immediately after a concurrent <command>DROP</>.
3333        </para>
3334       </listitem>
3335
3336       <listitem>
3337        <para>
3338         Make <link
3339         linkend="functions-datetime-extract"><function>EXTRACT(EPOCH FROM
3340         <replaceable>timestamp without time zone</>)</function></link>
3341         measure the epoch from local midnight, not <acronym>UTC</acronym>
3342         midnight (Tom Lane)
3343        </para>
3344
3345        <para>
3346         This change reverts an ill-considered change made in release 7.3.
3347         Measuring from <acronym>UTC</acronym> midnight was inconsistent
3348         because it made the result dependent on the <link
3349         linkend="guc-timezone"><varname>timezone</></link> setting, which
3350         computations for <type>timestamp without time zone</> should not be.
3351         The previous behavior remains available by casting the input value
3352         to <type>timestamp with time zone</>.
3353        </para>
3354       </listitem>
3355
3356       <listitem>
3357        <para>
3358         Properly parse time strings with trailing <literal>yesterday</>,
3359         <literal>today</>, and <literal>tomorrow</> (Dean Rasheed)
3360        </para>
3361
3362        <para>
3363         Previously, <literal>SELECT '04:00:00 yesterday'::timestamp</literal>
3364         returned yesterday's date at midnight.
3365        </para>
3366       </listitem>
3367
3368       <listitem>
3369        <para>
3370         Fix <link
3371         linkend="functions-formatting"><function>to_date()</></link> and
3372         <function>to_timestamp()</> to wrap incomplete dates toward 2020
3373         (Bruce Momjian)
3374        </para>
3375
3376        <para>
3377         Previously, supplied years and year masks of less than four digits
3378         wrapped inconsistently.
3379        </para>
3380       </listitem>
3381
3382     </itemizedlist>
3383
3384    </sect3>
3385
3386    <sect3>
3387     <title>Object Modification</title>
3388
3389     <itemizedlist>
3390
3391       <listitem>
3392        <para>
3393         Prevent  <link linkend="SQL-ALTERDOMAIN"><command>ALTER
3394         DOMAIN</command></link> from working on non-domain types (Peter
3395         Eisentraut)
3396        </para>
3397
3398        <para>
3399         Owner and schema changes were previously possible on non-domain
3400         types.
3401        </para>
3402       </listitem>
3403
3404       <listitem>
3405        <para>
3406         No longer forcibly lowercase procedural language names in <link
3407         linkend="SQL-CREATEFUNCTION"><command>CREATE FUNCTION</></link>
3408         (Robert Haas)
3409        </para>
3410
3411        <para>
3412         While unquoted language identifiers are still lowercased, strings
3413         and quoted identifiers are no longer forcibly down-cased.
3414         Thus for example <literal>CREATE FUNCTION ... LANGUAGE 'C'</>
3415         will no longer work; it must be spelled <literal>'c'</>, or better
3416         omit the quotes.
3417        </para>
3418       </listitem>
3419
3420       <listitem>
3421        <para>
3422         Change system-generated names of foreign key enforcement triggers
3423         (Tom Lane)
3424        </para>
3425
3426        <para>
3427         This change ensures that the triggers fire in the correct order in
3428         some corner cases involving self-referential foreign key constraints.
3429        </para>
3430       </listitem>
3431
3432     </itemizedlist>
3433
3434    </sect3>
3435
3436    <sect3>
3437     <title>Command-Line Tools</title>
3438
3439     <itemizedlist>
3440
3441       <listitem>
3442        <para>
3443         Provide consistent backquote, variable
3444         expansion, and quoted substring behavior in <link
3445         linkend="APP-PSQL"><application>psql</></link> meta-command
3446         arguments (Tom Lane)
3447        </para>
3448
3449        <para>
3450         Previously, such references were treated oddly when not separated by
3451         whitespace from adjacent text.  For example <literal>'FOO'BAR</> was
3452         output as <literal>FOO BAR</> (unexpected insertion of a space) and
3453         <literal>FOO'BAR'BAZ</> was output unchanged (not removing the quotes
3454         as most would expect).
3455        </para>
3456       </listitem>
3457
3458       <listitem>
3459        <para>
3460         No longer treat <link
3461         linkend="APP-CLUSTERDB"><application>clusterdb</></link>
3462         table names as double-quoted; no longer treat <link
3463         linkend="APP-REINDEXDB"><application>reindexdb</></link> table
3464         and index names as double-quoted (Bruce Momjian)
3465        </para>
3466
3467        <para>
3468         Users must now include double-quotes in the command arguments if
3469         quoting is wanted.
3470        </para>
3471       </listitem>
3472
3473       <listitem>
3474        <para>
3475         <link linkend="APP-CREATEUSER"><application>createuser</></link>
3476         no longer prompts for option settings by default (Peter Eisentraut)
3477        </para>
3478
3479        <para>
3480         Use <option>--interactive</> to obtain the old behavior.
3481        </para>
3482       </listitem>
3483
3484       <listitem>
3485        <para>
3486         Disable prompting for the user name in <link
3487         linkend="APP-DROPUSER"><application>dropuser</></link> unless
3488         <option>--interactive</> is specified (Peter Eisentraut)
3489        </para>
3490       </listitem>
3491
3492     </itemizedlist>
3493
3494    </sect3>
3495
3496    <sect3>
3497     <title>Server Settings</title>
3498
3499     <itemizedlist>
3500
3501       <listitem>
3502        <para>
3503         Add server parameters for specifying the <link
3504         linkend="guc-ssl-ca-file">locations of server-side
3505         <acronym>SSL</acronym> files</link> (Peter Eisentraut)
3506        </para>
3507
3508        <para>
3509         This allows changing the names and locations of the files that were
3510         previously hard-coded as <filename>server.crt</>,
3511         <filename>server.key</>, <filename>root.crt</>, and
3512         <filename>root.crl</> in the data directory.
3513         <emphasis>The server will no longer examine <filename>root.crt</> or
3514         <filename>root.crl</> by default</emphasis>; to load these files, the
3515         associated parameters must be set to non-default values.
3516        </para>
3517       </listitem>
3518
3519       <listitem>
3520        <para>
3521         Remove the <varname>silent_mode</> parameter (Heikki Linnakangas)
3522        </para>
3523
3524        <para>
3525         Similar behavior can be obtained with <command>pg_ctl start
3526         -l postmaster.log</>.
3527        </para>
3528       </listitem>
3529
3530       <listitem>
3531        <para>
3532         Remove the <varname>wal_sender_delay</> parameter,
3533         as it is no longer needed (Tom Lane)
3534        </para>
3535       </listitem>
3536
3537       <listitem>
3538        <para>
3539         Remove the <varname>custom_variable_classes</> parameter (Tom Lane)
3540        </para>
3541
3542        <para>
3543         The checking provided by this setting was dubious.  Now any
3544         setting can be prefixed by any class name.
3545        </para>
3546       </listitem>
3547
3548     </itemizedlist>
3549    </sect3>
3550
3551    <sect3>
3552     <title>Monitoring</title>
3553
3554     <itemizedlist>
3555
3556       <listitem>
3557        <para>
3558         Rename <link
3559         linkend="monitoring-stats-views-table"><structname>pg_stat_activity</></link><structfield>.procpid</>
3560         to <structfield>pid</>, to match other system tables (Magnus Hagander)
3561        </para>
3562       </listitem>
3563
3564       <listitem>
3565        <para>
3566         Create a separate <structfield>pg_stat_activity</> column to
3567         report process state (Scott Mead, Magnus Hagander)
3568        </para>
3569
3570        <para>
3571         The previous <structfield>query</> and <structfield>query_start</>
3572         values now remain available for an idle session, allowing enhanced
3573         analysis.
3574        </para>
3575       </listitem>
3576
3577       <listitem>
3578        <para>
3579         Rename <structname>pg_stat_activity</>.<structfield>current_query</> to
3580         <structfield>query</> because it is not cleared when the query
3581         completes (Magnus Hagander)
3582        </para>
3583       </listitem>
3584
3585       <listitem>
3586        <para>
3587         Change all <acronym>SQL</acronym>-level statistics timing values
3588         to be <type>float8</> columns measured in milliseconds (Tom Lane)
3589        </para>
3590
3591        <para>
3592         This change eliminates the designed-in assumption that the values
3593         are accurate to microseconds and no more (since the <type>float8</>
3594         values can be fractional).
3595         The columns affected are
3596         <structname>pg_stat_user_functions</>.<structfield>total_time</>,
3597         <structname>pg_stat_user_functions</>.<structfield>self_time</>,
3598         <structname>pg_stat_xact_user_functions</>.<structfield>total_time</>,
3599         and
3600         <structname>pg_stat_xact_user_functions</>.<structfield>self_time</>.
3601         The statistics functions underlying these columns now also return
3602         <type>float8</> milliseconds, rather than <type>bigint</>
3603         microseconds.
3604         <filename>contrib/pg_stat_statements</>'
3605         <structfield>total_time</> column is now also measured in
3606         milliseconds.
3607        </para>
3608       </listitem>
3609
3610     </itemizedlist>
3611
3612    </sect3>
3613
3614   </sect2>
3615
3616   <sect2>
3617    <title>Changes</title>
3618
3619    <para>
3620     Below you will find a detailed account of the changes between
3621     <productname>PostgreSQL</productname> 9.2 and the previous major
3622     release.
3623    </para>
3624
3625    <sect3>
3626     <title>Server</title>
3627
3628     <sect4>
3629      <title>Performance</title>
3630
3631      <itemizedlist>
3632       <listitem>
3633        <para>
3634         Allow queries to retrieve data only from indexes, avoiding heap
3635         access (Robert Haas, Ibrar Ahmed, Heikki Linnakangas, Tom Lane)
3636        </para>
3637
3638        <para>
3639         This feature is often called <firstterm>index-only scans</>.
3640         Heap access can be skipped for heap pages containing only tuples that
3641         are visible to all sessions, as reported by the visibility map; so
3642         the benefit applies mainly to mostly-static data.  The visibility map
3643         was made crash-safe as a necessary part of implementing this feature.
3644        </para>
3645       </listitem>
3646
3647       <listitem>
3648        <para>
3649         Add the <link linkend="SPGiST">SP-GiST</link> (Space-Partitioned
3650         GiST) index access method (Teodor Sigaev, Oleg Bartunov, Tom
3651         Lane)
3652        </para>
3653
3654        <para>
3655         SP-GiST is comparable to GiST in flexibility, but supports
3656         unbalanced partitioned search structures rather than balanced
3657         trees.  For suitable problems, SP-GiST can be faster than GiST in both
3658         index build time and search time.
3659        </para>
3660       </listitem>
3661
3662       <listitem>
3663        <para>
3664         Allow group commit to work effectively under heavy load (Peter
3665         Geoghegan, Simon Riggs, Heikki Linnakangas)
3666        </para>
3667
3668        <para>
3669         Previously, batching of commits became ineffective as the write
3670         workload increased, because of internal lock contention.
3671        </para>
3672       </listitem>
3673
3674       <listitem>
3675        <para>
3676         Allow uncontended locks to be managed using a new
3677         fast-path lock mechanism (Robert Haas)
3678        </para>
3679       </listitem>
3680
3681       <listitem>
3682        <para>
3683         Reduce overhead of creating virtual transaction ID locks (Robert
3684         Haas)
3685        </para>
3686       </listitem>
3687
3688       <listitem>
3689        <para>
3690         Reduce the overhead of serializable isolation level locks (Dan
3691         Ports)
3692        </para>
3693       </listitem>
3694
3695       <listitem>
3696        <para>
3697         Improve PowerPC and Itanium spinlock performance (Manabu Ori,
3698         Robert Haas, Tom Lane)
3699        </para>
3700       </listitem>
3701
3702       <listitem>
3703        <para>
3704         Reduce overhead for shared invalidation cache messages (Robert
3705         Haas)
3706        </para>
3707       </listitem>
3708
3709       <listitem>
3710        <para>
3711         Move the frequently accessed members of the <structname>PGPROC</>
3712         shared memory array to a separate array (Pavan
3713         Deolasee, Heikki Linnakangas, Robert Haas)
3714        </para>
3715       </listitem>
3716
3717       <listitem>
3718        <para>
3719         Improve <command>COPY</command> performance by adding tuples to
3720         the heap in batches (Heikki Linnakangas)
3721        </para>
3722       </listitem>
3723
3724       <listitem>
3725        <para>
3726         Improve GiST index performance for geometric data types by producing
3727         better trees with less memory allocation overhead (Alexander Korotkov)
3728        </para>
3729       </listitem>
3730
3731       <listitem>
3732        <para>
3733         Improve GiST index build times (Alexander Korotkov, Heikki
3734         Linnakangas)
3735        </para>
3736       </listitem>
3737
3738       <listitem>
3739        <para>
3740         Allow hint bits to be set sooner for temporary and unlogged tables
3741         (Robert Haas)
3742        </para>
3743       </listitem>
3744
3745       <listitem>
3746        <para>
3747         Allow sorting to be performed by inlined,
3748         non-<acronym>SQL</acronym>-callable comparison functions (Peter
3749         Geoghegan, Robert Haas, Tom Lane)
3750        </para>
3751       </listitem>
3752
3753       <listitem>
3754        <para>
3755         Make the number of CLOG buffers scale based on <link
3756         linkend="guc-shared-buffers"><varname>shared_buffers</></link>
3757         (Robert Haas, Simon Riggs, Tom Lane)
3758        </para>
3759       </listitem>
3760
3761       <listitem>
3762        <para>
3763         Improve performance of buffer pool scans that occur when tables or
3764         databases are dropped (Jeff Janes, Simon Riggs)
3765        </para>
3766       </listitem>
3767
3768       <listitem>
3769        <para>
3770         Improve performance of checkpointer's fsync-request queue
3771         when many tables are being dropped or truncated (Tom Lane)
3772        </para>
3773       </listitem>
3774
3775       <listitem>
3776        <para>
3777         Pass the safe number of file descriptors to child processes on Windows
3778         (Heikki Linnakangas)
3779        </para>
3780
3781        <para>
3782         This allows Windows sessions to use more open file descriptors than
3783         before.
3784        </para>
3785       </listitem>
3786
3787      </itemizedlist>
3788
3789     </sect4>
3790
3791     <sect4>
3792      <title>Process Management</title>
3793
3794      <itemizedlist>
3795
3796       <listitem>
3797        <para>
3798         Create a dedicated background process to perform checkpoints (Simon
3799         Riggs)
3800        </para>
3801
3802        <para>
3803         Formerly the background writer did both dirty-page writing and
3804         checkpointing.  Separating this into two processes allows each goal
3805         to be accomplished more predictably.
3806        </para>
3807       </listitem>
3808
3809       <listitem>
3810        <para>
3811         Improve asynchronous commit behavior by waking the walwriter sooner
3812         (Simon Riggs)
3813        </para>
3814
3815        <para>
3816         Previously, only <link
3817         linkend="guc-wal-writer-delay"><varname>wal_writer_delay</></link>
3818         triggered <acronym>WAL</acronym> flushing to disk; now filling a
3819         <acronym>WAL</acronym> buffer also triggers <acronym>WAL</acronym>
3820         writes.
3821        </para>
3822       </listitem>
3823
3824       <listitem>
3825        <para>
3826         Allow the bgwriter, walwriter, checkpointer, statistics collector,
3827         log collector, and archiver background processes to sleep more
3828         efficiently during periods of inactivity (Peter Geoghegan, Tom Lane)
3829        </para>
3830
3831        <para>
3832         This series of changes reduces the frequency of process wake-ups when
3833         there is nothing to do, dramatically reducing power consumption on
3834         idle servers.
3835        </para>
3836       </listitem>
3837
3838      </itemizedlist>
3839
3840     </sect4>
3841
3842     <sect4>
3843      <title>Optimizer</title>
3844
3845      <itemizedlist>
3846
3847       <listitem>
3848        <para>
3849         Allow the planner to generate custom plans for specific parameter
3850         values even when using prepared statements
3851         (Tom Lane)
3852        </para>
3853
3854        <para>
3855         In the past, a prepared statement always had a single
3856         <quote>generic</> plan that was used for all parameter values, which
3857         was frequently much inferior to the plans used for non-prepared
3858         statements containing explicit constant values.  Now, the planner
3859         attempts to generate custom plans for specific parameter values.
3860         A generic plan will only be used after custom plans have repeatedly
3861         proven to provide no benefit.  This change should eliminate the
3862         performance penalties formerly seen from use of prepared statements
3863         (including non-dynamic statements in PL/pgSQL).
3864        </para>
3865       </listitem>
3866
3867       <listitem>
3868        <para>
3869         Improve the planner's ability to use nested loops with inner
3870         index scans (Tom Lane)
3871        </para>
3872
3873        <para>
3874         The new <quote>parameterized path</> mechanism allows inner
3875         index scans to use values from relations that are more than one join
3876         level up from the scan.  This can greatly improve performance in
3877         situations where semantic restrictions (such as outer joins) limit
3878         the allowed join orderings.
3879        </para>
3880       </listitem>
3881
3882       <listitem>
3883        <para>
3884         Improve the planning <acronym>API</acronym> for foreign data wrappers
3885         (Etsuro Fujita, Shigeru Hanada, Tom Lane)
3886        </para>
3887
3888        <para>
3889         Wrappers can now provide multiple access <quote>paths</> for their
3890         tables, allowing more flexibility in join planning.
3891        </para>
3892       </listitem>
3893
3894       <listitem>
3895        <para>
3896         Recognize self-contradictory restriction clauses for non-table
3897         relations (Tom Lane)
3898        </para>
3899
3900        <para>
3901         This check is only performed when <link
3902         linkend="guc-constraint-exclusion"><varname>constraint_exclusion</></link>
3903         is <literal>on</literal>.
3904        </para>
3905       </listitem>
3906
3907       <listitem>
3908        <para>
3909         Allow <literal>indexed_col op ANY(ARRAY[...])</> conditions to be
3910         used in plain index scans and index-only scans (Tom Lane)
3911        </para>
3912
3913        <para>
3914         Formerly such conditions could only be used in bitmap index scans.
3915        </para>
3916       </listitem>
3917
3918       <listitem>
3919        <para>
3920         Support <function>MIN</>/<function>MAX</> index optimizations on
3921         <type>boolean</type> columns (Marti Raudsepp)
3922        </para>
3923       </listitem>
3924
3925       <listitem>
3926        <para>
3927         Account for set-returning functions in <command>SELECT</> target
3928         lists when setting row count estimates (Tom Lane)
3929        </para>
3930       </listitem>
3931
3932       <listitem>
3933        <para>
3934         Fix planner to handle indexes with duplicated columns more reliably
3935         (Tom Lane)
3936        </para>
3937       </listitem>
3938
3939       <listitem>
3940        <para>
3941         Collect and use element-frequency statistics for arrays (Alexander
3942         Korotkov, Tom Lane)
3943        </para>
3944
3945        <para>
3946         This change improves selectivity estimation for the array
3947         <literal>&lt;@</literal>, <literal>&amp;&amp;</literal>, and
3948         <literal>@&gt;</literal> operators (array containment and overlaps).
3949        </para>
3950       </listitem>
3951
3952       <listitem>
3953        <para>
3954         Allow statistics to be collected for foreign tables
3955         (Etsuro Fujita)
3956        </para>
3957       </listitem>
3958
3959       <listitem>
3960        <para>
3961         Improve cost estimates for use of partial indexes (Tom Lane)
3962        </para>
3963       </listitem>
3964
3965       <listitem>
3966        <para>
3967         Improve the planner's ability to use statistics for columns
3968         referenced in subqueries (Tom Lane)
3969        </para>
3970       </listitem>
3971
3972       <listitem>
3973        <para>
3974         Improve statistical estimates for subqueries using
3975         <literal>DISTINCT</> (Tom Lane)
3976        </para>
3977       </listitem>
3978
3979      </itemizedlist>
3980
3981     </sect4>
3982
3983     <sect4>
3984      <title>Authentication</title>
3985
3986      <itemizedlist>
3987
3988       <listitem>
3989        <para>
3990         Do not treat role names and <literal>samerole</> specified in <link
3991         linkend="auth-pg-hba-conf"><filename>pg_hba.conf</filename></link>
3992         as automatically including superusers (Andrew Dunstan)
3993        </para>
3994
3995        <para>
3996         This makes it easier to use <literal>reject</> lines with group roles.
3997        </para>
3998       </listitem>
3999
4000       <listitem>
4001        <para>
4002         Adjust <filename>pg_hba.conf</filename> processing to handle token
4003         parsing more consistently (Brendan Jurd, &Aacute;lvaro Herrera)
4004        </para>
4005       </listitem>
4006
4007       <listitem>
4008        <para>
4009         Disallow empty <filename>pg_hba.conf</filename> files (Tom Lane)
4010        </para>
4011
4012        <para>
4013         This was done to more quickly detect misconfiguration.
4014        </para>
4015       </listitem>
4016
4017       <listitem>
4018        <para>
4019         Make superuser privilege imply replication privilege (Noah Misch)
4020        </para>
4021
4022        <para>
4023         This avoids the need to explicitly assign such privileges.
4024        </para>
4025       </listitem>
4026
4027      </itemizedlist>
4028
4029     </sect4>
4030
4031     <sect4>
4032      <title>Monitoring</title>
4033
4034      <itemizedlist>
4035
4036       <listitem>
4037        <para>
4038         Attempt to log the current query string during a backend crash
4039         (Marti Raudsepp)
4040        </para>
4041       </listitem>
4042
4043       <listitem>
4044        <para>
4045         Make logging of autovacuum I/O activity more verbose (Greg
4046         Smith, Noah Misch)
4047        </para>
4048
4049        <para>
4050         This logging is triggered by <link
4051         linkend="guc-log-autovacuum-min-duration"><varname>log_autovacuum_min_duration</></link>.
4052        </para>
4053       </listitem>
4054
4055       <listitem>
4056        <para>
4057         Make <acronym>WAL</acronym> replay report failures sooner
4058         (Fujii Masao)
4059        </para>
4060
4061        <para>
4062         There were some cases where failures were only reported once the
4063         server went into master mode.
4064        </para>
4065       </listitem>
4066
4067       <listitem>
4068        <para>
4069         Add <link
4070         linkend="functions-admin-backup"><function>pg_xlog_location_diff()</></link>
4071         to simplify WAL location comparisons (Euler Taveira de Oliveira)
4072        </para>
4073
4074        <para>
4075         This is useful for computing replication lag.
4076        </para>
4077       </listitem>
4078
4079       <listitem>
4080        <para>
4081         Support configurable event log application names on Windows
4082         (MauMau, Magnus Hagander)
4083        </para>
4084
4085        <para>
4086         This allows different instances to use the event log
4087         with different identifiers, by setting the <link
4088         linkend="guc-event-source"><varname>event_source</></link>
4089         server parameter, which is similar to how <link
4090         linkend="guc-syslog-ident"><varname>syslog_ident</></link> works.
4091        </para>
4092       </listitem>
4093
4094       <listitem>
4095        <para>
4096         Change <quote>unexpected EOF</> messages to <literal>DEBUG1</> level,
4097         except when there is an open transaction (Magnus Hagander)
4098        </para>
4099
4100        <para>
4101         This change reduces log chatter caused by applications that close
4102         database connections ungracefully.
4103        </para>
4104       </listitem>
4105
4106      </itemizedlist>
4107
4108     </sect4>
4109
4110     <sect4>
4111      <title>Statistical Views</title>
4112
4113      <itemizedlist>
4114
4115       <listitem>
4116        <para>
4117         Track temporary file sizes and file counts in the <link
4118         linkend="pg-stat-database-view"><structname>pg_stat_database</></link>
4119         system view (Tomas Vondra)
4120        </para>
4121       </listitem>
4122
4123       <listitem>
4124        <para>
4125         Add a deadlock counter to the <structname>pg_stat_database</>
4126         system view (Magnus Hagander)
4127        </para>
4128       </listitem>
4129
4130       <listitem>
4131        <para>
4132         Add a server parameter <link
4133         linkend="guc-track-io-timing"><varname>track_io_timing</></link>
4134         to track I/O timings (Ants Aasma, Robert Haas)
4135        </para>
4136       </listitem>
4137
4138       <listitem>
4139        <para>
4140         Report checkpoint timing information in <link
4141         linkend="pg-stat-bgwriter-view"><structname>pg_stat_bgwriter</></link>
4142         (Greg Smith, Peter Geoghegan)
4143        </para>
4144       </listitem>
4145
4146      </itemizedlist>
4147
4148     </sect4>
4149
4150     <sect4>
4151      <title>Server Settings</title>
4152
4153      <itemizedlist>
4154
4155       <listitem>
4156        <para>
4157         Silently ignore nonexistent schemas specified in <link
4158         linkend="guc-search-path"><varname>search_path</></link> (Tom Lane)
4159        </para>
4160
4161        <para>
4162         This makes it more convenient to use generic path settings, which
4163         might include some schemas that don't exist in all databases.
4164        </para>
4165       </listitem>
4166
4167       <listitem>
4168        <para>
4169         Allow superusers to set <link
4170         linkend="guc-deadlock-timeout"><varname>deadlock_timeout</></link>
4171         per-session, not just per-cluster (Noah Misch)
4172        </para>
4173
4174        <para>
4175         This allows <varname>deadlock_timeout</> to be reduced for
4176         transactions that are likely to be involved in a deadlock, thus
4177         detecting the failure more quickly.  Alternatively, increasing the
4178         value can be used to reduce the chances of a session being chosen for
4179         cancellation due to a deadlock.
4180        </para>
4181       </listitem>
4182
4183       <listitem>
4184        <para>
4185         Add a server parameter <link
4186         linkend="guc-temp-file-limit"><varname>temp_file_limit</></link>
4187         to constrain temporary file space usage per session (Mark Kirkwood)
4188        </para>
4189       </listitem>
4190
4191       <listitem>
4192        <para>
4193         Allow a superuser to <command>SET</command> an extension's
4194         superuser-only custom variable before loading the associated
4195         extension (Tom Lane)
4196        </para>
4197
4198        <para>
4199         The system now remembers whether a <command>SET</command> was
4200         performed by a superuser, so that proper privilege checking can be
4201         done when the extension is loaded.
4202        </para>
4203       </listitem>
4204
4205       <listitem>
4206        <para>
4207         Add <link linkend="app-postmaster">postmaster</link> <option>-C</>
4208         option to query configuration parameters (Bruce Momjian)
4209        </para>
4210
4211        <para>
4212         This allows <application>pg_ctl</> to better handle cases where
4213         <envar>PGDATA</> or <option>-D</> points to a configuration-only
4214         directory.
4215        </para>
4216       </listitem>
4217
4218       <listitem>
4219        <para>
4220         Replace an empty locale name with the implied value in
4221         <command>CREATE DATABASE</>
4222         (Tom Lane)
4223        </para>
4224
4225        <para>
4226         This prevents cases where
4227         <structname>pg_database</>.<structfield>datcollate</> or
4228         <structfield>datctype</> could be interpreted differently after a
4229         server restart.
4230        </para>
4231       </listitem>
4232
4233      </itemizedlist>
4234
4235      <sect5>
4236       <title><filename>postgresql.conf</filename></title>
4237
4238       <itemizedlist>
4239
4240       <listitem>
4241        <para>
4242         Allow multiple errors in <filename>postgresql.conf</filename>
4243         to be reported, rather than just the first one (Alexey Klyukin,
4244         Tom Lane)
4245        </para>
4246       </listitem>
4247
4248       <listitem>
4249        <para>
4250         Allow a reload of <filename>postgresql.conf</filename> to be
4251         processed by all sessions, even if there are some settings that
4252         are invalid for particular sessions (Alexey Klyukin)
4253        </para>
4254
4255        <para>
4256         Previously, such not-valid-within-session values would cause all
4257         setting changes to be ignored by that session.
4258        </para>
4259       </listitem>
4260
4261       <listitem>
4262        <para>
4263         Add an <literal>include_if_exists</> facility for configuration
4264         files (Greg Smith)
4265        </para>
4266
4267        <para>
4268         This works the same as <literal>include</>, except that an error
4269         is not thrown if the file is missing.
4270        </para>
4271       </listitem>
4272
4273       <listitem>
4274        <para>
4275         Identify the server time zone during <application>initdb</>, and set
4276         <filename>postgresql.conf</filename> entries
4277         <link linkend="guc-timezone"><varname>timezone</></link> and
4278         <link linkend="guc-log-timezone"><varname>log_timezone</></link>
4279         accordingly (Tom Lane)
4280        </para>
4281
4282        <para>
4283         This avoids expensive time zone probes during server start.
4284        </para>
4285       </listitem>
4286
4287       <listitem>
4288        <para>
4289         Fix <link
4290         linkend="view-pg-settings"><structname>pg_settings</></link> to
4291         report <filename>postgresql.conf</filename> line numbers on Windows
4292         (Tom Lane)
4293        </para>
4294       </listitem>
4295
4296       </itemizedlist>
4297
4298      </sect5>
4299
4300     </sect4>
4301
4302    </sect3>
4303
4304    <sect3>
4305     <title>Replication and Recovery</title>
4306
4307      <itemizedlist>
4308
4309       <listitem>
4310        <para>
4311         Allow streaming replication slaves to forward data to other slaves
4312         (<link linkend="cascading-replication"><firstterm>cascading
4313         replication</></link>) (Fujii Masao)
4314        </para>
4315
4316        <para>
4317         Previously, only the master server could supply streaming
4318         replication log files to standby servers.
4319        </para>
4320       </listitem>
4321
4322       <listitem>
4323        <para>
4324         Add new <link
4325         linkend="guc-synchronous-commit"><varname>synchronous_commit</></link>
4326         mode <literal>remote_write</> (Fujii Masao, Simon Riggs)
4327        </para>
4328
4329        <para>
4330         This mode waits for the standby server to write transaction data to
4331         its own operating system, but does not wait for the data to be
4332         flushed to the standby's disk.
4333        </para>
4334       </listitem>
4335
4336       <listitem>
4337        <para>
4338         Add a <link
4339         linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
4340         tool to archive WAL file changes as they are written, rather
4341         than waiting for completed WAL files (Magnus Hagander)
4342        </para>
4343       </listitem>
4344
4345       <listitem>
4346        <para>
4347         Allow <link
4348         linkend="app-pgbasebackup"><application>pg_basebackup</></link>
4349         to make base backups from standby servers (Jun Ishizuka, Fujii Masao)
4350        </para>
4351
4352        <para>
4353         This feature lets the work of making new base backups be off-loaded
4354         from the primary server.
4355        </para>
4356       </listitem>
4357
4358       <listitem>
4359        <para>
4360         Allow streaming of WAL files while <application>pg_basebackup</>
4361         is performing a backup (Magnus Hagander)
4362        </para>
4363
4364        <para>
4365         This allows passing of WAL files to the standby before they are
4366         discarded on the primary.
4367        </para>
4368       </listitem>
4369
4370      </itemizedlist>
4371
4372    </sect3>
4373
4374    <sect3>
4375     <title>Queries</title>
4376
4377      <itemizedlist>
4378
4379       <listitem>
4380        <para>
4381         Cancel the running query if the client gets disconnected
4382         (Florian Pflug)
4383        </para>
4384
4385        <para>
4386         If the backend detects loss of client connection during a query, it
4387         will now cancel the query rather than attempting to finish it.
4388        </para>
4389       </listitem>
4390
4391       <listitem>
4392        <para>
4393         Retain column names at run time for row expressions
4394         (Andrew Dunstan, Tom Lane)
4395        </para>
4396
4397        <para>
4398         This change allows better results when a row value is converted to
4399         <type>hstore</> or <type>json</> type: the fields of the resulting
4400         value will now have the expected names.
4401        </para>
4402       </listitem>
4403
4404       <listitem>
4405        <para>
4406         Improve column labels used for sub-<command>SELECT</> results
4407         (Marti Raudsepp)
4408        </para>
4409
4410        <para>
4411         Previously, the generic label <literal>?column?</> was used.
4412        </para>
4413       </listitem>
4414
4415       <listitem>
4416        <para>
4417         Improve heuristics for determining the types of unknown values
4418         (Tom Lane)
4419        </para>
4420
4421        <para>
4422         The longstanding rule that an unknown constant might have the
4423         same type as the value on the other side of the operator using it
4424         is now applied when considering polymorphic operators, not only
4425         for simple operator matches.
4426        </para>
4427       </listitem>
4428
4429       <listitem>
4430        <para>
4431         Warn about creating casts to or from domain types (Robert Haas)
4432        </para>
4433
4434        <para>
4435         Such casts have no effect.
4436        </para>
4437       </listitem>
4438
4439       <listitem>
4440        <para>
4441         When a row fails a <literal>CHECK</> or <literal>NOT NULL</>
4442         constraint, show the row's contents as error detail (Jan
4443         Kundr&aacute;t)
4444        </para>
4445
4446        <para>
4447         This should make it easier to identify which row is problematic
4448         when an insert or update is processing many rows.
4449        </para>
4450       </listitem>
4451
4452      </itemizedlist>
4453
4454    </sect3>
4455
4456    <sect3>
4457     <title>Object Manipulation</title>
4458
4459      <itemizedlist>
4460
4461       <listitem>
4462        <para>
4463         Provide more reliable operation during concurrent
4464         <acronym>DDL</acronym> (Robert Haas, Noah Misch)
4465        </para>
4466
4467        <para>
4468         This change adds locking that should eliminate <quote>cache lookup
4469         failed</> errors in many scenarios.  Also, it is no longer possible
4470         to add relations to a schema that is being concurrently dropped, a
4471         scenario that formerly led to inconsistent system catalog contents.
4472        </para>
4473       </listitem>
4474
4475       <listitem>
4476        <para>
4477         Add <literal>CONCURRENTLY</> option to <link
4478         linkend="SQL-DROPINDEX"><command>DROP INDEX</command></link>
4479         (Simon Riggs)
4480        </para>
4481
4482        <para>
4483         This allows index removal without blocking other sessions.
4484        </para>
4485       </listitem>
4486
4487       <listitem>
4488        <para>
4489         Allow foreign data wrappers to have per-column options (Shigeru Hanada)
4490        </para>
4491       </listitem>
4492
4493       <listitem>
4494        <para>
4495         Improve pretty-printing of view definitions (Andrew Dunstan)
4496        </para>
4497       </listitem>
4498
4499      </itemizedlist>
4500
4501     <sect4>
4502      <title>Constraints</title>
4503
4504      <itemizedlist>
4505
4506       <listitem>
4507        <para>
4508         Allow <link linkend="ddl-constraints"><literal>CHECK</></link>
4509         constraints to be declared <literal>NOT VALID</> (&Aacute;lvaro
4510         Herrera)
4511        </para>
4512
4513        <para>
4514         Adding a <literal>NOT VALID</> constraint does not cause the table to
4515         be scanned to verify that existing rows meet the constraint.
4516         Subsequently, newly added or updated rows are checked.
4517         Such constraints are ignored by the planner when considering
4518         <varname>constraint_exclusion</>, since it is not certain that all
4519         rows meet the constraint.
4520        </para>
4521
4522        <para>
4523         The new <command>ALTER TABLE VALIDATE</> command allows <literal>NOT
4524         VALID</> constraints to be checked for existing rows, after which
4525         they are converted into ordinary constraints.
4526        </para>
4527       </listitem>
4528
4529       <listitem>
4530        <para>
4531         Allow <literal>CHECK</> constraints to be declared <literal>NO
4532         INHERIT</> (Nikhil Sontakke, Alex Hunsaker, &Aacute;lvaro Herrera)
4533        </para>
4534
4535        <para>
4536         This makes them enforceable only on the parent table, not on
4537         child tables.
4538        </para>
4539       </listitem>
4540
4541       <listitem>
4542        <para>
4543         Add the ability to <link linkend="SQL-ALTERTABLE">rename</link>
4544         constraints (Peter Eisentraut)
4545        </para>
4546       </listitem>
4547      </itemizedlist>
4548
4549     </sect4>
4550
4551     <sect4>
4552      <title><command>ALTER</></title>
4553
4554      <itemizedlist>
4555
4556       <listitem>
4557        <para>
4558         Reduce need to rebuild tables and indexes for certain <link
4559         linkend="SQL-ALTERTABLE"><command>ALTER TABLE</command></link>
4560         ... <literal>ALTER COLUMN TYPE</> operations (Noah Misch)
4561        </para>
4562
4563        <para>
4564         Increasing the length limit for a <type>varchar</> or <type>varbit</>
4565         column, or removing the limit altogether, no longer requires a table
4566         rewrite.  Similarly, increasing the allowable precision of a
4567         <type>numeric</> column, or changing a column from constrained
4568         <type>numeric</> to unconstrained <type>numeric</>, no longer
4569         requires a table rewrite.  Table rewrites are also avoided in similar
4570         cases involving the <type>interval</>, <type>timestamp</>, and
4571         <type>timestamptz</> types.
4572        </para>
4573       </listitem>
4574
4575       <listitem>
4576        <para>
4577         Avoid having <link linkend="SQL-ALTERTABLE"><command>ALTER
4578         TABLE</command></link> revalidate foreign key constraints in some
4579         cases where it is not necessary (Noah Misch)
4580        </para>
4581       </listitem>
4582
4583       <listitem>
4584        <para>
4585         Add <literal>IF EXISTS</> options to some <command>ALTER</command>
4586         commands (Pavel Stehule)
4587        </para>
4588
4589        <para>
4590         For example, <command>ALTER FOREIGN TABLE IF EXISTS foo RENAME
4591         TO bar</command>.
4592        </para>
4593       </listitem>
4594
4595       <listitem>
4596        <para>
4597         Add <link linkend="SQL-ALTERFOREIGNDATAWRAPPER"><command>ALTER
4598         FOREIGN DATA WRAPPER</command></link> ... <literal>RENAME</>
4599         and <link linkend="SQL-ALTERSERVER"><command>ALTER
4600         SERVER</command></link> ... <literal>RENAME</> (Peter Eisentraut)
4601        </para>
4602       </listitem>
4603
4604       <listitem>
4605        <para>
4606         Add <link linkend="SQL-ALTERDOMAIN"><command>ALTER
4607         DOMAIN</command></link> ... <literal>RENAME</> (Peter Eisentraut)
4608        </para>
4609
4610        <para>
4611         You could already rename domains using <command>ALTER
4612         TYPE</command>.
4613        </para>
4614       </listitem>
4615
4616       <listitem>
4617        <para>
4618         Throw an error for <command>ALTER DOMAIN</command> ... <literal>DROP
4619         CONSTRAINT</> on a nonexistent constraint (Peter Eisentraut)
4620        </para>
4621
4622        <para>
4623         An <literal>IF EXISTS</> option has been added to provide the
4624         previous behavior.
4625        </para>
4626       </listitem>
4627
4628      </itemizedlist>
4629
4630     </sect4>
4631
4632     <sect4>
4633      <title><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link></title>
4634
4635      <itemizedlist>
4636
4637       <listitem>
4638        <para>
4639         Allow <command>CREATE TABLE (LIKE ...)</command> from foreign
4640         tables, views, and composite types (Peter Eisentraut)
4641        </para>
4642
4643        <para>
4644         For example, this allows a table to be created whose schema matches a
4645         view.
4646        </para>
4647       </listitem>
4648
4649       <listitem>
4650        <para>
4651         Fix <command>CREATE TABLE (LIKE ...)</command> to avoid index name
4652         conflicts when copying index comments (Tom Lane)
4653        </para>
4654       </listitem>
4655
4656       <listitem>
4657        <para>
4658         Fix <command>CREATE TABLE</command> ... <literal>AS EXECUTE</>
4659         to handle <literal>WITH NO DATA</> and column name specifications
4660         (Tom Lane)
4661        </para>
4662       </listitem>
4663
4664      </itemizedlist>
4665
4666     </sect4>
4667
4668     <sect4>
4669      <title>Object Permissions</title>
4670
4671      <itemizedlist>
4672
4673       <listitem>
4674        <para>
4675         Add a <link
4676         linkend="SQL-CREATEVIEW"><literal>security_barrier</></link>
4677         option for views (KaiGai Kohei, Robert Haas)
4678        </para>
4679
4680        <para>
4681         This option prevents optimizations that might allow view-protected
4682         data to be exposed to users, for example pushing a clause involving
4683         an insecure function into the <literal>WHERE</> clause of the view.
4684         Such views can be expected to perform more poorly than ordinary
4685         views.
4686        </para>
4687       </listitem>
4688
4689       <listitem>
4690        <para>
4691         Add a new <link
4692         linkend="SQL-CREATEFUNCTION"><literal>LEAKPROOF</></link> function
4693         attribute to mark functions that can safely be pushed down
4694         into <literal>security_barrier</> views (KaiGai Kohei)
4695        </para>
4696       </listitem>
4697
4698       <listitem>
4699        <para>
4700         Add support for privileges on data types (Peter Eisentraut)
4701        </para>
4702
4703        <para>
4704         This adds support for the <acronym>SQL</>-conforming
4705         <literal>USAGE</> privilege on types and domains.  The intent is
4706         to be able to restrict which users can create dependencies on types,
4707         since such dependencies limit the owner's ability to alter the type.
4708        </para>
4709       </listitem>
4710
4711       <listitem>
4712        <para>
4713         Check for <command>INSERT</command> privileges in <command>SELECT
4714         INTO</command> / <command>CREATE TABLE AS</command> (KaiGai Kohei)
4715        </para>
4716
4717        <para>
4718         Because the object is being created by <command>SELECT INTO</command>
4719         or <command>CREATE TABLE AS</command>, the creator would ordinarily
4720         have insert permissions; but there are corner cases where this is not
4721         true, such as when <literal>ALTER DEFAULT PRIVILEGES</> has removed
4722         such permissions.
4723        </para>
4724       </listitem>
4725
4726      </itemizedlist>
4727
4728     </sect4>
4729
4730    </sect3>
4731
4732    <sect3>
4733     <title>Utility Operations</title>
4734
4735     <itemizedlist>
4736
4737       <listitem>
4738        <para>
4739         Allow <link linkend="SQL-VACUUM"><command>VACUUM</></link> to more
4740         easily skip pages that cannot be locked (Simon Riggs, Robert Haas)
4741        </para>
4742
4743        <para>
4744         This change should greatly reduce the incidence of <command>VACUUM</>
4745         getting <quote>stuck</> waiting for other sessions.
4746        </para>
4747       </listitem>
4748
4749       <listitem>
4750        <para>
4751         Make <link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link>
4752         <literal>(BUFFERS)</> count blocks dirtied and written (Robert Haas)
4753        </para>
4754       </listitem>
4755
4756       <listitem>
4757        <para>
4758         Make <command>EXPLAIN ANALYZE</command> report the number of rows
4759         rejected by filter steps (Marko Tiikkaja)
4760        </para>
4761       </listitem>
4762
4763       <listitem>
4764        <para>
4765         Allow <command>EXPLAIN ANALYZE</command> to avoid timing overhead when
4766         time values are not wanted (Tomas Vondra)
4767        </para>
4768
4769        <para>
4770         This is accomplished by setting the new <literal>TIMING</> option to
4771         <literal>FALSE</>.
4772        </para>
4773       </listitem>
4774
4775     </itemizedlist>
4776
4777    </sect3>
4778
4779    <sect3>
4780     <title>Data Types</title>
4781
4782     <itemizedlist>
4783
4784       <listitem>
4785        <para>
4786         Add support for <link linkend="rangetypes">range data types</link>
4787         (Jeff Davis, Tom Lane, Alexander Korotkov)
4788        </para>
4789
4790        <para>
4791         A range data type stores a lower and upper bound belonging to its
4792         base data type.  It supports operations like contains, overlaps, and
4793         intersection.
4794        </para>
4795       </listitem>
4796
4797       <listitem>
4798        <para>
4799         Add a <link linkend="datatype-json"><type>JSON</type></link>
4800         data type (Robert Haas)
4801        </para>
4802
4803        <para>
4804         This type stores <acronym>JSON</acronym> (JavaScript Object Notation)
4805         data with proper validation.
4806        </para>
4807       </listitem>
4808
4809       <listitem>
4810        <para>
4811         Add <link
4812         linkend="functions-json"><function>array_to_json()</></link>
4813         and <function>row_to_json()</> (Andrew Dunstan)
4814        </para>
4815       </listitem>
4816
4817       <listitem>
4818        <para>
4819         Add a <link linkend="datatype-serial"><type>SMALLSERIAL</></link>
4820         data type (Mike Pultz)
4821        </para>
4822
4823        <para>
4824         This is like <type>SERIAL</>, except it stores the sequence in
4825         a two-byte integer column (<type>int2</>).
4826        </para>
4827       </listitem>
4828
4829       <listitem>
4830        <para>
4831         Allow <link linkend="SQL-CREATEDOMAIN">domains</link> to be
4832         declared <literal>NOT VALID</> (&Aacute;lvaro Herrera)
4833        </para>
4834
4835        <para>
4836         This option can be set at domain creation time, or via <command>ALTER
4837         DOMAIN</command> ... <literal>ADD CONSTRAINT</> ... <literal>NOT
4838         VALID</>. <command>ALTER DOMAIN</command> ... <literal>VALIDATE
4839         CONSTRAINT</> fully validates the constraint.
4840        </para>
4841       </listitem>
4842
4843       <listitem>
4844        <para>
4845         Support more locale-specific formatting options for the <link
4846         linkend="datatype-money"><type>money</></link> data type (Tom Lane)
4847        </para>
4848
4849        <para>
4850         Specifically, honor all the POSIX options for ordering of the value,
4851         sign, and currency symbol in monetary output.  Also, make sure that
4852         the thousands separator is only inserted to the left of the decimal
4853         point, as required by POSIX.
4854        </para>
4855       </listitem>
4856
4857       <listitem>
4858        <para>
4859         Add bitwise <quote>and</>, <quote>or</>, and <quote>not</>
4860         operators for the <type>macaddr</> data type (Brendan Jurd)
4861        </para>
4862       </listitem>
4863
4864       <listitem>
4865        <para>
4866         Allow <link
4867         linkend="functions-xml-processing"><function>xpath()</></link> to
4868         return a single-element <acronym>XML</acronym> array when supplied a
4869         scalar value (Florian Pflug)
4870        </para>
4871
4872        <para>
4873         Previously, it returned an empty array.  This change will also
4874         cause <function>xpath_exists()</> to return true, not false,
4875         for such expressions.
4876        </para>
4877       </listitem>
4878
4879       <listitem>
4880        <para>
4881         Improve <acronym>XML</acronym> error handling to be more robust
4882         (Florian Pflug)
4883        </para>
4884       </listitem>
4885
4886     </itemizedlist>
4887
4888    </sect3>
4889
4890    <sect3>
4891     <title>Functions</title>
4892
4893      <itemizedlist>
4894
4895       <listitem>
4896        <para>
4897         Allow non-superusers to use <link
4898         linkend="functions-admin-signal"><function>pg_cancel_backend()</></link>
4899         and <link
4900         linkend="functions-admin-signal"><function>pg_terminate_backend()</></link>
4901         on other sessions belonging to the same user
4902         (Magnus Hagander, Josh Kupershmidt, Dan Farina)
4903        </para>
4904
4905        <para>
4906         Previously only superusers were allowed to use these functions.
4907        </para>
4908       </listitem>
4909
4910       <listitem>
4911        <para>
4912         Allow importing and exporting of transaction snapshots (Joachim
4913         Wieland, Tom Lane)
4914        </para>
4915
4916        <para>
4917         This allows multiple transactions to share identical views of the
4918         database state.
4919         Snapshots are exported via <link
4920         linkend="functions-snapshot-synchronization"><function>pg_export_snapshot()</></link>
4921         and imported via <link linkend="SQL-SET-TRANSACTION"><command>SET
4922         TRANSACTION SNAPSHOT</command></link>.  Only snapshots from
4923         currently-running transactions can be imported.
4924        </para>
4925       </listitem>
4926
4927       <listitem>
4928        <para>
4929         Support <link
4930         linkend="functions-info-catalog-table"><literal>COLLATION
4931         FOR</></link> on expressions (Peter Eisentraut)
4932        </para>
4933
4934        <para>
4935         This returns a string representing the collation of the expression.
4936        </para>
4937       </listitem>
4938
4939       <listitem>
4940        <para>
4941         Add <link
4942         linkend="functions-info-schema-table"><function>pg_opfamily_is_visible()</></link>
4943         (Josh Kupershmidt)
4944        </para>
4945       </listitem>
4946
4947       <listitem>
4948        <para>
4949         Add a <type>numeric</> variant of <link
4950         linkend="functions-admin-dbsize"><function>pg_size_pretty()</></link>
4951         for use with <function>pg_xlog_location_diff()</> (Fujii Masao)
4952        </para>
4953       </listitem>
4954
4955       <listitem>
4956        <para>
4957         Add a <link
4958         linkend="functions-info-session-table"><function>pg_trigger_depth()</></link>
4959         function (Kevin Grittner)
4960        </para>
4961
4962        <para>
4963         This reports the current trigger call depth.
4964        </para>
4965       </listitem>
4966
4967       <listitem>
4968        <para>
4969         Allow <link
4970         linkend="functions-aggregate-table"><function>string_agg()</></link>
4971         to process <type>bytea</> values (Pavel Stehule)
4972        </para>
4973       </listitem>
4974
4975       <listitem>
4976        <para>
4977         Fix regular expressions in which a back-reference occurs within
4978         a larger quantified subexpression (Tom Lane)
4979        </para>
4980
4981        <para>
4982         For example, <literal>^(\w+)( \1)+$</>.  Previous releases did not
4983         check that the back-reference actually matched the first occurrence.
4984        </para>
4985       </listitem>
4986
4987      </itemizedlist>
4988
4989    </sect3>
4990
4991    <sect3>
4992     <title><link linkend="information-schema">Information Schema</link></title>
4993
4994      <itemizedlist>
4995
4996       <listitem>
4997        <para>
4998         Add information schema views
4999         <structname>role_udt_grants</>, <structname>udt_privileges</>,
5000         and <structname>user_defined_types</> (Peter Eisentraut)
5001        </para>
5002       </listitem>
5003
5004       <listitem>
5005        <para>
5006         Add composite-type attributes to the
5007         information schema <structname>element_types</> view
5008         (Peter Eisentraut)
5009        </para>
5010       </listitem>
5011
5012       <listitem>
5013        <para>
5014         Implement <structfield>interval_type</> columns in the information
5015         schema (Peter Eisentraut)
5016        </para>
5017
5018        <para>
5019         Formerly these columns read as nulls.
5020        </para>
5021       </listitem>
5022
5023       <listitem>
5024        <para>
5025         Implement collation-related columns in the information schema
5026         <structname>attributes</>, <structname>columns</>,
5027         <structname>domains</>, and <structname>element_types</>
5028         views (Peter Eisentraut)
5029        </para>
5030       </listitem>
5031
5032       <listitem>
5033        <para>
5034         Implement the <structfield>with_hierarchy</> column in the
5035         information schema <structname>table_privileges</> view (Peter
5036         Eisentraut)
5037        </para>
5038       </listitem>
5039
5040       <listitem>
5041        <para>
5042         Add display of sequence <literal>USAGE</> privileges to information
5043         schema (Peter Eisentraut)
5044        </para>
5045       </listitem>
5046
5047       <listitem>
5048        <para>
5049         Make the information schema show default privileges (Peter
5050         Eisentraut)
5051        </para>
5052
5053        <para>
5054         Previously, non-empty default permissions were not represented in the
5055         views.
5056        </para>
5057       </listitem>
5058
5059      </itemizedlist>
5060
5061    </sect3>
5062
5063    <sect3>
5064     <title>Server-Side Languages</title>
5065
5066     <sect4>
5067      <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
5068
5069      <itemizedlist>
5070
5071       <listitem>
5072        <para>
5073         Allow the PL/pgSQL <command>OPEN</> cursor command to supply
5074         parameters by name (Yeb Havinga)
5075        </para>
5076       </listitem>
5077
5078       <listitem>
5079        <para>
5080         Add a <command>GET STACKED DIAGNOSTICS</command> PL/pgSQL command
5081         to retrieve exception info (Pavel Stehule)
5082        </para>
5083       </listitem>
5084
5085       <listitem>
5086        <para>
5087         Speed up PL/pgSQL array assignment by caching type information
5088         (Pavel Stehule)
5089        </para>
5090       </listitem>
5091
5092       <listitem>
5093        <para>
5094         Improve performance and memory consumption for long chains of
5095         <literal>ELSIF</> clauses (Tom Lane)
5096        </para>
5097       </listitem>
5098
5099       <listitem>
5100        <para>
5101         Output the function signature, not just the name, in PL/pgSQL
5102         error messages (Pavel Stehule)
5103        </para>
5104       </listitem>
5105
5106     </itemizedlist>
5107
5108     </sect4>
5109
5110     <sect4>
5111      <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
5112
5113      <itemizedlist>
5114
5115       <listitem>
5116        <para>
5117         Add PL/Python <acronym>SPI</acronym> cursor support (Jan
5118         Urbanski)
5119        </para>
5120
5121        <para>
5122         This allows PL/Python to read partial result sets.
5123        </para>
5124       </listitem>
5125
5126       <listitem>
5127        <para>
5128         Add result metadata functions to PL/Python (Peter Eisentraut)
5129        </para>
5130
5131        <para>
5132         Specifically, this adds result object functions
5133         <literal>.colnames</literal>, <literal>.coltypes</literal>, and
5134         <literal>.coltypmods</literal>.
5135        </para>
5136       </listitem>
5137
5138       <listitem>
5139        <para>
5140         Remove support for Python 2.2 (Peter Eisentraut)
5141        </para>
5142       </listitem>
5143
5144      </itemizedlist>
5145
5146     </sect4>
5147
5148     <sect4>
5149      <title><link linkend="xfunc-sql">SQL</link> Server-Side Language</title>
5150
5151      <itemizedlist>
5152       <listitem>
5153        <para>
5154         Allow <acronym>SQL</acronym>-language functions to reference
5155         parameters by name (Matthew Draper)
5156        </para>
5157
5158        <para>
5159         To use this, simply name the function arguments and then reference
5160         the argument names in the <acronym>SQL</acronym> function body.
5161        </para>
5162       </listitem>
5163
5164      </itemizedlist>
5165     </sect4>
5166
5167    </sect3>
5168
5169    <sect3>
5170     <title>Client Applications</title>
5171
5172     <itemizedlist>
5173
5174       <listitem>
5175        <para>
5176         Add <link linkend="APP-INITDB"><application>initdb</></link>
5177         options <option>--auth-local</> and <option>--auth-host</>
5178         (Peter Eisentraut)
5179        </para>
5180
5181        <para>
5182         This allows separate control of <literal>local</> and
5183         <literal>host</> <filename>pg_hba.conf</filename> authentication
5184         settings.  <option>--auth</> still controls both.
5185        </para>
5186       </listitem>
5187
5188       <listitem>
5189        <para>
5190         Add <option>--replication</>/<option>--no-replication</> flags to
5191         <link linkend="APP-CREATEUSER"><application>createuser</></link>
5192         to control replication permission (Fujii Masao)
5193        </para>
5194       </listitem>
5195
5196       <listitem>
5197        <para>
5198         Add the <option>--if-exists</> option to <link
5199         linkend="APP-DROPDB"><application>dropdb</></link> and <link
5200         linkend="APP-DROPUSER"><application>dropuser</></link> (Josh
5201         Kupershmidt)
5202        </para>
5203       </listitem>
5204
5205       <listitem>
5206        <para>
5207         Give command-line tools the ability to specify the name of the
5208         database to connect to, and fall back to <literal>template1</>
5209         if a <literal>postgres</> database connection fails (Robert Haas)
5210        </para>
5211       </listitem>
5212
5213     </itemizedlist>
5214
5215     <sect4>
5216      <title><link linkend="APP-PSQL"><application>psql</></link></title>
5217
5218      <itemizedlist>
5219
5220       <listitem>
5221        <para>
5222         Add a display mode to auto-expand output based on the
5223         display width (Peter Eisentraut)
5224        </para>
5225
5226        <para>
5227         This adds the <literal>auto</> option to the <command>\x</>
5228         command, which switches to the expanded mode when the normal
5229         output would be wider than the screen.
5230        </para>
5231       </listitem>
5232
5233       <listitem>
5234        <para>
5235         Allow inclusion of a script file that is named relative to the
5236         directory of the file from which it was invoked (Gurjeet Singh)
5237        </para>
5238
5239        <para>
5240         This is done with a new command <command>\ir</>.
5241        </para>
5242       </listitem>
5243
5244       <listitem>
5245        <para>
5246         Add support for non-<acronym>ASCII</acronym> characters in
5247         <application>psql</> variable names (Tom Lane)
5248        </para>
5249       </listitem>
5250
5251       <listitem>
5252        <para>
5253         Add support for major-version-specific <filename>.psqlrc</> files
5254         (Bruce Momjian)
5255        </para>
5256
5257        <para>
5258         <application>psql</> already supported minor-version-specific
5259         <filename>.psqlrc</> files.
5260        </para>
5261       </listitem>
5262
5263       <listitem>
5264        <para>
5265         Provide environment variable overrides for <application>psql</>
5266         history and startup file locations (Andrew Dunstan)
5267        </para>
5268
5269        <para>
5270         <envar>PSQL_HISTORY</envar> and <envar>PSQLRC</envar> now
5271         determine these file names if set.
5272        </para>
5273       </listitem>
5274
5275       <listitem>
5276        <para>
5277         Add a <command>\setenv</> command to modify
5278         the environment variables passed to child processes (Andrew Dunstan)
5279        </para>
5280       </listitem>
5281
5282       <listitem>
5283        <para>
5284         Name <application>psql</>'s temporary editor files with a
5285         <filename>.sql</> extension (Peter Eisentraut)
5286        </para>
5287
5288        <para>
5289         This allows extension-sensitive editors to select the right mode.
5290        </para>
5291       </listitem>
5292
5293       <listitem>
5294        <para>
5295         Allow <application>psql</> to use zero-byte field and record
5296         separators (Peter Eisentraut)
5297        </para>
5298
5299        <para>
5300         Various shell tools use zero-byte (NUL) separators,
5301         e.g. <application>find</>.
5302        </para>
5303       </listitem>
5304
5305       <listitem>
5306        <para>
5307         Make the <command>\timing</> option report times for
5308         failed queries (Magnus Hagander)
5309        </para>
5310
5311        <para>
5312         Previously times were reported only for successful queries.
5313        </para>
5314       </listitem>
5315
5316       <listitem>
5317        <para>
5318         Unify and tighten <application>psql</>'s treatment of <command>\copy</>
5319         and SQL <command>COPY</> (Noah Misch)
5320        </para>
5321
5322        <para>
5323         This fix makes failure behavior more predictable and honors
5324         <command>\set ON_ERROR_ROLLBACK</>.
5325        </para>
5326       </listitem>
5327
5328      </itemizedlist>
5329
5330     </sect4>
5331
5332     <sect4>
5333      <title>Informational Commands</title>
5334
5335      <itemizedlist>
5336       <listitem>
5337        <para>
5338         Make <command>\d</> on a sequence show the
5339         table/column name owning it (Magnus Hagander)
5340        </para>
5341       </listitem>
5342
5343       <listitem>
5344        <para>
5345         Show statistics target for columns in <command>\d+</> (Magnus
5346         Hagander)
5347        </para>
5348       </listitem>
5349
5350       <listitem>
5351        <para>
5352         Show role password expiration dates in <command>\du</>
5353         (Fabr&iacute;zio de Royes Mello)
5354        </para>
5355       </listitem>
5356
5357       <listitem>
5358        <para>
5359         Display comments for casts, conversions, domains, and languages
5360         (Josh Kupershmidt)
5361        </para>
5362
5363        <para>
5364         These are included in the output of <command>\dC+</>,
5365         <command>\dc+</>, <command>\dD+</>, and <command>\dL</> respectively.
5366        </para>
5367       </listitem>
5368
5369       <listitem>
5370        <para>
5371         Display comments for <acronym>SQL</acronym>/<acronym>MED</acronym>
5372         objects (Josh Kupershmidt)
5373        </para>
5374
5375        <para>
5376         These are included in the output of <command>\des+</>,
5377         <command>\det+</>, and <command>\dew+</> for foreign servers, foreign
5378         tables, and foreign data wrappers respectively.
5379        </para>
5380       </listitem>
5381
5382       <listitem>
5383        <para>
5384         Change <command>\dd</> to display comments only for object types
5385         without their own backslash command (Josh Kupershmidt)
5386        </para>
5387       </listitem>
5388
5389      </itemizedlist>
5390
5391     </sect4>
5392
5393     <sect4>
5394      <title>Tab Completion</title>
5395
5396      <itemizedlist>
5397
5398       <listitem>
5399        <para>
5400         In <application>psql</> tab completion, complete <acronym>SQL</>
5401         keywords in either upper or lower case according to the new <link
5402         linkend="APP-PSQL-variables"><literal>COMP_KEYWORD_CASE</></link>
5403         setting (Peter Eisentraut)
5404        </para>
5405       </listitem>
5406
5407       <listitem>
5408        <para>
5409         Add tab completion support for
5410         <command>EXECUTE</command> (Andreas Karlsson)
5411        </para>
5412       </listitem>
5413
5414       <listitem>
5415        <para>
5416         Allow tab completion of role references in
5417         <command>GRANT</command>/<command>REVOKE</command> (Peter
5418         Eisentraut)
5419        </para>
5420       </listitem>
5421
5422       <listitem>
5423        <para>
5424         Allow tab completion of file names to supply quotes, when necessary
5425         (Noah Misch)
5426        </para>
5427       </listitem>
5428
5429       <listitem>
5430        <para>
5431         Change tab completion support for
5432         <command>TABLE</command> to also include views (Magnus Hagander)
5433        </para>
5434       </listitem>
5435
5436      </itemizedlist>
5437
5438     </sect4>
5439
5440     <sect4>
5441      <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
5442
5443      <itemizedlist>
5444
5445       <listitem>
5446        <para>
5447         Add an <option>--exclude-table-data</> option to
5448         <application>pg_dump</> (Andrew Dunstan)
5449        </para>
5450
5451        <para>
5452         This allows dumping of a table's definition but not its data,
5453         on a per-table basis.
5454        </para>
5455       </listitem>
5456
5457       <listitem>
5458        <para>
5459         Add a <option>--section</> option to <application>pg_dump</>
5460         and <application>pg_restore</> (Andrew Dunstan)
5461        </para>
5462
5463        <para>
5464         Valid values are <literal>pre-data</>, <literal>data</>,
5465         and <literal>post-data</>. The option can be
5466         given more than once to select two or more sections.
5467        </para>
5468       </listitem>
5469
5470       <listitem>
5471        <para>
5472         Make <link
5473         linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link> dump all
5474         roles first, then all configuration settings on roles (Phil Sorber)
5475        </para>
5476
5477        <para>
5478         This allows a role's configuration settings to mention other
5479         roles without generating an error.
5480        </para>
5481       </listitem>
5482
5483       <listitem>
5484        <para>
5485         Allow <application>pg_dumpall</> to avoid errors if the
5486         <literal>postgres</> database is missing in the new cluster
5487         (Robert Haas)
5488        </para>
5489       </listitem>
5490
5491       <listitem>
5492        <para>
5493         Dump foreign server user mappings in user name order (Peter
5494         Eisentraut)
5495        </para>
5496
5497        <para>
5498         This helps produce deterministic dump files.
5499        </para>
5500       </listitem>
5501
5502       <listitem>
5503        <para>
5504         Dump operators in a predictable order (Peter Eisentraut)
5505        </para>
5506       </listitem>
5507
5508       <listitem>
5509        <para>
5510         Tighten rules for when extension configuration tables are dumped
5511         by <application>pg_dump</> (Tom Lane)
5512        </para>
5513       </listitem>
5514
5515       <listitem>
5516        <para>
5517         Make <application>pg_dump</> emit more useful dependency
5518         information (Tom Lane)
5519        </para>
5520
5521        <para>
5522         The dependency links included in archive-format dumps were formerly
5523         of very limited use, because they frequently referenced objects that
5524         appeared nowhere in the dump.  Now they represent actual dependencies
5525         (possibly indirect) among the dumped objects.
5526        </para>
5527       </listitem>
5528
5529       <listitem>
5530        <para>
5531         Improve <application>pg_dump</>'s performance when dumping many
5532         database objects (Tom Lane)
5533        </para>
5534       </listitem>
5535
5536      </itemizedlist>
5537
5538     </sect4>
5539
5540    </sect3>
5541
5542     <sect3>
5543      <title><link linkend="libpq"><application>libpq</></link></title>
5544
5545      <itemizedlist>
5546
5547       <listitem>
5548        <para>
5549         Allow <application>libpq</> connection strings to have the format of a
5550         <link linkend="libpq-connstring"><acronym>URI</acronym></link>
5551         (Alexander Shulgin)
5552        </para>
5553
5554        <para>
5555         The syntax begins with <literal>postgres://</>.  This can allow
5556         applications to avoid implementing their own parser for URIs
5557         representing database connections.
5558        </para>
5559       </listitem>
5560
5561       <listitem>
5562        <para>
5563         Add a <link linkend="libpq-connect-sslcompression">connection
5564         option</link> to disable <acronym>SSL</acronym> compression
5565         (Laurenz Albe)
5566        </para>
5567
5568        <para>
5569         This can be used to remove the overhead of <acronym>SSL</acronym>
5570         compression on fast networks.
5571        </para>
5572       </listitem>
5573
5574       <listitem>
5575        <para>
5576         Add a <link linkend="libpq-single-row-mode">single-row processing
5577         mode</link> for better handling of large result sets
5578         (Kyotaro Horiguchi, Marko Kreen)
5579        </para>
5580
5581        <para>
5582         Previously, <application>libpq</> always collected the entire query
5583         result in memory before passing it back to the application.
5584        </para>
5585       </listitem>
5586
5587       <listitem>
5588        <para>
5589         Add <literal>const</> qualifiers to the declarations of the functions
5590         <function>PQconnectdbParams</>, <function>PQconnectStartParams</>,
5591         and <function>PQpingParams</> (Lionel Elie Mamane)
5592        </para>
5593       </listitem>
5594
5595       <listitem>
5596        <para>
5597         Allow the <filename>.pgpass</> file to include escaped characters
5598         in the password field (Robert Haas)
5599        </para>
5600       </listitem>
5601
5602       <listitem>
5603        <para>
5604         Make library functions use <function>abort()</> instead of
5605         <function>exit()</> when it is necessary to terminate the process
5606         (Peter Eisentraut)
5607        </para>
5608
5609        <para>
5610         This choice does not interfere with the normal exit codes used by the
5611         program, and generates a signal that can be caught by the caller.
5612        </para>
5613       </listitem>
5614
5615      </itemizedlist>
5616
5617    </sect3>
5618
5619    <sect3>
5620     <title>Source Code</title>
5621
5622      <itemizedlist>
5623
5624       <listitem>
5625        <para>
5626         Remove dead ports (Peter Eisentraut)
5627        </para>
5628
5629        <para>
5630         The following platforms are no longer supported: dgux,
5631         nextstep, sunos4, svr4, ultrix4, univel, bsdi.
5632        </para>
5633       </listitem>
5634
5635       <listitem>
5636        <para>
5637         Add support for building with <link linkend="install-windows">MS
5638         Visual Studio 2010</link> (Brar Piening)
5639        </para>
5640       </listitem>
5641
5642       <listitem>
5643        <para>
5644         Enable compiling with the MinGW-w64 32-bit compiler (Lars Kanis)
5645        </para>
5646       </listitem>
5647
5648       <listitem>
5649        <para>
5650         Install <filename>plpgsql.h</> into <filename>include/server</> during installation
5651         (Heikki Linnakangas)
5652        </para>
5653       </listitem>
5654
5655       <listitem>
5656        <para>
5657         Improve the latch facility to include detection of postmaster death
5658         (Peter Geoghegan, Heikki Linnakangas, Tom Lane)
5659        </para>
5660
5661        <para>
5662         This eliminates one of the main reasons that background processes
5663         formerly had to wake up to poll for events.
5664        </para>
5665       </listitem>
5666
5667       <listitem>
5668        <para>
5669         Use C flexible array members, where supported (Peter Eisentraut)
5670        </para>
5671       </listitem>
5672
5673       <listitem>
5674        <para>
5675         Improve the concurrent transaction regression tests
5676         (<application>isolationtester</>) (Noah Misch)
5677        </para>
5678       </listitem>
5679
5680       <listitem>
5681        <para>
5682         Modify <application>thread_test</> to create its test files in
5683         the current directory, rather than <filename>/tmp</> (Bruce Momjian)
5684        </para>
5685       </listitem>
5686
5687       <listitem>
5688        <para>
5689         Improve flex and bison warning and error reporting (Tom Lane)
5690        </para>
5691       </listitem>
5692
5693       <listitem>
5694        <para>
5695         Add memory barrier support (Robert Haas)
5696        </para>
5697
5698        <para>
5699         This is currently unused.
5700        </para>
5701       </listitem>
5702
5703       <listitem>
5704        <para>
5705         Modify pgindent to use a typedef file (Bruce Momjian)
5706        </para>
5707       </listitem>
5708
5709       <listitem>
5710        <para>
5711         Add a hook for processing messages due to be sent to the server
5712         log (Martin Pihlak)
5713        </para>
5714       </listitem>
5715
5716       <listitem>
5717        <para>
5718         Add object access hooks for <command>DROP</command> commands
5719         (KaiGai Kohei)
5720        </para>
5721       </listitem>
5722
5723       <listitem>
5724        <para>
5725         Centralize <command>DROP</command> handling for some object types
5726         (KaiGai Kohei)
5727        </para>
5728       </listitem>
5729
5730       <listitem>
5731        <para>
5732         Add a <application>pg_upgrade</> test suite (Peter Eisentraut)
5733        </para>
5734       </listitem>
5735
5736       <listitem>
5737        <para>
5738         Sync regular expression code with <acronym>TCL</acronym> 8.5.11
5739         and improve internal processing (Tom Lane)
5740        </para>
5741       </listitem>
5742
5743       <listitem>
5744        <para>
5745         Move <acronym>CRC</acronym> tables to libpgport, and provide them
5746         in a separate include file (Daniel Farina)
5747        </para>
5748       </listitem>
5749
5750       <listitem>
5751        <para>
5752         Add options to <application>git_changelog</> for use in major
5753         release note creation (Bruce Momjian)
5754        </para>
5755       </listitem>
5756
5757       <listitem>
5758        <para>
5759         Support Linux's <filename>/proc/self/oom_score_adj</> API (Tom Lane)
5760        </para>
5761       </listitem>
5762
5763      </itemizedlist>
5764
5765    </sect3>
5766
5767    <sect3>
5768     <title>Additional Modules</title>
5769
5770     <itemizedlist>
5771
5772       <listitem>
5773        <para>
5774         Improve efficiency of <link linkend="dblink">dblink</link> by using
5775         libpq's new single-row processing mode (Kyotaro Horiguchi, Marko
5776         Kreen)
5777        </para>
5778
5779        <para>
5780         This improvement does not apply to
5781         <function>dblink_send_query()</>/<function>dblink_get_result()</>.
5782        </para>
5783       </listitem>
5784
5785       <listitem>
5786        <para>
5787         Support <literal>force_not_null</> option in <link
5788         linkend="file-fdw">file_fdw</link> (Shigeru Hanada)
5789        </para>
5790       </listitem>
5791
5792       <listitem>
5793        <para>
5794         Implement dry-run mode for <link
5795         linkend="pgarchivecleanup"><application>pg_archivecleanup</></link>
5796         (Gabriele Bartolini)
5797        </para>
5798
5799        <para>
5800         This only outputs the names of files to be deleted.
5801        </para>
5802       </listitem>
5803
5804       <listitem>
5805        <para>
5806         Add new <link linkend="pgbench">pgbench</link> switches
5807         <option>--unlogged-tables</>, <option>--tablespace</>, and
5808         <option>--index-tablespace</> (Robert Haas)
5809        </para>
5810       </listitem>
5811
5812       <listitem>
5813        <para>
5814         Change <link
5815         linkend="pgtestfsync"><application>pg_test_fsync</></link> to test
5816         for a fixed amount of time, rather than a fixed number of cycles
5817         (Bruce Momjian)
5818        </para>
5819
5820        <para>
5821         The <option>-o</>/cycles option was removed, and
5822         <option>-s</>/seconds added.
5823        </para>
5824       </listitem>
5825
5826       <listitem>
5827        <para>
5828         Add a <link
5829         linkend="pgtesttiming"><application>pg_test_timing</></link>
5830         utility to measure clock monotonicity and timing overhead (Ants
5831         Aasma, Greg Smith)
5832        </para>
5833       </listitem>
5834
5835       <listitem>
5836        <para>
5837         Add a <link linkend="tcn">tcn</link> (triggered change notification)
5838         module to generate <command>NOTIFY</command> events on table changes
5839         (Kevin Grittner)
5840        </para>
5841       </listitem>
5842
5843     </itemizedlist>
5844
5845     <sect4>
5846      <title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>
5847
5848      <itemizedlist>
5849
5850       <listitem>
5851        <para>
5852         Adjust <application>pg_upgrade</> environment variables (Bruce
5853         Momjian)
5854        </para>
5855
5856        <para>
5857         Rename data, bin, and port environment
5858         variables to begin with <literal>PG</>, and support
5859         <envar>PGPORTOLD</envar>/<envar>PGPORTNEW</envar>, to replace
5860         <envar>PGPORT</envar>.
5861        </para>
5862       </listitem>
5863
5864       <listitem>
5865        <para>
5866         Overhaul <application>pg_upgrade</> logging and failure reporting
5867         (Bruce Momjian)
5868        </para>
5869
5870        <para>
5871         Create four append-only log files, and delete them on success.
5872         Add <option>-r</>/<option>--retain</> option to unconditionally
5873         retain these files.  Also remove <application>pg_upgrade</> options
5874         <option>-g</>/<option>-G</>/<option>-l</> options as unnecessary,
5875         and tighten log file permissions.
5876        </para>
5877       </listitem>
5878
5879       <listitem>
5880        <para>
5881         Make <application>pg_upgrade</> create a script to incrementally
5882         generate more accurate optimizer statistics (Bruce Momjian)
5883        </para>
5884
5885        <para>
5886         This reduces the time needed to generate minimal cluster statistics
5887         after an upgrade.
5888        </para>
5889       </listitem>
5890
5891       <listitem>
5892        <para>
5893         Allow <application>pg_upgrade</> to upgrade an old cluster that
5894         does not have a <literal>postgres</> database (Bruce Momjian)
5895        </para>
5896       </listitem>
5897
5898       <listitem>
5899        <para>
5900         Allow <application>pg_upgrade</> to handle cases where some
5901         old or new databases are missing, as long as they are empty
5902         (Bruce Momjian)
5903        </para>
5904       </listitem>
5905
5906       <listitem>
5907        <para>
5908         Allow <application>pg_upgrade</> to handle configuration-only
5909         directory installations (Bruce Momjian)
5910        </para>
5911       </listitem>
5912
5913       <listitem>
5914        <para>
5915         In <application>pg_upgrade</>, add <option>-o</>/<option>-O</>
5916         options to pass parameters to the servers (Bruce Momjian)
5917        </para>
5918
5919        <para>
5920         This is useful for configuration-only directory installs.
5921        </para>
5922       </listitem>
5923
5924       <listitem>
5925        <para>
5926         Change <application>pg_upgrade</> to use port 50432 by default
5927         (Bruce Momjian)
5928        </para>
5929
5930        <para>
5931         This helps avoid unintended client connections during the upgrade.
5932        </para>
5933       </listitem>
5934
5935       <listitem>
5936        <para>
5937         Reduce cluster locking in <application>pg_upgrade</> (Bruce
5938         Momjian)
5939        </para>
5940
5941        <para>
5942         Specifically, only lock the old cluster if link mode is used,
5943         and do it right after the schema is restored.
5944        </para>
5945       </listitem>
5946
5947     </itemizedlist>
5948
5949     </sect4>
5950
5951     <sect4>
5952      <title><link linkend="pgstatstatements"><application>pg_stat_statements</></link></title>
5953
5954      <itemizedlist>
5955
5956       <listitem>
5957        <para>
5958         Allow <application>pg_stat_statements</> to aggregate similar
5959         queries via SQL text normalization (Peter Geoghegan, Tom Lane)
5960        </para>
5961
5962        <para>
5963         Users with applications that use non-parameterized SQL will now
5964         be able to monitor query performance without detailed log analysis.
5965        </para>
5966       </listitem>
5967
5968       <listitem>
5969        <para>
5970         Add dirtied and written block counts and read/write times to
5971         <application>pg_stat_statements</> (Robert Haas, Ants Aasma)
5972        </para>
5973       </listitem>
5974
5975       <listitem>
5976        <para>
5977         Prevent <application>pg_stat_statements</> from double-counting
5978         <command>PREPARE</command> and <command>EXECUTE</command> commands
5979         (Tom Lane)
5980        </para>
5981       </listitem>
5982
5983     </itemizedlist>
5984
5985     </sect4>
5986
5987     <sect4>
5988      <title><link linkend="sepgsql">sepgsql</link></title>
5989
5990      <itemizedlist>
5991       <listitem>
5992        <para>
5993         Support <literal>SECURITY LABEL</> on global objects (KaiGai
5994         Kohei, Robert Haas)
5995        </para>
5996
5997        <para>
5998         Specifically, add security labels to databases,
5999         tablespaces, and roles.
6000        </para>
6001       </listitem>
6002
6003       <listitem>
6004        <para>
6005         Allow sepgsql to honor database labels (KaiGai Kohei)
6006        </para>
6007       </listitem>
6008
6009       <listitem>
6010        <para>
6011         Perform sepgsql permission checks during the creation of various
6012         objects (KaiGai Kohei)
6013        </para>
6014       </listitem>
6015
6016       <listitem>
6017        <para>
6018         Add <function>sepgsql_setcon()</> and related functions to control
6019         the sepgsql security domain (KaiGai Kohei)
6020        </para>
6021       </listitem>
6022
6023       <listitem>
6024        <para>
6025         Add a user space access cache to sepgsql to improve performance
6026         (KaiGai Kohei)
6027        </para>
6028       </listitem>
6029
6030      </itemizedlist>
6031     </sect4>
6032
6033    </sect3>
6034
6035    <sect3>
6036     <title>Documentation</title>
6037
6038     <itemizedlist>
6039
6040       <listitem>
6041        <para>
6042         Add a rule to optionally build HTML documentation using the
6043         stylesheet from the website (Magnus Hagander)
6044        </para>
6045
6046        <para>
6047         Use <command>gmake STYLE=website draft</>.
6048        </para>
6049       </listitem>
6050
6051       <listitem>
6052        <para>
6053         Improve <command>EXPLAIN</command> documentation (Tom Lane)
6054        </para>
6055       </listitem>
6056
6057       <listitem>
6058        <para>
6059         Document that user/database names are preserved with double-quoting
6060         by command-line tools like <application>vacuumdb</>  (Bruce
6061         Momjian)
6062        </para>
6063       </listitem>
6064
6065       <listitem>
6066        <para>
6067         Document the actual string returned by the client for MD5
6068         authentication (Cyan Ogilvie)
6069        </para>
6070       </listitem>
6071
6072       <listitem>
6073        <para>
6074         Deprecate use of <literal>GLOBAL</> and <literal>LOCAL</> in
6075         <command>CREATE TEMP TABLE</> (Noah Misch)
6076        </para>
6077
6078        <para>
6079         <productname>PostgreSQL</> has long treated these keyword as no-ops,
6080         and continues to do so; but in future they might mean what the SQL
6081         standard says they mean, so applications should avoid using them.
6082        </para>
6083       </listitem>
6084
6085     </itemizedlist>
6086
6087    </sect3>
6088
6089   </sect2>
6090  </sect1>