The PostgreSQL Global Development Group announces that the first beta release of PostgreSQL 11 is now available for download. This release contains previews of all features that will be available in the final release of PostgreSQL 11, though some details of the release could change before then.
In the spirit of the open source PostgreSQL community, we strongly encourage you to test the new features of PostgreSQL 11 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 11 Beta 1 in your production environments, we encourage you to find ways to run your typical application workloads against this beta release.
PostgreSQL 11 major features center around performance, working with larger data sets, and ease-of-use.
PostgreSQL 11 contains several features that improve working with data in partitions, including:
UPDATEstatements issued to a partition key now move affected rows to the appropriate partitions
SELECTquery performance due to enhanced partition elimination during query processing and execution as well as parallelized partition scans
FOREIGN KEY, indexes, and triggers on partitions
PostgreSQL 11 also introduces the ability for a query to distribute grouping and aggregation to partitioned tables before the final aggregation. This is disabled by default, to enable, you need to set
enable_partitionwise_aggregate = on in your configuration file or during your session or transaction.
Several features added to PostgreSQL 11 take advantage of the parallel query infrastructure and provide significant performance enhancements, including:
CREATE INDEXfor B-tree indexes
CREATE TABLE .. AS,
CREATE MATERIALIZED VIEW, and certain queries with
PostgreSQL 11 introduces SQL stored procedures that allow users to use embedded transactions (i.e.
ROLLBACK) within a procedure. Procedures can be created using the
CREATE PROCEDURE command and executed using the
PostgreSQL 11 introduces support for Just-In-Time (JIT) compilation to optimize the execution of code and other operations at run time. Using components of the LLVM project, the introduction of JIT support in PostgreSQL accelerates queries that utilize expressions (e.g.
WHERE clauses), target lists, aggregates, projections, as well as some internal operations.
The JIT framework in PostgreSQL is designed to allow future work for optimizations that can be added in the future. If you are building PostgreSQL 11 from source, you can enable JIT compilation using the
As of PostgreSQL 11, window functions now support all options shown in the SQL:2011 standard, including
RANGE _distance_ PRECEDING/FOLLOWING,
GROUPS mode, and frame exclusion options.
The previous version of PostgreSQL introduced SCRAM authentication to improve the storage and transmission of passwords using an accepted standard protocol. PostgreSQL 11 introduces channel binding for SCRAM authentication, which adds to the security of using SCRAM by preventing man-in-the-middle attacks.
The PostgreSQL Global Development Group recognizes that while PostgreSQL itself contains a robust set of features, not all of them may be easy-to-use and could require workarounds in both development and production environments.
Prior to PostgreSQL 11, one such feature was using the
ALTER TABLE .. ADD COLUMN command where the newly created column had a
DEFAULT value that was not NULL. Prior to PostgreSQL 11, when executing aforementioned statement, PostgreSQL would rewrite the whole table, which on larger tables in active systems could cause a cascade of problems. PostgreSQL 11 removes the need to rewrite the table in most cases, and as such running
ALTER TABLE .. ADD COLUMN .. DEFAULT .. will execute extremely quickly.
Another feature that fell into this category was the inability to intuitively quit from the PostgreSQL command-line (
psql). There has been numerous recorded complaints of users trying to quit with the
exit commands, only to learn that the command to do so was
We have heard your frustrations and have now added the ability to quit the command-line using the keywords
exit and hope that quitting a PostgreSQL session is now as enjoyable as using PostgreSQL.
Many other new features and improvements have been added to PostgreSQL 11, some of which may be as or more important to specific users than what is mentioned above. Please see the Release Notes for a complete list of new and changed features.
The stability of each PostgreSQL release greatly depends on your, 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 11. 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.
This is the first beta release of version 11. The PostgreSQL Project will release additional betas as required for testing, followed by one or more release candidates, until the final release in late 2018. For further information please see the Beta Testing page.