From 912c70bb8db05a4a7599e43e3a79599957daa301 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 17 Aug 2014 22:26:49 -0400 Subject: [PATCH] Make an editorial pass over the 9.4 release notes. Update the notes to include commits through today, and do a lot of wordsmithing and markup adjustment. Notably, don't use where will do; since we got rid of the text-format HISTORY file, there is no longer a reason to avoid . --- doc/src/sgml/release-9.4.sgml | 1243 +++++++++++++++++---------------- 1 file changed, 628 insertions(+), 615 deletions(-) diff --git a/doc/src/sgml/release-9.4.sgml b/doc/src/sgml/release-9.4.sgml index 8893544499..7ae67e0cec 100644 --- a/doc/src/sgml/release-9.4.sgml +++ b/doc/src/sgml/release-9.4.sgml @@ -7,7 +7,7 @@ Release Date 2014-??-?? - Current as of 2014-05-10 + Current as of 2014-08-17 @@ -23,44 +23,44 @@ - Allow materialized views to be refreshed without blocking reads + Allow materialized views + to be refreshed without blocking reads - Logical decoding allows database - changes to be streamed out in a customizable format + Add support for logical decoding + of WAL data, to allow database changes to be streamed out in a + customizable format - Allow background workers + Allow background worker processes to be dynamically registered, started and terminated - Add structured (non-text) data type (JSONB) for storing - JSON data + Add jsonb, a more + capable and efficient data type for for storing JSON data - Add SQL-level command ALTER SYSTEM - to edit the postgresql.conf configuration file + Add new SQL command + for updating postgresql.conf configuration file entries - Reduce lock levels of some ALTER TABLE commands + Reduce lock strength for some + commands @@ -77,10 +77,9 @@ Migration to Version 9.4 - A dump/restore using pg_dumpall, or use - of pg_upgrade, is - required for those wishing to migrate data from any previous release. + A dump/restore using , or use + of , is required for those wishing to migrate + data from any previous release. @@ -92,131 +91,129 @@ - Cause consecutive whitespace in to_timestamp() - and to_date() format strings to consume a corresponding - number of characters in the input string (whitespace or not), then - conditionally consume adjacent whitespace, if not in FX - mode (Jeevan Chalke) + Tighten checks for multidimensional array input (Bruce Momjian) - Previously consecutive whitespace characters in a non-FX - format string behaved like a single whitespace character and consumed - all adjacent whitespace in the input string. For example, previously - format string space-space-space would consume only the first space in - ' 12', while it will now consume all three characters. + Previously, an input array string that started with a single-element + array dimension could later contain multidimensional segments, + e.g. '{{1}, {2,3}}'::int[]. - Tighten checks for multidimensional array input (Bruce Momjian) + Unicode escapes in JSON + text values are no longer rendered with the backslash escaped + (Andrew Dunstan) - Previously an input array string that started with a single-element - array dimension could later contain multidimensional segments, - e.g. '{{1}, {2,3}}'::int[]. + Previously, all backslashes in text values being formed into JSON + were escaped. Now a backslash followed by u and four + hexadecimal digits is not escaped, as this is a legal sequence in a + JSON string value, and escaping the backslash led to some perverse + results. - Change empty arrays returned by intarray to be - zero-dimensional arrays (Bruce Momjian) + When converting values of type timestamp + or timestamptz + to JSON, render the + values in a format compliant with ISO 8601 (Andrew Dunstan) - Previously, empty arrays were returned as one-dimensional empty arrays - whose text representation looked the same as zero-dimensional arrays - ({}). intarray's behavior in this area - now matches the built-in array operators. + Previously such values were rendered according to the current + setting; but many JSON processors + require timestamps to be in ISO 8601 format. - Disallow NULL VARIADIC - function arguments (Pavel Stehule) + Cause consecutive whitespace in to_timestamp() + and to_date() format strings to consume a corresponding + number of characters in the input string (whitespace or not), then + conditionally consume adjacent whitespace, if not in FX + mode (Jeevan Chalke) - Such arguments must be cast to an array data type. + Previously, consecutive whitespace characters in a non-FX + format string behaved like a single whitespace character and consumed + all adjacent whitespace in the input string. For example, previously + a format string of three spaces would consume only the first space in + ' 12', but it will now consume all three characters. - SHOW TIME ZONE now - outputs constant time zone offsets in POSIX-style zone - format (Tom Lane) + Fix ts_rank_cd() + to ignore stripped lexemes (Alex Hill) - Previously it was returned in INTERVAL format. - The new format can be passed to SET TIME ZONE. + Previously, stripped lexemes were treated as if they had a default + location, producing a rank of dubious usefulness. - Values of type - timestamp and - timestamptz are now - rendered in a string format compliant with ISO 8601 rather than the - default output format when converting to or used in - JSON. - (Andrew Dunstan) + For functions declared to + take VARIADIC + "any", an actual parameter marked as VARIADIC + must be of a determinable array type (Pavel Stehule) - Previously these were rendered in the default text output format - for the type, but many JSON processors require timestamps in ISO 8601 - format. + Such parameters can no longer be written as an undecorated string + literal or NULL; a cast to an appropriate array data type + will now be required. Note that this does not affect parameters not + marked VARIADIC. - Unicode escapes in JSON - text values are no longer rendered with the backslash escaped. - (Andrew Dunstan) - - - - Previously all backslashes in text values being formed into JSON were - escaped. Now a backslash followed by "u" and four hexadecimal digits is - not escaped, as this is a legal sequence in a JSON string value, and - escaping the backslash led to some perverse results. + now also discards sequence-related state + (Fabrízio de Royes Mello, Robert Haas) Rename EXPLAIN - ANALYZE's total runtime output to execution time - (Tom Lane) + ANALYZE's total runtime output + to execution time (Tom Lane) - This was required now that planning time is also reported. + Now that planning time is also reported, the previous name was + confusing. - Fix ts_rank_cd() - to ignore stripped lexemes (Alex Hill) + SHOW TIME ZONE now + outputs simple numeric UTC offsets in POSIX timezone + format (Tom Lane) - Previously stripped lexemes got a default location and could be - considered if mixed with non-stripped lexemes. + Previously, such timezone settings were displayed as interval values. + The new output is properly interpreted by SET TIME ZONE + when passed as a simple string, whereas the old output required + special treatment to be re-parsed correctly. @@ -229,15 +226,15 @@ - Restoring such check constraints will lead to restore errors. + Previously such check constraints were allowed, but they would often + cause errors during restores. - Use the last specified recovery_target if - multiple are specified (Heikki Linnakangas) + Use the last specified if multiple + values are specified (Heikki Linnakangas) @@ -249,16 +246,15 @@ User commands that did their own quote preservation might need - adjustment, e.g. archive_command, restore_command, COPY TO/FROM - PROGRAM. + adjustment. This is likely to be an issue for commands used in + , , + and COPY TO/FROM PROGRAM. - Remove system column pg_class.reltoastidxid (Michael Paquier) @@ -266,90 +262,82 @@ - Remove support for native krb5 authentication - (Magnus Hagander) + Remove catalog column pg_rewrite.ev_attr + (Kevin Grittner) - The proper way to use Kerberos authentication is - with GSSAPI. + Per-column rules have not been supported since + PostgreSQL 7.3. - Handle domains over arrays like plain arrays in PL/Python - (Rodolfo Campero) + Remove native support for Kerberos authentication + ( - Previously they were treated as strings. + The supported way to use Kerberos authentication is + with GSSAPI. The native code has been deprecated since + PostgreSQL 8.3. - Have libpq's PQconnectdbParams() - and PQpingParams() - functions process zero-length strings as defaults (Adrian - Vondendriesch) + In PL/Python, handle domains over arrays like the + underlying array type (Rodolfo Campero) - Previously, these functions treated zero-length string values as - defaults only in some cases. + Previously such values were treated as strings. - Remove system column pg_rewrite.ev_attr - (Kevin Grittner) + Make libpq's PQconnectdbParams() + and PQpingParams() + functions process zero-length strings as defaults (Adrian + Vondendriesch) - Per-column rules have not been supported since - PostgreSQL 7.3. + Previously, these functions treated zero-length string values as + selecting the default in only some cases. - pg_upgrade now - uses - - - Previously - - - The maximum number of background workers - that can be registered - by RegisterBackgroundWorker() is now limited to - max_worker_processes + Previously, empty arrays were returned as zero-length one-dimensional + arrays, whose text representation looked the same as zero-dimensional + arrays ({}), but they acted differently in array + operations. intarray's behavior in this area now + matches the built-in array operators. - background workers registered at - postmaster startup time should set - bgw_notify_pid to 0. - + now uses - - - DISCARD ALL now also discards sequence state. + Previously this option was spelled @@ -373,63 +361,56 @@ - Have VACUUM properly - report dead but not removable rows to the statistics collector - (Hari Babu) + Allow background worker processes + to be dynamically registered, started and terminated (Robert Haas) - Previously these were reported as live rows. + The contrib/worker_spi module shows an example of use + of this feature. + - Allow background workers to be - dynamically registered, started and terminated (Robert Haas) + Allow dynamic allocation of shared memory segments (Robert Haas, + Amit Kapila) - worker_spi_launch() in worker_spi - shows an example of its use. + This feature is illustrated in . - Allow dynamic allocation of shared memory segments (Robert Haas, - Amit Kapila) + During crash recovery or immediate shutdown, send uncatchable + termination signals (SIGKILL) to child processes + that do not shut down promptly (MauMau, Álvaro Herrera) - This is illustrated in test_shm_mq. + This reduces the likelihood of leaving orphaned child processes + behind after shutdown, as well + as ensuring that crash recovery can proceed if some child processes + have become stuck. - Improve SSL renegotiation handling (Álvaro - Herrera) + Improve randomness of the database system identifier (Tom Lane) - During immediate shutdown send uncatchable termination signals - to child processes that have not already shutdown (MauMau, - Álvaro Herrera) + Make properly report dead but + not-yet-removable rows to the statistics collector (Hari Babu) - This reduces the likelihood of orphaned child processes after - postmaster - shutdown. - - - - - - Improve randomness of the database system identifier (Tom Lane) + Previously these were reported as live rows. @@ -442,45 +423,44 @@ - Improve speed of multi-key GIN lookups (Alexander Korotkov, - Heikki Linnakangas) + Reduce GIN index size + (Alexander Korotkov, Heikki Linnakangas) - - - Reduce GIN index size - (Alexander Korotkov, Heikki Linnakangas) + Indexes upgraded via will work fine + but will still be in the old, larger GIN format. + Use to recreate such an index in the + new format. + + - Indexes upgraded via pg_upgrade will work - fine but will use the old larger GIN format; REINDEX will recreate - the index in the new format. + Improve speed of multi-key GIN lookups (Alexander Korotkov, + Heikki Linnakangas) Add GiST index support - for INET and - CIDR data types + for inet and + cidr data types (Emre Hasegeli) Such indexes improve subnet and supernet + linkend="cidr-inet-operators-table">subnet and supernet lookups and ordering comparisons. - Fix race condition in B-tree page deletion (Heikki Linnakangas) + Fix rare race condition in B-tree page deletion (Heikki Linnakangas) @@ -502,8 +482,9 @@ - Allow multiple backends to simultaneously insert into WAL buffers (Heikki Linnakangas) + Allow multiple backends to insert + into WAL buffers + concurrently (Heikki Linnakangas) @@ -520,31 +501,25 @@ - Improve performance of WINDOW - aggregate functions (David Rowley, Florian Pflug, Tom Lane) + Improve performance of aggregate functions used as window functions + (David Rowley, Florian Pflug, Tom Lane) - Improve speed of aggregates which use NUMERICs (Hadi - Moshayedi) - - - - These include SUM(), AVG(), STDDEV(), - and VARIANCE(). + Improve speed of aggregates that + use numeric state + values (Hadi Moshayedi) Attempt to freeze - tuples when tables are rewritten with CLUSTER or or VACUUM FULL (Robert Haas, Andres Freund) @@ -556,7 +531,7 @@ - Improve speed of COPY + Improve speed of with DEFAULT nextval() columns (Simon Riggs) @@ -574,33 +549,46 @@ Raise hard limit on the number of tuples held in memory during sorting - and B-tree index builds (Noah - Misch) + and B-tree index builds (Noah Misch) - Reduce memory allocated by DO blocks (Tom Lane) + Reduce memory allocated by PL/pgSQL + blocks (Tom Lane) - Have the optimizer be more aggressive in creating restrictions + Make the planner more aggressive in extracting restriction clauses from mixed AND/OR clauses (Tom Lane) - Auto-resize the catalog cache (Heikki Linnakangas) + Disallow pushing volatile WHERE clauses down + into DISTINCT subqueries (Tom Lane) + + + + Pushing down a WHERE clause can produce a more + efficient plan overall, but at the cost of evaluating the clause + more often than is implied by the text of the query; so don't do it + if the clause contains any volatile functions. + + + + + + Auto-resize the catalog caches (Heikki Linnakangas) - This reduces memory consumption for backends accessing only a few - tables, and improves performance for backend accessing many tables. + This reduces memory consumption for sessions accessing only a few + tables, and improves performance for sessions accessing many tables. @@ -615,31 +603,32 @@ - Expose the estimation of number of changed tuples since last ANALYZE (Mark Kirkwood) + Add system view to + report WAL archiver activity + (Gabriele Bartolini) + + - This appears in pg_stat_all_tables.n_mod_since_analyze. + Add n_mod_since_analyze columns to + and related system views + (Mark Kirkwood) - - - Add pg_stat_archiver - system view to report WAL - archiver activity (Gabriele Bartolini) + These columns expose the system's estimate of the number of changed + tuples since the table's last . This + estimate drives decisions about when to auto-analyze. - Add backend_xid and backend_xmin columns to - the system view pg_stat_activity - and backend_xmin to pg_stat_replication - (Christian Kruse) + Add backend_xid and backend_xmin + columns to the system view , + and a backend_xmin column to + (Christian Kruse) @@ -660,38 +649,47 @@ This allows use of Elliptic Curve keys for server authentication. - Such keys are faster and have improved security over RSA keys. - The new configuration parameter - ssl_ecdh_curve + Such keys are faster and have better security than RSA + keys. The new configuration parameter + controls which curve is used for ECDH. - Improve the default ssl_ciphers value + Improve the default setting (Marko Kreen) - Allow the server to specify the preferred SSL cipher - order (Marko Kreen) + By default, the server not the client now controls the preference + order of SSL ciphers + (Marko Kreen) + + + + Previously, the order specified by + was usually ignored in favor of client-side defaults, which are not + configurable in most PostgreSQL clients. If + desired, the old behavior can be restored via the new configuration + parameter . + + - This is controlled by the new configuration parameter ssl_prefer_server_ciphers. + Make show SSL + encryption information (Andreas Kunert) - Have log_connections - show SSL encryption information (Andreas Kunert) + Improve SSL renegotiation handling (Álvaro + Herrera) @@ -706,142 +704,134 @@ - Add SQL-level ALTER SYSTEM command - to adjust server-wide settings (Amit Kapila) + Add new SQL command + for updating postgresql.conf configuration file entries + (Amit Kapila) - Previously such settings could only be changed by - editing postgresql.conf at the file system level. + Previously such settings could only be changed by manually + editing postgresql.conf. - Add huge_pages - configuration parameter to use huge memory pages on Linux - (Christian Kruse, Richard Poole, Abhijit Menon-Sen) - - - - This can improve performance on large memory systems. + Add configuration parameter + to control the amount of memory used by autovacuum workers + (Peter Geoghegan) - Show PIDs of lock holders and - waiters and improve relation information in log_lock_waits - log messages (Christian Kruse) + Add parameter to allow using huge + memory pages on Linux (Christian Kruse, Richard Poole, Abhijit + Menon-Sen) - - - Add parameter autovacuum_work_mem - to control the amount of memory used by autovacuum workers - (Peter Geoghegan) + This can improve performance on large-memory systems. - Add max_worker_processes + Add parameter to limit the number of background workers (Robert Haas) - This is helpful in configuring the standby server to have the - required same number of worker processes as the primary. + This is helpful in configuring a standby server to have the + required number of worker processes (the same as the primary). - Add configuration parameter wal_log_hints - to enable logging of hint bits (Sawada Masahiko) + Add superuser-only + parameter to load libraries at session start (Peter Eisentraut) - Hint bits are not normally logged, except when checksums are enabled. - This is useful for external tools like pg_rewind. + In contrast to , this + parameter can load any shared library, not just those in + the $libdir/plugins directory. - Allow printf-style space padding to be specified in log_line_prefix - (David Rowley) + Add parameter to enable WAL + logging of hint-bit changes (Sawada Masahiko) + + + + Hint bit changes are not normally logged, except when checksums are + enabled. This is useful for external tools + like pg_rewind. - Add superuser-only session_preload_libraries - configuration parameter to load libraries at session start - (Peter Eisentraut) + Increase the default settings of + and by four times (Bruce + Momjian) - In contrast - to local_preload_libraries - this parameter can load any shared library, not just those in - the $libdir/plugins directory. + The new defaults are 4MB and 64MB respectively. - Reduce server logging level when loading shared libraries (Peter - Geoghegan) + Increase the default setting of + to 4GB (Bruce Momjian, Tom Lane) + + - The previous level was LOG, which was too verbose - for per-session libraries. + Allow printf-style space padding to be + specified in (David Rowley) - Increase work_mem and maintenance_work_mem - defaults by four times (Bruce Momjian) + Allow terabyte units (TB) to be used when specifying + configuration variable values (Simon Riggs) + + - The new defaults are 4MB and 64MB respectively. + Show PIDs of lock holders and waiters and improve + information about relations in + log messages (Christian Kruse) - Increase the default setting of effective_cache_size - to 4GB (Bruce Momjian, Tom Lane) + Reduce server logging level when loading shared libraries (Peter + Geoghegan) - - - Allow terabyte units to be specified for configuration variable - values (Simon Riggs) + The previous level was LOG, which was too verbose + for per-session libraries. - Have Windows SQL_ASCII-encoded databases and server - process (e.g. postmaster) emit - messages in the character encoding of the server's Windows user locale + On Windows, make SQL_ASCII-encoded databases and server + processes (e.g., ) emit messages in + the character encoding of the server's Windows user locale (Alexander Law, Noah Misch) @@ -862,24 +852,37 @@ + + + Add replication + slots to coordinate activity on streaming standbys with the + node they are streaming from (Andres Freund, Robert Haas) + + + + Replication slots allow preservation of resources like + WAL files on the primary until they are no longer + needed by standby servers. + + + Add recovery.conf - parameter recovery_min_apply_delay + parameter to delay replication (Robert Haas, Fabrízio de Royes Mello, Simon Riggs) - This is useful for delaying the replay of user errors on standby - servers. + Delaying replay on standby servers can be useful for recovering + from user errors. - Add recovery_target + Add option @@ -904,7 +907,7 @@ pg_switch_xlog() - now clears the trailing unused space in the WAL file + now clears any unused trailing space in the old WAL file (Heikki Linnakangas) @@ -915,15 +918,9 @@ - Add replication - slots to coordinate activity on streaming standbys with the - node they are streaming from (Andres Freund, Robert Haas) - - - - Replication slots allow preservation of resources like - WAL files on the primary that are needed by standby - servers. + Report failure return codes from external recovery commands + (Peter Eisentraut) @@ -934,14 +931,6 @@ - - - Report failure return codes from external recovery commands - (Peter Eisentraut) - - - Write WAL records of running transactions more @@ -949,7 +938,7 @@ - This allows standby servers to start faster and cleanup resources + This allows standby servers to start faster and clean up resources more aggressively. @@ -960,7 +949,7 @@ <link linkend="logicaldecoding">Logical Decoding</> - Logical decoding allows database changes to be optionally streamed in a + Logical decoding allows database changes to be streamed in a configurable format. The data is read from the WAL and transformed into the desired target format. To implement this feature, the following changes @@ -968,58 +957,52 @@ - - - - Add new + - This interacts with REPLICA IDENTITY. + Add support for logical decoding + of WAL data, to allow database changes to be streamed out in a + customizable format + (Andres Freund) - Allow pg_recvlogical - to receive logical decoding data (Andres Freund) + Add new setting - Add test_decoding - module to illustrate logical decoding at the SQL - level (Andres Freund) + Add table-level parameter REPLICA IDENTITY + to control logical replication (Andres Freund) - Allow logical decoding via the walsender interface ? (Andres - Freund) + Add relation option - Add table-level parameter REPLICA IDENTITY - to control logical replication (Andres Freund) + Add application to receive + logical-decoding data (Andres Freund) - Add relation option @@ -1034,19 +1017,12 @@ - - - Add ROWS - FROM() syntax to allow horizontal concatenation of - set-returning functions in the FROM-clause (Andrew Gierth) - - - Add WITH ORDINALITY syntax to number rows returned from - FROM-clause functions (Andrew Gierth, David Fetter) + set-returning functions in the FROM clause + (Andrew Gierth, David Fetter) @@ -1057,13 +1033,21 @@ - Allow SELECT with + Add ROWS + FROM() syntax to allow horizontal concatenation of + set-returning functions in the FROM clause (Andrew Gierth) + + + + + + Allow to have an empty target list (Tom Lane) - This was added so views that select from a table with zero columns - can be dumped correctly. + This was added so that views that select from a table with zero + columns can be dumped and restored correctly. @@ -1079,7 +1063,7 @@ Add DISCARD - SEQUENCES command to discard cached sequence information + SEQUENCES command to discard cached sequence-related state (Fabrízio de Royes Mello, Robert Haas) @@ -1090,14 +1074,15 @@ - Add FORCE NULL option - to COPY FROM which causes - quoted strings matching the null string to be converted to NULL in - CSV mode (Ian Barwick, Michael Paquier) + Add FORCE NULL option + to COPY FROM, which + causes quoted strings matching the specified null string to be + converted to NULLs in CSV mode (Ian Barwick, Michael + Paquier) - Previously only unquoted matching strings would be imported + Without this option, only unquoted matching strings will be imported as null values. @@ -1105,41 +1090,41 @@ Issue warnings for commands used outside of transaction blocks - because they have no effect (Bruce Momjian) + when they can have no effect (Bruce Momjian) - The cases are SET - LOCAL, SET CONSTRAINTS, SET TRANSACTION and - ABORT. + New warnings are issued for SET + LOCAL, SET CONSTRAINTS, SET TRANSACTION and + ABORT when used outside a transaction block. - <link linkend="SQL-EXPLAIN"><command>EXPLAIN</></link> + <xref linkend="SQL-EXPLAIN"> - Have EXPLAIN ANALYZE output planning time (Andreas + Make EXPLAIN ANALYZE show planning time (Andreas Karlsson) - Have EXPLAIN print the grouping columns in Agg and + Make EXPLAIN show the grouping columns in Agg and Group nodes (Tom Lane) - Have EXPLAIN ANALYZE show bitmap heap scan exact/lossy - block information (Etsuro Fujita) + Make EXPLAIN ANALYZE show exact and lossy + block counts in bitmap heap scans (Etsuro Fujita) @@ -1154,8 +1139,9 @@ - Allow materialized views to be refreshed without blocking reads - (Kevin Grittner) + Allow materialized views + to be refreshed without blocking reads + (Kevin Grittner) @@ -1174,7 +1160,7 @@ - Previously the presence of non-updatable columns such as + Previously the presence of non-updatable output columns such as expressions, literals, and function calls prevented automatic updates. Now INSERTs, UPDATEs and DELETEs are supported, provided that they do not @@ -1186,12 +1172,12 @@ Allow control over whether INSERTs and UPDATEs can add rows to an auto-updatable view that - would no longer appear in the view (Dean Rasheed) + would not appear in the view (Dean Rasheed) - This is controlled with the new WITH CHECK OPTION. + This is controlled with the new + clause WITH CHECK OPTION. @@ -1215,96 +1201,89 @@ - Allow triggers on foreign + Support triggers on foreign tables (Ronan Dunklau) - Fix DROP IF EXISTS to more consistently not error - for non-existent objects (Pavel Stehule, Dean Rasheed) + Allow moving groups of objects from one tablespace to another + using ... MOVE + (Stephen Frost) - Improve how system-level relations are designated (Andres Freund, - Robert Haas) + Allow changing foreign key constraint deferrability + via ... ALTER + CONSTRAINT (Simon Riggs) + + - Previously, relations once moved into the system catalog schema could - no longer be modified or dropped. + Reduce lock strength for some + commands + (Simon Riggs, Noah Misch, Robert Haas) - - - Allow ALTER - TABLESPACE options to be also set by CREATE TABLESPACE - (Vik Fearing) + Specifically, VALIDATE CONSTRAINT, CLUSTER + ON, SET WITHOUT CLUSTER, ALTER COLUMN + SET STATISTICS, ALTER COLUMN SET + - Allow CREATE - AGGREGATE to supply the size of the aggregate's - transition state data (Hadi Moshayedi) + Allow tablespace options to be set + in (Vik Fearing) - This allows the optimizer to better estimate how much memory will be - used by aggregates. + Formerly these options could only be set + via . - - - - <command>ALTER</> - - - - Allow moving groups of objects from one tablespace to another - using ALTER - TABLESPACE ... MOVE (Stephen Frost) + Allow to define the estimated + size of the aggregate's transition state data (Hadi Moshayedi) + + + + Proper use of this feature allows the planner to better estimate + how much memory will be used by aggregates. - Allow changing foreign key constraint deferrability via ALTER TABLE - ... ALTER CONSTRAINT (Simon Riggs) + Fix DROP IF EXISTS to avoid errors for non-existent + objects in more cases (Pavel Stehule, Dean Rasheed) - Reduce lock levels of some ALTER TABLE commands - (Simon Riggs, Noah Misch, Robert Haas) + Improve how system relations are identified (Andres Freund, + Robert Haas) - Specifically, VALIDATE CONSTRAINT, CLUSTER - ON, SET WITHOUT CLUSTER, ALTER COLUMN - SET STATISTICS, ALTER COLUMN SET - - - @@ -1321,7 +1300,7 @@ The line segment data type (LSEG) has always been + linkend="datatype-lseg">lseg) has always been fully supported. The previous line data type (enabled only via a compile-time option) is not binary or dump-compatible. @@ -1329,7 +1308,7 @@ - Add PG_LSN + Add pg_lsn data type to represent a WAL log sequence number (LSN) (Robert Haas, Michael Paquier) @@ -1338,8 +1317,8 @@ Allow single-point POLYGONs to be converted - to CIRCLEs + linkend="datatype-polygon">polygons to be converted + to circles (Bruce Momjian) @@ -1347,15 +1326,15 @@ Allow 5+ digit years for non-ISO TIMESTAMP and - DATE strings, where appropriate (Bruce Momjian) + linkend="datatype-datetime">timestamp and + date strings, where appropriate (Bruce Momjian) Add checks for overflow/underflow of INTERVAL values + linkend="datatype-datetime">interval values (Bruce Momjian) @@ -1363,23 +1342,25 @@ - <link linkend="datatype-json"><type>JSON</></link> + <link linkend="datatype-json"><acronym>JSON</></link> - Add structured (non-text) data type (jsonb) for storing - JSON data (Oleg Bartunov, Teodor Sigaev, Alexander - Korotkov, Peter Geoghegan, and Andrew Dunstan) + Add jsonb, a more + capable and efficient data type for for storing JSON data + (Oleg Bartunov, Teodor Sigaev, Alexander + Korotkov, Peter Geoghegan, Andrew Dunstan) - This allows for faster access to values in the JSON - document and faster and more useful indexing of JSON. - Scalar values in jsonb documents are typed as appropriate - scalar SQL types. + This new type allows faster access to values in a JSON + document and faster and more useful indexing of JSON columns. + Scalar values in jsonb documents are stored as appropriate + scalar SQL types, and the JSON document structure is pre-parsed + rather than being stored as text as in the original json + data type. @@ -1412,7 +1393,6 @@ - Functions @@ -1422,12 +1402,13 @@ Add pg_sleep_for(interval) - and pg_sleep_until(timestamp) to specify sophisticated - delays (Vik Fearing, Julien Rouhaud) + and pg_sleep_until(timestamp) to specify + delays more flexibly (Vik Fearing, Julien Rouhaud) - pg_sleep() only supports delays specified in seconds. + The existing pg_sleep() function only supports delays + specified in seconds. @@ -1468,28 +1449,29 @@ - These functions are prefixed with make_, + These functions' names are prefixed with make_, e.g. make_date(). - Have to_char(TZ) - return the proper value for constant time zone offsets (Tom Lane) + Make to_char()'s + TZ format specifier return a useful value for simple + numeric time zone offsets (Tom Lane) Previously, to_char(CURRENT_TIMESTAMP, 'TZ') returned - NULL if the TIME ZONE was set to a constant like - -4. + an empty string if the timezone was set to a constant + like -4. - Add timezone offset output option OF to OF to to_char() (Bruce Momjian) @@ -1503,6 +1485,19 @@ + + + Tighten validity checking for Unicode code points in chr(int) + (Tom Lane) + + + + This function now only accepts values that are valid UTF8 characters + according to RFC 3629. + + + @@ -1514,7 +1509,7 @@ Add functions for looking up objects in pg_class, pg_proc, pg_type, and - pg_operator which do not generate errors for + pg_operator that do not generate errors for non-existent objects (Yugo Nagata, Nozomi Anzai, Robert Haas) @@ -1522,8 +1517,9 @@ For example, to_regclass() - does lookups of pg_class and returns NULL for - non-existent objects. + does a lookup in pg_class similarly to + the regclass input function, but it returns NULL for a + non-existent object instead of failing. @@ -1531,30 +1527,28 @@ Add function pg_filenode_relation() - to allow for more efficient lookup of relation names from filenodes (Andres - Freund) + to allow for more efficient lookup of relation names from filenodes + (Andres Freund) - Add information_schema - column parameters.parameter_default - (Peter Eisentraut) + Add parameter_default column to information_schema.parameters + view (Peter Eisentraut) - Have information_schema.schemata - show all accessible schema (Peter Eisentraut) + Make information_schema.schemata + show all accessible schemas (Peter Eisentraut) - Previously it only showed owned schemas. + Previously it only showed schemas owned by the current user. @@ -1569,20 +1563,7 @@ - Add aggregates percentile_cont(), - percentile_disc(), rank(), - dense_rank(), percent_rank(), - cume_dist(), and mode() - (Atri Sharma, Andrew Gierth) - - - - - - Add control over which values are passed + Add control over which rows are passed into aggregate functions using the FILTER clause (David Fetter) @@ -1595,9 +1576,25 @@ linkend="syntax-aggregates">WITHIN GROUP) aggregates (Atri Sharma, Andrew Gierth, Tom Lane) + + + + + Add aggregates percentile_cont(), + percentile_disc(), mode(), rank(), + dense_rank(), percent_rank(), and + cume_dist() + (Atri Sharma, Andrew Gierth) + + + - This allows aggregates that require sorted input. + Support VARIADIC + aggregate functions (Tom Lane) @@ -1607,19 +1604,11 @@ types (Tom Lane) - This allows the declaration of aggregates like the built-in + This allows proper declaration of aggregates like the built-in aggregate array_agg() in SQL. - - - Allow VARIADIC - aggregate functions (Tom Lane) - - - @@ -1640,13 +1629,14 @@ - Convert NUMERICs to - decimal values in PL/Python + Convert numeric + values to decimal in PL/Python (Szymon Guz, Ronan Dunklau) - Previously these were converted to floats. + Previously such values were converted to Python float values, + risking loss of precision. @@ -1711,27 +1701,19 @@ Make libpq's PQconndefaults() - ignore invalid service files (Steve Singer, Bruce Momjian) + function ignore invalid service files (Steve Singer, Bruce Momjian) - Previously it returned NULL. + Previously it returned NULL if an incorrect service file was + encountered. - Allow libpq to support TLS versions beyond - TLSv1 (Marko Kreen) - - - - - - Document that libpq's PQclientEncoding() - returns -1 for an encoding lookup failure (Bruce - Momjian) + Accept TLS protocol versions beyond TLSv1 + in libpq (Marko Kreen) @@ -1746,15 +1728,14 @@ - Add createuser - - Add vacuumdb + Add option @@ -1766,61 +1747,64 @@ - Allow pg_xlogdump - to report a live log stream with - Have pg_resetxlog - -n output current and potentially changed values - (Rajeev Rastogi) + Make throw error for incorrect locale + settings, rather than silently falling back to a default choice + (Tom Lane) - Allow sizeof() in ECPG - C array definitions (Michael Meskes) + Make return exit code 4 for + an inaccessible data directory (Amit Kapila, Bruce Momjian) - - - Have ECPG properly handle nesting - requirements in C and SQL mode for C-style comments - (Michael Meskes) + This behavior more closely matches the Linux Standard Base + (LSB) Core Specification. - Have pg_ctl - return 4 for an inaccessible data directory - specification (Amit Kapila, Bruce Momjian) + On Windows, ensure that a non-absolute + + + Previously it would be interpreted relative to whichever directory + the underlying Windows service was started in. + + - This more closely matches the Linux Standard Base (LSB) - Core Specification. + Allow sizeof() in ECPG + C array definitions (Michael Meskes) - On Windows, interpret pg_ctl's non-absolute - path - <link linkend="APP-PSQL"><application>psql</></link> + <xref linkend="APP-PSQL"> @@ -1834,7 +1818,7 @@ - Suppress "No rows" in psql No rows output in psql @@ -1842,7 +1826,7 @@ - Allow Control-C to abort psql hung at connection + Allow Control-C to abort psql when hung at connection startup (Peter Eisentraut) @@ -1856,39 +1840,39 @@ - Have psql \db+ show tablespace options + Make psql \db+ show tablespace options (Magnus Hagander) - Have psql \do+ display the functions + Make psql \do+ display the functions which implement the operators (Marko Tiikkaja) - Have psql \d+ output an - OID line only if an oid column exists in a table - (Bruce Momjian) + Make psql \d+ output an + OID line only if an oid column + exists in a table (Bruce Momjian) - Previously, the presence or absence of an oid column was always - reported. + Previously, the presence or absence of an oid + column was always reported. - Have \d show disabled system triggers (Bruce + Make \d show disabled system triggers (Bruce Momjian) - Previously if you disabled all triggers, only user triggers + Previously, if you disabled all triggers, only user triggers would show as disabled. @@ -1902,9 +1886,9 @@ - Output the row count at the end of - psql \copy just like COPY (Kumar Rajeev Rastogi) + Output the row count at the end + of psql \copy just + like (Kumar Rajeev Rastogi) @@ -1944,12 +1928,13 @@ - In psql, output the written history file name - (\s) without adding an absolute path prefix (Tom Lane) + In psql, display the history file name written by + \s without converting it to an absolute path (Tom Lane) - The previous output was inconsistent. + The code previously attempted to convert a relative file name to + an absolute path for display, but frequently got it wrong. @@ -1960,36 +1945,35 @@ - <link linkend="APP-PGDUMP"><application>pg_dump</></link> + <xref linkend="APP-PGDUMP"> - Allow pg_restore options + Allow options - This allows multiple restore object to be specified. + This allows multiple objects to be restored in one operation. - Add IF EXISTS clauses when removing old objects during - dump and restore (Pavel Stehule) + Optionally add IF EXISTS clauses to the DROP + commands emitted when removing old objects during a restore (Pavel + Stehule) - This suppresses errors when removing old objects. - The new @@ -1998,7 +1982,7 @@ - <link linkend="app-pgbasebackup"><application>pg_basebackup</></link> + <xref linkend="app-pgbasebackup"> @@ -2024,7 +2008,7 @@ - Allow network-streams base backups to be throttled (Antonin Houska) + Allow network-stream base backups to be throttled (Antonin Houska) @@ -2046,25 +2030,29 @@ - Improve the way tuples are frozen, to preserve forensic information + Improve the way tuples are frozen to preserve forensic information (Robert Haas, Andres Freund) - Code that inspects tuple flag bits will need to be modified. + This change removes the main objection to freezing tuples as soon + as possible. Code that inspects tuple flag bits will need to be + modified. - No longer require function prototypes for function marked with the + No longer require function prototypes for functions marked with the PG_FUNCTION_INFO_V1 macro (Peter Eisentraut) - This eliminates needless boilerplate prototypes whose lack - generates compiler warnings. + This change eliminates the need to write boilerplate prototypes. + Note that the PG_FUNCTION_INFO_V1 macro must appear + before the corresponding function definition to avoid compiler + warnings. @@ -2082,8 +2070,8 @@ - Add API for memory allocations over one gigabyte (Noah - Misch) + Add an API to allow memory allocations over one gigabyte + (Noah Misch) @@ -2096,8 +2084,8 @@ - Add printf() modifier "z" to specify size_t - values (Andres Freund) + Support printf() size modifier z to + print size_t values (Andres Freund) @@ -2146,7 +2134,7 @@ Reduce the number of semaphores required by - @@ -2167,8 +2155,8 @@ Add make targets @@ -2178,7 +2166,7 @@ - Its functionality is now done by the default build rules. + The default build rules now include all the formerly-optional tests. @@ -2197,7 +2185,7 @@ - Add configure flag that appends custom text to the + Add a configure flag that appends custom text to the PG_VERSION string (Oskari Saarenmaa) @@ -2214,7 +2202,7 @@ - Various security and sanity fixes reported by the + Various minor security and sanity fixes reported by the Coverity scanner (Stephen Frost) @@ -2228,7 +2216,7 @@ - Improve Emacs configuration file + Improve sample Emacs configuration file emacs.samples (Peter Eisentraut) @@ -2239,26 +2227,28 @@ - Allow pgindent to be supplied a command-line list + Allow pgindent to accept a command-line list of typedefs (Bruce Momjian) - Pgindent is also now smarter about blank lines + pgindent is also now smarter about blank lines around preprocessor conditionals. - Avoid most uses of dlltool in Cygwin and + Avoid most uses of dlltool + in Cygwin and Mingw builds (Marco Atzeri, Hiroshi Inoue) - Allow client-only installs for MSVC (Windows) builds (MauMau) + Support client-only installs in MSVC (Windows) builds + (MauMau) @@ -2273,80 +2263,94 @@ - Add pg_prewarm - extension to preload relation data into the shared buffer cache - (Robert Haas) + Add extension to preload relation data + into the shared buffer cache at server start (Robert Haas) - This is useful at server start to produce more consistent - performance. + This allows reaching full operating performance more quickly. Add UUID random number generator - gen_random_uuid() to pgcrypto (Oskari - Saarenmaa) + gen_random_uuid() to + (Oskari Saarenmaa) - This allows the creation of version 4 UUIDs without - requiring the installation of uuid-ossp. + This allows creation of version 4 UUIDs without + requiring installation of . - Add option to include trigger execution time to auto_explain - (Horiguchi Kyotaro) + Allow to work with + the BSD or e2fsprogs UUID libraries, + not only the OSSP UUID library (Matteo Beccati) + + + + This improves the uuid-ossp module's portability + since it no longer has to have the increasingly-obsolete OSSP + library. The module's name is now rather a misnomer, but we won't + change it. - Fix pgstattuple - to not report rows from uncommitted transactions as dead - (Robert Haas) + Add option to to include trigger + execution time (Horiguchi Kyotaro) - Have pgstattuple - functions use regclass-type arguments (Satoshi Nagayasu) + Fix to not report rows from + uncommitted transactions as dead (Robert Haas) + + - While text-type arguments are still supported, they will be - removed in a later major release. + Make functions + use regclass-type arguments (Satoshi Nagayasu) + + + + While text-type arguments are still supported, they + may be removed in a future major release. - Improve consistency of pgrowlocks output to - honor snapshot rules more consistently (Robert Haas) + Improve consistency of output to honor + snapshot rules more consistently (Robert Haas) - Improve pg_trgm's - generation of trigrams for indexed regular expression searches by - discouraging the indexing of trigrams containing whitespace (Alexander - Korotkov) + Improve 's choice of trigrams for indexed + regular expression searches by discouraging the selection of + trigrams containing whitespace (Alexander Korotkov) - Store cube data more compactly - (Stas Kelvich) + Allow to report a live log stream + with + + + + + Store data more compactly (Stas Kelvich) @@ -2357,30 +2361,29 @@ - Reduce vacuumlo - client-side memory usage by using a cursor (Andrew Dunstan) + Reduce client-side memory usage by using + a cursor (Andrew Dunstan) - Dramatically reduce memory consumption in pg_upgrade (Bruce - Momjian) + Dramatically reduce memory consumption + in (Bruce Momjian) - Pass pg_upgrade - user names ( - <link linkend="pgbench"><application>pgbench</></link> + <xref linkend="pgbench"> @@ -2397,20 +2400,22 @@ - Add pgbench option ( - Add - Add long options to pgbench (Fabien Coelho) + Add pgbench option @@ -2419,19 +2424,19 @@ - <link linkend="pgstatstatements"><application>pg_stat_statements</></link> + <xref linkend="pgstatstatements"> - Have pg_stat_statements use a flat file for query - text storage (Peter Geoghegan) + Make pg_stat_statements use a file, rather than + shared memory, for query text storage (Peter Geoghegan) - This removes the limitation on query text length, and allows a - higher default number of unique statements to be tracked. + This removes the previous limitation on query text length, and + allows a higher number of unique statements to be tracked by default. @@ -2451,7 +2456,15 @@ This allows monitoring tools to only fetch query text for newly - created entries, as reported in queryid. + created entries, improving performance for repeated querying of the + statistics. + + + + + + Save the statistics file into $PGDATA/pg_stat at server + shutdown, rather than $PGDATA/global (Fujii Masao) -- 2.40.0