diff --git a/releases/12/beta/12beta1.md b/releases/12/beta/12beta1.md index edfd5d4..fa3041e 100644 --- a/releases/12/beta/12beta1.md +++ b/releases/12/beta/12beta1.md @@ -24,18 +24,18 @@ PostgreSQL 12 Features Highlights 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 bloating when using -B-tree for specific use cases, in addition to a performance gain. +These improvements also provide an overall 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 length index rebuilds that could cause potential downtime evens when -administration a PostgreSQL database in a production environment. +help with lengthy index rebuilds that could cause potential 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 -that was introduced in PostgreSQL 11, have now been added to GiST indexes. +that was introduced in PostgreSQL 11, havs 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. @@ -48,16 +48,16 @@ replication. ### Inlined WITH queries (Common table expressions) Common table expressions (aka `WITH` queries) can now be automatically inlined -in a query if they are a) not recursive, b) do not have any side-effects and -c) are only referenced once in a later part of a query. These removes a known +in a query if they a) are not recursive, b) do not have any side-effects and +c) are only referenced once in a later part of a query. This removes an "optimization fence" that has existed since the introduction of the `WITH` clause in PostgreSQL 8.4 -You can force a `WITH` query to be inlined using the `NOT MATERIALIZED` clause, -e.g. +If need be, you can force a `WITH` query to materialize using the `MATERIALIZED` +clause, e.g. ``` -WITH c AS NOT MATERIALIZED ( +WITH c AS MATERIALIZED ( SELECT * FROM a WHERE a.x % 4 ) SELECT * FROM c JOIN d ON d.y = a.x; @@ -65,47 +65,48 @@ SELECT * FROM c JOIN d ON d.y = a.x; ### Partitioning -PostgreSQL 12 improves on the performance of processing tables with thousands +PostgreSQL 12 improves on the performance when processing tables with thousands of partitions for operations that only need to use a small number of partitions. -PostgreSQL 12 also provides improvements to the performance of both -using `COPY` with a partitioned table as well as the `ATTACH PARTITION` -operation. Additionally, the ability to use foreign keys to reference -partitioned tables is now allowed in PostgreSQL 12. + +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 +PostgreSQL 12. ### JSON path queries per SQL/JSON specification -PostgreSQL 12 now lets you execute [JSON path queries](https://www.postgresql.org/docs/devel/functions-json.html#FUNCTIONS-SQLJSON-PATH) +PostgreSQL 12 now allows execution of [JSON path queries](https://www.postgresql.org/docs/devel/functions-json.html#FUNCTIONS-SQLJSON-PATH) per the SQL/JSON specification in the SQL:2016 standard. Similar to XPath expressions for XML, JSON path expressions let you evaluate a variety of arithmetic expressions and functions in addition to comparing values within JSON documents. -A subset of these expressions can be accelerated with GIN indexes, letting you -execute highly performant lookups across sets of JSON data. +A subset of these expressions can be accelerated with GIN indexes, allowing the +execution of highly performant lookups across sets of JSON data. ### Collations PostgreSQL 12 now supports case-insensitive and accent-insensitive collations 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 depending as a collation may need to -make additional checks on a string. +but can also lead to a performance penalty as a collation may need to make +additional checks on a string. -### Most-common Value Statistics +### Most-common Value Extended Statistics [`CREATE STATISTICS`](https://www.postgresql.org/docs/devel/sql-createstatistics.html), -introduced in PostgreSQL 10 to help collect more complex statistics to improve -query planning, now supports most-common value statistics. This leads to -improved query plans for distributions that are non-uniform. +introduced in PostgreSQL 10 to help collect more complex statistics over multiple +columns to improve query planning, now supports most-common value statistics. +This leads to improved query plans for distributions that are non-uniform. ### 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 two types of generated columns: - -- Stored generated columns, which are computed on inserts and updated and are saved on disk -- Virtual generated columns, which are computed only when a column is read as part of a query +provides stored generated columns, which are computed on inserts and updated 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 @@ -117,7 +118,7 @@ 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 is currently the only supported method. +access method, which currently is the only built-in method. ### Page Checksums @@ -126,13 +127,13 @@ and now supports the ability to enable and disable page checksums across an PostgreSQL cluster that is offline. Previously, page checksums could only be enabled during the initialization of a cluster with `initdb`. -### Authentication +### Authentication & Connection Security -GSSAPI now supports client and server-side encryption and can be specified in +GSSAPI now supports client-side and server-side encryption and can be specified in the [`pg_hba.conf`](https://www.postgresql.org/docs/devel/auth-pg-hba-conf.html) file using the `hostgssenc` and `hostnogssenc` record types. PostgreSQL 12 also -allows for LDAP servers to be discovered based on `DNS SRV` records if -PostgreSQL was compiled with OpenLDAP. +allows for discovery of LDAP servers based on `DNS SRV` records if PostgreSQL +was compiled with OpenLDAP. Noted Behavior Changes ---------------------- @@ -153,6 +154,14 @@ https://www.postgresql.org/docs/devel/runtime-config-wal.html#RUNTIME-CONFIG-WAL 2. Just-in-Time (JIT) compilation is now enabled by default. +3. OIDs can no longer be added to user created tables using the `WITH OIDs` +clause. Operations on tables that have columns that were created using +`WITH OIDS` (i.e. columns named "OID") will need to be adjusted. + +Running a `SELECT *` command on a system table will now also output the OID for +the rows in the system table as well, instead of the old behavior which required +the OID column to be specified explicitly. + Additional Features ------------------- @@ -162,13 +171,13 @@ of which may be as or more important to specific users than what is mentioned ab Testing for Bugs & Compatibility -------------------------------- -The stability of each PostgreSQL release greatly depends on your, the community, +The stability of each PostgreSQL release greatly depends on you, the community, to test the upcoming version with your workloads and testing tools in order to -find bugs and regressions before the release of PostgreSQL 12. As this is a -Beta, minor changes to database behaviors, feature details, and APIs are still -possible. Your feedback and testing will help determine the final tweaks on the -new features, so please test in the near future. The quality of user testing -helps determine when we can make a final release. +find bugs and regressions before the general availability of PostgreSQL 12. As +this is a Beta, minor changes to database behaviors, feature details, and APIs +are still possible. Your feedback and testing will help determine the final +tweaks on the new features, so please test in the near future. The quality of +user testing helps determine when we can make a final release. A list of [open issues](https://wiki.postgresql.org/wiki/PostgreSQL_12_Open_Items) is publicly available in the PostgreSQL wiki. You can