PostgreSQL 14 New Features
PostgreSQL 14 New Features
WITH EXAMPLES · ENGLISH SOURCE EDITION
Explore the features, SQL examples, and compatibility changes documented by Noriyoshi Shinoda.
Contents
Reference indexes
The opening chapter includes the first numbered table, Table 1. The indexes below collect the book’s other native numbered components.
Tables
- Table 1 — Version
- Table 2 — Examples notation
- Table 3 — Syntax rules
- Table 4 — Warning of transaction ID wraparound
- Table 5 — Added system catalogs and views
- Table 6 — Added views in the information schema (information_schema)
- Table 7 — System catalogs/views with additional columns
- Table 8 — System catalogs/views with columns removed
- Table 9 — System catalogs/views with modified output
- Table 10 — Pg_backend_memory_contexts view
- Table 11 — Pg_stat_progress_copy view
- Table 12 — Pg_stat_replication_slots view
- Table 13 — Pg_stat_wal view
- Table 14 — Added Wait Events
- Table 15 — Added data types
- Table 16 — Added attributes
- Table 17 — Added attribute
- Table 18 — Added Wait Events
- Table 19 — Wait event with changed type
- Table 20 — Added setting values
- Table 21 — Added functions for pipeline mode
- Table 22 — Added languages
- Table 23 — Added parameters
- Table 24 — Changed parameters
- Table 25 — Removed parameters
- Table 26 — Parameters with default values changed
- Table 27 — Major options
- Table 28 — Added functions
- Table 29 — Added columns
- Table 30 — Added functions
- Table 31 — Added Interface functions
Examples
- Example 1 — Match newline (PostgreSQL 13)
- Example 2 — Match newline (PostgreSQL 14)
- Example 3 — Factorial calculation (PostgreSQL 13)
- Example 4 — Factorial calculation (PostgreSQL 14)
- Example 5 — Factorial calculation (PostgreSQL 14)
- Example 6 — CREATE STATISTICS statement for system catalog
- Example 7 — CREATE LANGUAGE statement (PostgreSQL 14)
- Example 8 — Normal_rand function
- Example 9 — Query pg_backend_memory_contexts view
- Example 10 — Query pg_stat_progress_copy view
- Example 11 — Query pg_stat_replication_slots view
- Example 12 — Query pg_stat_wal view
- Example 13 — Streaming replication setting
- Example 14 — Binary transfer setting
- Example 15 — Execution plan log
- Example 16 — LZ4 compression
- Example 17 — Pg_column_compression function
- Example 18 — Asynchronous execution setting
- Example 19 — Execution plan for asynchronous execution
- Example 20 — Memoize node
- Example 21 — Extended statistics using expressions
- Example 22 — Infinity/-Infinity value
- Example 23 — Using multirange type
- Example 24 — Enhancement of jsonb type
- Example 25 — Calculation of pg_lsn type
- Example 26 — Using the Bloom filter in the BRIN index
- Example 27 — Line breaks in the pg_hba.conf file
- Example 28 — DECLARE STATEMENT statement
- Example 29 — Index information for automatic VACUUM log
- Example 30 — Authentication information log at the time of connection
- Example 31 — Process name of WAL receiver
- Example 32 — Process name of WAL sender
- Example 33 — 'Word' character class
- Example 34 — PL/Sample module
- Example 35 — ALTER DATABASE statement
- Example 36 — Check visibility map after executing COPY FREEZE statement
- Example 37 — INCLUDE clause with SP-GiST index creation
- Example 38 — CREATE PROCEDURE statement
- Example 39 — LANGUAGE SQL
- Example 40 — DROP TABLE CASCADE statement
- Example 41 — CREATE TABLE statement
- Example 42 — CREATE OR REPLACE TRIGGER statement
- Example 43 — GRANTED BY clause
- Example 44 — Table qualified with ON CONFLICT clause
- Example 45 — Multiple tuple DEFAULT clause
- Example 46 — Execute REINDEX statement on a partitioned table
- Example 47 — Specifying the tablespace
- Example 48 — VACUUM (PROCESS_TOAST) statement
- Example 49 — Autovacuum log at bypass index vacuum
- Example 50 — No AS clause required
- Example 51 — GROUP BY DISTINCT
- Example 52 — SEARCH clause (DEPTH FIRST)
- Example 53 — SEARCH clause (BREADTH FIRST)
- Example 54 — CYCLE clause
- Example 55 — JOIN USING AS clause
- Example 56 — TRUNCATE statement for FOREIGN TABLE
- Example 57 — Bit_count function
- Example 58 — Bit_xor function
- Example 59 — Date_bin function
- Example 60 — Create a date BC
- Example 61 — Split_part function
- Example 62 — Substring function
- Example 63 — Rtrim function
- Example 64 — Trim_array function
- Example 65 — Unistr function
- Example 66 — String_to_table function
- Example 67 — Date format in ISO 8601 format
- Example 68 — Pg_get_wal_pause_state function
- Example 69 — Pg_log_backend_memory_contexts function
- Example 70 — Pg_xact_commit_timestamp_origin function
- Example 71 — Pg_last_committed_xact function
- Example 72 — Pg_create_logical_replication_slot function
- Example 73 — Display query ID
- Example 74 — Idle timeout
- Example 75 — Log of conflict state
- Example 76 — Configure command for SSL
- Example 77 — Configure command for LZ4
- Example 78 — --no-instructions option
- Example 79 — Checksum specification option
- Example 80 — Pg_amcheck command
- Example 81 — --extension option
- Example 82 — Display access method
- Example 83 — Specifying the TOAST table
- Example 84 — List of extended statistics
- Example 85 — \d+ command
- Example 86 — \df, \do command
- Example 87 — \dT command with alias
- Example 88 — REINDEXDB --tablespace option
- Example 89 — Vacuumdb command options
- Example 90 — Verify_heapam function
- Example 91 — Cube type binary access
- Example 92 — Access using subscripts
- Example 93 — Pg_old_snapshot_time_mapping function
- Example 94 — Information of GiST index
- Example 95 — Output of bt_metap function
- Example 96 — Password check
- Example 97 — Pgstattuple_approx function
- Example 98 — Tracking REFRESH MATERIALIZED VIEW statement
- Example 99 — Pg_stat_statements_info view
- Example 100 — Index equation operator
- Example 101 — Pg_surgery Contrib module
- Example 102 — Execution of postgres_fdw related functions
- Example 103 — Batch_size option setting
Figures
Source edition
The source chapter order, wording, examples, and publication credits are retained. PDF page markers link the reading edition to the original document. Source identity and coverage · About the collection
1 About This Document
PDF page 5
1.1 Purpose
The purpose of this document is to provide information about the major new features of open-source RDBMS PostgreSQL 14 (14.0) GA.
1.2 Audience
This document is written for engineers who already know PostgreSQL, such as installation, basic management, etc.
1.3 Scope
This document describes the major difference between PostgreSQL 13 (13.4) and PostgreSQL 14 (14.0). As a general rule, this document examines the features of behavior change. This document does not describe and verify all new features. In particular, the following new features are not included.
Bugfix
Performance improvement by changing internal behavior
Improvement of regression test
Operability improvement by psql command tab input
Improvement of pgbench command
Improvement of documentation, modify typo in the source code
Refactoring without a change in behavior
1.4 Software Version
The contents of this document have been verified for the following versions and platforms.
| Software | Version |
|---|---|
| PostgreSQL | PostgreSQL 13.4 (for comparison) PostgreSQL 14 (14.0) (Sep 27, 2021 21:02:15) |
| Operating System | Red Hat Enterprise Linux 7 Update 8 (x86-64) |
| Configure option | –with-llvm –with-ssl=openssl –with-perl –with-lz4 |
PDF page 6
1.5 The Question, comment, and Responsibility
The contents of this document are not an official opinion of Hewlett Packard Enterprise Japan Co, Ltd. The author and affiliation company do not take any responsibility for the problem caused by the mistake of contents. If you have any comments for this document, please contact Noriyoshi Shinoda (noriyoshi.shinoda@hpe.com) Hewlett Packard Enterprise Japan Co, Ltd.
1.6 Notation
This document contains examples of the execution of the command or SQL statement. Execution examples are described according to the following rules:
| Notation | Description |
|---|---|
| # | Shell prompt for Linux root user. |
| $ | Shell prompt for Linux general user. |
| Bold | The user input string. |
| postgres=# | psql command prompt for PostgreSQL administrator. |
| postgres=> | psql command prompt for PostgreSQL general user. |
| Underline | Important output items. |
| Underline «PASSWORD» | Important output items. Replaced by password string. |
The syntax is described in the following rules:
| Notation | Description |
|---|---|
| Italic | Replaced by the name of the object which users use, or the other syntax. |
| [ ] | Indicate that it can be omitted. |
| { A | B } | Indicate that it is possible to select A or B. |
| … | General syntax. It is the same as the previous version. |
2 New Features Summary
PDF page 7
More than 200 new features have been added to PostgreSQL 14. Here are some major new features and benefits.
2.1 Improve analytic query performance
Logical Streaming Replication enhancements
Logical replication can now transfer decoded updates to a standby instance without waiting for the transaction to complete. In addition, it is now possible to send transfer data that was previously converted to text in binary.
Parallel query enhancement
Parallel queries now work for REFRESH MATERIALIZED VIEW statements.
LZ4 compression
LZ4 compression is now available for TOAST columns.
BRIN index
Bloom filters are now available.
2.2 Improve reliability
PostgreSQL 14 implements the following enhancements to improve reliability.
Enhanced data structure checking
Contrib module amcheck now includes a function to check object structure. Also, add pg_amcheck command to run checks by the amcheck module from the command line
Elimination of password length restrictions
The restriction on password length has been removed, and very long passwords can now be used.
PDF page 8
2.3 Improved maintainability
The following features that can improve operability have been added.
Enhancements to the REINDEX statement
It is now possible to execute a REINDEX statement on a partitioned table. This eliminates the need to run REINDEX on each partition. In addition, it will be able to move the index to be re-created with the TABLESPACE clause.
Enhancement of monitoring feature
A real-time view of COPY command execution status has been added. A view has also been added to check WAL usage and memory status of backend processes. In the Contrib module pg_stat_statements, it is possible to acquire information on utility statements such as REFRESH MATERIALIZED VIEW statement, and the statistical information that can be acquired has increased significantly.
2.4 Preparing for future new features
PostgreSQL 14 is now ready for features that will be provided in future versions.
Data Access by Subscripts
The infrastructure for subscript data access to new data types has been implemented, and the hstore module can take advantage of this feature.
2.5 Incompatibility
In PostgreSQL 14, the following specifications have been changed from PostgreSQL 13.
2.5.1 Functions
The following functions have been changed.
LEAD / LAG
The data type of some function return values has been changed from anyelement type to anycompatible type.
PDF page 9
EXTRACT
The return data type of the EXTRACT function has been changed from double precision to numeric. In previous versions, the EXTRACT function internally called the DATE_PART function, but now it’s independent. The data type of the return value of the DATE_PART function remains double precision.
VAR_SAMP, STDDEV_SAMP
The return value specified as a NaN value of type numeric has changed from NaN to NULL.
2.5.2 Regular Expression
In newline-sensitive mode, the escape \W and \D now match the linefeed code.
2.5.3 Factorial calculation
The factorial calculation result and operator have been changed.
Factorial of negative value
Factorial calculation of negative values will result in an error.
PDF page 10
Removed operator
The factorial operator (! and !!) has been removed.
Removed function
The numeric_fac function has been removed.
2.5.4 Operators
The deprecated operators @ and ~ have been removed from the Contrib modules cube, hstore, intarray and seg.
2.5.5 Manuals
The Default Roles in the manual and the program source have been changed to Predefined Roles.
2.5.6 Transaction wraparound warning
The threshold points of the remaining transactions for the wraparound of the transaction ID have been changed as follows.
PDF page 11
| Comparison | PostgreSQL 13 | PostgreSQL 14 | Note |
|---|---|---|---|
| Warning | 11 million | 40 million | |
| Shutdown | One million | 3 million |
2.5.7 Start-up options
The -o option, which specifies additional options when starting postmaster, has been removed.
2.5.8 Extended Statistics
CREATE STATISTICS statement for system catalogs can no longer be executed. This limit is backported to older versions.
2.5.9 Protocol
The version 2 client-backend communication protocol has been removed. This protocol has been used since PostgreSQL 7.4.
2.5.10 ALTER OPERATOR
Removed support for postfix (right-unary) operators on ALTER OPERATOR statement and DROP OPERATOR statement.
2.5.11 ALTER TABLE
The DROP EXPRESSION clause can no longer be specified in the ALTER TABLE ONLY statement.
PDF page 12
2.5.12 CREATE LANGUAGE
Specifying a name in single quotes will result in an error in the CREATE LANGUAGE statement or DROP LANGUAGE statement.
2.5.13 LIBPQ connection string
The connection strings authtype and tty have been removed. The client connection setting sslcompression for SSL compression is ignored by the backend.
2.5.14 Findoidjoins
The findoidjoins command has been removed.
2.5.15 Intarray
Prevent the containment operators (<@ and @>) for intarray module from using GiST indexes.
2.5.16 Pg_hba.conf file
Values “0”, “1”, and “no-verify” are no longer supported of the clientcert option in the pg_hba.conf file.
2.5.17 Pg_standby
The pg_standby command has been removed.
2.5.18 Tablefunc
Negative values can no longer be specified for the first parameter of the normal_rand function.
PDF page 13
PDF page 14
3 Architecture
PDF page 14
3.1.1 Modified catalogs
The following catalogs have been changed.
| View name | Description |
|---|---|
| pg_backend_memory_contexts | Displays all the memory contexts of the server process attached to the current session. |
| pg_stat_progress_copy | Outputs the execution status of the COPY statement. |
| pg_stat_replication_slots | Outputs the usage status of the replication slot. |
| pg_stat_wal | Outputs the WAL data output status. |
| pg_stats_ext_exprs | Provides information about all expressions included in extended statistics objects |
| View name | Description |
|---|---|
| routine_column_usage | Identifies the column used by the function or procedure. Currently not tracked. |
| routine_routine_usage | Identifies the function used by the function or procedure. Currently, some are not tracked. |
| routine_sequence_usage | Identifies the sequence used by a function or procedure. Currently, some are not tracked. |
| routine_table_usage | Identifies the table used by the function or procedure. Currently not tracked. |
PDF page 15
| View name | Added column | Data type | Description |
|---|---|---|---|
| pg_attribute | attcompression | char | Current compression method of the column. |
| pg_inherits | inhdetachpendin g | boolean | True for a partition that is in the process of being detached |
| pg_locks | waitstart | timestamp with time zone | Time when the server process time started waiting for this lock. |
| pg_prepared_statements | pg_prepared_statementsgeneric_plans | bigint | Number of times generic plan was chosen. |
| custom_plans | bigint | Number of times custom plan was chosen | |
| pg_proc | prosqlbody | pg_node_tre e | Pre-parsed SQL function body. |
| pg_range | rngmultitypid | oid | OID of the multirange type. |
| pg_replication_slots | two_phase | boolean | Enabled for decoding prepared transactions. |
| pg_stat_activity | query_id | bigint | Identifier of this backend’s most recent query. |
| pg_stat_database | session_time | double precision | Time spent by database sessions in this database. |
| active_time | double precision | Time spent executing SQL statements in this database. | |
| idle_in_transacti | double | Time spent idling while in a | |
| on_time | precision | transaction in this database. | |
| sessions | bigint | Total number of sessions. | |
| sessions_abandoned | bigint | Number of lost sessions. | |
| sessions_fatal | bigint | Number of sessions caused by fatal error. | |
| sessions_killed | bigint | Number of sessions terminated by the operator. | |
| pg_stats_ext | exprs | text[] | Expression to get extended statistics |
| pg_statistic_ext | stxexprs | pg_node_tre e | Expression trees for statistics object attributes. |
| pg_statistic_ext_data | stxdexpr | pg_statistic [] | A list of any expressions covered by this statistics object. |
| pg_subscription | subbinary | boolean | Publisher send data in binary format. |
| substream | boolean | Streaming of in-progress transactions. | |
| pg_type | typsubscript | regproc | Subscripting handler function’s OID. |
PDF page 16
| Catalog name | Column name | Description |
|---|---|---|
| pg_stat_ssl | compression | It was deleted because compression was disabled. |
| View name | Description |
|---|---|
| pg_attribute | The column definition order has changed. |
| pg_class | The initial value of the reltuples column has been changed to -1. |
| pg_settings | pending_restart column shows as true when a pertinent entry in postgresql.conf is removed. |
| pg_statistic_ext | Extended statistics with the ’e’= expression may be output in the stxkind column. |
| pg_stat_activity | Information of the archiver process and the walsender process will be output. walsender now show their latest replication command. This feature is backported to older versions. |
| pg_subscription_rel | ‘f’ = finished table copy may be output in the srsubstate column. |
| pg_type | The typtype column may output ’m’ to indicate a multi-range type. |
Among the modified system catalogs, the details of the major catalogs are described below.
PDF page 17
Pg_backend_memory_contexts
The pg_backend_memory_contexts view provides a view of the memory context usage of the server process corresponding to the current session. This view can only be viewed by users with the SUPERUSER attribute.
| Column name | Data type | Description |
|---|---|---|
| name | text | Name of the memory context. |
| ident | text | Identification information of the memory context. |
| parent | text | Name of the parent of this memory context. |
| level | integer | Distance from TopMemoryContext. |
| total_bytes | bigint | Total bytes allocated for this memory context. |
| total_nblocks | bigint | Total number of blocks allocated for this memory context. |
| free_bytes | bigint | Free space in bytes. |
| free_chunks | bigint | Total number of free chunks. |
| used_bytes | bigint | Used space in bytes. |
Pg_stat_progress_copy
This view will output the execution status of the COPY statement.
PDF page 18
| Column name | Data type | Description |
|---|---|---|
| pid | integer | Process ID of backend. |
| datid | oid | OID of the database |
| datname | name | Name of the database |
| relid | oid | OID of the table on which the COPY command is executed. |
| command | text | Command name, COPY FROM or COPY TO. |
| type | text | The IO types. |
| bytes_processed | bigint | Number of bytes already processed. |
| bytes_total | bigint | Size of source file for COPY FROM command. |
| tuples_processed | bigint | Number of tuples already processed. |
| tuples_excluded | bigint | Number of tuples not processed because they were excluded. |
Pg_stat_replication_slots
This view outputs the state of the logical replication slot. To reset the contents of the view, run the pg_stat_reset_replication_slot function.
PDF page 19
| Column name | Data type | Description |
|---|---|---|
| slot_name | text | Identifier for the replication slot. |
| spill_txns | bigint | Number of transactions spilled to disk. |
| spill_count | bigint | Number of times transactions were spilled to disk. |
| spill_bytes | bigint | Amount of decoded transaction data spilled to disk. |
| stream_txns | bigint | Number of in-progress transactions streamed. |
| stream_count | bigint | Number of times in-progress transactions. |
| stream_bytes | bigint | Amount of decoded in-progress transaction data streamed. |
| total_txns | bigint | Number of decoded transactions. |
| total_bytes | bigint | Amount of decoded transactions data. |
| stats_reset | timestamp with time zone | timestamp with Time at which these statistics were last reset |
Pg_stat_wal
Only one tuple of WAL output status is output to the pg_stat_wal view. The value of this view can be reset by pg_stat_reset_shared function with ‘wal’ specified. The values of the wal_write_time and wal_sync_time columns are output only when the track_wal_io_timing parameter to ‘on’.
PDF page 20
| Column name | Data type | Description |
|---|---|---|
| wal_records | bigint | Total number of WAL records. |
| wal_fpi | bigint | Total number of WAL full page images. |
| wal_bytes | numeric | Total amount of WAL generated. |
| wal_buffers_full | bigint | Number of times WAL data was written to disk because WAL buffers became full |
| wal_write | bigint | Number of times WAL buffers were written. |
| wal_sync | bigint | Number of times WAL files were synced to disk. |
| wal_write_time | double precision | Total amount of time spent writing WAL buffers |
| wal_sync_time | double precision | Total amount of time spent syncing WAL files. |
| stats_reset | timestamp with time zone | with Time at which these statistics were last reset. |
3.1.2 Logical Replication
The following features have been added to Logical Replication.
Logical Streaming Replication
Traditional logical replication transfers updates to the subscription instance on every transaction commit. PostgreSQL 14 offers a logical streaming replication feature that transfers data without waiting for the transaction to be committed. For logical streaming replication, set the streaming
PDF page 21
attribute to ‘on’ when creating or modifying SUBSCRIPTION. The default value for the STREAMING attribute is ‘off’.
Binary transfer
Traditional logical replication has converted data into text and transfers it. Binary transfer is possible by setting the attribute binary of SUBSCRIPTION to ‘on’. This can be expected to reduce the amount of network transfer. If no attribute is specified, it will be transferred in text format as before.
PDF page 22
Separation of initial synchronization and differential update
Data initial synchronization and update information transactions have been separated. This eliminates the need to start over from the initial data synchronization when an error occurs. An additional temporary logical replication slot is required when migrating initial data. The name of this replication slot is “pg_%u_sync_%u_%llu” (SUBSCRIPTION oid, table relid, System ID).
Wait Events
The following wait events can now be confirmed.
| Wait Event name | Description |
|---|---|
| LogicalChangesRead | Waiting for reading from a logical change file. |
| LogicalChangesWrite | Waiting for writing to the logical change file. |
| LogicalSubxactRead | Waiting for a read from a logical sub-transaction file. |
| LogicalSubxactWrite | Waiting to write to a logical sub-transaction file. |
Add Messages
The output plugin accepts a new parameter ‘Messages’ that controls if logical decoding messages are written into the replication stream.
3.1.3 Parallel Query
SELECT part of the REFRESH MATERIALIZED VIEW statement can now be executed in parallel. The example below is a log of the auto_explain module when the REFRESH MATERIALIZED VIEW statement is executed.
PDF page 23
3.1.4 LZ4 compression of TOAST columns
It is now possible to specify LZ4 as the compression method for TOAST column data. In order to perform LZ4 compression, PostgreSQL with –with-lz4 specified in the option of the ‘configure’ command is required. To specify the compression method for TOAST columns in the CREATE TABLE statement, specify pglz or lz4 in the COMPRESSION clause of the column attribute. The default value is determined by default_toast_compression. In the ALTER TABLE statement (or ALTER MATERIALIZED VIEW statement), the SET COMPRESSION clause can be specified in the column definition change syntax. Changing the compression method with the ALTER TABLE statement does not change the existing tuple.
PDF page 24
3.1.5 Execution Plan
The following enhancements have been implemented to the SQL statement execution plan creation feature.
Asynchronous execution
Asynchronous processing can now be executed in ForeignScan processing. Improve performance by running ForeignScan in parallel when accessing data on remote servers. To use this feature, set the async_capable option to ‘on’ in the postgres_fdw module (default value is ‘off’).
PDF page 25
Memoize
The new executor node type named Memoize has been added. The planner can include this node type in the plan to have the executor cache the results from inside the parameterized nested loop join. The use of this execution plan can be controlled by the parameter enable_memoize. The default value is ‘on’. Currently, this execution plan is considered for regular joins and LATERAL type joins.
PDF page 26
3.1.6 Extended Statistics
It is now possible to define extended statistics on expressions. The pg_stats_ext_exprs system view has been added to reference extended statistics with expressions.
3.1.7 Data types
The following data types have been added / extended.
Maximum / minimum value of numeric data type
Infinity and -Infinity, which indicate the maximum and minimum values, can now be specified for numeric and float types. The value obtained by dividing a non-zero floating point number by the Infinity value, or the return value of zero when -Infinity is specified for the exp function and power function.
PDF page 27
Multirange type
A data type has been provided that indicates multiple ranges that do not overlap. The specific data types are as follows.
| Data type name | Description |
|---|---|
| datemultirange | Date type range |
| int4multirange | Int type range |
| int8multirange | Bigint type range |
| nummultirange | Numeric type range |
| tsmultirange | Timestamp type range |
| tstzmultirange | Timestamp with time zone type range |
| anymultirange | Multi-range pseudo data type |
| anycompatiblemutirange | Any pseudo-type multiple range type |
The following is an example of range specification by bigint type.
PDF page 28
Jsonb type
The access method by subscript for jsonb type has been enhanced.
PDF page 29
Pg_lsn type
It is now possible to perform addition / subtraction calculations using the numeric type for values of the pg_lsn type.
Point type
The operators («|, »|) that get strictly below/above can now be used for point types.
3.1.8 BRIN indexes
The following operator classes are now available for BRIN indexes.
Bloom Filter
The operator classes “{data type}_bloom_ops” that use Bloom filters have been added. The following attributes can be specified for this operator class.
| Attribute name | Description |
|---|---|
| n_distinct_per_range | Specifies the estimated number of non-null values in the block range. The default value is -0.1. |
| false_positive_rate | Specifies the desired false positive rate used by the index. The default value is 0.01. |
PDF page 30
Min/Max-Multi Index
The operator classes “{data type}_minmax_multi_ops” have been added to store multiple minimum and maximum values. The following attributes can be specified for this operator class.
| Attribute name | Description |
|---|---|
| values_per_range | Specifies the maximum number of values to be stored by the index. The default value is 32, and values from 8 to 32 can be specified. |
3.1.9 Wait Events
The following wait events have been added.
| Wait Event name | Type | Description |
|---|---|---|
| AppendReady | IPC | Waiting for subplan node preparation. |
| BaseBackupRead | IO | Waiting for base backup file to be read. |
| BufferIO | IPC | Waiting for buffer I/O to complete. |
| BufFileTruncate | IO | Waiting for buffer file truncation. |
| LogicalChangesRead | IO | Waiting to read the logical change file. |
| LogicalChangesWrite | IO | Waiting to write a logical change file. |
| LogicalSubxactRead | IO | Waiting to load a logical subtransaction. |
| LogicalSubxactWrite | IO | Waiting for a logical subtransaction to write. |
| WalReceiverExit | IPC | Waiting for the WAL receiver process to finish. |
The following wait events have been retyped.
| Wait Event name | Before | After | Note |
|---|---|---|---|
| WalReceiverWaitStart | Client | IPC |
3.1.10 Stored Procedure
The following functions have been added.
PDF page 31
SPI_execute_extended
This API replaces the deprecated SPI_execute_plan_with_paramlist. It is possible to specify the reowner used to fix the execution plan. Syntax
SPI_cursor_parse_open
Set up a cursor using a query string and parameters. Syntax
SPI_scroll_cursor_fetch
Fetch some rows from a cursor Syntax
3.1.11 Pg_hba.conf file
By adding a backslash () at the end of a line, a single setting can now be described across multiple lines. The backslash must be the last character on the line.
PDF page 32
3.1.12 LIBPQ library
The following extensions have been implemented in the libpq library.
Connection string target_session_attrs
The following values have been added to the settings of the target_session_attrs parameter.
| Value | Description |
|---|---|
| read-only | The destination database cannot be updated. The opposite of read-write. |
| primary | Connect to the primary instance of streaming replication. |
| standby | Connect to a standby instance of streaming replication. |
| prefer-standby | Connect if a standby instance exists. If the standby instance does not exist, connect to the primary instance. |
Connection string sslcrldir
It is now possible to set the sslcrldir to specify the CRL storage directory for SSL connections. It can also be specified by the environment variable PGSSLCRLDIR.
Connection string sslsni
Configure Server Name Indication (SNI) for SSL connections. It can also be specified by the environment variable PGSSLSNI.
Pipeline mode
The libpq pipeline mode allows applications to avoid FE/BE protocol synchronization messages implicitly included in the old libpq API after each query. The following functions have been added.
| Function name | Description |
|---|---|
| PQpipelineStatus | Returns the status of the current pipeline mode. |
| PQenterPipelineMode | Enter pipeline mode. |
| PQexitPipelineMode | Exit pipeline mode. |
| PQpipelineSync | Request pipeline synchronization. |
Debug log
The PQsetTraceFlags function has been added.
PDF page 33
Sync message
The PQsendFlushRequest function has been added.
3.1.13 ECPG
DECLARE STATEMENT statement can now be specified for ECPG.
3.1.14 Roles
The following roles have been added.
Pg_database_owner
The pg_database_owner role has been added. Members of this role implicitly consist of the database owner. It is usually expected to be used in a template database.
Pg_read_all_data / pg_write_all_data
Added pg_read_all_data role, which allows reading all objects in the database, and pg_write_all_data role, which allows writing.
PDF page 34
3.1.15 Logfile
Additional information is now output to the log file.
Log_autovacuum_min_duration
Detailed information for each index is now output to the automatic VACUUM log (log_autovacuum_min_duration).
Log_connection
Additional information about authentication is output to the connection log (log_connection).
PDF page 35
3.1.16 Process name
The information is appended to some process names in the instance.
WAL Receiver
The status is now output to the process name of the wal receiver process.
WAL sender
The replication command name is now output to the process name of the WAL sender process for logical replication.
3.1.17 Regular Expression
The complement-class escapes \D, \S, \W are now allowed within bracket expressions. Also, ‘word’ has been added as a character class. This is the equivalent of \w.
PDF page 36
3.1.18 Text search
The languages for text search have been increased. The following languages have been added to PostgreSQL 14.
| Language name | Description |
|---|---|
| armenian | Armenian language |
| basque | Basque language |
| catalan | Catalan language |
| hindi | Hindi language |
| serbian | Serbian language |
| yiddish | Yiddish language |
3.1.19 Test module
The PL/Sample module, which can be used as a template for procedure languages, has been added.
PDF page 37
3.1.20 Maximum password length
The maximum length limit for password strings used for client authentication has been removed.
3.1.21 LLVM
Now supports LLVM 12.
4 SQL Statements
PDF page 38
This section explains new features related to SQL statements.
3.2.1 ALTER CURRENT_ROLE
The statements that can specify CURRENT_USER clause, such as the ALTER AGGREGATE, ALTER CONVERSION, and ALTER DATABASE statements, can now also specify a CURRENT_ROLE clause.
3.2.2 ALTER SUBSCRIPTION
The syntax for adding/removing publications for existing subscriptions has been added. Specify ADD PUBLICATION clause or DROP PUBLICATION clause in the ALTER SUBSCRIPTION statement. Syntax
3.2.3 ALTER TABLE
CONCURRENTLY clause can now be specified in the ALTER TABLE DETACH PARTITION statement. If CONCURRENTLY is specified, it will be executed at a lower lock level to avoid blocking other sessions that may be accessing the partitioned table. In this mode, two transactions are used internally and cannot be executed within a transaction block. Also, it cannot be executed on a partitioned table that contains the default partition. If FINALIZE is specified, the previous DETACH CONCURRENTLY call that was canceled or interrupted is completed.
PDF page 39
Syntax
3.2.4 COPY FREEZE
Visibility Map is now updated with the execution of COPY FREEZE statement.
3.2.5 CREATE INDEX
The INCLUDE clause can now be specified when creating SP-GiST indexes.
PDF page 40
3.2.6 CREATE PROCEDURE/FUNCTION
The following enhancements have been implemented for the CREATE PROCEDURE and CREATE FUNCTION statements.
OUT clause
It is now possible to specify the OUT clause as a parameter of PROCEDURE.
PDF page 41
LANGUAGE SQL
When the LANGUAGE SQL clause is specified in the CREATE FUNCTION statement and CREATE PROCEDURE statement, it is not necessary to enclose it in character literals, and SQL standard-compliant syntax is supported. The source for FUNCTION / PROCEDURE created with this syntax is stored in the prosqlbody column of the pg_proc catalog.
PDF page 42
FUNCTION and PROCEDURE created in the standard format are aware of the dependencies of the objects they are used on. For this reason, when the DROP TABLE CASCADE statement is executed, FUNCTION with dependencies will be dropped at the same time.
3.2.7 CREATE TABLE
It is now possible to specify different values of COLLATION for partition boundaries.
3.2.8 CREATE TRIGGER
The OR REPLACE clause can now be specified in the CREATE TRIGGER statement.
PDF page 43
3.2.9 CREATE TYPE
SUBSCRIPT clause that specifies the MULTIRANGE_TYPE_NAME clause and generic subscript access for the function you specify more than one range type has been added to the CREATE TYPE statement. Syntax
Syntax
3.2.10 GRANT / REVOKE
It is now possible to specify the GRANTED BY clause for granting roles with GRANT and REVOKE statements in accordance with the SQL standard. The GRANTED BY clause can only specify the current role that executes the GRANT statement, so it behaves the same as in previous versions. Syntax
PDF page 44
3.2.11 INSERT
The following enhancements have been implemented in the INSERT statement.
ON CONFLICT clause
It is now possible to qualify a table name for a column specification in the WHERE clause in the ON CONFLICT clause.
GENERATED ALWAYS clause
It is now possible to specify multi-tuple DEFAULT clause when executing an INSERT statement on a table that has a column with a GENERATED ALWAYS clause.
PDF page 45
3.2.12 REINDEX
The following enhancements have been implemented to the REINDEX statement.
Partitioned table
It is now possible to specify a partitioned table for the REINDEX statement.
Specifying the tablespace
Tablespaces for indexes can now be specified in the optional TABLESPACE clause.
PDF page 46
3.2.13 VACUUM
The following enhancements have been implemented in VACUUM.
TOAST table
The PROCESS_TOAST option can now be specified in the VACUUM statement. This option performs VACUUM processing on the TOAST table. This parameter is enabled by default. To disable processing of the TOAST table, specify the PROCESS_TOAST FALSE option.
PDF page 47
Failsafe Mechanism
If it determines that the table’s relfrozenxid or relminmxid is dangerously past, VACUUM bypasses non-freeze processing. The parameters vacuum_failsafe_age and vacuum_multixact_failsafe_age have been added as these thresholds.
Bypass index vacuum
Allow vacuum to skip index vacuuming when the number of removable index entries is insignificant. The vacuum parameter INDEX_CLEANUP has a new default of auto that enables this optimization.
3.2.14 SELECT
The following enhancements have been implemented to the SELECT statement.
Support for reserved words
In PostgreSQL 14, AS clause is no longer required even when a reserved word is specified as an alias for a column in the SELECT statement. The number of reserved words that cannot be used for aliases has been significantly reduced.
PDF page 48
GROUP BY DISTINCT
It is now possible to specify DISTINCT to eliminate duplicates in the GROUP BY clause. It is also possible to specify ALL to output all (the default behavior is ALL).
SEARCH clause / CYCLE clause
The SEARCH and CYCLE clauses defined in the SQL standard can now be specified in the WITH clause of recursive SQL statements. The CYCLE clause is used for closed circuit detection, and the SEARCH clause can be used to specify depth-first search (DEPTH FIRST) or breadth-first search (BREADTH FIRST).
PDF page 49
PDF page 50
PDF page 51
USING AS clause
It is now possible to use aliases for columns specified in the JOIN USING clause. Aliases are also available in the SELECT clause for the columns specified in the JOIN. This is a feature defined in SQL:2016 feature F404 “Range variable for common column names”.
PDF page 52
3.2.15 TRUNCATE
TRUNCATE statements can now be executed in FOREIGN TABLE if supported by FOREIGN DATA WRAPPER. The postgres_fdw module now supports the TRUNCATE statement.
3.2.16 Functions
The following functions have been added / extended.
Bit_count
Outputs the number of bits that are turned on in the specified bit string or bytea type. Syntax
PDF page 53
Bit_xor
An aggregate function bit_xor has been added to calculate the XOR of a bit string. The bit_or and bit_and functions are already provided. Syntax
Date_bin
Truncates the entered timestamp at the specified interval. It is similar to the date_trunc function, but can be truncated at any interval. Syntax
Make_timestamp / make_timestamptz
These functions can now specify a negative value indicating the BC to the specified year.
PDF page 54
Split_part
It is now possible to specify a negative value for the third parameter of the split_part function. If a negative value is specified, the part from the right side of the string specified in the first parameter can be cut off.
Substring
It now conforms to the syntax formulated in the SQL standard, SQL:2003. Syntax
The execution result is the same as SUBSTRING(text FROM pattern FOR escape).
PDF page 55
Trim / ltrim / rtrim
The ltrim and rtrim functions can now be used for bytea types, and the trim function can now specify LEADING and TRAILING clauses for bytea types.
Trim_array
The function trim_array has been added to remove the end of an array. Syntax
Unistr
The unistr function evaluates the specified Unicode escaped string.
PDF page 56
Syntax
String_to_table
The string_to_table function separates the string with the specified separator and converts it to a table. Syntax
Jsonb type ISO 8601 format date
Supports ISO 8601 date formats. This feature has been backported since PostgreSQL 13.1.
PDF page 57
Pg_get_wal_pause_state
Returns the paused state of recovery. Returns “not paused” if no pause was requested, “pause requested” if pause was requested but recovery is not paused, and “paused” if recovery is paused. In PostgreSQL 14, recovery is now paused if the required parameter values are missing. Syntax
Pg_log_backend_memory_contexts
The pg_log_backend_memory_contexts function outputs the memory status of the process with the specified ID as a LOG level message.
PDF page 58
Syntax
Pg_terminate_backend
The pg_terminate_backend function now has a parameter to specify a timeout. The function will return true if the session exits within the timeout. Syntax
Pg_xact_commit_timestamp_origin
This function outputs the time stamp and replication origin for the transaction ID. There is a need to specify ‘on’ the track_commit_timestamp the execution of this function. Syntax
PDF page 59
Pg_last_committed_xact
The function now outputs a roident column indicating the replication origin in the execution result. Syntax
Pg_get_catalog_foreign_keys
Added pg_get_catalog_foreign_keys function to retrieve information about foreign keys defined in a system catalog. This function can be run by general users.
Pg_create_logical_replication_slot
The parameter twophase has been added to support two-phase commit.
PDF page 60
5 Configuration Parameters
PDF page 61
In PostgreSQL 14 the following parameters have been changed.
3.3.1 Added parameters
The following parameters have been added.
| Parameter name | Description (context) | Default value |
|---|---|---|
| client_connection_check_interval | The time interval between optional checks that the client is still connected. (user) | The time interval between optional checks that 0 |
| compute_query_id | Compute query identifiers. (superuser) | auto |
| debug_discard_caches | Aggressively invalidate system caches for debugging purposes. (superuser) | Aggressively invalidate system caches for 0 |
| default_toast_compression | Default compression for new columns. (user) | pglz |
| enable_async_append | Use of async append plans. (user) | on |
| enable_memoize | Enable Memoize node. (user) | on |
| huge_page_size | The size of huge page. (postmaster) | 0 |
| idle_session_timeout | The maximum allowed idle time. (user) | 0 |
| in_hot_standby | Shows whether hot standby is currently active. (internal) | Shows whether hot standby is currently active. off |
| log_recovery_conflict_waits | Logs standby recovery conflict waits. (sighup) | off |
| min_dynamic_shared_memory | Amount of dynamic shared memory reserved at startup. (postmaster) | Amount of dynamic shared memory reserved at 0 |
| recovery_init_sync_method | Sets the method for synchronizing the data directory before crash recovery. (sighup) | Sets the method for synchronizing the data fsync |
| remove_temp_files_after_crash | Remove temporary files after backend crash. (sighup) | Remove temporary files after backend crash. on |
| ssl_crl_dir | Location of the SSL certificate revocation list directory. (sighup) | Location of the SSL certificate revocation list '' |
| track_wal_io_timing | Collects timing statistics for WAL I/O activity. (superuser) | Collects timing statistics for WAL I/O activity. off |
| vacuum_failsafe_age | Age at which VACUUM should trigger failsafe. (user) | Age at which VACUUM should trigger failsafe. 1600000000 |
| vacuum_multixact_failsafe_age | Multixact age at which VACUUM should trigger failsafe. (user) | Multixact age at which VACUUM should trigger 1600000000 |
PDF page 62
Compute_query_id
If the parameter value is set to on, a unique ID will be calculated for the query being executed. The query ID will be the same value for all SQLs that have the same meaning in the database. The query ID can be displayed by EXPLAIN VERBOSE statement, queryid column in pg_stat_activity view, %Q in log_line_prefix parameter, and so on. This is an adaptation of the functionality previously used by the pg_stat_statements module. The default value is ‘auto’, which is automatically enabled if modules such as pg_stat_statements require this parameter.
Idle_session_timeout
Specifies the timeout value in milliseconds for forcibly terminating idle sessions. The default value is 0, which means that no timeout will occur. During transaction execution, idle_in_transaction_session_timeout is used and idle_session_timeout is ignored.
PDF page 63
Log_recovery_conflict_waits
In an environment where the log_recovery_conflict_waits parameter is enabled on the standby instance, conflict information is output to the log when a conflict occurs when deadlock_timeout is exceeded. Also, if the conflict is resolved, it will be output to the log. The following is the output conflict information.
PDF page 64
Remove_temp_files_after_crash
Determines whether to remove the temporary files that were created when the backend process terminated abnormally. Conventionally, these files are not removed until the instance is restarted. The default value is ‘on’, which means that the temporary files will be deleted if the backend process terminates abnormally.
3.3.2 Changed parameters
The setting range and options were changed for the following configuration parameters.
| Parameter name | Changes |
|---|---|
| log_line_prefix | Added %P to indicate the process ID of the parallel group leader. Added %Q to indicate query ID. |
| password_encryption | The set value on/true/1 has been removed. |
| restore_command | Dynamic changes are now possible by reloading the parameter file. |
| unix_socket_directories | Abstract namespaces starting with @ can now be specified. |
3.3.3 Removed parameters
The following parameters have been removed. The parameter vacuum_cleanup_index_scale_factor is disabled since PostgreSQL 13.3.
| Parameter name | Reason |
|---|---|
| operator_precedence_warning | It was deemed unnecessary as PostgreSQL 9.4 and earlier are no longer supported. |
| vacuum_cleanup_index_scale_factor | It can be specified in the index to maintain compatibility, but it has no effect. |
PDF page 65
3.3.4 Parameters with default values changed
The following parameters have changed default values.
| Parameter name | PostgreSQL 13 | PostgreSQL 14 | Note |
|---|---|---|---|
| checkpoint_completion_target | 0.5 | 0.9 | |
| password_encryptionserver_version | md5 | scram-sha-256 | |
| 13.4 | 14.0 | ||
| server_version_num | 130004 | 140000 | |
| vacuum_cost_page_miss | 10 | 2 |
6 Utilities
PDF page 66
Describes the major enhancements of utility commands.
3.4.1 Configure
The following options have been added to the ‘configure’ command.
Specify SSL library
Added “–with-ssl={library name}” option to specify the SSL library. Also, conventional “–withopenssl” option has been left for compatibility.
Column compression method
The –with-lz4 option has been added to take advantage of the LZ4 column compression feature. The compiler flag LZ4_CFLAGS and the linker flag LZ4_LIBS have been added as environment variables.
3.4.2 Initdb
The following options have been added to the initdb command.
–no-instructions option
When this option is specified, a message indicating the instance start-up method will not be output.
PDF page 67
–data-checksums option
In the message output when the –help option is specified, the –data-checksums option that specifies the checksum has been promoted from “Less commonly used options:” to the commonly used option “Options:”.
–clobber-cache option
PDF page 68
–discard-cache option
Run the bootstrap backend with the debug_discard_caches=1 option. This takes a very long time and is only of use for debugging.
3.4.3 Pg_amcheck
The pg_amcheck command has been added. This command makes it easy to check the structure of tables and indexes against a database with the Contrib module amcheck installed. In the following example, it can be seen that the damaged part of data2 table.
PDF page 69
| Option name | Description |
|---|---|
| –all | Check all databases. |
| –index=PATTERN | Check matching index(es). |
| –schema=PATTERN | Check matching schema(s). |
| –on-error-stop | Stop checking at end of first corrupt page. |
| –parent-check | Check index parent/child relationships. |
| –startblock=BLOCK | Begin checking table(s) at the given block number. |
| –endblock=BLOCK | Check table(s) only up to the given block number. |
| –jobs=NUM | Use this many concurrent connections to the server. |
| –progress | Show progress information. |
3.4.4 Pg_dump
The pg_dump command has been following enhancements are implemented.
Restore partitions
It is now possible to restore a single partition from the partitioned table as a table.
Dumping Extension settings
The –extension option has been added to limit the extension definitions to be dumped. Specify the pattern for the extension name.
PDF page 70
Multiple –verbose option
In the pg_dump command, pg_dumpall command, pg_restore command, and pg_rewind command, specifying the -v option multiple times will now increase the output level of the log.
3.4.5 Pg_dumpall
The pg_dumpall command now has an option –no-toast-compression that does not dump the compression settings for TOAST data.
3.4.6 Pg_rewind
It is now possible to specify a standby instance of streaming replication as the connection destination.
3.4.7 Psql
The following features have been added to the psql command.
Displaying access methods
The Access Method is now output to the output of the \di+, \dm+, \dt+, and \dtS+ commands.
PDF page 71
\dt, \di command
It is now possible to specify for TOAST table and TOAST index.
\dX command
Outputs a list of extended statistics.
PDF page 72
\d+ command
When the table name is specified in the \d+ command, a compression setting column (Compression) is output between the Storage and Stats target columns. This column can be suppressed by setting the HIDE_TOAST_COMPRESSION variable to ‘on’.
\df, \do command
These commands can now add specify the data type.
PDF page 73
\dT command
The \dT command now accepts alias names for data types.
Behavior when the editor is closed
The \e command (also \ef and \ev commands) launches the editor and no longer re-executes SQL statements in the file if the file is not modified.
3.4.8 Reindexdb
The –tablespace option has been added to the reindexdb command. It is now possible to specify the tablespace in which to store the indexes to be recreated.
PDF page 74
3.4.9 Vacuumdb
The following options have been added to the vacuumdb command.
–force-index-cleanup option
–no-index-cleanup option
Do not delete unnecessary tuples in the index.
–no-truncate option
Do not truncate the free pages at the end of the table.
–no-process-toast option
Do not perform VACUUM processing on the TOAST table.
PDF page 75
7 Contrib Modules
PDF page 76
Describes new features related to the Contrib modules.
3.5.1 Amcheck
The verify_heapam function has been added to check the structure of the table.
3.5.2 Btree_gist
All functions provided by the btree_gist module is now parallel-safe.
3.5.3 Cube
The cube type now supports binary I/O.
PDF page 77
3.5.4 Hstore
It is now possible to access columns of type hstore using subscripts.
3.5.5 Old_snapshot
This is a newly added Contrib module. This module defines the pg_old_snapshot_time_mapping function. When the parameter old_snapshot_threshold is set to something other than -1, the mapping between XIDs and timestamps can be displayed.
PDF page 78
3.5.6 Pageinspect
The following functions for GiST indexes have been added.
| Function name | Description |
|---|---|
| gist_page_opaque_info | Returns information about the opaque area. |
| gist_page_items | Returns the data in the page as record type. |
| gist_page_items_bytea | Returns the data in the page in bytea type. |
PDF page 79
Output of bt_metap function
Additional information “last cleanup num del pages” is now output.
PDF page 80
3.5.7 Passwordcheck
The reason is now output in the output of the check using the Cracklib library.
3.5.8 Pgstattuple
The pgstattuple_approx function can now be executed on TOAST tables.
3.5.9 Pg_stat_statements
The following features have been extended to the pg_stat_statements module. When using pg_stat_statements, compute_query_id parameter must be specified as ‘on’ or ‘auto’.
Pg_stat_statements view
The following columns have been added.
| Column name | Data type | Description |
|---|---|---|
| toplevel | boolean | True if the query was executed as a top level. |
PDF page 81
Track utility commands
Tracking is now available for REFRESH MATERIALIZED VIEW statement, CREATE TABLE AS statement, SELECT INTO statement, CREATE MATERIALIZED VIEW statement, etc.
Pg_stat_statements_info view
The pg_stat_statements_info view has been added. This view can be used to check the operational status of the pg_stat_statements module. Currently, the pg_stat_statements view only provides a dealloc column showing the number of SQL statements deleted and a stats_reset column showing the date and time the statistics were reset. The ‘dealloc’ column is used to validate the pg_stat_statements.max parameter.
PDF page 82
3.5.10 Pg_trgm
Equality operators are now supported on GiST / GIN indexes.
3.5.11 Pg_surgery
A new Contrib module, pg_surgery, has been added. It provides a function heap_force_freeze to force a tuple to freeze, and a function heap_force_kill to force it to be deleted.
PDF page 83
3.5.12 Postgres_fdw
The following enhancements have been implemented for the postgres_fdw module.
Functions
The following functions have been added to control the active session.
PDF page 84
| Function name | Description |
|---|---|
| postgres_fdw_disconnect | Disconnect a specified active session. |
| postgres_fdw_disconnect_all | Disconnect all active sessions. |
| postgres_fdw_get_connections | postgres_fdw_get_connections Return all active sessions. |
TRUNCATE statement
The TRUNCATE statement can now be executed on an foreign table.
Supports Bulk Insert
In response to the addition of the Bulk Insert API to the Foreign Data Wrapper, batch_size can now be specified as an option for FOREIGN SERVER and FOREIGN TABLE that use postgres_fdw.
PDF page 85
| Interface name | Description |
|---|---|
| ExecForeignBatchInsert | Execution of batch transmission process. |
| GetForeignModifyBatchSize | Acquisition of batch size. |
keep_connections option
The option keep_connections controls remote connections after a transaction completes. The default value is ‘on’, which keeps the connection after the transaction is completed. Setting this option to ‘off’ closes the connection when the transaction completes.
IMPORT FOREIGN SCHEMA statement
Partitions can now be specified in the LIMIT TO and EXCEPT clauses.
Reconnect
If the session with the remote instance is found to be broken, it will now be reconnected.
8 URL List
The links in this chapter are preserved from the source PDF’s URL list.
PDF page 86
9 Change History
This chapter preserves the source document’s revision history and publication credits.
PDF page 87
Change history
| Version | Date | Author | Description |
|---|---|---|---|
| 0.1 | Apr 18, 2021 | Noriyoshi Shinoda | Create an internal review version. Reviewers: Tomoo Takahashi Akiko Takeshima (Hewlett Packard Enterprise Japan) |
| 1.0 | May 21, 2021 | Noriyoshi Shinoda | Modification completed according to PostgreSQL 14 Beta 1. |
| 1.1 | Oct 5, 2021 | Noriyoshi Shinoda | Modification completed according to PostgreSQL 14 GA. |