Linux SRV-16 6.18.44-paas #1 SMP PREEMPT_DYNAMIC Thu Aug 13 10:08:12 UTC 2026 x86_64
/
opt
/
postgresql-11.1-201812121535
/
doc
/
html
/
//opt/postgresql-11.1-201812121535/doc/html/release-9-5.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.37. Release 9.5</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-5-1.html" title="E.36. Release 9.5.1" /><link rel="next" href="release-9-4-20.html" title="E.38. Release 9.4.20" /></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.37. Release 9.5</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="release-9-5-1.html" title="E.36. Release 9.5.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-4-20.html" title="E.38. Release 9.4.20">Next</a></td></tr></table><hr></hr></div><div class="sect1" id="RELEASE-9-5"><div class="titlepage"><div><div><h2 class="title" style="clear: both">E.37. Release 9.5</h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="sect2"><a href="release-9-5.html#id-1.11.6.41.3">E.37.1. Overview</a></span></dt><dt><span class="sect2"><a href="release-9-5.html#id-1.11.6.41.4">E.37.2. Migration to Version 9.5</a></span></dt><dt><span class="sect2"><a href="release-9-5.html#id-1.11.6.41.5">E.37.3. Changes</a></span></dt></dl></div><p><strong>Release date: </strong>2016-01-07</p><div class="sect2" id="id-1.11.6.41.3"><div class="titlepage"><div><div><h3 class="title">E.37.1. Overview</h3></div></div></div><p> Major enhancements in <span class="productname">PostgreSQL</span> 9.5 include: </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Allow <a class="link" href="sql-insert.html#SQL-ON-CONFLICT" title="ON CONFLICT Clause"><code class="command">INSERT</code></a>s that would generate constraint conflicts to be turned into <code class="command">UPDATE</code>s or ignored </p></li><li class="listitem"><p> Add <code class="literal">GROUP BY</code> analysis features <a class="link" href="queries-table-expressions.html#QUERIES-GROUPING-SETS" title="7.2.4. GROUPING SETS, CUBE, and ROLLUP"><code class="literal">GROUPING SETS</code></a>, <a class="link" href="queries-table-expressions.html#QUERIES-GROUPING-SETS" title="7.2.4. GROUPING SETS, CUBE, and ROLLUP"><code class="literal">CUBE</code></a> and <a class="link" href="queries-table-expressions.html#QUERIES-GROUPING-SETS" title="7.2.4. GROUPING SETS, CUBE, and ROLLUP"><code class="literal">ROLLUP</code></a> </p></li><li class="listitem"><p> Add <a class="link" href="ddl-rowsecurity.html" title="5.7. Row Security Policies">row-level security control</a> </p></li><li class="listitem"><p> Create mechanisms for tracking the <a class="link" href="replication-origins.html" title="Chapter 50. Replication Progress Tracking">progress of replication</a>, including methods for identifying the origin of individual changes during logical replication </p></li><li class="listitem"><p> Add <a class="link" href="brin.html" title="Chapter 67. BRIN Indexes">Block Range Indexes</a> (<acronym class="acronym">BRIN</acronym>) </p></li><li class="listitem"><p> Substantial performance improvements for sorting </p></li><li class="listitem"><p> Substantial performance improvements for multi-CPU machines </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.41.4"><div class="titlepage"><div><div><h3 class="title">E.37.2. Migration to Version 9.5</h3></div></div></div><p> A dump/restore using <a class="xref" href="app-pg-dumpall.html" title="pg_dumpall"><span class="refentrytitle"><span class="application">pg_dumpall</span></span></a>, or use of <a class="xref" href="pgupgrade.html" title="pg_upgrade"><span class="refentrytitle"><span class="application">pg_upgrade</span></span></a>, is required for those wishing to migrate data from any previous release. </p><p> Version 9.5 contains a number of changes that may affect compatibility with previous releases. Observe the following incompatibilities: </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Adjust <a class="link" href="sql-syntax-lexical.html#SQL-PRECEDENCE" title="4.1.6. Operator Precedence">operator precedence</a> to match the <acronym class="acronym">SQL</acronym> standard (Tom Lane) </p><p> The precedence of <code class="literal"><=</code>, <code class="literal">>=</code> and <code class="literal"><></code> has been reduced to match that of <code class="literal"><</code>, <code class="literal">></code> and <code class="literal">=</code>. The precedence of <code class="literal">IS</code> tests (e.g., <em class="replaceable"><code>x</code></em> <code class="literal">IS NULL</code>) has been reduced to be just below these six comparison operators. Also, multi-keyword operators beginning with <code class="literal">NOT</code> now have the precedence of their base operator (for example, <code class="literal">NOT BETWEEN</code> now has the same precedence as <code class="literal">BETWEEN</code>) whereas before they had inconsistent precedence, behaving like <code class="literal">NOT</code> with respect to their left operand but like their base operator with respect to their right operand. The new configuration parameter <a class="xref" href="runtime-config-compatible.html#GUC-OPERATOR-PRECEDENCE-WARNING">operator_precedence_warning</a> can be enabled to warn about queries in which these precedence changes result in different parsing choices. </p></li><li class="listitem"><p> Change <a class="xref" href="app-pg-ctl.html" title="pg_ctl"><span class="refentrytitle"><span class="application">pg_ctl</span></span></a>'s default shutdown mode from <code class="literal">smart</code> to <code class="literal">fast</code> (Bruce Momjian) </p><p> This means the default behavior will be to forcibly cancel existing database sessions, not simply wait for them to exit. </p></li><li class="listitem"><p> Use assignment cast behavior for data type conversions in <span class="application">PL/pgSQL</span> assignments, rather than converting to and from text (Tom Lane) </p><p> This change causes conversions of Booleans to strings to produce <code class="literal">true</code> or <code class="literal">false</code>, not <code class="literal">t</code> or <code class="literal">f</code>. Other type conversions may succeed in more cases than before; for example, assigning a numeric value <code class="literal">3.9</code> to an integer variable will now assign 4 rather than failing. If no assignment-grade cast is defined for the particular source and destination types, <span class="application">PL/pgSQL</span> will fall back to its old I/O conversion behavior. </p></li><li class="listitem"><p> Allow characters in <a class="link" href="libpq-connect.html#LIBPQ-CONNECT-OPTIONS">server command-line options</a> to be escaped with a backslash (Andres Freund) </p><p> Formerly, spaces in the options string always separated options, so there was no way to include a space in an option value. Including a backslash in an option value now requires writing <code class="literal">\\</code>. </p></li><li class="listitem"><p> Change the default value of the GSSAPI <a class="link" href="gssapi-auth.html" title="20.6. GSSAPI Authentication"><code class="varname">include_realm</code></a> parameter to 1, so that by default the realm is not removed from a <acronym class="acronym">GSS</acronym> or <acronym class="acronym">SSPI</acronym> principal name (Stephen Frost) </p></li><li class="listitem"><p> Replace configuration parameter <code class="varname">checkpoint_segments</code> with <a class="xref" href="runtime-config-wal.html#GUC-MIN-WAL-SIZE">min_wal_size</a> and <a class="xref" href="runtime-config-wal.html#GUC-MAX-WAL-SIZE">max_wal_size</a> (Heikki Linnakangas) </p><p> If you previously adjusted <code class="varname">checkpoint_segments</code>, the following formula will give you an approximately equivalent setting: </p><pre class="programlisting"> max_wal_size = (3 * checkpoint_segments) * 16MB </pre><p> Note that the default setting for <code class="varname">max_wal_size</code> is much higher than the default <code class="varname">checkpoint_segments</code> used to be, so adjusting it might no longer be necessary. </p></li><li class="listitem"><p> Control the Linux <acronym class="acronym">OOM</acronym> killer via new environment variables <a class="link" href="kernel-resources.html#LINUX-MEMORY-OVERCOMMIT" title="18.4.4. Linux Memory Overcommit"><code class="envar">PG_OOM_ADJUST_FILE</code></a> and <a class="link" href="kernel-resources.html#LINUX-MEMORY-OVERCOMMIT" title="18.4.4. Linux Memory Overcommit"><code class="envar">PG_OOM_ADJUST_VALUE</code></a>, instead of compile-time options <code class="literal">LINUX_OOM_SCORE_ADJ</code> and <code class="literal">LINUX_OOM_ADJ</code> (Gurjeet Singh) </p></li><li class="listitem"><p> Decommission server configuration parameter <code class="varname">ssl_renegotiation_limit</code>, which was deprecated in earlier releases (Andres Freund) </p><p> While SSL renegotiation is a good idea in theory, it has caused enough bugs to be considered a net negative in practice, and it is due to be removed from future versions of the relevant standards. We have therefore removed support for it from <span class="productname">PostgreSQL</span>. The <code class="varname">ssl_renegotiation_limit</code> parameter still exists, but cannot be set to anything but zero (disabled). It's not documented anymore, either. </p></li><li class="listitem"><p> Remove server configuration parameter <code class="varname">autocommit</code>, which was already deprecated and non-operational (Tom Lane) </p></li><li class="listitem"><p> Remove the <a class="link" href="catalog-pg-authid.html" title="52.8. pg_authid"><code class="structname">pg_authid</code></a> catalog's <code class="structfield">rolcatupdate</code> field, as it had no usefulness (Adam Brightwell) </p></li><li class="listitem"><p> The <a class="link" href="monitoring-stats.html#PG-STAT-REPLICATION-VIEW" title="Table 28.5. pg_stat_replication View"><code class="structname">pg_stat_replication</code></a> system view's <code class="structfield">sent</code> field is now NULL, not zero, when it has no valid value (Magnus Hagander) </p></li><li class="listitem"><p> Allow <code class="type">json</code> and <code class="type">jsonb</code> array extraction operators to accept negative subscripts, which count from the end of JSON arrays (Peter Geoghegan, Andrew Dunstan) </p><p> Previously, these operators returned <code class="literal">NULL</code> for negative subscripts. </p></li></ul></div></div><div class="sect2" id="id-1.11.6.41.5"><div class="titlepage"><div><div><h3 class="title">E.37.3. Changes</h3></div></div></div><p> Below you will find a detailed account of the changes between <span class="productname">PostgreSQL</span> 9.5 and the previous major release. </p><div class="sect3" id="id-1.11.6.41.5.3"><div class="titlepage"><div><div><h4 class="title">E.37.3.1. Server</h4></div></div></div><div class="sect4" id="id-1.11.6.41.5.3.2"><div class="titlepage"><div><div><h5 class="title">E.37.3.1.1. Indexes</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Add <a class="link" href="brin.html" title="Chapter 67. BRIN Indexes">Block Range Indexes</a> (<acronym class="acronym">BRIN</acronym>) (Álvaro Herrera) </p><p> <acronym class="acronym">BRIN</acronym> indexes store only summary data (such as minimum and maximum values) for ranges of heap blocks. They are therefore very compact and cheap to update; but if the data is naturally clustered, they can still provide substantial speedup of searches. </p></li><li class="listitem"><p> Allow queries to perform accurate distance filtering of bounding-box-indexed objects (polygons, circles) using <a class="link" href="gist.html" title="Chapter 64. GiST Indexes">GiST</a> indexes (Alexander Korotkov, Heikki Linnakangas) </p><p> Previously, to exploit such an index a subquery had to be used to select a large number of rows ordered by bounding-box distance, and the result then had to be filtered further with a more accurate distance calculation. </p></li><li class="listitem"><p> Allow <a class="link" href="gist.html" title="Chapter 64. GiST Indexes">GiST</a> indexes to perform index-only scans (Anastasia Lubennikova, Heikki Linnakangas, Andreas Karlsson) </p></li><li class="listitem"><p> Add configuration parameter <a class="xref" href="runtime-config-client.html#GUC-GIN-PENDING-LIST-LIMIT">gin_pending_list_limit</a> to control the size of <acronym class="acronym">GIN</acronym> pending lists (Fujii Masao) </p><p> This value can also be set on a per-index basis as an index storage parameter. Previously the pending-list size was controlled by <a class="xref" href="runtime-config-resource.html#GUC-WORK-MEM">work_mem</a>, which was awkward because appropriate values for <code class="varname">work_mem</code> are often much too large for this purpose. </p></li><li class="listitem"><p> Issue a warning during the creation of <a class="link" href="indexes-types.html" title="11.2. Index Types">hash</a> indexes because they are not crash-safe (Bruce Momjian) </p></li></ul></div></div><div class="sect4" id="id-1.11.6.41.5.3.3"><div class="titlepage"><div><div><h5 class="title">E.37.3.1.2. General Performance</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Improve the speed of sorting of <code class="type">varchar</code>, <code class="type">text</code>, and <code class="type">numeric</code> fields via <span class="quote">“<span class="quote">abbreviated</span>”</span> keys (Peter Geoghegan, Andrew Gierth, Robert Haas) </p></li><li class="listitem"><p> Extend the infrastructure that allows sorting to be performed by inlined, non-<acronym class="acronym">SQL</acronym>-callable comparison functions to cover <code class="command">CREATE INDEX</code>, <code class="command">REINDEX</code>, and <code class="command">CLUSTER</code> (Peter Geoghegan) </p></li><li class="listitem"><p> Improve performance of hash joins (Tomas Vondra, Robert Haas) </p></li><li class="listitem"><p> Improve concurrency of shared buffer replacement (Robert Haas, Amit Kapila, Andres Freund) </p></li><li class="listitem"><p> Reduce the number of page locks and pins during index scans (Kevin Grittner) </p><p> The primary benefit of this is to allow index vacuums to be blocked less often. </p></li><li class="listitem"><p> Make per-backend tracking of buffer pins more memory-efficient (Andres Freund) </p></li><li class="listitem"><p> Improve lock scalability (Andres Freund) </p><p> This particularly addresses scalability problems when running on systems with multiple <acronym class="acronym">CPU</acronym> sockets. </p></li><li class="listitem"><p> Allow the optimizer to remove unnecessary references to left-joined subqueries (David Rowley) </p></li><li class="listitem"><p> Allow pushdown of query restrictions into subqueries with <a class="link" href="tutorial-window.html" title="3.5. Window Functions">window functions</a>, where appropriate (David Rowley) </p></li><li class="listitem"><p> Allow a non-leakproof function to be pushed down into a security barrier view if the function does not receive any view output columns (Dean Rasheed) </p></li><li class="listitem"><p> Teach the planner to use statistics obtained from an expression index on a boolean-returning function, when a matching function call appears in <code class="literal">WHERE</code> (Tom Lane) </p></li><li class="listitem"><p> Make <code class="command">ANALYZE</code> compute basic statistics (null fraction and average column width) even for columns whose data type lacks an equality function (Oleksandr Shulgin) </p></li><li class="listitem"><p> Speed up <acronym class="acronym">CRC</acronym> (cyclic redundancy check) computations and switch to CRC-32C (Abhijit Menon-Sen, Heikki Linnakangas) </p></li><li class="listitem"><p> Improve bitmap index scan performance (Teodor Sigaev, Tom Lane) </p></li><li class="listitem"><p> Speed up <code class="command">CREATE INDEX</code> by avoiding unnecessary memory copies (Robert Haas) </p></li><li class="listitem"><p> Increase the number of buffer mapping partitions (Amit Kapila, Andres Freund, Robert Haas) </p><p> This improves performance for highly concurrent workloads. </p></li></ul></div></div><div class="sect4" id="id-1.11.6.41.5.3.4"><div class="titlepage"><div><div><h5 class="title">E.37.3.1.3. Monitoring</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Add per-table autovacuum logging control via new <code class="varname">log_autovacuum_min_duration</code> storage parameter (Michael Paquier) </p></li><li class="listitem"><p> Add new configuration parameter <a class="xref" href="runtime-config-logging.html#GUC-CLUSTER-NAME">cluster_name</a> (Thomas Munro) </p><p> This string, typically set in <a class="link" href="config-setting.html#CONFIG-SETTING-CONFIGURATION-FILE" title="19.1.2. Parameter Interaction via the Configuration File"><code class="filename">postgresql.conf</code></a>, allows clients to identify the cluster. This name also appears in the process title of all server processes, allowing for easier identification of processes belonging to the same cluster. </p></li><li class="listitem"><p> Prevent non-superusers from changing <a class="xref" href="runtime-config-logging.html#GUC-LOG-DISCONNECTIONS">log_disconnections</a> on connection startup (Fujii Masao) </p></li></ul></div></div><div class="sect4" id="id-1.11.6.41.5.3.5"><div class="titlepage"><div><div><h5 class="title">E.37.3.1.4. <acronym class="acronym">SSL</acronym></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Check <a class="link" href="libpq-ssl.html" title="34.18. SSL Support"><span class="quote">“<span class="quote">Subject Alternative Names</span>”</span></a> in <acronym class="acronym">SSL</acronym> server certificates, if present (Alexey Klyukin) </p><p> When they are present, this replaces checks against the certificate's <span class="quote">“<span class="quote">Common Name</span>”</span>. </p></li><li class="listitem"><p> Add system view <a class="link" href="monitoring-stats.html#PG-STAT-SSL-VIEW" title="Table 28.8. pg_stat_ssl View"><code class="structname">pg_stat_ssl</code></a> to report <acronym class="acronym">SSL</acronym> connection information (Magnus Hagander) </p></li><li class="listitem"><p> Add <span class="application">libpq</span> functions to return <acronym class="acronym">SSL</acronym> information in an implementation-independent way (Heikki Linnakangas) </p><p> While <a class="link" href="libpq-status.html#LIBPQ-PQGETSSL"><code class="function">PQgetssl()</code></a> can still be used to call <span class="productname">OpenSSL</span> functions, it is now considered deprecated because future versions of <span class="application">libpq</span> might support other <acronym class="acronym">SSL</acronym> implementations. When possible, use the new functions <a class="link" href="libpq-status.html#LIBPQ-PQSSLATTRIBUTE"><code class="function">PQsslAttribute()</code></a>, <a class="link" href="libpq-status.html#LIBPQ-PQSSLATTRIBUTENAMES"><code class="function">PQsslAttributeNames()</code></a>, and <a class="link" href="libpq-status.html#LIBPQ-PQSSLINUSE"><code class="function">PQsslInUse()</code></a> to obtain <acronym class="acronym">SSL</acronym> information in an <acronym class="acronym">SSL</acronym>-implementation-independent way. </p></li><li class="listitem"><p> Make <span class="application">libpq</span> honor any <span class="productname">OpenSSL</span> thread callbacks (Jan Urbanski) </p><p> Previously they were overwritten. </p></li></ul></div></div><div class="sect4" id="id-1.11.6.41.5.3.6"><div class="titlepage"><div><div><h5 class="title">E.37.3.1.5. Server Settings</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Replace configuration parameter <code class="varname">checkpoint_segments</code> with <a class="xref" href="runtime-config-wal.html#GUC-MIN-WAL-SIZE">min_wal_size</a> and <a class="xref" href="runtime-config-wal.html#GUC-MAX-WAL-SIZE">max_wal_size</a> (Heikki Linnakangas) </p><p> This change allows the allocation of a large number of <acronym class="acronym">WAL</acronym> files without keeping them after they are no longer needed. Therefore the default for <code class="varname">max_wal_size</code> has been set to <code class="literal">1GB</code>, much larger than the old default for <code class="varname">checkpoint_segments</code>. Also note that standby servers perform restartpoints to try to limit their WAL space consumption to <code class="varname">max_wal_size</code>; previously they did not pay any attention to <code class="varname">checkpoint_segments</code>. </p></li><li class="listitem"><p> Control the Linux <acronym class="acronym">OOM</acronym> killer via new environment variables <a class="link" href="kernel-resources.html#LINUX-MEMORY-OVERCOMMIT" title="18.4.4. Linux Memory Overcommit"><code class="envar">PG_OOM_ADJUST_FILE</code></a> and <a class="link" href="kernel-resources.html#LINUX-MEMORY-OVERCOMMIT" title="18.4.4. Linux Memory Overcommit"><code class="envar">PG_OOM_ADJUST_VALUE</code></a> (Gurjeet Singh) </p><p> The previous <acronym class="acronym">OOM</acronym> control infrastructure involved compile-time options <code class="literal">LINUX_OOM_SCORE_ADJ</code> and <code class="literal">LINUX_OOM_ADJ</code>, which are no longer supported. The new behavior is available in all builds. </p></li><li class="listitem"><p> Allow recording of transaction commit time stamps when configuration parameter <a class="xref" href="runtime-config-replication.html#GUC-TRACK-COMMIT-TIMESTAMP">track_commit_timestamp</a> is enabled (Álvaro Herrera, Petr Jelínek) </p><p> Time stamp information can be accessed using functions <a class="link" href="functions-info.html#FUNCTIONS-COMMIT-TIMESTAMP" title="Table 9.71. Committed transaction information"><code class="function">pg_xact_commit_timestamp()</code></a> and <code class="function">pg_last_committed_xact()</code>. </p></li><li class="listitem"><p> Allow <a class="xref" href="runtime-config-client.html#GUC-LOCAL-PRELOAD-LIBRARIES">local_preload_libraries</a> to be set by <code class="command">ALTER ROLE SET</code> (Peter Eisentraut, Kyotaro Horiguchi) </p></li><li class="listitem"><p> Allow <a class="link" href="routine-vacuuming.html#AUTOVACUUM" title="24.1.6. The Autovacuum Daemon">autovacuum workers</a> to respond to configuration parameter changes during a run (Michael Paquier) </p></li><li class="listitem"><p> Make configuration parameter <a class="xref" href="runtime-config-preset.html#GUC-DEBUG-ASSERTIONS">debug_assertions</a> read-only (Andres Freund) </p><p> This means that assertions can no longer be turned off if they were enabled at compile time, allowing for more efficient code optimization. This change also removes the <a class="link" href="app-postgres.html#APP-POSTGRES-OPTIONS" title="Options">postgres</a> <code class="option">-A</code> option. </p></li><li class="listitem"><p> Allow setting <a class="xref" href="runtime-config-resource.html#GUC-EFFECTIVE-IO-CONCURRENCY">effective_io_concurrency</a> on systems where it has no effect (Peter Eisentraut) </p></li><li class="listitem"><p> Add system view <a class="link" href="view-pg-file-settings.html" title="52.69. pg_file_settings"><code class="structname">pg_file_settings</code></a> to show the contents of the server's configuration files (Sawada Masahiko) </p></li><li class="listitem"><p> Add <code class="structname">pending_restart</code> to the system view <a class="link" href="view-pg-settings.html" title="52.85. pg_settings"><code class="structname">pg_settings</code></a> to indicate a change has been made but will not take effect until a database restart (Peter Eisentraut) </p></li><li class="listitem"><p> Allow <a class="link" href="sql-altersystem.html" title="ALTER SYSTEM"><code class="command">ALTER SYSTEM</code></a> values to be reset with <code class="command">ALTER SYSTEM RESET</code> (Vik Fearing) </p><p> This command removes the specified setting from <code class="filename">postgresql.auto.conf</code>. </p></li></ul></div></div></div><div class="sect3" id="id-1.11.6.41.5.4"><div class="titlepage"><div><div><h4 class="title">E.37.3.2. Replication and Recovery</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Create mechanisms for tracking the <a class="link" href="replication-origins.html" title="Chapter 50. Replication Progress Tracking">progress of replication</a>, including methods for identifying the origin of individual changes during logical replication (Andres Freund) </p><p> This is helpful when implementing replication solutions. </p></li><li class="listitem"><p> Rework truncation of the multixact commit log to be properly WAL-logged (Andres Freund) </p><p> This makes things substantially simpler and more robust. </p></li><li class="listitem"><p> Add <a class="link" href="recovery-config.html" title="Chapter 27. Recovery Configuration"><code class="filename">recovery.conf</code></a> parameter <a class="link" href="recovery-target-settings.html#RECOVERY-TARGET-ACTION"><code class="varname">recovery_target_action</code></a> to control post-recovery activity (Petr Jelínek) </p><p> This replaces the old parameter <code class="varname">pause_at_recovery_target</code>. </p></li><li class="listitem"><p> Add new <a class="xref" href="runtime-config-wal.html#GUC-ARCHIVE-MODE">archive_mode</a> value <code class="literal">always</code> to allow standbys to always archive received <acronym class="acronym">WAL</acronym> files (Fujii Masao) </p></li><li class="listitem"><p> Add configuration parameter <a class="xref" href="runtime-config-replication.html#GUC-WAL-RETRIEVE-RETRY-INTERVAL">wal_retrieve_retry_interval</a> to control <acronym class="acronym">WAL</acronym> read retry after failure (Alexey Vasiliev, Michael Paquier) </p><p> This is particularly helpful for warm standbys. </p></li><li class="listitem"><p> Allow compression of full-page images stored in <acronym class="acronym">WAL</acronym> (Rahila Syed, Michael Paquier) </p><p> This feature reduces WAL volume, at the cost of more CPU time spent on WAL logging and WAL replay. It is controlled by a new configuration parameter <a class="xref" href="runtime-config-wal.html#GUC-WAL-COMPRESSION">wal_compression</a>, which currently is off by default. </p></li><li class="listitem"><p> Archive <acronym class="acronym">WAL</acronym> files with suffix <code class="literal">.partial</code> during standby promotion (Heikki Linnakangas) </p></li><li class="listitem"><p> Add configuration parameter <a class="xref" href="runtime-config-logging.html#GUC-LOG-REPLICATION-COMMANDS">log_replication_commands</a> to log replication commands (Fujii Masao) </p><p> By default, replication commands, e.g. <a class="link" href="protocol-replication.html" title="53.4. Streaming Replication Protocol"><code class="literal">IDENTIFY_SYSTEM</code></a>, are not logged, even when <a class="xref" href="runtime-config-logging.html#GUC-LOG-STATEMENT">log_statement</a> is set to <code class="literal">all</code>. </p></li><li class="listitem"><p> Report the processes holding replication slots in <a class="link" href="view-pg-replication-slots.html" title="52.80. pg_replication_slots"><code class="structname">pg_replication_slots</code></a> (Craig Ringer) </p><p> The new output column is <code class="structname">active_pid</code>. </p></li><li class="listitem"><p> Allow <code class="filename">recovery.conf</code>'s <a class="link" href="standby-settings.html#PRIMARY-CONNINFO"><code class="varname">primary_conninfo</code></a> setting to use connection <acronym class="acronym">URI</acronym>s, e.g. <code class="literal">postgres://</code> (Alexander Shulgin) </p></li></ul></div></div><div class="sect3" id="id-1.11.6.41.5.5"><div class="titlepage"><div><div><h4 class="title">E.37.3.3. Queries</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-insert.html#SQL-ON-CONFLICT" title="ON CONFLICT Clause"><code class="command">INSERT</code></a>s that would generate constraint conflicts to be turned into <code class="command">UPDATE</code>s or ignored (Peter Geoghegan, Heikki Linnakangas, Andres Freund) </p><p> The syntax is <code class="command">INSERT ... ON CONFLICT DO NOTHING/UPDATE</code>. This is the Postgres implementation of the popular <code class="command">UPSERT</code> command. </p></li><li class="listitem"><p> Add <code class="literal">GROUP BY</code> analysis features <a class="link" href="queries-table-expressions.html#QUERIES-GROUPING-SETS" title="7.2.4. GROUPING SETS, CUBE, and ROLLUP"><code class="literal">GROUPING SETS</code></a>, <a class="link" href="queries-table-expressions.html#QUERIES-GROUPING-SETS" title="7.2.4. GROUPING SETS, CUBE, and ROLLUP"><code class="literal">CUBE</code></a> and <a class="link" href="queries-table-expressions.html#QUERIES-GROUPING-SETS" title="7.2.4. GROUPING SETS, CUBE, and ROLLUP"><code class="literal">ROLLUP</code></a> (Andrew Gierth, Atri Sharma) </p></li><li class="listitem"><p> Allow setting multiple target columns in an <a class="link" href="sql-update.html" title="UPDATE"><code class="command">UPDATE</code></a> from the result of a single sub-SELECT (Tom Lane) </p><p> This is accomplished using the syntax <code class="command">UPDATE tab SET (col1, col2, ...) = (SELECT ...)</code>. </p></li><li class="listitem"><p> Add <a class="link" href="sql-select.html" title="SELECT"><code class="command">SELECT</code></a> option <code class="literal">SKIP LOCKED</code> to skip locked rows (Thomas Munro) </p><p> This does not throw an error for locked rows like <code class="literal">NOWAIT</code> does. </p></li><li class="listitem"><p> Add <a class="link" href="sql-select.html" title="SELECT"><code class="command">SELECT</code></a> option <code class="literal">TABLESAMPLE</code> to return a subset of a table (Petr Jelínek) </p><p> This feature supports the SQL-standard table sampling methods. In addition, there are provisions for <a class="link" href="tablesample-method.html" title="Chapter 58. Writing A Table Sampling Method">user-defined table sampling methods</a>. </p></li><li class="listitem"><p> Suggest possible matches for mistyped column names (Peter Geoghegan, Robert Haas) </p></li></ul></div></div><div class="sect3" id="id-1.11.6.41.5.6"><div class="titlepage"><div><div><h4 class="title">E.37.3.4. Utility Commands</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Add more details about sort ordering in <a class="link" href="sql-explain.html" title="EXPLAIN"><code class="command">EXPLAIN</code></a> output (Marius Timmer, Lukas Kreft, Arne Scheffer) </p><p> Details include <code class="literal">COLLATE</code>, <code class="literal">DESC</code>, <code class="literal">USING</code>, and <code class="literal">NULLS FIRST</code><code class="literal">/LAST</code>. </p></li><li class="listitem"><p> Make <a class="link" href="sql-vacuum.html" title="VACUUM"><code class="command">VACUUM</code></a> log the number of pages skipped due to pins (Jim Nasby) </p></li><li class="listitem"><p> Make <a class="link" href="sql-truncate.html" title="TRUNCATE"><code class="command">TRUNCATE</code></a> properly update the <code class="literal">pg_stat</code>* tuple counters (Alexander Shulgin) </p></li></ul></div><div class="sect4" id="id-1.11.6.41.5.6.3"><div class="titlepage"><div><div><h5 class="title">E.37.3.4.1. <a class="xref" href="sql-reindex.html" title="REINDEX"><span class="refentrytitle">REINDEX</span></a></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Allow <code class="command">REINDEX</code> to reindex an entire schema using the <code class="literal">SCHEMA</code> option (Sawada Masahiko) </p></li><li class="listitem"><p> Add <code class="literal">VERBOSE</code> option to <code class="command">REINDEX</code> (Sawada Masahiko) </p></li><li class="listitem"><p> Prevent <code class="command">REINDEX DATABASE</code> and <code class="command">SCHEMA</code> from outputting object names, unless <code class="literal">VERBOSE</code> is used (Simon Riggs) </p></li><li class="listitem"><p> Remove obsolete <code class="literal">FORCE</code> option from <code class="command">REINDEX</code> (Fujii Masao) </p></li></ul></div></div></div><div class="sect3" id="id-1.11.6.41.5.7"><div class="titlepage"><div><div><h4 class="title">E.37.3.5. Object Manipulation</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Add <a class="link" href="ddl-rowsecurity.html" title="5.7. Row Security Policies">row-level security control</a> (Craig Ringer, KaiGai Kohei, Adam Brightwell, Dean Rasheed, Stephen Frost) </p><p> This feature allows row-by-row control over which users can add, modify, or even see rows in a table. This is controlled by new commands <a class="link" href="sql-createpolicy.html" title="CREATE POLICY"><code class="command">CREATE</code></a>/<a class="link" href="sql-alterpolicy.html" title="ALTER POLICY"><code class="command">ALTER</code></a>/<a class="link" href="sql-droppolicy.html" title="DROP POLICY"><code class="command">DROP POLICY</code></a> and <a class="link" href="sql-altertable.html" title="ALTER TABLE"><code class="command">ALTER TABLE ... ENABLE/DISABLE ROW SECURITY</code></a>. </p></li><li class="listitem"><p> Allow changing of the <acronym class="acronym">WAL</acronym> logging status of a table after creation with <a class="link" href="sql-altertable.html" title="ALTER TABLE"><code class="command">ALTER TABLE ... SET LOGGED / UNLOGGED</code></a> (Fabrízio de Royes Mello) </p></li><li class="listitem"><p> Add <code class="literal">IF NOT EXISTS</code> clause to <a class="link" href="sql-createtableas.html" title="CREATE TABLE AS"><code class="command">CREATE TABLE AS</code></a>, <a class="link" href="sql-createindex.html" title="CREATE INDEX"><code class="command">CREATE INDEX</code></a>, <a class="link" href="sql-createsequence.html" title="CREATE SEQUENCE"><code class="command">CREATE SEQUENCE</code></a>, and <a class="link" href="sql-creatematerializedview.html" title="CREATE MATERIALIZED VIEW"><code class="command">CREATE MATERIALIZED VIEW</code></a> (Fabrízio de Royes Mello) </p></li><li class="listitem"><p> Add support for <code class="literal">IF EXISTS</code> to <a class="link" href="sql-altertable.html" title="ALTER TABLE"><code class="command">ALTER TABLE ... RENAME CONSTRAINT</code></a> (Bruce Momjian) </p></li><li class="listitem"><p> Allow some DDL commands to accept <code class="literal">CURRENT_USER</code> or <code class="literal">SESSION_USER</code>, meaning the current user or session user, in place of a specific user name (Kyotaro Horiguchi, Álvaro Herrera) </p><p> This feature is now supported in <a class="xref" href="sql-alteruser.html" title="ALTER USER"><span class="refentrytitle">ALTER USER</span></a>, <a class="xref" href="sql-altergroup.html" title="ALTER GROUP"><span class="refentrytitle">ALTER GROUP</span></a>, <a class="xref" href="sql-alterrole.html" title="ALTER ROLE"><span class="refentrytitle">ALTER ROLE</span></a>, <a class="xref" href="sql-grant.html" title="GRANT"><span class="refentrytitle">GRANT</span></a>, and <code class="command">ALTER <em class="replaceable"><code>object</code></em> OWNER TO</code> commands. </p></li><li class="listitem"><p> Support comments on <a class="link" href="sql-createdomain.html" title="CREATE DOMAIN">domain constraints</a> (Álvaro Herrera) </p></li><li class="listitem"><p> Reduce lock levels of some create and alter trigger and foreign key commands (Simon Riggs, Andreas Karlsson) </p></li><li class="listitem"><p> Allow <a class="link" href="sql-lock.html" title="LOCK"><code class="command">LOCK TABLE ... ROW EXCLUSIVE MODE</code></a> for those with <code class="command">INSERT</code> privileges on the target table (Stephen Frost) </p><p> Previously this command required <code class="command">UPDATE</code>, <code class="command">DELETE</code>, or <code class="command">TRUNCATE</code> privileges. </p></li><li class="listitem"><p> Apply table and domain <code class="literal">CHECK</code> constraints in order by name (Tom Lane) </p><p> The previous ordering was indeterminate. </p></li><li class="listitem"><p> Allow <a class="link" href="sql-createdatabase.html" title="CREATE DATABASE"><code class="command">CREATE</code></a>/<a class="link" href="sql-alterdatabase.html" title="ALTER DATABASE"><code class="command">ALTER DATABASE</code></a> to manipulate <code class="structname">datistemplate</code> and <code class="structname">datallowconn</code> (Vik Fearing) </p><p> This allows these per-database settings to be changed without manually modifying the <a class="link" href="catalog-pg-database.html" title="52.15. pg_database"><code class="structname">pg_database</code></a> system catalog. </p></li></ul></div><div class="sect4" id="id-1.11.6.41.5.7.3"><div class="titlepage"><div><div><h5 class="title">E.37.3.5.1. <a class="link" href="ddl-foreign-data.html" title="5.11. Foreign Data">Foreign Tables</a></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Add support for <a class="xref" href="sql-importforeignschema.html" title="IMPORT FOREIGN SCHEMA"><span class="refentrytitle">IMPORT FOREIGN SCHEMA</span></a> (Ronan Dunklau, Michael Paquier, Tom Lane) </p><p> This command allows automatic creation of local foreign tables that match the structure of existing tables on a remote server. </p></li><li class="listitem"><p> Allow <code class="literal">CHECK</code> constraints to be placed on foreign tables (Shigeru Hanada, Etsuro Fujita) </p><p> Such constraints are assumed to be enforced on the remote server, and are not enforced locally. However, they are assumed to hold for purposes of query optimization, such as <a class="link" href="ddl-partitioning.html#DDL-PARTITIONING-CONSTRAINT-EXCLUSION" title="5.10.5. Partitioning and Constraint Exclusion">constraint exclusion</a>. </p></li><li class="listitem"><p> Allow foreign tables to participate in inheritance (Shigeru Hanada, Etsuro Fujita) </p><p> To let this work naturally, foreign tables are now allowed to have check constraints marked as not valid, and to set storage and <code class="type">OID</code> characteristics, even though these operations are effectively no-ops for a foreign table. </p></li><li class="listitem"><p> Allow foreign data wrappers and custom scans to implement join pushdown (KaiGai Kohei) </p></li></ul></div></div><div class="sect4" id="id-1.11.6.41.5.7.4"><div class="titlepage"><div><div><h5 class="title">E.37.3.5.2. <a class="link" href="event-triggers.html" title="Chapter 40. Event Triggers">Event Triggers</a></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Whenever a <code class="literal">ddl_command_end</code> event trigger is installed, capture details of <acronym class="acronym">DDL</acronym> activity for it to inspect (Álvaro Herrera) </p><p> This information is available through a set-returning function <a class="link" href="functions-event-triggers.html#PG-EVENT-TRIGGER-DDL-COMMAND-END-FUNCTIONS" title="9.28.1. Capturing Changes at Command End"><code class="function">pg_event_trigger_ddl_commands()</code></a>, or by inspection of C data structures if that function doesn't provide enough detail. </p></li><li class="listitem"><p> Allow event triggers on table rewrites caused by <a class="link" href="sql-altertable.html" title="ALTER TABLE"><code class="command">ALTER TABLE</code></a> (Dimitri Fontaine) </p></li><li class="listitem"><p> Add event trigger support for database-level <a class="link" href="sql-comment.html" title="COMMENT"><code class="command">COMMENT</code></a>, <a class="link" href="sql-security-label.html" title="SECURITY LABEL"><code class="command">SECURITY LABEL</code></a>, and <a class="link" href="sql-grant.html" title="GRANT"><code class="command">GRANT</code></a>/<a class="link" href="sql-revoke.html" title="REVOKE"><code class="command">REVOKE</code></a> (Álvaro Herrera) </p></li><li class="listitem"><p> Add columns to the output of <a class="link" href="functions-event-triggers.html#PG-EVENT-TRIGGER-SQL-DROP-FUNCTIONS" title="9.28.2. Processing Objects Dropped by a DDL Command"><code class="function">pg_event_trigger_dropped_objects</code></a> (Álvaro Herrera) </p><p> This allows simpler processing of delete operations. </p></li></ul></div></div></div><div class="sect3" id="id-1.11.6.41.5.8"><div class="titlepage"><div><div><h4 class="title">E.37.3.6. Data Types</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Allow the <a class="link" href="datatype-xml.html" title="8.13. XML Type"><code class="type">xml</code></a> data type to accept empty or all-whitespace content values (Peter Eisentraut) </p><p> This is required by the <acronym class="acronym">SQL</acronym>/<acronym class="acronym">XML</acronym> specification. </p></li><li class="listitem"><p> Allow <a class="link" href="datatype-net-types.html#DATATYPE-MACADDR" title="8.9.4. macaddr"><code class="type">macaddr</code></a> input using the format <code class="literal">xxxx-xxxx-xxxx</code> (Herwin Weststrate) </p></li><li class="listitem"><p> Disallow non-SQL-standard syntax for <a class="link" href="datatype-datetime.html#DATATYPE-INTERVAL-INPUT" title="8.5.4. Interval Input"><code class="type">interval</code></a> with both precision and field specifications (Bruce Momjian) </p><p> Per the standard, such type specifications should be written as, for example, <code class="literal">INTERVAL MINUTE TO SECOND(2)</code>. <span class="productname">PostgreSQL</span> formerly allowed this to be written as <code class="literal">INTERVAL(2) MINUTE TO SECOND</code>, but it must now be written in the standard way. </p></li><li class="listitem"><p> Add selectivity estimators for <a class="link" href="datatype-net-types.html#DATATYPE-INET" title="8.9.1. inet"><code class="type">inet</code></a>/<a class="link" href="datatype-net-types.html#DATATYPE-CIDR" title="8.9.2. cidr"><code class="type">cidr</code></a> operators and improve estimators for text search functions (Emre Hasegeli, Tom Lane) </p></li><li class="listitem"><p> Add data types <a class="link" href="datatype-oid.html#DATATYPE-OID-TABLE" title="Table 8.24. Object Identifier Types"><code class="type">regrole</code></a> and <a class="link" href="datatype-oid.html#DATATYPE-OID-TABLE" title="Table 8.24. Object Identifier Types"><code class="type">regnamespace</code></a> to simplify entering and pretty-printing the <code class="type">OID</code> of a role or namespace (Kyotaro Horiguchi) </p></li></ul></div><div class="sect4" id="id-1.11.6.41.5.8.3"><div class="titlepage"><div><div><h5 class="title">E.37.3.6.1. <a class="link" href="datatype-json.html" title="8.14. JSON Types"><acronym class="acronym">JSON</acronym></a></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Add <code class="type">jsonb</code> functions <a class="link" href="functions-json.html#FUNCTIONS-JSON-PROCESSING-TABLE" title="Table 9.46. JSON Processing Functions"><code class="function">jsonb_set()</code></a> and <a class="link" href="functions-json.html#FUNCTIONS-JSON-PROCESSING-TABLE" title="Table 9.46. JSON Processing Functions"><code class="function">jsonb_pretty()</code></a> (Dmitry Dolgov, Andrew Dunstan, Petr Jelínek) </p></li><li class="listitem"><p> Add <code class="type">jsonb</code> generator functions <a class="link" href="functions-json.html#FUNCTIONS-JSON-CREATION-TABLE" title="Table 9.45. JSON Creation Functions"><code class="function">to_jsonb()</code></a>, <a class="link" href="functions-json.html#FUNCTIONS-JSON-CREATION-TABLE" title="Table 9.45. JSON Creation Functions"><code class="function">jsonb_object()</code></a>, <a class="link" href="functions-json.html#FUNCTIONS-JSON-CREATION-TABLE" title="Table 9.45. JSON Creation Functions"><code class="function">jsonb_build_object()</code></a>, <a class="link" href="functions-json.html#FUNCTIONS-JSON-CREATION-TABLE" title="Table 9.45. JSON Creation Functions"><code class="function">jsonb_build_array()</code></a>, <a class="link" href="functions-aggregate.html#FUNCTIONS-AGGREGATE-TABLE" title="Table 9.52. General-Purpose Aggregate Functions"><code class="function">jsonb_agg()</code></a>, and <a class="link" href="functions-aggregate.html#FUNCTIONS-AGGREGATE-TABLE" title="Table 9.52. General-Purpose Aggregate Functions"><code class="function">jsonb_object_agg()</code></a> (Andrew Dunstan) </p><p> Equivalent functions already existed for type <code class="type">json</code>. </p></li><li class="listitem"><p> Reduce casting requirements to/from <a class="link" href="datatype-json.html" title="8.14. JSON Types"><code class="type">json</code></a> and <a class="link" href="datatype-json.html" title="8.14. JSON Types"><code class="type">jsonb</code></a> (Tom Lane) </p></li><li class="listitem"><p> Allow <code class="type">text</code>, <code class="type">text</code> array, and <code class="type">integer</code> values to be <a class="link" href="functions-json.html#FUNCTIONS-JSONB-OP-TABLE" title="Table 9.44. Additional jsonb Operators">subtracted</a> from <code class="type">jsonb</code> documents (Dmitry Dolgov, Andrew Dunstan) </p></li><li class="listitem"><p> Add <code class="type">jsonb</code> <a class="link" href="functions-json.html#FUNCTIONS-JSONB-OP-TABLE" title="Table 9.44. Additional jsonb Operators"><code class="literal">||</code></a> operator (Dmitry Dolgov, Andrew Dunstan) </p></li><li class="listitem"><p> Add <a class="link" href="functions-json.html#FUNCTIONS-JSON-PROCESSING-TABLE" title="Table 9.46. JSON Processing Functions"><code class="function">json_strip_nulls()</code></a> and <a class="link" href="functions-json.html#FUNCTIONS-JSON-PROCESSING-TABLE" title="Table 9.46. JSON Processing Functions"><code class="function">jsonb_strip_nulls()</code></a> functions to remove JSON null values from documents (Andrew Dunstan) </p></li></ul></div></div></div><div class="sect3" id="id-1.11.6.41.5.9"><div class="titlepage"><div><div><h4 class="title">E.37.3.7. Functions</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Add <a class="link" href="functions-srf.html" title="9.24. Set Returning Functions"><code class="function">generate_series()</code></a> for <code class="type">numeric</code> values (Plato Malugin) </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">array_agg()</code></a> and <code class="function">ARRAY()</code> to take arrays as inputs (Ali Akbar, Tom Lane) </p></li><li class="listitem"><p> Add functions <a class="link" href="functions-array.html#ARRAY-FUNCTIONS-TABLE" title="Table 9.49. Array Functions"><code class="function">array_position()</code></a> and <a class="link" href="functions-array.html#ARRAY-FUNCTIONS-TABLE" title="Table 9.49. Array Functions"><code class="function">array_positions()</code></a> to return subscripts of array values (Pavel Stehule) </p></li><li class="listitem"><p> Add a <code class="type">point</code>-to-<code class="type">polygon</code> distance operator <a class="link" href="functions-geometry.html#FUNCTIONS-GEOMETRY-OP-TABLE" title="Table 9.33. Geometric Operators"><-></a> (Alexander Korotkov) </p></li><li class="listitem"><p> Allow multibyte characters as escapes in <a class="link" href="functions-matching.html#FUNCTIONS-SIMILARTO-REGEXP" title="9.7.2. SIMILAR TO Regular Expressions"><code class="literal">SIMILAR TO</code></a> and <a class="link" href="functions-string.html#FUNCTIONS-STRING-SQL" title="Table 9.8. SQL String Functions and Operators"><code class="literal">SUBSTRING</code></a> (Jeff Davis) </p><p> Previously, only a single-byte character was allowed as an escape. </p></li><li class="listitem"><p> Add a <a class="link" href="functions-math.html#FUNCTIONS-MATH-FUNC-TABLE" title="Table 9.5. Mathematical Functions"><code class="function">width_bucket()</code></a> variant that supports any sortable data type and non-uniform bucket widths (Petr Jelínek) </p></li><li class="listitem"><p> Add an optional <em class="replaceable"><code>missing_ok</code></em> argument to <a class="link" href="functions-admin.html#FUNCTIONS-ADMIN-GENFILE-TABLE" title="Table 9.88. Generic File Access Functions"><code class="function">pg_read_file()</code></a> and related functions (Michael Paquier, Heikki Linnakangas) </p></li><li class="listitem"><p> Allow <a class="link" href="sql-syntax-calling-funcs.html" title="4.3. Calling Functions"><code class="literal">=></code></a> to specify named parameters in function calls (Pavel Stehule) </p><p> Previously only <code class="literal">:=</code> could be used. This requires removing the possibility for <code class="literal">=></code> to be a user-defined operator. Creation of user-defined <code class="literal">=></code> operators has been issuing warnings since PostgreSQL 9.0. </p></li><li class="listitem"><p> Add <acronym class="acronym">POSIX</acronym>-compliant rounding for platforms that use PostgreSQL-supplied rounding functions (Pedro Gimeno Fortea) </p></li></ul></div><div class="sect4" id="id-1.11.6.41.5.9.3"><div class="titlepage"><div><div><h5 class="title">E.37.3.7.1. System Information Functions and Views</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Add function <a class="link" href="functions-info.html#FUNCTIONS-INFO-OBJECT-TABLE" title="Table 9.67. Object Information and Addressing Functions"><code class="function">pg_get_object_address()</code></a> to return <code class="type">OID</code>s that uniquely identify an object, and function <a class="link" href="functions-info.html#FUNCTIONS-INFO-OBJECT-TABLE" title="Table 9.67. Object Information and Addressing Functions"><code class="function">pg_identify_object_as_address()</code></a> to return object information based on <code class="type">OID</code>s (Álvaro Herrera) </p></li><li class="listitem"><p> Loosen security checks for viewing queries in <a class="link" href="monitoring-stats.html#PG-STAT-ACTIVITY-VIEW" title="Table 28.3. pg_stat_activity View"><code class="structname">pg_stat_activity</code></a>, executing <a class="link" href="functions-admin.html#FUNCTIONS-ADMIN-SIGNAL-TABLE" title="Table 9.78. Server Signaling Functions"><code class="function">pg_cancel_backend()</code></a>, and executing <a class="link" href="functions-admin.html#FUNCTIONS-ADMIN-SIGNAL-TABLE" title="Table 9.78. Server Signaling Functions"><code class="function">pg_terminate_backend()</code></a> (Stephen Frost) </p><p> Previously, only the specific role owning the target session could perform these operations; now membership in that role is sufficient. </p></li><li class="listitem"><p> Add <a class="link" href="monitoring-stats.html#MONITORING-STATS-FUNCS-TABLE" title="Table 28.19. Additional Statistics Functions"><code class="function">pg_stat_get_snapshot_timestamp()</code></a> to output the time stamp of the statistics snapshot (Matt Kelly) </p><p> This represents the last time the snapshot file was written to the file system. </p></li><li class="listitem"><p> Add <a class="link" href="routine-vacuuming.html#VACUUM-FOR-MULTIXACT-WRAPAROUND" title="24.1.5.1. Multixacts and Wraparound"><code class="function">mxid_age()</code></a> to compute multi-xid age (Bruce Momjian) </p></li></ul></div></div><div class="sect4" id="id-1.11.6.41.5.9.4"><div class="titlepage"><div><div><h5 class="title">E.37.3.7.2. Aggregates</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Add <code class="function">min()</code>/<code class="function">max()</code> aggregates for <a class="link" href="datatype-net-types.html#DATATYPE-INET" title="8.9.1. inet"><code class="type">inet</code></a>/<a class="link" href="datatype-net-types.html#DATATYPE-CIDR" title="8.9.2. cidr"><code class="type">cidr</code></a> data types (Haribabu Kommi) </p></li><li class="listitem"><p> Use 128-bit integers, where supported, as accumulators for some aggregate functions (Andreas Karlsson) </p></li></ul></div></div></div><div class="sect3" id="id-1.11.6.41.5.10"><div class="titlepage"><div><div><h4 class="title">E.37.3.8. Server-Side Languages</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Improve support for composite types in <a class="link" href="plpython.html" title="Chapter 46. PL/Python - Python Procedural Language"><span class="application">PL/Python</span></a> (Ed Behn, Ronan Dunklau) </p><p> This allows <span class="application">PL/Python</span> functions to return arrays of composite types. </p></li><li class="listitem"><p> Reduce lossiness of <a class="link" href="plpython.html" title="Chapter 46. PL/Python - Python Procedural Language"><span class="application">PL/Python</span></a> floating-point value conversions (Marko Kreen) </p></li><li class="listitem"><p> Allow specification of conversion routines between <acronym class="acronym">SQL</acronym> data types and data types of procedural languages (Peter Eisentraut) </p><p> This change adds new commands <a class="link" href="sql-createtransform.html" title="CREATE TRANSFORM"><code class="command">CREATE</code></a>/<a class="link" href="sql-droptransform.html" title="DROP TRANSFORM"><code class="command">DROP TRANSFORM</code></a>. This also adds optional transformations between the <a class="link" href="hstore.html" title="F.16. hstore"><span class="application">hstore</span></a> and <a class="link" href="ltree.html" title="F.21. ltree"><span class="application">ltree</span></a> types to/from <a class="link" href="plperl.html" title="Chapter 45. PL/Perl - Perl Procedural Language"><span class="application">PL/Perl</span></a> and <a class="link" href="plpython.html" title="Chapter 46. PL/Python - Python Procedural Language"><span class="application">PL/Python</span></a>. </p></li></ul></div><div class="sect4" id="id-1.11.6.41.5.10.3"><div class="titlepage"><div><div><h5 class="title">E.37.3.8.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> Improve <a class="link" href="plpgsql.html" title="Chapter 43. PL/pgSQL - SQL Procedural Language"><span class="application">PL/pgSQL</span></a> array performance (Tom Lane) </p></li><li class="listitem"><p> Add an <a class="link" href="plpgsql-errors-and-messages.html#PLPGSQL-STATEMENTS-ASSERT" title="43.9.2. Checking Assertions"><code class="command">ASSERT</code></a> statement in <span class="application">PL/pgSQL</span> (Pavel Stehule) </p></li><li class="listitem"><p> Allow more <a class="link" href="plpgsql.html" title="Chapter 43. PL/pgSQL - SQL Procedural Language"><span class="application">PL/pgSQL</span></a> keywords to be used as identifiers (Tom Lane) </p></li></ul></div></div></div><div class="sect3" id="id-1.11.6.41.5.11"><div class="titlepage"><div><div><h4 class="title">E.37.3.9. Client Applications</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Move <a class="link" href="pgarchivecleanup.html" title="pg_archivecleanup"><span class="application">pg_archivecleanup</span></a>, <a class="link" href="pgtestfsync.html" title="pg_test_fsync"><span class="application">pg_test_fsync</span></a>, <a class="link" href="pgtesttiming.html" title="pg_test_timing"><span class="application">pg_test_timing</span></a>, and <a class="link" href="pgwaldump.html" title="pg_waldump"><span class="application">pg_xlogdump</span></a> from <code class="filename">contrib</code> to <code class="filename">src/bin</code> (Peter Eisentraut) </p><p> This should result in these programs being installed by default in most installations. </p></li><li class="listitem"><p> Add <a class="link" href="app-pgrewind.html" title="pg_rewind"><span class="application">pg_rewind</span></a>, which allows re-synchronizing a master server after failback (Heikki Linnakangas) </p></li><li class="listitem"><p> Allow <a class="link" href="app-pgreceivewal.html" title="pg_receivewal"><span class="application">pg_receivexlog</span></a> to manage physical replication slots (Michael Paquier) </p><p> This is controlled via new <code class="option">--create-slot</code> and <code class="option">--drop-slot</code> options. </p></li><li class="listitem"><p> Allow <a class="link" href="app-pgreceivewal.html" title="pg_receivewal"><span class="application">pg_receivexlog</span></a> to synchronously flush <acronym class="acronym">WAL</acronym> to storage using new <code class="option">--synchronous</code> option (Furuya Osamu, Fujii Masao) </p><p> Without this, <acronym class="acronym">WAL</acronym> files are fsync'ed only on close. </p></li><li class="listitem"><p> Allow <a class="link" href="app-vacuumdb.html" title="vacuumdb"><span class="application">vacuumdb</span></a> to vacuum in parallel using new <code class="option">--jobs</code> option (Dilip Kumar) </p></li><li class="listitem"><p> In <a class="link" href="app-vacuumdb.html" title="vacuumdb"><span class="application">vacuumdb</span></a>, do not prompt for the same password repeatedly when multiple connections are necessary (Haribabu Kommi, Michael Paquier) </p></li><li class="listitem"><p> Add <code class="option">--verbose</code> option to <a class="link" href="app-reindexdb.html" title="reindexdb"><span class="application">reindexdb</span></a> (Sawada Masahiko) </p></li><li class="listitem"><p> Make <a class="link" href="app-pgbasebackup.html" title="pg_basebackup"><span class="application">pg_basebackup</span></a> use a tablespace mapping file when using <span class="application">tar</span> format, to support symbolic links and file paths of 100+ characters in length on <span class="systemitem">MS Windows</span> (Amit Kapila) </p></li><li class="listitem"><p> Add <a class="link" href="pgwaldump.html" title="pg_waldump"><span class="application">pg_xlogdump</span></a> option <code class="option">--stats</code> to display summary statistics (Abhijit Menon-Sen) </p></li></ul></div><div class="sect4" id="id-1.11.6.41.5.11.3"><div class="titlepage"><div><div><h5 class="title">E.37.3.9.1. <a class="xref" href="app-psql.html" title="psql"><span class="refentrytitle"><span class="application">psql</span></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">psql</span> to produce AsciiDoc output (Szymon Guz) </p></li><li class="listitem"><p> Add an <code class="literal">errors</code> mode that displays only failed commands to <span class="application">psql</span>'s <code class="varname">ECHO</code> variable (Pavel Stehule) </p><p> This behavior can also be selected with <span class="application">psql</span>'s <code class="option">-b</code> option. </p></li><li class="listitem"><p> Provide separate column, header, and border linestyle control in <span class="application">psql</span>'s unicode linestyle (Pavel Stehule) </p><p> Single or double lines are supported; the default is <code class="literal">single</code>. </p></li><li class="listitem"><p> Add new option <code class="literal">%l</code> in <span class="application">psql</span>'s <a class="link" href="app-psql.html#APP-PSQL-VARIABLES" title="Variables"><code class="envar">PROMPT</code></a> variables to display the current multiline statement line number (Sawada Masahiko) </p></li><li class="listitem"><p> Add <code class="literal">\pset</code> option <a class="link" href="app-psql.html#APP-PSQL-META-COMMANDS" title="Meta-Commands"><code class="varname">pager_min_lines</code></a> to control pager invocation (Andrew Dunstan) </p></li><li class="listitem"><p> Improve <span class="application">psql</span> line counting used when deciding to invoke the pager (Andrew Dunstan) </p></li><li class="listitem"><p> <span class="application">psql</span> now fails if the file specified by an <code class="option">--output</code> or <code class="option">--log-file</code> switch cannot be written (Tom Lane, Daniel Vérité) </p><p> Previously, it effectively ignored the switch in such cases. </p></li><li class="listitem"><p> Add <span class="application">psql</span> tab completion when setting the <a class="xref" href="runtime-config-client.html#GUC-SEARCH-PATH">search_path</a> variable (Jeff Janes) </p><p> Currently only the first schema can be tab-completed. </p></li><li class="listitem"><p> Improve <span class="application">psql</span>'s tab completion for triggers and rules (Andreas Karlsson) </p></li></ul></div><div class="sect5" id="id-1.11.6.41.5.11.3.3"><div class="titlepage"><div><div><h6 class="title">E.37.3.9.1.1. <a class="link" href="app-psql.html#APP-PSQL-META-COMMANDS" title="Meta-Commands">Backslash Commands</a></h6></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Add <span class="application">psql</span> <code class="command">\?</code> help sections <code class="literal">variables</code> and <code class="literal">options</code> (Pavel Stehule) </p><p> <code class="literal">\? variables</code> shows <span class="application">psql</span>'s special variables and <code class="literal">\? options</code> shows the command-line options. <code class="command">\? commands</code> shows the meta-commands, which is the traditional output and remains the default. These help displays can also be obtained with the command-line option <code class="literal">--help=<em class="replaceable"><code>section</code></em></code>. </p></li><li class="listitem"><p> Show tablespace size in <span class="application">psql</span>'s <code class="literal">\db+</code> (Fabrízio de Royes Mello) </p></li><li class="listitem"><p> Show data type owners in <span class="application">psql</span>'s <code class="literal">\dT+</code> (Magnus Hagander) </p></li><li class="listitem"><p> Allow <span class="application">psql</span>'s <code class="command">\watch</code> to output <code class="command">\timing</code> information (Fujii Masao) </p><p> Also prevent <code class="option">--echo-hidden</code> from echoing <code class="command">\watch</code> queries, since that is generally unwanted. </p></li><li class="listitem"><p> Make <span class="application">psql</span>'s <code class="literal">\sf</code> and <code class="literal">\ef</code> commands honor <code class="envar">ECHO_HIDDEN</code> (Andrew Dunstan) </p></li><li class="listitem"><p> Improve <span class="application">psql</span> tab completion for <code class="command">\set</code>, <code class="command">\unset</code>, and <code class="literal">:variable</code> names (Pavel Stehule) </p></li><li class="listitem"><p> Allow tab completion of role names in <span class="application">psql</span> <code class="literal">\c</code> commands (Ian Barwick) </p></li></ul></div></div></div><div class="sect4" id="id-1.11.6.41.5.11.4"><div class="titlepage"><div><div><h5 class="title">E.37.3.9.2. <a class="xref" href="app-pgdump.html" title="pg_dump"><span class="refentrytitle">pg_dump</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_dump</span> to share a snapshot taken by another session using <code class="option">--snapshot</code> (Simon Riggs, Michael Paquier) </p><p> The remote snapshot must have been exported by <code class="function">pg_export_snapshot()</code> or logical replication slot creation. This can be used to share a consistent snapshot across multiple <span class="application">pg_dump</span> processes. </p></li><li class="listitem"><p> Support table sizes exceeding 8GB in tar archive format (Tom Lane) </p><p> The POSIX standard for tar format does not allow elements of a tar archive to exceed 8GB, but most modern implementations of tar support an extension that does allow it. Use the extension format when necessary, rather than failing. </p></li><li class="listitem"><p> Make <span class="application">pg_dump</span> always print the server and <span class="application">pg_dump</span> versions (Jing Wang) </p><p> Previously, version information was only printed in <code class="option">--verbose</code> mode. </p></li><li class="listitem"><p> Remove the long-ignored <code class="option">-i</code>/<code class="option">--ignore-version</code> option from <span class="application">pg_dump</span>, <span class="application">pg_dumpall</span>, and <span class="application">pg_restore</span> (Fujii Masao) </p></li></ul></div></div><div class="sect4" id="id-1.11.6.41.5.11.5"><div class="titlepage"><div><div><h5 class="title">E.37.3.9.3. <a class="xref" href="app-pg-ctl.html" title="pg_ctl"><span class="refentrytitle"><span class="application">pg_ctl</span></span></a></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Support multiple <span class="application">pg_ctl</span> <code class="option">-o</code> options, concatenating their values (Bruce Momjian) </p></li><li class="listitem"><p> Allow control of <span class="application">pg_ctl</span>'s event source logging on <span class="systemitem">MS Windows</span> (MauMau) </p><p> This only controls <span class="application">pg_ctl</span>, not the server, which has separate settings in <code class="filename">postgresql.conf</code>. </p></li><li class="listitem"><p> If the server's listen address is set to a wildcard value (<code class="literal">0.0.0.0</code> in IPv4 or <code class="literal">::</code> in IPv6), connect via the loopback address rather than trying to use the wildcard address literally (Kondo Yuta) </p><p> This fix primarily affects Windows, since on other platforms <span class="application">pg_ctl</span> will prefer to use a Unix-domain socket. </p></li></ul></div></div><div class="sect4" id="id-1.11.6.41.5.11.6"><div class="titlepage"><div><div><h5 class="title">E.37.3.9.4. <a class="xref" href="pgupgrade.html" title="pg_upgrade"><span class="refentrytitle"><span class="application">pg_upgrade</span></span></a></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Move <span class="application">pg_upgrade</span> from <code class="filename">contrib</code> to <code class="filename">src/bin</code> (Peter Eisentraut) </p><p> In connection with this change, the functionality previously provided by the <span class="application">pg_upgrade_support</span> module has been moved into the core server. </p></li><li class="listitem"><p> Support multiple <span class="application">pg_upgrade</span> <code class="option">-o</code>/<code class="option">-O</code> options, concatenating their values (Bruce Momjian) </p></li><li class="listitem"><p> Improve database collation comparisons in <span class="application">pg_upgrade</span> (Heikki Linnakangas) </p></li><li class="listitem"><p> Remove support for upgrading from 8.3 clusters (Bruce Momjian) </p></li></ul></div></div><div class="sect4" id="id-1.11.6.41.5.11.7"><div class="titlepage"><div><div><h5 class="title">E.37.3.9.5. <a class="xref" href="pgbench.html" title="pgbench"><span class="refentrytitle"><span class="application">pgbench</span></span></a></h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Move pgbench from <code class="filename">contrib</code> to <code class="filename">src/bin</code> (Peter Eisentraut) </p></li><li class="listitem"><p> Fix calculation of TPS number <span class="quote">“<span class="quote">excluding connections establishing</span>”</span> (Tatsuo Ishii, Fabien Coelho) </p><p> The overhead for connection establishment was miscalculated whenever the number of pgbench threads was less than the number of client connections. Although this is clearly a bug, we won't back-patch it into pre-9.5 branches since it makes TPS numbers not comparable to previous results. </p></li><li class="listitem"><p> Allow counting of pgbench transactions that take over a specified amount of time (Fabien Coelho) </p><p> This is controlled by a new <code class="option">--latency-limit</code> option. </p></li><li class="listitem"><p> Allow pgbench to generate Gaussian/exponential distributions using <code class="command">\setrandom</code> (Kondo Mitsumasa, Fabien Coelho) </p></li><li class="listitem"><p> Allow <span class="application">pgbench</span>'s <code class="command">\set</code> command to handle arithmetic expressions containing more than one operator, and add <code class="literal">%</code> (modulo) to the set of operators it supports (Robert Haas, Fabien Coelho) </p></li></ul></div></div></div><div class="sect3" id="id-1.11.6.41.5.12"><div class="titlepage"><div><div><h4 class="title">E.37.3.10. Source Code</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Simplify <a class="link" href="wal.html" title="Chapter 30. Reliability and the Write-Ahead Log"><acronym class="acronym">WAL</acronym></a> record format (Heikki Linnakangas) </p><p> This allows external tools to more easily track what blocks are modified. </p></li><li class="listitem"><p> Improve the representation of transaction commit and abort WAL records (Andres Freund) </p></li><li class="listitem"><p> Add atomic memory operations <acronym class="acronym">API</acronym> (Andres Freund) </p></li><li class="listitem"><p> Allow custom path and scan methods (KaiGai Kohei, Tom Lane) </p><p> This allows extensions greater control over the optimizer and executor. </p></li><li class="listitem"><p> Allow foreign data wrappers to do post-filter locking (Etsuro Fujita) </p></li><li class="listitem"><p> Foreign tables can now take part in <code class="command">INSERT ... ON CONFLICT DO NOTHING</code> queries (Peter Geoghegan, Heikki Linnakangas, Andres Freund) </p><p> Foreign data wrappers must be modified to handle this. <code class="command">INSERT ... ON CONFLICT DO UPDATE</code> is not supported on foreign tables. </p></li><li class="listitem"><p> Improve <code class="function">hash_create()</code>'s API for selecting simple-binary-key hash functions (Teodor Sigaev, Tom Lane) </p></li><li class="listitem"><p> Improve parallel execution infrastructure (Robert Haas, Amit Kapila, Noah Misch, Rushabh Lathia, Jeevan Chalke) </p></li><li class="listitem"><p> Remove <span class="productname">Alpha</span> (<acronym class="acronym">CPU</acronym>) and <span class="systemitem">Tru64</span> (OS) ports (Andres Freund) </p></li><li class="listitem"><p> Remove swap-byte-based spinlock implementation for <acronym class="acronym">ARM</acronym>v5 and earlier <acronym class="acronym">CPU</acronym>s (Robert Haas) </p><p> <acronym class="acronym">ARM</acronym>v5's weak memory ordering made this locking implementation unsafe. Spinlock support is still possible on newer gcc implementations with atomics support. </p></li><li class="listitem"><p> Generate an error when excessively long (100+ character) file paths are written to tar files (Peter Eisentraut) </p><p> Tar does not support such overly-long paths. </p></li><li class="listitem"><p> Change index operator class for columns <a class="link" href="catalog-pg-seclabel.html" title="52.45. pg_seclabel"><code class="structname">pg_seclabel</code></a>.<code class="structname">provider</code> and <a class="link" href="catalog-pg-shseclabel.html" title="52.49. pg_shseclabel"><code class="structname">pg_shseclabel</code></a>.<code class="structname">provider</code> to be <code class="literal">text_pattern_ops</code> (Tom Lane) </p><p> This avoids possible problems with these indexes when different databases of a cluster have different default collations. </p></li><li class="listitem"><p> Change the spinlock primitives to function as compiler barriers (Robert Haas) </p></li></ul></div><div class="sect4" id="id-1.11.6.41.5.12.3"><div class="titlepage"><div><div><h5 class="title">E.37.3.10.1. MS Windows</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Allow higher-precision time stamp resolution on <span class="systemitem">Windows 8</span>, <span class="systemitem">Windows Server 2012</span>, and later Windows systems (Craig Ringer) </p></li><li class="listitem"><p> Install shared libraries to <code class="filename">bin</code> in <span class="systemitem">MS Windows</span> (Peter Eisentraut, Michael Paquier) </p></li><li class="listitem"><p> Install <code class="filename">src/test/modules</code> together with <code class="filename">contrib</code> on <span class="productname">MSVC</span> builds (Michael Paquier) </p></li><li class="listitem"><p> Allow <a class="link" href="install-procedure.html" title="16.4. Installation Procedure">configure</a>'s <code class="option">--with-extra-version</code> option to be honored by the <span class="productname">MSVC</span> build (Michael Paquier) </p></li><li class="listitem"><p> Pass <code class="envar">PGFILEDESC</code> into <span class="productname">MSVC</span> contrib builds (Michael Paquier) </p></li><li class="listitem"><p> Add icons to all <span class="productname">MSVC</span>-built binaries and version information to all <span class="systemitem">MS Windows</span> binaries (Noah Misch) </p><p> MinGW already had such icons. </p></li><li class="listitem"><p> Add optional-argument support to the internal <code class="function">getopt_long()</code> implementation (Michael Paquier, Andres Freund) </p><p> This is used by the <span class="productname">MSVC</span> build. </p></li></ul></div></div></div><div class="sect3" id="id-1.11.6.41.5.13"><div class="titlepage"><div><div><h4 class="title">E.37.3.11. Additional Modules</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Add statistics for minimum, maximum, mean, and standard deviation times to <a class="link" href="pgstatstatements.html#PGSTATSTATEMENTS-COLUMNS" title="Table F.21. pg_stat_statements Columns"><span class="application">pg_stat_statements</span></a> (Mitsumasa Kondo, Andrew Dunstan) </p></li><li class="listitem"><p> Add <a class="link" href="pgcrypto.html" title="F.25. pgcrypto"><span class="application">pgcrypto</span></a> function <code class="function">pgp_armor_headers()</code> to extract <span class="productname">PGP</span> armor headers (Marko Tiikkaja, Heikki Linnakangas) </p></li><li class="listitem"><p> Allow empty replacement strings in <a class="link" href="unaccent.html" title="F.43. unaccent"><span class="application">unaccent</span></a> (Mohammad Alhashash) </p><p> This is useful in languages where diacritic signs are represented as separate characters. </p></li><li class="listitem"><p> Allow multicharacter source strings in <a class="link" href="unaccent.html" title="F.43. unaccent"><span class="application">unaccent</span></a> (Tom Lane) </p><p> This could be useful in languages where diacritic signs are represented as separate characters. It also allows more complex unaccent dictionaries. </p></li><li class="listitem"><p> Add <code class="filename">contrib</code> modules <a class="link" href="tsm-system-rows.html" title="F.41. tsm_system_rows"><span class="application">tsm_system_rows</span></a> and <a class="link" href="tsm-system-time.html" title="F.42. tsm_system_time"><span class="application">tsm_system_time</span></a> to allow additional table sampling methods (Petr Jelínek) </p></li><li class="listitem"><p> Add <a class="link" href="gin.html" title="Chapter 66. GIN Indexes"><acronym class="acronym">GIN</acronym></a> index inspection functions to <a class="link" href="pageinspect.html" title="F.22. pageinspect"><span class="application">pageinspect</span></a> (Heikki Linnakangas, Peter Geoghegan, Michael Paquier) </p></li><li class="listitem"><p> Add information about buffer pins to <a class="link" href="pgbuffercache.html" title="F.24. pg_buffercache"><span class="application">pg_buffercache</span></a> display (Andres Freund) </p></li><li class="listitem"><p> Allow <a class="link" href="pgstattuple.html" title="F.30. pgstattuple"><span class="application">pgstattuple</span></a> to report approximate answers with less overhead using <code class="function">pgstattuple_approx()</code> (Abhijit Menon-Sen) </p></li><li class="listitem"><p> Move <span class="application">dummy_seclabel</span>, <span class="application">test_shm_mq</span>, <span class="application">test_parser</span>, and <span class="application">worker_spi</span> from <code class="filename">contrib</code> to <code class="filename">src/test/modules</code> (Álvaro Herrera) </p><p> These modules are only meant for server testing, so they do not need to be built or installed when packaging <span class="productname">PostgreSQL</span>. </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-5-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-4-20.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">E.36. Release 9.5.1 </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> E.38. Release 9.4.20</td></tr></table></div></body></html>