Release date: 2012-09-10
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:
Allow queries to retrieve data only from indexes, avoiding heap access (index-only scans)
Allow the planner to generate custom plans for specific parameter values even when using prepared statements
Improve the planner's ability to use nested loops with inner index scans
Allow streaming replication slaves to forward data to other slaves (cascading replication)
Allow pg_basebackup to make base backups from standby servers
Add a pg_receivexlog tool to archive WAL file changes as they are written
Add the SP-GiST (Space-Partitioned GiST) index access method
Add support for range data types
JSON data type
security_barrier option for
Allow libpq connection strings to have the format of a URI
Add a single-row processing mode to libpq for better handling of large result sets
The above items are explained in more detail in the sections below.
A dump/restore using pg_dump, or use of pg_upgrade, is required for those wishing to migrate data from any previous release.
Version 9.2 contains a number of changes that may affect compatibility with previous releases. Observe the following incompatibilities:
spclocation field from
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
pg_tablespace_location() to allow
querying of the symbolic links.
most-common-element statistics to new
pg_stats columns (Alexander
most_common_elem_freqs for the
data formerly available in
most_common_freqs for a
=> operator (Robert Haas)
Users should now use
hstore(text, text). Since
PostgreSQL 9.0, a
warning message has been emitted when an operator named
=> is created because
the SQL standard
reserves that token for another use.
xpath() escapes special
characters in string values (Florian Pflug)
Without this it is possible for the result not to be valid XML.
pg_relation_size() and friends return NULL
if the object does not exist (Phil Sorber)
This prevents queries that call these functions from
returning errors immediately after a concurrent
EXTRACT(EPOCH FROM measure the epoch from
local midnight, not UTC midnight (Tom Lane)
timestamp without time
This change reverts an ill-considered change made in
release 7.3. Measuring from UTC midnight was inconsistent
because it made the result dependent on the
timezone setting, which
time zone should not be. The previous behavior
remains available by casting the input value to
timestamp with time zone.
Properly parse time strings with trailing
tomorrow (Dean Rasheed)
yesterday'::timestamp returned yesterday's date
to_timestamp() to wrap incomplete
dates toward 2020 (Bruce Momjian)
Previously, supplied years and year masks of less than four digits wrapped inconsistently.
DOMAIN from working on non-domain types
Owner and schema changes were previously possible on non-domain types.
No longer forcibly lowercase procedural language
FUNCTION (Robert Haas)
While unquoted language identifiers are still
lowercased, strings and quoted identifiers are no
longer forcibly down-cased. Thus for example
CREATE FUNCTION ... LANGUAGE
'C' will no longer work; it must be spelled
'c', or better omit the
Change system-generated names of foreign key enforcement triggers (Tom Lane)
This change ensures that the triggers fire in the correct order in some corner cases involving self-referential foreign key constraints.
Provide consistent backquote, variable expansion, and quoted substring behavior in psql meta-command arguments (Tom Lane)
Previously, such references were treated oddly when
not separated by whitespace from adjacent text. For
(unexpected insertion of a space) and
FOO'BAR'BAZ was output unchanged (not
removing the quotes as most would expect).
Users must now include double-quotes in the command arguments if quoting is wanted.
createuser no longer prompts for option settings by default (Peter Eisentraut)
obtain the old behavior.
Disable prompting for the user name in dropuser unless
--interactive is specified (Peter
Add server parameters for specifying the locations of server-side SSL files (Peter Eisentraut)
This allows changing the names and locations of the
files that were previously hard-coded as
root.crl in the data directory.
The server will no longer
default; to load these files, the
associated parameters must be set to non-default
parameter (Heikki Linnakangas)
Similar behavior can be obtained with
pg_ctl start -l postmaster.log.
wal_sender_delay parameter, as it is
no longer needed (Tom Lane)
custom_variable_classes parameter (Tom
The checking provided by this setting was dubious. Now any setting can be prefixed by any class name.
pid, to match other system tables
Create a separate
pg_stat_activity column to report
process state (Scott Mead, Magnus Hagander)
now remain available for an idle session, allowing
query because it is not cleared
when the query completes (Magnus Hagander)
Change all SQL-level statistics timing values
float8 columns measured
in milliseconds (Tom Lane)
This change eliminates the designed-in assumption
that the values are accurate to microseconds and no
more (since the
can be fractional). The columns affected are
The statistics functions underlying these columns now
milliseconds, rather than
total_time column is
now also measured in milliseconds.
Below you will find a detailed account of the changes between PostgreSQL 9.2 and the previous major release.
Allow queries to retrieve data only from indexes, avoiding heap access (Robert Haas, Ibrar Ahmed, Heikki Linnakangas, Tom Lane)
This feature is often called index-only scans. 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.
Add the SP-GiST (Space-Partitioned GiST) index access method (Teodor Sigaev, Oleg Bartunov, Tom Lane)
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.
Allow group commit to work effectively under heavy load (Peter Geoghegan, Simon Riggs, Heikki Linnakangas)
Previously, batching of commits became ineffective as the write workload increased, because of internal lock contention.
Allow uncontended locks to be managed using a new fast-path lock mechanism (Robert Haas)
Reduce overhead of creating virtual transaction ID locks (Robert Haas)
Reduce the overhead of serializable isolation level locks (Dan Ports)
Improve PowerPC and Itanium spinlock performance (Manabu Ori, Robert Haas, Tom Lane)
Reduce overhead for shared invalidation cache messages (Robert Haas)
Move the frequently accessed members of the
PGPROC shared memory
array to a separate array (Pavan Deolasee, Heikki
Linnakangas, Robert Haas)
performance by adding tuples to the heap in batches
Improve GiST index performance for geometric data types by producing better trees with less memory allocation overhead (Alexander Korotkov)
Improve GiST index build times (Alexander Korotkov, Heikki Linnakangas)
Allow hint bits to be set sooner for temporary and unlogged tables (Robert Haas)
Allow sorting to be performed by inlined, non-SQL-callable comparison functions (Peter Geoghegan, Robert Haas, Tom Lane)
Make the number of CLOG buffers scale based on
shared_buffers (Robert Haas, Simon Riggs,
Improve performance of buffer pool scans that occur when tables or databases are dropped (Jeff Janes, Simon Riggs)
Improve performance of checkpointer's fsync-request queue when many tables are being dropped or truncated (Tom Lane)
Pass the safe number of file descriptors to child processes on Windows (Heikki Linnakangas)
This allows Windows sessions to use more open file descriptors than before.
Create a dedicated background process to perform checkpoints (Simon Riggs)
Formerly the background writer did both dirty-page writing and checkpointing. Separating this into two processes allows each goal to be accomplished more predictably.
Improve asynchronous commit behavior by waking the walwriter sooner (Simon Riggs)
wal_writer_delay triggered WAL flushing to disk; now filling
a WAL buffer also
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)
This series of changes reduces the frequency of process wake-ups when there is nothing to do, dramatically reducing power consumption on idle servers.
Allow the planner to generate custom plans for specific parameter values even when using prepared statements (Tom Lane)
In the past, a prepared statement always had a single “generic” 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).
Improve the planner's ability to use nested loops with inner index scans (Tom Lane)
The new “parameterized path” 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.
Improve the planning API for foreign data wrappers (Etsuro Fujita, Shigeru Hanada, Tom Lane)
Wrappers can now provide multiple access “paths” for their tables, allowing more flexibility in join planning.
Recognize self-contradictory restriction clauses for non-table relations (Tom Lane)
This check is only performed when
ANY(ARRAY[...]) conditions to be used in plain
index scans and index-only scans (Tom Lane)
Formerly such conditions could only be used in bitmap index scans.
MAX index optimizations on
boolean columns (Marti
Account for set-returning functions in
SELECT target lists when
setting row count estimates (Tom Lane)
Fix planner to handle indexes with duplicated columns more reliably (Tom Lane)
Collect and use element-frequency statistics for arrays (Alexander Korotkov, Tom Lane)
This change improves selectivity estimation for
@> operators (array
containment and overlaps).
Allow statistics to be collected for foreign tables (Etsuro Fujita)
Improve cost estimates for use of partial indexes (Tom Lane)
Improve the planner's ability to use statistics for columns referenced in subqueries (Tom Lane)
Improve statistical estimates for subqueries using
DISTINCT (Tom Lane)
Do not treat role names and
samerole specified in
pg_hba.conf as automatically
including superusers (Andrew Dunstan)
This makes it easier to use
reject lines with group roles.
processing to handle token parsing more consistently
(Brendan Jurd, Álvaro Herrera)
pg_hba.conf files (Tom Lane)
This was done to more quickly detect misconfiguration.
Make superuser privilege imply replication privilege (Noah Misch)
This avoids the need to explicitly assign such privileges.
Attempt to log the current query string during a backend crash (Marti Raudsepp)
Make logging of autovacuum I/O activity more verbose (Greg Smith, Noah Misch)
This logging is triggered by
Make WAL replay report failures sooner (Fujii Masao)
There were some cases where failures were only reported once the server went into master mode.
simplify WAL location comparisons (Euler Taveira de
This is useful for computing replication lag.
Support configurable event log application names on Windows (MauMau, Magnus Hagander)
Change “unexpected EOF” messages to
DEBUG1 level, except
when there is an open transaction (Magnus
This change reduces log chatter caused by applications that close database connections ungracefully.
Track temporary file sizes and file counts in the
pg_stat_database system view (Tomas
Add a deadlock counter to the
pg_stat_database system view
Add a server parameter
track_io_timing to track I/O timings (Ants
Aasma, Robert Haas)
Report checkpoint timing information in
pg_stat_bgwriter (Greg Smith, Peter
Silently ignore nonexistent schemas specified in
search_path (Tom Lane)
This makes it more convenient to use generic path settings, which might include some schemas that don't exist in all databases.
Allow superusers to set
deadlock_timeout per-session, not just
per-cluster (Noah Misch)
deadlock_timeout 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.
Add a server parameter
temp_file_limit to constrain temporary
file space usage per session (Mark Kirkwood)
Allow a superuser to
SET an extension's superuser-only
custom variable before loading the associated
extension (Tom Lane)
The system now remembers whether a
SET was performed by a superuser, so
that proper privilege checking can be done when the
extension is loaded.
-C option to query configuration
parameters (Bruce Momjian)
This allows pg_ctl to better handle cases
-D points to a
Replace an empty locale name with the implied
This prevents cases where
datctype could be interpreted
differently after a server restart.
Allow multiple errors in
postgresql.conf to be reported,
rather than just the first one (Alexey Klyukin, Tom
Allow a reload of
postgresql.conf to be processed
by all sessions, even if there are some settings
that are invalid for particular sessions (Alexey
Previously, such not-valid-within-session values would cause all setting changes to be ignored by that session.
include_if_exists facility for
configuration files (Greg Smith)
This works the same as
include, except that an error is
not thrown if the file is missing.
This avoids expensive time zone probes during server start.
pg_settings to report
numbers on Windows (Tom Lane)
Allow streaming replication slaves to forward data to other slaves (cascading replication) (Fujii Masao)
Previously, only the master server could supply streaming replication log files to standby servers.
remote_write (Fujii Masao, Simon
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.
Add a pg_receivexlog tool to archive WAL file changes as they are written, rather than waiting for completed WAL files (Magnus Hagander)
Allow pg_basebackup to make base backups from standby servers (Jun Ishizuka, Fujii Masao)
This feature lets the work of making new base backups be off-loaded from the primary server.
Allow streaming of WAL files while pg_basebackup is performing a backup (Magnus Hagander)
This allows passing of WAL files to the standby before they are discarded on the primary.
Cancel the running query if the client gets disconnected (Florian Pflug)
If the backend detects loss of client connection during a query, it will now cancel the query rather than attempting to finish it.
Retain column names at run time for row expressions (Andrew Dunstan, Tom Lane)
This change allows better results when a row value
is converted to
json type: the fields of the
resulting value will now have the expected names.
Improve column labels used for sub-
SELECT results (Marti Raudsepp)
Previously, the generic label
?column? was used.
Improve heuristics for determining the types of unknown values (Tom Lane)
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.
Warn about creating casts to or from domain types (Robert Haas)
Such casts have no effect.
When a row fails a
NULL constraint, show the row's contents as
error detail (Jan Kundrát)
This should make it easier to identify which row is problematic when an insert or update is processing many rows.
Provide more reliable operation during concurrent DDL (Robert Haas, Noah Misch)
This change adds locking that should eliminate “cache lookup failed” 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.
INDEX (Simon Riggs)
This allows index removal without blocking other sessions.
Allow foreign data wrappers to have per-column options (Shigeru Hanada)
Improve pretty-printing of view definitions (Andrew Dunstan)
CHECK constraints to be declared
NOT VALID (Álvaro
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
constraint_exclusion, since it is
not certain that all rows meet the constraint.
VALIDATE command allows
NOT VALID constraints to be checked
for existing rows, after which they are converted
into ordinary constraints.
constraints to be declared
INHERIT (Nikhil Sontakke, Alex Hunsaker,
This makes them enforceable only on the parent table, not on child tables.
Add the ability to rename constraints (Peter Eisentraut)
Reduce need to rebuild tables and indexes for
COLUMN TYPE operations (Noah Misch)
Increasing the length limit for a
varbit column, or removing the limit
altogether, no longer requires a table rewrite.
Similarly, increasing the allowable precision of a
numeric column, or changing
a column from constrained
numeric to unconstrained
numeric, no longer requires a table
rewrite. Table rewrites are also avoided in similar
cases involving the
TABLE revalidate foreign key constraints
in some cases where it is not necessary (Noah
IF EXISTS options
TABLE IF EXISTS foo RENAME TO bar.
RENAME (Peter Eisentraut)
You could already rename domains using
Throw an error for
CONSTRAINT on a nonexistent constraint (Peter
IF EXISTS option
has been added to provide the previous behavior.
CREATE TABLE (LIKE
...) from foreign tables, views, and composite
types (Peter Eisentraut)
For example, this allows a table to be created whose schema matches a view.
CREATE TABLE (LIKE
...) to avoid index name conflicts when
copying index comments (Tom Lane)
CREATE TABLE ...
AS EXECUTE to handle
WITH NO DATA and column
name specifications (Tom Lane)
security_barrier option for
views (KaiGai Kohei, Robert Haas)
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
clause of the view. Such views can be expected to
perform more poorly than ordinary views.
Add a new
LEAKPROOF function attribute to
mark functions that can safely be pushed down into
Add support for privileges on data types (Peter Eisentraut)
This adds support for the SQL-conforming
USAGE 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
AS (KaiGai Kohei)
Because the object is being created by
SELECT INTO or
CREATE TABLE AS, the
creator would ordinarily have insert permissions; but
there are corner cases where this is not true, such
PRIVILEGES has removed such permissions.
more easily skip pages that cannot be locked (Simon
Riggs, Robert Haas)
This change should greatly reduce the incidence of
“stuck” waiting for other
(BUFFERS) count blocks
dirtied and written (Robert Haas)
report the number of rows rejected by filter steps
to avoid timing overhead when time values are not
wanted (Tomas Vondra)
This is accomplished by setting the new
TIMING option to
Add support for range data types (Jeff Davis, Tom Lane, Alexander Korotkov)
A range data type stores a lower and upper bound belonging to its base data type. It supports operations like contains, overlaps, and intersection.
JSON data type (Robert Haas)
row_to_json() (Andrew Dunstan)
SMALLSERIAL data type (Mike
This is like
except it stores the sequence in a two-byte integer
Allow domains to be declared
NOT VALID (Álvaro
This option can be set at domain creation time, or
ALTER DOMAIN ...
ADD CONSTRAINT ...
ALTER DOMAIN ...
VALIDATE CONSTRAINT fully validates
Support more locale-specific formatting options for
money data type (Tom Lane)
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.
Add bitwise “and”, “or”, and
“not” operators for the
macaddr data type (Brendan
xpath() to return a
array when supplied a scalar value (Florian Pflug)
Previously, it returned an empty array. This change
will also cause
xpath_exists() to return true, not
false, for such expressions.
Improve XML error handling to be more robust (Florian Pflug)
Previously only superusers were allowed to use these functions.
Allow importing and exporting of transaction snapshots (Joachim Wieland, Tom Lane)
This allows multiple transactions to share identical
views of the database state. Snapshots are exported via
pg_export_snapshot() and imported via
SNAPSHOT. Only snapshots from
currently-running transactions can be imported.
COLLATION FOR on
expressions (Peter Eisentraut)
This returns a string representing the collation of the expression.
numeric variant of
pg_size_pretty() for use with
pg_trigger_depth() function (Kevin
This reports the current trigger call depth.
bytea values (Pavel
Fix regular expressions in which a back-reference occurs within a larger quantified subexpression (Tom Lane)
\1)+$. Previous releases did not check that the
back-reference actually matched the first
Add information schema views
Add composite-type attributes to the information
view (Peter Eisentraut)
interval_type columns in the
information schema (Peter Eisentraut)
Formerly these columns read as nulls.
Implement collation-related columns in the
element_types views (Peter
with_hierarchy column in the
table_privileges view (Peter
Add display of sequence
USAGE privileges to information schema
Make the information schema show default privileges (Peter Eisentraut)
Previously, non-empty default permissions were not represented in the views.
Allow the PL/pgSQL
OPEN cursor command to supply
parameters by name (Yeb Havinga)
DIAGNOSTICS PL/pgSQL command to retrieve
exception info (Pavel Stehule)
Speed up PL/pgSQL array assignment by caching type information (Pavel Stehule)
Improve performance and memory consumption for
long chains of
clauses (Tom Lane)
Output the function signature, not just the name, in PL/pgSQL error messages (Pavel Stehule)
Add PL/Python SPI cursor support (Jan Urbanski)
This allows PL/Python to read partial result sets.
Add result metadata functions to PL/Python (Peter Eisentraut)
Specifically, this adds result object functions
Remove support for Python 2.2 (Peter Eisentraut)
Allow SQL-language functions to reference parameters by name (Matthew Draper)
To use this, simply name the function arguments and then reference the argument names in the SQL function body.
This allows separate control of
pg_hba.conf authentication settings.
--auth still controls
--no-replication flags to createuser to control
replication permission (Fujii Masao)
Give command-line tools the ability to specify the
name of the database to connect to, and fall back to
template1 if a
connection fails (Robert Haas)
Add a display mode to auto-expand output based on the display width (Peter Eisentraut)
This adds the
option to the
command, which switches to the expanded mode when the
normal output would be wider than the screen.
Allow inclusion of a script file that is named relative to the directory of the file from which it was invoked (Gurjeet Singh)
This is done with a new command
Add support for non-ASCII characters in psql variable names (Tom Lane)
Add support for major-version-specific
.psqlrc files (Bruce
Provide environment variable overrides for psql history and startup file locations (Andrew Dunstan)
PSQLRC now determine these
file names if set.
to modify the environment variables passed to child
processes (Andrew Dunstan)
temporary editor files with a
.sql extension (Peter
This allows extension-sensitive editors to select the right mode.
Allow psql to use zero-byte field and record separators (Peter Eisentraut)
Various shell tools use zero-byte (NUL) separators, e.g. find.
option report times for failed queries (Magnus
Previously times were reported only for successful queries.
Unify and tighten psql's treatment of
\copy and SQL
COPY (Noah Misch)
This fix makes failure behavior more predictable
\d on a sequence
show the table/column name owning it (Magnus
Show statistics target for columns in
\d+ (Magnus Hagander)
Show role password expiration dates in
\du (Fabrízio de Royes
Display comments for casts, conversions, domains, and languages (Josh Kupershmidt)
These are included in the output of
Display comments for SQL/MED objects (Josh Kupershmidt)
These are included in the output of
\dew+ for foreign servers, foreign
tables, and foreign data wrappers respectively.
\dd to display
comments only for object types without their own
backslash command (Josh Kupershmidt)
In psql tab
completion, complete SQL keywords in either upper or
lower case according to the new
COMP_KEYWORD_CASE setting (Peter
Add tab completion support for
EXECUTE (Andreas Karlsson)
Allow tab completion of role references in
REVOKE (Peter Eisentraut)
Allow tab completion of file names to supply quotes, when necessary (Noah Misch)
Change tab completion support for
TABLE to also include views (Magnus
--exclude-table-data option to
This allows dumping of a table's definition but not its data, on a per-table basis.
to pg_dump and
Valid values are
post-data. The option can be given
more than once to select two or more sections.
Make pg_dumpall dump all roles first, then all configuration settings on roles (Phil Sorber)
This allows a role's configuration settings to mention other roles without generating an error.
to avoid errors if the
postgres database is missing in the
new cluster (Robert Haas)
Dump foreign server user mappings in user name order (Peter Eisentraut)
This helps produce deterministic dump files.
Dump operators in a predictable order (Peter Eisentraut)
Tighten rules for when extension configuration tables are dumped by pg_dump (Tom Lane)
Make pg_dump emit more useful dependency information (Tom Lane)
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.
Improve pg_dump's performance when dumping many database objects (Tom Lane)
Allow libpq connection strings to have the format of a URI (Alexander Shulgin)
The syntax begins with
postgres://. This can allow
applications to avoid implementing their own parser for
URIs representing database connections.
Add a connection option to disable SSL compression (Laurenz Albe)
This can be used to remove the overhead of SSL compression on fast networks.
Add a single-row processing mode for better handling of large result sets (Kyotaro Horiguchi, Marko Kreen)
Previously, libpq always collected the entire query result in memory before passing it back to the application.
const qualifiers to
the declarations of the functions
PQpingParams (Lionel Elie
to include escaped characters in the password field
Make library functions use
abort() instead of
exit() when it is necessary to
terminate the process (Peter Eisentraut)
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.
Remove dead ports (Peter Eisentraut)
The following platforms are no longer supported: dgux, nextstep, sunos4, svr4, ultrix4, univel, bsdi.
Add support for building with MS Visual Studio 2010 (Brar Piening)
Enable compiling with the MinGW-w64 32-bit compiler (Lars Kanis)
installation (Heikki Linnakangas)
Improve the latch facility to include detection of postmaster death (Peter Geoghegan, Heikki Linnakangas, Tom Lane)
This eliminates one of the main reasons that background processes formerly had to wake up to poll for events.
Use C flexible array members, where supported (Peter Eisentraut)
Improve the concurrent transaction regression tests (isolationtester) (Noah Misch)
to create its test files in the current directory,
Improve flex and bison warning and error reporting (Tom Lane)
Add memory barrier support (Robert Haas)
This is currently unused.
Modify pgindent to use a typedef file (Bruce Momjian)
Add a hook for processing messages due to be sent to the server log (Martin Pihlak)
Add object access hooks for
DROP commands (KaiGai Kohei)
handling for some object types (KaiGai Kohei)
Add a pg_upgrade test suite (Peter Eisentraut)
Sync regular expression code with TCL 8.5.11 and improve internal processing (Tom Lane)
Move CRC tables to libpgport, and provide them in a separate include file (Daniel Farina)
Add options to git_changelog for use in major release note creation (Bruce Momjian)
/proc/self/oom_score_adj API (Tom
Improve efficiency of dblink by using libpq's new single-row processing mode (Kyotaro Horiguchi, Marko Kreen)
This improvement does not apply to
option in file_fdw (Shigeru Hanada)
Implement dry-run mode for pg_archivecleanup (Gabriele Bartolini)
This only outputs the names of files to be deleted.
Add new pgbench switches
--index-tablespace (Robert Haas)
Change pg_test_fsync to test for a fixed amount of time, rather than a fixed number of cycles (Bruce Momjian)
-o/cycles option was
Add a pg_test_timing utility to measure clock monotonicity and timing overhead (Ants Aasma, Greg Smith)
Add a tcn (triggered change
notification) module to generate
NOTIFY events on table changes (Kevin
Adjust pg_upgrade environment variables (Bruce Momjian)
Rename data, bin, and port environment variables
to begin with
PGPORTNEW, to replace
Overhaul pg_upgrade logging and failure reporting (Bruce Momjian)
Create four append-only log files, and delete them
on success. Add
--retain option to unconditionally
retain these files. Also remove pg_upgrade options
options as unnecessary, and tighten log file
Make pg_upgrade create a script to incrementally generate more accurate optimizer statistics (Bruce Momjian)
This reduces the time needed to generate minimal cluster statistics after an upgrade.
to upgrade an old cluster that does not have a
postgres database (Bruce
Allow pg_upgrade to handle cases where some old or new databases are missing, as long as they are empty (Bruce Momjian)
Allow pg_upgrade to handle configuration-only directory installations (Bruce Momjian)
-O options to pass parameters to the
servers (Bruce Momjian)
This is useful for configuration-only directory installs.
Change pg_upgrade to use port 50432 by default (Bruce Momjian)
This helps avoid unintended client connections during the upgrade.
Reduce cluster locking in pg_upgrade (Bruce Momjian)
Specifically, only lock the old cluster if link mode is used, and do it right after the schema is restored.
Allow pg_stat_statements to aggregate similar queries via SQL text normalization (Peter Geoghegan, Tom Lane)
Users with applications that use non-parameterized SQL will now be able to monitor query performance without detailed log analysis.
Add dirtied and written block counts and read/write times to pg_stat_statements (Robert Haas, Ants Aasma)
Prevent pg_stat_statements from
LABEL on global objects (KaiGai Kohei, Robert
Specifically, add security labels to databases, tablespaces, and roles.
Allow sepgsql to honor database labels (KaiGai Kohei)
Perform sepgsql permission checks during the creation of various objects (KaiGai Kohei)
and related functions to control the sepgsql security
domain (KaiGai Kohei)
Add a user space access cache to sepgsql to improve performance (KaiGai Kohei)
Add a rule to optionally build HTML documentation using the stylesheet from the website (Magnus Hagander)
documentation (Tom Lane)
Document that user/database names are preserved with double-quoting by command-line tools like vacuumdb (Bruce Momjian)
Document the actual string returned by the client for MD5 authentication (Cyan Ogilvie)
Deprecate use of
CREATE TEMP TABLE (Noah Misch)
PostgreSQL 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.
If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.