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