1 <!-- doc/src/sgml/release-9.2.sgml -->
2 <!-- See header comment in release.sgml about typical markup -->
4 <sect1 id="release-9-2-6">
5 <title>Release 9.2.6</title>
8 <title>Release Date</title>
9 <simpara>2013-12-05</simpara>
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">.
19 <title>Migration to Version 9.2.6</title>
22 A dump/restore is not required for those running 9.2.X.
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.
32 Also, if you are upgrading from a version earlier than 9.2.4,
33 see the release notes for 9.2.4.
39 <title>Changes</title>
45 Fix <command>VACUUM</>'s tests to see whether it can
46 update <structfield>relfrozenxid</> (Andres Freund)
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.
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</>).
76 Fix initialization of <filename>pg_clog</> and <filename>pg_subtrans</>
77 during hot standby startup (Andres Freund, Heikki Linnakangas)
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
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.
102 Fix dangling-pointer problem in fast-path locking (Tom Lane)
106 This could lead to corruption of the lock data structures in shared
107 memory, causing <quote>lock already held</> and other odd errors.
113 Truncate <filename>pg_multixact</> contents during WAL replay
118 This avoids ever-increasing disk space consumption in standby servers.
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)
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.
139 Fix race condition in GIN index posting tree page deletion (Heikki
144 This could lead to transient wrong answers or query failures.
150 Fix <quote>unexpected spgdoinsert() failure</> error during SP-GiST
151 index creation (Teodor Sigaev)
157 Avoid flattening a subquery whose <literal>SELECT</> list contains a
158 volatile function wrapped inside a sub-<literal>SELECT</> (Tom Lane)
162 This avoids unexpected results due to extra evaluations of the
169 Fix planner's processing of non-simple-variable subquery outputs
170 nested within outer joins (Tom Lane)
174 This error could lead to incorrect plans for queries involving
175 multiple levels of subqueries within <literal>JOIN</> syntax.
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)
189 Fix planner crash with whole-row reference to a subquery (Tom Lane)
195 Fix incorrect generation of optimized MIN()/MAX() plans for
196 inheritance trees (Tom Lane)
200 The planner could fail in cases where the MIN()/MAX() argument was an
201 expression rather than a simple variable.
207 Fix premature deletion of temporary files (Andres Freund)
213 Prevent intra-transaction memory leak when printing range values
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
226 Prevent incorrect display of dropped columns in NOT NULL and CHECK
227 constraint violation messages (Michael Paquier and Tom Lane)
233 Allow default arguments and named-argument notation for window
238 Previously, these cases were likely to crash.
244 Fix possible read past end of memory in rule printing (Peter Eisentraut)
250 Fix array slicing of <type>int2vector</> and <type>oidvector</> values
255 Expressions of this kind are now implicitly promoted to
256 regular <type>int2</> or <type>oid</> arrays.
262 Fix incorrect behaviors when using a SQL-standard, simple GMT offset
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
277 Prevent possible misbehavior when logging translations of Windows
278 error codes (Tom Lane)
284 Properly quote generated command lines in <application>pg_ctl</>
285 (Naoya Anzai and Tom Lane)
289 This fix applies only to Windows.
295 Fix <application>pg_dumpall</> to work when a source database
297 linkend="guc-default-transaction-read-only"><varname>default_transaction_read_only</></link>
298 via <command>ALTER DATABASE SET</> (Kevin Grittner)
302 Previously, the generated script would fail during restore.
308 Make <application>ecpg</> search for quoted cursor names
309 case-sensitively (Zoltán Böszörményi)
315 Fix <application>ecpg</>'s processing of lists of variables
316 declared <type>varchar</> (Zoltán Böszörményi)
322 Make <filename>contrib/lo</> defend against incorrect trigger definitions
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.
341 <sect1 id="release-9-2-5">
342 <title>Release 9.2.5</title>
345 <title>Release Date</title>
346 <simpara>2013-10-10</simpara>
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">.
356 <title>Migration to Version 9.2.5</title>
359 A dump/restore is not required for those running 9.2.X.
363 However, if you are upgrading from a version earlier than 9.2.4,
364 see the release notes for 9.2.4.
370 <title>Changes</title>
376 Prevent corruption of multi-byte characters when attempting to
377 case-fold identifiers (Andrew Dunstan)
381 <productname>PostgreSQL</> case-folds non-ASCII characters only
382 when using a single-byte server encoding.
388 Fix memory leak when creating B-tree indexes on range columns
395 Fix checkpoint memory leak in background writer when <literal>wal_level =
396 hot_standby</> (Naoya Anzai)
402 Fix memory leak caused by <function>lo_open()</function> failure
409 Fix memory overcommit bug when <varname>work_mem</> is using more
410 than 24GB of memory (Stephen Frost)
416 Serializable snapshot fixes (Kevin Grittner, Heikki Linnakangas)
422 Fix deadlock bug in libpq when using SSL (Stephen Frost)
428 Fix possible SSL state corruption in threaded libpq applications
429 (Nick Phillips, Stephen Frost)
435 Improve estimate of planner cost when choosing between generic and
436 custom plans (Tom Lane)
440 This change will favor generic plans when planning cost is high.
446 Properly compute row estimates for boolean columns containing many NULL
447 values (Andrew Gierth)
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
459 Fix accounting for qualifier evaluation costs in <literal>UNION ALL</>
460 and inheritance queries (Tom Lane)
464 This fixes cases where suboptimal query plans could be chosen if
465 some <literal>WHERE</> clauses are expensive to calculate.
471 Prevent pushing down <literal>WHERE</> clauses into unsafe
472 <literal>UNION/INTERSECT</> subqueries (Tom Lane)
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.
485 Fix rare case of <quote>failed to locate grouping columns</>
486 planner failure (Tom Lane)
492 Fix <application>pg_dump</> of foreign tables with dropped columns (Andrew Dunstan)
496 Previously such cases could cause a <application>pg_upgrade</> error.
502 Reorder <application>pg_dump</> processing of extension-related
503 rules and event triggers (Joe Conway)
509 Force dumping of extension tables if specified by <command>pg_dump
510 -t</> or <literal>-n</> (Joe Conway)
516 Improve view dumping code's handling of dropped columns in referenced
523 Fix <command>pg_restore -l</> with the directory archive to display
524 the correct format name (Fujii Masao)
530 Properly record index comments created using <literal>UNIQUE</>
531 and <literal>PRIMARY KEY</> syntax (Andres Freund)
535 This fixes a parallel <application>pg_restore</> failure.
541 Cause <command>pg_basebackup -x</> with an empty xlog directory
542 to throw an error rather than crashing (Magnus Hagander, Haruka
549 Properly guarantee transmission of WAL files before clean switchover
554 Previously, the streaming replication connection might close before all
555 WAL files had been replayed on the standby.
561 Fix WAL segment timeline handling during recovery (Mitsumasa Kondo,
566 WAL file recycling during standby recovery could lead to premature
567 recovery completion, resulting in data loss.
573 Fix <command>REINDEX TABLE</> and <command>REINDEX DATABASE</>
574 to properly revalidate constraints and mark invalidated indexes as
579 <command>REINDEX INDEX</> has always worked properly.
585 Avoid deadlocks during insertion into SP-GiST indexes (Teodor Sigaev)
591 Fix possible deadlock during concurrent <command>CREATE INDEX
592 CONCURRENTLY</> operations (Tom Lane)
598 Fix GiST index lookup crash (Tom Lane)
604 Fix <function>regexp_matches()</> handling of zero-length matches
609 Previously, zero-length matches like '^' could return too many matches.
615 Fix crash for overly-complex regular expressions (Heikki Linnakangas)
621 Fix regular expression match failures for back references combined with
622 non-greedy quantifiers (Jeevan Chalke)
628 Prevent <command>CREATE FUNCTION</> from checking <command>SET</>
629 variables unless function body checking is enabled (Tom Lane)
635 Allow <command>ALTER DEFAULT PRIVILEGES</> to operate on schemas
636 without requiring CREATE permission (Tom Lane)
642 Loosen restriction on keywords used in queries (Tom Lane)
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
656 Print proper line number during <command>COPY</> failure (Heikki
663 Fix <function>pgp_pub_decrypt()</> so it works for secret keys with
664 passwords (Marko Kreen)
670 Make <application>pg_upgrade</> use <literal>pg_dump
671 --quote-all-identifiers</> to avoid problems with keyword changes
672 between releases (Tom Lane)
678 Remove rare inaccurate warning during vacuum of index-less tables
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
693 Avoid possible failure when performing transaction control commands (e.g
694 <command>ROLLBACK</>) in prepared queries (Tom Lane)
700 Ensure that floating-point data input accepts standard spellings
701 of <quote>infinity</> on all platforms (Tom Lane)
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
715 Avoid unnecessary reporting when <varname>track_activities</> is off
722 Expand ability to compare rows to records and arrays (Rafal Rzepecki,
729 Prevent crash when <application>psql</>'s <envar>PSQLRC</> variable
730 contains a tilde (Bruce Momjian)
736 Add spinlock support for ARM64 (Mark Salter)
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.
753 <sect1 id="release-9-2-4">
754 <title>Release 9.2.4</title>
757 <title>Release Date</title>
758 <simpara>2013-04-04</simpara>
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">.
768 <title>Migration to Version 9.2.4</title>
771 A dump/restore is not required for those running 9.2.X.
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.
782 Also, if you are upgrading from a version earlier than 9.2.2,
783 see the release notes for 9.2.2.
789 <title>Changes</title>
795 Fix insecure parsing of server command-line switches (Mitsumasa
796 Kondo, Kyotaro Horiguchi)
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)
809 Reset OpenSSL randomness state in each postmaster child process
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)
824 Make REPLICATION privilege checks test current user not authenticated
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.
838 Fix GiST indexes to not use <quote>fuzzy</> geometric comparisons when
839 it's not appropriate to do so (Alexander Korotkov)
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</>.
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</>
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.
870 Fix bugs in GiST page splitting code for multi-column indexes
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
885 Fix <function>gist_point_consistent</>
886 to handle fuzziness consistently (Alexander Korotkov)
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.
899 Fix buffer leak in WAL replay (Heikki Linnakangas)
903 This bug could result in <quote>incorrect local pin count</> errors
904 during replay, making recovery impossible.
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)
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.
924 Avoid deleting not-yet-archived WAL files during crash recovery
925 (Heikki Linnakangas, Fujii Masao)
931 Fix race condition in <command>DELETE RETURNING</> (Tom Lane)
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
945 Fix infinite-loop risk in regular expression compilation (Tom Lane,
952 Fix potential null-pointer dereference in regular expression compilation
959 Fix <function>to_char()</> to use ASCII-only case-folding rules where
960 appropriate (Tom Lane)
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.
972 Fix unwanted rejection of timestamp <literal>1999-12-31 24:00:00</>
979 Fix SQL-language functions to be safely usable as support
980 functions for range types (Tom Lane)
986 Fix logic error when a single transaction does <command>UNLISTEN</>
987 then <command>LISTEN</> (Tom Lane)
991 The session wound up not listening for notify events at all, though it
992 surely should listen in this case.
998 Fix possible planner crash after columns have been added to a view
999 that's depended on by another view (Tom Lane)
1005 Fix performance issue in <literal>EXPLAIN (ANALYZE, TIMING OFF)</>
1012 Remove useless <quote>picksplit doesn't support secondary split</> log
1013 messages (Josh Hansen, Tom Lane)
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
1026 Remove vestigial secondary-split support in
1027 <function>gist_box_picksplit()</> (Tom Lane)
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.
1039 Fix possible failure to send a session's last few transaction
1040 commit/abort counts to the statistics collector (Tom Lane)
1046 Eliminate memory leaks in PL/Perl's <function>spi_prepare()</> function
1047 (Alex Hunsaker, Tom Lane)
1053 Fix <application>pg_dumpall</> to handle database names containing
1054 <quote><literal>=</></quote> correctly (Heikki Linnakangas)
1060 Avoid crash in <application>pg_dump</> when an incorrect connection
1061 string is given (Heikki Linnakangas)
1067 Ignore invalid indexes in <application>pg_dump</> and
1068 <application>pg_upgrade</> (Michael Paquier, Bruce Momjian)
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
1085 In <application>pg_basebackup</>, include only the current server
1086 version's subdirectory when backing up a tablespace (Heikki
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)
1101 Fix <filename>contrib/dblink</> to handle inconsistent settings of
1102 <varname>DateStyle</> or <varname>IntervalStyle</> safely (Daniel
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.
1119 Fix <filename>contrib/pg_trgm</>'s <function>similarity()</> function
1120 to return zero for trigram-less strings (Tom Lane)
1124 Previously it returned <literal>NaN</> due to internal division by zero.
1130 Enable building <productname>PostgreSQL</> with Microsoft Visual
1131 Studio 2012 (Brar Piening, Noah Misch)
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
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.
1160 <sect1 id="release-9-2-3">
1161 <title>Release 9.2.3</title>
1164 <title>Release Date</title>
1165 <simpara>2013-02-07</simpara>
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">.
1175 <title>Migration to Version 9.2.3</title>
1178 A dump/restore is not required for those running 9.2.X.
1182 However, if you are upgrading from a version earlier than 9.2.2,
1183 see the release notes for 9.2.2.
1189 <title>Changes</title>
1195 Prevent execution of <function>enum_recv</> from SQL (Tom Lane)
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)
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)
1216 Fix detection of end-of-backup point when no actual redo work is
1217 required (Heikki Linnakangas)
1221 This mistake could result in incorrect <quote>WAL ends before end of
1222 online backup</> errors.
1228 Update minimum recovery point when truncating a relation file (Heikki
1233 Once data has been discarded, it's no longer safe to stop recovery at
1234 an earlier point in the timeline.
1240 Fix recycling of WAL segments after changing recovery target timeline
1241 (Heikki Linnakangas)
1247 Properly restore timeline history files from archive on cascading
1248 standby servers (Heikki Linnakangas)
1254 Fix lock conflict detection on hot-standby servers (Andres Freund,
1261 Fix missing cancellations in hot standby mode (Noah Misch, Simon Riggs)
1265 The need to cancel conflicting hot-standby queries would sometimes be
1266 missed, allowing those queries to see inconsistent data.
1272 Prevent recovery pause feature from pausing before users can connect
1279 Fix SQL grammar to allow subscripting or field selection from a
1280 sub-SELECT result (Tom Lane)
1286 Fix performance problems with autovacuum truncation in busy workloads
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.
1304 Improve performance of <function>SPI_execute</> and related
1305 functions, thereby improving PL/pgSQL's <literal>EXECUTE</>
1306 (Heikki Linnakangas, Tom Lane)
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
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
1329 Restore pre-9.2 cost estimates for index usage (Tom Lane)
1333 An ill-considered change of a fudge factor led to undesirably high
1334 cost estimates for use of very large indexes.
1340 Fix intermittent crash in <literal>DROP INDEX CONCURRENTLY</> (Tom Lane)
1346 Fix potential corruption of shared-memory lock table during
1347 <command>CREATE/DROP INDEX CONCURRENTLY</> (Tom Lane)
1353 Fix <command>COPY</>'s multiple-tuple-insertion code for the case of
1354 a tuple larger than page size minus fillfactor (Heikki Linnakangas)
1358 The previous coding could get into an infinite loop.
1364 Protect against race conditions when scanning
1365 <structname>pg_tablespace</> (Stephen Frost, Tom Lane)
1369 <command>CREATE DATABASE</> and <command>DROP DATABASE</> could
1370 misbehave if there were concurrent updates of
1371 <structname>pg_tablespace</> entries.
1377 Prevent <command>DROP OWNED</> from trying to drop whole databases or
1378 tablespaces (Álvaro Herrera)
1382 For safety, ownership of these objects must be reassigned, not dropped.
1389 linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link>
1390 implementation (Andres Freund)
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.
1403 Prevent misbehavior when a <symbol>RowExpr</> or <symbol>XmlExpr</>
1404 is parse-analyzed twice (Andres Freund, Tom Lane)
1408 This mistake could be user-visible in contexts such as
1409 <literal>CREATE TABLE LIKE INCLUDING INDEXES</>.
1415 Improve defenses against integer overflow in hashtable sizing
1416 calculations (Jeff Davis)
1422 Fix some bugs associated with privileges on datatypes (Tom Lane)
1426 There were some issues with default privileges for types, and
1427 <application>pg_dump</> failed to dump such privileges at all.
1433 Fix failure to ignore leftover temporary tables after a server crash
1440 Fix failure to rotate postmaster log files for size reasons on
1441 Windows (Jeff Janes, Heikki Linnakangas)
1447 Reject out-of-range dates in <function>to_date()</> (Hitoshi Harada)
1453 Fix <function>pg_extension_config_dump()</> to handle
1454 extension-update cases properly (Tom Lane)
1458 This function will now replace any existing entry for the target
1459 table, making it usable in extension update scripts.
1465 Fix PL/pgSQL's reporting of plan-time errors in possibly-simple
1466 expressions (Tom Lane)
1470 The previous coding resulted in sometimes omitting the first line in
1471 the <literal>CONTEXT</> traceback for the error.
1477 Fix PL/Python's handling of functions used as triggers on multiple
1478 tables (Andres Freund)
1484 Ensure that non-ASCII prompt strings are translated to the correct
1485 code page on Windows (Alexander Law, Noah Misch)
1489 This bug affected <application>psql</> and some other client programs.
1495 Fix possible crash in <application>psql</>'s <command>\?</> command
1496 when not connected to a database (Meng Qingzhong)
1502 Fix possible error if a relation file is removed while
1503 <application>pg_basebackup</> is running (Heikki Linnakangas)
1509 Tolerate timeline switches while <literal>pg_basebackup -X fetch</>
1510 is backing up a standby server (Heikki Linnakangas)
1516 Make <application>pg_dump</> exclude data of unlogged tables when
1517 running on a hot-standby server (Magnus Hagander)
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.
1529 Fix <application>pg_upgrade</> to deal with invalid indexes safely
1536 Fix <application>pg_upgrade</>'s -O/-o options (Marti Raudsepp)
1542 Fix one-byte buffer overrun in <application>libpq</>'s
1543 <function>PQprintTuples</> (Xi Wang)
1547 This ancient function is not used anywhere by
1548 <productname>PostgreSQL</> itself, but it might still be used by some
1555 Make <application>ecpglib</> use translated messages properly
1562 Properly install <application>ecpg_compat</> and
1563 <application>pgtypes</> libraries on MSVC (Jiang Guiqing)
1569 Include our version of <function>isinf()</> in
1570 <application>libecpg</> if it's not provided by the system
1577 Rearrange configure's tests for supplied functions so it is not
1578 fooled by bogus exports from libedit/libreadline (Christoph Berg)
1584 Ensure Windows build number increases over time (Magnus Hagander)
1590 Make <application>pgxs</> build executables with the right
1591 <literal>.exe</> suffix when cross-compiling for Windows
1592 (Zoltan Boszormenyi)
1598 Add new timezone abbreviation <literal>FET</> (Tom Lane)
1602 This is now used in some eastern-European time zones.
1611 <sect1 id="release-9-2-2">
1612 <title>Release 9.2.2</title>
1615 <title>Release Date</title>
1616 <simpara>2012-12-06</simpara>
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">.
1626 <title>Migration to Version 9.2.2</title>
1629 A dump/restore is not required for those running 9.2.X.
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.
1639 Also, if you are upgrading from version 9.2.0,
1640 see the release notes for 9.2.1.
1646 <title>Changes</title>
1652 Fix multiple bugs associated with <command>CREATE/DROP INDEX
1653 CONCURRENTLY</> (Andres Freund, Tom Lane, Simon Riggs, Pavan Deolasee)
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.
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.
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
1683 Also fix <command>DROP INDEX CONCURRENTLY</> to not disable
1684 insertions into the target index until all queries using it are done.
1688 Also fix misbehavior if <command>DROP INDEX CONCURRENTLY</> is
1689 canceled: the previous coding could leave an un-droppable index behind.
1695 Correct predicate locking for <command>DROP INDEX CONCURRENTLY</>
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</>.
1708 Fix buffer locking during WAL replay (Tom Lane)
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.
1721 Fix an error in WAL generation logic for GIN indexes (Tom Lane)
1725 This could result in index corruption, if a torn-page failure occurred.
1731 Fix an error in WAL replay logic for SP-GiST indexes (Tom Lane)
1735 This could result in index corruption after a crash, or on a standby
1742 Fix incorrect detection of end-of-base-backup location during WAL
1743 recovery (Heikki Linnakangas)
1747 This mistake allowed hot standby mode to start up before the database
1748 reaches a consistent state.
1754 Properly remove startup process's virtual XID lock when promoting a
1755 hot standby server to normal running (Simon Riggs)
1759 This oversight could prevent subsequent execution of certain
1760 operations such as <command>CREATE INDEX CONCURRENTLY</>.
1766 Avoid bogus <quote>out-of-sequence timeline ID</> errors in standby
1767 mode (Heikki Linnakangas)
1773 Prevent the postmaster from launching new child processes after it's
1774 received a shutdown signal (Tom Lane)
1778 This mistake could result in shutdown taking longer than it should, or
1779 even never completing at all without additional user action.
1785 Fix the syslogger process to not fail when
1786 <varname>log_rotation_age</> exceeds 2^31 milliseconds (about 25 days)
1793 Fix <function>WaitLatch()</> to return promptly when the requested
1794 timeout expires (Jeff Janes, Tom Lane)
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.
1807 Avoid corruption of internal hash tables when out of memory
1814 Prevent file descriptors for dropped tables from being held open past
1815 transaction end (Tom Lane)
1819 This should reduce problems with long-since-dropped tables continuing
1820 to occupy disk space.
1826 Prevent database-wide crash and restart when a new child process is
1827 unable to create a pipe for its latch (Tom Lane)
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.
1839 Avoid planner crash with joins to unflattened subqueries (Tom Lane)
1845 Fix planning of non-strict equivalence clauses above outer joins
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.
1861 Fix <command>SELECT DISTINCT</> with index-optimized
1862 <function>MIN</>/<function>MAX</> on an inheritance tree (Tom Lane)
1866 The planner would fail with <quote>failed to re-find MinMaxAggInfo
1867 record</> given this combination of factors.
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)
1881 Include join clauses when considering whether partial indexes can be
1882 used for a query (Tom Lane)
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.
1895 Limit growth of planning time when there are many indexable join
1896 clauses for the same index (Tom Lane)
1902 Improve planner's ability to prove exclusion constraints from
1903 equivalence classes (Tom Lane)
1909 Fix partial-row matching in hashed subplans to handle cross-type cases
1910 correctly (Tom Lane)
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.
1924 Fix btree mark/restore functions to handle array keys (Tom Lane)
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.
1937 Revert patch for taking fewer snapshots (Tom Lane)
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.
1954 Acquire buffer lock when re-fetching the old tuple for an
1955 <literal>AFTER ROW UPDATE/DELETE</> trigger (Andres Freund)
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
1969 Fix <command>ALTER COLUMN TYPE</> to handle inherited check
1970 constraints properly (Pavan Deolasee)
1974 This worked correctly in pre-8.4 releases, and now works correctly
1981 Fix <command>ALTER EXTENSION SET SCHEMA</>'s failure to move some
1982 subsidiary objects into the new schema (Álvaro Herrera, Dimitri
1989 Handle <command>CREATE TABLE AS EXECUTE</> correctly in extended query
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)
2001 This mistake would cause errors if a cached statement of one of these
2002 types was re-executed.
2008 Fix <command>REASSIGN OWNED</> to handle grants on tablespaces
2009 (Álvaro Herrera)
2015 Ignore incorrect <structname>pg_attribute</> entries for system
2016 columns for views (Tom Lane)
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.
2029 Fix rule printing to dump <literal>INSERT INTO <replaceable>table</>
2030 DEFAULT VALUES</literal> correctly (Tom Lane)
2036 Guard against stack overflow when there are too many
2037 <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> clauses
2038 in a query (Tom Lane)
2044 Prevent platform-dependent failures when dividing the minimum possible
2045 integer value by -1 (Xi Wang, Tom Lane)
2051 Fix possible access past end of string in date parsing
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)
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.
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)
2079 This case already worked as intended when called by a superuser,
2080 but not so much when called by ordinary users.
2087 <structname>pg_stat_replication</>.<structfield>sync_state</> at a
2088 page boundary (Kyotaro Horiguchi)
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)
2100 Formerly, this would result in something quite unhelpful, such as
2101 <quote>Non-recoverable failure in name resolution</>.
2107 Fix memory leaks when sending composite column values to the client
2114 Save some cycles by not searching for subtransaction locks at commit
2119 In a transaction holding many exclusive locks, this useless activity
2120 could be quite costly.
2126 Make <application>pg_ctl</> more robust about reading the
2127 <filename>postmaster.pid</> file (Heikki Linnakangas)
2131 This fixes race conditions and possible file descriptor leakage.
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)
2145 Make <application>pg_dump</> dump <literal>SEQUENCE SET</> items in
2146 the data not pre-data section of the archive (Tom Lane)
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.
2158 Fix <application>pg_dump</>'s handling of <command>DROP DATABASE</>
2159 commands in <option>--clean</> mode (Guillaume Lelarge)
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
2175 Fix <application>pg_dump</> for views with circular dependencies and
2176 no relation options (Tom Lane)
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.
2189 Fix bugs in the <filename>restore.sql</> script emitted by
2190 <application>pg_dump</> in <literal>tar</> output format (Tom Lane)
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.
2202 Fix <application>pg_restore</> to accept POSIX-conformant
2203 <literal>tar</> files (Brian Weaver, Tom Lane)
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.
2218 Fix <literal>tar</> files emitted by <application>pg_basebackup</> to
2219 be POSIX conformant (Brian Weaver, Tom Lane)
2225 Fix <application>pg_resetxlog</> to locate <filename>postmaster.pid</>
2226 correctly when given a relative path to the data directory (Tom Lane)
2230 This mistake could lead to <application>pg_resetxlog</> not noticing
2231 that there is an active postmaster using the data directory.
2237 Fix <application>libpq</>'s <function>lo_import()</> and
2238 <function>lo_export()</> functions to report file I/O errors properly
2245 Fix <application>ecpg</>'s processing of nested structure pointer
2246 variables (Muhammad Usama)
2252 Fix <application>ecpg</>'s <function>ecpg_get_data</> function to
2253 handle arrays properly (Michael Meskes)
2259 Prevent <application>pg_upgrade</> from trying to process TOAST tables
2260 for system catalogs (Bruce Momjian)
2264 This fixes an error seen when the <literal>information_schema</> has
2265 been dropped and recreated. Other failures were also possible.
2271 Improve <application>pg_upgrade</> performance by setting
2272 <varname>synchronous_commit</> to <literal>off</> in the new cluster
2279 Make <filename>contrib/pageinspect</>'s btree page inspection
2280 functions take buffer locks while examining pages (Tom Lane)
2286 Work around unportable behavior of <literal>malloc(0)</> and
2287 <literal>realloc(NULL, 0)</> (Tom Lane)
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
2301 Ensure that <literal>make install</> for an extension creates the
2302 <filename>extension</> installation directory (Cédric Villemain)
2306 Previously, this step was missed if <varname>MODULEDIR</> was set in
2307 the extension's Makefile.
2313 Fix <application>pgxs</> support for building loadable modules on AIX
2318 Building modules outside the original source tree didn't work on AIX.
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.
2335 <sect1 id="release-9-2-1">
2336 <title>Release 9.2.1</title>
2339 <title>Release Date</title>
2340 <simpara>2012-09-24</simpara>
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">.
2350 <title>Migration to Version 9.2.1</title>
2353 A dump/restore is not required for those running 9.2.X.
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.
2365 <title>Changes</title>
2371 Fix persistence marking of shared buffers during WAL replay
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
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.
2396 Also, it is recommended to perform a <command>VACUUM</> of all tables
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.
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)
2416 Fix planner failure for queries involving <literal>GROUP BY</>
2417 expressions along with window functions and aggregates (Tom Lane)
2423 Fix planner's assignment of executor parameters (Tom Lane)
2427 This error could result in wrong answers from queries that scan the
2428 same <literal>WITH</> subquery multiple times.
2434 Improve planner's handling of join conditions in index scans (Tom Lane)
2440 Improve selectivity estimation for text search queries involving
2441 prefixes, i.e. <replaceable>word</><literal>:*</> patterns (Tom Lane)
2450 Fix delayed recognition of permissions changes (Tom Lane)
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.
2462 Fix <command>ANALYZE</> to not fail when a column is a domain over an
2463 array type (Tom Lane)
2469 Prevent PL/Perl from crashing if a recursive PL/Perl function is
2470 redefined while being executed (Tom Lane)
2476 Work around possible misoptimization in PL/Perl (Tom Lane)
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.
2489 Remove unnecessary dependency on <application>pg_config</> from
2490 <application>pg_upgrade</> (Peter Eisentraut)
2496 Update time zone data files to <application>tzdata</> release 2012f
2497 for DST law changes in Fiji
2506 <sect1 id="release-9-2">
2507 <title>Release 9.2</title>
2510 <title>Release Date</title>
2511 <simpara>2012-09-10</simpara>
2515 <title>Overview</title>
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:
2525 <!-- This list duplicates items below, but without authors or details-->
2529 Allow queries to retrieve data only from indexes, avoiding heap
2530 access (<firstterm>index-only scans</>)
2536 Allow the planner to generate custom plans for specific parameter
2537 values even when using prepared statements
2543 Improve the planner's ability to use nested loops with inner
2550 Allow streaming replication slaves to forward data to other slaves
2551 (<link linkend="cascading-replication"><firstterm>cascading
2552 replication</></link>)
2559 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
2560 to make base backups from standby servers
2567 linkend="app-pgreceivexlog"><application>pg_receivexlog</></link>
2568 tool to archive WAL file changes as they are written
2574 Add the <link linkend="SPGiST">SP-GiST</link> (Space-Partitioned
2575 GiST) index access method
2581 Add support for <link linkend="rangetypes">range data types</link>
2587 Add a <link linkend="datatype-json"><type>JSON</type></link>
2595 linkend="SQL-CREATEVIEW"><literal>security_barrier</></link>
2602 Allow <application>libpq</> connection strings to have the format of a
2603 <link linkend="libpq-connstring"><acronym>URI</acronym></link>
2609 Add a <link linkend="libpq-single-row-mode">single-row processing
2610 mode</link> to <application>libpq</> for better handling of large
2618 The above items are explained in more detail in the sections below.
2625 <title>Migration to Version 9.2</title>
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.
2634 Version 9.2 contains a number of changes that may affect compatibility
2635 with previous releases. Observe the following incompatibilities:
2639 <title>System Catalogs</title>
2645 Remove the <structfield>spclocation</> field from <link
2646 linkend="catalog-pg-tablespace"><structname>pg_tablespace</></link>
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.
2663 Move <type>tsvector</> most-common-element statistics to new
2664 <link linkend="view-pg-stats"><structname>pg_stats</></link> columns
2665 (Alexander Korotkov)
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.
2681 <title>Functions</title>
2687 Remove <link linkend="hstore">hstore</link>'s <literal>=></>
2688 operator (Robert Haas)
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>=></> is created because
2695 the <acronym>SQL</acronym> standard reserves that token for
2703 linkend="functions-xml-processing"><function>xpath()</></link>
2704 escapes special characters in string values (Florian Pflug)
2708 Without this it is possible for the result not to be valid
2709 <acronym>XML</acronym>.
2716 linkend="functions-admin-dbobject"><function>pg_relation_size()</></link>
2717 and friends return NULL if the object does not exist (Phil Sorber)
2721 This prevents queries that call these functions from returning
2722 errors immediately after a concurrent <command>DROP</>.
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>
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</>.
2748 Properly parse time strings with trailing <literal>yesterday</>,
2749 <literal>today</>, and <literal>tomorrow</> (Dean Rasheed)
2753 Previously, <literal>SELECT '04:00:00 yesterday'::timestamp</literal>
2754 returned yesterday's date at midnight.
2761 linkend="functions-formatting"><function>to_date()</></link> and
2762 <function>to_timestamp()</> to wrap incomplete dates toward 2020
2767 Previously, supplied years and year masks of less than four digits
2768 wrapped inconsistently.
2777 <title>Object Modification</title>
2783 Prevent <link linkend="SQL-ALTERDOMAIN"><command>ALTER
2784 DOMAIN</command></link> from working on non-domain types (Peter
2789 Owner and schema changes were previously possible on non-domain
2796 No longer forcibly lowercase procedural language names in <link
2797 linkend="SQL-CREATEFUNCTION"><command>CREATE FUNCTION</></link>
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
2812 Change system-generated names of foreign key enforcement triggers
2817 This change ensures that the triggers fire in the correct order in
2818 some corner cases involving self-referential foreign key constraints.
2827 <title>Command-Line Tools</title>
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)
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).
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)
2858 Users must now include double-quotes in the command arguments if
2865 <link linkend="APP-CREATEUSER"><application>createuser</></link>
2866 no longer prompts for option settings by default (Peter Eisentraut)
2870 Use <option>--interactive</> to obtain the old behavior.
2876 Disable prompting for the user name in <link
2877 linkend="APP-DROPUSER"><application>dropuser</></link> unless
2878 <option>--interactive</> is specified (Peter Eisentraut)
2887 <title>Server Settings</title>
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)
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.
2911 Remove the <varname>silent_mode</> parameter (Heikki Linnakangas)
2915 Similar behavior can be obtained with <command>pg_ctl start
2916 -l postmaster.log</>.
2922 Remove the <varname>wal_sender_delay</> parameter,
2923 as it is no longer needed (Tom Lane)
2929 Remove the <varname>custom_variable_classes</> parameter (Tom Lane)
2933 The checking provided by this setting was dubious. Now any
2934 setting can be prefixed by any class name.
2942 <title>Monitoring</title>
2949 linkend="monitoring-stats-views-table"><structname>pg_stat_activity</></link><structfield>.procpid</>
2950 to <structfield>pid</>, to match other system tables (Magnus Hagander)
2956 Create a separate <structfield>pg_stat_activity</> column to
2957 report process state (Scott Mead, Magnus Hagander)
2961 The previous <structfield>query</> and <structfield>query_start</>
2962 values now remain available for an idle session, allowing enhanced
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)
2977 Change all <acronym>SQL</acronym>-level statistics timing values
2978 to be <type>float8</> columns measured in milliseconds (Tom Lane)
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</>,
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</>
2994 <filename>contrib/pg_stat_statements</>'
2995 <structfield>total_time</> column is now also measured in
3007 <title>Changes</title>
3010 Below you will find a detailed account of the changes between
3011 <productname>PostgreSQL</productname> 9.2 and the previous major
3016 <title>Server</title>
3019 <title>Performance</title>
3024 Allow queries to retrieve data only from indexes, avoiding heap
3025 access (Robert Haas, Ibrar Ahmed, Heikki Linnakangas, Tom Lane)
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.
3039 Add the <link linkend="SPGiST">SP-GiST</link> (Space-Partitioned
3040 GiST) index access method (Teodor Sigaev, Oleg Bartunov, Tom
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.
3054 Allow group commit to work effectively under heavy load (Peter
3055 Geoghegan, Simon Riggs, Heikki Linnakangas)
3059 Previously, batching of commits became ineffective as the write
3060 workload increased, because of internal lock contention.
3066 Allow uncontended locks to be managed using a new
3067 fast-path lock mechanism (Robert Haas)
3073 Reduce overhead of creating virtual transaction ID locks (Robert
3080 Reduce the overhead of serializable isolation level locks (Dan
3087 Improve PowerPC and Itanium spinlock performance (Manabu Ori,
3088 Robert Haas, Tom Lane)
3094 Reduce overhead for shared invalidation cache messages (Robert
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)
3109 Improve <command>COPY</command> performance by adding tuples to
3110 the heap in batches (Heikki Linnakangas)
3116 Improve GiST index performance for geometric data types by producing
3117 better trees with less memory allocation overhead (Alexander Korotkov)
3123 Improve GiST index build times (Alexander Korotkov, Heikki
3130 Allow hint bits to be set sooner for temporary and unlogged tables
3137 Allow sorting to be performed by inlined,
3138 non-<acronym>SQL</acronym>-callable comparison functions (Peter
3139 Geoghegan, Robert Haas, Tom Lane)
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)
3153 Improve performance of buffer pool scans that occur when tables or
3154 databases are dropped (Jeff Janes, Simon Riggs)
3160 Improve performance of checkpointer's fsync-request queue
3161 when many tables are being dropped or truncated (Tom Lane)
3167 Pass the safe number of file descriptors to child processes on Windows
3168 (Heikki Linnakangas)
3172 This allows Windows sessions to use more open file descriptors than
3182 <title>Process Management</title>
3188 Create a dedicated background process to perform checkpoints (Simon
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.
3201 Improve asynchronous commit behavior by waking the walwriter sooner
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>
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)
3222 This series of changes reduces the frequency of process wake-ups when
3223 there is nothing to do, dramatically reducing power consumption on
3233 <title>Optimizer</title>
3239 Allow the planner to generate custom plans for specific parameter
3240 values even when using prepared statements
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).
3259 Improve the planner's ability to use nested loops with inner
3260 index scans (Tom Lane)
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.
3274 Improve the planning <acronym>API</acronym> for foreign data wrappers
3275 (Etsuro Fujita, Shigeru Hanada, Tom Lane)
3279 Wrappers can now provide multiple access <quote>paths</> for their
3280 tables, allowing more flexibility in join planning.
3286 Recognize self-contradictory restriction clauses for non-table
3287 relations (Tom Lane)
3291 This check is only performed when <link
3292 linkend="guc-constraint-exclusion"><varname>constraint_exclusion</></link>
3293 is <literal>on</literal>.
3299 Allow <literal>indexed_col op ANY(ARRAY[...])</> conditions to be
3300 used in plain index scans and index-only scans (Tom Lane)
3304 Formerly such conditions could only be used in bitmap index scans.
3310 Support <function>MIN</>/<function>MAX</> index optimizations on
3311 <type>boolean</type> columns (Marti Raudsepp)
3317 Account for set-returning functions in <command>SELECT</> target
3318 lists when setting row count estimates (Tom Lane)
3324 Fix planner to handle indexes with duplicated columns more reliably
3331 Collect and use element-frequency statistics for arrays (Alexander
3336 This change improves selectivity estimation for the array
3337 <literal><@</literal>, <literal>&&</literal>, and
3338 <literal>@></literal> operators (array containment and overlaps).
3344 Allow statistics to be collected for foreign tables
3351 Improve cost estimates for use of partial indexes (Tom Lane)
3357 Improve the planner's ability to use statistics for columns
3358 referenced in subqueries (Tom Lane)
3364 Improve statistical estimates for subqueries using
3365 <literal>DISTINCT</> (Tom Lane)
3374 <title>Authentication</title>
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)
3386 This makes it easier to use <literal>reject</> lines with group roles.
3392 Adjust <filename>pg_hba.conf</filename> processing to handle token
3393 parsing more consistently (Brendan Jurd, Álvaro Herrera)
3399 Disallow empty <filename>pg_hba.conf</filename> files (Tom Lane)
3403 This was done to more quickly detect misconfiguration.
3409 Make superuser privilege imply replication privilege (Noah Misch)
3413 This avoids the need to explicitly assign such privileges.
3422 <title>Monitoring</title>
3428 Attempt to log the current query string during a backend crash
3435 Make logging of autovacuum I/O activity more verbose (Greg
3440 This logging is triggered by <link
3441 linkend="guc-log-autovacuum-min-duration"><varname>log_autovacuum_min_duration</></link>.
3447 Make <acronym>WAL</acronym> replay report failures sooner
3452 There were some cases where failures were only reported once the
3453 server went into master mode.
3460 linkend="functions-admin-backup"><function>pg_xlog_location_diff()</></link>
3461 to simplify WAL location comparisons (Euler Taveira de Oliveira)
3465 This is useful for computing replication lag.
3471 Support configurable event log application names on Windows
3472 (MauMau, Magnus Hagander)
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.
3486 Change <quote>unexpected EOF</> messages to <literal>DEBUG1</> level,
3487 except when there is an open transaction (Magnus Hagander)
3491 This change reduces log chatter caused by applications that close
3492 database connections ungracefully.
3501 <title>Statistical Views</title>
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)
3515 Add a deadlock counter to the <structname>pg_stat_database</>
3516 system view (Magnus Hagander)
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)
3530 Report checkpoint timing information in <link
3531 linkend="pg-stat-bgwriter-view"><structname>pg_stat_bgwriter</></link>
3532 (Greg Smith, Peter Geoghegan)
3541 <title>Server Settings</title>
3547 Silently ignore nonexistent schemas specified in <link
3548 linkend="guc-search-path"><varname>search_path</></link> (Tom Lane)
3552 This makes it more convenient to use generic path settings, which
3553 might include some schemas that don't exist in all databases.
3559 Allow superusers to set <link
3560 linkend="guc-deadlock-timeout"><varname>deadlock_timeout</></link>
3561 per-session, not just per-cluster (Noah Misch)
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.
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)
3583 Allow a superuser to <command>SET</command> an extension's
3584 superuser-only custom variable before loading the associated
3585 extension (Tom Lane)
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.
3597 Add <link linkend="app-postmaster">postmaster</link> <option>-C</>
3598 option to query configuration parameters (Bruce Momjian)
3602 This allows <application>pg_ctl</> to better handle cases where
3603 <envar>PGDATA</> or <option>-D</> points to a configuration-only
3610 Replace an empty locale name with the implied value in
3611 <command>CREATE DATABASE</>
3616 This prevents cases where
3617 <structname>pg_database</>.<structfield>datcollate</> or
3618 <structfield>datctype</> could be interpreted differently after a
3626 <title><filename>postgresql.conf</filename></title>
3632 Allow multiple errors in <filename>postgresql.conf</filename>
3633 to be reported, rather than just the first one (Alexey Klyukin,
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)
3646 Previously, such not-valid-within-session values would cause all
3647 setting changes to be ignored by that session.
3653 Add an <literal>include_if_exists</> facility for configuration
3658 This works the same as <literal>include</>, except that an error
3659 is not thrown if the file is missing.
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)
3673 This avoids expensive time zone probes during server start.
3680 linkend="view-pg-settings"><structname>pg_settings</></link> to
3681 report <filename>postgresql.conf</filename> line numbers on Windows
3695 <title>Replication and Recovery</title>
3701 Allow streaming replication slaves to forward data to other slaves
3702 (<link linkend="cascading-replication"><firstterm>cascading
3703 replication</></link>) (Fujii Masao)
3707 Previously, only the master server could supply streaming
3708 replication log files to standby servers.
3715 linkend="guc-synchronous-commit"><varname>synchronous_commit</></link>
3716 mode <literal>remote_write</> (Fujii Masao, Simon Riggs)
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.
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)
3738 linkend="app-pgbasebackup"><application>pg_basebackup</></link>
3739 to make base backups from standby servers (Jun Ishizuka, Fujii Masao)
3743 This feature lets the work of making new base backups be off-loaded
3744 from the primary server.
3750 Allow streaming of WAL files while <application>pg_basebackup</>
3751 is performing a backup (Magnus Hagander)
3755 This allows passing of WAL files to the standby before they are
3756 discarded on the primary.
3765 <title>Queries</title>
3771 Cancel the running query if the client gets disconnected
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.
3783 Retain column names at run time for row expressions
3784 (Andrew Dunstan, Tom Lane)
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.
3796 Improve column labels used for sub-<command>SELECT</> results
3801 Previously, the generic label <literal>?column?</> was used.
3807 Improve heuristics for determining the types of unknown values
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.
3821 Warn about creating casts to or from domain types (Robert Haas)
3825 Such casts have no effect.
3831 When a row fails a <literal>CHECK</> or <literal>NOT NULL</>
3832 constraint, show the row's contents as error detail (Jan
3837 This should make it easier to identify which row is problematic
3838 when an insert or update is processing many rows.
3847 <title>Object Manipulation</title>
3853 Provide more reliable operation during concurrent
3854 <acronym>DDL</acronym> (Robert Haas, Noah Misch)
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.
3867 Add <literal>CONCURRENTLY</> option to <link
3868 linkend="SQL-DROPINDEX"><command>DROP INDEX</command></link>
3873 This allows index removal without blocking other sessions.
3879 Allow foreign data wrappers to have per-column options (Shigeru Hanada)
3885 Improve pretty-printing of view definitions (Andrew Dunstan)
3892 <title>Constraints</title>
3898 Allow <link linkend="ddl-constraints"><literal>CHECK</></link>
3899 constraints to be declared <literal>NOT VALID</> (Álvaro
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.
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.
3921 Allow <literal>CHECK</> constraints to be declared <literal>NO
3922 INHERIT</> (Nikhil Sontakke, Alex Hunsaker, Álvaro Herrera)
3926 This makes them enforceable only on the parent table, not on
3933 Add the ability to <link linkend="SQL-ALTERTABLE">rename</link>
3934 constraints (Peter Eisentraut)
3942 <title><command>ALTER</></title>
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)
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.
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)
3975 Add <literal>IF EXISTS</> options to some <command>ALTER</command>
3976 commands (Pavel Stehule)
3980 For example, <command>ALTER FOREIGN TABLE IF EXISTS foo RENAME
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)
3996 Add <link linkend="SQL-ALTERDOMAIN"><command>ALTER
3997 DOMAIN</command></link> ... <literal>RENAME</> (Peter Eisentraut)
4001 You could already rename domains using <command>ALTER
4008 Throw an error for <command>ALTER DOMAIN</command> ... <literal>DROP
4009 CONSTRAINT</> on a nonexistent constraint (Peter Eisentraut)
4013 An <literal>IF EXISTS</> option has been added to provide the
4023 <title><link linkend="SQL-CREATETABLE"><command>CREATE TABLE</></link></title>
4029 Allow <command>CREATE TABLE (LIKE ...)</command> from foreign
4030 tables, views, and composite types (Peter Eisentraut)
4034 For example, this allows a table to be created whose schema matches a
4041 Fix <command>CREATE TABLE (LIKE ...)</command> to avoid index name
4042 conflicts when copying index comments (Tom Lane)
4048 Fix <command>CREATE TABLE</command> ... <literal>AS EXECUTE</>
4049 to handle <literal>WITH NO DATA</> and column name specifications
4059 <title>Object Permissions</title>
4066 linkend="SQL-CREATEVIEW"><literal>security_barrier</></link>
4067 option for views (KaiGai Kohei, Robert Haas)
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
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)
4090 Add support for privileges on data types (Peter Eisentraut)
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.
4103 Check for <command>INSERT</command> privileges in <command>SELECT
4104 INTO</command> / <command>CREATE TABLE AS</command> (KaiGai Kohei)
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
4123 <title>Utility Operations</title>
4129 Allow <link linkend="SQL-VACUUM"><command>VACUUM</></link> to more
4130 easily skip pages that cannot be locked (Simon Riggs, Robert Haas)
4134 This change should greatly reduce the incidence of <command>VACUUM</>
4135 getting <quote>stuck</> waiting for other sessions.
4141 Make <link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link>
4142 <literal>(BUFFERS)</> count blocks dirtied and written (Robert Haas)
4148 Make <command>EXPLAIN ANALYZE</command> report the number of rows
4149 rejected by filter steps (Marko Tiikkaja)
4155 Allow <command>EXPLAIN ANALYZE</command> to avoid timing overhead when
4156 time values are not wanted (Tomas Vondra)
4160 This is accomplished by setting the new <literal>TIMING</> option to
4170 <title>Data Types</title>
4176 Add support for <link linkend="rangetypes">range data types</link>
4177 (Jeff Davis, Tom Lane, Alexander Korotkov)
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
4189 Add a <link linkend="datatype-json"><type>JSON</type></link>
4190 data type (Robert Haas)
4194 This type stores <acronym>JSON</acronym> (JavaScript Object Notation)
4195 data with proper validation.
4202 linkend="functions-json"><function>array_to_json()</></link>
4203 and <function>row_to_json()</> (Andrew Dunstan)
4209 Add a <link linkend="datatype-serial"><type>SMALLSERIAL</></link>
4210 data type (Mike Pultz)
4214 This is like <type>SERIAL</>, except it stores the sequence in
4215 a two-byte integer column (<type>int2</>).
4221 Allow <link linkend="SQL-CREATEDOMAIN">domains</link> to be
4222 declared <literal>NOT VALID</> (Álvaro Herrera)
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.
4235 Support more locale-specific formatting options for the <link
4236 linkend="datatype-money"><type>money</></link> data type (Tom Lane)
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.
4249 Add bitwise <quote>and</>, <quote>or</>, and <quote>not</>
4250 operators for the <type>macaddr</> data type (Brendan Jurd)
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)
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.
4271 Improve <acronym>XML</acronym> error handling to be more robust
4281 <title>Functions</title>
4287 Allow non-superusers to use <link
4288 linkend="functions-admin-signal"><function>pg_cancel_backend()</></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)
4296 Previously only superusers were allowed to use these functions.
4302 Allow importing and exporting of transaction snapshots (Joachim
4307 This allows multiple transactions to share identical views of the
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.
4320 linkend="functions-info-catalog-table"><literal>COLLATION
4321 FOR</></link> on expressions (Peter Eisentraut)
4325 This returns a string representing the collation of the expression.
4332 linkend="functions-info-schema-table"><function>pg_opfamily_is_visible()</></link>
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)
4348 linkend="functions-info-session-table"><function>pg_trigger_depth()</></link>
4349 function (Kevin Grittner)
4353 This reports the current trigger call depth.
4360 linkend="functions-aggregate-table"><function>string_agg()</></link>
4361 to process <type>bytea</> values (Pavel Stehule)
4367 Fix regular expressions in which a back-reference occurs within
4368 a larger quantified subexpression (Tom Lane)
4372 For example, <literal>^(\w+)( \1)+$</>. Previous releases did not
4373 check that the back-reference actually matched the first occurrence.
4382 <title><link linkend="information-schema">Information Schema</link></title>
4388 Add information schema views
4389 <structname>role_udt_grants</>, <structname>udt_privileges</>,
4390 and <structname>user_defined_types</> (Peter Eisentraut)
4396 Add composite-type attributes to the
4397 information schema <structname>element_types</> view
4404 Implement <structfield>interval_type</> columns in the information
4405 schema (Peter Eisentraut)
4409 Formerly these columns read as nulls.
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)
4424 Implement the <structfield>with_hierarchy</> column in the
4425 information schema <structname>table_privileges</> view (Peter
4432 Add display of sequence <literal>USAGE</> privileges to information
4433 schema (Peter Eisentraut)
4439 Make the information schema show default privileges (Peter
4444 Previously, non-empty default permissions were not represented in the
4454 <title>Server-Side Languages</title>
4457 <title><link linkend="plpgsql">PL/pgSQL</link> Server-Side Language</title>
4463 Allow the PL/pgSQL <command>OPEN</> cursor command to supply
4464 parameters by name (Yeb Havinga)
4470 Add a <command>GET STACKED DIAGNOSTICS</command> PL/pgSQL command
4471 to retrieve exception info (Pavel Stehule)
4477 Speed up PL/pgSQL array assignment by caching type information
4484 Improve performance and memory consumption for long chains of
4485 <literal>ELSIF</> clauses (Tom Lane)
4491 Output the function signature, not just the name, in PL/pgSQL
4492 error messages (Pavel Stehule)
4501 <title><link linkend="plpython">PL/Python</link> Server-Side Language</title>
4507 Add PL/Python <acronym>SPI</acronym> cursor support (Jan
4512 This allows PL/Python to read partial result sets.
4518 Add result metadata functions to PL/Python (Peter Eisentraut)
4522 Specifically, this adds result object functions
4523 <literal>.colnames</literal>, <literal>.coltypes</literal>, and
4524 <literal>.coltypmods</literal>.
4530 Remove support for Python 2.2 (Peter Eisentraut)
4539 <title><link linkend="xfunc-sql">SQL</link> Server-Side Language</title>
4544 Allow <acronym>SQL</acronym>-language functions to reference
4545 parameters by name (Matthew Draper)
4549 To use this, simply name the function arguments and then reference
4550 the argument names in the <acronym>SQL</acronym> function body.
4560 <title>Client Applications</title>
4566 Add <link linkend="APP-INITDB"><application>initdb</></link>
4567 options <option>--auth-local</> and <option>--auth-host</>
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.
4580 Add <option>--replication</>/<option>--no-replication</> flags to
4581 <link linkend="APP-CREATEUSER"><application>createuser</></link>
4582 to control replication permission (Fujii Masao)
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
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)
4606 <title><link linkend="APP-PSQL"><application>psql</></link></title>
4612 Add a display mode to auto-expand output based on the
4613 display width (Peter Eisentraut)
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.
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)
4630 This is done with a new command <command>\ir</>.
4636 Add support for non-<acronym>ASCII</acronym> characters in
4637 <application>psql</> variable names (Tom Lane)
4643 Add support for major-version-specific <filename>.psqlrc</> files
4648 <application>psql</> already supported minor-version-specific
4649 <filename>.psqlrc</> files.
4655 Provide environment variable overrides for <application>psql</>
4656 history and startup file locations (Andrew Dunstan)
4660 <envar>PSQL_HISTORY</envar> and <envar>PSQLRC</envar> now
4661 determine these file names if set.
4667 Add a <command>\setenv</> command to modify
4668 the environment variables passed to child processes (Andrew Dunstan)
4674 Name <application>psql</>'s temporary editor files with a
4675 <filename>.sql</> extension (Peter Eisentraut)
4679 This allows extension-sensitive editors to select the right mode.
4685 Allow <application>psql</> to use zero-byte field and record
4686 separators (Peter Eisentraut)
4690 Various shell tools use zero-byte (NUL) separators,
4691 e.g. <application>find</>.
4697 Make the <command>\timing</> option report times for
4698 failed queries (Magnus Hagander)
4702 Previously times were reported only for successful queries.
4708 Unify and tighten <application>psql</>'s treatment of <command>\copy</>
4709 and SQL <command>COPY</> (Noah Misch)
4713 This fix makes failure behavior more predictable and honors
4714 <command>\set ON_ERROR_ROLLBACK</>.
4723 <title>Informational Commands</title>
4728 Make <command>\d</> on a sequence show the
4729 table/column name owning it (Magnus Hagander)
4735 Show statistics target for columns in <command>\d+</> (Magnus
4742 Show role password expiration dates in <command>\du</>
4743 (Fabrízio de Royes Mello)
4749 Display comments for casts, conversions, domains, and languages
4754 These are included in the output of <command>\dC+</>,
4755 <command>\dc+</>, <command>\dD+</>, and <command>\dL</> respectively.
4761 Display comments for <acronym>SQL</acronym>/<acronym>MED</acronym>
4762 objects (Josh Kupershmidt)
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.
4774 Change <command>\dd</> to display comments only for object types
4775 without their own backslash command (Josh Kupershmidt)
4784 <title>Tab Completion</title>
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)
4799 Add tab completion support for
4800 <command>EXECUTE</command> (Andreas Karlsson)
4806 Allow tab completion of role references in
4807 <command>GRANT</command>/<command>REVOKE</command> (Peter
4814 Allow tab completion of file names to supply quotes, when necessary
4821 Change tab completion support for
4822 <command>TABLE</command> to also include views (Magnus Hagander)
4831 <title><link linkend="APP-PGDUMP"><application>pg_dump</></link></title>
4837 Add an <option>--exclude-table-data</> option to
4838 <application>pg_dump</> (Andrew Dunstan)
4842 This allows dumping of a table's definition but not its data,
4843 on a per-table basis.
4849 Add a <option>--section</> option to <application>pg_dump</>
4850 and <application>pg_restore</> (Andrew Dunstan)
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.
4863 linkend="APP-PG-DUMPALL"><application>pg_dumpall</></link> dump all
4864 roles first, then all configuration settings on roles (Phil Sorber)
4868 This allows a role's configuration settings to mention other
4869 roles without generating an error.
4875 Allow <application>pg_dumpall</> to avoid errors if the
4876 <literal>postgres</> database is missing in the new cluster
4883 Dump foreign server user mappings in user name order (Peter
4888 This helps produce deterministic dump files.
4894 Dump operators in a predictable order (Peter Eisentraut)
4900 Tighten rules for when extension configuration tables are dumped
4901 by <application>pg_dump</> (Tom Lane)
4907 Make <application>pg_dump</> emit more useful dependency
4908 information (Tom Lane)
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.
4921 Improve <application>pg_dump</>'s performance when dumping many
4922 database objects (Tom Lane)
4933 <title><link linkend="libpq"><application>libpq</></link></title>
4939 Allow <application>libpq</> connection strings to have the format of a
4940 <link linkend="libpq-connstring"><acronym>URI</acronym></link>
4945 The syntax begins with <literal>postgres://</>. This can allow
4946 applications to avoid implementing their own parser for URIs
4947 representing database connections.
4953 Add a <link linkend="libpq-connect-sslcompression">connection
4954 option</link> to disable <acronym>SSL</acronym> compression
4959 This can be used to remove the overhead of <acronym>SSL</acronym>
4960 compression on fast networks.
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)
4972 Previously, <application>libpq</> always collected the entire query
4973 result in memory before passing it back to the application.
4979 Add <literal>const</> qualifiers to the declarations of the functions
4980 <function>PQconnectdbParams</>, <function>PQconnectStartParams</>,
4981 and <function>PQpingParams</> (Lionel Elie Mamane)
4987 Allow the <filename>.pgpass</> file to include escaped characters
4988 in the password field (Robert Haas)
4994 Make library functions use <function>abort()</> instead of
4995 <function>exit()</> when it is necessary to terminate the process
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.
5010 <title>Source Code</title>
5016 Remove dead ports (Peter Eisentraut)
5020 The following platforms are no longer supported: dgux,
5021 nextstep, sunos4, svr4, ultrix4, univel, bsdi.
5027 Add support for building with <link linkend="install-windows">MS
5028 Visual Studio 2010</link> (Brar Piening)
5034 Enable compiling with the MinGW-w64 32-bit compiler (Lars Kanis)
5040 Install <filename>plpgsql.h</> into <filename>include/server</> during installation
5041 (Heikki Linnakangas)
5047 Improve the latch facility to include detection of postmaster death
5048 (Peter Geoghegan, Heikki Linnakangas, Tom Lane)
5052 This eliminates one of the main reasons that background processes
5053 formerly had to wake up to poll for events.
5059 Use C flexible array members, where supported (Peter Eisentraut)
5065 Improve the concurrent transaction regression tests
5066 (<application>isolationtester</>) (Noah Misch)
5072 Modify <application>thread_test</> to create its test files in
5073 the current directory, rather than <filename>/tmp</> (Bruce Momjian)
5079 Improve flex and bison warning and error reporting (Tom Lane)
5085 Add memory barrier support (Robert Haas)
5089 This is currently unused.
5095 Modify pgindent to use a typedef file (Bruce Momjian)
5101 Add a hook for processing messages due to be sent to the server
5108 Add object access hooks for <command>DROP</command> commands
5115 Centralize <command>DROP</command> handling for some object types
5122 Add a <application>pg_upgrade</> test suite (Peter Eisentraut)
5128 Sync regular expression code with <acronym>TCL</acronym> 8.5.11
5129 and improve internal processing (Tom Lane)
5135 Move <acronym>CRC</acronym> tables to libpgport, and provide them
5136 in a separate include file (Daniel Farina)
5142 Add options to <application>git_changelog</> for use in major
5143 release note creation (Bruce Momjian)
5149 Support Linux's <filename>/proc/self/oom_score_adj</> API (Tom Lane)
5158 <title>Additional Modules</title>
5164 Improve efficiency of <link linkend="dblink">dblink</link> by using
5165 libpq's new single-row processing mode (Kyotaro Horiguchi, Marko
5170 This improvement does not apply to
5171 <function>dblink_send_query()</>/<function>dblink_get_result()</>.
5177 Support <literal>force_not_null</> option in <link
5178 linkend="file-fdw">file_fdw</link> (Shigeru Hanada)
5184 Implement dry-run mode for <link
5185 linkend="pgarchivecleanup"><application>pg_archivecleanup</></link>
5186 (Gabriele Bartolini)
5190 This only outputs the names of files to be deleted.
5196 Add new <link linkend="pgbench">pgbench</link> switches
5197 <option>--unlogged-tables</>, <option>--tablespace</>, and
5198 <option>--index-tablespace</> (Robert Haas)
5205 linkend="pgtestfsync"><application>pg_test_fsync</></link> to test
5206 for a fixed amount of time, rather than a fixed number of cycles
5211 The <option>-o</>/cycles option was removed, and
5212 <option>-s</>/seconds added.
5219 linkend="pgtesttiming"><application>pg_test_timing</></link>
5220 utility to measure clock monotonicity and timing overhead (Ants
5227 Add a <link linkend="tcn">tcn</link> (triggered change notification)
5228 module to generate <command>NOTIFY</command> events on table changes
5236 <title><link linkend="pgupgrade"><application>pg_upgrade</></link></title>
5242 Adjust <application>pg_upgrade</> environment variables (Bruce
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>.
5256 Overhaul <application>pg_upgrade</> logging and failure reporting
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.
5271 Make <application>pg_upgrade</> create a script to incrementally
5272 generate more accurate optimizer statistics (Bruce Momjian)
5276 This reduces the time needed to generate minimal cluster statistics
5283 Allow <application>pg_upgrade</> to upgrade an old cluster that
5284 does not have a <literal>postgres</> database (Bruce Momjian)
5290 Allow <application>pg_upgrade</> to handle cases where some
5291 old or new databases are missing, as long as they are empty
5298 Allow <application>pg_upgrade</> to handle configuration-only
5299 directory installations (Bruce Momjian)
5305 In <application>pg_upgrade</>, add <option>-o</>/<option>-O</>
5306 options to pass parameters to the servers (Bruce Momjian)
5310 This is useful for configuration-only directory installs.
5316 Change <application>pg_upgrade</> to use port 50432 by default
5321 This helps avoid unintended client connections during the upgrade.
5327 Reduce cluster locking in <application>pg_upgrade</> (Bruce
5332 Specifically, only lock the old cluster if link mode is used,
5333 and do it right after the schema is restored.
5342 <title><link linkend="pgstatstatements"><application>pg_stat_statements</></link></title>
5348 Allow <application>pg_stat_statements</> to aggregate similar
5349 queries via SQL text normalization (Peter Geoghegan, Tom Lane)
5353 Users with applications that use non-parameterized SQL will now
5354 be able to monitor query performance without detailed log analysis.
5360 Add dirtied and written block counts and read/write times to
5361 <application>pg_stat_statements</> (Robert Haas, Ants Aasma)
5367 Prevent <application>pg_stat_statements</> from double-counting
5368 <command>PREPARE</command> and <command>EXECUTE</command> commands
5378 <title><link linkend="sepgsql">sepgsql</link></title>
5383 Support <literal>SECURITY LABEL</> on global objects (KaiGai
5388 Specifically, add security labels to databases,
5389 tablespaces, and roles.
5395 Allow sepgsql to honor database labels (KaiGai Kohei)
5401 Perform sepgsql permission checks during the creation of various
5402 objects (KaiGai Kohei)
5408 Add <function>sepgsql_setcon()</> and related functions to control
5409 the sepgsql security domain (KaiGai Kohei)
5415 Add a user space access cache to sepgsql to improve performance
5426 <title>Documentation</title>
5432 Add a rule to optionally build HTML documentation using the
5433 stylesheet from the website (Magnus Hagander)
5437 Use <command>gmake STYLE=website draft</>.
5443 Improve <command>EXPLAIN</command> documentation (Tom Lane)
5449 Document that user/database names are preserved with double-quoting
5450 by command-line tools like <application>vacuumdb</> (Bruce
5457 Document the actual string returned by the client for MD5
5458 authentication (Cyan Ogilvie)
5464 Deprecate use of <literal>GLOBAL</> and <literal>LOCAL</> in
5465 <command>CREATE TEMP TABLE</> (Noah Misch)
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.