public inbox for [email protected]help / color / mirror / Atom feed
PostgreSQL 17 release announcement draft 13+ messages / 6 participants [nested] [flat]
* PostgreSQL 17 release announcement draft @ 2024-09-04 21:05 Jonathan S. Katz <[email protected]> 0 siblings, 2 replies; 13+ messages in thread From: Jonathan S. Katz @ 2024-09-04 21:05 UTC (permalink / raw) To: PostgreSQL Advocacy <[email protected]> Hi, Attached is the draft of the PostgreSQL 17 release announcement. This is a draft of the text that will go into the press kit, with the key portions to review starting from the top of the document, up until the "About PostgreSQL" section. Please provide feedback on content accuracy, notable omissions or items that should be excluded, or if an explanation is unclear and needs better phrasing. On the last point, I'm looking to ensure the wording is clear and is easy to translate into different languages. Based on feedback, I'll be posting a revision once a day (if there's feedback) until the review cut-off. We'll have to freeze the announcement by Mon, Sep 9 @ 12:00 UTC so we can begin the translation process. Thank you for your help with the release process! Jonathan September 26, 2024 - The PostgreSQL Global Development Group today announced the release of [PostgreSQL 17](https://www.postgresql.org/docs/17/release-17.html), the latest version of the world's most advanced open source database. PostgreSQL 17 builds on decades of open source development, improving its performance and scalability while adapting to emergent data access and storage patterns. This release of PostgreSQL adds significant overall performance gains, including an overhauled memory management implementation for vacuum, optimizations to storage access and improvements for high concurrency workloads, speedups in bulk loading and exports, and query execution improvements for indexes. PostgreSQL 17 has features that benefit brand new workloads and critical systems alike, such as additions to the developer experience with the SQL/JSON `JSON_TABLE` command, and enhancements to logical replication that simplify management of high availability workloads and major version upgrades. <HOLD FOR QUOTE> PostgreSQL, an innovative data management system known for its reliability, robustness, and extensibility, benefits from over 25 years of open source development from a global developer community and has become the preferred open source relational database for organizations of all sizes. ### System-wide performance gains A foundational feature of PostgreSQL is [vacuum](https://www.postgresql.org/docs/17/routine-vacuuming.html), which is used to reclaim storage from data that was marked as removed. Reducing resources required for vacuuming directly helps other areas of PostgreSQL, particularly on very busy systems. PostgreSQL 17 introduces a new internal memory structure for vacuum that's shown up to a 20x reduction in memory and improvements in overall vacuuming speed. This release also removes the `1GB` limit on the memory it can use (controlled by [`maintenance_work_mem`](https://www.postgresql.org/docs/17/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM)), letting users apply more resources to vacuuming, which is beneficial for systems with lots of changes. PostgreSQL 17 continues to improve performance of its I/O layer. As part of PostgreSQL 17, highly concurrent workloads may see up to a 2x performance improvements in write speed based on new optimizations to lock management for the [write-ahead log](https://www.postgresql.org/docs/17/wal-intro.html) ([WAL](https://www.postgresql.org/docs/17/wal-intro.html)). Additionally, this release introduces an interface to stream I/O, with immediate improvements for sequential scans (reading all the data from a table) and updating database statistics with [`ANALYZE`](https://www.postgresql.org/docs/17/sql-analyze.html), and allowing extensions to integrate with this capability to further accelerate their performance. PostgreSQL 17 extends its performance gains to query execution. Planner statistics help PostgreSQL to determine the best way to search for data, and PostgreSQL 17 can now use planner statistics and the sort order [common table expressions](https://www.postgresql.org/docs/17/queries-with.html) ([`WITH` queries](https://www.postgresql.org/docs/17/queries-with.html)) to further speed up queries. PostgreSQL 17 also includes several indexing optimizations, including speeding execution of queries that contain an `IN` clause that use a [B-tree index](https://www.postgresql.org/docs/17/indexes-types.html#INDEXES-TYPES-BTREE) (the default index method in PostgreSQL), and parallel index builds for [BRIN](https://www.postgresql.org/docs/17/brin.html) indexes. The query planner in PostgreSQL 17 can now remove redundant `IS NOT NULL` statements when a column has a `NOT NULL` constraint, and skips over clauses that contain an `IS NULL` clause on a column with an `IS NOT NULL` constraint. PostgreSQL 17 continues to build on its support of explicit use SIMD (Single Instruction/Multiple Data) instructions to accelerate computations, adding support for using AVX-512 to accelerate computations for the [`bit_count`](https://www.postgresql.org/docs/17/functions-bitstring.html) function. ### Further expansion of a robust developer experience PostgreSQL was the [first relational database to add JSON support (2012)](https://www.postgresql.org/about/news/postgresql-92-released-1415/), and PostgreSQL 17 continues to add capabilities to support more expressive JSON processing capabilities and implementation of the SQL/JSON standard. [`JSON_TABLE`](https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-SQLJSON-TABLE) debuts in PostgreSQL 17, letting developers convert JSON data into a standard PostgreSQL table. PostgreSQL 17 now supports [SQL/JSON constructors](https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-JSON-CREATION-TABLE) (`JSON`, `JSON_SCALAR`, `JSON_SERIALIZE`) and [query functions](https://www.postgresql.org/docs/17/functions-json.html#SQLJSON-QUERY-FUNCTIONS) (`JSON_EXISTS`, `JSON_QUERY`, `JSON_VALUE`), giving developers other ways of interfacing with their JSON data. This release adds more [`jsonpath` expressions](https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-SQLJSON-PATH-OPERATORS), with an emphasis of converting JSON data to a native PostgreSQL data type, including numeric, boolean, string, and date/time types. [`MERGE`](https://www.postgresql.org/docs/17/sql-merge.html), introduced in PostgreSQL 15, allows you to write conditional SQL that includes `INSERT`, `UPDATE`, and `DELETE` actions from a single statement. PostgreSQL 17 builds on this by adding a `RETURNING` clause, letting developers take further action on modified rows in other parts of a query. PostgreSQL 17 gives developers more control over `MERGE` behavior, including a `merge_action` function to provide insight into how a row was modified and the `WHEN NOT MATCHED BY SOURCE` clause to add behavior if a source row doesn't match the MERGE conditions. Additionally, you can now use `MERGE` to update [views](https://www.postgresql.org/docs/17/sql-createview.html). PostgreSQL 17 has new capabilities for bulk loading and data exporting, including up to a 2x performance improvement when exporting large rows using the [`COPY`](https://www.postgresql.org/docs/17/sql-copy.html) command. `COPY` performance also has improvements when the source and destination encodings match, and includes a new option, `ON_ERROR`, that allows an import to proceed even if there is an error with a row insert. This release expands on functionality for managing data in partitions or federated on remote PostgreSQL instances. PostgreSQL 17 supports using identity columns and exclusion constraints on [partitioned tables](https://www.postgresql.org/docs/17/ddl-partitioning.html). With this release, the [PostgreSQL foreign data wrapper](https://www.postgresql.org/docs/17/postgres-fdw.html) ([`postgres_fdw`](https://www.postgresql.org/docs/17/postgres-fdw.html)), used to execute queries on remote PostgreSQL instances, can now push `EXISTS` and `IN` subqueries to the remote server for more efficient processing. PostgreSQL 17 also includes a built-in, platform independent, immutable collation provider that's guaranteed to be immutable and provides similar sorting semantics to the `C` collation except with `UTF-8` encoding rather than `SQL_ASCII`. Using this new collation provider guarantees that your text-based queries will return the same sorted results regardless of where you run PostgreSQL. ### Logical replication enhancements for high availability and major version upgrades [Logical replication](https://www.postgresql.org/docs/17/logical-replication.html) is used to stream data in real-time across many use cases. However, prior to this release, users who wanted to perform a major version upgrade would have to drop [logical replication slots](https://www.postgresql.org/docs/17/logical-replication-subscription.html#LOGICAL-REPLICATION-SUBSCRI...), which requires resynchronizing data to subscribers after an upgrade. Starting with upgrades from PostgreSQL 17, users don't have to drop logical replication slots, simplifying the upgrade process when using logical replication. PostgreSQL 17 now includes failover control for logical replication, making it more resilient when deployed in high availability environments. Additionally, PostgreSQL 17 introduces the [`pg_createsubscriber`](https://www.postgresql.org/docs/17/app-pgcreatesubscriber.html) command-line tool for adding logical replication on a replica using physical replication. ### More options for managing security and operations PostgreSQL 17 further extends how users can manage the overall lifecycle of their database systems. Users that use TLS to connect to PostgreSQL can use the new `sslnegotiation` connection parameter to perform a direct TLS handshakes when using [ALPN](https://en.wikipedia.org/wiki/Application-Layer_Protocol_Negotiation), and is registered as `postgresql` in the ALPN directory. This release adds the `pg_maintain` [predefined role](https://www.postgresql.org/docs/17/predefined-roles.html), which allows you to give users permission to execute maintenance operations. [`pg_basebackup`](https://www.postgresql.org/docs/17/app-pgbasebackup.html), the backup utility included in PostgreSQL, now supports incremental backups and adds the [`pg_combinebackup`](https://www.postgresql.org/docs/17/app-pgcombinebackup.html) for the backup restoration process. Additionally, [`pg_dump`](https://www.postgresql.org/docs/17/app-pgdump.html) includes a new option called `--filter` that lets you select what objects to include when generating a dump file. PostgreSQL 17 also includes enhancements to monitoring and analysis features. [`EXPLAIN`](https://www.postgresql.org/docs/17/sql-explain.html), used to provide details on query plans and execution, can now show the time spent for I/O block reads and writes. `EXPLAIN` also adds two new options: `SERIALIZE`, which shows the timing for data conversion for network transmission, and `MEMORY`, which reports optimizer memory usage. PostgreSQL 17 now reports the [progress of vacuuming indexes](https://www.postgresql.org/docs/17/progress-reporting.html#VACUUM-PROGRESS-REPORTING), and adds the [`pg_wait_events`](https://www.postgresql.org/docs/17/view-pg-wait-events.html) that, when combined with [`pg_stat_activity`](https://www.postgresql.org/docs/17/monitoring-stats.html#MONITORING-PG-STAT-ACTIVITY-VIEW), gives more insight into why an active session is waiting. ### Additional Features Many other new features and improvements have been added to PostgreSQL 17. Many of these may also be helpful for your use cases. Please see the [release notes](https://www.postgresql.org/docs/17/release-17.html) for a complete list of new and changed features. ### About PostgreSQL [PostgreSQL](https://www.postgresql.org) is the world's most advanced open source database, with a global community of thousands of users, contributors, companies and organizations. Built on over 35 years of engineering, starting at the University of California, Berkeley, PostgreSQL has continued with an unmatched pace of development. PostgreSQL's mature feature set not only matches top proprietary database systems, but exceeds them in advanced database features, extensibility, security, and stability. ### Links * [Download](https://www.postgresql.org/download/) * [Release Notes](https://www.postgresql.org/docs/17/release-17.html) * [Press Kit](https://www.postgresql.org/about/press/) * [Security Page](https://www.postgresql.org/support/security/) * [Versioning Policy](https://www.postgresql.org/support/versioning/) * [Follow @postgresql](https://twitter.com/postgresql) * [Donate](https://www.postgresql.org/about/donate/) ## More About the Features For explanations of the above features and others, please see the following resources: * [Release Notes](https://www.postgresql.org/docs/17/release-17.html) * [Feature Matrix](https://www.postgresql.org/about/featurematrix/) ## Where to Download There are several ways you can download PostgreSQL 17, including: * The [Official Downloads](https://www.postgresql.org/download/) page, with contains installers and tools for [Windows](https://www.postgresql.org/download/windows/), [Linux](https://www.postgresql.org/download/linux/), [macOS](https://www.postgresql.org/download/macosx/), and more. * [Source Code](https://www.postgresql.org/ftp/source/v17.0) Other tools and extensions are available on the [PostgreSQL Extension Network](http://pgxn.org/). ## Documentation PostgreSQL 17 comes with HTML documentation as well as man pages, and you can also browse the documentation online in both [HTML](https://www.postgresql.org/docs/17/) and [PDF](https://www.postgresql.org/files/documentation/pdf/17/postgresql-17-US.pdf) formats. ## Licence PostgreSQL uses the [PostgreSQL License](https://www.postgresql.org/about/licence/), a BSD-like "permissive" license. This [OSI-certified license](http://www.opensource.org/licenses/postgresql/) is widely appreciated as flexible and business-friendly, since it does not restrict the use of PostgreSQL with commercial and proprietary applications. Together with multi-company support and public ownership of the code, our license makes PostgreSQL very popular with vendors wanting to embed a database in their own products without fear of fees, vendor lock-in, or changes in licensing terms. ## Contacts Website * [https://www.postgresql.org/](https://www.postgresql.org/) Email * [[email protected]](mailto:[email protected]) ## Images and Logos Postgres, PostgreSQL, and the Elephant Logo (Slonik) are all registered trademarks of the [PostgreSQL Community Association](https://www.postgres.ca). If you wish to use these marks, you must comply with the [trademark policy](https://www.postgresql.org/about/policies/trademarks/). ## Corporate Support PostgreSQL enjoys the support of numerous companies, who sponsor developers, provide hosting resources, and give us financial support. See our [sponsors](https://www.postgresql.org/about/sponsors/) page for some of these project supporters. There is also a large community of [companies offering PostgreSQL Support](https://www.postgresql.org/support/professional_support/), from individual consultants to multinational companies. If you wish to make a financial contribution to the PostgreSQL Global Development Group or one of the recognized community non-profit organizations, please visit our [donations](https://www.postgresql.org/about/donate/) page. Attachments: [text/plain] release.en.md (14.2K, 2-release.en.md) download | inline: September 26, 2024 - The PostgreSQL Global Development Group today announced the release of [PostgreSQL 17](https://www.postgresql.org/docs/17/release-17.html), the latest version of the world's most advanced open source database. PostgreSQL 17 builds on decades of open source development, improving its performance and scalability while adapting to emergent data access and storage patterns. This release of PostgreSQL adds significant overall performance gains, including an overhauled memory management implementation for vacuum, optimizations to storage access and improvements for high concurrency workloads, speedups in bulk loading and exports, and query execution improvements for indexes. PostgreSQL 17 has features that benefit brand new workloads and critical systems alike, such as additions to the developer experience with the SQL/JSON `JSON_TABLE` command, and enhancements to logical replication that simplify management of high availability workloads and major version upgrades. <HOLD FOR QUOTE> PostgreSQL, an innovative data management system known for its reliability, robustness, and extensibility, benefits from over 25 years of open source development from a global developer community and has become the preferred open source relational database for organizations of all sizes. ### System-wide performance gains A foundational feature of PostgreSQL is [vacuum](https://www.postgresql.org/docs/17/routine-vacuuming.html), which is used to reclaim storage from data that was marked as removed. Reducing resources required for vacuuming directly helps other areas of PostgreSQL, particularly on very busy systems. PostgreSQL 17 introduces a new internal memory structure for vacuum that's shown up to a 20x reduction in memory and improvements in overall vacuuming speed. This release also removes the `1GB` limit on the memory it can use (controlled by [`maintenance_work_mem`](https://www.postgresql.org/docs/17/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM)), letting users apply more resources to vacuuming, which is beneficial for systems with lots of changes. PostgreSQL 17 continues to improve performance of its I/O layer. As part of PostgreSQL 17, highly concurrent workloads may see up to a 2x performance improvements in write speed based on new optimizations to lock management for the [write-ahead log](https://www.postgresql.org/docs/17/wal-intro.html) ([WAL](https://www.postgresql.org/docs/17/wal-intro.html)). Additionally, this release introduces an interface to stream I/O, with immediate improvements for sequential scans (reading all the data from a table) and updating database statistics with [`ANALYZE`](https://www.postgresql.org/docs/17/sql-analyze.html), and allowing extensions to integrate with this capability to further accelerate their performance. PostgreSQL 17 extends its performance gains to query execution. Planner statistics help PostgreSQL to determine the best way to search for data, and PostgreSQL 17 can now use planner statistics and the sort order [common table expressions](https://www.postgresql.org/docs/17/queries-with.html) ([`WITH` queries](https://www.postgresql.org/docs/17/queries-with.html)) to further speed up queries. PostgreSQL 17 also includes several indexing optimizations, including speeding execution of queries that contain an `IN` clause that use a [B-tree index](https://www.postgresql.org/docs/17/indexes-types.html#INDEXES-TYPES-BTREE) (the default index method in PostgreSQL), and parallel index builds for [BRIN](https://www.postgresql.org/docs/17/brin.html) indexes. The query planner in PostgreSQL 17 can now remove redundant `IS NOT NULL` statements when a column has a `NOT NULL` constraint, and skips over clauses that contain an `IS NULL` clause on a column with an `IS NOT NULL` constraint. PostgreSQL 17 continues to build on its support of explicit use SIMD (Single Instruction/Multiple Data) instructions to accelerate computations, adding support for using AVX-512 to accelerate computations for the [`bit_count`](https://www.postgresql.org/docs/17/functions-bitstring.html) function. ### Further expansion of a robust developer experience PostgreSQL was the [first relational database to add JSON support (2012)](https://www.postgresql.org/about/news/postgresql-92-released-1415/), and PostgreSQL 17 continues to add capabilities to support more expressive JSON processing capabilities and implementation of the SQL/JSON standard. [`JSON_TABLE`](https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-SQLJSON-TABLE) debuts in PostgreSQL 17, letting developers convert JSON data into a standard PostgreSQL table. PostgreSQL 17 now supports [SQL/JSON constructors](https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-JSON-CREATION-TABLE) (`JSON`, `JSON_SCALAR`, `JSON_SERIALIZE`) and [query functions](https://www.postgresql.org/docs/17/functions-json.html#SQLJSON-QUERY-FUNCTIONS) (`JSON_EXISTS`, `JSON_QUERY`, `JSON_VALUE`), giving developers other ways of interfacing with their JSON data. This release adds more [`jsonpath` expressions](https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-SQLJSON-PATH-OPERATORS), with an emphasis of converting JSON data to a native PostgreSQL data type, including numeric, boolean, string, and date/time types. [`MERGE`](https://www.postgresql.org/docs/17/sql-merge.html), introduced in PostgreSQL 15, allows you to write conditional SQL that includes `INSERT`, `UPDATE`, and `DELETE` actions from a single statement. PostgreSQL 17 builds on this by adding a `RETURNING` clause, letting developers take further action on modified rows in other parts of a query. PostgreSQL 17 gives developers more control over `MERGE` behavior, including a `merge_action` function to provide insight into how a row was modified and the `WHEN NOT MATCHED BY SOURCE` clause to add behavior if a source row doesn't match the MERGE conditions. Additionally, you can now use `MERGE` to update [views](https://www.postgresql.org/docs/17/sql-createview.html). PostgreSQL 17 has new capabilities for bulk loading and data exporting, including up to a 2x performance improvement when exporting large rows using the [`COPY`](https://www.postgresql.org/docs/17/sql-copy.html) command. `COPY` performance also has improvements when the source and destination encodings match, and includes a new option, `ON_ERROR`, that allows an import to proceed even if there is an error with a row insert. This release expands on functionality for managing data in partitions or federated on remote PostgreSQL instances. PostgreSQL 17 supports using identity columns and exclusion constraints on [partitioned tables](https://www.postgresql.org/docs/17/ddl-partitioning.html). With this release, the [PostgreSQL foreign data wrapper](https://www.postgresql.org/docs/17/postgres-fdw.html) ([`postgres_fdw`](https://www.postgresql.org/docs/17/postgres-fdw.html)), used to execute queries on remote PostgreSQL instances, can now push `EXISTS` and `IN` subqueries to the remote server for more efficient processing. PostgreSQL 17 also includes a built-in, platform independent, immutable collation provider that's guaranteed to be immutable and provides similar sorting semantics to the `C` collation except with `UTF-8` encoding rather than `SQL_ASCII`. Using this new collation provider guarantees that your text-based queries will return the same sorted results regardless of where you run PostgreSQL. ### Logical replication enhancements for high availability and major version upgrades [Logical replication](https://www.postgresql.org/docs/17/logical-replication.html) is used to stream data in real-time across many use cases. However, prior to this release, users who wanted to perform a major version upgrade would have to drop [logical replication slots](https://www.postgresql.org/docs/17/logical-replication-subscription.html#LOGICAL-REPLICATION-SUBSCRIPTION-SLOT), which requires resynchronizing data to subscribers after an upgrade. Starting with upgrades from PostgreSQL 17, users don't have to drop logical replication slots, simplifying the upgrade process when using logical replication. PostgreSQL 17 now includes failover control for logical replication, making it more resilient when deployed in high availability environments. Additionally, PostgreSQL 17 introduces the [`pg_createsubscriber`](https://www.postgresql.org/docs/17/app-pgcreatesubscriber.html) command-line tool for adding logical replication on a replica using physical replication. ### More options for managing security and operations PostgreSQL 17 further extends how users can manage the overall lifecycle of their database systems. Users that use TLS to connect to PostgreSQL can use the new `sslnegotiation` connection parameter to perform a direct TLS handshakes when using [ALPN](https://en.wikipedia.org/wiki/Application-Layer_Protocol_Negotiation), and is registered as `postgresql` in the ALPN directory. This release adds the `pg_maintain` [predefined role](https://www.postgresql.org/docs/17/predefined-roles.html), which allows you to give users permission to execute maintenance operations. [`pg_basebackup`](https://www.postgresql.org/docs/17/app-pgbasebackup.html), the backup utility included in PostgreSQL, now supports incremental backups and adds the [`pg_combinebackup`](https://www.postgresql.org/docs/17/app-pgcombinebackup.html) for the backup restoration process. Additionally, [`pg_dump`](https://www.postgresql.org/docs/17/app-pgdump.html) includes a new option called `--filter` that lets you select what objects to include when generating a dump file. PostgreSQL 17 also includes enhancements to monitoring and analysis features. [`EXPLAIN`](https://www.postgresql.org/docs/17/sql-explain.html), used to provide details on query plans and execution, can now show the time spent for I/O block reads and writes. `EXPLAIN` also adds two new options: `SERIALIZE`, which shows the timing for data conversion for network transmission, and `MEMORY`, which reports optimizer memory usage. PostgreSQL 17 now reports the [progress of vacuuming indexes](https://www.postgresql.org/docs/17/progress-reporting.html#VACUUM-PROGRESS-REPORTING), and adds the [`pg_wait_events`](https://www.postgresql.org/docs/17/view-pg-wait-events.html) that, when combined with [`pg_stat_activity`](https://www.postgresql.org/docs/17/monitoring-stats.html#MONITORING-PG-STAT-ACTIVITY-VIEW), gives more insight into why an active session is waiting. ### Additional Features Many other new features and improvements have been added to PostgreSQL 17. Many of these may also be helpful for your use cases. Please see the [release notes](https://www.postgresql.org/docs/17/release-17.html) for a complete list of new and changed features. ### About PostgreSQL [PostgreSQL](https://www.postgresql.org) is the world's most advanced open source database, with a global community of thousands of users, contributors, companies and organizations. Built on over 35 years of engineering, starting at the University of California, Berkeley, PostgreSQL has continued with an unmatched pace of development. PostgreSQL's mature feature set not only matches top proprietary database systems, but exceeds them in advanced database features, extensibility, security, and stability. ### Links * [Download](https://www.postgresql.org/download/) * [Release Notes](https://www.postgresql.org/docs/17/release-17.html) * [Press Kit](https://www.postgresql.org/about/press/) * [Security Page](https://www.postgresql.org/support/security/) * [Versioning Policy](https://www.postgresql.org/support/versioning/) * [Follow @postgresql](https://twitter.com/postgresql) * [Donate](https://www.postgresql.org/about/donate/) ## More About the Features For explanations of the above features and others, please see the following resources: * [Release Notes](https://www.postgresql.org/docs/17/release-17.html) * [Feature Matrix](https://www.postgresql.org/about/featurematrix/) ## Where to Download There are several ways you can download PostgreSQL 17, including: * The [Official Downloads](https://www.postgresql.org/download/) page, with contains installers and tools for [Windows](https://www.postgresql.org/download/windows/), [Linux](https://www.postgresql.org/download/linux/), [macOS](https://www.postgresql.org/download/macosx/), and more. * [Source Code](https://www.postgresql.org/ftp/source/v17.0) Other tools and extensions are available on the [PostgreSQL Extension Network](http://pgxn.org/). ## Documentation PostgreSQL 17 comes with HTML documentation as well as man pages, and you can also browse the documentation online in both [HTML](https://www.postgresql.org/docs/17/) and [PDF](https://www.postgresql.org/files/documentation/pdf/17/postgresql-17-US.pdf) formats. ## Licence PostgreSQL uses the [PostgreSQL License](https://www.postgresql.org/about/licence/), a BSD-like "permissive" license. This [OSI-certified license](http://www.opensource.org/licenses/postgresql/) is widely appreciated as flexible and business-friendly, since it does not restrict the use of PostgreSQL with commercial and proprietary applications. Together with multi-company support and public ownership of the code, our license makes PostgreSQL very popular with vendors wanting to embed a database in their own products without fear of fees, vendor lock-in, or changes in licensing terms. ## Contacts Website * [https://www.postgresql.org/](https://www.postgresql.org/) Email * [[email protected]](mailto:[email protected]) ## Images and Logos Postgres, PostgreSQL, and the Elephant Logo (Slonik) are all registered trademarks of the [PostgreSQL Community Association](https://www.postgres.ca). If you wish to use these marks, you must comply with the [trademark policy](https://www.postgresql.org/about/policies/trademarks/). ## Corporate Support PostgreSQL enjoys the support of numerous companies, who sponsor developers, provide hosting resources, and give us financial support. See our [sponsors](https://www.postgresql.org/about/sponsors/) page for some of these project supporters. There is also a large community of [companies offering PostgreSQL Support](https://www.postgresql.org/support/professional_support/), from individual consultants to multinational companies. If you wish to make a financial contribution to the PostgreSQL Global Development Group or one of the recognized community non-profit organizations, please visit our [donations](https://www.postgresql.org/about/donate/) page. [application/pgp-signature] OpenPGP_signature.asc (840B, 3-OpenPGP_signature.asc) download ^ permalink raw reply [nested|flat] 13+ messages in thread
* Re: PostgreSQL 17 release announcement draft @ 2024-09-05 09:22 Peter Eisentraut <[email protected]> parent: Jonathan S. Katz <[email protected]> 1 sibling, 1 reply; 13+ messages in thread From: Peter Eisentraut @ 2024-09-05 09:22 UTC (permalink / raw) To: Jonathan S. Katz <[email protected]>; PostgreSQL Advocacy <[email protected]> On 04.09.24 23:05, Jonathan S. Katz wrote: > Attached is the draft of the PostgreSQL 17 release announcement. This is > a draft of the text that will go into the press kit, with the key > portions to review starting from the top of the document, up until the > "About PostgreSQL" section. I noticed that we don't yet have a list of major features in the PG17 release notes. We should probably put that in soon, so that what we list there and what is in the announcement are consistent. On the actual list, there will be lots of opinions to be had, but I'll just offer one: I don't think the MERGE RETURNING clause deserves twice as much space as incremental backup. ^ permalink raw reply [nested|flat] 13+ messages in thread
* Re: PostgreSQL 17 release announcement draft @ 2024-09-05 09:42 Alicja Kucharczyk <[email protected]> parent: Jonathan S. Katz <[email protected]> 1 sibling, 0 replies; 13+ messages in thread From: Alicja Kucharczyk @ 2024-09-05 09:42 UTC (permalink / raw) To: Jonathan S. Katz <[email protected]>; +Cc: PostgreSQL Advocacy <[email protected]> śr., 4 wrz 2024 o 23:05 Jonathan S. Katz <[email protected]> napisał(a): > On the last point, I'm looking to ensure the wording is > clear and is easy to translate into different languages. > As a non-native speaker, I found the wording and syntax easy to understand, and the acronyms are well-explained. In my opinion, this should make translation into different languages relatively straightforward. The only word that might pose a challenge is "debuts," as it's not commonly used, but most online translators do a good job of conveying its meaning. Overall, I believe the text is clear and effective. ^ permalink raw reply [nested|flat] 13+ messages in thread
* Re: PostgreSQL 17 release announcement draft @ 2024-09-05 16:04 Robert Haas <[email protected]> parent: Peter Eisentraut <[email protected]> 0 siblings, 1 reply; 13+ messages in thread From: Robert Haas @ 2024-09-05 16:04 UTC (permalink / raw) To: Peter Eisentraut <[email protected]>; +Cc: Jonathan S. Katz <[email protected]>; PostgreSQL Advocacy <[email protected]> On Thu, Sep 5, 2024 at 5:22 AM Peter Eisentraut <[email protected]> wrote: > On 04.09.24 23:05, Jonathan S. Katz wrote: > > Attached is the draft of the PostgreSQL 17 release announcement. This is > > a draft of the text that will go into the press kit, with the key > > portions to review starting from the top of the document, up until the > > "About PostgreSQL" section. > > I noticed that we don't yet have a list of major features in the PG17 > release notes. We should probably put that in soon, so that what we > list there and what is in the announcement are consistent. +1. > On the actual list, there will be lots of opinions to be had, but I'll > just offer one: I don't think the MERGE RETURNING clause deserves twice > as much space as incremental backup. I agree with that, although obviously I'm biased. I also feel like this whole thing could just be shorter. If it were half as long and mentioned fewer things and those more briefly, would we be worse off? I think we might be better off, because it just feels wordy to me right now. For example: A foundational feature of PostgreSQL is [vacuum](https://www.postgresql.org/docs/17/routine-vacuuming.html), which is used to reclaim storage from data that was marked as removed. Reducing resources required for vacuuming directly helps other areas of PostgreSQL, particularly on very busy systems. PostgreSQL 17 introduces a new internal memory structure for vacuum that's shown up to a 20x reduction in memory and improvements in overall vacuuming speed. This release also removes the `1GB` limit on the memory it can use (controlled by [`maintenance_work_mem`](https://www.postgresql.org/docs/17/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM)), letting users apply more resources to vacuuming, which is beneficial for systems with lots of changes. It seems to me that the first two sentences could just be completely nuked, and everything from "letting users" to the end could also be nuked. At least to me, all of that stuff reads as unnecessarily filler. I'm not at all sure that removing the 1GB limit on maintenance_work_mem is important enough that it needs to be in the release announcement -- I agree it's a good improvement, but to have it be one of the first things in the press release seems like an odd choice from my perspective. Nobody's going to look back on this release years from now and say "oh, that was the release where could finally set maintenance_work_mem=4GB, that was so much better". If they think about VACUUM, they'll think about the 20x memory reduction stuff which made the ability to configure values larger than 1GB irrelevant in the first place. So I'd probably delete the part about lifting the 1GB cap entirely. But even if you don't do that, the paragraph could be half as long without losing anything, from my perspective. -- Robert Haas EDB: http://www.enterprisedb.com ^ permalink raw reply [nested|flat] 13+ messages in thread
* Re: PostgreSQL 17 release announcement draft @ 2024-09-05 16:49 Andrew Atkinson <[email protected]> parent: Robert Haas <[email protected]> 0 siblings, 1 reply; 13+ messages in thread From: Andrew Atkinson @ 2024-09-05 16:49 UTC (permalink / raw) To: Robert Haas <[email protected]>; +Cc: Peter Eisentraut <[email protected]>; Jonathan S. Katz <[email protected]>; PostgreSQL Advocacy <[email protected]> Hi Jonathan. Do you want change proposals here as text snippets in emails? It seems the patch process isn't used here. If so, here's an attempted reduction that echoes what Robert said. I also thought explaining Vacuum wouldn't be necessary for this audience, so less lead-in could work. Is the benefit to end users that there is less memory and CPU needed by vacuum, thus more CPU and memory is available to their foreground workload? Original: > A foundational feature of PostgreSQL is [vacuum]( https://www.postgresql.org/docs/17/routine-vacuuming.html), which is used to reclaim storage from data that was marked as removed. Reducing resources required for vacuuming directly helps other areas of PostgreSQL, particularly on very busy systems. PostgreSQL 17 introduces a new internal memory structure for vacuum that's shown up to a 20x reduction in memory and improvements in overall vacuuming speed. Proposed: The PostgreSQL [vacuum]( https://www.postgresql.org/docs/17/routine-vacuuming.html) process is critical for healthy operations, requiring server instance resources to operate. With PostgreSQL 17, a new internal memory structure for vacuum was used that consumes up to 20x less memory. This improves vacuum speed and also reduces the use of shared resources, making more available for your workload. Something along those lines, where the benefit to the user is they could expect more CPU/mem etc. available for their SQL operations, right? This could be something folks want to benchmark as well as a reason to upgrade, at least for Vacuum-intensive workloads, high UPDATE and DELETE operations etc. On Thu, Sep 5, 2024 at 11:04 AM Robert Haas <[email protected]> wrote: > On Thu, Sep 5, 2024 at 5:22 AM Peter Eisentraut <[email protected]> > wrote: > > On 04.09.24 23:05, Jonathan S. Katz wrote: > > > Attached is the draft of the PostgreSQL 17 release announcement. This > is > > > a draft of the text that will go into the press kit, with the key > > > portions to review starting from the top of the document, up until the > > > "About PostgreSQL" section. > > > > I noticed that we don't yet have a list of major features in the PG17 > > release notes. We should probably put that in soon, so that what we > > list there and what is in the announcement are consistent. > > +1. > > > On the actual list, there will be lots of opinions to be had, but I'll > > just offer one: I don't think the MERGE RETURNING clause deserves twice > > as much space as incremental backup. > > I agree with that, although obviously I'm biased. > > I also feel like this whole thing could just be shorter. If it were > half as long and mentioned fewer things and those more briefly, would > we be worse off? I think we might be better off, because it just feels > wordy to me right now. For example: > > A foundational feature of PostgreSQL is > [vacuum](https://www.postgresql.org/docs/17/routine-vacuuming.html), > which is used to reclaim storage from data that was marked as removed. > Reducing resources required for vacuuming directly helps other areas > of PostgreSQL, particularly on very busy systems. PostgreSQL 17 > introduces a new internal memory structure for vacuum that's shown up > to a 20x reduction in memory and improvements in overall vacuuming > speed. This release also removes the `1GB` limit on the memory it can > use (controlled by > [`maintenance_work_mem`]( > https://www.postgresql.org/docs/17/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM) > ), > letting users apply more resources to vacuuming, which is beneficial > for systems with lots of changes. > > It seems to me that the first two sentences could just be completely > nuked, and everything from "letting users" to the end could also be > nuked. At least to me, all of that stuff reads as unnecessarily > filler. I'm not at all sure that removing the 1GB limit on > maintenance_work_mem is important enough that it needs to be in the > release announcement -- I agree it's a good improvement, but to have > it be one of the first things in the press release seems like an odd > choice from my perspective. Nobody's going to look back on this > release years from now and say "oh, that was the release where could > finally set maintenance_work_mem=4GB, that was so much better". If > they think about VACUUM, they'll think about the 20x memory reduction > stuff which made the ability to configure values larger than 1GB > irrelevant in the first place. So I'd probably delete the part about > lifting the 1GB cap entirely. But even if you don't do that, the > paragraph could be half as long without losing anything, from my > perspective. > > -- > Robert Haas > EDB: http://www.enterprisedb.com > > > ^ permalink raw reply [nested|flat] 13+ messages in thread
* Re: PostgreSQL 17 release announcement draft @ 2024-09-05 16:58 Andrew Atkinson <[email protected]> parent: Andrew Atkinson <[email protected]> 0 siblings, 1 reply; 13+ messages in thread From: Andrew Atkinson @ 2024-09-05 16:58 UTC (permalink / raw) To: Robert Haas <[email protected]>; +Cc: Peter Eisentraut <[email protected]>; Jonathan S. Katz <[email protected]>; PostgreSQL Advocacy <[email protected]> The write operations seem to be under-sold here! These seem very exciting and would be beneficial to all Postgres databases I've worked on. Is this a fair way to reduce the three items mentioned, as much as possible? I'm not proposing they change, but just sort of pushing on building down the items tied to their benefit to the end user as much as possible. Possibly shortening them and making them punchier will help. Faster Write throughput: - "Fewer WAL locks shorter lock lengths" (check this, I'm making it up, but I'm wondering if it's fewer WAL locks, or the locks are held for less time), thus better throughput - "Faster Sequential scans" - is the benefit that they're faster? - "Faster ANALYZE" - is it that ANALYZE runs faster on 17 vs. the same operation on 16? The last point "Allowing extensions to be integrated further." I didn't grab on to as much. I'm wondering if it's something like "new write operation APIs are now available for extension creators" or something like that? On Thu, Sep 5, 2024 at 11:49 AM Andrew Atkinson <[email protected]> wrote: > Hi Jonathan. Do you want change proposals here as text snippets in emails? > It seems the patch process isn't used here. > > If so, here's an attempted reduction that echoes what Robert said. I also > thought explaining Vacuum wouldn't be necessary for this audience, so less > lead-in could work. Is the benefit to end users that there is less memory > and CPU needed by vacuum, thus more CPU and memory is available to their > foreground workload? > > Original: > > A foundational feature of PostgreSQL is [vacuum]( > https://www.postgresql.org/docs/17/routine-vacuuming.html), which is used > to reclaim storage from data that was marked as removed. Reducing resources > required for vacuuming directly helps other areas of PostgreSQL, > particularly on very busy systems. PostgreSQL 17 introduces a new internal > memory structure for vacuum that's shown up to a 20x reduction in memory > and improvements in overall vacuuming speed. > > Proposed: > The PostgreSQL [vacuum]( > https://www.postgresql.org/docs/17/routine-vacuuming.html) process is > critical for healthy operations, requiring server instance resources to > operate. With PostgreSQL 17, a new internal memory structure for vacuum was > used that consumes up to 20x less memory. This improves vacuum speed and > also reduces the use of shared resources, making more available for your > workload. > > > Something along those lines, where the benefit to the user is they could > expect more CPU/mem etc. available for their SQL operations, right? This > could be something folks want to benchmark as well as a reason to upgrade, > at least for Vacuum-intensive workloads, high UPDATE and DELETE operations > etc. > > > > > > On Thu, Sep 5, 2024 at 11:04 AM Robert Haas <[email protected]> wrote: > >> On Thu, Sep 5, 2024 at 5:22 AM Peter Eisentraut <[email protected]> >> wrote: >> > On 04.09.24 23:05, Jonathan S. Katz wrote: >> > > Attached is the draft of the PostgreSQL 17 release announcement. This >> is >> > > a draft of the text that will go into the press kit, with the key >> > > portions to review starting from the top of the document, up until the >> > > "About PostgreSQL" section. >> > >> > I noticed that we don't yet have a list of major features in the PG17 >> > release notes. We should probably put that in soon, so that what we >> > list there and what is in the announcement are consistent. >> >> +1. >> >> > On the actual list, there will be lots of opinions to be had, but I'll >> > just offer one: I don't think the MERGE RETURNING clause deserves twice >> > as much space as incremental backup. >> >> I agree with that, although obviously I'm biased. >> >> I also feel like this whole thing could just be shorter. If it were >> half as long and mentioned fewer things and those more briefly, would >> we be worse off? I think we might be better off, because it just feels >> wordy to me right now. For example: >> >> A foundational feature of PostgreSQL is >> [vacuum](https://www.postgresql.org/docs/17/routine-vacuuming.html), >> which is used to reclaim storage from data that was marked as removed. >> Reducing resources required for vacuuming directly helps other areas >> of PostgreSQL, particularly on very busy systems. PostgreSQL 17 >> introduces a new internal memory structure for vacuum that's shown up >> to a 20x reduction in memory and improvements in overall vacuuming >> speed. This release also removes the `1GB` limit on the memory it can >> use (controlled by >> [`maintenance_work_mem`]( >> https://www.postgresql.org/docs/17/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM) >> ), >> letting users apply more resources to vacuuming, which is beneficial >> for systems with lots of changes. >> >> It seems to me that the first two sentences could just be completely >> nuked, and everything from "letting users" to the end could also be >> nuked. At least to me, all of that stuff reads as unnecessarily >> filler. I'm not at all sure that removing the 1GB limit on >> maintenance_work_mem is important enough that it needs to be in the >> release announcement -- I agree it's a good improvement, but to have >> it be one of the first things in the press release seems like an odd >> choice from my perspective. Nobody's going to look back on this >> release years from now and say "oh, that was the release where could >> finally set maintenance_work_mem=4GB, that was so much better". If >> they think about VACUUM, they'll think about the 20x memory reduction >> stuff which made the ability to configure values larger than 1GB >> irrelevant in the first place. So I'd probably delete the part about >> lifting the 1GB cap entirely. But even if you don't do that, the >> paragraph could be half as long without losing anything, from my >> perspective. >> >> -- >> Robert Haas >> EDB: http://www.enterprisedb.com >> >> >> ^ permalink raw reply [nested|flat] 13+ messages in thread
* Re: PostgreSQL 17 release announcement draft @ 2024-09-05 18:44 Andrew Atkinson <[email protected]> parent: Andrew Atkinson <[email protected]> 0 siblings, 1 reply; 13+ messages in thread From: Andrew Atkinson @ 2024-09-05 18:44 UTC (permalink / raw) To: Robert Haas <[email protected]>; +Cc: Peter Eisentraut <[email protected]>; Jonathan S. Katz <[email protected]>; PostgreSQL Advocacy <[email protected]> Additional chunk: Proposed: PostgreSQL 17 improves the performance of queries with `IN` clauses that use [B-tree]( https://www.postgresql.org/docs/17/indexes-types.html#INDEXES-TYPES-BTREE) indexes, the default index method in PostgreSQL). Support for parallel index builds were added for [BRIN]( https://www.postgresql.org/docs/17/brin.html) indexing. PostgreSQL 17 leverages the constraints you've defined. The query planner removes redundant `IS NOT NULL` statements when a column has a `NOT NULL` constraint, and skips over `IS NULL` clauses for columns with an `IS NOT NULL` constraint. On Thu, Sep 5, 2024 at 11:58 AM Andrew Atkinson <[email protected]> wrote: > The write operations seem to be under-sold here! These seem very exciting > and would be beneficial to all Postgres databases I've worked on. > > Is this a fair way to reduce the three items mentioned, as much as > possible? I'm not proposing they change, but just sort of pushing on > building down the items tied to their benefit to the end user as much as > possible. Possibly shortening them and making them punchier will help. > > Faster Write throughput: > - "Fewer WAL locks shorter lock lengths" (check this, I'm making it up, > but I'm wondering if it's fewer WAL locks, or the locks are held for less > time), thus better throughput > - "Faster Sequential scans" - is the benefit that they're faster? > - "Faster ANALYZE" - is it that ANALYZE runs faster on 17 vs. the same > operation on 16? > > The last point "Allowing extensions to be integrated further." I didn't > grab on to as much. I'm wondering if it's something like "new write > operation APIs are now available for extension creators" or something like > that? > > On Thu, Sep 5, 2024 at 11:49 AM Andrew Atkinson <[email protected]> > wrote: > >> Hi Jonathan. Do you want change proposals here as text snippets in >> emails? It seems the patch process isn't used here. >> >> If so, here's an attempted reduction that echoes what Robert said. I also >> thought explaining Vacuum wouldn't be necessary for this audience, so less >> lead-in could work. Is the benefit to end users that there is less memory >> and CPU needed by vacuum, thus more CPU and memory is available to their >> foreground workload? >> >> Original: >> > A foundational feature of PostgreSQL is [vacuum]( >> https://www.postgresql.org/docs/17/routine-vacuuming.html), which is >> used to reclaim storage from data that was marked as removed. Reducing >> resources required for vacuuming directly helps other areas of PostgreSQL, >> particularly on very busy systems. PostgreSQL 17 introduces a new internal >> memory structure for vacuum that's shown up to a 20x reduction in memory >> and improvements in overall vacuuming speed. >> >> Proposed: >> The PostgreSQL [vacuum]( >> https://www.postgresql.org/docs/17/routine-vacuuming.html) process is >> critical for healthy operations, requiring server instance resources to >> operate. With PostgreSQL 17, a new internal memory structure for vacuum was >> used that consumes up to 20x less memory. This improves vacuum speed and >> also reduces the use of shared resources, making more available for your >> workload. >> >> >> Something along those lines, where the benefit to the user is they could >> expect more CPU/mem etc. available for their SQL operations, right? This >> could be something folks want to benchmark as well as a reason to upgrade, >> at least for Vacuum-intensive workloads, high UPDATE and DELETE operations >> etc. >> >> >> >> >> >> On Thu, Sep 5, 2024 at 11:04 AM Robert Haas <[email protected]> >> wrote: >> >>> On Thu, Sep 5, 2024 at 5:22 AM Peter Eisentraut <[email protected]> >>> wrote: >>> > On 04.09.24 23:05, Jonathan S. Katz wrote: >>> > > Attached is the draft of the PostgreSQL 17 release announcement. >>> This is >>> > > a draft of the text that will go into the press kit, with the key >>> > > portions to review starting from the top of the document, up until >>> the >>> > > "About PostgreSQL" section. >>> > >>> > I noticed that we don't yet have a list of major features in the PG17 >>> > release notes. We should probably put that in soon, so that what we >>> > list there and what is in the announcement are consistent. >>> >>> +1. >>> >>> > On the actual list, there will be lots of opinions to be had, but I'll >>> > just offer one: I don't think the MERGE RETURNING clause deserves >>> twice >>> > as much space as incremental backup. >>> >>> I agree with that, although obviously I'm biased. >>> >>> I also feel like this whole thing could just be shorter. If it were >>> half as long and mentioned fewer things and those more briefly, would >>> we be worse off? I think we might be better off, because it just feels >>> wordy to me right now. For example: >>> >>> A foundational feature of PostgreSQL is >>> [vacuum](https://www.postgresql.org/docs/17/routine-vacuuming.html), >>> which is used to reclaim storage from data that was marked as removed. >>> Reducing resources required for vacuuming directly helps other areas >>> of PostgreSQL, particularly on very busy systems. PostgreSQL 17 >>> introduces a new internal memory structure for vacuum that's shown up >>> to a 20x reduction in memory and improvements in overall vacuuming >>> speed. This release also removes the `1GB` limit on the memory it can >>> use (controlled by >>> [`maintenance_work_mem`]( >>> https://www.postgresql.org/docs/17/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM) >>> ), >>> letting users apply more resources to vacuuming, which is beneficial >>> for systems with lots of changes. >>> >>> It seems to me that the first two sentences could just be completely >>> nuked, and everything from "letting users" to the end could also be >>> nuked. At least to me, all of that stuff reads as unnecessarily >>> filler. I'm not at all sure that removing the 1GB limit on >>> maintenance_work_mem is important enough that it needs to be in the >>> release announcement -- I agree it's a good improvement, but to have >>> it be one of the first things in the press release seems like an odd >>> choice from my perspective. Nobody's going to look back on this >>> release years from now and say "oh, that was the release where could >>> finally set maintenance_work_mem=4GB, that was so much better". If >>> they think about VACUUM, they'll think about the 20x memory reduction >>> stuff which made the ability to configure values larger than 1GB >>> irrelevant in the first place. So I'd probably delete the part about >>> lifting the 1GB cap entirely. But even if you don't do that, the >>> paragraph could be half as long without losing anything, from my >>> perspective. >>> >>> -- >>> Robert Haas >>> EDB: http://www.enterprisedb.com >>> >>> >>> ^ permalink raw reply [nested|flat] 13+ messages in thread
* Re: PostgreSQL 17 release announcement draft @ 2024-09-05 19:21 Andrew Atkinson <[email protected]> parent: Andrew Atkinson <[email protected]> 0 siblings, 1 reply; 13+ messages in thread From: Andrew Atkinson @ 2024-09-05 19:21 UTC (permalink / raw) To: Robert Haas <[email protected]>; +Cc: Peter Eisentraut <[email protected]>; Jonathan S. Katz <[email protected]>; PostgreSQL Advocacy <[email protected]> I'll send one more bigger email. I also have made these as comments in a google doc I'm happy to add anyone to if they're interested. Let me know. > PostgreSQL 17 extends its performance gains to query execution. Planner statistics help PostgreSQL to determine the best way to search for data, and PostgreSQL 17 can now use planner statistics and the sort order [common table expressions](https://www.postgresql.org/docs/17/queries-with.html <https://www.google.com/url?q=https://www.postgresql.org/docs/17/queries-with.html&sa=D&sourc...;) ([`WITH` queries](https://www.postgresql.org/docs/17/queries-with.html <https://www.google.com/url?q=https://www.postgresql.org/docs/17/queries-with.html&sa=D&sourc...;)) to further speed up queries. Was that meant to be the sort order "from" CTEs? Maybe a missing "From"? > to support more expressive JSON processing capabilities and implementation of the SQL/JSON standard. Was that meant to be something like "and to expand the implementation" of or "an expanded implementation"? > "with an emphasis of converting JSON data to a native PostgreSQL data type" Was that meant to be an emphasis "*on" and not "of"* ? > For the merge section, here's a proposed reworked version: PostgreSQL 17 provides expanded control over `MERGE` behavior, including a new `merge_action` function that describes how a row was modified. PostgreSQL 17 provides new capabilities and performance improvements for bulk data loading and exporting. This includes improving exports of large rows by up to 2x using the [`COPY`]( https://www.postgresql.org/docs/17/sql-copy.html <https://www.google.com/url?q=https://www.postgresql.org/docs/17/sql-copy.html&sa=D&source=do...;) command, and performance improvements for cases when the source and destination encodings match. A new option `ON_ERROR` was added which can be used to allow imports to continue even when errors happen for inserts. > For the predefined role, something to consider would be using action verbs. I don't know if this seems too inconsistent though. It makes it easier to write. For example: Use the new `pg_maintain` [predefined role]( https://www.postgresql.org/docs/17/predefined-roles.html <https://www.google.com/url?q=https://www.postgresql.org/docs/17/predefined-roles.html&sa=D&s...;) to grant permissions for maintenance operations. > For the EXPLAIN enhancements: PostgreSQL 17 [`EXPLAIN`]( https://www.postgresql.org/docs/17/sql-explain.html <https://www.google.com/url?q=https://www.postgresql.org/docs/17/sql-explain.html&sa=D&source...;) now shows the time spent for I/O block reads and writes, and includes two new options: `SERIALIZE` and `MEMORY`, useful for seeing the time spent in data conversion for network transmission, and how much memory was used. That's all I've got. This is an exciting release! Nice work! On Thu, Sep 5, 2024 at 1:44 PM Andrew Atkinson <[email protected]> wrote: > Additional chunk: > > Proposed: > PostgreSQL 17 improves the performance of queries with `IN` clauses that > use [B-tree]( > https://www.postgresql.org/docs/17/indexes-types.html#INDEXES-TYPES-BTREE) > indexes, the default index method in PostgreSQL). Support for parallel > index builds were added for [BRIN]( > https://www.postgresql.org/docs/17/brin.html) indexing. > > PostgreSQL 17 leverages the constraints you've defined. The query planner > removes redundant `IS NOT NULL` statements when a column has a `NOT NULL` > constraint, and skips over `IS NULL` clauses for columns with an `IS NOT > NULL` constraint. > > > On Thu, Sep 5, 2024 at 11:58 AM Andrew Atkinson <[email protected]> > wrote: > >> The write operations seem to be under-sold here! These seem very exciting >> and would be beneficial to all Postgres databases I've worked on. >> >> Is this a fair way to reduce the three items mentioned, as much as >> possible? I'm not proposing they change, but just sort of pushing on >> building down the items tied to their benefit to the end user as much as >> possible. Possibly shortening them and making them punchier will help. >> >> Faster Write throughput: >> - "Fewer WAL locks shorter lock lengths" (check this, I'm making it up, >> but I'm wondering if it's fewer WAL locks, or the locks are held for less >> time), thus better throughput >> - "Faster Sequential scans" - is the benefit that they're faster? >> - "Faster ANALYZE" - is it that ANALYZE runs faster on 17 vs. the same >> operation on 16? >> >> The last point "Allowing extensions to be integrated further." I didn't >> grab on to as much. I'm wondering if it's something like "new write >> operation APIs are now available for extension creators" or something like >> that? >> >> On Thu, Sep 5, 2024 at 11:49 AM Andrew Atkinson <[email protected]> >> wrote: >> >>> Hi Jonathan. Do you want change proposals here as text snippets in >>> emails? It seems the patch process isn't used here. >>> >>> If so, here's an attempted reduction that echoes what Robert said. I >>> also thought explaining Vacuum wouldn't be necessary for this audience, so >>> less lead-in could work. Is the benefit to end users that there is less >>> memory and CPU needed by vacuum, thus more CPU and memory is available to >>> their foreground workload? >>> >>> Original: >>> > A foundational feature of PostgreSQL is [vacuum]( >>> https://www.postgresql.org/docs/17/routine-vacuuming.html), which is >>> used to reclaim storage from data that was marked as removed. Reducing >>> resources required for vacuuming directly helps other areas of PostgreSQL, >>> particularly on very busy systems. PostgreSQL 17 introduces a new internal >>> memory structure for vacuum that's shown up to a 20x reduction in memory >>> and improvements in overall vacuuming speed. >>> >>> Proposed: >>> The PostgreSQL [vacuum]( >>> https://www.postgresql.org/docs/17/routine-vacuuming.html) process is >>> critical for healthy operations, requiring server instance resources to >>> operate. With PostgreSQL 17, a new internal memory structure for vacuum was >>> used that consumes up to 20x less memory. This improves vacuum speed and >>> also reduces the use of shared resources, making more available for your >>> workload. >>> >>> >>> Something along those lines, where the benefit to the user is they could >>> expect more CPU/mem etc. available for their SQL operations, right? This >>> could be something folks want to benchmark as well as a reason to upgrade, >>> at least for Vacuum-intensive workloads, high UPDATE and DELETE operations >>> etc. >>> >>> >>> >>> >>> >>> On Thu, Sep 5, 2024 at 11:04 AM Robert Haas <[email protected]> >>> wrote: >>> >>>> On Thu, Sep 5, 2024 at 5:22 AM Peter Eisentraut <[email protected]> >>>> wrote: >>>> > On 04.09.24 23:05, Jonathan S. Katz wrote: >>>> > > Attached is the draft of the PostgreSQL 17 release announcement. >>>> This is >>>> > > a draft of the text that will go into the press kit, with the key >>>> > > portions to review starting from the top of the document, up until >>>> the >>>> > > "About PostgreSQL" section. >>>> > >>>> > I noticed that we don't yet have a list of major features in the PG17 >>>> > release notes. We should probably put that in soon, so that what we >>>> > list there and what is in the announcement are consistent. >>>> >>>> +1. >>>> >>>> > On the actual list, there will be lots of opinions to be had, but I'll >>>> > just offer one: I don't think the MERGE RETURNING clause deserves >>>> twice >>>> > as much space as incremental backup. >>>> >>>> I agree with that, although obviously I'm biased. >>>> >>>> I also feel like this whole thing could just be shorter. If it were >>>> half as long and mentioned fewer things and those more briefly, would >>>> we be worse off? I think we might be better off, because it just feels >>>> wordy to me right now. For example: >>>> >>>> A foundational feature of PostgreSQL is >>>> [vacuum](https://www.postgresql.org/docs/17/routine-vacuuming.html), >>>> which is used to reclaim storage from data that was marked as removed. >>>> Reducing resources required for vacuuming directly helps other areas >>>> of PostgreSQL, particularly on very busy systems. PostgreSQL 17 >>>> introduces a new internal memory structure for vacuum that's shown up >>>> to a 20x reduction in memory and improvements in overall vacuuming >>>> speed. This release also removes the `1GB` limit on the memory it can >>>> use (controlled by >>>> [`maintenance_work_mem`]( >>>> https://www.postgresql.org/docs/17/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM) >>>> ), >>>> letting users apply more resources to vacuuming, which is beneficial >>>> for systems with lots of changes. >>>> >>>> It seems to me that the first two sentences could just be completely >>>> nuked, and everything from "letting users" to the end could also be >>>> nuked. At least to me, all of that stuff reads as unnecessarily >>>> filler. I'm not at all sure that removing the 1GB limit on >>>> maintenance_work_mem is important enough that it needs to be in the >>>> release announcement -- I agree it's a good improvement, but to have >>>> it be one of the first things in the press release seems like an odd >>>> choice from my perspective. Nobody's going to look back on this >>>> release years from now and say "oh, that was the release where could >>>> finally set maintenance_work_mem=4GB, that was so much better". If >>>> they think about VACUUM, they'll think about the 20x memory reduction >>>> stuff which made the ability to configure values larger than 1GB >>>> irrelevant in the first place. So I'd probably delete the part about >>>> lifting the 1GB cap entirely. But even if you don't do that, the >>>> paragraph could be half as long without losing anything, from my >>>> perspective. >>>> >>>> -- >>>> Robert Haas >>>> EDB: http://www.enterprisedb.com >>>> >>>> >>>> ^ permalink raw reply [nested|flat] 13+ messages in thread
* Re: PostgreSQL 17 release announcement draft @ 2024-09-06 17:03 Jonathan S. Katz <[email protected]> parent: Andrew Atkinson <[email protected]> 0 siblings, 1 reply; 13+ messages in thread From: Jonathan S. Katz @ 2024-09-06 17:03 UTC (permalink / raw) To: Andrew Atkinson <[email protected]>; Robert Haas <[email protected]>; +Cc: Peter Eisentraut <[email protected]>; PostgreSQL Advocacy <[email protected]>; [email protected] <[email protected]> On 9/5/24 3:21 PM, Andrew Atkinson wrote: > I'll send one more bigger email. I also have made these as comments in a > google doc I'm happy to add anyone to if they're interested. Let me know. Thank you everyone for your feedback. I've attached the updated draft incorporating what was said. A few general comments: * I took to heart "make the explanations shorter" and trimmed quite a bit. However, given the GA announcement is for a more general audience, there are concepts that are unfamiliar to general users that deserve clarification or additional context. For example, for many of our users, vacuum isn't typically noticed (or even considered) until something goes wrong, but they'll still benefit from overall changes. Similarly, the phrase "sequential scan" may not mean anything, but a user may know that creating an index will "speed up a query." * One pattern that we measured is that when we made the GA announcement a "springboard" to learn about the new features (including more info), we did see better engagement with the release and the features themselves. I'd like to err on the side of discoverability, particularly of features that our users can directly try out. Please see v2 attached. As per original note, please provide feedback before Mon, Sep 9 @ 12:00 UTC so we can begin the translation process. Thanks, Jonathan September 26, 2024 - The PostgreSQL Global Development Group today announced the release of [PostgreSQL 17](https://www.postgresql.org/docs/17/release-17.html), the latest version of the world's most advanced open source database. PostgreSQL 17 builds on decades of open source development, improving its performance and scalability while adapting to emergent data access and storage patterns. This release of PostgreSQL adds significant overall performance gains, including an overhauled memory management implementation for vacuum, optimizations to storage access and improvements for high concurrency workloads, speedups in bulk loading and exports, and query execution improvements for indexes. PostgreSQL 17 has features that benefit brand new workloads and critical systems alike, such as additions to the developer experience with the SQL/JSON `JSON_TABLE` command, and enhancements to logical replication that simplify management of high availability workloads and major version upgrades. <QUOTE> PostgreSQL, an innovative data management system known for its reliability, robustness, and extensibility, benefits from over 25 years of open source development from a global developer community and has become the preferred open source relational database for organizations of all sizes. ### System-wide performance gains The PostgreSQL [vacuum](https://www.postgresql.org/docs/17/routine-vacuuming.html) process is critical for healthy operations, requiring server instance resources to operate. PostgreSQL 17 introduces a new internal memory structure for vacuum was used that consumes up to 20x less memory. This improves vacuum speed and also reduces the use of shared resources, making more available for your workload. PostgreSQL 17 continues to improve performance of its I/O layer. High concurrency workloads may see up to 2x better write throughput due to improvements with [write-ahead log](https://www.postgresql.org/docs/17/wal-intro.html) ([WAL](https://www.postgresql.org/docs/17/wal-intro.html)) processing. Additionally, the new streaming I/O interface speeds up sequential scans (reading all the data from a table) and how quickly [`ANALYZE`](https://www.postgresql.org/docs/17/sql-analyze.html) can update planner statistics. PostgreSQL 17 also extends its performance gains to query execution. PostgreSQL 17 improves the performance of queries with `IN` clauses that use [B-tree](https://www.postgresql.org/docs/17/indexes-types.html#INDEXES-TYPES-BTREE) indexes, the default index method in PostgreSQL. Additionally, [BRIN](https://www.postgresql.org/docs/17/brin.html) indexes now support parallel builds. PostgreSQL 17 includes several improvements for query planning, including optimizations for `NOT NULL` constraints, and improvements in processing [common table expressions](https://www.postgresql.org/docs/17/queries-with.html) ([`WITH` queries](https://www.postgresql.org/docs/17/queries-with.html)). This release adds more SIMD (Single Instruction/Multiple Data) support for accelerating computations, including using AVX-512 for the [`bit_count`](https://www.postgresql.org/docs/17/functions-bitstring.html) function. ### Further expansion of a robust developer experience PostgreSQL was the [first relational database to add JSON support (2012)](https://www.postgresql.org/about/news/postgresql-92-released-1415/), and PostgreSQL 17 adds to its implementation SQL/JSON standard. [`JSON_TABLE`](https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-SQLJSON-TABLE) is now available in PostgreSQL 17, letting developers convert JSON data into a standard PostgreSQL table. PostgreSQL 17 now supports [SQL/JSON constructors](https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-JSON-CREATION-TABLE) (`JSON`, `JSON_SCALAR`, `JSON_SERIALIZE`) and [query functions](https://www.postgresql.org/docs/17/functions-json.html#SQLJSON-QUERY-FUNCTIONS) (`JSON_EXISTS`, `JSON_QUERY`, `JSON_VALUE`), giving developers other ways of interfacing with their JSON data. This release adds more [`jsonpath` expressions](https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-SQLJSON-PATH-OPERATORS), with an emphasis of converting JSON data to a native PostgreSQL data type, including numeric, boolean, string, and date/time types. PostgreSQL 17 adds more features to [`MERGE`](https://www.postgresql.org/docs/17/sql-merge.html), which is used for conditional updates, including a `RETURNING` clause and the ability to update [views](https://www.postgresql.org/docs/17/sql-createview.html). Additionally, PostgreSQL 17 has new capabilities for bulk loading and data exporting,including up to a 2x performance improvement when exporting large rows using the [`COPY`](https://www.postgresql.org/docs/17/sql-copy.html) command. `COPY` performance also has improvements when the source and destination encodings match, and includes a new option, `ON_ERROR`, that allows an import to continue even if there is an insert error. This release expands on functionality for managing data in partitions or federated on remote PostgreSQL instances. PostgreSQL 17 supports using identity columns and exclusion constraints on [partitioned tables](https://www.postgresql.org/docs/17/ddl-partitioning.html). With this release, the [PostgreSQL foreign data wrapper](https://www.postgresql.org/docs/17/postgres-fdw.html) ([`postgres_fdw`](https://www.postgresql.org/docs/17/postgres-fdw.html)), used to execute queries on remote PostgreSQL instances, can now push `EXISTS` and `IN` subqueries to the remote server for more efficient processing. PostgreSQL 17 also includes a built-in, platform independent, immutable collation provider that's guaranteed to be immutable and provides similar sorting semantics to the `C` collation except with `UTF-8` encoding rather than `SQL_ASCII`. Using this new collation provider guarantees that your text-based queries will return the same sorted results regardless of where you run PostgreSQL. ### Logical replication enhancements for high availability and major version upgrades [Logical replication](https://www.postgresql.org/docs/17/logical-replication.html) is used to stream data in real-time across many use cases. However, prior to this release, users who wanted to perform a major version upgrade would have to drop [logical replication slots](https://www.postgresql.org/docs/17/logical-replication-subscription.html#LOGICAL-REPLICATION-SUBSCRI...), which requires resynchronizing data to subscribers after an upgrade. Starting with upgrades from PostgreSQL 17, users don't have to drop logical replication slots, simplifying the upgrade process when using logical replication. PostgreSQL 17 now includes failover control for logical replication, making it more resilient when deployed in high availability environments. Additionally, PostgreSQL 17 introduces the [`pg_createsubscriber`](https://www.postgresql.org/docs/17/app-pgcreatesubscriber.html) command-line tool for adding logical replication on a replica using physical replication. ### More options for managing security and operations PostgreSQL 17 further extends how users can manage the overall lifecycle of their database systems. There's now a new TLS option, `sslnegotiation`, that lets users perform a direct TLS handshakes when using [ALPN](https://en.wikipedia.org/wiki/Application-Layer_Protocol_Negotiation) (registered as `postgresql` in the ALPN directory). PostgreSQL 17 also adds the `pg_maintain` [predefined role](https://www.postgresql.org/docs/17/predefined-roles.html), which allows you to give users permission to execute maintenance operations. [`pg_basebackup`](https://www.postgresql.org/docs/17/app-pgbasebackup.html), the backup utility included in PostgreSQL, now supports incremental backups and adds the [`pg_combinebackup`](https://www.postgresql.org/docs/17/app-pgcombinebackup.html) or the backup restoration process. Additionally, [`pg_dump`](https://www.postgresql.org/docs/17/app-pgdump.html) includes a new option called `--filter` that lets you select what objects to include when generating a dump file. PostgreSQL 17 also includes enhancements to monitoring and analysis features. [`EXPLAIN`](https://www.postgresql.org/docs/17/sql-explain.html) now shows the time spent for I/O block reads and writes, and includes two new options: `SERIALIZE` and `MEMORY`, useful for seeing the time spent in data conversion for network transmission, and how much memory was used. PostgreSQL 17 now reports the [progress of vacuuming indexes](https://www.postgresql.org/docs/17/progress-reporting.html#VACUUM-PROGRESS-REPORTING), and adds the [`pg_wait_events`](https://www.postgresql.org/docs/17/view-pg-wait-events.html) that, when combined with [`pg_stat_activity`](https://www.postgresql.org/docs/17/monitoring-stats.html#MONITORING-PG-STAT-ACTIVITY-VIEW), gives more insight into why an active session is waiting. ### Additional Features Many other new features and improvements have been added to PostgreSQL 17. Many of these may also be helpful for your use cases. Please see the [release notes](https://www.postgresql.org/docs/17/release-17.html) for a complete list of new and changed features. ### About PostgreSQL [PostgreSQL](https://www.postgresql.org) is the world's most advanced open source database, with a global community of thousands of users, contributors, companies and organizations. Built on over 35 years of engineering, starting at the University of California, Berkeley, PostgreSQL has continued with an unmatched pace of development. PostgreSQL's mature feature set not only matches top proprietary database systems, but exceeds them in advanced database features, extensibility, security, and stability. ### Links * [Download](https://www.postgresql.org/download/) * [Release Notes](https://www.postgresql.org/docs/17/release-17.html) * [Press Kit](https://www.postgresql.org/about/press/) * [Security Page](https://www.postgresql.org/support/security/) * [Versioning Policy](https://www.postgresql.org/support/versioning/) * [Follow @postgresql](https://twitter.com/postgresql) * [Donate](https://www.postgresql.org/about/donate/) ## More About the Features For explanations of the above features and others, please see the following resources: * [Release Notes](https://www.postgresql.org/docs/17/release-17.html) * [Feature Matrix](https://www.postgresql.org/about/featurematrix/) ## Where to Download There are several ways you can download PostgreSQL 17, including: * The [Official Downloads](https://www.postgresql.org/download/) page, with contains installers and tools for [Windows](https://www.postgresql.org/download/windows/), [Linux](https://www.postgresql.org/download/linux/), [macOS](https://www.postgresql.org/download/macosx/), and more. * [Source Code](https://www.postgresql.org/ftp/source/v17.0) Other tools and extensions are available on the [PostgreSQL Extension Network](http://pgxn.org/). ## Documentation PostgreSQL 17 comes with HTML documentation as well as man pages, and you can also browse the documentation online in both [HTML](https://www.postgresql.org/docs/17/) and [PDF](https://www.postgresql.org/files/documentation/pdf/17/postgresql-17-US.pdf) formats. ## Licence PostgreSQL uses the [PostgreSQL License](https://www.postgresql.org/about/licence/), a BSD-like "permissive" license. This [OSI-certified license](http://www.opensource.org/licenses/postgresql/) is widely appreciated as flexible and business-friendly, since it does not restrict the use of PostgreSQL with commercial and proprietary applications. Together with multi-company support and public ownership of the code, our license makes PostgreSQL very popular with vendors wanting to embed a database in their own products without fear of fees, vendor lock-in, or changes in licensing terms. ## Contacts Website * [https://www.postgresql.org/](https://www.postgresql.org/) Email * [[email protected]](mailto:[email protected]) ## Images and Logos Postgres, PostgreSQL, and the Elephant Logo (Slonik) are all registered trademarks of the [PostgreSQL Community Association](https://www.postgres.ca). If you wish to use these marks, you must comply with the [trademark policy](https://www.postgresql.org/about/policies/trademarks/). ## Corporate Support PostgreSQL enjoys the support of numerous companies, who sponsor developers, provide hosting resources, and give us financial support. See our [sponsors](https://www.postgresql.org/about/sponsors/) page for some of these project supporters. There is also a large community of [companies offering PostgreSQL Support](https://www.postgresql.org/support/professional_support/), from individual consultants to multinational companies. If you wish to make a financial contribution to the PostgreSQL Global Development Group or one of the recognized community non-profit organizations, please visit our [donations](https://www.postgresql.org/about/donate/) page. Attachments: [text/plain] release.en.md (12.7K, 2-release.en.md) download | inline: September 26, 2024 - The PostgreSQL Global Development Group today announced the release of [PostgreSQL 17](https://www.postgresql.org/docs/17/release-17.html), the latest version of the world's most advanced open source database. PostgreSQL 17 builds on decades of open source development, improving its performance and scalability while adapting to emergent data access and storage patterns. This release of PostgreSQL adds significant overall performance gains, including an overhauled memory management implementation for vacuum, optimizations to storage access and improvements for high concurrency workloads, speedups in bulk loading and exports, and query execution improvements for indexes. PostgreSQL 17 has features that benefit brand new workloads and critical systems alike, such as additions to the developer experience with the SQL/JSON `JSON_TABLE` command, and enhancements to logical replication that simplify management of high availability workloads and major version upgrades. <QUOTE> PostgreSQL, an innovative data management system known for its reliability, robustness, and extensibility, benefits from over 25 years of open source development from a global developer community and has become the preferred open source relational database for organizations of all sizes. ### System-wide performance gains The PostgreSQL [vacuum](https://www.postgresql.org/docs/17/routine-vacuuming.html) process is critical for healthy operations, requiring server instance resources to operate. PostgreSQL 17 introduces a new internal memory structure for vacuum was used that consumes up to 20x less memory. This improves vacuum speed and also reduces the use of shared resources, making more available for your workload. PostgreSQL 17 continues to improve performance of its I/O layer. High concurrency workloads may see up to 2x better write throughput due to improvements with [write-ahead log](https://www.postgresql.org/docs/17/wal-intro.html) ([WAL](https://www.postgresql.org/docs/17/wal-intro.html)) processing. Additionally, the new streaming I/O interface speeds up sequential scans (reading all the data from a table) and how quickly [`ANALYZE`](https://www.postgresql.org/docs/17/sql-analyze.html) can update planner statistics. PostgreSQL 17 also extends its performance gains to query execution. PostgreSQL 17 improves the performance of queries with `IN` clauses that use [B-tree](https://www.postgresql.org/docs/17/indexes-types.html#INDEXES-TYPES-BTREE) indexes, the default index method in PostgreSQL. Additionally, [BRIN](https://www.postgresql.org/docs/17/brin.html) indexes now support parallel builds. PostgreSQL 17 includes several improvements for query planning, including optimizations for `NOT NULL` constraints, and improvements in processing [common table expressions](https://www.postgresql.org/docs/17/queries-with.html) ([`WITH` queries](https://www.postgresql.org/docs/17/queries-with.html)). This release adds more SIMD (Single Instruction/Multiple Data) support for accelerating computations, including using AVX-512 for the [`bit_count`](https://www.postgresql.org/docs/17/functions-bitstring.html) function. ### Further expansion of a robust developer experience PostgreSQL was the [first relational database to add JSON support (2012)](https://www.postgresql.org/about/news/postgresql-92-released-1415/), and PostgreSQL 17 adds to its implementation SQL/JSON standard. [`JSON_TABLE`](https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-SQLJSON-TABLE) is now available in PostgreSQL 17, letting developers convert JSON data into a standard PostgreSQL table. PostgreSQL 17 now supports [SQL/JSON constructors](https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-JSON-CREATION-TABLE) (`JSON`, `JSON_SCALAR`, `JSON_SERIALIZE`) and [query functions](https://www.postgresql.org/docs/17/functions-json.html#SQLJSON-QUERY-FUNCTIONS) (`JSON_EXISTS`, `JSON_QUERY`, `JSON_VALUE`), giving developers other ways of interfacing with their JSON data. This release adds more [`jsonpath` expressions](https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-SQLJSON-PATH-OPERATORS), with an emphasis of converting JSON data to a native PostgreSQL data type, including numeric, boolean, string, and date/time types. PostgreSQL 17 adds more features to [`MERGE`](https://www.postgresql.org/docs/17/sql-merge.html), which is used for conditional updates, including a `RETURNING` clause and the ability to update [views](https://www.postgresql.org/docs/17/sql-createview.html). Additionally, PostgreSQL 17 has new capabilities for bulk loading and data exporting,including up to a 2x performance improvement when exporting large rows using the [`COPY`](https://www.postgresql.org/docs/17/sql-copy.html) command. `COPY` performance also has improvements when the source and destination encodings match, and includes a new option, `ON_ERROR`, that allows an import to continue even if there is an insert error. This release expands on functionality for managing data in partitions or federated on remote PostgreSQL instances. PostgreSQL 17 supports using identity columns and exclusion constraints on [partitioned tables](https://www.postgresql.org/docs/17/ddl-partitioning.html). With this release, the [PostgreSQL foreign data wrapper](https://www.postgresql.org/docs/17/postgres-fdw.html) ([`postgres_fdw`](https://www.postgresql.org/docs/17/postgres-fdw.html)), used to execute queries on remote PostgreSQL instances, can now push `EXISTS` and `IN` subqueries to the remote server for more efficient processing. PostgreSQL 17 also includes a built-in, platform independent, immutable collation provider that's guaranteed to be immutable and provides similar sorting semantics to the `C` collation except with `UTF-8` encoding rather than `SQL_ASCII`. Using this new collation provider guarantees that your text-based queries will return the same sorted results regardless of where you run PostgreSQL. ### Logical replication enhancements for high availability and major version upgrades [Logical replication](https://www.postgresql.org/docs/17/logical-replication.html) is used to stream data in real-time across many use cases. However, prior to this release, users who wanted to perform a major version upgrade would have to drop [logical replication slots](https://www.postgresql.org/docs/17/logical-replication-subscription.html#LOGICAL-REPLICATION-SUBSCRIPTION-SLOT), which requires resynchronizing data to subscribers after an upgrade. Starting with upgrades from PostgreSQL 17, users don't have to drop logical replication slots, simplifying the upgrade process when using logical replication. PostgreSQL 17 now includes failover control for logical replication, making it more resilient when deployed in high availability environments. Additionally, PostgreSQL 17 introduces the [`pg_createsubscriber`](https://www.postgresql.org/docs/17/app-pgcreatesubscriber.html) command-line tool for adding logical replication on a replica using physical replication. ### More options for managing security and operations PostgreSQL 17 further extends how users can manage the overall lifecycle of their database systems. There's now a new TLS option, `sslnegotiation`, that lets users perform a direct TLS handshakes when using [ALPN](https://en.wikipedia.org/wiki/Application-Layer_Protocol_Negotiation) (registered as `postgresql` in the ALPN directory). PostgreSQL 17 also adds the `pg_maintain` [predefined role](https://www.postgresql.org/docs/17/predefined-roles.html), which allows you to give users permission to execute maintenance operations. [`pg_basebackup`](https://www.postgresql.org/docs/17/app-pgbasebackup.html), the backup utility included in PostgreSQL, now supports incremental backups and adds the [`pg_combinebackup`](https://www.postgresql.org/docs/17/app-pgcombinebackup.html) or the backup restoration process. Additionally, [`pg_dump`](https://www.postgresql.org/docs/17/app-pgdump.html) includes a new option called `--filter` that lets you select what objects to include when generating a dump file. PostgreSQL 17 also includes enhancements to monitoring and analysis features. [`EXPLAIN`](https://www.postgresql.org/docs/17/sql-explain.html) now shows the time spent for I/O block reads and writes, and includes two new options: `SERIALIZE` and `MEMORY`, useful for seeing the time spent in data conversion for network transmission, and how much memory was used. PostgreSQL 17 now reports the [progress of vacuuming indexes](https://www.postgresql.org/docs/17/progress-reporting.html#VACUUM-PROGRESS-REPORTING), and adds the [`pg_wait_events`](https://www.postgresql.org/docs/17/view-pg-wait-events.html) that, when combined with [`pg_stat_activity`](https://www.postgresql.org/docs/17/monitoring-stats.html#MONITORING-PG-STAT-ACTIVITY-VIEW), gives more insight into why an active session is waiting. ### Additional Features Many other new features and improvements have been added to PostgreSQL 17. Many of these may also be helpful for your use cases. Please see the [release notes](https://www.postgresql.org/docs/17/release-17.html) for a complete list of new and changed features. ### About PostgreSQL [PostgreSQL](https://www.postgresql.org) is the world's most advanced open source database, with a global community of thousands of users, contributors, companies and organizations. Built on over 35 years of engineering, starting at the University of California, Berkeley, PostgreSQL has continued with an unmatched pace of development. PostgreSQL's mature feature set not only matches top proprietary database systems, but exceeds them in advanced database features, extensibility, security, and stability. ### Links * [Download](https://www.postgresql.org/download/) * [Release Notes](https://www.postgresql.org/docs/17/release-17.html) * [Press Kit](https://www.postgresql.org/about/press/) * [Security Page](https://www.postgresql.org/support/security/) * [Versioning Policy](https://www.postgresql.org/support/versioning/) * [Follow @postgresql](https://twitter.com/postgresql) * [Donate](https://www.postgresql.org/about/donate/) ## More About the Features For explanations of the above features and others, please see the following resources: * [Release Notes](https://www.postgresql.org/docs/17/release-17.html) * [Feature Matrix](https://www.postgresql.org/about/featurematrix/) ## Where to Download There are several ways you can download PostgreSQL 17, including: * The [Official Downloads](https://www.postgresql.org/download/) page, with contains installers and tools for [Windows](https://www.postgresql.org/download/windows/), [Linux](https://www.postgresql.org/download/linux/), [macOS](https://www.postgresql.org/download/macosx/), and more. * [Source Code](https://www.postgresql.org/ftp/source/v17.0) Other tools and extensions are available on the [PostgreSQL Extension Network](http://pgxn.org/). ## Documentation PostgreSQL 17 comes with HTML documentation as well as man pages, and you can also browse the documentation online in both [HTML](https://www.postgresql.org/docs/17/) and [PDF](https://www.postgresql.org/files/documentation/pdf/17/postgresql-17-US.pdf) formats. ## Licence PostgreSQL uses the [PostgreSQL License](https://www.postgresql.org/about/licence/), a BSD-like "permissive" license. This [OSI-certified license](http://www.opensource.org/licenses/postgresql/) is widely appreciated as flexible and business-friendly, since it does not restrict the use of PostgreSQL with commercial and proprietary applications. Together with multi-company support and public ownership of the code, our license makes PostgreSQL very popular with vendors wanting to embed a database in their own products without fear of fees, vendor lock-in, or changes in licensing terms. ## Contacts Website * [https://www.postgresql.org/](https://www.postgresql.org/) Email * [[email protected]](mailto:[email protected]) ## Images and Logos Postgres, PostgreSQL, and the Elephant Logo (Slonik) are all registered trademarks of the [PostgreSQL Community Association](https://www.postgres.ca). If you wish to use these marks, you must comply with the [trademark policy](https://www.postgresql.org/about/policies/trademarks/). ## Corporate Support PostgreSQL enjoys the support of numerous companies, who sponsor developers, provide hosting resources, and give us financial support. See our [sponsors](https://www.postgresql.org/about/sponsors/) page for some of these project supporters. There is also a large community of [companies offering PostgreSQL Support](https://www.postgresql.org/support/professional_support/), from individual consultants to multinational companies. If you wish to make a financial contribution to the PostgreSQL Global Development Group or one of the recognized community non-profit organizations, please visit our [donations](https://www.postgresql.org/about/donate/) page. [application/pgp-signature] OpenPGP_signature.asc (840B, 3-OpenPGP_signature.asc) download ^ permalink raw reply [nested|flat] 13+ messages in thread
* Re: PostgreSQL 17 release announcement draft @ 2024-09-06 17:28 Adrian Klaver <[email protected]> parent: Jonathan S. Katz <[email protected]> 0 siblings, 1 reply; 13+ messages in thread From: Adrian Klaver @ 2024-09-06 17:28 UTC (permalink / raw) To: Jonathan S. Katz <[email protected]>; Andrew Atkinson <[email protected]>; Robert Haas <[email protected]>; +Cc: Peter Eisentraut <[email protected]>; PostgreSQL Advocacy <[email protected]>; [email protected] <[email protected]> On 9/6/24 10:03 AM, Jonathan S. Katz wrote: > On 9/5/24 3:21 PM, Andrew Atkinson wrote: > Please see v2 attached. As per original note, please provide feedback > before Mon, Sep 9 @ 12:00 UTC so we can begin the translation process. A quick read through found: "... the [`pg_combinebackup`](https://www.postgresql.org/docs/17/app-pgcombinebackup.html) or the backup restoration process." I'm guessing that is "... for the backup restoration process." > > Thanks, > > Jonathan -- Adrian Klaver [email protected] ^ permalink raw reply [nested|flat] 13+ messages in thread
* Re: PostgreSQL 17 release announcement draft @ 2024-09-06 18:02 Andrew Atkinson <[email protected]> parent: Adrian Klaver <[email protected]> 0 siblings, 1 reply; 13+ messages in thread From: Andrew Atkinson @ 2024-09-06 18:02 UTC (permalink / raw) To: Adrian Klaver <[email protected]>; +Cc: Jonathan S. Katz <[email protected]>; Robert Haas <[email protected]>; Peter Eisentraut <[email protected]>; PostgreSQL Advocacy <[email protected]>; [email protected] <[email protected]> This is looking crisper. Nice edits! I did one more read through and have minor comments and suggestions. ---------------------- > "PostgreSQL 17 introduces a new internal memory structure for vacuum was used that consumes up to 20x less memory" Small typo, I think "that" was missed: PostgreSQL 17 introduces a new internal memory structure for vacuum that consumes up to 20x less memory. ---------------------- > "and PostgreSQL 17 adds to its implementation SQL/JSON standard." is this missing "of the" ? and PostgreSQL 17 adds to its implementation "of" the SQL/JSON standard. ---------------------- "exporting,including" add space after "exporting", assuming this was copied correctly from the source file into google docs (which it may not have been) :) ---------------------- This is in the realm of personal preference/suggestion. The word "federated" is complex and I kind of understand it, but prefer simpler terminology. Here's a suggestion: "This release expands on functionality for managing data in partitions or federated on remote PostgreSQL instances." Alternative: "This release expands on functionality for managing data in partitions or data spread out between local and remote PostgreSQL instances." ---------------------- Suggestion: both "converts" and "creates" verbs are used in the docs to describe pg_createsubscriber. I like the verb "convert" because I think it speaks more to the purpose of being run on a physical replica, then turning it into a logical replication based instance as a subscriber. With that said, my suggested alternative is: PostgreSQL 17 introduces the [`pg_createsubscriber`]( https://www.postgresql.org/docs/17/app-pgcreatesubscriber.html <https://www.google.com/url?q=https://www.postgresql.org/docs/17/app-pgcreatesubscriber.html&sa=D...; ) command-line tool which can be used to convert a physical replica into a logical replica. ---------------------- > "which allows you to give users permission to execute maintenance operations." Suggested simplifications: which gives users the permissions needed to perform maintenance operations. which provides permissions for maintenance operations. ---------------------- > "the [`pg_combinebackup`]( https://www.postgresql.org/docs/17/app-pgcombinebackup.html <https://www.google.com/url?q=https://www.postgresql.org/docs/17/app-pgcombinebackup.html&sa=D&am...; ) or the backup restoration process" I thought the "or" here was maybe a mistake. Maybe it was meant to be "of". With that said, I pulled in the verb "reconstruct" the docs use. It's a fun verb and I know it coudl be translated to Spanish as reconstruir :) Suggestion: the [`pg_combinebackup`]( https://www.postgresql.org/docs/17/app-pgcombinebackup.html <https://www.google.com/url?q=https://www.postgresql.org/docs/17/app-pgcombinebackup.html&sa=D&am...; ) tool to reconstruct a full backup. ---------------------- > "reports the [progress of vacuuming indexes]( https://www.postgresql.org/docs/17/progress-reporting.html#VACUUM-PROGRESS-REPORTING <https://www.google.com/url?q=https://www.postgresql.org/docs/17/progress-reporting.html%23VACUUM-PRO...; ), and adds the [`pg_wait_events`]( https://www.postgresql.org/docs/17/view-pg-wait-events.html <https://www.google.com/url?q=https://www.postgresql.org/docs/17/view-pg-wait-events.html&sa=D&am...; ) For the system views, is the standard to refer to them without using the words system view? If so, it's fine here. If not, I think it's missing that. Suggestion: "adds the `pg_wait_events` system view" (or "view") ---------------------- "Many other new features and improvements have been added to PostgreSQL 17. Many of these may also be helpful for your use cases." Recommend consolidating these two sentences. ---------------------- "## Licence" is the british english spelling intended here? ---------------------- Looks great! I even learned about more new features in this revised version! I checked the links and saw "17" everywhere I'd expect to see it. On Fri, Sep 6, 2024 at 12:28 PM Adrian Klaver <[email protected]> wrote: > > > On 9/6/24 10:03 AM, Jonathan S. Katz wrote: > > On 9/5/24 3:21 PM, Andrew Atkinson wrote: > > > Please see v2 attached. As per original note, please provide feedback > > before Mon, Sep 9 @ 12:00 UTC so we can begin the translation process. > > A quick read through found: > > "... the > [`pg_combinebackup`]( > https://www.postgresql.org/docs/17/app-pgcombinebackup.html) > > or the backup restoration process." > > I'm guessing that is "... for the backup restoration process." > > > > > Thanks, > > > > Jonathan > > -- > Adrian Klaver > [email protected] > ^ permalink raw reply [nested|flat] 13+ messages in thread
* Re: PostgreSQL 17 release announcement draft @ 2024-09-07 18:44 Jonathan S. Katz <[email protected]> parent: Andrew Atkinson <[email protected]> 0 siblings, 1 reply; 13+ messages in thread From: Jonathan S. Katz @ 2024-09-07 18:44 UTC (permalink / raw) To: Andrew Atkinson <[email protected]>; Adrian Klaver <[email protected]>; +Cc: Robert Haas <[email protected]>; Peter Eisentraut <[email protected]>; PostgreSQL Advocacy <[email protected]>; [email protected] <[email protected]> On 9/6/24 2:02 PM, Andrew Atkinson wrote: > This is looking crisper. Nice edits! I did one more read through and > have minor comments and suggestions. Thanks Andy and Adrian (and Robert and Peter and Alicja). Here is the latest draft, based on your feedback. Thanks, Jonathan September 26, 2024 - The PostgreSQL Global Development Group today announced the release of [PostgreSQL 17](https://www.postgresql.org/docs/17/release-17.html), the latest version of the world's most advanced open source database. PostgreSQL 17 builds on decades of open source development, improving its performance and scalability while adapting to emergent data access and storage patterns. This release of PostgreSQL adds significant overall performance gains, including an overhauled memory management implementation for vacuum, optimizations to storage access and improvements for high concurrency workloads, speedups in bulk loading and exports, and query execution improvements for indexes. PostgreSQL 17 has features that benefit brand new workloads and critical systems alike, such as additions to the developer experience with the SQL/JSON `JSON_TABLE` command, and enhancements to logical replication that simplify management of high availability workloads and major version upgrades. <QUOTE> PostgreSQL, an innovative data management system known for its reliability, robustness, and extensibility, benefits from over 25 years of open source development from a global developer community and has become the preferred open source relational database for organizations of all sizes. ### System-wide performance gains The PostgreSQL [vacuum](https://www.postgresql.org/docs/17/routine-vacuuming.html) process is critical for healthy operations, requiring server instance resources to operate. PostgreSQL 17 introduces a new internal memory structure for vacuum that consumes up to 20x less memory. This improves vacuum speed and also reduces the use of shared resources, making more available for your workload. PostgreSQL 17 continues to improve performance of its I/O layer. High concurrency workloads may see up to 2x better write throughput due to improvements with [write-ahead log](https://www.postgresql.org/docs/17/wal-intro.html) ([WAL](https://www.postgresql.org/docs/17/wal-intro.html)) processing. Additionally, the new streaming I/O interface speeds up sequential scans (reading all the data from a table) and how quickly [`ANALYZE`](https://www.postgresql.org/docs/17/sql-analyze.html) can update planner statistics. PostgreSQL 17 also extends its performance gains to query execution. PostgreSQL 17 improves the performance of queries with `IN` clauses that use [B-tree](https://www.postgresql.org/docs/17/indexes-types.html#INDEXES-TYPES-BTREE) indexes, the default index method in PostgreSQL. Additionally, [BRIN](https://www.postgresql.org/docs/17/brin.html) indexes now support parallel builds. PostgreSQL 17 includes several improvements for query planning, including optimizations for `NOT NULL` constraints, and improvements in processing [common table expressions](https://www.postgresql.org/docs/17/queries-with.html) ([`WITH` queries](https://www.postgresql.org/docs/17/queries-with.html)). This release adds more SIMD (Single Instruction/Multiple Data) support for accelerating computations, including using AVX-512 for the [`bit_count`](https://www.postgresql.org/docs/17/functions-bitstring.html) function. ### Further expansion of a robust developer experience PostgreSQL was the [first relational database to add JSON support (2012)](https://www.postgresql.org/about/news/postgresql-92-released-1415/), and PostgreSQL 17 adds to its implementation of the SQL/JSON standard. [`JSON_TABLE`](https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-SQLJSON-TABLE) is now available in PostgreSQL 17, letting developers convert JSON data into a standard PostgreSQL table. PostgreSQL 17 now supports [SQL/JSON constructors](https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-JSON-CREATION-TABLE) (`JSON`, `JSON_SCALAR`, `JSON_SERIALIZE`) and [query functions](https://www.postgresql.org/docs/17/functions-json.html#SQLJSON-QUERY-FUNCTIONS) (`JSON_EXISTS`, `JSON_QUERY`, `JSON_VALUE`), giving developers other ways of interfacing with their JSON data. This release adds more [`jsonpath` expressions](https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-SQLJSON-PATH-OPERATORS), with an emphasis of converting JSON data to a native PostgreSQL data type, including numeric, boolean, string, and date/time types. PostgreSQL 17 adds more features to [`MERGE`](https://www.postgresql.org/docs/17/sql-merge.html), which is used for conditional updates, including a `RETURNING` clause and the ability to update [views](https://www.postgresql.org/docs/17/sql-createview.html). Additionally, PostgreSQL 17 has new capabilities for bulk loading and data exporting, including up to a 2x performance improvement when exporting large rows using the [`COPY`](https://www.postgresql.org/docs/17/sql-copy.html) command. `COPY` performance also has improvements when the source and destination encodings match, and includes a new option, `ON_ERROR`, that allows an import to continue even if there is an insert error. This release expands on functionality both for managing data in partitions and data distributed across remote PostgreSQL instances. PostgreSQL 17 supports using identity columns and exclusion constraints on [partitioned tables](https://www.postgresql.org/docs/17/ddl-partitioning.html). With this release, the [PostgreSQL foreign data wrapper](https://www.postgresql.org/docs/17/postgres-fdw.html) ([`postgres_fdw`](https://www.postgresql.org/docs/17/postgres-fdw.html)), used to execute queries on remote PostgreSQL instances, can now push `EXISTS` and `IN` subqueries to the remote server for more efficient processing. PostgreSQL 17 also includes a built-in, platform independent, immutable collation provider that's guaranteed to be immutable and provides similar sorting semantics to the `C` collation except with `UTF-8` encoding rather than `SQL_ASCII`. Using this new collation provider guarantees that your text-based queries will return the same sorted results regardless of where you run PostgreSQL. ### Logical replication enhancements for high availability and major version upgrades [Logical replication](https://www.postgresql.org/docs/17/logical-replication.html) is used to stream data in real-time across many use cases. However, prior to this release, users who wanted to perform a major version upgrade would have to drop [logical replication slots](https://www.postgresql.org/docs/17/logical-replication-subscription.html#LOGICAL-REPLICATION-SUBSCRI...), which requires resynchronizing data to subscribers after an upgrade. Starting with upgrades from PostgreSQL 17, users don't have to drop logical replication slots, simplifying the upgrade process when using logical replication. PostgreSQL 17 now includes failover control for logical replication, making it more resilient when deployed in high availability environments. Additionally, PostgreSQL 17 introduces the [`pg_createsubscriber`](https://www.postgresql.org/docs/17/app-pgcreatesubscriber.html) command-line tool for converting a physical replica into a new logical replica. ### More options for managing security and operations PostgreSQL 17 further extends how users can manage the overall lifecycle of their database systems. There's now a new TLS option, `sslnegotiation`, that lets users perform a direct TLS handshakes when using [ALPN](https://en.wikipedia.org/wiki/Application-Layer_Protocol_Negotiation) (registered as `postgresql` in the ALPN directory). PostgreSQL 17 also adds the `pg_maintain` [predefined role](https://www.postgresql.org/docs/17/predefined-roles.html), which gives users permission to perform maintenance operations. [`pg_basebackup`](https://www.postgresql.org/docs/17/app-pgbasebackup.html), the backup utility included in PostgreSQL, now supports incremental backups and adds the [`pg_combinebackup`](https://www.postgresql.org/docs/17/app-pgcombinebackup.html) utility to reconstruct a full backup. Additionally, [`pg_dump`](https://www.postgresql.org/docs/17/app-pgdump.html) includes a new option called `--filter` that lets you select what objects to include when generating a dump file. PostgreSQL 17 also includes enhancements to monitoring and analysis features. [`EXPLAIN`](https://www.postgresql.org/docs/17/sql-explain.html) now shows the time spent for local I/O block reads and writes, and includes two new options: `SERIALIZE` and `MEMORY`, useful for seeing the time spent in data conversion for network transmission, and how much memory was used. PostgreSQL 17 now reports the [progress of vacuuming indexes](https://www.postgresql.org/docs/17/progress-reporting.html#VACUUM-PROGRESS-REPORTING), and adds the [`pg_wait_events`](https://www.postgresql.org/docs/17/view-pg-wait-events.html) system view that, when combined with [`pg_stat_activity`](https://www.postgresql.org/docs/17/monitoring-stats.html#MONITORING-PG-STAT-ACTIVITY-VIEW), gives more insight into why an active session is waiting. ### Additional Features Many other new features and improvements have been added to PostgreSQL 17 that may also be helpful for your use cases. Please see the [release notes](https://www.postgresql.org/docs/17/release-17.html) for a complete list of new and changed features. ### About PostgreSQL [PostgreSQL](https://www.postgresql.org) is the world's most advanced open source database, with a global community of thousands of users, contributors, companies and organizations. Built on over 35 years of engineering, starting at the University of California, Berkeley, PostgreSQL has continued with an unmatched pace of development. PostgreSQL's mature feature set not only matches top proprietary database systems, but exceeds them in advanced database features, extensibility, security, and stability. ### Links * [Download](https://www.postgresql.org/download/) * [Release Notes](https://www.postgresql.org/docs/17/release-17.html) * [Press Kit](https://www.postgresql.org/about/press/) * [Security Page](https://www.postgresql.org/support/security/) * [Versioning Policy](https://www.postgresql.org/support/versioning/) * [Follow @postgresql](https://twitter.com/postgresql) * [Donate](https://www.postgresql.org/about/donate/) ## More About the Features For explanations of the above features and others, please see the following resources: * [Release Notes](https://www.postgresql.org/docs/17/release-17.html) * [Feature Matrix](https://www.postgresql.org/about/featurematrix/) ## Where to Download There are several ways you can download PostgreSQL 17, including: * The [Official Downloads](https://www.postgresql.org/download/) page, with contains installers and tools for [Windows](https://www.postgresql.org/download/windows/), [Linux](https://www.postgresql.org/download/linux/), [macOS](https://www.postgresql.org/download/macosx/), and more. * [Source Code](https://www.postgresql.org/ftp/source/v17.0) Other tools and extensions are available on the [PostgreSQL Extension Network](http://pgxn.org/). ## Documentation PostgreSQL 17 comes with HTML documentation as well as man pages, and you can also browse the documentation online in both [HTML](https://www.postgresql.org/docs/17/) and [PDF](https://www.postgresql.org/files/documentation/pdf/17/postgresql-17-US.pdf) formats. ## Licence PostgreSQL uses the [PostgreSQL License](https://www.postgresql.org/about/licence/), a BSD-like "permissive" license. This [OSI-certified license](http://www.opensource.org/licenses/postgresql/) is widely appreciated as flexible and business-friendly, since it does not restrict the use of PostgreSQL with commercial and proprietary applications. Together with multi-company support and public ownership of the code, our license makes PostgreSQL very popular with vendors wanting to embed a database in their own products without fear of fees, vendor lock-in, or changes in licensing terms. ## Contacts Website * [https://www.postgresql.org/](https://www.postgresql.org/) Email * [[email protected]](mailto:[email protected]) ## Images and Logos Postgres, PostgreSQL, and the Elephant Logo (Slonik) are all registered trademarks of the [PostgreSQL Community Association](https://www.postgres.ca). If you wish to use these marks, you must comply with the [trademark policy](https://www.postgresql.org/about/policies/trademarks/). ## Corporate Support PostgreSQL enjoys the support of numerous companies, who sponsor developers, provide hosting resources, and give us financial support. See our [sponsors](https://www.postgresql.org/about/sponsors/) page for some of these project supporters. There is also a large community of [companies offering PostgreSQL Support](https://www.postgresql.org/support/professional_support/), from individual consultants to multinational companies. If you wish to make a financial contribution to the PostgreSQL Global Development Group or one of the recognized community non-profit organizations, please visit our [donations](https://www.postgresql.org/about/donate/) page. Attachments: [text/plain] release.en.md (12.7K, 2-release.en.md) download | inline: September 26, 2024 - The PostgreSQL Global Development Group today announced the release of [PostgreSQL 17](https://www.postgresql.org/docs/17/release-17.html), the latest version of the world's most advanced open source database. PostgreSQL 17 builds on decades of open source development, improving its performance and scalability while adapting to emergent data access and storage patterns. This release of PostgreSQL adds significant overall performance gains, including an overhauled memory management implementation for vacuum, optimizations to storage access and improvements for high concurrency workloads, speedups in bulk loading and exports, and query execution improvements for indexes. PostgreSQL 17 has features that benefit brand new workloads and critical systems alike, such as additions to the developer experience with the SQL/JSON `JSON_TABLE` command, and enhancements to logical replication that simplify management of high availability workloads and major version upgrades. <QUOTE> PostgreSQL, an innovative data management system known for its reliability, robustness, and extensibility, benefits from over 25 years of open source development from a global developer community and has become the preferred open source relational database for organizations of all sizes. ### System-wide performance gains The PostgreSQL [vacuum](https://www.postgresql.org/docs/17/routine-vacuuming.html) process is critical for healthy operations, requiring server instance resources to operate. PostgreSQL 17 introduces a new internal memory structure for vacuum that consumes up to 20x less memory. This improves vacuum speed and also reduces the use of shared resources, making more available for your workload. PostgreSQL 17 continues to improve performance of its I/O layer. High concurrency workloads may see up to 2x better write throughput due to improvements with [write-ahead log](https://www.postgresql.org/docs/17/wal-intro.html) ([WAL](https://www.postgresql.org/docs/17/wal-intro.html)) processing. Additionally, the new streaming I/O interface speeds up sequential scans (reading all the data from a table) and how quickly [`ANALYZE`](https://www.postgresql.org/docs/17/sql-analyze.html) can update planner statistics. PostgreSQL 17 also extends its performance gains to query execution. PostgreSQL 17 improves the performance of queries with `IN` clauses that use [B-tree](https://www.postgresql.org/docs/17/indexes-types.html#INDEXES-TYPES-BTREE) indexes, the default index method in PostgreSQL. Additionally, [BRIN](https://www.postgresql.org/docs/17/brin.html) indexes now support parallel builds. PostgreSQL 17 includes several improvements for query planning, including optimizations for `NOT NULL` constraints, and improvements in processing [common table expressions](https://www.postgresql.org/docs/17/queries-with.html) ([`WITH` queries](https://www.postgresql.org/docs/17/queries-with.html)). This release adds more SIMD (Single Instruction/Multiple Data) support for accelerating computations, including using AVX-512 for the [`bit_count`](https://www.postgresql.org/docs/17/functions-bitstring.html) function. ### Further expansion of a robust developer experience PostgreSQL was the [first relational database to add JSON support (2012)](https://www.postgresql.org/about/news/postgresql-92-released-1415/), and PostgreSQL 17 adds to its implementation of the SQL/JSON standard. [`JSON_TABLE`](https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-SQLJSON-TABLE) is now available in PostgreSQL 17, letting developers convert JSON data into a standard PostgreSQL table. PostgreSQL 17 now supports [SQL/JSON constructors](https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-JSON-CREATION-TABLE) (`JSON`, `JSON_SCALAR`, `JSON_SERIALIZE`) and [query functions](https://www.postgresql.org/docs/17/functions-json.html#SQLJSON-QUERY-FUNCTIONS) (`JSON_EXISTS`, `JSON_QUERY`, `JSON_VALUE`), giving developers other ways of interfacing with their JSON data. This release adds more [`jsonpath` expressions](https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-SQLJSON-PATH-OPERATORS), with an emphasis of converting JSON data to a native PostgreSQL data type, including numeric, boolean, string, and date/time types. PostgreSQL 17 adds more features to [`MERGE`](https://www.postgresql.org/docs/17/sql-merge.html), which is used for conditional updates, including a `RETURNING` clause and the ability to update [views](https://www.postgresql.org/docs/17/sql-createview.html). Additionally, PostgreSQL 17 has new capabilities for bulk loading and data exporting, including up to a 2x performance improvement when exporting large rows using the [`COPY`](https://www.postgresql.org/docs/17/sql-copy.html) command. `COPY` performance also has improvements when the source and destination encodings match, and includes a new option, `ON_ERROR`, that allows an import to continue even if there is an insert error. This release expands on functionality both for managing data in partitions and data distributed across remote PostgreSQL instances. PostgreSQL 17 supports using identity columns and exclusion constraints on [partitioned tables](https://www.postgresql.org/docs/17/ddl-partitioning.html). With this release, the [PostgreSQL foreign data wrapper](https://www.postgresql.org/docs/17/postgres-fdw.html) ([`postgres_fdw`](https://www.postgresql.org/docs/17/postgres-fdw.html)), used to execute queries on remote PostgreSQL instances, can now push `EXISTS` and `IN` subqueries to the remote server for more efficient processing. PostgreSQL 17 also includes a built-in, platform independent, immutable collation provider that's guaranteed to be immutable and provides similar sorting semantics to the `C` collation except with `UTF-8` encoding rather than `SQL_ASCII`. Using this new collation provider guarantees that your text-based queries will return the same sorted results regardless of where you run PostgreSQL. ### Logical replication enhancements for high availability and major version upgrades [Logical replication](https://www.postgresql.org/docs/17/logical-replication.html) is used to stream data in real-time across many use cases. However, prior to this release, users who wanted to perform a major version upgrade would have to drop [logical replication slots](https://www.postgresql.org/docs/17/logical-replication-subscription.html#LOGICAL-REPLICATION-SUBSCRIPTION-SLOT), which requires resynchronizing data to subscribers after an upgrade. Starting with upgrades from PostgreSQL 17, users don't have to drop logical replication slots, simplifying the upgrade process when using logical replication. PostgreSQL 17 now includes failover control for logical replication, making it more resilient when deployed in high availability environments. Additionally, PostgreSQL 17 introduces the [`pg_createsubscriber`](https://www.postgresql.org/docs/17/app-pgcreatesubscriber.html) command-line tool for converting a physical replica into a new logical replica. ### More options for managing security and operations PostgreSQL 17 further extends how users can manage the overall lifecycle of their database systems. There's now a new TLS option, `sslnegotiation`, that lets users perform a direct TLS handshakes when using [ALPN](https://en.wikipedia.org/wiki/Application-Layer_Protocol_Negotiation) (registered as `postgresql` in the ALPN directory). PostgreSQL 17 also adds the `pg_maintain` [predefined role](https://www.postgresql.org/docs/17/predefined-roles.html), which gives users permission to perform maintenance operations. [`pg_basebackup`](https://www.postgresql.org/docs/17/app-pgbasebackup.html), the backup utility included in PostgreSQL, now supports incremental backups and adds the [`pg_combinebackup`](https://www.postgresql.org/docs/17/app-pgcombinebackup.html) utility to reconstruct a full backup. Additionally, [`pg_dump`](https://www.postgresql.org/docs/17/app-pgdump.html) includes a new option called `--filter` that lets you select what objects to include when generating a dump file. PostgreSQL 17 also includes enhancements to monitoring and analysis features. [`EXPLAIN`](https://www.postgresql.org/docs/17/sql-explain.html) now shows the time spent for local I/O block reads and writes, and includes two new options: `SERIALIZE` and `MEMORY`, useful for seeing the time spent in data conversion for network transmission, and how much memory was used. PostgreSQL 17 now reports the [progress of vacuuming indexes](https://www.postgresql.org/docs/17/progress-reporting.html#VACUUM-PROGRESS-REPORTING), and adds the [`pg_wait_events`](https://www.postgresql.org/docs/17/view-pg-wait-events.html) system view that, when combined with [`pg_stat_activity`](https://www.postgresql.org/docs/17/monitoring-stats.html#MONITORING-PG-STAT-ACTIVITY-VIEW), gives more insight into why an active session is waiting. ### Additional Features Many other new features and improvements have been added to PostgreSQL 17 that may also be helpful for your use cases. Please see the [release notes](https://www.postgresql.org/docs/17/release-17.html) for a complete list of new and changed features. ### About PostgreSQL [PostgreSQL](https://www.postgresql.org) is the world's most advanced open source database, with a global community of thousands of users, contributors, companies and organizations. Built on over 35 years of engineering, starting at the University of California, Berkeley, PostgreSQL has continued with an unmatched pace of development. PostgreSQL's mature feature set not only matches top proprietary database systems, but exceeds them in advanced database features, extensibility, security, and stability. ### Links * [Download](https://www.postgresql.org/download/) * [Release Notes](https://www.postgresql.org/docs/17/release-17.html) * [Press Kit](https://www.postgresql.org/about/press/) * [Security Page](https://www.postgresql.org/support/security/) * [Versioning Policy](https://www.postgresql.org/support/versioning/) * [Follow @postgresql](https://twitter.com/postgresql) * [Donate](https://www.postgresql.org/about/donate/) ## More About the Features For explanations of the above features and others, please see the following resources: * [Release Notes](https://www.postgresql.org/docs/17/release-17.html) * [Feature Matrix](https://www.postgresql.org/about/featurematrix/) ## Where to Download There are several ways you can download PostgreSQL 17, including: * The [Official Downloads](https://www.postgresql.org/download/) page, with contains installers and tools for [Windows](https://www.postgresql.org/download/windows/), [Linux](https://www.postgresql.org/download/linux/), [macOS](https://www.postgresql.org/download/macosx/), and more. * [Source Code](https://www.postgresql.org/ftp/source/v17.0) Other tools and extensions are available on the [PostgreSQL Extension Network](http://pgxn.org/). ## Documentation PostgreSQL 17 comes with HTML documentation as well as man pages, and you can also browse the documentation online in both [HTML](https://www.postgresql.org/docs/17/) and [PDF](https://www.postgresql.org/files/documentation/pdf/17/postgresql-17-US.pdf) formats. ## Licence PostgreSQL uses the [PostgreSQL License](https://www.postgresql.org/about/licence/), a BSD-like "permissive" license. This [OSI-certified license](http://www.opensource.org/licenses/postgresql/) is widely appreciated as flexible and business-friendly, since it does not restrict the use of PostgreSQL with commercial and proprietary applications. Together with multi-company support and public ownership of the code, our license makes PostgreSQL very popular with vendors wanting to embed a database in their own products without fear of fees, vendor lock-in, or changes in licensing terms. ## Contacts Website * [https://www.postgresql.org/](https://www.postgresql.org/) Email * [[email protected]](mailto:[email protected]) ## Images and Logos Postgres, PostgreSQL, and the Elephant Logo (Slonik) are all registered trademarks of the [PostgreSQL Community Association](https://www.postgres.ca). If you wish to use these marks, you must comply with the [trademark policy](https://www.postgresql.org/about/policies/trademarks/). ## Corporate Support PostgreSQL enjoys the support of numerous companies, who sponsor developers, provide hosting resources, and give us financial support. See our [sponsors](https://www.postgresql.org/about/sponsors/) page for some of these project supporters. There is also a large community of [companies offering PostgreSQL Support](https://www.postgresql.org/support/professional_support/), from individual consultants to multinational companies. If you wish to make a financial contribution to the PostgreSQL Global Development Group or one of the recognized community non-profit organizations, please visit our [donations](https://www.postgresql.org/about/donate/) page. [application/pgp-signature] OpenPGP_signature.asc (840B, 3-OpenPGP_signature.asc) download ^ permalink raw reply [nested|flat] 13+ messages in thread
* Re: PostgreSQL 17 release announcement draft @ 2024-09-09 14:51 Jonathan S. Katz <[email protected]> parent: Jonathan S. Katz <[email protected]> 0 siblings, 0 replies; 13+ messages in thread From: Jonathan S. Katz @ 2024-09-09 14:51 UTC (permalink / raw) To: Andrew Atkinson <[email protected]>; Adrian Klaver <[email protected]>; +Cc: Robert Haas <[email protected]>; Peter Eisentraut <[email protected]>; PostgreSQL Advocacy <[email protected]>; [email protected] <[email protected]> On 9/7/24 2:44 PM, Jonathan S. Katz wrote: > On 9/6/24 2:02 PM, Andrew Atkinson wrote: >> This is looking crisper. Nice edits! I did one more read through and >> have minor comments and suggestions. > Thanks Andy and Adrian (and Robert and Peter and Alicja). Here is the > latest draft, based on your feedback. Thank you everyone for your feedback on the PG17 release GA announcement. The content is now frozen and we've begun the translation process. You can view the canonical copy here: https://git.postgresql.org/gitweb/?p=press.git;a=blob_plain;f=releases/17/release.en.md;hb=HEAD Thanks, Jonathan Attachments: [application/pgp-signature] OpenPGP_signature.asc (840B, 2-OpenPGP_signature.asc) download ^ permalink raw reply [nested|flat] 13+ messages in thread
end of thread, other threads:[~2024-09-09 14:51 UTC | newest] Thread overview: 13+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2024-09-04 21:05 PostgreSQL 17 release announcement draft Jonathan S. Katz <[email protected]> 2024-09-05 09:22 ` Peter Eisentraut <[email protected]> 2024-09-05 16:04 ` Robert Haas <[email protected]> 2024-09-05 16:49 ` Andrew Atkinson <[email protected]> 2024-09-05 16:58 ` Andrew Atkinson <[email protected]> 2024-09-05 18:44 ` Andrew Atkinson <[email protected]> 2024-09-05 19:21 ` Andrew Atkinson <[email protected]> 2024-09-06 17:03 ` Jonathan S. Katz <[email protected]> 2024-09-06 17:28 ` Adrian Klaver <[email protected]> 2024-09-06 18:02 ` Andrew Atkinson <[email protected]> 2024-09-07 18:44 ` Jonathan S. Katz <[email protected]> 2024-09-09 14:51 ` Jonathan S. Katz <[email protected]> 2024-09-05 09:42 ` Alicja Kucharczyk <[email protected]>
This inbox is served by agora; see mirroring instructions for how to clone and mirror all data and code used for this inbox