PostgreSQL 13 Beta 1 Released ============================= The PostgreSQL Global Development Group announces that the first beta release of PostgreSQL 13 is now available for download. This release contains previews of all features that will be available in the final release of PostgreSQL 13, though some details of the release could change before then. You can find information about all of the features and changes found in PostgreSQL 13 in the [release notes](https://www.postgresql.org/docs/13/release-13.html): [https://www.postgresql.org/docs/13/release-13.html](https://www.postgresql.org/docs/13/release-13.html) In the spirit of the open source PostgreSQL community, we strongly encourage you to test the new features of PostgreSQL 13 in your database systems to help us eliminate any bugs or other issues that may exist. While we do not advise you to run PostgreSQL 13 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 13 release upholds our standards of providing a stable, reliable release of the world's most advanced open source relational database. You can read more about the [beta testing process](https://www.postgresql.org/developer/beta/) and how you can contribute here: [https://www.postgresql.org/developer/beta/](https://www.postgresql.org/developer/beta/) PostgreSQL 13 Feature Highlights -------------------------------- PostgreSQL 13 introduces many features and improvements to the world's most advanced open source database. The following is just a small sample of new features introduced into this latest version of PostgreSQL. Our goal is to make you aware of the upcoming features so you can help with the [testing effort](https://www.postgresql.org/developer/beta/). We strongly encourage you provide feedback as well as any bug reports so we can ensure we can continue to deliver stable, reliable database software. ### Functionality There are many new features that improve the overall performance of PostgreSQL 13 and make it easier to work with simple and complex workloads. On the performance front, B-tree indexes, the standard index of PostgreSQL, received improvements to how duplicate data is handled in the index. This helps to shrink the index size and improve the speed of lookups, particularly for indexes that have significant duplicates. PostgreSQL 13 adds incremental sorting, which accelerates sorting data when existing data in a query is already sorted. Queries with OR clauses or IN/ANY constant lists can now make use of extended statistics, created with `CREATE STATISTICS`, which can lead to better planning and performance gains. PostgreSQL 13 can now use disk storage for hash aggregation (used as part of aggregate queries) with large aggregation sets. There are more improvements added to PostgreSQL's partitioning functionality in this release, including an increased number of cases where a "partitionwise join" (a join between matching partitions) can be used, which can improve overall query execution time. Partitioned tables now support `BEFORE` row-level triggers, and a partitioned table can now be fully replicated via logical replication without having to publish individual partitions. PostgreSQL 13 brings more convenience to writing queries and introduces features such as `FETCH FIRST WITH TIES` that will return any additional rows that match the last row. There is also the addition of the ".datetime" function for jsonpath queries, which will automatically convert a date-like or time-like string to the appropriate PostgreSQL date/time datatype. It is also even easier now to generate random UUIDs, as the `gen_random_uuid()` can be used without having to enable any extensions. ### Administration One of the most anticipated features of PostgreSQL 13 is the ability for the `VACUUM` command to process indexes in parallel. This functionality can be accessed with the new `PARALLEL` option on the `VACUUM` command (or `--parallel` on `vacuumdb`) allows you to specify the number of parallel workers to use for vacuuming indexes. Note that this does not work with the `FULL` option. The `reindexdb` command can now benefit from parallelism too: the new `--jobs` flag lets you specify the number of parallel workers to use when reindexing a database. PostgreSQL 13 introduces the concept of a "trusted extension", which allows for a superuser to specify extensions that a user can install in their database so long as they have a `CREATE` privilege. This release includes more ways to track what is going on within a PostgreSQL database, as PostgreSQL 13 can now track WAL usage statistics and the progress of streaming `pg_basebackup`s, and the progress of an `ANALYZE` command. `pg_basebackup` can also generate a manifest that can be used to verify the integrity of a backup using a new tool called `pg_verifybackup`. `pg_dump` now includes the `--include-foreign-data` flag that, if set, will include data from servers referenced by foreign data wrappers in the dump. The `pg_rewind` command also has improvements in PostgreSQL 13. In addition to `pg_rewind` automatically performing crash recovery, you can now configure use it to configure standby PostgreSQL instances using the `--write-recovery-conf` flag. `pg_rewind` can also use the `restore_command` of the target instance to fetch needed write-ahead logs. ### Security PostgreSQL continues to improve on its security capabilities in this latest release, introducing several features to help further deploy PostgreSQL safely. libpq, the connection library that powers `psql` and many PostgreSQL connection drivers, added several new parameters to help secure connections. PostgreSQL 13 introduces the `channel_binding` connection parameters, which lets a client specify that they want to require the channel binding functionality as part of SCRAM. Additionally, a client that is using a password protected TLS certificate can now specify its password using the `sslpassword` parameter. PostgreSQL 13 also adds support for DER encoded certificates. The PostgreSQL foreign data wrapper (`postgres_fdw`) also received several enhancements to how it can secure connections, including the ability to use certificate-based authentication to connect to other PostgreSQL clusters. Additionally, unprivileged accounts can now connect to another PostgreSQL database via the `postgres_fdw` without using a password. PostgreSQL 13 continues to improve operability on Windows, as now users who run PostgreSQL on Windows now have the option to connect over UNIX domain sockets. ### Other Highlights PostgreSQL 13 introduces a [glossary](https://www.postgresql.org/docs/devel/glossary.html) of terms to help people familiarize themselves with both PostgreSQL and general database concepts. This coincides with a significant rework in the display of functions and operators in tables, which helps to improve readability both on the web and in the PDF documentation. The `pgbench` utility, used for performance testing, now supports the partitioning of the "accounts" table that it uses, making it easier to benchmark workloads involving partitions. `psql` now includes the `\warn` command that is similar to the `\echo` command in terms of outputting data, except `\warn` sends it to stderr. And in case you need additional guidance on any of the PostgreSQL commands, the `--help` flag now includes a link to [https://www.postgresql.org](https://www.postgresql.org). Additional Features ------------------- Many other new features and improvements have been added to PostgreSQL 13, some of which may be as or more important to specific users than what is mentioned above. Please see the [Release Notes](https://www.postgresql.org/docs/13/release-13.html) for a complete list of new and changed features. Testing for Bugs & Compatibility -------------------------------- 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 general availability of PostgreSQL 13. 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_13_Open_Items) is publicly available in the PostgreSQL wiki. You can [report bugs](https://www.postgresql.org/account/submitbug/) using this form on the PostgreSQL website: [https://www.postgresql.org/account/submitbug/](https://www.postgresql.org/account/submitbug/) Beta Schedule ------------- This is the first beta release of version 13. The PostgreSQL Project will release additional betas as required for testing, followed by one or more release candidates, until the final release in late 2020. For further information please see the [Beta Testing](https://www.postgresql.org/developer/beta/) page. Links ----- * [Download](https://www.postgresql.org/download/) * [Beta Testing Information](https://www.postgresql.org/developer/beta/) * [PostgreSQL 13 Beta Release Notes](https://www.postgresql.org/docs/devel/release-13.html) * [PostgreSQL 13 Open Issues](https://wiki.postgresql.org/wiki/PostgreSQL_13_Open_Items) * [Submit a Bug](https://www.postgresql.org/account/submitbug/)