Linux SRV-16 6.18.44-paas #1 SMP PREEMPT_DYNAMIC Thu Aug 13 10:08:12 UTC 2026 x86_64
/
proc
/
212
/
root
/
opt
/
postgresql-11.1-201812121535
/
doc
/
html
/
//proc/212/root/opt/postgresql-11.1-201812121535/doc/html/release-9-2.html
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>E.109. Release 9.2</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="release-9-2-1.html" title="E.108. Release 9.2.1" /><link rel="next" href="release-9-1-24.html" title="E.110. Release 9.1.24" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">E.109. Release 9.2</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="release-9-2-1.html" title="E.108. Release 9.2.1">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="release.html" title="Appendix E. Release Notes">Up</a></td><th width="60%" align="center">Appendix E. Release Notes</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 11.1 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="release-9-1-24.html" title="E.110. Release 9.1.24">Next</a></td></tr></table><hr></hr></div><div class="sect1" id="RELEASE-9-2"><div class="titlepage"><div><div><h2 class="title" style="clear: both">E.109. Release 9.2</h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="sect2"><a href="release-9-2.html#id-1.11.6.113.3">E.109.1. Overview</a></span></dt><dt><span class="sect2"><a href="release-9-2.html#id-1.11.6.113.4">E.109.2. Migration to Version 9.2</a></span></dt><dt><span class="sect2"><a href="release-9-2.html#id-1.11.6.113.5">E.109.3. Changes</a></span></dt></dl></div><p><strong>Release date: </strong>2012-09-10</p><div class="sect2" id="id-1.11.6.113.3"><div class="titlepage"><div><div><h3 class="title">E.109.1. Overview</h3></div></div></div><p> This release has been largely focused on performance improvements, though new SQL features are not lacking. Work also continues in the area of replication support. Major enhancements include: </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Allow queries to retrieve data only from indexes, avoiding heap access (<em class="firstterm">index-only scans</em>) </p></li><li class="listitem"><p> Allow the planner to generate custom plans for specific parameter values even when using prepared statements </p></li><li class="listitem"><p> Improve the planner's ability to use nested loops with inner index scans </p></li><li class="listitem"><p> Allow streaming replication slaves to forward data to other slaves (<a class="link" href="warm-standby.html#CASCADING-REPLICATION" title="26.2.7. Cascading Replication"><em class="firstterm">cascading replication</em></a>) </p></li><li class="listitem"><p> Allow <a class="link" href="app-pgbasebackup.html" title="pg_basebackup"><span class="application">pg_basebackup</span></a> to make base backups from standby servers </p></li><li class="listitem"><p> Add a <a class="link" href="app-pgreceivewal.html" title="pg_receivewal"><span class="application">pg_receivexlog</span></a> tool to archive WAL file changes as they are written </p></li><li class="listitem"><p> Add the <a class="link" href="spgist.html" title="Chapter 65. SP-GiST Indexes">SP-GiST</a> (Space-Partitioned GiST) index access method </p></li><li class="listitem"><p> Add support for <a class="link" href="rangetypes.html" title="8.17. Range Types">range data types</a> </p></li><li class="listitem"><p> Add a <a class="link" href="datatype-json.html" title="8.14. JSON Types"><code class="type">JSON</code></a> data type </p></li><li class="listitem"><p> Add a <a class="link" href="sql-createview.html" title="CREATE VIEW"><code class="literal">security_barrier</code></a> option for views </p></li><li class="listitem"><p> Allow <span class="application">libpq</span> connection strings to have the format of a <a class="link" href="libpq-connect.html#LIBPQ-CONNSTRING" title="34.1.1. Connection Strings"><acronym class="acronym">URI</acronym></a> </p></li><li class="listitem"><p> Add a <a class="link" href="libpq-single-row-mode.html" title="34.5. Retrieving Query Results Row-By-Row">single-row processing mode</a> to <span class="application">libpq</span> for better handling of large result sets </p></li></ul></div><p> The above items are explained in more detail in the sections below. </p></div><div class="sect2" id="id-1.11.6.113.4"><div class="titlepage"><div><div><h3 class="title">E.109.2. Migration to Version 9.2</h3></div></div></div><p> A dump/restore using <span class="application">pg_dump</span>, or use of <span class="application">pg_upgrade</span>, is required for those wishing to migrate data from any previous release. </p><p> Version 9.2 contains a number of changes that may affect compatibility with previous releases. Observe the following incompatibilities: </p><div class="sect3" id="id-1.11.6.113.4.4"><div class="titlepage"><div><div><h4 class="title">E.109.2.1. System Catalogs</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Remove the <code class="structfield">spclocation</code> field from <a class="link" href="catalog-pg-tablespace.html" title="52.54. pg_tablespace"><code class="structname">pg_tablespace</code></a> (Magnus Hagander) </p><p> This field was duplicative of the symbolic links that actually define tablespace locations, and thus risked errors of omission when moving a tablespace. This change allows tablespace directories to be moved while the server is down, by manually adjusting the symbolic links. To replace this field, we have added <a class="link" href="functions-info.html#FUNCTIONS-INFO-CATALOG-TABLE" title="Table 9.63. System Catalog Information Functions"><code class="function">pg_tablespace_location()</code></a> to allow querying of the symbolic links. </p></li><li class="listitem"><p> Move <code class="type">tsvector</code> most-common-element statistics to new <a class="link" href="view-pg-stats.html" title="52.87. pg_stats"><code class="structname">pg_stats</code></a> columns (Alexander Korotkov) </p><p> Consult <code class="structfield">most_common_elems</code> and <code class="structfield">most_common_elem_freqs</code> for the data formerly available in <code class="structfield">most_common_vals</code> and <code class="structfield">most_common_freqs</code> for a <code class="type">tsvector</code> column. </p></li></ul></div></div><div class="sect3" id="id-1.11.6.113.4.5"><div class="titlepage"><div><div><h4 class="title">E.109.2.2. Functions</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Remove <a class="link" href="hstore.html" title="F.16. hstore">hstore</a>'s <code class="literal">=></code> operator (Robert Haas) </p><p> Users should now use <code class="function">hstore(text, text)</code>. Since <span class="productname">PostgreSQL</span> 9.0, a warning message has been emitted when an operator named <code class="literal">=></code> is created because the <acronym class="acronym">SQL</acronym> standard reserves that token for another use. </p></li><li class="listitem"><p> Ensure that <a class="link" href="functions-xml.html#FUNCTIONS-XML-PROCESSING" title="9.14.3. Processing XML"><code class="function">xpath()</code></a> escapes special characters in string values (Florian Pflug) </p><p> Without this it is possible for the result not to be valid <acronym class="acronym">XML</acronym>. </p></li><li class="listitem"><p> Make <a class="link" href="functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT" title="9.26.7. Database Object Management Functions"><code class="function">pg_relation_size()</code></a> and friends return NULL if the object does not exist (Phil Sorber) </p><p> This prevents queries that call these functions from returning errors immediately after a concurrent <code class="command">DROP</code>. </p></li><li class="listitem"><p> Make <a class="link" href="functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT" title="9.9.1. EXTRACT, date_part"><code class="function">EXTRACT(EPOCH FROM <em class="replaceable"><code>timestamp without time zone</code></em>)</code></a> measure the epoch from local midnight, not <acronym class="acronym">UTC</acronym> midnight (Tom Lane) </p><p> This change reverts an ill-considered change made in release 7.3. Measuring from <acronym class="acronym">UTC</acronym> midnight was inconsistent because it made the result dependent on the <a class="link" href="runtime-config-client.html#GUC-TIMEZONE"><code class="varname">timezone</code></a> setting, which computations for <code class="type">timestamp without time zone</code> should not be. The previous behavior remains available by casting the input value to <code class="type">timestamp with time zone</code>. </p></li><li class="listitem"><p> Properly parse time strings with trailing <code class="literal">yesterday</code>, <code class="literal">today</code>, and <code class="literal">tomorrow</code> (Dean Rasheed) </p><p> Previously, <code class="literal">SELECT '04:00:00 yesterday'::timestamp</code> returned yesterday's date at midnight. </p></li><li class="listitem"><p> Fix <a class="link" href="functions-formatting.html" title="9.8. Data Type Formatting Functions"><code class="function">to_date()</code></a> and <code class="function">to_timestamp()</code> to wrap incomplete dates toward 2020 (Bruce Momjian) </p><p> Previously, supplied years and year masks of less than four digits wrapped inconsistently. </p></li></ul></div></div><div class="sect3" id="id-1.11.6.113.4.6"><div class="titlepage"><div><div><h4 class="title">E.109.2.3. Object Modification</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Prevent <a class="link" href="sql-alterdomain.html" title="ALTER DOMAIN"><code class="command">ALTER DOMAIN</code></a> from working on non-domain types (Peter Eisentraut) </p><p> Owner and schema changes were previously possible on non-domain types. </p></li><li class="listitem"><p> No longer forcibly lowercase procedural language names in <a class="link" href="sql-createfunction.html" title="CREATE FUNCTION"><code class="command">CREATE FUNCTION</code></a> (Robert Haas) </p><p> While unquoted language identifiers are still lowercased, strings and quoted identifiers are no longer forcibly down-cased. Thus for example <code class="literal">CREATE FUNCTION ... LANGUAGE 'C'</code> will no longer work; it must be spelled <code class="literal">'c'</code>, or better omit the quotes. </p></li><li class="listitem"><p> Change system-generated names of foreign key enforcement triggers (Tom Lane) </p><p> This change ensures that the triggers fire in the correct order in some corner cases involving self-referential foreign key constraints. </p></li></ul></div></div><div class="sect3" id="id-1.11.6.113.4.7"><div class="titlepage"><div><div><h4 class="title">E.109.2.4. Command-Line Tools</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Provide consistent backquote, variable expansion, and quoted substring behavior in <a class="link" href="app-psql.html" title="psql"><span class="application">psql</span></a> meta-command arguments (Tom Lane) </p><p> Previously, such references were treated oddly when not separated by whitespace from adjacent text. For example <code class="literal">'FOO'BAR</code> was output as <code class="literal">FOO BAR</code> (unexpected insertion of a space) and <code class="literal">FOO'BAR'BAZ</code> was output unchanged (not removing the quotes as most would expect). </p></li><li class="listitem"><p> No longer treat <a class="link" href="app-clusterdb.html" title="clusterdb"><span class="application">clusterdb</span></a> table names as double-quoted; no longer treat <a class="link" href="app-reindexdb.html" title="reindexdb"><span class="application">reindexdb</span></a> table and index names as double-quoted (Bruce Momjian) </p><p> Users must now include double-quotes in the command arguments if quoting is wanted. </p></li><li class="listitem"><p> <a class="link" href="app-createuser.html" title="createuser"><span class="application">createuser</span></a> no longer prompts for option settings by default (Peter Eisentraut) </p><p> Use <code class="option">--interactive</code> to obtain the old behavior. </p></li><li class="listitem"><p> Disable prompting for the user name in <a class="link" href="app-dropuser.html" title="dropuser"><span class="application">dropuser</span></a> unless <code class="option">--interactive</code> is specified (Peter Eisentraut) </p></li></ul></div></div><div class="sect3" id="id-1.11.6.113.4.8"><div class="titlepage"><div><div><h4 class="title">E.109.2.5. Server Settings</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Add server parameters for specifying the <a class="link" href="runtime-config-connection.html#GUC-SSL-CA-FILE">locations of server-side <acronym class="acronym">SSL</acronym> files</a> (Peter Eisentraut) </p><p> This allows changing the names and locations of the files that were previously hard-coded as <code class="filename">server.crt</code>, <code class="filename">server.key</code>, <code class="filename">root.crt</code>, and <code class="filename">root.crl</code> in the data directory. <span class="emphasis"><em>The server will no longer examine <code class="filename">root.crt</code> or <code class="filename">root.crl</code> by default</em></span>; to load these files, the associated parameters must be set to non-default values. </p></li><li class="listitem"><p> Remove the <code class="varname">silent_mode</code> parameter (Heikki Linnakangas) </p><p> Similar behavior can be obtained with <code class="command">pg_ctl start -l postmaster.log</code>. </p></li><li class="listitem"><p> Remove the <code class="varname">wal_sender_delay</code> parameter, as it is no longer needed (Tom Lane) </p></li><li class="listitem"><p> Remove the <code class="varname">custom_variable_classes</code> parameter (Tom Lane) </p><p> The checking provided by this setting was dubious. Now any setting can be prefixed by any class name. </p></li></ul></div></div><div class="sect3" id="id-1.11.6.113.4.9"><div class="titlepage"><div><div><h4 class="title">E.109.2.6. Monitoring</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Rename <a class="link" href="monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE" title="Table 28.2. Collected Statistics Views"><code class="structname">pg_stat_activity</code></a><code class="structfield">.procpid</code> to <code class="structfield">pid</code>, to match other system tables (Magnus Hagander) </p></li><li class="listitem"><p> Create a separate <code class="structfield">pg_stat_activity</code> column to report process state (Scott Mead, Magnus Hagander) </p><p> The previous <code class="structfield">query</code> and <code class="structfield">query_start</code> values now remain available for an idle session, allowing enhanced analysis. </p></li><li class="listitem"><p> Rename <code class="structname">pg_stat_activity</code>.<code class="structfield">current_query</code> to <code class="structfield">query</code> because it is not cleared when the query completes (Magnus Hagander) </p></li><li class="listitem"><p> Change all <acronym class="acronym">SQL</acronym>-level statistics timing values to be <code class="type">float8</code> columns measured in milliseconds (Tom Lane) </p><p> This change eliminates the designed-in assumption that the values are accurate to microseconds and no more (since the <code class="type">float8</code> values can be fractional). The columns affected are <code class="structname">pg_stat_user_functions</code>.<code class="structfield">total_time</code>, <code class="structname">pg_stat_user_functions</code>.<code class="structfield">self_time</code>, <code class="structname">pg_stat_xact_user_functions</code>.<code class="structfield">total_time</code>, and <code class="structname">pg_stat_xact_user_functions</code>.<code class="structfield">self_time</code>. The statistics functions underlying these columns now also return <code class="type">float8</code> milliseconds, rather than <code class="type">bigint</code> microseconds. <code class="filename">contrib/pg_stat_statements</code>' <code class="structfield">total_time</code> column is now also measured in milliseconds. </p></li></ul></div></div></div><div class="sect2" id="id-1.11.6.113.5"><div class="titlepage"><div><div><h3 class="title">E.109.3. Changes</h3></div></div></div><p> Below you will find a detailed account of the changes between <span class="productname">PostgreSQL</span> 9.2 and the previous major release. </p><div class="sect3" id="id-1.11.6.113.5.3"><div class="titlepage"><div><div><h4 class="title">E.109.3.1. Server</h4></div></div></div><div class="sect4" id="id-1.11.6.113.5.3.2"><div class="titlepage"><div><div><h5 class="title">E.109.3.1.1. Performance</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Allow queries to retrieve data only from indexes, avoiding heap access (Robert Haas, Ibrar Ahmed, Heikki Linnakangas, Tom Lane) </p><p> This feature is often called <em class="firstterm">index-only scans</em>. Heap access can be skipped for heap pages containing only tuples that are visible to all sessions, as reported by the visibility map; so the benefit applies mainly to mostly-static data. The visibility map was made crash-safe as a necessary part of implementing this feature. </p></li><li class="listitem"><p> Add the <a class="link" href="spgist.html" title="Chapter 65. SP-GiST Indexes">SP-GiST</a> (Space-Partitioned GiST) index access method (Teodor Sigaev, Oleg Bartunov, Tom Lane) </p><p> SP-GiST is comparable to GiST in flexibility, but supports unbalanced partitioned search structures rather than balanced trees. For suitable problems, SP-GiST can be faster than GiST in both index build time and search time. </p></li><li class="listitem"><p> Allow group commit to work effectively under heavy load (Peter Geoghegan, Simon Riggs, Heikki Linnakangas) </p><p> Previously, batching of commits became ineffective as the write workload increased, because of internal lock contention. </p></li><li class="listitem"><p> Allow uncontended locks to be managed using a new fast-path lock mechanism (Robert Haas) </p></li><li class="listitem"><p> Reduce overhead of creating virtual transaction ID locks (Robert Haas) </p></li><li class="listitem"><p> Reduce the overhead of serializable isolation level locks (Dan Ports) </p></li><li class="listitem"><p> Improve PowerPC and Itanium spinlock performance (Manabu Ori, Robert Haas, Tom Lane) </p></li><li class="listitem"><p> Reduce overhead for shared invalidation cache messages (Robert Haas) </p></li><li class="listitem"><p> Move the frequently accessed members of the <code class="structname">PGPROC</code> shared memory array to a separate array (Pavan Deolasee, Heikki Linnakangas, Robert Haas) </p></li><li class="listitem"><p> Improve <code class="command">COPY</code> performance by adding tuples to the heap in batches (Heikki Linnakangas) </p></li><li class="listitem"><p> Improve GiST index performance for geometric data types by producing better trees with less memory allocation overhead (Alexander Korotkov) </p></li><li class="listitem"><p> Improve GiST index build times (Alexander Korotkov, Heikki Linnakangas) </p></li><li class="listitem"><p> Allow hint bits to be set sooner for temporary and unlogged tables (Robert Haas) </p></li><li class="listitem"><p> Allow sorting to be performed by inlined, non-<acronym class="acronym">SQL</acronym>-callable comparison functions (Peter Geoghegan, Robert Haas, Tom Lane) </p></li><li class="listitem"><p> Make the number of CLOG buffers scale based on <a class="link" href="runtime-config-resource.html#GUC-SHARED-BUFFERS"><code class="varname">shared_buffers</code></a> (Robert Haas, Simon Riggs, Tom Lane) </p></li><li class="listitem"><p> Improve performance of buffer pool scans that occur when tables or databases are dropped (Jeff Janes, Simon Riggs) </p></li><li class="listitem"><p> Improve performance of checkpointer's fsync-request queue when many tables are being dropped or truncated (Tom Lane) </p></li><li class="listitem"><p> Pass the safe number of file descriptors to child processes on Windows (Heikki Linnakangas) </p><p> This allows Windows sessions to use more open file descriptors than before. </p></li></ul></div></div><div class="sect4" id="id-1.11.6.113.5.3.3"><div class="titlepage"><div><div><h5 class="title">E.109.3.1.2. Process Management</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Create a dedicated background process to perform checkpoints (Simon Riggs) </p><p> Formerly the background writer did both dirty-page writing and checkpointing. Separating this into two processes allows each goal to be accomplished more predictably. </p></li><li class="listitem"><p> Improve asynchronous commit behavior by waking the walwriter sooner (Simon Riggs) </p><p> Previously, only <a class="link" href="runtime-config-wal.html#GUC-WAL-WRITER-DELAY"><code class="varname">wal_writer_delay</code></a> triggered <acronym class="acronym">WAL</acronym> flushing to disk; now filling a <acronym class="acronym">WAL</acronym> buffer also triggers <acronym class="acronym">WAL</acronym> writes. </p></li><li class="listitem"><p> Allow the bgwriter, walwriter, checkpointer, statistics collector, log collector, and archiver background processes to sleep more efficiently during periods of inactivity (Peter Geoghegan, Tom Lane) </p><p> This series of changes reduces the frequency of process wake-ups when there is nothing to do, dramatically reducing power consumption on idle servers. </p></li></ul></div></div><div class="sect4" id="id-1.11.6.113.5.3.4"><div class="titlepage"><div><div><h5 class="title">E.109.3.1.3. Optimizer</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Allow the planner to generate custom plans for specific parameter values even when using prepared statements (Tom Lane) </p><p> In the past, a prepared statement always had a single <span class="quote">“<span class="quote">generic</span>”</span> plan that was used for all parameter values, which was frequently much inferior to the plans used for non-prepared statements containing explicit constant values. Now, the planner attempts to generate custom plans for specific parameter values. A generic plan will only be used after custom plans have repeatedly proven to provide no benefit. This change should eliminate the performance penalties formerly seen from use of prepared statements (including non-dynamic statements in PL/pgSQL). </p></li><li class="listitem"><p> Improve the planner's ability to use nested loops with inner index scans (Tom Lane) </p><p> The new <span class="quote">“<span class="quote">parameterized path</span>”</span> mechanism allows inner index scans to use values from relations that are more than one join level up from the scan. This can greatly improve performance in situations where semantic restrictions (such as outer joins) limit the allowed join orderings. </p></li><li class="listitem"><p> Improve the planning <acronym class="acronym">API</acronym> for foreign data wrappers (Etsuro Fujita, Shigeru Hanada, Tom Lane) </p><p> Wrappers can now provide multiple access <span class="quote">“<span class="quote">paths</span>”</span> for their tables, allowing more flexibility in join planning. </p></li><li class="listitem"><p> Recognize self-contradictory restriction clauses for non-table relations (Tom Lane) </p><p> This check is only performed when <a class="link" href="runtime-config-query.html#GUC-CONSTRAINT-EXCLUSION"><code class="varname">constraint_exclusion</code></a> is <code class="literal">on</code>. </p></li><li class="listitem"><p> Allow <code class="literal">indexed_col op ANY(ARRAY[...])</code> conditions to be used in plain index scans and index-only scans (Tom Lane) </p><p> Formerly such conditions could only be used in bitmap index scans. </p></li><li class="listitem"><p> Support <code class="function">MIN</code>/<code class="function">MAX</code> index optimizations on <code class="type">boolean</code> columns (Marti Raudsepp) </p></li><li class="listitem"><p> Account for set-returning functions in <code class="command">SELECT</code> target lists when setting row count estimates (Tom Lane) </p></li><li class="listitem"><p> Fix planner to handle indexes with duplicated columns more reliably (Tom Lane) </p></li><li class="listitem"><p> Collect and use element-frequency statistics for arrays (Alexander Korotkov, Tom Lane) </p><p> This change improves selectivity estimation for the array <code class="literal"><@</code>, <code class="literal">&&</code>, and <code class="literal">@></code> operators (array containment and overlaps). </p></li><li class="listitem"><p> Allow statistics to be collected for foreign tables (Etsuro Fujita) </p></li><li class="listitem"><p> Improve cost estimates for use of partial indexes (Tom Lane) </p></li><li class="listitem"><p> Improve the planner's ability to use statistics for columns referenced in subqueries (Tom Lane) </p></li><li class="listitem"><p> Improve statistical estimates for subqueries using <code class="literal">DISTINCT</code> (Tom Lane) </p></li></ul></div></div><div class="sect4" id="id-1.11.6.113.5.3.5"><div class="titlepage"><div><div><h5 class="title">E.109.3.1.4. Authentication</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Do not treat role names and <code class="literal">samerole</code> specified in <a class="link" href="auth-pg-hba-conf.html" title="20.1. The pg_hba.conf File"><code class="filename">pg_hba.conf</code></a> as automatically including superusers (Andrew Dunstan) </p><p> This makes it easier to use <code class="literal">reject</code> lines with group roles. </p></li><li class="listitem"><p> Adjust <code class="filename">pg_hba.conf</code> processing to handle token parsing more consistently (Brendan Jurd, Álvaro Herrera) </p></li><li class="listitem"><p> Disallow empty <code class="filename">pg_hba.conf</code> files (Tom Lane) </p><p> This was done to more quickly detect misconfiguration. </p></li><li class="listitem"><p> Make superuser privilege imply replication privilege (Noah Misch) </p><p> This avoids the need to explicitly assign such privileges. </p></li></ul></div></div><div class="sect4" id="id-1.11.6.113.5.3.6"><div class="titlepage"><div><div><h5 class="title">E.109.3.1.5. Monitoring</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Attempt to log the current query string during a backend crash (Marti Raudsepp) </p></li><li class="listitem"><p> Make logging of autovacuum I/O activity more verbose (Greg Smith, Noah Misch) </p><p> This logging is triggered by <a class="link" href="runtime-config-autovacuum.html#GUC-LOG-AUTOVACUUM-MIN-DURATION"><code class="varname">log_autovacuum_min_duration</code></a>. </p></li><li class="listitem"><p> Make <acronym class="acronym">WAL</acronym> replay report failures sooner (Fujii Masao) </p><p> There were some cases where failures were only reported once the server went into master mode. </p></li><li class="listitem"><p> Add <a class="link" href="functions-admin.html#FUNCTIONS-ADMIN-BACKUP" title="9.26.3. Backup Control Functions"><code class="function">pg_xlog_location_diff()</code></a> to simplify WAL location comparisons (Euler Taveira de Oliveira) </p><p> This is useful for computing replication lag. </p></li><li class="listitem"><p> Support configurable event log application names on Windows (MauMau, Magnus Hagander) </p><p> This allows different instances to use the event log with different identifiers, by setting the <a class="link" href="runtime-config-logging.html#GUC-EVENT-SOURCE"><code class="varname">event_source</code></a> server parameter, which is similar to how <a class="link" href="runtime-config-logging.html#GUC-SYSLOG-IDENT"><code class="varname">syslog_ident</code></a> works. </p></li><li class="listitem"><p> Change <span class="quote">“<span class="quote">unexpected EOF</span>”</span> messages to <code class="literal">DEBUG1</code> level, except when there is an open transaction (Magnus Hagander) </p><p> This change reduces log chatter caused by applications that close database connections ungracefully. </p></li></ul></div></div><div class="sect4" id="id-1.11.6.113.5.3.7"><div class="titlepage"><div><div><h5 class="title">E.109.3.1.6. Statistical Views</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Track temporary file sizes and file counts in the <a class="link" href="monitoring-stats.html#PG-STAT-DATABASE-VIEW" title="Table 28.11. pg_stat_database View"><code class="structname">pg_stat_database</code></a> system view (Tomas Vondra) </p></li><li class="listitem"><p> Add a deadlock counter to the <code class="structname">pg_stat_database</code> system view (Magnus Hagander) </p></li><li class="listitem"><p> Add a server parameter <a class="link" href="runtime-config-statistics.html#GUC-TRACK-IO-TIMING"><code class="varname">track_io_timing</code></a> to track I/O timings (Ants Aasma, Robert Haas) </p></li><li class="listitem"><p> Report checkpoint timing information in <a class="link" href="monitoring-stats.html#PG-STAT-BGWRITER-VIEW" title="Table 28.10. pg_stat_bgwriter View"><code class="structname">pg_stat_bgwriter</code></a> (Greg Smith, Peter Geoghegan) </p></li></ul></div></div><div class="sect4" id="id-1.11.6.113.5.3.8"><div class="titlepage"><div><div><h5 class="title">E.109.3.1.7. Server Settings</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Silently ignore nonexistent schemas specified in <a class="link" href="runtime-config-client.html#GUC-SEARCH-PATH"><code class="varname">search_path</code></a> (Tom Lane) </p><p> This makes it more convenient to use generic path settings, which might include some schemas that don't exist in all databases. </p></li><li class="listitem"><p> Allow superusers to set <a class="link" href="runtime-config-locks.html#GUC-DEADLOCK-TIMEOUT"><code class="varname">deadlock_timeout</code></a> per-session, not just per-cluster (Noah Misch) </p><p> This allows <code class="varname">deadlock_timeout</code> to be reduced for transactions that are likely to be involved in a deadlock, thus detecting the failure more quickly. Alternatively, increasing the value can be used to reduce the chances of a session being chosen for cancellation due to a deadlock. </p></li><li class="listitem"><p> Add a server parameter <a class="link" href="runtime-config-resource.html#GUC-TEMP-FILE-LIMIT"><code class="varname">temp_file_limit</code></a> to constrain temporary file space usage per session (Mark Kirkwood) </p></li><li class="listitem"><p> Allow a superuser to <code class="command">SET</code> an extension's superuser-only custom variable before loading the associated extension (Tom Lane) </p><p> The system now remembers whether a <code class="command">SET</code> was performed by a superuser, so that proper privilege checking can be done when the extension is loaded. </p></li><li class="listitem"><p> Add <a class="link" href="app-postmaster.html" title="postmaster">postmaster</a> <code class="option">-C</code> option to query configuration parameters (Bruce Momjian) </p><p> This allows <span class="application">pg_ctl</span> to better handle cases where <code class="envar">PGDATA</code> or <code class="option">-D</code> points to a configuration-only directory. </p></li><li class="listitem"><p> Replace an empty locale name with the implied value in <code class="command">CREATE DATABASE</code> (Tom Lane) </p><p> This prevents cases where <code class="structname">pg_database</code>.<code class="structfield">datcollate</code> or <code class="structfield">datctype</code> could be interpreted differently after a server restart. </p></li></ul></div><div class="sect5" id="id-1.11.6.113.5.3.8.3"><div class="titlepage"><div><div><h6 class="title">E.109.3.1.7.1. <code class="filename">postgresql.conf</code></h6></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Allow multiple errors in <code class="filename">postgresql.conf</code> to be reported, rather than just the first one (Alexey Klyukin, Tom Lane) </p></li><li class="listitem"><p> Allow a reload of <code class="filename">postgresql.conf</code> to be processed by all sessions, even if there are some settings that are invalid for particular sessions (Alexey Klyukin) </p><p> Previously, such not-valid-within-session values would cause all setting changes to be ignored by that session. </p></li><li class="listitem"><p> Add an <code class="literal">include_if_exists</code> facility for configuration files (Greg Smith) </p><p> This works the same as <code class="literal">include</code>, except that an error is not thrown if the file is missing. </p></li><li class="listitem"><p> Identify the server time zone during <span class="application">initdb</span>, and set <code class="filename">postgresql.conf</code> entries <a class="link" href="runtime-config-client.html#GUC-TIMEZONE"><code class="varname">timezone</code></a> and <a class="link" href="runtime-config-logging.html#GUC-LOG-TIMEZONE"><code class="varname">log_timezone</code></a> accordingly (Tom Lane) </p><p> This avoids expensive time zone probes during server start. </p></li><li class="listitem"><p> Fix <a class="link" href="view-pg-settings.html" title="52.85. pg_settings"><code class="structname">pg_settings</code></a> to report <code class="filename">postgresql.conf</code> line numbers on Windows (Tom Lane) </p></li></ul></div></div></div></div><div class="sect3" id="id-1.11.6.113.5.4"><div class="titlepage"><div><div><h4 class="title">E.109.3.2. Replication and Recovery</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Allow streaming replication slaves to forward data to other slaves (<a class="link" href="warm-standby.html#CASCADING-REPLICATION" title="26.2.7. Cascading Replication"><em class="firstterm">cascading replication</em></a>) (Fujii Masao) </p><p> Previously, only the master server could supply streaming replication log files to standby servers. </p></li><li class="listitem"><p> Add new <a class="link" href="runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT"><code class="varname">synchronous_commit</code></a> mode <code class="literal">remote_write</code> (Fujii Masao, Simon Riggs) </p><p> This mode waits for the standby server to write transaction data to its own operating system, but does not wait for the data to be flushed to the standby's disk. </p></li><li class="listitem"><p> Add a <a class="link" href="app-pgreceivewal.html" title="pg_receivewal"><span class="application">pg_receivexlog</span></a> tool to archive WAL file changes as they are written, rather than waiting for completed WAL files (Magnus Hagander) </p></li><li class="listitem"><p> Allow <a class="link" href="app-pgbasebackup.html" title="pg_basebackup"><span class="application">pg_basebackup</span></a> to make base backups from standby servers (Jun Ishizuka, Fujii Masao) </p><p> This feature lets the work of making new base backups be off-loaded from the primary server. </p></li><li class="listitem"><p> Allow streaming of WAL files while <span class="application">pg_basebackup</span> is performing a backup (Magnus Hagander) </p><p> This allows passing of WAL files to the standby before they are discarded on the primary. </p></li></ul></div></div><div class="sect3" id="id-1.11.6.113.5.5"><div class="titlepage"><div><div><h4 class="title">E.109.3.3. Queries</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Cancel the running query if the client gets disconnected (Florian Pflug) </p><p> If the backend detects loss of client connection during a query, it will now cancel the query rather than attempting to finish it. </p></li><li class="listitem"><p> Retain column names at run time for row expressions (Andrew Dunstan, Tom Lane) </p><p> This change allows better results when a row value is converted to <code class="type">hstore</code> or <code class="type">json</code> type: the fields of the resulting value will now have the expected names. </p></li><li class="listitem"><p> Improve column labels used for sub-<code class="command">SELECT</code> results (Marti Raudsepp) </p><p> Previously, the generic label <code class="literal">?column?</code> was used. </p></li><li class="listitem"><p> Improve heuristics for determining the types of unknown values (Tom Lane) </p><p> The longstanding rule that an unknown constant might have the same type as the value on the other side of the operator using it is now applied when considering polymorphic operators, not only for simple operator matches. </p></li><li class="listitem"><p> Warn about creating casts to or from domain types (Robert Haas) </p><p> Such casts have no effect. </p></li><li class="listitem"><p> When a row fails a <code class="literal">CHECK</code> or <code class="literal">NOT NULL</code> constraint, show the row's contents as error detail (Jan Kundrát) </p><p> This should make it easier to identify which row is problematic when an insert or update is processing many rows. </p></li></ul></div></div><div class="sect3" id="id-1.11.6.113.5.6"><div class="titlepage"><div><div><h4 class="title">E.109.3.4. Object Manipulation</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Provide more reliable operation during concurrent <acronym class="acronym">DDL</acronym> (Robert Haas, Noah Misch) </p><p> This change adds locking that should eliminate <span class="quote">“<span class="quote">cache lookup failed</span>”</span> errors in many scenarios. Also, it is no longer possible to add relations to a schema that is being concurrently dropped, a scenario that formerly led to inconsistent system catalog contents. </p></li><li class="listitem"><p> Add <code class="literal">CONCURRENTLY</code> option to <a class="link" href="sql-dropindex.html" title="DROP INDEX"><code class="command">DROP INDEX</code></a> (Simon Riggs) </p><p> This allows index removal without blocking other sessions. </p></li><li class="listitem"><p> Allow foreign data wrappers to have per-column options (Shigeru Hanada) </p></li><li class="listitem"><p> Improve pretty-printing of view definitions (Andrew Dunstan) </p></li></ul></div><div class="sect4" id="id-1.11.6.113.5.6.3"><div class="titlepage"><div><div><h5 class="title">E.109.3.4.1. Constraints</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Allow <a class="link" href="ddl-constraints.html" title="5.3. Constraints"><code class="literal">CHECK</code></a> constraints to be declared <code class="literal">NOT VALID</code> (Álvaro Herrera) </p><p> Adding a <code class="literal">NOT VALID</code> constraint does not cause the table to be scanned to verify that existing rows meet the constraint. Subsequently, newly added or updated rows are checked. Such constraints are ignored by the planner when considering <code class="varname">constraint_exclusion</code>, since it is not certain that all rows meet the constraint. </p><p> The new <code class="command">ALTER TABLE VALIDATE</code> command allows <code class="literal">NOT VALID</code> constraints to be checked for existing rows, after which they are converted into ordinary constraints. </p></li><li class="listitem"><p> Allow <code class="literal">CHECK</code> constraints to be declared <code class="literal">NO INHERIT</code> (Nikhil Sontakke, Alex Hunsaker, Álvaro Herrera) </p><p> This makes them enforceable only on the parent table, not on child tables. </p></li><li class="listitem"><p> Add the ability to <a class="link" href="sql-altertable.html" title="ALTER TABLE">rename</a> constraints (Peter Eisentraut) </p></li></ul></div></div><div class="sect4" id="id-1.11.6.113.5.6.4"><div class="titlepage"><div><div><h5 class="title">E.109.3.4.2. <code class="command">ALTER</code></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Reduce need to rebuild tables and indexes for certain <a class="link" href="sql-altertable.html" title="ALTER TABLE"><code class="command">ALTER TABLE</code></a> ... <code class="literal">ALTER COLUMN TYPE</code> operations (Noah Misch) </p><p> Increasing the length limit for a <code class="type">varchar</code> or <code class="type">varbit</code> column, or removing the limit altogether, no longer requires a table rewrite. Similarly, increasing the allowable precision of a <code class="type">numeric</code> column, or changing a column from constrained <code class="type">numeric</code> to unconstrained <code class="type">numeric</code>, no longer requires a table rewrite. Table rewrites are also avoided in similar cases involving the <code class="type">interval</code>, <code class="type">timestamp</code>, and <code class="type">timestamptz</code> types. </p></li><li class="listitem"><p> Avoid having <a class="link" href="sql-altertable.html" title="ALTER TABLE"><code class="command">ALTER TABLE</code></a> revalidate foreign key constraints in some cases where it is not necessary (Noah Misch) </p></li><li class="listitem"><p> Add <code class="literal">IF EXISTS</code> options to some <code class="command">ALTER</code> commands (Pavel Stehule) </p><p> For example, <code class="command">ALTER FOREIGN TABLE IF EXISTS foo RENAME TO bar</code>. </p></li><li class="listitem"><p> Add <a class="link" href="sql-alterforeigndatawrapper.html" title="ALTER FOREIGN DATA WRAPPER"><code class="command">ALTER FOREIGN DATA WRAPPER</code></a> ... <code class="literal">RENAME</code> and <a class="link" href="sql-alterserver.html" title="ALTER SERVER"><code class="command">ALTER SERVER</code></a> ... <code class="literal">RENAME</code> (Peter Eisentraut) </p></li><li class="listitem"><p> Add <a class="link" href="sql-alterdomain.html" title="ALTER DOMAIN"><code class="command">ALTER DOMAIN</code></a> ... <code class="literal">RENAME</code> (Peter Eisentraut) </p><p> You could already rename domains using <code class="command">ALTER TYPE</code>. </p></li><li class="listitem"><p> Throw an error for <code class="command">ALTER DOMAIN</code> ... <code class="literal">DROP CONSTRAINT</code> on a nonexistent constraint (Peter Eisentraut) </p><p> An <code class="literal">IF EXISTS</code> option has been added to provide the previous behavior. </p></li></ul></div></div><div class="sect4" id="id-1.11.6.113.5.6.5"><div class="titlepage"><div><div><h5 class="title">E.109.3.4.3. <a class="link" href="sql-createtable.html" title="CREATE TABLE"><code class="command">CREATE TABLE</code></a></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Allow <code class="command">CREATE TABLE (LIKE ...)</code> from foreign tables, views, and composite types (Peter Eisentraut) </p><p> For example, this allows a table to be created whose schema matches a view. </p></li><li class="listitem"><p> Fix <code class="command">CREATE TABLE (LIKE ...)</code> to avoid index name conflicts when copying index comments (Tom Lane) </p></li><li class="listitem"><p> Fix <code class="command">CREATE TABLE</code> ... <code class="literal">AS EXECUTE</code> to handle <code class="literal">WITH NO DATA</code> and column name specifications (Tom Lane) </p></li></ul></div></div><div class="sect4" id="id-1.11.6.113.5.6.6"><div class="titlepage"><div><div><h5 class="title">E.109.3.4.4. Object Permissions</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Add a <a class="link" href="sql-createview.html" title="CREATE VIEW"><code class="literal">security_barrier</code></a> option for views (KaiGai Kohei, Robert Haas) </p><p> This option prevents optimizations that might allow view-protected data to be exposed to users, for example pushing a clause involving an insecure function into the <code class="literal">WHERE</code> clause of the view. Such views can be expected to perform more poorly than ordinary views. </p></li><li class="listitem"><p> Add a new <a class="link" href="sql-createfunction.html" title="CREATE FUNCTION"><code class="literal">LEAKPROOF</code></a> function attribute to mark functions that can safely be pushed down into <code class="literal">security_barrier</code> views (KaiGai Kohei) </p></li><li class="listitem"><p> Add support for privileges on data types (Peter Eisentraut) </p><p> This adds support for the <acronym class="acronym">SQL</acronym>-conforming <code class="literal">USAGE</code> privilege on types and domains. The intent is to be able to restrict which users can create dependencies on types, since such dependencies limit the owner's ability to alter the type. </p></li><li class="listitem"><p> Check for <code class="command">INSERT</code> privileges in <code class="command">SELECT INTO</code> / <code class="command">CREATE TABLE AS</code> (KaiGai Kohei) </p><p> Because the object is being created by <code class="command">SELECT INTO</code> or <code class="command">CREATE TABLE AS</code>, the creator would ordinarily have insert permissions; but there are corner cases where this is not true, such as when <code class="literal">ALTER DEFAULT PRIVILEGES</code> has removed such permissions. </p></li></ul></div></div></div><div class="sect3" id="id-1.11.6.113.5.7"><div class="titlepage"><div><div><h4 class="title">E.109.3.5. Utility Operations</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Allow <a class="link" href="sql-vacuum.html" title="VACUUM"><code class="command">VACUUM</code></a> to more easily skip pages that cannot be locked (Simon Riggs, Robert Haas) </p><p> This change should greatly reduce the incidence of <code class="command">VACUUM</code> getting <span class="quote">“<span class="quote">stuck</span>”</span> waiting for other sessions. </p></li><li class="listitem"><p> Make <a class="link" href="sql-explain.html" title="EXPLAIN"><code class="command">EXPLAIN</code></a> <code class="literal">(BUFFERS)</code> count blocks dirtied and written (Robert Haas) </p></li><li class="listitem"><p> Make <code class="command">EXPLAIN ANALYZE</code> report the number of rows rejected by filter steps (Marko Tiikkaja) </p></li><li class="listitem"><p> Allow <code class="command">EXPLAIN ANALYZE</code> to avoid timing overhead when time values are not wanted (Tomas Vondra) </p><p> This is accomplished by setting the new <code class="literal">TIMING</code> option to <code class="literal">FALSE</code>. </p></li></ul></div></div><div class="sect3" id="id-1.11.6.113.5.8"><div class="titlepage"><div><div><h4 class="title">E.109.3.6. Data Types</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Add support for <a class="link" href="rangetypes.html" title="8.17. Range Types">range data types</a> (Jeff Davis, Tom Lane, Alexander Korotkov) </p><p> A range data type stores a lower and upper bound belonging to its base data type. It supports operations like contains, overlaps, and intersection. </p></li><li class="listitem"><p> Add a <a class="link" href="datatype-json.html" title="8.14. JSON Types"><code class="type">JSON</code></a> data type (Robert Haas) </p><p> This type stores <acronym class="acronym">JSON</acronym> (JavaScript Object Notation) data with proper validation. </p></li><li class="listitem"><p> Add <a class="link" href="functions-json.html" title="9.15. JSON Functions and Operators"><code class="function">array_to_json()</code></a> and <code class="function">row_to_json()</code> (Andrew Dunstan) </p></li><li class="listitem"><p> Add a <a class="link" href="datatype-numeric.html#DATATYPE-SERIAL" title="8.1.4. Serial Types"><code class="type">SMALLSERIAL</code></a> data type (Mike Pultz) </p><p> This is like <code class="type">SERIAL</code>, except it stores the sequence in a two-byte integer column (<code class="type">int2</code>). </p></li><li class="listitem"><p> Allow <a class="link" href="sql-createdomain.html" title="CREATE DOMAIN">domains</a> to be declared <code class="literal">NOT VALID</code> (Álvaro Herrera) </p><p> This option can be set at domain creation time, or via <code class="command">ALTER DOMAIN</code> ... <code class="literal">ADD CONSTRAINT</code> ... <code class="literal">NOT VALID</code>. <code class="command">ALTER DOMAIN</code> ... <code class="literal">VALIDATE CONSTRAINT</code> fully validates the constraint. </p></li><li class="listitem"><p> Support more locale-specific formatting options for the <a class="link" href="datatype-money.html" title="8.2. Monetary Types"><code class="type">money</code></a> data type (Tom Lane) </p><p> Specifically, honor all the POSIX options for ordering of the value, sign, and currency symbol in monetary output. Also, make sure that the thousands separator is only inserted to the left of the decimal point, as required by POSIX. </p></li><li class="listitem"><p> Add bitwise <span class="quote">“<span class="quote">and</span>”</span>, <span class="quote">“<span class="quote">or</span>”</span>, and <span class="quote">“<span class="quote">not</span>”</span> operators for the <code class="type">macaddr</code> data type (Brendan Jurd) </p></li><li class="listitem"><p> Allow <a class="link" href="functions-xml.html#FUNCTIONS-XML-PROCESSING" title="9.14.3. Processing XML"><code class="function">xpath()</code></a> to return a single-element <acronym class="acronym">XML</acronym> array when supplied a scalar value (Florian Pflug) </p><p> Previously, it returned an empty array. This change will also cause <code class="function">xpath_exists()</code> to return true, not false, for such expressions. </p></li><li class="listitem"><p> Improve <acronym class="acronym">XML</acronym> error handling to be more robust (Florian Pflug) </p></li></ul></div></div><div class="sect3" id="id-1.11.6.113.5.9"><div class="titlepage"><div><div><h4 class="title">E.109.3.7. Functions</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Allow non-superusers to use <a class="link" href="functions-admin.html#FUNCTIONS-ADMIN-SIGNAL" title="9.26.2. Server Signaling Functions"><code class="function">pg_cancel_backend()</code></a> and <a class="link" href="functions-admin.html#FUNCTIONS-ADMIN-SIGNAL" title="9.26.2. Server Signaling Functions"><code class="function">pg_terminate_backend()</code></a> on other sessions belonging to the same user (Magnus Hagander, Josh Kupershmidt, Dan Farina) </p><p> Previously only superusers were allowed to use these functions. </p></li><li class="listitem"><p> Allow importing and exporting of transaction snapshots (Joachim Wieland, Tom Lane) </p><p> This allows multiple transactions to share identical views of the database state. Snapshots are exported via <a class="link" href="functions-admin.html#FUNCTIONS-SNAPSHOT-SYNCHRONIZATION" title="9.26.5. Snapshot Synchronization Functions"><code class="function">pg_export_snapshot()</code></a> and imported via <a class="link" href="sql-set-transaction.html" title="SET TRANSACTION"><code class="command">SET TRANSACTION SNAPSHOT</code></a>. Only snapshots from currently-running transactions can be imported. </p></li><li class="listitem"><p> Support <a class="link" href="functions-info.html#FUNCTIONS-INFO-CATALOG-TABLE" title="Table 9.63. System Catalog Information Functions"><code class="literal">COLLATION FOR</code></a> on expressions (Peter Eisentraut) </p><p> This returns a string representing the collation of the expression. </p></li><li class="listitem"><p> Add <a class="link" href="functions-info.html#FUNCTIONS-INFO-SCHEMA-TABLE" title="Table 9.62. Schema Visibility Inquiry Functions"><code class="function">pg_opfamily_is_visible()</code></a> (Josh Kupershmidt) </p></li><li class="listitem"><p> Add a <code class="type">numeric</code> variant of <a class="link" href="functions-admin.html#FUNCTIONS-ADMIN-DBSIZE" title="Table 9.84. Database Object Size Functions"><code class="function">pg_size_pretty()</code></a> for use with <code class="function">pg_xlog_location_diff()</code> (Fujii Masao) </p></li><li class="listitem"><p> Add a <a class="link" href="functions-info.html#FUNCTIONS-INFO-SESSION-TABLE" title="Table 9.60. Session Information Functions"><code class="function">pg_trigger_depth()</code></a> function (Kevin Grittner) </p><p> This reports the current trigger call depth. </p></li><li class="listitem"><p> Allow <a class="link" href="functions-aggregate.html#FUNCTIONS-AGGREGATE-TABLE" title="Table 9.52. General-Purpose Aggregate Functions"><code class="function">string_agg()</code></a> to process <code class="type">bytea</code> values (Pavel Stehule) </p></li><li class="listitem"><p> Fix regular expressions in which a back-reference occurs within a larger quantified subexpression (Tom Lane) </p><p> For example, <code class="literal">^(\w+)( \1)+$</code>. Previous releases did not check that the back-reference actually matched the first occurrence. </p></li></ul></div></div><div class="sect3" id="id-1.11.6.113.5.10"><div class="titlepage"><div><div><h4 class="title">E.109.3.8. <a class="link" href="information-schema.html" title="Chapter 37. The Information Schema">Information Schema</a></h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Add information schema views <code class="structname">role_udt_grants</code>, <code class="structname">udt_privileges</code>, and <code class="structname">user_defined_types</code> (Peter Eisentraut) </p></li><li class="listitem"><p> Add composite-type attributes to the information schema <code class="structname">element_types</code> view (Peter Eisentraut) </p></li><li class="listitem"><p> Implement <code class="structfield">interval_type</code> columns in the information schema (Peter Eisentraut) </p><p> Formerly these columns read as nulls. </p></li><li class="listitem"><p> Implement collation-related columns in the information schema <code class="structname">attributes</code>, <code class="structname">columns</code>, <code class="structname">domains</code>, and <code class="structname">element_types</code> views (Peter Eisentraut) </p></li><li class="listitem"><p> Implement the <code class="structfield">with_hierarchy</code> column in the information schema <code class="structname">table_privileges</code> view (Peter Eisentraut) </p></li><li class="listitem"><p> Add display of sequence <code class="literal">USAGE</code> privileges to information schema (Peter Eisentraut) </p></li><li class="listitem"><p> Make the information schema show default privileges (Peter Eisentraut) </p><p> Previously, non-empty default permissions were not represented in the views. </p></li></ul></div></div><div class="sect3" id="id-1.11.6.113.5.11"><div class="titlepage"><div><div><h4 class="title">E.109.3.9. Server-Side Languages</h4></div></div></div><div class="sect4" id="id-1.11.6.113.5.11.2"><div class="titlepage"><div><div><h5 class="title">E.109.3.9.1. <a class="link" href="plpgsql.html" title="Chapter 43. PL/pgSQL - SQL Procedural Language">PL/pgSQL</a> Server-Side Language</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Allow the PL/pgSQL <code class="command">OPEN</code> cursor command to supply parameters by name (Yeb Havinga) </p></li><li class="listitem"><p> Add a <code class="command">GET STACKED DIAGNOSTICS</code> PL/pgSQL command to retrieve exception info (Pavel Stehule) </p></li><li class="listitem"><p> Speed up PL/pgSQL array assignment by caching type information (Pavel Stehule) </p></li><li class="listitem"><p> Improve performance and memory consumption for long chains of <code class="literal">ELSIF</code> clauses (Tom Lane) </p></li><li class="listitem"><p> Output the function signature, not just the name, in PL/pgSQL error messages (Pavel Stehule) </p></li></ul></div></div><div class="sect4" id="id-1.11.6.113.5.11.3"><div class="titlepage"><div><div><h5 class="title">E.109.3.9.2. <a class="link" href="plpython.html" title="Chapter 46. PL/Python - Python Procedural Language">PL/Python</a> Server-Side Language</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Add PL/Python <acronym class="acronym">SPI</acronym> cursor support (Jan Urbanski) </p><p> This allows PL/Python to read partial result sets. </p></li><li class="listitem"><p> Add result metadata functions to PL/Python (Peter Eisentraut) </p><p> Specifically, this adds result object functions <code class="literal">.colnames</code>, <code class="literal">.coltypes</code>, and <code class="literal">.coltypmods</code>. </p></li><li class="listitem"><p> Remove support for Python 2.2 (Peter Eisentraut) </p></li></ul></div></div><div class="sect4" id="id-1.11.6.113.5.11.4"><div class="titlepage"><div><div><h5 class="title">E.109.3.9.3. <a class="link" href="xfunc-sql.html" title="38.5. Query Language (SQL) Functions">SQL</a> Server-Side Language</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Allow <acronym class="acronym">SQL</acronym>-language functions to reference parameters by name (Matthew Draper) </p><p> To use this, simply name the function arguments and then reference the argument names in the <acronym class="acronym">SQL</acronym> function body. </p></li></ul></div></div></div><div class="sect3" id="id-1.11.6.113.5.12"><div class="titlepage"><div><div><h4 class="title">E.109.3.10. Client Applications</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Add <a class="link" href="app-initdb.html" title="initdb"><span class="application">initdb</span></a> options <code class="option">--auth-local</code> and <code class="option">--auth-host</code> (Peter Eisentraut) </p><p> This allows separate control of <code class="literal">local</code> and <code class="literal">host</code> <code class="filename">pg_hba.conf</code> authentication settings. <code class="option">--auth</code> still controls both. </p></li><li class="listitem"><p> Add <code class="option">--replication</code>/<code class="option">--no-replication</code> flags to <a class="link" href="app-createuser.html" title="createuser"><span class="application">createuser</span></a> to control replication permission (Fujii Masao) </p></li><li class="listitem"><p> Add the <code class="option">--if-exists</code> option to <a class="link" href="app-dropdb.html" title="dropdb"><span class="application">dropdb</span></a> and <a class="link" href="app-dropuser.html" title="dropuser"><span class="application">dropuser</span></a> (Josh Kupershmidt) </p></li><li class="listitem"><p> Give command-line tools the ability to specify the name of the database to connect to, and fall back to <code class="literal">template1</code> if a <code class="literal">postgres</code> database connection fails (Robert Haas) </p></li></ul></div><div class="sect4" id="id-1.11.6.113.5.12.3"><div class="titlepage"><div><div><h5 class="title">E.109.3.10.1. <a class="link" href="app-psql.html" title="psql"><span class="application">psql</span></a></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Add a display mode to auto-expand output based on the display width (Peter Eisentraut) </p><p> This adds the <code class="literal">auto</code> option to the <code class="command">\x</code> command, which switches to the expanded mode when the normal output would be wider than the screen. </p></li><li class="listitem"><p> Allow inclusion of a script file that is named relative to the directory of the file from which it was invoked (Gurjeet Singh) </p><p> This is done with a new command <code class="command">\ir</code>. </p></li><li class="listitem"><p> Add support for non-<acronym class="acronym">ASCII</acronym> characters in <span class="application">psql</span> variable names (Tom Lane) </p></li><li class="listitem"><p> Add support for major-version-specific <code class="filename">.psqlrc</code> files (Bruce Momjian) </p><p> <span class="application">psql</span> already supported minor-version-specific <code class="filename">.psqlrc</code> files. </p></li><li class="listitem"><p> Provide environment variable overrides for <span class="application">psql</span> history and startup file locations (Andrew Dunstan) </p><p> <code class="envar">PSQL_HISTORY</code> and <code class="envar">PSQLRC</code> now determine these file names if set. </p></li><li class="listitem"><p> Add a <code class="command">\setenv</code> command to modify the environment variables passed to child processes (Andrew Dunstan) </p></li><li class="listitem"><p> Name <span class="application">psql</span>'s temporary editor files with a <code class="filename">.sql</code> extension (Peter Eisentraut) </p><p> This allows extension-sensitive editors to select the right mode. </p></li><li class="listitem"><p> Allow <span class="application">psql</span> to use zero-byte field and record separators (Peter Eisentraut) </p><p> Various shell tools use zero-byte (NUL) separators, e.g. <span class="application">find</span>. </p></li><li class="listitem"><p> Make the <code class="command">\timing</code> option report times for failed queries (Magnus Hagander) </p><p> Previously times were reported only for successful queries. </p></li><li class="listitem"><p> Unify and tighten <span class="application">psql</span>'s treatment of <code class="command">\copy</code> and SQL <code class="command">COPY</code> (Noah Misch) </p><p> This fix makes failure behavior more predictable and honors <code class="command">\set ON_ERROR_ROLLBACK</code>. </p></li></ul></div></div><div class="sect4" id="id-1.11.6.113.5.12.4"><div class="titlepage"><div><div><h5 class="title">E.109.3.10.2. Informational Commands</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Make <code class="command">\d</code> on a sequence show the table/column name owning it (Magnus Hagander) </p></li><li class="listitem"><p> Show statistics target for columns in <code class="command">\d+</code> (Magnus Hagander) </p></li><li class="listitem"><p> Show role password expiration dates in <code class="command">\du</code> (Fabrízio de Royes Mello) </p></li><li class="listitem"><p> Display comments for casts, conversions, domains, and languages (Josh Kupershmidt) </p><p> These are included in the output of <code class="command">\dC+</code>, <code class="command">\dc+</code>, <code class="command">\dD+</code>, and <code class="command">\dL</code> respectively. </p></li><li class="listitem"><p> Display comments for <acronym class="acronym">SQL</acronym>/<acronym class="acronym">MED</acronym> objects (Josh Kupershmidt) </p><p> These are included in the output of <code class="command">\des+</code>, <code class="command">\det+</code>, and <code class="command">\dew+</code> for foreign servers, foreign tables, and foreign data wrappers respectively. </p></li><li class="listitem"><p> Change <code class="command">\dd</code> to display comments only for object types without their own backslash command (Josh Kupershmidt) </p></li></ul></div></div><div class="sect4" id="id-1.11.6.113.5.12.5"><div class="titlepage"><div><div><h5 class="title">E.109.3.10.3. Tab Completion</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> In <span class="application">psql</span> tab completion, complete <acronym class="acronym">SQL</acronym> keywords in either upper or lower case according to the new <a class="link" href="app-psql.html#APP-PSQL-VARIABLES" title="Variables"><code class="literal">COMP_KEYWORD_CASE</code></a> setting (Peter Eisentraut) </p></li><li class="listitem"><p> Add tab completion support for <code class="command">EXECUTE</code> (Andreas Karlsson) </p></li><li class="listitem"><p> Allow tab completion of role references in <code class="command">GRANT</code>/<code class="command">REVOKE</code> (Peter Eisentraut) </p></li><li class="listitem"><p> Allow tab completion of file names to supply quotes, when necessary (Noah Misch) </p></li><li class="listitem"><p> Change tab completion support for <code class="command">TABLE</code> to also include views (Magnus Hagander) </p></li></ul></div></div><div class="sect4" id="id-1.11.6.113.5.12.6"><div class="titlepage"><div><div><h5 class="title">E.109.3.10.4. <a class="link" href="app-pgdump.html" title="pg_dump"><span class="application">pg_dump</span></a></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Add an <code class="option">--exclude-table-data</code> option to <span class="application">pg_dump</span> (Andrew Dunstan) </p><p> This allows dumping of a table's definition but not its data, on a per-table basis. </p></li><li class="listitem"><p> Add a <code class="option">--section</code> option to <span class="application">pg_dump</span> and <span class="application">pg_restore</span> (Andrew Dunstan) </p><p> Valid values are <code class="literal">pre-data</code>, <code class="literal">data</code>, and <code class="literal">post-data</code>. The option can be given more than once to select two or more sections. </p></li><li class="listitem"><p> Make <a class="link" href="app-pg-dumpall.html" title="pg_dumpall"><span class="application">pg_dumpall</span></a> dump all roles first, then all configuration settings on roles (Phil Sorber) </p><p> This allows a role's configuration settings to mention other roles without generating an error. </p></li><li class="listitem"><p> Allow <span class="application">pg_dumpall</span> to avoid errors if the <code class="literal">postgres</code> database is missing in the new cluster (Robert Haas) </p></li><li class="listitem"><p> Dump foreign server user mappings in user name order (Peter Eisentraut) </p><p> This helps produce deterministic dump files. </p></li><li class="listitem"><p> Dump operators in a predictable order (Peter Eisentraut) </p></li><li class="listitem"><p> Tighten rules for when extension configuration tables are dumped by <span class="application">pg_dump</span> (Tom Lane) </p></li><li class="listitem"><p> Make <span class="application">pg_dump</span> emit more useful dependency information (Tom Lane) </p><p> The dependency links included in archive-format dumps were formerly of very limited use, because they frequently referenced objects that appeared nowhere in the dump. Now they represent actual dependencies (possibly indirect) among the dumped objects. </p></li><li class="listitem"><p> Improve <span class="application">pg_dump</span>'s performance when dumping many database objects (Tom Lane) </p></li></ul></div></div></div><div class="sect3" id="id-1.11.6.113.5.13"><div class="titlepage"><div><div><h4 class="title">E.109.3.11. <a class="link" href="libpq.html" title="Chapter 34. libpq - C Library"><span class="application">libpq</span></a></h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Allow <span class="application">libpq</span> connection strings to have the format of a <a class="link" href="libpq-connect.html#LIBPQ-CONNSTRING" title="34.1.1. Connection Strings"><acronym class="acronym">URI</acronym></a> (Alexander Shulgin) </p><p> The syntax begins with <code class="literal">postgres://</code>. This can allow applications to avoid implementing their own parser for URIs representing database connections. </p></li><li class="listitem"><p> Add a <a class="link" href="libpq-connect.html#LIBPQ-CONNECT-SSLCOMPRESSION">connection option</a> to disable <acronym class="acronym">SSL</acronym> compression (Laurenz Albe) </p><p> This can be used to remove the overhead of <acronym class="acronym">SSL</acronym> compression on fast networks. </p></li><li class="listitem"><p> Add a <a class="link" href="libpq-single-row-mode.html" title="34.5. Retrieving Query Results Row-By-Row">single-row processing mode</a> for better handling of large result sets (Kyotaro Horiguchi, Marko Kreen) </p><p> Previously, <span class="application">libpq</span> always collected the entire query result in memory before passing it back to the application. </p></li><li class="listitem"><p> Add <code class="literal">const</code> qualifiers to the declarations of the functions <code class="function">PQconnectdbParams</code>, <code class="function">PQconnectStartParams</code>, and <code class="function">PQpingParams</code> (Lionel Elie Mamane) </p></li><li class="listitem"><p> Allow the <code class="filename">.pgpass</code> file to include escaped characters in the password field (Robert Haas) </p></li><li class="listitem"><p> Make library functions use <code class="function">abort()</code> instead of <code class="function">exit()</code> when it is necessary to terminate the process (Peter Eisentraut) </p><p> This choice does not interfere with the normal exit codes used by the program, and generates a signal that can be caught by the caller. </p></li></ul></div></div><div class="sect3" id="id-1.11.6.113.5.14"><div class="titlepage"><div><div><h4 class="title">E.109.3.12. Source Code</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Remove dead ports (Peter Eisentraut) </p><p> The following platforms are no longer supported: dgux, nextstep, sunos4, svr4, ultrix4, univel, bsdi. </p></li><li class="listitem"><p> Add support for building with <a class="link" href="install-windows.html" title="Chapter 17. Installation from Source Code on Windows">MS Visual Studio 2010</a> (Brar Piening) </p></li><li class="listitem"><p> Enable compiling with the MinGW-w64 32-bit compiler (Lars Kanis) </p></li><li class="listitem"><p> Install <code class="filename">plpgsql.h</code> into <code class="filename">include/server</code> during installation (Heikki Linnakangas) </p></li><li class="listitem"><p> Improve the latch facility to include detection of postmaster death (Peter Geoghegan, Heikki Linnakangas, Tom Lane) </p><p> This eliminates one of the main reasons that background processes formerly had to wake up to poll for events. </p></li><li class="listitem"><p> Use C flexible array members, where supported (Peter Eisentraut) </p></li><li class="listitem"><p> Improve the concurrent transaction regression tests (<span class="application">isolationtester</span>) (Noah Misch) </p></li><li class="listitem"><p> Modify <span class="application">thread_test</span> to create its test files in the current directory, rather than <code class="filename">/tmp</code> (Bruce Momjian) </p></li><li class="listitem"><p> Improve flex and bison warning and error reporting (Tom Lane) </p></li><li class="listitem"><p> Add memory barrier support (Robert Haas) </p><p> This is currently unused. </p></li><li class="listitem"><p> Modify pgindent to use a typedef file (Bruce Momjian) </p></li><li class="listitem"><p> Add a hook for processing messages due to be sent to the server log (Martin Pihlak) </p></li><li class="listitem"><p> Add object access hooks for <code class="command">DROP</code> commands (KaiGai Kohei) </p></li><li class="listitem"><p> Centralize <code class="command">DROP</code> handling for some object types (KaiGai Kohei) </p></li><li class="listitem"><p> Add a <span class="application">pg_upgrade</span> test suite (Peter Eisentraut) </p></li><li class="listitem"><p> Sync regular expression code with <acronym class="acronym">TCL</acronym> 8.5.11 and improve internal processing (Tom Lane) </p></li><li class="listitem"><p> Move <acronym class="acronym">CRC</acronym> tables to libpgport, and provide them in a separate include file (Daniel Farina) </p></li><li class="listitem"><p> Add options to <span class="application">git_changelog</span> for use in major release note creation (Bruce Momjian) </p></li><li class="listitem"><p> Support Linux's <code class="filename">/proc/self/oom_score_adj</code> API (Tom Lane) </p></li></ul></div></div><div class="sect3" id="id-1.11.6.113.5.15"><div class="titlepage"><div><div><h4 class="title">E.109.3.13. Additional Modules</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Improve efficiency of <a class="link" href="dblink.html" title="F.10. dblink">dblink</a> by using libpq's new single-row processing mode (Kyotaro Horiguchi, Marko Kreen) </p><p> This improvement does not apply to <code class="function">dblink_send_query()</code>/<code class="function">dblink_get_result()</code>. </p></li><li class="listitem"><p> Support <code class="literal">force_not_null</code> option in <a class="link" href="file-fdw.html" title="F.14. file_fdw">file_fdw</a> (Shigeru Hanada) </p></li><li class="listitem"><p> Implement dry-run mode for <a class="link" href="pgarchivecleanup.html" title="pg_archivecleanup"><span class="application">pg_archivecleanup</span></a> (Gabriele Bartolini) </p><p> This only outputs the names of files to be deleted. </p></li><li class="listitem"><p> Add new <a class="link" href="pgbench.html" title="pgbench">pgbench</a> switches <code class="option">--unlogged-tables</code>, <code class="option">--tablespace</code>, and <code class="option">--index-tablespace</code> (Robert Haas) </p></li><li class="listitem"><p> Change <a class="link" href="pgtestfsync.html" title="pg_test_fsync"><span class="application">pg_test_fsync</span></a> to test for a fixed amount of time, rather than a fixed number of cycles (Bruce Momjian) </p><p> The <code class="option">-o</code>/cycles option was removed, and <code class="option">-s</code>/seconds added. </p></li><li class="listitem"><p> Add a <a class="link" href="pgtesttiming.html" title="pg_test_timing"><span class="application">pg_test_timing</span></a> utility to measure clock monotonicity and timing overhead (Ants Aasma, Greg Smith) </p></li><li class="listitem"><p> Add a <a class="link" href="tcn.html" title="F.39. tcn">tcn</a> (triggered change notification) module to generate <code class="command">NOTIFY</code> events on table changes (Kevin Grittner) </p></li></ul></div><div class="sect4" id="id-1.11.6.113.5.15.3"><div class="titlepage"><div><div><h5 class="title">E.109.3.13.1. <a class="link" href="pgupgrade.html" title="pg_upgrade"><span class="application">pg_upgrade</span></a></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Adjust <span class="application">pg_upgrade</span> environment variables (Bruce Momjian) </p><p> Rename data, bin, and port environment variables to begin with <code class="literal">PG</code>, and support <code class="envar">PGPORTOLD</code>/<code class="envar">PGPORTNEW</code>, to replace <code class="envar">PGPORT</code>. </p></li><li class="listitem"><p> Overhaul <span class="application">pg_upgrade</span> logging and failure reporting (Bruce Momjian) </p><p> Create four append-only log files, and delete them on success. Add <code class="option">-r</code>/<code class="option">--retain</code> option to unconditionally retain these files. Also remove <span class="application">pg_upgrade</span> options <code class="option">-g</code>/<code class="option">-G</code>/<code class="option">-l</code> options as unnecessary, and tighten log file permissions. </p></li><li class="listitem"><p> Make <span class="application">pg_upgrade</span> create a script to incrementally generate more accurate optimizer statistics (Bruce Momjian) </p><p> This reduces the time needed to generate minimal cluster statistics after an upgrade. </p></li><li class="listitem"><p> Allow <span class="application">pg_upgrade</span> to upgrade an old cluster that does not have a <code class="literal">postgres</code> database (Bruce Momjian) </p></li><li class="listitem"><p> Allow <span class="application">pg_upgrade</span> to handle cases where some old or new databases are missing, as long as they are empty (Bruce Momjian) </p></li><li class="listitem"><p> Allow <span class="application">pg_upgrade</span> to handle configuration-only directory installations (Bruce Momjian) </p></li><li class="listitem"><p> In <span class="application">pg_upgrade</span>, add <code class="option">-o</code>/<code class="option">-O</code> options to pass parameters to the servers (Bruce Momjian) </p><p> This is useful for configuration-only directory installs. </p></li><li class="listitem"><p> Change <span class="application">pg_upgrade</span> to use port 50432 by default (Bruce Momjian) </p><p> This helps avoid unintended client connections during the upgrade. </p></li><li class="listitem"><p> Reduce cluster locking in <span class="application">pg_upgrade</span> (Bruce Momjian) </p><p> Specifically, only lock the old cluster if link mode is used, and do it right after the schema is restored. </p></li></ul></div></div><div class="sect4" id="id-1.11.6.113.5.15.4"><div class="titlepage"><div><div><h5 class="title">E.109.3.13.2. <a class="link" href="pgstatstatements.html" title="F.29. pg_stat_statements"><span class="application">pg_stat_statements</span></a></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Allow <span class="application">pg_stat_statements</span> to aggregate similar queries via SQL text normalization (Peter Geoghegan, Tom Lane) </p><p> Users with applications that use non-parameterized SQL will now be able to monitor query performance without detailed log analysis. </p></li><li class="listitem"><p> Add dirtied and written block counts and read/write times to <span class="application">pg_stat_statements</span> (Robert Haas, Ants Aasma) </p></li><li class="listitem"><p> Prevent <span class="application">pg_stat_statements</span> from double-counting <code class="command">PREPARE</code> and <code class="command">EXECUTE</code> commands (Tom Lane) </p></li></ul></div></div><div class="sect4" id="id-1.11.6.113.5.15.5"><div class="titlepage"><div><div><h5 class="title">E.109.3.13.3. <a class="link" href="sepgsql.html" title="F.35. sepgsql">sepgsql</a></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Support <code class="literal">SECURITY LABEL</code> on global objects (KaiGai Kohei, Robert Haas) </p><p> Specifically, add security labels to databases, tablespaces, and roles. </p></li><li class="listitem"><p> Allow sepgsql to honor database labels (KaiGai Kohei) </p></li><li class="listitem"><p> Perform sepgsql permission checks during the creation of various objects (KaiGai Kohei) </p></li><li class="listitem"><p> Add <code class="function">sepgsql_setcon()</code> and related functions to control the sepgsql security domain (KaiGai Kohei) </p></li><li class="listitem"><p> Add a user space access cache to sepgsql to improve performance (KaiGai Kohei) </p></li></ul></div></div></div><div class="sect3" id="id-1.11.6.113.5.16"><div class="titlepage"><div><div><h4 class="title">E.109.3.14. Documentation</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Add a rule to optionally build HTML documentation using the stylesheet from the website (Magnus Hagander) </p><p> Use <code class="command">gmake STYLE=website draft</code>. </p></li><li class="listitem"><p> Improve <code class="command">EXPLAIN</code> documentation (Tom Lane) </p></li><li class="listitem"><p> Document that user/database names are preserved with double-quoting by command-line tools like <span class="application">vacuumdb</span> (Bruce Momjian) </p></li><li class="listitem"><p> Document the actual string returned by the client for MD5 authentication (Cyan Ogilvie) </p></li><li class="listitem"><p> Deprecate use of <code class="literal">GLOBAL</code> and <code class="literal">LOCAL</code> in <code class="command">CREATE TEMP TABLE</code> (Noah Misch) </p><p> <span class="productname">PostgreSQL</span> has long treated these keyword as no-ops, and continues to do so; but in future they might mean what the SQL standard says they mean, so applications should avoid using them. </p></li></ul></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="release-9-2-1.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="release.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="release-9-1-24.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">E.108. Release 9.2.1 </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> E.110. Release 9.1.24</td></tr></table></div></body></html>