In the spirit of the open source PostgreSQL community, we strongly encourage you
to test the new features of PostgreSQL 12 in your database systems to help us
-eliminate any bugs or other issues that may exist. While we do not advise for
-you to run PostgreSQL 12 Beta 1 in your production environments, we encourage
-you to find ways to run your typical application workloads against this beta
-release.
+eliminate any bugs or other issues that may exist. While we do not advise you to
+run PostgreSQL 12 Beta 1 in your production environments, we encourage you to
+find ways to run your typical application workloads against this beta release.
Your testing and feedback will help the community ensure that the PostgreSQL 12
release upholds our standards of providing a stable, reliable release of the
### Indexing Performance, Functionality, and Management
PostgreSQL 12 improves the overall performance of the standard B-tree indexes
-with improvements to the overall space management of these indexes as well.
-These improvements also provide an overall reduction of index size for B-tree
-indexes that are frequently modified, in addition to a performance gain.
+with improvements to the space management of these indexes as well.
+These improvements also provide a reduction of index size for B-tree indexes
+that are frequently modified, in addition to a performance gain.
Additionally, PostgreSQL 12 adds the ability to rebuild indexes concurrently,
which lets you perform a [`REINDEX`](https://www.postgresql.org/docs/devel/sql-reindex.html) operation
-without blocking any writes to the index. The inclusion of this feature should
-help with lengthy index rebuilds that could cause potential downtime when
-managing a PostgreSQL database in a production environment.
+without blocking any writes to the index. This feature should help with lengthy
+index rebuilds that could cause downtime when managing a PostgreSQL database
+in a production environment.
PostgreSQL 12 extends the abilities of several of the specialized indexing
mechanisms. The ability to create covering indexes, i.e. the `INCLUDE` clause
The amount of write-ahead log (WAL) overhead generated when creating a GiST,
GIN, or SP-GiST index is also significantly reduced in PostgreSQL 12, which
-provides several benefits to the overall disk utilization of a PostgreSQL
-cluster and features such as continuous archiving and streaming replication.
+provides several benefits to the disk utilization of a PostgreSQL cluster and
+features such as continuous archiving and streaming replication.
### Inlined WITH queries (Common table expressions)
```
WITH c AS MATERIALIZED (
- SELECT * FROM a WHERE a.x % 4
+ SELECT * FROM a WHERE a.x % 4 = 0
)
SELECT * FROM c JOIN d ON d.y = a.x;
```
of partitions for operations that only need to use a small number of partitions.
PostgreSQL 12 also provides improvements to the performance of both `INSERT` and
-`COPY` into a partitioned table. `ATTACH PARTITION` can now also be performed
+`COPY` into a partitioned table. `ATTACH PARTITION` can now be performed
without blocking concurrent queries on the partitioned table. Additionally, the
ability to use foreign keys to reference partitioned tables is now permitted in
PostgreSQL 12.
### Generated Columns
-PostgreSQL 12 lets you create [generated columns](https://www.postgresql.org/docs/devel/ddl-generated-columns.html)
-that compute their values based on the contents of other columns. This feature
-provides stored generated columns, which are computed on inserts and updates and
-are saved on disk. Virtual generated columns, which are computed only when a
-column is read as part of a query, are not implemented yet.
+PostgreSQL 12 allows the creation of [generated columns](https://www.postgresql.org/docs/devel/ddl-generated-columns.html)
+that compute their values with an expression using the contents of other
+columns. This feature provides stored generated columns, which are computed on
+inserts and updates and are saved on disk. Virtual generated columns, which are
+computed only when a column is read as part of a query, are not implemented yet.
### Pluggable Table Storage Interface
PostgreSQL 12 introduces the pluggable table storage interface that allows for
-the creation and use of different storage mechanisms for table storage. New
-access methods can be added to a PostgreSQL cluster using the [`CREATE ACCESS METHOD`](https://www.postgresql.org/docs/devel/sql-create-access-method.html)
+the creation and use of different methods for table storage. New access methods
+can be added to a PostgreSQL cluster using the [`CREATE ACCESS METHOD`](https://www.postgresql.org/docs/devel/sql-create-access-method.html)
command and subsequently added to tables with the new `USING` clause on
`CREATE TABLE`.
A table storage interface can be defined by creating a new [table access method](https://www.postgresql.org/docs/devel/tableam.html).
In PostgreSQL 12, the storage interface that is used by default is the `heap`
-access method, which currently is the only built-in method.
+access method, which is currently is the only built-in method.
### Page Checksums