PostgreSQL 12 extends the abilities of several of the specialized indexing
mechanisms. The ability to create covering indexes, i.e. the `INCLUDE` clause
-that was introduced in PostgreSQL 11, havs now been added to GiST indexes.
+that was introduced in PostgreSQL 11, has now been added to GiST indexes.
SP-GiST indexes now support the ability to perform K-nearest neighbor (K-NN)
queries for data types that support the distance (`<->`) operation.
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 as well as using features such as continuous archiving and streaming
-replication.
+cluster and features such as continuous archiving and streaming replication.
### Inlined WITH queries (Common table expressions)
PostgreSQL 12 also provides improvements to the performance of both `INSERT` and
`COPY` into a partitioned table. `ATTACH PARTITION` can now also be performed
without blocking concurrent queries on the partitioned table. Additionally, the
-ability to use foreign keys to reference partitioned tables is now allowed in
+ability to use foreign keys to reference partitioned tables is now permitted in
PostgreSQL 12.
### JSON path queries per SQL/JSON specification
### Collations
-PostgreSQL 12 now supports case-insensitive and accent-insensitive collations
+PostgreSQL 12 now supports case-insensitive and accent-insensitive comparisons
for ICU provided collations, also known as "[nondeterministic collations](https://www.postgresql.org/docs/devel/collation.html#COLLATION-NONDETERMINISTIC)".
When used, these collations can provide convenience for comparisons and sorts,
but can also lead to a performance penalty as a collation may need to make
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 updated and
+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 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)
-and subsequently added to tables with the new `USING` clause on `CREATE TABLE`.
+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).
### Page Checksums
The `pg_verify_checkums` command has been renamed to [`pg_checksums`](https://www.postgresql.org/docs/devel/app-pgchecksums.html)
-and now supports the ability to enable and disable page checksums across an
+and now supports the ability to enable and disable page checksums across a
PostgreSQL cluster that is offline. Previously, page checksums could only be
enabled during the initialization of a cluster with `initdb`.