Incorporated feedback into PG12 Beta 1 release.
authorJonathan S. Katz <jonathan.katz@excoventures.com>
Wed, 22 May 2019 22:04:53 +0000 (18:04 -0400)
committerJonathan S. Katz <jonathan.katz@excoventures.com>
Wed, 22 May 2019 22:04:53 +0000 (18:04 -0400)
releases/12/beta/12beta1.md

index edfd5d4a1a5b870e231967b874141e0f0ab10aa5..fa3041e7d437cd8a73b876f823e93a436ca544ef 100644 (file)
@@ -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